@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
|
@@ -24,12 +24,42 @@ export class SkillOperations {
|
|
|
24
24
|
INSERT INTO skill_invocations
|
|
25
25
|
(id, route_request_id, session_id, agent_id, skill_id, invocation_type,
|
|
26
26
|
reason, workflow, phase, feature_slug, artifact_path,
|
|
27
|
-
depth, success, error, timestamp)
|
|
28
|
-
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
27
|
+
depth, success, error, timestamp, recorded_at_inject, project_path)
|
|
28
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
29
29
|
`);
|
|
30
30
|
}
|
|
31
31
|
writeSkillInvocation(row) {
|
|
32
|
-
this.writeSkillInvocationStmt.run(row.id, row.route_request_id, row.session_id, row.agent_id, row.skill_id, row.invocation_type, row.reason, row.workflow, row.phase, row.feature_slug, row.artifact_path, row.depth, row.success, row.error, row.timestamp
|
|
32
|
+
this.writeSkillInvocationStmt.run(row.id, row.route_request_id, row.session_id, row.agent_id, row.skill_id, row.invocation_type, row.reason, row.workflow, row.phase, row.feature_slug, row.artifact_path, row.depth, row.success, row.error, row.timestamp,
|
|
33
|
+
// audit #2: NULL unless the caller explicitly marks this an inject-time
|
|
34
|
+
// row (UserPromptSubmit auto-match). undefined → NULL.
|
|
35
|
+
row.recorded_at_inject ?? null,
|
|
36
|
+
// decision 39839e30 Part 2: project scope. undefined → NULL (legacy
|
|
37
|
+
// callers / old fixtures that don't pass it stay project-less).
|
|
38
|
+
row.project_path ?? null);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* One-shot back-fill of skill_invocations.project_path from
|
|
42
|
+
* sessions.project_path (decision 39839e30 Part 2). Public test seam mirroring
|
|
43
|
+
* the boot-time migration (base.backfillSkillInvocationsProjectPathIfNeeded).
|
|
44
|
+
* Idempotent: only NULL rows whose session JOINs a sessions row with a
|
|
45
|
+
* non-NULL project_path are touched. Returns rows-affected.
|
|
46
|
+
*/
|
|
47
|
+
backfillSkillInvocationProjectPath() {
|
|
48
|
+
const res = this.db.prepare(`
|
|
49
|
+
UPDATE skill_invocations
|
|
50
|
+
SET project_path = (
|
|
51
|
+
SELECT s.project_path FROM sessions s
|
|
52
|
+
WHERE s.session_id = skill_invocations.session_id
|
|
53
|
+
)
|
|
54
|
+
WHERE project_path IS NULL
|
|
55
|
+
AND session_id IS NOT NULL
|
|
56
|
+
AND EXISTS (
|
|
57
|
+
SELECT 1 FROM sessions s2
|
|
58
|
+
WHERE s2.session_id = skill_invocations.session_id
|
|
59
|
+
AND s2.project_path IS NOT NULL
|
|
60
|
+
)
|
|
61
|
+
`).run();
|
|
62
|
+
return res.changes;
|
|
33
63
|
}
|
|
34
64
|
querySkillInvocations(filter = {}) {
|
|
35
65
|
const conditions = [];
|
|
@@ -50,6 +80,10 @@ export class SkillOperations {
|
|
|
50
80
|
conditions.push('timestamp >= ?');
|
|
51
81
|
params.push(filter.since);
|
|
52
82
|
}
|
|
83
|
+
if (filter.projectPath) {
|
|
84
|
+
conditions.push('project_path = ?');
|
|
85
|
+
params.push(filter.projectPath);
|
|
86
|
+
}
|
|
53
87
|
const where = conditions.length > 0 ? `WHERE ${conditions.join(' AND ')}` : '';
|
|
54
88
|
const limit = filter.limit ?? 100;
|
|
55
89
|
const sql = `SELECT * FROM skill_invocations ${where} ORDER BY timestamp DESC LIMIT ?`;
|
|
@@ -68,9 +102,14 @@ export class SkillOperations {
|
|
|
68
102
|
aggregateSkillInvocationsBySkill(filter) {
|
|
69
103
|
const limit = filter.limit ?? 1000;
|
|
70
104
|
const untilCond = filter.until !== undefined ? 'AND timestamp < ?' : '';
|
|
105
|
+
// decision 39839e30 Part 2: additive project filter — clause only present
|
|
106
|
+
// when a project is passed, so legacy callers behave逐字不变.
|
|
107
|
+
const projCond = filter.projectPath ? 'AND project_path = ?' : '';
|
|
71
108
|
const params = [filter.since];
|
|
72
109
|
if (filter.until !== undefined)
|
|
73
110
|
params.push(filter.until);
|
|
111
|
+
if (filter.projectPath)
|
|
112
|
+
params.push(filter.projectPath);
|
|
74
113
|
params.push(limit);
|
|
75
114
|
const rows = this.db.prepare(`
|
|
76
115
|
SELECT skill_id,
|
|
@@ -78,7 +117,7 @@ export class SkillOperations {
|
|
|
78
117
|
SUM(CASE WHEN success = 1 THEN 1 ELSE 0 END) AS success,
|
|
79
118
|
SUM(CASE WHEN success = 0 THEN 1 ELSE 0 END) AS failed
|
|
80
119
|
FROM skill_invocations
|
|
81
|
-
WHERE timestamp >= ? ${untilCond}
|
|
120
|
+
WHERE timestamp >= ? ${untilCond} ${projCond}
|
|
82
121
|
GROUP BY skill_id
|
|
83
122
|
ORDER BY total DESC
|
|
84
123
|
LIMIT ?
|
|
@@ -90,6 +129,120 @@ export class SkillOperations {
|
|
|
90
129
|
failed: r.failed ?? 0,
|
|
91
130
|
}));
|
|
92
131
|
}
|
|
132
|
+
/**
|
|
133
|
+
* audit #2 (decision f61b8a0c): per-skill split of "injected" vs "really
|
|
134
|
+
* invoked" rows in skill_invocations.
|
|
135
|
+
*
|
|
136
|
+
* - `injected` = rows stamped `recorded_at_inject = 1` (UserPromptSubmit
|
|
137
|
+
* auto-match wrote them at inject time; NOT proof the skill was followed).
|
|
138
|
+
* - `invoked` = rows with `recorded_at_inject IS NULL` (real-call rows:
|
|
139
|
+
* MCP skill_invoke / Skill tool, plus legacy rows predating the column).
|
|
140
|
+
*
|
|
141
|
+
* Web "skill effectiveness" surfaces must read `invoked`, not `injected`.
|
|
142
|
+
* Walks `idx_skill_invocations_timestamp`.
|
|
143
|
+
*/
|
|
144
|
+
aggregateSkillInjectVsInvoke(filter) {
|
|
145
|
+
const limit = filter.limit ?? 1000;
|
|
146
|
+
const untilCond = filter.until !== undefined ? 'AND timestamp < ?' : '';
|
|
147
|
+
// decision 39839e30 Part 2: additive project filter (see aggregateSkillInvocationsBySkill).
|
|
148
|
+
const projCond = filter.projectPath ? 'AND project_path = ?' : '';
|
|
149
|
+
const params = [filter.since];
|
|
150
|
+
if (filter.until !== undefined)
|
|
151
|
+
params.push(filter.until);
|
|
152
|
+
if (filter.projectPath)
|
|
153
|
+
params.push(filter.projectPath);
|
|
154
|
+
params.push(limit);
|
|
155
|
+
const rows = this.db.prepare(`
|
|
156
|
+
SELECT skill_id,
|
|
157
|
+
COUNT(*) AS total,
|
|
158
|
+
SUM(CASE WHEN recorded_at_inject = 1 THEN 1 ELSE 0 END) AS injected,
|
|
159
|
+
SUM(CASE WHEN recorded_at_inject IS NULL THEN 1 ELSE 0 END) AS invoked,
|
|
160
|
+
SUM(CASE WHEN invocation_type = 'cli' AND recorded_at_inject IS NULL THEN 1 ELSE 0 END) AS genuine
|
|
161
|
+
FROM skill_invocations
|
|
162
|
+
WHERE timestamp >= ? ${untilCond} ${projCond}
|
|
163
|
+
GROUP BY skill_id
|
|
164
|
+
ORDER BY total DESC
|
|
165
|
+
LIMIT ?
|
|
166
|
+
`).all(...params);
|
|
167
|
+
return rows.map(r => ({
|
|
168
|
+
skill_id: r.skill_id,
|
|
169
|
+
injected: r.injected ?? 0,
|
|
170
|
+
invoked: r.invoked ?? 0,
|
|
171
|
+
genuine: r.genuine ?? 0,
|
|
172
|
+
total: r.total,
|
|
173
|
+
}));
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* decision 76be4e4a: authoritative "Skill 调用" headline count — total GENUINE
|
|
177
|
+
* agent invocations across all skills in the window. Genuine =
|
|
178
|
+
* `invocation_type = 'cli' AND recorded_at_inject IS NULL` (a deliberate
|
|
179
|
+
* `cf skill invoke` agent pull that is not an inject-time auto-write).
|
|
180
|
+
*
|
|
181
|
+
* This is the single口径 the Workplace KPI and the Skill page header both read
|
|
182
|
+
* so they agree. It excludes:
|
|
183
|
+
* - `dynamic` keyword-matcher rows (reason "Auto-matched by keyword matching")
|
|
184
|
+
* — historical auto-matches, NOT deliberate calls (the old `invoked`口径
|
|
185
|
+
* wrongly counted them, inflating to ~166).
|
|
186
|
+
* - injected rows (`recorded_at_inject = 1`).
|
|
187
|
+
* It is NOT events.tool_name `realCalls` (=2, the MCP/Skill-tool path the main
|
|
188
|
+
* thread rarely uses — a different, far smaller口径).
|
|
189
|
+
*
|
|
190
|
+
* Walks `idx_skill_invocations_project` when projectPath is set, else
|
|
191
|
+
* `idx_skill_invocations_timestamp`.
|
|
192
|
+
*/
|
|
193
|
+
countGenuineSkillInvocations(filter) {
|
|
194
|
+
const conditions = [
|
|
195
|
+
`invocation_type = 'cli'`,
|
|
196
|
+
'recorded_at_inject IS NULL',
|
|
197
|
+
'timestamp >= ?',
|
|
198
|
+
];
|
|
199
|
+
const params = [filter.since];
|
|
200
|
+
if (filter.until !== undefined) {
|
|
201
|
+
conditions.push('timestamp < ?');
|
|
202
|
+
params.push(filter.until);
|
|
203
|
+
}
|
|
204
|
+
// decision 39839e30 Part 2: additive project filter.
|
|
205
|
+
if (filter.projectPath) {
|
|
206
|
+
conditions.push('project_path = ?');
|
|
207
|
+
params.push(filter.projectPath);
|
|
208
|
+
}
|
|
209
|
+
const row = this.db.prepare(`SELECT COUNT(*) AS cnt FROM skill_invocations WHERE ${conditions.join(' AND ')}`).get(...params);
|
|
210
|
+
return row?.cnt ?? 0;
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* audit #2: count of REAL skill calls from the `events` table — the only
|
|
214
|
+
* ground truth for "a skill was actually invoked". Reads only `tool_name`
|
|
215
|
+
* (never the gzip `tool_input`/`tool_output`), matching the documented
|
|
216
|
+
* gzip-content landmine guard.
|
|
217
|
+
*
|
|
218
|
+
* `tool_name` matched:
|
|
219
|
+
* - 'Skill' (Claude Code native Skill tool)
|
|
220
|
+
* - 'mcp__claude-forge__skill_invoke' (forge MCP skill_invoke mirror)
|
|
221
|
+
*
|
|
222
|
+
* `since` / `until` are unix ms; events.timestamp is an ISO string, so we
|
|
223
|
+
* compare on the ISO form (same convention as other event aggregates).
|
|
224
|
+
*/
|
|
225
|
+
countRealSkillCalls(filter) {
|
|
226
|
+
const sinceISO = new Date(filter.since).toISOString();
|
|
227
|
+
const conditions = [
|
|
228
|
+
`tool_name IN ('Skill', 'mcp__claude-forge__skill_invoke')`,
|
|
229
|
+
'timestamp >= ?',
|
|
230
|
+
];
|
|
231
|
+
const params = [sinceISO];
|
|
232
|
+
if (filter.until !== undefined) {
|
|
233
|
+
conditions.push('timestamp < ?');
|
|
234
|
+
params.push(new Date(filter.until).toISOString());
|
|
235
|
+
}
|
|
236
|
+
// decision 39839e30 Part 2: project filter on events.project_path so the
|
|
237
|
+
// headline "Skill 调用" KPI (which reads realCalls) actually changes per
|
|
238
|
+
// project. Additive — omit → all projects (legacy逐字不变).
|
|
239
|
+
if (filter.projectPath) {
|
|
240
|
+
conditions.push('project_path = ?');
|
|
241
|
+
params.push(filter.projectPath);
|
|
242
|
+
}
|
|
243
|
+
const row = this.db.prepare(`SELECT COUNT(*) AS cnt FROM events WHERE ${conditions.join(' AND ')}`).get(...params);
|
|
244
|
+
return row?.cnt ?? 0;
|
|
245
|
+
}
|
|
93
246
|
/**
|
|
94
247
|
* 按 route_request_id 聚合工作流进度。
|
|
95
248
|
*
|
|
@@ -173,5 +326,198 @@ export class SkillOperations {
|
|
|
173
326
|
const rows = this.db.prepare(`SELECT DISTINCT skill_id FROM skill_invocations WHERE session_id = ?`).all(session_id);
|
|
174
327
|
return rows.map(r => r.skill_id);
|
|
175
328
|
}
|
|
329
|
+
// ── Skill usefulness feedback (decision d24cd3a2 P0) ────────────────────────
|
|
330
|
+
//
|
|
331
|
+
// Agent POST-USE self-assessment. See base.ts runColumnMigrations + schema.sql
|
|
332
|
+
// for the two nullable columns. usefulness measures CONTENT actionability on
|
|
333
|
+
// THIS project's task; it is DISTINCT from the existing `success` column (which
|
|
334
|
+
// only means the invoke call didn't throw).
|
|
335
|
+
/**
|
|
336
|
+
* Stamp `usefulness` + `usefulness_note` onto the SINGLE most-recent un-rated
|
|
337
|
+
* skill_invocations row matching `session_id + skill_id` (usefulness IS NULL).
|
|
338
|
+
*
|
|
339
|
+
* Deterministic target rule: `ORDER BY timestamp DESC LIMIT 1` inside a
|
|
340
|
+
* subquery so we update exactly one row. Idempotent: only NULL rows are
|
|
341
|
+
* eligible, so re-running stamps the next-older un-rated pull (or affects 0
|
|
342
|
+
* once all are rated). Optional `sinceMs` guard avoids stamping a stale
|
|
343
|
+
* unrelated pull. Returns rows-affected (0 = nothing to stamp — caller treats
|
|
344
|
+
* that as a soft no-op, never an error).
|
|
345
|
+
*/
|
|
346
|
+
writeSkillUsefulness(args) {
|
|
347
|
+
const conditions = [
|
|
348
|
+
'session_id = ?',
|
|
349
|
+
'skill_id = ?',
|
|
350
|
+
'usefulness IS NULL',
|
|
351
|
+
];
|
|
352
|
+
const params = [args.session_id, args.skill_id];
|
|
353
|
+
if (args.sinceMs !== undefined) {
|
|
354
|
+
conditions.push('timestamp >= ?');
|
|
355
|
+
params.push(args.sinceMs);
|
|
356
|
+
}
|
|
357
|
+
const where = conditions.join(' AND ');
|
|
358
|
+
// UPDATE the latest matching un-rated row only. SQLite supports the
|
|
359
|
+
// `WHERE id = (SELECT ... LIMIT 1)` form for a single-row targeted update.
|
|
360
|
+
const sql = `
|
|
361
|
+
UPDATE skill_invocations
|
|
362
|
+
SET usefulness = ?, usefulness_note = ?
|
|
363
|
+
WHERE id = (
|
|
364
|
+
SELECT id FROM skill_invocations
|
|
365
|
+
WHERE ${where}
|
|
366
|
+
ORDER BY timestamp DESC
|
|
367
|
+
LIMIT 1
|
|
368
|
+
)
|
|
369
|
+
`;
|
|
370
|
+
const info = this.db.prepare(sql).run(args.usefulness, args.note ?? null, ...params);
|
|
371
|
+
return info.changes;
|
|
372
|
+
}
|
|
373
|
+
/**
|
|
374
|
+
* Per-skill usefulness aggregation — the P1 refinement consumer's input.
|
|
375
|
+
*
|
|
376
|
+
* GROUP BY skill_id over rows that HAVE a usefulness rating
|
|
377
|
+
* (`usefulness IS NOT NULL`). `actionable_rate = helped / total_rated`
|
|
378
|
+
* (STRICT helped-only, per decision d24cd3a2 Q3). Un-rated pulls are reported
|
|
379
|
+
* separately as `pending` (NOT in the rate denominator). Sorted worst
|
|
380
|
+
* actionable_rate FIRST so the least-useful skills surface for refinement;
|
|
381
|
+
* ties broken by higher total_rated (more evidence first). Walks
|
|
382
|
+
* `idx_skill_invocations_timestamp`.
|
|
383
|
+
*/
|
|
384
|
+
aggregateSkillUsefulness(filter = {}) {
|
|
385
|
+
const limit = filter.limit ?? 1000;
|
|
386
|
+
const conditions = [];
|
|
387
|
+
const params = [];
|
|
388
|
+
if (filter.since !== undefined) {
|
|
389
|
+
conditions.push('timestamp >= ?');
|
|
390
|
+
params.push(filter.since);
|
|
391
|
+
}
|
|
392
|
+
if (filter.until !== undefined) {
|
|
393
|
+
conditions.push('timestamp < ?');
|
|
394
|
+
params.push(filter.until);
|
|
395
|
+
}
|
|
396
|
+
// decision 39839e30 Part 2: additive project filter (see aggregateSkillInvocationsBySkill).
|
|
397
|
+
if (filter.projectPath) {
|
|
398
|
+
conditions.push('project_path = ?');
|
|
399
|
+
params.push(filter.projectPath);
|
|
400
|
+
}
|
|
401
|
+
const where = conditions.length > 0 ? `WHERE ${conditions.join(' AND ')}` : '';
|
|
402
|
+
params.push(limit);
|
|
403
|
+
const rows = this.db.prepare(`
|
|
404
|
+
SELECT skill_id,
|
|
405
|
+
SUM(CASE WHEN usefulness = 'helped' THEN 1 ELSE 0 END) AS helped,
|
|
406
|
+
SUM(CASE WHEN usefulness = 'partial' THEN 1 ELSE 0 END) AS partial,
|
|
407
|
+
SUM(CASE WHEN usefulness = 'not-actionable' THEN 1 ELSE 0 END) AS not_actionable,
|
|
408
|
+
SUM(CASE WHEN usefulness IS NOT NULL THEN 1 ELSE 0 END) AS total_rated,
|
|
409
|
+
SUM(CASE WHEN usefulness IS NULL THEN 1 ELSE 0 END) AS pending
|
|
410
|
+
FROM skill_invocations
|
|
411
|
+
${where}
|
|
412
|
+
GROUP BY skill_id
|
|
413
|
+
LIMIT ?
|
|
414
|
+
`).all(...params);
|
|
415
|
+
return rows
|
|
416
|
+
.map(r => {
|
|
417
|
+
const total_rated = r.total_rated ?? 0;
|
|
418
|
+
const helped = r.helped ?? 0;
|
|
419
|
+
// STRICT: helped-only over rated rows. Divide-by-zero → 0 when nothing
|
|
420
|
+
// is rated yet (all pulls still pending).
|
|
421
|
+
const actionable_rate = total_rated > 0 ? helped / total_rated : 0;
|
|
422
|
+
return {
|
|
423
|
+
skill_id: r.skill_id,
|
|
424
|
+
total_rated,
|
|
425
|
+
helped,
|
|
426
|
+
partial: r.partial ?? 0,
|
|
427
|
+
not_actionable: r.not_actionable ?? 0,
|
|
428
|
+
pending: r.pending ?? 0,
|
|
429
|
+
actionable_rate,
|
|
430
|
+
};
|
|
431
|
+
})
|
|
432
|
+
// Only surface skills that have at least one rating in the rate ranking;
|
|
433
|
+
// wholly-pending skills (total_rated=0) sort last so real signal is on top.
|
|
434
|
+
.sort((a, b) => {
|
|
435
|
+
if (a.total_rated === 0 && b.total_rated === 0)
|
|
436
|
+
return 0;
|
|
437
|
+
if (a.total_rated === 0)
|
|
438
|
+
return 1;
|
|
439
|
+
if (b.total_rated === 0)
|
|
440
|
+
return -1;
|
|
441
|
+
if (a.actionable_rate !== b.actionable_rate)
|
|
442
|
+
return a.actionable_rate - b.actionable_rate;
|
|
443
|
+
return b.total_rated - a.total_rated;
|
|
444
|
+
});
|
|
445
|
+
}
|
|
446
|
+
/**
|
|
447
|
+
* Per-(agent, skill) usefulness aggregation — the (agent,skill) pairing
|
|
448
|
+
* closed-loop metric input for Agent 体检 (decision 234f1ad4, Phase 1).
|
|
449
|
+
*
|
|
450
|
+
* Grouping key is the `reason` workflow PREFIX
|
|
451
|
+
* (`substr(reason,1,instr(reason,'/')-1)`) × `skill_id`, NOT `agent_id`:
|
|
452
|
+
* `skill_invocations.agent_id` is empirically all-NULL across the whole DB
|
|
453
|
+
* (the CLI `cf skill invoke` path never wrote it; only MCP did, and subagents
|
|
454
|
+
* have zero MCP — see spec increment P1-1 / Q6). The reason prefix is the
|
|
455
|
+
* proxy agent key that today carries real per-agent data
|
|
456
|
+
* (coder/verify/decision/safetynet/planner/harness).
|
|
457
|
+
*
|
|
458
|
+
* Only rows with a parseable `<x>/<y>` reason and `invocation_type='cli'` are
|
|
459
|
+
* counted; rows whose reason has no `/` are归入 the `<unknown>` bucket and not
|
|
460
|
+
* attributed to any real agent (per spec compat note). `timestamp` is INTEGER
|
|
461
|
+
* ms. `actionable_rate = helped / total_rated` (STRICT helped-only, d24cd3a2 Q3).
|
|
462
|
+
*/
|
|
463
|
+
aggregateSkillUsefulnessByAgent(filter = {}) {
|
|
464
|
+
const limit = filter.limit ?? 2000;
|
|
465
|
+
const conditions = ["invocation_type = 'cli'", "reason LIKE '%/%'"];
|
|
466
|
+
const params = [];
|
|
467
|
+
if (filter.since !== undefined) {
|
|
468
|
+
conditions.push('timestamp >= ?');
|
|
469
|
+
params.push(filter.since);
|
|
470
|
+
}
|
|
471
|
+
if (filter.until !== undefined) {
|
|
472
|
+
conditions.push('timestamp < ?');
|
|
473
|
+
params.push(filter.until);
|
|
474
|
+
}
|
|
475
|
+
if (filter.projectPath) {
|
|
476
|
+
conditions.push('project_path = ?');
|
|
477
|
+
params.push(filter.projectPath);
|
|
478
|
+
}
|
|
479
|
+
const where = `WHERE ${conditions.join(' AND ')}`;
|
|
480
|
+
params.push(limit);
|
|
481
|
+
const rows = this.db.prepare(`
|
|
482
|
+
SELECT CASE WHEN instr(reason, '/') > 1
|
|
483
|
+
THEN substr(reason, 1, instr(reason, '/') - 1)
|
|
484
|
+
ELSE '<unknown>' END AS agent,
|
|
485
|
+
skill_id,
|
|
486
|
+
COUNT(*) AS pulls,
|
|
487
|
+
SUM(CASE WHEN usefulness = 'helped' THEN 1 ELSE 0 END) AS helped,
|
|
488
|
+
SUM(CASE WHEN usefulness = 'partial' THEN 1 ELSE 0 END) AS partial,
|
|
489
|
+
SUM(CASE WHEN usefulness = 'not-actionable' THEN 1 ELSE 0 END) AS not_actionable,
|
|
490
|
+
SUM(CASE WHEN usefulness IS NOT NULL THEN 1 ELSE 0 END) AS total_rated,
|
|
491
|
+
SUM(CASE WHEN usefulness IS NULL THEN 1 ELSE 0 END) AS pending
|
|
492
|
+
FROM skill_invocations
|
|
493
|
+
${where}
|
|
494
|
+
GROUP BY agent, skill_id
|
|
495
|
+
LIMIT ?
|
|
496
|
+
`).all(...params);
|
|
497
|
+
return rows
|
|
498
|
+
.map(r => {
|
|
499
|
+
const total_rated = r.total_rated ?? 0;
|
|
500
|
+
const helped = r.helped ?? 0;
|
|
501
|
+
const actionable_rate = total_rated > 0 ? helped / total_rated : 0;
|
|
502
|
+
return {
|
|
503
|
+
agent: r.agent,
|
|
504
|
+
skill_id: r.skill_id,
|
|
505
|
+
pulls: r.pulls ?? 0,
|
|
506
|
+
helped,
|
|
507
|
+
partial: r.partial ?? 0,
|
|
508
|
+
not_actionable: r.not_actionable ?? 0,
|
|
509
|
+
total_rated,
|
|
510
|
+
pending: r.pending ?? 0,
|
|
511
|
+
actionable_rate,
|
|
512
|
+
};
|
|
513
|
+
})
|
|
514
|
+
.sort((a, b) => {
|
|
515
|
+
if (a.agent !== b.agent)
|
|
516
|
+
return a.agent.localeCompare(b.agent);
|
|
517
|
+
if (a.actionable_rate !== b.actionable_rate)
|
|
518
|
+
return a.actionable_rate - b.actionable_rate;
|
|
519
|
+
return b.pulls - a.pulls;
|
|
520
|
+
});
|
|
521
|
+
}
|
|
176
522
|
}
|
|
177
523
|
//# sourceMappingURL=skills.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../../../src/core/storage/skills.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../../../src/core/storage/skills.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,25 +30,22 @@ import { KnowledgeOperations } from './knowledge.js';
|
|
|
30
30
|
import type { ForgeConfigRow } from './forge-config.js';
|
|
31
31
|
import { ToolInterceptsOperations } from './tool-intercepts.js';
|
|
32
32
|
import type { ToolInterceptRecord, ToolInterceptRow, ToolInterceptOutcome } from './tool-intercepts.js';
|
|
33
|
-
import { WorkflowRecommendationsOperations } from './workflow-recommendations.js';
|
|
34
|
-
import type { WorkflowRecommendationRecord, WorkflowRecommendationRow, WorkflowRecommendationsFilter, WorkflowRecommendationOutcome, AgentBoardCardRow } from './workflow-recommendations.js';
|
|
35
33
|
import { DecisionsOperations } from './decisions.js';
|
|
36
34
|
import type { DecisionRecord, DecisionUpdate, DecisionsFilter, DecisionRow, DecisionOutcome, SpecRegisterRecord } from './decisions.js';
|
|
37
|
-
import type { RuleViolationCount, InterceptObeyedRow,
|
|
35
|
+
import type { RuleViolationCount, InterceptObeyedRow, InterceptRuleAggregate, SkillAggregate, SkillTopRow, SessionOutcomeRow, KbInjectionMetadataRow, InterceptDecisionCountsRow } from './feedback.js';
|
|
38
36
|
import type { SkillInvocationRow } from './rows.js';
|
|
39
37
|
import type { RoutingEventRecord, RoutingEventRow } from './routing.js';
|
|
40
38
|
import type { SessionSummary, AgentBoardSessionRow } from './sessions.js';
|
|
41
39
|
import type { Injection } from './injections.js';
|
|
42
|
-
import type { TaskRecord, AgentBoardTaskRow, AgentBoardPromptRow } from './tasks.js';
|
|
40
|
+
import type { TaskRecord, TaskKbPullRow, AgentBoardTaskRow, AgentBoardPromptRow, AgentBoardPromptWindowAggregates } from './tasks.js';
|
|
43
41
|
export type { EventRow, SessionRow, InjectionRow, TaskRow, SkillInvocationRow, } from './rows.js';
|
|
44
42
|
export type { SessionSummary, AgentBoardSessionRow } from './sessions.js';
|
|
45
43
|
export type { Injection } from './injections.js';
|
|
46
|
-
export type { TaskRecord, TaskFilter, TaskPage, AgentBoardTaskRow, AgentBoardPromptRow } from './tasks.js';
|
|
44
|
+
export type { TaskRecord, TaskKbPullRow, TaskFilter, TaskPage, AgentBoardTaskRow, AgentBoardPromptRow, AgentBoardPromptWindowAggregates, AgentBoardOutcomeFilter } from './tasks.js';
|
|
47
45
|
export type { RoutingEventRecord, RoutingEventRow } from './routing.js';
|
|
48
46
|
export type { KbQueryLogEntry, KbStatsRow, KbBuildLogEntry, KbBuildLogRow, } from './knowledge.js';
|
|
49
47
|
export type { ForgeConfigRow } from './forge-config.js';
|
|
50
48
|
export type { ToolInterceptRecord, ToolInterceptRow, ToolInterceptDecision, ToolInterceptOutcome, } from './tool-intercepts.js';
|
|
51
|
-
export type { WorkflowRecommendationRecord, WorkflowRecommendationRow, WorkflowRecommendationsFilter, WorkflowRecommendationOutcome, AgentBoardCardRow, } from './workflow-recommendations.js';
|
|
52
49
|
export type { DecisionRecord, DecisionUpdate, DecisionsFilter, DecisionRow, DecisionStatus, DecisionKind, DecisionOutcome, SpecRegisterRecord, SpecLikeRow, } from './decisions.js';
|
|
53
50
|
export { toSpecLikeRow, DECISION_OUTCOMES } from './decisions.js';
|
|
54
51
|
export declare class SQLiteStorage extends EventEmitter {
|
|
@@ -63,7 +60,6 @@ export declare class SQLiteStorage extends EventEmitter {
|
|
|
63
60
|
private knowledge;
|
|
64
61
|
private forgeConfig;
|
|
65
62
|
private toolIntercepts;
|
|
66
|
-
private workflowRecs;
|
|
67
63
|
private decisions;
|
|
68
64
|
private feedback;
|
|
69
65
|
constructor(dbPath: string);
|
|
@@ -74,6 +70,10 @@ export declare class SQLiteStorage extends EventEmitter {
|
|
|
74
70
|
queryEvents(filter: Parameters<EventOperations['queryEvents']>[0]): ForgeEvent[];
|
|
75
71
|
/** Point lookup of a single event by event_id (used by pipeline ?event_id). */
|
|
76
72
|
getEventById(eventId: string): ForgeEvent | null;
|
|
73
|
+
/** Backfill ai_response (plain text, NOT gzip) for a violation window — spec 1446. */
|
|
74
|
+
updateEventAiResponse(eventId: string, text: string): void;
|
|
75
|
+
/** Inline-edit (PostToolUse Edit/Write/NotebookEdit) rows for a session in an ISO window — spec 1446. */
|
|
76
|
+
queryInlineEditEvents(opts: Parameters<EventOperations['queryInlineEditEvents']>[0]): ForgeEvent[];
|
|
77
77
|
countEvents(filter?: Parameters<EventOperations['countEvents']>[0]): number;
|
|
78
78
|
searchEvents(filter: Parameters<EventOperations['searchEvents']>[0]): ForgeEvent[];
|
|
79
79
|
/**
|
|
@@ -88,6 +88,18 @@ export declare class SQLiteStorage extends EventEmitter {
|
|
|
88
88
|
aggregateHookTypeBySession(session_id: string): ReturnType<EventOperations['aggregateHookTypeBySession']>;
|
|
89
89
|
aggregateAgentTypeBySession(session_id: string): ReturnType<EventOperations['aggregateAgentTypeBySession']>;
|
|
90
90
|
aggregateToolUsageBySession(session_id: string): ReturnType<EventOperations['aggregateToolUsageBySession']>;
|
|
91
|
+
aggregateAgentSpawns(opts: Parameters<EventOperations['aggregateAgentSpawns']>[0]): ReturnType<EventOperations['aggregateAgentSpawns']>;
|
|
92
|
+
/** decision c425f26f: cross-task workflow spawns grouped by decision_id. */
|
|
93
|
+
queryWorkflowSpawnsByDecisionId(decisionId: string): ReturnType<EventOperations['queryWorkflowSpawnsByDecisionId']>;
|
|
94
|
+
/** decision c425f26f: resolve a task's home decision_id (plaintext column, no gzip). */
|
|
95
|
+
queryTaskDecisionId(taskId: string): string | null;
|
|
96
|
+
/**
|
|
97
|
+
* decision c425f26f (user ruling #3): re-runnable backfill of the plaintext
|
|
98
|
+
* events.decision_id / subagent_type columns. Boot-time runs the gated variant
|
|
99
|
+
* automatically; this exposes the engine for `cf maintenance backfill-spawn-fields`.
|
|
100
|
+
* Returns the number of rows updated.
|
|
101
|
+
*/
|
|
102
|
+
backfillEventsDecisionId(): number;
|
|
91
103
|
countActiveDays(opts: Parameters<EventOperations['countActiveDays']>[0]): number;
|
|
92
104
|
aggregateOverviewByRange(opts: Parameters<EventOperations['aggregateOverviewByRange']>[0]): ReturnType<EventOperations['aggregateOverviewByRange']>;
|
|
93
105
|
queryDistinctProjects(opts: Parameters<EventOperations['queryDistinctProjects']>[0]): string[];
|
|
@@ -131,6 +143,26 @@ export declare class SQLiteStorage extends EventEmitter {
|
|
|
131
143
|
countInjectionsBySessionByHandler(session_id: string, source_handler?: string): number;
|
|
132
144
|
/** Phase 2d pipeline-view batch helper. See InjectionOperations.queryBySessions. */
|
|
133
145
|
queryInjectionsBySessions(sessionIds: string[]): Injection[];
|
|
146
|
+
/**
|
|
147
|
+
* KB 采纳 telemetry(decision 148f7a0a)。
|
|
148
|
+
* See InjectionOperations.writeKbInjectionAdoption.
|
|
149
|
+
*/
|
|
150
|
+
writeKbInjectionAdoption(session_id: string, adopted_at: number): number;
|
|
151
|
+
/** KB 采纳率读路径(decision 148f7a0a)。See InjectionOperations.countKbAdoption. */
|
|
152
|
+
countKbAdoption(sinceIso: string): {
|
|
153
|
+
total: number;
|
|
154
|
+
adopted: number;
|
|
155
|
+
};
|
|
156
|
+
/**
|
|
157
|
+
* LOOP HINT 采纳 telemetry(decision e7d13697, Option C)。
|
|
158
|
+
* See InjectionOperations.writeLoopHintAdoption.
|
|
159
|
+
*/
|
|
160
|
+
writeLoopHintAdoption(session_id: string, adopted_at: number): number;
|
|
161
|
+
/** LOOP HINT 采纳率读路径(decision e7d13697)。See InjectionOperations.countLoopHintAdoption. */
|
|
162
|
+
countLoopHintAdoption(sinceIso: string): {
|
|
163
|
+
total: number;
|
|
164
|
+
adopted: number;
|
|
165
|
+
};
|
|
134
166
|
writeTask(task: {
|
|
135
167
|
id: string;
|
|
136
168
|
session_id: string;
|
|
@@ -139,7 +171,20 @@ export declare class SQLiteStorage extends EventEmitter {
|
|
|
139
171
|
is_noise?: boolean;
|
|
140
172
|
/** spec b1480935 (2026-06-01): per-task classification. */
|
|
141
173
|
task_kind?: import('./tasks.js').TaskKind;
|
|
174
|
+
/** decision f47c2c90 (二期B): self-FK to the originating user task (nullable). */
|
|
175
|
+
parent_task_id?: string | null;
|
|
142
176
|
}): void;
|
|
177
|
+
/** decision f47c2c90 (二期B): idempotent parent link. See TaskOperations.setTaskParent. */
|
|
178
|
+
setTaskParent(taskId: string, parentTaskId: string): void;
|
|
179
|
+
/** decision f47c2c90 (二期B): triple-gate parent candidate lookup. See TaskOperations.getMostRecentUserTaskBefore. */
|
|
180
|
+
getMostRecentUserTaskBefore(opts: Parameters<TaskOperations['getMostRecentUserTaskBefore']>[0]): string | null;
|
|
181
|
+
/** decision f47c2c90 (二期B): parent-chain spawn aggregation. See TaskOperations.queryParentTaskChainSpawns. */
|
|
182
|
+
queryParentTaskChainSpawns(anchorTaskId: string): ReturnType<TaskOperations['queryParentTaskChainSpawns']>;
|
|
183
|
+
/**
|
|
184
|
+
* decision ed5c3e93 (per-turn human input): read plaintext UserPromptSubmit
|
|
185
|
+
* user_prompt rows for a set of tasks. See TaskOperations.queryUserPromptsByTaskIds.
|
|
186
|
+
*/
|
|
187
|
+
queryUserPromptsByTaskIds(taskIds: string[]): ReturnType<TaskOperations['queryUserPromptsByTaskIds']>;
|
|
143
188
|
updateTask(taskId: string, updates: Parameters<TaskOperations['updateTask']>[1]): void;
|
|
144
189
|
linkEventToTask(taskId: string, eventId: string): void;
|
|
145
190
|
/**
|
|
@@ -213,6 +258,8 @@ export declare class SQLiteStorage extends EventEmitter {
|
|
|
213
258
|
resumeTask(taskId: string): void;
|
|
214
259
|
queryInjectionsByTaskId(taskId: string): Injection[];
|
|
215
260
|
querySkillInvocationsByTaskWindow(taskId: string, opts?: Parameters<TaskOperations['querySkillInvocationsByTaskWindow']>[1]): SkillInvocationRow[];
|
|
261
|
+
/** Agent 主动 pull 的 KB(任务窗内,按 project+时间窗+reason scope)。See TaskOperations.queryTaskKbPulls. */
|
|
262
|
+
queryTaskKbPulls(taskId: string, opts?: Parameters<TaskOperations['queryTaskKbPulls']>[1]): TaskKbPullRow[];
|
|
216
263
|
/**
|
|
217
264
|
* Task-centric agent board projection (v3). See TaskOperations.queryAgentBoardTasks.
|
|
218
265
|
*/
|
|
@@ -233,6 +280,13 @@ export declare class SQLiteStorage extends EventEmitter {
|
|
|
233
280
|
* paginator's total when ?rows=prompt. See countAgentBoardPromptRows.
|
|
234
281
|
*/
|
|
235
282
|
countAgentBoardPromptRows(opts: Parameters<TaskOperations['countAgentBoardPromptRows']>[0]): number;
|
|
283
|
+
/**
|
|
284
|
+
* Window-level distinct-task aggregates for the prompt-rows list view
|
|
285
|
+
* (2026-06-10 KPI 分页假象 fix). Same WHERE 口径 as countAgentBoardPromptRows;
|
|
286
|
+
* drives "总任务数 / 失败 / 平均时长" KPIs + outcome tab counts unbounded by
|
|
287
|
+
* the page LIMIT. See TaskOperations.queryAgentBoardPromptWindowAggregates.
|
|
288
|
+
*/
|
|
289
|
+
queryAgentBoardPromptWindowAggregates(opts: Parameters<TaskOperations['queryAgentBoardPromptWindowAggregates']>[0]): AgentBoardPromptWindowAggregates;
|
|
236
290
|
/**
|
|
237
291
|
* v6 Batch 1 (spec 1750 § B1-3): trivial task counter for DaemonObserverBadge.
|
|
238
292
|
* Counts `tasks WHERE is_noise=1 AND start_time >= sinceIso`.
|
|
@@ -257,17 +311,26 @@ export declare class SQLiteStorage extends EventEmitter {
|
|
|
257
311
|
getRecentPendingRoutingEvent(sessionId: string): {
|
|
258
312
|
id: number;
|
|
259
313
|
} | null;
|
|
314
|
+
/** P3 (audit e888352d): re-label this session's still-pending routing rows as 'none' at Stop. */
|
|
315
|
+
markPendingRoutingEventsResolved(sessionId: string): number;
|
|
260
316
|
getExperimentAssignment(sessionId: string, experimentId: string): string | null;
|
|
261
317
|
setExperimentAssignment(sessionId: string, experimentId: string, groupId: string): void;
|
|
262
318
|
queryExperimentStats(experimentId: string): ReturnType<RoutingOperations['queryExperimentStats']>;
|
|
263
319
|
writeSkillInvocation(row: Omit<SkillInvocationRow, 'created_at'>): void;
|
|
320
|
+
backfillSkillInvocationProjectPath(): number;
|
|
264
321
|
querySkillInvocations(filter?: Parameters<SkillOperations['querySkillInvocations']>[0]): SkillInvocationRow[];
|
|
265
322
|
aggregateSkillInvocationsBySkill(filter: Parameters<SkillOperations['aggregateSkillInvocationsBySkill']>[0]): ReturnType<SkillOperations['aggregateSkillInvocationsBySkill']>;
|
|
323
|
+
aggregateSkillInjectVsInvoke(filter: Parameters<SkillOperations['aggregateSkillInjectVsInvoke']>[0]): ReturnType<SkillOperations['aggregateSkillInjectVsInvoke']>;
|
|
324
|
+
countRealSkillCalls(filter: Parameters<SkillOperations['countRealSkillCalls']>[0]): ReturnType<SkillOperations['countRealSkillCalls']>;
|
|
325
|
+
countGenuineSkillInvocations(filter: Parameters<SkillOperations['countGenuineSkillInvocations']>[0]): ReturnType<SkillOperations['countGenuineSkillInvocations']>;
|
|
266
326
|
queryWorkflowProgress(filter?: Parameters<SkillOperations['queryWorkflowProgress']>[0]): ReturnType<SkillOperations['queryWorkflowProgress']>;
|
|
267
327
|
countAllSkillInvocations(): number;
|
|
268
328
|
countSkillInvocationsBySession(session_id: string): number;
|
|
269
329
|
countDistinctSkillsSince(since_ms: number): number;
|
|
270
330
|
queryDistinctSkillIdsBySession(session_id: string): string[];
|
|
331
|
+
writeSkillUsefulness(args: Parameters<SkillOperations['writeSkillUsefulness']>[0]): number;
|
|
332
|
+
aggregateSkillUsefulness(filter?: Parameters<SkillOperations['aggregateSkillUsefulness']>[0]): ReturnType<SkillOperations['aggregateSkillUsefulness']>;
|
|
333
|
+
aggregateSkillUsefulnessByAgent(filter?: Parameters<SkillOperations['aggregateSkillUsefulnessByAgent']>[0]): ReturnType<SkillOperations['aggregateSkillUsefulnessByAgent']>;
|
|
271
334
|
cleanOldData(daysToKeep?: number): ReturnType<MaintenanceOperations['cleanOldData']>;
|
|
272
335
|
runMaintenance(maxSizeMb: number): void;
|
|
273
336
|
vacuum(): void;
|
|
@@ -277,7 +340,15 @@ export declare class SQLiteStorage extends EventEmitter {
|
|
|
277
340
|
*/
|
|
278
341
|
incrementalVacuum(maxPages?: number): number;
|
|
279
342
|
writeKbQueryLog(entry: Parameters<KnowledgeOperations['writeKbQueryLog']>[0]): void;
|
|
343
|
+
queryKbQueryLog(filter?: Parameters<KnowledgeOperations['queryKbQueryLog']>[0]): ReturnType<KnowledgeOperations['queryKbQueryLog']>;
|
|
344
|
+
writeKbUsefulness(args: Parameters<KnowledgeOperations['writeKbUsefulness']>[0]): number;
|
|
345
|
+
aggregateKbUsefulness(filter?: Parameters<KnowledgeOperations['aggregateKbUsefulness']>[0]): ReturnType<KnowledgeOperations['aggregateKbUsefulness']>;
|
|
346
|
+
aggregateKbUsefulnessByAgent(filter?: Parameters<KnowledgeOperations['aggregateKbUsefulnessByAgent']>[0]): ReturnType<KnowledgeOperations['aggregateKbUsefulnessByAgent']>;
|
|
280
347
|
queryKbStats(projectPath: string): ReturnType<KnowledgeOperations['queryKbStats']>;
|
|
348
|
+
queryAgentKbPulls(filter?: Parameters<KnowledgeOperations['queryAgentKbPulls']>[0]): ReturnType<KnowledgeOperations['queryAgentKbPulls']>;
|
|
349
|
+
/** Genuine agent KB pull count for the「KB 调用」KPI (decision 64d37b1d). */
|
|
350
|
+
countAgentKbPulls(filter?: Parameters<KnowledgeOperations['countAgentKbPulls']>[0]): number;
|
|
351
|
+
queryKbCitedPages(filter?: Parameters<KnowledgeOperations['queryKbCitedPages']>[0]): ReturnType<KnowledgeOperations['queryKbCitedPages']>;
|
|
281
352
|
writeKbBuildLog(entry: Parameters<KnowledgeOperations['writeKbBuildLog']>[0]): void;
|
|
282
353
|
updateKbBuildLog(buildId: string, updates: Parameters<KnowledgeOperations['updateKbBuildLog']>[1]): void;
|
|
283
354
|
queryLastKbBuild(projectPath: string): ReturnType<KnowledgeOperations['queryLastKbBuild']>;
|
|
@@ -301,19 +372,6 @@ export declare class SQLiteStorage extends EventEmitter {
|
|
|
301
372
|
updateToolInterceptOutcome(id: number, outcome: ToolInterceptOutcome): void;
|
|
302
373
|
/** Phase 2d pipeline-view batch helper. See ToolInterceptsOperations.queryBySessions. */
|
|
303
374
|
queryToolInterceptsBySessions(sessionIds: string[]): ToolInterceptRow[];
|
|
304
|
-
writeWorkflowRecommendation(record: WorkflowRecommendationRecord): number;
|
|
305
|
-
queryWorkflowRecommendations(filter?: WorkflowRecommendationsFilter): WorkflowRecommendationRow[];
|
|
306
|
-
updateWorkflowRecommendationOutcome(id: number, outcome: WorkflowRecommendationOutcome, outcome_at?: string): void;
|
|
307
|
-
markPendingWorkflowRecommendationsIgnored(session_id: string, outcome_at?: string): number;
|
|
308
|
-
markPendingWorkflowRecommendationsRejected(session_id: string, outcome_at?: string): number;
|
|
309
|
-
countWorkflowRecommendationsBySession(session_id: string): number;
|
|
310
|
-
/**
|
|
311
|
-
* Kanban board projection — see WorkflowRecommendationsOperations docstring.
|
|
312
|
-
* Returns one row per recommendation joined with session + spawn + KB inj.
|
|
313
|
-
*/
|
|
314
|
-
queryAgentBoardCards(opts: Parameters<WorkflowRecommendationsOperations['queryAgentBoardCards']>[0]): AgentBoardCardRow[];
|
|
315
|
-
/** Phase 2d pipeline-view batch helper. See WorkflowRecommendationsOperations.queryBySessions. */
|
|
316
|
-
queryWorkflowRecommendationsBySessions(sessionIds: string[]): WorkflowRecommendationRow[];
|
|
317
375
|
writeDecision(record: DecisionRecord): number;
|
|
318
376
|
getDecision(id: string): DecisionRow | null;
|
|
319
377
|
updateDecision(id: string, update: DecisionUpdate): void;
|
|
@@ -354,17 +412,15 @@ export declare class SQLiteStorage extends EventEmitter {
|
|
|
354
412
|
listSpecsBySessionPending(session_id: string, limit?: number): DecisionRow[];
|
|
355
413
|
querySpecsBySessions(sessionIds: string[]): DecisionRow[];
|
|
356
414
|
expireOldSpecs(now_iso?: string): number;
|
|
357
|
-
queryInterceptObeyedSummary(sinceIso: string): InterceptObeyedRow;
|
|
415
|
+
queryInterceptObeyedSummary(sinceIso: string, projectPath?: string): InterceptObeyedRow;
|
|
358
416
|
queryInterceptDecisionCounts(sinceIso: string): InterceptDecisionCountsRow;
|
|
359
417
|
queryTopInterceptRuleViolations(sinceIso: string, limit?: number): RuleViolationCount[];
|
|
360
418
|
queryInterceptRuleAggregates(sinceIso: string): InterceptRuleAggregate[];
|
|
361
|
-
|
|
362
|
-
queryWorkflowRuleAggregates(sinceIso: string): WorkflowRuleAggregate[];
|
|
363
|
-
countKbInjections(sinceIso: string): number;
|
|
419
|
+
countKbInjections(sinceIso: string, projectPath?: string): number;
|
|
364
420
|
queryKbInjectionMetadata(sinceIso: string): KbInjectionMetadataRow[];
|
|
365
421
|
queryTopSkillInvocations(sinceMillis: number, limit?: number): SkillTopRow[];
|
|
366
422
|
querySkillAggregates(sinceMillis: number): SkillAggregate[];
|
|
367
|
-
querySessionOutcomeDistribution(sinceIso: string): SessionOutcomeRow[];
|
|
423
|
+
querySessionOutcomeDistribution(sinceIso: string, projectPath?: string): SessionOutcomeRow[];
|
|
368
424
|
close(): void;
|
|
369
425
|
}
|
|
370
426
|
//# sourceMappingURL=sqlite.d.ts.map
|