@winspan/claude-forge 8.54.4 → 9.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1053) hide show
  1. package/DEVELOPMENT.md +723 -46
  2. package/README.md +166 -21
  3. package/dist/catalogs/agents.json +67 -0
  4. package/dist/catalogs/skills.json +306 -0
  5. package/dist/claudemd/claudemd-generator.d.ts +45 -45
  6. package/dist/claudemd/claudemd-generator.d.ts.map +1 -1
  7. package/dist/claudemd/claudemd-generator.js +128 -449
  8. package/dist/claudemd/claudemd-generator.js.map +1 -1
  9. package/dist/claudemd/index.d.ts +14 -4
  10. package/dist/claudemd/index.d.ts.map +1 -1
  11. package/dist/claudemd/index.js +15 -4
  12. package/dist/claudemd/index.js.map +1 -1
  13. package/dist/claudemd/resume-manager.d.ts.map +1 -1
  14. package/dist/claudemd/resume-manager.js +37 -9
  15. package/dist/claudemd/resume-manager.js.map +1 -1
  16. package/dist/claudemd/templates/swarm-protocol.md +35 -186
  17. package/dist/claudemd/violations-manager.d.ts +40 -0
  18. package/dist/claudemd/violations-manager.d.ts.map +1 -0
  19. package/dist/claudemd/violations-manager.js +106 -0
  20. package/dist/claudemd/violations-manager.js.map +1 -0
  21. package/dist/cli/commands/admin.d.ts +15 -0
  22. package/dist/cli/commands/admin.d.ts.map +1 -0
  23. package/dist/cli/commands/admin.js +177 -0
  24. package/dist/cli/commands/admin.js.map +1 -0
  25. package/dist/cli/commands/agent.d.ts +169 -0
  26. package/dist/cli/commands/agent.d.ts.map +1 -0
  27. package/dist/cli/commands/agent.js +690 -0
  28. package/dist/cli/commands/agent.js.map +1 -0
  29. package/dist/cli/commands/agents.d.ts +18 -0
  30. package/dist/cli/commands/agents.d.ts.map +1 -0
  31. package/dist/cli/commands/agents.js +160 -0
  32. package/dist/cli/commands/agents.js.map +1 -0
  33. package/dist/cli/commands/bypass.d.ts +18 -0
  34. package/dist/cli/commands/bypass.d.ts.map +1 -0
  35. package/dist/cli/commands/bypass.js +87 -0
  36. package/dist/cli/commands/bypass.js.map +1 -0
  37. package/dist/cli/commands/claudemd.d.ts +60 -0
  38. package/dist/cli/commands/claudemd.d.ts.map +1 -1
  39. package/dist/cli/commands/claudemd.js +174 -37
  40. package/dist/cli/commands/claudemd.js.map +1 -1
  41. package/dist/cli/commands/codegraph.d.ts +17 -0
  42. package/dist/cli/commands/codegraph.d.ts.map +1 -0
  43. package/dist/cli/commands/codegraph.js +263 -0
  44. package/dist/cli/commands/codegraph.js.map +1 -0
  45. package/dist/cli/commands/config.d.ts.map +1 -1
  46. package/dist/cli/commands/config.js +94 -1
  47. package/dist/cli/commands/config.js.map +1 -1
  48. package/dist/cli/commands/daemon.d.ts +39 -0
  49. package/dist/cli/commands/daemon.d.ts.map +1 -1
  50. package/dist/cli/commands/daemon.js +167 -20
  51. package/dist/cli/commands/daemon.js.map +1 -1
  52. package/dist/cli/commands/decisions.d.ts +129 -0
  53. package/dist/cli/commands/decisions.d.ts.map +1 -0
  54. package/dist/cli/commands/decisions.js +706 -0
  55. package/dist/cli/commands/decisions.js.map +1 -0
  56. package/dist/cli/commands/doctor.d.ts +29 -0
  57. package/dist/cli/commands/doctor.d.ts.map +1 -0
  58. package/dist/cli/commands/doctor.js +124 -0
  59. package/dist/cli/commands/doctor.js.map +1 -0
  60. package/dist/cli/commands/entropy.d.ts +35 -0
  61. package/dist/cli/commands/entropy.d.ts.map +1 -0
  62. package/dist/cli/commands/entropy.js +121 -0
  63. package/dist/cli/commands/entropy.js.map +1 -0
  64. package/dist/cli/commands/executions.d.ts +1 -0
  65. package/dist/cli/commands/executions.d.ts.map +1 -1
  66. package/dist/cli/commands/executions.js +12 -2
  67. package/dist/cli/commands/executions.js.map +1 -1
  68. package/dist/cli/commands/fix.d.ts +31 -0
  69. package/dist/cli/commands/fix.d.ts.map +1 -0
  70. package/dist/cli/commands/fix.js +108 -0
  71. package/dist/cli/commands/fix.js.map +1 -0
  72. package/dist/cli/commands/governance.d.ts +21 -0
  73. package/dist/cli/commands/governance.d.ts.map +1 -0
  74. package/dist/cli/commands/governance.js +60 -0
  75. package/dist/cli/commands/governance.js.map +1 -0
  76. package/dist/cli/commands/init.d.ts +27 -0
  77. package/dist/cli/commands/init.d.ts.map +1 -1
  78. package/dist/cli/commands/init.js +158 -146
  79. package/dist/cli/commands/init.js.map +1 -1
  80. package/dist/cli/commands/insights-goal-check.d.ts +54 -0
  81. package/dist/cli/commands/insights-goal-check.d.ts.map +1 -0
  82. package/dist/cli/commands/insights-goal-check.js +318 -0
  83. package/dist/cli/commands/insights-goal-check.js.map +1 -0
  84. package/dist/cli/commands/insights.d.ts +15 -0
  85. package/dist/cli/commands/insights.d.ts.map +1 -0
  86. package/dist/cli/commands/insights.js +127 -0
  87. package/dist/cli/commands/insights.js.map +1 -0
  88. package/dist/cli/commands/knowledge.d.ts +117 -0
  89. package/dist/cli/commands/knowledge.d.ts.map +1 -0
  90. package/dist/cli/commands/knowledge.js +1070 -0
  91. package/dist/cli/commands/knowledge.js.map +1 -0
  92. package/dist/cli/commands/loop.d.ts +95 -0
  93. package/dist/cli/commands/loop.d.ts.map +1 -0
  94. package/dist/cli/commands/loop.js +408 -0
  95. package/dist/cli/commands/loop.js.map +1 -0
  96. package/dist/cli/commands/maintenance.d.ts +33 -0
  97. package/dist/cli/commands/maintenance.d.ts.map +1 -0
  98. package/dist/cli/commands/maintenance.js +75 -0
  99. package/dist/cli/commands/maintenance.js.map +1 -0
  100. package/dist/cli/commands/mcp.d.ts +22 -11
  101. package/dist/cli/commands/mcp.d.ts.map +1 -1
  102. package/dist/cli/commands/mcp.js +93 -5
  103. package/dist/cli/commands/mcp.js.map +1 -1
  104. package/dist/cli/commands/menu.d.ts.map +1 -1
  105. package/dist/cli/commands/menu.js +10 -184
  106. package/dist/cli/commands/menu.js.map +1 -1
  107. package/dist/cli/commands/project.d.ts +98 -0
  108. package/dist/cli/commands/project.d.ts.map +1 -0
  109. package/dist/cli/commands/project.js +382 -0
  110. package/dist/cli/commands/project.js.map +1 -0
  111. package/dist/cli/commands/skills.d.ts +131 -0
  112. package/dist/cli/commands/skills.d.ts.map +1 -1
  113. package/dist/cli/commands/skills.js +404 -118
  114. package/dist/cli/commands/skills.js.map +1 -1
  115. package/dist/cli/commands/spec.d.ts +40 -0
  116. package/dist/cli/commands/spec.d.ts.map +1 -0
  117. package/dist/cli/commands/spec.js +49 -0
  118. package/dist/cli/commands/spec.js.map +1 -0
  119. package/dist/cli/commands/stats.d.ts.map +1 -1
  120. package/dist/cli/commands/stats.js +11 -3
  121. package/dist/cli/commands/stats.js.map +1 -1
  122. package/dist/cli/commands/status.d.ts.map +1 -1
  123. package/dist/cli/commands/status.js +17 -2
  124. package/dist/cli/commands/status.js.map +1 -1
  125. package/dist/cli/commands/trace.d.ts.map +1 -1
  126. package/dist/cli/commands/trace.js +4 -9
  127. package/dist/cli/commands/trace.js.map +1 -1
  128. package/dist/cli/commands/violations.d.ts +14 -0
  129. package/dist/cli/commands/violations.d.ts.map +1 -0
  130. package/dist/cli/commands/violations.js +43 -0
  131. package/dist/cli/commands/violations.js.map +1 -0
  132. package/dist/cli/index.js +34 -0
  133. package/dist/cli/index.js.map +1 -1
  134. package/dist/cli/init/hook-manager.d.ts +1 -1
  135. package/dist/cli/init/hook-manager.d.ts.map +1 -1
  136. package/dist/cli/init/hook-manager.js +6 -0
  137. package/dist/cli/init/hook-manager.js.map +1 -1
  138. package/dist/cli/utils/resolve-session.d.ts +32 -0
  139. package/dist/cli/utils/resolve-session.d.ts.map +1 -0
  140. package/dist/cli/utils/resolve-session.js +39 -0
  141. package/dist/cli/utils/resolve-session.js.map +1 -0
  142. package/dist/core/config.d.ts +4 -1
  143. package/dist/core/config.d.ts.map +1 -1
  144. package/dist/core/config.js +11 -23
  145. package/dist/core/config.js.map +1 -1
  146. package/dist/core/constants.d.ts +51 -13
  147. package/dist/core/constants.d.ts.map +1 -1
  148. package/dist/core/constants.js +63 -13
  149. package/dist/core/constants.js.map +1 -1
  150. package/dist/core/diagnostics/checks.d.ts +151 -0
  151. package/dist/core/diagnostics/checks.d.ts.map +1 -0
  152. package/dist/core/diagnostics/checks.js +766 -0
  153. package/dist/core/diagnostics/checks.js.map +1 -0
  154. package/dist/core/diagnostics/daemon-status.d.ts +77 -0
  155. package/dist/core/diagnostics/daemon-status.d.ts.map +1 -0
  156. package/dist/core/diagnostics/daemon-status.js +113 -0
  157. package/dist/core/diagnostics/daemon-status.js.map +1 -0
  158. package/dist/core/diagnostics/entropy-checks.d.ts +83 -0
  159. package/dist/core/diagnostics/entropy-checks.d.ts.map +1 -0
  160. package/dist/core/diagnostics/entropy-checks.js +400 -0
  161. package/dist/core/diagnostics/entropy-checks.js.map +1 -0
  162. package/dist/core/diagnostics/fix-runner.d.ts +54 -0
  163. package/dist/core/diagnostics/fix-runner.d.ts.map +1 -0
  164. package/dist/core/diagnostics/fix-runner.js +90 -0
  165. package/dist/core/diagnostics/fix-runner.js.map +1 -0
  166. package/dist/core/diagnostics/heartbeat-reader.d.ts +28 -0
  167. package/dist/core/diagnostics/heartbeat-reader.d.ts.map +1 -0
  168. package/dist/core/diagnostics/heartbeat-reader.js +50 -0
  169. package/dist/core/diagnostics/heartbeat-reader.js.map +1 -0
  170. package/dist/core/diagnostics/knip-runner.d.ts +49 -0
  171. package/dist/core/diagnostics/knip-runner.d.ts.map +1 -0
  172. package/dist/core/diagnostics/knip-runner.js +100 -0
  173. package/dist/core/diagnostics/knip-runner.js.map +1 -0
  174. package/dist/core/diagnostics/markers.d.ts +96 -0
  175. package/dist/core/diagnostics/markers.d.ts.map +1 -0
  176. package/dist/core/diagnostics/markers.js +153 -0
  177. package/dist/core/diagnostics/markers.js.map +1 -0
  178. package/dist/core/event-fields.d.ts +27 -0
  179. package/dist/core/event-fields.d.ts.map +1 -1
  180. package/dist/core/event-fields.js +43 -0
  181. package/dist/core/event-fields.js.map +1 -1
  182. package/dist/core/governance/global-inject.d.ts +90 -0
  183. package/dist/core/governance/global-inject.d.ts.map +1 -0
  184. package/dist/core/governance/global-inject.js +184 -0
  185. package/dist/core/governance/global-inject.js.map +1 -0
  186. package/dist/core/insights/agent-anchor-guard.d.ts +77 -0
  187. package/dist/core/insights/agent-anchor-guard.d.ts.map +1 -0
  188. package/dist/core/insights/agent-anchor-guard.js +119 -0
  189. package/dist/core/insights/agent-anchor-guard.js.map +1 -0
  190. package/dist/core/insights/agent-distill-context.d.ts +55 -0
  191. package/dist/core/insights/agent-distill-context.d.ts.map +1 -0
  192. package/dist/core/insights/agent-distill-context.js +146 -0
  193. package/dist/core/insights/agent-distill-context.js.map +1 -0
  194. package/dist/core/insights/agent-distill-spawn.d.ts +56 -0
  195. package/dist/core/insights/agent-distill-spawn.d.ts.map +1 -0
  196. package/dist/core/insights/agent-distill-spawn.js +179 -0
  197. package/dist/core/insights/agent-distill-spawn.js.map +1 -0
  198. package/dist/core/insights/agent-drift.d.ts +66 -0
  199. package/dist/core/insights/agent-drift.d.ts.map +1 -0
  200. package/dist/core/insights/agent-drift.js +109 -0
  201. package/dist/core/insights/agent-drift.js.map +1 -0
  202. package/dist/core/insights/agent-evolution-sources.d.ts +21 -0
  203. package/dist/core/insights/agent-evolution-sources.d.ts.map +1 -0
  204. package/dist/core/insights/agent-evolution-sources.js +36 -0
  205. package/dist/core/insights/agent-evolution-sources.js.map +1 -0
  206. package/dist/core/insights/agent-health.d.ts +142 -0
  207. package/dist/core/insights/agent-health.d.ts.map +1 -0
  208. package/dist/core/insights/agent-health.js +296 -0
  209. package/dist/core/insights/agent-health.js.map +1 -0
  210. package/dist/core/insights/agent-patch-apply.d.ts +45 -0
  211. package/dist/core/insights/agent-patch-apply.d.ts.map +1 -0
  212. package/dist/core/insights/agent-patch-apply.js +165 -0
  213. package/dist/core/insights/agent-patch-apply.js.map +1 -0
  214. package/dist/core/insights/agent-suggest.d.ts +128 -0
  215. package/dist/core/insights/agent-suggest.d.ts.map +1 -0
  216. package/dist/core/insights/agent-suggest.js +284 -0
  217. package/dist/core/insights/agent-suggest.js.map +1 -0
  218. package/dist/core/insights/coverage-tiers.d.ts +46 -0
  219. package/dist/core/insights/coverage-tiers.d.ts.map +1 -0
  220. package/dist/core/insights/coverage-tiers.js +95 -0
  221. package/dist/core/insights/coverage-tiers.js.map +1 -0
  222. package/dist/core/insights/experience-extractor.d.ts +60 -0
  223. package/dist/core/insights/experience-extractor.d.ts.map +1 -0
  224. package/dist/core/insights/experience-extractor.js +319 -0
  225. package/dist/core/insights/experience-extractor.js.map +1 -0
  226. package/dist/core/insights/violation-reporter.d.ts +149 -0
  227. package/dist/core/insights/violation-reporter.d.ts.map +1 -0
  228. package/dist/core/insights/violation-reporter.js +391 -0
  229. package/dist/core/insights/violation-reporter.js.map +1 -0
  230. package/dist/core/loop/loop-engine.d.ts +140 -0
  231. package/dist/core/loop/loop-engine.d.ts.map +1 -0
  232. package/dist/core/loop/loop-engine.js +266 -0
  233. package/dist/core/loop/loop-engine.js.map +1 -0
  234. package/dist/core/queue/index.d.ts +16 -3
  235. package/dist/core/queue/index.d.ts.map +1 -1
  236. package/dist/core/queue/index.js +16 -4
  237. package/dist/core/queue/index.js.map +1 -1
  238. package/dist/core/storage/base.d.ts +317 -0
  239. package/dist/core/storage/base.d.ts.map +1 -1
  240. package/dist/core/storage/base.js +1093 -0
  241. package/dist/core/storage/base.js.map +1 -1
  242. package/dist/core/storage/codec/tool-input-codec.d.ts +93 -0
  243. package/dist/core/storage/codec/tool-input-codec.d.ts.map +1 -0
  244. package/dist/core/storage/codec/tool-input-codec.js +159 -0
  245. package/dist/core/storage/codec/tool-input-codec.js.map +1 -0
  246. package/dist/core/storage/codegraph-types.d.ts +79 -0
  247. package/dist/core/storage/codegraph-types.d.ts.map +1 -0
  248. package/dist/core/storage/codegraph-types.js +14 -0
  249. package/dist/core/storage/codegraph-types.js.map +1 -0
  250. package/dist/core/storage/codegraph.d.ts +186 -0
  251. package/dist/core/storage/codegraph.d.ts.map +1 -0
  252. package/dist/core/storage/codegraph.js +452 -0
  253. package/dist/core/storage/codegraph.js.map +1 -0
  254. package/dist/core/storage/decisions.d.ts +387 -0
  255. package/dist/core/storage/decisions.d.ts.map +1 -0
  256. package/dist/core/storage/decisions.js +534 -0
  257. package/dist/core/storage/decisions.js.map +1 -0
  258. package/dist/core/storage/events.d.ts +239 -8
  259. package/dist/core/storage/events.d.ts.map +1 -1
  260. package/dist/core/storage/events.js +705 -39
  261. package/dist/core/storage/events.js.map +1 -1
  262. package/dist/core/storage/feedback.d.ts +111 -0
  263. package/dist/core/storage/feedback.d.ts.map +1 -0
  264. package/dist/core/storage/feedback.js +186 -0
  265. package/dist/core/storage/feedback.js.map +1 -0
  266. package/dist/core/storage/forge-config.d.ts +40 -0
  267. package/dist/core/storage/forge-config.d.ts.map +1 -0
  268. package/dist/core/storage/forge-config.js +65 -0
  269. package/dist/core/storage/forge-config.js.map +1 -0
  270. package/dist/core/storage/injections.d.ts +68 -0
  271. package/dist/core/storage/injections.d.ts.map +1 -1
  272. package/dist/core/storage/injections.js +131 -5
  273. package/dist/core/storage/injections.js.map +1 -1
  274. package/dist/core/storage/knowledge.d.ts +332 -0
  275. package/dist/core/storage/knowledge.d.ts.map +1 -0
  276. package/dist/core/storage/knowledge.js +589 -0
  277. package/dist/core/storage/knowledge.js.map +1 -0
  278. package/dist/core/storage/maintenance.d.ts +36 -9
  279. package/dist/core/storage/maintenance.d.ts.map +1 -1
  280. package/dist/core/storage/maintenance.js +56 -24
  281. package/dist/core/storage/maintenance.js.map +1 -1
  282. package/dist/core/storage/pipeline-rollup.d.ts +111 -0
  283. package/dist/core/storage/pipeline-rollup.d.ts.map +1 -0
  284. package/dist/core/storage/pipeline-rollup.js +432 -0
  285. package/dist/core/storage/pipeline-rollup.js.map +1 -0
  286. package/dist/core/storage/routing.d.ts +50 -3
  287. package/dist/core/storage/routing.d.ts.map +1 -1
  288. package/dist/core/storage/routing.js +131 -10
  289. package/dist/core/storage/routing.js.map +1 -1
  290. package/dist/core/storage/rows.d.ts +31 -8
  291. package/dist/core/storage/rows.d.ts.map +1 -1
  292. package/dist/core/storage/schema.sql +367 -23
  293. package/dist/core/storage/sessions.d.ts +136 -0
  294. package/dist/core/storage/sessions.d.ts.map +1 -1
  295. package/dist/core/storage/sessions.js +352 -15
  296. package/dist/core/storage/sessions.js.map +1 -1
  297. package/dist/core/storage/skills.d.ts +160 -0
  298. package/dist/core/storage/skills.d.ts.map +1 -1
  299. package/dist/core/storage/skills.js +368 -7
  300. package/dist/core/storage/skills.js.map +1 -1
  301. package/dist/core/storage/sqlite.d.ts +309 -20
  302. package/dist/core/storage/sqlite.d.ts.map +1 -1
  303. package/dist/core/storage/sqlite.js +523 -16
  304. package/dist/core/storage/sqlite.js.map +1 -1
  305. package/dist/core/storage/tasks.d.ts +744 -2
  306. package/dist/core/storage/tasks.d.ts.map +1 -1
  307. package/dist/core/storage/tasks.js +1691 -17
  308. package/dist/core/storage/tasks.js.map +1 -1
  309. package/dist/core/storage/tool-intercepts.d.ts +69 -0
  310. package/dist/core/storage/tool-intercepts.d.ts.map +1 -0
  311. package/dist/core/storage/tool-intercepts.js +116 -0
  312. package/dist/core/storage/tool-intercepts.js.map +1 -0
  313. package/dist/core/types.d.ts +136 -18
  314. package/dist/core/types.d.ts.map +1 -1
  315. package/dist/core/types.js +10 -0
  316. package/dist/core/types.js.map +1 -1
  317. package/dist/core/utils/backup.d.ts +81 -0
  318. package/dist/core/utils/backup.d.ts.map +1 -0
  319. package/dist/core/utils/backup.js +98 -0
  320. package/dist/core/utils/backup.js.map +1 -0
  321. package/dist/core/utils/binary-paths.d.ts +124 -0
  322. package/dist/core/utils/binary-paths.d.ts.map +1 -0
  323. package/dist/core/utils/binary-paths.js +218 -0
  324. package/dist/core/utils/binary-paths.js.map +1 -0
  325. package/dist/core/utils/bypass-token.d.ts +75 -0
  326. package/dist/core/utils/bypass-token.d.ts.map +1 -0
  327. package/dist/core/utils/bypass-token.js +133 -0
  328. package/dist/core/utils/bypass-token.js.map +1 -0
  329. package/dist/core/utils/cc-builtin-agents.d.ts +3 -0
  330. package/dist/core/utils/cc-builtin-agents.d.ts.map +1 -0
  331. package/dist/core/utils/cc-builtin-agents.js +29 -0
  332. package/dist/core/utils/cc-builtin-agents.js.map +1 -0
  333. package/dist/core/utils/claude-cli-resolver.d.ts +26 -0
  334. package/dist/core/utils/claude-cli-resolver.d.ts.map +1 -0
  335. package/dist/core/utils/claude-cli-resolver.js +115 -0
  336. package/dist/core/utils/claude-cli-resolver.js.map +1 -0
  337. package/dist/core/utils/claude-cli-spawn.d.ts +106 -0
  338. package/dist/core/utils/claude-cli-spawn.d.ts.map +1 -0
  339. package/dist/core/utils/claude-cli-spawn.js +219 -0
  340. package/dist/core/utils/claude-cli-spawn.js.map +1 -0
  341. package/dist/core/utils/forge-resume-block.d.ts.map +1 -1
  342. package/dist/core/utils/forge-resume-block.js +3 -2
  343. package/dist/core/utils/forge-resume-block.js.map +1 -1
  344. package/dist/core/utils/logger.d.ts +15 -3
  345. package/dist/core/utils/logger.d.ts.map +1 -1
  346. package/dist/core/utils/logger.js +20 -2
  347. package/dist/core/utils/logger.js.map +1 -1
  348. package/dist/core/utils/noise-prompt.d.ts +97 -0
  349. package/dist/core/utils/noise-prompt.d.ts.map +1 -0
  350. package/dist/core/utils/noise-prompt.js +127 -0
  351. package/dist/core/utils/noise-prompt.js.map +1 -0
  352. package/dist/core/utils/path.d.ts +0 -4
  353. package/dist/core/utils/path.d.ts.map +1 -1
  354. package/dist/core/utils/path.js +0 -7
  355. package/dist/core/utils/path.js.map +1 -1
  356. package/dist/core/utils/time.d.ts +67 -0
  357. package/dist/core/utils/time.d.ts.map +1 -1
  358. package/dist/core/utils/time.js +147 -0
  359. package/dist/core/utils/time.js.map +1 -1
  360. package/dist/daemon/agent-sync.d.ts +24 -0
  361. package/dist/daemon/agent-sync.d.ts.map +1 -0
  362. package/dist/daemon/agent-sync.js +114 -0
  363. package/dist/daemon/agent-sync.js.map +1 -0
  364. package/dist/daemon/config-store.d.ts +55 -0
  365. package/dist/daemon/config-store.d.ts.map +1 -0
  366. package/dist/daemon/config-store.js +146 -0
  367. package/dist/daemon/config-store.js.map +1 -0
  368. package/dist/daemon/event-parser.d.ts +22 -0
  369. package/dist/daemon/event-parser.d.ts.map +1 -1
  370. package/dist/daemon/event-parser.js +54 -3
  371. package/dist/daemon/event-parser.js.map +1 -1
  372. package/dist/daemon/handlers/history-exporter.d.ts.map +1 -1
  373. package/dist/daemon/handlers/history-exporter.js +9 -8
  374. package/dist/daemon/handlers/history-exporter.js.map +1 -1
  375. package/dist/daemon/handlers/post-tool-use.d.ts +66 -4
  376. package/dist/daemon/handlers/post-tool-use.d.ts.map +1 -1
  377. package/dist/daemon/handlers/post-tool-use.js +221 -8
  378. package/dist/daemon/handlers/post-tool-use.js.map +1 -1
  379. package/dist/daemon/handlers/pre-tool-use.d.ts +181 -0
  380. package/dist/daemon/handlers/pre-tool-use.d.ts.map +1 -0
  381. package/dist/daemon/handlers/pre-tool-use.js +618 -0
  382. package/dist/daemon/handlers/pre-tool-use.js.map +1 -0
  383. package/dist/daemon/handlers/stop.d.ts +55 -7
  384. package/dist/daemon/handlers/stop.d.ts.map +1 -1
  385. package/dist/daemon/handlers/stop.js +245 -8
  386. package/dist/daemon/handlers/stop.js.map +1 -1
  387. package/dist/daemon/handlers/user-prompt.d.ts +51 -14
  388. package/dist/daemon/handlers/user-prompt.d.ts.map +1 -1
  389. package/dist/daemon/handlers/user-prompt.js +223 -95
  390. package/dist/daemon/handlers/user-prompt.js.map +1 -1
  391. package/dist/daemon/handlers/violation-content-backfill.d.ts +76 -0
  392. package/dist/daemon/handlers/violation-content-backfill.d.ts.map +1 -0
  393. package/dist/daemon/handlers/violation-content-backfill.js +167 -0
  394. package/dist/daemon/handlers/violation-content-backfill.js.map +1 -0
  395. package/dist/daemon/hook-sync.d.ts.map +1 -1
  396. package/dist/daemon/hook-sync.js +2 -1
  397. package/dist/daemon/hook-sync.js.map +1 -1
  398. package/dist/daemon/index.d.ts +19 -0
  399. package/dist/daemon/index.d.ts.map +1 -1
  400. package/dist/daemon/index.js +439 -86
  401. package/dist/daemon/index.js.map +1 -1
  402. package/dist/daemon/lifecycle.d.ts +48 -1
  403. package/dist/daemon/lifecycle.d.ts.map +1 -1
  404. package/dist/daemon/lifecycle.js +98 -2
  405. package/dist/daemon/lifecycle.js.map +1 -1
  406. package/dist/daemon/router.d.ts +4 -1
  407. package/dist/daemon/router.d.ts.map +1 -1
  408. package/dist/daemon/router.js +4 -2
  409. package/dist/daemon/router.js.map +1 -1
  410. package/dist/daemon/rules/defaults.d.ts +20 -0
  411. package/dist/daemon/rules/defaults.d.ts.map +1 -0
  412. package/dist/daemon/rules/defaults.js +779 -0
  413. package/dist/daemon/rules/defaults.js.map +1 -0
  414. package/dist/daemon/rules/registry.d.ts +47 -0
  415. package/dist/daemon/rules/registry.d.ts.map +1 -0
  416. package/dist/daemon/rules/registry.js +84 -0
  417. package/dist/daemon/rules/registry.js.map +1 -0
  418. package/dist/daemon/rules/types.d.ts +176 -0
  419. package/dist/daemon/rules/types.d.ts.map +1 -0
  420. package/dist/daemon/rules/types.js +15 -0
  421. package/dist/daemon/rules/types.js.map +1 -0
  422. package/dist/daemon/rules/whitelist.d.ts +101 -0
  423. package/dist/daemon/rules/whitelist.d.ts.map +1 -0
  424. package/dist/daemon/rules/whitelist.js +210 -0
  425. package/dist/daemon/rules/whitelist.js.map +1 -0
  426. package/dist/daemon/rules/workflow-defaults.d.ts +52 -0
  427. package/dist/daemon/rules/workflow-defaults.d.ts.map +1 -0
  428. package/dist/daemon/rules/workflow-defaults.js +521 -0
  429. package/dist/daemon/rules/workflow-defaults.js.map +1 -0
  430. package/dist/daemon/server.d.ts +11 -1
  431. package/dist/daemon/server.d.ts.map +1 -1
  432. package/dist/daemon/server.js +7 -1
  433. package/dist/daemon/server.js.map +1 -1
  434. package/dist/daemon/services/codegraph-sync.d.ts +94 -0
  435. package/dist/daemon/services/codegraph-sync.d.ts.map +1 -0
  436. package/dist/daemon/services/codegraph-sync.js +159 -0
  437. package/dist/daemon/services/codegraph-sync.js.map +1 -0
  438. package/dist/daemon/services/context-injector.d.ts +34 -0
  439. package/dist/daemon/services/context-injector.d.ts.map +1 -0
  440. package/dist/daemon/services/context-injector.js +61 -0
  441. package/dist/daemon/services/context-injector.js.map +1 -0
  442. package/dist/daemon/services/decision-hint.d.ts +240 -0
  443. package/dist/daemon/services/decision-hint.d.ts.map +1 -0
  444. package/dist/daemon/services/decision-hint.js +562 -0
  445. package/dist/daemon/services/decision-hint.js.map +1 -0
  446. package/dist/daemon/services/event-ttl-sweep.d.ts +86 -0
  447. package/dist/daemon/services/event-ttl-sweep.d.ts.map +1 -0
  448. package/dist/daemon/services/event-ttl-sweep.js +124 -0
  449. package/dist/daemon/services/event-ttl-sweep.js.map +1 -0
  450. package/dist/daemon/services/feedback-aggregator.d.ts +167 -0
  451. package/dist/daemon/services/feedback-aggregator.d.ts.map +1 -0
  452. package/dist/daemon/services/feedback-aggregator.js +415 -0
  453. package/dist/daemon/services/feedback-aggregator.js.map +1 -0
  454. package/dist/daemon/services/heartbeat-writer.d.ts +46 -0
  455. package/dist/daemon/services/heartbeat-writer.d.ts.map +1 -0
  456. package/dist/daemon/services/heartbeat-writer.js +82 -0
  457. package/dist/daemon/services/heartbeat-writer.js.map +1 -0
  458. package/dist/daemon/services/idle-session-sweeper.d.ts +61 -0
  459. package/dist/daemon/services/idle-session-sweeper.d.ts.map +1 -0
  460. package/dist/daemon/services/idle-session-sweeper.js +94 -0
  461. package/dist/daemon/services/idle-session-sweeper.js.map +1 -0
  462. package/dist/daemon/services/idle-task-budget.d.ts +50 -0
  463. package/dist/daemon/services/idle-task-budget.d.ts.map +1 -0
  464. package/dist/daemon/services/idle-task-budget.js +72 -0
  465. package/dist/daemon/services/idle-task-budget.js.map +1 -0
  466. package/dist/daemon/services/intercept-revive.d.ts +60 -0
  467. package/dist/daemon/services/intercept-revive.d.ts.map +1 -0
  468. package/dist/daemon/services/intercept-revive.js +86 -0
  469. package/dist/daemon/services/intercept-revive.js.map +1 -0
  470. package/dist/daemon/services/intercept-rollback-guard.d.ts +105 -0
  471. package/dist/daemon/services/intercept-rollback-guard.d.ts.map +1 -0
  472. package/dist/daemon/services/intercept-rollback-guard.js +152 -0
  473. package/dist/daemon/services/intercept-rollback-guard.js.map +1 -0
  474. package/dist/daemon/services/intercept-timeout-sweeper.d.ts +58 -0
  475. package/dist/daemon/services/intercept-timeout-sweeper.d.ts.map +1 -0
  476. package/dist/daemon/services/intercept-timeout-sweeper.js +83 -0
  477. package/dist/daemon/services/intercept-timeout-sweeper.js.map +1 -0
  478. package/dist/daemon/services/kb-injector.d.ts +57 -0
  479. package/dist/daemon/services/kb-injector.d.ts.map +1 -0
  480. package/dist/daemon/services/kb-injector.js +148 -0
  481. package/dist/daemon/services/kb-injector.js.map +1 -0
  482. package/dist/daemon/services/kb-rebuild-scheduler.d.ts +95 -0
  483. package/dist/daemon/services/kb-rebuild-scheduler.d.ts.map +1 -0
  484. package/dist/daemon/services/kb-rebuild-scheduler.js +149 -0
  485. package/dist/daemon/services/kb-rebuild-scheduler.js.map +1 -0
  486. package/dist/daemon/services/loop-hint.d.ts +139 -0
  487. package/dist/daemon/services/loop-hint.d.ts.map +1 -0
  488. package/dist/daemon/services/loop-hint.js +272 -0
  489. package/dist/daemon/services/loop-hint.js.map +1 -0
  490. package/dist/daemon/services/outcome-classification-service.d.ts +49 -0
  491. package/dist/daemon/services/outcome-classification-service.d.ts.map +1 -0
  492. package/dist/daemon/services/outcome-classification-service.js +214 -0
  493. package/dist/daemon/services/outcome-classification-service.js.map +1 -0
  494. package/dist/daemon/services/outcome-classifier.d.ts +136 -0
  495. package/dist/daemon/services/outcome-classifier.d.ts.map +1 -0
  496. package/dist/daemon/services/outcome-classifier.js +178 -0
  497. package/dist/daemon/services/outcome-classifier.js.map +1 -0
  498. package/dist/daemon/services/outcome-nudge.d.ts +107 -0
  499. package/dist/daemon/services/outcome-nudge.d.ts.map +1 -0
  500. package/dist/daemon/services/outcome-nudge.js +242 -0
  501. package/dist/daemon/services/outcome-nudge.js.map +1 -0
  502. package/dist/daemon/services/spec-approval.d.ts +127 -0
  503. package/dist/daemon/services/spec-approval.d.ts.map +1 -0
  504. package/dist/daemon/services/spec-approval.js +216 -0
  505. package/dist/daemon/services/spec-approval.js.map +1 -0
  506. package/dist/daemon/services/spec-gate.d.ts +54 -0
  507. package/dist/daemon/services/spec-gate.d.ts.map +1 -0
  508. package/dist/daemon/services/spec-gate.js +113 -0
  509. package/dist/daemon/services/spec-gate.js.map +1 -0
  510. package/dist/daemon/services/task-boundary-classifier.d.ts +78 -0
  511. package/dist/daemon/services/task-boundary-classifier.d.ts.map +1 -0
  512. package/dist/daemon/services/task-boundary-classifier.js +202 -0
  513. package/dist/daemon/services/task-boundary-classifier.js.map +1 -0
  514. package/dist/daemon/services/task-segmenter.d.ts +230 -1
  515. package/dist/daemon/services/task-segmenter.d.ts.map +1 -1
  516. package/dist/daemon/services/task-segmenter.js +527 -17
  517. package/dist/daemon/services/task-segmenter.js.map +1 -1
  518. package/dist/daemon/skill-sync.d.ts +7 -2
  519. package/dist/daemon/skill-sync.d.ts.map +1 -1
  520. package/dist/daemon/skill-sync.js +114 -9
  521. package/dist/daemon/skill-sync.js.map +1 -1
  522. package/dist/daemon/startup/maintenance-schedulers.d.ts +68 -0
  523. package/dist/daemon/startup/maintenance-schedulers.d.ts.map +1 -0
  524. package/dist/daemon/startup/maintenance-schedulers.js +294 -0
  525. package/dist/daemon/startup/maintenance-schedulers.js.map +1 -0
  526. package/dist/daemon/templates/agents/agent-retro-distiller.md +106 -0
  527. package/dist/daemon/templates/agents/claudemd-writer.md +102 -0
  528. package/dist/daemon/templates/agents/coder.md +262 -0
  529. package/dist/daemon/templates/agents/decision-maker.md +546 -0
  530. package/dist/daemon/templates/agents/doc-reviewer.md +118 -0
  531. package/dist/daemon/templates/agents/harness-debug-full.md +196 -0
  532. package/dist/daemon/templates/agents/knowledge-builder.md +120 -0
  533. package/dist/daemon/templates/agents/patch-applier.md +145 -0
  534. package/dist/daemon/templates/agents/planner.md +217 -0
  535. package/dist/daemon/templates/agents/safety-net-implementer.md +278 -0
  536. package/dist/daemon/templates/agents/skill-distiller.md +114 -0
  537. package/dist/daemon/templates/agents/task-boundary-classifier.md +65 -0
  538. package/dist/daemon/templates/agents/verify-agent.md +259 -0
  539. package/dist/daemon/utils/inject-block.d.ts +39 -0
  540. package/dist/daemon/utils/inject-block.d.ts.map +1 -0
  541. package/dist/daemon/utils/inject-block.js +25 -0
  542. package/dist/daemon/utils/inject-block.js.map +1 -0
  543. package/dist/hooks/hook-lib.sh +8 -0
  544. package/dist/hooks/notification.sh +19 -8
  545. package/dist/hooks/post-tool-use.sh +41 -23
  546. package/dist/hooks/pre-tool-use.sh +54 -23
  547. package/dist/hooks/session-start.sh +68 -0
  548. package/dist/hooks/stop.sh +31 -11
  549. package/dist/hooks/user-prompt-submit.sh +37 -21
  550. package/dist/knowledge/adapters/go-adapter.d.ts +65 -0
  551. package/dist/knowledge/adapters/go-adapter.d.ts.map +1 -0
  552. package/dist/knowledge/adapters/go-adapter.js +294 -0
  553. package/dist/knowledge/adapters/go-adapter.js.map +1 -0
  554. package/dist/knowledge/adapters/index.d.ts +41 -0
  555. package/dist/knowledge/adapters/index.d.ts.map +1 -0
  556. package/dist/knowledge/adapters/index.js +71 -0
  557. package/dist/knowledge/adapters/index.js.map +1 -0
  558. package/dist/knowledge/adapters/java-adapter.d.ts +66 -0
  559. package/dist/knowledge/adapters/java-adapter.d.ts.map +1 -0
  560. package/dist/knowledge/adapters/java-adapter.js +260 -0
  561. package/dist/knowledge/adapters/java-adapter.js.map +1 -0
  562. package/dist/knowledge/adapters/js-vue-adapter.d.ts +56 -0
  563. package/dist/knowledge/adapters/js-vue-adapter.d.ts.map +1 -0
  564. package/dist/knowledge/adapters/js-vue-adapter.js +203 -0
  565. package/dist/knowledge/adapters/js-vue-adapter.js.map +1 -0
  566. package/dist/knowledge/adapters/kotlin-adapter.d.ts +55 -0
  567. package/dist/knowledge/adapters/kotlin-adapter.d.ts.map +1 -0
  568. package/dist/knowledge/adapters/kotlin-adapter.js +209 -0
  569. package/dist/knowledge/adapters/kotlin-adapter.js.map +1 -0
  570. package/dist/knowledge/adapters/monorepo-adapter.d.ts +77 -0
  571. package/dist/knowledge/adapters/monorepo-adapter.d.ts.map +1 -0
  572. package/dist/knowledge/adapters/monorepo-adapter.js +170 -0
  573. package/dist/knowledge/adapters/monorepo-adapter.js.map +1 -0
  574. package/dist/knowledge/adapters/python-adapter.d.ts +89 -0
  575. package/dist/knowledge/adapters/python-adapter.d.ts.map +1 -0
  576. package/dist/knowledge/adapters/python-adapter.js +358 -0
  577. package/dist/knowledge/adapters/python-adapter.js.map +1 -0
  578. package/dist/knowledge/adapters/rust-adapter.d.ts +73 -0
  579. package/dist/knowledge/adapters/rust-adapter.d.ts.map +1 -0
  580. package/dist/knowledge/adapters/rust-adapter.js +329 -0
  581. package/dist/knowledge/adapters/rust-adapter.js.map +1 -0
  582. package/dist/knowledge/adapters/types.d.ts +99 -0
  583. package/dist/knowledge/adapters/types.d.ts.map +1 -0
  584. package/dist/knowledge/adapters/types.js +17 -0
  585. package/dist/knowledge/adapters/types.js.map +1 -0
  586. package/dist/knowledge/adapters/typescript-adapter.d.ts +57 -0
  587. package/dist/knowledge/adapters/typescript-adapter.d.ts.map +1 -0
  588. package/dist/knowledge/adapters/typescript-adapter.js +171 -0
  589. package/dist/knowledge/adapters/typescript-adapter.js.map +1 -0
  590. package/dist/knowledge/audit-applier.d.ts +70 -0
  591. package/dist/knowledge/audit-applier.d.ts.map +1 -0
  592. package/dist/knowledge/audit-applier.js +251 -0
  593. package/dist/knowledge/audit-applier.js.map +1 -0
  594. package/dist/knowledge/builder.d.ts +261 -0
  595. package/dist/knowledge/builder.d.ts.map +1 -0
  596. package/dist/knowledge/builder.js +966 -0
  597. package/dist/knowledge/builder.js.map +1 -0
  598. package/dist/knowledge/cli-provider.d.ts +151 -0
  599. package/dist/knowledge/cli-provider.d.ts.map +1 -0
  600. package/dist/knowledge/cli-provider.js +313 -0
  601. package/dist/knowledge/cli-provider.js.map +1 -0
  602. package/dist/knowledge/constants.d.ts +78 -0
  603. package/dist/knowledge/constants.d.ts.map +1 -0
  604. package/dist/knowledge/constants.js +98 -0
  605. package/dist/knowledge/constants.js.map +1 -0
  606. package/dist/knowledge/cross-module.d.ts +139 -0
  607. package/dist/knowledge/cross-module.d.ts.map +1 -0
  608. package/dist/knowledge/cross-module.js +370 -0
  609. package/dist/knowledge/cross-module.js.map +1 -0
  610. package/dist/knowledge/git-hooks.d.ts +67 -0
  611. package/dist/knowledge/git-hooks.d.ts.map +1 -0
  612. package/dist/knowledge/git-hooks.js +258 -0
  613. package/dist/knowledge/git-hooks.js.map +1 -0
  614. package/dist/knowledge/graph/edge-extractor.d.ts +45 -0
  615. package/dist/knowledge/graph/edge-extractor.d.ts.map +1 -0
  616. package/dist/knowledge/graph/edge-extractor.js +242 -0
  617. package/dist/knowledge/graph/edge-extractor.js.map +1 -0
  618. package/dist/knowledge/graph/impact.d.ts +73 -0
  619. package/dist/knowledge/graph/impact.d.ts.map +1 -0
  620. package/dist/knowledge/graph/impact.js +94 -0
  621. package/dist/knowledge/graph/impact.js.map +1 -0
  622. package/dist/knowledge/graph/types.d.ts +22 -0
  623. package/dist/knowledge/graph/types.d.ts.map +1 -0
  624. package/dist/knowledge/graph/types.js +13 -0
  625. package/dist/knowledge/graph/types.js.map +1 -0
  626. package/dist/knowledge/module-hash.d.ts +88 -0
  627. package/dist/knowledge/module-hash.d.ts.map +1 -0
  628. package/dist/knowledge/module-hash.js +162 -0
  629. package/dist/knowledge/module-hash.js.map +1 -0
  630. package/dist/knowledge/project-detector.d.ts +101 -0
  631. package/dist/knowledge/project-detector.d.ts.map +1 -0
  632. package/dist/knowledge/project-detector.js +223 -0
  633. package/dist/knowledge/project-detector.js.map +1 -0
  634. package/dist/knowledge/prompt.d.ts +237 -0
  635. package/dist/knowledge/prompt.d.ts.map +1 -0
  636. package/dist/knowledge/prompt.js +416 -0
  637. package/dist/knowledge/prompt.js.map +1 -0
  638. package/dist/knowledge/query.d.ts +118 -0
  639. package/dist/knowledge/query.d.ts.map +1 -0
  640. package/dist/knowledge/query.js +438 -0
  641. package/dist/knowledge/query.js.map +1 -0
  642. package/dist/knowledge/repo-map.d.ts +97 -0
  643. package/dist/knowledge/repo-map.d.ts.map +1 -0
  644. package/dist/knowledge/repo-map.js +447 -0
  645. package/dist/knowledge/repo-map.js.map +1 -0
  646. package/dist/knowledge/tools/index.d.ts +14 -0
  647. package/dist/knowledge/tools/index.d.ts.map +1 -0
  648. package/dist/knowledge/tools/index.js +11 -0
  649. package/dist/knowledge/tools/index.js.map +1 -0
  650. package/dist/knowledge/tools/knowledge-get-page.d.ts +46 -0
  651. package/dist/knowledge/tools/knowledge-get-page.d.ts.map +1 -0
  652. package/dist/knowledge/tools/knowledge-get-page.js +101 -0
  653. package/dist/knowledge/tools/knowledge-get-page.js.map +1 -0
  654. package/dist/knowledge/tools/knowledge-query.d.ts +77 -0
  655. package/dist/knowledge/tools/knowledge-query.d.ts.map +1 -0
  656. package/dist/knowledge/tools/knowledge-query.js +104 -0
  657. package/dist/knowledge/tools/knowledge-query.js.map +1 -0
  658. package/dist/knowledge/tools/repo-map-lookup.d.ts +45 -0
  659. package/dist/knowledge/tools/repo-map-lookup.d.ts.map +1 -0
  660. package/dist/knowledge/tools/repo-map-lookup.js +82 -0
  661. package/dist/knowledge/tools/repo-map-lookup.js.map +1 -0
  662. package/dist/knowledge/types.d.ts +269 -0
  663. package/dist/knowledge/types.d.ts.map +1 -0
  664. package/dist/knowledge/types.js +10 -0
  665. package/dist/knowledge/types.js.map +1 -0
  666. package/dist/knowledge/validator.d.ts +90 -0
  667. package/dist/knowledge/validator.d.ts.map +1 -0
  668. package/dist/knowledge/validator.js +355 -0
  669. package/dist/knowledge/validator.js.map +1 -0
  670. package/dist/mcp/server.d.ts +64 -8
  671. package/dist/mcp/server.d.ts.map +1 -1
  672. package/dist/mcp/server.js +448 -12
  673. package/dist/mcp/server.js.map +1 -1
  674. package/dist/skills/builtin-skills.d.ts +35 -0
  675. package/dist/skills/builtin-skills.d.ts.map +1 -0
  676. package/dist/skills/builtin-skills.js +68 -0
  677. package/dist/skills/builtin-skills.js.map +1 -0
  678. package/dist/skills/distill/attribution.d.ts +59 -0
  679. package/dist/skills/distill/attribution.d.ts.map +1 -0
  680. package/dist/skills/distill/attribution.js +101 -0
  681. package/dist/skills/distill/attribution.js.map +1 -0
  682. package/dist/skills/distill/distiller.d.ts +161 -0
  683. package/dist/skills/distill/distiller.d.ts.map +1 -0
  684. package/dist/skills/distill/distiller.js +461 -0
  685. package/dist/skills/distill/distiller.js.map +1 -0
  686. package/dist/skills/distill/index.d.ts +223 -0
  687. package/dist/skills/distill/index.d.ts.map +1 -0
  688. package/dist/skills/distill/index.js +466 -0
  689. package/dist/skills/distill/index.js.map +1 -0
  690. package/dist/skills/distill/project-anchor-guard.d.ts +116 -0
  691. package/dist/skills/distill/project-anchor-guard.d.ts.map +1 -0
  692. package/dist/skills/distill/project-anchor-guard.js +334 -0
  693. package/dist/skills/distill/project-anchor-guard.js.map +1 -0
  694. package/dist/skills/distill/topic-deduper.d.ts +77 -0
  695. package/dist/skills/distill/topic-deduper.d.ts.map +1 -0
  696. package/dist/skills/distill/topic-deduper.js +119 -0
  697. package/dist/skills/distill/topic-deduper.js.map +1 -0
  698. package/dist/skills/distill/upstream-fetcher.d.ts +71 -0
  699. package/dist/skills/distill/upstream-fetcher.d.ts.map +1 -0
  700. package/dist/skills/distill/upstream-fetcher.js +202 -0
  701. package/dist/skills/distill/upstream-fetcher.js.map +1 -0
  702. package/dist/skills/distilled/distilled-api-design.md +495 -0
  703. package/dist/skills/distilled/distilled-architecture-decision.md +173 -0
  704. package/dist/skills/distilled/distilled-brainstorming.md +79 -0
  705. package/dist/skills/distilled/distilled-brand-guidelines.md +86 -0
  706. package/dist/skills/distilled/distilled-canvas-design.md +128 -0
  707. package/dist/skills/distilled/distilled-claude-api.md +185 -0
  708. package/dist/skills/distilled/distilled-creator.md +181 -0
  709. package/dist/skills/distilled/distilled-db-schema-design.md +245 -0
  710. package/dist/skills/distilled/distilled-dispatching-parallel-agents.md +136 -0
  711. package/dist/skills/distilled/distilled-doc-coauthoring.md +144 -0
  712. package/dist/skills/distilled/distilled-docx.md +231 -0
  713. package/dist/skills/distilled/distilled-executing-plans.md +148 -0
  714. package/dist/skills/distilled/distilled-finishing-a-development-branch.md +213 -0
  715. package/dist/skills/distilled/distilled-frontend-design.md +118 -0
  716. package/dist/skills/distilled/distilled-harness-engineering.md +242 -0
  717. package/dist/skills/distilled/distilled-karpathy-guidelines.md +104 -0
  718. package/dist/skills/distilled/distilled-performance-optimization.md +175 -0
  719. package/dist/skills/distilled/distilled-receiving-code-review.md +185 -0
  720. package/dist/skills/distilled/distilled-spec-driven-design.md +193 -0
  721. package/dist/skills/distilled/distilled-subagent-driven-development.md +124 -0
  722. package/dist/skills/distilled/distilled-systematic-debugging.md +154 -0
  723. package/dist/skills/distilled/distilled-test-driven-development.md +432 -0
  724. package/dist/skills/distilled/distilled-using-superpowers.md +134 -0
  725. package/dist/skills/distilled/distilled-verification-before-completion.md +213 -0
  726. package/dist/skills/distilled/distilled-writing-skills.md +175 -0
  727. package/dist/skills/registry.d.ts +55 -51
  728. package/dist/skills/registry.d.ts.map +1 -1
  729. package/dist/skills/registry.js +82 -196
  730. package/dist/skills/registry.js.map +1 -1
  731. package/dist/skills/tools/pipeline-suggest.js +14 -14
  732. package/dist/skills/tools/pipeline-suggest.js.map +1 -1
  733. package/dist/skills/tools/skill-invoke.d.ts +3 -2
  734. package/dist/skills/tools/skill-invoke.d.ts.map +1 -1
  735. package/dist/skills/tools/skill-invoke.js +4 -2
  736. package/dist/skills/tools/skill-invoke.js.map +1 -1
  737. package/dist/web/analytics/anti-pattern-detector.d.ts.map +1 -1
  738. package/dist/web/analytics/anti-pattern-detector.js +6 -1
  739. package/dist/web/analytics/anti-pattern-detector.js.map +1 -1
  740. package/dist/web/analytics/drift-detector.d.ts +6 -0
  741. package/dist/web/analytics/drift-detector.d.ts.map +1 -1
  742. package/dist/web/analytics/drift-detector.js +15 -8
  743. package/dist/web/analytics/drift-detector.js.map +1 -1
  744. package/dist/web/analytics/weekly-report.d.ts +13 -0
  745. package/dist/web/analytics/weekly-report.d.ts.map +1 -1
  746. package/dist/web/analytics/weekly-report.js +17 -3
  747. package/dist/web/analytics/weekly-report.js.map +1 -1
  748. package/dist/web/routes/_helpers.d.ts +31 -0
  749. package/dist/web/routes/_helpers.d.ts.map +1 -1
  750. package/dist/web/routes/_helpers.js +33 -0
  751. package/dist/web/routes/_helpers.js.map +1 -1
  752. package/dist/web/routes/agent-content.d.ts +30 -0
  753. package/dist/web/routes/agent-content.d.ts.map +1 -0
  754. package/dist/web/routes/agent-content.js +139 -0
  755. package/dist/web/routes/agent-content.js.map +1 -0
  756. package/dist/web/routes/agent-distill.d.ts +49 -0
  757. package/dist/web/routes/agent-distill.d.ts.map +1 -0
  758. package/dist/web/routes/agent-distill.js +526 -0
  759. package/dist/web/routes/agent-distill.js.map +1 -0
  760. package/dist/web/routes/config.d.ts +56 -0
  761. package/dist/web/routes/config.d.ts.map +1 -0
  762. package/dist/web/routes/config.js +243 -0
  763. package/dist/web/routes/config.js.map +1 -0
  764. package/dist/web/routes/decisions.d.ts +15 -0
  765. package/dist/web/routes/decisions.d.ts.map +1 -0
  766. package/dist/web/routes/decisions.js +181 -0
  767. package/dist/web/routes/decisions.js.map +1 -0
  768. package/dist/web/routes/diagnostics.d.ts +61 -0
  769. package/dist/web/routes/diagnostics.d.ts.map +1 -0
  770. package/dist/web/routes/diagnostics.js +203 -0
  771. package/dist/web/routes/diagnostics.js.map +1 -0
  772. package/dist/web/routes/error-handler.d.ts +0 -4
  773. package/dist/web/routes/error-handler.d.ts.map +1 -1
  774. package/dist/web/routes/error-handler.js +0 -8
  775. package/dist/web/routes/error-handler.js.map +1 -1
  776. package/dist/web/routes/events.d.ts.map +1 -1
  777. package/dist/web/routes/events.js +26 -1
  778. package/dist/web/routes/events.js.map +1 -1
  779. package/dist/web/routes/health.d.ts +33 -0
  780. package/dist/web/routes/health.d.ts.map +1 -0
  781. package/dist/web/routes/health.js +37 -0
  782. package/dist/web/routes/health.js.map +1 -0
  783. package/dist/web/routes/insights.d.ts +0 -5
  784. package/dist/web/routes/insights.d.ts.map +1 -1
  785. package/dist/web/routes/insights.js +0 -0
  786. package/dist/web/routes/insights.js.map +1 -1
  787. package/dist/web/routes/knowledge.d.ts +57 -0
  788. package/dist/web/routes/knowledge.d.ts.map +1 -0
  789. package/dist/web/routes/knowledge.js +772 -0
  790. package/dist/web/routes/knowledge.js.map +1 -0
  791. package/dist/web/routes/patch.d.ts +60 -1
  792. package/dist/web/routes/patch.d.ts.map +1 -1
  793. package/dist/web/routes/patch.js +170 -64
  794. package/dist/web/routes/patch.js.map +1 -1
  795. package/dist/web/routes/pipeline.d.ts +28 -0
  796. package/dist/web/routes/pipeline.d.ts.map +1 -0
  797. package/dist/web/routes/pipeline.js +145 -0
  798. package/dist/web/routes/pipeline.js.map +1 -0
  799. package/dist/web/routes/rules.d.ts.map +1 -1
  800. package/dist/web/routes/rules.js +26 -7
  801. package/dist/web/routes/rules.js.map +1 -1
  802. package/dist/web/routes/sessions.d.ts.map +1 -1
  803. package/dist/web/routes/sessions.js +17 -8
  804. package/dist/web/routes/sessions.js.map +1 -1
  805. package/dist/web/routes/skill-content.d.ts +30 -0
  806. package/dist/web/routes/skill-content.d.ts.map +1 -0
  807. package/dist/web/routes/skill-content.js +117 -0
  808. package/dist/web/routes/skill-content.js.map +1 -0
  809. package/dist/web/routes/skill-stats.d.ts.map +1 -1
  810. package/dist/web/routes/skill-stats.js +153 -16
  811. package/dist/web/routes/skill-stats.js.map +1 -1
  812. package/dist/web/routes/skills-distill.d.ts +29 -0
  813. package/dist/web/routes/skills-distill.d.ts.map +1 -0
  814. package/dist/web/routes/skills-distill.js +552 -0
  815. package/dist/web/routes/skills-distill.js.map +1 -0
  816. package/dist/web/routes/skills.js +7 -7
  817. package/dist/web/routes/skills.js.map +1 -1
  818. package/dist/web/routes/stats.d.ts.map +1 -1
  819. package/dist/web/routes/stats.js +2 -1
  820. package/dist/web/routes/stats.js.map +1 -1
  821. package/dist/web/routes/task-timeline.d.ts +178 -0
  822. package/dist/web/routes/task-timeline.d.ts.map +1 -0
  823. package/dist/web/routes/task-timeline.js +530 -0
  824. package/dist/web/routes/task-timeline.js.map +1 -0
  825. package/dist/web/routes/tasks.d.ts.map +1 -1
  826. package/dist/web/routes/tasks.js +377 -8
  827. package/dist/web/routes/tasks.js.map +1 -1
  828. package/dist/web/routes/trace.d.ts.map +1 -1
  829. package/dist/web/routes/trace.js +3 -2
  830. package/dist/web/routes/trace.js.map +1 -1
  831. package/dist/web/routes/types.d.ts +0 -4
  832. package/dist/web/routes/types.d.ts.map +1 -1
  833. package/dist/web/routes/types.js +1 -1
  834. package/dist/web/routes/types.js.map +1 -1
  835. package/dist/web/routes/violations.d.ts +14 -0
  836. package/dist/web/routes/violations.d.ts.map +1 -0
  837. package/dist/web/routes/violations.js +112 -0
  838. package/dist/web/routes/violations.js.map +1 -0
  839. package/dist/web/server.d.ts.map +1 -1
  840. package/dist/web/server.js +99 -19
  841. package/dist/web/server.js.map +1 -1
  842. package/dist/web/services/agent-distill-manager.d.ts +122 -0
  843. package/dist/web/services/agent-distill-manager.d.ts.map +1 -0
  844. package/dist/web/services/agent-distill-manager.js +397 -0
  845. package/dist/web/services/agent-distill-manager.js.map +1 -0
  846. package/dist/web/services/build-manager.d.ts +72 -0
  847. package/dist/web/services/build-manager.d.ts.map +1 -0
  848. package/dist/web/services/build-manager.js +189 -0
  849. package/dist/web/services/build-manager.js.map +1 -0
  850. package/dist/web/services/distill-manager.d.ts +172 -0
  851. package/dist/web/services/distill-manager.d.ts.map +1 -0
  852. package/dist/web/services/distill-manager.js +411 -0
  853. package/dist/web/services/distill-manager.js.map +1 -0
  854. package/dist/web/static/assets/AgentDetailPage-DlUeA1sX.js +2 -0
  855. package/dist/web/static/assets/AgentDetailPage-DlUeA1sX.js.map +1 -0
  856. package/dist/web/static/assets/AgentDistillRunPage-Cybo4bii.js +3 -0
  857. package/dist/web/static/assets/AgentDistillRunPage-Cybo4bii.js.map +1 -0
  858. package/dist/web/static/assets/AgentsPage-Qd9FExLG.js +2 -0
  859. package/dist/web/static/assets/AgentsPage-Qd9FExLG.js.map +1 -0
  860. package/dist/web/static/assets/DaemonHealthPage-DTSVqtrI.js +2 -0
  861. package/dist/web/static/assets/DaemonHealthPage-DTSVqtrI.js.map +1 -0
  862. package/dist/web/static/assets/DecisionDetailPage-b4BA8dhc.js +2 -0
  863. package/dist/web/static/assets/DecisionDetailPage-b4BA8dhc.js.map +1 -0
  864. package/dist/web/static/assets/DecisionsPage-a3NRo_T7.js +2 -0
  865. package/dist/web/static/assets/DecisionsPage-a3NRo_T7.js.map +1 -0
  866. package/dist/web/static/assets/DiagnosticsPage-DIVdiIQG.js +2 -0
  867. package/dist/web/static/assets/DiagnosticsPage-DIVdiIQG.js.map +1 -0
  868. package/dist/web/static/assets/DistillDetailPage-U6a3l2iP.js +4 -0
  869. package/dist/web/static/assets/DistillDetailPage-U6a3l2iP.js.map +1 -0
  870. package/dist/web/static/assets/DistillPage-O7BHtRN8.js +2 -0
  871. package/dist/web/static/assets/DistillPage-O7BHtRN8.js.map +1 -0
  872. package/dist/web/static/assets/DistillRunPage-D1JuRWWr.js +2 -0
  873. package/dist/web/static/assets/DistillRunPage-D1JuRWWr.js.map +1 -0
  874. package/dist/web/static/assets/GlobalScopeHint-Q3wTJx3F.js +2 -0
  875. package/dist/web/static/assets/GlobalScopeHint-Q3wTJx3F.js.map +1 -0
  876. package/dist/web/static/assets/IssueDetailPage-BDfrtk2C.js +2 -0
  877. package/dist/web/static/assets/IssueDetailPage-BDfrtk2C.js.map +1 -0
  878. package/dist/web/static/assets/IssuesPage-SKmhlCrw.js +2 -0
  879. package/dist/web/static/assets/IssuesPage-SKmhlCrw.js.map +1 -0
  880. package/dist/web/static/assets/KbDetailPage-Yna86Na8.js +2 -0
  881. package/dist/web/static/assets/KbDetailPage-Yna86Na8.js.map +1 -0
  882. package/dist/web/static/assets/KbHitsPage-Cljl7H9p.js +2 -0
  883. package/dist/web/static/assets/KbHitsPage-Cljl7H9p.js.map +1 -0
  884. package/dist/web/static/assets/MarkdownRenderer-DlDQNihj.js +3 -0
  885. package/dist/web/static/assets/MarkdownRenderer-DlDQNihj.js.map +1 -0
  886. package/dist/web/static/assets/NotFound-LMzbP51V.js +2 -0
  887. package/dist/web/static/assets/NotFound-LMzbP51V.js.map +1 -0
  888. package/dist/web/static/assets/SettingsPage-DzoK4PKg.js +2 -0
  889. package/dist/web/static/assets/SettingsPage-DzoK4PKg.js.map +1 -0
  890. package/dist/web/static/assets/SkillDetailPage-BuBJJ_NX.js +2 -0
  891. package/dist/web/static/assets/SkillDetailPage-BuBJJ_NX.js.map +1 -0
  892. package/dist/web/static/assets/SkillsPage-aojkJpBc.js +2 -0
  893. package/dist/web/static/assets/SkillsPage-aojkJpBc.js.map +1 -0
  894. package/dist/web/static/assets/TaskDetailPage-1ckxnGhw.js +4 -0
  895. package/dist/web/static/assets/TaskDetailPage-1ckxnGhw.js.map +1 -0
  896. package/dist/web/static/assets/TasksHubPage-C2PLh3eg.js +6 -0
  897. package/dist/web/static/assets/TasksHubPage-C2PLh3eg.js.map +1 -0
  898. package/dist/web/static/assets/WorkplacePage-DHrp5VxS.js +2 -0
  899. package/dist/web/static/assets/WorkplacePage-DHrp5VxS.js.map +1 -0
  900. package/dist/web/static/assets/arco-DFQA6dO_.css +1 -0
  901. package/dist/web/static/assets/arco-DV6xCLhr.js +14 -0
  902. package/dist/web/static/assets/arco-DV6xCLhr.js.map +1 -0
  903. package/dist/web/static/assets/charts-BSV4cyC4.js +37 -0
  904. package/dist/web/static/assets/charts-BSV4cyC4.js.map +1 -0
  905. package/dist/web/static/assets/date-fns-sbWH3_uq.js +2 -0
  906. package/dist/web/static/assets/date-fns-sbWH3_uq.js.map +1 -0
  907. package/dist/web/static/assets/index-B_v_MKlb.css +1 -0
  908. package/dist/web/static/assets/index-DileOOE4.js +4 -0
  909. package/dist/web/static/assets/index-DileOOE4.js.map +1 -0
  910. package/dist/web/static/assets/lucide-CnlPQoG8.js +72 -0
  911. package/dist/web/static/assets/lucide-CnlPQoG8.js.map +1 -0
  912. package/dist/web/static/assets/markdown-CA7ePUts.js +30 -0
  913. package/dist/web/static/assets/markdown-CA7ePUts.js.map +1 -0
  914. package/dist/web/static/assets/outcome-BKGy9azt.js +2 -0
  915. package/dist/web/static/assets/outcome-BKGy9azt.js.map +1 -0
  916. package/dist/web/static/assets/query-CgCOpYWf.js +2 -0
  917. package/dist/web/static/assets/{query-C99w429o.js.map → query-CgCOpYWf.js.map} +1 -1
  918. package/dist/web/static/assets/{react-router-r79dBVy4.js → react-router-Cxmg8RuL.js} +3 -3
  919. package/dist/web/static/assets/{react-router-r79dBVy4.js.map → react-router-Cxmg8RuL.js.map} +1 -1
  920. package/dist/web/static/assets/react-vendor-tkvCrao7.js +57 -0
  921. package/dist/web/static/assets/react-vendor-tkvCrao7.js.map +1 -0
  922. package/dist/web/static/assets/syntax-highlighter-BDYycNja.js +6 -0
  923. package/dist/web/static/assets/syntax-highlighter-BDYycNja.js.map +1 -0
  924. package/dist/web/static/assets/useAgentStats-B-uTgqBd.js +2 -0
  925. package/dist/web/static/assets/useAgentStats-B-uTgqBd.js.map +1 -0
  926. package/dist/web/static/assets/useDecisions-D-G2Ft5T.js +2 -0
  927. package/dist/web/static/assets/useDecisions-D-G2Ft5T.js.map +1 -0
  928. package/dist/web/static/assets/useDistill-21dZkXlT.js +3 -0
  929. package/dist/web/static/assets/useDistill-21dZkXlT.js.map +1 -0
  930. package/dist/web/static/assets/useEffectiveProject-DQiyX54y.js +2 -0
  931. package/dist/web/static/assets/useEffectiveProject-DQiyX54y.js.map +1 -0
  932. package/dist/web/static/assets/useIssuesFeed-CFiyQkAL.js +2 -0
  933. package/dist/web/static/assets/useIssuesFeed-CFiyQkAL.js.map +1 -0
  934. package/dist/web/static/assets/useKbHits-xKXWgqh9.js +2 -0
  935. package/dist/web/static/assets/useKbHits-xKXWgqh9.js.map +1 -0
  936. package/dist/web/static/assets/useSkillStats-B5hbIwdf.js +2 -0
  937. package/dist/web/static/assets/useSkillStats-B5hbIwdf.js.map +1 -0
  938. package/dist/web/static/assets/vendor-DS-q4Eyc.js +36 -0
  939. package/dist/web/static/assets/vendor-DS-q4Eyc.js.map +1 -0
  940. package/dist/web/static/index.html +12 -8
  941. package/package.json +18 -5
  942. package/dist/core/ai/provider.d.ts +0 -63
  943. package/dist/core/ai/provider.d.ts.map +0 -1
  944. package/dist/core/ai/provider.js +0 -241
  945. package/dist/core/ai/provider.js.map +0 -1
  946. package/dist/core/ai/types.d.ts +0 -43
  947. package/dist/core/ai/types.d.ts.map +0 -1
  948. package/dist/core/ai/types.js +0 -5
  949. package/dist/core/ai/types.js.map +0 -1
  950. package/dist/core/storage/token-usage.d.ts +0 -36
  951. package/dist/core/storage/token-usage.d.ts.map +0 -1
  952. package/dist/core/storage/token-usage.js +0 -59
  953. package/dist/core/storage/token-usage.js.map +0 -1
  954. package/dist/core/utils/token-tracker.d.ts +0 -39
  955. package/dist/core/utils/token-tracker.d.ts.map +0 -1
  956. package/dist/core/utils/token-tracker.js +0 -69
  957. package/dist/core/utils/token-tracker.js.map +0 -1
  958. package/dist/skills/index.d.ts +0 -3
  959. package/dist/skills/index.d.ts.map +0 -1
  960. package/dist/skills/index.js +0 -3
  961. package/dist/skills/index.js.map +0 -1
  962. package/dist/skills/matcher.d.ts +0 -26
  963. package/dist/skills/matcher.d.ts.map +0 -1
  964. package/dist/skills/matcher.js +0 -113
  965. package/dist/skills/matcher.js.map +0 -1
  966. package/dist/skills/official/code-simplifier.md +0 -52
  967. package/dist/skills/official/find-skills.md +0 -142
  968. package/dist/skills/official/official-api-design.md +0 -30
  969. package/dist/skills/official/official-architecture-decision.md +0 -41
  970. package/dist/skills/official/official-bmad.md +0 -118
  971. package/dist/skills/official/official-db-schema-design.md +0 -34
  972. package/dist/skills/official/official-debug.md +0 -25
  973. package/dist/skills/official/official-doc-driven.md +0 -31
  974. package/dist/skills/official/official-harness-engineering.md +0 -108
  975. package/dist/skills/official/official-openspec.md +0 -89
  976. package/dist/skills/official/official-performance-optimization.md +0 -30
  977. package/dist/skills/official/official-pr-review.md +0 -35
  978. package/dist/skills/official/official-release-checklist.md +0 -30
  979. package/dist/skills/official/official-security-hardening.md +0 -32
  980. package/dist/skills/official/official-spec-driven-design.md +0 -31
  981. package/dist/skills/official/planning-with-files.md +0 -241
  982. package/dist/skills/official/ui-ux-pro-max.md +0 -105
  983. package/dist/skills/official/webapp-testing.md +0 -96
  984. package/dist/skills/official-skills.d.ts +0 -26
  985. package/dist/skills/official-skills.d.ts.map +0 -1
  986. package/dist/skills/official-skills.js +0 -74
  987. package/dist/skills/official-skills.js.map +0 -1
  988. package/dist/skills/semantic-matcher.d.ts +0 -60
  989. package/dist/skills/semantic-matcher.d.ts.map +0 -1
  990. package/dist/skills/semantic-matcher.js +0 -192
  991. package/dist/skills/semantic-matcher.js.map +0 -1
  992. package/dist/skills/upgrade-engine.d.ts +0 -93
  993. package/dist/skills/upgrade-engine.d.ts.map +0 -1
  994. package/dist/skills/upgrade-engine.js +0 -447
  995. package/dist/skills/upgrade-engine.js.map +0 -1
  996. package/dist/skills/upgrade-prompt.d.ts +0 -20
  997. package/dist/skills/upgrade-prompt.d.ts.map +0 -1
  998. package/dist/skills/upgrade-prompt.js +0 -75
  999. package/dist/skills/upgrade-prompt.js.map +0 -1
  1000. package/dist/web/routes/ai.d.ts +0 -10
  1001. package/dist/web/routes/ai.d.ts.map +0 -1
  1002. package/dist/web/routes/ai.js +0 -186
  1003. package/dist/web/routes/ai.js.map +0 -1
  1004. package/dist/web/routes/token-usage.d.ts +0 -7
  1005. package/dist/web/routes/token-usage.d.ts.map +0 -1
  1006. package/dist/web/routes/token-usage.js +0 -18
  1007. package/dist/web/routes/token-usage.js.map +0 -1
  1008. package/dist/web/ssrf-guard.d.ts +0 -35
  1009. package/dist/web/ssrf-guard.d.ts.map +0 -1
  1010. package/dist/web/ssrf-guard.js +0 -93
  1011. package/dist/web/ssrf-guard.js.map +0 -1
  1012. package/dist/web/static/assets/AIConfig-CdDWzJyO.js +0 -2
  1013. package/dist/web/static/assets/AIConfig-CdDWzJyO.js.map +0 -1
  1014. package/dist/web/static/assets/Dashboard-CoEmmIDt.js +0 -2
  1015. package/dist/web/static/assets/Dashboard-CoEmmIDt.js.map +0 -1
  1016. package/dist/web/static/assets/Drawer-DdRTzlLB.js +0 -2
  1017. package/dist/web/static/assets/Drawer-DdRTzlLB.js.map +0 -1
  1018. package/dist/web/static/assets/Events-DrIq1SUS.js +0 -2
  1019. package/dist/web/static/assets/Events-DrIq1SUS.js.map +0 -1
  1020. package/dist/web/static/assets/Reports-DFBM3MDK.js +0 -2
  1021. package/dist/web/static/assets/Reports-DFBM3MDK.js.map +0 -1
  1022. package/dist/web/static/assets/SearchInput-qCj_jAcf.js +0 -2
  1023. package/dist/web/static/assets/SearchInput-qCj_jAcf.js.map +0 -1
  1024. package/dist/web/static/assets/SessionDetail-CCzwdoT7.js +0 -2
  1025. package/dist/web/static/assets/SessionDetail-CCzwdoT7.js.map +0 -1
  1026. package/dist/web/static/assets/Sessions-FfLYkAw9.js +0 -2
  1027. package/dist/web/static/assets/Sessions-FfLYkAw9.js.map +0 -1
  1028. package/dist/web/static/assets/Skills-C8Gvs3Qa.js +0 -2
  1029. package/dist/web/static/assets/Skills-C8Gvs3Qa.js.map +0 -1
  1030. package/dist/web/static/assets/TaskDetail-BS8pYhaR.js +0 -2
  1031. package/dist/web/static/assets/TaskDetail-BS8pYhaR.js.map +0 -1
  1032. package/dist/web/static/assets/Tasks-CyuhizG8.js +0 -2
  1033. package/dist/web/static/assets/Tasks-CyuhizG8.js.map +0 -1
  1034. package/dist/web/static/assets/charts-CLrM0_uM.js +0 -37
  1035. package/dist/web/static/assets/charts-CLrM0_uM.js.map +0 -1
  1036. package/dist/web/static/assets/date-fns-CZ_bHujz.js +0 -2
  1037. package/dist/web/static/assets/date-fns-CZ_bHujz.js.map +0 -1
  1038. package/dist/web/static/assets/export-L_VBD2p1.js +0 -4
  1039. package/dist/web/static/assets/export-L_VBD2p1.js.map +0 -1
  1040. package/dist/web/static/assets/index-CBX47X8l.js +0 -3
  1041. package/dist/web/static/assets/index-CBX47X8l.js.map +0 -1
  1042. package/dist/web/static/assets/index-DjIoMdoR.css +0 -1
  1043. package/dist/web/static/assets/lucide-Bs_edTLa.js +0 -232
  1044. package/dist/web/static/assets/lucide-Bs_edTLa.js.map +0 -1
  1045. package/dist/web/static/assets/query-C99w429o.js +0 -2
  1046. package/dist/web/static/assets/react-vendor-CSp-GLFF.js +0 -49
  1047. package/dist/web/static/assets/react-vendor-CSp-GLFF.js.map +0 -1
  1048. package/dist/web/static/assets/syntax-highlighter-44FakypI.js +0 -9
  1049. package/dist/web/static/assets/syntax-highlighter-44FakypI.js.map +0 -1
  1050. package/dist/web/static/assets/time-Bxuk0M-C.js +0 -2
  1051. package/dist/web/static/assets/time-Bxuk0M-C.js.map +0 -1
  1052. package/dist/web/static/assets/vendor-CMMjVdZs.js +0 -64
  1053. package/dist/web/static/assets/vendor-CMMjVdZs.js.map +0 -1
