@winspan/claude-forge 9.2.0 → 9.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (591) hide show
  1. package/DEVELOPMENT.md +80 -19
  2. package/README.md +13 -6
  3. package/dist/catalogs/agents.json +19 -24
  4. package/dist/catalogs/skills.json +139 -27
  5. package/dist/claudemd/templates/swarm-protocol.md +1 -1
  6. package/dist/cli/commands/agent.d.ts +169 -0
  7. package/dist/cli/commands/agent.d.ts.map +1 -0
  8. package/dist/cli/commands/agent.js +690 -0
  9. package/dist/cli/commands/agent.js.map +1 -0
  10. package/dist/cli/commands/codegraph.d.ts +17 -0
  11. package/dist/cli/commands/codegraph.d.ts.map +1 -0
  12. package/dist/cli/commands/codegraph.js +263 -0
  13. package/dist/cli/commands/codegraph.js.map +1 -0
  14. package/dist/cli/commands/decisions.d.ts.map +1 -1
  15. package/dist/cli/commands/decisions.js +46 -9
  16. package/dist/cli/commands/decisions.js.map +1 -1
  17. package/dist/cli/commands/executions.d.ts.map +1 -1
  18. package/dist/cli/commands/executions.js +2 -1
  19. package/dist/cli/commands/executions.js.map +1 -1
  20. package/dist/cli/commands/insights-goal-check.d.ts +5 -1
  21. package/dist/cli/commands/insights-goal-check.d.ts.map +1 -1
  22. package/dist/cli/commands/insights-goal-check.js +15 -15
  23. package/dist/cli/commands/insights-goal-check.js.map +1 -1
  24. package/dist/cli/commands/knowledge.d.ts +51 -0
  25. package/dist/cli/commands/knowledge.d.ts.map +1 -1
  26. package/dist/cli/commands/knowledge.js +202 -29
  27. package/dist/cli/commands/knowledge.js.map +1 -1
  28. package/dist/cli/commands/loop.d.ts +95 -0
  29. package/dist/cli/commands/loop.d.ts.map +1 -0
  30. package/dist/cli/commands/loop.js +408 -0
  31. package/dist/cli/commands/loop.js.map +1 -0
  32. package/dist/cli/commands/maintenance.d.ts +33 -0
  33. package/dist/cli/commands/maintenance.d.ts.map +1 -0
  34. package/dist/cli/commands/maintenance.js +75 -0
  35. package/dist/cli/commands/maintenance.js.map +1 -0
  36. package/dist/cli/commands/mcp.d.ts +23 -0
  37. package/dist/cli/commands/mcp.d.ts.map +1 -1
  38. package/dist/cli/commands/mcp.js +82 -0
  39. package/dist/cli/commands/mcp.js.map +1 -1
  40. package/dist/cli/commands/skills.d.ts +131 -0
  41. package/dist/cli/commands/skills.d.ts.map +1 -1
  42. package/dist/cli/commands/skills.js +409 -9
  43. package/dist/cli/commands/skills.js.map +1 -1
  44. package/dist/cli/commands/stats.d.ts.map +1 -1
  45. package/dist/cli/commands/stats.js +9 -2
  46. package/dist/cli/commands/stats.js.map +1 -1
  47. package/dist/cli/index.js +8 -0
  48. package/dist/cli/index.js.map +1 -1
  49. package/dist/core/constants.d.ts +37 -0
  50. package/dist/core/constants.d.ts.map +1 -1
  51. package/dist/core/constants.js +43 -0
  52. package/dist/core/constants.js.map +1 -1
  53. package/dist/core/diagnostics/checks.d.ts.map +1 -1
  54. package/dist/core/diagnostics/checks.js +2 -1
  55. package/dist/core/diagnostics/checks.js.map +1 -1
  56. package/dist/core/diagnostics/daemon-status.d.ts +1 -1
  57. package/dist/core/diagnostics/daemon-status.d.ts.map +1 -1
  58. package/dist/core/diagnostics/daemon-status.js +1 -1
  59. package/dist/core/diagnostics/daemon-status.js.map +1 -1
  60. package/dist/core/diagnostics/entropy-checks.d.ts +3 -2
  61. package/dist/core/diagnostics/entropy-checks.d.ts.map +1 -1
  62. package/dist/core/diagnostics/entropy-checks.js +10 -5
  63. package/dist/core/diagnostics/entropy-checks.js.map +1 -1
  64. package/dist/core/diagnostics/heartbeat-reader.d.ts +28 -0
  65. package/dist/core/diagnostics/heartbeat-reader.d.ts.map +1 -0
  66. package/dist/core/diagnostics/heartbeat-reader.js +50 -0
  67. package/dist/core/diagnostics/heartbeat-reader.js.map +1 -0
  68. package/dist/core/event-fields.d.ts +27 -0
  69. package/dist/core/event-fields.d.ts.map +1 -1
  70. package/dist/core/event-fields.js +43 -0
  71. package/dist/core/event-fields.js.map +1 -1
  72. package/dist/core/governance/global-inject.d.ts +34 -4
  73. package/dist/core/governance/global-inject.d.ts.map +1 -1
  74. package/dist/core/governance/global-inject.js +80 -25
  75. package/dist/core/governance/global-inject.js.map +1 -1
  76. package/dist/core/insights/agent-anchor-guard.d.ts +77 -0
  77. package/dist/core/insights/agent-anchor-guard.d.ts.map +1 -0
  78. package/dist/core/insights/agent-anchor-guard.js +119 -0
  79. package/dist/core/insights/agent-anchor-guard.js.map +1 -0
  80. package/dist/core/insights/agent-distill-context.d.ts +55 -0
  81. package/dist/core/insights/agent-distill-context.d.ts.map +1 -0
  82. package/dist/core/insights/agent-distill-context.js +146 -0
  83. package/dist/core/insights/agent-distill-context.js.map +1 -0
  84. package/dist/core/insights/agent-distill-spawn.d.ts +56 -0
  85. package/dist/core/insights/agent-distill-spawn.d.ts.map +1 -0
  86. package/dist/core/insights/agent-distill-spawn.js +179 -0
  87. package/dist/core/insights/agent-distill-spawn.js.map +1 -0
  88. package/dist/core/insights/agent-drift.d.ts +66 -0
  89. package/dist/core/insights/agent-drift.d.ts.map +1 -0
  90. package/dist/core/insights/agent-drift.js +109 -0
  91. package/dist/core/insights/agent-drift.js.map +1 -0
  92. package/dist/core/insights/agent-evolution-sources.d.ts +21 -0
  93. package/dist/core/insights/agent-evolution-sources.d.ts.map +1 -0
  94. package/dist/core/insights/agent-evolution-sources.js +36 -0
  95. package/dist/core/insights/agent-evolution-sources.js.map +1 -0
  96. package/dist/core/insights/agent-health.d.ts +142 -0
  97. package/dist/core/insights/agent-health.d.ts.map +1 -0
  98. package/dist/core/insights/agent-health.js +296 -0
  99. package/dist/core/insights/agent-health.js.map +1 -0
  100. package/dist/core/insights/agent-patch-apply.d.ts +45 -0
  101. package/dist/core/insights/agent-patch-apply.d.ts.map +1 -0
  102. package/dist/core/insights/agent-patch-apply.js +165 -0
  103. package/dist/core/insights/agent-patch-apply.js.map +1 -0
  104. package/dist/core/insights/agent-suggest.d.ts +128 -0
  105. package/dist/core/insights/agent-suggest.d.ts.map +1 -0
  106. package/dist/core/insights/agent-suggest.js +284 -0
  107. package/dist/core/insights/agent-suggest.js.map +1 -0
  108. package/dist/core/insights/coverage-tiers.d.ts +46 -0
  109. package/dist/core/insights/coverage-tiers.d.ts.map +1 -0
  110. package/dist/core/insights/coverage-tiers.js +95 -0
  111. package/dist/core/insights/coverage-tiers.js.map +1 -0
  112. package/dist/{daemon/services → core/insights}/experience-extractor.d.ts +0 -7
  113. package/dist/core/insights/experience-extractor.d.ts.map +1 -0
  114. package/dist/{daemon/services → core/insights}/experience-extractor.js +5 -9
  115. package/dist/core/insights/experience-extractor.js.map +1 -0
  116. package/dist/{daemon/services → core/insights}/violation-reporter.d.ts +20 -1
  117. package/dist/core/insights/violation-reporter.d.ts.map +1 -0
  118. package/dist/{daemon/services → core/insights}/violation-reporter.js +56 -4
  119. package/dist/core/insights/violation-reporter.js.map +1 -0
  120. package/dist/core/loop/loop-engine.d.ts +140 -0
  121. package/dist/core/loop/loop-engine.d.ts.map +1 -0
  122. package/dist/core/loop/loop-engine.js +266 -0
  123. package/dist/core/loop/loop-engine.js.map +1 -0
  124. package/dist/core/queue/index.d.ts.map +1 -1
  125. package/dist/core/queue/index.js +2 -1
  126. package/dist/core/queue/index.js.map +1 -1
  127. package/dist/core/storage/base.d.ts +159 -0
  128. package/dist/core/storage/base.d.ts.map +1 -1
  129. package/dist/core/storage/base.js +523 -0
  130. package/dist/core/storage/base.js.map +1 -1
  131. package/dist/core/storage/codegraph-types.d.ts +79 -0
  132. package/dist/core/storage/codegraph-types.d.ts.map +1 -0
  133. package/dist/core/storage/codegraph-types.js +14 -0
  134. package/dist/core/storage/codegraph-types.js.map +1 -0
  135. package/dist/core/storage/codegraph.d.ts +186 -0
  136. package/dist/core/storage/codegraph.d.ts.map +1 -0
  137. package/dist/core/storage/codegraph.js +452 -0
  138. package/dist/core/storage/codegraph.js.map +1 -0
  139. package/dist/core/storage/decisions.d.ts +30 -5
  140. package/dist/core/storage/decisions.d.ts.map +1 -1
  141. package/dist/core/storage/decisions.js +45 -13
  142. package/dist/core/storage/decisions.js.map +1 -1
  143. package/dist/core/storage/events.d.ts +127 -0
  144. package/dist/core/storage/events.d.ts.map +1 -1
  145. package/dist/core/storage/events.js +318 -3
  146. package/dist/core/storage/events.js.map +1 -1
  147. package/dist/core/storage/feedback.d.ts +3 -23
  148. package/dist/core/storage/feedback.d.ts.map +1 -1
  149. package/dist/core/storage/feedback.js +37 -38
  150. package/dist/core/storage/feedback.js.map +1 -1
  151. package/dist/core/storage/injections.d.ts +40 -0
  152. package/dist/core/storage/injections.d.ts.map +1 -1
  153. package/dist/core/storage/injections.js +69 -0
  154. package/dist/core/storage/injections.js.map +1 -1
  155. package/dist/core/storage/knowledge.d.ts +226 -0
  156. package/dist/core/storage/knowledge.d.ts.map +1 -1
  157. package/dist/core/storage/knowledge.js +391 -4
  158. package/dist/core/storage/knowledge.js.map +1 -1
  159. package/dist/core/storage/pipeline-rollup.d.ts +1 -7
  160. package/dist/core/storage/pipeline-rollup.d.ts.map +1 -1
  161. package/dist/core/storage/pipeline-rollup.js +18 -57
  162. package/dist/core/storage/pipeline-rollup.js.map +1 -1
  163. package/dist/core/storage/routing.d.ts +34 -0
  164. package/dist/core/storage/routing.d.ts.map +1 -1
  165. package/dist/core/storage/routing.js +92 -2
  166. package/dist/core/storage/routing.js.map +1 -1
  167. package/dist/core/storage/rows.d.ts +5 -25
  168. package/dist/core/storage/rows.d.ts.map +1 -1
  169. package/dist/core/storage/schema.sql +92 -27
  170. package/dist/core/storage/sessions.d.ts.map +1 -1
  171. package/dist/core/storage/sessions.js +2 -1
  172. package/dist/core/storage/sessions.js.map +1 -1
  173. package/dist/core/storage/skills.d.ts +159 -0
  174. package/dist/core/storage/skills.d.ts.map +1 -1
  175. package/dist/core/storage/skills.js +350 -4
  176. package/dist/core/storage/skills.js.map +1 -1
  177. package/dist/core/storage/sqlite.d.ts +81 -25
  178. package/dist/core/storage/sqlite.d.ts.map +1 -1
  179. package/dist/core/storage/sqlite.js +143 -45
  180. package/dist/core/storage/sqlite.js.map +1 -1
  181. package/dist/core/storage/tasks.d.ts +270 -0
  182. package/dist/core/storage/tasks.d.ts.map +1 -1
  183. package/dist/core/storage/tasks.js +495 -16
  184. package/dist/core/storage/tasks.js.map +1 -1
  185. package/dist/core/storage/tool-intercepts.d.ts +1 -1
  186. package/dist/core/storage/tool-intercepts.js +1 -1
  187. package/dist/core/types.d.ts +26 -3
  188. package/dist/core/types.d.ts.map +1 -1
  189. package/dist/core/types.js +1 -3
  190. package/dist/core/types.js.map +1 -1
  191. package/dist/core/utils/binary-paths.d.ts +32 -0
  192. package/dist/core/utils/binary-paths.d.ts.map +1 -1
  193. package/dist/core/utils/binary-paths.js +52 -0
  194. package/dist/core/utils/binary-paths.js.map +1 -1
  195. package/dist/core/utils/claude-cli-resolver.d.ts.map +1 -0
  196. package/dist/{skills/distill → core/utils}/claude-cli-resolver.js +1 -1
  197. package/dist/core/utils/claude-cli-resolver.js.map +1 -0
  198. package/dist/core/utils/claude-cli-spawn.d.ts +1 -1
  199. package/dist/core/utils/claude-cli-spawn.js +2 -2
  200. package/dist/core/utils/claude-cli-spawn.js.map +1 -1
  201. package/dist/core/utils/noise-prompt.d.ts +1 -1
  202. package/dist/core/utils/noise-prompt.js +1 -1
  203. package/dist/core/utils/time.d.ts +26 -0
  204. package/dist/core/utils/time.d.ts.map +1 -1
  205. package/dist/core/utils/time.js +33 -0
  206. package/dist/core/utils/time.js.map +1 -1
  207. package/dist/daemon/config-store.d.ts.map +1 -1
  208. package/dist/daemon/config-store.js +14 -5
  209. package/dist/daemon/config-store.js.map +1 -1
  210. package/dist/daemon/event-parser.d.ts.map +1 -1
  211. package/dist/daemon/event-parser.js +5 -0
  212. package/dist/daemon/event-parser.js.map +1 -1
  213. package/dist/daemon/handlers/post-tool-use.d.ts +24 -16
  214. package/dist/daemon/handlers/post-tool-use.d.ts.map +1 -1
  215. package/dist/daemon/handlers/post-tool-use.js +76 -116
  216. package/dist/daemon/handlers/post-tool-use.js.map +1 -1
  217. package/dist/daemon/handlers/pre-tool-use.d.ts +35 -10
  218. package/dist/daemon/handlers/pre-tool-use.d.ts.map +1 -1
  219. package/dist/daemon/handlers/pre-tool-use.js +71 -38
  220. package/dist/daemon/handlers/pre-tool-use.js.map +1 -1
  221. package/dist/daemon/handlers/stop.d.ts +20 -0
  222. package/dist/daemon/handlers/stop.d.ts.map +1 -1
  223. package/dist/daemon/handlers/stop.js +96 -8
  224. package/dist/daemon/handlers/stop.js.map +1 -1
  225. package/dist/daemon/handlers/user-prompt.d.ts +16 -1
  226. package/dist/daemon/handlers/user-prompt.d.ts.map +1 -1
  227. package/dist/daemon/handlers/user-prompt.js +97 -56
  228. package/dist/daemon/handlers/user-prompt.js.map +1 -1
  229. package/dist/daemon/handlers/violation-content-backfill.d.ts +76 -0
  230. package/dist/daemon/handlers/violation-content-backfill.d.ts.map +1 -0
  231. package/dist/daemon/handlers/violation-content-backfill.js +167 -0
  232. package/dist/daemon/handlers/violation-content-backfill.js.map +1 -0
  233. package/dist/daemon/index.d.ts +19 -0
  234. package/dist/daemon/index.d.ts.map +1 -1
  235. package/dist/daemon/index.js +125 -200
  236. package/dist/daemon/index.js.map +1 -1
  237. package/dist/daemon/rules/defaults.d.ts.map +1 -1
  238. package/dist/daemon/rules/defaults.js +151 -64
  239. package/dist/daemon/rules/defaults.js.map +1 -1
  240. package/dist/daemon/rules/types.d.ts +28 -22
  241. package/dist/daemon/rules/types.d.ts.map +1 -1
  242. package/dist/daemon/rules/workflow-defaults.js +9 -9
  243. package/dist/daemon/rules/workflow-defaults.js.map +1 -1
  244. package/dist/daemon/services/codegraph-sync.d.ts +94 -0
  245. package/dist/daemon/services/codegraph-sync.d.ts.map +1 -0
  246. package/dist/daemon/services/codegraph-sync.js +159 -0
  247. package/dist/daemon/services/codegraph-sync.js.map +1 -0
  248. package/dist/daemon/services/decision-hint.d.ts +47 -10
  249. package/dist/daemon/services/decision-hint.d.ts.map +1 -1
  250. package/dist/daemon/services/decision-hint.js +99 -24
  251. package/dist/daemon/services/decision-hint.js.map +1 -1
  252. package/dist/daemon/services/event-ttl-sweep.d.ts.map +1 -1
  253. package/dist/daemon/services/event-ttl-sweep.js +3 -2
  254. package/dist/daemon/services/event-ttl-sweep.js.map +1 -1
  255. package/dist/daemon/services/feedback-aggregator.d.ts +14 -26
  256. package/dist/daemon/services/feedback-aggregator.d.ts.map +1 -1
  257. package/dist/daemon/services/feedback-aggregator.js +23 -63
  258. package/dist/daemon/services/feedback-aggregator.js.map +1 -1
  259. package/dist/daemon/services/heartbeat-writer.d.ts +6 -15
  260. package/dist/daemon/services/heartbeat-writer.d.ts.map +1 -1
  261. package/dist/daemon/services/heartbeat-writer.js +7 -36
  262. package/dist/daemon/services/heartbeat-writer.js.map +1 -1
  263. package/dist/daemon/services/kb-injector.d.ts +1 -1
  264. package/dist/daemon/services/kb-injector.d.ts.map +1 -1
  265. package/dist/daemon/services/kb-injector.js +10 -2
  266. package/dist/daemon/services/kb-injector.js.map +1 -1
  267. package/dist/daemon/services/kb-rebuild-scheduler.d.ts +95 -0
  268. package/dist/daemon/services/kb-rebuild-scheduler.d.ts.map +1 -0
  269. package/dist/daemon/services/kb-rebuild-scheduler.js +149 -0
  270. package/dist/daemon/services/kb-rebuild-scheduler.js.map +1 -0
  271. package/dist/daemon/services/loop-hint.d.ts +139 -0
  272. package/dist/daemon/services/loop-hint.d.ts.map +1 -0
  273. package/dist/daemon/services/loop-hint.js +272 -0
  274. package/dist/daemon/services/loop-hint.js.map +1 -0
  275. package/dist/daemon/services/outcome-classification-service.js +1 -1
  276. package/dist/daemon/services/outcome-classification-service.js.map +1 -1
  277. package/dist/daemon/services/task-segmenter.d.ts +11 -0
  278. package/dist/daemon/services/task-segmenter.d.ts.map +1 -1
  279. package/dist/daemon/services/task-segmenter.js +48 -2
  280. package/dist/daemon/services/task-segmenter.js.map +1 -1
  281. package/dist/daemon/startup/maintenance-schedulers.d.ts +68 -0
  282. package/dist/daemon/startup/maintenance-schedulers.d.ts.map +1 -0
  283. package/dist/daemon/startup/maintenance-schedulers.js +294 -0
  284. package/dist/daemon/startup/maintenance-schedulers.js.map +1 -0
  285. package/dist/daemon/templates/agents/agent-retro-distiller.md +106 -0
  286. package/dist/daemon/templates/agents/claudemd-writer.md +1 -0
  287. package/dist/daemon/templates/agents/coder.md +165 -8
  288. package/dist/daemon/templates/agents/decision-maker.md +107 -21
  289. package/dist/daemon/templates/agents/doc-reviewer.md +4 -1
  290. package/dist/daemon/templates/agents/harness-debug-full.md +85 -3
  291. package/dist/daemon/templates/agents/knowledge-builder.md +1 -0
  292. package/dist/daemon/templates/agents/patch-applier.md +1 -0
  293. package/dist/daemon/templates/agents/planner.md +55 -3
  294. package/dist/daemon/templates/agents/safety-net-implementer.md +278 -0
  295. package/dist/daemon/templates/agents/skill-distiller.md +1 -0
  296. package/dist/daemon/templates/agents/task-boundary-classifier.md +1 -0
  297. package/dist/daemon/templates/agents/verify-agent.md +128 -5
  298. package/dist/hooks/stop.sh +7 -1
  299. package/dist/knowledge/builder.js +36 -7
  300. package/dist/knowledge/builder.js.map +1 -1
  301. package/dist/knowledge/constants.d.ts +10 -5
  302. package/dist/knowledge/constants.d.ts.map +1 -1
  303. package/dist/knowledge/constants.js +10 -5
  304. package/dist/knowledge/constants.js.map +1 -1
  305. package/dist/knowledge/graph/edge-extractor.d.ts +45 -0
  306. package/dist/knowledge/graph/edge-extractor.d.ts.map +1 -0
  307. package/dist/knowledge/graph/edge-extractor.js +242 -0
  308. package/dist/knowledge/graph/edge-extractor.js.map +1 -0
  309. package/dist/knowledge/graph/impact.d.ts +73 -0
  310. package/dist/knowledge/graph/impact.d.ts.map +1 -0
  311. package/dist/knowledge/graph/impact.js +94 -0
  312. package/dist/knowledge/graph/impact.js.map +1 -0
  313. package/dist/knowledge/graph/types.d.ts +22 -0
  314. package/dist/knowledge/graph/types.d.ts.map +1 -0
  315. package/dist/knowledge/graph/types.js +13 -0
  316. package/dist/knowledge/graph/types.js.map +1 -0
  317. package/dist/knowledge/prompt.d.ts +9 -0
  318. package/dist/knowledge/prompt.d.ts.map +1 -1
  319. package/dist/knowledge/prompt.js +17 -5
  320. package/dist/knowledge/prompt.js.map +1 -1
  321. package/dist/knowledge/query.d.ts +13 -0
  322. package/dist/knowledge/query.d.ts.map +1 -1
  323. package/dist/knowledge/query.js +107 -10
  324. package/dist/knowledge/query.js.map +1 -1
  325. package/dist/knowledge/repo-map.d.ts +11 -5
  326. package/dist/knowledge/repo-map.d.ts.map +1 -1
  327. package/dist/knowledge/repo-map.js +42 -3
  328. package/dist/knowledge/repo-map.js.map +1 -1
  329. package/dist/knowledge/validator.d.ts.map +1 -1
  330. package/dist/knowledge/validator.js +69 -2
  331. package/dist/knowledge/validator.js.map +1 -1
  332. package/dist/mcp/server.d.ts +64 -8
  333. package/dist/mcp/server.d.ts.map +1 -1
  334. package/dist/mcp/server.js +233 -18
  335. package/dist/mcp/server.js.map +1 -1
  336. package/dist/skills/distill/distiller.js +1 -1
  337. package/dist/skills/distill/distiller.js.map +1 -1
  338. package/dist/skills/distilled/distilled-api-design.md +4 -0
  339. package/dist/skills/distilled/distilled-brainstorming.md +79 -0
  340. package/dist/skills/distilled/distilled-brand-guidelines.md +86 -0
  341. package/dist/skills/distilled/distilled-canvas-design.md +128 -0
  342. package/dist/skills/distilled/distilled-claude-api.md +185 -0
  343. package/dist/skills/distilled/distilled-creator.md +5 -2
  344. package/dist/skills/distilled/distilled-dispatching-parallel-agents.md +136 -0
  345. package/dist/skills/distilled/distilled-doc-coauthoring.md +144 -0
  346. package/dist/skills/distilled/distilled-docx.md +231 -0
  347. package/dist/skills/distilled/distilled-executing-plans.md +85 -50
  348. package/dist/skills/distilled/distilled-finishing-a-development-branch.md +213 -0
  349. package/dist/skills/distilled/distilled-frontend-design.md +118 -0
  350. package/dist/skills/distilled/distilled-harness-engineering.md +1 -1
  351. package/dist/skills/distilled/distilled-receiving-code-review.md +185 -0
  352. package/dist/skills/distilled/distilled-subagent-driven-development.md +124 -0
  353. package/dist/skills/distilled/distilled-systematic-debugging.md +108 -260
  354. package/dist/skills/distilled/distilled-test-driven-development.md +432 -0
  355. package/dist/skills/distilled/distilled-using-superpowers.md +134 -0
  356. package/dist/skills/distilled/distilled-verification-before-completion.md +88 -78
  357. package/dist/skills/distilled/distilled-writing-skills.md +175 -0
  358. package/dist/skills/registry.d.ts +10 -50
  359. package/dist/skills/registry.d.ts.map +1 -1
  360. package/dist/skills/registry.js +7 -118
  361. package/dist/skills/registry.js.map +1 -1
  362. package/dist/skills/tools/pipeline-suggest.js +2 -2
  363. package/dist/skills/tools/pipeline-suggest.js.map +1 -1
  364. package/dist/skills/tools/skill-invoke.d.ts +2 -1
  365. package/dist/skills/tools/skill-invoke.d.ts.map +1 -1
  366. package/dist/skills/tools/skill-invoke.js +3 -1
  367. package/dist/skills/tools/skill-invoke.js.map +1 -1
  368. package/dist/web/analytics/anti-pattern-detector.d.ts.map +1 -1
  369. package/dist/web/analytics/anti-pattern-detector.js +6 -1
  370. package/dist/web/analytics/anti-pattern-detector.js.map +1 -1
  371. package/dist/web/analytics/drift-detector.d.ts +6 -0
  372. package/dist/web/analytics/drift-detector.d.ts.map +1 -1
  373. package/dist/web/analytics/drift-detector.js +15 -8
  374. package/dist/web/analytics/drift-detector.js.map +1 -1
  375. package/dist/web/analytics/weekly-report.d.ts +13 -0
  376. package/dist/web/analytics/weekly-report.d.ts.map +1 -1
  377. package/dist/web/analytics/weekly-report.js +17 -3
  378. package/dist/web/analytics/weekly-report.js.map +1 -1
  379. package/dist/web/routes/_helpers.d.ts +31 -0
  380. package/dist/web/routes/_helpers.d.ts.map +1 -1
  381. package/dist/web/routes/_helpers.js +33 -0
  382. package/dist/web/routes/_helpers.js.map +1 -1
  383. package/dist/web/routes/agent-distill.d.ts +49 -0
  384. package/dist/web/routes/agent-distill.d.ts.map +1 -0
  385. package/dist/web/routes/agent-distill.js +526 -0
  386. package/dist/web/routes/agent-distill.js.map +1 -0
  387. package/dist/web/routes/config.d.ts +56 -0
  388. package/dist/web/routes/config.d.ts.map +1 -0
  389. package/dist/web/routes/config.js +243 -0
  390. package/dist/web/routes/config.js.map +1 -0
  391. package/dist/web/routes/decisions.js +1 -1
  392. package/dist/web/routes/decisions.js.map +1 -1
  393. package/dist/web/routes/error-handler.d.ts +0 -4
  394. package/dist/web/routes/error-handler.d.ts.map +1 -1
  395. package/dist/web/routes/error-handler.js +0 -8
  396. package/dist/web/routes/error-handler.js.map +1 -1
  397. package/dist/web/routes/events.d.ts.map +1 -1
  398. package/dist/web/routes/events.js +2 -1
  399. package/dist/web/routes/events.js.map +1 -1
  400. package/dist/web/routes/insights.d.ts.map +1 -1
  401. package/dist/web/routes/insights.js +0 -0
  402. package/dist/web/routes/insights.js.map +1 -1
  403. package/dist/web/routes/knowledge.d.ts +43 -2
  404. package/dist/web/routes/knowledge.d.ts.map +1 -1
  405. package/dist/web/routes/knowledge.js +117 -6
  406. package/dist/web/routes/knowledge.js.map +1 -1
  407. package/dist/web/routes/pipeline.d.ts +0 -9
  408. package/dist/web/routes/pipeline.d.ts.map +1 -1
  409. package/dist/web/routes/pipeline.js +0 -4
  410. package/dist/web/routes/pipeline.js.map +1 -1
  411. package/dist/web/routes/rules.d.ts.map +1 -1
  412. package/dist/web/routes/rules.js +20 -6
  413. package/dist/web/routes/rules.js.map +1 -1
  414. package/dist/web/routes/sessions.d.ts.map +1 -1
  415. package/dist/web/routes/sessions.js +8 -7
  416. package/dist/web/routes/sessions.js.map +1 -1
  417. package/dist/web/routes/skill-stats.d.ts.map +1 -1
  418. package/dist/web/routes/skill-stats.js +153 -16
  419. package/dist/web/routes/skill-stats.js.map +1 -1
  420. package/dist/web/routes/skills-distill.js +1 -1
  421. package/dist/web/routes/skills-distill.js.map +1 -1
  422. package/dist/web/routes/stats.d.ts.map +1 -1
  423. package/dist/web/routes/stats.js +2 -1
  424. package/dist/web/routes/stats.js.map +1 -1
  425. package/dist/web/routes/task-timeline.d.ts +95 -19
  426. package/dist/web/routes/task-timeline.d.ts.map +1 -1
  427. package/dist/web/routes/task-timeline.js +344 -88
  428. package/dist/web/routes/task-timeline.js.map +1 -1
  429. package/dist/web/routes/tasks.d.ts.map +1 -1
  430. package/dist/web/routes/tasks.js +52 -30
  431. package/dist/web/routes/tasks.js.map +1 -1
  432. package/dist/web/routes/violations.d.ts +1 -1
  433. package/dist/web/routes/violations.d.ts.map +1 -1
  434. package/dist/web/routes/violations.js +3 -2
  435. package/dist/web/routes/violations.js.map +1 -1
  436. package/dist/web/server.d.ts.map +1 -1
  437. package/dist/web/server.js +20 -0
  438. package/dist/web/server.js.map +1 -1
  439. package/dist/web/services/agent-distill-manager.d.ts +122 -0
  440. package/dist/web/services/agent-distill-manager.d.ts.map +1 -0
  441. package/dist/web/services/agent-distill-manager.js +397 -0
  442. package/dist/web/services/agent-distill-manager.js.map +1 -0
  443. package/dist/web/services/distill-manager.d.ts +47 -0
  444. package/dist/web/services/distill-manager.d.ts.map +1 -1
  445. package/dist/web/services/distill-manager.js +103 -0
  446. package/dist/web/services/distill-manager.js.map +1 -1
  447. package/dist/web/static/assets/AgentDetailPage-DlUeA1sX.js +2 -0
  448. package/dist/web/static/assets/AgentDetailPage-DlUeA1sX.js.map +1 -0
  449. package/dist/web/static/assets/AgentDistillRunPage-Cybo4bii.js +3 -0
  450. package/dist/web/static/assets/AgentDistillRunPage-Cybo4bii.js.map +1 -0
  451. package/dist/web/static/assets/AgentsPage-Qd9FExLG.js +2 -0
  452. package/dist/web/static/assets/AgentsPage-Qd9FExLG.js.map +1 -0
  453. package/dist/web/static/assets/DaemonHealthPage-DTSVqtrI.js +2 -0
  454. package/dist/web/static/assets/DaemonHealthPage-DTSVqtrI.js.map +1 -0
  455. package/dist/web/static/assets/DecisionDetailPage-b4BA8dhc.js +2 -0
  456. package/dist/web/static/assets/DecisionDetailPage-b4BA8dhc.js.map +1 -0
  457. package/dist/web/static/assets/DecisionsPage-a3NRo_T7.js +2 -0
  458. package/dist/web/static/assets/DecisionsPage-a3NRo_T7.js.map +1 -0
  459. package/dist/web/static/assets/DiagnosticsPage-DIVdiIQG.js +2 -0
  460. package/dist/web/static/assets/DiagnosticsPage-DIVdiIQG.js.map +1 -0
  461. package/dist/web/static/assets/DistillDetailPage-U6a3l2iP.js +4 -0
  462. package/dist/web/static/assets/DistillDetailPage-U6a3l2iP.js.map +1 -0
  463. package/dist/web/static/assets/DistillPage-O7BHtRN8.js +2 -0
  464. package/dist/web/static/assets/DistillPage-O7BHtRN8.js.map +1 -0
  465. package/dist/web/static/assets/DistillRunPage-D1JuRWWr.js +2 -0
  466. package/dist/web/static/assets/DistillRunPage-D1JuRWWr.js.map +1 -0
  467. package/dist/web/static/assets/GlobalScopeHint-Q3wTJx3F.js +2 -0
  468. package/dist/web/static/assets/GlobalScopeHint-Q3wTJx3F.js.map +1 -0
  469. package/dist/web/static/assets/IssueDetailPage-BDfrtk2C.js +2 -0
  470. package/dist/web/static/assets/IssueDetailPage-BDfrtk2C.js.map +1 -0
  471. package/dist/web/static/assets/IssuesPage-SKmhlCrw.js +2 -0
  472. package/dist/web/static/assets/IssuesPage-SKmhlCrw.js.map +1 -0
  473. package/dist/web/static/assets/KbDetailPage-Yna86Na8.js +2 -0
  474. package/dist/web/static/assets/KbDetailPage-Yna86Na8.js.map +1 -0
  475. package/dist/web/static/assets/KbHitsPage-Cljl7H9p.js +2 -0
  476. package/dist/web/static/assets/KbHitsPage-Cljl7H9p.js.map +1 -0
  477. package/dist/web/static/assets/{MarkdownRenderer-DZmTl-8J.js → MarkdownRenderer-DlDQNihj.js} +2 -2
  478. package/dist/web/static/assets/{MarkdownRenderer-DZmTl-8J.js.map → MarkdownRenderer-DlDQNihj.js.map} +1 -1
  479. package/dist/web/static/assets/NotFound-LMzbP51V.js +2 -0
  480. package/dist/web/static/assets/{NotFound-BQPh0vaF.js.map → NotFound-LMzbP51V.js.map} +1 -1
  481. package/dist/web/static/assets/SettingsPage-DzoK4PKg.js +2 -0
  482. package/dist/web/static/assets/SettingsPage-DzoK4PKg.js.map +1 -0
  483. package/dist/web/static/assets/SkillDetailPage-BuBJJ_NX.js +2 -0
  484. package/dist/web/static/assets/SkillDetailPage-BuBJJ_NX.js.map +1 -0
  485. package/dist/web/static/assets/SkillsPage-aojkJpBc.js +2 -0
  486. package/dist/web/static/assets/SkillsPage-aojkJpBc.js.map +1 -0
  487. package/dist/web/static/assets/TaskDetailPage-1ckxnGhw.js +4 -0
  488. package/dist/web/static/assets/TaskDetailPage-1ckxnGhw.js.map +1 -0
  489. package/dist/web/static/assets/TasksHubPage-C2PLh3eg.js +6 -0
  490. package/dist/web/static/assets/TasksHubPage-C2PLh3eg.js.map +1 -0
  491. package/dist/web/static/assets/WorkplacePage-DHrp5VxS.js +2 -0
  492. package/dist/web/static/assets/WorkplacePage-DHrp5VxS.js.map +1 -0
  493. package/dist/web/static/assets/arco-DV6xCLhr.js +14 -0
  494. package/dist/web/static/assets/arco-DV6xCLhr.js.map +1 -0
  495. package/dist/web/static/assets/charts-BSV4cyC4.js +37 -0
  496. package/dist/web/static/assets/charts-BSV4cyC4.js.map +1 -0
  497. package/dist/web/static/assets/{index-7bl3kbcx.css → index-B_v_MKlb.css} +1 -1
  498. package/dist/web/static/assets/index-DileOOE4.js +4 -0
  499. package/dist/web/static/assets/index-DileOOE4.js.map +1 -0
  500. package/dist/web/static/assets/markdown-CA7ePUts.js +30 -0
  501. package/dist/web/static/assets/markdown-CA7ePUts.js.map +1 -0
  502. package/dist/web/static/assets/{outcome-DUn1NjlC.js → outcome-BKGy9azt.js} +2 -2
  503. package/dist/web/static/assets/{outcome-DUn1NjlC.js.map → outcome-BKGy9azt.js.map} +1 -1
  504. package/dist/web/static/assets/{query-S6X1S7K9.js → query-CgCOpYWf.js} +2 -2
  505. package/dist/web/static/assets/{query-S6X1S7K9.js.map → query-CgCOpYWf.js.map} +1 -1
  506. package/dist/web/static/assets/{react-router-JVUrkhdd.js → react-router-Cxmg8RuL.js} +3 -3
  507. package/dist/web/static/assets/{react-router-JVUrkhdd.js.map → react-router-Cxmg8RuL.js.map} +1 -1
  508. package/dist/web/static/assets/{syntax-highlighter-BkZfCDsz.js → syntax-highlighter-BDYycNja.js} +3 -3
  509. package/dist/web/static/assets/{syntax-highlighter-BkZfCDsz.js.map → syntax-highlighter-BDYycNja.js.map} +1 -1
  510. package/dist/web/static/assets/task-title-BhOcemuR.js +2 -0
  511. package/dist/web/static/assets/task-title-BhOcemuR.js.map +1 -0
  512. package/dist/web/static/assets/useAgentStats-B-uTgqBd.js +2 -0
  513. package/dist/web/static/assets/useAgentStats-B-uTgqBd.js.map +1 -0
  514. package/dist/web/static/assets/useDecisions-D-G2Ft5T.js +2 -0
  515. package/dist/web/static/assets/useDecisions-D-G2Ft5T.js.map +1 -0
  516. package/dist/web/static/assets/useDistill-21dZkXlT.js +3 -0
  517. package/dist/web/static/assets/useDistill-21dZkXlT.js.map +1 -0
  518. package/dist/web/static/assets/useEffectiveProject-DQiyX54y.js +2 -0
  519. package/dist/web/static/assets/useEffectiveProject-DQiyX54y.js.map +1 -0
  520. package/dist/web/static/assets/useIssuesFeed-CFiyQkAL.js +2 -0
  521. package/dist/web/static/assets/useIssuesFeed-CFiyQkAL.js.map +1 -0
  522. package/dist/web/static/assets/useKbHits-xKXWgqh9.js +2 -0
  523. package/dist/web/static/assets/useKbHits-xKXWgqh9.js.map +1 -0
  524. package/dist/web/static/assets/useSkillStats-B5hbIwdf.js +2 -0
  525. package/dist/web/static/assets/useSkillStats-B5hbIwdf.js.map +1 -0
  526. package/dist/web/static/assets/vendor-DS-q4Eyc.js +36 -0
  527. package/dist/web/static/assets/vendor-DS-q4Eyc.js.map +1 -0
  528. package/dist/web/static/index.html +6 -6
  529. package/package.json +5 -3
  530. package/dist/core/storage/workflow-recommendations.d.ts +0 -124
  531. package/dist/core/storage/workflow-recommendations.d.ts.map +0 -1
  532. package/dist/core/storage/workflow-recommendations.js +0 -274
  533. package/dist/core/storage/workflow-recommendations.js.map +0 -1
  534. package/dist/daemon/services/experience-extractor.d.ts.map +0 -1
  535. package/dist/daemon/services/experience-extractor.js.map +0 -1
  536. package/dist/daemon/services/violation-reporter.d.ts.map +0 -1
  537. package/dist/daemon/services/violation-reporter.js.map +0 -1
  538. package/dist/daemon/templates/agents/harness-hotfix.md +0 -99
  539. package/dist/daemon/templates/agents/hybrid-feature-with-safety.md +0 -104
  540. package/dist/daemon/templates/agents/refactor-specialist.md +0 -98
  541. package/dist/skills/distill/claude-cli-resolver.d.ts.map +0 -1
  542. package/dist/skills/distill/claude-cli-resolver.js.map +0 -1
  543. package/dist/skills/distilled/distilled-defi-amm-security.md +0 -293
  544. package/dist/skills/keyword-score.d.ts +0 -29
  545. package/dist/skills/keyword-score.d.ts.map +0 -1
  546. package/dist/skills/keyword-score.js +0 -54
  547. package/dist/skills/keyword-score.js.map +0 -1
  548. package/dist/web/static/assets/AgentContentPage-DkeRNxok.js +0 -2
  549. package/dist/web/static/assets/AgentContentPage-DkeRNxok.js.map +0 -1
  550. package/dist/web/static/assets/AgentDelegationTable-ByBa0x1l.js +0 -2
  551. package/dist/web/static/assets/AgentDelegationTable-ByBa0x1l.js.map +0 -1
  552. package/dist/web/static/assets/ContextInsightsPage-oUk7_I8u.js +0 -3
  553. package/dist/web/static/assets/ContextInsightsPage-oUk7_I8u.js.map +0 -1
  554. package/dist/web/static/assets/DaemonHealthPage-DG2fyOP7.js +0 -2
  555. package/dist/web/static/assets/DaemonHealthPage-DG2fyOP7.js.map +0 -1
  556. package/dist/web/static/assets/DecisionsPage-CMAPEnKb.js +0 -2
  557. package/dist/web/static/assets/DecisionsPage-CMAPEnKb.js.map +0 -1
  558. package/dist/web/static/assets/DiagnosticsPage-DQd-Zm4r.js +0 -2
  559. package/dist/web/static/assets/DiagnosticsPage-DQd-Zm4r.js.map +0 -1
  560. package/dist/web/static/assets/DriftTab-DqpepOhI.js +0 -2
  561. package/dist/web/static/assets/DriftTab-DqpepOhI.js.map +0 -1
  562. package/dist/web/static/assets/HealthHomePage-CN6zNIie.js +0 -3
  563. package/dist/web/static/assets/HealthHomePage-CN6zNIie.js.map +0 -1
  564. package/dist/web/static/assets/KbHitRateTable-ByEIWujF.js +0 -2
  565. package/dist/web/static/assets/KbHitRateTable-ByEIWujF.js.map +0 -1
  566. package/dist/web/static/assets/NotFound-BQPh0vaF.js +0 -2
  567. package/dist/web/static/assets/ProjectSwitcher-D3lZMFd3.js +0 -2
  568. package/dist/web/static/assets/ProjectSwitcher-D3lZMFd3.js.map +0 -1
  569. package/dist/web/static/assets/SettingsPage-oLJBNzQj.js +0 -2
  570. package/dist/web/static/assets/SettingsPage-oLJBNzQj.js.map +0 -1
  571. package/dist/web/static/assets/SkillContentPage-DK5rgfgw.js +0 -2
  572. package/dist/web/static/assets/SkillContentPage-DK5rgfgw.js.map +0 -1
  573. package/dist/web/static/assets/SkillStatsTable-DYMzjEUV.js +0 -2
  574. package/dist/web/static/assets/SkillStatsTable-DYMzjEUV.js.map +0 -1
  575. package/dist/web/static/assets/SkillsDistillTab-C7qaG8q3.js +0 -2
  576. package/dist/web/static/assets/SkillsDistillTab-C7qaG8q3.js.map +0 -1
  577. package/dist/web/static/assets/TasksHubPage-03wsRRsJ.js +0 -6
  578. package/dist/web/static/assets/TasksHubPage-03wsRRsJ.js.map +0 -1
  579. package/dist/web/static/assets/ViolationsPage-DSiLr-9O.js +0 -3
  580. package/dist/web/static/assets/ViolationsPage-DSiLr-9O.js.map +0 -1
  581. package/dist/web/static/assets/arco-Bhi3a6Qp.js +0 -14
  582. package/dist/web/static/assets/arco-Bhi3a6Qp.js.map +0 -1
  583. package/dist/web/static/assets/charts-BuHQWDbQ.js +0 -37
  584. package/dist/web/static/assets/charts-BuHQWDbQ.js.map +0 -1
  585. package/dist/web/static/assets/index-BIYnq1Dx.js +0 -4
  586. package/dist/web/static/assets/index-BIYnq1Dx.js.map +0 -1
  587. package/dist/web/static/assets/useTabsParam-k8qte_0C.js +0 -2
  588. package/dist/web/static/assets/useTabsParam-k8qte_0C.js.map +0 -1
  589. package/dist/web/static/assets/vendor-DWgdB1eY.js +0 -65
  590. package/dist/web/static/assets/vendor-DWgdB1eY.js.map +0 -1
  591. /package/dist/{skills/distill → core/utils}/claude-cli-resolver.d.ts +0 -0
