@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
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
* wrapping (the v9.5 spec mandates: telemetry MUST NEVER break the user's
|
|
15
15
|
* query/build main path).
|
|
16
16
|
*/
|
|
17
|
+
import { daysAgoIso } from '../utils/time.js';
|
|
17
18
|
export class KnowledgeOperations {
|
|
18
19
|
db;
|
|
19
20
|
constructor(db) {
|
|
@@ -25,9 +26,395 @@ export class KnowledgeOperations {
|
|
|
25
26
|
.prepare(`INSERT INTO kb_query_log (
|
|
26
27
|
ts, project_path, query, result_count,
|
|
27
28
|
ai_call_count, ai_input_tokens, ai_output_tokens,
|
|
28
|
-
duration_ms
|
|
29
|
-
) VALUES (?, ?, ?, ?, ?, ?, ?, ?)`)
|
|
30
|
-
.run(entry.ts, entry.project_path, entry.query, entry.result_count, entry.ai_call_count ?? 0, entry.ai_input_tokens ?? null, entry.ai_output_tokens ?? null, entry.duration_ms);
|
|
29
|
+
duration_ms, reason, source, agent_id, workflow, phase
|
|
30
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`)
|
|
31
|
+
.run(entry.ts, entry.project_path, entry.query, entry.result_count, entry.ai_call_count ?? 0, entry.ai_input_tokens ?? null, entry.ai_output_tokens ?? null, entry.duration_ms, entry.reason ?? null, entry.source ?? null, entry.agent_id ?? null, entry.workflow ?? null, entry.phase ?? null);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Read raw kb_query_log rows (decision d24cd3a2 Task B) — used by attribution
|
|
35
|
+
* analytics + tests to prove a deliberate `cf knowledge query` pull recorded
|
|
36
|
+
* its reason/source. Filterable by project_path; newest first.
|
|
37
|
+
*/
|
|
38
|
+
queryKbQueryLog(filter = {}) {
|
|
39
|
+
const where = [];
|
|
40
|
+
const params = [];
|
|
41
|
+
if (filter.project_path !== undefined) {
|
|
42
|
+
where.push('project_path = ?');
|
|
43
|
+
params.push(filter.project_path);
|
|
44
|
+
}
|
|
45
|
+
if (filter.source !== undefined) {
|
|
46
|
+
where.push('source = ?');
|
|
47
|
+
params.push(filter.source);
|
|
48
|
+
}
|
|
49
|
+
const whereClause = where.length > 0 ? `WHERE ${where.join(' AND ')}` : '';
|
|
50
|
+
const limit = filter.limit ?? 100;
|
|
51
|
+
return this.db
|
|
52
|
+
.prepare(`SELECT id, ts, project_path, query, result_count,
|
|
53
|
+
ai_call_count, ai_input_tokens, ai_output_tokens,
|
|
54
|
+
duration_ms, reason, source, agent_id, workflow, phase,
|
|
55
|
+
usefulness, usefulness_note
|
|
56
|
+
FROM kb_query_log
|
|
57
|
+
${whereClause}
|
|
58
|
+
ORDER BY ts DESC, id DESC
|
|
59
|
+
LIMIT ?`)
|
|
60
|
+
.all(...params, limit);
|
|
61
|
+
}
|
|
62
|
+
// ── KB usefulness feedback (decision 096309e4 batch 1 item ①) ──────────────
|
|
63
|
+
//
|
|
64
|
+
// Mirrors writeSkillUsefulness / aggregateSkillUsefulness on skill_invocations.
|
|
65
|
+
// An agent that pulled KB via `cf knowledge query/fetch --reason` rates whether
|
|
66
|
+
// the CONTENT helped on THIS task. This is the real "KB was used AND helped"
|
|
67
|
+
// signal — the dead injections.adopted_at path only stamped MCP KB calls, and
|
|
68
|
+
// subagents have zero MCP (they go through this CLI path), so adopted_at was
|
|
69
|
+
// systematically 0. usefulness measures CONTENT actionability, DISTINCT from
|
|
70
|
+
// result_count (how many pages the query returned).
|
|
71
|
+
/**
|
|
72
|
+
* Stamp `usefulness` + `usefulness_note` onto the SINGLE most-recent un-rated
|
|
73
|
+
* kb_query_log row matching `project_path` (+ optional `source`/`reason` filters
|
|
74
|
+
* and `agent_id`). Deterministic target rule: `ORDER BY ts DESC, id DESC LIMIT 1`
|
|
75
|
+
* inside a subquery so exactly one row is updated. Idempotent: only `usefulness
|
|
76
|
+
* IS NULL` rows are eligible, so re-running stamps the next-older un-rated pull
|
|
77
|
+
* (or affects 0 once all are rated). Returns rows-affected (0 = soft no-op,
|
|
78
|
+
* caller never treats it as an error).
|
|
79
|
+
*
|
|
80
|
+
* Default scoping is to deliberate agent pulls (`source='cli'`) so a feedback
|
|
81
|
+
* call never accidentally stamps a daemon-probe row; pass source=undefined to
|
|
82
|
+
* widen.
|
|
83
|
+
*/
|
|
84
|
+
writeKbUsefulness(args) {
|
|
85
|
+
const conditions = ['project_path = ?', 'usefulness IS NULL'];
|
|
86
|
+
const params = [args.project_path];
|
|
87
|
+
// Default to deliberate cli pulls unless explicitly widened (source=null arg
|
|
88
|
+
// is meaningful: caller wants any source). `undefined` → default 'cli'.
|
|
89
|
+
const source = args.source === undefined ? 'cli' : args.source;
|
|
90
|
+
if (source !== null) {
|
|
91
|
+
conditions.push('source = ?');
|
|
92
|
+
params.push(source);
|
|
93
|
+
}
|
|
94
|
+
if (args.agent_id) {
|
|
95
|
+
conditions.push('agent_id = ?');
|
|
96
|
+
params.push(args.agent_id);
|
|
97
|
+
}
|
|
98
|
+
if (args.reasonPrefix) {
|
|
99
|
+
conditions.push('reason LIKE ?');
|
|
100
|
+
params.push(`${args.reasonPrefix}%`);
|
|
101
|
+
}
|
|
102
|
+
if (args.sinceMs !== undefined) {
|
|
103
|
+
conditions.push('ts >= ?');
|
|
104
|
+
params.push(args.sinceMs);
|
|
105
|
+
}
|
|
106
|
+
const where = conditions.join(' AND ');
|
|
107
|
+
const sql = `
|
|
108
|
+
UPDATE kb_query_log
|
|
109
|
+
SET usefulness = ?, usefulness_note = ?
|
|
110
|
+
WHERE id = (
|
|
111
|
+
SELECT id FROM kb_query_log
|
|
112
|
+
WHERE ${where}
|
|
113
|
+
ORDER BY ts DESC, id DESC
|
|
114
|
+
LIMIT 1
|
|
115
|
+
)
|
|
116
|
+
`;
|
|
117
|
+
const info = this.db
|
|
118
|
+
.prepare(sql)
|
|
119
|
+
.run(args.usefulness, args.note ?? null, ...params);
|
|
120
|
+
return info.changes;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Per-workflow KB usefulness aggregation — answers "is the KB content agents
|
|
124
|
+
* pull actually helping, and for which roles?". GROUP BY workflow over rows
|
|
125
|
+
* that HAVE a usefulness rating. `actionable_rate = helped / total_rated`
|
|
126
|
+
* (STRICT helped-only). Un-rated pulls counted as `pending` (NOT in rate
|
|
127
|
+
* denominator). Sorted worst actionable_rate FIRST (least-useful surface for
|
|
128
|
+
* refinement); ties broken by higher total_rated. ts is INTEGER ms.
|
|
129
|
+
*/
|
|
130
|
+
aggregateKbUsefulness(filter = {}) {
|
|
131
|
+
const conditions = [];
|
|
132
|
+
const params = [];
|
|
133
|
+
if (filter.project_path !== undefined) {
|
|
134
|
+
conditions.push('project_path = ?');
|
|
135
|
+
params.push(filter.project_path);
|
|
136
|
+
}
|
|
137
|
+
if (filter.since !== undefined) {
|
|
138
|
+
conditions.push('ts >= ?');
|
|
139
|
+
params.push(filter.since);
|
|
140
|
+
}
|
|
141
|
+
if (filter.until !== undefined) {
|
|
142
|
+
conditions.push('ts < ?');
|
|
143
|
+
params.push(filter.until);
|
|
144
|
+
}
|
|
145
|
+
const where = conditions.length > 0 ? `WHERE ${conditions.join(' AND ')}` : '';
|
|
146
|
+
const limit = filter.limit ?? 1000;
|
|
147
|
+
params.push(limit);
|
|
148
|
+
const rows = this.db
|
|
149
|
+
.prepare(`SELECT COALESCE(NULLIF(workflow, ''), 'unknown') AS workflow,
|
|
150
|
+
SUM(CASE WHEN usefulness = 'helped' THEN 1 ELSE 0 END) AS helped,
|
|
151
|
+
SUM(CASE WHEN usefulness = 'partial' THEN 1 ELSE 0 END) AS partial,
|
|
152
|
+
SUM(CASE WHEN usefulness = 'not-actionable' THEN 1 ELSE 0 END) AS not_actionable,
|
|
153
|
+
SUM(CASE WHEN usefulness IS NOT NULL THEN 1 ELSE 0 END) AS total_rated,
|
|
154
|
+
SUM(CASE WHEN usefulness IS NULL THEN 1 ELSE 0 END) AS pending
|
|
155
|
+
FROM kb_query_log
|
|
156
|
+
${where}
|
|
157
|
+
GROUP BY COALESCE(NULLIF(workflow, ''), 'unknown')
|
|
158
|
+
LIMIT ?`)
|
|
159
|
+
.all(...params);
|
|
160
|
+
return rows
|
|
161
|
+
.map((r) => {
|
|
162
|
+
const total_rated = r.total_rated ?? 0;
|
|
163
|
+
const helped = r.helped ?? 0;
|
|
164
|
+
const actionable_rate = total_rated > 0 ? helped / total_rated : 0;
|
|
165
|
+
return {
|
|
166
|
+
workflow: r.workflow,
|
|
167
|
+
total_rated,
|
|
168
|
+
helped,
|
|
169
|
+
partial: r.partial ?? 0,
|
|
170
|
+
not_actionable: r.not_actionable ?? 0,
|
|
171
|
+
pending: r.pending ?? 0,
|
|
172
|
+
actionable_rate,
|
|
173
|
+
};
|
|
174
|
+
})
|
|
175
|
+
.sort((a, b) => {
|
|
176
|
+
if (a.actionable_rate !== b.actionable_rate) {
|
|
177
|
+
return a.actionable_rate - b.actionable_rate;
|
|
178
|
+
}
|
|
179
|
+
return b.total_rated - a.total_rated;
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Per-agent KB usefulness aggregation — Agent 体检 input (decision 234f1ad4,
|
|
184
|
+
* Phase 1 / P1-1). Mirrors aggregateKbUsefulness but the grouping key is the
|
|
185
|
+
* `reason` workflow PREFIX (`substr(reason,1,instr(reason,'/')-1)`), i.e. the
|
|
186
|
+
* proxy agent key (coder/verify/...), since `kb_query_log.agent_id` is not a
|
|
187
|
+
* reliable per-agent signal for CLI pulls (subagents have zero MCP). Only
|
|
188
|
+
* source='agent-pull' rows with a parseable `<x>/<y>` reason are attributed;
|
|
189
|
+
* reasons without `/` go to `<unknown>`. `ts` is INTEGER ms.
|
|
190
|
+
* `actionable_rate = helped / total_rated` (STRICT helped-only).
|
|
191
|
+
*/
|
|
192
|
+
aggregateKbUsefulnessByAgent(filter = {}) {
|
|
193
|
+
const conditions = ["reason LIKE '%/%'"];
|
|
194
|
+
const params = [];
|
|
195
|
+
if (filter.project_path !== undefined) {
|
|
196
|
+
conditions.push('project_path = ?');
|
|
197
|
+
params.push(filter.project_path);
|
|
198
|
+
}
|
|
199
|
+
if (filter.since !== undefined) {
|
|
200
|
+
conditions.push('ts >= ?');
|
|
201
|
+
params.push(filter.since);
|
|
202
|
+
}
|
|
203
|
+
if (filter.until !== undefined) {
|
|
204
|
+
conditions.push('ts < ?');
|
|
205
|
+
params.push(filter.until);
|
|
206
|
+
}
|
|
207
|
+
const where = `WHERE ${conditions.join(' AND ')}`;
|
|
208
|
+
const limit = filter.limit ?? 2000;
|
|
209
|
+
params.push(limit);
|
|
210
|
+
const rows = this.db
|
|
211
|
+
.prepare(`SELECT CASE WHEN instr(reason, '/') > 1
|
|
212
|
+
THEN substr(reason, 1, instr(reason, '/') - 1)
|
|
213
|
+
ELSE '<unknown>' END AS agent,
|
|
214
|
+
COUNT(*) AS pulls,
|
|
215
|
+
SUM(CASE WHEN usefulness = 'helped' THEN 1 ELSE 0 END) AS helped,
|
|
216
|
+
SUM(CASE WHEN usefulness = 'partial' THEN 1 ELSE 0 END) AS partial,
|
|
217
|
+
SUM(CASE WHEN usefulness = 'not-actionable' THEN 1 ELSE 0 END) AS not_actionable,
|
|
218
|
+
SUM(CASE WHEN usefulness IS NOT NULL THEN 1 ELSE 0 END) AS total_rated,
|
|
219
|
+
SUM(CASE WHEN usefulness IS NULL THEN 1 ELSE 0 END) AS pending
|
|
220
|
+
FROM kb_query_log
|
|
221
|
+
${where}
|
|
222
|
+
GROUP BY agent
|
|
223
|
+
LIMIT ?`)
|
|
224
|
+
.all(...params);
|
|
225
|
+
return rows
|
|
226
|
+
.map((r) => {
|
|
227
|
+
const total_rated = r.total_rated ?? 0;
|
|
228
|
+
const helped = r.helped ?? 0;
|
|
229
|
+
const actionable_rate = total_rated > 0 ? helped / total_rated : 0;
|
|
230
|
+
return {
|
|
231
|
+
agent: r.agent,
|
|
232
|
+
pulls: r.pulls ?? 0,
|
|
233
|
+
total_rated,
|
|
234
|
+
helped,
|
|
235
|
+
partial: r.partial ?? 0,
|
|
236
|
+
not_actionable: r.not_actionable ?? 0,
|
|
237
|
+
pending: r.pending ?? 0,
|
|
238
|
+
actionable_rate,
|
|
239
|
+
};
|
|
240
|
+
})
|
|
241
|
+
.sort((a, b) => {
|
|
242
|
+
if (a.agent !== b.agent)
|
|
243
|
+
return a.agent.localeCompare(b.agent);
|
|
244
|
+
return b.pulls - a.pulls;
|
|
245
|
+
});
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Aggregate deliberate agent/operator KB pulls (decision a33a9b3d) — the
|
|
249
|
+
* consumer for the /context「agent 主动 pull」block. Reads kb_query_log rows
|
|
250
|
+
* with source='cli' (verbatim `cf knowledge query --reason` pulls), in a
|
|
251
|
+
* trailing time window. Returns three slices so the UI can show "who pulled,
|
|
252
|
+
* what, and how the three telemetry paths split":
|
|
253
|
+
* - byWorkflow: GROUP BY workflow (role: coder/decision/verify/...), count desc.
|
|
254
|
+
* - recent: newest N raw cli rows (query is a plaintext topic column —
|
|
255
|
+
* NOT gzip — safe to surface verbatim).
|
|
256
|
+
* - sourceDistribution: cli vs daemon-probe vs legacy(NULL) counts, so the
|
|
257
|
+
* user understands the per-page cited table reads a different
|
|
258
|
+
* (injection/push) path than this pull view.
|
|
259
|
+
*
|
|
260
|
+
* ts is INTEGER ms (kb_query_log landmine); the window bound is computed in ms.
|
|
261
|
+
* project_path optional — omit to aggregate across all known projects.
|
|
262
|
+
*
|
|
263
|
+
* Test-probe exclusion (decision 2d6d59b0): `cf knowledge query foo` smoke /
|
|
264
|
+
* manual probes land as source='cli' with the sentinel agent_id
|
|
265
|
+
* 'cli-no-session' (no real session) — they are NOT deliberate agent pulls and
|
|
266
|
+
* were inflating the cli bucket 85% (192→29 real over 7d). Every aggregate
|
|
267
|
+
* below excludes that sentinel with the NULL-safe predicate
|
|
268
|
+
* `(agent_id IS NULL OR agent_id != 'cli-no-session')`. NULL-safe matters for
|
|
269
|
+
* the source_distribution query: legacy(NULL source) user-prompt rows carry a
|
|
270
|
+
* NULL agent_id, and a bare `agent_id != …` would silently drop them (SQL NULL
|
|
271
|
+
* comparison is not-true) — wiping the legacy bucket. Real agent pulls carry a
|
|
272
|
+
* UUID agent_id + reason and are never touched.
|
|
273
|
+
*/
|
|
274
|
+
queryAgentKbPulls(filter = {}) {
|
|
275
|
+
const days = filter.days ?? 7;
|
|
276
|
+
const recentLimit = filter.recentLimit ?? 20;
|
|
277
|
+
const sinceMs = Date.now() - days * 24 * 60 * 60 * 1000;
|
|
278
|
+
const projWhere = filter.project_path !== undefined ? 'AND project_path = ?' : '';
|
|
279
|
+
const projParam = filter.project_path !== undefined ? [filter.project_path] : [];
|
|
280
|
+
// Test-probe sentinel exclusion (decision 2d6d59b0) — NULL-safe; see jsdoc.
|
|
281
|
+
const SENTINEL = `(agent_id IS NULL OR agent_id != 'cli-no-session')`;
|
|
282
|
+
// (a) by workflow — only cli pulls in window. NULL workflow → 'unknown'.
|
|
283
|
+
const byWorkflow = this.db
|
|
284
|
+
.prepare(`SELECT COALESCE(NULLIF(workflow, ''), 'unknown') AS workflow, COUNT(*) AS count
|
|
285
|
+
FROM kb_query_log
|
|
286
|
+
WHERE source = 'cli' AND ${SENTINEL} AND ts >= ? ${projWhere}
|
|
287
|
+
GROUP BY COALESCE(NULLIF(workflow, ''), 'unknown')
|
|
288
|
+
ORDER BY count DESC, workflow ASC`)
|
|
289
|
+
.all(sinceMs, ...projParam);
|
|
290
|
+
// (b) recent cli pulls — verbatim query/reason, newest first.
|
|
291
|
+
const recent = this.db
|
|
292
|
+
.prepare(`SELECT ts, query, reason, workflow, phase, result_count, agent_id
|
|
293
|
+
FROM kb_query_log
|
|
294
|
+
WHERE source = 'cli' AND ${SENTINEL} AND ts >= ? ${projWhere}
|
|
295
|
+
ORDER BY ts DESC, id DESC
|
|
296
|
+
LIMIT ?`)
|
|
297
|
+
.all(sinceMs, ...projParam, recentLimit);
|
|
298
|
+
// (c) source distribution — ALL rows in window, cli/daemon-probe/legacy.
|
|
299
|
+
// NULL-safe sentinel exclusion: strips the 'cli' foo probes from the cli
|
|
300
|
+
// bucket while preserving the legacy(NULL agent_id) user-prompt bucket.
|
|
301
|
+
const sourceDist = this.db
|
|
302
|
+
.prepare(`SELECT COALESCE(NULLIF(source, ''), 'legacy') AS source, COUNT(*) AS count
|
|
303
|
+
FROM kb_query_log
|
|
304
|
+
WHERE ${SENTINEL} AND ts >= ? ${projWhere}
|
|
305
|
+
GROUP BY COALESCE(NULLIF(source, ''), 'legacy')
|
|
306
|
+
ORDER BY count DESC, source ASC`)
|
|
307
|
+
.all(sinceMs, ...projParam);
|
|
308
|
+
const totalCli = byWorkflow.reduce((acc, r) => acc + r.count, 0);
|
|
309
|
+
return {
|
|
310
|
+
window_days: days,
|
|
311
|
+
by_workflow: byWorkflow,
|
|
312
|
+
recent,
|
|
313
|
+
source_distribution: sourceDist,
|
|
314
|
+
total_cli_pulls: totalCli,
|
|
315
|
+
};
|
|
316
|
+
}
|
|
317
|
+
/**
|
|
318
|
+
* Count GENUINE agent KB pulls in a trailing window (decision 64d37b1d) —
|
|
319
|
+
* the「KB 调用」workplace KPI that replaces the passive「KB 注入」number.
|
|
320
|
+
*
|
|
321
|
+
* 口径 (reconciled against the live DB =46 for `reason LIKE '%kb-precedent%'`):
|
|
322
|
+
* - counts rows whose `reason LIKE '%kb-precedent%'` — the
|
|
323
|
+
* coder/verify/safetynet/decision pull-reason convention that marks a
|
|
324
|
+
* deliberate `cf knowledge query|fetch --reason "<wf>/kb-precedent"` pull,
|
|
325
|
+
* - EXCLUDES the foo-probe sentinel `agent_id='cli-no-session'`
|
|
326
|
+
* (decision 2d6d59b0), NULL-safe so real pulls with a NULL agent_id are
|
|
327
|
+
* kept,
|
|
328
|
+
* - filters by `kb_query_log.project_path` directly (this table HAS its own
|
|
329
|
+
* project_path column — no sessions JOIN, unlike countKbInjections),
|
|
330
|
+
* - window is INTEGER ms (kb_query_log.ts landmine): cutoff computed in ms.
|
|
331
|
+
*
|
|
332
|
+
* Omitting projectPath → aggregate across all projects (__all__ on the UI).
|
|
333
|
+
*/
|
|
334
|
+
countAgentKbPulls(filter = {}) {
|
|
335
|
+
const days = filter.windowDays ?? 7;
|
|
336
|
+
const sinceMs = Date.now() - days * 24 * 60 * 60 * 1000;
|
|
337
|
+
const projectPath = filter.projectPath && filter.projectPath.trim() ? filter.projectPath.trim() : undefined;
|
|
338
|
+
const projWhere = projectPath !== undefined ? 'AND project_path = ?' : '';
|
|
339
|
+
const projParam = projectPath !== undefined ? [projectPath] : [];
|
|
340
|
+
// NULL-safe sentinel exclusion (decision 2d6d59b0) — mirror queryAgentKbPulls.
|
|
341
|
+
const SENTINEL = `(agent_id IS NULL OR agent_id != 'cli-no-session')`;
|
|
342
|
+
const row = this.db
|
|
343
|
+
.prepare(`SELECT COUNT(*) AS n
|
|
344
|
+
FROM kb_query_log
|
|
345
|
+
WHERE reason LIKE '%kb-precedent%' AND ${SENTINEL} AND ts >= ? ${projWhere}`)
|
|
346
|
+
.get(sinceMs, ...projParam);
|
|
347
|
+
return row?.n ?? 0;
|
|
348
|
+
}
|
|
349
|
+
/**
|
|
350
|
+
* Per-page KB *cited* counts for the /context「📚 KB 命中」table's
|
|
351
|
+
* "cited (7d)" column (decision aba3cae7).
|
|
352
|
+
*
|
|
353
|
+
* BUG it fixes: the per-page cited map used to be derived from
|
|
354
|
+
* /api/insights/agent-board, whose query LIMITs to the 40 most-recent
|
|
355
|
+
* user-tasks for kanban pagination. KB-bearing tasks ranked outside that 40
|
|
356
|
+
* were silently dropped → every page showed cited=0. This reads the raw
|
|
357
|
+
* INJECTION (push) path directly, bypassing that LIMIT entirely.
|
|
358
|
+
*
|
|
359
|
+
* Source of truth: `injections WHERE source_handler =
|
|
360
|
+
* 'UserPromptSubmitHandler:kb'`, joined to `sessions` for project scope.
|
|
361
|
+
*
|
|
362
|
+
* Landmines /口径 (intentional, do NOT "normalise"):
|
|
363
|
+
* - injections.timestamp is **ISO TEXT** (schema: `timestamp TEXT NOT NULL`),
|
|
364
|
+
* NOT integer-ms. The window bound is a TEXT comparison via
|
|
365
|
+
* datetime('now', '-N days'); do NOT compute an integer-ms cutoff here
|
|
366
|
+
* (that口径 belongs to kb_query_log / skill_invocations, different table).
|
|
367
|
+
* - project scope is a JOIN on sessions.project_path (injections has no
|
|
368
|
+
* project_path column).
|
|
369
|
+
* - NO task_kind filter: we aggregate injections directly, which naturally
|
|
370
|
+
* includes both user prompts and agent-callback prompts. Semantically
|
|
371
|
+
* "how many times was this page pulled by the AI" SHOULD include both.
|
|
372
|
+
* - NO adopted_at gate: this is a raw injection-event count, NOT an
|
|
373
|
+
* adoption-rate. adopted_at is a separate telemetry (decision 148f7a0a).
|
|
374
|
+
* - metadata_json is a plaintext JSON array `[{name,score,refs}, ...]`
|
|
375
|
+
* (NOT gzip) — parsed in JS and each `[].name` accumulated.
|
|
376
|
+
*
|
|
377
|
+
* @param filter.project_path — scope to one project (omit = all projects).
|
|
378
|
+
* @param filter.days — trailing window in days (default 7).
|
|
379
|
+
* @returns map of page_name → cited_count (raw injection-event count).
|
|
380
|
+
*/
|
|
381
|
+
queryKbCitedPages(filter = {}) {
|
|
382
|
+
const days = filter.days ?? 7;
|
|
383
|
+
const projJoin = filter.project_path !== undefined ? 'JOIN sessions s ON s.session_id = i.session_id' : '';
|
|
384
|
+
const projWhere = filter.project_path !== undefined ? 'AND s.project_path = ?' : '';
|
|
385
|
+
const projParam = filter.project_path !== undefined ? [filter.project_path] : [];
|
|
386
|
+
const rows = this.db
|
|
387
|
+
.prepare(`SELECT i.metadata_json AS metadata_json
|
|
388
|
+
FROM injections i
|
|
389
|
+
${projJoin}
|
|
390
|
+
WHERE i.source_handler = 'UserPromptSubmitHandler:kb'
|
|
391
|
+
AND i.metadata_json IS NOT NULL
|
|
392
|
+
AND i.timestamp >= datetime('now', '-' || ? || ' days')
|
|
393
|
+
${projWhere}`)
|
|
394
|
+
.all(days, ...projParam);
|
|
395
|
+
const counts = {};
|
|
396
|
+
for (const row of rows) {
|
|
397
|
+
if (!row.metadata_json)
|
|
398
|
+
continue;
|
|
399
|
+
let arr;
|
|
400
|
+
try {
|
|
401
|
+
arr = JSON.parse(row.metadata_json);
|
|
402
|
+
}
|
|
403
|
+
catch {
|
|
404
|
+
continue; // ignore malformed metadata
|
|
405
|
+
}
|
|
406
|
+
if (!Array.isArray(arr))
|
|
407
|
+
continue;
|
|
408
|
+
for (const hit of arr) {
|
|
409
|
+
const name = hit && typeof hit === 'object' && typeof hit.name === 'string'
|
|
410
|
+
? hit.name
|
|
411
|
+
: null;
|
|
412
|
+
if (!name)
|
|
413
|
+
continue;
|
|
414
|
+
counts[name] = (counts[name] ?? 0) + 1;
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
return counts;
|
|
31
418
|
}
|
|
32
419
|
queryKbStats(projectPath) {
|
|
33
420
|
const row = this.db
|
|
@@ -150,7 +537,7 @@ export class KnowledgeOperations {
|
|
|
150
537
|
* @param days - Number of days to look back (default: 7)
|
|
151
538
|
*/
|
|
152
539
|
queryKbUsageStats(projectPath, days = 7) {
|
|
153
|
-
const cutoff =
|
|
540
|
+
const cutoff = daysAgoIso(days);
|
|
154
541
|
// Total KB tool calls in the time window
|
|
155
542
|
const totalRow = this.db
|
|
156
543
|
.prepare(`SELECT COUNT(*) as count
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"knowledge.js","sourceRoot":"","sources":["../../../src/core/storage/knowledge.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"knowledge.js","sourceRoot":"","sources":["../../../src/core/storage/knowledge.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,8 +7,7 @@
|
|
|
7
7
|
* ① 接收 events.hook_type='UserPromptSubmit'
|
|
8
8
|
* ② 意图 injections.source_handler='UserPromptSubmitHandler:intent'
|
|
9
9
|
* (or :intent_fallback:L1/L2/L3 — see Phase 2a)
|
|
10
|
-
* ③ KB+Skill injections.source_handler='UserPromptSubmitHandler:kb'
|
|
11
|
-
* :workflow_rec
|
|
10
|
+
* ③ KB+Skill injections.source_handler='UserPromptSubmitHandler:kb'
|
|
12
11
|
* ④ Spec decisions row (kind='spec') keyed by approval_token
|
|
13
12
|
* ⑤ 执行 tool_intercepts.decision + routing_events.routed_to_name
|
|
14
13
|
*
|
|
@@ -58,11 +57,6 @@ export interface PipelineRow {
|
|
|
58
57
|
name: string;
|
|
59
58
|
score: number;
|
|
60
59
|
}>;
|
|
61
|
-
workflow_rec: {
|
|
62
|
-
recommended_agent_type: string;
|
|
63
|
-
recommended_workflow: string;
|
|
64
|
-
rec_outcome: string | null;
|
|
65
|
-
} | null;
|
|
66
60
|
} | null;
|
|
67
61
|
spec: {
|
|
68
62
|
spec_path: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline-rollup.d.ts","sourceRoot":"","sources":["../../../src/core/storage/pipeline-rollup.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"pipeline-rollup.d.ts","sourceRoot":"","sources":["../../../src/core/storage/pipeline-rollup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAajD,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;AAE9D,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;;;;OAQG;IACH,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IAErB,MAAM,EAAE;QACN,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;QAC7B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;QAC/B,QAAQ,EAAE,OAAO,CAAC;QAClB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;KAC/B,GAAG,IAAI,CAAC;IAET,EAAE,EAAE;QACF,KAAK,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAC/C,GAAG,IAAI,CAAC;IAET,IAAI,EAAE;QACJ,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,GAAG,IAAI,CAAC;IAET,IAAI,EAAE;QACJ,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;QAC7B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,kBAAkB,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;QACrE,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;QACjC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;KAC/B,GAAG,IAAI,CAAC;IAET,WAAW,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;CACtE;AA4LD;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE;IAC/B,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC9B,EAAE,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;IACtB,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC1B,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CAC3B,GAAG,WAAW,CAAC,aAAa,CAAC,CAkF7B;AAED,MAAM,WAAW,qBAAqB;IACpC,yDAAyD;IACzD,KAAK,EAAE,MAAM,CAAC;IACd,yEAAyE;IACzE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAKD;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,aAAa,EACtB,IAAI,EAAE,qBAAqB,GAC1B,WAAW,EAAE,CA2Ef"}
|
|
@@ -7,8 +7,7 @@
|
|
|
7
7
|
* ① 接收 events.hook_type='UserPromptSubmit'
|
|
8
8
|
* ② 意图 injections.source_handler='UserPromptSubmitHandler:intent'
|
|
9
9
|
* (or :intent_fallback:L1/L2/L3 — see Phase 2a)
|
|
10
|
-
* ③ KB+Skill injections.source_handler='UserPromptSubmitHandler:kb'
|
|
11
|
-
* :workflow_rec
|
|
10
|
+
* ③ KB+Skill injections.source_handler='UserPromptSubmitHandler:kb'
|
|
12
11
|
* ④ Spec decisions row (kind='spec') keyed by approval_token
|
|
13
12
|
* ⑤ 执行 tool_intercepts.decision + routing_events.routed_to_name
|
|
14
13
|
*
|
|
@@ -103,34 +102,22 @@ function buildIntent(inj) {
|
|
|
103
102
|
};
|
|
104
103
|
}
|
|
105
104
|
/**
|
|
106
|
-
* Extract KB page hits from a `UserPromptSubmitHandler:kb` injection
|
|
107
|
-
* optionally an associated workflow_rec row from the same prompt window.
|
|
105
|
+
* Extract KB page hits from a `UserPromptSubmitHandler:kb` injection.
|
|
108
106
|
*/
|
|
109
|
-
function buildKb(kbInj
|
|
110
|
-
if (!kbInj
|
|
107
|
+
function buildKb(kbInj) {
|
|
108
|
+
if (!kbInj)
|
|
111
109
|
return null;
|
|
112
110
|
let pages = [];
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
}));
|
|
122
|
-
}
|
|
111
|
+
const parsed = tryParseJson(kbInj.metadata_json);
|
|
112
|
+
if (Array.isArray(parsed)) {
|
|
113
|
+
pages = parsed
|
|
114
|
+
.filter(p => typeof p?.name === 'string')
|
|
115
|
+
.map(p => ({
|
|
116
|
+
name: String(p.name),
|
|
117
|
+
score: typeof p.score === 'number' ? p.score : 0,
|
|
118
|
+
}));
|
|
123
119
|
}
|
|
124
|
-
return {
|
|
125
|
-
pages,
|
|
126
|
-
workflow_rec: workflowRec
|
|
127
|
-
? {
|
|
128
|
-
recommended_agent_type: workflowRec.recommended_agent_type,
|
|
129
|
-
recommended_workflow: workflowRec.recommended_workflow,
|
|
130
|
-
rec_outcome: workflowRec.outcome,
|
|
131
|
-
}
|
|
132
|
-
: null,
|
|
133
|
-
};
|
|
120
|
+
return { pages };
|
|
134
121
|
}
|
|
135
122
|
/**
|
|
136
123
|
* Pick the pending_spec for a given prompt.
|
|
@@ -241,11 +228,11 @@ export function computeDots(row) {
|
|
|
241
228
|
else {
|
|
242
229
|
dot2 = 'missing';
|
|
243
230
|
}
|
|
244
|
-
// ③ KB+Skill — 'ok' if at least one KB page
|
|
245
|
-
//
|
|
246
|
-
//
|
|
231
|
+
// ③ KB+Skill — 'ok' if at least one KB page landed; 'skipped' if none but
|
|
232
|
+
// intent says the workflow doesn't need them (e.g. workflow_type='explore'
|
|
233
|
+
// / 'meta'); 'missing' otherwise.
|
|
247
234
|
let dot3;
|
|
248
|
-
if (row.kb &&
|
|
235
|
+
if (row.kb && row.kb.pages.length > 0) {
|
|
249
236
|
dot3 = 'ok';
|
|
250
237
|
}
|
|
251
238
|
else if (row.intent &&
|
|
@@ -336,7 +323,6 @@ export function queryPipelineRows(storage, opts) {
|
|
|
336
323
|
// 2. Batch-fetch downstream data for just the touched sessions.
|
|
337
324
|
const sessionIds = Array.from(new Set(promptEvents.map(p => p.session_id)));
|
|
338
325
|
const injections = storage.queryInjectionsBySessions(sessionIds);
|
|
339
|
-
const workflowRecs = storage.queryWorkflowRecommendationsBySessions(sessionIds);
|
|
340
326
|
// C1 (spec 0854): spec rows now live in decisions (kind='spec'), normalised
|
|
341
327
|
// to SpecLikeRow.
|
|
342
328
|
const specs = mergeSpecRows(storage, sessionIds);
|
|
@@ -358,14 +344,6 @@ export function queryPipelineRows(storage, opts) {
|
|
|
358
344
|
else
|
|
359
345
|
injBySession.set(inj.session_id, [inj]);
|
|
360
346
|
}
|
|
361
|
-
const recsBySession = new Map();
|
|
362
|
-
for (const r of workflowRecs) {
|
|
363
|
-
const arr = recsBySession.get(r.session_id);
|
|
364
|
-
if (arr)
|
|
365
|
-
arr.push(r);
|
|
366
|
-
else
|
|
367
|
-
recsBySession.set(r.session_id, [r]);
|
|
368
|
-
}
|
|
369
347
|
const specsBySession = new Map();
|
|
370
348
|
for (const s of specs) {
|
|
371
349
|
const arr = specsBySession.get(s.session_id);
|
|
@@ -395,7 +373,6 @@ export function queryPipelineRows(storage, opts) {
|
|
|
395
373
|
for (const p of promptEvents) {
|
|
396
374
|
rows.push(buildRow(p, {
|
|
397
375
|
injections: injBySession.get(p.session_id) ?? [],
|
|
398
|
-
recs: recsBySession.get(p.session_id) ?? [],
|
|
399
376
|
specs: specsBySession.get(p.session_id) ?? [],
|
|
400
377
|
routes: routesBySession.get(p.session_id) ?? [],
|
|
401
378
|
intercepts: interceptsBySession.get(p.session_id) ?? [],
|
|
@@ -410,22 +387,6 @@ function buildRow(promptEvent, perSession) {
|
|
|
410
387
|
const promptText = (getUserPrompt(promptEvent) ?? '').slice(0, PROMPT_PREVIEW_MAX);
|
|
411
388
|
const intentInj = pickNearbyInjection(perSession.injections, promptTs, inj => inj.source_handler.startsWith('UserPromptSubmitHandler:intent'));
|
|
412
389
|
const kbInj = pickNearbyInjection(perSession.injections, promptTs, inj => inj.source_handler === 'UserPromptSubmitHandler:kb');
|
|
413
|
-
// Workflow recommendation: pick the first rec whose timestamp falls in the
|
|
414
|
-
// prompt window. recs are ordered ASC by timestamp from the batch query.
|
|
415
|
-
const workflowRec = (() => {
|
|
416
|
-
const promptMs = Date.parse(promptTs);
|
|
417
|
-
if (!Number.isFinite(promptMs))
|
|
418
|
-
return null;
|
|
419
|
-
for (const r of perSession.recs) {
|
|
420
|
-
const t = Date.parse(r.timestamp);
|
|
421
|
-
if (!Number.isFinite(t))
|
|
422
|
-
continue;
|
|
423
|
-
const delta = t - promptMs;
|
|
424
|
-
if (delta >= -5_000 && delta <= 60_000)
|
|
425
|
-
return r;
|
|
426
|
-
}
|
|
427
|
-
return null;
|
|
428
|
-
})();
|
|
429
390
|
// Use the FULL untruncated user_prompt for spec matching (promptText above
|
|
430
391
|
// is truncated to PROMPT_PREVIEW_MAX for client display).
|
|
431
392
|
const fullPromptText = getUserPrompt(promptEvent) ?? '';
|
|
@@ -433,7 +394,7 @@ function buildRow(promptEvent, perSession) {
|
|
|
433
394
|
const routingRow = pickNearbyRouting(perSession.routes, promptTs);
|
|
434
395
|
const interceptRow = pickNearbyIntercept(perSession.intercepts, promptTs);
|
|
435
396
|
const intent = buildIntent(intentInj);
|
|
436
|
-
const kb = buildKb(kbInj
|
|
397
|
+
const kb = buildKb(kbInj);
|
|
437
398
|
const spec = specRow
|
|
438
399
|
? {
|
|
439
400
|
spec_path: specRow.spec_path,
|