package/DEVELOPMENT.md CHANGED
@@ -24,13 +24,17 @@ src/
24
24
  │ │ ├── base.ts / rows.ts 连接 + 行映射工具
25
25
  │ │ ├── maintenance.ts 清理/压缩
26
26
  │ │ └── performance-indexes.sql 附加索引
27
- │ ├── ai/ ClaudeProvider 封装(用于 classifier、distiller、skill-upgrade)
28
27
  │ ├── queue/ 通用 SQLite 队列工具
29
- │ ├── utils/ logger / git / path / time / lru-cache / forge-resume-block 等
28
+ │ ├── diagnostics/ 自检 / 健康诊断工具
29
+ │ ├── governance/ 治理协议注入(inject-global 等)
30
+ │ ├── utils/ logger / git / path / time / lru-cache / forge-resume-block /
31
+ │ │ claude-cli-spawn(headless `claude` 子进程)等
30
32
  │ ├── config.ts ConfigManager(~/.claude-forge/config.yaml)
31
33
  │ ├── constants.ts FORGE_PATHS、各类阈值常量
32
34
  │ ├── event-fields.ts hook 事件字段统一抽取
33
35
  │ └── types.ts ForgeEvent / HookResult 等核心类型契约
36
+ │ (注:曾经的 core/ai/ ClaudeProvider 目录已整组删除,spec 0902 起所有 LLM
37
+ │ 调用收敛为 `child_process.spawn('claude', ...)` headless 子进程)
34
38
 
