@winspan/claude-forge 8.54.4 → 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.
Files changed (1053) hide show
  1. package/DEVELOPMENT.md +723 -46
  2. package/README.md +166 -21
  3. package/dist/catalogs/agents.json +67 -0
  4. package/dist/catalogs/skills.json +306 -0
  5. package/dist/claudemd/claudemd-generator.d.ts +45 -45
  6. package/dist/claudemd/claudemd-generator.d.ts.map +1 -1
  7. package/dist/claudemd/claudemd-generator.js +128 -449
  8. package/dist/claudemd/claudemd-generator.js.map +1 -1
  9. package/dist/claudemd/index.d.ts +14 -4
  10. package/dist/claudemd/index.d.ts.map +1 -1
  11. package/dist/claudemd/index.js +15 -4
  12. package/dist/claudemd/index.js.map +1 -1
  13. package/dist/claudemd/resume-manager.d.ts.map +1 -1
  14. package/dist/claudemd/resume-manager.js +37 -9
  15. package/dist/claudemd/resume-manager.js.map +1 -1
  16. package/dist/claudemd/templates/swarm-protocol.md +35 -186
  17. package/dist/claudemd/violations-manager.d.ts +40 -0
  18. package/dist/claudemd/violations-manager.d.ts.map +1 -0
  19. package/dist/claudemd/violations-manager.js +106 -0
  20. package/dist/claudemd/violations-manager.js.map +1 -0
  21. package/dist/cli/commands/admin.d.ts +15 -0
  22. package/dist/cli/commands/admin.d.ts.map +1 -0
  23. package/dist/cli/commands/admin.js +177 -0
  24. package/dist/cli/commands/admin.js.map +1 -0
  25. package/dist/cli/commands/agent.d.ts +169 -0
  26. package/dist/cli/commands/agent.d.ts.map +1 -0
  27. package/dist/cli/commands/agent.js +690 -0
  28. package/dist/cli/commands/agent.js.map +1 -0
  29. package/dist/cli/commands/agents.d.ts +18 -0
  30. package/dist/cli/commands/agents.d.ts.map +1 -0
  31. package/dist/cli/commands/agents.js +160 -0
  32. package/dist/cli/commands/agents.js.map +1 -0
  33. package/dist/cli/commands/bypass.d.ts +18 -0
  34. package/dist/cli/commands/bypass.d.ts.map +1 -0
  35. package/dist/cli/commands/bypass.js +87 -0
  36. package/dist/cli/commands/bypass.js.map +1 -0
  37. package/dist/cli/commands/claudemd.d.ts +60 -0
  38. package/dist/cli/commands/claudemd.d.ts.map +1 -1
  39. package/dist/cli/commands/claudemd.js +174 -37
  40. package/dist/cli/commands/claudemd.js.map +1 -1
  41. package/dist/cli/commands/codegraph.d.ts +17 -0
  42. package/dist/cli/commands/codegraph.d.ts.map +1 -0
  43. package/dist/cli/commands/codegraph.js +263 -0
  44. package/dist/cli/commands/codegraph.js.map +1 -0
  45. package/dist/cli/commands/config.d.ts.map +1 -1
  46. package/dist/cli/commands/config.js +94 -1
  47. package/dist/cli/commands/config.js.map +1 -1
  48. package/dist/cli/commands/daemon.d.ts +39 -0
  49. package/dist/cli/commands/daemon.d.ts.map +1 -1
  50. package/dist/cli/commands/daemon.js +167 -20
  51. package/dist/cli/commands/daemon.js.map +1 -1
  52. package/dist/cli/commands/decisions.d.ts +129 -0
  53. package/dist/cli/commands/decisions.d.ts.map +1 -0
  54. package/dist/cli/commands/decisions.js +706 -0
  55. package/dist/cli/commands/decisions.js.map +1 -0
  56. package/dist/cli/commands/doctor.d.ts +29 -0
  57. package/dist/cli/commands/doctor.d.ts.map +1 -0
  58. package/dist/cli/commands/doctor.js +124 -0
  59. package/dist/cli/commands/doctor.js.map +1 -0
  60. package/dist/cli/commands/entropy.d.ts +35 -0
  61. package/dist/cli/commands/entropy.d.ts.map +1 -0
  62. package/dist/cli/commands/entropy.js +121 -0
  63. package/dist/cli/commands/entropy.js.map +1 -0
  64. package/dist/cli/commands/executions.d.ts +1 -0
  65. package/dist/cli/commands/executions.d.ts.map +1 -1
  66. package/dist/cli/commands/executions.js +12 -2
  67. package/dist/cli/commands/executions.js.map +1 -1
  68. package/dist/cli/commands/fix.d.ts +31 -0
  69. package/dist/cli/commands/fix.d.ts.map +1 -0
  70. package/dist/cli/commands/fix.js +108 -0
  71. package/dist/cli/commands/fix.js.map +1 -0
  72. package/dist/cli/commands/governance.d.ts +21 -0
  73. package/dist/cli/commands/governance.d.ts.map +1 -0
  74. package/dist/cli/commands/governance.js +60 -0
  75. package/dist/cli/commands/governance.js.map +1 -0
  76. package/dist/cli/commands/init.d.ts +27 -0
  77. package/dist/cli/commands/init.d.ts.map +1 -1
  78. package/dist/cli/commands/init.js +158 -146
  79. package/dist/cli/commands/init.js.map +1 -1
  80. package/dist/cli/commands/insights-goal-check.d.ts +54 -0
  81. package/dist/cli/commands/insights-goal-check.d.ts.map +1 -0
  82. package/dist/cli/commands/insights-goal-check.js +318 -0
  83. package/dist/cli/commands/insights-goal-check.js.map +1 -0
  84. package/dist/cli/commands/insights.d.ts +15 -0
  85. package/dist/cli/commands/insights.d.ts.map +1 -0
  86. package/dist/cli/commands/insights.js +127 -0
  87. package/dist/cli/commands/insights.js.map +1 -0
  88. package/dist/cli/commands/knowledge.d.ts +117 -0
  89. package/dist/cli/commands/knowledge.d.ts.map +1 -0
  90. package/dist/cli/commands/knowledge.js +1070 -0
  91. package/dist/cli/commands/knowledge.js.map +1 -0
  92. package/dist/cli/commands/loop.d.ts +95 -0
  93. package/dist/cli/commands/loop.d.ts.map +1 -0
  94. package/dist/cli/commands/loop.js +408 -0
  95. package/dist/cli/commands/loop.js.map +1 -0
  96. package/dist/cli/commands/maintenance.d.ts +33 -0
  97. package/dist/cli/commands/maintenance.d.ts.map +1 -0
  98. package/dist/cli/commands/maintenance.js +75 -0
  99. package/dist/cli/commands/maintenance.js.map +1 -0
  100. package/dist/cli/commands/mcp.d.ts +22 -11
  101. package/dist/cli/commands/mcp.d.ts.map +1 -1
  102. package/dist/cli/commands/mcp.js +93 -5
  103. package/dist/cli/commands/mcp.js.map +1 -1
  104. package/dist/cli/commands/menu.d.ts.map +1 -1
  105. package/dist/cli/commands/menu.js +10 -184
  106. package/dist/cli/commands/menu.js.map +1 -1
  107. package/dist/cli/commands/project.d.ts +98 -0
  108. package/dist/cli/commands/project.d.ts.map +1 -0
  109. package/dist/cli/commands/project.js +382 -0
  110. package/dist/cli/commands/project.js.map +1 -0
  111. package/dist/cli/commands/skills.d.ts +131 -0
  112. package/dist/cli/commands/skills.d.ts.map +1 -1
  113. package/dist/cli/commands/skills.js +404 -118
  114. package/dist/cli/commands/skills.js.map +1 -1
  115. package/dist/cli/commands/spec.d.ts +40 -0
  116. package/dist/cli/commands/spec.d.ts.map +1 -0
  117. package/dist/cli/commands/spec.js +49 -0
  118. package/dist/cli/commands/spec.js.map +1 -0
  119. package/dist/cli/commands/stats.d.ts.map +1 -1
  120. package/dist/cli/commands/stats.js +11 -3
  121. package/dist/cli/commands/stats.js.map +1 -1
  122. package/dist/cli/commands/status.d.ts.map +1 -1
  123. package/dist/cli/commands/status.js +17 -2
  124. package/dist/cli/commands/status.js.map +1 -1
  125. package/dist/cli/commands/trace.d.ts.map +1 -1
  126. package/dist/cli/commands/trace.js +4 -9
  127. package/dist/cli/commands/trace.js.map +1 -1
  128. package/dist/cli/commands/violations.d.ts +14 -0
  129. package/dist/cli/commands/violations.d.ts.map +1 -0
  130. package/dist/cli/commands/violations.js +43 -0
  131. package/dist/cli/commands/violations.js.map +1 -0
  132. package/dist/cli/index.js +34 -0
  133. package/dist/cli/index.js.map +1 -1
  134. package/dist/cli/init/hook-manager.d.ts +1 -1
  135. package/dist/cli/init/hook-manager.d.ts.map +1 -1
  136. package/dist/cli/init/hook-manager.js +6 -0
  137. package/dist/cli/init/hook-manager.js.map +1 -1
  138. package/dist/cli/utils/resolve-session.d.ts +32 -0
  139. package/dist/cli/utils/resolve-session.d.ts.map +1 -0
  140. package/dist/cli/utils/resolve-session.js +39 -0
  141. package/dist/cli/utils/resolve-session.js.map +1 -0
  142. package/dist/core/config.d.ts +4 -1
  143. package/dist/core/config.d.ts.map +1 -1
  144. package/dist/core/config.js +11 -23
  145. package/dist/core/config.js.map +1 -1
  146. package/dist/core/constants.d.ts +51 -13
  147. package/dist/core/constants.d.ts.map +1 -1
  148. package/dist/core/constants.js +63 -13
  149. package/dist/core/constants.js.map +1 -1
  150. package/dist/core/diagnostics/checks.d.ts +151 -0
  151. package/dist/core/diagnostics/checks.d.ts.map +1 -0
  152. package/dist/core/diagnostics/checks.js +766 -0
  153. package/dist/core/diagnostics/checks.js.map +1 -0
  154. package/dist/core/diagnostics/daemon-status.d.ts +77 -0
  155. package/dist/core/diagnostics/daemon-status.d.ts.map +1 -0
  156. package/dist/core/diagnostics/daemon-status.js +113 -0
  157. package/dist/core/diagnostics/daemon-status.js.map +1 -0
  158. package/dist/core/diagnostics/entropy-checks.d.ts +83 -0
  159. package/dist/core/diagnostics/entropy-checks.d.ts.map +1 -0
  160. package/dist/core/diagnostics/entropy-checks.js +400 -0
  161. package/dist/core/diagnostics/entropy-checks.js.map +1 -0
  162. package/dist/core/diagnostics/fix-runner.d.ts +54 -0
  163. package/dist/core/diagnostics/fix-runner.d.ts.map +1 -0
  164. package/dist/core/diagnostics/fix-runner.js +90 -0
  165. package/dist/core/diagnostics/fix-runner.js.map +1 -0
  166. package/dist/core/diagnostics/heartbeat-reader.d.ts +28 -0
  167. package/dist/core/diagnostics/heartbeat-reader.d.ts.map +1 -0
  168. package/dist/core/diagnostics/heartbeat-reader.js +50 -0
  169. package/dist/core/diagnostics/heartbeat-reader.js.map +1 -0
  170. package/dist/core/diagnostics/knip-runner.d.ts +49 -0
  171. package/dist/core/diagnostics/knip-runner.d.ts.map +1 -0
  172. package/dist/core/diagnostics/knip-runner.js +100 -0
  173. package/dist/core/diagnostics/knip-runner.js.map +1 -0
  174. package/dist/core/diagnostics/markers.d.ts +96 -0
  175. package/dist/core/diagnostics/markers.d.ts.map +1 -0
  176. package/dist/core/diagnostics/markers.js +153 -0
  177. package/dist/core/diagnostics/markers.js.map +1 -0
  178. package/dist/core/event-fields.d.ts +27 -0
  179. package/dist/core/event-fields.d.ts.map +1 -1
  180. package/dist/core/event-fields.js +43 -0
  181. package/dist/core/event-fields.js.map +1 -1
  182. package/dist/core/governance/global-inject.d.ts +90 -0
  183. package/dist/core/governance/global-inject.d.ts.map +1 -0
  184. package/dist/core/governance/global-inject.js +184 -0
  185. package/dist/core/governance/global-inject.js.map +1 -0
  186. package/dist/core/insights/agent-anchor-guard.d.ts +77 -0
  187. package/dist/core/insights/agent-anchor-guard.d.ts.map +1 -0
  188. package/dist/core/insights/agent-anchor-guard.js +119 -0
  189. package/dist/core/insights/agent-anchor-guard.js.map +1 -0
  190. package/dist/core/insights/agent-distill-context.d.ts +55 -0
  191. package/dist/core/insights/agent-distill-context.d.ts.map +1 -0
  192. package/dist/core/insights/agent-distill-context.js +146 -0
  193. package/dist/core/insights/agent-distill-context.js.map +1 -0
  194. package/dist/core/insights/agent-distill-spawn.d.ts +56 -0
  195. package/dist/core/insights/agent-distill-spawn.d.ts.map +1 -0
  196. package/dist/core/insights/agent-distill-spawn.js +179 -0
  197. package/dist/core/insights/agent-distill-spawn.js.map +1 -0
  198. package/dist/core/insights/agent-drift.d.ts +66 -0
  199. package/dist/core/insights/agent-drift.d.ts.map +1 -0
  200. package/dist/core/insights/agent-drift.js +109 -0
  201. package/dist/core/insights/agent-drift.js.map +1 -0
  202. package/dist/core/insights/agent-evolution-sources.d.ts +21 -0
  203. package/dist/core/insights/agent-evolution-sources.d.ts.map +1 -0
  204. package/dist/core/insights/agent-evolution-sources.js +36 -0
  205. package/dist/core/insights/agent-evolution-sources.js.map +1 -0
  206. package/dist/core/insights/agent-health.d.ts +142 -0
  207. package/dist/core/insights/agent-health.d.ts.map +1 -0
  208. package/dist/core/insights/agent-health.js +296 -0
  209. package/dist/core/insights/agent-health.js.map +1 -0
  210. package/dist/core/insights/agent-patch-apply.d.ts +45 -0
  211. package/dist/core/insights/agent-patch-apply.d.ts.map +1 -0
  212. package/dist/core/insights/agent-patch-apply.js +165 -0
  213. package/dist/core/insights/agent-patch-apply.js.map +1 -0
  214. package/dist/core/insights/agent-suggest.d.ts +128 -0
  215. package/dist/core/insights/agent-suggest.d.ts.map +1 -0
  216. package/dist/core/insights/agent-suggest.js +284 -0
  217. package/dist/core/insights/agent-suggest.js.map +1 -0
  218. package/dist/core/insights/coverage-tiers.d.ts +46 -0
  219. package/dist/core/insights/coverage-tiers.d.ts.map +1 -0
  220. package/dist/core/insights/coverage-tiers.js +95 -0
  221. package/dist/core/insights/coverage-tiers.js.map +1 -0
  222. package/dist/core/insights/experience-extractor.d.ts +60 -0
  223. package/dist/core/insights/experience-extractor.d.ts.map +1 -0
  224. package/dist/core/insights/experience-extractor.js +319 -0
  225. package/dist/core/insights/experience-extractor.js.map +1 -0
  226. package/dist/core/insights/violation-reporter.d.ts +149 -0
  227. package/dist/core/insights/violation-reporter.d.ts.map +1 -0
  228. package/dist/core/insights/violation-reporter.js +391 -0
  229. package/dist/core/insights/violation-reporter.js.map +1 -0
  230. package/dist/core/loop/loop-engine.d.ts +140 -0
  231. package/dist/core/loop/loop-engine.d.ts.map +1 -0
  232. package/dist/core/loop/loop-engine.js +266 -0
  233. package/dist/core/loop/loop-engine.js.map +1 -0
  234. package/dist/core/queue/index.d.ts +16 -3
  235. package/dist/core/queue/index.d.ts.map +1 -1
  236. package/dist/core/queue/index.js +16 -4
  237. package/dist/core/queue/index.js.map +1 -1
  238. package/dist/core/storage/base.d.ts +317 -0
  239. package/dist/core/storage/base.d.ts.map +1 -1
  240. package/dist/core/storage/base.js +1093 -0
  241. package/dist/core/storage/base.js.map +1 -1
  242. package/dist/core/storage/codec/tool-input-codec.d.ts +93 -0
  243. package/dist/core/storage/codec/tool-input-codec.d.ts.map +1 -0
  244. package/dist/core/storage/codec/tool-input-codec.js +159 -0
  245. package/dist/core/storage/codec/tool-input-codec.js.map +1 -0
  246. package/dist/core/storage/codegraph-types.d.ts +79 -0
  247. package/dist/core/storage/codegraph-types.d.ts.map +1 -0
  248. package/dist/core/storage/codegraph-types.js +14 -0
  249. package/dist/core/storage/codegraph-types.js.map +1 -0
  250. package/dist/core/storage/codegraph.d.ts +186 -0
  251. package/dist/core/storage/codegraph.d.ts.map +1 -0
  252. package/dist/core/storage/codegraph.js +452 -0
  253. package/dist/core/storage/codegraph.js.map +1 -0
  254. package/dist/core/storage/decisions.d.ts +387 -0
  255. package/dist/core/storage/decisions.d.ts.map +1 -0
  256. package/dist/core/storage/decisions.js +534 -0
  257. package/dist/core/storage/decisions.js.map +1 -0
  258. package/dist/core/storage/events.d.ts +239 -8
  259. package/dist/core/storage/events.d.ts.map +1 -1
  260. package/dist/core/storage/events.js +705 -39
  261. package/dist/core/storage/events.js.map +1 -1
  262. package/dist/core/storage/feedback.d.ts +111 -0
  263. package/dist/core/storage/feedback.d.ts.map +1 -0
  264. package/dist/core/storage/feedback.js +186 -0
  265. package/dist/core/storage/feedback.js.map +1 -0
  266. package/dist/core/storage/forge-config.d.ts +40 -0
  267. package/dist/core/storage/forge-config.d.ts.map +1 -0
  268. package/dist/core/storage/forge-config.js +65 -0
  269. package/dist/core/storage/forge-config.js.map +1 -0
  270. package/dist/core/storage/injections.d.ts +68 -0
  271. package/dist/core/storage/injections.d.ts.map +1 -1
  272. package/dist/core/storage/injections.js +131 -5
  273. package/dist/core/storage/injections.js.map +1 -1
  274. package/dist/core/storage/knowledge.d.ts +332 -0
  275. package/dist/core/storage/knowledge.d.ts.map +1 -0
  276. package/dist/core/storage/knowledge.js +589 -0
  277. package/dist/core/storage/knowledge.js.map +1 -0
  278. package/dist/core/storage/maintenance.d.ts +36 -9
  279. package/dist/core/storage/maintenance.d.ts.map +1 -1
  280. package/dist/core/storage/maintenance.js +56 -24
  281. package/dist/core/storage/maintenance.js.map +1 -1
  282. package/dist/core/storage/pipeline-rollup.d.ts +111 -0
  283. package/dist/core/storage/pipeline-rollup.d.ts.map +1 -0
  284. package/dist/core/storage/pipeline-rollup.js +432 -0
  285. package/dist/core/storage/pipeline-rollup.js.map +1 -0
  286. package/dist/core/storage/routing.d.ts +50 -3
  287. package/dist/core/storage/routing.d.ts.map +1 -1
  288. package/dist/core/storage/routing.js +131 -10
  289. package/dist/core/storage/routing.js.map +1 -1
  290. package/dist/core/storage/rows.d.ts +31 -8
  291. package/dist/core/storage/rows.d.ts.map +1 -1
  292. package/dist/core/storage/schema.sql +367 -23
  293. package/dist/core/storage/sessions.d.ts +136 -0
  294. package/dist/core/storage/sessions.d.ts.map +1 -1
  295. package/dist/core/storage/sessions.js +352 -15
  296. package/dist/core/storage/sessions.js.map +1 -1
  297. package/dist/core/storage/skills.d.ts +160 -0
  298. package/dist/core/storage/skills.d.ts.map +1 -1
  299. package/dist/core/storage/skills.js +368 -7
  300. package/dist/core/storage/skills.js.map +1 -1
  301. package/dist/core/storage/sqlite.d.ts +309 -20
  302. package/dist/core/storage/sqlite.d.ts.map +1 -1
  303. package/dist/core/storage/sqlite.js +523 -16
  304. package/dist/core/storage/sqlite.js.map +1 -1
  305. package/dist/core/storage/tasks.d.ts +744 -2
  306. package/dist/core/storage/tasks.d.ts.map +1 -1
  307. package/dist/core/storage/tasks.js +1691 -17
  308. package/dist/core/storage/tasks.js.map +1 -1
  309. package/dist/core/storage/tool-intercepts.d.ts +69 -0
  310. package/dist/core/storage/tool-intercepts.d.ts.map +1 -0
  311. package/dist/core/storage/tool-intercepts.js +116 -0
  312. package/dist/core/storage/tool-intercepts.js.map +1 -0
  313. package/dist/core/types.d.ts +136 -18
  314. package/dist/core/types.d.ts.map +1 -1
  315. package/dist/core/types.js +10 -0
  316. package/dist/core/types.js.map +1 -1
  317. package/dist/core/utils/backup.d.ts +81 -0
  318. package/dist/core/utils/backup.d.ts.map +1 -0
  319. package/dist/core/utils/backup.js +98 -0
  320. package/dist/core/utils/backup.js.map +1 -0
  321. package/dist/core/utils/binary-paths.d.ts +124 -0
  322. package/dist/core/utils/binary-paths.d.ts.map +1 -0
  323. package/dist/core/utils/binary-paths.js +218 -0
  324. package/dist/core/utils/binary-paths.js.map +1 -0
  325. package/dist/core/utils/bypass-token.d.ts +75 -0
  326. package/dist/core/utils/bypass-token.d.ts.map +1 -0
  327. package/dist/core/utils/bypass-token.js +133 -0
  328. package/dist/core/utils/bypass-token.js.map +1 -0
  329. package/dist/core/utils/cc-builtin-agents.d.ts +3 -0
  330. package/dist/core/utils/cc-builtin-agents.d.ts.map +1 -0
  331. package/dist/core/utils/cc-builtin-agents.js +29 -0
  332. package/dist/core/utils/cc-builtin-agents.js.map +1 -0
  333. package/dist/core/utils/claude-cli-resolver.d.ts +26 -0
  334. package/dist/core/utils/claude-cli-resolver.d.ts.map +1 -0
  335. package/dist/core/utils/claude-cli-resolver.js +115 -0
  336. package/dist/core/utils/claude-cli-resolver.js.map +1 -0
  337. package/dist/core/utils/claude-cli-spawn.d.ts +106 -0
  338. package/dist/core/utils/claude-cli-spawn.d.ts.map +1 -0
  339. package/dist/core/utils/claude-cli-spawn.js +219 -0
  340. package/dist/core/utils/claude-cli-spawn.js.map +1 -0
  341. package/dist/core/utils/forge-resume-block.d.ts.map +1 -1
  342. package/dist/core/utils/forge-resume-block.js +3 -2
  343. package/dist/core/utils/forge-resume-block.js.map +1 -1
  344. package/dist/core/utils/logger.d.ts +15 -3
  345. package/dist/core/utils/logger.d.ts.map +1 -1
  346. package/dist/core/utils/logger.js +20 -2
  347. package/dist/core/utils/logger.js.map +1 -1
  348. package/dist/core/utils/noise-prompt.d.ts +97 -0
  349. package/dist/core/utils/noise-prompt.d.ts.map +1 -0
  350. package/dist/core/utils/noise-prompt.js +127 -0
  351. package/dist/core/utils/noise-prompt.js.map +1 -0
  352. package/dist/core/utils/path.d.ts +0 -4
  353. package/dist/core/utils/path.d.ts.map +1 -1
  354. package/dist/core/utils/path.js +0 -7
  355. package/dist/core/utils/path.js.map +1 -1
  356. package/dist/core/utils/time.d.ts +67 -0
  357. package/dist/core/utils/time.d.ts.map +1 -1
  358. package/dist/core/utils/time.js +147 -0
  359. package/dist/core/utils/time.js.map +1 -1
  360. package/dist/daemon/agent-sync.d.ts +24 -0
  361. package/dist/daemon/agent-sync.d.ts.map +1 -0
  362. package/dist/daemon/agent-sync.js +114 -0
  363. package/dist/daemon/agent-sync.js.map +1 -0
  364. package/dist/daemon/config-store.d.ts +55 -0
  365. package/dist/daemon/config-store.d.ts.map +1 -0
  366. package/dist/daemon/config-store.js +146 -0
  367. package/dist/daemon/config-store.js.map +1 -0
  368. package/dist/daemon/event-parser.d.ts +22 -0
  369. package/dist/daemon/event-parser.d.ts.map +1 -1
  370. package/dist/daemon/event-parser.js +54 -3
  371. package/dist/daemon/event-parser.js.map +1 -1
  372. package/dist/daemon/handlers/history-exporter.d.ts.map +1 -1
  373. package/dist/daemon/handlers/history-exporter.js +9 -8
  374. package/dist/daemon/handlers/history-exporter.js.map +1 -1
  375. package/dist/daemon/handlers/post-tool-use.d.ts +66 -4
  376. package/dist/daemon/handlers/post-tool-use.d.ts.map +1 -1
  377. package/dist/daemon/handlers/post-tool-use.js +221 -8
  378. package/dist/daemon/handlers/post-tool-use.js.map +1 -1
  379. package/dist/daemon/handlers/pre-tool-use.d.ts +181 -0
  380. package/dist/daemon/handlers/pre-tool-use.d.ts.map +1 -0
  381. package/dist/daemon/handlers/pre-tool-use.js +618 -0
  382. package/dist/daemon/handlers/pre-tool-use.js.map +1 -0
  383. package/dist/daemon/handlers/stop.d.ts +55 -7
  384. package/dist/daemon/handlers/stop.d.ts.map +1 -1
  385. package/dist/daemon/handlers/stop.js +245 -8
  386. package/dist/daemon/handlers/stop.js.map +1 -1
  387. package/dist/daemon/handlers/user-prompt.d.ts +51 -14
  388. package/dist/daemon/handlers/user-prompt.d.ts.map +1 -1
  389. package/dist/daemon/handlers/user-prompt.js +223 -95
  390. package/dist/daemon/handlers/user-prompt.js.map +1 -1
  391. package/dist/daemon/handlers/violation-content-backfill.d.ts +76 -0
  392. package/dist/daemon/handlers/violation-content-backfill.d.ts.map +1 -0
  393. package/dist/daemon/handlers/violation-content-backfill.js +167 -0
  394. package/dist/daemon/handlers/violation-content-backfill.js.map +1 -0
  395. package/dist/daemon/hook-sync.d.ts.map +1 -1
  396. package/dist/daemon/hook-sync.js +2 -1
  397. package/dist/daemon/hook-sync.js.map +1 -1
  398. package/dist/daemon/index.d.ts +19 -0
  399. package/dist/daemon/index.d.ts.map +1 -1
  400. package/dist/daemon/index.js +439 -86
  401. package/dist/daemon/index.js.map +1 -1
  402. package/dist/daemon/lifecycle.d.ts +48 -1
  403. package/dist/daemon/lifecycle.d.ts.map +1 -1
  404. package/dist/daemon/lifecycle.js +98 -2
  405. package/dist/daemon/lifecycle.js.map +1 -1
  406. package/dist/daemon/router.d.ts +4 -1
  407. package/dist/daemon/router.d.ts.map +1 -1
  408. package/dist/daemon/router.js +4 -2
  409. package/dist/daemon/router.js.map +1 -1
  410. package/dist/daemon/rules/defaults.d.ts +20 -0
  411. package/dist/daemon/rules/defaults.d.ts.map +1 -0
  412. package/dist/daemon/rules/defaults.js +779 -0
  413. package/dist/daemon/rules/defaults.js.map +1 -0
  414. package/dist/daemon/rules/registry.d.ts +47 -0
  415. package/dist/daemon/rules/registry.d.ts.map +1 -0
  416. package/dist/daemon/rules/registry.js +84 -0
  417. package/dist/daemon/rules/registry.js.map +1 -0
  418. package/dist/daemon/rules/types.d.ts +176 -0
  419. package/dist/daemon/rules/types.d.ts.map +1 -0
  420. package/dist/daemon/rules/types.js +15 -0
  421. package/dist/daemon/rules/types.js.map +1 -0
  422. package/dist/daemon/rules/whitelist.d.ts +101 -0
  423. package/dist/daemon/rules/whitelist.d.ts.map +1 -0
  424. package/dist/daemon/rules/whitelist.js +210 -0
  425. package/dist/daemon/rules/whitelist.js.map +1 -0
  426. package/dist/daemon/rules/workflow-defaults.d.ts +52 -0
  427. package/dist/daemon/rules/workflow-defaults.d.ts.map +1 -0
  428. package/dist/daemon/rules/workflow-defaults.js +521 -0
  429. package/dist/daemon/rules/workflow-defaults.js.map +1 -0
  430. package/dist/daemon/server.d.ts +11 -1
  431. package/dist/daemon/server.d.ts.map +1 -1
  432. package/dist/daemon/server.js +7 -1
  433. package/dist/daemon/server.js.map +1 -1
  434. package/dist/daemon/services/codegraph-sync.d.ts +94 -0
  435. package/dist/daemon/services/codegraph-sync.d.ts.map +1 -0
  436. package/dist/daemon/services/codegraph-sync.js +159 -0
  437. package/dist/daemon/services/codegraph-sync.js.map +1 -0
  438. package/dist/daemon/services/context-injector.d.ts +34 -0
  439. package/dist/daemon/services/context-injector.d.ts.map +1 -0
  440. package/dist/daemon/services/context-injector.js +61 -0
  441. package/dist/daemon/services/context-injector.js.map +1 -0
  442. package/dist/daemon/services/decision-hint.d.ts +240 -0
  443. package/dist/daemon/services/decision-hint.d.ts.map +1 -0
  444. package/dist/daemon/services/decision-hint.js +562 -0
  445. package/dist/daemon/services/decision-hint.js.map +1 -0
  446. package/dist/daemon/services/event-ttl-sweep.d.ts +86 -0
  447. package/dist/daemon/services/event-ttl-sweep.d.ts.map +1 -0
  448. package/dist/daemon/services/event-ttl-sweep.js +124 -0
  449. package/dist/daemon/services/event-ttl-sweep.js.map +1 -0
  450. package/dist/daemon/services/feedback-aggregator.d.ts +167 -0
  451. package/dist/daemon/services/feedback-aggregator.d.ts.map +1 -0
  452. package/dist/daemon/services/feedback-aggregator.js +415 -0
  453. package/dist/daemon/services/feedback-aggregator.js.map +1 -0
  454. package/dist/daemon/services/heartbeat-writer.d.ts +46 -0
  455. package/dist/daemon/services/heartbeat-writer.d.ts.map +1 -0
  456. package/dist/daemon/services/heartbeat-writer.js +82 -0
  457. package/dist/daemon/services/heartbeat-writer.js.map +1 -0
  458. package/dist/daemon/services/idle-session-sweeper.d.ts +61 -0
  459. package/dist/daemon/services/idle-session-sweeper.d.ts.map +1 -0
  460. package/dist/daemon/services/idle-session-sweeper.js +94 -0
  461. package/dist/daemon/services/idle-session-sweeper.js.map +1 -0
  462. package/dist/daemon/services/idle-task-budget.d.ts +50 -0
  463. package/dist/daemon/services/idle-task-budget.d.ts.map +1 -0
  464. package/dist/daemon/services/idle-task-budget.js +72 -0
  465. package/dist/daemon/services/idle-task-budget.js.map +1 -0
  466. package/dist/daemon/services/intercept-revive.d.ts +60 -0
  467. package/dist/daemon/services/intercept-revive.d.ts.map +1 -0
  468. package/dist/daemon/services/intercept-revive.js +86 -0
  469. package/dist/daemon/services/intercept-revive.js.map +1 -0
  470. package/dist/daemon/services/intercept-rollback-guard.d.ts +105 -0
  471. package/dist/daemon/services/intercept-rollback-guard.d.ts.map +1 -0
  472. package/dist/daemon/services/intercept-rollback-guard.js +152 -0
  473. package/dist/daemon/services/intercept-rollback-guard.js.map +1 -0
  474. package/dist/daemon/services/intercept-timeout-sweeper.d.ts +58 -0
  475. package/dist/daemon/services/intercept-timeout-sweeper.d.ts.map +1 -0
  476. package/dist/daemon/services/intercept-timeout-sweeper.js +83 -0
  477. package/dist/daemon/services/intercept-timeout-sweeper.js.map +1 -0
  478. package/dist/daemon/services/kb-injector.d.ts +57 -0
  479. package/dist/daemon/services/kb-injector.d.ts.map +1 -0
  480. package/dist/daemon/services/kb-injector.js +148 -0
  481. package/dist/daemon/services/kb-injector.js.map +1 -0
  482. package/dist/daemon/services/kb-rebuild-scheduler.d.ts +95 -0
  483. package/dist/daemon/services/kb-rebuild-scheduler.d.ts.map +1 -0
  484. package/dist/daemon/services/kb-rebuild-scheduler.js +149 -0
  485. package/dist/daemon/services/kb-rebuild-scheduler.js.map +1 -0
  486. package/dist/daemon/services/loop-hint.d.ts +139 -0
  487. package/dist/daemon/services/loop-hint.d.ts.map +1 -0
  488. package/dist/daemon/services/loop-hint.js +272 -0
  489. package/dist/daemon/services/loop-hint.js.map +1 -0
  490. package/dist/daemon/services/outcome-classification-service.d.ts +49 -0
  491. package/dist/daemon/services/outcome-classification-service.d.ts.map +1 -0
  492. package/dist/daemon/services/outcome-classification-service.js +214 -0
  493. package/dist/daemon/services/outcome-classification-service.js.map +1 -0
  494. package/dist/daemon/services/outcome-classifier.d.ts +136 -0
  495. package/dist/daemon/services/outcome-classifier.d.ts.map +1 -0
  496. package/dist/daemon/services/outcome-classifier.js +178 -0
  497. package/dist/daemon/services/outcome-classifier.js.map +1 -0
  498. package/dist/daemon/services/outcome-nudge.d.ts +107 -0
  499. package/dist/daemon/services/outcome-nudge.d.ts.map +1 -0
  500. package/dist/daemon/services/outcome-nudge.js +242 -0
  501. package/dist/daemon/services/outcome-nudge.js.map +1 -0
  502. package/dist/daemon/services/spec-approval.d.ts +127 -0
  503. package/dist/daemon/services/spec-approval.d.ts.map +1 -0
  504. package/dist/daemon/services/spec-approval.js +216 -0
  505. package/dist/daemon/services/spec-approval.js.map +1 -0
  506. package/dist/daemon/services/spec-gate.d.ts +54 -0
  507. package/dist/daemon/services/spec-gate.d.ts.map +1 -0
  508. package/dist/daemon/services/spec-gate.js +113 -0
  509. package/dist/daemon/services/spec-gate.js.map +1 -0
  510. package/dist/daemon/services/task-boundary-classifier.d.ts +78 -0
  511. package/dist/daemon/services/task-boundary-classifier.d.ts.map +1 -0
  512. package/dist/daemon/services/task-boundary-classifier.js +202 -0
  513. package/dist/daemon/services/task-boundary-classifier.js.map +1 -0
  514. package/dist/daemon/services/task-segmenter.d.ts +230 -1
  515. package/dist/daemon/services/task-segmenter.d.ts.map +1 -1
  516. package/dist/daemon/services/task-segmenter.js +527 -17
  517. package/dist/daemon/services/task-segmenter.js.map +1 -1
  518. package/dist/daemon/skill-sync.d.ts +7 -2
  519. package/dist/daemon/skill-sync.d.ts.map +1 -1
  520. package/dist/daemon/skill-sync.js +114 -9
  521. package/dist/daemon/skill-sync.js.map +1 -1
  522. package/dist/daemon/startup/maintenance-schedulers.d.ts +68 -0
  523. package/dist/daemon/startup/maintenance-schedulers.d.ts.map +1 -0
  524. package/dist/daemon/startup/maintenance-schedulers.js +294 -0
  525. package/dist/daemon/startup/maintenance-schedulers.js.map +1 -0
  526. package/dist/daemon/templates/agents/agent-retro-distiller.md +106 -0
  527. package/dist/daemon/templates/agents/claudemd-writer.md +102 -0
  528. package/dist/daemon/templates/agents/coder.md +262 -0
  529. package/dist/daemon/templates/agents/decision-maker.md +546 -0
  530. package/dist/daemon/templates/agents/doc-reviewer.md +118 -0
  531. package/dist/daemon/templates/agents/harness-debug-full.md +196 -0
  532. package/dist/daemon/templates/agents/knowledge-builder.md +120 -0
  533. package/dist/daemon/templates/agents/patch-applier.md +145 -0
  534. package/dist/daemon/templates/agents/planner.md +217 -0
  535. package/dist/daemon/templates/agents/safety-net-implementer.md +278 -0
  536. package/dist/daemon/templates/agents/skill-distiller.md +114 -0
  537. package/dist/daemon/templates/agents/task-boundary-classifier.md +65 -0
  538. package/dist/daemon/templates/agents/verify-agent.md +259 -0
  539. package/dist/daemon/utils/inject-block.d.ts +39 -0
  540. package/dist/daemon/utils/inject-block.d.ts.map +1 -0
  541. package/dist/daemon/utils/inject-block.js +25 -0
  542. package/dist/daemon/utils/inject-block.js.map +1 -0
  543. package/dist/hooks/hook-lib.sh +8 -0
  544. package/dist/hooks/notification.sh +19 -8
  545. package/dist/hooks/post-tool-use.sh +41 -23
  546. package/dist/hooks/pre-tool-use.sh +54 -23
  547. package/dist/hooks/session-start.sh +68 -0
  548. package/dist/hooks/stop.sh +31 -11
  549. package/dist/hooks/user-prompt-submit.sh +37 -21
  550. package/dist/knowledge/adapters/go-adapter.d.ts +65 -0
  551. package/dist/knowledge/adapters/go-adapter.d.ts.map +1 -0
  552. package/dist/knowledge/adapters/go-adapter.js +294 -0
  553. package/dist/knowledge/adapters/go-adapter.js.map +1 -0
  554. package/dist/knowledge/adapters/index.d.ts +41 -0
  555. package/dist/knowledge/adapters/index.d.ts.map +1 -0
  556. package/dist/knowledge/adapters/index.js +71 -0
  557. package/dist/knowledge/adapters/index.js.map +1 -0
  558. package/dist/knowledge/adapters/java-adapter.d.ts +66 -0
  559. package/dist/knowledge/adapters/java-adapter.d.ts.map +1 -0
  560. package/dist/knowledge/adapters/java-adapter.js +260 -0
  561. package/dist/knowledge/adapters/java-adapter.js.map +1 -0
  562. package/dist/knowledge/adapters/js-vue-adapter.d.ts +56 -0
  563. package/dist/knowledge/adapters/js-vue-adapter.d.ts.map +1 -0
  564. package/dist/knowledge/adapters/js-vue-adapter.js +203 -0
  565. package/dist/knowledge/adapters/js-vue-adapter.js.map +1 -0
  566. package/dist/knowledge/adapters/kotlin-adapter.d.ts +55 -0
  567. package/dist/knowledge/adapters/kotlin-adapter.d.ts.map +1 -0
  568. package/dist/knowledge/adapters/kotlin-adapter.js +209 -0
  569. package/dist/knowledge/adapters/kotlin-adapter.js.map +1 -0
  570. package/dist/knowledge/adapters/monorepo-adapter.d.ts +77 -0
  571. package/dist/knowledge/adapters/monorepo-adapter.d.ts.map +1 -0
  572. package/dist/knowledge/adapters/monorepo-adapter.js +170 -0
  573. package/dist/knowledge/adapters/monorepo-adapter.js.map +1 -0
  574. package/dist/knowledge/adapters/python-adapter.d.ts +89 -0
  575. package/dist/knowledge/adapters/python-adapter.d.ts.map +1 -0
  576. package/dist/knowledge/adapters/python-adapter.js +358 -0
  577. package/dist/knowledge/adapters/python-adapter.js.map +1 -0
  578. package/dist/knowledge/adapters/rust-adapter.d.ts +73 -0
  579. package/dist/knowledge/adapters/rust-adapter.d.ts.map +1 -0
  580. package/dist/knowledge/adapters/rust-adapter.js +329 -0
  581. package/dist/knowledge/adapters/rust-adapter.js.map +1 -0
  582. package/dist/knowledge/adapters/types.d.ts +99 -0
  583. package/dist/knowledge/adapters/types.d.ts.map +1 -0
  584. package/dist/knowledge/adapters/types.js +17 -0
  585. package/dist/knowledge/adapters/types.js.map +1 -0
  586. package/dist/knowledge/adapters/typescript-adapter.d.ts +57 -0
  587. package/dist/knowledge/adapters/typescript-adapter.d.ts.map +1 -0
  588. package/dist/knowledge/adapters/typescript-adapter.js +171 -0
  589. package/dist/knowledge/adapters/typescript-adapter.js.map +1 -0
  590. package/dist/knowledge/audit-applier.d.ts +70 -0
  591. package/dist/knowledge/audit-applier.d.ts.map +1 -0
  592. package/dist/knowledge/audit-applier.js +251 -0
  593. package/dist/knowledge/audit-applier.js.map +1 -0
  594. package/dist/knowledge/builder.d.ts +261 -0
  595. package/dist/knowledge/builder.d.ts.map +1 -0
  596. package/dist/knowledge/builder.js +966 -0
  597. package/dist/knowledge/builder.js.map +1 -0
  598. package/dist/knowledge/cli-provider.d.ts +151 -0
  599. package/dist/knowledge/cli-provider.d.ts.map +1 -0
  600. package/dist/knowledge/cli-provider.js +313 -0
  601. package/dist/knowledge/cli-provider.js.map +1 -0
  602. package/dist/knowledge/constants.d.ts +78 -0
  603. package/dist/knowledge/constants.d.ts.map +1 -0
  604. package/dist/knowledge/constants.js +98 -0
  605. package/dist/knowledge/constants.js.map +1 -0
  606. package/dist/knowledge/cross-module.d.ts +139 -0
  607. package/dist/knowledge/cross-module.d.ts.map +1 -0
  608. package/dist/knowledge/cross-module.js +370 -0
  609. package/dist/knowledge/cross-module.js.map +1 -0
  610. package/dist/knowledge/git-hooks.d.ts +67 -0
  611. package/dist/knowledge/git-hooks.d.ts.map +1 -0
  612. package/dist/knowledge/git-hooks.js +258 -0
  613. package/dist/knowledge/git-hooks.js.map +1 -0
  614. package/dist/knowledge/graph/edge-extractor.d.ts +45 -0
  615. package/dist/knowledge/graph/edge-extractor.d.ts.map +1 -0
  616. package/dist/knowledge/graph/edge-extractor.js +242 -0
  617. package/dist/knowledge/graph/edge-extractor.js.map +1 -0
  618. package/dist/knowledge/graph/impact.d.ts +73 -0
  619. package/dist/knowledge/graph/impact.d.ts.map +1 -0
  620. package/dist/knowledge/graph/impact.js +94 -0
  621. package/dist/knowledge/graph/impact.js.map +1 -0
  622. package/dist/knowledge/graph/types.d.ts +22 -0
  623. package/dist/knowledge/graph/types.d.ts.map +1 -0
  624. package/dist/knowledge/graph/types.js +13 -0
  625. package/dist/knowledge/graph/types.js.map +1 -0
  626. package/dist/knowledge/module-hash.d.ts +88 -0
  627. package/dist/knowledge/module-hash.d.ts.map +1 -0
  628. package/dist/knowledge/module-hash.js +162 -0
  629. package/dist/knowledge/module-hash.js.map +1 -0
  630. package/dist/knowledge/project-detector.d.ts +101 -0
  631. package/dist/knowledge/project-detector.d.ts.map +1 -0
  632. package/dist/knowledge/project-detector.js +223 -0
  633. package/dist/knowledge/project-detector.js.map +1 -0
  634. package/dist/knowledge/prompt.d.ts +237 -0
  635. package/dist/knowledge/prompt.d.ts.map +1 -0
  636. package/dist/knowledge/prompt.js +416 -0
  637. package/dist/knowledge/prompt.js.map +1 -0
  638. package/dist/knowledge/query.d.ts +118 -0
  639. package/dist/knowledge/query.d.ts.map +1 -0
  640. package/dist/knowledge/query.js +438 -0
  641. package/dist/knowledge/query.js.map +1 -0
  642. package/dist/knowledge/repo-map.d.ts +97 -0
  643. package/dist/knowledge/repo-map.d.ts.map +1 -0
  644. package/dist/knowledge/repo-map.js +447 -0
  645. package/dist/knowledge/repo-map.js.map +1 -0
  646. package/dist/knowledge/tools/index.d.ts +14 -0
  647. package/dist/knowledge/tools/index.d.ts.map +1 -0
  648. package/dist/knowledge/tools/index.js +11 -0
  649. package/dist/knowledge/tools/index.js.map +1 -0
  650. package/dist/knowledge/tools/knowledge-get-page.d.ts +46 -0
  651. package/dist/knowledge/tools/knowledge-get-page.d.ts.map +1 -0
  652. package/dist/knowledge/tools/knowledge-get-page.js +101 -0
  653. package/dist/knowledge/tools/knowledge-get-page.js.map +1 -0
  654. package/dist/knowledge/tools/knowledge-query.d.ts +77 -0
  655. package/dist/knowledge/tools/knowledge-query.d.ts.map +1 -0
  656. package/dist/knowledge/tools/knowledge-query.js +104 -0
  657. package/dist/knowledge/tools/knowledge-query.js.map +1 -0
  658. package/dist/knowledge/tools/repo-map-lookup.d.ts +45 -0
  659. package/dist/knowledge/tools/repo-map-lookup.d.ts.map +1 -0
  660. package/dist/knowledge/tools/repo-map-lookup.js +82 -0
  661. package/dist/knowledge/tools/repo-map-lookup.js.map +1 -0
  662. package/dist/knowledge/types.d.ts +269 -0
  663. package/dist/knowledge/types.d.ts.map +1 -0
  664. package/dist/knowledge/types.js +10 -0
  665. package/dist/knowledge/types.js.map +1 -0
  666. package/dist/knowledge/validator.d.ts +90 -0
  667. package/dist/knowledge/validator.d.ts.map +1 -0
  668. package/dist/knowledge/validator.js +355 -0
  669. package/dist/knowledge/validator.js.map +1 -0
  670. package/dist/mcp/server.d.ts +64 -8
  671. package/dist/mcp/server.d.ts.map +1 -1
  672. package/dist/mcp/server.js +448 -12
  673. package/dist/mcp/server.js.map +1 -1
  674. package/dist/skills/builtin-skills.d.ts +35 -0
  675. package/dist/skills/builtin-skills.d.ts.map +1 -0
  676. package/dist/skills/builtin-skills.js +68 -0
  677. package/dist/skills/builtin-skills.js.map +1 -0
  678. package/dist/skills/distill/attribution.d.ts +59 -0
  679. package/dist/skills/distill/attribution.d.ts.map +1 -0
  680. package/dist/skills/distill/attribution.js +101 -0
  681. package/dist/skills/distill/attribution.js.map +1 -0
  682. package/dist/skills/distill/distiller.d.ts +161 -0
  683. package/dist/skills/distill/distiller.d.ts.map +1 -0
  684. package/dist/skills/distill/distiller.js +461 -0
  685. package/dist/skills/distill/distiller.js.map +1 -0
  686. package/dist/skills/distill/index.d.ts +223 -0
  687. package/dist/skills/distill/index.d.ts.map +1 -0
  688. package/dist/skills/distill/index.js +466 -0
  689. package/dist/skills/distill/index.js.map +1 -0
  690. package/dist/skills/distill/project-anchor-guard.d.ts +116 -0
  691. package/dist/skills/distill/project-anchor-guard.d.ts.map +1 -0
  692. package/dist/skills/distill/project-anchor-guard.js +334 -0
  693. package/dist/skills/distill/project-anchor-guard.js.map +1 -0
  694. package/dist/skills/distill/topic-deduper.d.ts +77 -0
  695. package/dist/skills/distill/topic-deduper.d.ts.map +1 -0
  696. package/dist/skills/distill/topic-deduper.js +119 -0
  697. package/dist/skills/distill/topic-deduper.js.map +1 -0
  698. package/dist/skills/distill/upstream-fetcher.d.ts +71 -0
  699. package/dist/skills/distill/upstream-fetcher.d.ts.map +1 -0
  700. package/dist/skills/distill/upstream-fetcher.js +202 -0
  701. package/dist/skills/distill/upstream-fetcher.js.map +1 -0
  702. package/dist/skills/distilled/distilled-api-design.md +495 -0
  703. package/dist/skills/distilled/distilled-architecture-decision.md +173 -0
  704. package/dist/skills/distilled/distilled-brainstorming.md +79 -0
  705. package/dist/skills/distilled/distilled-brand-guidelines.md +86 -0
  706. package/dist/skills/distilled/distilled-canvas-design.md +128 -0
  707. package/dist/skills/distilled/distilled-claude-api.md +185 -0
  708. package/dist/skills/distilled/distilled-creator.md +181 -0
  709. package/dist/skills/distilled/distilled-db-schema-design.md +245 -0
  710. package/dist/skills/distilled/distilled-dispatching-parallel-agents.md +136 -0
  711. package/dist/skills/distilled/distilled-doc-coauthoring.md +144 -0
  712. package/dist/skills/distilled/distilled-docx.md +231 -0
  713. package/dist/skills/distilled/distilled-executing-plans.md +148 -0
  714. package/dist/skills/distilled/distilled-finishing-a-development-branch.md +213 -0
  715. package/dist/skills/distilled/distilled-frontend-design.md +118 -0
  716. package/dist/skills/distilled/distilled-harness-engineering.md +242 -0
  717. package/dist/skills/distilled/distilled-karpathy-guidelines.md +104 -0
  718. package/dist/skills/distilled/distilled-performance-optimization.md +175 -0
  719. package/dist/skills/distilled/distilled-receiving-code-review.md +185 -0
  720. package/dist/skills/distilled/distilled-spec-driven-design.md +193 -0
  721. package/dist/skills/distilled/distilled-subagent-driven-development.md +124 -0
  722. package/dist/skills/distilled/distilled-systematic-debugging.md +154 -0
  723. package/dist/skills/distilled/distilled-test-driven-development.md +432 -0
  724. package/dist/skills/distilled/distilled-using-superpowers.md +134 -0
  725. package/dist/skills/distilled/distilled-verification-before-completion.md +213 -0
  726. package/dist/skills/distilled/distilled-writing-skills.md +175 -0
  727. package/dist/skills/registry.d.ts +55 -51
  728. package/dist/skills/registry.d.ts.map +1 -1
  729. package/dist/skills/registry.js +82 -196
  730. package/dist/skills/registry.js.map +1 -1
  731. package/dist/skills/tools/pipeline-suggest.js +14 -14
  732. package/dist/skills/tools/pipeline-suggest.js.map +1 -1
  733. package/dist/skills/tools/skill-invoke.d.ts +3 -2
  734. package/dist/skills/tools/skill-invoke.d.ts.map +1 -1
  735. package/dist/skills/tools/skill-invoke.js +4 -2
  736. package/dist/skills/tools/skill-invoke.js.map +1 -1
  737. package/dist/web/analytics/anti-pattern-detector.d.ts.map +1 -1
  738. package/dist/web/analytics/anti-pattern-detector.js +6 -1
  739. package/dist/web/analytics/anti-pattern-detector.js.map +1 -1
  740. package/dist/web/analytics/drift-detector.d.ts +6 -0
  741. package/dist/web/analytics/drift-detector.d.ts.map +1 -1
  742. package/dist/web/analytics/drift-detector.js +15 -8
  743. package/dist/web/analytics/drift-detector.js.map +1 -1
  744. package/dist/web/analytics/weekly-report.d.ts +13 -0
  745. package/dist/web/analytics/weekly-report.d.ts.map +1 -1
  746. package/dist/web/analytics/weekly-report.js +17 -3
  747. package/dist/web/analytics/weekly-report.js.map +1 -1
  748. package/dist/web/routes/_helpers.d.ts +31 -0
  749. package/dist/web/routes/_helpers.d.ts.map +1 -1
  750. package/dist/web/routes/_helpers.js +33 -0
  751. package/dist/web/routes/_helpers.js.map +1 -1
  752. package/dist/web/routes/agent-content.d.ts +30 -0
  753. package/dist/web/routes/agent-content.d.ts.map +1 -0
  754. package/dist/web/routes/agent-content.js +139 -0
  755. package/dist/web/routes/agent-content.js.map +1 -0
  756. package/dist/web/routes/agent-distill.d.ts +49 -0
  757. package/dist/web/routes/agent-distill.d.ts.map +1 -0
  758. package/dist/web/routes/agent-distill.js +526 -0
  759. package/dist/web/routes/agent-distill.js.map +1 -0
  760. package/dist/web/routes/config.d.ts +56 -0
  761. package/dist/web/routes/config.d.ts.map +1 -0
  762. package/dist/web/routes/config.js +243 -0
  763. package/dist/web/routes/config.js.map +1 -0
  764. package/dist/web/routes/decisions.d.ts +15 -0
  765. package/dist/web/routes/decisions.d.ts.map +1 -0
  766. package/dist/web/routes/decisions.js +181 -0
  767. package/dist/web/routes/decisions.js.map +1 -0
  768. package/dist/web/routes/diagnostics.d.ts +61 -0
  769. package/dist/web/routes/diagnostics.d.ts.map +1 -0
  770. package/dist/web/routes/diagnostics.js +203 -0
  771. package/dist/web/routes/diagnostics.js.map +1 -0
  772. package/dist/web/routes/error-handler.d.ts +0 -4
  773. package/dist/web/routes/error-handler.d.ts.map +1 -1
  774. package/dist/web/routes/error-handler.js +0 -8
  775. package/dist/web/routes/error-handler.js.map +1 -1
  776. package/dist/web/routes/events.d.ts.map +1 -1
  777. package/dist/web/routes/events.js +26 -1
  778. package/dist/web/routes/events.js.map +1 -1
  779. package/dist/web/routes/health.d.ts +33 -0
  780. package/dist/web/routes/health.d.ts.map +1 -0
  781. package/dist/web/routes/health.js +37 -0
  782. package/dist/web/routes/health.js.map +1 -0
  783. package/dist/web/routes/insights.d.ts +0 -5
  784. package/dist/web/routes/insights.d.ts.map +1 -1
  785. package/dist/web/routes/insights.js +0 -0
  786. package/dist/web/routes/insights.js.map +1 -1
  787. package/dist/web/routes/knowledge.d.ts +57 -0
  788. package/dist/web/routes/knowledge.d.ts.map +1 -0
  789. package/dist/web/routes/knowledge.js +772 -0
  790. package/dist/web/routes/knowledge.js.map +1 -0
  791. package/dist/web/routes/patch.d.ts +60 -1
  792. package/dist/web/routes/patch.d.ts.map +1 -1
  793. package/dist/web/routes/patch.js +170 -64
  794. package/dist/web/routes/patch.js.map +1 -1
  795. package/dist/web/routes/pipeline.d.ts +28 -0
  796. package/dist/web/routes/pipeline.d.ts.map +1 -0
  797. package/dist/web/routes/pipeline.js +145 -0
  798. package/dist/web/routes/pipeline.js.map +1 -0
  799. package/dist/web/routes/rules.d.ts.map +1 -1
  800. package/dist/web/routes/rules.js +26 -7
  801. package/dist/web/routes/rules.js.map +1 -1
  802. package/dist/web/routes/sessions.d.ts.map +1 -1
  803. package/dist/web/routes/sessions.js +17 -8
  804. package/dist/web/routes/sessions.js.map +1 -1
  805. package/dist/web/routes/skill-content.d.ts +30 -0
  806. package/dist/web/routes/skill-content.d.ts.map +1 -0
  807. package/dist/web/routes/skill-content.js +117 -0
  808. package/dist/web/routes/skill-content.js.map +1 -0
  809. package/dist/web/routes/skill-stats.d.ts.map +1 -1
  810. package/dist/web/routes/skill-stats.js +153 -16
  811. package/dist/web/routes/skill-stats.js.map +1 -1
  812. package/dist/web/routes/skills-distill.d.ts +29 -0
  813. package/dist/web/routes/skills-distill.d.ts.map +1 -0
  814. package/dist/web/routes/skills-distill.js +552 -0
  815. package/dist/web/routes/skills-distill.js.map +1 -0
  816. package/dist/web/routes/skills.js +7 -7
  817. package/dist/web/routes/skills.js.map +1 -1
  818. package/dist/web/routes/stats.d.ts.map +1 -1
  819. package/dist/web/routes/stats.js +2 -1
  820. package/dist/web/routes/stats.js.map +1 -1
  821. package/dist/web/routes/task-timeline.d.ts +178 -0
  822. package/dist/web/routes/task-timeline.d.ts.map +1 -0
  823. package/dist/web/routes/task-timeline.js +530 -0
  824. package/dist/web/routes/task-timeline.js.map +1 -0
  825. package/dist/web/routes/tasks.d.ts.map +1 -1
  826. package/dist/web/routes/tasks.js +377 -8
  827. package/dist/web/routes/tasks.js.map +1 -1
  828. package/dist/web/routes/trace.d.ts.map +1 -1
  829. package/dist/web/routes/trace.js +3 -2
  830. package/dist/web/routes/trace.js.map +1 -1
  831. package/dist/web/routes/types.d.ts +0 -4
  832. package/dist/web/routes/types.d.ts.map +1 -1
  833. package/dist/web/routes/types.js +1 -1
  834. package/dist/web/routes/types.js.map +1 -1
  835. package/dist/web/routes/violations.d.ts +14 -0
  836. package/dist/web/routes/violations.d.ts.map +1 -0
  837. package/dist/web/routes/violations.js +112 -0
  838. package/dist/web/routes/violations.js.map +1 -0
  839. package/dist/web/server.d.ts.map +1 -1
  840. package/dist/web/server.js +99 -19
  841. package/dist/web/server.js.map +1 -1
  842. package/dist/web/services/agent-distill-manager.d.ts +122 -0
  843. package/dist/web/services/agent-distill-manager.d.ts.map +1 -0
  844. package/dist/web/services/agent-distill-manager.js +397 -0
  845. package/dist/web/services/agent-distill-manager.js.map +1 -0
  846. package/dist/web/services/build-manager.d.ts +72 -0
  847. package/dist/web/services/build-manager.d.ts.map +1 -0
  848. package/dist/web/services/build-manager.js +189 -0
  849. package/dist/web/services/build-manager.js.map +1 -0
  850. package/dist/web/services/distill-manager.d.ts +172 -0
  851. package/dist/web/services/distill-manager.d.ts.map +1 -0
  852. package/dist/web/services/distill-manager.js +411 -0
  853. package/dist/web/services/distill-manager.js.map +1 -0
  854. package/dist/web/static/assets/AgentDetailPage-DlUeA1sX.js +2 -0
  855. package/dist/web/static/assets/AgentDetailPage-DlUeA1sX.js.map +1 -0
  856. package/dist/web/static/assets/AgentDistillRunPage-Cybo4bii.js +3 -0
  857. package/dist/web/static/assets/AgentDistillRunPage-Cybo4bii.js.map +1 -0
  858. package/dist/web/static/assets/AgentsPage-Qd9FExLG.js +2 -0
  859. package/dist/web/static/assets/AgentsPage-Qd9FExLG.js.map +1 -0
  860. package/dist/web/static/assets/DaemonHealthPage-DTSVqtrI.js +2 -0
  861. package/dist/web/static/assets/DaemonHealthPage-DTSVqtrI.js.map +1 -0
  862. package/dist/web/static/assets/DecisionDetailPage-b4BA8dhc.js +2 -0
  863. package/dist/web/static/assets/DecisionDetailPage-b4BA8dhc.js.map +1 -0
  864. package/dist/web/static/assets/DecisionsPage-a3NRo_T7.js +2 -0
  865. package/dist/web/static/assets/DecisionsPage-a3NRo_T7.js.map +1 -0
  866. package/dist/web/static/assets/DiagnosticsPage-DIVdiIQG.js +2 -0
  867. package/dist/web/static/assets/DiagnosticsPage-DIVdiIQG.js.map +1 -0
  868. package/dist/web/static/assets/DistillDetailPage-U6a3l2iP.js +4 -0
  869. package/dist/web/static/assets/DistillDetailPage-U6a3l2iP.js.map +1 -0
  870. package/dist/web/static/assets/DistillPage-O7BHtRN8.js +2 -0
  871. package/dist/web/static/assets/DistillPage-O7BHtRN8.js.map +1 -0
  872. package/dist/web/static/assets/DistillRunPage-D1JuRWWr.js +2 -0
  873. package/dist/web/static/assets/DistillRunPage-D1JuRWWr.js.map +1 -0
  874. package/dist/web/static/assets/GlobalScopeHint-Q3wTJx3F.js +2 -0
  875. package/dist/web/static/assets/GlobalScopeHint-Q3wTJx3F.js.map +1 -0
  876. package/dist/web/static/assets/IssueDetailPage-BDfrtk2C.js +2 -0
  877. package/dist/web/static/assets/IssueDetailPage-BDfrtk2C.js.map +1 -0
  878. package/dist/web/static/assets/IssuesPage-SKmhlCrw.js +2 -0
  879. package/dist/web/static/assets/IssuesPage-SKmhlCrw.js.map +1 -0
  880. package/dist/web/static/assets/KbDetailPage-Yna86Na8.js +2 -0
  881. package/dist/web/static/assets/KbDetailPage-Yna86Na8.js.map +1 -0
  882. package/dist/web/static/assets/KbHitsPage-Cljl7H9p.js +2 -0
  883. package/dist/web/static/assets/KbHitsPage-Cljl7H9p.js.map +1 -0
  884. package/dist/web/static/assets/MarkdownRenderer-DlDQNihj.js +3 -0
  885. package/dist/web/static/assets/MarkdownRenderer-DlDQNihj.js.map +1 -0
  886. package/dist/web/static/assets/NotFound-LMzbP51V.js +2 -0
  887. package/dist/web/static/assets/NotFound-LMzbP51V.js.map +1 -0
  888. package/dist/web/static/assets/SettingsPage-DzoK4PKg.js +2 -0
  889. package/dist/web/static/assets/SettingsPage-DzoK4PKg.js.map +1 -0
  890. package/dist/web/static/assets/SkillDetailPage-BuBJJ_NX.js +2 -0
  891. package/dist/web/static/assets/SkillDetailPage-BuBJJ_NX.js.map +1 -0
  892. package/dist/web/static/assets/SkillsPage-aojkJpBc.js +2 -0
  893. package/dist/web/static/assets/SkillsPage-aojkJpBc.js.map +1 -0
  894. package/dist/web/static/assets/TaskDetailPage-1ckxnGhw.js +4 -0
  895. package/dist/web/static/assets/TaskDetailPage-1ckxnGhw.js.map +1 -0
  896. package/dist/web/static/assets/TasksHubPage-C2PLh3eg.js +6 -0
  897. package/dist/web/static/assets/TasksHubPage-C2PLh3eg.js.map +1 -0
  898. package/dist/web/static/assets/WorkplacePage-DHrp5VxS.js +2 -0
  899. package/dist/web/static/assets/WorkplacePage-DHrp5VxS.js.map +1 -0
  900. package/dist/web/static/assets/arco-DFQA6dO_.css +1 -0
  901. package/dist/web/static/assets/arco-DV6xCLhr.js +14 -0
  902. package/dist/web/static/assets/arco-DV6xCLhr.js.map +1 -0
  903. package/dist/web/static/assets/charts-BSV4cyC4.js +37 -0
  904. package/dist/web/static/assets/charts-BSV4cyC4.js.map +1 -0
  905. package/dist/web/static/assets/date-fns-sbWH3_uq.js +2 -0
  906. package/dist/web/static/assets/date-fns-sbWH3_uq.js.map +1 -0
  907. package/dist/web/static/assets/index-B_v_MKlb.css +1 -0
  908. package/dist/web/static/assets/index-DileOOE4.js +4 -0
  909. package/dist/web/static/assets/index-DileOOE4.js.map +1 -0
  910. package/dist/web/static/assets/lucide-CnlPQoG8.js +72 -0
  911. package/dist/web/static/assets/lucide-CnlPQoG8.js.map +1 -0
  912. package/dist/web/static/assets/markdown-CA7ePUts.js +30 -0
  913. package/dist/web/static/assets/markdown-CA7ePUts.js.map +1 -0
  914. package/dist/web/static/assets/outcome-BKGy9azt.js +2 -0
  915. package/dist/web/static/assets/outcome-BKGy9azt.js.map +1 -0
  916. package/dist/web/static/assets/query-CgCOpYWf.js +2 -0
  917. package/dist/web/static/assets/{query-C99w429o.js.map → query-CgCOpYWf.js.map} +1 -1
  918. package/dist/web/static/assets/{react-router-r79dBVy4.js → react-router-Cxmg8RuL.js} +3 -3
  919. package/dist/web/static/assets/{react-router-r79dBVy4.js.map → react-router-Cxmg8RuL.js.map} +1 -1
  920. package/dist/web/static/assets/react-vendor-tkvCrao7.js +57 -0
  921. package/dist/web/static/assets/react-vendor-tkvCrao7.js.map +1 -0
  922. package/dist/web/static/assets/syntax-highlighter-BDYycNja.js +6 -0
  923. package/dist/web/static/assets/syntax-highlighter-BDYycNja.js.map +1 -0
  924. package/dist/web/static/assets/useAgentStats-B-uTgqBd.js +2 -0
  925. package/dist/web/static/assets/useAgentStats-B-uTgqBd.js.map +1 -0
  926. package/dist/web/static/assets/useDecisions-D-G2Ft5T.js +2 -0
  927. package/dist/web/static/assets/useDecisions-D-G2Ft5T.js.map +1 -0
  928. package/dist/web/static/assets/useDistill-21dZkXlT.js +3 -0
  929. package/dist/web/static/assets/useDistill-21dZkXlT.js.map +1 -0
  930. package/dist/web/static/assets/useEffectiveProject-DQiyX54y.js +2 -0
  931. package/dist/web/static/assets/useEffectiveProject-DQiyX54y.js.map +1 -0
  932. package/dist/web/static/assets/useIssuesFeed-CFiyQkAL.js +2 -0
  933. package/dist/web/static/assets/useIssuesFeed-CFiyQkAL.js.map +1 -0
  934. package/dist/web/static/assets/useKbHits-xKXWgqh9.js +2 -0
  935. package/dist/web/static/assets/useKbHits-xKXWgqh9.js.map +1 -0
  936. package/dist/web/static/assets/useSkillStats-B5hbIwdf.js +2 -0
  937. package/dist/web/static/assets/useSkillStats-B5hbIwdf.js.map +1 -0
  938. package/dist/web/static/assets/vendor-DS-q4Eyc.js +36 -0
  939. package/dist/web/static/assets/vendor-DS-q4Eyc.js.map +1 -0
  940. package/dist/web/static/index.html +12 -8
  941. package/package.json +18 -5
  942. package/dist/core/ai/provider.d.ts +0 -63
  943. package/dist/core/ai/provider.d.ts.map +0 -1
  944. package/dist/core/ai/provider.js +0 -241
  945. package/dist/core/ai/provider.js.map +0 -1
  946. package/dist/core/ai/types.d.ts +0 -43
  947. package/dist/core/ai/types.d.ts.map +0 -1
  948. package/dist/core/ai/types.js +0 -5
  949. package/dist/core/ai/types.js.map +0 -1
  950. package/dist/core/storage/token-usage.d.ts +0 -36
  951. package/dist/core/storage/token-usage.d.ts.map +0 -1
  952. package/dist/core/storage/token-usage.js +0 -59
  953. package/dist/core/storage/token-usage.js.map +0 -1
  954. package/dist/core/utils/token-tracker.d.ts +0 -39
  955. package/dist/core/utils/token-tracker.d.ts.map +0 -1
  956. package/dist/core/utils/token-tracker.js +0 -69
  957. package/dist/core/utils/token-tracker.js.map +0 -1
  958. package/dist/skills/index.d.ts +0 -3
  959. package/dist/skills/index.d.ts.map +0 -1
  960. package/dist/skills/index.js +0 -3
  961. package/dist/skills/index.js.map +0 -1
  962. package/dist/skills/matcher.d.ts +0 -26
  963. package/dist/skills/matcher.d.ts.map +0 -1
  964. package/dist/skills/matcher.js +0 -113
  965. package/dist/skills/matcher.js.map +0 -1
  966. package/dist/skills/official/code-simplifier.md +0 -52
  967. package/dist/skills/official/find-skills.md +0 -142
  968. package/dist/skills/official/official-api-design.md +0 -30
  969. package/dist/skills/official/official-architecture-decision.md +0 -41
  970. package/dist/skills/official/official-bmad.md +0 -118
  971. package/dist/skills/official/official-db-schema-design.md +0 -34
  972. package/dist/skills/official/official-debug.md +0 -25
  973. package/dist/skills/official/official-doc-driven.md +0 -31
  974. package/dist/skills/official/official-harness-engineering.md +0 -108
  975. package/dist/skills/official/official-openspec.md +0 -89
  976. package/dist/skills/official/official-performance-optimization.md +0 -30
  977. package/dist/skills/official/official-pr-review.md +0 -35
  978. package/dist/skills/official/official-release-checklist.md +0 -30
  979. package/dist/skills/official/official-security-hardening.md +0 -32
  980. package/dist/skills/official/official-spec-driven-design.md +0 -31
  981. package/dist/skills/official/planning-with-files.md +0 -241
  982. package/dist/skills/official/ui-ux-pro-max.md +0 -105
  983. package/dist/skills/official/webapp-testing.md +0 -96
  984. package/dist/skills/official-skills.d.ts +0 -26
  985. package/dist/skills/official-skills.d.ts.map +0 -1
  986. package/dist/skills/official-skills.js +0 -74
  987. package/dist/skills/official-skills.js.map +0 -1
  988. package/dist/skills/semantic-matcher.d.ts +0 -60
  989. package/dist/skills/semantic-matcher.d.ts.map +0 -1
  990. package/dist/skills/semantic-matcher.js +0 -192
  991. package/dist/skills/semantic-matcher.js.map +0 -1
  992. package/dist/skills/upgrade-engine.d.ts +0 -93
  993. package/dist/skills/upgrade-engine.d.ts.map +0 -1
  994. package/dist/skills/upgrade-engine.js +0 -447
  995. package/dist/skills/upgrade-engine.js.map +0 -1
  996. package/dist/skills/upgrade-prompt.d.ts +0 -20
  997. package/dist/skills/upgrade-prompt.d.ts.map +0 -1
  998. package/dist/skills/upgrade-prompt.js +0 -75
  999. package/dist/skills/upgrade-prompt.js.map +0 -1
  1000. package/dist/web/routes/ai.d.ts +0 -10
  1001. package/dist/web/routes/ai.d.ts.map +0 -1
  1002. package/dist/web/routes/ai.js +0 -186
  1003. package/dist/web/routes/ai.js.map +0 -1
  1004. package/dist/web/routes/token-usage.d.ts +0 -7
  1005. package/dist/web/routes/token-usage.d.ts.map +0 -1
  1006. package/dist/web/routes/token-usage.js +0 -18
  1007. package/dist/web/routes/token-usage.js.map +0 -1
  1008. package/dist/web/ssrf-guard.d.ts +0 -35
  1009. package/dist/web/ssrf-guard.d.ts.map +0 -1
  1010. package/dist/web/ssrf-guard.js +0 -93
  1011. package/dist/web/ssrf-guard.js.map +0 -1
  1012. package/dist/web/static/assets/AIConfig-CdDWzJyO.js +0 -2
  1013. package/dist/web/static/assets/AIConfig-CdDWzJyO.js.map +0 -1
  1014. package/dist/web/static/assets/Dashboard-CoEmmIDt.js +0 -2
  1015. package/dist/web/static/assets/Dashboard-CoEmmIDt.js.map +0 -1
  1016. package/dist/web/static/assets/Drawer-DdRTzlLB.js +0 -2
  1017. package/dist/web/static/assets/Drawer-DdRTzlLB.js.map +0 -1
  1018. package/dist/web/static/assets/Events-DrIq1SUS.js +0 -2
  1019. package/dist/web/static/assets/Events-DrIq1SUS.js.map +0 -1
  1020. package/dist/web/static/assets/Reports-DFBM3MDK.js +0 -2
  1021. package/dist/web/static/assets/Reports-DFBM3MDK.js.map +0 -1
  1022. package/dist/web/static/assets/SearchInput-qCj_jAcf.js +0 -2
  1023. package/dist/web/static/assets/SearchInput-qCj_jAcf.js.map +0 -1
  1024. package/dist/web/static/assets/SessionDetail-CCzwdoT7.js +0 -2
  1025. package/dist/web/static/assets/SessionDetail-CCzwdoT7.js.map +0 -1
  1026. package/dist/web/static/assets/Sessions-FfLYkAw9.js +0 -2
  1027. package/dist/web/static/assets/Sessions-FfLYkAw9.js.map +0 -1
  1028. package/dist/web/static/assets/Skills-C8Gvs3Qa.js +0 -2
  1029. package/dist/web/static/assets/Skills-C8Gvs3Qa.js.map +0 -1
  1030. package/dist/web/static/assets/TaskDetail-BS8pYhaR.js +0 -2
  1031. package/dist/web/static/assets/TaskDetail-BS8pYhaR.js.map +0 -1
  1032. package/dist/web/static/assets/Tasks-CyuhizG8.js +0 -2
  1033. package/dist/web/static/assets/Tasks-CyuhizG8.js.map +0 -1
  1034. package/dist/web/static/assets/charts-CLrM0_uM.js +0 -37
  1035. package/dist/web/static/assets/charts-CLrM0_uM.js.map +0 -1
  1036. package/dist/web/static/assets/date-fns-CZ_bHujz.js +0 -2
  1037. package/dist/web/static/assets/date-fns-CZ_bHujz.js.map +0 -1
  1038. package/dist/web/static/assets/export-L_VBD2p1.js +0 -4
  1039. package/dist/web/static/assets/export-L_VBD2p1.js.map +0 -1
  1040. package/dist/web/static/assets/index-CBX47X8l.js +0 -3
  1041. package/dist/web/static/assets/index-CBX47X8l.js.map +0 -1
  1042. package/dist/web/static/assets/index-DjIoMdoR.css +0 -1
  1043. package/dist/web/static/assets/lucide-Bs_edTLa.js +0 -232
  1044. package/dist/web/static/assets/lucide-Bs_edTLa.js.map +0 -1
  1045. package/dist/web/static/assets/query-C99w429o.js +0 -2
  1046. package/dist/web/static/assets/react-vendor-CSp-GLFF.js +0 -49
  1047. package/dist/web/static/assets/react-vendor-CSp-GLFF.js.map +0 -1
  1048. package/dist/web/static/assets/syntax-highlighter-44FakypI.js +0 -9
  1049. package/dist/web/static/assets/syntax-highlighter-44FakypI.js.map +0 -1
  1050. package/dist/web/static/assets/time-Bxuk0M-C.js +0 -2
  1051. package/dist/web/static/assets/time-Bxuk0M-C.js.map +0 -1
  1052. package/dist/web/static/assets/vendor-CMMjVdZs.js +0 -64
  1053. package/dist/web/static/assets/vendor-CMMjVdZs.js.map +0 -1
