@winspan/claude-forge 8.54.4 → 9.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (880) hide show
  1. package/DEVELOPMENT.md +649 -33
  2. package/README.md +154 -16
  3. package/dist/catalogs/agents.json +72 -0
  4. package/dist/catalogs/skills.json +194 -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/agents.d.ts +18 -0
  26. package/dist/cli/commands/agents.d.ts.map +1 -0
  27. package/dist/cli/commands/agents.js +160 -0
  28. package/dist/cli/commands/agents.js.map +1 -0
  29. package/dist/cli/commands/bypass.d.ts +18 -0
  30. package/dist/cli/commands/bypass.d.ts.map +1 -0
  31. package/dist/cli/commands/bypass.js +87 -0
  32. package/dist/cli/commands/bypass.js.map +1 -0
  33. package/dist/cli/commands/claudemd.d.ts +60 -0
  34. package/dist/cli/commands/claudemd.d.ts.map +1 -1
  35. package/dist/cli/commands/claudemd.js +174 -37
  36. package/dist/cli/commands/claudemd.js.map +1 -1
  37. package/dist/cli/commands/config.d.ts.map +1 -1
  38. package/dist/cli/commands/config.js +94 -1
  39. package/dist/cli/commands/config.js.map +1 -1
  40. package/dist/cli/commands/daemon.d.ts +39 -0
  41. package/dist/cli/commands/daemon.d.ts.map +1 -1
  42. package/dist/cli/commands/daemon.js +167 -20
  43. package/dist/cli/commands/daemon.js.map +1 -1
  44. package/dist/cli/commands/decisions.d.ts +129 -0
  45. package/dist/cli/commands/decisions.d.ts.map +1 -0
  46. package/dist/cli/commands/decisions.js +669 -0
  47. package/dist/cli/commands/decisions.js.map +1 -0
  48. package/dist/cli/commands/doctor.d.ts +29 -0
  49. package/dist/cli/commands/doctor.d.ts.map +1 -0
  50. package/dist/cli/commands/doctor.js +124 -0
  51. package/dist/cli/commands/doctor.js.map +1 -0
  52. package/dist/cli/commands/entropy.d.ts +35 -0
  53. package/dist/cli/commands/entropy.d.ts.map +1 -0
  54. package/dist/cli/commands/entropy.js +121 -0
  55. package/dist/cli/commands/entropy.js.map +1 -0
  56. package/dist/cli/commands/executions.d.ts +1 -0
  57. package/dist/cli/commands/executions.d.ts.map +1 -1
  58. package/dist/cli/commands/executions.js +10 -1
  59. package/dist/cli/commands/executions.js.map +1 -1
  60. package/dist/cli/commands/fix.d.ts +31 -0
  61. package/dist/cli/commands/fix.d.ts.map +1 -0
  62. package/dist/cli/commands/fix.js +108 -0
  63. package/dist/cli/commands/fix.js.map +1 -0
  64. package/dist/cli/commands/governance.d.ts +21 -0
  65. package/dist/cli/commands/governance.d.ts.map +1 -0
  66. package/dist/cli/commands/governance.js +60 -0
  67. package/dist/cli/commands/governance.js.map +1 -0
  68. package/dist/cli/commands/init.d.ts +27 -0
  69. package/dist/cli/commands/init.d.ts.map +1 -1
  70. package/dist/cli/commands/init.js +158 -146
  71. package/dist/cli/commands/init.js.map +1 -1
  72. package/dist/cli/commands/insights-goal-check.d.ts +50 -0
  73. package/dist/cli/commands/insights-goal-check.d.ts.map +1 -0
  74. package/dist/cli/commands/insights-goal-check.js +318 -0
  75. package/dist/cli/commands/insights-goal-check.js.map +1 -0
  76. package/dist/cli/commands/insights.d.ts +15 -0
  77. package/dist/cli/commands/insights.d.ts.map +1 -0
  78. package/dist/cli/commands/insights.js +127 -0
  79. package/dist/cli/commands/insights.js.map +1 -0
  80. package/dist/cli/commands/knowledge.d.ts +66 -0
  81. package/dist/cli/commands/knowledge.d.ts.map +1 -0
  82. package/dist/cli/commands/knowledge.js +897 -0
  83. package/dist/cli/commands/knowledge.js.map +1 -0
  84. package/dist/cli/commands/mcp.d.ts +0 -12
  85. package/dist/cli/commands/mcp.d.ts.map +1 -1
  86. package/dist/cli/commands/mcp.js +11 -5
  87. package/dist/cli/commands/mcp.js.map +1 -1
  88. package/dist/cli/commands/menu.d.ts.map +1 -1
  89. package/dist/cli/commands/menu.js +10 -184
  90. package/dist/cli/commands/menu.js.map +1 -1
  91. package/dist/cli/commands/project.d.ts +98 -0
  92. package/dist/cli/commands/project.d.ts.map +1 -0
  93. package/dist/cli/commands/project.js +382 -0
  94. package/dist/cli/commands/project.js.map +1 -0
  95. package/dist/cli/commands/skills.d.ts.map +1 -1
  96. package/dist/cli/commands/skills.js +14 -128
  97. package/dist/cli/commands/skills.js.map +1 -1
  98. package/dist/cli/commands/spec.d.ts +40 -0
  99. package/dist/cli/commands/spec.d.ts.map +1 -0
  100. package/dist/cli/commands/spec.js +49 -0
  101. package/dist/cli/commands/spec.js.map +1 -0
  102. package/dist/cli/commands/stats.d.ts.map +1 -1
  103. package/dist/cli/commands/stats.js +3 -2
  104. package/dist/cli/commands/stats.js.map +1 -1
  105. package/dist/cli/commands/status.d.ts.map +1 -1
  106. package/dist/cli/commands/status.js +17 -2
  107. package/dist/cli/commands/status.js.map +1 -1
  108. package/dist/cli/commands/trace.d.ts.map +1 -1
  109. package/dist/cli/commands/trace.js +4 -9
  110. package/dist/cli/commands/trace.js.map +1 -1
  111. package/dist/cli/commands/violations.d.ts +14 -0
  112. package/dist/cli/commands/violations.d.ts.map +1 -0
  113. package/dist/cli/commands/violations.js +43 -0
  114. package/dist/cli/commands/violations.js.map +1 -0
  115. package/dist/cli/index.js +26 -0
  116. package/dist/cli/index.js.map +1 -1
  117. package/dist/cli/init/hook-manager.d.ts +1 -1
  118. package/dist/cli/init/hook-manager.d.ts.map +1 -1
  119. package/dist/cli/init/hook-manager.js +6 -0
  120. package/dist/cli/init/hook-manager.js.map +1 -1
  121. package/dist/cli/utils/resolve-session.d.ts +32 -0
  122. package/dist/cli/utils/resolve-session.d.ts.map +1 -0
  123. package/dist/cli/utils/resolve-session.js +39 -0
  124. package/dist/cli/utils/resolve-session.js.map +1 -0
  125. package/dist/core/config.d.ts +4 -1
  126. package/dist/core/config.d.ts.map +1 -1
  127. package/dist/core/config.js +11 -23
  128. package/dist/core/config.js.map +1 -1
  129. package/dist/core/constants.d.ts +14 -13
  130. package/dist/core/constants.d.ts.map +1 -1
  131. package/dist/core/constants.js +20 -13
  132. package/dist/core/constants.js.map +1 -1
  133. package/dist/core/diagnostics/checks.d.ts +151 -0
  134. package/dist/core/diagnostics/checks.d.ts.map +1 -0
  135. package/dist/core/diagnostics/checks.js +765 -0
  136. package/dist/core/diagnostics/checks.js.map +1 -0
  137. package/dist/core/diagnostics/daemon-status.d.ts +77 -0
  138. package/dist/core/diagnostics/daemon-status.d.ts.map +1 -0
  139. package/dist/core/diagnostics/daemon-status.js +113 -0
  140. package/dist/core/diagnostics/daemon-status.js.map +1 -0
  141. package/dist/core/diagnostics/entropy-checks.d.ts +82 -0
  142. package/dist/core/diagnostics/entropy-checks.d.ts.map +1 -0
  143. package/dist/core/diagnostics/entropy-checks.js +395 -0
  144. package/dist/core/diagnostics/entropy-checks.js.map +1 -0
  145. package/dist/core/diagnostics/fix-runner.d.ts +54 -0
  146. package/dist/core/diagnostics/fix-runner.d.ts.map +1 -0
  147. package/dist/core/diagnostics/fix-runner.js +90 -0
  148. package/dist/core/diagnostics/fix-runner.js.map +1 -0
  149. package/dist/core/diagnostics/knip-runner.d.ts +49 -0
  150. package/dist/core/diagnostics/knip-runner.d.ts.map +1 -0
  151. package/dist/core/diagnostics/knip-runner.js +100 -0
  152. package/dist/core/diagnostics/knip-runner.js.map +1 -0
  153. package/dist/core/diagnostics/markers.d.ts +96 -0
  154. package/dist/core/diagnostics/markers.d.ts.map +1 -0
  155. package/dist/core/diagnostics/markers.js +153 -0
  156. package/dist/core/diagnostics/markers.js.map +1 -0
  157. package/dist/core/governance/global-inject.d.ts +60 -0
  158. package/dist/core/governance/global-inject.d.ts.map +1 -0
  159. package/dist/core/governance/global-inject.js +129 -0
  160. package/dist/core/governance/global-inject.js.map +1 -0
  161. package/dist/core/queue/index.d.ts +16 -3
  162. package/dist/core/queue/index.d.ts.map +1 -1
  163. package/dist/core/queue/index.js +14 -3
  164. package/dist/core/queue/index.js.map +1 -1
  165. package/dist/core/storage/base.d.ts +158 -0
  166. package/dist/core/storage/base.d.ts.map +1 -1
  167. package/dist/core/storage/base.js +570 -0
  168. package/dist/core/storage/base.js.map +1 -1
  169. package/dist/core/storage/codec/tool-input-codec.d.ts +93 -0
  170. package/dist/core/storage/codec/tool-input-codec.d.ts.map +1 -0
  171. package/dist/core/storage/codec/tool-input-codec.js +159 -0
  172. package/dist/core/storage/codec/tool-input-codec.js.map +1 -0
  173. package/dist/core/storage/decisions.d.ts +362 -0
  174. package/dist/core/storage/decisions.d.ts.map +1 -0
  175. package/dist/core/storage/decisions.js +502 -0
  176. package/dist/core/storage/decisions.js.map +1 -0
  177. package/dist/core/storage/events.d.ts +112 -8
  178. package/dist/core/storage/events.d.ts.map +1 -1
  179. package/dist/core/storage/events.js +390 -39
  180. package/dist/core/storage/events.js.map +1 -1
  181. package/dist/core/storage/feedback.d.ts +131 -0
  182. package/dist/core/storage/feedback.d.ts.map +1 -0
  183. package/dist/core/storage/feedback.js +187 -0
  184. package/dist/core/storage/feedback.js.map +1 -0
  185. package/dist/core/storage/forge-config.d.ts +40 -0
  186. package/dist/core/storage/forge-config.d.ts.map +1 -0
  187. package/dist/core/storage/forge-config.js +65 -0
  188. package/dist/core/storage/forge-config.js.map +1 -0
  189. package/dist/core/storage/injections.d.ts +28 -0
  190. package/dist/core/storage/injections.d.ts.map +1 -1
  191. package/dist/core/storage/injections.js +62 -5
  192. package/dist/core/storage/injections.js.map +1 -1
  193. package/dist/core/storage/knowledge.d.ts +106 -0
  194. package/dist/core/storage/knowledge.d.ts.map +1 -0
  195. package/dist/core/storage/knowledge.js +202 -0
  196. package/dist/core/storage/knowledge.js.map +1 -0
  197. package/dist/core/storage/maintenance.d.ts +36 -9
  198. package/dist/core/storage/maintenance.d.ts.map +1 -1
  199. package/dist/core/storage/maintenance.js +56 -24
  200. package/dist/core/storage/maintenance.js.map +1 -1
  201. package/dist/core/storage/pipeline-rollup.d.ts +117 -0
  202. package/dist/core/storage/pipeline-rollup.d.ts.map +1 -0
  203. package/dist/core/storage/pipeline-rollup.js +471 -0
  204. package/dist/core/storage/pipeline-rollup.js.map +1 -0
  205. package/dist/core/storage/routing.d.ts +16 -3
  206. package/dist/core/storage/routing.d.ts.map +1 -1
  207. package/dist/core/storage/routing.js +39 -8
  208. package/dist/core/storage/routing.js.map +1 -1
  209. package/dist/core/storage/rows.d.ts +50 -7
  210. package/dist/core/storage/rows.d.ts.map +1 -1
  211. package/dist/core/storage/schema.sql +302 -23
  212. package/dist/core/storage/sessions.d.ts +136 -0
  213. package/dist/core/storage/sessions.d.ts.map +1 -1
  214. package/dist/core/storage/sessions.js +351 -15
  215. package/dist/core/storage/sessions.js.map +1 -1
  216. package/dist/core/storage/skills.d.ts +1 -0
  217. package/dist/core/storage/skills.d.ts.map +1 -1
  218. package/dist/core/storage/skills.js +21 -6
  219. package/dist/core/storage/skills.js.map +1 -1
  220. package/dist/core/storage/sqlite.d.ts +253 -20
  221. package/dist/core/storage/sqlite.d.ts.map +1 -1
  222. package/dist/core/storage/sqlite.js +425 -16
  223. package/dist/core/storage/sqlite.js.map +1 -1
  224. package/dist/core/storage/tasks.d.ts +474 -2
  225. package/dist/core/storage/tasks.d.ts.map +1 -1
  226. package/dist/core/storage/tasks.js +1213 -18
  227. package/dist/core/storage/tasks.js.map +1 -1
  228. package/dist/core/storage/tool-intercepts.d.ts +69 -0
  229. package/dist/core/storage/tool-intercepts.d.ts.map +1 -0
  230. package/dist/core/storage/tool-intercepts.js +116 -0
  231. package/dist/core/storage/tool-intercepts.js.map +1 -0
  232. package/dist/core/storage/workflow-recommendations.d.ts +124 -0
  233. package/dist/core/storage/workflow-recommendations.d.ts.map +1 -0
  234. package/dist/core/storage/workflow-recommendations.js +274 -0
  235. package/dist/core/storage/workflow-recommendations.js.map +1 -0
  236. package/dist/core/types.d.ts +112 -17
  237. package/dist/core/types.d.ts.map +1 -1
  238. package/dist/core/types.js +12 -0
  239. package/dist/core/types.js.map +1 -1
  240. package/dist/core/utils/backup.d.ts +81 -0
  241. package/dist/core/utils/backup.d.ts.map +1 -0
  242. package/dist/core/utils/backup.js +98 -0
  243. package/dist/core/utils/backup.js.map +1 -0
  244. package/dist/core/utils/binary-paths.d.ts +92 -0
  245. package/dist/core/utils/binary-paths.d.ts.map +1 -0
  246. package/dist/core/utils/binary-paths.js +166 -0
  247. package/dist/core/utils/binary-paths.js.map +1 -0
  248. package/dist/core/utils/bypass-token.d.ts +75 -0
  249. package/dist/core/utils/bypass-token.d.ts.map +1 -0
  250. package/dist/core/utils/bypass-token.js +133 -0
  251. package/dist/core/utils/bypass-token.js.map +1 -0
  252. package/dist/core/utils/cc-builtin-agents.d.ts +3 -0
  253. package/dist/core/utils/cc-builtin-agents.d.ts.map +1 -0
  254. package/dist/core/utils/cc-builtin-agents.js +29 -0
  255. package/dist/core/utils/cc-builtin-agents.js.map +1 -0
  256. package/dist/core/utils/claude-cli-spawn.d.ts +106 -0
  257. package/dist/core/utils/claude-cli-spawn.d.ts.map +1 -0
  258. package/dist/core/utils/claude-cli-spawn.js +219 -0
  259. package/dist/core/utils/claude-cli-spawn.js.map +1 -0
  260. package/dist/core/utils/forge-resume-block.d.ts.map +1 -1
  261. package/dist/core/utils/forge-resume-block.js +3 -2
  262. package/dist/core/utils/forge-resume-block.js.map +1 -1
  263. package/dist/core/utils/logger.d.ts +15 -3
  264. package/dist/core/utils/logger.d.ts.map +1 -1
  265. package/dist/core/utils/logger.js +20 -2
  266. package/dist/core/utils/logger.js.map +1 -1
  267. package/dist/core/utils/noise-prompt.d.ts +97 -0
  268. package/dist/core/utils/noise-prompt.d.ts.map +1 -0
  269. package/dist/core/utils/noise-prompt.js +127 -0
  270. package/dist/core/utils/noise-prompt.js.map +1 -0
  271. package/dist/core/utils/path.d.ts +0 -4
  272. package/dist/core/utils/path.d.ts.map +1 -1
  273. package/dist/core/utils/path.js +0 -7
  274. package/dist/core/utils/path.js.map +1 -1
  275. package/dist/core/utils/time.d.ts +41 -0
  276. package/dist/core/utils/time.d.ts.map +1 -1
  277. package/dist/core/utils/time.js +114 -0
  278. package/dist/core/utils/time.js.map +1 -1
  279. package/dist/daemon/agent-sync.d.ts +24 -0
  280. package/dist/daemon/agent-sync.d.ts.map +1 -0
  281. package/dist/daemon/agent-sync.js +114 -0
  282. package/dist/daemon/agent-sync.js.map +1 -0
  283. package/dist/daemon/config-store.d.ts +55 -0
  284. package/dist/daemon/config-store.d.ts.map +1 -0
  285. package/dist/daemon/config-store.js +137 -0
  286. package/dist/daemon/config-store.js.map +1 -0
  287. package/dist/daemon/event-parser.d.ts +22 -0
  288. package/dist/daemon/event-parser.d.ts.map +1 -1
  289. package/dist/daemon/event-parser.js +49 -3
  290. package/dist/daemon/event-parser.js.map +1 -1
  291. package/dist/daemon/handlers/history-exporter.d.ts.map +1 -1
  292. package/dist/daemon/handlers/history-exporter.js +9 -8
  293. package/dist/daemon/handlers/history-exporter.js.map +1 -1
  294. package/dist/daemon/handlers/post-tool-use.d.ts +58 -4
  295. package/dist/daemon/handlers/post-tool-use.d.ts.map +1 -1
  296. package/dist/daemon/handlers/post-tool-use.js +261 -8
  297. package/dist/daemon/handlers/post-tool-use.js.map +1 -1
  298. package/dist/daemon/handlers/pre-tool-use.d.ts +156 -0
  299. package/dist/daemon/handlers/pre-tool-use.d.ts.map +1 -0
  300. package/dist/daemon/handlers/pre-tool-use.js +585 -0
  301. package/dist/daemon/handlers/pre-tool-use.js.map +1 -0
  302. package/dist/daemon/handlers/stop.d.ts +35 -7
  303. package/dist/daemon/handlers/stop.d.ts.map +1 -1
  304. package/dist/daemon/handlers/stop.js +157 -8
  305. package/dist/daemon/handlers/stop.js.map +1 -1
  306. package/dist/daemon/handlers/user-prompt.d.ts +36 -14
  307. package/dist/daemon/handlers/user-prompt.d.ts.map +1 -1
  308. package/dist/daemon/handlers/user-prompt.js +135 -48
  309. package/dist/daemon/handlers/user-prompt.js.map +1 -1
  310. package/dist/daemon/hook-sync.d.ts.map +1 -1
  311. package/dist/daemon/hook-sync.js +2 -1
  312. package/dist/daemon/hook-sync.js.map +1 -1
  313. package/dist/daemon/index.d.ts.map +1 -1
  314. package/dist/daemon/index.js +471 -43
  315. package/dist/daemon/index.js.map +1 -1
  316. package/dist/daemon/lifecycle.d.ts +48 -1
  317. package/dist/daemon/lifecycle.d.ts.map +1 -1
  318. package/dist/daemon/lifecycle.js +98 -2
  319. package/dist/daemon/lifecycle.js.map +1 -1
  320. package/dist/daemon/router.d.ts +4 -1
  321. package/dist/daemon/router.d.ts.map +1 -1
  322. package/dist/daemon/router.js +4 -2
  323. package/dist/daemon/router.js.map +1 -1
  324. package/dist/daemon/rules/defaults.d.ts +20 -0
  325. package/dist/daemon/rules/defaults.d.ts.map +1 -0
  326. package/dist/daemon/rules/defaults.js +692 -0
  327. package/dist/daemon/rules/defaults.js.map +1 -0
  328. package/dist/daemon/rules/registry.d.ts +47 -0
  329. package/dist/daemon/rules/registry.d.ts.map +1 -0
  330. package/dist/daemon/rules/registry.js +84 -0
  331. package/dist/daemon/rules/registry.js.map +1 -0
  332. package/dist/daemon/rules/types.d.ts +170 -0
  333. package/dist/daemon/rules/types.d.ts.map +1 -0
  334. package/dist/daemon/rules/types.js +15 -0
  335. package/dist/daemon/rules/types.js.map +1 -0
  336. package/dist/daemon/rules/whitelist.d.ts +101 -0
  337. package/dist/daemon/rules/whitelist.d.ts.map +1 -0
  338. package/dist/daemon/rules/whitelist.js +210 -0
  339. package/dist/daemon/rules/whitelist.js.map +1 -0
  340. package/dist/daemon/rules/workflow-defaults.d.ts +52 -0
  341. package/dist/daemon/rules/workflow-defaults.d.ts.map +1 -0
  342. package/dist/daemon/rules/workflow-defaults.js +521 -0
  343. package/dist/daemon/rules/workflow-defaults.js.map +1 -0
  344. package/dist/daemon/server.d.ts +11 -1
  345. package/dist/daemon/server.d.ts.map +1 -1
  346. package/dist/daemon/server.js +7 -1
  347. package/dist/daemon/server.js.map +1 -1
  348. package/dist/daemon/services/context-injector.d.ts +34 -0
  349. package/dist/daemon/services/context-injector.d.ts.map +1 -0
  350. package/dist/daemon/services/context-injector.js +61 -0
  351. package/dist/daemon/services/context-injector.js.map +1 -0
  352. package/dist/daemon/services/decision-hint.d.ts +203 -0
  353. package/dist/daemon/services/decision-hint.d.ts.map +1 -0
  354. package/dist/daemon/services/decision-hint.js +487 -0
  355. package/dist/daemon/services/decision-hint.js.map +1 -0
  356. package/dist/daemon/services/event-ttl-sweep.d.ts +86 -0
  357. package/dist/daemon/services/event-ttl-sweep.d.ts.map +1 -0
  358. package/dist/daemon/services/event-ttl-sweep.js +123 -0
  359. package/dist/daemon/services/event-ttl-sweep.js.map +1 -0
  360. package/dist/daemon/services/experience-extractor.d.ts +67 -0
  361. package/dist/daemon/services/experience-extractor.d.ts.map +1 -0
  362. package/dist/daemon/services/experience-extractor.js +323 -0
  363. package/dist/daemon/services/experience-extractor.js.map +1 -0
  364. package/dist/daemon/services/feedback-aggregator.d.ts +179 -0
  365. package/dist/daemon/services/feedback-aggregator.d.ts.map +1 -0
  366. package/dist/daemon/services/feedback-aggregator.js +455 -0
  367. package/dist/daemon/services/feedback-aggregator.js.map +1 -0
  368. package/dist/daemon/services/heartbeat-writer.d.ts +55 -0
  369. package/dist/daemon/services/heartbeat-writer.d.ts.map +1 -0
  370. package/dist/daemon/services/heartbeat-writer.js +111 -0
  371. package/dist/daemon/services/heartbeat-writer.js.map +1 -0
  372. package/dist/daemon/services/idle-session-sweeper.d.ts +61 -0
  373. package/dist/daemon/services/idle-session-sweeper.d.ts.map +1 -0
  374. package/dist/daemon/services/idle-session-sweeper.js +94 -0
  375. package/dist/daemon/services/idle-session-sweeper.js.map +1 -0
  376. package/dist/daemon/services/idle-task-budget.d.ts +50 -0
  377. package/dist/daemon/services/idle-task-budget.d.ts.map +1 -0
  378. package/dist/daemon/services/idle-task-budget.js +72 -0
  379. package/dist/daemon/services/idle-task-budget.js.map +1 -0
  380. package/dist/daemon/services/intercept-revive.d.ts +60 -0
  381. package/dist/daemon/services/intercept-revive.d.ts.map +1 -0
  382. package/dist/daemon/services/intercept-revive.js +86 -0
  383. package/dist/daemon/services/intercept-revive.js.map +1 -0
  384. package/dist/daemon/services/intercept-rollback-guard.d.ts +105 -0
  385. package/dist/daemon/services/intercept-rollback-guard.d.ts.map +1 -0
  386. package/dist/daemon/services/intercept-rollback-guard.js +152 -0
  387. package/dist/daemon/services/intercept-rollback-guard.js.map +1 -0
  388. package/dist/daemon/services/intercept-timeout-sweeper.d.ts +58 -0
  389. package/dist/daemon/services/intercept-timeout-sweeper.d.ts.map +1 -0
  390. package/dist/daemon/services/intercept-timeout-sweeper.js +83 -0
  391. package/dist/daemon/services/intercept-timeout-sweeper.js.map +1 -0
  392. package/dist/daemon/services/kb-injector.d.ts +57 -0
  393. package/dist/daemon/services/kb-injector.d.ts.map +1 -0
  394. package/dist/daemon/services/kb-injector.js +140 -0
  395. package/dist/daemon/services/kb-injector.js.map +1 -0
  396. package/dist/daemon/services/outcome-classification-service.d.ts +49 -0
  397. package/dist/daemon/services/outcome-classification-service.d.ts.map +1 -0
  398. package/dist/daemon/services/outcome-classification-service.js +214 -0
  399. package/dist/daemon/services/outcome-classification-service.js.map +1 -0
  400. package/dist/daemon/services/outcome-classifier.d.ts +136 -0
  401. package/dist/daemon/services/outcome-classifier.d.ts.map +1 -0
  402. package/dist/daemon/services/outcome-classifier.js +178 -0
  403. package/dist/daemon/services/outcome-classifier.js.map +1 -0
  404. package/dist/daemon/services/outcome-nudge.d.ts +107 -0
  405. package/dist/daemon/services/outcome-nudge.d.ts.map +1 -0
  406. package/dist/daemon/services/outcome-nudge.js +242 -0
  407. package/dist/daemon/services/outcome-nudge.js.map +1 -0
  408. package/dist/daemon/services/spec-approval.d.ts +127 -0
  409. package/dist/daemon/services/spec-approval.d.ts.map +1 -0
  410. package/dist/daemon/services/spec-approval.js +216 -0
  411. package/dist/daemon/services/spec-approval.js.map +1 -0
  412. package/dist/daemon/services/spec-gate.d.ts +54 -0
  413. package/dist/daemon/services/spec-gate.d.ts.map +1 -0
  414. package/dist/daemon/services/spec-gate.js +113 -0
  415. package/dist/daemon/services/spec-gate.js.map +1 -0
  416. package/dist/daemon/services/task-boundary-classifier.d.ts +78 -0
  417. package/dist/daemon/services/task-boundary-classifier.d.ts.map +1 -0
  418. package/dist/daemon/services/task-boundary-classifier.js +202 -0
  419. package/dist/daemon/services/task-boundary-classifier.js.map +1 -0
  420. package/dist/daemon/services/task-segmenter.d.ts +219 -1
  421. package/dist/daemon/services/task-segmenter.d.ts.map +1 -1
  422. package/dist/daemon/services/task-segmenter.js +481 -17
  423. package/dist/daemon/services/task-segmenter.js.map +1 -1
  424. package/dist/daemon/services/violation-reporter.d.ts +130 -0
  425. package/dist/daemon/services/violation-reporter.d.ts.map +1 -0
  426. package/dist/daemon/services/violation-reporter.js +339 -0
  427. package/dist/daemon/services/violation-reporter.js.map +1 -0
  428. package/dist/daemon/skill-sync.d.ts +7 -2
  429. package/dist/daemon/skill-sync.d.ts.map +1 -1
  430. package/dist/daemon/skill-sync.js +114 -9
  431. package/dist/daemon/skill-sync.js.map +1 -1
  432. package/dist/daemon/templates/agents/claudemd-writer.md +101 -0
  433. package/dist/daemon/templates/agents/coder.md +105 -0
  434. package/dist/daemon/templates/agents/decision-maker.md +460 -0
  435. package/dist/daemon/templates/agents/doc-reviewer.md +115 -0
  436. package/dist/daemon/templates/agents/harness-debug-full.md +114 -0
  437. package/dist/daemon/templates/agents/harness-hotfix.md +99 -0
  438. package/dist/daemon/templates/agents/hybrid-feature-with-safety.md +104 -0
  439. package/dist/daemon/templates/agents/knowledge-builder.md +119 -0
  440. package/dist/daemon/templates/agents/patch-applier.md +144 -0
  441. package/dist/daemon/templates/agents/planner.md +165 -0
  442. package/dist/daemon/templates/agents/refactor-specialist.md +98 -0
  443. package/dist/daemon/templates/agents/skill-distiller.md +113 -0
  444. package/dist/daemon/templates/agents/task-boundary-classifier.md +64 -0
  445. package/dist/daemon/templates/agents/verify-agent.md +136 -0
  446. package/dist/daemon/utils/inject-block.d.ts +39 -0
  447. package/dist/daemon/utils/inject-block.d.ts.map +1 -0
  448. package/dist/daemon/utils/inject-block.js +25 -0
  449. package/dist/daemon/utils/inject-block.js.map +1 -0
  450. package/dist/hooks/hook-lib.sh +8 -0
  451. package/dist/hooks/notification.sh +19 -8
  452. package/dist/hooks/post-tool-use.sh +41 -23
  453. package/dist/hooks/pre-tool-use.sh +54 -23
  454. package/dist/hooks/session-start.sh +68 -0
  455. package/dist/hooks/stop.sh +24 -10
  456. package/dist/hooks/user-prompt-submit.sh +37 -21
  457. package/dist/knowledge/adapters/go-adapter.d.ts +65 -0
  458. package/dist/knowledge/adapters/go-adapter.d.ts.map +1 -0
  459. package/dist/knowledge/adapters/go-adapter.js +294 -0
  460. package/dist/knowledge/adapters/go-adapter.js.map +1 -0
  461. package/dist/knowledge/adapters/index.d.ts +41 -0
  462. package/dist/knowledge/adapters/index.d.ts.map +1 -0
  463. package/dist/knowledge/adapters/index.js +71 -0
  464. package/dist/knowledge/adapters/index.js.map +1 -0
  465. package/dist/knowledge/adapters/java-adapter.d.ts +66 -0
  466. package/dist/knowledge/adapters/java-adapter.d.ts.map +1 -0
  467. package/dist/knowledge/adapters/java-adapter.js +260 -0
  468. package/dist/knowledge/adapters/java-adapter.js.map +1 -0
  469. package/dist/knowledge/adapters/js-vue-adapter.d.ts +56 -0
  470. package/dist/knowledge/adapters/js-vue-adapter.d.ts.map +1 -0
  471. package/dist/knowledge/adapters/js-vue-adapter.js +203 -0
  472. package/dist/knowledge/adapters/js-vue-adapter.js.map +1 -0
  473. package/dist/knowledge/adapters/kotlin-adapter.d.ts +55 -0
  474. package/dist/knowledge/adapters/kotlin-adapter.d.ts.map +1 -0
  475. package/dist/knowledge/adapters/kotlin-adapter.js +209 -0
  476. package/dist/knowledge/adapters/kotlin-adapter.js.map +1 -0
  477. package/dist/knowledge/adapters/monorepo-adapter.d.ts +77 -0
  478. package/dist/knowledge/adapters/monorepo-adapter.d.ts.map +1 -0
  479. package/dist/knowledge/adapters/monorepo-adapter.js +170 -0
  480. package/dist/knowledge/adapters/monorepo-adapter.js.map +1 -0
  481. package/dist/knowledge/adapters/python-adapter.d.ts +89 -0
  482. package/dist/knowledge/adapters/python-adapter.d.ts.map +1 -0
  483. package/dist/knowledge/adapters/python-adapter.js +358 -0
  484. package/dist/knowledge/adapters/python-adapter.js.map +1 -0
  485. package/dist/knowledge/adapters/rust-adapter.d.ts +73 -0
  486. package/dist/knowledge/adapters/rust-adapter.d.ts.map +1 -0
  487. package/dist/knowledge/adapters/rust-adapter.js +329 -0
  488. package/dist/knowledge/adapters/rust-adapter.js.map +1 -0
  489. package/dist/knowledge/adapters/types.d.ts +99 -0
  490. package/dist/knowledge/adapters/types.d.ts.map +1 -0
  491. package/dist/knowledge/adapters/types.js +17 -0
  492. package/dist/knowledge/adapters/types.js.map +1 -0
  493. package/dist/knowledge/adapters/typescript-adapter.d.ts +57 -0
  494. package/dist/knowledge/adapters/typescript-adapter.d.ts.map +1 -0
  495. package/dist/knowledge/adapters/typescript-adapter.js +171 -0
  496. package/dist/knowledge/adapters/typescript-adapter.js.map +1 -0
  497. package/dist/knowledge/audit-applier.d.ts +70 -0
  498. package/dist/knowledge/audit-applier.d.ts.map +1 -0
  499. package/dist/knowledge/audit-applier.js +251 -0
  500. package/dist/knowledge/audit-applier.js.map +1 -0
  501. package/dist/knowledge/builder.d.ts +261 -0
  502. package/dist/knowledge/builder.d.ts.map +1 -0
  503. package/dist/knowledge/builder.js +937 -0
  504. package/dist/knowledge/builder.js.map +1 -0
  505. package/dist/knowledge/cli-provider.d.ts +151 -0
  506. package/dist/knowledge/cli-provider.d.ts.map +1 -0
  507. package/dist/knowledge/cli-provider.js +313 -0
  508. package/dist/knowledge/cli-provider.js.map +1 -0
  509. package/dist/knowledge/constants.d.ts +73 -0
  510. package/dist/knowledge/constants.d.ts.map +1 -0
  511. package/dist/knowledge/constants.js +93 -0
  512. package/dist/knowledge/constants.js.map +1 -0
  513. package/dist/knowledge/cross-module.d.ts +139 -0
  514. package/dist/knowledge/cross-module.d.ts.map +1 -0
  515. package/dist/knowledge/cross-module.js +370 -0
  516. package/dist/knowledge/cross-module.js.map +1 -0
  517. package/dist/knowledge/git-hooks.d.ts +67 -0
  518. package/dist/knowledge/git-hooks.d.ts.map +1 -0
  519. package/dist/knowledge/git-hooks.js +258 -0
  520. package/dist/knowledge/git-hooks.js.map +1 -0
  521. package/dist/knowledge/module-hash.d.ts +88 -0
  522. package/dist/knowledge/module-hash.d.ts.map +1 -0
  523. package/dist/knowledge/module-hash.js +162 -0
  524. package/dist/knowledge/module-hash.js.map +1 -0
  525. package/dist/knowledge/project-detector.d.ts +101 -0
  526. package/dist/knowledge/project-detector.d.ts.map +1 -0
  527. package/dist/knowledge/project-detector.js +223 -0
  528. package/dist/knowledge/project-detector.js.map +1 -0
  529. package/dist/knowledge/prompt.d.ts +228 -0
  530. package/dist/knowledge/prompt.d.ts.map +1 -0
  531. package/dist/knowledge/prompt.js +404 -0
  532. package/dist/knowledge/prompt.js.map +1 -0
  533. package/dist/knowledge/query.d.ts +105 -0
  534. package/dist/knowledge/query.d.ts.map +1 -0
  535. package/dist/knowledge/query.js +341 -0
  536. package/dist/knowledge/query.js.map +1 -0
  537. package/dist/knowledge/repo-map.d.ts +91 -0
  538. package/dist/knowledge/repo-map.d.ts.map +1 -0
  539. package/dist/knowledge/repo-map.js +408 -0
  540. package/dist/knowledge/repo-map.js.map +1 -0
  541. package/dist/knowledge/tools/index.d.ts +14 -0
  542. package/dist/knowledge/tools/index.d.ts.map +1 -0
  543. package/dist/knowledge/tools/index.js +11 -0
  544. package/dist/knowledge/tools/index.js.map +1 -0
  545. package/dist/knowledge/tools/knowledge-get-page.d.ts +46 -0
  546. package/dist/knowledge/tools/knowledge-get-page.d.ts.map +1 -0
  547. package/dist/knowledge/tools/knowledge-get-page.js +101 -0
  548. package/dist/knowledge/tools/knowledge-get-page.js.map +1 -0
  549. package/dist/knowledge/tools/knowledge-query.d.ts +77 -0
  550. package/dist/knowledge/tools/knowledge-query.d.ts.map +1 -0
  551. package/dist/knowledge/tools/knowledge-query.js +104 -0
  552. package/dist/knowledge/tools/knowledge-query.js.map +1 -0
  553. package/dist/knowledge/tools/repo-map-lookup.d.ts +45 -0
  554. package/dist/knowledge/tools/repo-map-lookup.d.ts.map +1 -0
  555. package/dist/knowledge/tools/repo-map-lookup.js +82 -0
  556. package/dist/knowledge/tools/repo-map-lookup.js.map +1 -0
  557. package/dist/knowledge/types.d.ts +269 -0
  558. package/dist/knowledge/types.d.ts.map +1 -0
  559. package/dist/knowledge/types.js +10 -0
  560. package/dist/knowledge/types.js.map +1 -0
  561. package/dist/knowledge/validator.d.ts +90 -0
  562. package/dist/knowledge/validator.d.ts.map +1 -0
  563. package/dist/knowledge/validator.js +288 -0
  564. package/dist/knowledge/validator.js.map +1 -0
  565. package/dist/mcp/server.d.ts.map +1 -1
  566. package/dist/mcp/server.js +222 -1
  567. package/dist/mcp/server.js.map +1 -1
  568. package/dist/skills/builtin-skills.d.ts +35 -0
  569. package/dist/skills/builtin-skills.d.ts.map +1 -0
  570. package/dist/skills/builtin-skills.js +68 -0
  571. package/dist/skills/builtin-skills.js.map +1 -0
  572. package/dist/skills/distill/attribution.d.ts +59 -0
  573. package/dist/skills/distill/attribution.d.ts.map +1 -0
  574. package/dist/skills/distill/attribution.js +101 -0
  575. package/dist/skills/distill/attribution.js.map +1 -0
  576. package/dist/skills/distill/claude-cli-resolver.d.ts +26 -0
  577. package/dist/skills/distill/claude-cli-resolver.d.ts.map +1 -0
  578. package/dist/skills/distill/claude-cli-resolver.js +115 -0
  579. package/dist/skills/distill/claude-cli-resolver.js.map +1 -0
  580. package/dist/skills/distill/distiller.d.ts +161 -0
  581. package/dist/skills/distill/distiller.d.ts.map +1 -0
  582. package/dist/skills/distill/distiller.js +461 -0
  583. package/dist/skills/distill/distiller.js.map +1 -0
  584. package/dist/skills/distill/index.d.ts +223 -0
  585. package/dist/skills/distill/index.d.ts.map +1 -0
  586. package/dist/skills/distill/index.js +466 -0
  587. package/dist/skills/distill/index.js.map +1 -0
  588. package/dist/skills/distill/project-anchor-guard.d.ts +116 -0
  589. package/dist/skills/distill/project-anchor-guard.d.ts.map +1 -0
  590. package/dist/skills/distill/project-anchor-guard.js +334 -0
  591. package/dist/skills/distill/project-anchor-guard.js.map +1 -0
  592. package/dist/skills/distill/topic-deduper.d.ts +77 -0
  593. package/dist/skills/distill/topic-deduper.d.ts.map +1 -0
  594. package/dist/skills/distill/topic-deduper.js +119 -0
  595. package/dist/skills/distill/topic-deduper.js.map +1 -0
  596. package/dist/skills/distill/upstream-fetcher.d.ts +71 -0
  597. package/dist/skills/distill/upstream-fetcher.d.ts.map +1 -0
  598. package/dist/skills/distill/upstream-fetcher.js +202 -0
  599. package/dist/skills/distill/upstream-fetcher.js.map +1 -0
  600. package/dist/skills/distilled/distilled-api-design.md +491 -0
  601. package/dist/skills/distilled/distilled-architecture-decision.md +173 -0
  602. package/dist/skills/distilled/distilled-creator.md +178 -0
  603. package/dist/skills/distilled/distilled-db-schema-design.md +245 -0
  604. package/dist/skills/distilled/distilled-defi-amm-security.md +293 -0
  605. package/dist/skills/distilled/distilled-executing-plans.md +113 -0
  606. package/dist/skills/distilled/distilled-harness-engineering.md +242 -0
  607. package/dist/skills/distilled/distilled-karpathy-guidelines.md +104 -0
  608. package/dist/skills/distilled/distilled-performance-optimization.md +175 -0
  609. package/dist/skills/distilled/distilled-spec-driven-design.md +193 -0
  610. package/dist/skills/distilled/distilled-systematic-debugging.md +306 -0
  611. package/dist/skills/distilled/distilled-verification-before-completion.md +203 -0
  612. package/dist/skills/keyword-score.d.ts +29 -0
  613. package/dist/skills/keyword-score.d.ts.map +1 -0
  614. package/dist/skills/keyword-score.js +54 -0
  615. package/dist/skills/keyword-score.js.map +1 -0
  616. package/dist/skills/registry.d.ts +64 -20
  617. package/dist/skills/registry.d.ts.map +1 -1
  618. package/dist/skills/registry.js +102 -105
  619. package/dist/skills/registry.js.map +1 -1
  620. package/dist/skills/tools/pipeline-suggest.js +14 -14
  621. package/dist/skills/tools/skill-invoke.d.ts +1 -1
  622. package/dist/skills/tools/skill-invoke.js +1 -1
  623. package/dist/web/routes/agent-content.d.ts +30 -0
  624. package/dist/web/routes/agent-content.d.ts.map +1 -0
  625. package/dist/web/routes/agent-content.js +139 -0
  626. package/dist/web/routes/agent-content.js.map +1 -0
  627. package/dist/web/routes/decisions.d.ts +15 -0
  628. package/dist/web/routes/decisions.d.ts.map +1 -0
  629. package/dist/web/routes/decisions.js +181 -0
  630. package/dist/web/routes/decisions.js.map +1 -0
  631. package/dist/web/routes/diagnostics.d.ts +61 -0
  632. package/dist/web/routes/diagnostics.d.ts.map +1 -0
  633. package/dist/web/routes/diagnostics.js +203 -0
  634. package/dist/web/routes/diagnostics.js.map +1 -0
  635. package/dist/web/routes/events.d.ts.map +1 -1
  636. package/dist/web/routes/events.js +24 -0
  637. package/dist/web/routes/events.js.map +1 -1
  638. package/dist/web/routes/health.d.ts +33 -0
  639. package/dist/web/routes/health.d.ts.map +1 -0
  640. package/dist/web/routes/health.js +37 -0
  641. package/dist/web/routes/health.js.map +1 -0
  642. package/dist/web/routes/insights.d.ts +0 -5
  643. package/dist/web/routes/insights.d.ts.map +1 -1
  644. package/dist/web/routes/insights.js +783 -2
  645. package/dist/web/routes/insights.js.map +1 -1
  646. package/dist/web/routes/knowledge.d.ts +16 -0
  647. package/dist/web/routes/knowledge.d.ts.map +1 -0
  648. package/dist/web/routes/knowledge.js +661 -0
  649. package/dist/web/routes/knowledge.js.map +1 -0
  650. package/dist/web/routes/patch.d.ts +60 -1
  651. package/dist/web/routes/patch.d.ts.map +1 -1
  652. package/dist/web/routes/patch.js +170 -64
  653. package/dist/web/routes/patch.js.map +1 -1
  654. package/dist/web/routes/pipeline.d.ts +37 -0
  655. package/dist/web/routes/pipeline.d.ts.map +1 -0
  656. package/dist/web/routes/pipeline.js +149 -0
  657. package/dist/web/routes/pipeline.js.map +1 -0
  658. package/dist/web/routes/rules.d.ts.map +1 -1
  659. package/dist/web/routes/rules.js +6 -1
  660. package/dist/web/routes/rules.js.map +1 -1
  661. package/dist/web/routes/sessions.d.ts.map +1 -1
  662. package/dist/web/routes/sessions.js +9 -1
  663. package/dist/web/routes/sessions.js.map +1 -1
  664. package/dist/web/routes/skill-content.d.ts +30 -0
  665. package/dist/web/routes/skill-content.d.ts.map +1 -0
  666. package/dist/web/routes/skill-content.js +117 -0
  667. package/dist/web/routes/skill-content.js.map +1 -0
  668. package/dist/web/routes/skills-distill.d.ts +29 -0
  669. package/dist/web/routes/skills-distill.d.ts.map +1 -0
  670. package/dist/web/routes/skills-distill.js +552 -0
  671. package/dist/web/routes/skills-distill.js.map +1 -0
  672. package/dist/web/routes/skills.js +7 -7
  673. package/dist/web/routes/skills.js.map +1 -1
  674. package/dist/web/routes/task-timeline.d.ts +102 -0
  675. package/dist/web/routes/task-timeline.d.ts.map +1 -0
  676. package/dist/web/routes/task-timeline.js +274 -0
  677. package/dist/web/routes/task-timeline.js.map +1 -0
  678. package/dist/web/routes/tasks.d.ts.map +1 -1
  679. package/dist/web/routes/tasks.js +355 -8
  680. package/dist/web/routes/tasks.js.map +1 -1
  681. package/dist/web/routes/trace.d.ts.map +1 -1
  682. package/dist/web/routes/trace.js +3 -2
  683. package/dist/web/routes/trace.js.map +1 -1
  684. package/dist/web/routes/types.d.ts +0 -4
  685. package/dist/web/routes/types.d.ts.map +1 -1
  686. package/dist/web/routes/types.js +1 -1
  687. package/dist/web/routes/types.js.map +1 -1
  688. package/dist/web/routes/violations.d.ts +14 -0
  689. package/dist/web/routes/violations.d.ts.map +1 -0
  690. package/dist/web/routes/violations.js +111 -0
  691. package/dist/web/routes/violations.js.map +1 -0
  692. package/dist/web/server.d.ts.map +1 -1
  693. package/dist/web/server.js +79 -19
  694. package/dist/web/server.js.map +1 -1
  695. package/dist/web/services/build-manager.d.ts +72 -0
  696. package/dist/web/services/build-manager.d.ts.map +1 -0
  697. package/dist/web/services/build-manager.js +189 -0
  698. package/dist/web/services/build-manager.js.map +1 -0
  699. package/dist/web/services/distill-manager.d.ts +125 -0
  700. package/dist/web/services/distill-manager.d.ts.map +1 -0
  701. package/dist/web/services/distill-manager.js +308 -0
  702. package/dist/web/services/distill-manager.js.map +1 -0
  703. package/dist/web/static/assets/AgentContentPage-DkeRNxok.js +2 -0
  704. package/dist/web/static/assets/AgentContentPage-DkeRNxok.js.map +1 -0
  705. package/dist/web/static/assets/AgentDelegationTable-ByBa0x1l.js +2 -0
  706. package/dist/web/static/assets/AgentDelegationTable-ByBa0x1l.js.map +1 -0
  707. package/dist/web/static/assets/ContextInsightsPage-oUk7_I8u.js +3 -0
  708. package/dist/web/static/assets/ContextInsightsPage-oUk7_I8u.js.map +1 -0
  709. package/dist/web/static/assets/DaemonHealthPage-DG2fyOP7.js +2 -0
  710. package/dist/web/static/assets/DaemonHealthPage-DG2fyOP7.js.map +1 -0
  711. package/dist/web/static/assets/DecisionsPage-CMAPEnKb.js +2 -0
  712. package/dist/web/static/assets/DecisionsPage-CMAPEnKb.js.map +1 -0
  713. package/dist/web/static/assets/DiagnosticsPage-DQd-Zm4r.js +2 -0
  714. package/dist/web/static/assets/DiagnosticsPage-DQd-Zm4r.js.map +1 -0
  715. package/dist/web/static/assets/DriftTab-DqpepOhI.js +2 -0
  716. package/dist/web/static/assets/DriftTab-DqpepOhI.js.map +1 -0
  717. package/dist/web/static/assets/HealthHomePage-CN6zNIie.js +3 -0
  718. package/dist/web/static/assets/HealthHomePage-CN6zNIie.js.map +1 -0
  719. package/dist/web/static/assets/KbHitRateTable-ByEIWujF.js +2 -0
  720. package/dist/web/static/assets/KbHitRateTable-ByEIWujF.js.map +1 -0
  721. package/dist/web/static/assets/MarkdownRenderer-DZmTl-8J.js +3 -0
  722. package/dist/web/static/assets/MarkdownRenderer-DZmTl-8J.js.map +1 -0
  723. package/dist/web/static/assets/NotFound-BQPh0vaF.js +2 -0
  724. package/dist/web/static/assets/NotFound-BQPh0vaF.js.map +1 -0
  725. package/dist/web/static/assets/ProjectSwitcher-D3lZMFd3.js +2 -0
  726. package/dist/web/static/assets/ProjectSwitcher-D3lZMFd3.js.map +1 -0
  727. package/dist/web/static/assets/SettingsPage-oLJBNzQj.js +2 -0
  728. package/dist/web/static/assets/SettingsPage-oLJBNzQj.js.map +1 -0
  729. package/dist/web/static/assets/SkillContentPage-DK5rgfgw.js +2 -0
  730. package/dist/web/static/assets/SkillContentPage-DK5rgfgw.js.map +1 -0
  731. package/dist/web/static/assets/SkillStatsTable-DYMzjEUV.js +2 -0
  732. package/dist/web/static/assets/SkillStatsTable-DYMzjEUV.js.map +1 -0
  733. package/dist/web/static/assets/SkillsDistillTab-C7qaG8q3.js +2 -0
  734. package/dist/web/static/assets/SkillsDistillTab-C7qaG8q3.js.map +1 -0
  735. package/dist/web/static/assets/TasksHubPage-03wsRRsJ.js +6 -0
  736. package/dist/web/static/assets/TasksHubPage-03wsRRsJ.js.map +1 -0
  737. package/dist/web/static/assets/ViolationsPage-DSiLr-9O.js +3 -0
  738. package/dist/web/static/assets/ViolationsPage-DSiLr-9O.js.map +1 -0
  739. package/dist/web/static/assets/arco-Bhi3a6Qp.js +14 -0
  740. package/dist/web/static/assets/arco-Bhi3a6Qp.js.map +1 -0
  741. package/dist/web/static/assets/arco-DFQA6dO_.css +1 -0
  742. package/dist/web/static/assets/charts-BuHQWDbQ.js +37 -0
  743. package/dist/web/static/assets/charts-BuHQWDbQ.js.map +1 -0
  744. package/dist/web/static/assets/date-fns-sbWH3_uq.js +2 -0
  745. package/dist/web/static/assets/date-fns-sbWH3_uq.js.map +1 -0
  746. package/dist/web/static/assets/index-7bl3kbcx.css +1 -0
  747. package/dist/web/static/assets/index-BIYnq1Dx.js +4 -0
  748. package/dist/web/static/assets/index-BIYnq1Dx.js.map +1 -0
  749. package/dist/web/static/assets/lucide-CnlPQoG8.js +72 -0
  750. package/dist/web/static/assets/lucide-CnlPQoG8.js.map +1 -0
  751. package/dist/web/static/assets/outcome-DUn1NjlC.js +2 -0
  752. package/dist/web/static/assets/outcome-DUn1NjlC.js.map +1 -0
  753. package/dist/web/static/assets/query-S6X1S7K9.js +2 -0
  754. package/dist/web/static/assets/{query-C99w429o.js.map → query-S6X1S7K9.js.map} +1 -1
  755. package/dist/web/static/assets/{react-router-r79dBVy4.js → react-router-JVUrkhdd.js} +3 -3
  756. package/dist/web/static/assets/{react-router-r79dBVy4.js.map → react-router-JVUrkhdd.js.map} +1 -1
  757. package/dist/web/static/assets/react-vendor-tkvCrao7.js +57 -0
  758. package/dist/web/static/assets/react-vendor-tkvCrao7.js.map +1 -0
  759. package/dist/web/static/assets/syntax-highlighter-BkZfCDsz.js +6 -0
  760. package/dist/web/static/assets/syntax-highlighter-BkZfCDsz.js.map +1 -0
  761. package/dist/web/static/assets/useTabsParam-k8qte_0C.js +2 -0
  762. package/dist/web/static/assets/useTabsParam-k8qte_0C.js.map +1 -0
  763. package/dist/web/static/assets/vendor-DWgdB1eY.js +65 -0
  764. package/dist/web/static/assets/vendor-DWgdB1eY.js.map +1 -0
  765. package/dist/web/static/index.html +12 -8
  766. package/package.json +14 -3
  767. package/dist/core/ai/provider.d.ts +0 -63
  768. package/dist/core/ai/provider.d.ts.map +0 -1
  769. package/dist/core/ai/provider.js +0 -241
  770. package/dist/core/ai/provider.js.map +0 -1
  771. package/dist/core/ai/types.d.ts +0 -43
  772. package/dist/core/ai/types.d.ts.map +0 -1
  773. package/dist/core/ai/types.js +0 -5
  774. package/dist/core/ai/types.js.map +0 -1
  775. package/dist/core/storage/token-usage.d.ts +0 -36
  776. package/dist/core/storage/token-usage.d.ts.map +0 -1
  777. package/dist/core/storage/token-usage.js +0 -59
  778. package/dist/core/storage/token-usage.js.map +0 -1
  779. package/dist/core/utils/token-tracker.d.ts +0 -39
  780. package/dist/core/utils/token-tracker.d.ts.map +0 -1
  781. package/dist/core/utils/token-tracker.js +0 -69
  782. package/dist/core/utils/token-tracker.js.map +0 -1
  783. package/dist/skills/index.d.ts +0 -3
  784. package/dist/skills/index.d.ts.map +0 -1
  785. package/dist/skills/index.js +0 -3
  786. package/dist/skills/index.js.map +0 -1
  787. package/dist/skills/matcher.d.ts +0 -26
  788. package/dist/skills/matcher.d.ts.map +0 -1
  789. package/dist/skills/matcher.js +0 -113
  790. package/dist/skills/matcher.js.map +0 -1
  791. package/dist/skills/official/code-simplifier.md +0 -52
  792. package/dist/skills/official/find-skills.md +0 -142
  793. package/dist/skills/official/official-api-design.md +0 -30
  794. package/dist/skills/official/official-architecture-decision.md +0 -41
  795. package/dist/skills/official/official-bmad.md +0 -118
  796. package/dist/skills/official/official-db-schema-design.md +0 -34
  797. package/dist/skills/official/official-debug.md +0 -25
  798. package/dist/skills/official/official-doc-driven.md +0 -31
  799. package/dist/skills/official/official-harness-engineering.md +0 -108
  800. package/dist/skills/official/official-openspec.md +0 -89
  801. package/dist/skills/official/official-performance-optimization.md +0 -30
  802. package/dist/skills/official/official-pr-review.md +0 -35
  803. package/dist/skills/official/official-release-checklist.md +0 -30
  804. package/dist/skills/official/official-security-hardening.md +0 -32
  805. package/dist/skills/official/official-spec-driven-design.md +0 -31
  806. package/dist/skills/official/planning-with-files.md +0 -241
  807. package/dist/skills/official/ui-ux-pro-max.md +0 -105
  808. package/dist/skills/official/webapp-testing.md +0 -96
  809. package/dist/skills/official-skills.d.ts +0 -26
  810. package/dist/skills/official-skills.d.ts.map +0 -1
  811. package/dist/skills/official-skills.js +0 -74
  812. package/dist/skills/official-skills.js.map +0 -1
  813. package/dist/skills/semantic-matcher.d.ts +0 -60
  814. package/dist/skills/semantic-matcher.d.ts.map +0 -1
  815. package/dist/skills/semantic-matcher.js +0 -192
  816. package/dist/skills/semantic-matcher.js.map +0 -1
  817. package/dist/skills/upgrade-engine.d.ts +0 -93
  818. package/dist/skills/upgrade-engine.d.ts.map +0 -1
  819. package/dist/skills/upgrade-engine.js +0 -447
  820. package/dist/skills/upgrade-engine.js.map +0 -1
  821. package/dist/skills/upgrade-prompt.d.ts +0 -20
  822. package/dist/skills/upgrade-prompt.d.ts.map +0 -1
  823. package/dist/skills/upgrade-prompt.js +0 -75
  824. package/dist/skills/upgrade-prompt.js.map +0 -1
  825. package/dist/web/routes/ai.d.ts +0 -10
  826. package/dist/web/routes/ai.d.ts.map +0 -1
  827. package/dist/web/routes/ai.js +0 -186
  828. package/dist/web/routes/ai.js.map +0 -1
  829. package/dist/web/routes/token-usage.d.ts +0 -7
  830. package/dist/web/routes/token-usage.d.ts.map +0 -1
  831. package/dist/web/routes/token-usage.js +0 -18
  832. package/dist/web/routes/token-usage.js.map +0 -1
  833. package/dist/web/ssrf-guard.d.ts +0 -35
  834. package/dist/web/ssrf-guard.d.ts.map +0 -1
  835. package/dist/web/ssrf-guard.js +0 -93
  836. package/dist/web/ssrf-guard.js.map +0 -1
  837. package/dist/web/static/assets/AIConfig-CdDWzJyO.js +0 -2
  838. package/dist/web/static/assets/AIConfig-CdDWzJyO.js.map +0 -1
  839. package/dist/web/static/assets/Dashboard-CoEmmIDt.js +0 -2
  840. package/dist/web/static/assets/Dashboard-CoEmmIDt.js.map +0 -1
  841. package/dist/web/static/assets/Drawer-DdRTzlLB.js +0 -2
  842. package/dist/web/static/assets/Drawer-DdRTzlLB.js.map +0 -1
  843. package/dist/web/static/assets/Events-DrIq1SUS.js +0 -2
  844. package/dist/web/static/assets/Events-DrIq1SUS.js.map +0 -1
  845. package/dist/web/static/assets/Reports-DFBM3MDK.js +0 -2
  846. package/dist/web/static/assets/Reports-DFBM3MDK.js.map +0 -1
  847. package/dist/web/static/assets/SearchInput-qCj_jAcf.js +0 -2
  848. package/dist/web/static/assets/SearchInput-qCj_jAcf.js.map +0 -1
  849. package/dist/web/static/assets/SessionDetail-CCzwdoT7.js +0 -2
  850. package/dist/web/static/assets/SessionDetail-CCzwdoT7.js.map +0 -1
  851. package/dist/web/static/assets/Sessions-FfLYkAw9.js +0 -2
  852. package/dist/web/static/assets/Sessions-FfLYkAw9.js.map +0 -1
  853. package/dist/web/static/assets/Skills-C8Gvs3Qa.js +0 -2
  854. package/dist/web/static/assets/Skills-C8Gvs3Qa.js.map +0 -1
  855. package/dist/web/static/assets/TaskDetail-BS8pYhaR.js +0 -2
  856. package/dist/web/static/assets/TaskDetail-BS8pYhaR.js.map +0 -1
  857. package/dist/web/static/assets/Tasks-CyuhizG8.js +0 -2
  858. package/dist/web/static/assets/Tasks-CyuhizG8.js.map +0 -1
  859. package/dist/web/static/assets/charts-CLrM0_uM.js +0 -37
  860. package/dist/web/static/assets/charts-CLrM0_uM.js.map +0 -1
  861. package/dist/web/static/assets/date-fns-CZ_bHujz.js +0 -2
  862. package/dist/web/static/assets/date-fns-CZ_bHujz.js.map +0 -1
  863. package/dist/web/static/assets/export-L_VBD2p1.js +0 -4
  864. package/dist/web/static/assets/export-L_VBD2p1.js.map +0 -1
  865. package/dist/web/static/assets/index-CBX47X8l.js +0 -3
  866. package/dist/web/static/assets/index-CBX47X8l.js.map +0 -1
  867. package/dist/web/static/assets/index-DjIoMdoR.css +0 -1
  868. package/dist/web/static/assets/lucide-Bs_edTLa.js +0 -232
  869. package/dist/web/static/assets/lucide-Bs_edTLa.js.map +0 -1
  870. package/dist/web/static/assets/query-C99w429o.js +0 -2
  871. package/dist/web/static/assets/react-vendor-CSp-GLFF.js +0 -49
  872. package/dist/web/static/assets/react-vendor-CSp-GLFF.js.map +0 -1
  873. package/dist/web/static/assets/syntax-highlighter-44FakypI.js +0 -9
  874. package/dist/web/static/assets/syntax-highlighter-44FakypI.js.map +0 -1
  875. package/dist/web/static/assets/task-title-BhOcemuR.js +0 -2
  876. package/dist/web/static/assets/task-title-BhOcemuR.js.map +0 -1
  877. package/dist/web/static/assets/time-Bxuk0M-C.js +0 -2
  878. package/dist/web/static/assets/time-Bxuk0M-C.js.map +0 -1
  879. package/dist/web/static/assets/vendor-CMMjVdZs.js +0 -64
  880. package/dist/web/static/assets/vendor-CMMjVdZs.js.map +0 -1