@@ -0,0 +1,94 @@
1
+ /**
2
+ * @file codegraph-sync.ts
3
+ * codegraph Phase 3 — daemon-side periodic incremental graph sync.
4
+ *
5
+ * decision 95df9d97 / spec 1112-codegraph-call-graph-spec.md (Phase 3).
6
+ *
7
+ * Keeps the independent codegraph DB (`~/.claude-forge/codegraph.db`) fresh by
8
+ * polling on a `setInterval` cadence and re-extracting ONLY the source files
9
+ * that changed since the last sync.
10
+ *
11
+ * Q3 (user-approved): interval-driven INCREMENTAL rebuild — NO chokidar /
12
+ * fs.watch real-time watcher (most irreversible, deferred). Zero new deps; we
13
+ * reuse the existing daemon `setInterval` + module-level mutex maintenance
14
+ * pattern (mirrors event-ttl-sweep).
15
+ *
16
+ * How "incremental" works
17
+ * -----------------------
18
+ * Cross-file edge resolution needs the whole-repo TypeChecker (an edge's
19
+ * destination may live in another file), so we still build ONE `ts.Program`
20
+ * over `src/` per pass via `buildRepoGraph`. What is incremental is the WRITE:
21
+ * each file's on-disk mtime is diffed against a per-file mtime the service
22
+ * remembers across ticks (seeded from the graph DB's known file set on the
23
+ * first pass), and `replaceFileGraph` is called ONLY for files that are new or
24
+ * whose mtime advanced. Unchanged files' nodes/edges are left untouched.
25
+ *
26
+ * This satisfies the Phase 3 success criterion — "change one source file, wait
27
+ * one sync cycle, that file's nodes update while other files' node rows are
28
+ * untouched (incremental, not full rebuild)". On a no-change tick the pass is a
29
+ * cheap stat scan with zero writes (the graph build still runs to know the file
30
+ * set; the WRITE is what's gated).
31
+ *
32
+ * The mtime memory is daemon-side (a plain `Map` owned by the caller) so this
33
+ * service needs NO new method on the Phase 1 `CodeGraphStore` — it only uses
34
+ * the existing read-only `listFiles()` to seed "already-tracked" files on the
35
+ * very first pass (those are treated as up-to-date until their mtime advances).
36
+ */
37
+ import type { CodeGraphStore } from '../../core/storage/codegraph.js';
38
+ import type { ConfigStore } from '../config-store.js';
39
+ /** Config key for the sync cadence (minutes). */
40
+ export declare const CFG_CODEGRAPH_SYNC_INTERVAL = "codegraph.sync_interval_minutes";
41
+ /**
42
+ * Default cadence in minutes. The graph only needs to be "reasonably fresh" for
43
+ * pull-style impact queries, and a full-Program parse per pass is non-trivial,
44
+ * so 15 minutes balances freshness against CPU.
45
+ */
46
+ export declare const DEFAULT_CODEGRAPH_SYNC_INTERVAL_MINUTES = 15;
47
+ /** Lower bound — sub-minute polling would thrash the TypeChecker for no gain. */
48
+ export declare const MIN_CODEGRAPH_SYNC_INTERVAL_MINUTES = 1;
49
+ /**
50
+ * Per-file mtime memory carried across sync ticks. Maps a src-relative file
51
+ * path to the ISO mtime last seen/written. Owned by the daemon caller so the
52
+ * service stays storage-method-agnostic.
53
+ */
54
+ export type MtimeCache = Map<string, string>;
55
+ /** Per-file result of a sync pass. */
56
+ export interface CodeGraphSyncResult {
57
+ /** Files re-extracted + rewritten this pass (new or mtime-advanced). */
58
+ changedFiles: string[];
59
+ /** Files seen on disk and already up-to-date (skipped). */
60
+ unchangedCount: number;
61
+ /** Files previously tracked but no longer producing nodes (left as-is). */
62
+ staleFiles: string[];
63
+ /** Total in-scope source files scanned this pass. */
64
+ scannedCount: number;
65
+ }
66
+ /**
67
+ * Resolve the effective sync interval (minutes) from forge_config, clamped to
68
+ * `MIN_CODEGRAPH_SYNC_INTERVAL_MINUTES`. Exported for tests + daemon wiring.
69
+ */
70
+ export declare function resolveSyncIntervalMinutes(configStore: ConfigStore): number;
71
+ /**
72
+ * Run one incremental codegraph sync pass. Idempotent; safe to call repeatedly.
73
+ *
74
+ * 1. Build the repo graph over `srcDir` (one full Program — required for
75
+ * cross-file edge resolution).
76
+ * 2. Group nodes + edges by their (src-relative) file.
77
+ * 3. For each file: compare on-disk mtime to the cached mtime. Re-run
78
+ * `replaceFileGraph` ONLY when the file is new or its mtime advanced; then
79
+ * update the cache.
80
+ *
81
+ * On the very first pass (empty cache) the graph's already-tracked files
82
+ * (`store.listFiles()`) are seeded into the cache from their on-disk mtime so a
83
+ * fresh daemon doesn't needlessly rewrite an already-built graph. Files NOT yet
84
+ * in the graph are treated as new and get written.
85
+ *
86
+ * @param store the codegraph storage (independent DB).
87
+ * @param srcDir absolute path to `src/`.
88
+ * @param cache per-file mtime memory carried across ticks (mutated in place).
89
+ * @returns a per-file breakdown of what changed.
90
+ */
91
+ export declare function syncCodeGraph(store: CodeGraphStore, srcDir: string, cache: MtimeCache): CodeGraphSyncResult;
92
+ /** Resolve `src/` from a project root. */
93
+ export declare function srcDirFromRoot(projectRoot: string): string;
94
+ //# sourceMappingURL=codegraph-sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codegraph-sync.d.ts","sourceRoot":"","sources":["../../../src/daemon/services/codegraph-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAKtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtD,iDAAiD;AACjD,eAAO,MAAM,2BAA2B,oCAAoC,CAAC;AAE7E;;;;GAIG;AACH,eAAO,MAAM,uCAAuC,KAAK,CAAC;AAE1D,iFAAiF;AACjF,eAAO,MAAM,mCAAmC,IAAI,CAAC;AAErD;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAE7C,sCAAsC;AACtC,MAAM,WAAW,mBAAmB;IAClC,wEAAwE;IACxE,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,2DAA2D;IAC3D,cAAc,EAAE,MAAM,CAAC;IACvB,2EAA2E;IAC3E,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,qDAAqD;IACrD,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,WAAW,EAAE,WAAW,GAAG,MAAM,CAM3E;AAcD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,cAAc,EACrB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,UAAU,GAChB,mBAAmB,CAmErB;AAED,0CAA0C;AAC1C,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE1D"}
@@ -0,0 +1,159 @@
1
+ /**
2
+ * @file codegraph-sync.ts
3
+ * codegraph Phase 3 — daemon-side periodic incremental graph sync.
4
+ *
5
+ * decision 95df9d97 / spec 1112-codegraph-call-graph-spec.md (Phase 3).
6
+ *
7
+ * Keeps the independent codegraph DB (`~/.claude-forge/codegraph.db`) fresh by
8
+ * polling on a `setInterval` cadence and re-extracting ONLY the source files
9
+ * that changed since the last sync.
10
+ *
11
+ * Q3 (user-approved): interval-driven INCREMENTAL rebuild — NO chokidar /
12
+ * fs.watch real-time watcher (most irreversible, deferred). Zero new deps; we
13
+ * reuse the existing daemon `setInterval` + module-level mutex maintenance
14
+ * pattern (mirrors event-ttl-sweep).
15
+ *
16
+ * How "incremental" works
17
+ * -----------------------
18
+ * Cross-file edge resolution needs the whole-repo TypeChecker (an edge's
19
+ * destination may live in another file), so we still build ONE `ts.Program`
20
+ * over `src/` per pass via `buildRepoGraph`. What is incremental is the WRITE:
21
+ * each file's on-disk mtime is diffed against a per-file mtime the service
22
+ * remembers across ticks (seeded from the graph DB's known file set on the
23
+ * first pass), and `replaceFileGraph` is called ONLY for files that are new or
24
+ * whose mtime advanced. Unchanged files' nodes/edges are left untouched.
25
+ *
26
+ * This satisfies the Phase 3 success criterion — "change one source file, wait
27
+ * one sync cycle, that file's nodes update while other files' node rows are
28
+ * untouched (incremental, not full rebuild)". On a no-change tick the pass is a
29
+ * cheap stat scan with zero writes (the graph build still runs to know the file
30
+ * set; the WRITE is what's gated).
31
+ *
32
+ * The mtime memory is daemon-side (a plain `Map` owned by the caller) so this
33
+ * service needs NO new method on the Phase 1 `CodeGraphStore` — it only uses
34
+ * the existing read-only `listFiles()` to seed "already-tracked" files on the
35
+ * very first pass (those are treated as up-to-date until their mtime advances).
36
+ */
37
+ import { statSync } from 'node:fs';
38
+ import { join } from 'node:path';
39
+ import { buildRepoGraph } from '../../knowledge/repo-map.js';
40
+ /** Config key for the sync cadence (minutes). */
41
+ export const CFG_CODEGRAPH_SYNC_INTERVAL = 'codegraph.sync_interval_minutes';
42
+ /**
43
+ * Default cadence in minutes. The graph only needs to be "reasonably fresh" for
44
+ * pull-style impact queries, and a full-Program parse per pass is non-trivial,
45
+ * so 15 minutes balances freshness against CPU.
46
+ */
47
+ export const DEFAULT_CODEGRAPH_SYNC_INTERVAL_MINUTES = 15;
48
+ /** Lower bound — sub-minute polling would thrash the TypeChecker for no gain. */
49
+ export const MIN_CODEGRAPH_SYNC_INTERVAL_MINUTES = 1;
50
+ /**
51
+ * Resolve the effective sync interval (minutes) from forge_config, clamped to
52
+ * `MIN_CODEGRAPH_SYNC_INTERVAL_MINUTES`. Exported for tests + daemon wiring.
53
+ */
54
+ export function resolveSyncIntervalMinutes(configStore) {
55
+ const raw = configStore.get(CFG_CODEGRAPH_SYNC_INTERVAL);
56
+ if (raw === undefined)
57
+ return DEFAULT_CODEGRAPH_SYNC_INTERVAL_MINUTES;
58
+ const n = Number(raw);
59
+ if (!Number.isFinite(n) || n <= 0)
60
+ return DEFAULT_CODEGRAPH_SYNC_INTERVAL_MINUTES;
61
+ return Math.max(MIN_CODEGRAPH_SYNC_INTERVAL_MINUTES, Math.floor(n));
62
+ }
63
+ /**
64
+ * Read a file's mtime as an ISO string, or `null` if it can't be stat'd
65
+ * (e.g. deleted between the graph build and this read).
66
+ */
67
+ function readMtime(absPath) {
68
+ try {
69
+ return statSync(absPath).mtime.toISOString();
70
+ }
71
+ catch {
72
+ return null;
73
+ }
74
+ }
75
+ /**
76
+ * Run one incremental codegraph sync pass. Idempotent; safe to call repeatedly.
77
+ *
78
+ * 1. Build the repo graph over `srcDir` (one full Program — required for
79
+ * cross-file edge resolution).
80
+ * 2. Group nodes + edges by their (src-relative) file.
81
+ * 3. For each file: compare on-disk mtime to the cached mtime. Re-run
82
+ * `replaceFileGraph` ONLY when the file is new or its mtime advanced; then
83
+ * update the cache.
84
+ *
85
+ * On the very first pass (empty cache) the graph's already-tracked files
86
+ * (`store.listFiles()`) are seeded into the cache from their on-disk mtime so a
87
+ * fresh daemon doesn't needlessly rewrite an already-built graph. Files NOT yet
88
+ * in the graph are treated as new and get written.
89
+ *
90
+ * @param store the codegraph storage (independent DB).
91
+ * @param srcDir absolute path to `src/`.
92
+ * @param cache per-file mtime memory carried across ticks (mutated in place).
93
+ * @returns a per-file breakdown of what changed.
94
+ */
95
+ export function syncCodeGraph(store, srcDir, cache) {
96
+ // First pass: seed the cache from files the graph already tracks so we don't
97
+ // rewrite an already-built graph on daemon startup. We seed with the current
98
+ // on-disk mtime (best effort) — if a file changed while the daemon was down
99
+ // its mtime won't match a later read only if it changes again, but the graph
100
+ // was built from that same content, so treating it as up-to-date is correct.
101
+ if (cache.size === 0) {
102
+ for (const file of store.listFiles()) {
103
+ const m = readMtime(join(srcDir, file));
104
+ if (m)
105
+ cache.set(file, m);
106
+ }
107
+ }
108
+ const { nodes, edges } = buildRepoGraph(srcDir);
109
+ // Group by file so we can replace per-file (the store resolves cross-file
110
+ // edge destinations against whatever nodes already exist in the DB).
111
+ const nodesByFile = new Map();
112
+ for (const n of nodes) {
113
+ const arr = nodesByFile.get(n.file) ?? [];
114
+ arr.push(n);
115
+ nodesByFile.set(n.file, arr);
116
+ }
117
+ const edgesByFile = new Map();
118
+ for (const e of edges) {
119
+ const arr = edgesByFile.get(e.srcFile) ?? [];
120
+ arr.push(e);
121
+ edgesByFile.set(e.srcFile, arr);
122
+ }
123
+ const changedFiles = [];
124
+ let unchangedCount = 0;
125
+ for (const [file, fileNodes] of nodesByFile) {
126
+ const diskMtime = readMtime(join(srcDir, file));
127
+ const prevMtime = cache.get(file);
128
+ // New file (not in cache) OR mtime advanced / unknown → rewrite.
129
+ const changed = prevMtime === undefined || diskMtime === null || diskMtime !== prevMtime;
130
+ if (!changed) {
131
+ unchangedCount += 1;
132
+ continue;
133
+ }
134
+ store.replaceFileGraph(file, fileNodes, edgesByFile.get(file) ?? [], {
135
+ mtime: diskMtime ?? undefined,
136
+ lang: 'ts',
137
+ });
138
+ if (diskMtime)
139
+ cache.set(file, diskMtime);
140
+ changedFiles.push(file);
141
+ }
142
+ // Files we were tracking that no longer produce nodes (deleted / emptied).
143
+ // We leave their graph rows as-is this pass — pruning deleted files is a
144
+ // separate concern (other files may still resolve edges into them); recorded
145
+ // here for the caller's log + left as a follow-up TODO.
146
+ const liveFiles = new Set(nodesByFile.keys());
147
+ const staleFiles = [...cache.keys()].filter((f) => !liveFiles.has(f));
148
+ return {
149
+ changedFiles,
150
+ unchangedCount,
151
+ staleFiles,
152
+ scannedCount: nodesByFile.size,
153
+ };
154
+ }
155
+ /** Resolve `src/` from a project root. */
156
+ export function srcDirFromRoot(projectRoot) {
157
+ return join(projectRoot, 'src');
158
+ }
159
+ //# sourceMappingURL=codegraph-sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codegraph-sync.js","sourceRoot":"","sources":["../../../src/daemon/services/codegraph-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAQ7D,iDAAiD;AACjD,MAAM,CAAC,MAAM,2BAA2B,GAAG,iCAAiC,CAAC;AAE7E;;;;GAIG;AACH,MAAM,CAAC,MAAM,uCAAuC,GAAG,EAAE,CAAC;AAE1D,iFAAiF;AACjF,MAAM,CAAC,MAAM,mCAAmC,GAAG,CAAC,CAAC;AAqBrD;;;GAGG;AACH,MAAM,UAAU,0BAA0B,CAAC,WAAwB;IACjE,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;IACzD,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,uCAAuC,CAAC;IACtE,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IACtB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,uCAAuC,CAAC;IAClF,OAAO,IAAI,CAAC,GAAG,CAAC,mCAAmC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACtE,CAAC;AAED;;;GAGG;AACH,SAAS,SAAS,CAAC,OAAe;IAChC,IAAI,CAAC;QACH,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,aAAa,CAC3B,KAAqB,EACrB,MAAc,EACd,KAAiB;IAEjB,6EAA6E;IAC7E,6EAA6E;IAC7E,4EAA4E;IAC5E,6EAA6E;IAC7E,6EAA6E;IAC7E,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACrB,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,SAAS,EAAE,EAAE,CAAC;YACrC,MAAM,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;YACxC,IAAI,CAAC;gBAAE,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IAEhD,0EAA0E;IAC1E,qEAAqE;IACrE,MAAM,WAAW,GAAG,IAAI,GAAG,EAA2B,CAAC;IACvD,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAC1C,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACZ,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC/B,CAAC;IACD,MAAM,WAAW,GAAG,IAAI,GAAG,EAA2B,CAAC;IACvD,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAC7C,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACZ,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAClC,CAAC;IAED,MAAM,YAAY,GAAa,EAAE,CAAC;IAClC,IAAI,cAAc,GAAG,CAAC,CAAC;IAEvB,KAAK,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,WAAW,EAAE,CAAC;QAC5C,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;QAChD,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAElC,iEAAiE;QACjE,MAAM,OAAO,GACX,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,SAAS,CAAC;QAE3E,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,cAAc,IAAI,CAAC,CAAC;YACpB,SAAS;QACX,CAAC;QAED,KAAK,CAAC,gBAAgB,CAAC,IAAI,EAAE,SAAS,EAAE,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE;YACnE,KAAK,EAAE,SAAS,IAAI,SAAS;YAC7B,IAAI,EAAE,IAAI;SACX,CAAC,CAAC;QACH,IAAI,SAAS;YAAE,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC1C,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,2EAA2E;IAC3E,yEAAyE;IACzE,6EAA6E;IAC7E,wDAAwD;IACxD,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9C,MAAM,UAAU,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAEtE,OAAO;QACL,YAAY;QACZ,cAAc;QACd,UAAU;QACV,YAAY,EAAE,WAAW,CAAC,IAAI;KAC/B,CAAC;AACJ,CAAC;AAED,0CAA0C;AAC1C,MAAM,UAAU,cAAc,CAAC,WAAmB;IAChD,OAAO,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;AAClC,CAAC"}
@@ -51,6 +51,20 @@ export declare const DECISION_MAKER_COOLDOWN_CONFIG_KEY = "decision_maker_cooldo
51
51
  export declare const DEFAULT_DECISION_MAKER_COOLDOWN_SECONDS = 60;
