@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,452 @@
1
+ /**
2
+ * @file codegraph.ts
3
+ * CodeGraphStore — storage Operations for the independent codegraph DB.
4
+ *
5
+ * decision 95df9d97 / spec 1112-codegraph-call-graph-spec.md (Phase 1).
6
+ *
7
+ * This is the SQLite data layer for the call graph. Per Open Question Q1
8
+ * (user-approved) the graph lives in its OWN database
9
+ * (`~/.claude-forge/codegraph.db`), NOT the main data.db — so it can be
10
+ * rebuilt / dropped wholesale without disturbing the main DB's TTL sweep /
11
+ * VACUUM logic, and its FTS5 virtual tables stay isolated.
12
+ *
13
+ * Because the graph DB is standalone we do NOT extend SQLiteBase (which is
14
+ * wired to the main schema.sql + its migration chain). Instead this class owns
15
+ * a self-contained DDL string applied on first open ("首次访问建库建表" — the
16
+ * project has no auto-migration framework, CLAUDE.md). All `db.prepare` lives
17
+ * inside this Operations class, honoring the base.ts convention.
18
+ *
19
+ * Tables (cg_ prefix):
20
+ * - cg_files — per-file metadata (source_hash / mtime / lang)
21
+ * - cg_nodes — symbols, one-to-one with repo-map symbols
22
+ * - cg_edges — calls / imports / extends / implements (+ unresolved dst)
23
+ * - cg_nodes_fts — FTS5 over (name, signature, doc) for code_search (Phase 2)
24
+ */
25
+ import Database from 'better-sqlite3';
26
+ import { existsSync, mkdirSync } from 'node:fs';
27
+ import { dirname } from 'node:path';
28
+ // ─────────────────────────────────────────────────────────────────────────────
29
+ // Self-contained DDL (applied idempotently on open)
30
+ // ─────────────────────────────────────────────────────────────────────────────
31
+ const CODEGRAPH_SCHEMA = `
32
+ CREATE TABLE IF NOT EXISTS cg_files (
33
+ file TEXT PRIMARY KEY,
34
+ source_hash TEXT,
35
+ mtime TEXT,
36
+ lang TEXT
37
+ );
38
+
39
+ CREATE TABLE IF NOT EXISTS cg_nodes (
40
+ node_id INTEGER PRIMARY KEY AUTOINCREMENT,
41
+ file TEXT NOT NULL,
42
+ line INTEGER NOT NULL,
43
+ kind TEXT NOT NULL,
44
+ name TEXT NOT NULL,
45
+ signature TEXT,
46
+ doc TEXT,
47
+ exported INTEGER NOT NULL DEFAULT 0,
48
+ FOREIGN KEY(file) REFERENCES cg_files(file) ON DELETE CASCADE
49
+ );
50
+
51
+ CREATE TABLE IF NOT EXISTS cg_edges (
52
+ edge_id INTEGER PRIMARY KEY AUTOINCREMENT,
53
+ src_node INTEGER NOT NULL,
54
+ dst_node INTEGER,
55
+ edge_kind TEXT NOT NULL CHECK(edge_kind IN ('calls','imports','extends','implements','references')),
56
+ dst_unresolved TEXT,
57
+ call_line INTEGER,
58
+ FOREIGN KEY(src_node) REFERENCES cg_nodes(node_id) ON DELETE CASCADE,
59
+ FOREIGN KEY(dst_node) REFERENCES cg_nodes(node_id) ON DELETE CASCADE
60
+ );
61
+
62
+ CREATE VIRTUAL TABLE IF NOT EXISTS cg_nodes_fts USING fts5(
63
+ name,
64
+ signature,
65
+ doc,
66
+ content=''
67
+ );
68
+
69
+ CREATE INDEX IF NOT EXISTS idx_cg_edges_src ON cg_edges(src_node);
70
+ CREATE INDEX IF NOT EXISTS idx_cg_edges_dst ON cg_edges(dst_node);
71
+ CREATE INDEX IF NOT EXISTS idx_cg_edges_kind ON cg_edges(edge_kind);
72
+ CREATE INDEX IF NOT EXISTS idx_cg_nodes_name ON cg_nodes(name);
73
+ CREATE INDEX IF NOT EXISTS idx_cg_nodes_file ON cg_nodes(file);
74
+ `;
75
+ /** Project node rows down to the lighter candidate shape. */
76
+ function toCandidates(rows) {
77
+ return rows.map((r) => ({ name: r.name, file: r.file, line: r.line, kind: r.kind }));
78
+ }
79
+ /**
80
+ * Operations over the independent codegraph SQLite DB.
81
+ *
82
+ * Construct with an absolute DB path (defaults to
83
+ * `FORGE_PATHS.codegraphDb()` at the call site). The DB + tables are created on
84
+ * first open if missing.
85
+ */
86
+ export class CodeGraphStore {
87
+ db;
88
+ dbPath;
89
+ constructor(dbPath) {
90
+ this.dbPath = dbPath;
91
+ const dir = dirname(dbPath);
92
+ if (!existsSync(dir)) {
93
+ mkdirSync(dir, { recursive: true });
94
+ }
95
+ this.db = new Database(dbPath);
96
+ this.db.pragma('journal_mode = WAL');
97
+ this.db.pragma('synchronous = NORMAL');
98
+ this.db.pragma('foreign_keys = ON');
99
+ this.db.exec(CODEGRAPH_SCHEMA);
100
+ this.migrate();
101
+ }
102
+ /**
103
+ * Idempotent additive migrations for DBs created before a column existed.
104
+ * The schema's `CREATE TABLE IF NOT EXISTS` is a no-op on an existing table,
105
+ * so newly-added columns must be ALTER-ed in here. (The project has no auto
106
+ * migration framework; the graph DB is also fully rebuildable via
107
+ * `cf codegraph build --force`, but we migrate to keep stale DBs queryable.)
108
+ */
109
+ migrate() {
110
+ const cols = this.db
111
+ .prepare(`PRAGMA table_info(cg_edges)`)
112
+ .all();
113
+ if (!cols.some((c) => c.name === 'call_line')) {
114
+ this.db.exec(`ALTER TABLE cg_edges ADD COLUMN call_line INTEGER`);
115
+ }
116
+ }
117
+ /** Drop all graph data (used by `build --force` for a clean rebuild). */
118
+ reset() {
119
+ const tx = this.db.transaction(() => {
120
+ this.db.exec(`DELETE FROM cg_edges`);
121
+ // FTS rows are keyed by node rowid; clear the FTS index wholesale first.
122
+ this.db.exec(`INSERT INTO cg_nodes_fts(cg_nodes_fts) VALUES('delete-all')`);
123
+ this.db.exec(`DELETE FROM cg_nodes`);
124
+ this.db.exec(`DELETE FROM cg_files`);
125
+ });
126
+ tx();
127
+ }
128
+ /** Absolute path to the backing DB file. */
129
+ getDbPath() {
130
+ return this.dbPath;
131
+ }
132
+ /**
133
+ * @internal Escape hatch for tests / diagnostics only. Business code MUST
134
+ * use the named methods below — never `db.prepare()` from outside.
135
+ */
136
+ getDatabase() {
137
+ return this.db;
138
+ }
139
+ close() {
140
+ this.db.close();
141
+ }
142
+ /**
143
+ * Replace the entire graph for a single file in one transaction:
144
+ * delete the file's existing nodes/edges (FK cascade handles edges + FTS is
145
+ * cleaned by node-id) then re-insert nodes and edges.
146
+ *
147
+ * Edges are resolved against the GLOBAL node set after insert — so an edge
148
+ * whose destination lives in another file still resolves to a `dst_node`.
149
+ * Destinations not present in the DB are stored in `dst_unresolved`.
150
+ *
151
+ * @param file src-relative file path (the cg_files PK).
152
+ * @param nodes nodes belonging to `file`.
153
+ * @param edges edges whose SOURCE belongs to `file`.
154
+ * @param meta optional per-file metadata (source_hash / mtime / lang).
155
+ */
156
+ replaceFileGraph(file, nodes, edges, meta) {
157
+ const tx = this.db.transaction(() => {
158
+ // 1) Purge old rows for this file. FTS rows are keyed by the old node
159
+ // rowids, so delete them explicitly before the nodes vanish.
160
+ const oldNodeIds = this.db
161
+ .prepare(`SELECT node_id FROM cg_nodes WHERE file = ?`)
162
+ .all(file);
163
+ const delFts = this.db.prepare(`INSERT INTO cg_nodes_fts(cg_nodes_fts, rowid, name, signature, doc)
164
+ VALUES('delete', ?, ?, ?, ?)`);
165
+ for (const { node_id } of oldNodeIds) {
166
+ const row = this.db
167
+ .prepare(`SELECT name, signature, doc FROM cg_nodes WHERE node_id = ?`)
168
+ .get(node_id);
169
+ delFts.run(node_id, row.name, row.signature ?? '', row.doc ?? '');
170
+ }
171
+ // Deleting the cg_files row cascades to cg_nodes, which cascades to
172
+ // cg_edges referencing those nodes as src OR dst.
173
+ this.db.prepare(`DELETE FROM cg_files WHERE file = ?`).run(file);
174
+ // 2) Re-insert the file row + nodes.
175
+ this.db
176
+ .prepare(`INSERT INTO cg_files(file, source_hash, mtime, lang)
177
+ VALUES(?, ?, ?, ?)`)
178
+ .run(file, meta?.source_hash ?? null, meta?.mtime ?? null, meta?.lang ?? 'ts');
179
+ const insNode = this.db.prepare(`INSERT INTO cg_nodes(file, line, kind, name, signature, doc, exported)
180
+ VALUES(?, ?, ?, ?, ?, ?, ?)`);
181
+ const insFts = this.db.prepare(`INSERT INTO cg_nodes_fts(rowid, name, signature, doc) VALUES(?, ?, ?, ?)`);
182
+ for (const n of nodes) {
183
+ const info = insNode.run(n.file, n.line, n.kind, n.name, n.signature ?? '', n.doc ?? null, n.exported ? 1 : 0);
184
+ insFts.run(Number(info.lastInsertRowid), n.name, n.signature ?? '', n.doc ?? '');
185
+ }
186
+ // 3) Insert edges, resolving dst to a node_id by (name, file) when
187
+ // possible. Source nodes are looked up by (name, file) to disambiguate
188
+ // same-named symbols across files; destinations resolve by the same
189
+ // two-tuple (the extractor supplies `dstFile`) so that e.g. one of 22
190
+ // `register` symbols binds to its OWN node, not whichever happened to
191
+ // sort first. Falls back to name-only resolution when `dstFile` is
192
+ // absent (older edges), then to dst_unresolved.
193
+ const insEdge = this.db.prepare(`INSERT INTO cg_edges(src_node, dst_node, edge_kind, dst_unresolved, call_line)
194
+ VALUES(?, ?, ?, ?, ?)`);
195
+ const findSrc = this.db.prepare(`SELECT node_id FROM cg_nodes WHERE name = ? AND file = ? LIMIT 1`);
196
+ const findDstByFile = this.db.prepare(`SELECT node_id FROM cg_nodes WHERE name = ? AND file = ? LIMIT 1`);
197
+ const findDstByName = this.db.prepare(`SELECT node_id FROM cg_nodes WHERE name = ? LIMIT 1`);
198
+ for (const e of edges) {
199
+ const src = findSrc.get(e.srcName, e.srcFile);
200
+ if (!src)
201
+ continue; // src must exist; skip orphan edges defensively
202
+ let dstNode = null;
203
+ let dstUnresolved = e.dstUnresolved ?? null;
204
+ if (e.dstName) {
205
+ let dst;
206
+ if (e.dstFile) {
207
+ dst = findDstByFile.get(e.dstName, e.dstFile);
208
+ }
209
+ // Fallback: name-only (edge predates dstFile, or the dst node landed
210
+ // in a slightly different rel-path than the extractor reported).
211
+ if (!dst) {
212
+ dst = findDstByName.get(e.dstName);
213
+ }
214
+ if (dst) {
215
+ dstNode = dst.node_id;
216
+ }
217
+ else {
218
+ // dstName given but not in the scanned set → record as unresolved.
219
+ dstUnresolved = e.dstName;
220
+ }
221
+ }
222
+ insEdge.run(src.node_id, dstNode, e.edgeKind, dstUnresolved, e.callLine ?? null);
223
+ }
224
+ });
225
+ tx();
226
+ }
227
+ /** Look up a single node by its fully-qualified name (first match). */
228
+ getNode(name) {
229
+ const row = this.db
230
+ .prepare(`SELECT node_id, file, line, kind, name, signature, doc, exported
231
+ FROM cg_nodes WHERE name = ? LIMIT 1`)
232
+ .get(name);
233
+ if (!row)
234
+ return null;
235
+ return { ...row, exported: !!row.exported };
236
+ }
237
+ /** Look up a node by its surrogate id. */
238
+ getNodeById(nodeId) {
239
+ const row = this.db
240
+ .prepare(`SELECT node_id, file, line, kind, name, signature, doc, exported
241
+ FROM cg_nodes WHERE node_id = ?`)
242
+ .get(nodeId);
243
+ if (!row)
244
+ return null;
245
+ return { ...row, exported: !!row.exported };
246
+ }
247
+ /** All nodes sharing a fully-qualified name (collision set). */
248
+ getNodesByName(name) {
249
+ const rows = this.db
250
+ .prepare(`SELECT node_id, file, line, kind, name, signature, doc, exported
251
+ FROM cg_nodes WHERE name = ? ORDER BY file, line`)
252
+ .all(name);
253
+ return rows.map((r) => ({ ...r, exported: !!r.exported }));
254
+ }
255
+ /**
256
+ * Resolve a (possibly bare or suffix) symbol reference to a concrete node.
257
+ *
258
+ * Strategy: exact-name match first; if unique → resolved. If the exact name
259
+ * matches multiple nodes (collision), return them all as candidates so the
260
+ * caller can disambiguate rather than silently `LIMIT 1`. If the exact name
261
+ * misses entirely, fall back to a SUFFIX match (`%.<name>` — e.g. bare
262
+ * `close` → `SQLiteStorage.close`); a unique suffix hit resolves, multiple
263
+ * are surfaced as candidates. This is what makes bare names usable instead of
264
+ * silently returning found=false.
265
+ */
266
+ resolveSymbol(symbol) {
267
+ const exact = this.getNodesByName(symbol);
268
+ if (exact.length === 1) {
269
+ return { node: exact[0], candidates: toCandidates(exact), via: 'exact' };
270
+ }
271
+ if (exact.length > 1) {
272
+ return { node: null, candidates: toCandidates(exact), via: 'exact-ambiguous' };
273
+ }
274
+ // Suffix match: bare `close` → any `*.close`. Anchor on a `.` boundary so
275
+ // `close` does not also match `forceClose`.
276
+ const suffix = this.db
277
+ .prepare(`SELECT node_id, file, line, kind, name, signature, doc, exported
278
+ FROM cg_nodes WHERE name LIKE ? ORDER BY file, line`)
279
+ .all(`%.${symbol}`);
280
+ const suffixRows = suffix.map((r) => ({ ...r, exported: !!r.exported }));
281
+ if (suffixRows.length === 1) {
282
+ return { node: suffixRows[0], candidates: toCandidates(suffixRows), via: 'suffix' };
283
+ }
284
+ if (suffixRows.length > 1) {
285
+ return {
286
+ node: null,
287
+ candidates: toCandidates(suffixRows),
288
+ via: 'suffix-ambiguous',
289
+ };
290
+ }
291
+ return { node: null, candidates: [], via: 'none' };
292
+ }
293
+ /**
294
+ * Resolved callers of `nodeName` — nodes that have a `calls` edge pointing AT
295
+ * a node with this name. The reverse-edge primitive impact analysis builds on.
296
+ *
297
+ * When `nodeId` is supplied the query is scoped to that exact node, so
298
+ * collision names (22 `register`s) do not串台 — each caller set is keyed to
299
+ * its own node. Without `nodeId` the legacy name-only behavior is preserved.
300
+ */
301
+ getCallers(nodeName, nodeId) {
302
+ if (nodeId !== undefined) {
303
+ return this.db
304
+ .prepare(`SELECT src.node_id AS node_id, src.name AS name, src.file AS file,
305
+ src.line AS line, src.kind AS kind, src.signature AS signature,
306
+ e.edge_kind AS edge_kind, e.call_line AS call_line
307
+ FROM cg_edges e
308
+ JOIN cg_nodes src ON src.node_id = e.src_node
309
+ WHERE e.dst_node = ? AND e.edge_kind = 'calls'`)
310
+ .all(nodeId);
311
+ }
312
+ return this.db
313
+ .prepare(`SELECT src.node_id AS node_id, src.name AS name, src.file AS file,
314
+ src.line AS line, src.kind AS kind, src.signature AS signature,
315
+ e.edge_kind AS edge_kind, e.call_line AS call_line
316
+ FROM cg_edges e
317
+ JOIN cg_nodes dst ON dst.node_id = e.dst_node
318
+ JOIN cg_nodes src ON src.node_id = e.src_node
319
+ WHERE dst.name = ? AND e.edge_kind = 'calls'`)
320
+ .all(nodeName);
321
+ }
322
+ /**
323
+ * Resolved callees of `nodeName` — nodes a node with this name `calls`.
324
+ * Unresolved callees (external libs) are excluded; see
325
+ * {@link getUnresolvedCallees}. Pass `nodeId` to scope to a single node.
326
+ */
327
+ getCallees(nodeName, nodeId) {
328
+ if (nodeId !== undefined) {
329
+ return this.db
330
+ .prepare(`SELECT dst.node_id AS node_id, dst.name AS name, dst.file AS file,
331
+ dst.line AS line, dst.kind AS kind, dst.signature AS signature,
332
+ e.edge_kind AS edge_kind, e.call_line AS call_line
333
+ FROM cg_edges e
334
+ JOIN cg_nodes dst ON dst.node_id = e.dst_node
335
+ WHERE e.src_node = ? AND e.edge_kind = 'calls'`)
336
+ .all(nodeId);
337
+ }
338
+ return this.db
339
+ .prepare(`SELECT dst.node_id AS node_id, dst.name AS name, dst.file AS file,
340
+ dst.line AS line, dst.kind AS kind, dst.signature AS signature,
341
+ e.edge_kind AS edge_kind, e.call_line AS call_line
342
+ FROM cg_edges e
343
+ JOIN cg_nodes src ON src.node_id = e.src_node
344
+ JOIN cg_nodes dst ON dst.node_id = e.dst_node
345
+ WHERE src.name = ? AND e.edge_kind = 'calls'`)
346
+ .all(nodeName);
347
+ }
348
+ /**
349
+ * Inheritance callers — who `extends` or `implements` the named symbol.
350
+ * The `extends`/`implements` edges were always extracted + stored but never
351
+ * queryable (getCallers/getCallees hard-coded `edge_kind='calls'`), so
352
+ * "who implements LanguageAdapter" returned empty. This surfaces them.
353
+ *
354
+ * @param kinds which heritage edges to include (default both).
355
+ * @param nodeId scope to a single node id (collision-safe) when supplied.
356
+ */
357
+ getInheritors(nodeName, kinds = ['extends', 'implements'], nodeId) {
358
+ const placeholders = kinds.map(() => '?').join(', ');
359
+ if (nodeId !== undefined) {
360
+ return this.db
361
+ .prepare(`SELECT src.node_id AS node_id, src.name AS name, src.file AS file,
362
+ src.line AS line, src.kind AS kind, src.signature AS signature,
363
+ e.edge_kind AS edge_kind, e.call_line AS call_line
364
+ FROM cg_edges e
365
+ JOIN cg_nodes src ON src.node_id = e.src_node
366
+ WHERE e.dst_node = ? AND e.edge_kind IN (${placeholders})`)
367
+ .all(nodeId, ...kinds);
368
+ }
369
+ return this.db
370
+ .prepare(`SELECT src.node_id AS node_id, src.name AS name, src.file AS file,
371
+ src.line AS line, src.kind AS kind, src.signature AS signature,
372
+ e.edge_kind AS edge_kind, e.call_line AS call_line
373
+ FROM cg_edges e
374
+ JOIN cg_nodes dst ON dst.node_id = e.dst_node
375
+ JOIN cg_nodes src ON src.node_id = e.src_node
376
+ WHERE dst.name = ? AND e.edge_kind IN (${placeholders})`)
377
+ .all(nodeName, ...kinds);
378
+ }
379
+ /**
380
+ * Unresolved (external) callee labels for `nodeName` — edges whose dst could
381
+ * not be resolved to a node in the scanned set. Pass `nodeId` to scope.
382
+ */
383
+ getUnresolvedCallees(nodeName, nodeId) {
384
+ if (nodeId !== undefined) {
385
+ const rows = this.db
386
+ .prepare(`SELECT e.dst_unresolved AS label
387
+ FROM cg_edges e
388
+ WHERE e.src_node = ? AND e.dst_node IS NULL
389
+ AND e.dst_unresolved IS NOT NULL`)
390
+ .all(nodeId);
391
+ return rows.map((r) => r.label);
392
+ }
393
+ const rows = this.db
394
+ .prepare(`SELECT e.dst_unresolved AS label
395
+ FROM cg_edges e
396
+ JOIN cg_nodes src ON src.node_id = e.src_node
397
+ WHERE src.name = ? AND e.dst_node IS NULL AND e.dst_unresolved IS NOT NULL`)
398
+ .all(nodeName);
399
+ return rows.map((r) => r.label);
400
+ }
401
+ /**
402
+ * FTS5 full-text search over (name, signature, doc). Returns up to `limit`
403
+ * hits. The query is passed to FTS5 MATCH; callers should sanitize untrusted
404
+ * input. Falls back to a LIKE substring scan if the FTS MATCH errors (e.g.
405
+ * a syntactically invalid FTS expression).
406
+ */
407
+ searchFts(query, limit = 20) {
408
+ try {
409
+ return this.db
410
+ .prepare(`SELECT n.name AS name, n.file AS file, n.line AS line,
411
+ n.kind AS kind, n.signature AS signature
412
+ FROM cg_nodes_fts f
413
+ JOIN cg_nodes n ON n.node_id = f.rowid
414
+ WHERE cg_nodes_fts MATCH ?
415
+ LIMIT ?`)
416
+ .all(query, limit);
417
+ }
418
+ catch {
419
+ const like = `%${query}%`;
420
+ return this.db
421
+ .prepare(`SELECT name, file, line, kind, signature
422
+ FROM cg_nodes
423
+ WHERE name LIKE ? OR signature LIKE ?
424
+ LIMIT ?`)
425
+ .all(like, like, limit);
426
+ }
427
+ }
428
+ /** Total edge count for a given kind — used by build smoke checks. */
429
+ countEdges(kind) {
430
+ if (kind) {
431
+ const row = this.db
432
+ .prepare(`SELECT COUNT(*) AS c FROM cg_edges WHERE edge_kind = ?`)
433
+ .get(kind);
434
+ return row.c;
435
+ }
436
+ const row = this.db.prepare(`SELECT COUNT(*) AS c FROM cg_edges`).get();
437
+ return row.c;
438
+ }
439
+ /** Total node count. */
440
+ countNodes() {
441
+ const row = this.db.prepare(`SELECT COUNT(*) AS c FROM cg_nodes`).get();
442
+ return row.c;
443
+ }
444
+ /** List the files currently tracked in the graph. */
445
+ listFiles() {
446
+ const rows = this.db
447
+ .prepare(`SELECT file FROM cg_files ORDER BY file`)
448
+ .all();
449
+ return rows.map((r) => r.file);
450
+ }
451
+ }
452
+ //# sourceMappingURL=codegraph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codegraph.js","sourceRoot":"","sources":["../../../src/core/storage/codegraph.ts"],"names":[],"mappings":"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"}
@@ -32,7 +32,28 @@
32
32
  * the daemon never blocks on decision persistence