package/README.md CHANGED
@@ -24,7 +24,7 @@ daemon 以 Unix socket 形式与 Claude Code 的 Hook 脚本通信。每次 `Use
24
24
  Agent 还可以通过 MCP 工具 `skill_invoke` 按需获取 Skill 的完整方法论内容(需先运行 `cf mcp register`)。
25
25
 
26
26
  ### 4. Web 管理后台
27
- `claude-forge daemon start` 默认在 `http://127.0.0.1:<port>`(默认端口 `3721`,可在 `~/.claude-forge/config.yaml` 的 `web.port` 修改)开放一个 React 管理后台,覆盖:会话浏览、事件流、执行追踪、Agent/Skill 编辑、AI 配置、实时 SSE 日志。
27
+ `claude-forge daemon start` 默认在 `http://127.0.0.1:<port>`(默认端口 `3721`,可在 `~/.claude-forge/config.yaml` 的 `web.port` 修改)开放一个 React 管理后台,覆盖:会话浏览、事件流、执行追踪、Agent/Skill 编辑、实时 SSE 日志。(AI Provider 配置面在 spec `0902` 子 spec D R-C 永久下线,AI 流程改走本地 `claude` CLI 订阅)。
28
28
 
29
29
  ### 5. 长跑稳定性
30
30
  - **自动同步**:daemon 启动时自动将内置 hook 脚本同步到 `~/.claude/hooks/`、将内置 skill 同步到 `~/.claude/skills/`,防止 npm 升级后用户副本陈旧