35
39
  ├── daemon/ 后台守护进程
36
40
  │ ├── index.ts 入口:socket server + 生命周期 + 同步任务
@@ -39,41 +43,67 @@ src/
39
43
  │ ├── lifecycle.ts 启停 / 信号处理
40
44
  │ ├── event-parser.ts hook 原始 JSON → ForgeEvent
41
45
  │ ├── hook-sync.ts 启动时把 dist/hooks/ 同步到 ~/.claude/hooks/
42
- │ ├── skill-sync.ts 启动时把 dist/skills/official/ 同步到 ~/.claude/skills/
46
+ │ ├── skill-sync.ts 启动时把 dist/skills/distilled/ 同步到 ~/.claude/skills/
47
+ │ ├── agent-sync.ts 启动时把 templates/agents/ 同步到 ~/.claude/agents/
48
+ │ ├── config-store.ts daemon 运行期配置缓存
43
49
  │ ├── launchd-installer.ts macOS launchd 安装
44
50
  │ ├── launchd/ launchd plist 模板
45
- │ ├── handlers/
46
- ├── user-prompt.ts UserPromptSubmit:分类 + skill 推荐 + agent 路由
51
+ │ ├── templates/agents/ canonical agent .md 源(build → dist,sync → ~/.claude/agents/)
52
+ │ ├── handlers/ (5 hook handler)
53
+ │ │ ├── user-prompt.ts UserPromptSubmit:分类 + skill 推荐 + agent 路由 + KB 注入
54
+ │ │ ├── pre-tool-use.ts PreToolUse:规则引擎,按 tool_intercept 规则 deny/warn/allow
47
55
  │ │ ├── post-tool-use.ts PostToolUse:观察,按需注入提示
