@winspan/claude-forge 8.54.4 → 9.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/DEVELOPMENT.md +649 -33
- package/README.md +154 -16
- package/dist/catalogs/agents.json +72 -0
- package/dist/catalogs/skills.json +194 -0
- package/dist/claudemd/claudemd-generator.d.ts +45 -45
- package/dist/claudemd/claudemd-generator.d.ts.map +1 -1
- package/dist/claudemd/claudemd-generator.js +128 -449
- package/dist/claudemd/claudemd-generator.js.map +1 -1
- package/dist/claudemd/index.d.ts +14 -4
- package/dist/claudemd/index.d.ts.map +1 -1
- package/dist/claudemd/index.js +15 -4
- package/dist/claudemd/index.js.map +1 -1
- package/dist/claudemd/resume-manager.d.ts.map +1 -1
- package/dist/claudemd/resume-manager.js +37 -9
- package/dist/claudemd/resume-manager.js.map +1 -1
- package/dist/claudemd/templates/swarm-protocol.md +35 -186
- package/dist/claudemd/violations-manager.d.ts +40 -0
- package/dist/claudemd/violations-manager.d.ts.map +1 -0
- package/dist/claudemd/violations-manager.js +106 -0
- package/dist/claudemd/violations-manager.js.map +1 -0
- package/dist/cli/commands/admin.d.ts +15 -0
- package/dist/cli/commands/admin.d.ts.map +1 -0
- package/dist/cli/commands/admin.js +177 -0
- package/dist/cli/commands/admin.js.map +1 -0
- package/dist/cli/commands/agents.d.ts +18 -0
- package/dist/cli/commands/agents.d.ts.map +1 -0
- package/dist/cli/commands/agents.js +160 -0
- package/dist/cli/commands/agents.js.map +1 -0
- package/dist/cli/commands/bypass.d.ts +18 -0
- package/dist/cli/commands/bypass.d.ts.map +1 -0
- package/dist/cli/commands/bypass.js +87 -0
- package/dist/cli/commands/bypass.js.map +1 -0
- package/dist/cli/commands/claudemd.d.ts +60 -0
- package/dist/cli/commands/claudemd.d.ts.map +1 -1
- package/dist/cli/commands/claudemd.js +174 -37
- package/dist/cli/commands/claudemd.js.map +1 -1
- package/dist/cli/commands/config.d.ts.map +1 -1
- package/dist/cli/commands/config.js +94 -1
- package/dist/cli/commands/config.js.map +1 -1
- package/dist/cli/commands/daemon.d.ts +39 -0
- package/dist/cli/commands/daemon.d.ts.map +1 -1
- package/dist/cli/commands/daemon.js +167 -20
- package/dist/cli/commands/daemon.js.map +1 -1
- package/dist/cli/commands/decisions.d.ts +129 -0
- package/dist/cli/commands/decisions.d.ts.map +1 -0
- package/dist/cli/commands/decisions.js +669 -0
- package/dist/cli/commands/decisions.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts +29 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -0
- package/dist/cli/commands/doctor.js +124 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/entropy.d.ts +35 -0
- package/dist/cli/commands/entropy.d.ts.map +1 -0
- package/dist/cli/commands/entropy.js +121 -0
- package/dist/cli/commands/entropy.js.map +1 -0
- package/dist/cli/commands/executions.d.ts +1 -0
- package/dist/cli/commands/executions.d.ts.map +1 -1
- package/dist/cli/commands/executions.js +10 -1
- package/dist/cli/commands/executions.js.map +1 -1
- package/dist/cli/commands/fix.d.ts +31 -0
- package/dist/cli/commands/fix.d.ts.map +1 -0
- package/dist/cli/commands/fix.js +108 -0
- package/dist/cli/commands/fix.js.map +1 -0
- package/dist/cli/commands/governance.d.ts +21 -0
- package/dist/cli/commands/governance.d.ts.map +1 -0
- package/dist/cli/commands/governance.js +60 -0
- package/dist/cli/commands/governance.js.map +1 -0
- package/dist/cli/commands/init.d.ts +27 -0
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +158 -146
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/insights-goal-check.d.ts +50 -0
- package/dist/cli/commands/insights-goal-check.d.ts.map +1 -0
- package/dist/cli/commands/insights-goal-check.js +318 -0
- package/dist/cli/commands/insights-goal-check.js.map +1 -0
- package/dist/cli/commands/insights.d.ts +15 -0
- package/dist/cli/commands/insights.d.ts.map +1 -0
- package/dist/cli/commands/insights.js +127 -0
- package/dist/cli/commands/insights.js.map +1 -0
- package/dist/cli/commands/knowledge.d.ts +66 -0
- package/dist/cli/commands/knowledge.d.ts.map +1 -0
- package/dist/cli/commands/knowledge.js +897 -0
- package/dist/cli/commands/knowledge.js.map +1 -0
- package/dist/cli/commands/mcp.d.ts +0 -12
- package/dist/cli/commands/mcp.d.ts.map +1 -1
- package/dist/cli/commands/mcp.js +11 -5
- package/dist/cli/commands/mcp.js.map +1 -1
- package/dist/cli/commands/menu.d.ts.map +1 -1
- package/dist/cli/commands/menu.js +10 -184
- package/dist/cli/commands/menu.js.map +1 -1
- package/dist/cli/commands/project.d.ts +98 -0
- package/dist/cli/commands/project.d.ts.map +1 -0
- package/dist/cli/commands/project.js +382 -0
- package/dist/cli/commands/project.js.map +1 -0
- package/dist/cli/commands/skills.d.ts.map +1 -1
- package/dist/cli/commands/skills.js +14 -128
- package/dist/cli/commands/skills.js.map +1 -1
- package/dist/cli/commands/spec.d.ts +40 -0
- package/dist/cli/commands/spec.d.ts.map +1 -0
- package/dist/cli/commands/spec.js +49 -0
- package/dist/cli/commands/spec.js.map +1 -0
- package/dist/cli/commands/stats.d.ts.map +1 -1
- package/dist/cli/commands/stats.js +3 -2
- package/dist/cli/commands/stats.js.map +1 -1
- package/dist/cli/commands/status.d.ts.map +1 -1
- package/dist/cli/commands/status.js +17 -2
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/commands/trace.d.ts.map +1 -1
- package/dist/cli/commands/trace.js +4 -9
- package/dist/cli/commands/trace.js.map +1 -1
- package/dist/cli/commands/violations.d.ts +14 -0
- package/dist/cli/commands/violations.d.ts.map +1 -0
- package/dist/cli/commands/violations.js +43 -0
- package/dist/cli/commands/violations.js.map +1 -0
- package/dist/cli/index.js +26 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init/hook-manager.d.ts +1 -1
- package/dist/cli/init/hook-manager.d.ts.map +1 -1
- package/dist/cli/init/hook-manager.js +6 -0
- package/dist/cli/init/hook-manager.js.map +1 -1
- package/dist/cli/utils/resolve-session.d.ts +32 -0
- package/dist/cli/utils/resolve-session.d.ts.map +1 -0
- package/dist/cli/utils/resolve-session.js +39 -0
- package/dist/cli/utils/resolve-session.js.map +1 -0
- package/dist/core/config.d.ts +4 -1
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +11 -23
- package/dist/core/config.js.map +1 -1
- package/dist/core/constants.d.ts +14 -13
- package/dist/core/constants.d.ts.map +1 -1
- package/dist/core/constants.js +20 -13
- package/dist/core/constants.js.map +1 -1
- package/dist/core/diagnostics/checks.d.ts +151 -0
- package/dist/core/diagnostics/checks.d.ts.map +1 -0
- package/dist/core/diagnostics/checks.js +765 -0
- package/dist/core/diagnostics/checks.js.map +1 -0
- package/dist/core/diagnostics/daemon-status.d.ts +77 -0
- package/dist/core/diagnostics/daemon-status.d.ts.map +1 -0
- package/dist/core/diagnostics/daemon-status.js +113 -0
- package/dist/core/diagnostics/daemon-status.js.map +1 -0
- package/dist/core/diagnostics/entropy-checks.d.ts +82 -0
- package/dist/core/diagnostics/entropy-checks.d.ts.map +1 -0
- package/dist/core/diagnostics/entropy-checks.js +395 -0
- package/dist/core/diagnostics/entropy-checks.js.map +1 -0
- package/dist/core/diagnostics/fix-runner.d.ts +54 -0
- package/dist/core/diagnostics/fix-runner.d.ts.map +1 -0
- package/dist/core/diagnostics/fix-runner.js +90 -0
- package/dist/core/diagnostics/fix-runner.js.map +1 -0
- package/dist/core/diagnostics/knip-runner.d.ts +49 -0
- package/dist/core/diagnostics/knip-runner.d.ts.map +1 -0
- package/dist/core/diagnostics/knip-runner.js +100 -0
- package/dist/core/diagnostics/knip-runner.js.map +1 -0
- package/dist/core/diagnostics/markers.d.ts +96 -0
- package/dist/core/diagnostics/markers.d.ts.map +1 -0
- package/dist/core/diagnostics/markers.js +153 -0
- package/dist/core/diagnostics/markers.js.map +1 -0
- package/dist/core/governance/global-inject.d.ts +60 -0
- package/dist/core/governance/global-inject.d.ts.map +1 -0
- package/dist/core/governance/global-inject.js +129 -0
- package/dist/core/governance/global-inject.js.map +1 -0
- package/dist/core/queue/index.d.ts +16 -3
- package/dist/core/queue/index.d.ts.map +1 -1
- package/dist/core/queue/index.js +14 -3
- package/dist/core/queue/index.js.map +1 -1
- package/dist/core/storage/base.d.ts +158 -0
- package/dist/core/storage/base.d.ts.map +1 -1
- package/dist/core/storage/base.js +570 -0
- package/dist/core/storage/base.js.map +1 -1
- package/dist/core/storage/codec/tool-input-codec.d.ts +93 -0
- package/dist/core/storage/codec/tool-input-codec.d.ts.map +1 -0
- package/dist/core/storage/codec/tool-input-codec.js +159 -0
- package/dist/core/storage/codec/tool-input-codec.js.map +1 -0
- package/dist/core/storage/decisions.d.ts +362 -0
- package/dist/core/storage/decisions.d.ts.map +1 -0
- package/dist/core/storage/decisions.js +502 -0
- package/dist/core/storage/decisions.js.map +1 -0
- package/dist/core/storage/events.d.ts +112 -8
- package/dist/core/storage/events.d.ts.map +1 -1
- package/dist/core/storage/events.js +390 -39
- package/dist/core/storage/events.js.map +1 -1
- package/dist/core/storage/feedback.d.ts +131 -0
- package/dist/core/storage/feedback.d.ts.map +1 -0
- package/dist/core/storage/feedback.js +187 -0
- package/dist/core/storage/feedback.js.map +1 -0
- package/dist/core/storage/forge-config.d.ts +40 -0
- package/dist/core/storage/forge-config.d.ts.map +1 -0
- package/dist/core/storage/forge-config.js +65 -0
- package/dist/core/storage/forge-config.js.map +1 -0
- package/dist/core/storage/injections.d.ts +28 -0
- package/dist/core/storage/injections.d.ts.map +1 -1
- package/dist/core/storage/injections.js +62 -5
- package/dist/core/storage/injections.js.map +1 -1
- package/dist/core/storage/knowledge.d.ts +106 -0
- package/dist/core/storage/knowledge.d.ts.map +1 -0
- package/dist/core/storage/knowledge.js +202 -0
- package/dist/core/storage/knowledge.js.map +1 -0
- package/dist/core/storage/maintenance.d.ts +36 -9
- package/dist/core/storage/maintenance.d.ts.map +1 -1
- package/dist/core/storage/maintenance.js +56 -24
- package/dist/core/storage/maintenance.js.map +1 -1
- package/dist/core/storage/pipeline-rollup.d.ts +117 -0
- package/dist/core/storage/pipeline-rollup.d.ts.map +1 -0
- package/dist/core/storage/pipeline-rollup.js +471 -0
- package/dist/core/storage/pipeline-rollup.js.map +1 -0
- package/dist/core/storage/routing.d.ts +16 -3
- package/dist/core/storage/routing.d.ts.map +1 -1
- package/dist/core/storage/routing.js +39 -8
- package/dist/core/storage/routing.js.map +1 -1
- package/dist/core/storage/rows.d.ts +50 -7
- package/dist/core/storage/rows.d.ts.map +1 -1
- package/dist/core/storage/schema.sql +302 -23
- package/dist/core/storage/sessions.d.ts +136 -0
- package/dist/core/storage/sessions.d.ts.map +1 -1
- package/dist/core/storage/sessions.js +351 -15
- package/dist/core/storage/sessions.js.map +1 -1
- package/dist/core/storage/skills.d.ts +1 -0
- package/dist/core/storage/skills.d.ts.map +1 -1
- package/dist/core/storage/skills.js +21 -6
- package/dist/core/storage/skills.js.map +1 -1
- package/dist/core/storage/sqlite.d.ts +253 -20
- package/dist/core/storage/sqlite.d.ts.map +1 -1
- package/dist/core/storage/sqlite.js +425 -16
- package/dist/core/storage/sqlite.js.map +1 -1
- package/dist/core/storage/tasks.d.ts +474 -2
- package/dist/core/storage/tasks.d.ts.map +1 -1
- package/dist/core/storage/tasks.js +1213 -18
- package/dist/core/storage/tasks.js.map +1 -1
- package/dist/core/storage/tool-intercepts.d.ts +69 -0
- package/dist/core/storage/tool-intercepts.d.ts.map +1 -0
- package/dist/core/storage/tool-intercepts.js +116 -0
- package/dist/core/storage/tool-intercepts.js.map +1 -0
- package/dist/core/storage/workflow-recommendations.d.ts +124 -0
- package/dist/core/storage/workflow-recommendations.d.ts.map +1 -0
- package/dist/core/storage/workflow-recommendations.js +274 -0
- package/dist/core/storage/workflow-recommendations.js.map +1 -0
- package/dist/core/types.d.ts +112 -17
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js +12 -0
- package/dist/core/types.js.map +1 -1
- package/dist/core/utils/backup.d.ts +81 -0
- package/dist/core/utils/backup.d.ts.map +1 -0
- package/dist/core/utils/backup.js +98 -0
- package/dist/core/utils/backup.js.map +1 -0
- package/dist/core/utils/binary-paths.d.ts +92 -0
- package/dist/core/utils/binary-paths.d.ts.map +1 -0
- package/dist/core/utils/binary-paths.js +166 -0
- package/dist/core/utils/binary-paths.js.map +1 -0
- package/dist/core/utils/bypass-token.d.ts +75 -0
- package/dist/core/utils/bypass-token.d.ts.map +1 -0
- package/dist/core/utils/bypass-token.js +133 -0
- package/dist/core/utils/bypass-token.js.map +1 -0
- package/dist/core/utils/cc-builtin-agents.d.ts +3 -0
- package/dist/core/utils/cc-builtin-agents.d.ts.map +1 -0
- package/dist/core/utils/cc-builtin-agents.js +29 -0
- package/dist/core/utils/cc-builtin-agents.js.map +1 -0
- package/dist/core/utils/claude-cli-spawn.d.ts +106 -0
- package/dist/core/utils/claude-cli-spawn.d.ts.map +1 -0
- package/dist/core/utils/claude-cli-spawn.js +219 -0
- package/dist/core/utils/claude-cli-spawn.js.map +1 -0
- package/dist/core/utils/forge-resume-block.d.ts.map +1 -1
- package/dist/core/utils/forge-resume-block.js +3 -2
- package/dist/core/utils/forge-resume-block.js.map +1 -1
- package/dist/core/utils/logger.d.ts +15 -3
- package/dist/core/utils/logger.d.ts.map +1 -1
- package/dist/core/utils/logger.js +20 -2
- package/dist/core/utils/logger.js.map +1 -1
- package/dist/core/utils/noise-prompt.d.ts +97 -0
- package/dist/core/utils/noise-prompt.d.ts.map +1 -0
- package/dist/core/utils/noise-prompt.js +127 -0
- package/dist/core/utils/noise-prompt.js.map +1 -0
- package/dist/core/utils/path.d.ts +0 -4
- package/dist/core/utils/path.d.ts.map +1 -1
- package/dist/core/utils/path.js +0 -7
- package/dist/core/utils/path.js.map +1 -1
- package/dist/core/utils/time.d.ts +41 -0
- package/dist/core/utils/time.d.ts.map +1 -1
- package/dist/core/utils/time.js +114 -0
- package/dist/core/utils/time.js.map +1 -1
- package/dist/daemon/agent-sync.d.ts +24 -0
- package/dist/daemon/agent-sync.d.ts.map +1 -0
- package/dist/daemon/agent-sync.js +114 -0
- package/dist/daemon/agent-sync.js.map +1 -0
- package/dist/daemon/config-store.d.ts +55 -0
- package/dist/daemon/config-store.d.ts.map +1 -0
- package/dist/daemon/config-store.js +137 -0
- package/dist/daemon/config-store.js.map +1 -0
- package/dist/daemon/event-parser.d.ts +22 -0
- package/dist/daemon/event-parser.d.ts.map +1 -1
- package/dist/daemon/event-parser.js +49 -3
- package/dist/daemon/event-parser.js.map +1 -1
- package/dist/daemon/handlers/history-exporter.d.ts.map +1 -1
- package/dist/daemon/handlers/history-exporter.js +9 -8
- package/dist/daemon/handlers/history-exporter.js.map +1 -1
- package/dist/daemon/handlers/post-tool-use.d.ts +58 -4
- package/dist/daemon/handlers/post-tool-use.d.ts.map +1 -1
- package/dist/daemon/handlers/post-tool-use.js +261 -8
- package/dist/daemon/handlers/post-tool-use.js.map +1 -1
- package/dist/daemon/handlers/pre-tool-use.d.ts +156 -0
- package/dist/daemon/handlers/pre-tool-use.d.ts.map +1 -0
- package/dist/daemon/handlers/pre-tool-use.js +585 -0
- package/dist/daemon/handlers/pre-tool-use.js.map +1 -0
- package/dist/daemon/handlers/stop.d.ts +35 -7
- package/dist/daemon/handlers/stop.d.ts.map +1 -1
- package/dist/daemon/handlers/stop.js +157 -8
- package/dist/daemon/handlers/stop.js.map +1 -1
- package/dist/daemon/handlers/user-prompt.d.ts +36 -14
- package/dist/daemon/handlers/user-prompt.d.ts.map +1 -1
- package/dist/daemon/handlers/user-prompt.js +135 -48
- package/dist/daemon/handlers/user-prompt.js.map +1 -1
- package/dist/daemon/hook-sync.d.ts.map +1 -1
- package/dist/daemon/hook-sync.js +2 -1
- package/dist/daemon/hook-sync.js.map +1 -1
- package/dist/daemon/index.d.ts.map +1 -1
- package/dist/daemon/index.js +471 -43
- package/dist/daemon/index.js.map +1 -1
- package/dist/daemon/lifecycle.d.ts +48 -1
- package/dist/daemon/lifecycle.d.ts.map +1 -1
- package/dist/daemon/lifecycle.js +98 -2
- package/dist/daemon/lifecycle.js.map +1 -1
- package/dist/daemon/router.d.ts +4 -1
- package/dist/daemon/router.d.ts.map +1 -1
- package/dist/daemon/router.js +4 -2
- package/dist/daemon/router.js.map +1 -1
- package/dist/daemon/rules/defaults.d.ts +20 -0
- package/dist/daemon/rules/defaults.d.ts.map +1 -0
- package/dist/daemon/rules/defaults.js +692 -0
- package/dist/daemon/rules/defaults.js.map +1 -0
- package/dist/daemon/rules/registry.d.ts +47 -0
- package/dist/daemon/rules/registry.d.ts.map +1 -0
- package/dist/daemon/rules/registry.js +84 -0
- package/dist/daemon/rules/registry.js.map +1 -0
- package/dist/daemon/rules/types.d.ts +170 -0
- package/dist/daemon/rules/types.d.ts.map +1 -0
- package/dist/daemon/rules/types.js +15 -0
- package/dist/daemon/rules/types.js.map +1 -0
- package/dist/daemon/rules/whitelist.d.ts +101 -0
- package/dist/daemon/rules/whitelist.d.ts.map +1 -0
- package/dist/daemon/rules/whitelist.js +210 -0
- package/dist/daemon/rules/whitelist.js.map +1 -0
- package/dist/daemon/rules/workflow-defaults.d.ts +52 -0
- package/dist/daemon/rules/workflow-defaults.d.ts.map +1 -0
- package/dist/daemon/rules/workflow-defaults.js +521 -0
- package/dist/daemon/rules/workflow-defaults.js.map +1 -0
- package/dist/daemon/server.d.ts +11 -1
- package/dist/daemon/server.d.ts.map +1 -1
- package/dist/daemon/server.js +7 -1
- package/dist/daemon/server.js.map +1 -1
- package/dist/daemon/services/context-injector.d.ts +34 -0
- package/dist/daemon/services/context-injector.d.ts.map +1 -0
- package/dist/daemon/services/context-injector.js +61 -0
- package/dist/daemon/services/context-injector.js.map +1 -0
- package/dist/daemon/services/decision-hint.d.ts +203 -0
- package/dist/daemon/services/decision-hint.d.ts.map +1 -0
- package/dist/daemon/services/decision-hint.js +487 -0
- package/dist/daemon/services/decision-hint.js.map +1 -0
- package/dist/daemon/services/event-ttl-sweep.d.ts +86 -0
- package/dist/daemon/services/event-ttl-sweep.d.ts.map +1 -0
- package/dist/daemon/services/event-ttl-sweep.js +123 -0
- package/dist/daemon/services/event-ttl-sweep.js.map +1 -0
- package/dist/daemon/services/experience-extractor.d.ts +67 -0
- package/dist/daemon/services/experience-extractor.d.ts.map +1 -0
- package/dist/daemon/services/experience-extractor.js +323 -0
- package/dist/daemon/services/experience-extractor.js.map +1 -0
- package/dist/daemon/services/feedback-aggregator.d.ts +179 -0
- package/dist/daemon/services/feedback-aggregator.d.ts.map +1 -0
- package/dist/daemon/services/feedback-aggregator.js +455 -0
- package/dist/daemon/services/feedback-aggregator.js.map +1 -0
- package/dist/daemon/services/heartbeat-writer.d.ts +55 -0
- package/dist/daemon/services/heartbeat-writer.d.ts.map +1 -0
- package/dist/daemon/services/heartbeat-writer.js +111 -0
- package/dist/daemon/services/heartbeat-writer.js.map +1 -0
- package/dist/daemon/services/idle-session-sweeper.d.ts +61 -0
- package/dist/daemon/services/idle-session-sweeper.d.ts.map +1 -0
- package/dist/daemon/services/idle-session-sweeper.js +94 -0
- package/dist/daemon/services/idle-session-sweeper.js.map +1 -0
- package/dist/daemon/services/idle-task-budget.d.ts +50 -0
- package/dist/daemon/services/idle-task-budget.d.ts.map +1 -0
- package/dist/daemon/services/idle-task-budget.js +72 -0
- package/dist/daemon/services/idle-task-budget.js.map +1 -0
- package/dist/daemon/services/intercept-revive.d.ts +60 -0
- package/dist/daemon/services/intercept-revive.d.ts.map +1 -0
- package/dist/daemon/services/intercept-revive.js +86 -0
- package/dist/daemon/services/intercept-revive.js.map +1 -0
- package/dist/daemon/services/intercept-rollback-guard.d.ts +105 -0
- package/dist/daemon/services/intercept-rollback-guard.d.ts.map +1 -0
- package/dist/daemon/services/intercept-rollback-guard.js +152 -0
- package/dist/daemon/services/intercept-rollback-guard.js.map +1 -0
- package/dist/daemon/services/intercept-timeout-sweeper.d.ts +58 -0
- package/dist/daemon/services/intercept-timeout-sweeper.d.ts.map +1 -0
- package/dist/daemon/services/intercept-timeout-sweeper.js +83 -0
- package/dist/daemon/services/intercept-timeout-sweeper.js.map +1 -0
- package/dist/daemon/services/kb-injector.d.ts +57 -0
- package/dist/daemon/services/kb-injector.d.ts.map +1 -0
- package/dist/daemon/services/kb-injector.js +140 -0
- package/dist/daemon/services/kb-injector.js.map +1 -0
- package/dist/daemon/services/outcome-classification-service.d.ts +49 -0
- package/dist/daemon/services/outcome-classification-service.d.ts.map +1 -0
- package/dist/daemon/services/outcome-classification-service.js +214 -0
- package/dist/daemon/services/outcome-classification-service.js.map +1 -0
- package/dist/daemon/services/outcome-classifier.d.ts +136 -0
- package/dist/daemon/services/outcome-classifier.d.ts.map +1 -0
- package/dist/daemon/services/outcome-classifier.js +178 -0
- package/dist/daemon/services/outcome-classifier.js.map +1 -0
- package/dist/daemon/services/outcome-nudge.d.ts +107 -0
- package/dist/daemon/services/outcome-nudge.d.ts.map +1 -0
- package/dist/daemon/services/outcome-nudge.js +242 -0
- package/dist/daemon/services/outcome-nudge.js.map +1 -0
- package/dist/daemon/services/spec-approval.d.ts +127 -0
- package/dist/daemon/services/spec-approval.d.ts.map +1 -0
- package/dist/daemon/services/spec-approval.js +216 -0
- package/dist/daemon/services/spec-approval.js.map +1 -0
- package/dist/daemon/services/spec-gate.d.ts +54 -0
- package/dist/daemon/services/spec-gate.d.ts.map +1 -0
- package/dist/daemon/services/spec-gate.js +113 -0
- package/dist/daemon/services/spec-gate.js.map +1 -0
- package/dist/daemon/services/task-boundary-classifier.d.ts +78 -0
- package/dist/daemon/services/task-boundary-classifier.d.ts.map +1 -0
- package/dist/daemon/services/task-boundary-classifier.js +202 -0
- package/dist/daemon/services/task-boundary-classifier.js.map +1 -0
- package/dist/daemon/services/task-segmenter.d.ts +219 -1
- package/dist/daemon/services/task-segmenter.d.ts.map +1 -1
- package/dist/daemon/services/task-segmenter.js +481 -17
- package/dist/daemon/services/task-segmenter.js.map +1 -1
- package/dist/daemon/services/violation-reporter.d.ts +130 -0
- package/dist/daemon/services/violation-reporter.d.ts.map +1 -0
- package/dist/daemon/services/violation-reporter.js +339 -0
- package/dist/daemon/services/violation-reporter.js.map +1 -0
- package/dist/daemon/skill-sync.d.ts +7 -2
- package/dist/daemon/skill-sync.d.ts.map +1 -1
- package/dist/daemon/skill-sync.js +114 -9
- package/dist/daemon/skill-sync.js.map +1 -1
- package/dist/daemon/templates/agents/claudemd-writer.md +101 -0
- package/dist/daemon/templates/agents/coder.md +105 -0
- package/dist/daemon/templates/agents/decision-maker.md +460 -0
- package/dist/daemon/templates/agents/doc-reviewer.md +115 -0
- package/dist/daemon/templates/agents/harness-debug-full.md +114 -0
- package/dist/daemon/templates/agents/harness-hotfix.md +99 -0
- package/dist/daemon/templates/agents/hybrid-feature-with-safety.md +104 -0
- package/dist/daemon/templates/agents/knowledge-builder.md +119 -0
- package/dist/daemon/templates/agents/patch-applier.md +144 -0
- package/dist/daemon/templates/agents/planner.md +165 -0
- package/dist/daemon/templates/agents/refactor-specialist.md +98 -0
- package/dist/daemon/templates/agents/skill-distiller.md +113 -0
- package/dist/daemon/templates/agents/task-boundary-classifier.md +64 -0
- package/dist/daemon/templates/agents/verify-agent.md +136 -0
- package/dist/daemon/utils/inject-block.d.ts +39 -0
- package/dist/daemon/utils/inject-block.d.ts.map +1 -0
- package/dist/daemon/utils/inject-block.js +25 -0
- package/dist/daemon/utils/inject-block.js.map +1 -0
- package/dist/hooks/hook-lib.sh +8 -0
- package/dist/hooks/notification.sh +19 -8
- package/dist/hooks/post-tool-use.sh +41 -23
- package/dist/hooks/pre-tool-use.sh +54 -23
- package/dist/hooks/session-start.sh +68 -0
- package/dist/hooks/stop.sh +24 -10
- package/dist/hooks/user-prompt-submit.sh +37 -21
- package/dist/knowledge/adapters/go-adapter.d.ts +65 -0
- package/dist/knowledge/adapters/go-adapter.d.ts.map +1 -0
- package/dist/knowledge/adapters/go-adapter.js +294 -0
- package/dist/knowledge/adapters/go-adapter.js.map +1 -0
- package/dist/knowledge/adapters/index.d.ts +41 -0
- package/dist/knowledge/adapters/index.d.ts.map +1 -0
- package/dist/knowledge/adapters/index.js +71 -0
- package/dist/knowledge/adapters/index.js.map +1 -0
- package/dist/knowledge/adapters/java-adapter.d.ts +66 -0
- package/dist/knowledge/adapters/java-adapter.d.ts.map +1 -0
- package/dist/knowledge/adapters/java-adapter.js +260 -0
- package/dist/knowledge/adapters/java-adapter.js.map +1 -0
- package/dist/knowledge/adapters/js-vue-adapter.d.ts +56 -0
- package/dist/knowledge/adapters/js-vue-adapter.d.ts.map +1 -0
- package/dist/knowledge/adapters/js-vue-adapter.js +203 -0
- package/dist/knowledge/adapters/js-vue-adapter.js.map +1 -0
- package/dist/knowledge/adapters/kotlin-adapter.d.ts +55 -0
- package/dist/knowledge/adapters/kotlin-adapter.d.ts.map +1 -0
- package/dist/knowledge/adapters/kotlin-adapter.js +209 -0
- package/dist/knowledge/adapters/kotlin-adapter.js.map +1 -0
- package/dist/knowledge/adapters/monorepo-adapter.d.ts +77 -0
- package/dist/knowledge/adapters/monorepo-adapter.d.ts.map +1 -0
- package/dist/knowledge/adapters/monorepo-adapter.js +170 -0
- package/dist/knowledge/adapters/monorepo-adapter.js.map +1 -0
- package/dist/knowledge/adapters/python-adapter.d.ts +89 -0
- package/dist/knowledge/adapters/python-adapter.d.ts.map +1 -0
- package/dist/knowledge/adapters/python-adapter.js +358 -0
- package/dist/knowledge/adapters/python-adapter.js.map +1 -0
- package/dist/knowledge/adapters/rust-adapter.d.ts +73 -0
- package/dist/knowledge/adapters/rust-adapter.d.ts.map +1 -0
- package/dist/knowledge/adapters/rust-adapter.js +329 -0
- package/dist/knowledge/adapters/rust-adapter.js.map +1 -0
- package/dist/knowledge/adapters/types.d.ts +99 -0
- package/dist/knowledge/adapters/types.d.ts.map +1 -0
- package/dist/knowledge/adapters/types.js +17 -0
- package/dist/knowledge/adapters/types.js.map +1 -0
- package/dist/knowledge/adapters/typescript-adapter.d.ts +57 -0
- package/dist/knowledge/adapters/typescript-adapter.d.ts.map +1 -0
- package/dist/knowledge/adapters/typescript-adapter.js +171 -0
- package/dist/knowledge/adapters/typescript-adapter.js.map +1 -0
- package/dist/knowledge/audit-applier.d.ts +70 -0
- package/dist/knowledge/audit-applier.d.ts.map +1 -0
- package/dist/knowledge/audit-applier.js +251 -0
- package/dist/knowledge/audit-applier.js.map +1 -0
- package/dist/knowledge/builder.d.ts +261 -0
- package/dist/knowledge/builder.d.ts.map +1 -0
- package/dist/knowledge/builder.js +937 -0
- package/dist/knowledge/builder.js.map +1 -0
- package/dist/knowledge/cli-provider.d.ts +151 -0
- package/dist/knowledge/cli-provider.d.ts.map +1 -0
- package/dist/knowledge/cli-provider.js +313 -0
- package/dist/knowledge/cli-provider.js.map +1 -0
- package/dist/knowledge/constants.d.ts +73 -0
- package/dist/knowledge/constants.d.ts.map +1 -0
- package/dist/knowledge/constants.js +93 -0
- package/dist/knowledge/constants.js.map +1 -0
- package/dist/knowledge/cross-module.d.ts +139 -0
- package/dist/knowledge/cross-module.d.ts.map +1 -0
- package/dist/knowledge/cross-module.js +370 -0
- package/dist/knowledge/cross-module.js.map +1 -0
- package/dist/knowledge/git-hooks.d.ts +67 -0
- package/dist/knowledge/git-hooks.d.ts.map +1 -0
- package/dist/knowledge/git-hooks.js +258 -0
- package/dist/knowledge/git-hooks.js.map +1 -0
- package/dist/knowledge/module-hash.d.ts +88 -0
- package/dist/knowledge/module-hash.d.ts.map +1 -0
- package/dist/knowledge/module-hash.js +162 -0
- package/dist/knowledge/module-hash.js.map +1 -0
- package/dist/knowledge/project-detector.d.ts +101 -0
- package/dist/knowledge/project-detector.d.ts.map +1 -0
- package/dist/knowledge/project-detector.js +223 -0
- package/dist/knowledge/project-detector.js.map +1 -0
- package/dist/knowledge/prompt.d.ts +228 -0
- package/dist/knowledge/prompt.d.ts.map +1 -0
- package/dist/knowledge/prompt.js +404 -0
- package/dist/knowledge/prompt.js.map +1 -0
- package/dist/knowledge/query.d.ts +105 -0
- package/dist/knowledge/query.d.ts.map +1 -0
- package/dist/knowledge/query.js +341 -0
- package/dist/knowledge/query.js.map +1 -0
- package/dist/knowledge/repo-map.d.ts +91 -0
- package/dist/knowledge/repo-map.d.ts.map +1 -0
- package/dist/knowledge/repo-map.js +408 -0
- package/dist/knowledge/repo-map.js.map +1 -0
- package/dist/knowledge/tools/index.d.ts +14 -0
- package/dist/knowledge/tools/index.d.ts.map +1 -0
- package/dist/knowledge/tools/index.js +11 -0
- package/dist/knowledge/tools/index.js.map +1 -0
- package/dist/knowledge/tools/knowledge-get-page.d.ts +46 -0
- package/dist/knowledge/tools/knowledge-get-page.d.ts.map +1 -0
- package/dist/knowledge/tools/knowledge-get-page.js +101 -0
- package/dist/knowledge/tools/knowledge-get-page.js.map +1 -0
- package/dist/knowledge/tools/knowledge-query.d.ts +77 -0
- package/dist/knowledge/tools/knowledge-query.d.ts.map +1 -0
- package/dist/knowledge/tools/knowledge-query.js +104 -0
- package/dist/knowledge/tools/knowledge-query.js.map +1 -0
- package/dist/knowledge/tools/repo-map-lookup.d.ts +45 -0
- package/dist/knowledge/tools/repo-map-lookup.d.ts.map +1 -0
- package/dist/knowledge/tools/repo-map-lookup.js +82 -0
- package/dist/knowledge/tools/repo-map-lookup.js.map +1 -0
- package/dist/knowledge/types.d.ts +269 -0
- package/dist/knowledge/types.d.ts.map +1 -0
- package/dist/knowledge/types.js +10 -0
- package/dist/knowledge/types.js.map +1 -0
- package/dist/knowledge/validator.d.ts +90 -0
- package/dist/knowledge/validator.d.ts.map +1 -0
- package/dist/knowledge/validator.js +288 -0
- package/dist/knowledge/validator.js.map +1 -0
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +222 -1
- package/dist/mcp/server.js.map +1 -1
- package/dist/skills/builtin-skills.d.ts +35 -0
- package/dist/skills/builtin-skills.d.ts.map +1 -0
- package/dist/skills/builtin-skills.js +68 -0
- package/dist/skills/builtin-skills.js.map +1 -0
- package/dist/skills/distill/attribution.d.ts +59 -0
- package/dist/skills/distill/attribution.d.ts.map +1 -0
- package/dist/skills/distill/attribution.js +101 -0
- package/dist/skills/distill/attribution.js.map +1 -0
- package/dist/skills/distill/claude-cli-resolver.d.ts +26 -0
- package/dist/skills/distill/claude-cli-resolver.d.ts.map +1 -0
- package/dist/skills/distill/claude-cli-resolver.js +115 -0
- package/dist/skills/distill/claude-cli-resolver.js.map +1 -0
- package/dist/skills/distill/distiller.d.ts +161 -0
- package/dist/skills/distill/distiller.d.ts.map +1 -0
- package/dist/skills/distill/distiller.js +461 -0
- package/dist/skills/distill/distiller.js.map +1 -0
- package/dist/skills/distill/index.d.ts +223 -0
- package/dist/skills/distill/index.d.ts.map +1 -0
- package/dist/skills/distill/index.js +466 -0
- package/dist/skills/distill/index.js.map +1 -0
- package/dist/skills/distill/project-anchor-guard.d.ts +116 -0
- package/dist/skills/distill/project-anchor-guard.d.ts.map +1 -0
- package/dist/skills/distill/project-anchor-guard.js +334 -0
- package/dist/skills/distill/project-anchor-guard.js.map +1 -0
- package/dist/skills/distill/topic-deduper.d.ts +77 -0
- package/dist/skills/distill/topic-deduper.d.ts.map +1 -0
- package/dist/skills/distill/topic-deduper.js +119 -0
- package/dist/skills/distill/topic-deduper.js.map +1 -0
- package/dist/skills/distill/upstream-fetcher.d.ts +71 -0
- package/dist/skills/distill/upstream-fetcher.d.ts.map +1 -0
- package/dist/skills/distill/upstream-fetcher.js +202 -0
- package/dist/skills/distill/upstream-fetcher.js.map +1 -0
- package/dist/skills/distilled/distilled-api-design.md +491 -0
- package/dist/skills/distilled/distilled-architecture-decision.md +173 -0
- package/dist/skills/distilled/distilled-creator.md +178 -0
- package/dist/skills/distilled/distilled-db-schema-design.md +245 -0
- package/dist/skills/distilled/distilled-defi-amm-security.md +293 -0
- package/dist/skills/distilled/distilled-executing-plans.md +113 -0
- package/dist/skills/distilled/distilled-harness-engineering.md +242 -0
- package/dist/skills/distilled/distilled-karpathy-guidelines.md +104 -0
- package/dist/skills/distilled/distilled-performance-optimization.md +175 -0
- package/dist/skills/distilled/distilled-spec-driven-design.md +193 -0
- package/dist/skills/distilled/distilled-systematic-debugging.md +306 -0
- package/dist/skills/distilled/distilled-verification-before-completion.md +203 -0
- package/dist/skills/keyword-score.d.ts +29 -0
- package/dist/skills/keyword-score.d.ts.map +1 -0
- package/dist/skills/keyword-score.js +54 -0
- package/dist/skills/keyword-score.js.map +1 -0
- package/dist/skills/registry.d.ts +64 -20
- package/dist/skills/registry.d.ts.map +1 -1
- package/dist/skills/registry.js +102 -105
- package/dist/skills/registry.js.map +1 -1
- package/dist/skills/tools/pipeline-suggest.js +14 -14
- package/dist/skills/tools/skill-invoke.d.ts +1 -1
- package/dist/skills/tools/skill-invoke.js +1 -1
- package/dist/web/routes/agent-content.d.ts +30 -0
- package/dist/web/routes/agent-content.d.ts.map +1 -0
- package/dist/web/routes/agent-content.js +139 -0
- package/dist/web/routes/agent-content.js.map +1 -0
- package/dist/web/routes/decisions.d.ts +15 -0
- package/dist/web/routes/decisions.d.ts.map +1 -0
- package/dist/web/routes/decisions.js +181 -0
- package/dist/web/routes/decisions.js.map +1 -0
- package/dist/web/routes/diagnostics.d.ts +61 -0
- package/dist/web/routes/diagnostics.d.ts.map +1 -0
- package/dist/web/routes/diagnostics.js +203 -0
- package/dist/web/routes/diagnostics.js.map +1 -0
- package/dist/web/routes/events.d.ts.map +1 -1
- package/dist/web/routes/events.js +24 -0
- package/dist/web/routes/events.js.map +1 -1
- package/dist/web/routes/health.d.ts +33 -0
- package/dist/web/routes/health.d.ts.map +1 -0
- package/dist/web/routes/health.js +37 -0
- package/dist/web/routes/health.js.map +1 -0
- package/dist/web/routes/insights.d.ts +0 -5
- package/dist/web/routes/insights.d.ts.map +1 -1
- package/dist/web/routes/insights.js +783 -2
- package/dist/web/routes/insights.js.map +1 -1
- package/dist/web/routes/knowledge.d.ts +16 -0
- package/dist/web/routes/knowledge.d.ts.map +1 -0
- package/dist/web/routes/knowledge.js +661 -0
- package/dist/web/routes/knowledge.js.map +1 -0
- package/dist/web/routes/patch.d.ts +60 -1
- package/dist/web/routes/patch.d.ts.map +1 -1
- package/dist/web/routes/patch.js +170 -64
- package/dist/web/routes/patch.js.map +1 -1
- package/dist/web/routes/pipeline.d.ts +37 -0
- package/dist/web/routes/pipeline.d.ts.map +1 -0
- package/dist/web/routes/pipeline.js +149 -0
- package/dist/web/routes/pipeline.js.map +1 -0
- package/dist/web/routes/rules.d.ts.map +1 -1
- package/dist/web/routes/rules.js +6 -1
- package/dist/web/routes/rules.js.map +1 -1
- package/dist/web/routes/sessions.d.ts.map +1 -1
- package/dist/web/routes/sessions.js +9 -1
- package/dist/web/routes/sessions.js.map +1 -1
- package/dist/web/routes/skill-content.d.ts +30 -0
- package/dist/web/routes/skill-content.d.ts.map +1 -0
- package/dist/web/routes/skill-content.js +117 -0
- package/dist/web/routes/skill-content.js.map +1 -0
- package/dist/web/routes/skills-distill.d.ts +29 -0
- package/dist/web/routes/skills-distill.d.ts.map +1 -0
- package/dist/web/routes/skills-distill.js +552 -0
- package/dist/web/routes/skills-distill.js.map +1 -0
- package/dist/web/routes/skills.js +7 -7
- package/dist/web/routes/skills.js.map +1 -1
- package/dist/web/routes/task-timeline.d.ts +102 -0
- package/dist/web/routes/task-timeline.d.ts.map +1 -0
- package/dist/web/routes/task-timeline.js +274 -0
- package/dist/web/routes/task-timeline.js.map +1 -0
- package/dist/web/routes/tasks.d.ts.map +1 -1
- package/dist/web/routes/tasks.js +355 -8
- package/dist/web/routes/tasks.js.map +1 -1
- package/dist/web/routes/trace.d.ts.map +1 -1
- package/dist/web/routes/trace.js +3 -2
- package/dist/web/routes/trace.js.map +1 -1
- package/dist/web/routes/types.d.ts +0 -4
- package/dist/web/routes/types.d.ts.map +1 -1
- package/dist/web/routes/types.js +1 -1
- package/dist/web/routes/types.js.map +1 -1
- package/dist/web/routes/violations.d.ts +14 -0
- package/dist/web/routes/violations.d.ts.map +1 -0
- package/dist/web/routes/violations.js +111 -0
- package/dist/web/routes/violations.js.map +1 -0
- package/dist/web/server.d.ts.map +1 -1
- package/dist/web/server.js +79 -19
- package/dist/web/server.js.map +1 -1
- package/dist/web/services/build-manager.d.ts +72 -0
- package/dist/web/services/build-manager.d.ts.map +1 -0
- package/dist/web/services/build-manager.js +189 -0
- package/dist/web/services/build-manager.js.map +1 -0
- package/dist/web/services/distill-manager.d.ts +125 -0
- package/dist/web/services/distill-manager.d.ts.map +1 -0
- package/dist/web/services/distill-manager.js +308 -0
- package/dist/web/services/distill-manager.js.map +1 -0
- package/dist/web/static/assets/AgentContentPage-DkeRNxok.js +2 -0
- package/dist/web/static/assets/AgentContentPage-DkeRNxok.js.map +1 -0
- package/dist/web/static/assets/AgentDelegationTable-ByBa0x1l.js +2 -0
- package/dist/web/static/assets/AgentDelegationTable-ByBa0x1l.js.map +1 -0
- package/dist/web/static/assets/ContextInsightsPage-oUk7_I8u.js +3 -0
- package/dist/web/static/assets/ContextInsightsPage-oUk7_I8u.js.map +1 -0
- package/dist/web/static/assets/DaemonHealthPage-DG2fyOP7.js +2 -0
- package/dist/web/static/assets/DaemonHealthPage-DG2fyOP7.js.map +1 -0
- package/dist/web/static/assets/DecisionsPage-CMAPEnKb.js +2 -0
- package/dist/web/static/assets/DecisionsPage-CMAPEnKb.js.map +1 -0
- package/dist/web/static/assets/DiagnosticsPage-DQd-Zm4r.js +2 -0
- package/dist/web/static/assets/DiagnosticsPage-DQd-Zm4r.js.map +1 -0
- package/dist/web/static/assets/DriftTab-DqpepOhI.js +2 -0
- package/dist/web/static/assets/DriftTab-DqpepOhI.js.map +1 -0
- package/dist/web/static/assets/HealthHomePage-CN6zNIie.js +3 -0
- package/dist/web/static/assets/HealthHomePage-CN6zNIie.js.map +1 -0
- package/dist/web/static/assets/KbHitRateTable-ByEIWujF.js +2 -0
- package/dist/web/static/assets/KbHitRateTable-ByEIWujF.js.map +1 -0
- package/dist/web/static/assets/MarkdownRenderer-DZmTl-8J.js +3 -0
- package/dist/web/static/assets/MarkdownRenderer-DZmTl-8J.js.map +1 -0
- package/dist/web/static/assets/NotFound-BQPh0vaF.js +2 -0
- package/dist/web/static/assets/NotFound-BQPh0vaF.js.map +1 -0
- package/dist/web/static/assets/ProjectSwitcher-D3lZMFd3.js +2 -0
- package/dist/web/static/assets/ProjectSwitcher-D3lZMFd3.js.map +1 -0
- package/dist/web/static/assets/SettingsPage-oLJBNzQj.js +2 -0
- package/dist/web/static/assets/SettingsPage-oLJBNzQj.js.map +1 -0
- package/dist/web/static/assets/SkillContentPage-DK5rgfgw.js +2 -0
- package/dist/web/static/assets/SkillContentPage-DK5rgfgw.js.map +1 -0
- package/dist/web/static/assets/SkillStatsTable-DYMzjEUV.js +2 -0
- package/dist/web/static/assets/SkillStatsTable-DYMzjEUV.js.map +1 -0
- package/dist/web/static/assets/SkillsDistillTab-C7qaG8q3.js +2 -0
- package/dist/web/static/assets/SkillsDistillTab-C7qaG8q3.js.map +1 -0
- package/dist/web/static/assets/TasksHubPage-03wsRRsJ.js +6 -0
- package/dist/web/static/assets/TasksHubPage-03wsRRsJ.js.map +1 -0
- package/dist/web/static/assets/ViolationsPage-DSiLr-9O.js +3 -0
- package/dist/web/static/assets/ViolationsPage-DSiLr-9O.js.map +1 -0
- package/dist/web/static/assets/arco-Bhi3a6Qp.js +14 -0
- package/dist/web/static/assets/arco-Bhi3a6Qp.js.map +1 -0
- package/dist/web/static/assets/arco-DFQA6dO_.css +1 -0
- package/dist/web/static/assets/charts-BuHQWDbQ.js +37 -0
- package/dist/web/static/assets/charts-BuHQWDbQ.js.map +1 -0
- package/dist/web/static/assets/date-fns-sbWH3_uq.js +2 -0
- package/dist/web/static/assets/date-fns-sbWH3_uq.js.map +1 -0
- package/dist/web/static/assets/index-7bl3kbcx.css +1 -0
- package/dist/web/static/assets/index-BIYnq1Dx.js +4 -0
- package/dist/web/static/assets/index-BIYnq1Dx.js.map +1 -0
- package/dist/web/static/assets/lucide-CnlPQoG8.js +72 -0
- package/dist/web/static/assets/lucide-CnlPQoG8.js.map +1 -0
- package/dist/web/static/assets/outcome-DUn1NjlC.js +2 -0
- package/dist/web/static/assets/outcome-DUn1NjlC.js.map +1 -0
- package/dist/web/static/assets/query-S6X1S7K9.js +2 -0
- package/dist/web/static/assets/{query-C99w429o.js.map → query-S6X1S7K9.js.map} +1 -1
- package/dist/web/static/assets/{react-router-r79dBVy4.js → react-router-JVUrkhdd.js} +3 -3
- package/dist/web/static/assets/{react-router-r79dBVy4.js.map → react-router-JVUrkhdd.js.map} +1 -1
- package/dist/web/static/assets/react-vendor-tkvCrao7.js +57 -0
- package/dist/web/static/assets/react-vendor-tkvCrao7.js.map +1 -0
- package/dist/web/static/assets/syntax-highlighter-BkZfCDsz.js +6 -0
- package/dist/web/static/assets/syntax-highlighter-BkZfCDsz.js.map +1 -0
- package/dist/web/static/assets/useTabsParam-k8qte_0C.js +2 -0
- package/dist/web/static/assets/useTabsParam-k8qte_0C.js.map +1 -0
- package/dist/web/static/assets/vendor-DWgdB1eY.js +65 -0
- package/dist/web/static/assets/vendor-DWgdB1eY.js.map +1 -0
- package/dist/web/static/index.html +12 -8
- package/package.json +14 -3
- package/dist/core/ai/provider.d.ts +0 -63
- package/dist/core/ai/provider.d.ts.map +0 -1
- package/dist/core/ai/provider.js +0 -241
- package/dist/core/ai/provider.js.map +0 -1
- package/dist/core/ai/types.d.ts +0 -43
- package/dist/core/ai/types.d.ts.map +0 -1
- package/dist/core/ai/types.js +0 -5
- package/dist/core/ai/types.js.map +0 -1
- package/dist/core/storage/token-usage.d.ts +0 -36
- package/dist/core/storage/token-usage.d.ts.map +0 -1
- package/dist/core/storage/token-usage.js +0 -59
- package/dist/core/storage/token-usage.js.map +0 -1
- package/dist/core/utils/token-tracker.d.ts +0 -39
- package/dist/core/utils/token-tracker.d.ts.map +0 -1
- package/dist/core/utils/token-tracker.js +0 -69
- package/dist/core/utils/token-tracker.js.map +0 -1
- package/dist/skills/index.d.ts +0 -3
- package/dist/skills/index.d.ts.map +0 -1
- package/dist/skills/index.js +0 -3
- package/dist/skills/index.js.map +0 -1
- package/dist/skills/matcher.d.ts +0 -26
- package/dist/skills/matcher.d.ts.map +0 -1
- package/dist/skills/matcher.js +0 -113
- package/dist/skills/matcher.js.map +0 -1
- package/dist/skills/official/code-simplifier.md +0 -52
- package/dist/skills/official/find-skills.md +0 -142
- package/dist/skills/official/official-api-design.md +0 -30
- package/dist/skills/official/official-architecture-decision.md +0 -41
- package/dist/skills/official/official-bmad.md +0 -118
- package/dist/skills/official/official-db-schema-design.md +0 -34
- package/dist/skills/official/official-debug.md +0 -25
- package/dist/skills/official/official-doc-driven.md +0 -31
- package/dist/skills/official/official-harness-engineering.md +0 -108
- package/dist/skills/official/official-openspec.md +0 -89
- package/dist/skills/official/official-performance-optimization.md +0 -30
- package/dist/skills/official/official-pr-review.md +0 -35
- package/dist/skills/official/official-release-checklist.md +0 -30
- package/dist/skills/official/official-security-hardening.md +0 -32
- package/dist/skills/official/official-spec-driven-design.md +0 -31
- package/dist/skills/official/planning-with-files.md +0 -241
- package/dist/skills/official/ui-ux-pro-max.md +0 -105
- package/dist/skills/official/webapp-testing.md +0 -96
- package/dist/skills/official-skills.d.ts +0 -26
- package/dist/skills/official-skills.d.ts.map +0 -1
- package/dist/skills/official-skills.js +0 -74
- package/dist/skills/official-skills.js.map +0 -1
- package/dist/skills/semantic-matcher.d.ts +0 -60
- package/dist/skills/semantic-matcher.d.ts.map +0 -1
- package/dist/skills/semantic-matcher.js +0 -192
- package/dist/skills/semantic-matcher.js.map +0 -1
- package/dist/skills/upgrade-engine.d.ts +0 -93
- package/dist/skills/upgrade-engine.d.ts.map +0 -1
- package/dist/skills/upgrade-engine.js +0 -447
- package/dist/skills/upgrade-engine.js.map +0 -1
- package/dist/skills/upgrade-prompt.d.ts +0 -20
- package/dist/skills/upgrade-prompt.d.ts.map +0 -1
- package/dist/skills/upgrade-prompt.js +0 -75
- package/dist/skills/upgrade-prompt.js.map +0 -1
- package/dist/web/routes/ai.d.ts +0 -10
- package/dist/web/routes/ai.d.ts.map +0 -1
- package/dist/web/routes/ai.js +0 -186
- package/dist/web/routes/ai.js.map +0 -1
- package/dist/web/routes/token-usage.d.ts +0 -7
- package/dist/web/routes/token-usage.d.ts.map +0 -1
- package/dist/web/routes/token-usage.js +0 -18
- package/dist/web/routes/token-usage.js.map +0 -1
- package/dist/web/ssrf-guard.d.ts +0 -35
- package/dist/web/ssrf-guard.d.ts.map +0 -1
- package/dist/web/ssrf-guard.js +0 -93
- package/dist/web/ssrf-guard.js.map +0 -1
- package/dist/web/static/assets/AIConfig-CdDWzJyO.js +0 -2
- package/dist/web/static/assets/AIConfig-CdDWzJyO.js.map +0 -1
- package/dist/web/static/assets/Dashboard-CoEmmIDt.js +0 -2
- package/dist/web/static/assets/Dashboard-CoEmmIDt.js.map +0 -1
- package/dist/web/static/assets/Drawer-DdRTzlLB.js +0 -2
- package/dist/web/static/assets/Drawer-DdRTzlLB.js.map +0 -1
- package/dist/web/static/assets/Events-DrIq1SUS.js +0 -2
- package/dist/web/static/assets/Events-DrIq1SUS.js.map +0 -1
- package/dist/web/static/assets/Reports-DFBM3MDK.js +0 -2
- package/dist/web/static/assets/Reports-DFBM3MDK.js.map +0 -1
- package/dist/web/static/assets/SearchInput-qCj_jAcf.js +0 -2
- package/dist/web/static/assets/SearchInput-qCj_jAcf.js.map +0 -1
- package/dist/web/static/assets/SessionDetail-CCzwdoT7.js +0 -2
- package/dist/web/static/assets/SessionDetail-CCzwdoT7.js.map +0 -1
- package/dist/web/static/assets/Sessions-FfLYkAw9.js +0 -2
- package/dist/web/static/assets/Sessions-FfLYkAw9.js.map +0 -1
- package/dist/web/static/assets/Skills-C8Gvs3Qa.js +0 -2
- package/dist/web/static/assets/Skills-C8Gvs3Qa.js.map +0 -1
- package/dist/web/static/assets/TaskDetail-BS8pYhaR.js +0 -2
- package/dist/web/static/assets/TaskDetail-BS8pYhaR.js.map +0 -1
- package/dist/web/static/assets/Tasks-CyuhizG8.js +0 -2
- package/dist/web/static/assets/Tasks-CyuhizG8.js.map +0 -1
- package/dist/web/static/assets/charts-CLrM0_uM.js +0 -37
- package/dist/web/static/assets/charts-CLrM0_uM.js.map +0 -1
- package/dist/web/static/assets/date-fns-CZ_bHujz.js +0 -2
- package/dist/web/static/assets/date-fns-CZ_bHujz.js.map +0 -1
- package/dist/web/static/assets/export-L_VBD2p1.js +0 -4
- package/dist/web/static/assets/export-L_VBD2p1.js.map +0 -1
- package/dist/web/static/assets/index-CBX47X8l.js +0 -3
- package/dist/web/static/assets/index-CBX47X8l.js.map +0 -1
- package/dist/web/static/assets/index-DjIoMdoR.css +0 -1
- package/dist/web/static/assets/lucide-Bs_edTLa.js +0 -232
- package/dist/web/static/assets/lucide-Bs_edTLa.js.map +0 -1
- package/dist/web/static/assets/query-C99w429o.js +0 -2
- package/dist/web/static/assets/react-vendor-CSp-GLFF.js +0 -49
- package/dist/web/static/assets/react-vendor-CSp-GLFF.js.map +0 -1
- package/dist/web/static/assets/syntax-highlighter-44FakypI.js +0 -9
- package/dist/web/static/assets/syntax-highlighter-44FakypI.js.map +0 -1
- package/dist/web/static/assets/task-title-BhOcemuR.js +0 -2
- package/dist/web/static/assets/task-title-BhOcemuR.js.map +0 -1
- package/dist/web/static/assets/time-Bxuk0M-C.js +0 -2
- package/dist/web/static/assets/time-Bxuk0M-C.js.map +0 -1
- package/dist/web/static/assets/vendor-CMMjVdZs.js +0 -64
- package/dist/web/static/assets/vendor-CMMjVdZs.js.map +0 -1
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TaskBoundaryClassifier — async LLM "new task vs continuation" re-attribution.
|
|
3
|
+
*
|
|
4
|
+
* decision 265f59d5 (Option A, 2026-06-08). Solves the residual case the
|
|
5
|
+
* synchronous lexical segmenter cannot: a SHORT, ambiguous follow-up prompt
|
|
6
|
+
* that is neither a clear ack ("继续"/"好的") nor carries a NEW_TASK_KEYWORD,
|
|
7
|
+
* e.g. "现在全链路是不是都顺了" vs "文件也看下" — lexically indistinguishable,
|
|
8
|
+
* yet one is a new task and the other a continuation.
|
|
9
|
+
*
|
|
10
|
+
* ── Hot-path contract (NEVER block UserPromptSubmit) ──────────────────────
|
|
11
|
+
* The synchronous segmenter ALWAYS runs first and gives the prompt a
|
|
12
|
+
* best-effort task (zero latency). THIS service runs entirely in the
|
|
13
|
+
* background, fire-and-forget. It spawns `claude` (haiku) only for the ~30%
|
|
14
|
+
* of prompts the segmenter flagged ambiguous, then LAZILY re-attributes:
|
|
15
|
+
* • LLM says NEW_TASK → move the prompt's event onto a brand-new task row
|
|
16
|
+
* (only `task_events.task_id` FK is touched — no event delete, no content
|
|
17
|
+
* mutation). See SQLiteStorage.reattributePromptToNewTask.
|
|
18
|
+
* • LLM says CONTINUATION → leave the sync best-effort merge untouched, just
|
|
19
|
+
* stamp `llm_classified_at` so a replay never re-spawns.
|
|
20
|
+
*
|
|
21
|
+
* Failure mode: ANY spawn / timeout / parse error → give up, keep the sync
|
|
22
|
+
* result, never throw. Mirrors OutcomeClassificationService's fire-and-forget
|
|
23
|
+
* discipline.
|
|
24
|
+
*/
|
|
25
|
+
import { logger } from '../../core/utils/logger.js';
|
|
26
|
+
import { formatError, truncateString } from '../../core/utils/format.js';
|
|
27
|
+
import { truncateSessionId } from '../../core/utils/session.js';
|
|
28
|
+
import { spawnClaudeCli } from '../../core/utils/claude-cli-spawn.js';
|
|
29
|
+
import { randomUUID } from 'node:crypto';
|
|
30
|
+
/**
|
|
31
|
+
* Spawn timeout (decision 5266724a, 2026-06-08). Bumped 8s → 30s: live `claude`
|
|
32
|
+
* classification spawns were measured at 6.8–26s, so an 8s cap timed out the
|
|
33
|
+
* majority of calls and silently degraded back to the sync lexical path. 30s
|
|
34
|
+
* comfortably covers the observed tail. Still fire-and-forget / background, so
|
|
35
|
+
* a slow spawn never blocks UserPromptSubmit.
|
|
36
|
+
*/
|
|
37
|
+
const DEFAULT_TIMEOUT_MS = 30_000;
|
|
38
|
+
/** How many prior prompts of the merged task to hand the LLM as context. */
|
|
39
|
+
const CONTEXT_PROMPT_LIMIT = 3;
|
|
40
|
+
export class TaskBoundaryClassifier {
|
|
41
|
+
spawnFn;
|
|
42
|
+
/**
|
|
43
|
+
* @param spawnFn optional spawn override (tests). Default spawns the
|
|
44
|
+
* `task-boundary-classifier` agent via claude haiku.
|
|
45
|
+
*/
|
|
46
|
+
constructor(opts = {}) {
|
|
47
|
+
const timeoutMs = opts.timeoutMs ?? DEFAULT_TIMEOUT_MS;
|
|
48
|
+
this.spawnFn =
|
|
49
|
+
opts.spawnFn ??
|
|
50
|
+
((prompt) => spawnClaudeCli({
|
|
51
|
+
agent: 'task-boundary-classifier',
|
|
52
|
+
prompt,
|
|
53
|
+
timeoutMs,
|
|
54
|
+
claudeBin: opts.claudeBin,
|
|
55
|
+
// No tools — pure classification, fastest path. Allowed list empty
|
|
56
|
+
// means the agent uses its own frontmatter (which declares none).
|
|
57
|
+
}));
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Classify one ambiguous prompt and, if NEW_TASK, re-attribute it.
|
|
61
|
+
* Fire-and-forget: never throws. Returns the new task id when it split,
|
|
62
|
+
* else null (CONTINUATION, idempotent skip, or any failure).
|
|
63
|
+
*/
|
|
64
|
+
async classify(job, storage) {
|
|
65
|
+
try {
|
|
66
|
+
// Idempotency short-circuit BEFORE spending a spawn: if the merged task
|
|
67
|
+
// is already stamped, a prior run (or replay) handled this prompt.
|
|
68
|
+
if (storage.isLlmClassified(job.mergedTaskId)) {
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
// INFO-level entry log so production can finally confirm the classifier
|
|
72
|
+
// is actually invoked. Before decision 083112fc EVERY branch below was
|
|
73
|
+
// logger.debug() (invisible at the daemon's default INFO level), so a
|
|
74
|
+
// classifier that never once spawned looked identical to one that ran
|
|
75
|
+
// fine — `llm_classified_at` stayed 0/1132 with zero log evidence.
|
|
76
|
+
logger.info(`[TaskBoundaryClassifier] classify called for session=${truncateSessionId(job.sessionId)} ` +
|
|
77
|
+
`mergedTask=${truncateString(job.mergedTaskId, 8)} prompt="${truncateString(job.prompt.replace(/\s+/g, ' ').trim(), 60)}"`);
|
|
78
|
+
const priorPrompts = this.safePriorPrompts(storage, job.mergedTaskId);
|
|
79
|
+
const agentPrompt = buildBoundaryPrompt(priorPrompts, job.prompt);
|
|
80
|
+
let raw;
|
|
81
|
+
try {
|
|
82
|
+
raw = await this.spawnFn(agentPrompt);
|
|
83
|
+
}
|
|
84
|
+
catch (err) {
|
|
85
|
+
// NEVER swallow spawn failures silently. This is the single most
|
|
86
|
+
// important observability fix: a launchd PATH miss / exit error /
|
|
87
|
+
// timeout used to vanish at debug level, so "the classifier never
|
|
88
|
+
// ran" had no diagnosable cause. warn carries the error reason.
|
|
89
|
+
logger.warn(`[TaskBoundaryClassifier] spawn FAILED for session=${truncateSessionId(job.sessionId)}: ${formatError(err)} — keeping sync merge`);
|
|
90
|
+
return null; // conservative: keep sync best-effort merge
|
|
91
|
+
}
|
|
92
|
+
const verdict = parseVerdict(raw);
|
|
93
|
+
if (verdict === null) {
|
|
94
|
+
logger.warn(`[TaskBoundaryClassifier] unparseable verdict (raw="${truncateString(raw.trim(), 60)}") for ` +
|
|
95
|
+
`session=${truncateSessionId(job.sessionId)} — keeping merge`);
|
|
96
|
+
return null;
|
|
97
|
+
}
|
|
98
|
+
logger.info(`[TaskBoundaryClassifier] verdict=${verdict} for session=${truncateSessionId(job.sessionId)} ` +
|
|
99
|
+
`mergedTask=${truncateString(job.mergedTaskId, 8)}`);
|
|
100
|
+
const atIso = new Date().toISOString();
|
|
101
|
+
if (verdict === 'CONTINUATION') {
|
|
102
|
+
// Correct already — just stamp so we never reprocess this prompt.
|
|
103
|
+
try {
|
|
104
|
+
storage.markLlmClassified(job.mergedTaskId, atIso);
|
|
105
|
+
}
|
|
106
|
+
catch (err) {
|
|
107
|
+
logger.warn(`[TaskBoundaryClassifier] stamp failed: ${formatError(err)}`);
|
|
108
|
+
}
|
|
109
|
+
return null;
|
|
110
|
+
}
|
|
111
|
+
// NEW_TASK → lazily re-attribute. reattributePromptToNewTask re-checks
|
|
112
|
+
// idempotency + the event's current FK inside one transaction (OQ #3).
|
|
113
|
+
const newTaskId = storage.reattributePromptToNewTask({
|
|
114
|
+
fromTaskId: job.mergedTaskId,
|
|
115
|
+
eventId: job.eventId,
|
|
116
|
+
newTask: {
|
|
117
|
+
id: randomUUID(),
|
|
118
|
+
session_id: job.sessionId,
|
|
119
|
+
title: extractTitle(job.prompt),
|
|
120
|
+
start_time: job.timestamp,
|
|
121
|
+
task_kind: 'user',
|
|
122
|
+
},
|
|
123
|
+
atIso,
|
|
124
|
+
});
|
|
125
|
+
if (newTaskId) {
|
|
126
|
+
logger.info(`[TaskBoundaryClassifier] split ambiguous prompt off ${truncateString(job.mergedTaskId, 8)} ` +
|
|
127
|
+
`→ new task ${truncateString(newTaskId, 8)} (session=${truncateSessionId(job.sessionId)})`);
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
// reattribute can no-op if the FK moved under us (concurrent replay) —
|
|
131
|
+
// surface it so a silent "NEW_TASK verdict but no split" is diagnosable.
|
|
132
|
+
logger.info(`[TaskBoundaryClassifier] NEW_TASK verdict but reattribute no-op (idempotent skip) for ` +
|
|
133
|
+
`session=${truncateSessionId(job.sessionId)}`);
|
|
134
|
+
}
|
|
135
|
+
return newTaskId;
|
|
136
|
+
}
|
|
137
|
+
catch (err) {
|
|
138
|
+
logger.warn(`[TaskBoundaryClassifier] classify failed: ${formatError(err)}`);
|
|
139
|
+
return null;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
safePriorPrompts(storage, taskId) {
|
|
143
|
+
try {
|
|
144
|
+
return storage.getTaskUserPrompts(taskId, CONTEXT_PROMPT_LIMIT);
|
|
145
|
+
}
|
|
146
|
+
catch (err) {
|
|
147
|
+
logger.warn(`[TaskBoundaryClassifier] prior-prompt fetch failed: ${formatError(err)}`);
|
|
148
|
+
return [];
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
// ── Pure helpers (exported for unit-test reuse) ─────────────────────────────
|
|
153
|
+
/**
|
|
154
|
+
* Build the bare classification prompt handed to the agent. The agent body
|
|
155
|
+
* (.claude/agents/task-boundary-classifier.md) instructs it to answer with a
|
|
156
|
+
* single token; we still keep the contract inline so a bare-prompt spawn
|
|
157
|
+
* (no agent template synced yet) also works.
|
|
158
|
+
*/
|
|
159
|
+
export function buildBoundaryPrompt(priorPrompts, current) {
|
|
160
|
+
const prev = priorPrompts.length > 0
|
|
161
|
+
? priorPrompts.map((p, i) => ` ${i + 1}. ${truncateString(p.replace(/\s+/g, ' ').trim(), 200)}`).join('\n')
|
|
162
|
+
: ' (无)';
|
|
163
|
+
return [
|
|
164
|
+
'你是 task-boundary 分类器。判断「当前 prompt」是开启一个新任务,还是对上一个任务的追问/续接。',
|
|
165
|
+
'只输出一个词:NEW_TASK 或 CONTINUATION。不要解释,不要输出其他任何内容。',
|
|
166
|
+
'',
|
|
167
|
+
'上一个任务的若干 prompt:',
|
|
168
|
+
prev,
|
|
169
|
+
'',
|
|
170
|
+
`当前 prompt:${current.replace(/\s+/g, ' ').trim()}`,
|
|
171
|
+
].join('\n');
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Extract the agent's single-token verdict from raw stdout. Tolerant: the
|
|
175
|
+
* model may wrap the token in punctuation / markdown / a sentence. We scan for
|
|
176
|
+
* the first NEW_TASK / CONTINUATION occurrence (case-insensitive). Returns null
|
|
177
|
+
* when neither token is present (caller keeps the sync merge).
|
|
178
|
+
*/
|
|
179
|
+
export function parseVerdict(raw) {
|
|
180
|
+
if (!raw)
|
|
181
|
+
return null;
|
|
182
|
+
const upper = raw.toUpperCase();
|
|
183
|
+
const newIdx = upper.indexOf('NEW_TASK');
|
|
184
|
+
const contIdx = upper.indexOf('CONTINUATION');
|
|
185
|
+
if (newIdx < 0 && contIdx < 0)
|
|
186
|
+
return null;
|
|
187
|
+
if (newIdx < 0)
|
|
188
|
+
return 'CONTINUATION';
|
|
189
|
+
if (contIdx < 0)
|
|
190
|
+
return 'NEW_TASK';
|
|
191
|
+
// Both present — first one wins.
|
|
192
|
+
return newIdx < contIdx ? 'NEW_TASK' : 'CONTINUATION';
|
|
193
|
+
}
|
|
194
|
+
/** Title for a re-attributed prompt's new task (mirrors TaskSegmenter). */
|
|
195
|
+
function extractTitle(prompt) {
|
|
196
|
+
const cleaned = prompt.replace(/\[Image #\d+\]/g, '').trim();
|
|
197
|
+
const firstLine = cleaned.split('\n')[0].trim();
|
|
198
|
+
if (firstLine.length <= 60)
|
|
199
|
+
return firstLine || '(无标题)';
|
|
200
|
+
return truncateString(firstLine, 60);
|
|
201
|
+
}
|
|
202
|
+
//# sourceMappingURL=task-boundary-classifier.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-boundary-classifier.js","sourceRoot":"","sources":["../../../src/daemon/services/task-boundary-classifier.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,20 +1,238 @@
|
|
|
1
1
|
import type { SQLiteStorage } from '../../core/storage/sqlite.js';
|
|
2
|
+
/**
|
|
3
|
+
* Task-tracking overhaul (2026-05-27 spec §3.3 / §R4).
|
|
4
|
+
*
|
|
5
|
+
* Bug 3 orphan recovery window. When linkEvent fires without an active
|
|
6
|
+
* task (e.g. Stop already closed it but sub-agent PostToolUse is still
|
|
7
|
+
* landing), we attach the event to the most recently completed task on
|
|
8
|
+
* the session IF it ended within this window. Default 5 min — short
|
|
9
|
+
* enough to avoid cross-task mis-attribution, long enough to absorb
|
|
10
|
+
* typical async sub-agent tool flushes (observed 1-4 min in production).
|
|
11
|
+
*
|
|
12
|
+
* Exported as `const` (not env-tunable) on purpose: changing it changes
|
|
13
|
+
* KPI semantics and should be a code review event. R4 mitigation: pure
|
|
14
|
+
* attachment, end_time is NOT updated by the fallback path (Q3).
|
|
15
|
+
*/
|
|
16
|
+
export declare const ORPHAN_RECOVERY_WINDOW_MS: number;
|
|
17
|
+
/**
|
|
18
|
+
* decision 265f59d5: result of a boundary decision. When `ambiguous` is set,
|
|
19
|
+
* the sync path best-effort MERGED `prompt`'s event into `taskId`, but lexical
|
|
20
|
+
* signals were inconclusive — the daemon should hand this off to the async
|
|
21
|
+
* {@link TaskBoundaryClassifier} for a possible re-attribution. When undefined,
|
|
22
|
+
* the decision was unambiguous (clear ack / clear new-task / hard signal) and
|
|
23
|
+
* no LLM call is warranted.
|
|
24
|
+
*/
|
|
25
|
+
export interface BoundaryDecision {
|
|
26
|
+
/** The task id the synchronous path assigned the prompt to. */
|
|
27
|
+
taskId: string;
|
|
28
|
+
/**
|
|
29
|
+
* Present only when the prompt was MERGED into an already-active task via the
|
|
30
|
+
* ambiguous default (no ack token, no NEW_TASK_KEYWORD, no hard signal).
|
|
31
|
+
*/
|
|
32
|
+
ambiguous?: {
|
|
33
|
+
sessionId: string;
|
|
34
|
+
mergedTaskId: string;
|
|
35
|
+
eventId: string;
|
|
36
|
+
prompt: string;
|
|
37
|
+
timestamp: string;
|
|
38
|
+
};
|
|
39
|
+
}
|
|
2
40
|
export declare class TaskSegmenter {
|
|
3
41
|
private storage;
|
|
4
42
|
private currentTasks;
|
|
5
43
|
constructor(storage: SQLiteStorage);
|
|
6
44
|
processPrompt(sessionId: string, prompt: string, timestamp: string, eventId?: string): string;
|
|
7
|
-
|
|
45
|
+
/**
|
|
46
|
+
* decision 265f59d5: same synchronous best-effort segmentation as
|
|
47
|
+
* {@link processPrompt}, but also reports whether the result was an AMBIGUOUS
|
|
48
|
+
* merge so the daemon can enqueue an async LLM re-attribution. The hot path is
|
|
49
|
+
* unchanged — this returns immediately; the LLM call (if any) is the caller's
|
|
50
|
+
* fire-and-forget responsibility.
|
|
51
|
+
*/
|
|
52
|
+
processPromptWithBoundary(sessionId: string, prompt: string, timestamp: string, eventId?: string): BoundaryDecision;
|
|
53
|
+
/**
|
|
54
|
+
* Attach a non-prompt event (PostToolUse / PreToolUse / Stop / spawn …) to the
|
|
55
|
+
* session's currently-open task and refresh `lastTime`.
|
|
56
|
+
*
|
|
57
|
+
* Refreshing `lastTime` here is the critical part of the long-flow fix
|
|
58
|
+
* (2026-05-25): without it, `shouldStartNewTask` only sees the gap between
|
|
59
|
+
* user prompts, so a 20-minute background-agent run with hundreds of tool
|
|
60
|
+
* calls looks identical to the user walking away. The next prompt then trips
|
|
61
|
+
* `TASK_SWITCH_MINUTES` and the post-spawn work gets re-attributed to a
|
|
62
|
+
* brand-new task — exactly the symptom seen in task 36471706.
|
|
63
|
+
*
|
|
64
|
+
* `timestamp` is optional for backward compatibility; callers that already
|
|
65
|
+
* know the event timestamp should pass it (we trust hook timestamps more
|
|
66
|
+
* than wall-clock here because event delivery can be queued/replayed).
|
|
67
|
+
*/
|
|
68
|
+
linkEvent(sessionId: string, eventId: string, timestamp?: string, opts?: {
|
|
69
|
+
hookType?: string;
|
|
70
|
+
toolName?: string;
|
|
71
|
+
}): void;
|
|
8
72
|
/**
|
|
9
73
|
* 从数据库恢复 session 的 active 任务到内存 Map。
|
|
10
74
|
* 用于 daemon 重启后内存丢失场景的 lazy 恢复。
|
|
11
75
|
* 找不到 active 任务时返回 null(不报错)。
|
|
76
|
+
*
|
|
77
|
+
* spec b1480935 (2026-06-01 Option A): only `task_kind='user'` tasks are
|
|
78
|
+
* eligible — callback / image / system rows MUST NOT be re-installed as
|
|
79
|
+
* the session's "current task" or every subsequent event would attach
|
|
80
|
+
* to an envelope row. The legacy `!is_noise` guard is preserved as a
|
|
81
|
+
* fallback for rows where backfill hasn't yet promoted task_kind.
|
|
82
|
+
*
|
|
83
|
+
* Orphan-event robustness fix (2026-06-01): switched from
|
|
84
|
+
* `queryTasks(limit:5).find(...)` to a DIRECT `getActiveUserTask()` SQL
|
|
85
|
+
* lookup. The old path took the most-recent 5 rows THEN filtered — on a
|
|
86
|
+
* high-task-count session a burst of newer agent-callback / completed rows
|
|
87
|
+
* pushed the active user task out of the top-5, so `.find()` returned null
|
|
88
|
+
* and every event after it orphaned. The direct query applies the predicate
|
|
89
|
+
* at the DB layer with no LIMIT truncation.
|
|
12
90
|
*/
|
|
13
91
|
private recoverActiveTask;
|
|
92
|
+
/**
|
|
93
|
+
* Orphan-event robustness fix (2026-06-01): proactively re-populate the
|
|
94
|
+
* in-memory `currentTasks` map from the DB at daemon startup.
|
|
95
|
+
*
|
|
96
|
+
* Problem: after a daemon restart `currentTasks` is empty, so every event
|
|
97
|
+
* relies on per-event lazy `recoverActiveTask`. During the restart window a
|
|
98
|
+
* burst of buffered + replayed events arrives; any whose recovery heuristic
|
|
99
|
+
* doesn't fire (e.g. the orphan-recovery smart window finds no completed
|
|
100
|
+
* task) gets dropped. Hydrating up-front means those events hit the fast
|
|
101
|
+
* `currentTasks.get()` path instead.
|
|
102
|
+
*
|
|
103
|
+
* Idempotent + fault-tolerant: safe to call multiple times (it overwrites
|
|
104
|
+
* with the same DB-derived state) and never throws — a query failure logs
|
|
105
|
+
* and leaves the map untouched so the daemon still starts.
|
|
106
|
+
*
|
|
107
|
+
* @returns number of sessions hydrated (useful for the startup log line).
|
|
108
|
+
*/
|
|
109
|
+
hydrateActiveTasks(): number;
|
|
110
|
+
/**
|
|
111
|
+
* decision c6613590 P0 缺陷 B: trusted map-hit accessor.
|
|
112
|
+
*
|
|
113
|
+
* The in-memory `currentTasks` map can hold a DANGLING pointer to a task the
|
|
114
|
+
* stale-task GC (daemon/index.ts `completeStaleActiveTasks`) already flipped
|
|
115
|
+
* to status='completed' in the DB. The old code trusted any map hit blindly,
|
|
116
|
+
* so a new prompt / late event would `linkEventToTask` onto that completed
|
|
117
|
+
* row — advancing its end_time and merging independent prompts into a stale
|
|
118
|
+
* task.
|
|
119
|
+
*
|
|
120
|
+
* Two defences run together (spec: "两个都修最稳"):
|
|
121
|
+
* 1. daemon evicts GC'd ids from the map (see {@link evictTasks}); but a
|
|
122
|
+
* daemon that never restarts can still race the 5-min GC tick.
|
|
123
|
+
* 2. THIS guard PK-rechecks `status='active'` before trusting a map hit.
|
|
124
|
+
* If the row is no longer active, we drop the stale entry and fall back
|
|
125
|
+
* to `recoverActiveTask` (DB-authoritative). This makes the map a cache,
|
|
126
|
+
* never an authority, for the active-task invariant.
|
|
127
|
+
*/
|
|
128
|
+
private getTrustedCurrent;
|
|
129
|
+
/**
|
|
130
|
+
* decision c6613590 P0 缺陷 B: evict the given task ids from the in-memory
|
|
131
|
+
* `currentTasks` map. Called by the daemon's stale-task GC after it flips
|
|
132
|
+
* those tasks to 'completed' in the DB, so the map never keeps a dangling
|
|
133
|
+
* pointer that drags a closed task's end_time forward.
|
|
134
|
+
*
|
|
135
|
+
* Keyed by sessionId (the map's key), but we also verify the mapped task id
|
|
136
|
+
* matches before deleting — a session whose active task was already replaced
|
|
137
|
+
* by a newer one must NOT have its live entry evicted just because an older
|
|
138
|
+
* task on the same session was GC'd.
|
|
139
|
+
*
|
|
140
|
+
* @returns number of map entries actually evicted (for the daemon log line).
|
|
141
|
+
*/
|
|
142
|
+
evictTasks(closed: Array<{
|
|
143
|
+
id: string;
|
|
144
|
+
session_id: string;
|
|
145
|
+
}>): number;
|
|
14
146
|
getCurrentTaskId(sessionId: string): string | null;
|
|
15
147
|
completeCurrentTask(sessionId: string, timestamp: string): void;
|
|
148
|
+
/**
|
|
149
|
+
* Boundary decision for the synchronous path.
|
|
150
|
+
*
|
|
151
|
+
* spec 1713 (2026-05-28) introduced the hard-signal boundary
|
|
152
|
+
* ({@link shouldStartNewTaskHard}); spec b1480935 (2026-06-01) kept the
|
|
153
|
+
* legacy keyword heuristic for the live daemon. We UNION the two so the
|
|
154
|
+
* decision is the strictly-more-eager of the pair: a new task starts if
|
|
155
|
+
* EITHER an explicit hard signal fires (5-min window / RESET_KEYWORDS /
|
|
156
|
+
* sub-agent return) OR the legacy keyword heuristic asks for it. This keeps
|
|
157
|
+
* every previously-passing keyword case green while satisfying the spec-1713
|
|
158
|
+
* hard-signal contract. The async classifier (when wired) corrects any
|
|
159
|
+
* over- or under-split after the fact.
|
|
160
|
+
*/
|
|
16
161
|
private shouldStartNewTask;
|
|
162
|
+
/**
|
|
163
|
+
* spec 1713 §10.2: the hard-signal boundary. Returns true when an OBJECTIVE
|
|
164
|
+
* marker says "new task":
|
|
165
|
+
* 1. a sub-agent just returned (agentJustReturned flag) → consumes the flag
|
|
166
|
+
* 2. gap > HARD_TIME_WINDOW_MIN (5 min)
|
|
167
|
+
* 3. an explicit RESET_KEYWORD appears in the prompt
|
|
168
|
+
*
|
|
169
|
+
* Pure of keyword *heuristics* (NEW_TASK_KEYWORDS) — those live in the legacy
|
|
170
|
+
* path. Mutates `current.agentJustReturned` (clears it) by design: the flag
|
|
171
|
+
* is a one-shot that only forces the immediately-following prompt.
|
|
172
|
+
*/
|
|
173
|
+
private shouldStartNewTaskHard;
|
|
17
174
|
private createTask;
|
|
18
175
|
private extractTitle;
|
|
19
176
|
}
|
|
177
|
+
/**
|
|
178
|
+
* Task-tracking overhaul (2026-05-27 spec §3.2).
|
|
179
|
+
*
|
|
180
|
+
* Compute the is_noise flag for a freshly-extracted task title. Three
|
|
181
|
+
* heuristics, all conservative — the goal is to drop obvious envelope /
|
|
182
|
+
* sub-3-char / slash-command noise WITHOUT eating real user prompts:
|
|
183
|
+
*
|
|
184
|
+
* • length(trim(title)) < 3 — sub-3-char titles ('好的'=2, 'ok'=2,
|
|
185
|
+
* single CJK char). Note: spec §3.2 lists '好的' as expected-noise
|
|
186
|
+
* and '推送吧'=3 as expected-real; this matches.
|
|
187
|
+
* • title matches one of NOISE_PROMPT_PREFIXES (envelope tags emitted
|
|
188
|
+
* by the framework on UserPromptSubmit).
|
|
189
|
+
* • title is a single-word slash command (`/help`, `/login`, …) — the
|
|
190
|
+
* user didn't actually start a new task, they fired a CC slash menu.
|
|
191
|
+
*
|
|
192
|
+
* What this DOES NOT flag (intentional — spec §3.2):
|
|
193
|
+
* - Semantic acknowledgements like '批准' / 'approve' / 'ok' / '可以'.
|
|
194
|
+
* Those titles should never reach createTask once SpecGate.handle
|
|
195
|
+
* Approval is wired in Step 6. If they DO arrive in the meantime
|
|
196
|
+
* (e.g. test seeds, legacy bug, race), Web shows them so the user
|
|
197
|
+
* can spot the regression rather than silently dropping them.
|
|
198
|
+
*
|
|
199
|
+
* Exported for unit-test reuse; the production caller is
|
|
200
|
+
* TaskSegmenter.createTask above.
|
|
201
|
+
*/
|
|
202
|
+
export declare function computeIsNoise(title: string): boolean;
|
|
203
|
+
/**
|
|
204
|
+
* True if the prompt is actually a tool-generated envelope (task-notification,
|
|
205
|
+
* system-reminder, image attachment, etc.) rather than a real human prompt.
|
|
206
|
+
*
|
|
207
|
+
* Thin wrapper over the canonical {@link isNoisePrompt} (core/utils). Kept
|
|
208
|
+
* as a named export so existing imports stay stable; each consumer's
|
|
209
|
+
* "what to do with noise" decision still lives at the call site (spec-gate
|
|
210
|
+
* skips auto-spec, here we skip task creation).
|
|
211
|
+
*/
|
|
212
|
+
export declare function isNoisePromptForSegmenter(prompt: string): boolean;
|
|
213
|
+
/**
|
|
214
|
+
* True if the prompt is a genuine short continuation / acknowledgement
|
|
215
|
+
* ("继续" / "好的,这样可以" / "对对对" / "ok" / "批准" …) that should resume
|
|
216
|
+
* a recently-completed task via the B+ smart-window gate.
|
|
217
|
+
*
|
|
218
|
+
* decision c6613590 P0 缺陷 A — the old implementation (and the now-retired
|
|
219
|
+
* `CONTINUE_KEYWORDS` table) was `CONTINUE_KEYWORDS.some(kw => prompt.includes(kw))`,
|
|
220
|
+
* a pure SUBSTRING match.
|
|
221
|
+
* Because the keyword list contained '不是' / '这个' / '那个' / '它' / '不对',
|
|
222
|
+
* ordinary NEW questions were mis-classified as continuations and merged into
|
|
223
|
+
* a stale task:
|
|
224
|
+
* • "现在全链路是不是都顺了?知识库、skill都正常了吗" → '不是' matched
|
|
225
|
+
* • "这个任务怎么又丢了?老是丢数据不行啊" → '这个' matched
|
|
226
|
+
*
|
|
227
|
+
* The fix has two layers, BOTH must hold:
|
|
228
|
+
* 1. Length gate — the trimmed prompt must be ≤ ACK_MAX_LEN. A genuine ack
|
|
229
|
+
* is short; a multi-clause question is not.
|
|
230
|
+
* 2. Ack-token presence — an ACK_CONTINUE_KEYWORD (collision-prone tokens
|
|
231
|
+
* removed) must appear in the (short) prompt.
|
|
232
|
+
*
|
|
233
|
+
* This keeps every real ack a continuation ("继续"/"好的,这样可以"/"对对对"/
|
|
234
|
+
* "好的可以这样做") while the two real-world merge bugs above now return false
|
|
235
|
+
* and correctly start a new task. Exported for unit-test reuse.
|
|
236
|
+
*/
|
|
237
|
+
export declare function isContinuationPrompt(prompt: string): boolean;
|
|
20
238
|
//# sourceMappingURL=task-segmenter.d.ts.map
|
|
@@ -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;
|
|
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;IA6GnB;;;;;;;;;;;;;;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;IA6BlB,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"}
|