@@ -53,19 +53,18 @@ npm install -g @winspan/claude-forge
53
53
  # 2. 初始化(把 hook 脚本装到 ~/.claude/hooks/)
54
54
  cf init
55
55
 
56
- # 3. 配置 AI Provider(可选)
57
- cf config
58
-
59
- # 4. 启动 daemon
56
+ # 3. 启动 daemon
57
+ # (AI Provider 配置已下线 — 见 spec 0902 子 spec D R-C,
58
+ # AI 流程走本地 `claude` CLI 订阅,不再需要 daemon 持 API key)
60
59
  cf daemon start
61
60
 
62
- # 5. 打开管理后台(默认 3721,可在 ~/.claude-forge/config.yaml 修改 web.port)
61
+ # 4. 打开管理后台(默认 3721,可在 ~/.claude-forge/config.yaml 修改 web.port)
63
62
  open http://127.0.0.1:3721
64
63
 
65
- # 5.5(可选)注册 MCP 服务器(让 Agent 能动态调用 Skill)
64
+ # 4.5(可选)注册 MCP 服务器(让 Agent 能动态调用 Skill)
66
65
  cf mcp register
67
66
 
68
- # 6. (可选)查看架构图
67
+ # 5. (可选)查看架构图
69
68
  open docs/architecture/diagrams/overview.drawio # macOS 用 drawio desktop / web 打开
