@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
package/dist/skills/registry.js
CHANGED
|
@@ -5,7 +5,6 @@ import matter from 'gray-matter';
|
|
|
5
5
|
import { fileURLToPath } from 'node:url';
|
|
6
6
|
import { logger } from '../core/utils/logger.js';
|
|
7
7
|
import { loadBuiltinSkills } from './builtin-skills.js';
|
|
8
|
-
import { matchKeywordFlexible, scoreSkillByKeywords } from './keyword-score.js';
|
|
9
8
|
const SKILLS_DIR = path.join(homedir(), '.claude', 'skills');
|
|
10
9
|
/**
|
|
11
10
|
* Simple skill registry that scans ~/.claude/skills/*.md
|
|
@@ -19,15 +18,18 @@ const SKILLS_DIR = path.join(homedir(), '.claude', 'skills');
|
|
|
19
18
|
* `config.skill_matching.api_key` was removed from the `ForgeConfig` JSON
|
|
20
19
|
* schema in D R-D; daemon still grep-warns the raw yaml on startup.
|
|
21
20
|
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
* `matchKeywords`
|
|
21
|
+
* Dead-code removal (2026-06-10, decision ed98c8e8): the keyword-matching
|
|
22
|
+
* API (`match` / `matchWithConfidence` / `matchWithDetails` / private
|
|
23
|
+
* `matchKeywords`) and the keyword scoring helper file were deleted — the
|
|
24
|
+
* skill push route is gone; skills are now pull-only via MCP
|
|
25
|
+
* (`skill-list` / `skill-invoke`), which only need `getAll` / `get` /
|
|
26
|
+
* `getManifest` / `reload`.
|
|
25
27
|
*/
|
|
26
28
|
export class SkillRegistry {
|
|
27
29
|
skills = new Map();
|
|
28
30
|
constructor() {
|
|
29
31
|
this.scan();
|
|
30
|
-
logger.debug('[SkillRegistry]
|
|
32
|
+
logger.debug('[SkillRegistry] Pull-only registry (match API removed, decision ed98c8e8)');
|
|
31
33
|
}
|
|
32
34
|
/**
|
|
33
35
|
* Resolve the directory containing built-in distilled skill .md files.
|
|
@@ -160,119 +162,6 @@ export class SkillRegistry {
|
|
|
160
162
|
logger.info(`Loaded ${userCount} user skill(s) from ${SKILLS_DIR}`);
|
|
161
163
|
}
|
|
162
164
|
}
|
|
163
|
-
/**
|
|
164
|
-
* Match a prompt against skill keywords.
|
|
165
|
-
*
|
|
166
|
-
* Post D R-B (spec 0902): semantic / AI matching has been removed. Only
|
|
167
|
-
* the keyword path runs. The result `source` is therefore always
|
|
168
|
-
* `'keyword'`.
|
|
169
|
-
*/
|
|
170
|
-
async match(prompt, keywords = [], context) {
|
|
171
|
-
const result = await this.matchWithConfidence(prompt, keywords, context);
|
|
172
|
-
return result?.skill ?? null;
|
|
173
|
-
}
|
|
174
|
-
/**
|
|
175
|
-
* Like match(), but also returns the confidence score (0-100) so callers
|
|
176
|
-
* can compare across alternatives (e.g. agent vs skill routing).
|
|
177
|
-
*
|
|
178
|
-
* Post D R-B: only keyword matching remains; `source` is always
|
|
179
|
-
* `'keyword'`. The literal-union return type is preserved for caller
|
|
180
|
-
* compatibility — `'semantic'` is no longer emitted but kept in the type
|
|
181
|
-
* so older code paths that pattern-match on it still compile until R-D.
|
|
182
|
-
*/
|
|
183
|
-
async matchWithConfidence(prompt, keywords = [], context) {
|
|
184
|
-
const kwSkill = await this.matchKeywords(prompt, keywords, context);
|
|
185
|
-
if (kwSkill) {
|
|
186
|
-
// Keyword matching has no real confidence; assign a conservative 60%
|
|
187
|
-
return { skill: kwSkill, confidence: 60, source: 'keyword' };
|
|
188
|
-
}
|
|
189
|
-
return null;
|
|
190
|
-
}
|
|
191
|
-
/**
|
|
192
|
-
* Keyword-based matching (fallback method)
|
|
193
|
-
* Supports fallback to description-based substring matching when keywords are empty
|
|
194
|
-
*/
|
|
195
|
-
async matchKeywords(prompt, keywords = [], context) {
|
|
196
|
-
const promptLower = prompt.toLowerCase();
|
|
197
|
-
const extraLower = keywords.map(k => k.toLowerCase());
|
|
198
|
-
let bestSkill = null;
|
|
199
|
-
let bestScore = 0;
|
|
200
|
-
let bestCandidate = null;
|
|
201
|
-
let bestCandidateScore = 0;
|
|
202
|
-
for (const skill of this.skills.values()) {
|
|
203
|
-
let score = 0;
|
|
204
|
-
// If skill has keywords, use keyword scoring helper
|
|
205
|
-
if (skill.keywords.length > 0) {
|
|
206
|
-
score = scoreSkillByKeywords(skill, promptLower, extraLower);
|
|
207
|
-
}
|
|
208
|
-
else if (skill.description) {
|
|
209
|
-
// Fallback path 1: Use description substring matching when keywords are empty
|
|
210
|
-
const descLower = skill.description.toLowerCase();
|
|
211
|
-
if (descLower.includes(promptLower) || promptLower.includes(descLower)) {
|
|
212
|
-
score = 1; // Give a base score for description match
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
// Fallback path 2: If no keywords and no description, score remains 0.
|
|
216
|
-
// (Historically a semantic matcher would take over here; D R-B deleted
|
|
217
|
-
// that path — these skills simply don't match. See class docstring.)
|
|
218
|
-
// Track best candidate regardless of threshold
|
|
219
|
-
if (score > bestCandidateScore) {
|
|
220
|
-
bestCandidateScore = score;
|
|
221
|
-
bestCandidate = skill;
|
|
222
|
-
}
|
|
223
|
-
// Built-in skills get priority: require 1+ match, user skills require 2+ matches
|
|
224
|
-
const threshold = skill.isBuiltin ? 1 : 2;
|
|
225
|
-
if (score >= threshold && score > bestScore) {
|
|
226
|
-
bestScore = score;
|
|
227
|
-
bestSkill = skill;
|
|
228
|
-
}
|
|
229
|
-
else if (score === bestScore &&
|
|
230
|
-
score >= threshold &&
|
|
231
|
-
skill.isBuiltin &&
|
|
232
|
-
!bestSkill?.isBuiltin) {
|
|
233
|
-
// Tie-break: prefer built-in skill when both meet threshold
|
|
234
|
-
bestSkill = skill;
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
|
-
if (bestSkill) {
|
|
238
|
-
logger.info(`[SkillRegistry] Keyword match: ${bestSkill.id} (score: ${bestScore})`);
|
|
239
|
-
}
|
|
240
|
-
else {
|
|
241
|
-
logger.debug(`[SkillRegistry] Best keyword candidate: ${bestCandidate?.id ?? 'none'} (score: ${bestCandidateScore})`);
|
|
242
|
-
}
|
|
243
|
-
return bestSkill;
|
|
244
|
-
}
|
|
245
|
-
/**
|
|
246
|
-
* Match with full result details (for debugging/logging)
|
|
247
|
-
*/
|
|
248
|
-
async matchWithDetails(prompt, keywords = [], context) {
|
|
249
|
-
const promptLower = prompt.toLowerCase();
|
|
250
|
-
const extraLower = keywords.map(k => k.toLowerCase());
|
|
251
|
-
const results = [];
|
|
252
|
-
for (const skill of this.skills.values()) {
|
|
253
|
-
let score = 0;
|
|
254
|
-
const matchedKeywords = [];
|
|
255
|
-
for (const kw of skill.keywords) {
|
|
256
|
-
const kwLower = kw.toLowerCase();
|
|
257
|
-
if (matchKeywordFlexible(promptLower, kwLower)) {
|
|
258
|
-
score += 1;
|
|
259
|
-
matchedKeywords.push(kw);
|
|
260
|
-
}
|
|
261
|
-
if (extraLower.some(ek => matchKeywordFlexible(ek, kwLower))) {
|
|
262
|
-
score += 1;
|
|
263
|
-
}
|
|
264
|
-
}
|
|
265
|
-
if (score >= 1) {
|
|
266
|
-
results.push({
|
|
267
|
-
skill,
|
|
268
|
-
confidence: Math.min(100, score * 20), // Simple scoring: 1 match = 20%, 5 matches = 100%
|
|
269
|
-
matchedKeywords,
|
|
270
|
-
});
|
|
271
|
-
}
|
|
272
|
-
}
|
|
273
|
-
results.sort((a, b) => b.confidence - a.confidence);
|
|
274
|
-
return results;
|
|
275
|
-
}
|
|
276
165
|
/** Return all loaded skills */
|
|
277
166
|
getAll() {
|
|
278
167
|
return Array.from(this.skills.values());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/skills/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/skills/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -37,7 +37,7 @@ Task({ subagent_type: "tester", name: "tester", prompt: "${desc}: Wait for 'deve
|
|
|
37
37
|
Task({ subagent_type: "reviewer", name: "reviewer", prompt: "${desc}: Wait for 'tester'. Review code quality, security, performance. **Write review report to docs/review/feature-review-<yyyymmdd-hhmm>.md** (代码质量评分/安全/性能/可维护性/改进建议).", run_in_background: true })`,
|
|
38
38
|
refactor: (desc) => `Task({ subagent_type: "tester", name: "safety-net", prompt: "${desc}: Write characterization tests capturing current behavior. **Write safety-net report to docs/testing/refactor-safety-net-<yyyymmdd-hhmm>.md** (现有行为清单/测试用例/覆盖范围). SendMessage test paths + doc path to 'planner'.", run_in_background: true })
|
|
39
39
|
Task({ subagent_type: "planner", name: "planner", prompt: "${desc}: Wait for 'safety-net'. Design refactoring strategy. **Write refactor plan to docs/design/<yyyy-mm-dd>/<hhmm>-refactor-plan.md** (目标态/分步迁移路径/依赖变更/回滚预案). SendMessage doc path to 'refactorer'.", run_in_background: true })
|
|
40
|
-
Task({ subagent_type: "
|
|
40
|
+
Task({ subagent_type: "safety-net-implementer", name: "refactorer", prompt: "${desc}: mode=refactor. Wait for 'planner'. Read the plan. **Write change log to docs/implementation/<yyyy-mm-dd>/<hhmm>-refactor-changes.md** while executing (每步改动/影响文件/验证点). Execute step by step. SendMessage to 'verifier'.", run_in_background: true })
|
|
41
41
|
Task({ subagent_type: "tester", name: "verifier", prompt: "${desc}: Wait for 'refactorer'. Run ALL tests, verify zero regressions. **Write verification report to docs/testing/refactor-verification-<yyyymmdd-hhmm>.md** (测试通过/失败列表/性能对比).", run_in_background: true })`,
|
|
42
42
|
investigation: (desc) => `Task({ subagent_type: "tester", name: "reproducer", prompt: "${desc}: Reproduce the issue with a minimal test case. **Write reproduction doc to docs/requirements/issue-reproduction-<yyyymmdd-hhmm>.md** (现象/复现步骤/环境/触发条件). SendMessage doc path to 'analyst'.", run_in_background: true })
|
|
43
43
|
Task({ subagent_type: "researcher", name: "analyst", prompt: "${desc}: Wait for 'reproducer'. Deep-dive root cause: trace execution, check git blame, identify when it broke. **Write root cause analysis to docs/review/issue-root-cause-<yyyymmdd-hhmm>.md** (根因/引入时间/相关 commit/修复建议).", run_in_background: true })`,
|
|
@@ -55,7 +55,7 @@ Task({ subagent_type: "reviewer", name: "reviewer", prompt: "${desc}: Wait for '
|
|
|
55
55
|
harness_safe_refactor: (desc) => `Task({ subagent_type: "tester", name: "safety-net", prompt: "${desc}: Write comprehensive characterization tests for ALL touched behavior. **Write to docs/testing/harness-safety-net-<yyyymmdd-hhmm>.md** (现有行为清单/测试矩阵/已知边界). SendMessage doc path to 'analyzer'.", run_in_background: true })
|
|
56
56
|
Task({ subagent_type: "researcher", name: "analyzer", prompt: "${desc}: Wait for 'safety-net'. Map all dependencies and side effects. **Write to docs/requirements/harness-impact-analysis-<yyyymmdd-hhmm>.md** (依赖图/调用方/隐藏耦合/风险评级). SendMessage doc path to 'planner'.", run_in_background: true })
|
|
57
57
|
Task({ subagent_type: "planner", name: "planner", prompt: "${desc}: Wait for 'analyzer'. Design step-by-step plan. **Write to docs/design/<yyyy-mm-dd>/<hhmm>-harness-refactor-plan.md** (分步路径/每步独立验证点/回滚策略). SendMessage doc path to 'executor'.", run_in_background: true })
|
|
58
|
-
Task({ subagent_type: "
|
|
58
|
+
Task({ subagent_type: "safety-net-implementer", name: "executor", prompt: "${desc}: mode=refactor. Wait for 'planner'. Execute ONE step at a time. **Write change log to docs/implementation/<yyyy-mm-dd>/<hhmm>-harness-execution.md** (每步改动/验证结果/checkpoint). SendMessage to 'validator'.", run_in_background: true })
|
|
59
59
|
Task({ subagent_type: "tester", name: "validator", prompt: "${desc}: Wait for 'executor'. Run full test suite, type checker, dead code check. **Write to docs/testing/harness-validation-<yyyymmdd-hhmm>.md** (测试通过/失败/类型错误/dead code 报告).", run_in_background: true })`,
|
|
60
60
|
// ── Harness 风格(深度调试)─────────────────────────────────────────────
|
|
61
61
|
harness_debug: (desc) => `Task({ subagent_type: "tester", name: "reproducer", prompt: "${desc}: Write a FAILING test reproducing the bug. **Write to docs/requirements/debug-reproduction-<yyyymmdd-hhmm>.md** (复现步骤/环境/失败测试路径/出现频率). SendMessage doc path to 'tracer'.", run_in_background: true })
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline-suggest.js","sourceRoot":"","sources":["../../../src/skills/tools/pipeline-suggest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAoBpD;;;;;;;;;;;;;GAaG;AACH,MAAM,kBAAkB,GAAG;IACzB,yEAAyE;IAEzE,OAAO,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,sEAAsE,IAAI;yDAC9C,IAAI;6DACA,IAAI,wNAAwN;IAEvR,OAAO,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,iEAAiE,IAAI;8DACpC,IAAI;yEACO,IAAI;2DAClB,IAAI;+DACA,IAAI,kMAAkM;IAEnQ,QAAQ,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,gEAAgE,IAAI;6DACrC,IAAI
|
|
1
|
+
{"version":3,"file":"pipeline-suggest.js","sourceRoot":"","sources":["../../../src/skills/tools/pipeline-suggest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAoBpD;;;;;;;;;;;;;GAaG;AACH,MAAM,kBAAkB,GAAG;IACzB,yEAAyE;IAEzE,OAAO,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,sEAAsE,IAAI;yDAC9C,IAAI;6DACA,IAAI,wNAAwN;IAEvR,OAAO,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,iEAAiE,IAAI;8DACpC,IAAI;yEACO,IAAI;2DAClB,IAAI;+DACA,IAAI,kMAAkM;IAEnQ,QAAQ,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,gEAAgE,IAAI;6DACrC,IAAI;+EACc,IAAI;6DACtB,IAAI,wMAAwM;IAEvQ,aAAa,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,gEAAgE,IAAI;gEACvC,IAAI,kPAAkP;IAEpT,WAAW,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,iEAAiE,IAAI;gEACtC,IAAI;6DACP,IAAI;6DACJ,IAAI,8LAA8L;IAE7P,gEAAgE;IAEhE,YAAY,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,yEAAyE,IAAI;+DAChD,IAAI;yEACM,IAAI;uDACtB,IAAI;+DACI,IAAI,qNAAqN;IAEtR,mEAAmE;IAEnE,qBAAqB,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,gEAAgE,IAAI;iEAC9C,IAAI;6DACR,IAAI;6EACY,IAAI;8DACnB,IAAI,sMAAsM;IAEtQ,mEAAmE;IAEnE,aAAa,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,gEAAgE,IAAI;+DACxC,IAAI;mEACA,IAAI;yDACd,IAAI;6DACA,IAAI,0LAA0L;IAEzP,yEAAyE;IAEzE,SAAS,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,wEAAwE,IAAI;+DAC5C,IAAI;6DACN,IAAI;4DACL,IAAI;6DACH,IAAI,kMAAkM;IAEjQ,yEAAyE;IAEzE,cAAc,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,wEAAwE,IAAI;qEAC3C,IAAI;yDAChB,IAAI;6DACA,IAAI,8LAA8L;CACrP,CAAC;AAIX;;;GAGG;AACH,SAAS,qBAAqB,CAAC,MAA6B;IAC1D,IAAI,MAAM,CAAC,WAAW;QAAE,OAAO,gBAAgB,CAAC;IAChD,IAAI,MAAM,CAAC,YAAY;QAAE,OAAO,WAAW,CAAC;IAC5C,IAAI,MAAM,CAAC,UAAU;QAAE,OAAO,SAAS,CAAC;IACxC,IAAI,MAAM,CAAC,cAAc;QAAE,OAAO,SAAS,CAAC;IAC5C,IAAI,MAAM,CAAC,WAAW;QAAE,OAAO,UAAU,CAAC;IAC1C,IAAI,MAAM,CAAC,cAAc;QAAE,OAAO,aAAa,CAAC;IAEhD,wDAAwD;IACxD,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,IAAI,MAAM,CAAC,UAAU,IAAI,CAAC;QAAE,OAAO,eAAe,CAAC;IAEtF,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,SAAS,oBAAoB,CAAC,MAA6B;IACzD,MAAM,IAAI,GAAG,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC;IACnD,MAAM,QAAQ,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;IAE/B,IAAI,CAAC,QAAQ,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QACzH,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC;IAC7B,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAC1J,QAAQ,CAAC,cAAc,GAAG,IAAI,CAAC;IACjC,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAC/H,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC;IAC9B,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACrJ,QAAQ,CAAC,cAAc,GAAG,IAAI,CAAC;IACjC,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAClI,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC;IAC/B,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAC3J,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC;IAC9B,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,IAAY;IACrC,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,MAA6B;IAE7B,MAAM,QAAQ,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC9C,MAAM,EAAE,gBAAgB,EAAE,UAAU,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE,cAAc,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,QAAQ,CAAC;IAEtI,MAAM,CAAC,IAAI,CACT,2BAA2B,gBAAgB,gBAAgB,UAAU,IAAI,KAAK,GAAG;QACjF,WAAW,CAAC,CAAC,cAAc,aAAa,CAAC,CAAC,WAAW,QAAQ,CAAC,CAAC,UAAU,SAAS,CAAC,CAAC,cAAc,GAAG;QACrG,aAAa,CAAC,CAAC,YAAY,aAAa,CAAC,CAAC,WAAW,EAAE,CACxD,CAAC;IAEF,2BAA2B;IAC3B,MAAM,YAAY,GAChB,CAAC,UAAU,KAAK,SAAS,IAAI,UAAU,IAAI,CAAC,CAAC;QAC7C,CAAC,CAAC,cAAc;QAChB,CAAC,CAAC,WAAW;QACb,CAAC,CAAC,UAAU;QACZ,CAAC,CAAC,cAAc;QAChB,CAAC,CAAC,YAAY;QACd,CAAC,CAAC,WAAW;QACb,gBAAgB,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,yBAAyB;IAEzD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO;YACL,aAAa,EAAE,KAAK;YACpB,aAAa,EAAE,IAAI;YACnB,MAAM,EAAE,qEAAqE;YAC7E,UAAU,EAAE,EAAE;SACf,CAAC;IACJ,CAAC;IAED,MAAM,YAAY,GAAG,qBAAqB,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC,CAAC,uBAAuB;IAC1F,MAAM,WAAW,GAAG,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;IACxD,MAAM,SAAS,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC,WAAW,CAAC,CAAC;IAEhE,MAAM,UAAU,GAAiC;QAC/C,OAAO,EAAE,yDAAyD;QAClE,OAAO,EAAE,yEAAyE;QAClF,QAAQ,EAAE,qEAAqE;QAC/E,aAAa,EAAE,wDAAwD;QACvE,WAAW,EAAE,0EAA0E;QACvF,YAAY,EAAE,2FAA2F;QACzG,qBAAqB,EAAE,0FAA0F;QACjH,aAAa,EAAE,wFAAwF;QACvG,SAAS,EAAE,4FAA4F;QACvG,cAAc,EAAE,sFAAsF;KACvG,CAAC;IAEF,OAAO;QACL,aAAa,EAAE,IAAI;QACnB,aAAa,EAAE,YAAY;QAC3B,MAAM,EAAE,UAAU,CAAC,YAAY,CAAC;QAChC,UAAU,EAAE,SAAS;KACtB,CAAC;AACJ,CAAC"}
|
|
@@ -31,7 +31,8 @@ export interface SkillInvokeContext {
|
|
|
31
31
|
storage?: SQLiteStorage;
|
|
32
32
|
routeRequestId?: string;
|
|
33
33
|
agentId?: string;
|
|
34
|
-
invocationType?: 'static' | 'dynamic' | 'slash_command';
|
|
34
|
+
invocationType?: 'static' | 'dynamic' | 'slash_command' | 'cli';
|
|
35
|
+
projectPath?: string;
|
|
35
36
|
}
|
|
36
37
|
/**
|
|
37
38
|
* 从 reason 字段解析工作流元信息。
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-invoke.d.ts","sourceRoot":"","sources":["../../../src/skills/tools/skill-invoke.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAGlE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,aAAa,CAAC;IAC7B,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"skill-invoke.d.ts","sourceRoot":"","sources":["../../../src/skills/tools/skill-invoke.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAGlE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,aAAa,CAAC;IAC7B,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,eAAe,GAAG,KAAK,CAAC;IAKhE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG;IACpE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B,CAcA;AAED,wBAAsB,WAAW,CAC/B,MAAM,EAAE,iBAAiB,EACzB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,iBAAiB,CAAC,CA4F5B"}
|
|
@@ -42,7 +42,7 @@ export function parseWorkflowMeta(reason) {
|
|
|
42
42
|
}
|
|
43
43
|
export async function skillInvoke(params, context) {
|
|
44
44
|
const { skill_id, reason } = params;
|
|
45
|
-
const { guard, sessionId, skillRegistry, storage, routeRequestId, agentId, invocationType = 'dynamic', } = context;
|
|
45
|
+
const { guard, sessionId, skillRegistry, storage, routeRequestId, agentId, invocationType = 'dynamic', projectPath, } = context;
|
|
46
46
|
logger.info(`[SkillInvoke] Agent requested skill: ${skill_id}${reason ? ` (reason: ${reason})` : ''}`);
|
|
47
47
|
// 记录调用链路的辅助函数:无论成功或失败都应落库(落库失败不影响主流程)。
|
|
48
48
|
const recordInvocation = (success, error, depth) => {
|
|
@@ -66,6 +66,8 @@ export async function skillInvoke(params, context) {
|
|
|
66
66
|
success: success ? 1 : 0,
|
|
67
67
|
error,
|
|
68
68
|
timestamp: Date.now(),
|
|
69
|
+
// decision 39839e30 Part 2: project scope (NULL when unknown).
|
|
70
|
+
project_path: projectPath ?? null,
|
|
69
71
|
});
|
|
70
72
|
}
|
|
71
73
|
catch (err) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-invoke.js","sourceRoot":"","sources":["../../../src/skills/tools/skill-invoke.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAIzC,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"skill-invoke.js","sourceRoot":"","sources":["../../../src/skills/tools/skill-invoke.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anti-pattern-detector.d.ts","sourceRoot":"","sources":["../../../src/web/analytics/anti-pattern-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"anti-pattern-detector.d.ts","sourceRoot":"","sources":["../../../src/web/analytics/anti-pattern-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAKlE,MAAM,MAAM,eAAe,GACvB,WAAW,GACX,oBAAoB,GACpB,WAAW,GACX,gBAAgB,CAAC;AAErB,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;AAE/D,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,eAAe,CAAC;IACtB,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAID,qBAAa,mBAAmB;IAClB,OAAO,CAAC,OAAO;gBAAP,OAAO,EAAE,aAAa;IAE1C;;;;OAIG;IACH,SAAS,CAAC,UAAU,GAAE,MAAU,GAAG,WAAW,EAAE;IAyBhD;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,cAAc;IA4DtB,OAAO,CAAC,sBAAsB;IA2D9B,OAAO,CAAC,cAAc;IAmDtB,OAAO,CAAC,mBAAmB;CA4C5B"}
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* - 仅读 storage(getDatabase + queryEvents + querySessions),不改任何状态
|
|
13
13
|
*/
|
|
14
14
|
import { createHash } from 'node:crypto';
|
|
15
|
-
|
|
15
|
+
import { DAY_MS } from '../../core/utils/time.js';
|
|
16
16
|
const EDIT_TOOLS = new Set(['Edit', 'Write', 'MultiEdit']);
|
|
17
17
|
export class AntiPatternDetector {
|
|
18
18
|
storage;
|
|
@@ -271,6 +271,11 @@ function extractBashCommand(input) {
|
|
|
271
271
|
function isFailedToolOutput(out) {
|
|
272
272
|
if (!out)
|
|
273
273
|
return false;
|
|
274
|
+
// Plain-string outputs (Bash stdout / JSON-as-text) carry no structured
|
|
275
|
+
// error markers — same as the pre-typed runtime behavior (property access
|
|
276
|
+
// on a string yielded undefined → not failed).
|
|
277
|
+
if (typeof out === 'string')
|
|
278
|
+
return false;
|
|
274
279
|
// Claude Code 的 PostToolUse output 形态:
|
|
275
280
|
// - { error: "..." } → 失败
|
|
276
281
|
// - { success: false, error: "..." } → 失败
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anti-pattern-detector.js","sourceRoot":"","sources":["../../../src/web/analytics/anti-pattern-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAyBzC,MAAM,MAAM,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAChC,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;AAE3D,MAAM,OAAO,mBAAmB;IACV;IAApB,YAAoB,OAAsB;QAAtB,YAAO,GAAP,OAAO,CAAe;IAAG,CAAC;IAE9C;;;;OAIG;IACH,SAAS,CAAC,aAAqB,CAAC;QAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,GAAG,GAAG,UAAU,GAAG,MAAM,CAAC;QAC1C,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;QACjD,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;QAE/C,0BAA0B;QAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAEnD,MAAM,QAAQ,GAAkB;YAC9B,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,UAAU,CAAC;YAC1C,GAAG,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,UAAU,CAAC;YACnE,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC;YACpD,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC;SAC1D,CAAC;QAEF,iDAAiD;QACjD,MAAM,QAAQ,GAAwC,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QACxF,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QACrE,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,qEAAqE;IAErE;;;;OAIG;IACK,gBAAgB,CAAC,QAAgB;QACvC,OAAO,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAClE,CAAC;IAEO,kBAAkB,CAAC,QAAgB;QACzC,OAAO,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,yEAAyE;IAEjE,cAAc,CAAC,MAAoB,EAAE,UAAkB;QAC7D,uCAAuC;QACvC,MAAM,OAAO,GAAG,IAAI,GAAG,EAMnB,CAAC;QAEL,KAAK,MAAM,EAAE,IAAI,MAAM,EAAE,CAAC;YACxB,IAAI,EAAE,CAAC,SAAS,KAAK,YAAY;gBAAE,SAAS;YAC5C,IAAI,CAAC,EAAE,CAAC,SAAS,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC;gBAAE,SAAS;YAC7D,MAAM,QAAQ,GAAG,eAAe,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;YAChD,IAAI,CAAC,QAAQ;gBAAE,SAAS;YAExB,MAAM,GAAG,GAAG,GAAG,EAAE,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;YAC5C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC7B,IAAI,GAAG,EAAE,CAAC;gBACR,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC;gBACf,IAAI,EAAE,CAAC,SAAS,GAAG,GAAG,CAAC,OAAO;oBAAE,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC;gBAC3D,IAAI,EAAE,CAAC,SAAS,GAAG,GAAG,CAAC,MAAM;oBAAE,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,SAAS,CAAC;YAC3D,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE;oBACf,SAAS,EAAE,EAAE,CAAC,UAAU;oBACxB,QAAQ;oBACR,KAAK,EAAE,CAAC;oBACR,OAAO,EAAE,EAAE,CAAC,SAAS;oBACrB,MAAM,EAAE,EAAE,CAAC,SAAS;iBACrB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,MAAM,GAAG,GAAkB,EAAE,CAAC;QAC9B,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YACjC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC;gBAAE,SAAS;YAC1B,MAAM,QAAQ,GAAwB,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC;YACzE,GAAG,CAAC,IAAI,CAAC;gBACP,EAAE,EAAE,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC;gBAClD,IAAI,EAAE,WAAW;gBACjB,QAAQ;gBACR,KAAK,EAAE,QAAQ,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,KAAK,IAAI;gBACvD,WAAW,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,+BAA+B;gBACtE,MAAM,EAAE;oBACN,QAAQ,EAAE,CAAC,CAAC,QAAQ;oBACpB,KAAK,EAAE,CAAC,CAAC,KAAK;oBACd,SAAS,EAAE,CAAC,CAAC,SAAS;oBACtB,WAAW,EAAE,CAAC,CAAC,OAAO;oBACtB,UAAU,EAAE,CAAC,CAAC,MAAM;iBACrB;gBACD,UAAU;gBACV,SAAS,EAAE,CAAC,CAAC,SAAS;gBACtB,QAAQ,EAAE,CAAC,CAAC,QAAQ;aACrB,CAAC,CAAC;QACL,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,yEAAyE;IAEjE,sBAAsB,CAC5B,MAAoB,EACpB,KAAa,EACb,UAAkB,EAClB,UAAkB;QAElB,MAAM,cAAc,GAAG,KAAK,GAAG,MAAM,CAAC;QACtC,MAAM,eAAe,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC,WAAW,EAAE,CAAC;QAE/D,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,IAAI,cAAc,GAAG,CAAC,CAAC;QACvB,IAAI,aAAa,GAAG,CAAC,CAAC;QACtB,IAAI,gBAAgB,GAAG,CAAC,CAAC;QAEzB,KAAK,MAAM,EAAE,IAAI,MAAM,EAAE,CAAC;YACxB,IAAI,EAAE,CAAC,SAAS,KAAK,aAAa;gBAAE,SAAS;YAC7C,MAAM,MAAM,GAAG,kBAAkB,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;YAClD,IAAI,EAAE,CAAC,SAAS,IAAI,eAAe,EAAE,CAAC;gBACpC,WAAW,IAAI,CAAC,CAAC;gBACjB,IAAI,MAAM;oBAAE,cAAc,IAAI,CAAC,CAAC;YAClC,CAAC;iBAAM,CAAC;gBACN,aAAa,IAAI,CAAC,CAAC;gBACnB,IAAI,MAAM;oBAAE,gBAAgB,IAAI,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;QAED,IAAI,WAAW,GAAG,EAAE,EAAE,CAAC;YACrB,WAAW;YACX,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,UAAU,GAAG,cAAc,GAAG,WAAW,CAAC;QAChD,MAAM,YAAY,GAAG,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,gBAAgB,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;QAE9E,IAAI,UAAU,GAAG,GAAG;YAAE,OAAO,EAAE,CAAC;QAEhC,MAAM,QAAQ,GAAwB,UAAU,IAAI,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC;QAC9E,OAAO,CAAC;gBACN,EAAE,EAAE,QAAQ,CAAC,oBAAoB,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC3D,IAAI,EAAE,oBAAoB;gBAC1B,QAAQ;gBACR,KAAK,EAAE,SAAS,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW;gBACxD,WAAW,EAAE,mCAAmC,UAAU,GAAG,CAAC,QAAQ,CAAC,YAAY,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;gBAC1G,MAAM,EAAE;oBACN,iBAAiB,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;oBACvC,mBAAmB,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;oBAC3C,iBAAiB,EAAE,EAAE;oBACrB,kBAAkB,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC,CAAC;oBAC/C,aAAa,EAAE,WAAW;oBAC1B,QAAQ,EAAE,cAAc;oBACxB,aAAa;oBACb,gBAAgB;iBACjB;gBACD,UAAU;aACX,CAAC,CAAC;IACL,CAAC;IAED,yEAAyE;IAEjE,cAAc,CACpB,QAA0B,EAC1B,MAAoB,EACpB,UAAkB;QAElB,8BAA8B;QAC9B,MAAM,aAAa,GAAG,IAAI,GAAG,EAAoB,CAAC;QAClD,KAAK,MAAM,EAAE,IAAI,MAAM,EAAE,CAAC;YACxB,IAAI,EAAE,CAAC,SAAS,KAAK,MAAM;gBAAE,SAAS;YACtC,IAAI,EAAE,CAAC,SAAS,KAAK,YAAY;gBAAE,SAAS;YAC5C,MAAM,GAAG,GAAG,kBAAkB,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;YAC9C,IAAI,CAAC,GAAG;gBAAE,SAAS;YACnB,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;YAC9C,IAAI,IAAI;gBAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;;gBACpB,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/C,CAAC;QAED,MAAM,GAAG,GAAkB,EAAE,CAAC;QAC9B,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACzB,MAAM,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;YACvD,MAAM,WAAW,GAAG,UAAU,GAAG,KAAK,CAAC;YACvC,IAAI,WAAW,IAAI,EAAE;gBAAE,SAAS;YAEhC,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;YACnD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/D,IAAI,SAAS;gBAAE,SAAS;YAExB,MAAM,QAAQ,GAAwB,WAAW,GAAG,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC;YAC7E,GAAG,CAAC,IAAI,CAAC;gBACP,EAAE,EAAE,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,UAAU,CAAC;gBACvC,IAAI,EAAE,WAAW;gBACjB,QAAQ;gBACR,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,mBAAmB;gBACpD,WAAW,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW;gBACjF,MAAM,EAAE;oBACN,SAAS,EAAE,CAAC,CAAC,UAAU;oBACvB,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;oBACpC,UAAU,EAAE,CAAC,CAAC,WAAW;oBACzB,SAAS,EAAE,CAAC,CAAC,UAAU;oBACvB,OAAO,EAAE,CAAC,CAAC,QAAQ;oBACnB,YAAY,EAAE,IAAI,CAAC,MAAM;iBAC1B;gBACD,UAAU;gBACV,SAAS,EAAE,CAAC,CAAC,UAAU;aACxB,CAAC,CAAC;QACL,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,yEAAyE;IAEjE,mBAAmB,CACzB,QAA0B,EAC1B,MAAoB,EACpB,UAAkB;QAElB,yBAAyB;QACzB,MAAM,aAAa,GAAG,IAAI,GAAG,EAA+B,CAAC;QAC7D,KAAK,MAAM,EAAE,IAAI,MAAM,EAAE,CAAC;YACxB,IAAI,CAAC,EAAE,CAAC,SAAS;gBAAE,SAAS;YAC5B,IAAI,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;YACzC,IAAI,CAAC,CAAC,EAAE,CAAC;gBACP,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;gBACd,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;YACtC,CAAC;YACD,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACtD,CAAC;QAED,MAAM,GAAG,GAAkB,EAAE,CAAC;QAC9B,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACzB,IAAI,CAAC,CAAC,WAAW,IAAI,GAAG;gBAAE,SAAS;YACnC,MAAM,QAAQ,GAAwB,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC;YACjF,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,CAAC;YAC5E,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;YAE1D,GAAG,CAAC,IAAI,CAAC;gBACP,EAAE,EAAE,QAAQ,CAAC,gBAAgB,EAAE,CAAC,CAAC,UAAU,CAAC;gBAC5C,IAAI,EAAE,gBAAgB;gBACtB,QAAQ;gBACR,KAAK,EAAE,QAAQ,CAAC,CAAC,WAAW,MAAM;gBAClC,WAAW,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,WAAW,qBAAqB;gBACnF,MAAM,EAAE;oBACN,SAAS,EAAE,CAAC,CAAC,UAAU;oBACvB,UAAU,EAAE,CAAC,CAAC,WAAW;oBACzB,WAAW;oBACX,QAAQ;oBACR,SAAS,EAAE,CAAC,CAAC,UAAU;oBACvB,OAAO,EAAE,CAAC,CAAC,QAAQ;iBACpB;gBACD,UAAU;gBACV,SAAS,EAAE,CAAC,CAAC,UAAU;aACxB,CAAC,CAAC;QACL,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;CACF;AAED,2EAA2E;AAE3E,SAAS,eAAe,CAAC,KAA+B;IACtD,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,MAAM,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC;IAC3B,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IACvD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,kBAAkB,CAAC,KAA+B;IACzD,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC;IAC1B,OAAO,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;AACnD,CAAC;AAED,SAAS,kBAAkB,CAAC,GAAwC;IAClE,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAC;IACvB,uCAAuC;IACvC,+CAA+C;IAC/C,+CAA+C;IAC/C,2EAA2E;IAC3E,+CAA+C;IAC/C,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC;IACtB,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3D,IAAI,GAAG,CAAC,OAAO,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IACvC,IAAI,GAAG,CAAC,OAAO,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACtC,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,SAAS,CAAC,QAAgB,EAAE,MAAc;IACjD,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC/B,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC7B,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC;IACjD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5B,CAAC;AAED,SAAS,IAAI,CAAC,GAAoC,EAAE,CAAS;IAC3D,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC;IACpB,OAAO,CAAC,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;SACtB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SAC3B,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;SACX,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,SAAS,KAAK,CAAC,CAAS,EAAE,MAAc;IACtC,MAAM,CAAC,GAAG,EAAE,IAAI,MAAM,CAAC;IACvB,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AAC/B,CAAC;AAED,SAAS,OAAO,CAAC,EAAU;IACzB,OAAO,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC7C,CAAC;AAED,SAAS,SAAS,CAAC,CAAS;IAC1B,IAAI,CAAC,CAAC,MAAM,IAAI,EAAE;QAAE,OAAO,CAAC,CAAC;IAC7B,OAAO,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;AAC5B,CAAC;AAED,SAAS,QAAQ,CAAC,GAAG,KAAe;IAClC,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC/E,CAAC"}
|
|
1
|
+
{"version":3,"file":"anti-pattern-detector.js","sourceRoot":"","sources":["../../../src/web/analytics/anti-pattern-detector.ts"],"names":[],"mappings":"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"}
|
|
@@ -38,6 +38,12 @@ export declare class DriftDetector {
|
|
|
38
38
|
/**
|
|
39
39
|
* 规则 2: Skill 触发率
|
|
40
40
|
* 预期: 有 Skill 系统就应该有触发,>10%
|
|
41
|
+
*
|
|
42
|
+
* audit #2 (decision f61b8a0c): 旧实现用 `querySkillInvocations` 行数当分子,
|
|
43
|
+
* 但那张表混入了 UserPromptSubmit auto-match 的「注入计数」行(recorded_at_inject=1),
|
|
44
|
+
* 注入 != 真被调用 —— 触发率被系统性虚高。这里改用 **真调用信号**
|
|
45
|
+
* (events.tool_name IN ('Skill','mcp__claude-forge__skill_invoke'))作分子,
|
|
46
|
+
* 衡量「skill 真的被调用」而非「skill 被注入」。
|
|
41
47
|
*/
|
|
42
48
|
private checkSkillTriggerRate;
|
|
43
49
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drift-detector.d.ts","sourceRoot":"","sources":["../../../src/web/analytics/drift-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"drift-detector.d.ts","sourceRoot":"","sources":["../../../src/web/analytics/drift-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAGlE,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACxC,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,aAAa;IACZ,OAAO,CAAC,OAAO;gBAAP,OAAO,EAAE,aAAa;IAE1C;;OAEG;IACH,GAAG,CAAC,IAAI,GAAE,MAAU,GAAG,WAAW;IAsBlC;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IA0BhC;;;;;;;;;OASG;IACH,OAAO,CAAC,qBAAqB;IA8B7B;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IAqBhC;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAwB5B;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IA8B7B;;;OAGG;IACH,OAAO,CAAC,YAAY;CASrB"}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
*
|
|
7
7
|
* 只读 storage,不写入任何数据。
|
|
8
8
|
*/
|
|
9
|
+
import { daysAgoMs, daysAgoIso } from '../../core/utils/time.js';
|
|
9
10
|
export class DriftDetector {
|
|
10
11
|
storage;
|
|
11
12
|
constructor(storage) {
|
|
@@ -15,7 +16,7 @@ export class DriftDetector {
|
|
|
15
16
|
* 执行全部漂移检测规则,返回报告。
|
|
16
17
|
*/
|
|
17
18
|
run(days = 7) {
|
|
18
|
-
const since =
|
|
19
|
+
const since = daysAgoMs(days);
|
|
19
20
|
const sinceISO = new Date(since).toISOString();
|
|
20
21
|
const checks = [
|
|
21
22
|
this.checkAgentDelegationRate(since),
|
|
@@ -65,14 +66,20 @@ export class DriftDetector {
|
|
|
65
66
|
/**
|
|
66
67
|
* 规则 2: Skill 触发率
|
|
67
68
|
* 预期: 有 Skill 系统就应该有触发,>10%
|
|
69
|
+
*
|
|
70
|
+
* audit #2 (decision f61b8a0c): 旧实现用 `querySkillInvocations` 行数当分子,
|
|
71
|
+
* 但那张表混入了 UserPromptSubmit auto-match 的「注入计数」行(recorded_at_inject=1),
|
|
72
|
+
* 注入 != 真被调用 —— 触发率被系统性虚高。这里改用 **真调用信号**
|
|
73
|
+
* (events.tool_name IN ('Skill','mcp__claude-forge__skill_invoke'))作分子,
|
|
74
|
+
* 衡量「skill 真的被调用」而非「skill 被注入」。
|
|
68
75
|
*/
|
|
69
76
|
checkSkillTriggerRate(since) {
|
|
70
77
|
const routingEvents = this.storage.queryRoutingEvents({ since_ts: since, limit: 10000 });
|
|
71
78
|
const totalRouting = routingEvents.length;
|
|
72
|
-
|
|
73
|
-
const
|
|
79
|
+
// 真调用次数(来自 events 真调用信号),不再用注入计数冒充。
|
|
80
|
+
const realCalls = this.storage.countRealSkillCalls({ since });
|
|
74
81
|
const rate = totalRouting > 0
|
|
75
|
-
? Math.round((
|
|
82
|
+
? Math.round((realCalls / totalRouting) * 1000) / 10
|
|
76
83
|
: 0;
|
|
77
84
|
let status;
|
|
78
85
|
if (totalRouting === 0) {
|
|
@@ -88,9 +95,9 @@ export class DriftDetector {
|
|
|
88
95
|
status = 'fail';
|
|
89
96
|
}
|
|
90
97
|
return {
|
|
91
|
-
rule: 'Skill
|
|
92
|
-
expected: '>10% (
|
|
93
|
-
actual: `${rate}% (${
|
|
98
|
+
rule: 'Skill 真调用率',
|
|
99
|
+
expected: '>10% (真调用 events / routing_events,注入计数不算)',
|
|
100
|
+
actual: `${rate}% (${realCalls}/${totalRouting})`,
|
|
94
101
|
status,
|
|
95
102
|
detail: totalRouting === 0 ? '期间无路由事件' : undefined,
|
|
96
103
|
};
|
|
@@ -127,7 +134,7 @@ export class DriftDetector {
|
|
|
127
134
|
// H2 Phase 3: 改用 facade。
|
|
128
135
|
// 旧 SQL: timestamp >= date('now', '-7 days')
|
|
129
136
|
// 新口径:调用方计算 ISO 字符串。
|
|
130
|
-
const sevenDaysAgoIso =
|
|
137
|
+
const sevenDaysAgoIso = daysAgoIso(7);
|
|
131
138
|
const activeDays = this.storage.countActiveDays({ since: sevenDaysAgoIso });
|
|
132
139
|
let status;
|
|
133
140
|
if (activeDays >= 5) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drift-detector.js","sourceRoot":"","sources":["../../../src/web/analytics/drift-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"drift-detector.js","sourceRoot":"","sources":["../../../src/web/analytics/drift-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAiBjE,MAAM,OAAO,aAAa;IACJ;IAApB,YAAoB,OAAsB;QAAtB,YAAO,GAAP,OAAO,CAAe;IAAG,CAAC;IAE9C;;OAEG;IACH,GAAG,CAAC,OAAe,CAAC;QAClB,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAC9B,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;QAE/C,MAAM,MAAM,GAAiB;YAC3B,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC;YACpC,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC;YACjC,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC;YACpC,IAAI,CAAC,oBAAoB,EAAE;YAC3B,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC;SAClC,CAAC;QAEF,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAE/C,OAAO;YACL,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACrC,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE;YACjC,MAAM;YACN,YAAY;SACb,CAAC;IACJ,CAAC;IAED;;;OAGG;IACK,wBAAwB,CAAC,KAAa;QAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QAClF,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;QACzD,MAAM,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAEtE,IAAI,MAA4B,CAAC;QACjC,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YAChB,MAAM,GAAG,MAAM,CAAC;QAClB,CAAC;aAAM,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC;YACtB,MAAM,GAAG,MAAM,CAAC;QAClB,CAAC;aAAM,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC;YACtB,MAAM,GAAG,MAAM,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,MAAM,CAAC;QAClB,CAAC;QAED,OAAO;YACL,IAAI,EAAE,WAAW;YACjB,QAAQ,EAAE,gCAAgC;YAC1C,MAAM,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,KAAK,GAAG;YACvC,MAAM;YACN,MAAM,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;SAC5C,CAAC;IACJ,CAAC;IAED;;;;;;;;;OASG;IACK,qBAAqB,CAAC,KAAa;QACzC,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QACzF,MAAM,YAAY,GAAG,aAAa,CAAC,MAAM,CAAC;QAC1C,oCAAoC;QACpC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAE9D,MAAM,IAAI,GAAG,YAAY,GAAG,CAAC;YAC3B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,GAAG,YAAY,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE;YACpD,CAAC,CAAC,CAAC,CAAC;QAEN,IAAI,MAA4B,CAAC;QACjC,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,GAAG,MAAM,CAAC;QAClB,CAAC;aAAM,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC;YACtB,MAAM,GAAG,MAAM,CAAC;QAClB,CAAC;aAAM,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;YACrB,MAAM,GAAG,MAAM,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,MAAM,CAAC;QAClB,CAAC;QAED,OAAO;YACL,IAAI,EAAE,YAAY;YAClB,QAAQ,EAAE,2CAA2C;YACrD,MAAM,EAAE,GAAG,IAAI,MAAM,SAAS,IAAI,YAAY,GAAG;YACjD,MAAM;YACN,MAAM,EAAE,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;SACnD,CAAC;IACJ,CAAC;IAED;;;OAGG;IACK,wBAAwB,CAAC,KAAa;QAC5C,6DAA6D;QAC7D,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;QAEnE,IAAI,MAA4B,CAAC;QACjC,IAAI,aAAa,IAAI,CAAC,EAAE,CAAC;YACvB,MAAM,GAAG,MAAM,CAAC;QAClB,CAAC;aAAM,IAAI,aAAa,IAAI,CAAC,EAAE,CAAC;YAC9B,MAAM,GAAG,MAAM,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,MAAM,CAAC;QAClB,CAAC;QAED,OAAO;YACL,IAAI,EAAE,cAAc;YACpB,QAAQ,EAAE,mBAAmB;YAC7B,MAAM,EAAE,GAAG,aAAa,YAAY;YACpC,MAAM;SACP,CAAC;IACJ,CAAC;IAED;;;OAGG;IACK,oBAAoB;QAC1B,yBAAyB;QACzB,6CAA6C;QAC7C,qBAAqB;QACrB,MAAM,eAAe,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QACtC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;QAE5E,IAAI,MAA4B,CAAC;QACjC,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;YACpB,MAAM,GAAG,MAAM,CAAC;QAClB,CAAC;aAAM,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;YAC3B,MAAM,GAAG,MAAM,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,MAAM,CAAC;QAClB,CAAC;QAED,OAAO;YACL,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,kBAAkB;YAC5B,MAAM,EAAE,GAAG,UAAU,OAAO;YAC5B,MAAM;SACP,CAAC;IACJ,CAAC;IAED;;;OAGG;IACK,qBAAqB,CAAC,KAAa;QACzC,yBAAyB;QACzB,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;QAC/C,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC5E,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAEtE,MAAM,KAAK,GAAG,YAAY,GAAG,CAAC;YAC5B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,GAAG,YAAY,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG;YACpD,CAAC,CAAC,CAAC,CAAC;QAEN,IAAI,MAA4B,CAAC;QACjC,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,GAAG,MAAM,CAAC;QAClB,CAAC;aAAM,IAAI,KAAK,IAAI,GAAG,EAAE,CAAC;YACxB,MAAM,GAAG,MAAM,CAAC;QAClB,CAAC;aAAM,IAAI,KAAK,IAAI,GAAG,EAAE,CAAC;YACxB,MAAM,GAAG,MAAM,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,MAAM,CAAC;QAClB,CAAC;QAED,OAAO;YACL,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,uBAAuB;YACjC,MAAM,EAAE,GAAG,KAAK,KAAK,SAAS,YAAY,YAAY,YAAY;YAClE,MAAM;YACN,MAAM,EAAE,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;SACjD,CAAC;IACJ,CAAC;IAED;;;OAGG;IACK,YAAY,CAAC,MAAoB;QACvC,MAAM,WAAW,GAAG,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC;QACxC,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM;gBAAE,KAAK,IAAI,WAAW,CAAC;iBAC7C,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM;gBAAE,KAAK,IAAI,WAAW,GAAG,GAAG,CAAC;QAC/D,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;CACF"}
|
|
@@ -33,7 +33,20 @@ export interface WeeklyReport {
|
|
|
33
33
|
}>;
|
|
34
34
|
};
|
|
35
35
|
skills: {
|
|
36
|
+
/**
|
|
37
|
+
* audit #2 (decision f61b8a0c): rows in skill_invocations for the week.
|
|
38
|
+
* NOTE: this counts INJECTED + invoked rows (back-compat field). It is NOT
|
|
39
|
+
* a measure of effectiveness — see `realCalls` for actual invocations.
|
|
40
|
+
*/
|
|
36
41
|
invocations: number;
|
|
42
|
+
/** audit #2: rows written at inject time (recorded_at_inject=1). Injection != 真调用. */
|
|
43
|
+
injected: number;
|
|
44
|
+
/**
|
|
45
|
+
* audit #2: real skill calls from events.tool_name
|
|
46
|
+
* IN ('Skill','mcp__claude-forge__skill_invoke') — the only ground truth
|
|
47
|
+
* for "a skill was actually invoked". Use THIS for effectiveness.
|
|
48
|
+
*/
|
|
49
|
+
realCalls: number;
|
|
37
50
|
distinct: number;
|
|
38
51
|
topSkills: Array<{
|
|
39
52
|
skill_id: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"weekly-report.d.ts","sourceRoot":"","sources":["../../../src/web/analytics/weekly-report.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"weekly-report.d.ts","sourceRoot":"","sources":["../../../src/web/analytics/weekly-report.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAGlE,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5D,QAAQ,EAAE;QACR,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC;QACnB,cAAc,EAAE,MAAM,EAAE,CAAC;QACzB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,eAAe,EAAE;QACf,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,MAAM,CAAC;QACpB,IAAI,EAAE,MAAM,CAAC;QACb,YAAY,EAAE,MAAM,CAAC;QACrB,SAAS,EAAE,KAAK,CAAC;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACpD,CAAC;IACF,MAAM,EAAE;QACN;;;;WAIG;QACH,WAAW,EAAE,MAAM,CAAC;QACpB,sFAAsF;QACtF,QAAQ,EAAE,MAAM,CAAC;QACjB;;;;WAIG;QACH,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,KAAK,CAAC;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACtD,SAAS,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;IACF,KAAK,EAAE;QACL,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACjD,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,KAAK,EAAE;QACL,SAAS,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACtD,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,SAAS,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACzD;AAYD,qBAAa,qBAAqB;IAE9B,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,aAAa,CAAC;gBADd,OAAO,EAAE,aAAa,EACtB,aAAa,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC;YAAE,EAAE,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,YAAA;IAG7D;;;OAGG;IACH,QAAQ,CAAC,UAAU,GAAE,MAAU,GAAG,YAAY;IA6B9C,OAAO,CAAC,iBAAiB;IAwBzB,OAAO,CAAC,wBAAwB;IAmBhC,OAAO,CAAC,gBAAgB;IAuBxB,OAAO,CAAC,eAAe;IAsCvB,OAAO,CAAC,cAAc;IAwCtB,OAAO,CAAC,cAAc;IA+BtB,OAAO,CAAC,kBAAkB;IAS1B;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IA2BxB,UAAU,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM;CA4GzC"}
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
*
|
|
8
8
|
* 不修改任何 schema:完全基于现有表。
|
|
9
9
|
*/
|
|
10
|
+
import { DAY_MS } from '../../core/utils/time.js';
|
|
10
11
|
const FILE_EDIT_TOOLS = new Set(['Edit', 'Write', 'MultiEdit', 'NotebookEdit']);
|
|
11
12
|
export class WeeklyReportGenerator {
|
|
12
13
|
storage;
|
|
@@ -95,12 +96,20 @@ export class WeeklyReportGenerator {
|
|
|
95
96
|
}
|
|
96
97
|
aggregateSkills(week) {
|
|
97
98
|
// H3: SQL 端聚合 + [since, until) 半开区间。
|
|
98
|
-
|
|
99
|
+
// audit #2 (decision f61b8a0c): split injected vs really-invoked rows so the
|
|
100
|
+
// report no longer presents injection counts as effectiveness.
|
|
101
|
+
const rows = this.storage.aggregateSkillInjectVsInvoke({
|
|
99
102
|
since: week.startMs,
|
|
100
103
|
until: week.endMs,
|
|
101
104
|
limit: 10000,
|
|
102
105
|
});
|
|
103
106
|
const invocations = rows.reduce((sum, r) => sum + r.total, 0);
|
|
107
|
+
const injected = rows.reduce((sum, r) => sum + r.injected, 0);
|
|
108
|
+
// 真调用次数:来自 events 真调用信号(注入计数不算)。
|
|
109
|
+
const realCalls = this.storage.countRealSkillCalls({
|
|
110
|
+
since: week.startMs,
|
|
111
|
+
until: week.endMs,
|
|
112
|
+
});
|
|
104
113
|
const topSkills = rows
|
|
105
114
|
.slice(0, 5)
|
|
106
115
|
.map(r => ({ skill_id: r.skill_id, count: r.total }));
|
|
@@ -111,6 +120,8 @@ export class WeeklyReportGenerator {
|
|
|
111
120
|
const neverUsed = allSkillIds.filter(id => !usedSet.has(id));
|
|
112
121
|
return {
|
|
113
122
|
invocations,
|
|
123
|
+
injected,
|
|
124
|
+
realCalls,
|
|
114
125
|
distinct: rows.length,
|
|
115
126
|
topSkills,
|
|
116
127
|
neverUsed,
|
|
@@ -245,7 +256,10 @@ export class WeeklyReportGenerator {
|
|
|
245
256
|
lines.push('');
|
|
246
257
|
lines.push('## Skills');
|
|
247
258
|
lines.push('');
|
|
248
|
-
|
|
259
|
+
// audit #2: 区分「注入」与「真调用」——注入数不代表有效性。
|
|
260
|
+
lines.push(`- 真调用次数: **${skills.realCalls}** (events: Skill / skill_invoke)`);
|
|
261
|
+
lines.push(`- 注入次数: **${skills.injected}** (注入非有效,仅供参考)`);
|
|
262
|
+
lines.push(`- skill_invocations 行总数: **${skills.invocations}**`);
|
|
249
263
|
lines.push(`- 不同 Skill: **${skills.distinct}**`);
|
|
250
264
|
if (skills.topSkills.length > 0) {
|
|
251
265
|
lines.push('');
|
|
@@ -314,7 +328,7 @@ function getISOWeekNumber(date) {
|
|
|
314
328
|
target.setHours(0, 0, 0, 0);
|
|
315
329
|
target.setDate(target.getDate() + 3 - ((target.getDay() + 6) % 7));
|
|
316
330
|
const week1 = new Date(target.getFullYear(), 0, 4);
|
|
317
|
-
return 1 + Math.round(((target.getTime() - week1.getTime()) /
|
|
331
|
+
return 1 + Math.round(((target.getTime() - week1.getTime()) / DAY_MS
|
|
318
332
|
- 3 + ((week1.getDay() + 6) % 7)) / 7);
|
|
319
333
|
}
|
|
320
334
|
//# sourceMappingURL=weekly-report.js.map
|