@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
|
@@ -8,7 +8,6 @@
|
|
|
8
8
|
*
|
|
9
9
|
* Scope: pure read-only aggregates over already-written fact tables
|
|
10
10
|
* • tool_intercepts (intercept obeyed ratio, top noisy rules)
|
|
11
|
-
* • workflow_recommendations (C8 weighted accepted ratio, per-rule rollup)
|
|
12
11
|
* • injections (KB) (kb_inject_count, metadata_json scan)
|
|
13
12
|
* • skill_invocations (skill_top + skill rollup)
|
|
14
13
|
* • sessions (outcome distribution)
|
|
@@ -36,14 +35,22 @@ export class FeedbackOperations {
|
|
|
36
35
|
* `cli/commands/insights-goal-check.ts`. `override_count` is still
|
|
37
36
|
* reported separately so the web dashboard can surface the raw counter.
|
|
38
37
|
*/
|
|
39
|
-
queryInterceptObeyedSummary(sinceIso) {
|
|
38
|
+
queryInterceptObeyedSummary(sinceIso, projectPath) {
|
|
39
|
+
// decision 39839e30 (2026-06-13): optional per-project scope for the
|
|
40
|
+
// workplace 听劝率 KPI. tool_intercepts carries project_path directly →
|
|
41
|
+
// an additive `AND project_path = ?`. Omitting projectPath preserves the
|
|
42
|
+
// exact legacy all-projects aggregate (no clause appended).
|
|
43
|
+
const projClause = projectPath ? 'AND project_path = ?' : '';
|
|
44
|
+
const params = [sinceIso];
|
|
45
|
+
if (projectPath)
|
|
46
|
+
params.push(projectPath);
|
|
40
47
|
const row = this.db
|
|
41
48
|
.prepare(`SELECT
|
|
42
49
|
1.0 * SUM(CASE WHEN decision='deny' AND outcome='obeyed' THEN 1 ELSE 0 END) /
|
|
43
50
|
NULLIF(SUM(CASE WHEN decision='deny' AND outcome IN ('obeyed','override') THEN 1 ELSE 0 END), 0) AS r,
|
|
44
51
|
SUM(CASE WHEN decision='deny' AND outcome='override' THEN 1 ELSE 0 END) AS overrides
|
|
45
|
-
FROM tool_intercepts WHERE timestamp >=
|
|
46
|
-
.get(
|
|
52
|
+
FROM tool_intercepts WHERE timestamp >= ? ${projClause}`)
|
|
53
|
+
.get(...params);
|
|
47
54
|
return {
|
|
48
55
|
ratio: row?.r ?? 0,
|
|
49
56
|
override_count: row?.overrides ?? 0,
|
|
@@ -96,39 +103,23 @@ export class FeedbackOperations {
|
|
|
96
103
|
GROUP BY rule_id`)
|
|
97
104
|
.all(sinceIso);
|
|
98
105
|
}
|
|
99
|
-
// ── workflow_recommendations ───────────────────────────────────────────
|
|
100
|
-
/**
|
|
101
|
-
* C8 — weighted accepted ratio over `workflow_recommendations` since
|
|
102
|
-
* `sinceIso`. Weighting: accepted=1.0, partial_accepted=0.5,
|
|
103
|
-
* rejected/bypassed/ignored=0. `pending` rows excluded from denominator.
|
|
104
|
-
*/
|
|
105
|
-
queryWorkflowAcceptanceSummary(sinceIso) {
|
|
106
|
-
const row = this.db
|
|
107
|
-
.prepare(`SELECT 1.0 * (
|
|
108
|
-
SUM(CASE WHEN outcome='accepted' THEN 1 ELSE 0 END) * 1.0
|
|
109
|
-
+ SUM(CASE WHEN outcome='partial_accepted' THEN 1 ELSE 0 END) * 0.5
|
|
110
|
-
) / NULLIF(SUM(CASE WHEN outcome IS NOT NULL AND outcome <> 'pending' THEN 1 ELSE 0 END), 0) AS r
|
|
111
|
-
FROM workflow_recommendations WHERE timestamp >= ?`)
|
|
112
|
-
.get(sinceIso);
|
|
113
|
-
return { ratio: row?.r ?? 0 };
|
|
114
|
-
}
|
|
115
|
-
/** Per-rule workflow recommendation outcome aggregates. */
|
|
116
|
-
queryWorkflowRuleAggregates(sinceIso) {
|
|
117
|
-
return this.db
|
|
118
|
-
.prepare(`SELECT
|
|
119
|
-
rule_id,
|
|
120
|
-
COUNT(*) AS fires,
|
|
121
|
-
SUM(CASE WHEN outcome='accepted' THEN 1 ELSE 0 END) AS accepted,
|
|
122
|
-
SUM(CASE WHEN outcome='partial_accepted' THEN 1 ELSE 0 END) AS partial,
|
|
123
|
-
SUM(CASE WHEN outcome='rejected' THEN 1 ELSE 0 END) AS rejected
|
|
124
|
-
FROM workflow_recommendations
|
|
125
|
-
WHERE timestamp >= ?
|
|
126
|
-
GROUP BY rule_id`)
|
|
127
|
-
.all(sinceIso);
|
|
128
|
-
}
|
|
129
106
|
// ── KB injections ──────────────────────────────────────────────────────
|
|
130
107
|
/** C1 — total KB injection rows in window. */
|
|
131
|
-
countKbInjections(sinceIso) {
|
|
108
|
+
countKbInjections(sinceIso, projectPath) {
|
|
109
|
+
// decision 39839e30 (2026-06-13): optional per-project scope for the
|
|
110
|
+
// workplace KB注入 KPI. injections has NO project_path column — it is
|
|
111
|
+
// joined to sessions on session_id to recover the project. Omitting
|
|
112
|
+
// projectPath preserves the exact legacy un-joined COUNT (no JOIN added).
|
|
113
|
+
if (projectPath) {
|
|
114
|
+
const row = this.db
|
|
115
|
+
.prepare(`SELECT COUNT(*) AS n FROM injections i
|
|
116
|
+
JOIN sessions s ON s.session_id = i.session_id
|
|
117
|
+
WHERE i.source_handler = 'UserPromptSubmitHandler:kb'
|
|
118
|
+
AND i.timestamp >= ?
|
|
119
|
+
AND s.project_path = ?`)
|
|
120
|
+
.get(sinceIso, projectPath);
|
|
121
|
+
return row?.n ?? 0;
|
|
122
|
+
}
|
|
132
123
|
const row = this.db
|
|
133
124
|
.prepare(`SELECT COUNT(*) AS n FROM injections
|
|
134
125
|
WHERE source_handler = 'UserPromptSubmitHandler:kb' AND timestamp >= ?`)
|
|
@@ -175,13 +166,21 @@ export class FeedbackOperations {
|
|
|
175
166
|
* Distribution of session outcomes for rows whose
|
|
176
167
|
* COALESCE(classified_at, start_time) >= sinceIso.
|
|
177
168
|
*/
|
|
178
|
-
querySessionOutcomeDistribution(sinceIso) {
|
|
169
|
+
querySessionOutcomeDistribution(sinceIso, projectPath) {
|
|
170
|
+
// decision 39839e30 (2026-06-13): optional per-project scope for the
|
|
171
|
+
// workplace 结果分布 KPI. sessions carries project_path directly → an
|
|
172
|
+
// additive `AND project_path = ?`. Omitting projectPath preserves the
|
|
173
|
+
// exact legacy all-projects distribution.
|
|
174
|
+
const projClause = projectPath ? 'AND project_path = ?' : '';
|
|
175
|
+
const params = [sinceIso];
|
|
176
|
+
if (projectPath)
|
|
177
|
+
params.push(projectPath);
|
|
179
178
|
return this.db
|
|
180
179
|
.prepare(`SELECT COALESCE(outcome, 'unclassified') AS o, COUNT(*) AS n
|
|
181
180
|
FROM sessions
|
|
182
|
-
WHERE COALESCE(classified_at, start_time) >= ?
|
|
181
|
+
WHERE COALESCE(classified_at, start_time) >= ? ${projClause}
|
|
183
182
|
GROUP BY o`)
|
|
184
|
-
.all(
|
|
183
|
+
.all(...params);
|
|
185
184
|
}
|
|
186
185
|
}
|
|
187
186
|
//# sourceMappingURL=feedback.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feedback.js","sourceRoot":"","sources":["../../../src/core/storage/feedback.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"feedback.js","sourceRoot":"","sources":["../../../src/core/storage/feedback.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAyDH,MAAM,OAAO,kBAAkB;IACT;IAApB,YAAoB,EAAqB;QAArB,OAAE,GAAF,EAAE,CAAmB;IAAG,CAAC;IAE7C,0EAA0E;IAE1E;;;;;;;;;;;OAWG;IACH,2BAA2B,CAAC,QAAgB,EAAE,WAAoB;QAChE,qEAAqE;QACrE,qEAAqE;QACrE,yEAAyE;QACzE,4DAA4D;QAC5D,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7D,MAAM,MAAM,GAAc,CAAC,QAAQ,CAAC,CAAC;QACrC,IAAI,WAAW;YAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE;aAChB,OAAO,CACN;;;;qDAI6C,UAAU,EAAE,CAC1D;aACA,GAAG,CAAC,GAAG,MAAM,CAA+D,CAAC;QAChF,OAAO;YACL,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC;YAClB,cAAc,EAAE,GAAG,EAAE,SAAS,IAAI,CAAC;SACpC,CAAC;IACJ,CAAC;IAED,mDAAmD;IACnD,+BAA+B,CAAC,QAAgB,EAAE,KAAK,GAAG,EAAE;QAC1D,OAAO,IAAI,CAAC,EAAE;aACX,OAAO,CACN;;kDAE0C,CAC3C;aACA,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAyB,CAAC;IAClD,CAAC;IAED;;;;;OAKG;IACH,4BAA4B,CAAC,QAAgB;QAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;aACjB,OAAO,CACN;;;2BAGmB,CACpB;aACA,GAAG,CAAC,QAAQ,CAA2C,CAAC;QAC3D,MAAM,GAAG,GAA+B,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QACtF,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YACrB,IAAI,CAAC,CAAC,QAAQ,KAAK,MAAM;gBAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;iBACvC,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS;gBAAE,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;iBAChD,IAAI,CAAC,CAAC,QAAQ,KAAK,MAAM;gBAAE,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;iBAC1C,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ;gBAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;QACrD,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,gFAAgF;IAChF,4BAA4B,CAAC,QAAgB;QAC3C,OAAO,IAAI,CAAC,EAAE;aACX,OAAO,CACN;;;;;;;0BAOkB,CACnB;aACA,GAAG,CAAC,QAAQ,CAA6B,CAAC;IAC/C,CAAC;IAED,0EAA0E;IAE1E,8CAA8C;IAC9C,iBAAiB,CAAC,QAAgB,EAAE,WAAoB;QACtD,qEAAqE;QACrE,oEAAoE;QACpE,oEAAoE;QACpE,0EAA0E;QAC1E,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE;iBAChB,OAAO,CACN;;;;oCAI0B,CAC3B;iBACA,GAAG,CAAC,QAAQ,EAAE,WAAW,CAA8B,CAAC;YAC3D,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE;aAChB,OAAO,CACN;gFACwE,CACzE;aACA,GAAG,CAAC,QAAQ,CAA8B,CAAC;QAC9C,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC;IAED;;;;OAIG;IACH,wBAAwB,CAAC,QAAgB;QACvC,OAAO,IAAI,CAAC,EAAE;aACX,OAAO,CACN;;;8BAGsB,CACvB;aACA,GAAG,CAAC,QAAQ,CAA6B,CAAC;IAC/C,CAAC;IAED,0EAA0E;IAE1E,kEAAkE;IAClE,wBAAwB,CAAC,WAAmB,EAAE,KAAK,GAAG,EAAE;QACtD,OAAO,IAAI,CAAC,EAAE;aACX,OAAO,CACN;;;mDAG2C,CAC5C;aACA,GAAG,CAAC,WAAW,EAAE,KAAK,CAAkB,CAAC;IAC9C,CAAC;IAED,oEAAoE;IACpE,oBAAoB,CAAC,WAAmB;QACtC,OAAO,IAAI,CAAC,EAAE;aACX,OAAO,CACN;;;;;;2BAMmB,CACpB;aACA,GAAG,CAAC,WAAW,CAAqB,CAAC;IAC1C,CAAC;IAED,0EAA0E;IAE1E;;;OAGG;IACH,+BAA+B,CAAC,QAAgB,EAAE,WAAoB;QACpE,qEAAqE;QACrE,kEAAkE;QAClE,sEAAsE;QACtE,0CAA0C;QAC1C,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7D,MAAM,MAAM,GAAc,CAAC,QAAQ,CAAC,CAAC;QACrC,IAAI,WAAW;YAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC1C,OAAO,IAAI,CAAC,EAAE;aACX,OAAO,CACN;;0DAEkD,UAAU;oBAChD,CACb;aACA,GAAG,CAAC,GAAG,MAAM,CAAwB,CAAC;IAC3C,CAAC;CACF"}
|
|
@@ -28,6 +28,46 @@ export declare class InjectionOperations {
|
|
|
28
28
|
private readonly writeInjectionStmt;
|
|
29
29
|
constructor(db: Database.Database);
|
|
30
30
|
writeInjection(injection: Injection): void;
|
|
31
|
+
/**
|
|
32
|
+
* KB 采纳 telemetry(decision 148f7a0a):把同一 session 中所有 KB 注入行
|
|
33
|
+
* (source_handler LIKE '%:kb')里尚未标记的(adopted_at IS NULL)盖上
|
|
34
|
+
* 采纳时间戳。由 PostToolUse handler 在观察到主动 KB MCP 调用
|
|
35
|
+
* (tool_name 以 'mcp__claude-forge__knowledge' 开头)时调用。
|
|
36
|
+
*
|
|
37
|
+
* 只标记未标记行 —— 同会话第二次 KB 调用不会覆盖首次采纳时间。
|
|
38
|
+
* 返回受影响行数(0 = 该会话无待标记的 KB 注入)。
|
|
39
|
+
*/
|
|
40
|
+
writeKbInjectionAdoption(session_id: string, adopted_at: number): number;
|
|
41
|
+
/**
|
|
42
|
+
* KB 采纳率读路径(decision 148f7a0a):近 N 天 KB 注入总数 vs 已被采纳
|
|
43
|
+
* (adopted_at 非 NULL)条数。`cf stats` 用它输出一行采纳率。
|
|
44
|
+
*/
|
|
45
|
+
countKbAdoption(sinceIso: string): {
|
|
46
|
+
total: number;
|
|
47
|
+
adopted: number;
|
|
48
|
+
};
|
|
49
|
+
/**
|
|
50
|
+
* LOOP HINT 采纳 telemetry(decision e7d13697, 2026-06-11, Option C):
|
|
51
|
+
* 把同一 session 中所有 `[LOOP HINT]` 注入行(source_handler =
|
|
52
|
+
* 'UserPromptSubmitHandler:loop-hint')里尚未标记的(adopted_at IS NULL)
|
|
53
|
+
* 盖上采纳时间戳。由 PostToolUse handler 在观察到本会话实际运行
|
|
54
|
+
* `cf loop run`(Bash 工具调用,命令含 'loop run')时调用——这是「主线程
|
|
55
|
+
* 采纳了 loop 建议」的可观测信号。
|
|
56
|
+
*
|
|
57
|
+
* 完全复用 KB 采纳的 `injections` + `adopted_at` 机制(decision 148f7a0a),
|
|
58
|
+
* 只换 source_handler 前缀。只标记未标记行——同会话第二次 `cf loop run` 不会
|
|
59
|
+
* 覆盖首次采纳时间。返回受影响行数(0 = 该会话无待标记的 loop-hint 注入)。
|
|
60
|
+
*/
|
|
61
|
+
writeLoopHintAdoption(session_id: string, adopted_at: number): number;
|
|
62
|
+
/**
|
|
63
|
+
* LOOP HINT 采纳率读路径(decision e7d13697):近 N 天 loop-hint 注入总数 vs
|
|
64
|
+
* 已被采纳(adopted_at 非 NULL)条数。让我们日后据真实采纳率判 keep-vs-remove
|
|
65
|
+
* (Option C 之所以选过 D 的全部理由)。镜像 countKbAdoption。
|
|
66
|
+
*/
|
|
67
|
+
countLoopHintAdoption(sinceIso: string): {
|
|
68
|
+
total: number;
|
|
69
|
+
adopted: number;
|
|
70
|
+
};
|
|
31
71
|
/**
|
|
32
72
|
* Phase 2 metrics rollup: count injection rows for one session, optionally
|
|
33
73
|
* scoped to a specific source_handler (e.g. 'UserPromptSubmitHandler:kb' to
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"injections.d.ts","sourceRoot":"","sources":["../../../src/core/storage/injections.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAG3C,MAAM,WAAW,SAAS;IACxB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,eAAe,GAAG,mBAAmB,GAAG,QAAQ,CAAC;IACjE,OAAO,EAAE,MAAM,CAAC;IAChB;;;;;;;;OAQG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAYD,qBAAa,mBAAmB;IAGlB,OAAO,CAAC,EAAE;IAFtB,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAqB;gBAEpC,EAAE,EAAE,QAAQ,CAAC,QAAQ;IAOzC,cAAc,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI;IAc1C;;;;;;OAMG;IACH,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM;IAenE;;;;;;;OAOG;IACH,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE;IAmBlD,eAAe,CAAC,MAAM,GAAE;QACtB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,KAAK,CAAC,EAAE,MAAM,CAAC;KACX,GAAG,SAAS,EAAE;CAkCrB"}
|
|
1
|
+
{"version":3,"file":"injections.d.ts","sourceRoot":"","sources":["../../../src/core/storage/injections.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAG3C,MAAM,WAAW,SAAS;IACxB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,eAAe,GAAG,mBAAmB,GAAG,QAAQ,CAAC;IACjE,OAAO,EAAE,MAAM,CAAC;IAChB;;;;;;;;OAQG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAYD,qBAAa,mBAAmB;IAGlB,OAAO,CAAC,EAAE;IAFtB,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAqB;gBAEpC,EAAE,EAAE,QAAQ,CAAC,QAAQ;IAOzC,cAAc,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI;IAc1C;;;;;;;;OAQG;IACH,wBAAwB,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM;IAaxE;;;OAGG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;IAYrE;;;;;;;;;;;OAWG;IACH,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM;IAarE;;;;OAIG;IACH,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;IAa3E;;;;;;OAMG;IACH,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM;IAenE;;;;;;;OAOG;IACH,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE;IAmBlD,eAAe,CAAC,MAAM,GAAE;QACtB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,KAAK,CAAC,EAAE,MAAM,CAAC;KACX,GAAG,SAAS,EAAE;CAkCrB"}
|
|
@@ -27,6 +27,75 @@ export class InjectionOperations {
|
|
|
27
27
|
const id = injection.id || randomUUID();
|
|
28
28
|
this.writeInjectionStmt.run(id, injection.event_id ?? null, injection.session_id, injection.timestamp, injection.source_handler, injection.injection_type, injection.content, injection.metadata_json ?? null);
|
|
29
29
|
}
|
|
30
|
+
/**
|
|
31
|
+
* KB 采纳 telemetry(decision 148f7a0a):把同一 session 中所有 KB 注入行
|
|
32
|
+
* (source_handler LIKE '%:kb')里尚未标记的(adopted_at IS NULL)盖上
|
|
33
|
+
* 采纳时间戳。由 PostToolUse handler 在观察到主动 KB MCP 调用
|
|
34
|
+
* (tool_name 以 'mcp__claude-forge__knowledge' 开头)时调用。
|
|
35
|
+
*
|
|
36
|
+
* 只标记未标记行 —— 同会话第二次 KB 调用不会覆盖首次采纳时间。
|
|
37
|
+
* 返回受影响行数(0 = 该会话无待标记的 KB 注入)。
|
|
38
|
+
*/
|
|
39
|
+
writeKbInjectionAdoption(session_id, adopted_at) {
|
|
40
|
+
const result = this.db
|
|
41
|
+
.prepare(`UPDATE injections
|
|
42
|
+
SET adopted_at = ?
|
|
43
|
+
WHERE session_id = ?
|
|
44
|
+
AND source_handler LIKE '%:kb'
|
|
45
|
+
AND adopted_at IS NULL`)
|
|
46
|
+
.run(adopted_at, session_id);
|
|
47
|
+
return result.changes;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* KB 采纳率读路径(decision 148f7a0a):近 N 天 KB 注入总数 vs 已被采纳
|
|
51
|
+
* (adopted_at 非 NULL)条数。`cf stats` 用它输出一行采纳率。
|
|
52
|
+
*/
|
|
53
|
+
countKbAdoption(sinceIso) {
|
|
54
|
+
const row = this.db
|
|
55
|
+
.prepare(`SELECT COUNT(*) AS total,
|
|
56
|
+
SUM(CASE WHEN adopted_at IS NOT NULL THEN 1 ELSE 0 END) AS adopted
|
|
57
|
+
FROM injections
|
|
58
|
+
WHERE source_handler LIKE '%:kb' AND timestamp >= ?`)
|
|
59
|
+
.get(sinceIso);
|
|
60
|
+
return { total: row?.total ?? 0, adopted: row?.adopted ?? 0 };
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* LOOP HINT 采纳 telemetry(decision e7d13697, 2026-06-11, Option C):
|
|
64
|
+
* 把同一 session 中所有 `[LOOP HINT]` 注入行(source_handler =
|
|
65
|
+
* 'UserPromptSubmitHandler:loop-hint')里尚未标记的(adopted_at IS NULL)
|
|
66
|
+
* 盖上采纳时间戳。由 PostToolUse handler 在观察到本会话实际运行
|
|
67
|
+
* `cf loop run`(Bash 工具调用,命令含 'loop run')时调用——这是「主线程
|
|
68
|
+
* 采纳了 loop 建议」的可观测信号。
|
|
69
|
+
*
|
|
70
|
+
* 完全复用 KB 采纳的 `injections` + `adopted_at` 机制(decision 148f7a0a),
|
|
71
|
+
* 只换 source_handler 前缀。只标记未标记行——同会话第二次 `cf loop run` 不会
|
|
72
|
+
* 覆盖首次采纳时间。返回受影响行数(0 = 该会话无待标记的 loop-hint 注入)。
|
|
73
|
+
*/
|
|
74
|
+
writeLoopHintAdoption(session_id, adopted_at) {
|
|
75
|
+
const result = this.db
|
|
76
|
+
.prepare(`UPDATE injections
|
|
77
|
+
SET adopted_at = ?
|
|
78
|
+
WHERE session_id = ?
|
|
79
|
+
AND source_handler = 'UserPromptSubmitHandler:loop-hint'
|
|
80
|
+
AND adopted_at IS NULL`)
|
|
81
|
+
.run(adopted_at, session_id);
|
|
82
|
+
return result.changes;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* LOOP HINT 采纳率读路径(decision e7d13697):近 N 天 loop-hint 注入总数 vs
|
|
86
|
+
* 已被采纳(adopted_at 非 NULL)条数。让我们日后据真实采纳率判 keep-vs-remove
|
|
87
|
+
* (Option C 之所以选过 D 的全部理由)。镜像 countKbAdoption。
|
|
88
|
+
*/
|
|
89
|
+
countLoopHintAdoption(sinceIso) {
|
|
90
|
+
const row = this.db
|
|
91
|
+
.prepare(`SELECT COUNT(*) AS total,
|
|
92
|
+
SUM(CASE WHEN adopted_at IS NOT NULL THEN 1 ELSE 0 END) AS adopted
|
|
93
|
+
FROM injections
|
|
94
|
+
WHERE source_handler = 'UserPromptSubmitHandler:loop-hint'
|
|
95
|
+
AND timestamp >= ?`)
|
|
96
|
+
.get(sinceIso);
|
|
97
|
+
return { total: row?.total ?? 0, adopted: row?.adopted ?? 0 };
|
|
98
|
+
}
|
|
30
99
|
/**
|
|
31
100
|
* Phase 2 metrics rollup: count injection rows for one session, optionally
|
|
32
101
|
* scoped to a specific source_handler (e.g. 'UserPromptSubmitHandler:kb' to
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"injections.js","sourceRoot":"","sources":["../../../src/core/storage/injections.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"injections.js","sourceRoot":"","sources":["../../../src/core/storage/injections.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,6 +25,52 @@ export interface KbQueryLogEntry {
|
|
|
25
25
|
ai_input_tokens?: number | null;
|
|
26
26
|
ai_output_tokens?: number | null;
|
|
27
27
|
duration_ms: number;
|
|
28
|
+
/**
|
|
29
|
+
* Attribution columns (decision d24cd3a2 Task B) — mirror skill_invocations.
|
|
30
|
+
* All nullable; legacy / daemon-auto rows leave them NULL.
|
|
31
|
+
* reason — verbatim caller-supplied reason (e.g. "coder/executing-plans"),
|
|
32
|
+
* so `reason LIKE 'coder/%'` follow-through SQL works.
|
|
33
|
+
* source — 'cli' (deliberate agent/operator pull) | 'daemon-probe'
|
|
34
|
+
* (automatic per-prompt kb-injector probe) | null (legacy).
|
|
35
|
+
* agent_id — session / agent id resolved by the CLI (sentinel fallback).
|
|
36
|
+
* workflow/phase — parseWorkflowMeta(reason) output for aggregation.
|
|
37
|
+
*/
|
|
38
|
+
reason?: string | null;
|
|
39
|
+
source?: string | null;
|
|
40
|
+
agent_id?: string | null;
|
|
41
|
+
workflow?: string | null;
|
|
42
|
+
phase?: string | null;
|
|
43
|
+
}
|
|
44
|
+
export interface KbQueryLogRow {
|
|
45
|
+
id: number;
|
|
46
|
+
ts: number;
|
|
47
|
+
project_path: string;
|
|
48
|
+
query: string;
|
|
49
|
+
result_count: number;
|
|
50
|
+
ai_call_count: number | null;
|
|
51
|
+
ai_input_tokens: number | null;
|
|
52
|
+
ai_output_tokens: number | null;
|
|
53
|
+
duration_ms: number;
|
|
54
|
+
reason: string | null;
|
|
55
|
+
source: string | null;
|
|
56
|
+
agent_id: string | null;
|
|
57
|
+
workflow: string | null;
|
|
58
|
+
phase: string | null;
|
|
59
|
+
/** Post-use usefulness self-assessment (decision 096309e4 ①), nullable. */
|
|
60
|
+
usefulness: string | null;
|
|
61
|
+
usefulness_note: string | null;
|
|
62
|
+
}
|
|
63
|
+
/** Per-workflow KB usefulness aggregation (decision 096309e4 ①). */
|
|
64
|
+
export interface KbUsefulnessRow {
|
|
65
|
+
/** Grouping key — the pulling workflow (coder/verify/...), 'unknown' if NULL. */
|
|
66
|
+
workflow: string;
|
|
67
|
+
total_rated: number;
|
|
68
|
+
helped: number;
|
|
69
|
+
partial: number;
|
|
70
|
+
not_actionable: number;
|
|
71
|
+
pending: number;
|
|
72
|
+
/** helped / total_rated (STRICT helped-only); 0 when nothing rated. */
|
|
73
|
+
actionable_rate: number;
|
|
28
74
|
}
|
|
29
75
|
export interface KbStatsRow {
|
|
30
76
|
total_queries: number;
|
|
@@ -56,6 +102,186 @@ export declare class KnowledgeOperations {
|
|
|
56
102
|
private db;
|
|
57
103
|
constructor(db: Database.Database);
|
|
58
104
|
writeKbQueryLog(entry: KbQueryLogEntry): void;
|
|
105
|
+
/**
|
|
106
|
+
* Read raw kb_query_log rows (decision d24cd3a2 Task B) — used by attribution
|
|
107
|
+
* analytics + tests to prove a deliberate `cf knowledge query` pull recorded
|
|
108
|
+
* its reason/source. Filterable by project_path; newest first.
|
|
109
|
+
*/
|
|
110
|
+
queryKbQueryLog(filter?: {
|
|
111
|
+
project_path?: string;
|
|
112
|
+
source?: string;
|
|
113
|
+
limit?: number;
|
|
114
|
+
}): KbQueryLogRow[];
|
|
115
|
+
/**
|
|
116
|
+
* Stamp `usefulness` + `usefulness_note` onto the SINGLE most-recent un-rated
|
|
117
|
+
* kb_query_log row matching `project_path` (+ optional `source`/`reason` filters
|
|
118
|
+
* and `agent_id`). Deterministic target rule: `ORDER BY ts DESC, id DESC LIMIT 1`
|
|
119
|
+
* inside a subquery so exactly one row is updated. Idempotent: only `usefulness
|
|
120
|
+
* IS NULL` rows are eligible, so re-running stamps the next-older un-rated pull
|
|
121
|
+
* (or affects 0 once all are rated). Returns rows-affected (0 = soft no-op,
|
|
122
|
+
* caller never treats it as an error).
|
|
123
|
+
*
|
|
124
|
+
* Default scoping is to deliberate agent pulls (`source='cli'`) so a feedback
|
|
125
|
+
* call never accidentally stamps a daemon-probe row; pass source=undefined to
|
|
126
|
+
* widen.
|
|
127
|
+
*/
|
|
128
|
+
writeKbUsefulness(args: {
|
|
129
|
+
project_path: string;
|
|
130
|
+
usefulness: string;
|
|
131
|
+
note?: string | null;
|
|
132
|
+
source?: string | null;
|
|
133
|
+
agent_id?: string | null;
|
|
134
|
+
reasonPrefix?: string | null;
|
|
135
|
+
sinceMs?: number;
|
|
136
|
+
}): number;
|
|
137
|
+
/**
|
|
138
|
+
* Per-workflow KB usefulness aggregation — answers "is the KB content agents
|
|
139
|
+
* pull actually helping, and for which roles?". GROUP BY workflow over rows
|
|
140
|
+
* that HAVE a usefulness rating. `actionable_rate = helped / total_rated`
|
|
141
|
+
* (STRICT helped-only). Un-rated pulls counted as `pending` (NOT in rate
|
|
142
|
+
* denominator). Sorted worst actionable_rate FIRST (least-useful surface for
|
|
143
|
+
* refinement); ties broken by higher total_rated. ts is INTEGER ms.
|
|
144
|
+
*/
|
|
145
|
+
aggregateKbUsefulness(filter?: {
|
|
146
|
+
project_path?: string;
|
|
147
|
+
since?: number;
|
|
148
|
+
until?: number;
|
|
149
|
+
limit?: number;
|
|
150
|
+
}): KbUsefulnessRow[];
|
|
151
|
+
/**
|
|
152
|
+
* Per-agent KB usefulness aggregation — Agent 体检 input (decision 234f1ad4,
|
|
153
|
+
* Phase 1 / P1-1). Mirrors aggregateKbUsefulness but the grouping key is the
|
|
154
|
+
* `reason` workflow PREFIX (`substr(reason,1,instr(reason,'/')-1)`), i.e. the
|
|
155
|
+
* proxy agent key (coder/verify/...), since `kb_query_log.agent_id` is not a
|
|
156
|
+
* reliable per-agent signal for CLI pulls (subagents have zero MCP). Only
|
|
157
|
+
* source='agent-pull' rows with a parseable `<x>/<y>` reason are attributed;
|
|
158
|
+
* reasons without `/` go to `<unknown>`. `ts` is INTEGER ms.
|
|
159
|
+
* `actionable_rate = helped / total_rated` (STRICT helped-only).
|
|
160
|
+
*/
|
|
161
|
+
aggregateKbUsefulnessByAgent(filter?: {
|
|
162
|
+
project_path?: string;
|
|
163
|
+
since?: number;
|
|
164
|
+
until?: number;
|
|
165
|
+
limit?: number;
|
|
166
|
+
}): Array<{
|
|
167
|
+
agent: string;
|
|
168
|
+
total_rated: number;
|
|
169
|
+
helped: number;
|
|
170
|
+
partial: number;
|
|
171
|
+
not_actionable: number;
|
|
172
|
+
pending: number;
|
|
173
|
+
pulls: number;
|
|
174
|
+
actionable_rate: number;
|
|
175
|
+
}>;
|
|
176
|
+
/**
|
|
177
|
+
* Aggregate deliberate agent/operator KB pulls (decision a33a9b3d) — the
|
|
178
|
+
* consumer for the /context「agent 主动 pull」block. Reads kb_query_log rows
|
|
179
|
+
* with source='cli' (verbatim `cf knowledge query --reason` pulls), in a
|
|
180
|
+
* trailing time window. Returns three slices so the UI can show "who pulled,
|
|
181
|
+
* what, and how the three telemetry paths split":
|
|
182
|
+
* - byWorkflow: GROUP BY workflow (role: coder/decision/verify/...), count desc.
|
|
183
|
+
* - recent: newest N raw cli rows (query is a plaintext topic column —
|
|
184
|
+
* NOT gzip — safe to surface verbatim).
|
|
185
|
+
* - sourceDistribution: cli vs daemon-probe vs legacy(NULL) counts, so the
|
|
186
|
+
* user understands the per-page cited table reads a different
|
|
187
|
+
* (injection/push) path than this pull view.
|
|
188
|
+
*
|
|
189
|
+
* ts is INTEGER ms (kb_query_log landmine); the window bound is computed in ms.
|
|
190
|
+
* project_path optional — omit to aggregate across all known projects.
|
|
191
|
+
*
|
|
192
|
+
* Test-probe exclusion (decision 2d6d59b0): `cf knowledge query foo` smoke /
|
|
193
|
+
* manual probes land as source='cli' with the sentinel agent_id
|
|
194
|
+
* 'cli-no-session' (no real session) — they are NOT deliberate agent pulls and
|
|
195
|
+
* were inflating the cli bucket 85% (192→29 real over 7d). Every aggregate
|
|
196
|
+
* below excludes that sentinel with the NULL-safe predicate
|
|
197
|
+
* `(agent_id IS NULL OR agent_id != 'cli-no-session')`. NULL-safe matters for
|
|
198
|
+
* the source_distribution query: legacy(NULL source) user-prompt rows carry a
|
|
199
|
+
* NULL agent_id, and a bare `agent_id != …` would silently drop them (SQL NULL
|
|
200
|
+
* comparison is not-true) — wiping the legacy bucket. Real agent pulls carry a
|
|
201
|
+
* UUID agent_id + reason and are never touched.
|
|
202
|
+
*/
|
|
203
|
+
queryAgentKbPulls(filter?: {
|
|
204
|
+
project_path?: string;
|
|
205
|
+
days?: number;
|
|
206
|
+
recentLimit?: number;
|
|
207
|
+
}): {
|
|
208
|
+
window_days: number;
|
|
209
|
+
by_workflow: Array<{
|
|
210
|
+
workflow: string;
|
|
211
|
+
count: number;
|
|
212
|
+
}>;
|
|
213
|
+
recent: Array<{
|
|
214
|
+
ts: number;
|
|
215
|
+
query: string;
|
|
216
|
+
reason: string | null;
|
|
217
|
+
workflow: string | null;
|
|
218
|
+
phase: string | null;
|
|
219
|
+
result_count: number;
|
|
220
|
+
agent_id: string | null;
|
|
221
|
+
}>;
|
|
222
|
+
source_distribution: Array<{
|
|
223
|
+
source: string;
|
|
224
|
+
count: number;
|
|
225
|
+
}>;
|
|
226
|
+
total_cli_pulls: number;
|
|
227
|
+
};
|
|
228
|
+
/**
|
|
229
|
+
* Count GENUINE agent KB pulls in a trailing window (decision 64d37b1d) —
|
|
230
|
+
* the「KB 调用」workplace KPI that replaces the passive「KB 注入」number.
|
|
231
|
+
*
|
|
232
|
+
* 口径 (reconciled against the live DB =46 for `reason LIKE '%kb-precedent%'`):
|
|
233
|
+
* - counts rows whose `reason LIKE '%kb-precedent%'` — the
|
|
234
|
+
* coder/verify/safetynet/decision pull-reason convention that marks a
|
|
235
|
+
* deliberate `cf knowledge query|fetch --reason "<wf>/kb-precedent"` pull,
|
|
236
|
+
* - EXCLUDES the foo-probe sentinel `agent_id='cli-no-session'`
|
|
237
|
+
* (decision 2d6d59b0), NULL-safe so real pulls with a NULL agent_id are
|
|
238
|
+
* kept,
|
|
239
|
+
* - filters by `kb_query_log.project_path` directly (this table HAS its own
|
|
240
|
+
* project_path column — no sessions JOIN, unlike countKbInjections),
|
|
241
|
+
* - window is INTEGER ms (kb_query_log.ts landmine): cutoff computed in ms.
|
|
242
|
+
*
|
|
243
|
+
* Omitting projectPath → aggregate across all projects (__all__ on the UI).
|
|
244
|
+
*/
|
|
245
|
+
countAgentKbPulls(filter?: {
|
|
246
|
+
windowDays?: number;
|
|
247
|
+
projectPath?: string;
|
|
248
|
+
}): number;
|
|
249
|
+
/**
|
|
250
|
+
* Per-page KB *cited* counts for the /context「📚 KB 命中」table's
|
|
251
|
+
* "cited (7d)" column (decision aba3cae7).
|
|
252
|
+
*
|
|
253
|
+
* BUG it fixes: the per-page cited map used to be derived from
|
|
254
|
+
* /api/insights/agent-board, whose query LIMITs to the 40 most-recent
|
|
255
|
+
* user-tasks for kanban pagination. KB-bearing tasks ranked outside that 40
|
|
256
|
+
* were silently dropped → every page showed cited=0. This reads the raw
|
|
257
|
+
* INJECTION (push) path directly, bypassing that LIMIT entirely.
|
|
258
|
+
*
|
|
259
|
+
* Source of truth: `injections WHERE source_handler =
|
|
260
|
+
* 'UserPromptSubmitHandler:kb'`, joined to `sessions` for project scope.
|
|
261
|
+
*
|
|
262
|
+
* Landmines /口径 (intentional, do NOT "normalise"):
|
|
263
|
+
* - injections.timestamp is **ISO TEXT** (schema: `timestamp TEXT NOT NULL`),
|
|
264
|
+
* NOT integer-ms. The window bound is a TEXT comparison via
|
|
265
|
+
* datetime('now', '-N days'); do NOT compute an integer-ms cutoff here
|
|
266
|
+
* (that口径 belongs to kb_query_log / skill_invocations, different table).
|
|
267
|
+
* - project scope is a JOIN on sessions.project_path (injections has no
|
|
268
|
+
* project_path column).
|
|
269
|
+
* - NO task_kind filter: we aggregate injections directly, which naturally
|
|
270
|
+
* includes both user prompts and agent-callback prompts. Semantically
|
|
271
|
+
* "how many times was this page pulled by the AI" SHOULD include both.
|
|
272
|
+
* - NO adopted_at gate: this is a raw injection-event count, NOT an
|
|
273
|
+
* adoption-rate. adopted_at is a separate telemetry (decision 148f7a0a).
|
|
274
|
+
* - metadata_json is a plaintext JSON array `[{name,score,refs}, ...]`
|
|
275
|
+
* (NOT gzip) — parsed in JS and each `[].name` accumulated.
|
|
276
|
+
*
|
|
277
|
+
* @param filter.project_path — scope to one project (omit = all projects).
|
|
278
|
+
* @param filter.days — trailing window in days (default 7).
|
|
279
|
+
* @returns map of page_name → cited_count (raw injection-event count).
|
|
280
|
+
*/
|
|
281
|
+
queryKbCitedPages(filter?: {
|
|
282
|
+
project_path?: string;
|
|
283
|
+
days?: number;
|
|
284
|
+
}): Record<string, number>;
|
|
59
285
|
queryKbStats(projectPath: string): KbStatsRow;
|
|
60
286
|
/**
|
|
61
287
|
* Upsert on conflict(build_id) — if the same build_id is started twice
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"knowledge.d.ts","sourceRoot":"","sources":["../../../src/core/storage/knowledge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"knowledge.d.ts","sourceRoot":"","sources":["../../../src/core/storage/knowledge.ts"],"names":[],"mappings":"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"}
|