52
52
  /** Hard upper bound for the cooldown override (1 hour). */
53
53
  export declare const MAX_DECISION_MAKER_COOLDOWN_SECONDS = 3600;
54
+ /**
55
+ * Tool names that represent a sub-agent spawn in the `events` table.
56
+ *
57
+ * Bug P1 (decision e888352d, 2026-06-10): current Claude Code emits agent
58
+ * spawns with `tool_name='Agent'` (live DB: 982 'Agent' rows vs 0 'Task'),
59
+ * while older CC builds used `tool_name='Task'`. Any decision-flow lookup that
60
+ * keys off "was decision-maker spawned" MUST accept both, or it becomes a dud
61
+ * that silently never fires. Centralised here so the cooldown gate
62
+ * (isWithinDecisionMakerCoolDown) and the CLI approve-trace lookup
63
+ * (findRecentDecisionMakerSpawn) stay in lock-step.
64
+ */
65
+ export declare const AGENT_SPAWN_TOOL_NAMES: readonly string[];
66
+ /** True when `tool_name` denotes a sub-agent spawn (Agent | Task). */
67
+ export declare function isAgentSpawnToolName(tool_name: string | null | undefined): boolean;
54
68
  /**
55
69
  * Returns true when the prompt appears to be daemon-injected content
56
70
  * rather than a genuine user message. Guards against G9 false positives
@@ -63,6 +77,29 @@ export declare function isSystemGeneratedPrompt(prompt: string): boolean;
63
77
  * bmad-question-default's "直接修" / "skip" escapes).
64
78
  */