33
33
  */
34
34
  import type Database from 'better-sqlite3';
35
- export type DecisionStatus = 'pending' | 'resolved' | 'bypassed' | 'expired';
35
+ /**
36
+ * Approval lifecycle status.
37
+ *
38
+ * 'advisory' (decision 93e8fff1, 2026-06-08): the DEFAULT mint status for
39
+ * daemon-minted kind='decision' rows in the advisory model (the PreToolUse
40
+ * interceptor was removed by decision 7c924678). An advisory row is pure
41
+ * bookkeeping — it never blocks a tool and is NOT a "待批准" gate. The Web
42
+ * decisions page renders it as a neutral, no-button status. It is still:
43
+ * - 7-day TTL expirable (expireOldRows widens to advisory), and
44
+ * - chat/CLI-approvable (advisory → resolved via approveDecision), which is
45
+ * the governance path the main thread uses each round.
46
+ * 'pending' remains the REAL approval gate for kind='spec' rows (SpecGate);
47
+ * for kind='decision' it now only appears on legacy (pre-93e8fff1) rows.
48
+ */
49
+ export type DecisionStatus = 'advisory' | 'pending' | 'resolved' | 'bypassed' | 'expired';
50
+ /**
51
+ * Statuses that represent an un-acted-on daemon-minted decision-hint row
52
+ * (decision 93e8fff1). Both 'advisory' (new default) and 'pending' (legacy)
53
+ * must be treated as "still open" by dedup / active-skip / expiry so the
54
+ * governance flow keeps working across the mint-default change.
55
+ */
56
+ export declare const OPEN_DECISION_STATUSES: readonly DecisionStatus[];
36
57
  /**
37
58
  * Implementation outcome of a decision (decision-maker optimization Batch 1.1,
38
59
  * decision a5d5a85b, 2026-06-02). Distinct from DecisionStatus: status is the
@@ -58,7 +79,6 @@ export interface DecisionRow {
58
79
  project_path: string;
59
80
  trigger_event_id: string | null;
60
81
  trigger_prompt: string;
61
- workflow_type: string;
62
82
  suggested_agent: string | null;
63
83
  /**
64
84
  * Row family (C1, 2026-06-02). Defaults to 'decision' for legacy rows. All
@@ -123,7 +143,6 @@ export interface DecisionRecord {
123
143
  project_path: string;
124
144
  trigger_event_id?: string | null;
125
145
  trigger_prompt: string;
126
- workflow_type: string;
127
146
  suggested_agent?: string | null;
128
147
  }
129
148
  /** Fields that decision-maker can fill back after completing its work. */
@@ -278,8 +297,14 @@ export declare class DecisionsOperations {
278
297
  */
279
298
  bypassDecision(id: string, approved_by?: string): void;
280
299
  /**
281
- * Bulk-expire still-'pending' rows whose expires_at < now.
282
- * Returns number of rows touched. Safe to call on every Stop hook.
300
+ * Bulk-expire still-open (advisory|pending) decision-kind rows whose
301
+ * expires_at < now. Returns number of rows touched. Safe to call on every
302
+ * Stop hook.
303
+ *
304
+ * decision 93e8fff1 (2026-06-08): widened from `status='pending'` to
305
+ * `status IN ('advisory','pending')`. CRITICAL — advisory is now the default
306
+ * mint status, so without this advisory rows would NEVER expire and the
307
+ * decisions page would fill up forever (worse than the original symptom).
283
308
  */
284
309
  expireOldRows(now_iso?: string): number;
285
310
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"decisions.d.ts","sourceRoot":"","sources":["../../../src/core/storage/decisions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"decisions.d.ts","sourceRoot":"","sources":["../../../src/core/storage/decisions.ts"],"names":[],"mappings":"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"}