@winspan/claude-forge 8.54.4 → 9.12.0
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/DEVELOPMENT.md +723 -46
- package/README.md +166 -21
- package/dist/catalogs/agents.json +67 -0
- package/dist/catalogs/skills.json +306 -0
- package/dist/claudemd/claudemd-generator.d.ts +45 -45
- package/dist/claudemd/claudemd-generator.d.ts.map +1 -1
- package/dist/claudemd/claudemd-generator.js +128 -449
- package/dist/claudemd/claudemd-generator.js.map +1 -1
- package/dist/claudemd/index.d.ts +14 -4
- package/dist/claudemd/index.d.ts.map +1 -1
- package/dist/claudemd/index.js +15 -4
- package/dist/claudemd/index.js.map +1 -1
- package/dist/claudemd/resume-manager.d.ts.map +1 -1
- package/dist/claudemd/resume-manager.js +37 -9
- package/dist/claudemd/resume-manager.js.map +1 -1
- package/dist/claudemd/templates/swarm-protocol.md +35 -186
- package/dist/claudemd/violations-manager.d.ts +40 -0
- package/dist/claudemd/violations-manager.d.ts.map +1 -0
- package/dist/claudemd/violations-manager.js +106 -0
- package/dist/claudemd/violations-manager.js.map +1 -0
- package/dist/cli/commands/admin.d.ts +15 -0
- package/dist/cli/commands/admin.d.ts.map +1 -0
- package/dist/cli/commands/admin.js +177 -0
- package/dist/cli/commands/admin.js.map +1 -0
- package/dist/cli/commands/agent.d.ts +169 -0
- package/dist/cli/commands/agent.d.ts.map +1 -0
- package/dist/cli/commands/agent.js +690 -0
- package/dist/cli/commands/agent.js.map +1 -0
- package/dist/cli/commands/agents.d.ts +18 -0
- package/dist/cli/commands/agents.d.ts.map +1 -0
- package/dist/cli/commands/agents.js +160 -0
- package/dist/cli/commands/agents.js.map +1 -0
- package/dist/cli/commands/bypass.d.ts +18 -0
- package/dist/cli/commands/bypass.d.ts.map +1 -0
- package/dist/cli/commands/bypass.js +87 -0
- package/dist/cli/commands/bypass.js.map +1 -0
- package/dist/cli/commands/claudemd.d.ts +60 -0
- package/dist/cli/commands/claudemd.d.ts.map +1 -1
- package/dist/cli/commands/claudemd.js +174 -37
- package/dist/cli/commands/claudemd.js.map +1 -1
- package/dist/cli/commands/codegraph.d.ts +17 -0
- package/dist/cli/commands/codegraph.d.ts.map +1 -0
- package/dist/cli/commands/codegraph.js +263 -0
- package/dist/cli/commands/codegraph.js.map +1 -0
- package/dist/cli/commands/config.d.ts.map +1 -1
- package/dist/cli/commands/config.js +94 -1
- package/dist/cli/commands/config.js.map +1 -1
- package/dist/cli/commands/daemon.d.ts +39 -0
- package/dist/cli/commands/daemon.d.ts.map +1 -1
- package/dist/cli/commands/daemon.js +167 -20
- package/dist/cli/commands/daemon.js.map +1 -1
- package/dist/cli/commands/decisions.d.ts +129 -0
- package/dist/cli/commands/decisions.d.ts.map +1 -0
- package/dist/cli/commands/decisions.js +706 -0
- package/dist/cli/commands/decisions.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts +29 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -0
- package/dist/cli/commands/doctor.js +124 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/entropy.d.ts +35 -0
- package/dist/cli/commands/entropy.d.ts.map +1 -0
- package/dist/cli/commands/entropy.js +121 -0
- package/dist/cli/commands/entropy.js.map +1 -0
- package/dist/cli/commands/executions.d.ts +1 -0
- package/dist/cli/commands/executions.d.ts.map +1 -1
- package/dist/cli/commands/executions.js +12 -2
- package/dist/cli/commands/executions.js.map +1 -1
- package/dist/cli/commands/fix.d.ts +31 -0
- package/dist/cli/commands/fix.d.ts.map +1 -0
- package/dist/cli/commands/fix.js +108 -0
- package/dist/cli/commands/fix.js.map +1 -0
- package/dist/cli/commands/governance.d.ts +21 -0
- package/dist/cli/commands/governance.d.ts.map +1 -0
- package/dist/cli/commands/governance.js +60 -0
- package/dist/cli/commands/governance.js.map +1 -0
- package/dist/cli/commands/init.d.ts +27 -0
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +158 -146
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/insights-goal-check.d.ts +54 -0
- package/dist/cli/commands/insights-goal-check.d.ts.map +1 -0
- package/dist/cli/commands/insights-goal-check.js +318 -0
- package/dist/cli/commands/insights-goal-check.js.map +1 -0
- package/dist/cli/commands/insights.d.ts +15 -0
- package/dist/cli/commands/insights.d.ts.map +1 -0
- package/dist/cli/commands/insights.js +127 -0
- package/dist/cli/commands/insights.js.map +1 -0
- package/dist/cli/commands/knowledge.d.ts +117 -0
- package/dist/cli/commands/knowledge.d.ts.map +1 -0
- package/dist/cli/commands/knowledge.js +1070 -0
- package/dist/cli/commands/knowledge.js.map +1 -0
- package/dist/cli/commands/loop.d.ts +95 -0
- package/dist/cli/commands/loop.d.ts.map +1 -0
- package/dist/cli/commands/loop.js +408 -0
- package/dist/cli/commands/loop.js.map +1 -0
- package/dist/cli/commands/maintenance.d.ts +33 -0
- package/dist/cli/commands/maintenance.d.ts.map +1 -0
- package/dist/cli/commands/maintenance.js +75 -0
- package/dist/cli/commands/maintenance.js.map +1 -0
- package/dist/cli/commands/mcp.d.ts +22 -11
- package/dist/cli/commands/mcp.d.ts.map +1 -1
- package/dist/cli/commands/mcp.js +93 -5
- package/dist/cli/commands/mcp.js.map +1 -1
- package/dist/cli/commands/menu.d.ts.map +1 -1
- package/dist/cli/commands/menu.js +10 -184
- package/dist/cli/commands/menu.js.map +1 -1
- package/dist/cli/commands/project.d.ts +98 -0
- package/dist/cli/commands/project.d.ts.map +1 -0
- package/dist/cli/commands/project.js +382 -0
- package/dist/cli/commands/project.js.map +1 -0
- package/dist/cli/commands/skills.d.ts +131 -0
- package/dist/cli/commands/skills.d.ts.map +1 -1
- package/dist/cli/commands/skills.js +404 -118
- package/dist/cli/commands/skills.js.map +1 -1
- package/dist/cli/commands/spec.d.ts +40 -0
- package/dist/cli/commands/spec.d.ts.map +1 -0
- package/dist/cli/commands/spec.js +49 -0
- package/dist/cli/commands/spec.js.map +1 -0
- package/dist/cli/commands/stats.d.ts.map +1 -1
- package/dist/cli/commands/stats.js +11 -3
- package/dist/cli/commands/stats.js.map +1 -1
- package/dist/cli/commands/status.d.ts.map +1 -1
- package/dist/cli/commands/status.js +17 -2
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/commands/trace.d.ts.map +1 -1
- package/dist/cli/commands/trace.js +4 -9
- package/dist/cli/commands/trace.js.map +1 -1
- package/dist/cli/commands/violations.d.ts +14 -0
- package/dist/cli/commands/violations.d.ts.map +1 -0
- package/dist/cli/commands/violations.js +43 -0
- package/dist/cli/commands/violations.js.map +1 -0
- package/dist/cli/index.js +34 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init/hook-manager.d.ts +1 -1
- package/dist/cli/init/hook-manager.d.ts.map +1 -1
- package/dist/cli/init/hook-manager.js +6 -0
- package/dist/cli/init/hook-manager.js.map +1 -1
- package/dist/cli/utils/resolve-session.d.ts +32 -0
- package/dist/cli/utils/resolve-session.d.ts.map +1 -0
- package/dist/cli/utils/resolve-session.js +39 -0
- package/dist/cli/utils/resolve-session.js.map +1 -0
- package/dist/core/config.d.ts +4 -1
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +11 -23
- package/dist/core/config.js.map +1 -1
- package/dist/core/constants.d.ts +51 -13
- package/dist/core/constants.d.ts.map +1 -1
- package/dist/core/constants.js +63 -13
- package/dist/core/constants.js.map +1 -1
- package/dist/core/diagnostics/checks.d.ts +151 -0
- package/dist/core/diagnostics/checks.d.ts.map +1 -0
- package/dist/core/diagnostics/checks.js +766 -0
- package/dist/core/diagnostics/checks.js.map +1 -0
- package/dist/core/diagnostics/daemon-status.d.ts +77 -0
- package/dist/core/diagnostics/daemon-status.d.ts.map +1 -0
- package/dist/core/diagnostics/daemon-status.js +113 -0
- package/dist/core/diagnostics/daemon-status.js.map +1 -0
- package/dist/core/diagnostics/entropy-checks.d.ts +83 -0
- package/dist/core/diagnostics/entropy-checks.d.ts.map +1 -0
- package/dist/core/diagnostics/entropy-checks.js +400 -0
- package/dist/core/diagnostics/entropy-checks.js.map +1 -0
- package/dist/core/diagnostics/fix-runner.d.ts +54 -0
- package/dist/core/diagnostics/fix-runner.d.ts.map +1 -0
- package/dist/core/diagnostics/fix-runner.js +90 -0
- package/dist/core/diagnostics/fix-runner.js.map +1 -0
- package/dist/core/diagnostics/heartbeat-reader.d.ts +28 -0
- package/dist/core/diagnostics/heartbeat-reader.d.ts.map +1 -0
- package/dist/core/diagnostics/heartbeat-reader.js +50 -0
- package/dist/core/diagnostics/heartbeat-reader.js.map +1 -0
- package/dist/core/diagnostics/knip-runner.d.ts +49 -0
- package/dist/core/diagnostics/knip-runner.d.ts.map +1 -0
- package/dist/core/diagnostics/knip-runner.js +100 -0
- package/dist/core/diagnostics/knip-runner.js.map +1 -0
- package/dist/core/diagnostics/markers.d.ts +96 -0
- package/dist/core/diagnostics/markers.d.ts.map +1 -0
- package/dist/core/diagnostics/markers.js +153 -0
- package/dist/core/diagnostics/markers.js.map +1 -0
- package/dist/core/event-fields.d.ts +27 -0
- package/dist/core/event-fields.d.ts.map +1 -1
- package/dist/core/event-fields.js +43 -0
- package/dist/core/event-fields.js.map +1 -1
- package/dist/core/governance/global-inject.d.ts +90 -0
- package/dist/core/governance/global-inject.d.ts.map +1 -0
- package/dist/core/governance/global-inject.js +184 -0
- package/dist/core/governance/global-inject.js.map +1 -0
- package/dist/core/insights/agent-anchor-guard.d.ts +77 -0
- package/dist/core/insights/agent-anchor-guard.d.ts.map +1 -0
- package/dist/core/insights/agent-anchor-guard.js +119 -0
- package/dist/core/insights/agent-anchor-guard.js.map +1 -0
- package/dist/core/insights/agent-distill-context.d.ts +55 -0
- package/dist/core/insights/agent-distill-context.d.ts.map +1 -0
- package/dist/core/insights/agent-distill-context.js +146 -0
- package/dist/core/insights/agent-distill-context.js.map +1 -0
- package/dist/core/insights/agent-distill-spawn.d.ts +56 -0
- package/dist/core/insights/agent-distill-spawn.d.ts.map +1 -0
- package/dist/core/insights/agent-distill-spawn.js +179 -0
- package/dist/core/insights/agent-distill-spawn.js.map +1 -0
- package/dist/core/insights/agent-drift.d.ts +66 -0
- package/dist/core/insights/agent-drift.d.ts.map +1 -0
- package/dist/core/insights/agent-drift.js +109 -0
- package/dist/core/insights/agent-drift.js.map +1 -0
- package/dist/core/insights/agent-evolution-sources.d.ts +21 -0
- package/dist/core/insights/agent-evolution-sources.d.ts.map +1 -0
- package/dist/core/insights/agent-evolution-sources.js +36 -0
- package/dist/core/insights/agent-evolution-sources.js.map +1 -0
- package/dist/core/insights/agent-health.d.ts +142 -0
- package/dist/core/insights/agent-health.d.ts.map +1 -0
- package/dist/core/insights/agent-health.js +296 -0
- package/dist/core/insights/agent-health.js.map +1 -0
- package/dist/core/insights/agent-patch-apply.d.ts +45 -0
- package/dist/core/insights/agent-patch-apply.d.ts.map +1 -0
- package/dist/core/insights/agent-patch-apply.js +165 -0
- package/dist/core/insights/agent-patch-apply.js.map +1 -0
- package/dist/core/insights/agent-suggest.d.ts +128 -0
- package/dist/core/insights/agent-suggest.d.ts.map +1 -0
- package/dist/core/insights/agent-suggest.js +284 -0
- package/dist/core/insights/agent-suggest.js.map +1 -0
- package/dist/core/insights/coverage-tiers.d.ts +46 -0
- package/dist/core/insights/coverage-tiers.d.ts.map +1 -0
- package/dist/core/insights/coverage-tiers.js +95 -0
- package/dist/core/insights/coverage-tiers.js.map +1 -0
- package/dist/core/insights/experience-extractor.d.ts +60 -0
- package/dist/core/insights/experience-extractor.d.ts.map +1 -0
- package/dist/core/insights/experience-extractor.js +319 -0
- package/dist/core/insights/experience-extractor.js.map +1 -0
- package/dist/core/insights/violation-reporter.d.ts +149 -0
- package/dist/core/insights/violation-reporter.d.ts.map +1 -0
- package/dist/core/insights/violation-reporter.js +391 -0
- package/dist/core/insights/violation-reporter.js.map +1 -0
- package/dist/core/loop/loop-engine.d.ts +140 -0
- package/dist/core/loop/loop-engine.d.ts.map +1 -0
- package/dist/core/loop/loop-engine.js +266 -0
- package/dist/core/loop/loop-engine.js.map +1 -0
- package/dist/core/queue/index.d.ts +16 -3
- package/dist/core/queue/index.d.ts.map +1 -1
- package/dist/core/queue/index.js +16 -4
- package/dist/core/queue/index.js.map +1 -1
- package/dist/core/storage/base.d.ts +317 -0
- package/dist/core/storage/base.d.ts.map +1 -1
- package/dist/core/storage/base.js +1093 -0
- package/dist/core/storage/base.js.map +1 -1
- package/dist/core/storage/codec/tool-input-codec.d.ts +93 -0
- package/dist/core/storage/codec/tool-input-codec.d.ts.map +1 -0
- package/dist/core/storage/codec/tool-input-codec.js +159 -0
- package/dist/core/storage/codec/tool-input-codec.js.map +1 -0
- package/dist/core/storage/codegraph-types.d.ts +79 -0
- package/dist/core/storage/codegraph-types.d.ts.map +1 -0
- package/dist/core/storage/codegraph-types.js +14 -0
- package/dist/core/storage/codegraph-types.js.map +1 -0
- package/dist/core/storage/codegraph.d.ts +186 -0
- package/dist/core/storage/codegraph.d.ts.map +1 -0
- package/dist/core/storage/codegraph.js +452 -0
- package/dist/core/storage/codegraph.js.map +1 -0
- package/dist/core/storage/decisions.d.ts +387 -0
- package/dist/core/storage/decisions.d.ts.map +1 -0
- package/dist/core/storage/decisions.js +534 -0
- package/dist/core/storage/decisions.js.map +1 -0
- package/dist/core/storage/events.d.ts +239 -8
- package/dist/core/storage/events.d.ts.map +1 -1
- package/dist/core/storage/events.js +705 -39
- package/dist/core/storage/events.js.map +1 -1
- package/dist/core/storage/feedback.d.ts +111 -0
- package/dist/core/storage/feedback.d.ts.map +1 -0
- package/dist/core/storage/feedback.js +186 -0
- package/dist/core/storage/feedback.js.map +1 -0
- package/dist/core/storage/forge-config.d.ts +40 -0
- package/dist/core/storage/forge-config.d.ts.map +1 -0
- package/dist/core/storage/forge-config.js +65 -0
- package/dist/core/storage/forge-config.js.map +1 -0
- package/dist/core/storage/injections.d.ts +68 -0
- package/dist/core/storage/injections.d.ts.map +1 -1
- package/dist/core/storage/injections.js +131 -5
- package/dist/core/storage/injections.js.map +1 -1
- package/dist/core/storage/knowledge.d.ts +332 -0
- package/dist/core/storage/knowledge.d.ts.map +1 -0
- package/dist/core/storage/knowledge.js +589 -0
- package/dist/core/storage/knowledge.js.map +1 -0
- package/dist/core/storage/maintenance.d.ts +36 -9
- package/dist/core/storage/maintenance.d.ts.map +1 -1
- package/dist/core/storage/maintenance.js +56 -24
- package/dist/core/storage/maintenance.js.map +1 -1
- package/dist/core/storage/pipeline-rollup.d.ts +111 -0
- package/dist/core/storage/pipeline-rollup.d.ts.map +1 -0
- package/dist/core/storage/pipeline-rollup.js +432 -0
- package/dist/core/storage/pipeline-rollup.js.map +1 -0
- package/dist/core/storage/routing.d.ts +50 -3
- package/dist/core/storage/routing.d.ts.map +1 -1
- package/dist/core/storage/routing.js +131 -10
- package/dist/core/storage/routing.js.map +1 -1
- package/dist/core/storage/rows.d.ts +31 -8
- package/dist/core/storage/rows.d.ts.map +1 -1
- package/dist/core/storage/schema.sql +367 -23
- package/dist/core/storage/sessions.d.ts +136 -0
- package/dist/core/storage/sessions.d.ts.map +1 -1
- package/dist/core/storage/sessions.js +352 -15
- package/dist/core/storage/sessions.js.map +1 -1
- package/dist/core/storage/skills.d.ts +160 -0
- package/dist/core/storage/skills.d.ts.map +1 -1
- package/dist/core/storage/skills.js +368 -7
- package/dist/core/storage/skills.js.map +1 -1
- package/dist/core/storage/sqlite.d.ts +309 -20
- package/dist/core/storage/sqlite.d.ts.map +1 -1
- package/dist/core/storage/sqlite.js +523 -16
- package/dist/core/storage/sqlite.js.map +1 -1
- package/dist/core/storage/tasks.d.ts +744 -2
- package/dist/core/storage/tasks.d.ts.map +1 -1
- package/dist/core/storage/tasks.js +1691 -17
- package/dist/core/storage/tasks.js.map +1 -1
- package/dist/core/storage/tool-intercepts.d.ts +69 -0
- package/dist/core/storage/tool-intercepts.d.ts.map +1 -0
- package/dist/core/storage/tool-intercepts.js +116 -0
- package/dist/core/storage/tool-intercepts.js.map +1 -0
- package/dist/core/types.d.ts +136 -18
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js +10 -0
- package/dist/core/types.js.map +1 -1
- package/dist/core/utils/backup.d.ts +81 -0
- package/dist/core/utils/backup.d.ts.map +1 -0
- package/dist/core/utils/backup.js +98 -0
- package/dist/core/utils/backup.js.map +1 -0
- package/dist/core/utils/binary-paths.d.ts +124 -0
- package/dist/core/utils/binary-paths.d.ts.map +1 -0
- package/dist/core/utils/binary-paths.js +218 -0
- package/dist/core/utils/binary-paths.js.map +1 -0
- package/dist/core/utils/bypass-token.d.ts +75 -0
- package/dist/core/utils/bypass-token.d.ts.map +1 -0
- package/dist/core/utils/bypass-token.js +133 -0
- package/dist/core/utils/bypass-token.js.map +1 -0
- package/dist/core/utils/cc-builtin-agents.d.ts +3 -0
- package/dist/core/utils/cc-builtin-agents.d.ts.map +1 -0
- package/dist/core/utils/cc-builtin-agents.js +29 -0
- package/dist/core/utils/cc-builtin-agents.js.map +1 -0
- package/dist/core/utils/claude-cli-resolver.d.ts +26 -0
- package/dist/core/utils/claude-cli-resolver.d.ts.map +1 -0
- package/dist/core/utils/claude-cli-resolver.js +115 -0
- package/dist/core/utils/claude-cli-resolver.js.map +1 -0
- package/dist/core/utils/claude-cli-spawn.d.ts +106 -0
- package/dist/core/utils/claude-cli-spawn.d.ts.map +1 -0
- package/dist/core/utils/claude-cli-spawn.js +219 -0
- package/dist/core/utils/claude-cli-spawn.js.map +1 -0
- package/dist/core/utils/forge-resume-block.d.ts.map +1 -1
- package/dist/core/utils/forge-resume-block.js +3 -2
- package/dist/core/utils/forge-resume-block.js.map +1 -1
- package/dist/core/utils/logger.d.ts +15 -3
- package/dist/core/utils/logger.d.ts.map +1 -1
- package/dist/core/utils/logger.js +20 -2
- package/dist/core/utils/logger.js.map +1 -1
- package/dist/core/utils/noise-prompt.d.ts +97 -0
- package/dist/core/utils/noise-prompt.d.ts.map +1 -0
- package/dist/core/utils/noise-prompt.js +127 -0
- package/dist/core/utils/noise-prompt.js.map +1 -0
- package/dist/core/utils/path.d.ts +0 -4
- package/dist/core/utils/path.d.ts.map +1 -1
- package/dist/core/utils/path.js +0 -7
- package/dist/core/utils/path.js.map +1 -1
- package/dist/core/utils/time.d.ts +67 -0
- package/dist/core/utils/time.d.ts.map +1 -1
- package/dist/core/utils/time.js +147 -0
- package/dist/core/utils/time.js.map +1 -1
- package/dist/daemon/agent-sync.d.ts +24 -0
- package/dist/daemon/agent-sync.d.ts.map +1 -0
- package/dist/daemon/agent-sync.js +114 -0
- package/dist/daemon/agent-sync.js.map +1 -0
- package/dist/daemon/config-store.d.ts +55 -0
- package/dist/daemon/config-store.d.ts.map +1 -0
- package/dist/daemon/config-store.js +146 -0
- package/dist/daemon/config-store.js.map +1 -0
- package/dist/daemon/event-parser.d.ts +22 -0
- package/dist/daemon/event-parser.d.ts.map +1 -1
- package/dist/daemon/event-parser.js +54 -3
- package/dist/daemon/event-parser.js.map +1 -1
- package/dist/daemon/handlers/history-exporter.d.ts.map +1 -1
- package/dist/daemon/handlers/history-exporter.js +9 -8
- package/dist/daemon/handlers/history-exporter.js.map +1 -1
- package/dist/daemon/handlers/post-tool-use.d.ts +66 -4
- package/dist/daemon/handlers/post-tool-use.d.ts.map +1 -1
- package/dist/daemon/handlers/post-tool-use.js +221 -8
- package/dist/daemon/handlers/post-tool-use.js.map +1 -1
- package/dist/daemon/handlers/pre-tool-use.d.ts +181 -0
- package/dist/daemon/handlers/pre-tool-use.d.ts.map +1 -0
- package/dist/daemon/handlers/pre-tool-use.js +618 -0
- package/dist/daemon/handlers/pre-tool-use.js.map +1 -0
- package/dist/daemon/handlers/stop.d.ts +55 -7
- package/dist/daemon/handlers/stop.d.ts.map +1 -1
- package/dist/daemon/handlers/stop.js +245 -8
- package/dist/daemon/handlers/stop.js.map +1 -1
- package/dist/daemon/handlers/user-prompt.d.ts +51 -14
- package/dist/daemon/handlers/user-prompt.d.ts.map +1 -1
- package/dist/daemon/handlers/user-prompt.js +223 -95
- package/dist/daemon/handlers/user-prompt.js.map +1 -1
- package/dist/daemon/handlers/violation-content-backfill.d.ts +76 -0
- package/dist/daemon/handlers/violation-content-backfill.d.ts.map +1 -0
- package/dist/daemon/handlers/violation-content-backfill.js +167 -0
- package/dist/daemon/handlers/violation-content-backfill.js.map +1 -0
- package/dist/daemon/hook-sync.d.ts.map +1 -1
- package/dist/daemon/hook-sync.js +2 -1
- package/dist/daemon/hook-sync.js.map +1 -1
- package/dist/daemon/index.d.ts +19 -0
- package/dist/daemon/index.d.ts.map +1 -1
- package/dist/daemon/index.js +439 -86
- package/dist/daemon/index.js.map +1 -1
- package/dist/daemon/lifecycle.d.ts +48 -1
- package/dist/daemon/lifecycle.d.ts.map +1 -1
- package/dist/daemon/lifecycle.js +98 -2
- package/dist/daemon/lifecycle.js.map +1 -1
- package/dist/daemon/router.d.ts +4 -1
- package/dist/daemon/router.d.ts.map +1 -1
- package/dist/daemon/router.js +4 -2
- package/dist/daemon/router.js.map +1 -1
- package/dist/daemon/rules/defaults.d.ts +20 -0
- package/dist/daemon/rules/defaults.d.ts.map +1 -0
- package/dist/daemon/rules/defaults.js +779 -0
- package/dist/daemon/rules/defaults.js.map +1 -0
- package/dist/daemon/rules/registry.d.ts +47 -0
- package/dist/daemon/rules/registry.d.ts.map +1 -0
- package/dist/daemon/rules/registry.js +84 -0
- package/dist/daemon/rules/registry.js.map +1 -0
- package/dist/daemon/rules/types.d.ts +176 -0
- package/dist/daemon/rules/types.d.ts.map +1 -0
- package/dist/daemon/rules/types.js +15 -0
- package/dist/daemon/rules/types.js.map +1 -0
- package/dist/daemon/rules/whitelist.d.ts +101 -0
- package/dist/daemon/rules/whitelist.d.ts.map +1 -0
- package/dist/daemon/rules/whitelist.js +210 -0
- package/dist/daemon/rules/whitelist.js.map +1 -0
- package/dist/daemon/rules/workflow-defaults.d.ts +52 -0
- package/dist/daemon/rules/workflow-defaults.d.ts.map +1 -0
- package/dist/daemon/rules/workflow-defaults.js +521 -0
- package/dist/daemon/rules/workflow-defaults.js.map +1 -0
- package/dist/daemon/server.d.ts +11 -1
- package/dist/daemon/server.d.ts.map +1 -1
- package/dist/daemon/server.js +7 -1
- package/dist/daemon/server.js.map +1 -1
- package/dist/daemon/services/codegraph-sync.d.ts +94 -0
- package/dist/daemon/services/codegraph-sync.d.ts.map +1 -0
- package/dist/daemon/services/codegraph-sync.js +159 -0
- package/dist/daemon/services/codegraph-sync.js.map +1 -0
- package/dist/daemon/services/context-injector.d.ts +34 -0
- package/dist/daemon/services/context-injector.d.ts.map +1 -0
- package/dist/daemon/services/context-injector.js +61 -0
- package/dist/daemon/services/context-injector.js.map +1 -0
- package/dist/daemon/services/decision-hint.d.ts +240 -0
- package/dist/daemon/services/decision-hint.d.ts.map +1 -0
- package/dist/daemon/services/decision-hint.js +562 -0
- package/dist/daemon/services/decision-hint.js.map +1 -0
- package/dist/daemon/services/event-ttl-sweep.d.ts +86 -0
- package/dist/daemon/services/event-ttl-sweep.d.ts.map +1 -0
- package/dist/daemon/services/event-ttl-sweep.js +124 -0
- package/dist/daemon/services/event-ttl-sweep.js.map +1 -0
- package/dist/daemon/services/feedback-aggregator.d.ts +167 -0
- package/dist/daemon/services/feedback-aggregator.d.ts.map +1 -0
- package/dist/daemon/services/feedback-aggregator.js +415 -0
- package/dist/daemon/services/feedback-aggregator.js.map +1 -0
- package/dist/daemon/services/heartbeat-writer.d.ts +46 -0
- package/dist/daemon/services/heartbeat-writer.d.ts.map +1 -0
- package/dist/daemon/services/heartbeat-writer.js +82 -0
- package/dist/daemon/services/heartbeat-writer.js.map +1 -0
- package/dist/daemon/services/idle-session-sweeper.d.ts +61 -0
- package/dist/daemon/services/idle-session-sweeper.d.ts.map +1 -0
- package/dist/daemon/services/idle-session-sweeper.js +94 -0
- package/dist/daemon/services/idle-session-sweeper.js.map +1 -0
- package/dist/daemon/services/idle-task-budget.d.ts +50 -0
- package/dist/daemon/services/idle-task-budget.d.ts.map +1 -0
- package/dist/daemon/services/idle-task-budget.js +72 -0
- package/dist/daemon/services/idle-task-budget.js.map +1 -0
- package/dist/daemon/services/intercept-revive.d.ts +60 -0
- package/dist/daemon/services/intercept-revive.d.ts.map +1 -0
- package/dist/daemon/services/intercept-revive.js +86 -0
- package/dist/daemon/services/intercept-revive.js.map +1 -0
- package/dist/daemon/services/intercept-rollback-guard.d.ts +105 -0
- package/dist/daemon/services/intercept-rollback-guard.d.ts.map +1 -0
- package/dist/daemon/services/intercept-rollback-guard.js +152 -0
- package/dist/daemon/services/intercept-rollback-guard.js.map +1 -0
- package/dist/daemon/services/intercept-timeout-sweeper.d.ts +58 -0
- package/dist/daemon/services/intercept-timeout-sweeper.d.ts.map +1 -0
- package/dist/daemon/services/intercept-timeout-sweeper.js +83 -0
- package/dist/daemon/services/intercept-timeout-sweeper.js.map +1 -0
- package/dist/daemon/services/kb-injector.d.ts +57 -0
- package/dist/daemon/services/kb-injector.d.ts.map +1 -0
- package/dist/daemon/services/kb-injector.js +148 -0
- package/dist/daemon/services/kb-injector.js.map +1 -0
- package/dist/daemon/services/kb-rebuild-scheduler.d.ts +95 -0
- package/dist/daemon/services/kb-rebuild-scheduler.d.ts.map +1 -0
- package/dist/daemon/services/kb-rebuild-scheduler.js +149 -0
- package/dist/daemon/services/kb-rebuild-scheduler.js.map +1 -0
- package/dist/daemon/services/loop-hint.d.ts +139 -0
- package/dist/daemon/services/loop-hint.d.ts.map +1 -0
- package/dist/daemon/services/loop-hint.js +272 -0
- package/dist/daemon/services/loop-hint.js.map +1 -0
- package/dist/daemon/services/outcome-classification-service.d.ts +49 -0
- package/dist/daemon/services/outcome-classification-service.d.ts.map +1 -0
- package/dist/daemon/services/outcome-classification-service.js +214 -0
- package/dist/daemon/services/outcome-classification-service.js.map +1 -0
- package/dist/daemon/services/outcome-classifier.d.ts +136 -0
- package/dist/daemon/services/outcome-classifier.d.ts.map +1 -0
- package/dist/daemon/services/outcome-classifier.js +178 -0
- package/dist/daemon/services/outcome-classifier.js.map +1 -0
- package/dist/daemon/services/outcome-nudge.d.ts +107 -0
- package/dist/daemon/services/outcome-nudge.d.ts.map +1 -0
- package/dist/daemon/services/outcome-nudge.js +242 -0
- package/dist/daemon/services/outcome-nudge.js.map +1 -0
- package/dist/daemon/services/spec-approval.d.ts +127 -0
- package/dist/daemon/services/spec-approval.d.ts.map +1 -0
- package/dist/daemon/services/spec-approval.js +216 -0
- package/dist/daemon/services/spec-approval.js.map +1 -0
- package/dist/daemon/services/spec-gate.d.ts +54 -0
- package/dist/daemon/services/spec-gate.d.ts.map +1 -0
- package/dist/daemon/services/spec-gate.js +113 -0
- package/dist/daemon/services/spec-gate.js.map +1 -0
- package/dist/daemon/services/task-boundary-classifier.d.ts +78 -0
- package/dist/daemon/services/task-boundary-classifier.d.ts.map +1 -0
- package/dist/daemon/services/task-boundary-classifier.js +202 -0
- package/dist/daemon/services/task-boundary-classifier.js.map +1 -0
- package/dist/daemon/services/task-segmenter.d.ts +230 -1
- package/dist/daemon/services/task-segmenter.d.ts.map +1 -1
- package/dist/daemon/services/task-segmenter.js +527 -17
- package/dist/daemon/services/task-segmenter.js.map +1 -1
- package/dist/daemon/skill-sync.d.ts +7 -2
- package/dist/daemon/skill-sync.d.ts.map +1 -1
- package/dist/daemon/skill-sync.js +114 -9
- package/dist/daemon/skill-sync.js.map +1 -1
- package/dist/daemon/startup/maintenance-schedulers.d.ts +68 -0
- package/dist/daemon/startup/maintenance-schedulers.d.ts.map +1 -0
- package/dist/daemon/startup/maintenance-schedulers.js +294 -0
- package/dist/daemon/startup/maintenance-schedulers.js.map +1 -0
- package/dist/daemon/templates/agents/agent-retro-distiller.md +106 -0
- package/dist/daemon/templates/agents/claudemd-writer.md +102 -0
- package/dist/daemon/templates/agents/coder.md +262 -0
- package/dist/daemon/templates/agents/decision-maker.md +546 -0
- package/dist/daemon/templates/agents/doc-reviewer.md +118 -0
- package/dist/daemon/templates/agents/harness-debug-full.md +196 -0
- package/dist/daemon/templates/agents/knowledge-builder.md +120 -0
- package/dist/daemon/templates/agents/patch-applier.md +145 -0
- package/dist/daemon/templates/agents/planner.md +217 -0
- package/dist/daemon/templates/agents/safety-net-implementer.md +278 -0
- package/dist/daemon/templates/agents/skill-distiller.md +114 -0
- package/dist/daemon/templates/agents/task-boundary-classifier.md +65 -0
- package/dist/daemon/templates/agents/verify-agent.md +259 -0
- package/dist/daemon/utils/inject-block.d.ts +39 -0
- package/dist/daemon/utils/inject-block.d.ts.map +1 -0
- package/dist/daemon/utils/inject-block.js +25 -0
- package/dist/daemon/utils/inject-block.js.map +1 -0
- package/dist/hooks/hook-lib.sh +8 -0
- package/dist/hooks/notification.sh +19 -8
- package/dist/hooks/post-tool-use.sh +41 -23
- package/dist/hooks/pre-tool-use.sh +54 -23
- package/dist/hooks/session-start.sh +68 -0
- package/dist/hooks/stop.sh +31 -11
- package/dist/hooks/user-prompt-submit.sh +37 -21
- package/dist/knowledge/adapters/go-adapter.d.ts +65 -0
- package/dist/knowledge/adapters/go-adapter.d.ts.map +1 -0
- package/dist/knowledge/adapters/go-adapter.js +294 -0
- package/dist/knowledge/adapters/go-adapter.js.map +1 -0
- package/dist/knowledge/adapters/index.d.ts +41 -0
- package/dist/knowledge/adapters/index.d.ts.map +1 -0
- package/dist/knowledge/adapters/index.js +71 -0
- package/dist/knowledge/adapters/index.js.map +1 -0
- package/dist/knowledge/adapters/java-adapter.d.ts +66 -0
- package/dist/knowledge/adapters/java-adapter.d.ts.map +1 -0
- package/dist/knowledge/adapters/java-adapter.js +260 -0
- package/dist/knowledge/adapters/java-adapter.js.map +1 -0
- package/dist/knowledge/adapters/js-vue-adapter.d.ts +56 -0
- package/dist/knowledge/adapters/js-vue-adapter.d.ts.map +1 -0
- package/dist/knowledge/adapters/js-vue-adapter.js +203 -0
- package/dist/knowledge/adapters/js-vue-adapter.js.map +1 -0
- package/dist/knowledge/adapters/kotlin-adapter.d.ts +55 -0
- package/dist/knowledge/adapters/kotlin-adapter.d.ts.map +1 -0
- package/dist/knowledge/adapters/kotlin-adapter.js +209 -0
- package/dist/knowledge/adapters/kotlin-adapter.js.map +1 -0
- package/dist/knowledge/adapters/monorepo-adapter.d.ts +77 -0
- package/dist/knowledge/adapters/monorepo-adapter.d.ts.map +1 -0
- package/dist/knowledge/adapters/monorepo-adapter.js +170 -0
- package/dist/knowledge/adapters/monorepo-adapter.js.map +1 -0
- package/dist/knowledge/adapters/python-adapter.d.ts +89 -0
- package/dist/knowledge/adapters/python-adapter.d.ts.map +1 -0
- package/dist/knowledge/adapters/python-adapter.js +358 -0
- package/dist/knowledge/adapters/python-adapter.js.map +1 -0
- package/dist/knowledge/adapters/rust-adapter.d.ts +73 -0
- package/dist/knowledge/adapters/rust-adapter.d.ts.map +1 -0
- package/dist/knowledge/adapters/rust-adapter.js +329 -0
- package/dist/knowledge/adapters/rust-adapter.js.map +1 -0
- package/dist/knowledge/adapters/types.d.ts +99 -0
- package/dist/knowledge/adapters/types.d.ts.map +1 -0
- package/dist/knowledge/adapters/types.js +17 -0
- package/dist/knowledge/adapters/types.js.map +1 -0
- package/dist/knowledge/adapters/typescript-adapter.d.ts +57 -0
- package/dist/knowledge/adapters/typescript-adapter.d.ts.map +1 -0
- package/dist/knowledge/adapters/typescript-adapter.js +171 -0
- package/dist/knowledge/adapters/typescript-adapter.js.map +1 -0
- package/dist/knowledge/audit-applier.d.ts +70 -0
- package/dist/knowledge/audit-applier.d.ts.map +1 -0
- package/dist/knowledge/audit-applier.js +251 -0
- package/dist/knowledge/audit-applier.js.map +1 -0
- package/dist/knowledge/builder.d.ts +261 -0
- package/dist/knowledge/builder.d.ts.map +1 -0
- package/dist/knowledge/builder.js +966 -0
- package/dist/knowledge/builder.js.map +1 -0
- package/dist/knowledge/cli-provider.d.ts +151 -0
- package/dist/knowledge/cli-provider.d.ts.map +1 -0
- package/dist/knowledge/cli-provider.js +313 -0
- package/dist/knowledge/cli-provider.js.map +1 -0
- package/dist/knowledge/constants.d.ts +78 -0
- package/dist/knowledge/constants.d.ts.map +1 -0
- package/dist/knowledge/constants.js +98 -0
- package/dist/knowledge/constants.js.map +1 -0
- package/dist/knowledge/cross-module.d.ts +139 -0
- package/dist/knowledge/cross-module.d.ts.map +1 -0
- package/dist/knowledge/cross-module.js +370 -0
- package/dist/knowledge/cross-module.js.map +1 -0
- package/dist/knowledge/git-hooks.d.ts +67 -0
- package/dist/knowledge/git-hooks.d.ts.map +1 -0
- package/dist/knowledge/git-hooks.js +258 -0
- package/dist/knowledge/git-hooks.js.map +1 -0
- package/dist/knowledge/graph/edge-extractor.d.ts +45 -0
- package/dist/knowledge/graph/edge-extractor.d.ts.map +1 -0
- package/dist/knowledge/graph/edge-extractor.js +242 -0
- package/dist/knowledge/graph/edge-extractor.js.map +1 -0
- package/dist/knowledge/graph/impact.d.ts +73 -0
- package/dist/knowledge/graph/impact.d.ts.map +1 -0
- package/dist/knowledge/graph/impact.js +94 -0
- package/dist/knowledge/graph/impact.js.map +1 -0
- package/dist/knowledge/graph/types.d.ts +22 -0
- package/dist/knowledge/graph/types.d.ts.map +1 -0
- package/dist/knowledge/graph/types.js +13 -0
- package/dist/knowledge/graph/types.js.map +1 -0
- package/dist/knowledge/module-hash.d.ts +88 -0
- package/dist/knowledge/module-hash.d.ts.map +1 -0
- package/dist/knowledge/module-hash.js +162 -0
- package/dist/knowledge/module-hash.js.map +1 -0
- package/dist/knowledge/project-detector.d.ts +101 -0
- package/dist/knowledge/project-detector.d.ts.map +1 -0
- package/dist/knowledge/project-detector.js +223 -0
- package/dist/knowledge/project-detector.js.map +1 -0
- package/dist/knowledge/prompt.d.ts +237 -0
- package/dist/knowledge/prompt.d.ts.map +1 -0
- package/dist/knowledge/prompt.js +416 -0
- package/dist/knowledge/prompt.js.map +1 -0
- package/dist/knowledge/query.d.ts +118 -0
- package/dist/knowledge/query.d.ts.map +1 -0
- package/dist/knowledge/query.js +438 -0
- package/dist/knowledge/query.js.map +1 -0
- package/dist/knowledge/repo-map.d.ts +97 -0
- package/dist/knowledge/repo-map.d.ts.map +1 -0
- package/dist/knowledge/repo-map.js +447 -0
- package/dist/knowledge/repo-map.js.map +1 -0
- package/dist/knowledge/tools/index.d.ts +14 -0
- package/dist/knowledge/tools/index.d.ts.map +1 -0
- package/dist/knowledge/tools/index.js +11 -0
- package/dist/knowledge/tools/index.js.map +1 -0
- package/dist/knowledge/tools/knowledge-get-page.d.ts +46 -0
- package/dist/knowledge/tools/knowledge-get-page.d.ts.map +1 -0
- package/dist/knowledge/tools/knowledge-get-page.js +101 -0
- package/dist/knowledge/tools/knowledge-get-page.js.map +1 -0
- package/dist/knowledge/tools/knowledge-query.d.ts +77 -0
- package/dist/knowledge/tools/knowledge-query.d.ts.map +1 -0
- package/dist/knowledge/tools/knowledge-query.js +104 -0
- package/dist/knowledge/tools/knowledge-query.js.map +1 -0
- package/dist/knowledge/tools/repo-map-lookup.d.ts +45 -0
- package/dist/knowledge/tools/repo-map-lookup.d.ts.map +1 -0
- package/dist/knowledge/tools/repo-map-lookup.js +82 -0
- package/dist/knowledge/tools/repo-map-lookup.js.map +1 -0
- package/dist/knowledge/types.d.ts +269 -0
- package/dist/knowledge/types.d.ts.map +1 -0
- package/dist/knowledge/types.js +10 -0
- package/dist/knowledge/types.js.map +1 -0
- package/dist/knowledge/validator.d.ts +90 -0
- package/dist/knowledge/validator.d.ts.map +1 -0
- package/dist/knowledge/validator.js +355 -0
- package/dist/knowledge/validator.js.map +1 -0
- package/dist/mcp/server.d.ts +64 -8
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +448 -12
- package/dist/mcp/server.js.map +1 -1
- package/dist/skills/builtin-skills.d.ts +35 -0
- package/dist/skills/builtin-skills.d.ts.map +1 -0
- package/dist/skills/builtin-skills.js +68 -0
- package/dist/skills/builtin-skills.js.map +1 -0
- package/dist/skills/distill/attribution.d.ts +59 -0
- package/dist/skills/distill/attribution.d.ts.map +1 -0
- package/dist/skills/distill/attribution.js +101 -0
- package/dist/skills/distill/attribution.js.map +1 -0
- package/dist/skills/distill/distiller.d.ts +161 -0
- package/dist/skills/distill/distiller.d.ts.map +1 -0
- package/dist/skills/distill/distiller.js +461 -0
- package/dist/skills/distill/distiller.js.map +1 -0
- package/dist/skills/distill/index.d.ts +223 -0
- package/dist/skills/distill/index.d.ts.map +1 -0
- package/dist/skills/distill/index.js +466 -0
- package/dist/skills/distill/index.js.map +1 -0
- package/dist/skills/distill/project-anchor-guard.d.ts +116 -0
- package/dist/skills/distill/project-anchor-guard.d.ts.map +1 -0
- package/dist/skills/distill/project-anchor-guard.js +334 -0
- package/dist/skills/distill/project-anchor-guard.js.map +1 -0
- package/dist/skills/distill/topic-deduper.d.ts +77 -0
- package/dist/skills/distill/topic-deduper.d.ts.map +1 -0
- package/dist/skills/distill/topic-deduper.js +119 -0
- package/dist/skills/distill/topic-deduper.js.map +1 -0
- package/dist/skills/distill/upstream-fetcher.d.ts +71 -0
- package/dist/skills/distill/upstream-fetcher.d.ts.map +1 -0
- package/dist/skills/distill/upstream-fetcher.js +202 -0
- package/dist/skills/distill/upstream-fetcher.js.map +1 -0
- package/dist/skills/distilled/distilled-api-design.md +495 -0
- package/dist/skills/distilled/distilled-architecture-decision.md +173 -0
- package/dist/skills/distilled/distilled-brainstorming.md +79 -0
- package/dist/skills/distilled/distilled-brand-guidelines.md +86 -0
- package/dist/skills/distilled/distilled-canvas-design.md +128 -0
- package/dist/skills/distilled/distilled-claude-api.md +185 -0
- package/dist/skills/distilled/distilled-creator.md +181 -0
- package/dist/skills/distilled/distilled-db-schema-design.md +245 -0
- package/dist/skills/distilled/distilled-dispatching-parallel-agents.md +136 -0
- package/dist/skills/distilled/distilled-doc-coauthoring.md +144 -0
- package/dist/skills/distilled/distilled-docx.md +231 -0
- package/dist/skills/distilled/distilled-executing-plans.md +148 -0
- package/dist/skills/distilled/distilled-finishing-a-development-branch.md +213 -0
- package/dist/skills/distilled/distilled-frontend-design.md +118 -0
- package/dist/skills/distilled/distilled-harness-engineering.md +242 -0
- package/dist/skills/distilled/distilled-karpathy-guidelines.md +104 -0
- package/dist/skills/distilled/distilled-performance-optimization.md +175 -0
- package/dist/skills/distilled/distilled-receiving-code-review.md +185 -0
- package/dist/skills/distilled/distilled-spec-driven-design.md +193 -0
- package/dist/skills/distilled/distilled-subagent-driven-development.md +124 -0
- package/dist/skills/distilled/distilled-systematic-debugging.md +154 -0
- package/dist/skills/distilled/distilled-test-driven-development.md +432 -0
- package/dist/skills/distilled/distilled-using-superpowers.md +134 -0
- package/dist/skills/distilled/distilled-verification-before-completion.md +213 -0
- package/dist/skills/distilled/distilled-writing-skills.md +175 -0
- package/dist/skills/registry.d.ts +55 -51
- package/dist/skills/registry.d.ts.map +1 -1
- package/dist/skills/registry.js +82 -196
- package/dist/skills/registry.js.map +1 -1
- package/dist/skills/tools/pipeline-suggest.js +14 -14
- package/dist/skills/tools/pipeline-suggest.js.map +1 -1
- package/dist/skills/tools/skill-invoke.d.ts +3 -2
- package/dist/skills/tools/skill-invoke.d.ts.map +1 -1
- package/dist/skills/tools/skill-invoke.js +4 -2
- package/dist/skills/tools/skill-invoke.js.map +1 -1
- package/dist/web/analytics/anti-pattern-detector.d.ts.map +1 -1
- package/dist/web/analytics/anti-pattern-detector.js +6 -1
- package/dist/web/analytics/anti-pattern-detector.js.map +1 -1
- package/dist/web/analytics/drift-detector.d.ts +6 -0
- package/dist/web/analytics/drift-detector.d.ts.map +1 -1
- package/dist/web/analytics/drift-detector.js +15 -8
- package/dist/web/analytics/drift-detector.js.map +1 -1
- package/dist/web/analytics/weekly-report.d.ts +13 -0
- package/dist/web/analytics/weekly-report.d.ts.map +1 -1
- package/dist/web/analytics/weekly-report.js +17 -3
- package/dist/web/analytics/weekly-report.js.map +1 -1
- package/dist/web/routes/_helpers.d.ts +31 -0
- package/dist/web/routes/_helpers.d.ts.map +1 -1
- package/dist/web/routes/_helpers.js +33 -0
- package/dist/web/routes/_helpers.js.map +1 -1
- package/dist/web/routes/agent-content.d.ts +30 -0
- package/dist/web/routes/agent-content.d.ts.map +1 -0
- package/dist/web/routes/agent-content.js +139 -0
- package/dist/web/routes/agent-content.js.map +1 -0
- package/dist/web/routes/agent-distill.d.ts +49 -0
- package/dist/web/routes/agent-distill.d.ts.map +1 -0
- package/dist/web/routes/agent-distill.js +526 -0
- package/dist/web/routes/agent-distill.js.map +1 -0
- package/dist/web/routes/config.d.ts +56 -0
- package/dist/web/routes/config.d.ts.map +1 -0
- package/dist/web/routes/config.js +243 -0
- package/dist/web/routes/config.js.map +1 -0
- package/dist/web/routes/decisions.d.ts +15 -0
- package/dist/web/routes/decisions.d.ts.map +1 -0
- package/dist/web/routes/decisions.js +181 -0
- package/dist/web/routes/decisions.js.map +1 -0
- package/dist/web/routes/diagnostics.d.ts +61 -0
- package/dist/web/routes/diagnostics.d.ts.map +1 -0
- package/dist/web/routes/diagnostics.js +203 -0
- package/dist/web/routes/diagnostics.js.map +1 -0
- package/dist/web/routes/error-handler.d.ts +0 -4
- package/dist/web/routes/error-handler.d.ts.map +1 -1
- package/dist/web/routes/error-handler.js +0 -8
- package/dist/web/routes/error-handler.js.map +1 -1
- package/dist/web/routes/events.d.ts.map +1 -1
- package/dist/web/routes/events.js +26 -1
- package/dist/web/routes/events.js.map +1 -1
- package/dist/web/routes/health.d.ts +33 -0
- package/dist/web/routes/health.d.ts.map +1 -0
- package/dist/web/routes/health.js +37 -0
- package/dist/web/routes/health.js.map +1 -0
- package/dist/web/routes/insights.d.ts +0 -5
- package/dist/web/routes/insights.d.ts.map +1 -1
- package/dist/web/routes/insights.js +0 -0
- package/dist/web/routes/insights.js.map +1 -1
- package/dist/web/routes/knowledge.d.ts +57 -0
- package/dist/web/routes/knowledge.d.ts.map +1 -0
- package/dist/web/routes/knowledge.js +772 -0
- package/dist/web/routes/knowledge.js.map +1 -0
- package/dist/web/routes/patch.d.ts +60 -1
- package/dist/web/routes/patch.d.ts.map +1 -1
- package/dist/web/routes/patch.js +170 -64
- package/dist/web/routes/patch.js.map +1 -1
- package/dist/web/routes/pipeline.d.ts +28 -0
- package/dist/web/routes/pipeline.d.ts.map +1 -0
- package/dist/web/routes/pipeline.js +145 -0
- package/dist/web/routes/pipeline.js.map +1 -0
- package/dist/web/routes/rules.d.ts.map +1 -1
- package/dist/web/routes/rules.js +26 -7
- package/dist/web/routes/rules.js.map +1 -1
- package/dist/web/routes/sessions.d.ts.map +1 -1
- package/dist/web/routes/sessions.js +17 -8
- package/dist/web/routes/sessions.js.map +1 -1
- package/dist/web/routes/skill-content.d.ts +30 -0
- package/dist/web/routes/skill-content.d.ts.map +1 -0
- package/dist/web/routes/skill-content.js +117 -0
- package/dist/web/routes/skill-content.js.map +1 -0
- package/dist/web/routes/skill-stats.d.ts.map +1 -1
- package/dist/web/routes/skill-stats.js +153 -16
- package/dist/web/routes/skill-stats.js.map +1 -1
- package/dist/web/routes/skills-distill.d.ts +29 -0
- package/dist/web/routes/skills-distill.d.ts.map +1 -0
- package/dist/web/routes/skills-distill.js +552 -0
- package/dist/web/routes/skills-distill.js.map +1 -0
- package/dist/web/routes/skills.js +7 -7
- package/dist/web/routes/skills.js.map +1 -1
- package/dist/web/routes/stats.d.ts.map +1 -1
- package/dist/web/routes/stats.js +2 -1
- package/dist/web/routes/stats.js.map +1 -1
- package/dist/web/routes/task-timeline.d.ts +178 -0
- package/dist/web/routes/task-timeline.d.ts.map +1 -0
- package/dist/web/routes/task-timeline.js +530 -0
- package/dist/web/routes/task-timeline.js.map +1 -0
- package/dist/web/routes/tasks.d.ts.map +1 -1
- package/dist/web/routes/tasks.js +377 -8
- package/dist/web/routes/tasks.js.map +1 -1
- package/dist/web/routes/trace.d.ts.map +1 -1
- package/dist/web/routes/trace.js +3 -2
- package/dist/web/routes/trace.js.map +1 -1
- package/dist/web/routes/types.d.ts +0 -4
- package/dist/web/routes/types.d.ts.map +1 -1
- package/dist/web/routes/types.js +1 -1
- package/dist/web/routes/types.js.map +1 -1
- package/dist/web/routes/violations.d.ts +14 -0
- package/dist/web/routes/violations.d.ts.map +1 -0
- package/dist/web/routes/violations.js +112 -0
- package/dist/web/routes/violations.js.map +1 -0
- package/dist/web/server.d.ts.map +1 -1
- package/dist/web/server.js +99 -19
- package/dist/web/server.js.map +1 -1
- package/dist/web/services/agent-distill-manager.d.ts +122 -0
- package/dist/web/services/agent-distill-manager.d.ts.map +1 -0
- package/dist/web/services/agent-distill-manager.js +397 -0
- package/dist/web/services/agent-distill-manager.js.map +1 -0
- package/dist/web/services/build-manager.d.ts +72 -0
- package/dist/web/services/build-manager.d.ts.map +1 -0
- package/dist/web/services/build-manager.js +189 -0
- package/dist/web/services/build-manager.js.map +1 -0
- package/dist/web/services/distill-manager.d.ts +172 -0
- package/dist/web/services/distill-manager.d.ts.map +1 -0
- package/dist/web/services/distill-manager.js +411 -0
- package/dist/web/services/distill-manager.js.map +1 -0
- package/dist/web/static/assets/AgentDetailPage-DlUeA1sX.js +2 -0
- package/dist/web/static/assets/AgentDetailPage-DlUeA1sX.js.map +1 -0
- package/dist/web/static/assets/AgentDistillRunPage-Cybo4bii.js +3 -0
- package/dist/web/static/assets/AgentDistillRunPage-Cybo4bii.js.map +1 -0
- package/dist/web/static/assets/AgentsPage-Qd9FExLG.js +2 -0
- package/dist/web/static/assets/AgentsPage-Qd9FExLG.js.map +1 -0
- package/dist/web/static/assets/DaemonHealthPage-DTSVqtrI.js +2 -0
- package/dist/web/static/assets/DaemonHealthPage-DTSVqtrI.js.map +1 -0
- package/dist/web/static/assets/DecisionDetailPage-b4BA8dhc.js +2 -0
- package/dist/web/static/assets/DecisionDetailPage-b4BA8dhc.js.map +1 -0
- package/dist/web/static/assets/DecisionsPage-a3NRo_T7.js +2 -0
- package/dist/web/static/assets/DecisionsPage-a3NRo_T7.js.map +1 -0
- package/dist/web/static/assets/DiagnosticsPage-DIVdiIQG.js +2 -0
- package/dist/web/static/assets/DiagnosticsPage-DIVdiIQG.js.map +1 -0
- package/dist/web/static/assets/DistillDetailPage-U6a3l2iP.js +4 -0
- package/dist/web/static/assets/DistillDetailPage-U6a3l2iP.js.map +1 -0
- package/dist/web/static/assets/DistillPage-O7BHtRN8.js +2 -0
- package/dist/web/static/assets/DistillPage-O7BHtRN8.js.map +1 -0
- package/dist/web/static/assets/DistillRunPage-D1JuRWWr.js +2 -0
- package/dist/web/static/assets/DistillRunPage-D1JuRWWr.js.map +1 -0
- package/dist/web/static/assets/GlobalScopeHint-Q3wTJx3F.js +2 -0
- package/dist/web/static/assets/GlobalScopeHint-Q3wTJx3F.js.map +1 -0
- package/dist/web/static/assets/IssueDetailPage-BDfrtk2C.js +2 -0
- package/dist/web/static/assets/IssueDetailPage-BDfrtk2C.js.map +1 -0
- package/dist/web/static/assets/IssuesPage-SKmhlCrw.js +2 -0
- package/dist/web/static/assets/IssuesPage-SKmhlCrw.js.map +1 -0
- package/dist/web/static/assets/KbDetailPage-Yna86Na8.js +2 -0
- package/dist/web/static/assets/KbDetailPage-Yna86Na8.js.map +1 -0
- package/dist/web/static/assets/KbHitsPage-Cljl7H9p.js +2 -0
- package/dist/web/static/assets/KbHitsPage-Cljl7H9p.js.map +1 -0
- package/dist/web/static/assets/MarkdownRenderer-DlDQNihj.js +3 -0
- package/dist/web/static/assets/MarkdownRenderer-DlDQNihj.js.map +1 -0
- package/dist/web/static/assets/NotFound-LMzbP51V.js +2 -0
- package/dist/web/static/assets/NotFound-LMzbP51V.js.map +1 -0
- package/dist/web/static/assets/SettingsPage-DzoK4PKg.js +2 -0
- package/dist/web/static/assets/SettingsPage-DzoK4PKg.js.map +1 -0
- package/dist/web/static/assets/SkillDetailPage-BuBJJ_NX.js +2 -0
- package/dist/web/static/assets/SkillDetailPage-BuBJJ_NX.js.map +1 -0
- package/dist/web/static/assets/SkillsPage-aojkJpBc.js +2 -0
- package/dist/web/static/assets/SkillsPage-aojkJpBc.js.map +1 -0
- package/dist/web/static/assets/TaskDetailPage-1ckxnGhw.js +4 -0
- package/dist/web/static/assets/TaskDetailPage-1ckxnGhw.js.map +1 -0
- package/dist/web/static/assets/TasksHubPage-C2PLh3eg.js +6 -0
- package/dist/web/static/assets/TasksHubPage-C2PLh3eg.js.map +1 -0
- package/dist/web/static/assets/WorkplacePage-DHrp5VxS.js +2 -0
- package/dist/web/static/assets/WorkplacePage-DHrp5VxS.js.map +1 -0
- package/dist/web/static/assets/arco-DFQA6dO_.css +1 -0
- package/dist/web/static/assets/arco-DV6xCLhr.js +14 -0
- package/dist/web/static/assets/arco-DV6xCLhr.js.map +1 -0
- package/dist/web/static/assets/charts-BSV4cyC4.js +37 -0
- package/dist/web/static/assets/charts-BSV4cyC4.js.map +1 -0
- package/dist/web/static/assets/date-fns-sbWH3_uq.js +2 -0
- package/dist/web/static/assets/date-fns-sbWH3_uq.js.map +1 -0
- package/dist/web/static/assets/index-B_v_MKlb.css +1 -0
- package/dist/web/static/assets/index-DileOOE4.js +4 -0
- package/dist/web/static/assets/index-DileOOE4.js.map +1 -0
- package/dist/web/static/assets/lucide-CnlPQoG8.js +72 -0
- package/dist/web/static/assets/lucide-CnlPQoG8.js.map +1 -0
- package/dist/web/static/assets/markdown-CA7ePUts.js +30 -0
- package/dist/web/static/assets/markdown-CA7ePUts.js.map +1 -0
- package/dist/web/static/assets/outcome-BKGy9azt.js +2 -0
- package/dist/web/static/assets/outcome-BKGy9azt.js.map +1 -0
- package/dist/web/static/assets/query-CgCOpYWf.js +2 -0
- package/dist/web/static/assets/{query-C99w429o.js.map → query-CgCOpYWf.js.map} +1 -1
- package/dist/web/static/assets/{react-router-r79dBVy4.js → react-router-Cxmg8RuL.js} +3 -3
- package/dist/web/static/assets/{react-router-r79dBVy4.js.map → react-router-Cxmg8RuL.js.map} +1 -1
- package/dist/web/static/assets/react-vendor-tkvCrao7.js +57 -0
- package/dist/web/static/assets/react-vendor-tkvCrao7.js.map +1 -0
- package/dist/web/static/assets/syntax-highlighter-BDYycNja.js +6 -0
- package/dist/web/static/assets/syntax-highlighter-BDYycNja.js.map +1 -0
- package/dist/web/static/assets/useAgentStats-B-uTgqBd.js +2 -0
- package/dist/web/static/assets/useAgentStats-B-uTgqBd.js.map +1 -0
- package/dist/web/static/assets/useDecisions-D-G2Ft5T.js +2 -0
- package/dist/web/static/assets/useDecisions-D-G2Ft5T.js.map +1 -0
- package/dist/web/static/assets/useDistill-21dZkXlT.js +3 -0
- package/dist/web/static/assets/useDistill-21dZkXlT.js.map +1 -0
- package/dist/web/static/assets/useEffectiveProject-DQiyX54y.js +2 -0
- package/dist/web/static/assets/useEffectiveProject-DQiyX54y.js.map +1 -0
- package/dist/web/static/assets/useIssuesFeed-CFiyQkAL.js +2 -0
- package/dist/web/static/assets/useIssuesFeed-CFiyQkAL.js.map +1 -0
- package/dist/web/static/assets/useKbHits-xKXWgqh9.js +2 -0
- package/dist/web/static/assets/useKbHits-xKXWgqh9.js.map +1 -0
- package/dist/web/static/assets/useSkillStats-B5hbIwdf.js +2 -0
- package/dist/web/static/assets/useSkillStats-B5hbIwdf.js.map +1 -0
- package/dist/web/static/assets/vendor-DS-q4Eyc.js +36 -0
- package/dist/web/static/assets/vendor-DS-q4Eyc.js.map +1 -0
- package/dist/web/static/index.html +12 -8
- package/package.json +18 -5
- package/dist/core/ai/provider.d.ts +0 -63
- package/dist/core/ai/provider.d.ts.map +0 -1
- package/dist/core/ai/provider.js +0 -241
- package/dist/core/ai/provider.js.map +0 -1
- package/dist/core/ai/types.d.ts +0 -43
- package/dist/core/ai/types.d.ts.map +0 -1
- package/dist/core/ai/types.js +0 -5
- package/dist/core/ai/types.js.map +0 -1
- package/dist/core/storage/token-usage.d.ts +0 -36
- package/dist/core/storage/token-usage.d.ts.map +0 -1
- package/dist/core/storage/token-usage.js +0 -59
- package/dist/core/storage/token-usage.js.map +0 -1
- package/dist/core/utils/token-tracker.d.ts +0 -39
- package/dist/core/utils/token-tracker.d.ts.map +0 -1
- package/dist/core/utils/token-tracker.js +0 -69
- package/dist/core/utils/token-tracker.js.map +0 -1
- package/dist/skills/index.d.ts +0 -3
- package/dist/skills/index.d.ts.map +0 -1
- package/dist/skills/index.js +0 -3
- package/dist/skills/index.js.map +0 -1
- package/dist/skills/matcher.d.ts +0 -26
- package/dist/skills/matcher.d.ts.map +0 -1
- package/dist/skills/matcher.js +0 -113
- package/dist/skills/matcher.js.map +0 -1
- package/dist/skills/official/code-simplifier.md +0 -52
- package/dist/skills/official/find-skills.md +0 -142
- package/dist/skills/official/official-api-design.md +0 -30
- package/dist/skills/official/official-architecture-decision.md +0 -41
- package/dist/skills/official/official-bmad.md +0 -118
- package/dist/skills/official/official-db-schema-design.md +0 -34
- package/dist/skills/official/official-debug.md +0 -25
- package/dist/skills/official/official-doc-driven.md +0 -31
- package/dist/skills/official/official-harness-engineering.md +0 -108
- package/dist/skills/official/official-openspec.md +0 -89
- package/dist/skills/official/official-performance-optimization.md +0 -30
- package/dist/skills/official/official-pr-review.md +0 -35
- package/dist/skills/official/official-release-checklist.md +0 -30
- package/dist/skills/official/official-security-hardening.md +0 -32
- package/dist/skills/official/official-spec-driven-design.md +0 -31
- package/dist/skills/official/planning-with-files.md +0 -241
- package/dist/skills/official/ui-ux-pro-max.md +0 -105
- package/dist/skills/official/webapp-testing.md +0 -96
- package/dist/skills/official-skills.d.ts +0 -26
- package/dist/skills/official-skills.d.ts.map +0 -1
- package/dist/skills/official-skills.js +0 -74
- package/dist/skills/official-skills.js.map +0 -1
- package/dist/skills/semantic-matcher.d.ts +0 -60
- package/dist/skills/semantic-matcher.d.ts.map +0 -1
- package/dist/skills/semantic-matcher.js +0 -192
- package/dist/skills/semantic-matcher.js.map +0 -1
- package/dist/skills/upgrade-engine.d.ts +0 -93
- package/dist/skills/upgrade-engine.d.ts.map +0 -1
- package/dist/skills/upgrade-engine.js +0 -447
- package/dist/skills/upgrade-engine.js.map +0 -1
- package/dist/skills/upgrade-prompt.d.ts +0 -20
- package/dist/skills/upgrade-prompt.d.ts.map +0 -1
- package/dist/skills/upgrade-prompt.js +0 -75
- package/dist/skills/upgrade-prompt.js.map +0 -1
- package/dist/web/routes/ai.d.ts +0 -10
- package/dist/web/routes/ai.d.ts.map +0 -1
- package/dist/web/routes/ai.js +0 -186
- package/dist/web/routes/ai.js.map +0 -1
- package/dist/web/routes/token-usage.d.ts +0 -7
- package/dist/web/routes/token-usage.d.ts.map +0 -1
- package/dist/web/routes/token-usage.js +0 -18
- package/dist/web/routes/token-usage.js.map +0 -1
- package/dist/web/ssrf-guard.d.ts +0 -35
- package/dist/web/ssrf-guard.d.ts.map +0 -1
- package/dist/web/ssrf-guard.js +0 -93
- package/dist/web/ssrf-guard.js.map +0 -1
- package/dist/web/static/assets/AIConfig-CdDWzJyO.js +0 -2
- package/dist/web/static/assets/AIConfig-CdDWzJyO.js.map +0 -1
- package/dist/web/static/assets/Dashboard-CoEmmIDt.js +0 -2
- package/dist/web/static/assets/Dashboard-CoEmmIDt.js.map +0 -1
- package/dist/web/static/assets/Drawer-DdRTzlLB.js +0 -2
- package/dist/web/static/assets/Drawer-DdRTzlLB.js.map +0 -1
- package/dist/web/static/assets/Events-DrIq1SUS.js +0 -2
- package/dist/web/static/assets/Events-DrIq1SUS.js.map +0 -1
- package/dist/web/static/assets/Reports-DFBM3MDK.js +0 -2
- package/dist/web/static/assets/Reports-DFBM3MDK.js.map +0 -1
- package/dist/web/static/assets/SearchInput-qCj_jAcf.js +0 -2
- package/dist/web/static/assets/SearchInput-qCj_jAcf.js.map +0 -1
- package/dist/web/static/assets/SessionDetail-CCzwdoT7.js +0 -2
- package/dist/web/static/assets/SessionDetail-CCzwdoT7.js.map +0 -1
- package/dist/web/static/assets/Sessions-FfLYkAw9.js +0 -2
- package/dist/web/static/assets/Sessions-FfLYkAw9.js.map +0 -1
- package/dist/web/static/assets/Skills-C8Gvs3Qa.js +0 -2
- package/dist/web/static/assets/Skills-C8Gvs3Qa.js.map +0 -1
- package/dist/web/static/assets/TaskDetail-BS8pYhaR.js +0 -2
- package/dist/web/static/assets/TaskDetail-BS8pYhaR.js.map +0 -1
- package/dist/web/static/assets/Tasks-CyuhizG8.js +0 -2
- package/dist/web/static/assets/Tasks-CyuhizG8.js.map +0 -1
- package/dist/web/static/assets/charts-CLrM0_uM.js +0 -37
- package/dist/web/static/assets/charts-CLrM0_uM.js.map +0 -1
- package/dist/web/static/assets/date-fns-CZ_bHujz.js +0 -2
- package/dist/web/static/assets/date-fns-CZ_bHujz.js.map +0 -1
- package/dist/web/static/assets/export-L_VBD2p1.js +0 -4
- package/dist/web/static/assets/export-L_VBD2p1.js.map +0 -1
- package/dist/web/static/assets/index-CBX47X8l.js +0 -3
- package/dist/web/static/assets/index-CBX47X8l.js.map +0 -1
- package/dist/web/static/assets/index-DjIoMdoR.css +0 -1
- package/dist/web/static/assets/lucide-Bs_edTLa.js +0 -232
- package/dist/web/static/assets/lucide-Bs_edTLa.js.map +0 -1
- package/dist/web/static/assets/query-C99w429o.js +0 -2
- package/dist/web/static/assets/react-vendor-CSp-GLFF.js +0 -49
- package/dist/web/static/assets/react-vendor-CSp-GLFF.js.map +0 -1
- package/dist/web/static/assets/syntax-highlighter-44FakypI.js +0 -9
- package/dist/web/static/assets/syntax-highlighter-44FakypI.js.map +0 -1
- package/dist/web/static/assets/time-Bxuk0M-C.js +0 -2
- package/dist/web/static/assets/time-Bxuk0M-C.js.map +0 -1
- package/dist/web/static/assets/vendor-CMMjVdZs.js +0 -64
- package/dist/web/static/assets/vendor-CMMjVdZs.js.map +0 -1
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Global governance protocol injection (global-governance Phase 1,
|
|
3
|
+
* decision 7fa0f2ab).
|
|
4
|
+
*
|
|
5
|
+
* Other projects' Claude sessions read `~/.claude/CLAUDE.md` (the user-level
|
|
6
|
+
* global context) but NOT claude-forge's per-repo CLAUDE.md. So a pointer like
|
|
7
|
+
* "see <repo>/CLAUDE.md" is useless there — they can't resolve the path. We
|
|
8
|
+
* inject a *self-contained, condensed* copy of the DECISION HINT protocol
|
|
9
|
+
* contract directly into the global file, wrapped in idempotent markers.
|
|
10
|
+
*
|
|
11
|
+
* Idempotent: the block lives between `cf:governance:start` / `:end` markers.
|
|
12
|
+
* Re-running replaces the marker contents in place (never appends a duplicate).
|
|
13
|
+
* Reversible: `removeGlobalGovernanceBlock` strips the block.
|
|
14
|
+
*
|
|
15
|
+
* NOTE: this module deliberately takes the target path as a parameter so tests
|
|
16
|
+
* can point it at a temp HOME and NEVER touch the real `~/.claude/CLAUDE.md`.
|
|
17
|
+
*/
|
|
18
|
+
import { existsSync, readFileSync, writeFileSync, copyFileSync, mkdirSync } from 'node:fs';
|
|
19
|
+
import { dirname, join } from 'node:path';
|
|
20
|
+
import { homedir } from 'node:os';
|
|
21
|
+
import { stripForgeResumeBlocks } from '../utils/forge-resume-block.js';
|
|
22
|
+
export const GOVERNANCE_MARKER_START = '<!-- cf:governance:start -->';
|
|
23
|
+
export const GOVERNANCE_MARKER_END = '<!-- cf:governance:end -->';
|
|
24
|
+
/**
|
|
25
|
+
* Resolve the real global CLAUDE.md path (`~/.claude/CLAUDE.md`).
|
|
26
|
+
* Production callers use this; tests pass an explicit temp path instead.
|
|
27
|
+
*/
|
|
28
|
+
export function defaultGlobalClaudeMdPath() {
|
|
29
|
+
return join(homedir(), '.claude', 'CLAUDE.md');
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* The condensed DECISION HINT protocol contract.
|
|
33
|
+
*
|
|
34
|
+
* Authority ruling (decision ed98c8e8, 2026-06-10): the project CLAUDE.md
|
|
35
|
+
* "DECISION HINT 协议契约" section is the SINGLE authoritative full text.
|
|
36
|
+
* This global body is a short pointer-style digest — core directives only,
|
|
37
|
+
* everything else (codegraph/grep 分工、并行细则、例外清单) lives in the
|
|
38
|
+
* project file. This kills the ~950-token triple-injection duplication
|
|
39
|
+
* (global block + project block + hint template all carrying the full text).
|
|
40
|
+
*
|
|
41
|
+
* Also carries the spec-before-change discipline (decision 393481d1): a
|
|
42
|
+
* cross-project user mandate that previously lived only as a hand-written
|
|
43
|
+
* block OUTSIDE the markers on one machine — now folded into the generator
|
|
44
|
+
* so every install gets it via inject-global (same path as decision def0adcb
|
|
45
|
+
* took for the cd/output-redirection Bash convention).
|
|
46
|
+
*
|
|
47
|
+
* Excludes the marker lines; `buildGovernanceBlock` wraps it.
|
|
48
|
+
*/
|
|
49
|
+
export const GOVERNANCE_PROTOCOL_BODY = `## claude-forge 决策治理协议(全局注入 · 压缩版)
|
|
50
|
+
|
|
51
|
+
> 本块由 \`cf governance inject-global\` 自动写入/更新;移除:\`--remove\`。
|
|
52
|
+
> 完整协议(codegraph/grep 分工、并行细则、例外清单)见各项目 CLAUDE.md 的「DECISION HINT 协议契约」节。
|
|
53
|
+
|
|
54
|
+
**主线程是纯编排者**——只 spawn agent、传递结果、等用户批准、回填 outcome;不自己 grep/find 查代码、不 Edit/Write 实施。
|
|
55
|
+
1. 决策(第一动作):先 spawn \`decision-maker\`(prompt 头带 \`<!-- decision-id: XXXX -->\`,若有),它返回前不回答正文、不动手。
|
|
56
|
+
2. 搜索/查代码 → spawn \`Explore\` / \`doc-reviewer\`;实施(用户批准后)→ spawn \`coder\` 等实施 agent;实施后 → spawn \`verify-agent\`。
|
|
57
|
+
3. 可拆分的独立工作在一条消息里 batch spawn 并行跑;bypass:prompt 末尾加 \`skip decision\`。
|
|
58
|
+
|
|
59
|
+
> 诚实边界:强指令、非机械锁——提高遵守率,不做 100% 保证。
|
|
60
|
+
|
|
61
|
+
## Bash 命令约定(减少授权弹窗)
|
|
62
|
+
|
|
63
|
+
跑 Bash 时**不要**写「\`cd <路径> && cmd > file\`」这种「复合命令 + cd + 输出重定向」
|
|
64
|
+
组合——它触发 Claude Code 的 path-resolution-bypass 安全检查(\`Compound command
|
|
65
|
+
contains cd with output redirection - manual approval required\`),该检查**无法**用
|
|
66
|
+
\`permissions.allow\` 放行,只能从命令写法规避:
|
|
67
|
+
|
|
68
|
+
- ❌ \`cd /some/path && cmd > file\`(触发强制人工批准)
|
|
69
|
+
- ✅ 用绝对路径:\`cmd > /some/path/file\`,目标路径写全
|
|
70
|
+
- ✅ 工作目录本来就持久在项目根,**多数命令根本不需要 \`cd\` 前缀**——直接跑
|
|
71
|
+
- ✅ 实在要换目录,分两条独立命令,或不带 \`>\` 重定向
|
|
72
|
+
|
|
73
|
+
> 这能消除跨项目反复出现的 \`cd\` 授权弹窗,且不牺牲安全(无需开 bypassPermissions)。
|
|
74
|
+
> 这是强约定、非硬锁——提高遵守率,不做 100% 保证。
|
|
75
|
+
|
|
76
|
+
## 通用工程纪律:代码改动前先写 spec(所有项目 · 用户强制)
|
|
77
|
+
|
|
78
|
+
任何**涉及代码改动**的任务(bugfix / 样式 / 单点 / 重构 / 新功能)实施前**必须**先写一份 spec
|
|
79
|
+
经用户批准,再 spawn 实施 agent;适用**所有项目**。
|
|
80
|
+
- 流程:spawn \`planner\`(或项目约定 spec agent)写 spec 到 \`docs/design/\` → 用户批准 → 才 spawn \`coder\` 实施 → 实施后 \`verify-agent\`。
|
|
81
|
+
- 事后 changelog / 实施记录**不能**替代「实施前的 spec」;**不得**以「小 / trivial / 已诊断清楚 / 只改一行」为由跳过。
|
|
82
|
+
- 例外(不需 spec):纯查询 / 诊断 / 元任务(commit、build、restart、改版本号、改文档/注释)。
|
|
83
|
+
|
|
84
|
+
> 强指令、非机械锁——提高遵守率,不做 100% 保证。这条由主线程自律保证。`;
|
|
85
|
+
/** Wrap the protocol body in idempotent markers. */
|
|
86
|
+
export function buildGovernanceBlock(body = GOVERNANCE_PROTOCOL_BODY) {
|
|
87
|
+
return `${GOVERNANCE_MARKER_START}\n${body}\n${GOVERNANCE_MARKER_END}`;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Build a regex that matches the full marker block (markers inclusive),
|
|
91
|
+
* tolerant of surrounding whitespace/newlines.
|
|
92
|
+
*/
|
|
93
|
+
function markerBlockRegex() {
|
|
94
|
+
const esc = (s) => s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
95
|
+
return new RegExp(`${esc(GOVERNANCE_MARKER_START)}[\\s\\S]*?${esc(GOVERNANCE_MARKER_END)}`);
|
|
96
|
+
}
|
|
97
|
+
/** True when the file content already contains a governance marker block. */
|
|
98
|
+
export function hasGovernanceBlock(content) {
|
|
99
|
+
return markerBlockRegex().test(content);
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Strip legacy forge-resume residue from the GLOBAL CLAUDE.md content
|
|
103
|
+
* (decision ed98c8e8, 2026-06-10).
|
|
104
|
+
*
|
|
105
|
+
* The resume engine historically wrote "上次工作续接" blocks into
|
|
106
|
+
* `~/.claude/CLAUDE.md`; that target was later retired (resume now goes to
|
|
107
|
+
* the per-project CLAUDE.md only), leaving stale blocks behind that get
|
|
108
|
+
* re-injected into every session of every project. This removes all known
|
|
109
|
+
* forms:
|
|
110
|
+
* 1. UUID envelope: `<!-- forge:resume-begin:<uuid> -->…<!-- forge:resume-end:<uuid> -->`
|
|
111
|
+
* 2. Legacy markers: `<!-- forge:resume -->…<!-- forge:end-resume -->`
|
|
112
|
+
* (both delegated to the shared `stripForgeResumeBlocks` util)
|
|
113
|
+
* 3. Bare fenced residue: optional `## 上次工作续接` heading +
|
|
114
|
+
* ```forge-resume-body``` fence + trailing `_生成时间: …_` line.
|
|
115
|
+
*
|
|
116
|
+
* Called by `injectGlobalGovernance` on every run, so the one-time cleanup
|
|
117
|
+
* self-heals even if stale content reappears.
|
|
118
|
+
*/
|
|
119
|
+
export function stripLegacyResumeBlocks(content) {
|
|
120
|
+
// Forms 1 + 2 — shared util (handles UUID envelope + legacy bare markers).
|
|
121
|
+
let s = stripForgeResumeBlocks(content);
|
|
122
|
+
// Form 3 — bare fenced block (no surviving HTML markers around it).
|
|
123
|
+
s = s.replace(/(?:^|\n)(?:##\s*上次工作续接[^\n]*\n+)?```forge-resume-body\n[\s\S]*?\n```[^\S\n]*(?:\n+_生成时间:[^\n]*_)?[^\S\n]*/g, '\n');
|
|
124
|
+
// Stray standalone "_生成时间: …_" lines left between removed blocks.
|
|
125
|
+
s = s.replace(/(?:^|\n)_生成时间:[^\n]*_[^\S\n]*(?=\n|$)/g, '\n');
|
|
126
|
+
s = s.replace(/\n{3,}/g, '\n\n').replace(/^\n+/, '');
|
|
127
|
+
return s;
|
|
128
|
+
}
|
|
129
|
+
function backupExisting(targetPath) {
|
|
130
|
+
const bak = `${targetPath}.bak`;
|
|
131
|
+
copyFileSync(targetPath, bak);
|
|
132
|
+
return bak;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Idempotently inject (or update) the governance block into `targetPath`.
|
|
136
|
+
*
|
|
137
|
+
* - File missing → create it (with the block as its content).
|
|
138
|
+
* - Block present → replace marker contents in place.
|
|
139
|
+
* - Block absent → append the block (separated by a blank line).
|
|
140
|
+
*
|
|
141
|
+
* Always backs up a pre-existing file to `<path>.bak` before mutating.
|
|
142
|
+
*/
|
|
143
|
+
export function injectGlobalGovernance(targetPath = defaultGlobalClaudeMdPath(), body = GOVERNANCE_PROTOCOL_BODY) {
|
|
144
|
+
const block = buildGovernanceBlock(body);
|
|
145
|
+
if (!existsSync(targetPath)) {
|
|
146
|
+
mkdirSync(dirname(targetPath), { recursive: true });
|
|
147
|
+
writeFileSync(targetPath, `${block}\n`, 'utf8');
|
|
148
|
+
return { action: 'created', path: targetPath, backupPath: null };
|
|
149
|
+
}
|
|
150
|
+
const original = readFileSync(targetPath, 'utf8');
|
|
151
|
+
const backupPath = backupExisting(targetPath);
|
|
152
|
+
// Self-healing cleanup of stale resume residue (decision ed98c8e8).
|
|
153
|
+
const cleaned = stripLegacyResumeBlocks(original);
|
|
154
|
+
if (hasGovernanceBlock(cleaned)) {
|
|
155
|
+
const next = cleaned.replace(markerBlockRegex(), block);
|
|
156
|
+
if (next !== original)
|
|
157
|
+
writeFileSync(targetPath, next, 'utf8');
|
|
158
|
+
return { action: 'updated', path: targetPath, backupPath };
|
|
159
|
+
}
|
|
160
|
+
// Append, ensuring exactly one blank line of separation.
|
|
161
|
+
const sep = cleaned.endsWith('\n') ? (cleaned.endsWith('\n\n') ? '' : '\n') : '\n\n';
|
|
162
|
+
writeFileSync(targetPath, `${cleaned}${sep}${block}\n`, 'utf8');
|
|
163
|
+
return { action: 'inserted', path: targetPath, backupPath };
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Remove the governance block from `targetPath` (reversible counterpart).
|
|
167
|
+
* Backs up the file first. Returns 'absent' when there is no block / no file.
|
|
168
|
+
*/
|
|
169
|
+
export function removeGlobalGovernanceBlock(targetPath = defaultGlobalClaudeMdPath()) {
|
|
170
|
+
if (!existsSync(targetPath)) {
|
|
171
|
+
return { action: 'absent', path: targetPath, backupPath: null };
|
|
172
|
+
}
|
|
173
|
+
const original = readFileSync(targetPath, 'utf8');
|
|
174
|
+
if (!hasGovernanceBlock(original)) {
|
|
175
|
+
return { action: 'absent', path: targetPath, backupPath: null };
|
|
176
|
+
}
|
|
177
|
+
const backupPath = backupExisting(targetPath);
|
|
178
|
+
// Strip the block plus any immediately-trailing blank lines it left behind.
|
|
179
|
+
let next = original.replace(markerBlockRegex(), '');
|
|
180
|
+
next = next.replace(/\n{3,}/g, '\n\n').replace(/^\n+/, '');
|
|
181
|
+
writeFileSync(targetPath, next, 'utf8');
|
|
182
|
+
return { action: 'removed', path: targetPath, backupPath };
|
|
183
|
+
}
|
|
184
|
+
//# sourceMappingURL=global-inject.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"global-inject.js","sourceRoot":"","sources":["../../../src/core/governance/global-inject.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* agent-anchor-guard.ts — Phase 3 retro-distill safety floor (decision 234f1ad4).
|
|
3
|
+
*
|
|
4
|
+
* Mirror of `src/skills/distill/project-anchor-guard.ts` but with INVERTED
|
|
5
|
+
* semantics: the skill guard forbids a denylist of project anchors; this guard
|
|
6
|
+
* forbids a denylist of **protected regions** of an agent template — anything
|
|
7
|
+
* the retro-distiller's patch is NOT allowed to touch.
|
|
8
|
+
*
|
|
9
|
+
* 不变量 (decision 234f1ad4 / 75344363): the LLM-drafted patch may only edit the
|
|
10
|
+
* "evolvable" region of a template (skill-discovery wording, KB-pull step
|
|
11
|
+
* wording, Role/Steps explanatory prose). It must NEVER edit:
|
|
12
|
+
* - the YAML frontmatter block (name / description / tools / model / color /
|
|
13
|
+
* version) — behavior identity + the version line (version is bumped only
|
|
14
|
+
* mechanically on adoption, never hand-written by the distiller),
|
|
15
|
+
* - the `# IMPORTANT: subagent rules` section body — behavior本体,
|
|
16
|
+
* - the `` `Decision: <id>` `` header requirement token + "header" wording
|
|
17
|
+
* (the changelog-surfacing invariant, test 75344363).
|
|
18
|
+
*
|
|
19
|
+
* Any patch line that touches a protected region → a violation. The CLI caller
|
|
20
|
+
* rejects the whole draft (no retry — same no-retry policy as the skill
|
|
21
|
+
* distiller's ProjectAnchorRejection).
|
|
22
|
+
*
|
|
23
|
+
* READ-ONLY pure functions; never writes a template.
|
|
24
|
+
*/
|
|
25
|
+
/** A single protected-region hit inside a candidate patch. */
|
|
26
|
+
export interface AgentAnchorViolation {
|
|
27
|
+
/** Protected-region label (e.g. "frontmatter", "subagent-rules"). */
|
|
28
|
+
region: string;
|
|
29
|
+
/** The offending patch line (changed line content, '+'/'-' marker stripped). */
|
|
30
|
+
line: string;
|
|
31
|
+
/** 1-indexed position of the offending line within the patch text. */
|
|
32
|
+
patchLine: number;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Protected-region matchers. Each label maps to a regex tested against a
|
|
36
|
+
* single changed line of the patch (the `+`/`-` body, marker stripped). A hit
|
|
37
|
+
* means the distiller tried to add/remove a line that belongs to a protected
|
|
38
|
+
* region — rejected.
|
|
39
|
+
*
|
|
40
|
+
* Exported so tests can assert the matcher set is intact.
|
|
41
|
+
*/
|
|
42
|
+
export declare const PROTECTED_REGION_MATCHERS: ReadonlyArray<{
|
|
43
|
+
region: string;
|
|
44
|
+
regex: RegExp;
|
|
45
|
+
}>;
|
|
46
|
+
/**
|
|
47
|
+
* Split a unified-diff / patch text into its CHANGED lines (those starting with
|
|
48
|
+
* `+` or `-`, excluding the `+++`/`---` file headers and `@@` hunk markers),
|
|
49
|
+
* returning the marker-stripped body plus the 1-indexed patch line number.
|
|
50
|
+
*
|
|
51
|
+
* The distiller is asked to emit a unified diff in the `---AGENT-PATCH---`
|
|
52
|
+
* envelope; we only care about lines it ADDS or REMOVES.
|
|
53
|
+
*/
|
|
54
|
+
export declare function extractChangedLines(patch: string): Array<{
|
|
55
|
+
body: string;
|
|
56
|
+
patchLine: number;
|
|
57
|
+
}>;
|
|
58
|
+
/**
|
|
59
|
+
* Scan a candidate patch for protected-region hits. Returns the (possibly
|
|
60
|
+
* empty) list of violations. Empty = the patch only touches the evolvable
|
|
61
|
+
* region → safe to write as a draft.
|
|
62
|
+
*
|
|
63
|
+
* Pure: no IO.
|
|
64
|
+
*/
|
|
65
|
+
export declare function scanAgentPatch(patch: string): AgentAnchorViolation[];
|
|
66
|
+
/**
|
|
67
|
+
* Convenience: throw if a patch touches any protected region. The CLI uses
|
|
68
|
+
* `scanAgentPatch` directly (to print all violations); this is for tests /
|
|
69
|
+
* call-sites that just want a hard gate.
|
|
70
|
+
*/
|
|
71
|
+
export declare class AgentAnchorRejection extends Error {
|
|
72
|
+
readonly hits: AgentAnchorViolation[];
|
|
73
|
+
readonly agent: string;
|
|
74
|
+
constructor(agent: string, hits: AgentAnchorViolation[]);
|
|
75
|
+
}
|
|
76
|
+
export declare function assertEvolvableOnly(agent: string, patch: string): void;
|
|
77
|
+
//# sourceMappingURL=agent-anchor-guard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-anchor-guard.d.ts","sourceRoot":"","sources":["../../../src/core/insights/agent-anchor-guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,8DAA8D;AAC9D,MAAM,WAAW,oBAAoB;IACnC,qEAAqE;IACrE,MAAM,EAAE,MAAM,CAAC;IACf,gFAAgF;IAChF,IAAI,EAAE,MAAM,CAAC;IACb,sEAAsE;IACtE,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,yBAAyB,EAAE,aAAa,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAmBtF,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAa7F;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,oBAAoB,EAAE,CAcpE;AAED;;;;GAIG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,QAAQ,CAAC,IAAI,EAAE,oBAAoB,EAAE,CAAC;IACtC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;gBACX,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,EAAE;CASxD;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAGtE"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* agent-anchor-guard.ts — Phase 3 retro-distill safety floor (decision 234f1ad4).
|
|
3
|
+
*
|
|
4
|
+
* Mirror of `src/skills/distill/project-anchor-guard.ts` but with INVERTED
|
|
5
|
+
* semantics: the skill guard forbids a denylist of project anchors; this guard
|
|
6
|
+
* forbids a denylist of **protected regions** of an agent template — anything
|
|
7
|
+
* the retro-distiller's patch is NOT allowed to touch.
|
|
8
|
+
*
|
|
9
|
+
* 不变量 (decision 234f1ad4 / 75344363): the LLM-drafted patch may only edit the
|
|
10
|
+
* "evolvable" region of a template (skill-discovery wording, KB-pull step
|
|
11
|
+
* wording, Role/Steps explanatory prose). It must NEVER edit:
|
|
12
|
+
* - the YAML frontmatter block (name / description / tools / model / color /
|
|
13
|
+
* version) — behavior identity + the version line (version is bumped only
|
|
14
|
+
* mechanically on adoption, never hand-written by the distiller),
|
|
15
|
+
* - the `# IMPORTANT: subagent rules` section body — behavior本体,
|
|
16
|
+
* - the `` `Decision: <id>` `` header requirement token + "header" wording
|
|
17
|
+
* (the changelog-surfacing invariant, test 75344363).
|
|
18
|
+
*
|
|
19
|
+
* Any patch line that touches a protected region → a violation. The CLI caller
|
|
20
|
+
* rejects the whole draft (no retry — same no-retry policy as the skill
|
|
21
|
+
* distiller's ProjectAnchorRejection).
|
|
22
|
+
*
|
|
23
|
+
* READ-ONLY pure functions; never writes a template.
|
|
24
|
+
*/
|
|
25
|
+
/**
|
|
26
|
+
* Protected-region matchers. Each label maps to a regex tested against a
|
|
27
|
+
* single changed line of the patch (the `+`/`-` body, marker stripped). A hit
|
|
28
|
+
* means the distiller tried to add/remove a line that belongs to a protected
|
|
29
|
+
* region — rejected.
|
|
30
|
+
*
|
|
31
|
+
* Exported so tests can assert the matcher set is intact.
|
|
32
|
+
*/
|
|
33
|
+
export const PROTECTED_REGION_MATCHERS = [
|
|
34
|
+
// ── YAML frontmatter fields (behavior identity) ──────────────────────────
|
|
35
|
+
// The frontmatter lives inside the leading `---`...`---` block. We flag any
|
|
36
|
+
// changed line that looks like one of its top-level fields. `version:` is
|
|
37
|
+
// included here: it is bumped only by the adoption script, never by a patch.
|
|
38
|
+
{ region: 'frontmatter', regex: /^(name|description|tools|model|color|version)\s*:/i },
|
|
39
|
+
// The frontmatter fence itself.
|
|
40
|
+
{ region: 'frontmatter-fence', regex: /^---\s*$/ },
|
|
41
|
+
// ── `# IMPORTANT: subagent rules` section header (behavior本体 anchor) ─────
|
|
42
|
+
{ region: 'subagent-rules', regex: /^#\s*IMPORTANT:\s*subagent rules/i },
|
|
43
|
+
// The canonical bullet lines of that section (behavior本体). We flag the
|
|
44
|
+
// load-bearing rule lines so a patch cannot quietly rewrite the rules body.
|
|
45
|
+
{ region: 'subagent-rules', regex: /You are a subagent\s*—\s*you\s*(?:\*\*)?cannot(?:\*\*)?\s*spawn other agents/i },
|
|
46
|
+
{ region: 'subagent-rules', regex: /You MUST NOT modify test fixtures/i },
|
|
47
|
+
// ── Decision-header changelog invariant (test 75344363) ──────────────────
|
|
48
|
+
// The literal token `Decision: <id>` and the surrounding "header" wording.
|
|
49
|
+
{ region: 'decision-header', regex: /`Decision:\s*<id>`/ },
|
|
50
|
+
];
|
|
51
|
+
/**
|
|
52
|
+
* Split a unified-diff / patch text into its CHANGED lines (those starting with
|
|
53
|
+
* `+` or `-`, excluding the `+++`/`---` file headers and `@@` hunk markers),
|
|
54
|
+
* returning the marker-stripped body plus the 1-indexed patch line number.
|
|
55
|
+
*
|
|
56
|
+
* The distiller is asked to emit a unified diff in the `---AGENT-PATCH---`
|
|
57
|
+
* envelope; we only care about lines it ADDS or REMOVES.
|
|
58
|
+
*/
|
|
59
|
+
export function extractChangedLines(patch) {
|
|
60
|
+
const out = [];
|
|
61
|
+
const lines = patch.split('\n');
|
|
62
|
+
for (let i = 0; i < lines.length; i++) {
|
|
63
|
+
const raw = lines[i];
|
|
64
|
+
// Skip unified-diff file headers (`+++ ` / `--- `) and hunk markers (`@@`).
|
|
65
|
+
if (raw.startsWith('+++') || raw.startsWith('---'))
|
|
66
|
+
continue;
|
|
67
|
+
if (raw.startsWith('@@'))
|
|
68
|
+
continue;
|
|
69
|
+
if (raw.startsWith('+') || raw.startsWith('-')) {
|
|
70
|
+
out.push({ body: raw.slice(1).trim(), patchLine: i + 1 });
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return out;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Scan a candidate patch for protected-region hits. Returns the (possibly
|
|
77
|
+
* empty) list of violations. Empty = the patch only touches the evolvable
|
|
78
|
+
* region → safe to write as a draft.
|
|
79
|
+
*
|
|
80
|
+
* Pure: no IO.
|
|
81
|
+
*/
|
|
82
|
+
export function scanAgentPatch(patch) {
|
|
83
|
+
const violations = [];
|
|
84
|
+
const changed = extractChangedLines(patch);
|
|
85
|
+
for (const { body, patchLine } of changed) {
|
|
86
|
+
if (!body)
|
|
87
|
+
continue;
|
|
88
|
+
for (const { region, regex } of PROTECTED_REGION_MATCHERS) {
|
|
89
|
+
regex.lastIndex = 0;
|
|
90
|
+
if (regex.test(body)) {
|
|
91
|
+
violations.push({ region, line: body, patchLine });
|
|
92
|
+
break; // one violation per offending line is enough
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
return violations;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Convenience: throw if a patch touches any protected region. The CLI uses
|
|
100
|
+
* `scanAgentPatch` directly (to print all violations); this is for tests /
|
|
101
|
+
* call-sites that just want a hard gate.
|
|
102
|
+
*/
|
|
103
|
+
export class AgentAnchorRejection extends Error {
|
|
104
|
+
hits;
|
|
105
|
+
agent;
|
|
106
|
+
constructor(agent, hits) {
|
|
107
|
+
super(`[agent-distill] ${agent} patch rejected: ${hits.length} protected-region edit(s) ` +
|
|
108
|
+
`(first: ${hits[0]?.region} @ patch line ${hits[0]?.patchLine}: "${hits[0]?.line}")`);
|
|
109
|
+
this.name = 'AgentAnchorRejection';
|
|
110
|
+
this.hits = hits;
|
|
111
|
+
this.agent = agent;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
export function assertEvolvableOnly(agent, patch) {
|
|
115
|
+
const hits = scanAgentPatch(patch);
|
|
116
|
+
if (hits.length > 0)
|
|
117
|
+
throw new AgentAnchorRejection(agent, hits);
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=agent-anchor-guard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-anchor-guard.js","sourceRoot":"","sources":["../../../src/core/insights/agent-anchor-guard.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* agent-distill-context.ts — Phase 3 retro-distill prompt assembly (decision
|
|
3
|
+
* 234f1ad4). Pure function: turns the read-only health/drift/failure signals
|
|
4
|
+
* into the structured prompt fed to the `agent-retro-distiller` template, plus a
|
|
5
|
+
* human-readable signal summary used by `--dry-run` (which never spawns the LLM).
|
|
6
|
+
*
|
|
7
|
+
* READ-ONLY: takes already-aggregated data + the template text, returns strings.
|
|
8
|
+
* No IO, no spawn, no template writes.
|
|
9
|
+
*/
|
|
10
|
+
import type { AgentHealth } from './agent-health.js';
|
|
11
|
+
import type { DriftNudge } from './agent-drift.js';
|
|
12
|
+
/**
|
|
13
|
+
* Command-level gate (门槛 1, spec §数据稀薄退化): below this delegation count we
|
|
14
|
+
* do NOT spawn the LLM — there is not enough usage signal to draft a confident
|
|
15
|
+
* change. = MIN_DELEGATIONS_FOR_SIGNAL × 5 (spec recommendation ≈ 15).
|
|
16
|
+
*/
|
|
17
|
+
export declare const DISTILL_MIN_DELEGATIONS: number;
|
|
18
|
+
export interface FailureSample {
|
|
19
|
+
/** task title (or '(untitled)'). */
|
|
20
|
+
title: string;
|
|
21
|
+
/** session id (for traceability). */
|
|
22
|
+
session_id: string;
|
|
23
|
+
ts: number;
|
|
24
|
+
}
|
|
25
|
+
export interface DistillContextInput {
|
|
26
|
+
agent: string;
|
|
27
|
+
currentVersion: number;
|
|
28
|
+
currentTemplate: string;
|
|
29
|
+
health: AgentHealth | null;
|
|
30
|
+
drift: DriftNudge[];
|
|
31
|
+
failureSamples: FailureSample[];
|
|
32
|
+
windowDays: number;
|
|
33
|
+
/** Distinct (agent,skill) pairs with total_rated ≥ SUGGESTION_MIN_RATED. */
|
|
34
|
+
ratedPairs: number;
|
|
35
|
+
}
|
|
36
|
+
export interface DistillContext {
|
|
37
|
+
/** Whether command-level + signal-level gates allow a spawn (门槛 1+2). */
|
|
38
|
+
enoughSignal: boolean;
|
|
39
|
+
/** One-line reason when !enoughSignal (printed by the CLI degradation path). */
|
|
40
|
+
insufficientReason: string | null;
|
|
41
|
+
/** Maturity annotation (printed in --dry-run + the draft header). */
|
|
42
|
+
maturity: string;
|
|
43
|
+
/** Human-readable signal summary (printed by --dry-run). */
|
|
44
|
+
summary: string;
|
|
45
|
+
/** The full structured prompt for the distiller (only used on real spawn). */
|
|
46
|
+
prompt: string;
|
|
47
|
+
/** The dead/weak/drift dimensions that WOULD drive drafted changes. */
|
|
48
|
+
proposedChangeTypes: string[];
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Build the distill context (gates + maturity + summary + prompt + proposed
|
|
52
|
+
* change types) from read-only signals. Pure.
|
|
53
|
+
*/
|
|
54
|
+
export declare function buildDistillContext(input: DistillContextInput): DistillContext;
|
|
55
|
+
//# sourceMappingURL=agent-distill-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-distill-context.d.ts","sourceRoot":"","sources":["../../../src/core/insights/agent-distill-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,QAAiC,CAAC;AAEtE,MAAM,WAAW,aAAa;IAC5B,oCAAoC;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,qCAAqC;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IAC3B,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,4EAA4E;IAC5E,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,yEAAyE;IACzE,YAAY,EAAE,OAAO,CAAC;IACtB,gFAAgF;IAChF,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,qEAAqE;IACrE,QAAQ,EAAE,MAAM,CAAC;IACjB,4DAA4D;IAC5D,OAAO,EAAE,MAAM,CAAC;IAChB,8EAA8E;IAC9E,MAAM,EAAE,MAAM,CAAC;IACf,uEAAuE;IACvE,mBAAmB,EAAE,MAAM,EAAE,CAAC;CAC/B;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,mBAAmB,GAAG,cAAc,CAgI9E"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* agent-distill-context.ts — Phase 3 retro-distill prompt assembly (decision
|
|
3
|
+
* 234f1ad4). Pure function: turns the read-only health/drift/failure signals
|
|
4
|
+
* into the structured prompt fed to the `agent-retro-distiller` template, plus a
|
|
5
|
+
* human-readable signal summary used by `--dry-run` (which never spawns the LLM).
|
|
6
|
+
*
|
|
7
|
+
* READ-ONLY: takes already-aggregated data + the template text, returns strings.
|
|
8
|
+
* No IO, no spawn, no template writes.
|
|
9
|
+
*/
|
|
10
|
+
import { MIN_DELEGATIONS_FOR_SIGNAL, SUGGESTION_MIN_RATED } from './agent-health.js';
|
|
11
|
+
/**
|
|
12
|
+
* Command-level gate (门槛 1, spec §数据稀薄退化): below this delegation count we
|
|
13
|
+
* do NOT spawn the LLM — there is not enough usage signal to draft a confident
|
|
14
|
+
* change. = MIN_DELEGATIONS_FOR_SIGNAL × 5 (spec recommendation ≈ 15).
|
|
15
|
+
*/
|
|
16
|
+
export const DISTILL_MIN_DELEGATIONS = MIN_DELEGATIONS_FOR_SIGNAL * 5;
|
|
17
|
+
/**
|
|
18
|
+
* Build the distill context (gates + maturity + summary + prompt + proposed
|
|
19
|
+
* change types) from read-only signals. Pure.
|
|
20
|
+
*/
|
|
21
|
+
export function buildDistillContext(input) {
|
|
22
|
+
const delegations = input.health?.delegations ?? 0;
|
|
23
|
+
const maturity = `delegations=${delegations} rated_pairs=${input.ratedPairs} window_days=${input.windowDays}`;
|
|
24
|
+
// ── Gate (门槛 1): not enough delegations to trust the signal. ──────────────
|
|
25
|
+
let enoughSignal = true;
|
|
26
|
+
let insufficientReason = null;
|
|
27
|
+
if (delegations < DISTILL_MIN_DELEGATIONS) {
|
|
28
|
+
enoughSignal = false;
|
|
29
|
+
insufficientReason =
|
|
30
|
+
`数据不足(delegations=${delegations} < 阈值 ${DISTILL_MIN_DELEGATIONS}),建议先观测,未产改进草案。`;
|
|
31
|
+
}
|
|
32
|
+
// ── Collect the change types the evidence would support (门槛 2 per-pair). ──
|
|
33
|
+
const proposedChangeTypes = [];
|
|
34
|
+
const dead = [];
|
|
35
|
+
const weak = [];
|
|
36
|
+
if (input.health) {
|
|
37
|
+
for (const r of input.health.recommended_skills) {
|
|
38
|
+
// 门槛 2: a pair must clear SUGGESTION_MIN_RATED to drive a change.
|
|
39
|
+
if (r.recommendation_health === 'dead' && r.total_rated >= SUGGESTION_MIN_RATED) {
|
|
40
|
+
dead.push(`${r.skill_id} (${r.pulls} pull / actionable ${(r.actionable_rate * 100).toFixed(1)}%)`);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
for (const w of input.health.weak_skills) {
|
|
44
|
+
// dead pairs are already surfaced above — don't double-count.
|
|
45
|
+
const rec = input.health.recommended_skills.find((r) => r.skill_id === w.skill_id);
|
|
46
|
+
if (rec?.recommendation_health === 'dead')
|
|
47
|
+
continue;
|
|
48
|
+
weak.push(`${w.skill_id} (actionable ${(w.actionable_rate * 100).toFixed(1)}%, sample ${w.total_rated})`);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
if (dead.length > 0) {
|
|
52
|
+
proposedChangeTypes.push(`skill-discovery 段降权死推荐: ${dead.join('; ')}`);
|
|
53
|
+
}
|
|
54
|
+
if (weak.length > 0) {
|
|
55
|
+
proposedChangeTypes.push(`复核弱推荐 pull 步: ${weak.join('; ')}`);
|
|
56
|
+
}
|
|
57
|
+
for (const d of input.drift) {
|
|
58
|
+
if (d.kind === 'dangling-ref')
|
|
59
|
+
proposedChangeTypes.push(`删/换悬空引用: ${d.skill_id}`);
|
|
60
|
+
else if (d.kind === 'orphan-skill')
|
|
61
|
+
proposedChangeTypes.push(`提示孤儿高分 skill: ${d.skill_id}`);
|
|
62
|
+
else if (d.kind === 'no-pull')
|
|
63
|
+
proposedChangeTypes.push(`核查声明但零 pull 的步骤 (${d.agent})`);
|
|
64
|
+
}
|
|
65
|
+
if (input.failureSamples.length > 0) {
|
|
66
|
+
proposedChangeTypes.push(`据 ${input.failureSamples.length} 条 failed 执行补防线说明`);
|
|
67
|
+
}
|
|
68
|
+
// ── Human-readable summary (the --dry-run payload). ────────────────────────
|
|
69
|
+
const summaryLines = [];
|
|
70
|
+
summaryLines.push(`# Agent distill 信号摘要: ${input.agent}`);
|
|
71
|
+
summaryLines.push(`> 当前 version: ${input.currentVersion} | 信号成熟度: ${maturity}`);
|
|
72
|
+
summaryLines.push('');
|
|
73
|
+
if (!enoughSignal) {
|
|
74
|
+
summaryLines.push(`⚠ ${insufficientReason}`);
|
|
75
|
+
summaryLines.push('');
|
|
76
|
+
}
|
|
77
|
+
summaryLines.push('## 死/弱推荐信号');
|
|
78
|
+
if (input.health && input.health.recommended_skills.length > 0) {
|
|
79
|
+
for (const r of input.health.recommended_skills) {
|
|
80
|
+
const flag = r.recommendation_health === 'dead' ? ' ⚠ 死推荐' : '';
|
|
81
|
+
summaryLines.push(`- ${r.skill_id}: ${r.pulls} pull / actionable ${(r.actionable_rate * 100).toFixed(1)}% [${r.recommendation_health}]${flag}`);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
summaryLines.push('- (无推荐 skill 信号)');
|
|
86
|
+
}
|
|
87
|
+
summaryLines.push('');
|
|
88
|
+
summaryLines.push('## drift');
|
|
89
|
+
if (input.drift.length > 0) {
|
|
90
|
+
for (const d of input.drift)
|
|
91
|
+
summaryLines.push(`- [${d.kind}] ${d.message}`);
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
summaryLines.push('- (无)');
|
|
95
|
+
}
|
|
96
|
+
summaryLines.push('');
|
|
97
|
+
summaryLines.push('## failed 执行样本');
|
|
98
|
+
if (input.failureSamples.length > 0) {
|
|
99
|
+
for (const f of input.failureSamples) {
|
|
100
|
+
summaryLines.push(`- ${f.title} (session ${f.session_id})`);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
summaryLines.push('- (无 failed 样本)');
|
|
105
|
+
}
|
|
106
|
+
summaryLines.push('');
|
|
107
|
+
summaryLines.push('## 拟改动类型(会喂给 distiller)');
|
|
108
|
+
if (proposedChangeTypes.length > 0) {
|
|
109
|
+
for (const t of proposedChangeTypes)
|
|
110
|
+
summaryLines.push(`- ${t}`);
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
summaryLines.push('- (无足够信号支撑改动,distiller 预期产 NOOP)');
|
|
114
|
+
}
|
|
115
|
+
const summary = summaryLines.join('\n');
|
|
116
|
+
// ── Structured prompt for the distiller (real spawn only). ─────────────────
|
|
117
|
+
const healthJson = input.health
|
|
118
|
+
? JSON.stringify({
|
|
119
|
+
recommended_skills: input.health.recommended_skills,
|
|
120
|
+
weak_skills: input.health.weak_skills,
|
|
121
|
+
suggestions: input.health.suggestions,
|
|
122
|
+
}, null, 2)
|
|
123
|
+
: '{}';
|
|
124
|
+
const driftJson = JSON.stringify(input.drift, null, 2);
|
|
125
|
+
const failuresText = input.failureSamples.length > 0
|
|
126
|
+
? input.failureSamples.map((f) => `- ${f.title} (session ${f.session_id})`).join('\n')
|
|
127
|
+
: '(none)';
|
|
128
|
+
const prompt = [
|
|
129
|
+
`<agent_name>${input.agent}</agent_name>`,
|
|
130
|
+
`<current_version>${input.currentVersion}</current_version>`,
|
|
131
|
+
`<current_template>\n${input.currentTemplate}\n</current_template>`,
|
|
132
|
+
`<health_signals>\n${healthJson}\n</health_signals>`,
|
|
133
|
+
`<drift>\n${driftJson}\n</drift>`,
|
|
134
|
+
`<failure_samples>\n${failuresText}\n</failure_samples>`,
|
|
135
|
+
`<maturity>${maturity}</maturity>`,
|
|
136
|
+
].join('\n\n');
|
|
137
|
+
return {
|
|
138
|
+
enoughSignal,
|
|
139
|
+
insufficientReason,
|
|
140
|
+
maturity,
|
|
141
|
+
summary,
|
|
142
|
+
prompt,
|
|
143
|
+
proposedChangeTypes,
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=agent-distill-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-distill-context.js","sourceRoot":"","sources":["../../../src/core/insights/agent-distill-context.ts"],"names":[],"mappings":"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"}
|