48
56
  │ │ ├── stop.ts Stop:写 session 摘要、distill 决策
49
57
  │ │ └── history-exporter.ts 导出完整历史到 .claude-forge/history/
50
- └── services/
51
- └── task-segmenter.ts UserPromptSubmit 按时间窗划分任务段
58
+ ├── rules/ (5 个,PreToolUse 规则引擎)
59
+ │ ├── defaults.ts 默认 tool_intercept 规则(edit/write-multi-file-hard 等 deny)
60
+ │ │ ├── registry.ts 规则注册与首个匹配查找
61
+ │ │ ├── workflow-defaults.ts workflow 推荐 / Task spawn 匹配规则
62
+ │ │ ├── whitelist.ts 白名单 / 项目级关闭
63
+ │ │ └── types.ts ToolInterceptRule / RuleContext 类型
64
+ │ └── services/ (约 20 个后台服务)
65
+ │ ├── spec-gate.ts SpecGate:spec/decision 批准短路
66
+ │ ├── spec-approval.ts bare「批准 / approve <token>」批准解析
67
+ │ ├── context-injector.ts 上下文注入
68
+ │ ├── kb-injector.ts 知识库注入
69
+ │ ├── task-segmenter.ts UserPromptSubmit 按时间窗划分任务段
70
+ │ ├── task-boundary-classifier.ts 任务边界分类
71
+ │ ├── violation-reporter.ts 主线程合规违规汇总
72
+ │ ├── decision-hint.ts [DECISION HINT] mint
73
+ │ ├── outcome-classifier.ts / outcome-classification-service.ts / outcome-nudge.ts 决策结果回填
74
+ │ ├── experience-extractor.ts / feedback-aggregator.ts 经验/反馈聚合
75
+ │ ├── intercept-revive.ts / intercept-rollback-guard.ts / intercept-timeout-sweeper.ts 拦截治理
76
+ │ ├── idle-session-sweeper.ts / idle-task-budget.ts / event-ttl-sweep.ts GC / 预算
77
+ │ └── heartbeat-writer.ts 心跳写盘
52
78
 