65
79
  export declare function isSkipDecisionKeyword(prompt: string): boolean;
80
+ /**
81
+ * Returns true when the prompt is a trivial mint trigger that should NOT
82
+ * produce a [DECISION HINT] / advisory decision row (decision f61b8a0c,
83
+ * audit #6 — "收紧 mint 启发式,治 advisory 空转").
84
+ *
85
+ * The UserPromptSubmit mint heuristic was too loose: with
86
+ * `DEFAULT_TRIGGER_LEN=0` every non-noise prompt minted an advisory row, so
87
+ * pure-image (no-text) prompts, lone punctuation, and bare inspection commands
88
+ * (`list`, `?`, `...`) produced advisory rows that never advanced — pure
89
+ *空转. This guard filters those before the row is written.
90
+ *
91
+ * Conservative by design — it only fires for prompts with no real decision
92
+ * content:
93
+ * 1. Empty / whitespace-only (pure image with no accompanying text).
94
+ * 2. No alphanumeric/CJK content at all (lone punctuation/symbols: `?`,
95
+ * `...`, `???`).
96
+ * 3. A bare inspection/listing command word (see BARE_INSPECTION_COMMAND_RE).
97
+ *
98
+ * It deliberately does NOT fire on short-but-actionable prompts (`rebase`,
99
+ * `fix lint`, `cd ..`) — those still mint. The existing `isLikelyTrivial`
100
+ * guard (approvals/continuations) remains and is complementary.
101
+ */
102
+ export declare function isTrivialTrigger(prompt: string): boolean;
66
103
  /**
67
104
  * Resolve the effective TRIGGER_LEN from forge_config or use the default.
68
105
  * Used by UserPromptHandler (Step 4.5) to pass into emitDecisionHintSimple.
@@ -116,7 +153,10 @@ export interface DecisionHintResult {
116
153
  * 3. system-generated prompt (G9 fix)
117
154
  *
118
155
  * When all guards pass:
119
- * 1. Writes a `decisions` row (status='pending') to the DB (fail-silent)
156
+ * 1. Writes a `decisions` row (status='advisory' — decision 93e8fff1) to the
157
+ * DB (fail-silent). Advisory is pure bookkeeping in the post-interceptor
158
+ * model (decision 7c924678): it blocks nothing and the Web page renders it
159
+ * without a 批准 button. The status default lives in writeDecision.
120
160
  * 2. Returns `{ message, decision_id }` — UserPromptHandler splices
121
161
  * `decision_id: <id>` into the systemMessage
122
162
  *
@@ -189,15 +229,12 @@ export declare function isContinuation(prompt: string, recentResolved: Array<{
189
229
  /**
190
230
  * Formats the hint message body. Kept separate for unit-test readability.
191
231
  *
192
- * The message tells the main thread:
193
- * 1. That daemon classified this as decision-worthy
194
- * 2. The suggested agent to spawn
195
- * 3. A concrete Task tool command the main thread can copy-paste
196
- * 4. The decision_id magic marker (OQ5) for DB tracking
197
- * 5. Suggested model (haiku for trivial, sonnet for complex)
198
- *
199
- * Output contains `[DECISION HINT]` prefix so CLAUDE.md rule can detect it
200
- * and enforce the spawn (R2 mitigation in spec 1702 § 9).
232
+ * Compressed template (decision ed98c8e8, 2026-06-10): the old 38-line
233
+ * version re-taught the decision-maker 5-step workflow on EVERY hint —
234
+ * pure duplication of the CLAUDE.md "DECISION HINT 协议契约" section
235
+ * (the single authoritative text). Kept: `[DECISION HINT]` marker,
236
+ * copy-paste Task command, model suggestion, `<!-- decision-id -->`
237
+ * magic comment, one-line bypass.
201
238
  */
