@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
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LoopHint — formats the advisory `[LOOP HINT]` systemMessage the daemon emits
|
|
3
|
+
* when a prompt looks like one of the 3 whitelisted loop-suitable scenarios.
|
|
4
|
+
*
|
|
5
|
+
* decision e7d13697 (2026-06-11, Option C — approved):
|
|
6
|
+
* The user wants the freshly-landed goal-convergence loop (`cf loop run`,
|
|
7
|
+
* governance §10) SUGGESTED automatically in matching scenarios — but as an
|
|
8
|
+
* ADVISORY hint only, never auto-run / never auto-spawn. This mirrors the
|
|
9
|
+
* existing `[DECISION HINT]` advisory pattern (services/decision-hint.ts):
|
|
10
|
+
* the daemon mints a systemMessage, the main thread still gates with a human
|
|
11
|
+
* review before entering a loop.
|
|
12
|
+
*
|
|
13
|
+
* Why advisory-only (core-belief «daemon 永不对主线程加硬约束新智能»):
|
|
14
|
+
* This service produces TEXT and (optionally) a telemetry row. It NEVER calls
|
|
15
|
+
* `cf loop run`, never spawns an agent, never denies. The "should we loop?"
|
|
16
|
+
* judgement stays with the main thread.
|
|
17
|
+
*
|
|
18
|
+
* Conservative-by-design (decision OQ2 hard constraint + fe6f98cd/KB
|
|
19
|
+
* low-adoption history): we only mint for prompts we are confident fall into a
|
|
20
|
+
* whitelisted scenario WITH a clean machine-judgeable PASS criterion. Open-ended
|
|
21
|
+
* tasks with no clean PASS are excluded — they would oscillate / loop forever.
|
|
22
|
+
* Better to under-mint than to spam.
|
|
23
|
+
*
|
|
24
|
+
* Fail-safe: every entry point catches its own errors and returns null; the
|
|
25
|
+
* UserPromptSubmit pipeline keeps running.
|
|
26
|
+
*/
|
|
27
|
+
import { isSystemGeneratedPrompt, isSkipDecisionKeyword, } from './decision-hint.js';
|
|
28
|
+
/**
|
|
29
|
+
* forge_config key gating `[LOOP HINT]` minting. Default `true` (the user
|
|
30
|
+
* opted in via decision e7d13697). Set to `false` to suppress the hint without
|
|
31
|
+
* a code change (reversibility — decision Triage: all of A/B/C reversible).
|
|
32
|
+
*
|
|
33
|
+
* Seeded by `seedLoopConfig` (src/cli/commands/loop.ts) alongside the other
|
|
34
|
+
* `loop.*` keys, so a fresh install gets the default.
|
|
35
|
+
*/
|
|
36
|
+
export const LOOP_HINT_ENABLED_CONFIG_KEY = 'loop.hint_enabled';
|
|
37
|
+
/** Default when the key is absent (user opted in). */
|
|
38
|
+
export const DEFAULT_LOOP_HINT_ENABLED = true;
|
|
39
|
+
/**
|
|
40
|
+
* source_handler tag for the telemetry injection row (decision OQ5).
|
|
41
|
+
*
|
|
42
|
+
* Mirrors the KB-adoption precedent (decision 148f7a0a): KB injections are
|
|
43
|
+
* tagged `UserPromptSubmitHandler:kb` and stamped `adopted_at` when the session
|
|
44
|
+
* later actively uses the injected knowledge. We reuse the SAME `injections`
|
|
45
|
+
* table + `adopted_at` mechanism: a `[LOOP HINT]` mint writes one row with this
|
|
46
|
+
* tag; PostToolUse stamps `adopted_at` when the session later runs `cf loop run`
|
|
47
|
+
* (the observable "the hint was adopted" signal). See
|
|
48
|
+
* src/core/storage/injections.ts writeLoopHintAdoption / countLoopHintAdoption.
|
|
49
|
+
*/
|
|
50
|
+
export const LOOP_HINT_SOURCE_HANDLER = 'UserPromptSubmitHandler:loop-hint';
|
|
51
|
+
/** Max chars of the prompt echoed back into the hint body. */
|
|
52
|
+
const LOOP_HINT_SUMMARY_MAX = 150;
|
|
53
|
+
/**
|
|
54
|
+
* Human-readable scenario label used in the hint body.
|
|
55
|
+
*/
|
|
56
|
+
const SCENARIO_LABELS = {
|
|
57
|
+
'bug-fix': 'bug 修复(有明确 verify-PASS 判据)',
|
|
58
|
+
'test-lint-green': '测试 / lint「修到绿」(fix until green)',
|
|
59
|
+
'spec-impl': '明确 spec 的实现(verify 能判完成)',
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* Verbs / phrases that signal a machine-judgeable PASS criterion. A whitelist
|
|
63
|
+
* scenario REQUIRES at least one of these to be present (so we don't mint for
|
|
64
|
+
* open-ended "improve the architecture" style prompts that have no clean stop
|
|
65
|
+
* condition). This is the conservative gate referenced in decision OQ2.
|
|
66
|
+
*/
|
|
67
|
+
const PASS_CRITERION_RE = /(verify|pass|绿|green|通过|all\s+green|until\s+green|修到绿|跑通|build\s+success|构建成功|测试通过|全部通过|exit\s+0)/i;
|
|
68
|
+
/**
|
|
69
|
+
* Scenario-1: bug-fix. Requires a fix-flavoured verb AND a bug/error noun.
|
|
70
|
+
* Conservative: "fix the typo in the README" matches "fix" but has no
|
|
71
|
+
* bug/error/failing noun, so it does NOT mint — which is the desired
|
|
72
|
+
* under-minting bias.
|
|
73
|
+
*/
|
|
74
|
+
const BUGFIX_ACTION_RE = /(fix|修复|修一?下|repair|resolve|解决|debug|排查)/i;
|
|
75
|
+
const BUGFIX_SUBJECT_RE = /(bug|缺陷|错误|error|crash|崩溃|异常|exception|报错|failing|fail\b|失败|回归|regression|挂了|不工作|doesn'?t\s+work|broken)/i;
|
|
76
|
+
/**
|
|
77
|
+
* Scenario-2: test/lint "fix until green". Requires a test/lint noun AND a
|
|
78
|
+
* make-green verb (fix / 修 / pass / 跑通 / green / 绿).
|
|
79
|
+
*/
|
|
80
|
+
// Note: `spec` is intentionally EXCLUDED here — in this codebase "spec" almost
|
|
81
|
+
// always means a specification document (scenario-3), not a test spec. Treating
|
|
82
|
+
// it as a test noun made "implement the spec and make verify pass" misclassify
|
|
83
|
+
// as test-lint-green. Test specs are still caught via `vitest`/`jest`/`用例`/
|
|
84
|
+
// `单测`/`test`.
|
|
85
|
+
const TEST_LINT_SUBJECT_RE = /(test|测试|lint|eslint|tsc|typecheck|类型检查|ci\b|用例|单测|e2e|vitest|jest)/i;
|
|
86
|
+
const MAKE_GREEN_RE = /(green|绿|pass|通过|跑通|fix|修复|修一?下|修到|until\s+green|all\s+pass|全部通过|fail|失败|红)/i;
|
|
87
|
+
/**
|
|
88
|
+
* Scenario-3: implement an explicit spec where verify can judge done. Requires
|
|
89
|
+
* an implement verb AND a spec/decision reference.
|
|
90
|
+
*/
|
|
91
|
+
const IMPL_ACTION_RE = /(implement|实现|落地|按.*实现|实施|build\s+(?:the|a)\b|开发)/i;
|
|
92
|
+
const SPEC_SUBJECT_RE = /(spec\b|规格|decision\b|决策|需求|requirement|design\s+doc|设计文档|acceptance|验收|按.*(?:spec|规格|决策|文档))/i;
|
|
93
|
+
/**
|
|
94
|
+
* Open-ended exclusion guard. Prompts dominated by exploratory / vague verbs
|
|
95
|
+
* with no concrete PASS criterion must NOT mint even if they incidentally
|
|
96
|
+
* contain a whitelisted keyword. This is the "exclude open-ended tasks with no
|
|
97
|
+
* clean PASS criterion" requirement (they'd loop forever).
|
|
98
|
+
*/
|
|
99
|
+
const OPEN_ENDED_RE = /(explore|调研|research|brainstorm|头脑风暴|讨论|discuss|design\s+(?:from\s+scratch|a\s+new)|重新设计|想法|idea|方向|strategy|策略|optimize\s+(?:performance|the\s+architecture)|优化架构|提升性能|看看怎么|要不要|该不该|是否应该|whether\s+to|should\s+we)/i;
|
|
100
|
+
/**
|
|
101
|
+
* Conservative scenario classifier (decision OQ2).
|
|
102
|
+
*
|
|
103
|
+
* Returns the matched whitelist scenario, or `null` to mint nothing. Precision
|
|
104
|
+
* is favoured over recall: a prompt must clearly carry BOTH an action signal
|
|
105
|
+
* AND a subject/PASS signal for its scenario, and must NOT look open-ended.
|
|
106
|
+
*
|
|
107
|
+
* Order of checks:
|
|
108
|
+
* 0. Empty / system-generated / skip-decision → null (never classify).
|
|
109
|
+
* 1. Open-ended exclusion → null (vague tasks with no clean PASS).
|
|
110
|
+
* 2. Scenario-1 bug-fix.
|
|
111
|
+
* 3. Scenario-2 test/lint green.
|
|
112
|
+
* 4. Scenario-3 spec implementation (requires an explicit PASS-criterion or
|
|
113
|
+
* spec reference so "implement a button" doesn't mint).
|
|
114
|
+
*
|
|
115
|
+
* Pure function (no I/O) so it is trivially unit-testable.
|
|
116
|
+
*/
|
|
117
|
+
export function classifyLoopScenario(prompt) {
|
|
118
|
+
const text = (prompt ?? '').trim();
|
|
119
|
+
if (text.length === 0)
|
|
120
|
+
return null;
|
|
121
|
+
if (isSkipDecisionKeyword(text))
|
|
122
|
+
return null;
|
|
123
|
+
if (isSystemGeneratedPrompt(text))
|
|
124
|
+
return null;
|
|
125
|
+
// (1) Open-ended exclusion — bias hard toward under-minting.
|
|
126
|
+
if (OPEN_ENDED_RE.test(text))
|
|
127
|
+
return null;
|
|
128
|
+
// (2) test/lint "fix until green": test-noun AND make-green verb. Checked
|
|
129
|
+
// BEFORE bug-fix because "fix the failing tests until green" carries both
|
|
130
|
+
// a bug-flavoured noun ("failing") and a test noun — the test scenario is
|
|
131
|
+
// the more specific intent, so it wins. A bug fix WITHOUT a test noun
|
|
132
|
+
// ("fix the crash in the daemon") falls through to scenario-3 below.
|
|
133
|
+
if (TEST_LINT_SUBJECT_RE.test(text) && MAKE_GREEN_RE.test(text)) {
|
|
134
|
+
return {
|
|
135
|
+
scenario: 'test-lint-green',
|
|
136
|
+
label: SCENARIO_LABELS['test-lint-green'],
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
// (3) bug-fix: fix-verb AND bug-noun. The verify-PASS criterion is implicit
|
|
140
|
+
// for bug fixes (verify-agent判 PASS), so we don't additionally require
|
|
141
|
+
// PASS_CRITERION_RE here — the bug-noun is the concrete stop condition.
|
|
142
|
+
if (BUGFIX_ACTION_RE.test(text) && BUGFIX_SUBJECT_RE.test(text)) {
|
|
143
|
+
return { scenario: 'bug-fix', label: SCENARIO_LABELS['bug-fix'] };
|
|
144
|
+
}
|
|
145
|
+
// (4) spec implementation: implement-verb AND spec-noun, AND the prompt must
|
|
146
|
+
// carry an explicit PASS criterion OR a spec/decision reference (the
|
|
147
|
+
// spec-noun itself). Requiring SPEC_SUBJECT_RE already enforces this; we
|
|
148
|
+
// additionally reject if it reads open-ended (handled above). This keeps
|
|
149
|
+
// "implement a login page" (no spec, no PASS) from minting.
|
|
150
|
+
if (IMPL_ACTION_RE.test(text) && SPEC_SUBJECT_RE.test(text)) {
|
|
151
|
+
return { scenario: 'spec-impl', label: SCENARIO_LABELS['spec-impl'] };
|
|
152
|
+
}
|
|
153
|
+
// PASS_CRITERION_RE is intentionally NOT a standalone mint trigger — a lone
|
|
154
|
+
// "make it pass" with no scenario subject is too ambiguous. It is referenced
|
|
155
|
+
// in the doc as the conceptual gate the three subject checks encode.
|
|
156
|
+
void PASS_CRITERION_RE;
|
|
157
|
+
return null;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Resolve whether `[LOOP HINT]` minting is enabled from forge_config.
|
|
161
|
+
*
|
|
162
|
+
* Default `true` (user opted in). Any value other than the literal `'false'`
|
|
163
|
+
* (case-insensitive, trimmed) is treated as enabled, matching the lenient
|
|
164
|
+
* coercion used elsewhere (the key is seeded as the string `'false'`/`'true'`).
|
|
165
|
+
* Fail-silent: on any storage error, fall back to the default.
|
|
166
|
+
*/
|
|
167
|
+
export function resolveLoopHintEnabled(storage) {
|
|
168
|
+
if (!storage)
|
|
169
|
+
return DEFAULT_LOOP_HINT_ENABLED;
|
|
170
|
+
try {
|
|
171
|
+
const raw = storage.readConfig(LOOP_HINT_ENABLED_CONFIG_KEY);
|
|
172
|
+
if (raw === undefined || raw === null)
|
|
173
|
+
return DEFAULT_LOOP_HINT_ENABLED;
|
|
174
|
+
return raw.trim().toLowerCase() !== 'false';
|
|
175
|
+
}
|
|
176
|
+
catch {
|
|
177
|
+
return DEFAULT_LOOP_HINT_ENABLED;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Main entry point — decides whether to emit a `[LOOP HINT]` for this prompt
|
|
182
|
+
* and (when it does) writes the adoption-telemetry injection row.
|
|
183
|
+
*
|
|
184
|
+
* Guards (in order):
|
|
185
|
+
* 1. `loop.hint_enabled = false` → null (config gate, reversible).
|
|
186
|
+
* 2. scenario classifier returns null → null (not loop-suitable).
|
|
187
|
+
*
|
|
188
|
+
* When it mints:
|
|
189
|
+
* • Writes ONE `injections` row tagged LOOP_HINT_SOURCE_HANDLER (fail-silent)
|
|
190
|
+
* so adoption can later be measured (PostToolUse stamps `adopted_at` when
|
|
191
|
+
* the session runs `cf loop run`). Without this landing point we could not
|
|
192
|
+
* judge keep-vs-remove — the whole reason Option C was chosen over D.
|
|
193
|
+
* • Returns `{ message, scenario }`. The handler pushes `message` into
|
|
194
|
+
* systemParts; it is ADVISORY text with zero side effects beyond the row.
|
|
195
|
+
*
|
|
196
|
+
* Coexistence with `[DECISION HINT]` (decision guardrail): this is ADDITIVE and
|
|
197
|
+
* SECONDARY. A prompt can be both decision-worthy and loop-suitable; the loop
|
|
198
|
+
* hint is appended as its own section and never suppresses / replaces the
|
|
199
|
+
* decision hint. The decision hint stays the primary "spawn decision-maker"
|
|
200
|
+
* directive; the loop hint just additionally suggests the loop pattern.
|
|
201
|
+
*
|
|
202
|
+
* @param prompt - The raw user prompt text.
|
|
203
|
+
* @param storage - Optional SQLiteStorage (config gate + telemetry row).
|
|
204
|
+
* @param eventContext - Optional event fields for the telemetry row.
|
|
205
|
+
*/
|
|
206
|
+
export function emitLoopHintSimple(prompt, storage, eventContext) {
|
|
207
|
+
try {
|
|
208
|
+
// (1) Config gate — reversible kill switch.
|
|
209
|
+
if (!resolveLoopHintEnabled(storage))
|
|
210
|
+
return null;
|
|
211
|
+
// (2) Conservative scenario classification.
|
|
212
|
+
const match = classifyLoopScenario(prompt);
|
|
213
|
+
if (!match)
|
|
214
|
+
return null;
|
|
215
|
+
const message = formatLoopHintMessage(match, truncateSummary(prompt));
|
|
216
|
+
// (3) Adoption telemetry — write the mint row (fail-silent). Reuses the
|
|
217
|
+
// KB-adoption `injections` + `adopted_at` mechanism (decision 148f7a0a).
|
|
218
|
+
if (storage && eventContext) {
|
|
219
|
+
try {
|
|
220
|
+
storage.writeInjection({
|
|
221
|
+
event_id: eventContext.event_id,
|
|
222
|
+
session_id: eventContext.session_id,
|
|
223
|
+
timestamp: eventContext.timestamp ?? new Date().toISOString(),
|
|
224
|
+
source_handler: LOOP_HINT_SOURCE_HANDLER,
|
|
225
|
+
injection_type: 'systemMessage',
|
|
226
|
+
content: message,
|
|
227
|
+
metadata_json: JSON.stringify({
|
|
228
|
+
scenario: match.scenario,
|
|
229
|
+
project_path: eventContext.project_path,
|
|
230
|
+
}),
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
catch {
|
|
234
|
+
// telemetry is observability, never a blocker.
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
return { message, scenario: match.scenario };
|
|
238
|
+
}
|
|
239
|
+
catch {
|
|
240
|
+
return null;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Formats the `[LOOP HINT]` body. Kept separate for unit-test readability and
|
|
245
|
+
* to mirror `formatHintMessage` in decision-hint.ts.
|
|
246
|
+
*
|
|
247
|
+
* The body: names the matched scenario, suggests the loop-until-verify-PASS
|
|
248
|
+
* pattern (`cf loop run` / governance §10), and makes explicit that the main
|
|
249
|
+
* thread should still GATE at the start (human review — never auto-run).
|
|
250
|
+
*/
|
|
251
|
+
export function formatLoopHintMessage(match, intentSummary) {
|
|
252
|
+
return [
|
|
253
|
+
'[LOOP HINT]',
|
|
254
|
+
'',
|
|
255
|
+
`daemon 判定本任务疑似适合 goal-convergence loop(场景:${match.label})。`,
|
|
256
|
+
`这是**建议**,不是约束——主线程进 loop 前仍须人审 gate,daemon 绝不自动起 loop。`,
|
|
257
|
+
'',
|
|
258
|
+
`若确认适合,可用 loop-until-verify-PASS 模式(governance §10):`,
|
|
259
|
+
` cf loop enable && cf loop run # 每轮 coder→verify-agent,PASS/SKIP 收敛、FAIL 续迭代`,
|
|
260
|
+
` (或交互形态 cf loop run --interactive / 原生 /loop,迭代间人盯)`,
|
|
261
|
+
'',
|
|
262
|
+
`任务摘要:"${intentSummary}"`,
|
|
263
|
+
`如不适合(开放式 / 无干净 PASS 判据)或已有计划,忽略本提示即可。`,
|
|
264
|
+
].join('\n');
|
|
265
|
+
}
|
|
266
|
+
function truncateSummary(text) {
|
|
267
|
+
const oneLine = (text ?? '').replace(/\s+/g, ' ').trim();
|
|
268
|
+
if (oneLine.length <= LOOP_HINT_SUMMARY_MAX)
|
|
269
|
+
return oneLine;
|
|
270
|
+
return oneLine.slice(0, LOOP_HINT_SUMMARY_MAX - 1) + '…';
|
|
271
|
+
}
|
|
272
|
+
//# sourceMappingURL=loop-hint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loop-hint.js","sourceRoot":"","sources":["../../../src/daemon/services/loop-hint.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
import { logger } from '../../core/utils/logger.js';
|
|
17
17
|
import { formatError } from '../../core/utils/format.js';
|
|
18
18
|
import { truncateSessionId } from '../../core/utils/session.js';
|
|
19
|
-
import { collectViolations } from '
|
|
19
|
+
import { collectViolations } from '../../core/insights/violation-reporter.js';
|
|
20
20
|
import { classifyOutcome, collectCommitStats, } from './outcome-classifier.js';
|
|
21
21
|
/** Upper bound on idle tasks backfilled per Stop (mirrors original). */
|
|
22
22
|
const MAX_IDLE_TASKS_PER_RUN = 20;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"outcome-classification-service.js","sourceRoot":"","sources":["../../../src/daemon/services/outcome-classification-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"outcome-classification-service.js","sourceRoot":"","sources":["../../../src/daemon/services/outcome-classification-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,15 @@
|
|
|
1
1
|
import type { SQLiteStorage } from '../../core/storage/sqlite.js';
|
|
2
|
+
/**
|
|
3
|
+
* decision f47c2c90 (二期B, spec 1711): conservative ack-title set for the
|
|
4
|
+
* parent_task_id linkage. A follow-up task's title matching one of these short
|
|
5
|
+
* tokens marks it as an approval/continue turn (gate 1 of the triple-gate, in
|
|
6
|
+
* tandem with the live isContinuationPrompt check on the prompt). Kept as a
|
|
7
|
+
* lowercase exact-match set because titles are short ack tokens, not free text.
|
|
8
|
+
* Passed verbatim to storage.getMostRecentUserTaskBefore so the segmenter is the
|
|
9
|
+
* single source of truth for "what counts as an ack title" (the boot backfill
|
|
10
|
+
* keeps its own mirror because it has no access to this daemon module).
|
|
11
|
+
*/
|
|
12
|
+
export declare const PARENT_LINK_ACK_TITLES: ReadonlyArray<string>;
|
|
2
13
|
/**
|
|
3
14
|
* Task-tracking overhaul (2026-05-27 spec §3.3 / §R4).
|
|
4
15
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-segmenter.d.ts","sourceRoot":"","sources":["../../../src/daemon/services/task-segmenter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AA0ElE;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,yBAAyB,QAAa,CAAC;AAEpD;;;;;;;GAOG;AACH,MAAM,WAAW,gBAAgB;IAC/B,+DAA+D;IAC/D,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,SAAS,CAAC,EAAE;QACV,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;QACrB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,qBAAa,aAAa;IAGZ,OAAO,CAAC,OAAO;IAF3B,OAAO,CAAC,YAAY,CAAoF;gBAEpF,OAAO,EAAE,aAAa;IAE1C,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM;IAI7F;;;;;;OAMG;IACH,yBAAyB,CACvB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,MAAM,GACf,gBAAgB;
|
|
1
|
+
{"version":3,"file":"task-segmenter.d.ts","sourceRoot":"","sources":["../../../src/daemon/services/task-segmenter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AA0ElE;;;;;;;;;GASG;AACH,eAAO,MAAM,sBAAsB,EAAE,aAAa,CAAC,MAAM,CAGxD,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,yBAAyB,QAAa,CAAC;AAEpD;;;;;;;GAOG;AACH,MAAM,WAAW,gBAAgB;IAC/B,+DAA+D;IAC/D,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,SAAS,CAAC,EAAE;QACV,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;QACrB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,qBAAa,aAAa;IAGZ,OAAO,CAAC,OAAO;IAF3B,OAAO,CAAC,YAAY,CAAoF;gBAEpF,OAAO,EAAE,aAAa;IAE1C,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM;IAI7F;;;;;;OAMG;IACH,yBAAyB,CACvB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,MAAM,GACf,gBAAgB;IAyInB;;;;;;;;;;;;;;OAcG;IACH,SAAS,CACP,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,MAAM,EAClB,IAAI,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAC9C,IAAI;IAuDP;;;;;;;;;;;;;;;;;;OAkBG;IACH,OAAO,CAAC,iBAAiB;IAczB;;;;;;;;;;;;;;;;OAgBG;IACH,kBAAkB,IAAI,MAAM;IAsB5B;;;;;;;;;;;;;;;;;OAiBG;IACH,OAAO,CAAC,iBAAiB;IAgBzB;;;;;;;;;;;;OAYG;IACH,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,MAAM;IAYrE,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAIlD,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAU/D;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,kBAAkB;IA4B1B;;;;;;;;;;OAUG;IACH,OAAO,CAAC,sBAAsB;IAe9B,OAAO,CAAC,UAAU;IAmClB,OAAO,CAAC,YAAY;CAMrB;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAUrD;AAED;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEjE;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAK5D"}
|
|
@@ -63,6 +63,20 @@ const TASK_SWITCH_MINUTES = 30;
|
|
|
63
63
|
// B+ smart window resume: reuse TASK_SWITCH_MINUTES as the look-back window
|
|
64
64
|
// so resume threshold == idle-split threshold (both 30min).
|
|
65
65
|
const TASK_RESUME_WINDOW_MS = TASK_SWITCH_MINUTES * 60 * 1000;
|
|
66
|
+
/**
|
|
67
|
+
* decision f47c2c90 (二期B, spec 1711): conservative ack-title set for the
|
|
68
|
+
* parent_task_id linkage. A follow-up task's title matching one of these short
|
|
69
|
+
* tokens marks it as an approval/continue turn (gate 1 of the triple-gate, in
|
|
70
|
+
* tandem with the live isContinuationPrompt check on the prompt). Kept as a
|
|
71
|
+
* lowercase exact-match set because titles are short ack tokens, not free text.
|
|
72
|
+
* Passed verbatim to storage.getMostRecentUserTaskBefore so the segmenter is the
|
|
73
|
+
* single source of truth for "what counts as an ack title" (the boot backfill
|
|
74
|
+
* keeps its own mirror because it has no access to this daemon module).
|
|
75
|
+
*/
|
|
76
|
+
export const PARENT_LINK_ACK_TITLES = [
|
|
77
|
+
'批准', '同意', 'approve', '好', '好的', '嗯', 'ok', 'okay',
|
|
78
|
+
'可以', '是', '是的', '继续', 'yes', '对', '行', '没问题',
|
|
79
|
+
];
|
|
66
80
|
/**
|
|
67
81
|
* Task-tracking overhaul (2026-05-27 spec §3.3 / §R4).
|
|
68
82
|
*
|
|
@@ -120,6 +134,11 @@ export class TaskSegmenter {
|
|
|
120
134
|
logger.debug(`[TaskSegmenter] Non-user task created kind=${kind} ${truncateString(taskId, 8)} (session=${truncateSessionId(sessionId)})`);
|
|
121
135
|
return { taskId };
|
|
122
136
|
}
|
|
137
|
+
// decision f47c2c90 (二期B, spec 1711 § Phase 2): capture gate 2
|
|
138
|
+
// (agentJustReturned) BEFORE shouldStartNewTask consumes the one-shot flag.
|
|
139
|
+
// The triple-gate parent linkage needs to know whether the new task is being
|
|
140
|
+
// forced *because* a sub-agent just returned.
|
|
141
|
+
const agentJustReturnedBefore = !!current?.agentJustReturned;
|
|
123
142
|
if (!current || this.shouldStartNewTask(prompt, now, current)) {
|
|
124
143
|
if (current) {
|
|
125
144
|
this.storage.updateTask(current.id, { status: 'completed', end_time: timestamp });
|
|
@@ -159,7 +178,29 @@ export class TaskSegmenter {
|
|
|
159
178
|
}
|
|
160
179
|
}
|
|
161
180
|
}
|
|
162
|
-
|
|
181
|
+
// decision f47c2c90 (二期B, spec 1711 § Phase 2): conservative triple-gate
|
|
182
|
+
// parent linkage. Link this new user task back to the originating user task
|
|
183
|
+
// ONLY when ALL THREE hold (宁缺毋滥 — see R1):
|
|
184
|
+
// 1. gate 1: the prompt is an ack/continue (isContinuationPrompt), AND
|
|
185
|
+
// 2. gate 2: this new task is being forced because a sub-agent just
|
|
186
|
+
// returned (agentJustReturnedBefore — "批准后派生实施轮" path), AND
|
|
187
|
+
// 3. gate 3: there is a same-session user task started within 30min
|
|
188
|
+
// strictly before now (storage.getMostRecentUserTaskBefore).
|
|
189
|
+
// Any gate failing → parentTaskId stays undefined → parent_task_id NULL.
|
|
190
|
+
// resume path (above) NEVER reaches here (it returns early), per Q3.
|
|
191
|
+
let parentTaskId;
|
|
192
|
+
if (agentJustReturnedBefore && isContinuationPrompt(prompt)) {
|
|
193
|
+
const candidate = this.storage.getMostRecentUserTaskBefore({
|
|
194
|
+
session_id: sessionId,
|
|
195
|
+
beforeIso: timestamp,
|
|
196
|
+
windowMs: TASK_RESUME_WINDOW_MS,
|
|
197
|
+
ackTitles: PARENT_LINK_ACK_TITLES,
|
|
198
|
+
});
|
|
199
|
+
// Defense-in-depth (R4): parent must exist and never be self.
|
|
200
|
+
if (candidate)
|
|
201
|
+
parentTaskId = candidate;
|
|
202
|
+
}
|
|
203
|
+
const taskId = this.createTask(sessionId, prompt, timestamp, 'user', parentTaskId);
|
|
163
204
|
this.currentTasks.set(key, { id: taskId, lastTime: now });
|
|
164
205
|
if (eventId)
|
|
165
206
|
this.storage.linkEventToTask(taskId, eventId);
|
|
@@ -451,9 +492,13 @@ export class TaskSegmenter {
|
|
|
451
492
|
return true;
|
|
452
493
|
return false;
|
|
453
494
|
}
|
|
454
|
-
createTask(sessionId, prompt, timestamp, kind) {
|
|
495
|
+
createTask(sessionId, prompt, timestamp, kind, parentTaskId) {
|
|
455
496
|
const taskId = randomUUID();
|
|
456
497
|
const title = this.extractTitle(prompt);
|
|
498
|
+
// decision f47c2c90 (二期B): never self-link (R4 defense-in-depth). The
|
|
499
|
+
// candidate from getMostRecentUserTaskBefore is always strictly earlier than
|
|
500
|
+
// this fresh uuid, so this is belt-and-suspenders.
|
|
501
|
+
const safeParent = parentTaskId && parentTaskId !== taskId ? parentTaskId : undefined;
|
|
457
502
|
// spec b1480935 (2026-06-01): is_noise is now deprecated. We KEEP writing
|
|
458
503
|
// it during the transition window so any consumer that hasn't switched to
|
|
459
504
|
// task_kind yet still sees the right value (a callback row is is_noise=1
|
|
@@ -467,6 +512,7 @@ export class TaskSegmenter {
|
|
|
467
512
|
start_time: timestamp,
|
|
468
513
|
is_noise: isNoise,
|
|
469
514
|
task_kind: kind,
|
|
515
|
+
parent_task_id: safeParent ?? null,
|
|
470
516
|
});
|
|
471
517
|
logger.info(`[TaskSegmenter] New task kind=${kind} "${title}" (${truncateString(taskId, 8)})` +
|
|
472
518
|
(isNoise ? ' [noise]' : ''));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-segmenter.js","sourceRoot":"","sources":["../../../src/daemon/services/task-segmenter.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"task-segmenter.js","sourceRoot":"","sources":["../../../src/daemon/services/task-segmenter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* maintenance-schedulers — daemon startup phase: the periodic maintenance
|
|
3
|
+
* scheduler cluster, extracted from the `startDaemon` god-function.
|
|
4
|
+
*
|
|
5
|
+
* Wave 3a R3 (decision 7c881393). BEHAVIOR-PRESERVING extraction: this module
|
|
6
|
+
* contains the exact same scheduling logic that previously lived inline in
|
|
7
|
+
* `src/daemon/index.ts` §5.5–§5.8 — same cadences, same shared maintenance
|
|
8
|
+
* mutex, same fail-silent error handling, same `unref()` on the one-shot
|
|
9
|
+
* timeouts, same teardown set cleared on graceful shutdown.
|
|
10
|
+
*
|
|
11
|
+
* Shape mirrors the established `startHeartbeat(opts): HeartbeatHandle`
|
|
12
|
+
* precedent (src/daemon/services/heartbeat-writer.ts): a factory that takes
|
|
13
|
+
* explicit deps, wires its `setInterval`/`setTimeout` timers, and returns a
|
|
14
|
+
* handle whose `.stop()` clears every timer. `startDaemon` becomes a thin
|
|
15
|
+
* orchestrator: one `startMaintenanceSchedulers(...)` call + one
|
|
16
|
+
* `handle.stop()` in `shutdown()`.
|
|
17
|
+
*
|
|
18
|
+
* The shared `isMaintenanceRunning` flag — previously a module-level `let` in
|
|
19
|
+
* index.ts — is now factory-local closure state. This preserves the original
|
|
20
|
+
* single-mutex invariant (all callbacks created by one factory invocation
|
|
21
|
+
* share one flag) while making the cluster independently unit-testable with
|
|
22
|
+
* fake timers and no live socket / DB-heavy daemon boot.
|
|
23
|
+
*/
|
|
24
|
+
import type { SQLiteStorage } from '../../core/storage/sqlite.js';
|
|
25
|
+
import type { ConfigStore } from '../config-store.js';
|
|
26
|
+
import type { TaskSegmenter } from '../services/task-segmenter.js';
|
|
27
|
+
import type { CodeGraphStore } from '../../core/storage/codegraph.js';
|
|
28
|
+
import { type MtimeCache } from '../services/codegraph-sync.js';
|
|
29
|
+
/** Minimal surface of the (web-layer) BuildManager the KB rebuild needs. */
|
|
30
|
+
export interface KbBuildManagerLike {
|
|
31
|
+
isBusy(): boolean;
|
|
32
|
+
start(opts: {
|
|
33
|
+
projectRoot: string;
|
|
34
|
+
apply: boolean;
|
|
35
|
+
}): void;
|
|
36
|
+
}
|
|
37
|
+
export interface MaintenanceDeps {
|
|
38
|
+
storage: SQLiteStorage;
|
|
39
|
+
configStore: ConfigStore;
|
|
40
|
+
taskSegmenter: TaskSegmenter;
|
|
41
|
+
codegraphStore: CodeGraphStore;
|
|
42
|
+
/** Absolute path to the source dir scanned by codegraph sync. */
|
|
43
|
+
codegraphSrcDir: string;
|
|
44
|
+
/** Per-file mtime cache owned by the daemon, threaded across sync passes. */
|
|
45
|
+
codegraphMtimeCache: MtimeCache;
|
|
46
|
+
/** Project root used for the KB auto-rebuild staleness check. */
|
|
47
|
+
kbProjectRoot: string;
|
|
48
|
+
/**
|
|
49
|
+
* Lazily resolve the (web-layer) BuildManager singleton. Kept as a callback
|
|
50
|
+
* so this module keeps ZERO static edges into `src/web/` (preserves the
|
|
51
|
+
* core ← {daemon, web} peer-layering; matches the original inline design).
|
|
52
|
+
*/
|
|
53
|
+
ensureKbBuildManager: () => Promise<KbBuildManagerLike>;
|
|
54
|
+
}
|
|
55
|
+
export interface MaintenanceHandle {
|
|
56
|
+
/** Clear every interval + one-shot timeout this factory created. */
|
|
57
|
+
stop: () => void;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Wire the daemon's periodic maintenance schedulers.
|
|
61
|
+
*
|
|
62
|
+
* Side effects are identical to the previous inline §5.5–§5.8 in
|
|
63
|
+
* `startDaemon`: it registers six recurring `setInterval`s and four
|
|
64
|
+
* `unref()`-ed one-shot `setTimeout`s, all sharing one maintenance mutex, and
|
|
65
|
+
* logs the same boot lines. Returns a handle whose `.stop()` clears them all.
|
|
66
|
+
*/
|
|
67
|
+
export declare function startMaintenanceSchedulers(deps: MaintenanceDeps): MaintenanceHandle;
|
|
68
|
+
//# sourceMappingURL=maintenance-schedulers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"maintenance-schedulers.d.ts","sourceRoot":"","sources":["../../../src/daemon/startup/maintenance-schedulers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAQtE,OAAO,EAGL,KAAK,UAAU,EAChB,MAAM,+BAA+B,CAAC;AAMvC,4EAA4E;AAC5E,MAAM,WAAW,kBAAkB;IACjC,MAAM,IAAI,OAAO,CAAC;IAClB,KAAK,CAAC,IAAI,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC;CAC5D;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,aAAa,CAAC;IACvB,WAAW,EAAE,WAAW,CAAC;IACzB,aAAa,EAAE,aAAa,CAAC;IAC7B,cAAc,EAAE,cAAc,CAAC;IAC/B,iEAAiE;IACjE,eAAe,EAAE,MAAM,CAAC;IACxB,6EAA6E;IAC7E,mBAAmB,EAAE,UAAU,CAAC;IAChC,iEAAiE;IACjE,aAAa,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,oBAAoB,EAAE,MAAM,OAAO,CAAC,kBAAkB,CAAC,CAAC;CACzD;AAED,MAAM,WAAW,iBAAiB;IAChC,oEAAoE;IACpE,IAAI,EAAE,MAAM,IAAI,CAAC;CAClB;AAOD;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,eAAe,GAAG,iBAAiB,CA4RnF"}
|