53
79
  ├── skills/ Skill 推荐与方法论分发
54
- │ ├── registry.ts 扫描 ~/.claude/skills/ + src/skills/official/,提供 match()
80
+ │ ├── registry.ts 扫描 ~/.claude/skills/ + src/skills/distilled/,提供 match()(keyword-only since spec 0902 D R-B)
55
81
  │ ├── matcher.ts 关键词匹配
56
- │ ├── semantic-matcher.ts AI 语义匹配(可选,需 API key)
57
82
  │ ├── invocation-guard.ts 防止 agent 重复 invoke 同一 skill
58
- │ ├── upgrade-engine.ts 社区 skill 升级核心:pull / match / evaluate / apply
59
- │ ├── upgrade-prompt.ts AI evaluator prompt 模板
60
- │ ├── official-skills.ts 加载内置官方 skill
61
- │ ├── official/ 内置官方 skill .md 源(随发布打包)
83
+ │ ├── builtin-skills.ts 加载内置 distilled skill(来自 src/skills/distilled/)
84
+ │ ├── distilled/ 内置 distilled skill .md 源(随发布打包)
62
85
  │ ├── tools/ MCP 工具:skill_invoke / skill_list / pipeline_suggest
63
86
  │ └── index.ts 对外导出
64
87
 