70
69
  ```
71
70
 
@@ -79,7 +78,7 @@ open docs/architecture/diagrams/overview.drawio # macOS 用 drawio desktop / we
79
78
  |---|---|
80
79
  | `cf init` | 初始化 hook 脚本到 `~/.claude/hooks/` |
81
80
  | `cf daemon {start,stop,status}` | daemon 生命周期 |
82
- | `cf config` | AI Provider 配置(API key、base_url、model) |
81
+ | `cf config {show,path,edit,list,get,set}` | 配置管理 — runtime feature flags (forge_config 表) + YAML view/edit。**`ai.*` / `skill_matching.*` 字段已在 spec [`0902`](docs/design/2026-05-29/0902-ai-config-removal-master-spec.md) 子 spec D R-D 从 schema 中彻底删除**(AI 流程改走 `claude` CLI 子进程,不再读 `ANTHROPIC_API_KEY`);老 `~/.claude-forge/config.yaml` 中的残留 `ai:` / `skill_matching:` 会被静默丢弃,daemon 启动时 warn 一次提示用户清理 |
83
82
  | `cf status` | 当前 daemon + Web + 存储概况 |
84
83
  | `cf logs [--tail]` | 查看 daemon 日志 |
85
84
  | `cf stats` | 近期 intent / 路由统计 |
@@ -92,7 +91,8 @@ open docs/architecture/diagrams/overview.drawio # macOS 用 drawio desktop / we
92
91
  | `cf trace <commit>` | 查看 commit 关联的 session |
93
92
  | `cf executions {list,show}` | 浏览历史执行记录 |
94
93
  | `cf mcp` | MCP 配置 |
95
- | `cf claudemd` | 生成/更新项目 CLAUDE.md |
94
+ | `cf claudemd` | 生成/更新项目 CLAUDE.md(通过 `claude` CLI 子进程 + `claudemd-writer` agent,**不再读 `ANTHROPIC_API_KEY`**) |
95
+ | `cf knowledge {init,build,update,query,list,audit,clean,rollback}` (alias: `cf kb`) | 项目知识库(`.forge-knowledge/`)。`init` / `build` / `update` 通过 `claude` CLI 子进程 + `knowledge-builder` agent,**不再读 `ANTHROPIC_API_KEY`**;query / list / audit / clean / rollback 纯本地 |
96
96
  | `cf template` | 模板管理 |
97
97
  | `cf menu` | 交互式菜单(推荐入口) |
98
98
 
@@ -106,18 +106,155 @@ open docs/architecture/diagrams/overview.drawio # macOS 用 drawio desktop / we
106
106
 
107
107
  主要页面:
108
108
 
109
- - `/dashboard` — 总览
110
- - `/sessions` — 会话列表 + 详情
109
+ - `/health` — 整体健康度(默认入口)
111
110
  - `/tasks` — 任务列表 + 详情
112
- - `/events` — Hook 事件流
113
- - `/skills` — 在线查看 `~/.claude/skills/*.md`
114
- - `/ai-config` — 切换 AI Provider / 测试连接
115
- - `/reports` — 周报与统计
111
+ - `/context` — Knowledge / Skills / Agents 浏览(旧 `/skills` `/knowledge` redirect 进来)
112
+ - `/violations` — 治理违规记录
113
+ - `/settings` — 主题 / 关于(**AI 配置面已在 spec `0902` 子 spec D R-C 删除**)
114
+
115
+ > 老 v2/v3 URL(`/sessions` `/events` `/dashboard` `/pipeline` `/resources` `/skills` `/knowledge`)会自动 redirect 到新位置。`/ai-config` 老 URL 在 R-C 永久下线,落 NotFound。
116
116
 
117
117
  所有列表支持搜索 + JSON/CSV 导出。
118
118
 
119
119
  ---
120
120
 
121
+ ## Skill Distillation
122
+
123
+ claude-forge 内置 **12 个开箱即用的 distilled skill**(已蒸馏自上游优秀开源 skill 仓库),首次 `cf daemon start` 时自动同步到 `~/.claude/skills/`,无需任何配置。
124
+
125
+ ```bash
126
+ # 查看本机已安装的 distilled skills
127
+ ls ~/.claude/skills/distilled-*.md
128
+
129
+ # 同步触发(通常 daemon 启动时已经做了,无需手动)
130
+ cf daemon restart
131
+
132
+ # 列出所有 skill(distilled + user-owned)
133
+ cf skills list
134
+
135
+ # 调用某个 distilled skill 看完整方法论
136
+ cf skills invoke distilled-systematic-debugging
137
+ ```
138
+
139
+ ### 自己蒸馏额外的 skill
140
+
141
+ 蒸馏入口已收敛到 **Web 仪表盘**:打开 `http://127.0.0.1:3721/context?tab=distill` →
142
+ 点【开始蒸馏】。daemon 通过本地 `claude` CLI 子进程跑(`child_process.spawn` +
143
+ `-p --agent skill-distiller --bare --output-format stream-json`),**走你已经
144
+ 付费的 Claude Code 订阅 / OAuth keychain**,daemon 自身不持
145
+ `ANTHROPIC_API_KEY`。
146
+
147
+ **前置条件**:本机已安装 `claude` CLI(`brew install claude` 或
148
+ `npm i -g @anthropic-ai/claude-code`)。Web 仪表盘顶部会自动检测并显示
149
+ binary 路径(`claude CLI: ✓ /opt/homebrew/bin/claude`)。未安装时按钮会被
150
+ disable + 显示安装提示。
151
+
152
+ 蒸馏流程(单次按钮点击发生的事情):
153
+
154
+ 1. daemon spawn `claude -p --agent skill-distiller …`
155
+ 2. agent 读 upstream skill markdown → 按 D1-D5 维度自评分(0-5)
156
+ 3. 评分 < 3 → 输出 `---SKIP---` envelope(含 score + rationale,UI 显示为 skipped)
157
+ 4. 评分 ≥ 3 → 输出 `---SKILL---` envelope(含通用化 markdown body)
158
+ 5. daemon `parseSkillBlock()` 提取 body → `project-anchor-guard` 自查 → 写入
159
+ `src/skills/distilled/distilled-xxx.md` + NOTICE 归因
160
+
161
+ > 设计 spec:[`docs/design/2026-05-28/1851-distill-via-claude-cli-shellout-spec.md`](docs/design/2026-05-28/1851-distill-via-claude-cli-shellout-spec.md)
162
+
163
+ ### 自定义 / 覆盖建议
164
+
165
+ - **不要直接编辑 `~/.claude/skills/distilled-*.md`** —— daemon 重启时若 hash 不一致会跳过覆盖(保护你的改动),但版本升级时新 skill 不会自动应用,需手动 diff
166
+ - **要做项目级自定义**:另存为 `my-<name>.md` 或 `team-<name>.md`,`my-*` 前缀不在内置 sourceSet 内,永不被覆盖
167
+ - 想完全替换某个 distilled skill:删掉它然后 `cf daemon restart`,会按当前最新版本重新生成
168
+
169
+ 更多细节见 [DEVELOPMENT.md § Skill 蒸馏](./DEVELOPMENT.md#skill-蒸馏) 与 [§ skill-distiller agent 使用说明](./DEVELOPMENT.md#skill-distiller-agent-使用说明)。
170
+
171
+ ---
172
+
173
+ ## CLAUDE.md 生成(`cf claudemd init/update`)
174
+
175
+ `cf claudemd init` / `cf claudemd update` 现在通过本地 `claude` CLI 子进程跑 ——
176
+ daemon spawn `claude -p --agent claudemd-writer --bare`,agent 读取项目技术栈 +
177
+ 目录树 + persona + 已有 conventions(由 host 通过 stdin 注入),输出包在
178
+ `---CLAUDEMD---...---END---` envelope 内的 markdown body。
179
+
180
+ **前置条件**:本机已安装 `claude` CLI(`brew install claude` 或
181
+ `npm i -g @anthropic-ai/claude-code`)—— 与 Skill Distillation 相同的 install hint。
182
+
183
+ **不再依赖** `ANTHROPIC_API_KEY` —— 走你已经付费的 Claude Code 订阅 / OAuth
184
+ keychain,daemon 自身不持 API key。
185
+
186
+ 更多细节见 [DEVELOPMENT.md § CLAUDE.md 生成与维护](./DEVELOPMENT.md#claudemd-生成与维护)
187
+ 与 [§ claudemd-writer agent 使用说明](./DEVELOPMENT.md#claudemd-writer-agent-使用说明)。
188
+
189
+ > 设计 spec:[`docs/design/2026-05-29/0902-ai-config-removal-master-spec.md`](docs/design/2026-05-29/0902-ai-config-removal-master-spec.md) 子 spec A
190
+
191
+ ---
192
+
193
+ ## 项目知识库(`cf knowledge`)
194
+
195
+ `cf knowledge init` / `cf knowledge build` / `cf knowledge update` 现在通过本地
196
+ `claude` CLI 子进程跑 —— host 起 `claude -p --agent knowledge-builder --bare`
197
+ 子进程,agent 每个 KB page 输出一个 `---KB---...---END---` envelope,host 解析
198
+ 后写入 `.forge-knowledge/modules/*.md` + `.forge-knowledge/<cross-module>.md` +
199
+ `.meta.json` + `repo-map.json`。
200
+
201
+ **前置条件**:本机已安装 `claude` CLI(`brew install claude` 或
202
+ `npm i -g @anthropic-ai/claude-code`)—— 与 Skill Distillation / CLAUDE.md
203
+ 生成相同的 install hint。
204
+
205
+ **不再依赖** `ANTHROPIC_API_KEY` —— 走你已经付费的 Claude Code 订阅 / OAuth
206
+ keychain,daemon 自身不持 API key。
207
+
208
+ ```bash
209
+ # 首次构建(含 git hook 安装)
210
+ cf knowledge init
211
+
212
+ # 增量更新(基于 git diff)
213
+ cf knowledge update
214
+
215
+ # 查询(纯本地 keyword + repo-map,不需要 claude CLI)
216
+ cf knowledge query "daemon socket"
217
+ ```
218
+
219
+ **注意**:`cf knowledge query --strategy rerank`(AI 重排序)已在 Spec 2 Stage
220
+ B(commit `797326f8`)下线 —— 现在仅 keyword + repo-map 检索。
221
+
222
+ 更多细节见 [DEVELOPMENT.md § knowledge-builder agent 使用说明](./DEVELOPMENT.md#knowledge-builder-agent-使用说明)。
223
+
224
+ > 设计 spec:[`docs/design/2026-05-29/0902-ai-config-removal-master-spec.md`](docs/design/2026-05-29/0902-ai-config-removal-master-spec.md) 子 spec B
225
+
226
+ ---
227
+
228
+ ## AI 辅助 Patch 预览(Web `POST /api/patch/preview`)
229
+
230
+ Web 仪表盘 / 外部脚本可以 `POST` 一段 `{ targetType, targetName, recommendation,
231
+ rationale }` 到 `/api/patch/preview`,daemon 会通过本地 `claude` CLI 子进程跑
232
+ `claude -p --agent patch-applier --bare`,agent 输出 PATCH(unified diff)或
233
+ NOPATCH(连同 reason)envelope,host 解析后回 JSON。
234
+
235
+ **前置条件**:本机已安装 `claude` CLI(`brew install claude` 或
236
+ `npm i -g @anthropic-ai/claude-code`)—— 与 Skill Distillation / CLAUDE.md
237
+ 生成 / 项目知识库相同的 install hint。
238
+
239
+ **不再依赖** `ANTHROPIC_API_KEY` —— 走你已经付费的 Claude Code 订阅 / OAuth
240
+ keychain,daemon 自身不持 API key。
241
+
242
+ ⚠️ **响应字段 BREAKING(R-A → R-B)**:R-A 阶段 `/api/patch/preview` 返回
243
+ `{after, summary, risk}`;R-B 之后改为 discriminated union
244
+ `{patch} | {noPatch, reason}`。HTTP 错误码也细分为 `499`(cancel)/
245
+ `504`(timeout)/ `500`(missing / exit / unknown)。前端 / 脚本如果有调用
246
+ 该端点,必须按新 schema 适配。
247
+
248
+ > 当前 `web/src/` 内置前端尚未集成 patch UI(`grep api/patch web/src` = 0
249
+ > 命中)。如未来加 Web 前端 patch 预览界面,参照 spec C 「前端处理」段落。
250
+ > `POST /api/patch/apply` 路径未变(始终是纯 fs write + backup,不走 LLM)。
251
+
252
+ 更多细节见 [DEVELOPMENT.md § patch-applier agent 使用说明](./DEVELOPMENT.md#patch-applier-agent-使用说明)。
253
+
254
+ > 设计 spec:[`docs/design/2026-05-29/0902-ai-config-removal-master-spec.md`](docs/design/2026-05-29/0902-ai-config-removal-master-spec.md) 子 spec C
255
+
256
+ ---
257
+
121
258
  ## Project Map
122
259
 
123
260
  | 模块 | 一句话职责 |
@@ -128,6 +265,7 @@ open docs/architecture/diagrams/overview.drawio # macOS 用 drawio desktop / we
128
265
  | `src/web/` | Express + SSE 后端 + React 仪表盘 |
129
266
  | `src/cli/` | claude-forge / cf 命令入口 |
130
267
  | `src/hooks/` | bash 脚本,与 daemon 通过 Unix socket 通信 |
268
+ | `src/knowledge/` | v9.3 项目知识库(cf knowledge build/update/query/audit/list/clean/rollback),含 5 跨模块页、3 个 MCP 工具(knowledge_query / knowledge_get_page / repo_map_lookup)。build 通过本地 `claude` CLI 子进程 + `knowledge-builder` agent(spec [`0902`](docs/design/2026-05-29/0902-ai-config-removal-master-spec.md) 子 spec B),不再读 `ANTHROPIC_API_KEY`。**注**:AI rerank 检索路径已在 Spec 2 Stage B(commit `797326f8`)下线,仅保留 keyword + repo-map 查询。 |
131
269
 
132
270
  ## 贡献
133
271
 
@@ -0,0 +1,72 @@
1
+ [
2
+ {
3
+ "name": "claudemd-writer",
4
+ "description": "",
5
+ "source_file": ".claude/agents/claudemd-writer.md"
6
+ },
7
+ {
8
+ "name": "coder",
9
+ "description": "Standard BMAD implementation agent for spec-driven work in well-tested modules. Use when a spec exists at docs/design/**/*-spec.md AND the target module has >=50% test coverage (or is a brand new modu",
10
+ "source_file": ".claude/agents/coder.md"
11
+ },
12
+ {
13
+ "name": "decision-maker",
14
+ "description": "Lightweight decision agent for prompts the daemon flagged as decision-worthy. NOT a planner (no implementation plan) — produces a 1-page decision document covering Options + Recommendation + Open Ques",
15
+ "source_file": ".claude/agents/decision-maker.md"
16
+ },
17
+ {
18
+ "name": "doc-reviewer",
19
+ "description": "Read-only code, spec, or document analysis. Returns a structured report. Use when user asks to review/analyze/compare/audit existing code or docs WITHOUT modifying anything. Triggers on \"review this\",",
20
+ "source_file": ".claude/agents/doc-reviewer.md"
21
+ },
22
+ {
23
+ "name": "harness-debug-full",
24
+ "description": "Unknown or intermittent bug — reproduce, then find root cause, then fix, then verify. Use when symptoms are described but root cause is NOT known, or when behavior is intermittent / random / flaky / \"",
25
+ "source_file": ".claude/agents/harness-debug-full.md"
26
+ },
27
+ {
28
+ "name": "harness-hotfix",
29
+ "description": "Known-cause bug fixer with safety-net discipline. Use when the root cause of a bug is already identified AND the affected module has <50% test coverage. Triggers on \"修复 X bug\", \"hotfix\", \"urgent fix\",",
30
+ "source_file": ".claude/agents/harness-hotfix.md"
31
+ },
32
+ {
33
+ "name": "hybrid-feature-with-safety",
34
+ "description": "New feature that touches legacy low-coverage code. Use when adding new functionality that requires modifying files in modules with <50% test coverage. Triggers on \"新功能 + 改老代码\", \"add X to legacy module",
35
+ "source_file": ".claude/agents/hybrid-feature-with-safety.md"
36
+ },
37
+ {
38
+ "name": "knowledge-builder",
39
+ "description": "",
40
+ "source_file": ".claude/agents/knowledge-builder.md"
41
+ },
42
+ {
43
+ "name": "patch-applier",
44
+ "description": "",
45
+ "source_file": ".claude/agents/patch-applier.md"
46
+ },
47
+ {
48
+ "name": "planner",
49
+ "description": "Spec writer for non-trivial work. Research current state, propose 2-3 options, recommend one, write spec to docs/design/, then STOP. Use for BMAD Phase 1. Triggers on \"write a spec\", \"plan this\", \"BMA",
50
+ "source_file": ".claude/agents/planner.md"
51
+ },
52
+ {
53
+ "name": "refactor-specialist",
54
+ "description": "Behavior-preserving restructure of low-coverage code. Use when user asks to refactor, restructure, clean up, simplify, or extract from a module with <50% test coverage. Triggers on \"重构\", \"refactor\", \"",
55
+ "source_file": ".claude/agents/refactor-specialist.md"
56
+ },
57
+ {
58
+ "name": "skill-distiller",
59
+ "description": "",
60
+ "source_file": ".claude/agents/skill-distiller.md"
61
+ },
62
+ {
63
+ "name": "task-boundary-classifier",
64
+ "description": "",
65
+ "source_file": ".claude/agents/task-boundary-classifier.md"
66
+ },
67
+ {
68
+ "name": "verify-agent",
69
+ "description": "Live runtime verifier. Runs the actual app/CLI/browser, drives the changed surface, probes edges, returns PASS/FAIL/BLOCKED/SKIP with evidence. Use after implementation and before commit. Triggers on ",
70
+ "source_file": ".claude/agents/verify-agent.md"
71
+ }
72
+ ]
@@ -0,0 +1,194 @@
1
+ [
2
+ {
3
+ "name": "distilled-api-design",
4
+ "description": "Distilled IT-universal skill: api-design (score 4.5/5)",
5
+ "source_file": "src/skills/distilled/distilled-api-design.md",
6
+ "keywords": [
7
+ "api",
8
+ "design",
9
+ "api design",
10
+ "api 设计",
11
+ "restful",
12
+ "openapi",
13
+ "接口设计"
14
+ ]
15
+ },
16
+ {
17
+ "name": "distilled-architecture-decision",
18
+ "description": "Distilled IT-universal skill: architecture decision records (portable, hand-rewritten 2026-05-27)",
19
+ "source_file": "src/skills/distilled/distilled-architecture-decision.md",
20
+ "keywords": [
21
+ "architecture",
22
+ "adr",
23
+ "decision",
24
+ "design",
25
+ "record",
26
+ "architecture decision",
27
+ "架构决策",
28
+ "技术选型"
29
+ ]
30
+ },
31
+ {
32
+ "name": "distilled-creator",
33
+ "description": "Distilled IT-universal skill: skill-creator (score 3.5/5)",
34
+ "source_file": "src/skills/distilled/distilled-creator.md",
35
+ "keywords": [
36
+ "creator",
37
+ "skill"
38
+ ]
39
+ },
40
+ {
41
+ "name": "distilled-db-schema-design",
42
+ "description": "Distilled IT-universal skill: db-schema-design (score 4.5/5)",
43
+ "source_file": "src/skills/distilled/distilled-db-schema-design.md",
44
+ "keywords": [
45
+ "db",
46
+ "schema",
47
+ "design",
48
+ "database",
49
+ "数据库设计",
50
+ "migration",
51
+ "迁移",
52
+ "sql"
53
+ ]
54
+ },
55
+ {
56
+ "name": "distilled-defi-amm-security",
57
+ "description": "Distilled IT-universal skill: defi-amm-security (score 3.5/5)",
58
+ "source_file": "src/skills/distilled/distilled-defi-amm-security.md",
59
+ "keywords": [
60
+ "defi",
61
+ "amm",
62
+ "security"
63
+ ]
64
+ },
65
+ {
66
+ "name": "distilled-executing-plans",
67
+ "description": "Distilled IT-universal skill: executing-plans (score 4/5)",
68
+ "source_file": "src/skills/distilled/distilled-executing-plans.md",
69
+ "keywords": [
70
+ "executing",
71
+ "plans"
72
+ ]
73
+ },
74
+ {
75
+ "name": "distilled-harness-engineering",
76
+ "description": "Distilled IT-universal skill: harness-engineering (score 5/5)",
77
+ "source_file": "src/skills/distilled/distilled-harness-engineering.md",
78
+ "keywords": [
79
+ "harness",
80
+ "engineering",
81
+ "legacy",
82
+ "遗留代码",
83
+ "特征测试",
84
+ "characterization",
85
+ "重构",
86
+ "refactor",
87
+ "改造",
88
+ "老代码"
89
+ ],
90
+ "spawn_agent": "refactor-specialist"
91
+ },
92
+ {
93
+ "name": "distilled-karpathy-guidelines",
94
+ "description": "Karpathy 4 条 LLM 编程铁律 — moved as-is, not re-distilled (already a distillation of multica-ai/andrej-karpathy-skills)",
95
+ "source_file": "src/skills/distilled/distilled-karpathy-guidelines.md",
96
+ "keywords": [
97
+ "karpathy",
98
+ "guidelines",
99
+ "编程原则",
100
+ "编程铁律",
101
+ "simplicity",
102
+ "surgical",
103
+ "goal-driven",
104
+ "简洁优先",
105
+ "外科手术",
106
+ "目标可验证",
107
+ "行数预算",
108
+ "可验证判据",
109
+ "事前思考",
110
+ "think before coding"
111
+ ]
112
+ },
113
+ {
114
+ "name": "distilled-performance-optimization",
115
+ "description": "Distilled IT-universal skill: performance optimization workflow (portable, hand-rewritten 2026-05-27)",
116
+ "source_file": "src/skills/distilled/distilled-performance-optimization.md",
117
+ "keywords": [
118
+ "performance",
119
+ "optimization",
120
+ "profiling",
121
+ "latency",
122
+ "bottleneck",
123
+ "optimize",
124
+ "优化",
125
+ "瓶颈",
126
+ "慢",
127
+ "slow",
128
+ "timeout",
129
+ "超时",
130
+ "卡顿",
131
+ "性能"
132
+ ]
133
+ },
134
+ {
135
+ "name": "distilled-spec-driven-design",
136
+ "description": "Distilled IT-universal skill: spec-driven design + file-based planning (portable, hand-rewritten 2026-05-27)",
137
+ "source_file": "src/skills/distilled/distilled-spec-driven-design.md",
138
+ "keywords": [
139
+ "spec",
140
+ "sdd",
141
+ "plan",
142
+ "design",
143
+ "requirements",
144
+ "acceptance",
145
+ "spec-driven",
146
+ "规格",
147
+ "需求文档",
148
+ "planning",
149
+ "规划",
150
+ "task plan",
151
+ "organize",
152
+ "组织任务",
153
+ "怎么做",
154
+ "方案",
155
+ "步骤",
156
+ "计划"
157
+ ],
158
+ "spawn_agent": "planner"
159
+ },
160
+ {
161
+ "name": "distilled-systematic-debugging",
162
+ "description": "Distilled IT-universal skill: systematic-debugging (score 5/5)",
163
+ "source_file": "src/skills/distilled/distilled-systematic-debugging.md",
164
+ "keywords": [
165
+ "systematic",
166
+ "debugging",
167
+ "debug",
168
+ "调试",
169
+ "bug",
170
+ "修复",
171
+ "fix",
172
+ "hotfix",
173
+ "报错",
174
+ "异常",
175
+ "error",
176
+ "不工作",
177
+ "失败",
178
+ "failed",
179
+ "crash",
180
+ "问题"
181
+ ],
182
+ "spawn_agent": "harness-debug-full"
183
+ },
184
+ {
185
+ "name": "distilled-verification-before-completion",
186
+ "description": "Distilled IT-universal skill: verification-before-completion (score 5/5)",
187
+ "source_file": "src/skills/distilled/distilled-verification-before-completion.md",
188
+ "keywords": [
189
+ "verification",
190
+ "before",
191
+ "completion"
192
+ ]
193
+ }
194
+ ]
@@ -1,63 +1,63 @@
1
1
  /**
2
- * CLAUDE.md Generator — AI 驱动的 CLAUDE.md 生成与管理
2
+ * CLAUDE.md Generator — file I/O + directory scan helpers.
3
+ *
4
+ * History: this module used to drive a host-side AI completion to synthesize
5
+ * CLAUDE.md. After spec `0902-ai-config-removal-master-spec.md` (decision
6
+ * `f5a5b030`, sub-spec A R-D) all AI synthesis moved to the `claude` CLI
7
+ * shell-out path in `src/cli/commands/claudemd.ts` (via
8
+ * `src/core/utils/claude-cli-spawn.ts` against the `claudemd-writer`
9
+ * sub-agent). This module now only retains:
10
+ *
11
+ * - AUTO marker read/write helpers (used by callers that still want to
12
+ * preserve user-authored content outside the auto block — currently a
13
+ * reusable primitive with no production consumer, but kept since the
14
+ * associated tests still pin its contract)
15
+ * - The directory-tree scanner (also imported by the CLI to build the
16
+ * `<project_directory_tree>` payload for the agent)
17
+ *
18
+ * No `ai: ClaudeProvider` field; no `complete(...)` call sites.
3
19
  */