202
239
  export declare function formatHintMessage(workflowType: string, suggestedAgent: string, intentSummary: string, decision_id: string | null): string;
203
240
  //# sourceMappingURL=decision-hint.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"decision-hint.d.ts","sourceRoot":"","sources":["../../../src/daemon/services/decision-hint.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAGlE;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,IAAI,CAAC;AAErC,gEAAgE;AAChE,eAAO,MAAM,sBAAsB,yBAAyB,CAAC;AAE7D;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,kCAAkC,oCAAoC,CAAC;AAEpF,+EAA+E;AAC/E,eAAO,MAAM,uCAAuC,KAAK,CAAC;AAE1D,2DAA2D;AAC3D,eAAO,MAAM,mCAAmC,OAAO,CAAC;AAgCxD;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAG/D;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAE7D;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI,GAAG,MAAM,CAYxE;AAED;;;;;;;;GAQG;AACH,wBAAgB,mCAAmC,CACjD,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI,GAC7B,MAAM,CAiBR;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,aAAa,EACtB,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACrC,aAAa,EAAE,MAAM,EACrB,KAAK,GAAE,MAAmB,GACzB,OAAO,CAuBT;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,4DAA4D;IAC5D,OAAO,EAAE,MAAM,CAAC;IAChB,6DAA6D;IAC7D,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,UAAU,GAAE,MAA4B,EACxC,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI,EAC9B,YAAY,CAAC,EAAE;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,IAAI,GACP,kBAAkB,GAAG,IAAI,CA+H3B;AA2BD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAqBlD;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,sBAAsB,QAAiB,CAAC;AACrD,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAM3C,wBAAgB,cAAc,CAC5B,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,EACrF,KAAK,GAAE,MAAmB,GACzB,OAAO,CAeT;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,MAAM,EACpB,cAAc,EAAE,MAAM,EACtB,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,GAAG,IAAI,GACzB,MAAM,CAgCR"}