65
88
  ├── web/ Web 管理后台
66
89
  │ ├── server.ts Express 服务器 + 路由注册
67
90
  │ ├── auth-middleware.ts 本地 token 校验
68
- │ ├── ssrf-guard.ts SSRF 防护
69
- ├── routes/ 每个 API 模块独立文件(sessions / events / tasks / skills / ai / patch ...)
91
+ │ ├── routes/ 每个 API 模块独立文件(sessions / events / tasks / skills /
92
+ │ decisions / knowledge / patch / health / diagnostics / drift /
93
+ │ │ insights / pipeline / reports / rules / trace / violations ...)
70
94
  │ ├── analytics/ 趋势/统计计算
95
+ │ ├── services/ 路由共享服务层
71
96
  │ └── static/ React 前端构建产物的最终落点(dist/web/static/)
97
+ │ (注:曾经的 ssrf-guard.ts 与 routes/ai.ts 已删除)
72
98
 
73
99
  ├── cli/
74
100
  │ ├── index.ts CLI 入口(commander)
75
101
  │ ├── init/ `cf init`:安装 hook 脚本
76
- │ └── commands/ 子命令:daemon / config / skills / claudemd / status / logs / stats / menu / trace / mcp / executions / template
102
+ │ └── commands/ 27 个子命令:daemon / config / skills / claudemd / status /
103
+ │ logs / stats / menu / trace / mcp / executions / template /
104
+ │ init / decisions / governance / knowledge / spec / doctor /
105
+ │ fix / entropy / agents / bypass / insights / insights-goal-check /
106
+ │ project / admin / violations
77
107
 
78
108
  ├── claudemd/ CLAUDE.md 生成与维护
79
109
  │ ├── tech-detector.ts 项目技术栈识别
@@ -95,6 +125,23 @@ src/
95
125
  ├── mcp/ MCP server(暴露 skill_invoke / skill_list / pipeline_suggest 给 agent)
96
126
  │ └── server.ts
97
127
 
128
+ ├── knowledge/ 项目知识库系统(27 src)
129
+ │ ├── builder.ts KB page 构建(分析 src/ → .forge-knowledge/,每 page 一次 claude spawn)
130
+ │ ├── cli-provider.ts CliKnowledgeProvider:经 claude-cli-spawn headless 生成 KB
131
+ │ ├── repo-map.ts 仓库结构快照生成
132
+ │ ├── module-hash.ts 模块内容 hash(增量 rebuild 判定)
133
+ │ ├── cross-module.ts 跨模块 page 生成
134
+ │ ├── query.ts 关键词查询接口
135
+ │ ├── audit-applier.ts KB 审计修订应用
136
+ │ ├── project-detector.ts 项目类型探测(选择 adapter)
137
+ │ ├── git-hooks.ts Git hooks 集成(commit 后自动 rebuild)
138
+ │ ├── validator.ts KB 完整性校验
139
+ │ ├── prompt.ts agent prompt 注入工具
140
+ │ ├── constants.ts / types.ts 路径常量 + 类型
141
+ │ ├── adapters/ 多语言项目适配器(typescript / js-vue / python / go /
142
+ │ │ java / kotlin / rust / monorepo)
143
+ │ └── tools/ MCP 工具:knowledge-query / knowledge-get-page / repo-map-lookup
144
+
98
145
  └── templates/ 新项目初始化模板
99
146
 
100
147
  web/ React 前端源码(独立 npm workspace)
@@ -144,7 +191,7 @@ npm run dev:daemon:stop
144
191
  cd web && npm install && npm run dev
145
192
  ```
146
193
 
147
- Daemon / CLI 都用系统 node(项目要求 Node 18+,实际跑在 24/26 上)。
194
+ Daemon / CLI 都用系统 node(项目要求 Node 24+,实际跑在 24/26 上)。
148
195
 
149
196
  ---
150
197
 
@@ -188,9 +235,10 @@ Claude Code ──hook payload(JSON via stdin)──► src/hooks/*.sh
188
235
 
189
236
 
190
237
  src/daemon/router.ts ──┬──► handlers/user-prompt.ts
238
+ ├──► handlers/pre-tool-use.ts (规则引擎 deny/warn/allow)
191
239
  ├──► handlers/post-tool-use.ts
192
240
  ├──► handlers/stop.ts
193
- └──► (PreToolUse / Notification: 直接 allow)
241
+ └──► (Notification: 直接 allow)
194
242
 
195
243
 
196
244
  core/storage/* 持久化 + 返回 HookResult
@@ -202,7 +250,12 @@ Claude Code ──hook payload(JSON via stdin)──► src/hooks/*.sh
202
250
  要点:
203
251
  - daemon 必须在 100ms 内返回,超时则 Claude Code 视为放行
204
252
  - handler 抛错被 router 捕获,不会让 daemon 崩溃
205
- - `PreToolUse` 当前不做规则阻断,统一放行
253
+ - `PreToolUse` **做规则阻断**:`handlers/pre-tool-use.ts` 跑 `rules/registry.ts`
254
+ 规则引擎,命中 `rules/defaults.ts` 的 `tool_intercept` 规则(如
255
+ `edit-multi-file-hard` / `write-multi-file-hard` / `bash-grep-multi-file`)时
256
+ decision=`deny`(allow=false + hookSpecificOutput),warn 规则注入
257
+ additionalContext。每次决策落 `tool_intercepts` 表(事实表,写失败不阻断 tool)。
258
+ 显式 bypass 标记(`forge:bypass=<reason>`)转 decision=`bypass` 放行
206
259
  - daemon 不主动推消息:任何延后的指令必须等下一次 UserPromptSubmit 注入
207
260
 
208
261
  ### Skill 系统
@@ -214,16 +267,16 @@ Claude Code ──hook payload(JSON via stdin)──► src/hooks/*.sh
214
267
  └─────────┬───────────┘
215
268
 
216
269
 
217
- ┌──────────────────────────┐ ┌──────────────────────────┐
218
- │ SkillRegistry.match() │ ───────►│ semantic-matcher (AI) │
219
- │ (registry.ts) │ │ 若配置了 API key 则优先 │
220
- │ │ └────────────┬─────────────┘
221
- │ 扫描两类来源: │ 失败/无 key
222
- │ - 内置 src/skills/ │
223
- official/*.md ┌──────────────────────────┐
224
- │ - 用户 ~/.claude/skills/│ ───────►│ keyword matcher
225
- │ {name}.md │ │ (matcher.ts) │
226
- │ or {name}/SKILL.md │ └────────────┬─────────────┘
270
+ ┌──────────────────────────┐
271
+ │ SkillRegistry.match() │semantic-matcher 已在 spec 0902 D R-B 删除)
272
+ │ (registry.ts, keyword-only)
273
+ │ │ ┌──────────────────────────┐
274
+ │ 扫描两类来源: │ ───────►│ keyword matcher │
275
+ │ - 内置 src/skills/ │ │ (matcher.ts) │
276
+ distilled/*.md └────────────┬─────────────┘
277
+ │ - 用户 ~/.claude/skills/│
278
+ │ {name}.md │
279
+ │ or {name}/SKILL.md │
227
280
  └──────────────────────────┘ │
228
281
  │ │
229
282
  ▼ ▼
@@ -240,19 +293,47 @@ Agent 通过 MCP 工具:
240
293
 
241
294
  frontmatter 必须有 `name: string`,否则 registry 静默跳过(debug 日志,不打扰用户)。`keywords` 与 `tags` 都接受。
242
295
 
243
- ### Skill 远程升级
244
-
245
- `cf skills upgrade``src/skills/upgrade-engine.ts` 驱动,三阶段:
246
-
247
- 1. `pullCandidates(DEFAULT_SOURCES, ~/.claude-forge/skill-candidates/)`
248
- - 默认源:`addyosmani/agent-skills` + `obra/superpowers`
249
- - 已存在则 `git pull`,不存在则 `git clone`
250
- 2. 对每个候选用 `matchToOfficial()` 找最相似官方 skill,再用 `evaluateWithAI()` 让 AI 给出 `upgrade / merge / skip`,AI 解析失败 → `needs_review`
251
- 3. `generateReport()` 写到 `~/.claude-forge/skill-upgrade-report.md`,每条带 `<!-- upgrade-entry: ... -->` 标记
252
- 4. `cf skills upgrade --apply` 读报告 → 备份 `~/.claude-forge/backups/skills/<ts>/` → 覆盖 `src/skills/official/`
253
- 5. `--rollback <ts>` 反向拷回
254
-
255
- 详见 `docs/skill-upgrade-guide.md`。
296
+ ### Skill 蒸馏
297
+
298
+ > **架构改写已完成**(spec [`1851`](docs/design/2026-05-28/1851-distill-via-claude-cli-shellout-spec.md) R-A + R-B):
299
+ > `cf skills distill` CLI 子命令族**已删除**;蒸馏入口收敛到 Web UI 一处
300
+ > (`http://127.0.0.1:3721/context?tab=distill`)。daemon 通过
301
+ > `child_process.spawn('claude', ...)` headless 调用本地 claude CLI,走用户
302
+ > 订阅计费(OAuth/keychain),daemon 自身不再持 `ANTHROPIC_API_KEY`。
303
+
304
+ **实施流程**(R-B ship):
305
+
306
+ 1. `findClaudeBin()` (`src/skills/distill/claude-cli-resolver.ts`) 探测 `claude`
307
+ binary —— 先跑 `which claude`,失败后探测 `/opt/homebrew/bin/claude` /
308
+ `/usr/local/bin/claude` / `~/.local/bin/claude`。结果缓存 5 分钟。
309
+ 2. `/api/skills/distill/status` 调 `findClaudeBin()` 返回
310
+ `{ claudeCliAvailable: boolean, claudeCliPath: string | null }`。
311
+ UI disable 按钮 + 显示安装提示(`brew install claude` /
312
+ `npm i -g @anthropic-ai/claude-code`)。
313
+ 3. 按【开始蒸馏】 → `spawnSkillDistillerAgent(prompt)` 起子进程:
314
+ ```bash
315
+ claude -p --agent skill-distiller --bare \
316
+ --output-format stream-json --include-partial-messages --input-format text
317
+ ```
318
+ prompt 通过 stdin 喂入(含 `<upstream_skill>` / `<upstream_url>` /
319
+ `<target_name>` / `<topic_id>` tagged blocks)。
320
+ 4. 解析 stream-json 事件(`assistant_message` / `content_block_delta` /
321
+ `message_delta` / `text_delta` / `result` 多版本兼容)累加 assistant text。
322
+ 每个事件回调 `onProgress({ type, charCount, raw })` →
323
+ distill-manager 桥接为 SSE `progress` event(UI 显示 `chars=N` + topicId)。
324
+ 5. 子进程 exit 0 → `parseSkipBlock()` 优先检测 SKIP envelope →
325
+ 有则抛 `SkillSkippedError`(agent 自评分 < 3,topicId 加入 state.skipped 继续下一个)→
326
+ 否则 `parseSkillBlock()` 抽 SKILL envelope body →
327
+ `detectAnchors()` lint 命中即 throw `ProjectAnchorRejection`(**无 retry**,per Q2)→
328
+ 写入 `src/skills/distilled/distilled-xxx.md` + 追加 NOTICE。
329
+ 6. 用户【取消】→ `distill-manager.cancel(runId)` → AbortController abort →
330
+ `child.kill('SIGTERM')`。
331
+
332
+ **Hard-fail 错误**(agent path 一律不 retry):
333
+ - `ClaudeCliMissingError` —— `findClaudeBin()` 返回 null
334
+ - `SkillSkippedError` —— agent emit `---SKIP---` envelope(score < 3)
335
+ - `SkillBlockMissingError` —— agent 输出既无 SKILL 也无 SKIP envelope
336
+ - `ProjectAnchorRejection` —— SKILL body lint 命中项目锚点
256
337
 
257
338
  ### CLAUDE.md 生成与维护
258
339
 