@@ -3,16 +3,95 @@ import { logger } from '../../core/utils/logger.js';
3
3
  import { timestampToMs } from '../../core/utils/time.js';
4
4
  import { truncateSessionId } from '../../core/utils/session.js';
5
5
  import { truncateString } from '../../core/utils/format.js';
6
+ import { isNoisePrompt, classifyPromptKind } from '../../core/utils/noise-prompt.js';
6
7
  const NEW_TASK_KEYWORDS = [
7
8
  '帮我', '实现', '修复', '添加', '重构', '优化', '创建', '删除',
8
9
  '升级', '迁移', '部署', '配置', '设计', '提交', '推送',
9
10
  'fix', 'add', 'implement', 'refactor', 'create', 'delete', 'deploy',
10
11
  ];
11
- const CONTINUE_KEYWORDS = [
12
- '继续', '然后', '还有', '另外', '这个', '那个', '它',
13
- '对', '好的', '可以', '是的', '不是', '不对', '改一下',
12
+ /**
13
+ * decision c6613590 P0 缺陷 A: continuation/ack tokens — the SINGLE source of
14
+ * truth for "is this prompt a pure continuation/ack?", consumed by
15
+ * {@link isContinuationPrompt}, which in turn is used by BOTH the smart-window
16
+ * resume gate (processPrompt) AND the active-task boundary (shouldStartNewTask).
17
+ *
18
+ * This deliberately TIGHT list replaces the retired `CONTINUE_KEYWORDS` table:
19
+ * the easily-collided substrings ('这个'/'那个'/'它'/'不是'/'不对') are REMOVED
20
+ * because they fire inside ordinary questions:
21
+ * • "现在全链路是不是都顺了?" contains '不是'
22
+ * • "这个任务怎么又丢了?" contains '这个'
23
+ * Those are NEW questions, not continuations, yet the old substring match
24
+ * resumed a stale task and merged them in. The resume gate now also requires
25
+ * the prompt to be SHORT and ack-dominated (see isContinuationPrompt) so a
26
+ * long sentence that merely happens to contain '好的'/'可以' isn't swallowed.
27
+ */
28
+ const ACK_CONTINUE_KEYWORDS = [
29
+ '继续', '然后', '还有', '另外',
30
+ '好的', '可以', '是的', '对', '改一下',
31
+ 'ok', 'go', 'yes', 'continue', '批准', '同意',
14
32
  ];
15
- const TASK_SWITCH_MINUTES = 10;
33
+ /**
34
+ * decision c6613590 P0 缺陷 A: max trimmed length for a prompt to even be
35
+ * considered a pure continuation/ack. Real acks ("继续" / "好的,这样可以" /
36
+ * "对对对" / "好的可以这样做") are all short; the false-positive questions
37
+ * ("现在全链路是不是都顺了?知识库、skill都正常了吗", "这个任务怎么又丢了?
38
+ * 老是丢数据不行啊") are well past this. 16 chars comfortably covers the
39
+ * real acks in the safety-net fixtures while excluding the merge bugs.
40
+ */
41
+ const ACK_MAX_LEN = 16;
42
+ /**
43
+ * spec 1713 (2026-05-28) §10.2: hard "reset" markers — an EXPLICIT user signal
44
+ * that they're starting a different topic, not a heuristic. Kept deliberately
45
+ * tiny so it never false-fires on normal continuations. These force a new task
46
+ * synchronously regardless of the time gap.
47
+ */
48
+ const RESET_KEYWORDS = [
49
+ '首先', '换个话题', '新问题', '换个',
50
+ 'another question', 'new topic', 'new task',
51
+ ];
52
+ /**
53
+ * spec 1713 §10.2 / §3: synchronous hard-window fallback (minutes). Catches the
54
+ * obvious "user walked away for >5 min" case as an explicit boundary signal.
55
+ */
56
+ const HARD_TIME_WINDOW_MIN = 5;
57
+ // Threshold for forcing a new task purely based on inactivity.
58
+ // Raised from 10→30 (2026-05-25) to accommodate long background-agent runs
59
+ // (spawn-and-wait flows of 15-30 min are common). With linkEvent() now also
60
+ // updating lastTime on every tool call, this constant primarily acts as a
61
+ // fallback for sessions where the user genuinely walked away >30 min.
62
+ const TASK_SWITCH_MINUTES = 30;
63
+ // B+ smart window resume: reuse TASK_SWITCH_MINUTES as the look-back window
64
+ // so resume threshold == idle-split threshold (both 30min).
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
+ ];
80
+ /**
81
+ * Task-tracking overhaul (2026-05-27 spec §3.3 / §R4).
82
+ *
83
+ * Bug 3 orphan recovery window. When linkEvent fires without an active
84
+ * task (e.g. Stop already closed it but sub-agent PostToolUse is still
85
+ * landing), we attach the event to the most recently completed task on
86
+ * the session IF it ended within this window. Default 5 min — short
87
+ * enough to avoid cross-task mis-attribution, long enough to absorb
88
+ * typical async sub-agent tool flushes (observed 1-4 min in production).
89
+ *
90
+ * Exported as `const` (not env-tunable) on purpose: changing it changes
91
+ * KPI semantics and should be a code review event. R4 mitigation: pure
92
+ * attachment, end_time is NOT updated by the fallback path (Q3).
93
+ */
94
+ export const ORPHAN_RECOVERY_WINDOW_MS = 5 * 60_000;
16
95
  export class TaskSegmenter {
17
96
  storage;
18
97
  currentTasks = new Map();
@@ -20,38 +99,224 @@ export class TaskSegmenter {
20
99
  this.storage = storage;
21
100
  }
22
101
  processPrompt(sessionId, prompt, timestamp, eventId) {
102
+ return this.processPromptWithBoundary(sessionId, prompt, timestamp, eventId).taskId;
103
+ }
104
+ /**
105
+ * decision 265f59d5: same synchronous best-effort segmentation as
106
+ * {@link processPrompt}, but also reports whether the result was an AMBIGUOUS
107
+ * merge so the daemon can enqueue an async LLM re-attribution. The hot path is
108
+ * unchanged — this returns immediately; the LLM call (if any) is the caller's
109
+ * fire-and-forget responsibility.
110
+ */
111
+ processPromptWithBoundary(sessionId, prompt, timestamp, eventId) {
23
112
  const key = sessionId;
24
- const current = this.currentTasks.get(key) ?? this.recoverActiveTask(key);
113
+ const current = this.getTrustedCurrent(key);
25
114
  const now = timestampToMs(timestamp);
115
+ // spec b1480935 (2026-06-01 Option A): every prompt creates a task. The
116
+ // previous noise short-circuit is gone — callback / image / system
117
+ // envelopes now surface as their own task rows with `task_kind != 'user'`
118
+ // so Web can show them muted instead of swallowing them. This fixes the
119
+ // bug where a `<task-notification>` envelope on a session without an
120
+ // active task would be silently dropped (or worse, "recover" a stale
121
+ // completed task and turn it into an events black hole).
122
+ //
123
+ // Key invariant (OQ #2): NON-user tasks NEVER enter `currentTasks` map
124
+ // so a real user prompt immediately following a callback always starts
125
+ // its own task, never gets absorbed by the callback row.
126
+ const kind = classifyPromptKind(prompt);
127
+ if (kind !== 'user') {
128
+ // Callback / image / system envelope. Create its own task row but DO
129
+ // NOT touch `currentTasks` (so continuation logic ignores it) and DO
130
+ // NOT close any active user task (the human is still working).
131
+ const taskId = this.createTask(sessionId, prompt, timestamp, kind);
132
+ if (eventId)
133
+ this.storage.linkEventToTask(taskId, eventId);
134
+ logger.debug(`[TaskSegmenter] Non-user task created kind=${kind} ${truncateString(taskId, 8)} (session=${truncateSessionId(sessionId)})`);
135
+ return { taskId };
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;
26
142
  if (!current || this.shouldStartNewTask(prompt, now, current)) {
27
143
  if (current) {
28
144
  this.storage.updateTask(current.id, { status: 'completed', end_time: timestamp });
29
145
  }
30
- const taskId = this.createTask(sessionId, prompt, timestamp);
146
+ // B+ smart window resume: when no active task, check for a recently-completed
147
+ // task within TASK_RESUME_WINDOW_MS (30min). Uses findCompletedTaskForOrphanSmart
148
+ // (spec §3.A) which also guards against cross-topic mis-attribution via the
149
+ // "no newer task started in the gap" predicate. Only fires when current==null;
150
+ // when shouldStartNewTask triggered with an existing current, we've already
151
+ // moved on intentionally.
152
+ //
153
+ // Issue #1 fix (2026-05-29 task-lost): require POSITIVE continuation evidence
154
+ // (isContinuationPrompt) before resuming. The old gate "absence of NEW_TASK_KEYWORDS"
155
+ // resumed nearly every keyword-free follow-up prompt ("搞一个新文件存放对比说明",
156
+ // "前面的属性也加上注释说明"), merging dozens of distinct user intents into one
157
+ // mega-task spanning hours/days. Real-world impact: session b832930b on
158
+ // 2026-05-28 had task e559c003 accumulate 91 events / 12 hours / 7 distinct
159
+ // user prompts before finally being closed — the user saw "task lost" because
160
+ // each new question failed to surface as a new task card. Now resume only
161
+ // fires when the user explicitly signals continuation ("继续/然后/对/可以/..."),
162
+ // which is the actual semantic the smart-window was intended to capture.
163
+ if (!current && isContinuationPrompt(prompt)) {
164
+ const eventTsIso = timestamp ?? new Date().toISOString();
165
+ const candidate = this.storage.findCompletedTaskForOrphanSmart({
166
+ session_id: sessionId,
167
+ event_ts_iso: eventTsIso,
168
+ });
169
+ if (candidate && candidate.end_time) {
170
+ const gapMs = Date.parse(eventTsIso) - Date.parse(candidate.end_time);
171
+ if (gapMs <= TASK_RESUME_WINDOW_MS) {
172
+ this.storage.resumeTask(candidate.id);
173
+ this.currentTasks.set(key, { id: candidate.id, lastTime: now });
174
+ if (eventId)
175
+ this.storage.linkEventToTask(candidate.id, eventId);
176
+ logger.info(`[TaskSegmenter] Resumed task ${truncateString(candidate.id, 8)} (gap=${Math.round(gapMs / 60000)} min, session=${truncateSessionId(sessionId)})`);
177
+ return { taskId: candidate.id };
178
+ }
179
+ }
180
+ }
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);
31
204
  this.currentTasks.set(key, { id: taskId, lastTime: now });
32
205
  if (eventId)
33
206
  this.storage.linkEventToTask(taskId, eventId);
34
- return taskId;
207
+ return { taskId };
35
208
  }
209
+ // Continuation: attach to the current task.
36
210
  current.lastTime = now;
37
211
  if (eventId)
38
212
  this.storage.linkEventToTask(current.id, eventId);
39
- return current.id;
213
+ // decision 265f59d5: detect the AMBIGUOUS merge. We merged into the active
214
+ // task, but if the prompt is neither a clear ack (isContinuationPrompt) nor
215
+ // carries a NEW_TASK_KEYWORD, the lexical signal was inconclusive — flag it
216
+ // for the async LLM classifier. Hard signals (5-min / RESET / agent-return)
217
+ // already routed to the new-task branch above, so reaching here means none
218
+ // fired. We require a real eventId (nothing to re-attribute otherwise).
219
+ const ambiguous = eventId !== undefined &&
220
+ !isContinuationPrompt(prompt) &&
221
+ !NEW_TASK_KEYWORDS.some(kw => prompt.includes(kw));
222
+ return {
223
+ taskId: current.id,
224
+ ...(ambiguous
225
+ ? {
226
+ ambiguous: {
227
+ sessionId,
228
+ mergedTaskId: current.id,
229
+ eventId,
230
+ prompt,
231
+ timestamp,
232
+ },
233
+ }
234
+ : {}),
235
+ };
40
236
  }
41
- linkEvent(sessionId, eventId) {
42
- const current = this.currentTasks.get(sessionId) ?? this.recoverActiveTask(sessionId);
237
+ /**
238
+ * Attach a non-prompt event (PostToolUse / PreToolUse / Stop / spawn …) to the
239
+ * session's currently-open task and refresh `lastTime`.
240
+ *
241
+ * Refreshing `lastTime` here is the critical part of the long-flow fix
242
+ * (2026-05-25): without it, `shouldStartNewTask` only sees the gap between
243
+ * user prompts, so a 20-minute background-agent run with hundreds of tool
244
+ * calls looks identical to the user walking away. The next prompt then trips
245
+ * `TASK_SWITCH_MINUTES` and the post-spawn work gets re-attributed to a
246
+ * brand-new task — exactly the symptom seen in task 36471706.
247
+ *
248
+ * `timestamp` is optional for backward compatibility; callers that already
249
+ * know the event timestamp should pass it (we trust hook timestamps more
250
+ * than wall-clock here because event delivery can be queued/replayed).
251
+ */
252
+ linkEvent(sessionId, eventId, timestamp, opts) {
253
+ const current = this.getTrustedCurrent(sessionId);
43
254
  if (current) {
44
255
  this.storage.linkEventToTask(current.id, eventId);
256
+ current.lastTime = timestamp ? timestampToMs(timestamp) : Date.now();
257
+ // spec 1713 §10.2 sub-agent boundary: a completed Task tool-call means a
258
+ // sub-agent just returned. Arm the one-shot flag so the NEXT user prompt
259
+ // starts a fresh task (the post-spawn work and the follow-up question are
260
+ // almost always distinct intents). Cleared on consume in
261
+ // shouldStartNewTaskHard.
262
+ if (opts?.hookType === 'PostToolUse' && opts?.toolName === 'Task') {
263
+ current.agentJustReturned = true;
264
+ }
265
+ return;
266
+ }
267
+ // Task-tracking deep fix (spec 1551 §3.A): smart-window orphan recovery.
268
+ // Primary path: smart algorithm finds the most recently completed task
269
+ // with no newer task blocking the gap (no fixed 5-min cap).
270
+ // Fallback: if smart SQL fails or returns null, fall back to the old
271
+ // ORPHAN_RECOVERY_WINDOW_MS=5min path (Q4 = retain as defensive fallback).
272
+ //
273
+ // Q3 (spec §11): do NOT update task.end_time — pure attachment only.
274
+ // Updating end_time would stretch duration KPI for every orphan.
275
+ const eventTsIso = timestamp ?? new Date().toISOString();
276
+ // Primary: smart window (no fixed time cap)
277
+ let recovered = this.storage.findCompletedTaskForOrphanSmart({
278
+ session_id: sessionId,
279
+ event_ts_iso: eventTsIso,
280
+ });
281
+ // Fallback: legacy 5-min window (Q4 — retained for SQL error resilience)
282
+ if (!recovered) {
283
+ recovered = this.storage.findRecentCompletedTaskForOrphan({
284
+ session_id: sessionId,
285
+ event_ts_iso: eventTsIso,
286
+ sinceMs: ORPHAN_RECOVERY_WINDOW_MS,
287
+ });
288
+ if (recovered) {
289
+ logger.debug(`[TaskSegmenter] Orphan-recovery (5min fallback): attached event to ` +
290
+ `${truncateString(recovered.id, 8)} (session=${truncateSessionId(sessionId)})`);
291
+ }
292
+ }
293
+ if (recovered) {
294
+ this.storage.attachEventToTask(recovered.id, eventId);
295
+ logger.debug(`[TaskSegmenter] Orphan-recovery (smart-window): attached event to ` +
296
+ `${truncateString(recovered.id, 8)} (session=${truncateSessionId(sessionId)})`);
45
297
  }
46
298
  }
47
299
  /**
48
300
  * 从数据库恢复 session 的 active 任务到内存 Map。
49
301
  * 用于 daemon 重启后内存丢失场景的 lazy 恢复。
50
302
  * 找不到 active 任务时返回 null(不报错)。
303
+ *
304
+ * spec b1480935 (2026-06-01 Option A): only `task_kind='user'` tasks are
305
+ * eligible — callback / image / system rows MUST NOT be re-installed as
306
+ * the session's "current task" or every subsequent event would attach
307
+ * to an envelope row. The legacy `!is_noise` guard is preserved as a
308
+ * fallback for rows where backfill hasn't yet promoted task_kind.
309
+ *
310
+ * Orphan-event robustness fix (2026-06-01): switched from
311
+ * `queryTasks(limit:5).find(...)` to a DIRECT `getActiveUserTask()` SQL
312
+ * lookup. The old path took the most-recent 5 rows THEN filtered — on a
313
+ * high-task-count session a burst of newer agent-callback / completed rows
314
+ * pushed the active user task out of the top-5, so `.find()` returned null
315
+ * and every event after it orphaned. The direct query applies the predicate
316
+ * at the DB layer with no LIMIT truncation.
51
317
  */
52
318
  recoverActiveTask(sessionId) {
53
- const tasks = this.storage.queryTasks({ session_id: sessionId, limit: 5 });
54
- const activeTask = tasks.find(t => t.status === 'active');
319
+ const activeTask = this.storage.getActiveUserTask(sessionId);
55
320
  if (!activeTask)
56
321
  return null;
57
322
  const anchor = activeTask.end_time ?? activeTask.start_time;
@@ -61,6 +326,100 @@ export class TaskSegmenter {
61
326
  logger.info(`[TaskSegmenter] Recovered active task ${truncateString(activeTask.id, 8)} for session ${truncateSessionId(sessionId)} from DB`);
62
327
  return entry;
63
328
  }
329
+ /**
330
+ * Orphan-event robustness fix (2026-06-01): proactively re-populate the
331
+ * in-memory `currentTasks` map from the DB at daemon startup.
332
+ *
333
+ * Problem: after a daemon restart `currentTasks` is empty, so every event
334
+ * relies on per-event lazy `recoverActiveTask`. During the restart window a
335
+ * burst of buffered + replayed events arrives; any whose recovery heuristic
336
+ * doesn't fire (e.g. the orphan-recovery smart window finds no completed
337
+ * task) gets dropped. Hydrating up-front means those events hit the fast
338
+ * `currentTasks.get()` path instead.
339
+ *
340
+ * Idempotent + fault-tolerant: safe to call multiple times (it overwrites
341
+ * with the same DB-derived state) and never throws — a query failure logs
342
+ * and leaves the map untouched so the daemon still starts.
343
+ *
344
+ * @returns number of sessions hydrated (useful for the startup log line).
345
+ */
346
+ hydrateActiveTasks() {
347
+ try {
348
+ const rows = this.storage.queryActiveUserTaskSessions();
349
+ let count = 0;
350
+ for (const row of rows) {
351
+ if (!row.session_id || !row.task_id)
352
+ continue;
353
+ this.currentTasks.set(row.session_id, {
354
+ id: row.task_id,
355
+ lastTime: timestampToMs(row.start_time),
356
+ });
357
+ count += 1;
358
+ }
359
+ if (count > 0) {
360
+ logger.info(`[TaskSegmenter] Hydrated ${count} active user task(s) from DB on startup`);
361
+ }
362
+ return count;
363
+ }
364
+ catch (err) {
365
+ logger.warn(`[TaskSegmenter] hydrateActiveTasks failed (non-fatal): ${err}`);
366
+ return 0;
367
+ }
368
+ }
369
+ /**
370
+ * decision c6613590 P0 缺陷 B: trusted map-hit accessor.
371
+ *
372
+ * The in-memory `currentTasks` map can hold a DANGLING pointer to a task the
373
+ * stale-task GC (daemon/index.ts `completeStaleActiveTasks`) already flipped
374
+ * to status='completed' in the DB. The old code trusted any map hit blindly,
375
+ * so a new prompt / late event would `linkEventToTask` onto that completed
376
+ * row — advancing its end_time and merging independent prompts into a stale
377
+ * task.
378
+ *
379
+ * Two defences run together (spec: "两个都修最稳"):
380
+ * 1. daemon evicts GC'd ids from the map (see {@link evictTasks}); but a
381
+ * daemon that never restarts can still race the 5-min GC tick.
382
+ * 2. THIS guard PK-rechecks `status='active'` before trusting a map hit.
383
+ * If the row is no longer active, we drop the stale entry and fall back
384
+ * to `recoverActiveTask` (DB-authoritative). This makes the map a cache,
385
+ * never an authority, for the active-task invariant.
386
+ */
387
+ getTrustedCurrent(sessionId) {
388
+ const cached = this.currentTasks.get(sessionId);
389
+ if (cached) {
390
+ if (this.storage.isTaskActive(cached.id))
391
+ return cached;
392
+ // Dangling pointer to a GC'd / closed task — evict and re-derive from DB.
393
+ this.currentTasks.delete(sessionId);
394
+ logger.debug(`[TaskSegmenter] Dropped stale currentTasks entry ${truncateString(cached.id, 8)} ` +
395
+ `(no longer active in DB, session=${truncateSessionId(sessionId)})`);
396
+ }
397
+ return this.recoverActiveTask(sessionId);
398
+ }
399
+ /**
400
+ * decision c6613590 P0 缺陷 B: evict the given task ids from the in-memory
401
+ * `currentTasks` map. Called by the daemon's stale-task GC after it flips
402
+ * those tasks to 'completed' in the DB, so the map never keeps a dangling
403
+ * pointer that drags a closed task's end_time forward.
404
+ *
405
+ * Keyed by sessionId (the map's key), but we also verify the mapped task id
406
+ * matches before deleting — a session whose active task was already replaced
407
+ * by a newer one must NOT have its live entry evicted just because an older
408
+ * task on the same session was GC'd.
409
+ *
410
+ * @returns number of map entries actually evicted (for the daemon log line).
411
+ */
412
+ evictTasks(closed) {
413
+ let evicted = 0;
414
+ for (const { id, session_id } of closed) {
415
+ const entry = this.currentTasks.get(session_id);
416
+ if (entry && entry.id === id) {
417
+ this.currentTasks.delete(session_id);
418
+ evicted += 1;
419
+ }
420
+ }
421
+ return evicted;
422
+ }
64
423
  getCurrentTaskId(sessionId) {
65
424
  return this.currentTasks.get(sessionId)?.id ?? null;
66
425
  }
@@ -74,21 +433,89 @@ export class TaskSegmenter {
74
433
  });
75
434
  this.currentTasks.delete(sessionId);
76
435
  }
436
+ /**
437
+ * Boundary decision for the synchronous path.
438
+ *
439
+ * spec 1713 (2026-05-28) introduced the hard-signal boundary
440
+ * ({@link shouldStartNewTaskHard}); spec b1480935 (2026-06-01) kept the
441
+ * legacy keyword heuristic for the live daemon. We UNION the two so the
442
+ * decision is the strictly-more-eager of the pair: a new task starts if
443
+ * EITHER an explicit hard signal fires (5-min window / RESET_KEYWORDS /
444
+ * sub-agent return) OR the legacy keyword heuristic asks for it. This keeps
445
+ * every previously-passing keyword case green while satisfying the spec-1713
446
+ * hard-signal contract. The async classifier (when wired) corrects any
447
+ * over- or under-split after the fact.
448
+ */
77
449
  shouldStartNewTask(prompt, now, current) {
450
+ // Hard signals first — these consume the agentJustReturned flag.
451
+ if (this.shouldStartNewTaskHard(prompt, now, current))
452
+ return true;
453
+ // Legacy keyword heuristic (spec b1480935 live contract).
78
454
  const minutesDiff = (now - current.lastTime) / 60000;
79
455
  if (minutesDiff > TASK_SWITCH_MINUTES)
80
456
  return true;
81
- const hasContinue = CONTINUE_KEYWORDS.some(kw => prompt.includes(kw));
82
- if (hasContinue)
457
+ // decision c6613590 P0 缺陷 A (verify follow-up): the continuation gate here
458
+ // MUST use the SAME tightened predicate as the smart-window resume path
459
+ // (isContinuationPrompt), not a raw CONTINUE_KEYWORDS substring match. The
460
+ // old `CONTINUE_KEYWORDS.some(kw => prompt.includes(kw))` fired on '不是'/
461
+ // '这个'/'它' inside ordinary active-window follow-up questions
462
+ // ("现在全链路是不是都顺了…", "这个任务怎么又丢了…"), returning false here
463
+ // and merging those distinct prompts into the still-active task. Single
464
+ // source of truth: both the resume gate (processPrompt) and this active-task
465
+ // boundary now defer to isContinuationPrompt (length gate ≤16 +
466
+ // ACK_CONTINUE_KEYWORDS), so there is no second substring matcher to drift.
467
+ if (isContinuationPrompt(prompt))
83
468
  return false;
84
469
  const hasNewTask = NEW_TASK_KEYWORDS.some(kw => prompt.includes(kw));
85
470
  return hasNewTask;
86
471
  }
87
- createTask(sessionId, prompt, timestamp) {
472
+ /**
473
+ * spec 1713 §10.2: the hard-signal boundary. Returns true when an OBJECTIVE
474
+ * marker says "new task":
475
+ * 1. a sub-agent just returned (agentJustReturned flag) → consumes the flag
476
+ * 2. gap > HARD_TIME_WINDOW_MIN (5 min)
477
+ * 3. an explicit RESET_KEYWORD appears in the prompt
478
+ *
479
+ * Pure of keyword *heuristics* (NEW_TASK_KEYWORDS) — those live in the legacy
480
+ * path. Mutates `current.agentJustReturned` (clears it) by design: the flag
481
+ * is a one-shot that only forces the immediately-following prompt.
482
+ */
483
+ shouldStartNewTaskHard(prompt, now, current) {
484
+ if (current.agentJustReturned) {
485
+ current.agentJustReturned = false; // one-shot — clear on consume
486
+ return true;
487
+ }
488
+ const minutesDiff = (now - current.lastTime) / 60000;
489
+ if (minutesDiff > HARD_TIME_WINDOW_MIN)
490
+ return true;
491
+ if (RESET_KEYWORDS.some(kw => prompt.includes(kw)))
492
+ return true;
493
+ return false;
494
+ }
495
+ createTask(sessionId, prompt, timestamp, kind, parentTaskId) {
88
496
  const taskId = randomUUID();
89
497
  const title = this.extractTitle(prompt);
90
- this.storage.writeTask({ id: taskId, session_id: sessionId, title, start_time: timestamp });
91
- logger.info(`[TaskSegmenter] New task: "${title}" (${truncateString(taskId, 8)})`);
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;
502
+ // spec b1480935 (2026-06-01): is_noise is now deprecated. We KEEP writing
503
+ // it during the transition window so any consumer that hasn't switched to
504
+ // task_kind yet still sees the right value (a callback row is is_noise=1
505
+ // AND task_kind='agent-callback'). The boolean comes from the same
506
+ // heuristic for backward compat — envelope/short titles still get is_noise=1.
507
+ const isNoise = computeIsNoise(title) || kind !== 'user';
508
+ this.storage.writeTask({
509
+ id: taskId,
510
+ session_id: sessionId,
511
+ title,
512
+ start_time: timestamp,
513
+ is_noise: isNoise,
514
+ task_kind: kind,
515
+ parent_task_id: safeParent ?? null,
516
+ });
517
+ logger.info(`[TaskSegmenter] New task kind=${kind} "${title}" (${truncateString(taskId, 8)})` +
518
+ (isNoise ? ' [noise]' : ''));
92
519
  return taskId;
93
520
  }
94
521
  extractTitle(prompt) {
@@ -99,4 +526,87 @@ export class TaskSegmenter {
99
526
  return truncateString(firstLine, 60);
100
527
  }
101
528
  }
529
+ /**
530
+ * Task-tracking overhaul (2026-05-27 spec §3.2).
531
+ *
532
+ * Compute the is_noise flag for a freshly-extracted task title. Three
533
+ * heuristics, all conservative — the goal is to drop obvious envelope /
534
+ * sub-3-char / slash-command noise WITHOUT eating real user prompts:
535
+ *
536
+ * • length(trim(title)) < 3 — sub-3-char titles ('好的'=2, 'ok'=2,
537
+ * single CJK char). Note: spec §3.2 lists '好的' as expected-noise
538
+ * and '推送吧'=3 as expected-real; this matches.
539
+ * • title matches one of NOISE_PROMPT_PREFIXES (envelope tags emitted
540
+ * by the framework on UserPromptSubmit).
541
+ * • title is a single-word slash command (`/help`, `/login`, …) — the
542
+ * user didn't actually start a new task, they fired a CC slash menu.
543
+ *
544
+ * What this DOES NOT flag (intentional — spec §3.2):
545
+ * - Semantic acknowledgements like '批准' / 'approve' / 'ok' / '可以'.
546
+ * Those titles should never reach createTask once SpecGate.handle
547
+ * Approval is wired in Step 6. If they DO arrive in the meantime
548
+ * (e.g. test seeds, legacy bug, race), Web shows them so the user
549
+ * can spot the regression rather than silently dropping them.
550
+ *
551
+ * Exported for unit-test reuse; the production caller is
552
+ * TaskSegmenter.createTask above.
553
+ */
554
+ export function computeIsNoise(title) {
555
+ const trimmed = title.trim();
556
+ if (trimmed.length === 0)
557
+ return true;
558
+ if (trimmed.length < 3)
559
+ return true;
560
+ // Envelope detection reuses the canonical isNoisePrompt utility so the
561
+ // prefix list stays a single source of truth (see core/utils/noise-prompt.ts).
562
+ if (isNoisePrompt(trimmed))
563
+ return true;
564
+ // Single-word slash command (starts with /, contains no whitespace).
565
+ if (trimmed.startsWith('/') && !/\s/.test(trimmed))
566
+ return true;
567
+ return false;
568
+ }
569
+ /**
570
+ * True if the prompt is actually a tool-generated envelope (task-notification,
571
+ * system-reminder, image attachment, etc.) rather than a real human prompt.
572
+ *
573
+ * Thin wrapper over the canonical {@link isNoisePrompt} (core/utils). Kept
574
+ * as a named export so existing imports stay stable; each consumer's
575
+ * "what to do with noise" decision still lives at the call site (spec-gate
576
+ * skips auto-spec, here we skip task creation).
577
+ */
578
+ export function isNoisePromptForSegmenter(prompt) {
579
+ return isNoisePrompt(prompt);
580
+ }
581
+ /**
582
+ * True if the prompt is a genuine short continuation / acknowledgement
583
+ * ("继续" / "好的,这样可以" / "对对对" / "ok" / "批准" …) that should resume
584
+ * a recently-completed task via the B+ smart-window gate.
585
+ *
586
+ * decision c6613590 P0 缺陷 A — the old implementation (and the now-retired
587
+ * `CONTINUE_KEYWORDS` table) was `CONTINUE_KEYWORDS.some(kw => prompt.includes(kw))`,
588
+ * a pure SUBSTRING match.
589
+ * Because the keyword list contained '不是' / '这个' / '那个' / '它' / '不对',
590
+ * ordinary NEW questions were mis-classified as continuations and merged into
591
+ * a stale task:
592
+ * • "现在全链路是不是都顺了?知识库、skill都正常了吗" → '不是' matched
593
+ * • "这个任务怎么又丢了?老是丢数据不行啊" → '这个' matched
594
+ *
595
+ * The fix has two layers, BOTH must hold:
596
+ * 1. Length gate — the trimmed prompt must be ≤ ACK_MAX_LEN. A genuine ack
597
+ * is short; a multi-clause question is not.
598
+ * 2. Ack-token presence — an ACK_CONTINUE_KEYWORD (collision-prone tokens
599
+ * removed) must appear in the (short) prompt.
600
+ *
601
+ * This keeps every real ack a continuation ("继续"/"好的,这样可以"/"对对对"/
602
+ * "好的可以这样做") while the two real-world merge bugs above now return false
603
+ * and correctly start a new task. Exported for unit-test reuse.
604
+ */
605
+ export function isContinuationPrompt(prompt) {
606
+ const trimmed = prompt.trim();
607
+ if (trimmed.length === 0 || trimmed.length > ACK_MAX_LEN)
608
+ return false;
609
+ const lower = trimmed.toLowerCase();
610
+ return ACK_CONTINUE_KEYWORDS.some(kw => lower.includes(kw.toLowerCase()));
611
+ }
102
612
  //# sourceMappingURL=task-segmenter.js.map
@@ -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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"}