1
+ {"version":3,"file":"decision-hint.d.ts","sourceRoot":"","sources":["../../../src/daemon/services/decision-hint.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAGlE;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,IAAI,CAAC;AAErC,gEAAgE;AAChE,eAAO,MAAM,sBAAsB,yBAAyB,CAAC;AAE7D;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,kCAAkC,oCAAoC,CAAC;AAEpF,+EAA+E;AAC/E,eAAO,MAAM,uCAAuC,KAAK,CAAC;AAE1D,2DAA2D;AAC3D,eAAO,MAAM,mCAAmC,OAAO,CAAC;AAKxD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,sBAAsB,EAAE,SAAS,MAAM,EAA+B,CAAC;AAEpF,sEAAsE;AACtE,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAElF;AA6BD;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAG/D;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAE7D;AAmBD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAUxD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI,GAAG,MAAM,CAYxE;AAED;;;;;;;;GAQG;AACH,wBAAgB,mCAAmC,CACjD,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI,GAC7B,MAAM,CAiBR;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,aAAa,EACtB,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACrC,aAAa,EAAE,MAAM,EACrB,KAAK,GAAE,MAAmB,GACzB,OAAO,CA4BT;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,4DAA4D;IAC5D,OAAO,EAAE,MAAM,CAAC;IAChB,6DAA6D;IAC7D,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,UAAU,GAAE,MAA4B,EACxC,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI,EAC9B,YAAY,CAAC,EAAE;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,IAAI,GACP,kBAAkB,GAAG,IAAI,CA6I3B;AA2BD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAqBlD;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,sBAAsB,QAAiB,CAAC;AACrD,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAM3C,wBAAgB,cAAc,CAC5B,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,EACrF,KAAK,GAAE,MAAmB,GACzB,OAAO,CAeT;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,MAAM,EACpB,cAAc,EAAE,MAAM,EACtB,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,GAAG,IAAI,GACzB,MAAM,CAwBR"}
@@ -54,6 +54,22 @@ export const DEFAULT_DECISION_MAKER_COOLDOWN_SECONDS = 60;
54
54
  export const MAX_DECISION_MAKER_COOLDOWN_SECONDS = 3600;
55
55
  /** Max chars to include in the hint intent summary. */
56
56
  const HINT_SUMMARY_MAX = 150;
57
+ /**
58
+ * Tool names that represent a sub-agent spawn in the `events` table.
59
+ *
60
+ * Bug P1 (decision e888352d, 2026-06-10): current Claude Code emits agent
61
+ * spawns with `tool_name='Agent'` (live DB: 982 'Agent' rows vs 0 'Task'),
62
+ * while older CC builds used `tool_name='Task'`. Any decision-flow lookup that
63
+ * keys off "was decision-maker spawned" MUST accept both, or it becomes a dud
64
+ * that silently never fires. Centralised here so the cooldown gate
65
+ * (isWithinDecisionMakerCoolDown) and the CLI approve-trace lookup
66
+ * (findRecentDecisionMakerSpawn) stay in lock-step.
67
+ */
68
+ export const AGENT_SPAWN_TOOL_NAMES = ['Agent', 'Task'];
69
+ /** True when `tool_name` denotes a sub-agent spawn (Agent | Task). */
70
+ export function isAgentSpawnToolName(tool_name) {
71
+ return AGENT_SPAWN_TOOL_NAMES.includes(tool_name ?? '');
72
+ }
57
73
  /**
58
74
  * Pattern for system-generated prompt prefixes (G9 fix).
59
75
  *
@@ -97,6 +113,57 @@ export function isSystemGeneratedPrompt(prompt) {
97
113
  export function isSkipDecisionKeyword(prompt) {
98
114
  return /skip\s+decision/i.test(prompt);
99
115
  }
116
+ /**
117
+ * Bare inspection / listing command words (decision f61b8a0c, audit #6).
118
+ *
119
+ * A prompt consisting of ONLY one of these words (optionally with trailing
120
+ * punctuation) carries zero decision content — it is a pure listing/status
121
+ * inspection the main thread answers directly. These slip past
122
+ * `isLikelyTrivial` (whose keyword set targets approvals/continuations, not
123
+ * inspection verbs), so they minted advisory rows that never advanced.
124
+ *
125
+ * Kept intentionally narrow: only EXACT single-word matches, so substantive
126
+ * short prompts that merely start with one of these (e.g. `list the failing
127
+ * tests and fix them`) still mint. Existing must-mint fixtures (`rebase`,
128
+ * `fix lint`, `cd ..`, `short`) are not in this set.
129
+ */
130
+ const BARE_INSPECTION_COMMAND_RE = /^(list|ls|pwd|dir|status|help|cat|tree|env|ps|top|clear|cls|history)[\s.!?。!?]*$/i;
131
+ /**
132
+ * Returns true when the prompt is a trivial mint trigger that should NOT
133
+ * produce a [DECISION HINT] / advisory decision row (decision f61b8a0c,
134
+ * audit #6 — "收紧 mint 启发式,治 advisory 空转").
135
+ *
136
+ * The UserPromptSubmit mint heuristic was too loose: with
137
+ * `DEFAULT_TRIGGER_LEN=0` every non-noise prompt minted an advisory row, so
138
+ * pure-image (no-text) prompts, lone punctuation, and bare inspection commands
139
+ * (`list`, `?`, `...`) produced advisory rows that never advanced — pure
140
+ *空转. This guard filters those before the row is written.
141
+ *
142
+ * Conservative by design — it only fires for prompts with no real decision
143
+ * content:
144
+ * 1. Empty / whitespace-only (pure image with no accompanying text).
145
+ * 2. No alphanumeric/CJK content at all (lone punctuation/symbols: `?`,
146
+ * `...`, `???`).
147
+ * 3. A bare inspection/listing command word (see BARE_INSPECTION_COMMAND_RE).
148
+ *
149
+ * It deliberately does NOT fire on short-but-actionable prompts (`rebase`,
150
+ * `fix lint`, `cd ..`) — those still mint. The existing `isLikelyTrivial`
151
+ * guard (approvals/continuations) remains and is complementary.
152
+ */
153
+ export function isTrivialTrigger(prompt) {
154
+ const trimmed = (prompt ?? '').trim();
155
+ // 1. Empty / whitespace-only → pure image or no-text prompt.
156
+ if (trimmed.length === 0)
157
+ return true;
158
+ // 2. No word-content at all (only punctuation / symbols / emoji).
159
+ // \p{L} = any letter (covers CJK), \p{N} = any number.
160
+ if (!/[\p{L}\p{N}]/u.test(trimmed))
161
+ return true;
162
+ // 3. Bare inspection/listing command word (no decision content).
163
+ if (BARE_INSPECTION_COMMAND_RE.test(trimmed))
164
+ return true;
165
+ return false;
166
+ }
100
167
  /**
101
168
  * Resolve the effective TRIGGER_LEN from forge_config or use the default.
102
169
  * Used by UserPromptHandler (Step 4.5) to pass into emitDecisionHintSimple.
@@ -179,7 +246,12 @@ export function isWithinDecisionMakerCoolDown(storage, session_id, windowSeconds
179
246
  limit: 200,
180
247
  });
181
248
  for (const ev of rows) {
182
- if ((ev.tool_name ?? '') !== 'Task')
249
+ // Bug P1 (decision e888352d, 2026-06-10) agent-spawn events now arrive
250
+ // as tool_name='Agent' under current Claude Code (DB live: 982 'Agent'
251
+ // vs 0 'Task'); older CC used 'Task'. Accept BOTH so the cooldown gate
252
+ // is not a dud (previously it was silently never triggering, masked only
253
+ // by the 1h active-pending window). See isAgentSpawnToolName.
254
+ if (!isAgentSpawnToolName(ev.tool_name))
183
255
  continue;
184
256
  const input = (ev.tool_input ?? {});
185
257
  const sub = typeof input['subagent_type'] === 'string' ? input['subagent_type'] : '';
@@ -202,7 +274,10 @@ export function isWithinDecisionMakerCoolDown(storage, session_id, windowSeconds
202
274
  * 3. system-generated prompt (G9 fix)
203
275
  *
204
276
  * When all guards pass:
205
- * 1. Writes a `decisions` row (status='pending') to the DB (fail-silent)
277
+ * 1. Writes a `decisions` row (status='advisory' — decision 93e8fff1) to the
278
+ * DB (fail-silent). Advisory is pure bookkeeping in the post-interceptor
279
+ * model (decision 7c924678): it blocks nothing and the Web page renders it
280
+ * without a 批准 button. The status default lives in writeDecision.
206
281
  * 2. Returns `{ message, decision_id }` — UserPromptHandler splices
207
282
  * `decision_id: <id>` into the systemMessage
208
283
  *
@@ -217,6 +292,16 @@ export function emitDecisionHintSimple(prompt, triggerLen = DEFAULT_TRIGGER_LEN,
217
292
  // Guard: bypass keyword → respect user's wish.
218
293
  if (isSkipDecisionKeyword(prompt))
219
294
  return null;
295
+ // decision f61b8a0c (audit #6) — trivial-trigger filter. Drop pure-image /
296
+ // no-text prompts, lone punctuation, and bare inspection commands (`list`,
297
+ // `?`, `...`) BEFORE any DB write so they don't mint空转 advisory rows.
298
+ // Conservative: short-but-actionable prompts (`rebase`, `fix lint`) still
299
+ // pass. This runs ahead of the cooldown/active-pending lookups so trivial
300
+ // triggers never even touch storage.
301
+ if (isTrivialTrigger(prompt)) {
302
+ logger.debug(`[DecisionHint] gate=trivial-trigger (len=${prompt.trim().length})`);
303
+ return null;
304
+ }
220
305
  // Guard: short prompts (only enforced if triggerLen > 0; default 0 = always emit).
221
306
  if (triggerLen > 0 && prompt.length < triggerLen)
222
307
  return null;
@@ -304,7 +389,6 @@ export function emitDecisionHintSimple(prompt, triggerLen = DEFAULT_TRIGGER_LEN,
304
389
  project_path: eventContext.project_path,
305
390
  trigger_event_id: eventContext.event_id ?? null,
306
391
  trigger_prompt: prompt,
307
- workflow_type: 'pending', // LLM will classify; daemon no longer pre-classifies
308
392
  suggested_agent: 'decision-maker',
309
393
  });
310
394
  logger.debug(`[DecisionHint] wrote decision row id=${decision_id}`);
@@ -313,7 +397,9 @@ export function emitDecisionHintSimple(prompt, triggerLen = DEFAULT_TRIGGER_LEN,
313
397
  logger.warn(`[DecisionHint] failed to write decision row (skipped): ${err}`);
314
398
  }
315
399
  }
316
- const message = formatHintMessage('pending', 'decision-maker', summary, decision_id);
400
+ // formatHintMessage's first arg (workflowType) is display-only; the row
401
+ // itself is minted 'advisory' by writeDecision (decision 93e8fff1).
402
+ const message = formatHintMessage('advisory', 'decision-maker', summary, decision_id);
317
403
  return { message, decision_id };
318
404
  }
319
405
  /**
@@ -440,36 +526,25 @@ export function isContinuation(prompt, recentResolved, nowMs = Date.now()) {
440
526
  /**
441
527
  * Formats the hint message body. Kept separate for unit-test readability.
442
528
  *
443
- * The message tells the main thread:
444
- * 1. That daemon classified this as decision-worthy
445
- * 2. The suggested agent to spawn
446
- * 3. A concrete Task tool command the main thread can copy-paste
447
- * 4. The decision_id magic marker (OQ5) for DB tracking
448
- * 5. Suggested model (haiku for trivial, sonnet for complex)
449
- *
450
- * Output contains `[DECISION HINT]` prefix so CLAUDE.md rule can detect it
451
- * and enforce the spawn (R2 mitigation in spec 1702 § 9).
529
+ * Compressed template (decision ed98c8e8, 2026-06-10): the old 38-line
530
+ * version re-taught the decision-maker 5-step workflow on EVERY hint —
531
+ * pure duplication of the CLAUDE.md "DECISION HINT 协议契约" section
532
+ * (the single authoritative text). Kept: `[DECISION HINT]` marker,
533
+ * copy-paste Task command, model suggestion, `<!-- decision-id -->`
534
+ * magic comment, one-line bypass.
452
535
  */
453
536
  export function formatHintMessage(workflowType, suggestedAgent, intentSummary, decision_id) {
454
537
  const suggestedModel = isLikelyTrivial(intentSummary) ? 'haiku' : 'sonnet';
455
538
  const lines = [
456
539
  '[DECISION HINT]',
457
540
  '',
458
- `daemon 检测到本 prompt 超过阈值,属于值得决策的任务。`,
459
- `建议主线程 spawn \`decision-maker\` agent 出"决策建议"再决定 how to proceed:`,
541
+ `daemon 判定本 prompt 值得决策。主线程第一动作:spawn \`decision-maker\``,
542
+ `(完整链路见 CLAUDE.md「DECISION HINT 协议契约」节):`,
460
543
  '',
461
544
  `Task tool subagent_type='decision-maker' with prompt: "${intentSummary}"`,
462
545
  '',
463
- `decision-maker agent 会:`,
464
- ` 1. 查 KB 理解项目背景`,
465
- ` 2. 读 skill catalog,选 1-3 个相关 skill`,
466
- ` 3. 读 agent catalog,选推荐 implementation agent`,
467
- ` 4. 列 2-3 方案 + pros/cons + LOC 估算`,
468
- ` 5. cf decisions update 持久化方案 + 推荐 agent/skill`,
469
- '',
470
- `建议 model:\`${suggestedModel}\`(trivial 用 haiku 加速,complex 用 sonnet 保质)`,
546
+ `建议 model:\`${suggestedModel}\`(trivial 用 haiku,complex 用 sonnet);原推荐 agent: \`${suggestedAgent}\``,
471
547
  `如果已经知道要做什么,直接告知并忽略本提示即可。`,
472
- `原推荐 agent: \`${suggestedAgent}\``,
473
548
  ];
474
549
  if (decision_id) {
475
550
  lines.push('');
@@ -1 +1 @@
1
- {"version":3,"file":"decision-hint.js","sourceRoot":"","sources":["../../../src/daemon/services/decision-hint.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"decision-hint.js","sourceRoot":"","sources":["../../../src/daemon/services/decision-hint.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"event-ttl-sweep.d.ts","sourceRoot":"","sources":["../../../src/daemon/services/event-ttl-sweep.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtD,MAAM,WAAW,WAAW;IAC1B,6DAA6D;IAC7D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8DAA8D;IAC9D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iFAAiF;IACjF,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,WAAW;IAC1B,iEAAiE;IACjE,UAAU,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,WAAW,EAAE,MAAM,CAAC;IACpB,uEAAuE;IACvE,gBAAgB,EAAE,MAAM,CAAC;IACzB,4EAA4E;IAC5E,cAAc,EAAE,MAAM,CAAC;IACvB,4EAA4E;IAC5E,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,2EAA2E;AAC3E,eAAO,MAAM,cAAc,QAAS,CAAC;AAErC,yCAAyC;AACzC,eAAO,MAAM,YAAY,yBAAyB,CAAC;AACnD,eAAO,MAAM,YAAY,yBAAyB,CAAC;AACnD,eAAO,MAAM,kBAAkB,gCAAgC,CAAC;AAEhE,iEAAiE;AACjE,eAAO,MAAM,QAAQ;;;;CAIX,CAAC;AAWX;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,WAAW,EAAE,IAAI,GAAE,WAAgB,GAAG;IACpF,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;CACxB,CAeA;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,aAAa,EACtB,WAAW,EAAE,WAAW,EACxB,IAAI,GAAE,WAAgB,GACrB,WAAW,CAwCb"}
1
+ {"version":3,"file":"event-ttl-sweep.d.ts","sourceRoot":"","sources":["../../../src/daemon/services/event-ttl-sweep.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtD,MAAM,WAAW,WAAW;IAC1B,6DAA6D;IAC7D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8DAA8D;IAC9D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iFAAiF;IACjF,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,WAAW;IAC1B,iEAAiE;IACjE,UAAU,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,WAAW,EAAE,MAAM,CAAC;IACpB,uEAAuE;IACvE,gBAAgB,EAAE,MAAM,CAAC;IACzB,4EAA4E;IAC5E,cAAc,EAAE,MAAM,CAAC;IACvB,4EAA4E;IAC5E,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,2EAA2E;AAC3E,eAAO,MAAM,cAAc,QAAS,CAAC;AAErC,yCAAyC;AACzC,eAAO,MAAM,YAAY,yBAAyB,CAAC;AACnD,eAAO,MAAM,YAAY,yBAAyB,CAAC;AACnD,eAAO,MAAM,kBAAkB,gCAAgC,CAAC;AAEhE,iEAAiE;AACjE,eAAO,MAAM,QAAQ;;;;CAIX,CAAC;AAWX;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,WAAW,EAAE,IAAI,GAAE,WAAgB,GAAG;IACpF,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;CACxB,CAeA;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,aAAa,EACtB,WAAW,EAAE,WAAW,EACxB,IAAI,GAAE,WAAgB,GACrB,WAAW,CAwCb"}
@@ -30,6 +30,7 @@
30
30
  * untouched here, surviving as the post-TTL fallback for rule audits.
31
31
  */
32
32
  import { logger } from '../../core/utils/logger.js';
33
+ import { DAY_MS } from '../../core/utils/time.js';
33
34
  /** Default rows-per-pass cap. Tuned to ~few-seconds writer-lock budget. */
34
35
  export const SWEEP_MAX_ROWS = 10_000;
35
36
  /** Config keys this service consults. */
@@ -83,8 +84,8 @@ export function resolveSweepConfig(configStore, opts = {}) {
83
84
  export function sweepEventTtl(storage, configStore, opts = {}) {
84
85
  const { warmTtlDays, coldTtlDays, maxRowsPerPass } = resolveSweepConfig(configStore, opts);
85
86
  const now = Date.now();
86
- const warmCutoff = new Date(now - warmTtlDays * 86_400_000).toISOString();
87
- const coldCutoff = new Date(now - coldTtlDays * 86_400_000).toISOString();
87
+ const warmCutoff = new Date(now - warmTtlDays * DAY_MS).toISOString();
88
+ const coldCutoff = new Date(now - coldTtlDays * DAY_MS).toISOString();
88
89
  // Cold first: DELETE row + task_events orphans.
89
90
  let coldDeleted = 0;
90
91
  let taskEventsPruned = 0;
@@ -1 +1 @@
1
- {"version":3,"file":"event-ttl-sweep.js","sourceRoot":"","sources":["../../../src/daemon/services/event-ttl-sweep.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"event-ttl-sweep.js","sourceRoot":"","sources":["../../../src/daemon/services/event-ttl-sweep.ts"],"names":[],"mappings":"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"}