@@ -272,7 +353,7 @@ frontmatter 必须有 `name: string`,否则 registry 静默跳过(debug 日
272
353
  daemon 启动时(`src/daemon/index.ts`)执行两个一次性同步:
273
354
 
274
355
  - `syncHooks()` — 把 `dist/hooks/*.sh` 对照 sha256 同步到 `~/.claude/hooks/`,避免用户忘了重跑 `cf init`
275
- - `syncSkills()` — 把 `dist/skills/official/*.md` 同步到 `~/.claude/skills/`,user-owned 文件(已存在)跳过
356
+ - `syncSkills()` — 把 `dist/skills/distilled/*.md` 同步到 `~/.claude/skills/`,user-owned 文件(已存在)跳过
276
357
 
277
358
  两者都幂等,文件相同时不写盘。
278
359
 
@@ -300,7 +381,7 @@ hook event ──► writeEvent() ──┐
300
381
  - Schema 由 `src/core/storage/schema.sql` 初始化
301
382
  - 增量改动放 `src/core/storage/migrations/*.sql`(按文件名顺序执行)
302
383
 
303
- ### 长跑稳定性(v8.53.6 加)
384
+ ### 长跑稳定性
304
385
 
305
386
  daemon 通过三个机制保证长时间运行不膨胀:
306
387
 
@@ -325,7 +406,7 @@ daemon 通过三个机制保证长时间运行不膨胀:
325
406
 
326
407
  ## 添加新 Skill
327
408
 
328
- 最简方式:在 `src/skills/official/<name>.md` 写 frontmatter:
409
+ 最简方式:在 `src/skills/distilled/<name>.md` 写 frontmatter:
329
410
 
330
411
  ```markdown
331
412
  ---
@@ -352,6 +433,602 @@ version: 1.0.0
352
433
 
353
434
  ---
354
435
 
436
+ ## decision-maker agent 使用说明
437
+
438
+ ### 首次使用必读:TUI restart 必要
439
+
440
+ `decision-maker` agent 定义在 `.claude/agents/decision-maker.md`。Claude Code TUI
441
+ 在**启动时**一次性扫描 `.claude/agents/`,运行中新增的 agent 不会被自动识别。
442
+
443
+ **首次使用(或更新 template 后)必须重启 TUI**:
444
+ - macOS: `Cmd+R` 或关闭窗口重新打开
445
+ - 重启后验证: 在 Task tool 输入 `subagent_type='decision-maker'` 不报 not found 即可
446
+
447
+ ### TUI restart 后仍 not found 的 fallback
448
+
449
+ 若重启 TUI 后 `subagent_type='decision-maker'` 仍报 not found,使用以下 inline 方式:
450
+
451
+ ```
452
+ spawn general-purpose agent with prompt:
453
+ "你扮演 decision-maker 角色。Read .claude/agents/decision-maker.md 然后按其 Workflow 执行。
454
+ 用户 prompt: <your actual prompt>"
455
+ ```
456
+
457
+ ### decision-maker catalog 预生成
458
+
459
+ Build 时 `scripts/dump-catalogs.ts` 会生成:
460
+ - `dist/catalogs/agents.json` — 14 agents, ~3KB
461
+ - `dist/catalogs/skills.json` — skills catalog, ~5KB
462
+
463
+ 这两个文件由 decision-maker Step 2-3 读取(`cat dist/catalogs/*.json`),
464
+ 替代原来的全读 3250 行 markdown,可减少 ~90% catalog token 消耗。
465
+
466
+ 如果 `dist/catalogs/` 不存在(fresh clone):先运行 `npm run build`。
467
+
468
+ ---
469
+
470
+ ## task-boundary-classifier agent 使用说明
471
+
472
+ `task-boundary-classifier` agent 定义在 `.claude/agents/task-boundary-classifier.md`
473
+ (canonical 在 `src/daemon/templates/agents/`,agent-sync 启动时镜像到
474
+ `~/.claude/agents/`)。它判断一段连续操作是否构成同一任务边界,供
475
+ `src/daemon/services/task-boundary-classifier.ts` 在任务分段时调用。
476
+
477
+ 与其它 agent 一致:程序化调用走 `child_process.spawn('claude', ...)` headless
478
+ 子进程(不受 TUI restart 影响);TUI 内手动 `subagent_type='task-boundary-classifier'`
479
+ spawn 首次需 TUI restart(macOS Cmd+R)。
480
+
481
+ ---
482
+
483
+ ## skill-distiller agent 使用说明
484
+
485
+ `skill-distiller` agent 定义在 `.claude/agents/skill-distiller.md`(与
486
+ `src/daemon/templates/agents/skill-distiller.md` 完全镜像,agent-sync 启动时
487
+ 拷到 `~/.claude/agents/`)。
488
+
489
+ ### R-A 状态(spec 1851)
490
+
491
+ - **程序化调用路径已删除**:`runSonnetDistillationViaAgent()` /
492
+ `CF_SKILL_DISTILLER_AGENT=1` env flag 在 R-A 阶段一并下线。
493
+ - **R-B 接 claude CLI shell-out**:daemon 通过 `child_process.spawn('claude',
494
+ ['-p', '--agent', 'skill-distiller', ...])` 调用本地 claude CLI,agent body
495
+ 作为 system prompt 由 CLI 自身加载(不再由 daemon 进程读取 .md 注入)。
496
+ - **agent body R-B 会重写**:评分(D1-D5)+ 决策 + 输出 SKILL/SKIP envelope
497
+ 三步合一。当前 .md 仍是 Phase B 版本,等 R-B spec 推进后会更新。
498
+
499
+ ### 方式 2:在 Claude Code TUI 里手动 spawn(仍可用)
500
+
501
+ ```
502
+ Task tool subagent_type='skill-distiller' with prompt:
503
+ "<upstream_skill>...</upstream_skill>
504
+ <upstream_url>https://github.com/owner/repo</upstream_url>
505
+ <target_name>distilled-xxx</target_name>
506
+ <it_universal_score>4</it_universal_score>
507
+ <it_universal_rationale>...</it_universal_rationale>"
508
+ ```
509
+
510
+ agent 会返回 `---SKILL---\n<full md>\n---END---` 格式的 markdown,需要手动
511
+ 保存到 `src/skills/distilled/distilled-xxx.md`(caller 责任)。**首次新增/改 agent
512
+ 需 TUI restart**(macOS Cmd+R)。
513
+
514
+ ### 首次使用必读:TUI restart 必要
515
+
516
+ 与 decision-maker 同样的 quirk —— Claude Code TUI 在**启动时**一次性扫描
517
+ `.claude/agents/`,运行中新增的 agent 不会被自动识别。
518
+
519
+ **首次使用(或更新 template 后)必须重启 TUI**:
520
+ - macOS: `Cmd+R` 或关闭窗口重新打开
521
+ - 重启后验证:在 Task tool 输入 `subagent_type='skill-distiller'` 不报 not found 即可
522
+
523
+ > 注意:方式 1(程序化 distill)**不受** TUI restart 影响 —— 它直接读文件,
524
+ > 不走 TUI 的 agent registry。
525
+
526
+ ### TUI restart 后仍 not found 的 fallback
527
+
528
+ 若重启 TUI 后 `subagent_type='skill-distiller'` 仍报 not found,使用以下
529
+ inline 方式:
530
+
531
+ ```
532
+ spawn general-purpose agent with prompt:
533
+ "你扮演 skill-distiller 角色。Read .claude/agents/skill-distiller.md
534
+ 然后按其 Workflow 执行。
535
+
536
+ 输入 tags 如下:
537
+ <upstream_skill>...</upstream_skill>
538
+ <upstream_url>...</upstream_url>
539
+ ..."
540
+ ```
541
+
542
+ ### Agent 文件三处镜像
543
+
544
+ ```
545
+ src/daemon/templates/agents/skill-distiller.md ← canonical source (git tracked)
546
+ .claude/agents/skill-distiller.md ← repo mirror (git -f tracked, TUI scan)
547
+ dist/daemon/templates/agents/skill-distiller.md ← npm payload (build cp produces)
548
+ ~/.claude/agents/skill-distiller.md ← user sync target (agent-sync.ts)
549
+ ```
550
+
551
+ 修改 agent .md 时**只改 canonical**(`src/daemon/templates/agents/`),然后:
552
+
553
+ ```bash
554
+ # 同步到 repo mirror
555
+ cp src/daemon/templates/agents/skill-distiller.md .claude/agents/skill-distiller.md
556
+ # build 自动同步到 dist/
557
+ npm run build
558
+ # daemon restart 自动同步到 ~/.claude/agents/
559
+ cf daemon restart
560
+ ```
561
+
562
+ repo mirror 与 canonical 必须 **byte-identical**(CI 不强制,但 lint 检查
563
+ 计划在未来 phase 加入)。
564
+
565
+ ---
566
+
567
+ ## claudemd-writer agent 使用说明
568
+
569
+ `claudemd-writer` agent 定义在 `.claude/agents/claudemd-writer.md`(与
570
+ `src/daemon/templates/agents/claudemd-writer.md` 完全镜像,agent-sync 启动时
571
+ 拷到 `~/.claude/agents/`)。
572
+
573
+ 引入背景:spec [`0902`](docs/design/2026-05-29/0902-ai-config-removal-master-spec.md)
574
+ 子 spec A — 把 `cf claudemd init/update` 从「daemon 进程内 `ClaudeProvider.complete()`
575
+ + 用户配的 `ANTHROPIC_API_KEY`」迁到「`child_process.spawn('claude', ...)` headless
576
+ CLI 子进程」。daemon 自身不再持 API key,走用户 Claude Code 订阅计费。
577
+
578
+ ### 两种使用方式
579
+
580
+ #### 方式 1:作为 `cf claudemd` 的 prompt 模板(程序化调用,默认入口)
581
+
582
+ `src/cli/commands/claudemd.ts` 的 `runClaudeMdWriter()` 把 agent name + stdin
583
+ prompt 传给 `spawnClaudeCli()` (`src/core/utils/claude-cli-spawn.ts`):
584
+
585
+ ```bash
586
+ claude -p --agent claudemd-writer --bare \
587
+ --output-format stream-json --include-partial-messages \
588
+ --allowedTools "Read,Grep" --input-format text
589
+ ```
590
+
591
+ prompt 通过 stdin 注入,含 tagged blocks(`<target_command>` / `<project_name>` /
592
+ `<project_tech_stack>` / `<project_directory_tree>` / `<project_persona>` /
593
+ `<project_conventions>`)。agent 解析这些 block,按既定模板写完整 CLAUDE.md
594
+ body,包在 `---CLAUDEMD---\n...\n---END---` envelope 内。host 调
595
+ `parseClaudeMdBlock()` 抽 body,写盘。
596
+
597
+ 这种用法**不需要** TUI restart —— 不走 Claude Code 的 Task tool agent registry,
598
+ 是 host CLI 直接 spawn `claude` 子进程。
599
+
600
+ #### 方式 2:在 Claude Code TUI 里手动 spawn(调试 / 一次性生成)
601
+
602
+ ```
603
+ Task tool subagent_type='claudemd-writer' with prompt:
604
+ "<target_command>init</target_command>
605
+ <project_name>my-app</project_name>
606
+ <project_tech_stack>{\"language\":[\"TypeScript\"],...}</project_tech_stack>
607
+ <project_directory_tree>my-app/\n├── src/\n└── package.json</project_directory_tree>
608
+ <project_persona></project_persona>
609
+ <project_conventions></project_conventions>"
610
+ ```
611
+
612
+ agent 返回 `---CLAUDEMD---\n<full md>\n---END---` envelope。**调用方手动**
613
+ copy body 写入 `<project>/CLAUDE.md`。
614
+
615
+ ### 首次使用必读:TUI restart 必要
616
+
617
+ 与 `decision-maker` / `skill-distiller` 同样的 quirk —— Claude Code TUI 在**启动时**
618
+ 一次性扫描 `.claude/agents/`,运行中新增的 agent 不会被自动识别。
619
+
620
+ **首次使用(或更新 template 后)必须重启 TUI**:
621
+ - macOS: `Cmd+R` 或关闭窗口重新打开
622
+ - 重启后验证:在 Task tool 输入 `subagent_type='claudemd-writer'` 不报 not found 即可
623
+
624
+ > 注意:方式 1(程序化 `cf claudemd`)**不受** TUI restart 影响 —— 它走
625
+ > `child_process.spawn('claude', ...)`,与 TUI 的 agent registry 无关。
626
+
627
+ ### TUI restart 后仍 not found 的 fallback
628
+
629
+ 若重启 TUI 后 `subagent_type='claudemd-writer'` 仍报 not found,使用以下
630
+ inline 方式:
631
+
632
+ ```
633
+ spawn general-purpose agent with prompt:
634
+ "你扮演 claudemd-writer 角色。Read .claude/agents/claudemd-writer.md
635
+ 然后按其 Workflow 执行。
636
+
637
+ 输入 tags 如下:
638
+ <target_command>init</target_command>
639
+ <project_name>...</project_name>
640
+ <project_tech_stack>...</project_tech_stack>
641
+ <project_directory_tree>...</project_directory_tree>
642
+ <project_persona>...</project_persona>
643
+ <project_conventions>...</project_conventions>"
644
+ ```
645
+
646
+ ### Agent 文件三处镜像
647
+
648
+ ```
649
+ src/daemon/templates/agents/claudemd-writer.md ← canonical source (git tracked)
650
+ .claude/agents/claudemd-writer.md ← repo mirror (git -f tracked, TUI scan)
651
+ dist/daemon/templates/agents/claudemd-writer.md ← npm payload (build cp produces)
652
+ ~/.claude/agents/claudemd-writer.md ← user sync target (agent-sync.ts)
653
+ ```
654
+
655
+ 修改 agent .md 时**只改 canonical**(`src/daemon/templates/agents/`),然后:
656
+
657
+ ```bash
658
+ # 同步到 repo mirror
659
+ cp src/daemon/templates/agents/claudemd-writer.md .claude/agents/claudemd-writer.md
660
+ # build 自动同步到 dist/
661
+ npm run build
662
+ # daemon restart 自动同步到 ~/.claude/agents/
663
+ cf daemon restart
664
+ ```
665
+
666
+ repo mirror 与 canonical 必须 **byte-identical**(同 skill-distiller,CI 不
667
+ 强制,lint 检查计划未来 phase 加入)。
668
+
669
+ ### Hard-fail 错误(不会 fallback 到 stub)
670
+
671
+ - `ClaudeCliMissingError` —— PATH 中找不到 `claude` binary,install hint:
672
+ `brew install claude` 或 `npm i -g @anthropic-ai/claude-code`
673
+ - `ClaudeCliExitError` —— 子进程 exit code ≠ 0(stderr snippet 打印)
674
+ - `ClaudeCliTimeoutError` —— 超过 5 分钟未完成(默认 timeout 300_000ms)
675
+ - `ClaudeCliCancelledError` —— 调用方主动 abort
676
+ - `ClaudeMdBlockMissingError` —— agent 输出缺 `---CLAUDEMD---...---END---`
677
+ envelope(前 200 字符 snippet 打印)
678
+
679
+ 所有错误**直接 exit 1**,不退化到模板(与 R-A 时期的 fallback 行为不同;
680
+ fallback 已移除,spec 0902 §2.4.1)。
681
+
682
+ ---
683
+
684
+ ## knowledge-builder agent 使用说明
685
+
686
+ `knowledge-builder` agent 定义在 `.claude/agents/knowledge-builder.md`(与
687
+ `src/daemon/templates/agents/knowledge-builder.md` 完全镜像,agent-sync 启动时
688
+ 拷到 `~/.claude/agents/`)。
689
+
690
+ 引入背景:spec [`0902`](docs/design/2026-05-29/0902-ai-config-removal-master-spec.md)
691
+ 子 spec B — 把 `cf knowledge build / init / update` 从「daemon 进程内
692
+ `ClaudeProvider.completeWithUsage()` + 用户配的 `ANTHROPIC_API_KEY`」迁到
693
+ 「`child_process.spawn('claude', ...)` headless CLI 子进程」。daemon 自身不再
694
+ 持 API key,走用户 Claude Code 订阅计费。
695
+
696
+ ### 两种使用方式
697
+
698
+ #### 方式 1:作为 `cf knowledge build` 的 prompt 模板(程序化调用,默认入口)
699
+
700
+ `src/cli/commands/knowledge.ts` 的 `buildCmd()` 调 `buildKnowledge()`,后者默认
701
+ 创建 `CliKnowledgeProvider`(`src/knowledge/cli-provider.ts`),由它把 agent
702
+ name + stdin prompt 传给 `spawnClaudeCli()`(`src/core/utils/claude-cli-spawn.ts`,
703
+ 与 `claudemd-writer` 共用):
704
+
705
+ ```bash
706
+ claude -p --agent knowledge-builder --bare \
707
+ --output-format stream-json --include-partial-messages \
708
+ --allowedTools "Read,Grep" --input-format text
709
+ ```
710
+
711
+ 每个 KB page 一次 spawn。prompt 通过 stdin 注入,含 routing hints
712
+ (`<page_kind>module</page_kind>` / `<page_kind>cross-module</page_kind>` +
713
+ `<page_name>daemon</page_name>` 等 system-prompt 标签)。agent 解析后,按既定
714
+ 模板写 KB body,包在 `---KB---\n<body>\n---END---` envelope 内(每个 page 一个
715
+ envelope,多 page 输出多 envelope 拼接)。host 调 `parseKbBlocks()` 抽 body,
716
+ 分发给 module page / cross-module page 的 sink。
717
+
718
+ 这种用法**不需要** TUI restart —— 不走 Claude Code 的 Task tool agent registry,
719
+ 是 host CLI 直接 spawn `claude` 子进程。
720
+
721
+ #### 方式 2:在 Claude Code TUI 里手动 spawn(调试 / 一次性生成)
722
+
723
+ ```
724
+ Task tool subagent_type='knowledge-builder' with prompt:
725
+ "<page_kind>module</page_kind>
726
+ <page_name>daemon</page_name>
727
+ <repo_map>...JSON 片段...</repo_map>
728
+ <source_files>...必要的 ts 源码摘录...</source_files>"
729
+ ```
730
+
731
+ agent 返回 `---KB---\n<full md body>\n---END---` envelope。**调用方手动** copy
732
+ body 写入 `.forge-knowledge/modules/daemon.md`。
733
+
734
+ ### Routing hints(host 注入到 system prompt)
735
+
736
+ R-B 引入 `withKnowledgeRoutingHints()`(`src/knowledge/cli-provider.ts`):在
737
+ 传给 `spawnClaudeCli` 的 `system` 字段拼上:
738
+
739
+ - `<page_kind>module|cross-module</page_kind>` — agent 据此决定输出 JSON
740
+ `{content, refs}`(module page)还是纯 markdown(cross-module page)
741
+ - `<page_name>daemon|architecture|...</page_name>` — agent 据此为 envelope 命名
742
+
743
+ routing hints 通过 system prompt 而不是 prompt body 传,避免污染 LLM 看的
744
+ "用户输入"部分。
745
+
746
+ ### 首次使用必读:TUI restart 必要
747
+
748
+ 与 `decision-maker` / `skill-distiller` / `claudemd-writer` 同样的 quirk ——
749
+ Claude Code TUI 在**启动时**一次性扫描 `.claude/agents/`,运行中新增的 agent
750
+ 不会被自动识别。
751
+
752
+ **首次使用(或更新 template 后)必须重启 TUI**:
753
+ - macOS: `Cmd+R` 或关闭窗口重新打开
754
+ - 重启后验证:在 Task tool 输入 `subagent_type='knowledge-builder'` 不报 not
755
+ found 即可
756
+
757
+ > 注意:方式 1(程序化 `cf knowledge build`)**不受** TUI restart 影响 —— 它
758
+ > 走 `child_process.spawn('claude', ...)`,与 TUI 的 agent registry 无关。
759
+
760
+ ### TUI restart 后仍 not found 的 fallback
761
+
762
+ 若重启 TUI 后 `subagent_type='knowledge-builder'` 仍报 not found,使用以下
763
+ inline 方式:
764
+
765
+ ```
766
+ spawn general-purpose agent with prompt:
767
+ "你扮演 knowledge-builder 角色。Read .claude/agents/knowledge-builder.md
768
+ 然后按其 Workflow 执行。
769
+
770
+ 输入 tags 如下:
771
+ <page_kind>module</page_kind>
772
+ <page_name>daemon</page_name>
773
+ <repo_map>...</repo_map>
774
+ <source_files>...</source_files>"
775
+ ```
776
+
777
+ ### Agent 文件三处镜像
778
+
779
+ ```
780
+ src/daemon/templates/agents/knowledge-builder.md ← canonical source (git tracked)
781
+ .claude/agents/knowledge-builder.md ← repo mirror (git -f tracked, TUI scan)
782
+ dist/daemon/templates/agents/knowledge-builder.md ← npm payload (build cp produces)
783
+ ~/.claude/agents/knowledge-builder.md ← user sync target (agent-sync.ts)
784
+ ```
785
+
786
+ 修改 agent .md 时**只改 canonical**(`src/daemon/templates/agents/`),然后:
787
+
788
+ ```bash
789
+ # 同步到 repo mirror
790
+ cp src/daemon/templates/agents/knowledge-builder.md .claude/agents/knowledge-builder.md
791
+ # build 自动同步到 dist/
792
+ npm run build
793
+ # daemon restart 自动同步到 ~/.claude/agents/
794
+ cf daemon restart
795
+ ```
796
+
797
+ repo mirror 与 canonical 必须 **byte-identical**(同 skill-distiller /
798
+ claudemd-writer,CI 不强制,lint 检查计划未来 phase 加入)。
799
+
800
+ ### Hard-fail 错误(不会 fallback 到 stub)
801
+
802
+ - `ClaudeCliMissingError` —— PATH 中找不到 `claude` binary,install hint:
803
+ `brew install claude` 或 `npm i -g @anthropic-ai/claude-code`
804
+ - `ClaudeCliExitError` —— 子进程 exit code ≠ 0(stderr snippet 打印)
805
+ - `ClaudeCliTimeoutError` —— 超过 5 分钟未完成(默认 timeout 300_000ms)
806
+ - `ClaudeCliCancelledError` —— 调用方主动 abort
807
+ - `KbBlockMissingError` —— agent 输出缺 `---KB---...---END---` envelope
808
+ (前 300 字符 snippet 打印;通常是 agent template drift,pull 最新
809
+ `.claude/agents/knowledge-builder.md` 后重试)
810
+
811
+ 所有错误**直接 exit 1**,不退化到模板(与 R-A 时期临时 `KnowledgeStubError`
812
+ 行为不同;R-B 之后 stub 类型保留但永不抛,R-D 将彻底删除)。
813
+
814
+ `src/cli/commands/knowledge.ts` 的 `reportKnowledgeBuildError()` 把这些错误
815
+ 映射成 operator-friendly 提示(含 install hint / snippet / 安全行动建议),
816
+ build / init / update 三个 action handler 共享。
817
+
818
+ ### `cf knowledge query --strategy rerank` 已下线
819
+
820
+ 历史上 v9.3 引入过 Haiku rerank 检索路径(`--strategy rerank` + LRU 缓存 +
821
+ 优雅降级)。该路径在 **Spec 2 Stage B(commit `797326f8`)已整组下线**,
822
+ 连同 `kb_query_log` 表的 `strategy` / `rerank_cache_hit` / `rerank_failed` 列
823
+ 与 `idx_kb_query_log_project_strategy` 索引一起迁移删除。
824
+
825
+ 子 spec B R-C 评估时确认:当前 src/ 没有任何活跃的 rerank stub / 入口需要
826
+ 接通;本期 R-C **无 rerank 改动**。R-D 评估时如果发现 type 残留再清扫。
827
+
828
+ 如果未来要重新引入 AI rerank:应在新 spec 里走 `claude` CLI 子进程 +
829
+ `knowledge-reranker` agent(不要再引入 ClaudeProvider 实例 / API key 依赖)。
830
+
831
+ ---
832
+
833
+ ## patch-applier agent 使用说明
834
+
835
+ `patch-applier` agent 定义在 `.claude/agents/patch-applier.md`(与
836
+ `src/daemon/templates/agents/patch-applier.md` 完全镜像,agent-sync 启动时
837
+ 拷到 `~/.claude/agents/`)。
838
+
839
+ 引入背景:spec [`0902`](docs/design/2026-05-29/0902-ai-config-removal-master-spec.md)
840
+ 子 spec C — 把 Web `POST /api/patch/preview` 从「daemon 进程内
841
+ `ClaudeProvider.complete()` + 用户配的 `ANTHROPIC_API_KEY`」迁到
842
+ 「`child_process.spawn('claude', ...)` headless CLI 子进程」。daemon 自身不再
843
+ 持 API key,走用户 Claude Code 订阅计费。
844
+
845
+ ### 两种使用方式
846
+
847
+ #### 方式 1:作为 `/api/patch/preview` 的 prompt 模板(程序化调用,默认入口)
848
+
849
+ `src/web/routes/patch.ts` 的 `registerPatchRoutes()` 在每次 POST 时调
850
+ `spawnClaudeCli()`(`src/core/utils/claude-cli-spawn.ts`,与 `claudemd-writer` /
851
+ `knowledge-builder` 共用):
852
+
853
+ ```bash
854
+ claude -p --agent patch-applier --bare \
855
+ --output-format stream-json --include-partial-messages \
856
+ --allowedTools "Read,Grep" --input-format text
857
+ ```
858
+
859
+ 每次 `POST /api/patch/preview` 一次 spawn。stdin 注入由 `buildPatchApplierPrompt()`
860
+ 拼接的 tagged blocks:
861
+
862
+ ```
863
+ <target_path>agents/decision-maker</target_path>
864
+ <file_content>...current full file content...</file_content>
865
+ <instruction>...natural-language change description...</instruction>
866
+ <context_files></context_files>
867
+ <rationale>...optional reason...</rationale>
868
+ ```
869
+
870
+ agent 解析后输出**正好一个** envelope(两种之一,**discriminated union**):
871
+
872
+ - `---PATCH---\n<unified diff>\n---END---` —— 实际可应用的 `patch -p0` 格式 diff
873
+ - `---NOPATCH---\nreason: <短语>\n---END---` —— 拒绝改动(文件已满足要求 /
874
+ 指令模糊 / 破坏性 / >50% 行需改写等场景)
875
+
876
+ host 调 `parsePatchEnvelope()` 抽 body:PATCH 优先(双 envelope 同现取 PATCH),
877
+ 解析失败抛 `PatchBlockMissingError`。
878
+
879
+ 响应 JSON shape:
880
+
881
+ ```typescript
882
+ // PATCH 路径
883
+ { targetType, targetName, filePath, patch: string, recommendation, rationale }
884
+ // NOPATCH 路径
885
+ { targetType, targetName, filePath, noPatch: true, reason: string, recommendation, rationale }
886
+ ```
887
+
888
+ 这种用法**不需要** TUI restart —— 不走 Claude Code 的 Task tool agent registry,
889
+ 是 host CLI 直接 spawn `claude` 子进程。
890
+
891
+ #### 方式 2:在 Claude Code TUI 里手动 spawn(调试 / 一次性生成)
892
+
893
+ ```
894
+ Task tool subagent_type='patch-applier' with prompt:
895
+ "<target_path>src/foo/bar.ts</target_path>
896
+ <file_content>...</file_content>
897
+ <instruction>把 logger.warn 全部换成 logger.error</instruction>
898
+ <context_files></context_files>
899
+ <rationale>warn level 太低,alert 漏触发</rationale>"
900
+ ```
901
+
902
+ agent 返回 `---PATCH---\n<diff>\n---END---` 或
903
+ `---NOPATCH---\nreason: ...\n---END---` envelope。**调用方手动** copy diff
904
+ 本地 `patch -p0 <` 应用。
905
+
906
+ ### 首次使用必读:TUI restart 必要
907
+
908
+ 与 `decision-maker` / `skill-distiller` / `claudemd-writer` / `knowledge-builder`
909
+ 同样的 quirk —— Claude Code TUI 在**启动时**一次性扫描 `.claude/agents/`,
910
+ 运行中新增的 agent 不会被自动识别。
911
+
912
+ **首次使用(或更新 template 后)必须重启 TUI**:
913
+ - macOS: `Cmd+R` 或关闭窗口重新打开
914
+ - 重启后验证:在 Task tool 输入 `subagent_type='patch-applier'` 不报 not
915
+ found 即可
916
+
917
+ > 注意:方式 1(程序化 `/api/patch/preview`)**不受** TUI restart 影响 —— 它
918
+ > 走 `child_process.spawn('claude', ...)`,与 TUI 的 agent registry 无关。
919
+
920
+ ### TUI restart 后仍 not found 的 fallback
921
+
922
+ 若重启 TUI 后 `subagent_type='patch-applier'` 仍报 not found,使用以下
923
+ inline 方式:
924
+
925
+ ```
926
+ spawn general-purpose agent with prompt:
927
+ "你扮演 patch-applier 角色。Read .claude/agents/patch-applier.md
928
+ 然后按其 Workflow 执行。
929
+
930
+ 输入 tags 如下:
931
+ <target_path>...</target_path>
932
+ <file_content>...</file_content>
933
+ <instruction>...</instruction>
934
+ <context_files>...</context_files>
935
+ <rationale>...</rationale>"
936
+ ```
937
+
938
+ ### Agent 文件三处镜像
939
+
940
+ ```
941
+ src/daemon/templates/agents/patch-applier.md ← canonical source (git tracked)
942
+ .claude/agents/patch-applier.md ← repo mirror (git -f tracked, TUI scan)
943
+ dist/daemon/templates/agents/patch-applier.md ← npm payload (build cp produces)
944
+ ~/.claude/agents/patch-applier.md ← user sync target (agent-sync.ts)
945
+ ```
946
+
947
+ 修改 agent .md 时**只改 canonical**(`src/daemon/templates/agents/`),然后:
948
+
949
+ ```bash
950
+ # 同步到 repo mirror
951
+ cp src/daemon/templates/agents/patch-applier.md .claude/agents/patch-applier.md
952
+ # build 自动同步到 dist/
953
+ npm run build
954
+ # daemon restart 自动同步到 ~/.claude/agents/
955
+ cf daemon restart
956
+ ```
957
+
958
+ repo mirror 与 canonical 必须 **byte-identical**(同 skill-distiller /
959
+ claudemd-writer / knowledge-builder;CI 不强制,lint 检查计划未来 phase 加入)。
960
+
961
+ ### PATCH / NOPATCH 双 envelope 协议(discriminated union 响应)
962
+
963
+ 这是 patch-applier 与 claudemd-writer / knowledge-builder 的**关键差异**:
964
+
965
+ | Agent | Envelope | 响应字段 |
966
+ |---|---|---|
967
+ | `claudemd-writer` | 单一 `---CLAUDEMD---...---END---` | 始终是 markdown body |
968
+ | `knowledge-builder` | 多 `---KB---...---END---` 拼接 | 每 page 一个 envelope |
969
+ | `patch-applier` | **二选一** `---PATCH---` 或 `---NOPATCH---` | discriminated union `{patch?, noPatch?, reason?}` |
970
+
971
+ `/api/patch/preview` 响应 shape 的 discriminated union 由 `parsePatchEnvelope()`
972
+ 保证:成功路径**恰好返回一个 patch 或一个 noPatch+reason**,调用方判断响应字段:
973
+
974
+ ```typescript
975
+ const r = await fetch('/api/patch/preview', { method: 'POST', body: ... });
976
+ const data = await r.json();
977
+ if (data.noPatch) {
978
+ // 拒绝改动,data.reason 显示拒因
979
+ } else if (data.patch) {
980
+ // 拿到 unified diff,调 /api/patch/apply 或本地 patch -p0
981
+ } else {
982
+ // 错误响应(500 / 504 / 499 等),看 data.error / data.message
983
+ }
984
+ ```
985
+
986
+ ### HTTP 错误码细分(R-B 引入)
987
+
988
+ | code | 错误类型 | 触发场景 |
989
+ |---|---|---|
990
+ | 400 | input validation | targetType / targetName / recommendation 缺失或非法 |
991
+ | 404 | not found | 解析后的 filePath 不存在 |
992
+ | 499 | `ClaudeCliCancelledError` | 调用方主动 abort(HTTP 499 借用 Nginx semantics)|
993
+ | 500 | `ClaudeCliMissingError` | PATH 找不到 `claude` binary(含 install hint) |
994
+ | 500 | `ClaudeCliExitError` | 子进程 exit code ≠ 0(含 stderr snippet) |
995
+ | 500 | `PatchBlockMissingError` | agent 输出缺 envelope(含 200 字符 rawSnippet) |
996
+ | 500 | `PatchSpawnError` | 未识别异常的兜底 |
997
+ | 504 | `ClaudeCliTimeoutError` | 超过 5 分钟未完成(默认 timeout 300_000ms) |
998
+
999
+ 所有错误**直接 hard-fail**,不退化到模板(与 R-A 时期临时 `PatchStubError`
1000
+ 行为不同;R-B 之后 stub 类型保留但永不抛,R-D 将彻底删除)。
1001
+
1002
+ ### 非 SSE 流式决策(R-C 评估结果)
1003
+
1004
+ R-B 阶段 `runWithChildProcess` 留下了 `spawnClaudeCli.onProgress` 接口未接通,
1005
+ R-C 评估是否升级为 SSE 流式(前端能实时累加 diff partial):
1006
+
1007
+ - 当前 `web/src/` 内置前端**没有任何** `/api/patch` 消费者(`grep -rn "api/patch" web/src` = 0 命中)
1008
+ - 加 SSE 会引入 `text/event-stream` + 前端 EventSource 订阅逻辑,复杂度高
1009
+ - 子 spec A / B 也未引入 SSE,保持一致
1010
+ - **决策:本期 R-C 不加 SSE**,前端如需进度提示可用 spinner + "生成 patch 中..." 文案。
1011
+ - 未来若加 patch web UI,可在新 spec 中评估 SSE 升级;spawnClaudeCli 已具
1012
+ `onProgress` 接口,桥接 SSE event 较低成本
1013
+
1014
+ ### Hard-fail 错误(不会 fallback 到 stub)
1015
+
1016
+ - `ClaudeCliMissingError` —— PATH 中找不到 `claude` binary,install hint:
1017
+ `brew install claude` 或 `npm i -g @anthropic-ai/claude-code`
1018
+ - `ClaudeCliExitError` —— 子进程 exit code ≠ 0(stderr snippet 打印)
1019
+ - `ClaudeCliTimeoutError` —— 超过 5 分钟未完成
1020
+ - `ClaudeCliCancelledError` —— 调用方主动 abort
1021
+ - `PatchBlockMissingError` —— agent 输出缺 `---PATCH---...---END---` 或
1022
+ `---NOPATCH---...---END---` envelope(前 200 字符 snippet 入响应 JSON;
1023
+ 通常是 agent template drift,pull 最新 `.claude/agents/patch-applier.md`
1024
+ 后重试)
1025
+
1026
+ > `PatchStubError` 仍作 `@deprecated` named export 保留(R-A → R-D 兼容窗口),
1027
+ > R-B 之后永不被抛;R-D 删除整个类 + tests/unit/web/routes/patch.test.ts 中
1028
+ > `PatchStubError` describe 块。
1029
+
1030
+ ---
1031
+
355
1032
  ## 故障排查
356
1033
 
357
1034
  | 现象 | 排查 |
@@ -359,7 +1036,7 @@ version: 1.0.0
359
1036
  | Hook 没触发 | `ls -la ~/.claude/hooks/` 看是否指向 `dist/hooks/`;缺失就跑 `cf init`;或重启 daemon 让 `syncHooks()` 自动补 |
360
1037
  | daemon 启动报 `EADDRINUSE` | 上次进程没退;`cf daemon stop` 或 `lsof -i :3721` 找 pid 杀 |
361
1038
  | Web 后台 404 | `dist/web/static/` 是否存在;`npm run build` 是否成功;Vite 前端 `cd web && npm run build` 后再 root build |
362
- | Skill 没被推荐 | `cf skills list` 看是否加载;frontmatter 检查是否缺 `name` 字段;语义匹配需要 `cf config` API key |
1039
+ | Skill 没被推荐 | `cf skills list` 看是否加载;frontmatter 检查是否缺 `name` 字段。**注**:语义匹配 (`SemanticSkillMatcher`) 已在 spec `0902` spec D R-B 删除,现在仅 keyword 匹配 — 确保 skill frontmatter 的 `keywords: [...]` 列表覆盖关键词 |
363
1040
  | `cf skills upgrade` 无候选 | `~/.claude-forge/skill-candidates/` 是否拉成功;网络问题用代理重试 |
364
1041
  | better-sqlite3 native binding error | Node 版本与 binding 不匹配;`npm rebuild better-sqlite3` |
365
1042
  | Schema 改动后查不到字段 | 手动加 `src/core/storage/migrations/<n>_<desc>.sql`,daemon 启动会自动执行 |