4
- import type { ClaudeProvider } from '../core/ai/provider.js';
5
- import { TechDetector } from './tech-detector.js';
20
+ import { TechDetector, type TechStack } from './tech-detector.js';
21
+ /**
22
+ * Scan a project directory and return a tree representation suitable for
23
+ * embedding in markdown. Used by both `ClaudeMdGenerator` (legacy callers /
24
+ * tests) and `src/cli/commands/claudemd.ts` (current `cf claudemd` flow that
25
+ * feeds the tree to the `claudemd-writer` agent).
26
+ *
27
+ * - `maxDepth` controls how deep to recurse (typical: 2 for non-Java, 4 for
28
+ * Java where the package nesting matters).
29
+ * - `addComments=true` enables Java directory-name annotations (controller,
30
+ * service, mapper, …) — host caller decides based on detected stack.
31
+ */
32
+ export declare function scanDirectoryTree(projectPath: string, maxDepth: number, addComments?: boolean): string;
6
33
  export declare class ClaudeMdGenerator {
7
- private ai;
8
34
  readonly detector: TechDetector;
9
- constructor(ai: ClaudeProvider, detector?: TechDetector);
10
- /**
11
- * 检测技术栈 + 生成 CLAUDE.md
12
- *
13
- * 策略:Swarm 协议是固定内容(不依赖 AI),项目信息尝试用 AI 生成,
14
- * 失败时回退到基于技术栈检测的模板。
15
- */
16
- generate(projectPath: string, userContent?: string): Promise<string>;
35
+ constructor(detector?: TechDetector);
17
36
  /**
18
- * 基于技术栈检测的回退模板(不依赖 AI)
37
+ * Write a CLAUDE.md file with the auto-generated block wrapped in
38
+ * `<!-- forge:claudemd-auto -->` markers, preserving any user-authored
39
+ * content that sits outside the block.
19
40
  *
20
- * 即使 AI 调用失败,也要生成足够丰富的项目指引,让 Claude Code 拿到:
21
- * - 技术栈概览(含版本、包管理器、测试 / Linter)
22
- * - 构建 / 测试 / 运行命令(按包管理器分发)
23
- * - 目录结构(扫描项目根目录真实结构)
24
- * - 代码规范(命名、提交信息、PR 流程)
25
- * - 常见陷阱(按技术栈定制)
26
- * - 贡献指南
27
- */
28
- private buildFallbackContent;
29
- private sectionOverview;
30
- private sectionTechStack;
31
- private frameworkHint;
32
- private ecosystemNotes;
33
- private sectionBuildCommands;
34
- private sectionDirectoryStructure;
35
- /**
36
- * 扫描项目根目录,生成树形结构(过滤噪声目录)
37
- */
38
- private scanDirectoryTree;
39
- private sectionCodingStandards;
40
- private sectionCommonPitfalls;
41
- private sectionContributionGuide;
42
- /**
43
- * 写入 CLAUDE.md,保留用户手动编辑的内容
41
+ * Note: as of sub-spec A R-D, the `cf claudemd init/update` path no longer
42
+ * routes through this helper — it writes the file directly from the
43
+ * `claudemd-writer` agent output. This method remains for any external
44
+ * embedder that still wants the marker-preserving merge semantics.
44
45
  */
45
46
  write(projectPath: string, content: string): void;
46
47
  /**
47
- * 读取并分离自动生成和用户内容
48
+ * Read a CLAUDE.md file and split the auto-generated block from the
49
+ * surrounding user content.
48
50
  */
49
51
  read(projectPath: string): {
50
52
  auto: string;
51
53
  user: string;
52
54
  };
53
- private buildPrompt;
54
55
  /**
55
- * 强制替换 AI 输出中的"目录结构"章节为真实扫描结果。
56
- *
57
- * AI 经常即使拿到真实目录也会退化成模板(project-root/com/example/project)。
58
- * 做字符串替换是最稳妥的兜底。
56
+ * Instance-level convenience wrapper around the module-level
57
+ * `scanDirectoryTree` export, kept for any external caller that already
58
+ * holds a `ClaudeMdGenerator` instance.
59
59
  */
60
- private overrideDirectoryStructure;
61
- private merge;
60
+ scanDirectoryTree(projectPath: string, maxDepth: number, addComments?: boolean): string;
62
61
  }
