@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,296 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent 体检 — per-agent health aggregation (decision 234f1ad4, Phase 1).
|
|
3
|
+
*
|
|
4
|
+
* Pure read-side aggregator + suggestion rules. Combines:
|
|
5
|
+
* - delegation / success-rate / duration ← aggregateAgentSpawns (events,
|
|
6
|
+
* read-time Pre/Post pairing; success_rate口径标 INDIRECT,跨 session 边缘有误差)
|
|
7
|
+
* - skill usefulness by agent ← aggregateSkillUsefulnessByAgent
|
|
8
|
+
* (reason-prefix proxy key, NOT agent_id — agent_id empirically all-NULL)
|
|
9
|
+
* - KB usefulness by agent ← aggregateKbUsefulnessByAgent
|
|
10
|
+
* - (agent, skill) closed-loop status ← derived recommendation_health
|
|
11
|
+
* - main-thread violations ← tool_intercepts (by session; these
|
|
12
|
+
* are orchestration discipline, NOT agent template defects — shown separately)
|
|
13
|
+
*
|
|
14
|
+
* 不变量 (cross-Phase): this module is READ-ONLY. It NEVER mutates agent
|
|
15
|
+
* templates; it only produces health objects + readable suggestion strings.
|
|
16
|
+
* The daemon does not call this — only the web endpoint and `cf agent retro`.
|
|
17
|
+
*/
|
|
18
|
+
// ── Tunable thresholds + rules (top-of-file constants, per spec) ────────────
|
|
19
|
+
/**
|
|
20
|
+
* Reason-prefix (proxy agent key from skill_invocations.reason) → agent template
|
|
21
|
+
* name (the `src/daemon/templates/agents/*.md` source-of-truth basename). The
|
|
22
|
+
* reason prefix is what agents hardcode in `--reason "coder/<phase>"`, but the
|
|
23
|
+
* trigger-table / template name differs for several agents.
|
|
24
|
+
*/
|
|
25
|
+
export const REASON_PREFIX_TO_AGENT = {
|
|
26
|
+
coder: 'coder',
|
|
27
|
+
verify: 'verify-agent',
|
|
28
|
+
decision: 'decision-maker',
|
|
29
|
+
safetynet: 'safety-net-implementer',
|
|
30
|
+
planner: 'planner',
|
|
31
|
+
harness: 'harness-debug-full',
|
|
32
|
+
};
|
|
33
|
+
/** Map a reason prefix to its canonical agent template name (identity fallback). */
|
|
34
|
+
export function agentForReasonPrefix(prefix) {
|
|
35
|
+
return REASON_PREFIX_TO_AGENT[prefix] ?? prefix;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* recommendation_health classification thresholds (decision 234f1ad4 Q7).
|
|
39
|
+
* `dead`: pulls >= DEAD_MIN_PULLS && actionable_rate < DEAD_ACTIONABLE_RATE
|
|
40
|
+
* (STRICT helped-only rate). The coder × distilled-executing-plans pair
|
|
41
|
+
* (70 pull / actionable≈1.5%) is the live `dead` sample.
|
|
42
|
+
*/
|
|
43
|
+
export const DEAD_MIN_PULLS = 20;
|
|
44
|
+
export const DEAD_ACTIONABLE_RATE = 0.1; // < 10%
|
|
45
|
+
/** `live`: enough pulls AND actionable_rate at/above this healthy floor. */
|
|
46
|
+
export const LIVE_ACTIONABLE_RATE = 0.5; // >= 50%
|
|
47
|
+
/** `unrated`: pulls >= threshold but rated-ratio below this (can't judge). */
|
|
48
|
+
export const UNRATED_MIN_PULLS = DEAD_MIN_PULLS;
|
|
49
|
+
export const UNRATED_RATED_RATIO = 0.3; // < 30% of pulls rated → unrated
|
|
50
|
+
/** Min total_rated before a (agent,skill) pair is allowed to产 a suggestion. */
|
|
51
|
+
export const SUGGESTION_MIN_RATED = 10;
|
|
52
|
+
/** A skill is "weak" for an agent when actionable_rate < this (with enough evidence). */
|
|
53
|
+
export const WEAK_ACTIONABLE_RATE = 0.25;
|
|
54
|
+
/** Min delegations before per-agent success-rate / drift signals are trusted. */
|
|
55
|
+
export const MIN_DELEGATIONS_FOR_SIGNAL = 3;
|
|
56
|
+
/**
|
|
57
|
+
* Muted (agent, skill) pairs — operator can silence noisy suggestions here.
|
|
58
|
+
* Format: `"<agent>::<skill_id>"`. Empty by default; spec R1 anti-noise.
|
|
59
|
+
*/
|
|
60
|
+
export const MUTED_SUGGESTIONS = new Set();
|
|
61
|
+
const DAY_MS = 24 * 60 * 60 * 1000;
|
|
62
|
+
/**
|
|
63
|
+
* Classify a (agent, skill) pairing into a closed-loop health bucket.
|
|
64
|
+
* `triggerReferenced` = whether the agent template trigger table references the
|
|
65
|
+
* skill (used to distinguish `unused`: referenced but zero pulls).
|
|
66
|
+
*/
|
|
67
|
+
export function classifyRecommendationHealth(pair, triggerReferenced) {
|
|
68
|
+
if (triggerReferenced && pair.pulls === 0)
|
|
69
|
+
return 'unused';
|
|
70
|
+
// `dead` is STRICTLY gated on pulls >= DEAD_MIN_PULLS (decision 234f1ad4 Q7):
|
|
71
|
+
// a low-pull pair with 0% actionable is just under-sampled, NOT a dead推荐.
|
|
72
|
+
if (pair.pulls >= DEAD_MIN_PULLS && pair.actionable_rate < DEAD_ACTIONABLE_RATE)
|
|
73
|
+
return 'dead';
|
|
74
|
+
const ratedRatio = pair.pulls > 0 ? pair.total_rated / pair.pulls : 0;
|
|
75
|
+
if (pair.pulls >= UNRATED_MIN_PULLS && ratedRatio < UNRATED_RATED_RATIO)
|
|
76
|
+
return 'unrated';
|
|
77
|
+
if (pair.pulls >= DEAD_MIN_PULLS && pair.actionable_rate >= LIVE_ACTIONABLE_RATE)
|
|
78
|
+
return 'live';
|
|
79
|
+
// Below the dead/live pull threshold: classify as live only when it clears the
|
|
80
|
+
// healthy floor with enough rated evidence; otherwise unrated (under-sampled).
|
|
81
|
+
if (pair.total_rated >= SUGGESTION_MIN_RATED && pair.actionable_rate >= LIVE_ACTIONABLE_RATE)
|
|
82
|
+
return 'live';
|
|
83
|
+
return 'unrated';
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Compute per-agent health objects + suggestions over the window.
|
|
87
|
+
* Pure: takes a storage handle, returns plain data (no side effects).
|
|
88
|
+
*/
|
|
89
|
+
export function computeAgentHealth(storage, opts) {
|
|
90
|
+
const sinceIso = new Date(opts.since).toISOString();
|
|
91
|
+
const untilIso = opts.until !== undefined ? new Date(opts.until).toISOString() : undefined;
|
|
92
|
+
const spawns = storage.aggregateAgentSpawns({
|
|
93
|
+
since: sinceIso,
|
|
94
|
+
until: untilIso,
|
|
95
|
+
recentLimit: 8,
|
|
96
|
+
// decision dd79010a: scope delegation/success/duration to the project too
|
|
97
|
+
// (skill/kb usefulness below were already project-scoped via opts.projectPath).
|
|
98
|
+
projectPath: opts.projectPath,
|
|
99
|
+
});
|
|
100
|
+
const skillByAgent = storage.aggregateSkillUsefulnessByAgent({
|
|
101
|
+
since: opts.since,
|
|
102
|
+
until: opts.until,
|
|
103
|
+
projectPath: opts.projectPath,
|
|
104
|
+
});
|
|
105
|
+
const kbByAgent = storage.aggregateKbUsefulnessByAgent({
|
|
106
|
+
since: opts.since,
|
|
107
|
+
until: opts.until,
|
|
108
|
+
project_path: opts.projectPath,
|
|
109
|
+
});
|
|
110
|
+
// Bug-fix (insights project filter parity, 2026-06-15): when a SPECIFIC
|
|
111
|
+
// project is requested, the triggerRefs-driven `unused` synthesis below MUST
|
|
112
|
+
// be suppressed. `triggerRefs` is a global agent-template ⇄ skill metadata map
|
|
113
|
+
// (project-independent), so injecting its zero-pull `unused` pairs — and
|
|
114
|
+
// unioning its agent names into `agentNames` (see further down) — would
|
|
115
|
+
// manufacture agents that have NO project-scoped activity. That made
|
|
116
|
+
// /api/insights/agent-health?project=<bogus> return 1 agent (verify-agent,
|
|
117
|
+
// delegations=0, one `unused` skill) while /agent-stats?project=<bogus>
|
|
118
|
+
// correctly returned 0. Strict equality on the project-scoped aggregations
|
|
119
|
+
// (events / skill / kb usefulness, all `project_path = ?`) already excludes
|
|
120
|
+
// NULL/other-project rows; the only remaining leak was this global template
|
|
121
|
+
// synthesis. So: only honour triggerRefs (unused detection + name union) in
|
|
122
|
+
// the all-projects view (no project filter). agent-stats has no triggerRefs
|
|
123
|
+
// path at all, which is why it never leaked — this brings the two to parity.
|
|
124
|
+
const projectScoped = opts.projectPath !== undefined && opts.projectPath !== '';
|
|
125
|
+
const effectiveTriggerRefs = projectScoped ? undefined : opts.triggerRefs;
|
|
126
|
+
// Index usefulness by canonical agent name.
|
|
127
|
+
const skillsByAgentName = new Map();
|
|
128
|
+
for (const row of skillByAgent) {
|
|
129
|
+
if (row.agent === '<unknown>')
|
|
130
|
+
continue;
|
|
131
|
+
const agentName = agentForReasonPrefix(row.agent);
|
|
132
|
+
const refs = effectiveTriggerRefs?.get(agentName);
|
|
133
|
+
const triggerReferenced = refs ? refs.has(row.skill_id) : false;
|
|
134
|
+
const rec = {
|
|
135
|
+
skill_id: row.skill_id,
|
|
136
|
+
pulls: row.pulls,
|
|
137
|
+
helped: row.helped,
|
|
138
|
+
partial: row.partial,
|
|
139
|
+
not_actionable: row.not_actionable,
|
|
140
|
+
total_rated: row.total_rated,
|
|
141
|
+
pending: row.pending,
|
|
142
|
+
actionable_rate: row.actionable_rate,
|
|
143
|
+
recommendation_health: classifyRecommendationHealth(row, triggerReferenced),
|
|
144
|
+
};
|
|
145
|
+
const arr = skillsByAgentName.get(agentName) ?? [];
|
|
146
|
+
arr.push(rec);
|
|
147
|
+
skillsByAgentName.set(agentName, arr);
|
|
148
|
+
}
|
|
149
|
+
// Add `unused` pairs: trigger-referenced skills with zero pulls in window.
|
|
150
|
+
// Suppressed under a specific project scope (see projectScoped note above).
|
|
151
|
+
if (effectiveTriggerRefs) {
|
|
152
|
+
for (const [agentName, refSkills] of effectiveTriggerRefs) {
|
|
153
|
+
const existing = skillsByAgentName.get(agentName) ?? [];
|
|
154
|
+
const seen = new Set(existing.map((s) => s.skill_id));
|
|
155
|
+
for (const skillId of refSkills) {
|
|
156
|
+
if (seen.has(skillId))
|
|
157
|
+
continue;
|
|
158
|
+
existing.push({
|
|
159
|
+
skill_id: skillId,
|
|
160
|
+
pulls: 0,
|
|
161
|
+
helped: 0,
|
|
162
|
+
partial: 0,
|
|
163
|
+
not_actionable: 0,
|
|
164
|
+
total_rated: 0,
|
|
165
|
+
pending: 0,
|
|
166
|
+
actionable_rate: 0,
|
|
167
|
+
recommendation_health: 'unused',
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
skillsByAgentName.set(agentName, existing);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
const kbByAgentName = new Map();
|
|
174
|
+
for (const row of kbByAgent) {
|
|
175
|
+
if (row.agent === '<unknown>')
|
|
176
|
+
continue;
|
|
177
|
+
const agentName = agentForReasonPrefix(row.agent);
|
|
178
|
+
kbByAgentName.set(agentName, {
|
|
179
|
+
pulls: row.pulls,
|
|
180
|
+
total_rated: row.total_rated,
|
|
181
|
+
helped: row.helped,
|
|
182
|
+
actionable_rate: row.actionable_rate,
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
// Union of agent names from spawns + usefulness + trigger refs.
|
|
186
|
+
const agentNames = new Set();
|
|
187
|
+
for (const s of spawns)
|
|
188
|
+
agentNames.add(s.agent);
|
|
189
|
+
for (const k of skillsByAgentName.keys())
|
|
190
|
+
agentNames.add(k);
|
|
191
|
+
for (const k of kbByAgentName.keys())
|
|
192
|
+
agentNames.add(k);
|
|
193
|
+
if (effectiveTriggerRefs)
|
|
194
|
+
for (const k of effectiveTriggerRefs.keys())
|
|
195
|
+
agentNames.add(k);
|
|
196
|
+
const spawnByName = new Map(spawns.map((s) => [s.agent, s]));
|
|
197
|
+
const isBuiltin = opts.isBuiltin ?? (() => false);
|
|
198
|
+
const agents = [];
|
|
199
|
+
for (const name of agentNames) {
|
|
200
|
+
const spawn = spawnByName.get(name);
|
|
201
|
+
const delegations = spawn?.delegations ?? 0;
|
|
202
|
+
const success = spawn?.success ?? 0;
|
|
203
|
+
const partial = spawn?.partial ?? 0;
|
|
204
|
+
const failed = spawn?.failed ?? 0;
|
|
205
|
+
const unrated = spawn?.unrated ?? 0;
|
|
206
|
+
const rated = success + partial + failed;
|
|
207
|
+
const hasSignal = delegations >= MIN_DELEGATIONS_FOR_SIGNAL && rated > 0;
|
|
208
|
+
const success_rate = hasSignal ? Math.round((success / rated) * 1000) / 1000 : null;
|
|
209
|
+
const success_rate_basis = hasSignal ? 'indirect' : 'insufficient_data';
|
|
210
|
+
const recommended = (skillsByAgentName.get(name) ?? []).sort((a, b) => a.actionable_rate - b.actionable_rate || b.pulls - a.pulls);
|
|
211
|
+
const weak_skills = recommended
|
|
212
|
+
.filter((r) => r.total_rated >= SUGGESTION_MIN_RATED && r.actionable_rate < WEAK_ACTIONABLE_RATE)
|
|
213
|
+
.map((r) => ({
|
|
214
|
+
skill_id: r.skill_id,
|
|
215
|
+
actionable_rate: r.actionable_rate,
|
|
216
|
+
total_rated: r.total_rated,
|
|
217
|
+
pulls: r.pulls,
|
|
218
|
+
}));
|
|
219
|
+
const suggestions = buildSuggestions(name, recommended, weak_skills);
|
|
220
|
+
agents.push({
|
|
221
|
+
agent: name,
|
|
222
|
+
source: isBuiltin(name) ? 'builtin' : 'project',
|
|
223
|
+
delegations,
|
|
224
|
+
success,
|
|
225
|
+
partial,
|
|
226
|
+
failed,
|
|
227
|
+
unrated,
|
|
228
|
+
success_rate,
|
|
229
|
+
success_rate_basis,
|
|
230
|
+
avg_duration_ms: spawn?.avg_duration_ms ?? null,
|
|
231
|
+
last_ts: spawn?.last_ts ?? 0,
|
|
232
|
+
weak_skills,
|
|
233
|
+
recommended_skills: recommended,
|
|
234
|
+
kb_usage: kbByAgentName.get(name) ?? null,
|
|
235
|
+
suggestions,
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
agents.sort((a, b) => b.delegations - a.delegations || a.agent.localeCompare(b.agent));
|
|
239
|
+
return {
|
|
240
|
+
generated_at: new Date().toISOString(),
|
|
241
|
+
since: sinceIso,
|
|
242
|
+
until: untilIso ?? null,
|
|
243
|
+
agents,
|
|
244
|
+
main_thread_violations: computeMainThreadViolations(storage, sinceIso, untilIso),
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Build readable improvement suggestions for an agent (decision 234f1ad4).
|
|
249
|
+
* High-threshold (SUGGESTION_MIN_RATED) + mutable mute list to avoid noise (R1).
|
|
250
|
+
*/
|
|
251
|
+
function buildSuggestions(agent, recommended, weakSkills) {
|
|
252
|
+
const out = [];
|
|
253
|
+
for (const w of weakSkills) {
|
|
254
|
+
if (MUTED_SUGGESTIONS.has(`${agent}::${w.skill_id}`))
|
|
255
|
+
continue;
|
|
256
|
+
const rec = recommended.find((r) => r.skill_id === w.skill_id);
|
|
257
|
+
const ratePct = (w.actionable_rate * 100).toFixed(1);
|
|
258
|
+
if (rec && rec.recommendation_health === 'dead') {
|
|
259
|
+
out.push(`${agent} 推荐 ${w.skill_id}:${w.pulls} pull / ${rec.helped} helped / ${rec.partial} partial(actionable_rate ${ratePct}%,样本 ${w.total_rated}≥阈值)→ 死推荐,建议换 skill 或精简该 pull 步措辞。`);
|
|
260
|
+
}
|
|
261
|
+
else {
|
|
262
|
+
out.push(`${agent} 推荐 ${w.skill_id}:actionable_rate ${ratePct}%(样本 ${w.total_rated}≥阈值)→ 弱推荐,建议复核该 pull 步。`);
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
return out;
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Aggregate main-thread (orchestration discipline) violations from
|
|
269
|
+
* tool_intercepts in window. These are NOT agent template defects — surfaced
|
|
270
|
+
* separately with an explicit note (decision实测: 违规 != agent 缺陷).
|
|
271
|
+
*/
|
|
272
|
+
function computeMainThreadViolations(storage, sinceIso, untilIso) {
|
|
273
|
+
const note = '主线程编排纪律(edit/write-multi-file-hard 等),非 agent 模板缺陷——与 agent 自身信号分开展示。';
|
|
274
|
+
try {
|
|
275
|
+
// tool_intercepts.timestamp is ISO TEXT (NOT INTEGER ms) — compare ISO直接.
|
|
276
|
+
const db = storage.db;
|
|
277
|
+
const conditions = ['decision = ?', 'timestamp >= ?'];
|
|
278
|
+
const params = ['deny', sinceIso];
|
|
279
|
+
if (untilIso !== undefined) {
|
|
280
|
+
conditions.push('timestamp < ?');
|
|
281
|
+
params.push(untilIso);
|
|
282
|
+
}
|
|
283
|
+
const rows = db
|
|
284
|
+
.prepare(`SELECT rule_id, COUNT(*) AS count FROM tool_intercepts
|
|
285
|
+
WHERE ${conditions.join(' AND ')}
|
|
286
|
+
GROUP BY rule_id ORDER BY count DESC`)
|
|
287
|
+
.all(...params);
|
|
288
|
+
const total = rows.reduce((s, r) => s + r.count, 0);
|
|
289
|
+
return { total, by_rule: rows, note };
|
|
290
|
+
}
|
|
291
|
+
catch {
|
|
292
|
+
return { total: 0, by_rule: [], note };
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
export { DAY_MS };
|
|
296
|
+
//# sourceMappingURL=agent-health.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-health.js","sourceRoot":"","sources":["../../../src/core/insights/agent-health.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* agent-patch-apply.ts — pure-JS unified-diff applier for agent-template
|
|
3
|
+
* adoption (decision 568a8c53, user Open-Q1).
|
|
4
|
+
*
|
|
5
|
+
* Why NOT `git apply`: the daemon runs under launchd with cwd=`/` (no working
|
|
6
|
+
* tree), so `git apply` fails there (same landmine documented in
|
|
7
|
+
* skills-distill.ts:559). The web adopt path needs a working tree-INDEPENDENT
|
|
8
|
+
* application that resolves the patch against the in-memory template text.
|
|
9
|
+
*
|
|
10
|
+
* Scope: this is a deliberately small, strict context-matching applier — NOT a
|
|
11
|
+
* full GNU patch / git-apply re-implementation. It handles the unified-diff
|
|
12
|
+
* shape the `agent-retro-distiller` emits:
|
|
13
|
+
* - one or more `@@ ... @@` hunks
|
|
14
|
+
* - context lines (leading space), additions (`+`), removals (`-`)
|
|
15
|
+
* - optional `--- a/...` / `+++ b/...` file headers (ignored)
|
|
16
|
+
*
|
|
17
|
+
* It is ATOMIC: if any hunk fails to match its context against the current text
|
|
18
|
+
* it throws `PatchApplyError` and returns NOTHING (no partial write). Callers
|
|
19
|
+
* map the throw to HTTP 422. Pure: no IO.
|
|
20
|
+
*/
|
|
21
|
+
export declare class PatchApplyError extends Error {
|
|
22
|
+
/** Index (1-based) of the hunk that failed, when known. */
|
|
23
|
+
readonly hunkIndex: number | null;
|
|
24
|
+
constructor(message: string, hunkIndex?: number | null);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Apply a unified-diff `patch` to `source` text, returning the new text.
|
|
28
|
+
*
|
|
29
|
+
* Atomic + strict: every hunk's context (+removed) side must match exactly once
|
|
30
|
+
* in the current text, else throw (no partial application). The trailing newline
|
|
31
|
+
* convention of `source` is preserved.
|
|
32
|
+
*
|
|
33
|
+
* Pure: no IO, no template writes.
|
|
34
|
+
*/
|
|
35
|
+
export declare function applyUnifiedDiff(source: string, patch: string): string;
|
|
36
|
+
/**
|
|
37
|
+
* Mechanically set the `version:` line inside the leading YAML frontmatter to
|
|
38
|
+
* `targetVersion`. The anchor-guard forbids the distiller from touching the
|
|
39
|
+
* version line; adoption bumps it here, deterministically. Returns the new text.
|
|
40
|
+
*
|
|
41
|
+
* Throws if no frontmatter `version:` line is found (the template invariant
|
|
42
|
+
* requires one). Pure.
|
|
43
|
+
*/
|
|
44
|
+
export declare function setFrontmatterVersion(template: string, targetVersion: number): string;
|
|
45
|
+
//# sourceMappingURL=agent-patch-apply.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-patch-apply.d.ts","sourceRoot":"","sources":["../../../src/core/insights/agent-patch-apply.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,qBAAa,eAAgB,SAAQ,KAAK;IACxC,2DAA2D;IAC3D,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;gBACtB,OAAO,EAAE,MAAM,EAAE,SAAS,GAAE,MAAM,GAAG,IAAW;CAK7D;AAuGD;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAmBtE;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAQrF"}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* agent-patch-apply.ts — pure-JS unified-diff applier for agent-template
|
|
3
|
+
* adoption (decision 568a8c53, user Open-Q1).
|
|
4
|
+
*
|
|
5
|
+
* Why NOT `git apply`: the daemon runs under launchd with cwd=`/` (no working
|
|
6
|
+
* tree), so `git apply` fails there (same landmine documented in
|
|
7
|
+
* skills-distill.ts:559). The web adopt path needs a working tree-INDEPENDENT
|
|
8
|
+
* application that resolves the patch against the in-memory template text.
|
|
9
|
+
*
|
|
10
|
+
* Scope: this is a deliberately small, strict context-matching applier — NOT a
|
|
11
|
+
* full GNU patch / git-apply re-implementation. It handles the unified-diff
|
|
12
|
+
* shape the `agent-retro-distiller` emits:
|
|
13
|
+
* - one or more `@@ ... @@` hunks
|
|
14
|
+
* - context lines (leading space), additions (`+`), removals (`-`)
|
|
15
|
+
* - optional `--- a/...` / `+++ b/...` file headers (ignored)
|
|
16
|
+
*
|
|
17
|
+
* It is ATOMIC: if any hunk fails to match its context against the current text
|
|
18
|
+
* it throws `PatchApplyError` and returns NOTHING (no partial write). Callers
|
|
19
|
+
* map the throw to HTTP 422. Pure: no IO.
|
|
20
|
+
*/
|
|
21
|
+
export class PatchApplyError extends Error {
|
|
22
|
+
/** Index (1-based) of the hunk that failed, when known. */
|
|
23
|
+
hunkIndex;
|
|
24
|
+
constructor(message, hunkIndex = null) {
|
|
25
|
+
super(`[agent-patch-apply] ${message}`);
|
|
26
|
+
this.name = 'PatchApplyError';
|
|
27
|
+
this.hunkIndex = hunkIndex;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
/** Split a unified diff into hunks, dropping file headers + `@@` markers. */
|
|
31
|
+
function parseHunks(patch) {
|
|
32
|
+
const rawLines = patch.split('\n');
|
|
33
|
+
const hunks = [];
|
|
34
|
+
let current = null;
|
|
35
|
+
for (const line of rawLines) {
|
|
36
|
+
if (line.startsWith('--- ') || line.startsWith('+++ ')) {
|
|
37
|
+
// file header — ignored
|
|
38
|
+
continue;
|
|
39
|
+
}
|
|
40
|
+
if (line.startsWith('@@')) {
|
|
41
|
+
current = { lines: [] };
|
|
42
|
+
hunks.push(current);
|
|
43
|
+
continue;
|
|
44
|
+
}
|
|
45
|
+
if (current === null) {
|
|
46
|
+
// Lines before the first @@ that are not file headers: tolerate blank /
|
|
47
|
+
// stray lines (the distiller sometimes prefixes a fenced block).
|
|
48
|
+
if (line.trim() === '')
|
|
49
|
+
continue;
|
|
50
|
+
// A non-empty body line outside any hunk → malformed.
|
|
51
|
+
// Be lenient about a leading "diff --git" style line.
|
|
52
|
+
if (line.startsWith('diff ') || line.startsWith('index '))
|
|
53
|
+
continue;
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
current.lines.push(line);
|
|
57
|
+
}
|
|
58
|
+
return hunks;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* The "old" (context + removed) side and "new" (context + added) side of a hunk,
|
|
62
|
+
* as arrays of full-line strings (markers stripped).
|
|
63
|
+
*/
|
|
64
|
+
function hunkSides(hunk) {
|
|
65
|
+
const oldLines = [];
|
|
66
|
+
const newLines = [];
|
|
67
|
+
for (const l of hunk.lines) {
|
|
68
|
+
if (l.startsWith('+')) {
|
|
69
|
+
newLines.push(l.slice(1));
|
|
70
|
+
}
|
|
71
|
+
else if (l.startsWith('-')) {
|
|
72
|
+
oldLines.push(l.slice(1));
|
|
73
|
+
}
|
|
74
|
+
else if (l.startsWith(' ')) {
|
|
75
|
+
oldLines.push(l.slice(1));
|
|
76
|
+
newLines.push(l.slice(1));
|
|
77
|
+
}
|
|
78
|
+
else if (l === '') {
|
|
79
|
+
// An empty line in the hunk body == a context blank line.
|
|
80
|
+
oldLines.push('');
|
|
81
|
+
newLines.push('');
|
|
82
|
+
}
|
|
83
|
+
else if (l === '\') {
|
|
84
|
+
// ignore the GNU no-newline marker
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
// Unknown marker — treat as context to be conservative.
|
|
88
|
+
oldLines.push(l);
|
|
89
|
+
newLines.push(l);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
return { oldLines, newLines };
|
|
93
|
+
}
|
|
94
|
+
/** Find the single index where `needle` matches `hay` exactly. */
|
|
95
|
+
function findMatch(hay, needle, hunkIndex) {
|
|
96
|
+
if (needle.length === 0) {
|
|
97
|
+
// Pure-insertion hunk with no context — cannot anchor reliably. Reject.
|
|
98
|
+
throw new PatchApplyError(`hunk ${hunkIndex} has no context/removed lines to anchor against`, hunkIndex);
|
|
99
|
+
}
|
|
100
|
+
let found = -1;
|
|
101
|
+
for (let i = 0; i + needle.length <= hay.length; i++) {
|
|
102
|
+
let ok = true;
|
|
103
|
+
for (let j = 0; j < needle.length; j++) {
|
|
104
|
+
if (hay[i + j] !== needle[j]) {
|
|
105
|
+
ok = false;
|
|
106
|
+
break;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
if (ok) {
|
|
110
|
+
if (found !== -1) {
|
|
111
|
+
throw new PatchApplyError(`hunk ${hunkIndex} context is ambiguous (matches at multiple locations)`, hunkIndex);
|
|
112
|
+
}
|
|
113
|
+
found = i;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
if (found === -1) {
|
|
117
|
+
throw new PatchApplyError(`hunk ${hunkIndex} context did not match the current template`, hunkIndex);
|
|
118
|
+
}
|
|
119
|
+
return found;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Apply a unified-diff `patch` to `source` text, returning the new text.
|
|
123
|
+
*
|
|
124
|
+
* Atomic + strict: every hunk's context (+removed) side must match exactly once
|
|
125
|
+
* in the current text, else throw (no partial application). The trailing newline
|
|
126
|
+
* convention of `source` is preserved.
|
|
127
|
+
*
|
|
128
|
+
* Pure: no IO, no template writes.
|
|
129
|
+
*/
|
|
130
|
+
export function applyUnifiedDiff(source, patch) {
|
|
131
|
+
const hunks = parseHunks(patch);
|
|
132
|
+
if (hunks.length === 0) {
|
|
133
|
+
throw new PatchApplyError('patch contains no hunks');
|
|
134
|
+
}
|
|
135
|
+
const hadTrailingNewline = source.endsWith('\n');
|
|
136
|
+
// Work on lines WITHOUT the trailing empty element a trailing \n produces.
|
|
137
|
+
let lines = source.split('\n');
|
|
138
|
+
if (hadTrailingNewline)
|
|
139
|
+
lines = lines.slice(0, -1);
|
|
140
|
+
hunks.forEach((hunk, idx) => {
|
|
141
|
+
const hunkIndex = idx + 1;
|
|
142
|
+
const { oldLines, newLines } = hunkSides(hunk);
|
|
143
|
+
const at = findMatch(lines, oldLines, hunkIndex);
|
|
144
|
+
lines = [...lines.slice(0, at), ...newLines, ...lines.slice(at + oldLines.length)];
|
|
145
|
+
});
|
|
146
|
+
return hadTrailingNewline ? lines.join('\n') + '\n' : lines.join('\n');
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Mechanically set the `version:` line inside the leading YAML frontmatter to
|
|
150
|
+
* `targetVersion`. The anchor-guard forbids the distiller from touching the
|
|
151
|
+
* version line; adoption bumps it here, deterministically. Returns the new text.
|
|
152
|
+
*
|
|
153
|
+
* Throws if no frontmatter `version:` line is found (the template invariant
|
|
154
|
+
* requires one). Pure.
|
|
155
|
+
*/
|
|
156
|
+
export function setFrontmatterVersion(template, targetVersion) {
|
|
157
|
+
const fenceEnd = template.indexOf('\n---', 4);
|
|
158
|
+
const head = fenceEnd > 0 ? template.slice(0, fenceEnd) : template;
|
|
159
|
+
if (!/^version:\s*[0-9]+\s*$/m.test(head)) {
|
|
160
|
+
throw new PatchApplyError('template has no frontmatter `version:` line to bump');
|
|
161
|
+
}
|
|
162
|
+
const headBumped = head.replace(/^version:\s*[0-9]+\s*$/m, `version: ${targetVersion}`);
|
|
163
|
+
return fenceEnd > 0 ? headBumped + template.slice(fenceEnd) : headBumped;
|
|
164
|
+
}
|
|
165
|
+
//# sourceMappingURL=agent-patch-apply.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-patch-apply.js","sourceRoot":"","sources":["../../../src/core/insights/agent-patch-apply.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,MAAM,OAAO,eAAgB,SAAQ,KAAK;IACxC,2DAA2D;IAClD,SAAS,CAAgB;IAClC,YAAY,OAAe,EAAE,YAA2B,IAAI;QAC1D,KAAK,CAAC,uBAAuB,OAAO,EAAE,CAAC,CAAC;QACxC,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;QAC9B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;CACF;AAOD,6EAA6E;AAC7E,SAAS,UAAU,CAAC,KAAa;IAC/B,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,KAAK,GAAW,EAAE,CAAC;IACzB,IAAI,OAAO,GAAgB,IAAI,CAAC;IAChC,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YACvD,wBAAwB;YACxB,SAAS;QACX,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,OAAO,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;YACxB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACpB,SAAS;QACX,CAAC;QACD,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACrB,wEAAwE;YACxE,iEAAiE;YACjE,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE;gBAAE,SAAS;YACjC,sDAAsD;YACtD,sDAAsD;YACtD,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;gBAAE,SAAS;YACpE,SAAS;QACX,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,SAAS,SAAS,CAAC,IAAU;IAC3B,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QAC3B,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACtB,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC;aAAM,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7B,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC;aAAM,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7B,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1B,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC;aAAM,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;YACpB,0DAA0D;YAC1D,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAClB,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACpB,CAAC;aAAM,IAAI,CAAC,KAAK,8BAA8B,EAAE,CAAC;YAChD,mCAAmC;QACrC,CAAC;aAAM,CAAC;YACN,wDAAwD;YACxD,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACjB,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACnB,CAAC;IACH,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AAChC,CAAC;AAED,kEAAkE;AAClE,SAAS,SAAS,CAAC,GAAa,EAAE,MAAgB,EAAE,SAAiB;IACnE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,wEAAwE;QACxE,MAAM,IAAI,eAAe,CACvB,QAAQ,SAAS,iDAAiD,EAClE,SAAS,CACV,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;IACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrD,IAAI,EAAE,GAAG,IAAI,CAAC;QACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7B,EAAE,GAAG,KAAK,CAAC;gBACX,MAAM;YACR,CAAC;QACH,CAAC;QACD,IAAI,EAAE,EAAE,CAAC;YACP,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;gBACjB,MAAM,IAAI,eAAe,CACvB,QAAQ,SAAS,uDAAuD,EACxE,SAAS,CACV,CAAC;YACJ,CAAC;YACD,KAAK,GAAG,CAAC,CAAC;QACZ,CAAC;IACH,CAAC;IACD,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;QACjB,MAAM,IAAI,eAAe,CACvB,QAAQ,SAAS,6CAA6C,EAC9D,SAAS,CACV,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAc,EAAE,KAAa;IAC5D,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IAChC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,eAAe,CAAC,yBAAyB,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,kBAAkB,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjD,2EAA2E;IAC3E,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,kBAAkB;QAAE,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAEnD,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QAC1B,MAAM,SAAS,GAAG,GAAG,GAAG,CAAC,CAAC;QAC1B,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAC/C,MAAM,EAAE,GAAG,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;QACjD,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,QAAQ,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IACrF,CAAC,CAAC,CAAC;IAEH,OAAO,kBAAkB,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CAAC,QAAgB,EAAE,aAAqB;IAC3E,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAC9C,MAAM,IAAI,GAAG,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IACnE,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,eAAe,CAAC,qDAAqD,CAAC,CAAC;IACnF,CAAC;IACD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,yBAAyB,EAAE,YAAY,aAAa,EAAE,CAAC,CAAC;IACxF,OAAO,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;AAC3E,CAAC"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent suggestion ranker — the deterministic decision-end mirror of C1's
|
|
3
|
+
* `rankSkills` (decision c20c2d1f, C2).
|
|
4
|
+
*
|
|
5
|
+
* Given a task description's top skill matches plus read-only historical signals
|
|
6
|
+
* (agent×skill usefulness, agent health) and an optional coverage tier, produce a
|
|
7
|
+
* ranked, REASONED agent recommendation. Pure + deterministic — NO LLM, NO
|
|
8
|
+
* embedding, no DB access (the caller wires the storage signals). The LLM
|
|
9
|
+
* (decision-maker) treats the candidate set as input and makes the final call,
|
|
10
|
+
* exactly like C1's "ranker ranks, LLM picks 0-1".
|
|
11
|
+
*
|
|
12
|
+
* Four layered signals (spec §"skill→agent mapping"):
|
|
13
|
+
* Signal 1 (primary) — historical (agent×skill) actionable_rate via reason-prefix
|
|
14
|
+
* proxy key (agent_id is empirically all-NULL).
|
|
15
|
+
* Signal 2 (tie-break) — agent health success_rate / delegations.
|
|
16
|
+
* Signal 3 (cold-start)— a small nature→agent prior table when Signal 1 is
|
|
17
|
+
* under-sampled (the relocated governance §5 judgments,
|
|
18
|
+
* keyed on task NATURE not coverage).
|
|
19
|
+
* Signal 4 (backstop) — coverage demotion: coder→safety-net-implementer for a
|
|
20
|
+
* <50% module, applied only when a module tier is given.
|
|
21
|
+
*
|
|
22
|
+
* 不变量: READ-ONLY data transformer. Never mutates inputs, never touches the
|
|
23
|
+
* filesystem or DB, never spawns. The daemon never calls this.
|
|
24
|
+
*/
|
|
25
|
+
import { REASON_PREFIX_TO_AGENT } from './agent-health.js';
|
|
26
|
+
import type { CoverageTier } from './coverage-tiers.js';
|
|
27
|
+
/**
|
|
28
|
+
* The spawnable IMPLEMENTATION agent pool — the recommendation universe.
|
|
29
|
+
* Excludes pipeline roles (verify / decision) which are not "the agent to spawn
|
|
30
|
+
* for the work". Order is stable for deterministic alphabetical tie-breaks.
|
|
31
|
+
*/
|
|
32
|
+
export declare const IMPL_AGENT_POOL: readonly ["coder", "harness-debug-full", "planner", "safety-net-implementer"];
|
|
33
|
+
export type ImplAgent = (typeof IMPL_AGENT_POOL)[number];
|
|
34
|
+
/**
|
|
35
|
+
* Signal-3 cold-start prior — task NATURE → agent, relocated from the
|
|
36
|
+
* decision-maker.md Step 3 prose selection guide. Each nature carries the
|
|
37
|
+
* keywords that signal it (matched against the task tokens) and the agent it
|
|
38
|
+
* implies. NOT keyed on coverage — coverage enters only via Signal 4.
|
|
39
|
+
*
|
|
40
|
+
* Priority: when multiple natures match, the one with the most keyword hits wins;
|
|
41
|
+
* ties break by the array order below (most specific first). This is the
|
|
42
|
+
* irreducible floor that makes C2 ≈ the old guide before Signal-1 data accrues.
|
|
43
|
+
*/
|
|
44
|
+
export interface NaturePrior {
|
|
45
|
+
nature: string;
|
|
46
|
+
agent: ImplAgent;
|
|
47
|
+
keywords: string[];
|
|
48
|
+
}
|
|
49
|
+
export declare const NATURE_PRIOR_TABLE: readonly NaturePrior[];
|
|
50
|
+
/** One skill match from rankSkills (C1). */
|
|
51
|
+
export interface SkillMatchInput {
|
|
52
|
+
id: string;
|
|
53
|
+
score: number;
|
|
54
|
+
}
|
|
55
|
+
/** One (agent×skill) usefulness row from aggregateSkillUsefulnessByAgent. */
|
|
56
|
+
export interface AgentSkillAffinityInput {
|
|
57
|
+
/** Reason-prefix proxy agent key (coder / safetynet / verify / ...). */
|
|
58
|
+
agent: string;
|
|
59
|
+
skill_id: string;
|
|
60
|
+
total_rated: number;
|
|
61
|
+
actionable_rate: number;
|
|
62
|
+
}
|
|
63
|
+
/** One agent-health row (subset of computeAgentHealth's AgentHealth). */
|
|
64
|
+
export interface AgentHealthInput {
|
|
65
|
+
/** Canonical agent template name (already mapped from reason prefix). */
|
|
66
|
+
agent: string;
|
|
67
|
+
success_rate: number | null;
|
|
68
|
+
delegations: number;
|
|
69
|
+
}
|
|
70
|
+
export interface SuggestAgentsInput {
|
|
71
|
+
taskDesc: string;
|
|
72
|
+
/** Top skill matches for the task (from rankSkills). */
|
|
73
|
+
skillMatches: SkillMatchInput[];
|
|
74
|
+
/** (agent×skill) usefulness rows (from aggregateSkillUsefulnessByAgent). */
|
|
75
|
+
skillByAgent: AgentSkillAffinityInput[];
|
|
76
|
+
/** Per-agent health rows (from computeAgentHealth). */
|
|
77
|
+
agentHealth: AgentHealthInput[];
|
|
78
|
+
/** Resolved coverage tier for --module (Signal 4); omit → backstop skipped. */
|
|
79
|
+
moduleCoverageTier?: CoverageTier;
|
|
80
|
+
/** Module path (for the coverage_note text only). */
|
|
81
|
+
modulePath?: string;
|
|
82
|
+
}
|
|
83
|
+
export interface AgentCandidate {
|
|
84
|
+
agent: string;
|
|
85
|
+
score: number;
|
|
86
|
+
reasons: string[];
|
|
87
|
+
/** Set when Signal-4 demoted this candidate (e.g. "coder"). */
|
|
88
|
+
demoted_from?: string;
|
|
89
|
+
/** Confidence label driven by Signal-1 evidence sufficiency. */
|
|
90
|
+
confidence: 'data-backed' | 'nature-prior';
|
|
91
|
+
}
|
|
92
|
+
export interface AgentSuggestResult {
|
|
93
|
+
task: string;
|
|
94
|
+
candidates: AgentCandidate[];
|
|
95
|
+
coverage_note: string;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Compute the Signal-3 nature prior for a task: the best-matching nature→agent
|
|
99
|
+
* and the keyword hit count. Deterministic: most keyword hits wins, ties by
|
|
100
|
+
* NATURE_PRIOR_TABLE order. Returns the default new-feature agent with 0 hits
|
|
101
|
+
* when nothing matches.
|
|
102
|
+
*/
|
|
103
|
+
export declare function computeNaturePrior(taskDesc: string): {
|
|
104
|
+
agent: ImplAgent;
|
|
105
|
+
nature: string;
|
|
106
|
+
hits: number;
|
|
107
|
+
};
|
|
108
|
+
/**
|
|
109
|
+
* Apply the Signal-4 coverage backstop to a single candidate (pure). Demotes a
|
|
110
|
+
* `coder` recommendation to `safety-net-implementer` when the module tier is
|
|
111
|
+
* `low` (<50% lines). One-way safety filter — never promotes, never touches
|
|
112
|
+
* non-coder agents. Returns a (possibly) new candidate; never mutates input.
|
|
113
|
+
*/
|
|
114
|
+
export declare function applyCoverageBackstop(candidate: AgentCandidate, tier: CoverageTier | undefined, modulePath?: string): AgentCandidate;
|
|
115
|
+
/**
|
|
116
|
+
* Rank implementation agents for a task. Pure + deterministic.
|
|
117
|
+
*
|
|
118
|
+
* Scoring口径 (per spec): for each agent in IMPL_AGENT_POOL,
|
|
119
|
+
* score = Σ over skillMatches of (skillMatch.score × affinity) where
|
|
120
|
+
* affinity = (agent,skill) actionable_rate when total_rated ≥ SUGGESTION_MIN_RATED
|
|
121
|
+
* (Signal 1, data-backed),
|
|
122
|
+
* else +1 for the agent picked by the nature prior (Signal 3, cold-start).
|
|
123
|
+
* Tie-break: success_rate desc → delegations desc → agent name asc (Signal 2 +
|
|
124
|
+
* determinism). Coverage backstop (Signal 4) is post-applied per candidate.
|
|
125
|
+
*/
|
|
126
|
+
export declare function suggestAgents(input: SuggestAgentsInput): AgentSuggestResult;
|
|
127
|
+
export { REASON_PREFIX_TO_AGENT };
|
|
128
|
+
//# sourceMappingURL=agent-suggest.d.ts.map
|