@winspan/claude-forge 8.54.3 → 9.2.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 +649 -33
- package/README.md +155 -17
- package/dist/catalogs/agents.json +72 -0
- package/dist/catalogs/skills.json +194 -0
- package/dist/claudemd/claudemd-generator.d.ts +45 -45
- package/dist/claudemd/claudemd-generator.d.ts.map +1 -1
- package/dist/claudemd/claudemd-generator.js +128 -449
- package/dist/claudemd/claudemd-generator.js.map +1 -1
- package/dist/claudemd/index.d.ts +14 -4
- package/dist/claudemd/index.d.ts.map +1 -1
- package/dist/claudemd/index.js +15 -4
- package/dist/claudemd/index.js.map +1 -1
- package/dist/claudemd/resume-manager.d.ts.map +1 -1
- package/dist/claudemd/resume-manager.js +37 -9
- package/dist/claudemd/resume-manager.js.map +1 -1
- package/dist/claudemd/templates/swarm-protocol.md +35 -186
- package/dist/claudemd/violations-manager.d.ts +40 -0
- package/dist/claudemd/violations-manager.d.ts.map +1 -0
- package/dist/claudemd/violations-manager.js +106 -0
- package/dist/claudemd/violations-manager.js.map +1 -0
- package/dist/cli/commands/admin.d.ts +15 -0
- package/dist/cli/commands/admin.d.ts.map +1 -0
- package/dist/cli/commands/admin.js +177 -0
- package/dist/cli/commands/admin.js.map +1 -0
- package/dist/cli/commands/agents.d.ts +18 -0
- package/dist/cli/commands/agents.d.ts.map +1 -0
- package/dist/cli/commands/agents.js +160 -0
- package/dist/cli/commands/agents.js.map +1 -0
- package/dist/cli/commands/bypass.d.ts +18 -0
- package/dist/cli/commands/bypass.d.ts.map +1 -0
- package/dist/cli/commands/bypass.js +87 -0
- package/dist/cli/commands/bypass.js.map +1 -0
- package/dist/cli/commands/claudemd.d.ts +60 -0
- package/dist/cli/commands/claudemd.d.ts.map +1 -1
- package/dist/cli/commands/claudemd.js +174 -37
- package/dist/cli/commands/claudemd.js.map +1 -1
- package/dist/cli/commands/config.d.ts.map +1 -1
- package/dist/cli/commands/config.js +94 -1
- package/dist/cli/commands/config.js.map +1 -1
- package/dist/cli/commands/daemon.d.ts +39 -0
- package/dist/cli/commands/daemon.d.ts.map +1 -1
- package/dist/cli/commands/daemon.js +167 -20
- package/dist/cli/commands/daemon.js.map +1 -1
- package/dist/cli/commands/decisions.d.ts +129 -0
- package/dist/cli/commands/decisions.d.ts.map +1 -0
- package/dist/cli/commands/decisions.js +669 -0
- package/dist/cli/commands/decisions.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts +29 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -0
- package/dist/cli/commands/doctor.js +124 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/entropy.d.ts +35 -0
- package/dist/cli/commands/entropy.d.ts.map +1 -0
- package/dist/cli/commands/entropy.js +121 -0
- package/dist/cli/commands/entropy.js.map +1 -0
- package/dist/cli/commands/executions.d.ts +1 -0
- package/dist/cli/commands/executions.d.ts.map +1 -1
- package/dist/cli/commands/executions.js +10 -1
- package/dist/cli/commands/executions.js.map +1 -1
- package/dist/cli/commands/fix.d.ts +31 -0
- package/dist/cli/commands/fix.d.ts.map +1 -0
- package/dist/cli/commands/fix.js +108 -0
- package/dist/cli/commands/fix.js.map +1 -0
- package/dist/cli/commands/governance.d.ts +21 -0
- package/dist/cli/commands/governance.d.ts.map +1 -0
- package/dist/cli/commands/governance.js +60 -0
- package/dist/cli/commands/governance.js.map +1 -0
- package/dist/cli/commands/init.d.ts +27 -0
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +158 -146
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/insights-goal-check.d.ts +50 -0
- package/dist/cli/commands/insights-goal-check.d.ts.map +1 -0
- package/dist/cli/commands/insights-goal-check.js +318 -0
- package/dist/cli/commands/insights-goal-check.js.map +1 -0
- package/dist/cli/commands/insights.d.ts +15 -0
- package/dist/cli/commands/insights.d.ts.map +1 -0
- package/dist/cli/commands/insights.js +127 -0
- package/dist/cli/commands/insights.js.map +1 -0
- package/dist/cli/commands/knowledge.d.ts +66 -0
- package/dist/cli/commands/knowledge.d.ts.map +1 -0
- package/dist/cli/commands/knowledge.js +897 -0
- package/dist/cli/commands/knowledge.js.map +1 -0
- package/dist/cli/commands/mcp.d.ts +0 -12
- package/dist/cli/commands/mcp.d.ts.map +1 -1
- package/dist/cli/commands/mcp.js +11 -5
- package/dist/cli/commands/mcp.js.map +1 -1
- package/dist/cli/commands/menu.d.ts.map +1 -1
- package/dist/cli/commands/menu.js +10 -184
- package/dist/cli/commands/menu.js.map +1 -1
- package/dist/cli/commands/project.d.ts +98 -0
- package/dist/cli/commands/project.d.ts.map +1 -0
- package/dist/cli/commands/project.js +382 -0
- package/dist/cli/commands/project.js.map +1 -0
- package/dist/cli/commands/skills.d.ts.map +1 -1
- package/dist/cli/commands/skills.js +14 -128
- package/dist/cli/commands/skills.js.map +1 -1
- package/dist/cli/commands/spec.d.ts +40 -0
- package/dist/cli/commands/spec.d.ts.map +1 -0
- package/dist/cli/commands/spec.js +49 -0
- package/dist/cli/commands/spec.js.map +1 -0
- package/dist/cli/commands/stats.d.ts.map +1 -1
- package/dist/cli/commands/stats.js +3 -2
- package/dist/cli/commands/stats.js.map +1 -1
- package/dist/cli/commands/status.d.ts.map +1 -1
- package/dist/cli/commands/status.js +17 -2
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/commands/trace.d.ts.map +1 -1
- package/dist/cli/commands/trace.js +4 -9
- package/dist/cli/commands/trace.js.map +1 -1
- package/dist/cli/commands/violations.d.ts +14 -0
- package/dist/cli/commands/violations.d.ts.map +1 -0
- package/dist/cli/commands/violations.js +43 -0
- package/dist/cli/commands/violations.js.map +1 -0
- package/dist/cli/index.js +26 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init/hook-manager.d.ts +1 -1
- package/dist/cli/init/hook-manager.d.ts.map +1 -1
- package/dist/cli/init/hook-manager.js +6 -0
- package/dist/cli/init/hook-manager.js.map +1 -1
- package/dist/cli/utils/resolve-session.d.ts +32 -0
- package/dist/cli/utils/resolve-session.d.ts.map +1 -0
- package/dist/cli/utils/resolve-session.js +39 -0
- package/dist/cli/utils/resolve-session.js.map +1 -0
- package/dist/core/config.d.ts +4 -1
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +11 -23
- package/dist/core/config.js.map +1 -1
- package/dist/core/constants.d.ts +14 -13
- package/dist/core/constants.d.ts.map +1 -1
- package/dist/core/constants.js +20 -13
- package/dist/core/constants.js.map +1 -1
- package/dist/core/diagnostics/checks.d.ts +151 -0
- package/dist/core/diagnostics/checks.d.ts.map +1 -0
- package/dist/core/diagnostics/checks.js +765 -0
- package/dist/core/diagnostics/checks.js.map +1 -0
- package/dist/core/diagnostics/daemon-status.d.ts +77 -0
- package/dist/core/diagnostics/daemon-status.d.ts.map +1 -0
- package/dist/core/diagnostics/daemon-status.js +113 -0
- package/dist/core/diagnostics/daemon-status.js.map +1 -0
- package/dist/core/diagnostics/entropy-checks.d.ts +82 -0
- package/dist/core/diagnostics/entropy-checks.d.ts.map +1 -0
- package/dist/core/diagnostics/entropy-checks.js +395 -0
- package/dist/core/diagnostics/entropy-checks.js.map +1 -0
- package/dist/core/diagnostics/fix-runner.d.ts +54 -0
- package/dist/core/diagnostics/fix-runner.d.ts.map +1 -0
- package/dist/core/diagnostics/fix-runner.js +90 -0
- package/dist/core/diagnostics/fix-runner.js.map +1 -0
- package/dist/core/diagnostics/knip-runner.d.ts +49 -0
- package/dist/core/diagnostics/knip-runner.d.ts.map +1 -0
- package/dist/core/diagnostics/knip-runner.js +100 -0
- package/dist/core/diagnostics/knip-runner.js.map +1 -0
- package/dist/core/diagnostics/markers.d.ts +96 -0
- package/dist/core/diagnostics/markers.d.ts.map +1 -0
- package/dist/core/diagnostics/markers.js +153 -0
- package/dist/core/diagnostics/markers.js.map +1 -0
- package/dist/core/governance/global-inject.d.ts +60 -0
- package/dist/core/governance/global-inject.d.ts.map +1 -0
- package/dist/core/governance/global-inject.js +129 -0
- package/dist/core/governance/global-inject.js.map +1 -0
- package/dist/core/queue/index.d.ts +16 -3
- package/dist/core/queue/index.d.ts.map +1 -1
- package/dist/core/queue/index.js +14 -3
- package/dist/core/queue/index.js.map +1 -1
- package/dist/core/storage/base.d.ts +158 -0
- package/dist/core/storage/base.d.ts.map +1 -1
- package/dist/core/storage/base.js +570 -0
- package/dist/core/storage/base.js.map +1 -1
- package/dist/core/storage/codec/tool-input-codec.d.ts +93 -0
- package/dist/core/storage/codec/tool-input-codec.d.ts.map +1 -0
- package/dist/core/storage/codec/tool-input-codec.js +159 -0
- package/dist/core/storage/codec/tool-input-codec.js.map +1 -0
- package/dist/core/storage/decisions.d.ts +362 -0
- package/dist/core/storage/decisions.d.ts.map +1 -0
- package/dist/core/storage/decisions.js +502 -0
- package/dist/core/storage/decisions.js.map +1 -0
- package/dist/core/storage/events.d.ts +112 -8
- package/dist/core/storage/events.d.ts.map +1 -1
- package/dist/core/storage/events.js +390 -39
- package/dist/core/storage/events.js.map +1 -1
- package/dist/core/storage/feedback.d.ts +131 -0
- package/dist/core/storage/feedback.d.ts.map +1 -0
- package/dist/core/storage/feedback.js +187 -0
- package/dist/core/storage/feedback.js.map +1 -0
- package/dist/core/storage/forge-config.d.ts +40 -0
- package/dist/core/storage/forge-config.d.ts.map +1 -0
- package/dist/core/storage/forge-config.js +65 -0
- package/dist/core/storage/forge-config.js.map +1 -0
- package/dist/core/storage/injections.d.ts +28 -0
- package/dist/core/storage/injections.d.ts.map +1 -1
- package/dist/core/storage/injections.js +62 -5
- package/dist/core/storage/injections.js.map +1 -1
- package/dist/core/storage/knowledge.d.ts +106 -0
- package/dist/core/storage/knowledge.d.ts.map +1 -0
- package/dist/core/storage/knowledge.js +202 -0
- package/dist/core/storage/knowledge.js.map +1 -0
- package/dist/core/storage/maintenance.d.ts +36 -9
- package/dist/core/storage/maintenance.d.ts.map +1 -1
- package/dist/core/storage/maintenance.js +56 -24
- package/dist/core/storage/maintenance.js.map +1 -1
- package/dist/core/storage/pipeline-rollup.d.ts +117 -0
- package/dist/core/storage/pipeline-rollup.d.ts.map +1 -0
- package/dist/core/storage/pipeline-rollup.js +471 -0
- package/dist/core/storage/pipeline-rollup.js.map +1 -0
- package/dist/core/storage/routing.d.ts +16 -3
- package/dist/core/storage/routing.d.ts.map +1 -1
- package/dist/core/storage/routing.js +39 -8
- package/dist/core/storage/routing.js.map +1 -1
- package/dist/core/storage/rows.d.ts +50 -7
- package/dist/core/storage/rows.d.ts.map +1 -1
- package/dist/core/storage/schema.sql +302 -23
- package/dist/core/storage/sessions.d.ts +136 -0
- package/dist/core/storage/sessions.d.ts.map +1 -1
- package/dist/core/storage/sessions.js +351 -15
- package/dist/core/storage/sessions.js.map +1 -1
- package/dist/core/storage/skills.d.ts +1 -0
- package/dist/core/storage/skills.d.ts.map +1 -1
- package/dist/core/storage/skills.js +21 -6
- package/dist/core/storage/skills.js.map +1 -1
- package/dist/core/storage/sqlite.d.ts +253 -20
- package/dist/core/storage/sqlite.d.ts.map +1 -1
- package/dist/core/storage/sqlite.js +425 -16
- package/dist/core/storage/sqlite.js.map +1 -1
- package/dist/core/storage/tasks.d.ts +474 -2
- package/dist/core/storage/tasks.d.ts.map +1 -1
- package/dist/core/storage/tasks.js +1213 -18
- package/dist/core/storage/tasks.js.map +1 -1
- package/dist/core/storage/tool-intercepts.d.ts +69 -0
- package/dist/core/storage/tool-intercepts.d.ts.map +1 -0
- package/dist/core/storage/tool-intercepts.js +116 -0
- package/dist/core/storage/tool-intercepts.js.map +1 -0
- package/dist/core/storage/workflow-recommendations.d.ts +124 -0
- package/dist/core/storage/workflow-recommendations.d.ts.map +1 -0
- package/dist/core/storage/workflow-recommendations.js +274 -0
- package/dist/core/storage/workflow-recommendations.js.map +1 -0
- package/dist/core/types.d.ts +112 -17
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js +12 -0
- package/dist/core/types.js.map +1 -1
- package/dist/core/utils/backup.d.ts +81 -0
- package/dist/core/utils/backup.d.ts.map +1 -0
- package/dist/core/utils/backup.js +98 -0
- package/dist/core/utils/backup.js.map +1 -0
- package/dist/core/utils/binary-paths.d.ts +92 -0
- package/dist/core/utils/binary-paths.d.ts.map +1 -0
- package/dist/core/utils/binary-paths.js +166 -0
- package/dist/core/utils/binary-paths.js.map +1 -0
- package/dist/core/utils/bypass-token.d.ts +75 -0
- package/dist/core/utils/bypass-token.d.ts.map +1 -0
- package/dist/core/utils/bypass-token.js +133 -0
- package/dist/core/utils/bypass-token.js.map +1 -0
- package/dist/core/utils/cc-builtin-agents.d.ts +3 -0
- package/dist/core/utils/cc-builtin-agents.d.ts.map +1 -0
- package/dist/core/utils/cc-builtin-agents.js +29 -0
- package/dist/core/utils/cc-builtin-agents.js.map +1 -0
- package/dist/core/utils/claude-cli-spawn.d.ts +106 -0
- package/dist/core/utils/claude-cli-spawn.d.ts.map +1 -0
- package/dist/core/utils/claude-cli-spawn.js +219 -0
- package/dist/core/utils/claude-cli-spawn.js.map +1 -0
- package/dist/core/utils/forge-resume-block.d.ts.map +1 -1
- package/dist/core/utils/forge-resume-block.js +3 -2
- package/dist/core/utils/forge-resume-block.js.map +1 -1
- package/dist/core/utils/logger.d.ts +15 -3
- package/dist/core/utils/logger.d.ts.map +1 -1
- package/dist/core/utils/logger.js +20 -2
- package/dist/core/utils/logger.js.map +1 -1
- package/dist/core/utils/noise-prompt.d.ts +97 -0
- package/dist/core/utils/noise-prompt.d.ts.map +1 -0
- package/dist/core/utils/noise-prompt.js +127 -0
- package/dist/core/utils/noise-prompt.js.map +1 -0
- package/dist/core/utils/path.d.ts +0 -4
- package/dist/core/utils/path.d.ts.map +1 -1
- package/dist/core/utils/path.js +0 -7
- package/dist/core/utils/path.js.map +1 -1
- package/dist/core/utils/time.d.ts +41 -0
- package/dist/core/utils/time.d.ts.map +1 -1
- package/dist/core/utils/time.js +114 -0
- package/dist/core/utils/time.js.map +1 -1
- package/dist/daemon/agent-sync.d.ts +24 -0
- package/dist/daemon/agent-sync.d.ts.map +1 -0
- package/dist/daemon/agent-sync.js +114 -0
- package/dist/daemon/agent-sync.js.map +1 -0
- package/dist/daemon/config-store.d.ts +55 -0
- package/dist/daemon/config-store.d.ts.map +1 -0
- package/dist/daemon/config-store.js +137 -0
- package/dist/daemon/config-store.js.map +1 -0
- package/dist/daemon/event-parser.d.ts +22 -0
- package/dist/daemon/event-parser.d.ts.map +1 -1
- package/dist/daemon/event-parser.js +49 -3
- package/dist/daemon/event-parser.js.map +1 -1
- package/dist/daemon/handlers/history-exporter.d.ts.map +1 -1
- package/dist/daemon/handlers/history-exporter.js +9 -8
- package/dist/daemon/handlers/history-exporter.js.map +1 -1
- package/dist/daemon/handlers/post-tool-use.d.ts +58 -4
- package/dist/daemon/handlers/post-tool-use.d.ts.map +1 -1
- package/dist/daemon/handlers/post-tool-use.js +261 -8
- package/dist/daemon/handlers/post-tool-use.js.map +1 -1
- package/dist/daemon/handlers/pre-tool-use.d.ts +156 -0
- package/dist/daemon/handlers/pre-tool-use.d.ts.map +1 -0
- package/dist/daemon/handlers/pre-tool-use.js +585 -0
- package/dist/daemon/handlers/pre-tool-use.js.map +1 -0
- package/dist/daemon/handlers/stop.d.ts +35 -7
- package/dist/daemon/handlers/stop.d.ts.map +1 -1
- package/dist/daemon/handlers/stop.js +157 -8
- package/dist/daemon/handlers/stop.js.map +1 -1
- package/dist/daemon/handlers/user-prompt.d.ts +36 -14
- package/dist/daemon/handlers/user-prompt.d.ts.map +1 -1
- package/dist/daemon/handlers/user-prompt.js +135 -48
- package/dist/daemon/handlers/user-prompt.js.map +1 -1
- package/dist/daemon/hook-sync.d.ts.map +1 -1
- package/dist/daemon/hook-sync.js +2 -1
- package/dist/daemon/hook-sync.js.map +1 -1
- package/dist/daemon/index.d.ts.map +1 -1
- package/dist/daemon/index.js +471 -43
- package/dist/daemon/index.js.map +1 -1
- package/dist/daemon/lifecycle.d.ts +48 -1
- package/dist/daemon/lifecycle.d.ts.map +1 -1
- package/dist/daemon/lifecycle.js +98 -2
- package/dist/daemon/lifecycle.js.map +1 -1
- package/dist/daemon/router.d.ts +4 -1
- package/dist/daemon/router.d.ts.map +1 -1
- package/dist/daemon/router.js +4 -2
- package/dist/daemon/router.js.map +1 -1
- package/dist/daemon/rules/defaults.d.ts +20 -0
- package/dist/daemon/rules/defaults.d.ts.map +1 -0
- package/dist/daemon/rules/defaults.js +692 -0
- package/dist/daemon/rules/defaults.js.map +1 -0
- package/dist/daemon/rules/registry.d.ts +47 -0
- package/dist/daemon/rules/registry.d.ts.map +1 -0
- package/dist/daemon/rules/registry.js +84 -0
- package/dist/daemon/rules/registry.js.map +1 -0
- package/dist/daemon/rules/types.d.ts +170 -0
- package/dist/daemon/rules/types.d.ts.map +1 -0
- package/dist/daemon/rules/types.js +15 -0
- package/dist/daemon/rules/types.js.map +1 -0
- package/dist/daemon/rules/whitelist.d.ts +101 -0
- package/dist/daemon/rules/whitelist.d.ts.map +1 -0
- package/dist/daemon/rules/whitelist.js +210 -0
- package/dist/daemon/rules/whitelist.js.map +1 -0
- package/dist/daemon/rules/workflow-defaults.d.ts +52 -0
- package/dist/daemon/rules/workflow-defaults.d.ts.map +1 -0
- package/dist/daemon/rules/workflow-defaults.js +521 -0
- package/dist/daemon/rules/workflow-defaults.js.map +1 -0
- package/dist/daemon/server.d.ts +11 -1
- package/dist/daemon/server.d.ts.map +1 -1
- package/dist/daemon/server.js +7 -1
- package/dist/daemon/server.js.map +1 -1
- package/dist/daemon/services/context-injector.d.ts +34 -0
- package/dist/daemon/services/context-injector.d.ts.map +1 -0
- package/dist/daemon/services/context-injector.js +61 -0
- package/dist/daemon/services/context-injector.js.map +1 -0
- package/dist/daemon/services/decision-hint.d.ts +203 -0
- package/dist/daemon/services/decision-hint.d.ts.map +1 -0
- package/dist/daemon/services/decision-hint.js +487 -0
- package/dist/daemon/services/decision-hint.js.map +1 -0
- package/dist/daemon/services/event-ttl-sweep.d.ts +86 -0
- package/dist/daemon/services/event-ttl-sweep.d.ts.map +1 -0
- package/dist/daemon/services/event-ttl-sweep.js +123 -0
- package/dist/daemon/services/event-ttl-sweep.js.map +1 -0
- package/dist/daemon/services/experience-extractor.d.ts +67 -0
- package/dist/daemon/services/experience-extractor.d.ts.map +1 -0
- package/dist/daemon/services/experience-extractor.js +323 -0
- package/dist/daemon/services/experience-extractor.js.map +1 -0
- package/dist/daemon/services/feedback-aggregator.d.ts +179 -0
- package/dist/daemon/services/feedback-aggregator.d.ts.map +1 -0
- package/dist/daemon/services/feedback-aggregator.js +455 -0
- package/dist/daemon/services/feedback-aggregator.js.map +1 -0
- package/dist/daemon/services/heartbeat-writer.d.ts +55 -0
- package/dist/daemon/services/heartbeat-writer.d.ts.map +1 -0
- package/dist/daemon/services/heartbeat-writer.js +111 -0
- package/dist/daemon/services/heartbeat-writer.js.map +1 -0
- package/dist/daemon/services/idle-session-sweeper.d.ts +61 -0
- package/dist/daemon/services/idle-session-sweeper.d.ts.map +1 -0
- package/dist/daemon/services/idle-session-sweeper.js +94 -0
- package/dist/daemon/services/idle-session-sweeper.js.map +1 -0
- package/dist/daemon/services/idle-task-budget.d.ts +50 -0
- package/dist/daemon/services/idle-task-budget.d.ts.map +1 -0
- package/dist/daemon/services/idle-task-budget.js +72 -0
- package/dist/daemon/services/idle-task-budget.js.map +1 -0
- package/dist/daemon/services/intercept-revive.d.ts +60 -0
- package/dist/daemon/services/intercept-revive.d.ts.map +1 -0
- package/dist/daemon/services/intercept-revive.js +86 -0
- package/dist/daemon/services/intercept-revive.js.map +1 -0
- package/dist/daemon/services/intercept-rollback-guard.d.ts +105 -0
- package/dist/daemon/services/intercept-rollback-guard.d.ts.map +1 -0
- package/dist/daemon/services/intercept-rollback-guard.js +152 -0
- package/dist/daemon/services/intercept-rollback-guard.js.map +1 -0
- package/dist/daemon/services/intercept-timeout-sweeper.d.ts +58 -0
- package/dist/daemon/services/intercept-timeout-sweeper.d.ts.map +1 -0
- package/dist/daemon/services/intercept-timeout-sweeper.js +83 -0
- package/dist/daemon/services/intercept-timeout-sweeper.js.map +1 -0
- package/dist/daemon/services/kb-injector.d.ts +57 -0
- package/dist/daemon/services/kb-injector.d.ts.map +1 -0
- package/dist/daemon/services/kb-injector.js +140 -0
- package/dist/daemon/services/kb-injector.js.map +1 -0
- package/dist/daemon/services/outcome-classification-service.d.ts +49 -0
- package/dist/daemon/services/outcome-classification-service.d.ts.map +1 -0
- package/dist/daemon/services/outcome-classification-service.js +214 -0
- package/dist/daemon/services/outcome-classification-service.js.map +1 -0
- package/dist/daemon/services/outcome-classifier.d.ts +136 -0
- package/dist/daemon/services/outcome-classifier.d.ts.map +1 -0
- package/dist/daemon/services/outcome-classifier.js +178 -0
- package/dist/daemon/services/outcome-classifier.js.map +1 -0
- package/dist/daemon/services/outcome-nudge.d.ts +107 -0
- package/dist/daemon/services/outcome-nudge.d.ts.map +1 -0
- package/dist/daemon/services/outcome-nudge.js +242 -0
- package/dist/daemon/services/outcome-nudge.js.map +1 -0
- package/dist/daemon/services/spec-approval.d.ts +127 -0
- package/dist/daemon/services/spec-approval.d.ts.map +1 -0
- package/dist/daemon/services/spec-approval.js +216 -0
- package/dist/daemon/services/spec-approval.js.map +1 -0
- package/dist/daemon/services/spec-gate.d.ts +54 -0
- package/dist/daemon/services/spec-gate.d.ts.map +1 -0
- package/dist/daemon/services/spec-gate.js +113 -0
- package/dist/daemon/services/spec-gate.js.map +1 -0
- package/dist/daemon/services/task-boundary-classifier.d.ts +78 -0
- package/dist/daemon/services/task-boundary-classifier.d.ts.map +1 -0
- package/dist/daemon/services/task-boundary-classifier.js +202 -0
- package/dist/daemon/services/task-boundary-classifier.js.map +1 -0
- package/dist/daemon/services/task-segmenter.d.ts +219 -1
- package/dist/daemon/services/task-segmenter.d.ts.map +1 -1
- package/dist/daemon/services/task-segmenter.js +481 -17
- package/dist/daemon/services/task-segmenter.js.map +1 -1
- package/dist/daemon/services/violation-reporter.d.ts +130 -0
- package/dist/daemon/services/violation-reporter.d.ts.map +1 -0
- package/dist/daemon/services/violation-reporter.js +339 -0
- package/dist/daemon/services/violation-reporter.js.map +1 -0
- package/dist/daemon/skill-sync.d.ts +7 -2
- package/dist/daemon/skill-sync.d.ts.map +1 -1
- package/dist/daemon/skill-sync.js +114 -9
- package/dist/daemon/skill-sync.js.map +1 -1
- package/dist/daemon/templates/agents/claudemd-writer.md +101 -0
- package/dist/daemon/templates/agents/coder.md +105 -0
- package/dist/daemon/templates/agents/decision-maker.md +460 -0
- package/dist/daemon/templates/agents/doc-reviewer.md +115 -0
- package/dist/daemon/templates/agents/harness-debug-full.md +114 -0
- package/dist/daemon/templates/agents/harness-hotfix.md +99 -0
- package/dist/daemon/templates/agents/hybrid-feature-with-safety.md +104 -0
- package/dist/daemon/templates/agents/knowledge-builder.md +119 -0
- package/dist/daemon/templates/agents/patch-applier.md +144 -0
- package/dist/daemon/templates/agents/planner.md +165 -0
- package/dist/daemon/templates/agents/refactor-specialist.md +98 -0
- package/dist/daemon/templates/agents/skill-distiller.md +113 -0
- package/dist/daemon/templates/agents/task-boundary-classifier.md +64 -0
- package/dist/daemon/templates/agents/verify-agent.md +136 -0
- package/dist/daemon/utils/inject-block.d.ts +39 -0
- package/dist/daemon/utils/inject-block.d.ts.map +1 -0
- package/dist/daemon/utils/inject-block.js +25 -0
- package/dist/daemon/utils/inject-block.js.map +1 -0
- package/dist/hooks/hook-lib.sh +8 -0
- package/dist/hooks/notification.sh +19 -8
- package/dist/hooks/post-tool-use.sh +41 -23
- package/dist/hooks/pre-tool-use.sh +54 -23
- package/dist/hooks/session-start.sh +68 -0
- package/dist/hooks/stop.sh +24 -10
- package/dist/hooks/user-prompt-submit.sh +37 -21
- package/dist/knowledge/adapters/go-adapter.d.ts +65 -0
- package/dist/knowledge/adapters/go-adapter.d.ts.map +1 -0
- package/dist/knowledge/adapters/go-adapter.js +294 -0
- package/dist/knowledge/adapters/go-adapter.js.map +1 -0
- package/dist/knowledge/adapters/index.d.ts +41 -0
- package/dist/knowledge/adapters/index.d.ts.map +1 -0
- package/dist/knowledge/adapters/index.js +71 -0
- package/dist/knowledge/adapters/index.js.map +1 -0
- package/dist/knowledge/adapters/java-adapter.d.ts +66 -0
- package/dist/knowledge/adapters/java-adapter.d.ts.map +1 -0
- package/dist/knowledge/adapters/java-adapter.js +260 -0
- package/dist/knowledge/adapters/java-adapter.js.map +1 -0
- package/dist/knowledge/adapters/js-vue-adapter.d.ts +56 -0
- package/dist/knowledge/adapters/js-vue-adapter.d.ts.map +1 -0
- package/dist/knowledge/adapters/js-vue-adapter.js +203 -0
- package/dist/knowledge/adapters/js-vue-adapter.js.map +1 -0
- package/dist/knowledge/adapters/kotlin-adapter.d.ts +55 -0
- package/dist/knowledge/adapters/kotlin-adapter.d.ts.map +1 -0
- package/dist/knowledge/adapters/kotlin-adapter.js +209 -0
- package/dist/knowledge/adapters/kotlin-adapter.js.map +1 -0
- package/dist/knowledge/adapters/monorepo-adapter.d.ts +77 -0
- package/dist/knowledge/adapters/monorepo-adapter.d.ts.map +1 -0
- package/dist/knowledge/adapters/monorepo-adapter.js +170 -0
- package/dist/knowledge/adapters/monorepo-adapter.js.map +1 -0
- package/dist/knowledge/adapters/python-adapter.d.ts +89 -0
- package/dist/knowledge/adapters/python-adapter.d.ts.map +1 -0
- package/dist/knowledge/adapters/python-adapter.js +358 -0
- package/dist/knowledge/adapters/python-adapter.js.map +1 -0
- package/dist/knowledge/adapters/rust-adapter.d.ts +73 -0
- package/dist/knowledge/adapters/rust-adapter.d.ts.map +1 -0
- package/dist/knowledge/adapters/rust-adapter.js +329 -0
- package/dist/knowledge/adapters/rust-adapter.js.map +1 -0
- package/dist/knowledge/adapters/types.d.ts +99 -0
- package/dist/knowledge/adapters/types.d.ts.map +1 -0
- package/dist/knowledge/adapters/types.js +17 -0
- package/dist/knowledge/adapters/types.js.map +1 -0
- package/dist/knowledge/adapters/typescript-adapter.d.ts +57 -0
- package/dist/knowledge/adapters/typescript-adapter.d.ts.map +1 -0
- package/dist/knowledge/adapters/typescript-adapter.js +171 -0
- package/dist/knowledge/adapters/typescript-adapter.js.map +1 -0
- package/dist/knowledge/audit-applier.d.ts +70 -0
- package/dist/knowledge/audit-applier.d.ts.map +1 -0
- package/dist/knowledge/audit-applier.js +251 -0
- package/dist/knowledge/audit-applier.js.map +1 -0
- package/dist/knowledge/builder.d.ts +261 -0
- package/dist/knowledge/builder.d.ts.map +1 -0
- package/dist/knowledge/builder.js +937 -0
- package/dist/knowledge/builder.js.map +1 -0
- package/dist/knowledge/cli-provider.d.ts +151 -0
- package/dist/knowledge/cli-provider.d.ts.map +1 -0
- package/dist/knowledge/cli-provider.js +313 -0
- package/dist/knowledge/cli-provider.js.map +1 -0
- package/dist/knowledge/constants.d.ts +73 -0
- package/dist/knowledge/constants.d.ts.map +1 -0
- package/dist/knowledge/constants.js +93 -0
- package/dist/knowledge/constants.js.map +1 -0
- package/dist/knowledge/cross-module.d.ts +139 -0
- package/dist/knowledge/cross-module.d.ts.map +1 -0
- package/dist/knowledge/cross-module.js +370 -0
- package/dist/knowledge/cross-module.js.map +1 -0
- package/dist/knowledge/git-hooks.d.ts +67 -0
- package/dist/knowledge/git-hooks.d.ts.map +1 -0
- package/dist/knowledge/git-hooks.js +258 -0
- package/dist/knowledge/git-hooks.js.map +1 -0
- package/dist/knowledge/module-hash.d.ts +88 -0
- package/dist/knowledge/module-hash.d.ts.map +1 -0
- package/dist/knowledge/module-hash.js +162 -0
- package/dist/knowledge/module-hash.js.map +1 -0
- package/dist/knowledge/project-detector.d.ts +101 -0
- package/dist/knowledge/project-detector.d.ts.map +1 -0
- package/dist/knowledge/project-detector.js +223 -0
- package/dist/knowledge/project-detector.js.map +1 -0
- package/dist/knowledge/prompt.d.ts +228 -0
- package/dist/knowledge/prompt.d.ts.map +1 -0
- package/dist/knowledge/prompt.js +404 -0
- package/dist/knowledge/prompt.js.map +1 -0
- package/dist/knowledge/query.d.ts +105 -0
- package/dist/knowledge/query.d.ts.map +1 -0
- package/dist/knowledge/query.js +341 -0
- package/dist/knowledge/query.js.map +1 -0
- package/dist/knowledge/repo-map.d.ts +91 -0
- package/dist/knowledge/repo-map.d.ts.map +1 -0
- package/dist/knowledge/repo-map.js +408 -0
- package/dist/knowledge/repo-map.js.map +1 -0
- package/dist/knowledge/tools/index.d.ts +14 -0
- package/dist/knowledge/tools/index.d.ts.map +1 -0
- package/dist/knowledge/tools/index.js +11 -0
- package/dist/knowledge/tools/index.js.map +1 -0
- package/dist/knowledge/tools/knowledge-get-page.d.ts +46 -0
- package/dist/knowledge/tools/knowledge-get-page.d.ts.map +1 -0
- package/dist/knowledge/tools/knowledge-get-page.js +101 -0
- package/dist/knowledge/tools/knowledge-get-page.js.map +1 -0
- package/dist/knowledge/tools/knowledge-query.d.ts +77 -0
- package/dist/knowledge/tools/knowledge-query.d.ts.map +1 -0
- package/dist/knowledge/tools/knowledge-query.js +104 -0
- package/dist/knowledge/tools/knowledge-query.js.map +1 -0
- package/dist/knowledge/tools/repo-map-lookup.d.ts +45 -0
- package/dist/knowledge/tools/repo-map-lookup.d.ts.map +1 -0
- package/dist/knowledge/tools/repo-map-lookup.js +82 -0
- package/dist/knowledge/tools/repo-map-lookup.js.map +1 -0
- package/dist/knowledge/types.d.ts +269 -0
- package/dist/knowledge/types.d.ts.map +1 -0
- package/dist/knowledge/types.js +10 -0
- package/dist/knowledge/types.js.map +1 -0
- package/dist/knowledge/validator.d.ts +90 -0
- package/dist/knowledge/validator.d.ts.map +1 -0
- package/dist/knowledge/validator.js +288 -0
- package/dist/knowledge/validator.js.map +1 -0
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +222 -1
- package/dist/mcp/server.js.map +1 -1
- package/dist/skills/builtin-skills.d.ts +35 -0
- package/dist/skills/builtin-skills.d.ts.map +1 -0
- package/dist/skills/builtin-skills.js +68 -0
- package/dist/skills/builtin-skills.js.map +1 -0
- package/dist/skills/distill/attribution.d.ts +59 -0
- package/dist/skills/distill/attribution.d.ts.map +1 -0
- package/dist/skills/distill/attribution.js +101 -0
- package/dist/skills/distill/attribution.js.map +1 -0
- package/dist/skills/distill/claude-cli-resolver.d.ts +26 -0
- package/dist/skills/distill/claude-cli-resolver.d.ts.map +1 -0
- package/dist/skills/distill/claude-cli-resolver.js +115 -0
- package/dist/skills/distill/claude-cli-resolver.js.map +1 -0
- package/dist/skills/distill/distiller.d.ts +161 -0
- package/dist/skills/distill/distiller.d.ts.map +1 -0
- package/dist/skills/distill/distiller.js +461 -0
- package/dist/skills/distill/distiller.js.map +1 -0
- package/dist/skills/distill/index.d.ts +223 -0
- package/dist/skills/distill/index.d.ts.map +1 -0
- package/dist/skills/distill/index.js +466 -0
- package/dist/skills/distill/index.js.map +1 -0
- package/dist/skills/distill/project-anchor-guard.d.ts +116 -0
- package/dist/skills/distill/project-anchor-guard.d.ts.map +1 -0
- package/dist/skills/distill/project-anchor-guard.js +334 -0
- package/dist/skills/distill/project-anchor-guard.js.map +1 -0
- package/dist/skills/distill/topic-deduper.d.ts +77 -0
- package/dist/skills/distill/topic-deduper.d.ts.map +1 -0
- package/dist/skills/distill/topic-deduper.js +119 -0
- package/dist/skills/distill/topic-deduper.js.map +1 -0
- package/dist/skills/distill/upstream-fetcher.d.ts +71 -0
- package/dist/skills/distill/upstream-fetcher.d.ts.map +1 -0
- package/dist/skills/distill/upstream-fetcher.js +202 -0
- package/dist/skills/distill/upstream-fetcher.js.map +1 -0
- package/dist/skills/distilled/distilled-api-design.md +491 -0
- package/dist/skills/distilled/distilled-architecture-decision.md +173 -0
- package/dist/skills/distilled/distilled-creator.md +178 -0
- package/dist/skills/distilled/distilled-db-schema-design.md +245 -0
- package/dist/skills/distilled/distilled-defi-amm-security.md +293 -0
- package/dist/skills/distilled/distilled-executing-plans.md +113 -0
- package/dist/skills/distilled/distilled-harness-engineering.md +242 -0
- package/dist/skills/distilled/distilled-karpathy-guidelines.md +104 -0
- package/dist/skills/distilled/distilled-performance-optimization.md +175 -0
- package/dist/skills/distilled/distilled-spec-driven-design.md +193 -0
- package/dist/skills/distilled/distilled-systematic-debugging.md +306 -0
- package/dist/skills/distilled/distilled-verification-before-completion.md +203 -0
- package/dist/skills/keyword-score.d.ts +29 -0
- package/dist/skills/keyword-score.d.ts.map +1 -0
- package/dist/skills/keyword-score.js +54 -0
- package/dist/skills/keyword-score.js.map +1 -0
- package/dist/skills/registry.d.ts +64 -20
- package/dist/skills/registry.d.ts.map +1 -1
- package/dist/skills/registry.js +102 -105
- package/dist/skills/registry.js.map +1 -1
- package/dist/skills/tools/pipeline-suggest.js +14 -14
- package/dist/skills/tools/skill-invoke.d.ts +1 -1
- package/dist/skills/tools/skill-invoke.js +1 -1
- package/dist/web/routes/agent-content.d.ts +30 -0
- package/dist/web/routes/agent-content.d.ts.map +1 -0
- package/dist/web/routes/agent-content.js +139 -0
- package/dist/web/routes/agent-content.js.map +1 -0
- package/dist/web/routes/decisions.d.ts +15 -0
- package/dist/web/routes/decisions.d.ts.map +1 -0
- package/dist/web/routes/decisions.js +181 -0
- package/dist/web/routes/decisions.js.map +1 -0
- package/dist/web/routes/diagnostics.d.ts +61 -0
- package/dist/web/routes/diagnostics.d.ts.map +1 -0
- package/dist/web/routes/diagnostics.js +203 -0
- package/dist/web/routes/diagnostics.js.map +1 -0
- package/dist/web/routes/events.d.ts.map +1 -1
- package/dist/web/routes/events.js +24 -0
- package/dist/web/routes/events.js.map +1 -1
- package/dist/web/routes/health.d.ts +33 -0
- package/dist/web/routes/health.d.ts.map +1 -0
- package/dist/web/routes/health.js +37 -0
- package/dist/web/routes/health.js.map +1 -0
- package/dist/web/routes/insights.d.ts +0 -5
- package/dist/web/routes/insights.d.ts.map +1 -1
- package/dist/web/routes/insights.js +783 -2
- package/dist/web/routes/insights.js.map +1 -1
- package/dist/web/routes/knowledge.d.ts +16 -0
- package/dist/web/routes/knowledge.d.ts.map +1 -0
- package/dist/web/routes/knowledge.js +661 -0
- package/dist/web/routes/knowledge.js.map +1 -0
- package/dist/web/routes/patch.d.ts +60 -1
- package/dist/web/routes/patch.d.ts.map +1 -1
- package/dist/web/routes/patch.js +170 -64
- package/dist/web/routes/patch.js.map +1 -1
- package/dist/web/routes/pipeline.d.ts +37 -0
- package/dist/web/routes/pipeline.d.ts.map +1 -0
- package/dist/web/routes/pipeline.js +149 -0
- package/dist/web/routes/pipeline.js.map +1 -0
- package/dist/web/routes/rules.d.ts.map +1 -1
- package/dist/web/routes/rules.js +6 -1
- 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 +9 -1
- package/dist/web/routes/sessions.js.map +1 -1
- package/dist/web/routes/skill-content.d.ts +30 -0
- package/dist/web/routes/skill-content.d.ts.map +1 -0
- package/dist/web/routes/skill-content.js +117 -0
- package/dist/web/routes/skill-content.js.map +1 -0
- package/dist/web/routes/skills-distill.d.ts +29 -0
- package/dist/web/routes/skills-distill.d.ts.map +1 -0
- package/dist/web/routes/skills-distill.js +552 -0
- package/dist/web/routes/skills-distill.js.map +1 -0
- package/dist/web/routes/skills.js +7 -7
- package/dist/web/routes/skills.js.map +1 -1
- package/dist/web/routes/task-timeline.d.ts +102 -0
- package/dist/web/routes/task-timeline.d.ts.map +1 -0
- package/dist/web/routes/task-timeline.js +274 -0
- package/dist/web/routes/task-timeline.js.map +1 -0
- package/dist/web/routes/tasks.d.ts.map +1 -1
- package/dist/web/routes/tasks.js +355 -8
- package/dist/web/routes/tasks.js.map +1 -1
- package/dist/web/routes/trace.d.ts.map +1 -1
- package/dist/web/routes/trace.js +3 -2
- package/dist/web/routes/trace.js.map +1 -1
- package/dist/web/routes/types.d.ts +0 -4
- package/dist/web/routes/types.d.ts.map +1 -1
- package/dist/web/routes/types.js +1 -1
- package/dist/web/routes/types.js.map +1 -1
- package/dist/web/routes/violations.d.ts +14 -0
- package/dist/web/routes/violations.d.ts.map +1 -0
- package/dist/web/routes/violations.js +111 -0
- package/dist/web/routes/violations.js.map +1 -0
- package/dist/web/server.d.ts.map +1 -1
- package/dist/web/server.js +79 -19
- package/dist/web/server.js.map +1 -1
- package/dist/web/services/build-manager.d.ts +72 -0
- package/dist/web/services/build-manager.d.ts.map +1 -0
- package/dist/web/services/build-manager.js +189 -0
- package/dist/web/services/build-manager.js.map +1 -0
- package/dist/web/services/distill-manager.d.ts +125 -0
- package/dist/web/services/distill-manager.d.ts.map +1 -0
- package/dist/web/services/distill-manager.js +308 -0
- package/dist/web/services/distill-manager.js.map +1 -0
- package/dist/web/static/assets/AgentContentPage-DkeRNxok.js +2 -0
- package/dist/web/static/assets/AgentContentPage-DkeRNxok.js.map +1 -0
- package/dist/web/static/assets/AgentDelegationTable-ByBa0x1l.js +2 -0
- package/dist/web/static/assets/AgentDelegationTable-ByBa0x1l.js.map +1 -0
- package/dist/web/static/assets/ContextInsightsPage-oUk7_I8u.js +3 -0
- package/dist/web/static/assets/ContextInsightsPage-oUk7_I8u.js.map +1 -0
- package/dist/web/static/assets/DaemonHealthPage-DG2fyOP7.js +2 -0
- package/dist/web/static/assets/DaemonHealthPage-DG2fyOP7.js.map +1 -0
- package/dist/web/static/assets/DecisionsPage-CMAPEnKb.js +2 -0
- package/dist/web/static/assets/DecisionsPage-CMAPEnKb.js.map +1 -0
- package/dist/web/static/assets/DiagnosticsPage-DQd-Zm4r.js +2 -0
- package/dist/web/static/assets/DiagnosticsPage-DQd-Zm4r.js.map +1 -0
- package/dist/web/static/assets/DriftTab-DqpepOhI.js +2 -0
- package/dist/web/static/assets/DriftTab-DqpepOhI.js.map +1 -0
- package/dist/web/static/assets/HealthHomePage-CN6zNIie.js +3 -0
- package/dist/web/static/assets/HealthHomePage-CN6zNIie.js.map +1 -0
- package/dist/web/static/assets/KbHitRateTable-ByEIWujF.js +2 -0
- package/dist/web/static/assets/KbHitRateTable-ByEIWujF.js.map +1 -0
- package/dist/web/static/assets/MarkdownRenderer-DZmTl-8J.js +3 -0
- package/dist/web/static/assets/MarkdownRenderer-DZmTl-8J.js.map +1 -0
- package/dist/web/static/assets/NotFound-BQPh0vaF.js +2 -0
- package/dist/web/static/assets/NotFound-BQPh0vaF.js.map +1 -0
- package/dist/web/static/assets/ProjectSwitcher-D3lZMFd3.js +2 -0
- package/dist/web/static/assets/ProjectSwitcher-D3lZMFd3.js.map +1 -0
- package/dist/web/static/assets/SettingsPage-oLJBNzQj.js +2 -0
- package/dist/web/static/assets/SettingsPage-oLJBNzQj.js.map +1 -0
- package/dist/web/static/assets/SkillContentPage-DK5rgfgw.js +2 -0
- package/dist/web/static/assets/SkillContentPage-DK5rgfgw.js.map +1 -0
- package/dist/web/static/assets/SkillStatsTable-DYMzjEUV.js +2 -0
- package/dist/web/static/assets/SkillStatsTable-DYMzjEUV.js.map +1 -0
- package/dist/web/static/assets/SkillsDistillTab-C7qaG8q3.js +2 -0
- package/dist/web/static/assets/SkillsDistillTab-C7qaG8q3.js.map +1 -0
- package/dist/web/static/assets/TasksHubPage-03wsRRsJ.js +6 -0
- package/dist/web/static/assets/TasksHubPage-03wsRRsJ.js.map +1 -0
- package/dist/web/static/assets/ViolationsPage-DSiLr-9O.js +3 -0
- package/dist/web/static/assets/ViolationsPage-DSiLr-9O.js.map +1 -0
- package/dist/web/static/assets/arco-Bhi3a6Qp.js +14 -0
- package/dist/web/static/assets/arco-Bhi3a6Qp.js.map +1 -0
- package/dist/web/static/assets/arco-DFQA6dO_.css +1 -0
- package/dist/web/static/assets/charts-BuHQWDbQ.js +37 -0
- package/dist/web/static/assets/charts-BuHQWDbQ.js.map +1 -0
- package/dist/web/static/assets/date-fns-sbWH3_uq.js +2 -0
- package/dist/web/static/assets/date-fns-sbWH3_uq.js.map +1 -0
- package/dist/web/static/assets/index-7bl3kbcx.css +1 -0
- package/dist/web/static/assets/index-BIYnq1Dx.js +4 -0
- package/dist/web/static/assets/index-BIYnq1Dx.js.map +1 -0
- package/dist/web/static/assets/lucide-CnlPQoG8.js +72 -0
- package/dist/web/static/assets/lucide-CnlPQoG8.js.map +1 -0
- package/dist/web/static/assets/outcome-DUn1NjlC.js +2 -0
- package/dist/web/static/assets/outcome-DUn1NjlC.js.map +1 -0
- package/dist/web/static/assets/query-S6X1S7K9.js +2 -0
- package/dist/web/static/assets/{query-C99w429o.js.map → query-S6X1S7K9.js.map} +1 -1
- package/dist/web/static/assets/{react-router-r79dBVy4.js → react-router-JVUrkhdd.js} +3 -3
- package/dist/web/static/assets/{react-router-r79dBVy4.js.map → react-router-JVUrkhdd.js.map} +1 -1
- package/dist/web/static/assets/react-vendor-tkvCrao7.js +57 -0
- package/dist/web/static/assets/react-vendor-tkvCrao7.js.map +1 -0
- package/dist/web/static/assets/syntax-highlighter-BkZfCDsz.js +6 -0
- package/dist/web/static/assets/syntax-highlighter-BkZfCDsz.js.map +1 -0
- package/dist/web/static/assets/useTabsParam-k8qte_0C.js +2 -0
- package/dist/web/static/assets/useTabsParam-k8qte_0C.js.map +1 -0
- package/dist/web/static/assets/vendor-DWgdB1eY.js +65 -0
- package/dist/web/static/assets/vendor-DWgdB1eY.js.map +1 -0
- package/dist/web/static/index.html +12 -8
- package/package.json +14 -3
- package/dist/core/ai/provider.d.ts +0 -63
- package/dist/core/ai/provider.d.ts.map +0 -1
- package/dist/core/ai/provider.js +0 -241
- package/dist/core/ai/provider.js.map +0 -1
- package/dist/core/ai/types.d.ts +0 -43
- package/dist/core/ai/types.d.ts.map +0 -1
- package/dist/core/ai/types.js +0 -5
- package/dist/core/ai/types.js.map +0 -1
- package/dist/core/storage/token-usage.d.ts +0 -36
- package/dist/core/storage/token-usage.d.ts.map +0 -1
- package/dist/core/storage/token-usage.js +0 -59
- package/dist/core/storage/token-usage.js.map +0 -1
- package/dist/core/utils/token-tracker.d.ts +0 -39
- package/dist/core/utils/token-tracker.d.ts.map +0 -1
- package/dist/core/utils/token-tracker.js +0 -69
- package/dist/core/utils/token-tracker.js.map +0 -1
- package/dist/skills/index.d.ts +0 -3
- package/dist/skills/index.d.ts.map +0 -1
- package/dist/skills/index.js +0 -3
- package/dist/skills/index.js.map +0 -1
- package/dist/skills/matcher.d.ts +0 -26
- package/dist/skills/matcher.d.ts.map +0 -1
- package/dist/skills/matcher.js +0 -113
- package/dist/skills/matcher.js.map +0 -1
- package/dist/skills/official/code-simplifier.md +0 -52
- package/dist/skills/official/find-skills.md +0 -142
- package/dist/skills/official/official-api-design.md +0 -30
- package/dist/skills/official/official-architecture-decision.md +0 -41
- package/dist/skills/official/official-bmad.md +0 -118
- package/dist/skills/official/official-db-schema-design.md +0 -34
- package/dist/skills/official/official-debug.md +0 -25
- package/dist/skills/official/official-doc-driven.md +0 -31
- package/dist/skills/official/official-harness-engineering.md +0 -108
- package/dist/skills/official/official-performance-optimization.md +0 -30
- package/dist/skills/official/official-pr-review.md +0 -35
- package/dist/skills/official/official-release-checklist.md +0 -30
- package/dist/skills/official/official-security-hardening.md +0 -32
- package/dist/skills/official/official-spec-driven-design.md +0 -31
- package/dist/skills/official/planning-with-files.md +0 -241
- package/dist/skills/official/ui-ux-pro-max.md +0 -105
- package/dist/skills/official/webapp-testing.md +0 -96
- package/dist/skills/official-skills.d.ts +0 -26
- package/dist/skills/official-skills.d.ts.map +0 -1
- package/dist/skills/official-skills.js +0 -73
- package/dist/skills/official-skills.js.map +0 -1
- package/dist/skills/semantic-matcher.d.ts +0 -60
- package/dist/skills/semantic-matcher.d.ts.map +0 -1
- package/dist/skills/semantic-matcher.js +0 -192
- package/dist/skills/semantic-matcher.js.map +0 -1
- package/dist/skills/upgrade-engine.d.ts +0 -93
- package/dist/skills/upgrade-engine.d.ts.map +0 -1
- package/dist/skills/upgrade-engine.js +0 -447
- package/dist/skills/upgrade-engine.js.map +0 -1
- package/dist/skills/upgrade-prompt.d.ts +0 -20
- package/dist/skills/upgrade-prompt.d.ts.map +0 -1
- package/dist/skills/upgrade-prompt.js +0 -75
- package/dist/skills/upgrade-prompt.js.map +0 -1
- package/dist/web/routes/ai.d.ts +0 -10
- package/dist/web/routes/ai.d.ts.map +0 -1
- package/dist/web/routes/ai.js +0 -186
- package/dist/web/routes/ai.js.map +0 -1
- package/dist/web/routes/token-usage.d.ts +0 -7
- package/dist/web/routes/token-usage.d.ts.map +0 -1
- package/dist/web/routes/token-usage.js +0 -18
- package/dist/web/routes/token-usage.js.map +0 -1
- package/dist/web/ssrf-guard.d.ts +0 -35
- package/dist/web/ssrf-guard.d.ts.map +0 -1
- package/dist/web/ssrf-guard.js +0 -93
- package/dist/web/ssrf-guard.js.map +0 -1
- package/dist/web/static/assets/AIConfig-CdDWzJyO.js +0 -2
- package/dist/web/static/assets/AIConfig-CdDWzJyO.js.map +0 -1
- package/dist/web/static/assets/Dashboard-CoEmmIDt.js +0 -2
- package/dist/web/static/assets/Dashboard-CoEmmIDt.js.map +0 -1
- package/dist/web/static/assets/Drawer-DdRTzlLB.js +0 -2
- package/dist/web/static/assets/Drawer-DdRTzlLB.js.map +0 -1
- package/dist/web/static/assets/Events-DrIq1SUS.js +0 -2
- package/dist/web/static/assets/Events-DrIq1SUS.js.map +0 -1
- package/dist/web/static/assets/Reports-DFBM3MDK.js +0 -2
- package/dist/web/static/assets/Reports-DFBM3MDK.js.map +0 -1
- package/dist/web/static/assets/SearchInput-qCj_jAcf.js +0 -2
- package/dist/web/static/assets/SearchInput-qCj_jAcf.js.map +0 -1
- package/dist/web/static/assets/SessionDetail-CCzwdoT7.js +0 -2
- package/dist/web/static/assets/SessionDetail-CCzwdoT7.js.map +0 -1
- package/dist/web/static/assets/Sessions-FfLYkAw9.js +0 -2
- package/dist/web/static/assets/Sessions-FfLYkAw9.js.map +0 -1
- package/dist/web/static/assets/Skills-C8Gvs3Qa.js +0 -2
- package/dist/web/static/assets/Skills-C8Gvs3Qa.js.map +0 -1
- package/dist/web/static/assets/TaskDetail-BS8pYhaR.js +0 -2
- package/dist/web/static/assets/TaskDetail-BS8pYhaR.js.map +0 -1
- package/dist/web/static/assets/Tasks-CyuhizG8.js +0 -2
- package/dist/web/static/assets/Tasks-CyuhizG8.js.map +0 -1
- package/dist/web/static/assets/charts-CLrM0_uM.js +0 -37
- package/dist/web/static/assets/charts-CLrM0_uM.js.map +0 -1
- package/dist/web/static/assets/date-fns-CZ_bHujz.js +0 -2
- package/dist/web/static/assets/date-fns-CZ_bHujz.js.map +0 -1
- package/dist/web/static/assets/export-L_VBD2p1.js +0 -4
- package/dist/web/static/assets/export-L_VBD2p1.js.map +0 -1
- package/dist/web/static/assets/index-CBX47X8l.js +0 -3
- package/dist/web/static/assets/index-CBX47X8l.js.map +0 -1
- package/dist/web/static/assets/index-DjIoMdoR.css +0 -1
- package/dist/web/static/assets/lucide-Bs_edTLa.js +0 -232
- package/dist/web/static/assets/lucide-Bs_edTLa.js.map +0 -1
- package/dist/web/static/assets/query-C99w429o.js +0 -2
- package/dist/web/static/assets/react-vendor-CSp-GLFF.js +0 -49
- package/dist/web/static/assets/react-vendor-CSp-GLFF.js.map +0 -1
- package/dist/web/static/assets/syntax-highlighter-44FakypI.js +0 -9
- package/dist/web/static/assets/syntax-highlighter-44FakypI.js.map +0 -1
- package/dist/web/static/assets/task-title-BhOcemuR.js +0 -2
- package/dist/web/static/assets/task-title-BhOcemuR.js.map +0 -1
- package/dist/web/static/assets/time-Bxuk0M-C.js +0 -2
- package/dist/web/static/assets/time-Bxuk0M-C.js.map +0 -1
- package/dist/web/static/assets/vendor-CMMjVdZs.js +0 -64
- package/dist/web/static/assets/vendor-CMMjVdZs.js.map +0 -1
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FeedbackOperations — Phase 8 weekly-report aggregate queries.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from `src/daemon/services/feedback-aggregator.ts` (audit F-medium
|
|
5
|
+
* #1, 2026-05-26) so the service no longer has to call `storage.getDatabase()`.
|
|
6
|
+
* All raw SQL for the feedback loop now lives here; the aggregator stays a
|
|
7
|
+
* pure orchestrator that combines facade calls.
|
|
8
|
+
*
|
|
9
|
+
* Scope: pure read-only aggregates over already-written fact tables
|
|
10
|
+
* • tool_intercepts (intercept obeyed ratio, top noisy rules)
|
|
11
|
+
* • workflow_recommendations (C8 weighted accepted ratio, per-rule rollup)
|
|
12
|
+
* • injections (KB) (kb_inject_count, metadata_json scan)
|
|
13
|
+
* • skill_invocations (skill_top + skill rollup)
|
|
14
|
+
* • sessions (outcome distribution)
|
|
15
|
+
*
|
|
16
|
+
* Returned shapes are aligned with what the aggregator consumes — minimal
|
|
17
|
+
* `Map`/`Array` conversion at the call site. JSON parsing of `metadata_json`
|
|
18
|
+
* stays inside the aggregator (it has the business rule for "what counts as
|
|
19
|
+
* a KB citation"), so this layer returns raw rows.
|
|
20
|
+
*/
|
|
21
|
+
import type Database from 'better-sqlite3';
|
|
22
|
+
export interface RuleViolationCount {
|
|
23
|
+
rule_id: string;
|
|
24
|
+
n: number;
|
|
25
|
+
}
|
|
26
|
+
export interface InterceptObeyedRow {
|
|
27
|
+
/** Ratio in [0, 1]. SQL returns NULL when no obeyed/override rows; we map to 0. */
|
|
28
|
+
ratio: number;
|
|
29
|
+
override_count: number;
|
|
30
|
+
}
|
|
31
|
+
export interface WorkflowAcceptanceRow {
|
|
32
|
+
/** Weighted accepted ratio. NULL when no non-pending rows; mapped to 0. */
|
|
33
|
+
ratio: number;
|
|
34
|
+
}
|
|
35
|
+
export interface InterceptRuleAggregate {
|
|
36
|
+
rule_id: string;
|
|
37
|
+
fires: number;
|
|
38
|
+
obeyed: number;
|
|
39
|
+
overrides: number;
|
|
40
|
+
}
|
|
41
|
+
export interface WorkflowRuleAggregate {
|
|
42
|
+
rule_id: string;
|
|
43
|
+
fires: number;
|
|
44
|
+
accepted: number;
|
|
45
|
+
partial: number;
|
|
46
|
+
rejected: number;
|
|
47
|
+
}
|
|
48
|
+
export interface SkillAggregate {
|
|
49
|
+
skill_id: string;
|
|
50
|
+
n: number;
|
|
51
|
+
succ: number;
|
|
52
|
+
zero: number;
|
|
53
|
+
}
|
|
54
|
+
export interface SkillTopRow {
|
|
55
|
+
skill_id: string;
|
|
56
|
+
n: number;
|
|
57
|
+
sr: number | null;
|
|
58
|
+
}
|
|
59
|
+
export interface SessionOutcomeRow {
|
|
60
|
+
o: string;
|
|
61
|
+
n: number;
|
|
62
|
+
}
|
|
63
|
+
export interface KbInjectionMetadataRow {
|
|
64
|
+
metadata_json: string;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Per-decision tool_intercepts row counts in a window. Used by
|
|
68
|
+
* `TuningReportSummary.intercept_{denied,dry_run,warn,bypass}` so the
|
|
69
|
+
* `/api/insights/tuning` consumer (curl/jq + future UI tooltip) can see the
|
|
70
|
+
* deny/dry_run/warn/bypass denominator split behind C4 obeyed ratio.
|
|
71
|
+
*/
|
|
72
|
+
export interface InterceptDecisionCountsRow {
|
|
73
|
+
denied: number;
|
|
74
|
+
dry_run: number;
|
|
75
|
+
warn: number;
|
|
76
|
+
bypass: number;
|
|
77
|
+
}
|
|
78
|
+
export declare class FeedbackOperations {
|
|
79
|
+
private db;
|
|
80
|
+
constructor(db: Database.Database);
|
|
81
|
+
/**
|
|
82
|
+
* C4 — obeyed ratio over `tool_intercepts` since `sinceIso`. Numerator =
|
|
83
|
+
* deny+obeyed; denominator = deny+(obeyed OR override). `unknown`,
|
|
84
|
+
* `dry_run` and `bypass` decisions are excluded from both.
|
|
85
|
+
*
|
|
86
|
+
* 2026-05-26 hotfix: deny-only denominator. Prior formula conflated
|
|
87
|
+
* dry_run rehearsal traffic (where main thread never saw the hint) with
|
|
88
|
+
* real-enforcement obey/override decisions, pinning the ratio at noise
|
|
89
|
+
* floor. Aligned with the C4 redefinition in
|
|
90
|
+
* `cli/commands/insights-goal-check.ts`. `override_count` is still
|
|
91
|
+
* reported separately so the web dashboard can surface the raw counter.
|
|
92
|
+
*/
|
|
93
|
+
queryInterceptObeyedSummary(sinceIso: string): InterceptObeyedRow;
|
|
94
|
+
/** Top intercept rules by fire count in window. */
|
|
95
|
+
queryTopInterceptRuleViolations(sinceIso: string, limit?: number): RuleViolationCount[];
|
|
96
|
+
/**
|
|
97
|
+
* Per-decision row counts for `tool_intercepts` in window. Returns a fixed
|
|
98
|
+
* shape with all four `decision` enum values present (zero when absent).
|
|
99
|
+
* The schema-level `decision` CHECK constraint is
|
|
100
|
+
* `('deny','warn','bypass','dry_run')` — see schema.sql:306.
|
|
101
|
+
*/
|
|
102
|
+
queryInterceptDecisionCounts(sinceIso: string): InterceptDecisionCountsRow;
|
|
103
|
+
/** Per-rule fire / obeyed / override aggregates for rule-tuning suggestions. */
|
|
104
|
+
queryInterceptRuleAggregates(sinceIso: string): InterceptRuleAggregate[];
|
|
105
|
+
/**
|
|
106
|
+
* C8 — weighted accepted ratio over `workflow_recommendations` since
|
|
107
|
+
* `sinceIso`. Weighting: accepted=1.0, partial_accepted=0.5,
|
|
108
|
+
* rejected/bypassed/ignored=0. `pending` rows excluded from denominator.
|
|
109
|
+
*/
|
|
110
|
+
queryWorkflowAcceptanceSummary(sinceIso: string): WorkflowAcceptanceRow;
|
|
111
|
+
/** Per-rule workflow recommendation outcome aggregates. */
|
|
112
|
+
queryWorkflowRuleAggregates(sinceIso: string): WorkflowRuleAggregate[];
|
|
113
|
+
/** C1 — total KB injection rows in window. */
|
|
114
|
+
countKbInjections(sinceIso: string): number;
|
|
115
|
+
/**
|
|
116
|
+
* All KB injection metadata rows in window. Returned raw — the aggregator
|
|
117
|
+
* parses `metadata_json` and applies the business rule (idx<2 = top-2 hit,
|
|
118
|
+
* score-sum for avg-score, etc.).
|
|
119
|
+
*/
|
|
120
|
+
queryKbInjectionMetadata(sinceIso: string): KbInjectionMetadataRow[];
|
|
121
|
+
/** Top skill ids by invocation count + per-skill success rate. */
|
|
122
|
+
queryTopSkillInvocations(sinceMillis: number, limit?: number): SkillTopRow[];
|
|
123
|
+
/** Per-skill aggregates used to emit SkillTuningSuggestion rows. */
|
|
124
|
+
querySkillAggregates(sinceMillis: number): SkillAggregate[];
|
|
125
|
+
/**
|
|
126
|
+
* Distribution of session outcomes for rows whose
|
|
127
|
+
* COALESCE(classified_at, start_time) >= sinceIso.
|
|
128
|
+
*/
|
|
129
|
+
querySessionOutcomeDistribution(sinceIso: string): SessionOutcomeRow[];
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=feedback.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feedback.d.ts","sourceRoot":"","sources":["../../../src/core/storage/feedback.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,CAAC,EAAE,MAAM,CAAC;CACX;AAED,MAAM,WAAW,kBAAkB;IACjC,mFAAmF;IACnF,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,qBAAqB;IACpC,2EAA2E;IAC3E,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,CAAC,EAAE,MAAM,CAAC;IACV,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,CAAC,EAAE,MAAM,CAAC;IACV,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,MAAM,WAAW,sBAAsB;IACrC,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;;;;GAKG;AACH,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,kBAAkB;IACjB,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ,CAAC,QAAQ;IAIzC;;;;;;;;;;;OAWG;IACH,2BAA2B,CAAC,QAAQ,EAAE,MAAM,GAAG,kBAAkB;IAgBjE,mDAAmD;IACnD,+BAA+B,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,kBAAkB,EAAE;IAUnF;;;;;OAKG;IACH,4BAA4B,CAAC,QAAQ,EAAE,MAAM,GAAG,0BAA0B;IAmB1E,gFAAgF;IAChF,4BAA4B,CAAC,QAAQ,EAAE,MAAM,GAAG,sBAAsB,EAAE;IAiBxE;;;;OAIG;IACH,8BAA8B,CAAC,QAAQ,EAAE,MAAM,GAAG,qBAAqB;IAavE,2DAA2D;IAC3D,2BAA2B,CAAC,QAAQ,EAAE,MAAM,GAAG,qBAAqB,EAAE;IAkBtE,8CAA8C;IAC9C,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAU3C;;;;OAIG;IACH,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,sBAAsB,EAAE;IAapE,kEAAkE;IAClE,wBAAwB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,WAAW,EAAE;IAWxE,oEAAoE;IACpE,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,cAAc,EAAE;IAgB3D;;;OAGG;IACH,+BAA+B,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB,EAAE;CAUvE"}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FeedbackOperations — Phase 8 weekly-report aggregate queries.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from `src/daemon/services/feedback-aggregator.ts` (audit F-medium
|
|
5
|
+
* #1, 2026-05-26) so the service no longer has to call `storage.getDatabase()`.
|
|
6
|
+
* All raw SQL for the feedback loop now lives here; the aggregator stays a
|
|
7
|
+
* pure orchestrator that combines facade calls.
|
|
8
|
+
*
|
|
9
|
+
* Scope: pure read-only aggregates over already-written fact tables
|
|
10
|
+
* • tool_intercepts (intercept obeyed ratio, top noisy rules)
|
|
11
|
+
* • workflow_recommendations (C8 weighted accepted ratio, per-rule rollup)
|
|
12
|
+
* • injections (KB) (kb_inject_count, metadata_json scan)
|
|
13
|
+
* • skill_invocations (skill_top + skill rollup)
|
|
14
|
+
* • sessions (outcome distribution)
|
|
15
|
+
*
|
|
16
|
+
* Returned shapes are aligned with what the aggregator consumes — minimal
|
|
17
|
+
* `Map`/`Array` conversion at the call site. JSON parsing of `metadata_json`
|
|
18
|
+
* stays inside the aggregator (it has the business rule for "what counts as
|
|
19
|
+
* a KB citation"), so this layer returns raw rows.
|
|
20
|
+
*/
|
|
21
|
+
export class FeedbackOperations {
|
|
22
|
+
db;
|
|
23
|
+
constructor(db) {
|
|
24
|
+
this.db = db;
|
|
25
|
+
}
|
|
26
|
+
// ── tool_intercepts ────────────────────────────────────────────────────
|
|
27
|
+
/**
|
|
28
|
+
* C4 — obeyed ratio over `tool_intercepts` since `sinceIso`. Numerator =
|
|
29
|
+
* deny+obeyed; denominator = deny+(obeyed OR override). `unknown`,
|
|
30
|
+
* `dry_run` and `bypass` decisions are excluded from both.
|
|
31
|
+
*
|
|
32
|
+
* 2026-05-26 hotfix: deny-only denominator. Prior formula conflated
|
|
33
|
+
* dry_run rehearsal traffic (where main thread never saw the hint) with
|
|
34
|
+
* real-enforcement obey/override decisions, pinning the ratio at noise
|
|
35
|
+
* floor. Aligned with the C4 redefinition in
|
|
36
|
+
* `cli/commands/insights-goal-check.ts`. `override_count` is still
|
|
37
|
+
* reported separately so the web dashboard can surface the raw counter.
|
|
38
|
+
*/
|
|
39
|
+
queryInterceptObeyedSummary(sinceIso) {
|
|
40
|
+
const row = this.db
|
|
41
|
+
.prepare(`SELECT
|
|
42
|
+
1.0 * SUM(CASE WHEN decision='deny' AND outcome='obeyed' THEN 1 ELSE 0 END) /
|
|
43
|
+
NULLIF(SUM(CASE WHEN decision='deny' AND outcome IN ('obeyed','override') THEN 1 ELSE 0 END), 0) AS r,
|
|
44
|
+
SUM(CASE WHEN decision='deny' AND outcome='override' THEN 1 ELSE 0 END) AS overrides
|
|
45
|
+
FROM tool_intercepts WHERE timestamp >= ?`)
|
|
46
|
+
.get(sinceIso);
|
|
47
|
+
return {
|
|
48
|
+
ratio: row?.r ?? 0,
|
|
49
|
+
override_count: row?.overrides ?? 0,
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
/** Top intercept rules by fire count in window. */
|
|
53
|
+
queryTopInterceptRuleViolations(sinceIso, limit = 10) {
|
|
54
|
+
return this.db
|
|
55
|
+
.prepare(`SELECT rule_id, COUNT(*) AS n FROM tool_intercepts
|
|
56
|
+
WHERE timestamp >= ?
|
|
57
|
+
GROUP BY rule_id ORDER BY n DESC LIMIT ?`)
|
|
58
|
+
.all(sinceIso, limit);
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Per-decision row counts for `tool_intercepts` in window. Returns a fixed
|
|
62
|
+
* shape with all four `decision` enum values present (zero when absent).
|
|
63
|
+
* The schema-level `decision` CHECK constraint is
|
|
64
|
+
* `('deny','warn','bypass','dry_run')` — see schema.sql:306.
|
|
65
|
+
*/
|
|
66
|
+
queryInterceptDecisionCounts(sinceIso) {
|
|
67
|
+
const rows = this.db
|
|
68
|
+
.prepare(`SELECT decision, COUNT(*) AS n
|
|
69
|
+
FROM tool_intercepts
|
|
70
|
+
WHERE timestamp >= ?
|
|
71
|
+
GROUP BY decision`)
|
|
72
|
+
.all(sinceIso);
|
|
73
|
+
const out = { denied: 0, dry_run: 0, warn: 0, bypass: 0 };
|
|
74
|
+
for (const r of rows) {
|
|
75
|
+
if (r.decision === 'deny')
|
|
76
|
+
out.denied = r.n;
|
|
77
|
+
else if (r.decision === 'dry_run')
|
|
78
|
+
out.dry_run = r.n;
|
|
79
|
+
else if (r.decision === 'warn')
|
|
80
|
+
out.warn = r.n;
|
|
81
|
+
else if (r.decision === 'bypass')
|
|
82
|
+
out.bypass = r.n;
|
|
83
|
+
}
|
|
84
|
+
return out;
|
|
85
|
+
}
|
|
86
|
+
/** Per-rule fire / obeyed / override aggregates for rule-tuning suggestions. */
|
|
87
|
+
queryInterceptRuleAggregates(sinceIso) {
|
|
88
|
+
return this.db
|
|
89
|
+
.prepare(`SELECT
|
|
90
|
+
rule_id,
|
|
91
|
+
COUNT(*) AS fires,
|
|
92
|
+
SUM(CASE WHEN outcome='obeyed' THEN 1 ELSE 0 END) AS obeyed,
|
|
93
|
+
SUM(CASE WHEN outcome='override' THEN 1 ELSE 0 END) AS overrides
|
|
94
|
+
FROM tool_intercepts
|
|
95
|
+
WHERE timestamp >= ?
|
|
96
|
+
GROUP BY rule_id`)
|
|
97
|
+
.all(sinceIso);
|
|
98
|
+
}
|
|
99
|
+
// ── workflow_recommendations ───────────────────────────────────────────
|
|
100
|
+
/**
|
|
101
|
+
* C8 — weighted accepted ratio over `workflow_recommendations` since
|
|
102
|
+
* `sinceIso`. Weighting: accepted=1.0, partial_accepted=0.5,
|
|
103
|
+
* rejected/bypassed/ignored=0. `pending` rows excluded from denominator.
|
|
104
|
+
*/
|
|
105
|
+
queryWorkflowAcceptanceSummary(sinceIso) {
|
|
106
|
+
const row = this.db
|
|
107
|
+
.prepare(`SELECT 1.0 * (
|
|
108
|
+
SUM(CASE WHEN outcome='accepted' THEN 1 ELSE 0 END) * 1.0
|
|
109
|
+
+ SUM(CASE WHEN outcome='partial_accepted' THEN 1 ELSE 0 END) * 0.5
|
|
110
|
+
) / NULLIF(SUM(CASE WHEN outcome IS NOT NULL AND outcome <> 'pending' THEN 1 ELSE 0 END), 0) AS r
|
|
111
|
+
FROM workflow_recommendations WHERE timestamp >= ?`)
|
|
112
|
+
.get(sinceIso);
|
|
113
|
+
return { ratio: row?.r ?? 0 };
|
|
114
|
+
}
|
|
115
|
+
/** Per-rule workflow recommendation outcome aggregates. */
|
|
116
|
+
queryWorkflowRuleAggregates(sinceIso) {
|
|
117
|
+
return this.db
|
|
118
|
+
.prepare(`SELECT
|
|
119
|
+
rule_id,
|
|
120
|
+
COUNT(*) AS fires,
|
|
121
|
+
SUM(CASE WHEN outcome='accepted' THEN 1 ELSE 0 END) AS accepted,
|
|
122
|
+
SUM(CASE WHEN outcome='partial_accepted' THEN 1 ELSE 0 END) AS partial,
|
|
123
|
+
SUM(CASE WHEN outcome='rejected' THEN 1 ELSE 0 END) AS rejected
|
|
124
|
+
FROM workflow_recommendations
|
|
125
|
+
WHERE timestamp >= ?
|
|
126
|
+
GROUP BY rule_id`)
|
|
127
|
+
.all(sinceIso);
|
|
128
|
+
}
|
|
129
|
+
// ── KB injections ──────────────────────────────────────────────────────
|
|
130
|
+
/** C1 — total KB injection rows in window. */
|
|
131
|
+
countKbInjections(sinceIso) {
|
|
132
|
+
const row = this.db
|
|
133
|
+
.prepare(`SELECT COUNT(*) AS n FROM injections
|
|
134
|
+
WHERE source_handler = 'UserPromptSubmitHandler:kb' AND timestamp >= ?`)
|
|
135
|
+
.get(sinceIso);
|
|
136
|
+
return row?.n ?? 0;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* All KB injection metadata rows in window. Returned raw — the aggregator
|
|
140
|
+
* parses `metadata_json` and applies the business rule (idx<2 = top-2 hit,
|
|
141
|
+
* score-sum for avg-score, etc.).
|
|
142
|
+
*/
|
|
143
|
+
queryKbInjectionMetadata(sinceIso) {
|
|
144
|
+
return this.db
|
|
145
|
+
.prepare(`SELECT metadata_json FROM injections
|
|
146
|
+
WHERE source_handler = 'UserPromptSubmitHandler:kb'
|
|
147
|
+
AND metadata_json IS NOT NULL
|
|
148
|
+
AND timestamp >= ?`)
|
|
149
|
+
.all(sinceIso);
|
|
150
|
+
}
|
|
151
|
+
// ── skill_invocations ──────────────────────────────────────────────────
|
|
152
|
+
/** Top skill ids by invocation count + per-skill success rate. */
|
|
153
|
+
queryTopSkillInvocations(sinceMillis, limit = 10) {
|
|
154
|
+
return this.db
|
|
155
|
+
.prepare(`SELECT skill_id, COUNT(*) AS n,
|
|
156
|
+
1.0 * SUM(success) / NULLIF(COUNT(*), 0) AS sr
|
|
157
|
+
FROM skill_invocations WHERE timestamp >= ?
|
|
158
|
+
GROUP BY skill_id ORDER BY n DESC LIMIT ?`)
|
|
159
|
+
.all(sinceMillis, limit);
|
|
160
|
+
}
|
|
161
|
+
/** Per-skill aggregates used to emit SkillTuningSuggestion rows. */
|
|
162
|
+
querySkillAggregates(sinceMillis) {
|
|
163
|
+
return this.db
|
|
164
|
+
.prepare(`SELECT
|
|
165
|
+
skill_id,
|
|
166
|
+
COUNT(*) AS n,
|
|
167
|
+
SUM(success) AS succ,
|
|
168
|
+
SUM(CASE WHEN success=0 THEN 1 ELSE 0 END) AS zero
|
|
169
|
+
FROM skill_invocations WHERE timestamp >= ?
|
|
170
|
+
GROUP BY skill_id`)
|
|
171
|
+
.all(sinceMillis);
|
|
172
|
+
}
|
|
173
|
+
// ── sessions outcome distribution ──────────────────────────────────────
|
|
174
|
+
/**
|
|
175
|
+
* Distribution of session outcomes for rows whose
|
|
176
|
+
* COALESCE(classified_at, start_time) >= sinceIso.
|
|
177
|
+
*/
|
|
178
|
+
querySessionOutcomeDistribution(sinceIso) {
|
|
179
|
+
return this.db
|
|
180
|
+
.prepare(`SELECT COALESCE(outcome, 'unclassified') AS o, COUNT(*) AS n
|
|
181
|
+
FROM sessions
|
|
182
|
+
WHERE COALESCE(classified_at, start_time) >= ?
|
|
183
|
+
GROUP BY o`)
|
|
184
|
+
.all(sinceIso);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
//# sourceMappingURL=feedback.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feedback.js","sourceRoot":"","sources":["../../../src/core/storage/feedback.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ForgeConfigOperations — forge_config 表读写
|
|
3
|
+
*
|
|
4
|
+
* Phase 0 (master roadmap) feature-flag KV store. Stays a simple string KV
|
|
5
|
+
* so every later phase can probe a flag via ConfigStore.isEnabled(...) without
|
|
6
|
+
* a recompile.
|
|
7
|
+
*
|
|
8
|
+
* Values are TEXT — callers (e.g. ConfigStore.isEnabled) handle coercion.
|
|
9
|
+
* Writes update `updated_at` on conflict.
|
|
10
|
+
*/
|
|
11
|
+
import type Database from 'better-sqlite3';
|
|
12
|
+
export interface ForgeConfigRow {
|
|
13
|
+
key: string;
|
|
14
|
+
value: string;
|
|
15
|
+
updated_at: string;
|
|
16
|
+
}
|
|
17
|
+
export declare class ForgeConfigOperations {
|
|
18
|
+
private db;
|
|
19
|
+
constructor(db: Database.Database);
|
|
20
|
+
readConfig(key: string): string | undefined;
|
|
21
|
+
writeConfig(key: string, value: string): void;
|
|
22
|
+
/**
|
|
23
|
+
* Insert a default value only if the key is absent. Used by daemon startup
|
|
24
|
+
* to seed feature flags without clobbering user edits.
|
|
25
|
+
*
|
|
26
|
+
* Returns true if a row was inserted, false if the key already existed.
|
|
27
|
+
*/
|
|
28
|
+
writeConfigIfMissing(key: string, value: string): boolean;
|
|
29
|
+
listConfig(): ForgeConfigRow[];
|
|
30
|
+
/**
|
|
31
|
+
* Delete a config row by key. Used by Phase D `reviveInterceptIfStale` to
|
|
32
|
+
* clean up the auto-disabled audit keys (`auto_disabled_at` /
|
|
33
|
+
* `auto_disabled_session`) so subsequent rollback events have a fresh
|
|
34
|
+
* slate. Idempotent: missing keys return `false` without error.
|
|
35
|
+
*
|
|
36
|
+
* Returns true when a row was deleted, false when the key was already absent.
|
|
37
|
+
*/
|
|
38
|
+
deleteConfig(key: string): boolean;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=forge-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"forge-config.d.ts","sourceRoot":"","sources":["../../../src/core/storage/forge-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,qBAAqB;IACpB,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ,CAAC,QAAQ;IAEzC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAO3C,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAY7C;;;;;OAKG;IACH,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;IAUzD,UAAU,IAAI,cAAc,EAAE;IAO9B;;;;;;;OAOG;IACH,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;CAMnC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ForgeConfigOperations — forge_config 表读写
|
|
3
|
+
*
|
|
4
|
+
* Phase 0 (master roadmap) feature-flag KV store. Stays a simple string KV
|
|
5
|
+
* so every later phase can probe a flag via ConfigStore.isEnabled(...) without
|
|
6
|
+
* a recompile.
|
|
7
|
+
*
|
|
8
|
+
* Values are TEXT — callers (e.g. ConfigStore.isEnabled) handle coercion.
|
|
9
|
+
* Writes update `updated_at` on conflict.
|
|
10
|
+
*/
|
|
11
|
+
export class ForgeConfigOperations {
|
|
12
|
+
db;
|
|
13
|
+
constructor(db) {
|
|
14
|
+
this.db = db;
|
|
15
|
+
}
|
|
16
|
+
readConfig(key) {
|
|
17
|
+
const row = this.db
|
|
18
|
+
.prepare(`SELECT value FROM forge_config WHERE key = ?`)
|
|
19
|
+
.get(key);
|
|
20
|
+
return row?.value;
|
|
21
|
+
}
|
|
22
|
+
writeConfig(key, value) {
|
|
23
|
+
this.db
|
|
24
|
+
.prepare(`INSERT INTO forge_config (key, value, updated_at)
|
|
25
|
+
VALUES (?, ?, datetime('now'))
|
|
26
|
+
ON CONFLICT(key) DO UPDATE SET
|
|
27
|
+
value = excluded.value,
|
|
28
|
+
updated_at = datetime('now')`)
|
|
29
|
+
.run(key, value);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Insert a default value only if the key is absent. Used by daemon startup
|
|
33
|
+
* to seed feature flags without clobbering user edits.
|
|
34
|
+
*
|
|
35
|
+
* Returns true if a row was inserted, false if the key already existed.
|
|
36
|
+
*/
|
|
37
|
+
writeConfigIfMissing(key, value) {
|
|
38
|
+
const result = this.db
|
|
39
|
+
.prepare(`INSERT OR IGNORE INTO forge_config (key, value, updated_at)
|
|
40
|
+
VALUES (?, ?, datetime('now'))`)
|
|
41
|
+
.run(key, value);
|
|
42
|
+
return result.changes > 0;
|
|
43
|
+
}
|
|
44
|
+
listConfig() {
|
|
45
|
+
const rows = this.db
|
|
46
|
+
.prepare(`SELECT key, value, updated_at FROM forge_config ORDER BY key ASC`)
|
|
47
|
+
.all();
|
|
48
|
+
return rows;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Delete a config row by key. Used by Phase D `reviveInterceptIfStale` to
|
|
52
|
+
* clean up the auto-disabled audit keys (`auto_disabled_at` /
|
|
53
|
+
* `auto_disabled_session`) so subsequent rollback events have a fresh
|
|
54
|
+
* slate. Idempotent: missing keys return `false` without error.
|
|
55
|
+
*
|
|
56
|
+
* Returns true when a row was deleted, false when the key was already absent.
|
|
57
|
+
*/
|
|
58
|
+
deleteConfig(key) {
|
|
59
|
+
const result = this.db
|
|
60
|
+
.prepare(`DELETE FROM forge_config WHERE key = ?`)
|
|
61
|
+
.run(key);
|
|
62
|
+
return result.changes > 0;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=forge-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"forge-config.js","sourceRoot":"","sources":["../../../src/core/storage/forge-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAUH,MAAM,OAAO,qBAAqB;IACZ;IAApB,YAAoB,EAAqB;QAArB,OAAE,GAAF,EAAE,CAAmB;IAAG,CAAC;IAE7C,UAAU,CAAC,GAAW;QACpB,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE;aAChB,OAAO,CAAC,8CAA8C,CAAC;aACvD,GAAG,CAAC,GAAG,CAAkC,CAAC;QAC7C,OAAO,GAAG,EAAE,KAAK,CAAC;IACpB,CAAC;IAED,WAAW,CAAC,GAAW,EAAE,KAAa;QACpC,IAAI,CAAC,EAAE;aACJ,OAAO,CACN;;;;wCAIgC,CACjC;aACA,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACrB,CAAC;IAED;;;;;OAKG;IACH,oBAAoB,CAAC,GAAW,EAAE,KAAa;QAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE;aACnB,OAAO,CACN;wCACgC,CACjC;aACA,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACnB,OAAO,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC;IAC5B,CAAC;IAED,UAAU;QACR,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;aACjB,OAAO,CAAC,kEAAkE,CAAC;aAC3E,GAAG,EAAsB,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;OAOG;IACH,YAAY,CAAC,GAAW;QACtB,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE;aACnB,OAAO,CAAC,wCAAwC,CAAC;aACjD,GAAG,CAAC,GAAG,CAAC,CAAC;QACZ,OAAO,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC;IAC5B,CAAC;CACF"}
|
|
@@ -12,11 +12,39 @@ export interface Injection {
|
|
|
12
12
|
source_handler: string;
|
|
13
13
|
injection_type: 'systemMessage' | 'additionalContext' | 'reason';
|
|
14
14
|
content: string;
|
|
15
|
+
/**
|
|
16
|
+
* Optional structured metadata payload (JSON-serialised).
|
|
17
|
+
*
|
|
18
|
+
* Currently used by MVP1 KB injection (source_handler =
|
|
19
|
+
* 'UserPromptSubmitHandler:kb') to capture the hit list:
|
|
20
|
+
* `[{ name: string; score: number; refs: KBRef[] }, ...]`
|
|
21
|
+
*
|
|
22
|
+
* Other handlers may leave this `undefined` — the column is nullable.
|
|
23
|
+
*/
|
|
24
|
+
metadata_json?: string;
|
|
15
25
|
}
|
|
16
26
|
export declare class InjectionOperations {
|
|
17
27
|
private db;
|
|
28
|
+
private readonly writeInjectionStmt;
|
|
18
29
|
constructor(db: Database.Database);
|
|
19
30
|
writeInjection(injection: Injection): void;
|
|
31
|
+
/**
|
|
32
|
+
* Phase 2 metrics rollup: count injection rows for one session, optionally
|
|
33
|
+
* scoped to a specific source_handler (e.g. 'UserPromptSubmitHandler:kb' to
|
|
34
|
+
* count just MVP1 KB injects).
|
|
35
|
+
*
|
|
36
|
+
* Used by Stop handler to back-fill sessions.kb_inject_count.
|
|
37
|
+
*/
|
|
38
|
+
countBySession(session_id: string, source_handler?: string): number;
|
|
39
|
+
/**
|
|
40
|
+
* Phase 2d pipeline-view batch helper. Pulls every injection row for the
|
|
41
|
+
* given session IDs in a single `IN (?,?,...)` query so the rollup layer
|
|
42
|
+
* doesn't have to do N round-trips for N prompts.
|
|
43
|
+
*
|
|
44
|
+
* Returns rows ASC by timestamp so callers can scan forward when matching
|
|
45
|
+
* injections to a prompt.
|
|
46
|
+
*/
|
|
47
|
+
queryBySessions(sessionIds: string[]): Injection[];
|
|
20
48
|
queryInjections(filter?: {
|
|
21
49
|
session_id?: string;
|
|
22
50
|
event_id?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"injections.d.ts","sourceRoot":"","sources":["../../../src/core/storage/injections.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAG3C,MAAM,WAAW,SAAS;IACxB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,eAAe,GAAG,mBAAmB,GAAG,QAAQ,CAAC;IACjE,OAAO,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"injections.d.ts","sourceRoot":"","sources":["../../../src/core/storage/injections.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAG3C,MAAM,WAAW,SAAS;IACxB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,eAAe,GAAG,mBAAmB,GAAG,QAAQ,CAAC;IACjE,OAAO,EAAE,MAAM,CAAC;IAChB;;;;;;;;OAQG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAYD,qBAAa,mBAAmB;IAGlB,OAAO,CAAC,EAAE;IAFtB,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAqB;gBAEpC,EAAE,EAAE,QAAQ,CAAC,QAAQ;IAOzC,cAAc,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI;IAc1C;;;;;;OAMG;IACH,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM;IAenE;;;;;;;OAOG;IACH,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE;IAmBlD,eAAe,CAAC,MAAM,GAAE;QACtB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,KAAK,CAAC,EAAE,MAAM,CAAC;KACX,GAAG,SAAS,EAAE;CAkCrB"}
|
|
@@ -4,18 +4,74 @@
|
|
|
4
4
|
* 拆分自 sqlite.ts。
|
|
5
5
|
*/
|
|
6
6
|
import { randomUUID } from 'node:crypto';
|
|
7
|
+
// TODO (storage-perf follow-up, 2026-05-26): un-cached this.db.prepare(...)
|
|
8
|
+
// callsites in InjectionOperations — promote to constructor Statement fields
|
|
9
|
+
// in a future sweep. Hot path (writeInjection) is cached.
|
|
10
|
+
//
|
|
11
|
+
// - countBySession (lines ~60, ~67)
|
|
12
|
+
// - queryBySessions (line ~87)
|
|
13
|
+
// - queryInjections / list* (line ~127)
|
|
14
|
+
//
|
|
15
|
+
// Cached now: writeInjectionStmt (fires per system-msg injection).
|
|
7
16
|
export class InjectionOperations {
|
|
8
17
|
db;
|
|
18
|
+
writeInjectionStmt;
|
|
9
19
|
constructor(db) {
|
|
10
20
|
this.db = db;
|
|
21
|
+
this.writeInjectionStmt = db.prepare(`
|
|
22
|
+
INSERT INTO injections (id, event_id, session_id, timestamp, source_handler, injection_type, content, metadata_json)
|
|
23
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?)
|
|
24
|
+
`);
|
|
11
25
|
}
|
|
12
26
|
writeInjection(injection) {
|
|
13
27
|
const id = injection.id || randomUUID();
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
28
|
+
this.writeInjectionStmt.run(id, injection.event_id ?? null, injection.session_id, injection.timestamp, injection.source_handler, injection.injection_type, injection.content, injection.metadata_json ?? null);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Phase 2 metrics rollup: count injection rows for one session, optionally
|
|
32
|
+
* scoped to a specific source_handler (e.g. 'UserPromptSubmitHandler:kb' to
|
|
33
|
+
* count just MVP1 KB injects).
|
|
34
|
+
*
|
|
35
|
+
* Used by Stop handler to back-fill sessions.kb_inject_count.
|
|
36
|
+
*/
|
|
37
|
+
countBySession(session_id, source_handler) {
|
|
38
|
+
if (source_handler) {
|
|
39
|
+
const row = this.db
|
|
40
|
+
.prepare(`SELECT COUNT(*) AS c FROM injections WHERE session_id = ? AND source_handler = ?`)
|
|
41
|
+
.get(session_id, source_handler);
|
|
42
|
+
return row?.c ?? 0;
|
|
43
|
+
}
|
|
44
|
+
const row = this.db
|
|
45
|
+
.prepare(`SELECT COUNT(*) AS c FROM injections WHERE session_id = ?`)
|
|
46
|
+
.get(session_id);
|
|
47
|
+
return row?.c ?? 0;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Phase 2d pipeline-view batch helper. Pulls every injection row for the
|
|
51
|
+
* given session IDs in a single `IN (?,?,...)` query so the rollup layer
|
|
52
|
+
* doesn't have to do N round-trips for N prompts.
|
|
53
|
+
*
|
|
54
|
+
* Returns rows ASC by timestamp so callers can scan forward when matching
|
|
55
|
+
* injections to a prompt.
|
|
56
|
+
*/
|
|
57
|
+
queryBySessions(sessionIds) {
|
|
58
|
+
if (sessionIds.length === 0)
|
|
59
|
+
return [];
|
|
60
|
+
const placeholders = sessionIds.map(() => '?').join(',');
|
|
61
|
+
const sql = `SELECT * FROM injections
|
|
62
|
+
WHERE session_id IN (${placeholders})
|
|
63
|
+
ORDER BY timestamp ASC`;
|
|
64
|
+
const rows = this.db.prepare(sql).all(...sessionIds);
|
|
65
|
+
return rows.map(r => ({
|
|
66
|
+
id: r.id,
|
|
67
|
+
event_id: r.event_id || undefined,
|
|
68
|
+
session_id: r.session_id,
|
|
69
|
+
timestamp: r.timestamp,
|
|
70
|
+
source_handler: r.source_handler,
|
|
71
|
+
injection_type: r.injection_type,
|
|
72
|
+
content: r.content,
|
|
73
|
+
metadata_json: r.metadata_json || undefined,
|
|
74
|
+
}));
|
|
19
75
|
}
|
|
20
76
|
queryInjections(filter = {}) {
|
|
21
77
|
const conditions = [];
|
|
@@ -45,6 +101,7 @@ export class InjectionOperations {
|
|
|
45
101
|
source_handler: r.source_handler,
|
|
46
102
|
injection_type: r.injection_type,
|
|
47
103
|
content: r.content,
|
|
104
|
+
metadata_json: r.metadata_json || undefined,
|
|
48
105
|
}));
|
|
49
106
|
}
|
|
50
107
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"injections.js","sourceRoot":"","sources":["../../../src/core/storage/injections.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"injections.js","sourceRoot":"","sources":["../../../src/core/storage/injections.ts"],"names":[],"mappings":"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"}
|