62
+ export type { TechStack };
63
63
  //# sourceMappingURL=claudemd-generator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"claudemd-generator.d.ts","sourceRoot":"","sources":["../../src/claudemd/claudemd-generator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAkB,MAAM,oBAAoB,CAAC;AA+BlE,qBAAa,iBAAiB;IAI1B,OAAO,CAAC,EAAE;IAHZ,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;gBAGtB,EAAE,EAAE,cAAc,EAC1B,QAAQ,CAAC,EAAE,YAAY;IAKzB;;;;;OAKG;IACG,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAkC1E;;;;;;;;;;OAUG;IACH,OAAO,CAAC,oBAAoB;IAc5B,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,gBAAgB;IA0BxB,OAAO,CAAC,aAAa;IAerB,OAAO,CAAC,cAAc;IAmBtB,OAAO,CAAC,oBAAoB;IA+B5B,OAAO,CAAC,yBAAyB;IASjC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAsGzB,OAAO,CAAC,sBAAsB;IAiD9B,OAAO,CAAC,qBAAqB;IAkC7B,OAAO,CAAC,wBAAwB;IAqChC;;OAEG;IACH,KAAK,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAYjD;;OAEG;IACH,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE;IA2BzD,OAAO,CAAC,WAAW;IAgDnB;;;;;OAKG;IACH,OAAO,CAAC,0BAA0B;IAclC,OAAO,CAAC,KAAK;CAKd"}
1
+ {"version":3,"file":"claudemd-generator.d.ts","sourceRoot":"","sources":["../../src/claudemd/claudemd-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAIH,OAAO,EAAE,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAC;AA8ClE;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,WAAW,UAAQ,GAClB,MAAM,CA0DR;AAED,qBAAa,iBAAiB;IAC5B,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;gBAEpB,QAAQ,CAAC,EAAE,YAAY;IAInC;;;;;;;;;OASG;IACH,KAAK,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAYjD;;;OAGG;IACH,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE;IAyBzD;;;;OAIG;IACH,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,UAAQ,GAAG,MAAM;CAGtF;AAID,YAAY,EAAE,SAAS,EAAE,CAAC"}