@winspan/claude-forge 9.2.0 → 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 +80 -19
- package/README.md +13 -6
- package/dist/catalogs/agents.json +19 -24
- package/dist/catalogs/skills.json +139 -27
- package/dist/claudemd/templates/swarm-protocol.md +1 -1
- 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/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/decisions.d.ts.map +1 -1
- package/dist/cli/commands/decisions.js +46 -9
- package/dist/cli/commands/decisions.js.map +1 -1
- package/dist/cli/commands/executions.d.ts.map +1 -1
- package/dist/cli/commands/executions.js +2 -1
- package/dist/cli/commands/executions.js.map +1 -1
- package/dist/cli/commands/insights-goal-check.d.ts +5 -1
- package/dist/cli/commands/insights-goal-check.d.ts.map +1 -1
- package/dist/cli/commands/insights-goal-check.js +15 -15
- package/dist/cli/commands/insights-goal-check.js.map +1 -1
- package/dist/cli/commands/knowledge.d.ts +51 -0
- package/dist/cli/commands/knowledge.d.ts.map +1 -1
- package/dist/cli/commands/knowledge.js +202 -29
- package/dist/cli/commands/knowledge.js.map +1 -1
- 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 +23 -0
- package/dist/cli/commands/mcp.d.ts.map +1 -1
- package/dist/cli/commands/mcp.js +82 -0
- package/dist/cli/commands/mcp.js.map +1 -1
- 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 +409 -9
- package/dist/cli/commands/skills.js.map +1 -1
- package/dist/cli/commands/stats.d.ts.map +1 -1
- package/dist/cli/commands/stats.js +9 -2
- package/dist/cli/commands/stats.js.map +1 -1
- package/dist/cli/index.js +8 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/core/constants.d.ts +37 -0
- package/dist/core/constants.d.ts.map +1 -1
- package/dist/core/constants.js +43 -0
- package/dist/core/constants.js.map +1 -1
- package/dist/core/diagnostics/checks.d.ts.map +1 -1
- package/dist/core/diagnostics/checks.js +2 -1
- package/dist/core/diagnostics/checks.js.map +1 -1
- package/dist/core/diagnostics/daemon-status.d.ts +1 -1
- package/dist/core/diagnostics/daemon-status.d.ts.map +1 -1
- package/dist/core/diagnostics/daemon-status.js +1 -1
- package/dist/core/diagnostics/daemon-status.js.map +1 -1
- package/dist/core/diagnostics/entropy-checks.d.ts +3 -2
- package/dist/core/diagnostics/entropy-checks.d.ts.map +1 -1
- package/dist/core/diagnostics/entropy-checks.js +10 -5
- package/dist/core/diagnostics/entropy-checks.js.map +1 -1
- 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/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 +34 -4
- package/dist/core/governance/global-inject.d.ts.map +1 -1
- package/dist/core/governance/global-inject.js +80 -25
- package/dist/core/governance/global-inject.js.map +1 -1
- 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/{daemon/services → core/insights}/experience-extractor.d.ts +0 -7
- package/dist/core/insights/experience-extractor.d.ts.map +1 -0
- package/dist/{daemon/services → core/insights}/experience-extractor.js +5 -9
- package/dist/core/insights/experience-extractor.js.map +1 -0
- package/dist/{daemon/services → core/insights}/violation-reporter.d.ts +20 -1
- package/dist/core/insights/violation-reporter.d.ts.map +1 -0
- package/dist/{daemon/services → core/insights}/violation-reporter.js +56 -4
- 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.map +1 -1
- package/dist/core/queue/index.js +2 -1
- package/dist/core/queue/index.js.map +1 -1
- package/dist/core/storage/base.d.ts +159 -0
- package/dist/core/storage/base.d.ts.map +1 -1
- package/dist/core/storage/base.js +523 -0
- package/dist/core/storage/base.js.map +1 -1
- 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 +30 -5
- package/dist/core/storage/decisions.d.ts.map +1 -1
- package/dist/core/storage/decisions.js +45 -13
- package/dist/core/storage/decisions.js.map +1 -1
- package/dist/core/storage/events.d.ts +127 -0
- package/dist/core/storage/events.d.ts.map +1 -1
- package/dist/core/storage/events.js +318 -3
- package/dist/core/storage/events.js.map +1 -1
- package/dist/core/storage/feedback.d.ts +3 -23
- package/dist/core/storage/feedback.d.ts.map +1 -1
- package/dist/core/storage/feedback.js +37 -38
- package/dist/core/storage/feedback.js.map +1 -1
- package/dist/core/storage/injections.d.ts +40 -0
- package/dist/core/storage/injections.d.ts.map +1 -1
- package/dist/core/storage/injections.js +69 -0
- package/dist/core/storage/injections.js.map +1 -1
- package/dist/core/storage/knowledge.d.ts +226 -0
- package/dist/core/storage/knowledge.d.ts.map +1 -1
- package/dist/core/storage/knowledge.js +391 -4
- package/dist/core/storage/knowledge.js.map +1 -1
- package/dist/core/storage/pipeline-rollup.d.ts +1 -7
- package/dist/core/storage/pipeline-rollup.d.ts.map +1 -1
- package/dist/core/storage/pipeline-rollup.js +18 -57
- package/dist/core/storage/pipeline-rollup.js.map +1 -1
- package/dist/core/storage/routing.d.ts +34 -0
- package/dist/core/storage/routing.d.ts.map +1 -1
- package/dist/core/storage/routing.js +92 -2
- package/dist/core/storage/routing.js.map +1 -1
- package/dist/core/storage/rows.d.ts +5 -25
- package/dist/core/storage/rows.d.ts.map +1 -1
- package/dist/core/storage/schema.sql +92 -27
- package/dist/core/storage/sessions.d.ts.map +1 -1
- package/dist/core/storage/sessions.js +2 -1
- package/dist/core/storage/sessions.js.map +1 -1
- package/dist/core/storage/skills.d.ts +159 -0
- package/dist/core/storage/skills.d.ts.map +1 -1
- package/dist/core/storage/skills.js +350 -4
- package/dist/core/storage/skills.js.map +1 -1
- package/dist/core/storage/sqlite.d.ts +81 -25
- package/dist/core/storage/sqlite.d.ts.map +1 -1
- package/dist/core/storage/sqlite.js +143 -45
- package/dist/core/storage/sqlite.js.map +1 -1
- package/dist/core/storage/tasks.d.ts +270 -0
- package/dist/core/storage/tasks.d.ts.map +1 -1
- package/dist/core/storage/tasks.js +495 -16
- package/dist/core/storage/tasks.js.map +1 -1
- package/dist/core/storage/tool-intercepts.d.ts +1 -1
- package/dist/core/storage/tool-intercepts.js +1 -1
- package/dist/core/types.d.ts +26 -3
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js +1 -3
- package/dist/core/types.js.map +1 -1
- package/dist/core/utils/binary-paths.d.ts +32 -0
- package/dist/core/utils/binary-paths.d.ts.map +1 -1
- package/dist/core/utils/binary-paths.js +52 -0
- package/dist/core/utils/binary-paths.js.map +1 -1
- package/dist/core/utils/claude-cli-resolver.d.ts.map +1 -0
- package/dist/{skills/distill → core/utils}/claude-cli-resolver.js +1 -1
- package/dist/core/utils/claude-cli-resolver.js.map +1 -0
- package/dist/core/utils/claude-cli-spawn.d.ts +1 -1
- package/dist/core/utils/claude-cli-spawn.js +2 -2
- package/dist/core/utils/claude-cli-spawn.js.map +1 -1
- package/dist/core/utils/noise-prompt.d.ts +1 -1
- package/dist/core/utils/noise-prompt.js +1 -1
- package/dist/core/utils/time.d.ts +26 -0
- package/dist/core/utils/time.d.ts.map +1 -1
- package/dist/core/utils/time.js +33 -0
- package/dist/core/utils/time.js.map +1 -1
- package/dist/daemon/config-store.d.ts.map +1 -1
- package/dist/daemon/config-store.js +14 -5
- package/dist/daemon/config-store.js.map +1 -1
- package/dist/daemon/event-parser.d.ts.map +1 -1
- package/dist/daemon/event-parser.js +5 -0
- package/dist/daemon/event-parser.js.map +1 -1
- package/dist/daemon/handlers/post-tool-use.d.ts +24 -16
- package/dist/daemon/handlers/post-tool-use.d.ts.map +1 -1
- package/dist/daemon/handlers/post-tool-use.js +76 -116
- package/dist/daemon/handlers/post-tool-use.js.map +1 -1
- package/dist/daemon/handlers/pre-tool-use.d.ts +35 -10
- package/dist/daemon/handlers/pre-tool-use.d.ts.map +1 -1
- package/dist/daemon/handlers/pre-tool-use.js +71 -38
- package/dist/daemon/handlers/pre-tool-use.js.map +1 -1
- package/dist/daemon/handlers/stop.d.ts +20 -0
- package/dist/daemon/handlers/stop.d.ts.map +1 -1
- package/dist/daemon/handlers/stop.js +96 -8
- package/dist/daemon/handlers/stop.js.map +1 -1
- package/dist/daemon/handlers/user-prompt.d.ts +16 -1
- package/dist/daemon/handlers/user-prompt.d.ts.map +1 -1
- package/dist/daemon/handlers/user-prompt.js +97 -56
- 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/index.d.ts +19 -0
- package/dist/daemon/index.d.ts.map +1 -1
- package/dist/daemon/index.js +125 -200
- package/dist/daemon/index.js.map +1 -1
- package/dist/daemon/rules/defaults.d.ts.map +1 -1
- package/dist/daemon/rules/defaults.js +151 -64
- package/dist/daemon/rules/defaults.js.map +1 -1
- package/dist/daemon/rules/types.d.ts +28 -22
- package/dist/daemon/rules/types.d.ts.map +1 -1
- package/dist/daemon/rules/workflow-defaults.js +9 -9
- package/dist/daemon/rules/workflow-defaults.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/decision-hint.d.ts +47 -10
- package/dist/daemon/services/decision-hint.d.ts.map +1 -1
- package/dist/daemon/services/decision-hint.js +99 -24
- package/dist/daemon/services/decision-hint.js.map +1 -1
- package/dist/daemon/services/event-ttl-sweep.d.ts.map +1 -1
- package/dist/daemon/services/event-ttl-sweep.js +3 -2
- package/dist/daemon/services/event-ttl-sweep.js.map +1 -1
- package/dist/daemon/services/feedback-aggregator.d.ts +14 -26
- package/dist/daemon/services/feedback-aggregator.d.ts.map +1 -1
- package/dist/daemon/services/feedback-aggregator.js +23 -63
- package/dist/daemon/services/feedback-aggregator.js.map +1 -1
- package/dist/daemon/services/heartbeat-writer.d.ts +6 -15
- package/dist/daemon/services/heartbeat-writer.d.ts.map +1 -1
- package/dist/daemon/services/heartbeat-writer.js +7 -36
- package/dist/daemon/services/heartbeat-writer.js.map +1 -1
- package/dist/daemon/services/kb-injector.d.ts +1 -1
- package/dist/daemon/services/kb-injector.d.ts.map +1 -1
- package/dist/daemon/services/kb-injector.js +10 -2
- package/dist/daemon/services/kb-injector.js.map +1 -1
- 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.js +1 -1
- package/dist/daemon/services/outcome-classification-service.js.map +1 -1
- package/dist/daemon/services/task-segmenter.d.ts +11 -0
- package/dist/daemon/services/task-segmenter.d.ts.map +1 -1
- package/dist/daemon/services/task-segmenter.js +48 -2
- package/dist/daemon/services/task-segmenter.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 +1 -0
- package/dist/daemon/templates/agents/coder.md +165 -8
- package/dist/daemon/templates/agents/decision-maker.md +107 -21
- package/dist/daemon/templates/agents/doc-reviewer.md +4 -1
- package/dist/daemon/templates/agents/harness-debug-full.md +85 -3
- package/dist/daemon/templates/agents/knowledge-builder.md +1 -0
- package/dist/daemon/templates/agents/patch-applier.md +1 -0
- package/dist/daemon/templates/agents/planner.md +55 -3
- package/dist/daemon/templates/agents/safety-net-implementer.md +278 -0
- package/dist/daemon/templates/agents/skill-distiller.md +1 -0
- package/dist/daemon/templates/agents/task-boundary-classifier.md +1 -0
- package/dist/daemon/templates/agents/verify-agent.md +128 -5
- package/dist/hooks/stop.sh +7 -1
- package/dist/knowledge/builder.js +36 -7
- package/dist/knowledge/builder.js.map +1 -1
- package/dist/knowledge/constants.d.ts +10 -5
- package/dist/knowledge/constants.d.ts.map +1 -1
- package/dist/knowledge/constants.js +10 -5
- package/dist/knowledge/constants.js.map +1 -1
- 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/prompt.d.ts +9 -0
- package/dist/knowledge/prompt.d.ts.map +1 -1
- package/dist/knowledge/prompt.js +17 -5
- package/dist/knowledge/prompt.js.map +1 -1
- package/dist/knowledge/query.d.ts +13 -0
- package/dist/knowledge/query.d.ts.map +1 -1
- package/dist/knowledge/query.js +107 -10
- package/dist/knowledge/query.js.map +1 -1
- package/dist/knowledge/repo-map.d.ts +11 -5
- package/dist/knowledge/repo-map.d.ts.map +1 -1
- package/dist/knowledge/repo-map.js +42 -3
- package/dist/knowledge/repo-map.js.map +1 -1
- package/dist/knowledge/validator.d.ts.map +1 -1
- package/dist/knowledge/validator.js +69 -2
- package/dist/knowledge/validator.js.map +1 -1
- package/dist/mcp/server.d.ts +64 -8
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +233 -18
- package/dist/mcp/server.js.map +1 -1
- package/dist/skills/distill/distiller.js +1 -1
- package/dist/skills/distill/distiller.js.map +1 -1
- package/dist/skills/distilled/distilled-api-design.md +4 -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 +5 -2
- 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 +85 -50
- 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 +1 -1
- package/dist/skills/distilled/distilled-receiving-code-review.md +185 -0
- package/dist/skills/distilled/distilled-subagent-driven-development.md +124 -0
- package/dist/skills/distilled/distilled-systematic-debugging.md +108 -260
- 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 +88 -78
- package/dist/skills/distilled/distilled-writing-skills.md +175 -0
- package/dist/skills/registry.d.ts +10 -50
- package/dist/skills/registry.d.ts.map +1 -1
- package/dist/skills/registry.js +7 -118
- package/dist/skills/registry.js.map +1 -1
- package/dist/skills/tools/pipeline-suggest.js +2 -2
- package/dist/skills/tools/pipeline-suggest.js.map +1 -1
- package/dist/skills/tools/skill-invoke.d.ts +2 -1
- package/dist/skills/tools/skill-invoke.d.ts.map +1 -1
- package/dist/skills/tools/skill-invoke.js +3 -1
- 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-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.js +1 -1
- package/dist/web/routes/decisions.js.map +1 -1
- 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 +2 -1
- package/dist/web/routes/events.js.map +1 -1
- 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 +43 -2
- package/dist/web/routes/knowledge.d.ts.map +1 -1
- package/dist/web/routes/knowledge.js +117 -6
- package/dist/web/routes/knowledge.js.map +1 -1
- package/dist/web/routes/pipeline.d.ts +0 -9
- package/dist/web/routes/pipeline.d.ts.map +1 -1
- package/dist/web/routes/pipeline.js +0 -4
- package/dist/web/routes/pipeline.js.map +1 -1
- package/dist/web/routes/rules.d.ts.map +1 -1
- package/dist/web/routes/rules.js +20 -6
- 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 +8 -7
- package/dist/web/routes/sessions.js.map +1 -1
- package/dist/web/routes/skill-stats.d.ts.map +1 -1
- package/dist/web/routes/skill-stats.js +153 -16
- package/dist/web/routes/skill-stats.js.map +1 -1
- package/dist/web/routes/skills-distill.js +1 -1
- package/dist/web/routes/skills-distill.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 +95 -19
- package/dist/web/routes/task-timeline.d.ts.map +1 -1
- package/dist/web/routes/task-timeline.js +344 -88
- package/dist/web/routes/task-timeline.js.map +1 -1
- package/dist/web/routes/tasks.d.ts.map +1 -1
- package/dist/web/routes/tasks.js +52 -30
- package/dist/web/routes/tasks.js.map +1 -1
- package/dist/web/routes/violations.d.ts +1 -1
- package/dist/web/routes/violations.d.ts.map +1 -1
- package/dist/web/routes/violations.js +3 -2
- package/dist/web/routes/violations.js.map +1 -1
- package/dist/web/server.d.ts.map +1 -1
- package/dist/web/server.js +20 -0
- 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/distill-manager.d.ts +47 -0
- package/dist/web/services/distill-manager.d.ts.map +1 -1
- package/dist/web/services/distill-manager.js +103 -0
- package/dist/web/services/distill-manager.js.map +1 -1
- 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-DZmTl-8J.js → MarkdownRenderer-DlDQNihj.js} +2 -2
- package/dist/web/static/assets/{MarkdownRenderer-DZmTl-8J.js.map → MarkdownRenderer-DlDQNihj.js.map} +1 -1
- package/dist/web/static/assets/NotFound-LMzbP51V.js +2 -0
- package/dist/web/static/assets/{NotFound-BQPh0vaF.js.map → NotFound-LMzbP51V.js.map} +1 -1
- 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-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/{index-7bl3kbcx.css → index-B_v_MKlb.css} +1 -1
- 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/markdown-CA7ePUts.js +30 -0
- package/dist/web/static/assets/markdown-CA7ePUts.js.map +1 -0
- package/dist/web/static/assets/{outcome-DUn1NjlC.js → outcome-BKGy9azt.js} +2 -2
- package/dist/web/static/assets/{outcome-DUn1NjlC.js.map → outcome-BKGy9azt.js.map} +1 -1
- package/dist/web/static/assets/{query-S6X1S7K9.js → query-CgCOpYWf.js} +2 -2
- package/dist/web/static/assets/{query-S6X1S7K9.js.map → query-CgCOpYWf.js.map} +1 -1
- package/dist/web/static/assets/{react-router-JVUrkhdd.js → react-router-Cxmg8RuL.js} +3 -3
- package/dist/web/static/assets/{react-router-JVUrkhdd.js.map → react-router-Cxmg8RuL.js.map} +1 -1
- package/dist/web/static/assets/{syntax-highlighter-BkZfCDsz.js → syntax-highlighter-BDYycNja.js} +3 -3
- package/dist/web/static/assets/{syntax-highlighter-BkZfCDsz.js.map → syntax-highlighter-BDYycNja.js.map} +1 -1
- package/dist/web/static/assets/task-title-BhOcemuR.js +2 -0
- package/dist/web/static/assets/task-title-BhOcemuR.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 +6 -6
- package/package.json +5 -3
- package/dist/core/storage/workflow-recommendations.d.ts +0 -124
- package/dist/core/storage/workflow-recommendations.d.ts.map +0 -1
- package/dist/core/storage/workflow-recommendations.js +0 -274
- package/dist/core/storage/workflow-recommendations.js.map +0 -1
- package/dist/daemon/services/experience-extractor.d.ts.map +0 -1
- package/dist/daemon/services/experience-extractor.js.map +0 -1
- package/dist/daemon/services/violation-reporter.d.ts.map +0 -1
- package/dist/daemon/services/violation-reporter.js.map +0 -1
- package/dist/daemon/templates/agents/harness-hotfix.md +0 -99
- package/dist/daemon/templates/agents/hybrid-feature-with-safety.md +0 -104
- package/dist/daemon/templates/agents/refactor-specialist.md +0 -98
- package/dist/skills/distill/claude-cli-resolver.d.ts.map +0 -1
- package/dist/skills/distill/claude-cli-resolver.js.map +0 -1
- package/dist/skills/distilled/distilled-defi-amm-security.md +0 -293
- package/dist/skills/keyword-score.d.ts +0 -29
- package/dist/skills/keyword-score.d.ts.map +0 -1
- package/dist/skills/keyword-score.js +0 -54
- package/dist/skills/keyword-score.js.map +0 -1
- package/dist/web/static/assets/AgentContentPage-DkeRNxok.js +0 -2
- package/dist/web/static/assets/AgentContentPage-DkeRNxok.js.map +0 -1
- package/dist/web/static/assets/AgentDelegationTable-ByBa0x1l.js +0 -2
- package/dist/web/static/assets/AgentDelegationTable-ByBa0x1l.js.map +0 -1
- package/dist/web/static/assets/ContextInsightsPage-oUk7_I8u.js +0 -3
- package/dist/web/static/assets/ContextInsightsPage-oUk7_I8u.js.map +0 -1
- package/dist/web/static/assets/DaemonHealthPage-DG2fyOP7.js +0 -2
- package/dist/web/static/assets/DaemonHealthPage-DG2fyOP7.js.map +0 -1
- package/dist/web/static/assets/DecisionsPage-CMAPEnKb.js +0 -2
- package/dist/web/static/assets/DecisionsPage-CMAPEnKb.js.map +0 -1
- package/dist/web/static/assets/DiagnosticsPage-DQd-Zm4r.js +0 -2
- package/dist/web/static/assets/DiagnosticsPage-DQd-Zm4r.js.map +0 -1
- package/dist/web/static/assets/DriftTab-DqpepOhI.js +0 -2
- package/dist/web/static/assets/DriftTab-DqpepOhI.js.map +0 -1
- package/dist/web/static/assets/HealthHomePage-CN6zNIie.js +0 -3
- package/dist/web/static/assets/HealthHomePage-CN6zNIie.js.map +0 -1
- package/dist/web/static/assets/KbHitRateTable-ByEIWujF.js +0 -2
- package/dist/web/static/assets/KbHitRateTable-ByEIWujF.js.map +0 -1
- package/dist/web/static/assets/NotFound-BQPh0vaF.js +0 -2
- package/dist/web/static/assets/ProjectSwitcher-D3lZMFd3.js +0 -2
- package/dist/web/static/assets/ProjectSwitcher-D3lZMFd3.js.map +0 -1
- package/dist/web/static/assets/SettingsPage-oLJBNzQj.js +0 -2
- package/dist/web/static/assets/SettingsPage-oLJBNzQj.js.map +0 -1
- package/dist/web/static/assets/SkillContentPage-DK5rgfgw.js +0 -2
- package/dist/web/static/assets/SkillContentPage-DK5rgfgw.js.map +0 -1
- package/dist/web/static/assets/SkillStatsTable-DYMzjEUV.js +0 -2
- package/dist/web/static/assets/SkillStatsTable-DYMzjEUV.js.map +0 -1
- package/dist/web/static/assets/SkillsDistillTab-C7qaG8q3.js +0 -2
- package/dist/web/static/assets/SkillsDistillTab-C7qaG8q3.js.map +0 -1
- package/dist/web/static/assets/TasksHubPage-03wsRRsJ.js +0 -6
- package/dist/web/static/assets/TasksHubPage-03wsRRsJ.js.map +0 -1
- package/dist/web/static/assets/ViolationsPage-DSiLr-9O.js +0 -3
- package/dist/web/static/assets/ViolationsPage-DSiLr-9O.js.map +0 -1
- package/dist/web/static/assets/arco-Bhi3a6Qp.js +0 -14
- package/dist/web/static/assets/arco-Bhi3a6Qp.js.map +0 -1
- package/dist/web/static/assets/charts-BuHQWDbQ.js +0 -37
- package/dist/web/static/assets/charts-BuHQWDbQ.js.map +0 -1
- package/dist/web/static/assets/index-BIYnq1Dx.js +0 -4
- package/dist/web/static/assets/index-BIYnq1Dx.js.map +0 -1
- package/dist/web/static/assets/useTabsParam-k8qte_0C.js +0 -2
- package/dist/web/static/assets/useTabsParam-k8qte_0C.js.map +0 -1
- package/dist/web/static/assets/vendor-DWgdB1eY.js +0 -65
- package/dist/web/static/assets/vendor-DWgdB1eY.js.map +0 -1
- /package/dist/{skills/distill → core/utils}/claude-cli-resolver.d.ts +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"time.js","sourceRoot":"","sources":["../../../src/core/utils/time.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"time.js","sourceRoot":"","sources":["../../../src/core/utils/time.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-store.d.ts","sourceRoot":"","sources":["../../src/daemon/config-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE/E;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"config-store.d.ts","sourceRoot":"","sources":["../../src/daemon/config-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE/E;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAkFzD,CAAC;AAEH,qBAAa,WAAW;IACV,OAAO,CAAC,OAAO;gBAAP,OAAO,EAAE,aAAa;IAE1C;;;;;OAKG;IACH,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAI/B,oDAAoD;IACpD,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIpC,8EAA8E;IAC9E,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAIrC;;;OAGG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAI5B,yEAAyE;IACzE,IAAI,IAAI,cAAc,EAAE;IAIxB;;;;;OAKG;IACH,YAAY,CAAC,QAAQ,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAiB,GAAG,MAAM;CASjF"}
|
|
@@ -47,8 +47,6 @@ export const DEFAULT_FLAGS = Object.freeze({
|
|
|
47
47
|
'pre_tool_intercept.disabled_project_prefixes': '',
|
|
48
48
|
// Phase 2/8: rule-tuning feedback aggregator.
|
|
49
49
|
'feedback_loop.enabled': 'false',
|
|
50
|
-
// Phase 5: workflow recommender (BMAD/Harness in daemon).
|
|
51
|
-
'workflow_recommender.enabled': 'false',
|
|
52
50
|
// Phase 6: agent-experience KB writeback (bidirectional flow).
|
|
53
51
|
'agent_writeback.enabled': 'false',
|
|
54
52
|
// Phase 2a (v9.x): LLM intent classifier + 6-layer fallback stack.
|
|
@@ -67,9 +65,7 @@ export const DEFAULT_FLAGS = Object.freeze({
|
|
|
67
65
|
// NOT auto-mutated (seedDefaults is if-missing); see Spec 2 § A changelog.
|
|
68
66
|
'auto_spec_generation.enabled': 'false',
|
|
69
67
|
// Phase 2 (v9.x, 2026-05-26): user-question default BMAD gate (hard deny
|
|
70
|
-
// layer). Default OFF —
|
|
71
|
-
// the soft recommend rule (`bmad-question-default` in workflow-defaults)
|
|
72
|
-
// populating `workflow_recommendations`. Flip via:
|
|
68
|
+
// layer). Default OFF — flip via:
|
|
73
69
|
// cf config set question_default_bmad.enforce true
|
|
74
70
|
// Reassess at 2026-06-02 (target: ≥80% would-have-benefited true-positive
|
|
75
71
|
// labelling on 20-row sample). Spec:
|
|
@@ -84,6 +80,19 @@ export const DEFAULT_FLAGS = Object.freeze({
|
|
|
84
80
|
'events.warm_ttl_days': '7',
|
|
85
81
|
'events.cold_ttl_days': '30',
|
|
86
82
|
'events.sweep_interval_hours': '6',
|
|
83
|
+
// codegraph Phase 3 (decision 95df9d97): cadence (minutes) of the daemon's
|
|
84
|
+
// incremental call-graph sync. See src/daemon/services/codegraph-sync.ts.
|
|
85
|
+
// Integer string; coerced via Number(). 0/invalid → default (15m).
|
|
86
|
+
'codegraph.sync_interval_minutes': '15',
|
|
87
|
+
// f47c2c90 (2026-06-17): inline single-file no-spawn violation 口径补强
|
|
88
|
+
// (warn-level, default OFF, gray-rollout to observe recall). The
|
|
89
|
+
// `inline-edit-no-spawn` / `inline-write-no-spawn` rules cover the blind spot
|
|
90
|
+
// where the main thread edits exactly 1 file without spawning an agent (the
|
|
91
|
+
// ==1 segment, mutually exclusive with the ==2 no-agent / ≥3 hard rules).
|
|
92
|
+
// flip via: cf config set inline_edit_no_spawn.enabled true
|
|
93
|
+
// ONLY widens detection 口径 — NEVER deny (CLAUDE.md mechanical-block layer
|
|
94
|
+
// removed; daemon only records, never hard-blocks the main thread).
|
|
95
|
+
'inline_edit_no_spawn.enabled': 'false',
|
|
87
96
|
});
|
|
88
97
|
export class ConfigStore {
|
|
89
98
|
storage;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-store.js","sourceRoot":"","sources":["../../src/daemon/config-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,aAAa,GAAqC,MAAM,CAAC,MAAM,CAAC;IAC3E,+CAA+C;IAC/C,mBAAmB,EAAE,MAAM;IAE3B,uEAAuE;IACvE,2EAA2E;IAC3E,0EAA0E;IAC1E,0EAA0E;IAC1E,0DAA0D;IAC1D,mDAAmD;IACnD,4BAA4B,EAAE,MAAM;IAEpC,qEAAqE;IACrE,2EAA2E;IAC3E,sEAAsE;IACtE,oEAAoE;IACpE,EAAE;IACF,+CAA+C;IAC/C,wFAAwF;IACxF,iBAAiB;IACjB,uFAAuF;IACvF,EAAE;IACF,uEAAuE;IACvE,qEAAqE;IACrE,mCAAmC;IACnC,8CAA8C,EAAE,EAAE;IAElD,8CAA8C;IAC9C,uBAAuB,EAAE,OAAO;IAEhC
|
|
1
|
+
{"version":3,"file":"config-store.js","sourceRoot":"","sources":["../../src/daemon/config-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-parser.d.ts","sourceRoot":"","sources":["../../src/daemon/event-parser.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAmB,MAAM,kBAAkB,CAAC;AAGpE;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,aAAa,QAAa,CAAC;AACxC,eAAO,MAAM,kBAAkB,MAAM,CAAC;AACtC,eAAO,MAAM,oBAAoB,QAAa,CAAC;AAC/C,eAAO,MAAM,gBAAgB,QAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"event-parser.d.ts","sourceRoot":"","sources":["../../src/daemon/event-parser.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAmB,MAAM,kBAAkB,CAAC;AAGpE;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,aAAa,QAAa,CAAC;AACxC,eAAO,MAAM,kBAAkB,MAAM,CAAC;AACtC,eAAO,MAAM,oBAAoB,QAAa,CAAC;AAC/C,eAAO,MAAM,gBAAgB,QAAa,CAAC;AAqB3C,qBAAa,WAAW;IACtB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU;CAgD/B"}
|
|
@@ -35,6 +35,10 @@ const RawHookEventSchema = z.object({
|
|
|
35
35
|
user_prompt: z.string().optional(),
|
|
36
36
|
ai_response: z.string().optional(),
|
|
37
37
|
event_id: z.string().uuid().optional(),
|
|
38
|
+
// In-flight only (spec 1446): Stop hook passes the session transcript path so
|
|
39
|
+
// the daemon can backfill ai_response for violation windows. NOT persisted to
|
|
40
|
+
// the events table — forwarded on the in-memory event object only.
|
|
41
|
+
transcript_path: z.string().optional(),
|
|
38
42
|
});
|
|
39
43
|
export class EventParser {
|
|
40
44
|
parse(raw) {
|
|
@@ -73,6 +77,7 @@ export class EventParser {
|
|
|
73
77
|
tool_output: validated.tool_output,
|
|
74
78
|
user_prompt: validated.user_prompt,
|
|
75
79
|
ai_response: validated.ai_response,
|
|
80
|
+
transcript_path: validated.transcript_path,
|
|
76
81
|
};
|
|
77
82
|
}
|
|
78
83
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-parser.js","sourceRoot":"","sources":["../../src/daemon/event-parser.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"event-parser.js","sourceRoot":"","sources":["../../src/daemon/event-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,30 @@ export declare class PostToolUseHandler {
|
|
|
13
13
|
private configStore;
|
|
14
14
|
constructor(storage?: SQLiteStorage | null, configStore?: ConfigStore | null);
|
|
15
15
|
handle(event: PostToolUseEvent): Promise<HookResult>;
|
|
16
|
+
/**
|
|
17
|
+
* LOOP HINT adoption back-fill (decision e7d13697, Option C). When the main
|
|
18
|
+
* thread (or an agent) actually runs `cf loop run` in this session, stamp
|
|
19
|
+
* every not-yet-stamped `[LOOP HINT]` injection row of the session with
|
|
20
|
+
* `adopted_at = now`. This is the write side of the "建议的 loop 被采纳没"
|
|
21
|
+
* telemetry — the OQ5 hard requirement that lets us later judge
|
|
22
|
+
* keep-vs-remove. Read side is a single SQL (countLoopHintAdoption).
|
|
23
|
+
*
|
|
24
|
+
* The daemon is ONLY observing here — it never launches `cf loop run` itself
|
|
25
|
+
* (advisory-only invariant). Silently swallows errors — observability,
|
|
26
|
+
* never a blocker.
|
|
27
|
+
*/
|
|
28
|
+
private maybeMarkLoopHintAdoption;
|
|
29
|
+
/**
|
|
30
|
+
* KB adoption back-fill (decision 148f7a0a). When the main thread (or an
|
|
31
|
+
* agent in the same session) actively calls a KB MCP tool
|
|
32
|
+
* (`mcp__claude-forge__knowledge*`), stamp every not-yet-stamped KB
|
|
33
|
+
* injection row of this session with `adopted_at = now`. This is the
|
|
34
|
+
* write side of the "注入的 KB 被用了没" telemetry — read side is a single
|
|
35
|
+
* SQL over injections (adopted/total, source_handler LIKE '%:kb').
|
|
36
|
+
*
|
|
37
|
+
* Silently swallows errors — telemetry is observability, never a blocker.
|
|
38
|
+
*/
|
|
39
|
+
private maybeMarkKbAdoption;
|
|
16
40
|
/**
|
|
17
41
|
* audit F4 back-fill (KPI relax: dry_run also back-filled). Pipeline:
|
|
18
42
|
* 1. Query last 30s of `deny` + `dry_run` intercepts for this session.
|
|
@@ -49,21 +73,5 @@ export declare class PostToolUseHandler {
|
|
|
49
73
|
* All errors are swallowed (warn-level log) — writeback is best-effort.
|
|
50
74
|
*/
|
|
51
75
|
private maybeWriteExperience;
|
|
52
|
-
/**
|
|
53
|
-
* Phase 5 outcome marking. Pipeline:
|
|
54
|
-
* 1. Find the most recent PENDING workflow_recommendations row for the
|
|
55
|
-
* session within the 5 min window. Return early if none.
|
|
56
|
-
* 2. Extract bypass token from Task description / prompt.
|
|
57
|
-
* Token present → mark 'bypassed'.
|
|
58
|
-
* 3. Else compare subagent_type vs recommended_agent_type.
|
|
59
|
-
* Match → 'accepted'. Mismatch → leave pending (PreToolUseHandler
|
|
60
|
-
* should already have denied unless the user supplied bypass; we
|
|
61
|
-
* don't want to mark mismatched-without-bypass as anything other
|
|
62
|
-
* than ignored/Stop-handler's job).
|
|
63
|
-
*
|
|
64
|
-
* Silently swallows storage errors — outcome marking is observability,
|
|
65
|
-
* not a request-blocker.
|
|
66
|
-
*/
|
|
67
|
-
private markWorkflowRecOutcome;
|
|
68
76
|
}
|
|
69
77
|
//# sourceMappingURL=post-tool-use.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"post-tool-use.d.ts","sourceRoot":"","sources":["../../../src/daemon/handlers/post-tool-use.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"post-tool-use.d.ts","sourceRoot":"","sources":["../../../src/daemon/handlers/post-tool-use.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AA4BtD,0CAA0C;AAC1C,eAAO,MAAM,oBAAoB,4BAA4B,CAAC;AAa9D,qBAAa,kBAAkB;IAE3B,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,WAAW;gBADX,OAAO,GAAE,aAAa,GAAG,IAAW,EACpC,WAAW,GAAE,WAAW,GAAG,IAAW;IAG1C,MAAM,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC;IAqD1D;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,yBAAyB;IAmBjC;;;;;;;;;OASG;IACH,OAAO,CAAC,mBAAmB;IAiB3B;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,OAAO,CAAC,yBAAyB;IA4BjC;;;;;;;;;;;OAWG;YACW,oBAAoB;CAoCnC"}
|
|
@@ -6,40 +6,27 @@
|
|
|
6
6
|
import path from 'node:path';
|
|
7
7
|
import { logger } from '../../core/utils/logger.js';
|
|
8
8
|
import { getSubagentType } from '../../core/event-fields.js';
|
|
9
|
-
import { appendToExperienceFile, extractExperience, } from '
|
|
10
|
-
/** Phase 5: window (ms) within which a Task spawn can mark a pending rec. */
|
|
11
|
-
const WORKFLOW_REC_WINDOW_MS = 5 * 60 * 1000;
|
|
12
|
-
/**
|
|
13
|
-
* KPI C8 relax: subagent_type values that count as "tried to comply but
|
|
14
|
-
* picked a different agent" → marked `partial_accepted` (C8 weight 0.5).
|
|
15
|
-
* Sourced from `.claude/agents/` filenames + the harness-built-in roster
|
|
16
|
-
* referenced by CLAUDE.md «工作流升级判定». Values outside this set leave
|
|
17
|
-
* the rec pending (StopHandler later marks ignored) — protects against
|
|
18
|
-
* fabricated subagent names polluting the half-credit bucket.
|
|
19
|
-
*/
|
|
20
|
-
const KNOWN_AGENT_TYPES = new Set([
|
|
21
|
-
'coder',
|
|
22
|
-
'doc-reviewer',
|
|
23
|
-
'harness-debug-full',
|
|
24
|
-
'harness-hotfix',
|
|
25
|
-
'hybrid-feature-with-safety',
|
|
26
|
-
'planner',
|
|
27
|
-
'refactor-specialist',
|
|
28
|
-
'verify-agent',
|
|
29
|
-
// Built-in / common Claude Code subagents that appear in real Task spawns.
|
|
30
|
-
'general-purpose',
|
|
31
|
-
'researcher',
|
|
32
|
-
'feature-developer',
|
|
33
|
-
'Explore',
|
|
34
|
-
]);
|
|
9
|
+
import { appendToExperienceFile, extractExperience, } from '../../core/insights/experience-extractor.js';
|
|
35
10
|
/**
|
|
36
11
|
* audit F4: window (ms) within which a PostToolUse may back-fill the outcome
|
|
37
12
|
* of a prior PreToolUse `deny`. 30s matches a typical "agent retries with the
|
|
38
13
|
* hinted approach" reaction time without overlapping into the next prompt.
|
|
39
14
|
*/
|
|
40
15
|
const INTERCEPT_OUTCOME_WINDOW_MS = 30 * 1000;
|
|
41
|
-
/**
|
|
42
|
-
|
|
16
|
+
/**
|
|
17
|
+
* KB 采纳 telemetry(decision 148f7a0a):以该前缀开头的 tool_name 视为
|
|
18
|
+
* 「主动 KB 调用」,触发同会话 KB 注入行的 adopted_at 盖章。覆盖
|
|
19
|
+
* mcp__claude-forge__knowledge_query / knowledge_fetch 等全部 KB MCP 工具。
|
|
20
|
+
*/
|
|
21
|
+
const KB_MCP_TOOL_PREFIX = 'mcp__claude-forge__knowledge';
|
|
22
|
+
/**
|
|
23
|
+
* LOOP HINT 采纳 telemetry(decision e7d13697, Option C):本会话实际运行
|
|
24
|
+
* `cf loop run` = 主线程采纳了先前 mint 的 `[LOOP HINT]` 建议。观察 Bash 工具
|
|
25
|
+
* 调用、命令含 `loop run` 时盖章同会话的 loop-hint 注入行(镜像 KB 采纳)。
|
|
26
|
+
* `cf loop run` / `loop run --interactive` / 自定义 cf 别名都命中(不强求 `cf`
|
|
27
|
+
* 前缀,避免漏判)。
|
|
28
|
+
*/
|
|
29
|
+
const LOOP_RUN_COMMAND_RE = /\bloop\s+run\b/;
|
|
43
30
|
/** Phase 6 feature flag — default OFF. */
|
|
44
31
|
export const AGENT_WRITEBACK_FLAG = 'agent_writeback.enabled';
|
|
45
32
|
/**
|
|
@@ -86,12 +73,6 @@ export class PostToolUseHandler {
|
|
|
86
73
|
logger.debug(`[PostToolUse] Failed to update routing_event: ${err}`);
|
|
87
74
|
}
|
|
88
75
|
}
|
|
89
|
-
// Phase 5: mark pending workflow_recommendation outcome on Task spawn.
|
|
90
|
-
// (Real subagent invocations come through tool_name='Task' in CC; legacy
|
|
91
|
-
// 'Agent' is also handled for forward compat.)
|
|
92
|
-
if (this.storage && (event.tool_name === 'Task' || event.tool_name === 'Agent')) {
|
|
93
|
-
this.markWorkflowRecOutcome(event);
|
|
94
|
-
}
|
|
95
76
|
// Phase 6: agent-experience writeback on changelog Write/Edit.
|
|
96
77
|
// Fire-and-forget — writeback is observability, never a request-blocker.
|
|
97
78
|
if (event.tool_name === 'Write' || event.tool_name === 'Edit') {
|
|
@@ -101,8 +82,69 @@ export class PostToolUseHandler {
|
|
|
101
82
|
if (this.storage) {
|
|
102
83
|
this.maybeMarkInterceptOutcome(event);
|
|
103
84
|
}
|
|
85
|
+
// KB 采纳 telemetry(decision 148f7a0a):主动 KB MCP 调用 = 本会话先前
|
|
86
|
+
// 注入的 KB 被「采纳」的代理信号。盖章同会话所有未标记的 ':kb' 注入行。
|
|
87
|
+
if (this.storage && event.tool_name.startsWith(KB_MCP_TOOL_PREFIX)) {
|
|
88
|
+
this.maybeMarkKbAdoption(event);
|
|
89
|
+
}
|
|
90
|
+
// LOOP HINT 采纳 telemetry(decision e7d13697):本会话实际 `cf loop run`
|
|
91
|
+
// = 采纳了先前 mint 的 `[LOOP HINT]` 建议。盖章同会话未标记的 loop-hint 行。
|
|
92
|
+
if (this.storage && event.tool_name === 'Bash') {
|
|
93
|
+
this.maybeMarkLoopHintAdoption(event);
|
|
94
|
+
}
|
|
104
95
|
return { allow: true };
|
|
105
96
|
}
|
|
97
|
+
/**
|
|
98
|
+
* LOOP HINT adoption back-fill (decision e7d13697, Option C). When the main
|
|
99
|
+
* thread (or an agent) actually runs `cf loop run` in this session, stamp
|
|
100
|
+
* every not-yet-stamped `[LOOP HINT]` injection row of the session with
|
|
101
|
+
* `adopted_at = now`. This is the write side of the "建议的 loop 被采纳没"
|
|
102
|
+
* telemetry — the OQ5 hard requirement that lets us later judge
|
|
103
|
+
* keep-vs-remove. Read side is a single SQL (countLoopHintAdoption).
|
|
104
|
+
*
|
|
105
|
+
* The daemon is ONLY observing here — it never launches `cf loop run` itself
|
|
106
|
+
* (advisory-only invariant). Silently swallows errors — observability,
|
|
107
|
+
* never a blocker.
|
|
108
|
+
*/
|
|
109
|
+
maybeMarkLoopHintAdoption(event) {
|
|
110
|
+
if (!this.storage)
|
|
111
|
+
return;
|
|
112
|
+
try {
|
|
113
|
+
const cmd = event.tool_input?.command;
|
|
114
|
+
if (typeof cmd !== 'string' || !LOOP_RUN_COMMAND_RE.test(cmd))
|
|
115
|
+
return;
|
|
116
|
+
const stamped = this.storage.writeLoopHintAdoption(event.session_id, Date.now());
|
|
117
|
+
if (stamped > 0) {
|
|
118
|
+
logger.debug(`[PostToolUse] loop-hint adoption: stamped ${stamped} injection row(s) for session ${event.session_id}`);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
catch (err) {
|
|
122
|
+
logger.debug(`[PostToolUse] maybeMarkLoopHintAdoption failed: ${err}`);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* KB adoption back-fill (decision 148f7a0a). When the main thread (or an
|
|
127
|
+
* agent in the same session) actively calls a KB MCP tool
|
|
128
|
+
* (`mcp__claude-forge__knowledge*`), stamp every not-yet-stamped KB
|
|
129
|
+
* injection row of this session with `adopted_at = now`. This is the
|
|
130
|
+
* write side of the "注入的 KB 被用了没" telemetry — read side is a single
|
|
131
|
+
* SQL over injections (adopted/total, source_handler LIKE '%:kb').
|
|
132
|
+
*
|
|
133
|
+
* Silently swallows errors — telemetry is observability, never a blocker.
|
|
134
|
+
*/
|
|
135
|
+
maybeMarkKbAdoption(event) {
|
|
136
|
+
if (!this.storage)
|
|
137
|
+
return;
|
|
138
|
+
try {
|
|
139
|
+
const stamped = this.storage.writeKbInjectionAdoption(event.session_id, Date.now());
|
|
140
|
+
if (stamped > 0) {
|
|
141
|
+
logger.debug(`[PostToolUse] KB adoption: stamped ${stamped} injection row(s) for session ${event.session_id} (tool=${event.tool_name})`);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
catch (err) {
|
|
145
|
+
logger.debug(`[PostToolUse] maybeMarkKbAdoption failed: ${err}`);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
106
148
|
/**
|
|
107
149
|
* audit F4 back-fill (KPI relax: dry_run also back-filled). Pipeline:
|
|
108
150
|
* 1. Query last 30s of `deny` + `dry_run` intercepts for this session.
|
|
@@ -199,68 +241,6 @@ export class PostToolUseHandler {
|
|
|
199
241
|
logger.warn(`[PostToolUse] experience writeback failed: ${err}`);
|
|
200
242
|
}
|
|
201
243
|
}
|
|
202
|
-
/**
|
|
203
|
-
* Phase 5 outcome marking. Pipeline:
|
|
204
|
-
* 1. Find the most recent PENDING workflow_recommendations row for the
|
|
205
|
-
* session within the 5 min window. Return early if none.
|
|
206
|
-
* 2. Extract bypass token from Task description / prompt.
|
|
207
|
-
* Token present → mark 'bypassed'.
|
|
208
|
-
* 3. Else compare subagent_type vs recommended_agent_type.
|
|
209
|
-
* Match → 'accepted'. Mismatch → leave pending (PreToolUseHandler
|
|
210
|
-
* should already have denied unless the user supplied bypass; we
|
|
211
|
-
* don't want to mark mismatched-without-bypass as anything other
|
|
212
|
-
* than ignored/Stop-handler's job).
|
|
213
|
-
*
|
|
214
|
-
* Silently swallows storage errors — outcome marking is observability,
|
|
215
|
-
* not a request-blocker.
|
|
216
|
-
*/
|
|
217
|
-
markWorkflowRecOutcome(event) {
|
|
218
|
-
if (!this.storage)
|
|
219
|
-
return;
|
|
220
|
-
try {
|
|
221
|
-
const sinceIso = new Date(Date.now() - WORKFLOW_REC_WINDOW_MS).toISOString();
|
|
222
|
-
const pending = this.storage.queryWorkflowRecommendations({
|
|
223
|
-
session_id: event.session_id,
|
|
224
|
-
outcome: 'pending',
|
|
225
|
-
since: sinceIso,
|
|
226
|
-
limit: 1,
|
|
227
|
-
});
|
|
228
|
-
if (pending.length === 0)
|
|
229
|
-
return;
|
|
230
|
-
const rec = pending[0];
|
|
231
|
-
const spawnedType = getSubagentType(event) ?? '';
|
|
232
|
-
const bypassToken = extractBypassToken(event.tool_input);
|
|
233
|
-
if (bypassToken !== null) {
|
|
234
|
-
this.storage.updateWorkflowRecommendationOutcome(rec.id, 'bypassed', event.timestamp);
|
|
235
|
-
logger.info(`[PostToolUse] workflow_rec ${rec.id} → bypassed (token="${bypassToken || '<no-reason>'}", spawned=${spawnedType})`);
|
|
236
|
-
return;
|
|
237
|
-
}
|
|
238
|
-
if (spawnedType && spawnedType === rec.recommended_agent_type) {
|
|
239
|
-
this.storage.updateWorkflowRecommendationOutcome(rec.id, 'accepted', event.timestamp);
|
|
240
|
-
logger.info(`[PostToolUse] workflow_rec ${rec.id} → accepted (spawned=${spawnedType})`);
|
|
241
|
-
return;
|
|
242
|
-
}
|
|
243
|
-
// KPI C8 relax: main thread spawned a recognised subagent_type that just
|
|
244
|
-
// isn't the recommended one (e.g. `coder` instead of `refactor-specialist`,
|
|
245
|
-
// `general-purpose` instead of `harness-hotfix`). That's a real "tried to
|
|
246
|
-
// comply" signal — mark `partial_accepted` so C8 captures it at weight
|
|
247
|
-
// 0.5. We deliberately scope this to the KNOWN_AGENT_TYPES allow-list to
|
|
248
|
-
// protect against fabricated/typo subagent names polluting the bucket.
|
|
249
|
-
if (spawnedType && KNOWN_AGENT_TYPES.has(spawnedType)) {
|
|
250
|
-
this.storage.updateWorkflowRecommendationOutcome(rec.id, 'partial_accepted', event.timestamp);
|
|
251
|
-
logger.info(`[PostToolUse] workflow_rec ${rec.id} → partial_accepted (spawned=${spawnedType}, recommended=${rec.recommended_agent_type})`);
|
|
252
|
-
return;
|
|
253
|
-
}
|
|
254
|
-
// Mismatch w/o bypass and unrecognised type: in strict mode PreToolUse
|
|
255
|
-
// should have denied. If we got here, either flag was OFF or the deny was
|
|
256
|
-
// bypassed out-of-band; leave the row pending so Stop handler can mark
|
|
257
|
-
// ignored.
|
|
258
|
-
logger.debug(`[PostToolUse] workflow_rec ${rec.id} mismatch — spawned=${spawnedType} vs recommended=${rec.recommended_agent_type}; leaving pending`);
|
|
259
|
-
}
|
|
260
|
-
catch (err) {
|
|
261
|
-
logger.debug(`[PostToolUse] markWorkflowRecOutcome failed: ${err}`);
|
|
262
|
-
}
|
|
263
|
-
}
|
|
264
244
|
}
|
|
265
245
|
/**
|
|
266
246
|
* Resolve the target file path of a Write/Edit tool invocation.
|
|
@@ -278,24 +258,4 @@ function pickFilePath(input) {
|
|
|
278
258
|
}
|
|
279
259
|
return null;
|
|
280
260
|
}
|
|
281
|
-
/**
|
|
282
|
-
* Extract `forge:bypass=<reason>` token from any string field in the Task
|
|
283
|
-
* tool input. Returns the reason (may be empty string) or null when no token.
|
|
284
|
-
*/
|
|
285
|
-
function extractBypassToken(input) {
|
|
286
|
-
if (!input)
|
|
287
|
-
return null;
|
|
288
|
-
const candidates = [];
|
|
289
|
-
for (const key of ['description', 'prompt', 'subagent_type', 'name']) {
|
|
290
|
-
const v = input[key];
|
|
291
|
-
if (typeof v === 'string')
|
|
292
|
-
candidates.push(v);
|
|
293
|
-
}
|
|
294
|
-
for (const c of candidates) {
|
|
295
|
-
const m = c.match(BYPASS_PATTERN);
|
|
296
|
-
if (m)
|
|
297
|
-
return m[1] ?? '';
|
|
298
|
-
}
|
|
299
|
-
return null;
|
|
300
|
-
}
|
|
301
261
|
//# sourceMappingURL=post-tool-use.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"post-tool-use.js","sourceRoot":"","sources":["../../../src/daemon/handlers/post-tool-use.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,IAAI,MAAM,WAAW,CAAC;AAK7B,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EACL,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,
|
|
1
|
+
{"version":3,"file":"post-tool-use.js","sourceRoot":"","sources":["../../../src/daemon/handlers/post-tool-use.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
* PreToolUseHandler — Phase 1 strict-mode rule engine + dry_run shim.
|
|
3
3
|
*
|
|
4
4
|
* Pipeline per event:
|
|
5
|
-
* 1. Build RuleContext (recent_agent_spawn, edited_files,
|
|
5
|
+
* 1. Build RuleContext (recent_agent_spawn, active_agent_depth, edited_files,
|
|
6
|
+
* recent_prompt).
|
|
6
7
|
* 2. Detect explicit bypass marker (`forge:bypass=<reason>`) in tool input.
|
|
7
8
|
* 3. Find the first matching ToolInterceptRule from RuleRegistry.
|
|
8
9
|
* 4. Decide & persist:
|
|
@@ -43,21 +44,18 @@ export declare class PreToolUseHandler {
|
|
|
43
44
|
handle(event: PreToolUseEvent): Promise<HookResponse>;
|
|
44
45
|
private isFlagEnabled;
|
|
45
46
|
private buildContext;
|
|
47
|
+
/**
|
|
48
|
+
* f47c2c90 (2026-06-17): probe `inline_edit_no_spawn.enabled`. Default false
|
|
49
|
+
* (gray-rollout OFF). Storage / config failures degrade to `false` (fail-safe
|
|
50
|
+
* — keep the rule dormant; warn-only rule never blocks anyway).
|
|
51
|
+
*/
|
|
52
|
+
private probeInlineEditNoSpawn;
|
|
46
53
|
/**
|
|
47
54
|
* v9.x Phase 2 (2026-05-26): probe `question_default_bmad.enforce`. Default
|
|
48
55
|
* false during the 7-day dry_run window starting 2026-05-26. Storage /
|
|
49
56
|
* config failures degrade to `false` (fail-safe — keep dry_run behaviour).
|
|
50
57
|
*/
|
|
51
58
|
private probeQuestionDefaultBmadEnforce;
|
|
52
|
-
/**
|
|
53
|
-
* Phase 5: load the most recent PENDING workflow recommendation for the
|
|
54
|
-
* session so the `workflow-recommendation-mismatch` rule can fire without
|
|
55
|
-
* doing its own DB lookup. Returns null when:
|
|
56
|
-
* • Phase 5 feature flag is OFF (no row should be enforced)
|
|
57
|
-
* • no pending row exists
|
|
58
|
-
* • lookup throws (degrade silently to "no enforcement")
|
|
59
|
-
*/
|
|
60
|
-
private fetchPendingWorkflowRec;
|
|
61
59
|
/**
|
|
62
60
|
* Distinct file_paths edited in PostToolUse Edit/Write events for the session.
|
|
63
61
|
*
|
|
@@ -106,6 +104,33 @@ export declare class PreToolUseHandler {
|
|
|
106
104
|
* spawn events than the prior 30s window.
|
|
107
105
|
*/
|
|
108
106
|
private detectRecentAgentSpawn;
|
|
107
|
+
/**
|
|
108
|
+
* Audit #4 fix (2026-06-09): compute the number of sub-agents currently
|
|
109
|
+
* IN-FLIGHT for the session (agent-depth).
|
|
110
|
+
*
|
|
111
|
+
* Claude Code sub-agents SHARE the main thread's `session_id`, so a spawned
|
|
112
|
+
* `coder` editing 3+ files (its authorized job) trips the session-level
|
|
113
|
+
* multi-file HARD threshold even though the main thread never edited a file.
|
|
114
|
+
* The 6 audited deny rows were all this false-positive class.
|
|
115
|
+
*
|
|
116
|
+
* Pure daemon-side signal — NO hook (.sh) change required, because the daemon
|
|
117
|
+
* already receives both ends of the Task lifecycle:
|
|
118
|
+
* • PreToolUse tool_name='Task'/'Agent' → a sub-agent was SPAWNED (+1)
|
|
119
|
+
* • PostToolUse tool_name='Task'/'Agent' → that sub-agent COMPLETED (-1)
|
|
120
|
+
*
|
|
121
|
+
* depth = max(0, #spawns − #completions). `depth >= 1` means at least one
|
|
122
|
+
* authorized sub-agent is running right now → the multi-file HARD rule
|
|
123
|
+
* exempts the session (the edits are the agent's legitimate work).
|
|
124
|
+
*
|
|
125
|
+
* Scanning is capped + degrades to 0 on any failure (fail-OPEN toward the
|
|
126
|
+
* legacy threshold behaviour, never breaks the tool pipeline).
|
|
127
|
+
*
|
|
128
|
+
* NOTE: this intentionally does NOT use a tight time window. A long-running
|
|
129
|
+
* `coder` can run well past the 5-min `recent_agent_spawn` window; as long as
|
|
130
|
+
* its PostToolUse completion has not yet arrived, depth stays ≥1 and its
|
|
131
|
+
* edits remain exempt. The PostToolUse decrement is what closes the window.
|
|
132
|
+
*/
|
|
133
|
+
private computeActiveAgentDepth;
|
|
109
134
|
/** Most-recent UserPromptSubmit prompt text (best-effort, used for intent relaxation). */
|
|
110
135
|
private fetchRecentPrompt;
|
|
111
136
|
private persistIntercept;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pre-tool-use.d.ts","sourceRoot":"","sources":["../../../src/daemon/handlers/pre-tool-use.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"pre-tool-use.d.ts","sourceRoot":"","sources":["../../../src/daemon/handlers/pre-tool-use.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAmB,MAAM,qBAAqB,CAAC;AAC5E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AAoDjF,qBAAa,iBAAiB;IAU1B,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,QAAQ;IAXlB;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAiD;IAElF,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAyB;gBAG7C,OAAO,EAAE,aAAa,EACtB,WAAW,EAAE,WAAW,EACxB,QAAQ,GAAE,YAAiC,EACnD,aAAa,CAAC,EAAE,sBAAsB;IAKxC;;;OAGG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAI/B,MAAM,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,YAAY,CAAC;IA2I3D,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,YAAY;IAwBpB;;;;OAIG;IACH,OAAO,CAAC,sBAAsB;IAS9B;;;;OAIG;IACH,OAAO,CAAC,+BAA+B;IASvC;;;;;;;;;OASG;IACH,OAAO,CAAC,kBAAkB;IAI1B;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,wBAAwB;IA4ChC;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IAoBtB;;;;;;;;;;;;;;;OAeG;IACH,OAAO,CAAC,sBAAsB;IAoB9B;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,OAAO,CAAC,uBAAuB;IAqB/B,0FAA0F;IAC1F,OAAO,CAAC,iBAAiB;IAgBzB,OAAO,CAAC,gBAAgB;CAyBzB;AA2BD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH;;;;;;;;;GASG;AACH,eAAO,MAAM,yBAAyB,EAAE,KAAK,CAAC;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,OAAO,CAAC;CACnB,CAwBA,CAAC;AAEF;;;GAGG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAQ/C"}
|