@ironbee-ai/cli 0.6.1 → 0.7.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 (381) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +167 -39
  3. package/dist/analysis/code-changes.js +3 -3
  4. package/dist/analysis/code-changes.js.map +1 -1
  5. package/dist/analysis/cross-session.js.map +1 -1
  6. package/dist/analysis/fix-effectiveness.js.map +1 -1
  7. package/dist/analysis/time-analysis.js.map +1 -1
  8. package/dist/analysis/verdict-details.js.map +1 -1
  9. package/dist/analysis/verification-quality.js.map +1 -1
  10. package/dist/analytics/classifier.d.ts +99 -0
  11. package/dist/analytics/classifier.d.ts.map +1 -0
  12. package/dist/analytics/classifier.js +380 -0
  13. package/dist/analytics/classifier.js.map +1 -0
  14. package/dist/analytics/emit.d.ts +67 -0
  15. package/dist/analytics/emit.d.ts.map +1 -0
  16. package/dist/analytics/emit.js +901 -0
  17. package/dist/analytics/emit.js.map +1 -0
  18. package/dist/analytics/errors.d.ts +33 -0
  19. package/dist/analytics/errors.d.ts.map +1 -0
  20. package/dist/analytics/errors.js +93 -0
  21. package/dist/analytics/errors.js.map +1 -0
  22. package/dist/analytics/hook-trigger.d.ts +39 -0
  23. package/dist/analytics/hook-trigger.d.ts.map +1 -0
  24. package/dist/analytics/hook-trigger.js +127 -0
  25. package/dist/analytics/hook-trigger.js.map +1 -0
  26. package/dist/analytics/log.d.ts +44 -0
  27. package/dist/analytics/log.d.ts.map +1 -0
  28. package/dist/analytics/log.js +158 -0
  29. package/dist/analytics/log.js.map +1 -0
  30. package/dist/analytics/merge.d.ts +40 -0
  31. package/dist/analytics/merge.d.ts.map +1 -0
  32. package/dist/analytics/merge.js +527 -0
  33. package/dist/analytics/merge.js.map +1 -0
  34. package/dist/analytics/pricing.d.ts +149 -0
  35. package/dist/analytics/pricing.d.ts.map +1 -0
  36. package/dist/analytics/pricing.js +179 -0
  37. package/dist/analytics/pricing.js.map +1 -0
  38. package/dist/analytics/projection.d.ts +356 -0
  39. package/dist/analytics/projection.d.ts.map +1 -0
  40. package/dist/analytics/projection.js +2281 -0
  41. package/dist/analytics/projection.js.map +1 -0
  42. package/dist/analytics/spawn.d.ts +28 -0
  43. package/dist/analytics/spawn.d.ts.map +1 -0
  44. package/dist/analytics/spawn.js +57 -0
  45. package/dist/analytics/spawn.js.map +1 -0
  46. package/dist/analytics/state.d.ts +58 -0
  47. package/dist/analytics/state.d.ts.map +1 -0
  48. package/dist/analytics/state.js +329 -0
  49. package/dist/analytics/state.js.map +1 -0
  50. package/dist/analytics/transcript.d.ts +150 -0
  51. package/dist/analytics/transcript.d.ts.map +1 -0
  52. package/dist/analytics/transcript.js +276 -0
  53. package/dist/analytics/transcript.js.map +1 -0
  54. package/dist/analytics/types.d.ts +875 -0
  55. package/dist/analytics/types.d.ts.map +1 -0
  56. package/dist/analytics/types.js +31 -0
  57. package/dist/analytics/types.js.map +1 -0
  58. package/dist/clients/base.d.ts +21 -2
  59. package/dist/clients/base.d.ts.map +1 -1
  60. package/dist/clients/claude/commands/ironbee-verify.md +15 -7
  61. package/dist/clients/claude/fragments/command-verify.node.md +33 -0
  62. package/dist/clients/claude/fragments/rule.node.md +29 -0
  63. package/dist/clients/claude/fragments/skill.node.md +77 -0
  64. package/dist/clients/claude/hooks/activity-end.d.ts +13 -0
  65. package/dist/clients/claude/hooks/activity-end.d.ts.map +1 -0
  66. package/dist/clients/claude/hooks/activity-end.js +42 -0
  67. package/dist/clients/claude/hooks/activity-end.js.map +1 -0
  68. package/dist/clients/claude/hooks/clear-verdict.d.ts +9 -4
  69. package/dist/clients/claude/hooks/clear-verdict.d.ts.map +1 -1
  70. package/dist/clients/claude/hooks/clear-verdict.js +50 -12
  71. package/dist/clients/claude/hooks/clear-verdict.js.map +1 -1
  72. package/dist/clients/claude/hooks/require-verdict.d.ts +8 -3
  73. package/dist/clients/claude/hooks/require-verdict.d.ts.map +1 -1
  74. package/dist/clients/claude/hooks/require-verdict.js +17 -6
  75. package/dist/clients/claude/hooks/require-verdict.js.map +1 -1
  76. package/dist/clients/claude/hooks/require-verification.d.ts +7 -4
  77. package/dist/clients/claude/hooks/require-verification.d.ts.map +1 -1
  78. package/dist/clients/claude/hooks/require-verification.js +44 -22
  79. package/dist/clients/claude/hooks/require-verification.js.map +1 -1
  80. package/dist/clients/claude/hooks/session-end.d.ts.map +1 -1
  81. package/dist/clients/claude/hooks/session-end.js +17 -2
  82. package/dist/clients/claude/hooks/session-end.js.map +1 -1
  83. package/dist/clients/claude/hooks/session-start.d.ts.map +1 -1
  84. package/dist/clients/claude/hooks/session-start.js +2 -1
  85. package/dist/clients/claude/hooks/session-start.js.map +1 -1
  86. package/dist/clients/claude/hooks/track-action-monitor.d.ts +27 -0
  87. package/dist/clients/claude/hooks/track-action-monitor.d.ts.map +1 -0
  88. package/dist/clients/claude/hooks/track-action-monitor.js +126 -0
  89. package/dist/clients/claude/hooks/track-action-monitor.js.map +1 -0
  90. package/dist/clients/claude/hooks/track-action.d.ts.map +1 -1
  91. package/dist/clients/claude/hooks/track-action.js +29 -20
  92. package/dist/clients/claude/hooks/track-action.js.map +1 -1
  93. package/dist/clients/claude/hooks/verify-gate.d.ts.map +1 -1
  94. package/dist/clients/claude/hooks/verify-gate.js +18 -1
  95. package/dist/clients/claude/hooks/verify-gate.js.map +1 -1
  96. package/dist/clients/claude/index.d.ts +4 -1
  97. package/dist/clients/claude/index.d.ts.map +1 -1
  98. package/dist/clients/claude/index.js +185 -94
  99. package/dist/clients/claude/index.js.map +1 -1
  100. package/dist/clients/claude/rules/ironbee-verification.md +41 -33
  101. package/dist/clients/claude/skills/ironbee-verification.md +93 -76
  102. package/dist/clients/cursor/commands/ironbee-verify/SKILL.md +18 -10
  103. package/dist/clients/cursor/fragments/command-verify.node.md +33 -0
  104. package/dist/clients/cursor/fragments/rule.node.md +29 -0
  105. package/dist/clients/cursor/fragments/skill.node.md +77 -0
  106. package/dist/clients/cursor/hooks/activity-end.d.ts +14 -0
  107. package/dist/clients/cursor/hooks/activity-end.d.ts.map +1 -0
  108. package/dist/clients/cursor/hooks/activity-end.js +45 -0
  109. package/dist/clients/cursor/hooks/activity-end.js.map +1 -0
  110. package/dist/clients/cursor/hooks/clear-verdict.d.ts +13 -4
  111. package/dist/clients/cursor/hooks/clear-verdict.d.ts.map +1 -1
  112. package/dist/clients/cursor/hooks/clear-verdict.js +59 -14
  113. package/dist/clients/cursor/hooks/clear-verdict.js.map +1 -1
  114. package/dist/clients/cursor/hooks/require-verdict.d.ts +8 -3
  115. package/dist/clients/cursor/hooks/require-verdict.d.ts.map +1 -1
  116. package/dist/clients/cursor/hooks/require-verdict.js +17 -6
  117. package/dist/clients/cursor/hooks/require-verdict.js.map +1 -1
  118. package/dist/clients/cursor/hooks/require-verification.d.ts.map +1 -1
  119. package/dist/clients/cursor/hooks/require-verification.js +42 -16
  120. package/dist/clients/cursor/hooks/require-verification.js.map +1 -1
  121. package/dist/clients/cursor/hooks/session-end.d.ts.map +1 -1
  122. package/dist/clients/cursor/hooks/session-end.js +18 -2
  123. package/dist/clients/cursor/hooks/session-end.js.map +1 -1
  124. package/dist/clients/cursor/hooks/session-start.d.ts.map +1 -1
  125. package/dist/clients/cursor/hooks/session-start.js +2 -1
  126. package/dist/clients/cursor/hooks/session-start.js.map +1 -1
  127. package/dist/clients/cursor/hooks/track-action-monitor.d.ts +27 -0
  128. package/dist/clients/cursor/hooks/track-action-monitor.d.ts.map +1 -0
  129. package/dist/clients/cursor/hooks/track-action-monitor.js +133 -0
  130. package/dist/clients/cursor/hooks/track-action-monitor.js.map +1 -0
  131. package/dist/clients/cursor/hooks/track-action.d.ts.map +1 -1
  132. package/dist/clients/cursor/hooks/track-action.js +51 -23
  133. package/dist/clients/cursor/hooks/track-action.js.map +1 -1
  134. package/dist/clients/cursor/hooks/verify-gate.d.ts.map +1 -1
  135. package/dist/clients/cursor/hooks/verify-gate.js +14 -1
  136. package/dist/clients/cursor/hooks/verify-gate.js.map +1 -1
  137. package/dist/clients/cursor/index.d.ts +4 -1
  138. package/dist/clients/cursor/index.d.ts.map +1 -1
  139. package/dist/clients/cursor/index.js +131 -65
  140. package/dist/clients/cursor/index.js.map +1 -1
  141. package/dist/clients/cursor/rules/ironbee-verification.mdc +37 -29
  142. package/dist/clients/cursor/skills/ironbee-verification.md +93 -76
  143. package/dist/clients/registry.d.ts +14 -0
  144. package/dist/clients/registry.d.ts.map +1 -1
  145. package/dist/clients/registry.js +34 -0
  146. package/dist/clients/registry.js.map +1 -1
  147. package/dist/commands/analyze.d.ts.map +1 -1
  148. package/dist/commands/analyze.js +40 -0
  149. package/dist/commands/analyze.js.map +1 -1
  150. package/dist/commands/backend-toggle.d.ts +45 -0
  151. package/dist/commands/backend-toggle.d.ts.map +1 -0
  152. package/dist/commands/backend-toggle.js +192 -0
  153. package/dist/commands/backend-toggle.js.map +1 -0
  154. package/dist/commands/disable-backend.d.ts +14 -0
  155. package/dist/commands/disable-backend.d.ts.map +1 -0
  156. package/dist/commands/disable-backend.js +34 -0
  157. package/dist/commands/disable-backend.js.map +1 -0
  158. package/dist/commands/disable-verification.d.ts +16 -0
  159. package/dist/commands/disable-verification.d.ts.map +1 -0
  160. package/dist/commands/disable-verification.js +36 -0
  161. package/dist/commands/disable-verification.js.map +1 -0
  162. package/dist/commands/enable-backend.d.ts +15 -0
  163. package/dist/commands/enable-backend.d.ts.map +1 -0
  164. package/dist/commands/enable-backend.js +35 -0
  165. package/dist/commands/enable-backend.js.map +1 -0
  166. package/dist/commands/enable-verification.d.ts +14 -0
  167. package/dist/commands/enable-verification.d.ts.map +1 -0
  168. package/dist/commands/enable-verification.js +34 -0
  169. package/dist/commands/enable-verification.js.map +1 -0
  170. package/dist/commands/hook.d.ts.map +1 -1
  171. package/dist/commands/hook.js +60 -0
  172. package/dist/commands/hook.js.map +1 -1
  173. package/dist/commands/import.d.ts +39 -0
  174. package/dist/commands/import.d.ts.map +1 -0
  175. package/dist/commands/import.js +369 -0
  176. package/dist/commands/import.js.map +1 -0
  177. package/dist/commands/install.d.ts.map +1 -1
  178. package/dist/commands/install.js +15 -20
  179. package/dist/commands/install.js.map +1 -1
  180. package/dist/commands/process-analytics.d.ts +18 -0
  181. package/dist/commands/process-analytics.d.ts.map +1 -0
  182. package/dist/commands/process-analytics.js +57 -0
  183. package/dist/commands/process-analytics.js.map +1 -0
  184. package/dist/commands/queue.d.ts +2 -3
  185. package/dist/commands/queue.d.ts.map +1 -1
  186. package/dist/commands/queue.js +2 -3
  187. package/dist/commands/queue.js.map +1 -1
  188. package/dist/commands/status.d.ts.map +1 -1
  189. package/dist/commands/status.js +29 -1
  190. package/dist/commands/status.js.map +1 -1
  191. package/dist/commands/verification-toggle.d.ts +47 -0
  192. package/dist/commands/verification-toggle.d.ts.map +1 -0
  193. package/dist/commands/verification-toggle.js +113 -0
  194. package/dist/commands/verification-toggle.js.map +1 -0
  195. package/dist/commands/verify.d.ts.map +1 -1
  196. package/dist/commands/verify.js +28 -0
  197. package/dist/commands/verify.js.map +1 -1
  198. package/dist/hooks/core/actions.d.ts +77 -70
  199. package/dist/hooks/core/actions.d.ts.map +1 -1
  200. package/dist/hooks/core/actions.js +45 -30
  201. package/dist/hooks/core/actions.js.map +1 -1
  202. package/dist/hooks/core/activity-end.d.ts +20 -0
  203. package/dist/hooks/core/activity-end.d.ts.map +1 -0
  204. package/dist/hooks/core/activity-end.js +23 -0
  205. package/dist/hooks/core/activity-end.js.map +1 -0
  206. package/dist/hooks/core/file-diff.d.ts +19 -0
  207. package/dist/hooks/core/file-diff.d.ts.map +1 -0
  208. package/dist/hooks/core/file-diff.js +39 -0
  209. package/dist/hooks/core/file-diff.js.map +1 -0
  210. package/dist/hooks/core/required-tools.d.ts +30 -0
  211. package/dist/hooks/core/required-tools.d.ts.map +1 -0
  212. package/dist/hooks/core/required-tools.js +70 -0
  213. package/dist/hooks/core/required-tools.js.map +1 -0
  214. package/dist/hooks/core/session-state.d.ts +12 -3
  215. package/dist/hooks/core/session-state.d.ts.map +1 -1
  216. package/dist/hooks/core/session-state.js +59 -0
  217. package/dist/hooks/core/session-state.js.map +1 -1
  218. package/dist/hooks/core/submit-verdict.d.ts.map +1 -1
  219. package/dist/hooks/core/submit-verdict.js +16 -12
  220. package/dist/hooks/core/submit-verdict.js.map +1 -1
  221. package/dist/hooks/core/tool-use-stash.d.ts +41 -0
  222. package/dist/hooks/core/tool-use-stash.d.ts.map +1 -0
  223. package/dist/hooks/core/tool-use-stash.js +82 -0
  224. package/dist/hooks/core/tool-use-stash.js.map +1 -0
  225. package/dist/hooks/core/verify-gate.d.ts +17 -3
  226. package/dist/hooks/core/verify-gate.d.ts.map +1 -1
  227. package/dist/hooks/core/verify-gate.js +315 -119
  228. package/dist/hooks/core/verify-gate.js.map +1 -1
  229. package/dist/import/claude/analytics-runner.d.ts +42 -0
  230. package/dist/import/claude/analytics-runner.d.ts.map +1 -0
  231. package/dist/import/claude/analytics-runner.js +213 -0
  232. package/dist/import/claude/analytics-runner.js.map +1 -0
  233. package/dist/import/claude/discovery.d.ts +22 -0
  234. package/dist/import/claude/discovery.d.ts.map +1 -0
  235. package/dist/import/claude/discovery.js +197 -0
  236. package/dist/import/claude/discovery.js.map +1 -0
  237. package/dist/import/claude/encoding.d.ts +50 -0
  238. package/dist/import/claude/encoding.d.ts.map +1 -0
  239. package/dist/import/claude/encoding.js +110 -0
  240. package/dist/import/claude/encoding.js.map +1 -0
  241. package/dist/import/claude/events/file-change.d.ts +28 -0
  242. package/dist/import/claude/events/file-change.d.ts.map +1 -0
  243. package/dist/import/claude/events/file-change.js +112 -0
  244. package/dist/import/claude/events/file-change.js.map +1 -0
  245. package/dist/import/claude/events/tool-call.d.ts +61 -0
  246. package/dist/import/claude/events/tool-call.d.ts.map +1 -0
  247. package/dist/import/claude/events/tool-call.js +119 -0
  248. package/dist/import/claude/events/tool-call.js.map +1 -0
  249. package/dist/import/claude/runner.d.ts +31 -0
  250. package/dist/import/claude/runner.d.ts.map +1 -0
  251. package/dist/import/claude/runner.js +280 -0
  252. package/dist/import/claude/runner.js.map +1 -0
  253. package/dist/import/claude/summary.d.ts +23 -0
  254. package/dist/import/claude/summary.d.ts.map +1 -0
  255. package/dist/import/claude/summary.js +186 -0
  256. package/dist/import/claude/summary.js.map +1 -0
  257. package/dist/import/claude/transcript-walk.d.ts +52 -0
  258. package/dist/import/claude/transcript-walk.d.ts.map +1 -0
  259. package/dist/import/claude/transcript-walk.js +187 -0
  260. package/dist/import/claude/transcript-walk.js.map +1 -0
  261. package/dist/import/concurrent-pool.d.ts +45 -0
  262. package/dist/import/concurrent-pool.d.ts.map +1 -0
  263. package/dist/import/concurrent-pool.js +95 -0
  264. package/dist/import/concurrent-pool.js.map +1 -0
  265. package/dist/import/emitter.d.ts +29 -0
  266. package/dist/import/emitter.d.ts.map +1 -0
  267. package/dist/import/emitter.js +66 -0
  268. package/dist/import/emitter.js.map +1 -0
  269. package/dist/import/events/activity.d.ts +23 -0
  270. package/dist/import/events/activity.d.ts.map +1 -0
  271. package/dist/import/events/activity.js +45 -0
  272. package/dist/import/events/activity.js.map +1 -0
  273. package/dist/import/events/session.d.ts +24 -0
  274. package/dist/import/events/session.d.ts.map +1 -0
  275. package/dist/import/events/session.js +47 -0
  276. package/dist/import/events/session.js.map +1 -0
  277. package/dist/import/filter.d.ts +47 -0
  278. package/dist/import/filter.d.ts.map +1 -0
  279. package/dist/import/filter.js +90 -0
  280. package/dist/import/filter.js.map +1 -0
  281. package/dist/import/ids.d.ts +56 -0
  282. package/dist/import/ids.d.ts.map +1 -0
  283. package/dist/import/ids.js +87 -0
  284. package/dist/import/ids.js.map +1 -0
  285. package/dist/import/index.d.ts +29 -0
  286. package/dist/import/index.d.ts.map +1 -0
  287. package/dist/import/index.js +52 -0
  288. package/dist/import/index.js.map +1 -0
  289. package/dist/import/marker.d.ts +20 -0
  290. package/dist/import/marker.d.ts.map +1 -0
  291. package/dist/import/marker.js +71 -0
  292. package/dist/import/marker.js.map +1 -0
  293. package/dist/import/pipeline.d.ts +41 -0
  294. package/dist/import/pipeline.d.ts.map +1 -0
  295. package/dist/import/pipeline.js +47 -0
  296. package/dist/import/pipeline.js.map +1 -0
  297. package/dist/import/progress.d.ts +20 -0
  298. package/dist/import/progress.d.ts.map +1 -0
  299. package/dist/import/progress.js +69 -0
  300. package/dist/import/progress.js.map +1 -0
  301. package/dist/import/skip.d.ts +13 -0
  302. package/dist/import/skip.d.ts.map +1 -0
  303. package/dist/import/skip.js +24 -0
  304. package/dist/import/skip.js.map +1 -0
  305. package/dist/import/types.d.ts +125 -0
  306. package/dist/import/types.d.ts.map +1 -0
  307. package/dist/import/types.js +28 -0
  308. package/dist/import/types.js.map +1 -0
  309. package/dist/index.js +21 -2
  310. package/dist/index.js.map +1 -1
  311. package/dist/lib/collector.d.ts +29 -3
  312. package/dist/lib/collector.d.ts.map +1 -1
  313. package/dist/lib/collector.js +118 -8
  314. package/dist/lib/collector.js.map +1 -1
  315. package/dist/lib/config.d.ts +240 -83
  316. package/dist/lib/config.d.ts.map +1 -1
  317. package/dist/lib/config.js +482 -89
  318. package/dist/lib/config.js.map +1 -1
  319. package/dist/lib/event.d.ts +72 -0
  320. package/dist/lib/event.d.ts.map +1 -0
  321. package/dist/lib/event.js +42 -0
  322. package/dist/lib/event.js.map +1 -0
  323. package/dist/lib/gitignore.d.ts +21 -0
  324. package/dist/lib/gitignore.d.ts.map +1 -0
  325. package/dist/lib/gitignore.js +54 -0
  326. package/dist/lib/gitignore.js.map +1 -0
  327. package/dist/lib/runtime-section.d.ts +118 -0
  328. package/dist/lib/runtime-section.d.ts.map +1 -0
  329. package/dist/lib/runtime-section.js +256 -0
  330. package/dist/lib/runtime-section.js.map +1 -0
  331. package/dist/lib/telemetry.d.ts +1 -1
  332. package/dist/lib/telemetry.d.ts.map +1 -1
  333. package/dist/lib/telemetry.js +4 -1
  334. package/dist/lib/telemetry.js.map +1 -1
  335. package/dist/queue/dead-letter.d.ts +5 -1
  336. package/dist/queue/dead-letter.d.ts.map +1 -1
  337. package/dist/queue/dead-letter.js +5 -1
  338. package/dist/queue/dead-letter.js.map +1 -1
  339. package/dist/queue/drain.d.ts +3 -2
  340. package/dist/queue/drain.d.ts.map +1 -1
  341. package/dist/queue/drain.js +3 -2
  342. package/dist/queue/drain.js.map +1 -1
  343. package/dist/queue/flush.d.ts +28 -12
  344. package/dist/queue/flush.d.ts.map +1 -1
  345. package/dist/queue/flush.js +43 -18
  346. package/dist/queue/flush.js.map +1 -1
  347. package/dist/queue/handlers/send-event.d.ts.map +1 -1
  348. package/dist/queue/handlers/send-event.js.map +1 -1
  349. package/dist/queue/index.d.ts +1 -2
  350. package/dist/queue/index.d.ts.map +1 -1
  351. package/dist/queue/index.js +2 -2
  352. package/dist/queue/index.js.map +1 -1
  353. package/dist/queue/paths.d.ts +4 -2
  354. package/dist/queue/paths.d.ts.map +1 -1
  355. package/dist/queue/paths.js +4 -2
  356. package/dist/queue/paths.js.map +1 -1
  357. package/dist/queue/process-file.d.ts +5 -1
  358. package/dist/queue/process-file.d.ts.map +1 -1
  359. package/dist/queue/process-file.js +5 -1
  360. package/dist/queue/process-file.js.map +1 -1
  361. package/dist/queue/snapshot.d.ts +4 -1
  362. package/dist/queue/snapshot.d.ts.map +1 -1
  363. package/dist/queue/snapshot.js +4 -1
  364. package/dist/queue/snapshot.js.map +1 -1
  365. package/dist/queue/spawn.d.ts +1 -3
  366. package/dist/queue/spawn.d.ts.map +1 -1
  367. package/dist/queue/spawn.js +1 -3
  368. package/dist/queue/spawn.js.map +1 -1
  369. package/dist/queue/submit.d.ts +6 -1
  370. package/dist/queue/submit.d.ts.map +1 -1
  371. package/dist/queue/submit.js +6 -1
  372. package/dist/queue/submit.js.map +1 -1
  373. package/dist/queue/types.d.ts +5 -1
  374. package/dist/queue/types.d.ts.map +1 -1
  375. package/dist/queue/types.js +5 -1
  376. package/dist/queue/types.js.map +1 -1
  377. package/dist/queue/worker-log.d.ts +3 -1
  378. package/dist/queue/worker-log.d.ts.map +1 -1
  379. package/dist/queue/worker-log.js +3 -1
  380. package/dist/queue/worker-log.js.map +1 -1
  381. package/package.json +3 -1
@@ -1 +1 @@
1
- {"version":3,"file":"verify-gate.js","sourceRoot":"","sources":["../../../../src/clients/claude/hooks/verify-gate.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;AAaH,kBA0CC;AArDD,iEAAkF;AAClF,2DAA2D;AAC3D,gDAA+E;AAC/E,gDAAyD;AACzD,8CAA+C;AAC/C,0CAAmD;AAM5C,KAAK,UAAU,GAAG,CAAC,UAAkB;IACxC,IAAI,KAA0B,CAAC;IAC/B,IAAI,CAAC;QACD,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,iBAAS,GAAE,CAAwB,CAAC;IAC3D,CAAC;IAAC,OAAO,CAAU,EAAE,CAAC;QAClB,eAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,EAAE,CAAC,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,MAAM,SAAS,GAAW,KAAK,CAAC,UAAU,IAAI,SAAS,CAAC;IACxD,IAAA,mBAAU,EAAC,GAAG,UAAU,sBAAsB,SAAS,cAAc,CAAC,CAAC;IAEvE,MAAM,UAAU,GAAW,GAAG,UAAU,sBAAsB,SAAS,EAAE,CAAC;IAC1E,MAAM,WAAW,GAAW,GAAG,UAAU,gBAAgB,CAAC;IAE1D,MAAM,MAAM,GAAkB,IAAA,mBAAU,EAAC,UAAU,CAAC,CAAC;IAErD,MAAM,MAAM,GAAqB,MAAM,IAAA,2BAAa,EAAC;QACjD,SAAS;QACT,UAAU;QACV,WAAW;QACX,WAAW,EAAE,GAAG,UAAU,eAAe;QACzC,UAAU,EAAE,IAAA,sBAAa,EAAC,MAAM,CAAC;KACpC,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;QAC5B,MAAM,IAAA,sBAAW,EAAC,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC;QAC/C,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;QAChD,CAAC;QACD,qEAAqE;QACrE,qEAAqE;QACrE,IAAA,yBAAiB,EAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QACzC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,+CAA+C;IAC/C,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACjB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAChD,CAAC;IACD,IAAA,yBAAiB,EAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IACzC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC"}
1
+ {"version":3,"file":"verify-gate.js","sourceRoot":"","sources":["../../../../src/clients/claude/hooks/verify-gate.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;AAcH,kBA0DC;AAtED,iEAAkF;AAClF,2DAA2D;AAC3D,gDAA+E;AAC/E,gDAAyD;AACzD,8CAA+C;AAC/C,0CAAmD;AACnD,kEAAsE;AAM/D,KAAK,UAAU,GAAG,CAAC,UAAkB;IACxC,IAAI,KAA0B,CAAC;IAC/B,IAAI,CAAC;QACD,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,iBAAS,GAAE,CAAwB,CAAC;IAC3D,CAAC;IAAC,OAAO,CAAU,EAAE,CAAC;QAClB,eAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,EAAE,CAAC,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,MAAM,SAAS,GAAW,KAAK,CAAC,UAAU,IAAI,SAAS,CAAC;IACxD,IAAA,mBAAU,EAAC,GAAG,UAAU,sBAAsB,SAAS,cAAc,CAAC,CAAC;IAEvE,MAAM,UAAU,GAAW,GAAG,UAAU,sBAAsB,SAAS,EAAE,CAAC;IAC1E,MAAM,WAAW,GAAW,GAAG,UAAU,gBAAgB,CAAC;IAE1D,MAAM,MAAM,GAAkB,IAAA,mBAAU,EAAC,UAAU,CAAC,CAAC;IAErD,MAAM,MAAM,GAAqB,MAAM,IAAA,2BAAa,EAAC;QACjD,SAAS;QACT,UAAU;QACV,WAAW;QACX,WAAW,EAAE,GAAG,UAAU,eAAe;QACzC,UAAU,EAAE,IAAA,sBAAa,EAAC,MAAM,CAAC;QACjC,MAAM;QACN,UAAU;KACb,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;QAC5B,MAAM,IAAA,sBAAW,EAAC,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC;QAC/C,oEAAoE;QACpE,mEAAmE;QACnE,IAAA,kCAAmB,EAAC;YAChB,UAAU;YACV,SAAS;YACT,WAAW,EAAE,MAAM;YACnB,gBAAgB,EAAE,aAAa;SAClC,CAAC,CAAC;QACH,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;QAChD,CAAC;QACD,qEAAqE;QACrE,6CAA6C;QAC7C,IAAA,yBAAiB,EAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QACzC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,+CAA+C;IAC/C,IAAA,kCAAmB,EAAC;QAChB,UAAU;QACV,SAAS;QACT,WAAW,EAAE,MAAM;QACnB,gBAAgB,EAAE,aAAa;KAClC,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACjB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAChD,CAAC;IACD,IAAA,yBAAiB,EAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IACzC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC"}
@@ -1,9 +1,10 @@
1
1
  import { IClient } from "../base";
2
+ import { IronBeeConfig } from "../../lib/config";
2
3
  export declare class ClaudeClient implements IClient {
3
4
  readonly name: string;
4
5
  detect(projectDir: string): boolean;
5
6
  resolveProjectDir(): string;
6
- install(projectDir: string): void;
7
+ install(projectDir: string, config?: IronBeeConfig): void;
7
8
  uninstall(projectDir: string): void;
8
9
  private cleanupArtifacts;
9
10
  runVerifyGate(projectDir: string): Promise<void>;
@@ -13,6 +14,8 @@ export declare class ClaudeClient implements IClient {
13
14
  runRequireVerdict(projectDir: string): Promise<void>;
14
15
  runRequireVerification(projectDir: string): Promise<void>;
15
16
  runActivityStart(projectDir: string): Promise<void>;
17
+ runActivityEnd(projectDir: string): Promise<void>;
18
+ runTrackActionMonitor(projectDir: string): Promise<void>;
16
19
  runSessionEnd(projectDir: string): Promise<void>;
17
20
  private isIronBeeHook;
18
21
  private mergeHooksConfig;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/clients/claude/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AA+ClC,qBAAa,YAAa,YAAW,OAAO;IACxC,SAAgB,IAAI,EAAE,MAAM,CAAY;IAEjC,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAInC,iBAAiB,IAAI,MAAM;IAI3B,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IA2CjC,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAK1C,OAAO,CAAC,gBAAgB;IAyBX,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhD,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlD,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjD,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlD,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpD,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzD,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAInD,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7D,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,gBAAgB;IAoJxB,OAAO,CAAC,kBAAkB;IAuB1B,OAAO,CAAC,eAAe;IAgBvB,OAAO,CAAC,gBAAgB;IAqBxB,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,cAAc;IAqBtB,OAAO,CAAC,gBAAgB;CAgC3B;AAuBD,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAG1D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/clients/claude/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAclC,OAAO,EAAwE,aAAa,EAAsC,MAAM,kBAAkB,CAAC;AA8C3J,qBAAa,YAAa,YAAW,OAAO;IACxC,SAAgB,IAAI,EAAE,MAAM,CAAY;IAEjC,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAInC,iBAAiB,IAAI,MAAM;IAI3B,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,IAAI;IA+DzD,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAK1C,OAAO,CAAC,gBAAgB;IAyBX,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhD,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlD,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjD,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlD,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpD,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzD,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAInD,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjD,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxD,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7D,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,gBAAgB;IA0KxB,OAAO,CAAC,kBAAkB;IA4B1B,OAAO,CAAC,eAAe;IAwBvB,OAAO,CAAC,gBAAgB;IA2BxB,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,cAAc;IAsBtB,OAAO,CAAC,gBAAgB;CA+D3B;AAED,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAG1D"}
@@ -6,17 +6,29 @@ const fs_1 = require("fs");
6
6
  const path_1 = require("path");
7
7
  const logger_1 = require("../../lib/logger");
8
8
  const output_1 = require("../../lib/output");
9
+ const gitignore_1 = require("../../lib/gitignore");
9
10
  const verify_gate_1 = require("./hooks/verify-gate");
10
11
  const clear_verdict_1 = require("./hooks/clear-verdict");
11
12
  const track_action_1 = require("./hooks/track-action");
13
+ const track_action_monitor_1 = require("./hooks/track-action-monitor");
12
14
  const session_start_1 = require("./hooks/session-start");
13
15
  const require_verdict_1 = require("./hooks/require-verdict");
14
16
  const require_verification_1 = require("./hooks/require-verification");
15
17
  const activity_start_1 = require("./hooks/activity-start");
18
+ const activity_end_1 = require("./hooks/activity-end");
16
19
  const session_end_1 = require("./hooks/session-end");
17
20
  const config_1 = require("../../lib/config");
21
+ const runtime_section_1 = require("../../lib/runtime-section");
18
22
  const MCP_SERVER_NAME = "browser-devtools";
23
+ const NODE_MCP_SERVER_NAME = "node-devtools";
19
24
  const IRONBEE_HOOK_MARKER = "ironbee";
25
+ /** Resolve fragments dir for a given client at runtime — same trick the
26
+ * install code uses for skill/rule paths (`__dirname` points to the
27
+ * compiled file's location, so this works whether running from `dist/`
28
+ * or via `ts-node`). */
29
+ function fragmentsDirFor(client) {
30
+ return (0, path_1.join)(__dirname, "..", client, "fragments");
31
+ }
20
32
  class ClaudeClient {
21
33
  constructor() {
22
34
  this.name = "claude";
@@ -27,8 +39,12 @@ class ClaudeClient {
27
39
  resolveProjectDir() {
28
40
  return process.env.CLAUDE_PROJECT_DIR ?? process.cwd();
29
41
  }
30
- install(projectDir) {
31
- // Clean up old artifacts first (safe for re-install / upgrade)
42
+ install(projectDir, config) {
43
+ const cfg = config ?? (0, config_1.loadConfig)(projectDir);
44
+ const verificationEnabled = (0, config_1.getVerificationEnabled)(cfg);
45
+ // Clean up old artifacts first (safe for re-install / upgrade and
46
+ // necessary when toggling between enabled/disabled mode so stale
47
+ // skill/rule/verify-command/MCP entries from the prior mode are removed).
32
48
  this.cleanupArtifacts(projectDir);
33
49
  const claudeDir = (0, path_1.join)(projectDir, ".claude");
34
50
  const skillsDir = (0, path_1.join)(claudeDir, "skills");
@@ -38,27 +54,42 @@ class ClaudeClient {
38
54
  (0, fs_1.mkdirSync)(rulesDir, { recursive: true });
39
55
  (0, fs_1.mkdirSync)(commandsDir, { recursive: true });
40
56
  const settingsPath = (0, path_1.join)(claudeDir, "settings.json");
41
- this.mergeHooksConfig(settingsPath);
42
- this.writePermissions(settingsPath);
43
- const verifySkillPath = (0, path_1.join)(skillsDir, "ironbee-verification.md");
44
- const verifySkillContent = (0, fs_1.readFileSync)((0, path_1.join)(__dirname, "skills", "ironbee-verification.md"), "utf-8");
45
- (0, fs_1.writeFileSync)(verifySkillPath, verifySkillContent);
46
- const rulePath = (0, path_1.join)(rulesDir, "ironbee-verification.md");
47
- const ruleContent = (0, fs_1.readFileSync)((0, path_1.join)(__dirname, "rules", "ironbee-verification.md"), "utf-8");
48
- (0, fs_1.writeFileSync)(rulePath, ruleContent);
57
+ this.mergeHooksConfig(settingsPath, verificationEnabled);
58
+ this.writePermissions(settingsPath, verificationEnabled);
59
+ // /ironbee-analyze is installed in both modes (graceful degradation
60
+ // for monitoring-only sessions handles the limited-data case).
49
61
  const analyzeCommandPath = (0, path_1.join)(commandsDir, "ironbee-analyze.md");
50
62
  const analyzeCommandContent = (0, fs_1.readFileSync)((0, path_1.join)(__dirname, "commands", "ironbee-analyze.md"), "utf-8");
51
63
  (0, fs_1.writeFileSync)(analyzeCommandPath, analyzeCommandContent);
52
- const verifyCommandPath = (0, path_1.join)(commandsDir, "ironbee-verify.md");
53
- const verifyCommandContent = (0, fs_1.readFileSync)((0, path_1.join)(__dirname, "commands", "ironbee-verify.md"), "utf-8");
54
- (0, fs_1.writeFileSync)(verifyCommandPath, verifyCommandContent);
55
- const mcpPath = (0, path_1.join)(projectDir, ".mcp.json");
56
- this.writeMcpConfig(mcpPath, projectDir);
57
- console.log(` ${output_1.pc.dim("→")} ${(0, output_1.orange)("[claude]")} settings ${output_1.pc.dim("→")} ${output_1.pc.dim(settingsPath)}`);
58
- console.log(` ${output_1.pc.dim("→")} ${(0, output_1.orange)("[claude]")} skills ${output_1.pc.dim("→")} ${output_1.pc.dim(skillsDir)}`);
59
- console.log(` ${output_1.pc.dim("→")} ${(0, output_1.orange)("[claude]")} rule ${output_1.pc.dim("→")} ${output_1.pc.dim(rulePath)}`);
60
- console.log(` ${output_1.pc.dim("→")} ${(0, output_1.orange)("[claude]")} commands ${output_1.pc.dim("→")} ${output_1.pc.dim(commandsDir)}`);
61
- console.log(` ${output_1.pc.dim("→")} ${(0, output_1.orange)("[claude]")} mcp ${output_1.pc.dim("→")} ${output_1.pc.dim(mcpPath)}`);
64
+ if (verificationEnabled) {
65
+ // Enforcement artifacts only present when verification is on.
66
+ const verifySkillPath = (0, path_1.join)(skillsDir, "ironbee-verification.md");
67
+ const verifySkillContent = (0, fs_1.readFileSync)((0, path_1.join)(__dirname, "skills", "ironbee-verification.md"), "utf-8");
68
+ (0, fs_1.writeFileSync)(verifySkillPath, verifySkillContent);
69
+ const rulePath = (0, path_1.join)(rulesDir, "ironbee-verification.md");
70
+ const ruleContent = (0, fs_1.readFileSync)((0, path_1.join)(__dirname, "rules", "ironbee-verification.md"), "utf-8");
71
+ (0, fs_1.writeFileSync)(rulePath, ruleContent);
72
+ const verifyCommandPath = (0, path_1.join)(commandsDir, "ironbee-verify.md");
73
+ const verifyCommandContent = (0, fs_1.readFileSync)((0, path_1.join)(__dirname, "commands", "ironbee-verify.md"), "utf-8");
74
+ (0, fs_1.writeFileSync)(verifyCommandPath, verifyCommandContent);
75
+ const mcpPath = (0, path_1.join)(projectDir, ".mcp.json");
76
+ this.writeMcpConfig(mcpPath, projectDir);
77
+ // Source md files ship with empty runtime marker blocks. Sync them
78
+ // to the project's current config state so that enabled runtimes
79
+ // get their fragment content and disabled ones get the placeholder.
80
+ // Idempotent — safe on first install AND re-install.
81
+ (0, runtime_section_1.syncRuntimeSectionsToConfig)(projectDir, fragmentsDirFor);
82
+ console.log(` ${output_1.pc.dim("→")} ${(0, output_1.orange)("[claude]")} settings ${output_1.pc.dim("→")} ${output_1.pc.dim(settingsPath)}`);
83
+ console.log(` ${output_1.pc.dim("→")} ${(0, output_1.orange)("[claude]")} skills ${output_1.pc.dim("→")} ${output_1.pc.dim(skillsDir)}`);
84
+ console.log(` ${output_1.pc.dim("→")} ${(0, output_1.orange)("[claude]")} rule ${output_1.pc.dim("→")} ${output_1.pc.dim(rulePath)}`);
85
+ console.log(` ${output_1.pc.dim("→")} ${(0, output_1.orange)("[claude]")} commands ${output_1.pc.dim("→")} ${output_1.pc.dim(commandsDir)}`);
86
+ console.log(` ${output_1.pc.dim("→")} ${(0, output_1.orange)("[claude]")} mcp ${output_1.pc.dim("→")} ${output_1.pc.dim(mcpPath)}`);
87
+ }
88
+ else {
89
+ console.log(` ${output_1.pc.dim("→")} ${(0, output_1.orange)("[claude]")} ${output_1.pc.yellow("monitoring-only mode")} (verification.enable: false)`);
90
+ console.log(` ${output_1.pc.dim("→")} ${(0, output_1.orange)("[claude]")} settings ${output_1.pc.dim("→")} ${output_1.pc.dim(settingsPath)}`);
91
+ console.log(` ${output_1.pc.dim("→")} ${(0, output_1.orange)("[claude]")} commands ${output_1.pc.dim("→")} ${output_1.pc.dim(commandsDir)}`);
92
+ }
62
93
  }
63
94
  uninstall(projectDir) {
64
95
  this.cleanupArtifacts(projectDir);
@@ -106,13 +137,19 @@ class ClaudeClient {
106
137
  async runActivityStart(projectDir) {
107
138
  await (0, activity_start_1.run)(projectDir);
108
139
  }
140
+ async runActivityEnd(projectDir) {
141
+ await (0, activity_end_1.run)(projectDir);
142
+ }
143
+ async runTrackActionMonitor(projectDir) {
144
+ await (0, track_action_monitor_1.run)(projectDir);
145
+ }
109
146
  async runSessionEnd(projectDir) {
110
147
  await (0, session_end_1.run)(projectDir);
111
148
  }
112
149
  isIronBeeHook(entry) {
113
150
  return entry.hooks.some((h) => h.command.includes(IRONBEE_HOOK_MARKER));
114
151
  }
115
- mergeHooksConfig(settingsPath) {
152
+ mergeHooksConfig(settingsPath, verificationEnabled) {
116
153
  let settings = {};
117
154
  if ((0, fs_1.existsSync)(settingsPath)) {
118
155
  try {
@@ -126,11 +163,20 @@ class ClaudeClient {
126
163
  if (!settings.hooks) {
127
164
  settings.hooks = {};
128
165
  }
129
- // remove existing ironbee entries first (for re-install)
166
+ // remove existing ironbee entries first (for re-install AND mode
167
+ // toggles — the previous mode's enforcement hooks must be cleared).
168
+ // Drop the event-type key entirely when the filtered list is empty
169
+ // so retired matchers don't leave orphan `[]` keys in settings.json.
130
170
  for (const eventType of Object.keys(settings.hooks)) {
131
- settings.hooks[eventType] = settings.hooks[eventType].filter((entry) => !this.isIronBeeHook(entry));
171
+ const filtered = settings.hooks[eventType].filter((entry) => !this.isIronBeeHook(entry));
172
+ if (filtered.length === 0) {
173
+ delete settings.hooks[eventType];
174
+ }
175
+ else {
176
+ settings.hooks[eventType] = filtered;
177
+ }
132
178
  }
133
- // ── SessionStart — record session, output instructions ──
179
+ // ── SessionStart (always) — record session, output instructions ──
134
180
  if (!settings.hooks.SessionStart) {
135
181
  settings.hooks.SessionStart = [];
136
182
  }
@@ -143,7 +189,7 @@ class ClaudeClient {
143
189
  },
144
190
  ],
145
191
  });
146
- // ── UserPromptSubmit — start activity tracking on each agent turn ──
192
+ // ── UserPromptSubmit (always) — start activity on each agent turn ──
147
193
  if (!settings.hooks.UserPromptSubmit) {
148
194
  settings.hooks.UserPromptSubmit = [];
149
195
  }
@@ -156,56 +202,64 @@ class ClaudeClient {
156
202
  },
157
203
  ],
158
204
  });
159
- // ── PreToolUse — block browser tools if no active verification ──
160
- if (!settings.hooks.PreToolUse) {
161
- settings.hooks.PreToolUse = [];
205
+ if (verificationEnabled) {
206
+ // ── PreToolUse (enforcement) — block devtools without active verification ──
207
+ if (!settings.hooks.PreToolUse) {
208
+ settings.hooks.PreToolUse = [];
209
+ }
210
+ settings.hooks.PreToolUse.push({
211
+ matcher: "mcp__browser-devtools__.*|mcp__node-devtools__.*",
212
+ hooks: [
213
+ {
214
+ type: "command",
215
+ command: `ironbee hook require-verification --client claude`,
216
+ },
217
+ ],
218
+ });
219
+ // ── PreToolUse (enforcement) — block edits without verdict ──
220
+ settings.hooks.PreToolUse.push({
221
+ matcher: "Write|Edit",
222
+ hooks: [
223
+ {
224
+ type: "command",
225
+ command: `ironbee hook require-verdict --client claude`,
226
+ },
227
+ ],
228
+ });
229
+ // ── PostToolUse (enforcement) — file_change events + verdict clear ──
230
+ if (!settings.hooks.PostToolUse) {
231
+ settings.hooks.PostToolUse = [];
232
+ }
233
+ settings.hooks.PostToolUse.push({
234
+ matcher: "Write|Edit",
235
+ hooks: [
236
+ {
237
+ type: "command",
238
+ command: `ironbee hook clear-verdict --client claude`,
239
+ },
240
+ ],
241
+ });
162
242
  }
163
- settings.hooks.PreToolUse.push({
164
- matcher: "mcp__browser-devtools__.*",
165
- hooks: [
166
- {
167
- type: "command",
168
- command: `ironbee hook require-verification --client claude`,
169
- },
170
- ],
171
- });
172
- // ── PreToolUse — block edits if browser tools used without verdict ──
173
- settings.hooks.PreToolUse.push({
174
- matcher: "Write|Edit|MultiEdit",
175
- hooks: [
176
- {
177
- type: "command",
178
- command: `ironbee hook require-verdict --client claude`,
179
- },
180
- ],
181
- });
182
- // ── PostToolUse — record file edits + track browser tool calls ──
243
+ // ── PostToolUse (always) — track every tool call ──
244
+ // Mode-specific variant: full track-action when enabled (verify-gate
245
+ // dependencies for devtools), lean track-action-monitor when disabled
246
+ // (queue submit + activity fallback only).
183
247
  if (!settings.hooks.PostToolUse) {
184
248
  settings.hooks.PostToolUse = [];
185
249
  }
186
- settings.hooks.PostToolUse.push({
187
- matcher: "Write|Edit|MultiEdit",
188
- hooks: [
189
- {
190
- type: "command",
191
- command: `ironbee hook clear-verdict --client claude`,
192
- },
193
- ],
194
- });
195
- // track-action fires for every tool so the send_event queue captures
196
- // all tool_call events, not just browser-devtools. The hook itself
197
- // decides which tools feed verify-gate's actions.jsonl.
250
+ const trackActionCommand = verificationEnabled
251
+ ? `ironbee hook track-action --client claude`
252
+ : `ironbee hook track-action-monitor --client claude`;
198
253
  settings.hooks.PostToolUse.push({
199
254
  matcher: "",
200
255
  hooks: [
201
256
  {
202
257
  type: "command",
203
- command: `ironbee hook track-action --client claude`,
258
+ command: trackActionCommand,
204
259
  },
205
260
  ],
206
261
  });
207
- // PostToolUseFailure — same adapter. Claude passes an `error` field
208
- // on stdin; track-action detects it and records a failure event.
262
+ // PostToolUseFailure — same adapter on the failure path.
209
263
  if (!settings.hooks.PostToolUseFailure) {
210
264
  settings.hooks.PostToolUseFailure = [];
211
265
  }
@@ -214,24 +268,29 @@ class ClaudeClient {
214
268
  hooks: [
215
269
  {
216
270
  type: "command",
217
- command: `ironbee hook track-action --client claude`,
271
+ command: trackActionCommand,
218
272
  },
219
273
  ],
220
274
  });
221
- // ── Stop — verify-gate, blocks completion until verified ──
275
+ // ── Stop (always) mode-specific variant ──
276
+ // Enabled: verify-gate (multi-cycle gate + endActivity + queue flush).
277
+ // Disabled: activity-end (endActivity + queue flush only).
222
278
  if (!settings.hooks.Stop) {
223
279
  settings.hooks.Stop = [];
224
280
  }
281
+ const stopCommand = verificationEnabled
282
+ ? `ironbee hook verify-gate --client claude`
283
+ : `ironbee hook activity-end --client claude`;
225
284
  settings.hooks.Stop.push({
226
285
  matcher: "",
227
286
  hooks: [
228
287
  {
229
288
  type: "command",
230
- command: `ironbee hook verify-gate --client claude`,
289
+ command: stopCommand,
231
290
  },
232
291
  ],
233
292
  });
234
- // ── SessionEnd — record session end ──
293
+ // ── SessionEnd (always) — record session end + sync queue flush ──
235
294
  if (!settings.hooks.SessionEnd) {
236
295
  settings.hooks.SessionEnd = [];
237
296
  }
@@ -256,7 +315,13 @@ class ClaudeClient {
256
315
  return;
257
316
  }
258
317
  for (const eventType of Object.keys(settings.hooks)) {
259
- settings.hooks[eventType] = settings.hooks[eventType].filter((entry) => !this.isIronBeeHook(entry));
318
+ const filtered = settings.hooks[eventType].filter((entry) => !this.isIronBeeHook(entry));
319
+ if (filtered.length === 0) {
320
+ delete settings.hooks[eventType];
321
+ }
322
+ else {
323
+ settings.hooks[eventType] = filtered;
324
+ }
260
325
  }
261
326
  (0, fs_1.writeFileSync)(settingsPath, JSON.stringify(settings, null, 2));
262
327
  }
@@ -270,8 +335,16 @@ class ClaudeClient {
270
335
  }
271
336
  try {
272
337
  const config = JSON.parse((0, fs_1.readFileSync)(mcpPath, "utf-8"));
338
+ let changed = false;
273
339
  if (config.mcpServers && config.mcpServers[MCP_SERVER_NAME]) {
274
340
  delete config.mcpServers[MCP_SERVER_NAME];
341
+ changed = true;
342
+ }
343
+ if (config.mcpServers && config.mcpServers[NODE_MCP_SERVER_NAME]) {
344
+ delete config.mcpServers[NODE_MCP_SERVER_NAME];
345
+ changed = true;
346
+ }
347
+ if (changed) {
275
348
  (0, fs_1.writeFileSync)(mcpPath, JSON.stringify(config, null, 2));
276
349
  }
277
350
  }
@@ -286,9 +359,15 @@ class ClaudeClient {
286
359
  try {
287
360
  const settings = JSON.parse((0, fs_1.readFileSync)(settingsPath, "utf-8"));
288
361
  const mcpPermission = `mcp__${MCP_SERVER_NAME}__*`;
289
- const bashPermission = "Bash(ironbee *)";
362
+ const nodeMcpPermission = `mcp__${NODE_MCP_SERVER_NAME}__*`;
363
+ const fullBashPermission = "Bash(ironbee *)";
364
+ const narrowBashPermission = "Bash(ironbee analyze)";
290
365
  if (settings.permissions?.allow) {
291
- settings.permissions.allow = settings.permissions.allow.filter((p) => p !== mcpPermission && p !== bashPermission);
366
+ // Strip every form ironbee may have written (full + narrow Bash variants).
367
+ settings.permissions.allow = settings.permissions.allow.filter((p) => p !== mcpPermission
368
+ && p !== nodeMcpPermission
369
+ && p !== fullBashPermission
370
+ && p !== narrowBashPermission);
292
371
  (0, fs_1.writeFileSync)(settingsPath, JSON.stringify(settings, null, 2));
293
372
  }
294
373
  }
@@ -317,9 +396,10 @@ class ClaudeClient {
317
396
  }
318
397
  const mcpEntry = (0, config_1.getMcpServerEntry)(projectDir);
319
398
  config.mcpServers[MCP_SERVER_NAME] = mcpEntry;
399
+ config.mcpServers[NODE_MCP_SERVER_NAME] = (0, config_1.getNodeDevToolsMcpEntry)(projectDir);
320
400
  (0, fs_1.writeFileSync)(mcpPath, JSON.stringify(config, null, 2));
321
401
  }
322
- writePermissions(settingsPath) {
402
+ writePermissions(settingsPath, verificationEnabled) {
323
403
  let settings = {};
324
404
  if ((0, fs_1.existsSync)(settingsPath)) {
325
405
  try {
@@ -337,36 +417,47 @@ class ClaudeClient {
337
417
  settings.permissions.allow = [];
338
418
  }
339
419
  const mcpPermission = `mcp__${MCP_SERVER_NAME}__*`;
340
- if (!settings.permissions.allow.includes(mcpPermission)) {
341
- settings.permissions.allow.push(mcpPermission);
420
+ const nodeMcpPermission = `mcp__${NODE_MCP_SERVER_NAME}__*`;
421
+ const fullBashPermission = "Bash(ironbee *)";
422
+ const narrowBashPermission = "Bash(ironbee analyze)";
423
+ // MCP permissions are verification-only (mirrors MCP server install).
424
+ // Bash(ironbee *) is also enforcement-only — gives the agent a free
425
+ // pass to invoke any ironbee CLI command (submit-verdict,
426
+ // verification-start/end). In monitoring-only mode we narrow it to
427
+ // just `Bash(ironbee analyze)` so the /ironbee-analyze slash command
428
+ // still works without prompting, but agent-initiated submit-verdict
429
+ // calls (the source of dangling-state bugs in disabled mode) trigger
430
+ // a permission prompt the user can review. Defensive layer; the
431
+ // hook commands themselves also no-op in disabled mode.
432
+ if (verificationEnabled) {
433
+ if (!settings.permissions.allow.includes(mcpPermission)) {
434
+ settings.permissions.allow.push(mcpPermission);
435
+ }
436
+ if (!settings.permissions.allow.includes(nodeMcpPermission)) {
437
+ settings.permissions.allow.push(nodeMcpPermission);
438
+ }
439
+ // strip the narrow form (toggled-off→on transition)
440
+ settings.permissions.allow = settings.permissions.allow.filter((p) => p !== narrowBashPermission);
441
+ if (!settings.permissions.allow.includes(fullBashPermission)) {
442
+ settings.permissions.allow.push(fullBashPermission);
443
+ }
342
444
  }
343
- const bashPermission = "Bash(ironbee *)";
344
- if (!settings.permissions.allow.includes(bashPermission)) {
345
- settings.permissions.allow.push(bashPermission);
445
+ else {
446
+ // Disabled mode: strip MCP perms + the wide Bash(ironbee *) form,
447
+ // keep / add only the narrow Bash(ironbee analyze).
448
+ settings.permissions.allow = settings.permissions.allow.filter((p) => p !== mcpPermission
449
+ && p !== nodeMcpPermission
450
+ && p !== fullBashPermission);
451
+ if (!settings.permissions.allow.includes(narrowBashPermission)) {
452
+ settings.permissions.allow.push(narrowBashPermission);
453
+ }
346
454
  }
347
455
  (0, fs_1.writeFileSync)(settingsPath, JSON.stringify(settings, null, 2));
348
456
  }
349
457
  }
350
458
  exports.ClaudeClient = ClaudeClient;
351
- function updateGitignore(projectDir) {
352
- const gitignorePath = (0, path_1.join)(projectDir, ".gitignore");
353
- const lines = [
354
- "",
355
- "# IronBee runtime artifacts",
356
- ".ironbee/sessions/",
357
- ];
358
- if (!(0, fs_1.existsSync)(gitignorePath)) {
359
- (0, fs_1.writeFileSync)(gitignorePath, lines.join("\n") + "\n");
360
- return;
361
- }
362
- const existing = (0, fs_1.readFileSync)(gitignorePath, "utf-8");
363
- if (existing.includes(".ironbee/sessions/")) {
364
- return;
365
- }
366
- (0, fs_1.writeFileSync)(gitignorePath, existing + lines.join("\n") + "\n");
367
- }
368
459
  function prepareIronBeeDir(projectDir) {
369
460
  (0, fs_1.mkdirSync)((0, path_1.join)(projectDir, ".ironbee"), { recursive: true });
370
- updateGitignore(projectDir);
461
+ (0, gitignore_1.ensureIronBeeGitignored)(projectDir);
371
462
  }
372
463
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/clients/claude/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/clients/claude/index.ts"],"names":[],"mappings":"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"}
@@ -1,31 +1,34 @@
1
- You MUST verify all code changes in the browser before completing any task. After every verification attempt, you MUST submit a verdict (pass or fail) via `ironbee hook submit-verdict` before doing anything else. If verification fails, submit the fail verdict first, then fix.
2
-
3
- Verification is NOT just visual — you must functionally test the changes by interacting with the application through the browser-devtools MCP server. Click buttons, fill forms, trigger the flows you changed, and confirm things actually work end-to-end.
4
-
5
- You are responsible for the full application lifecycle during verification:
6
- - **Build** the application if needed (e.g. `npm run build`, `npm run dev`, `docker compose build`)
7
- - **Start** the dev server before navigating to any page (e.g. `npm run dev`, `docker compose up -d`)
8
- - **Stop** the dev server after verification is complete (e.g. `Ctrl+C`, `docker compose down`)
9
- If the application is already running, skip the start step. If the build fails, fix it before proceeding.
10
- **Do NOT guess ports.** After starting, check the actual port (e.g. `docker compose ps`, process output, config files) before navigating.
11
-
12
- Required verification steps:
13
- 1. Build and start the application if not already running
14
- 2. **Start verification**: `echo '{"session_id":"<your-session-id>"}' | ironbee hook verification-start` REQUIRED before browser tools
15
- 3. Navigate to affected page(s) with `mcp__browser-devtools__bdt_navigation_go-to`
16
- 4. **Functionally test** the changes click, type, submit, navigate, interact with the UI to exercise the code paths you modified
17
- 5. Take a screenshot with `mcp__browser-devtools__bdt_content_take-screenshot` to capture the final state
18
- 6. Check accessibility with `mcp__browser-devtools__bdt_a11y_take-aria-snapshot`
19
- 7. Check console for errors with `mcp__browser-devtools__bdt_o11y_get-console-messages`
20
- 8. Stop the dev server when done
21
- 9. **IMMEDIATELY submit your verdict** — do NOT edit any code before submitting: `echo '<verdict-json>' | ironbee hook submit-verdict`
22
- - Passsubmit pass verdict
23
- - Fail submit fail verdict with issues, THEN fix the code and re-verify
24
- - Submitting a verdict automatically ends the verification cycle
25
-
26
- Steps 2, 4, 5, and 6 are enforced by the Stop hook. Step 3 is expected do not just take a screenshot and call it done.
27
-
28
- The SessionStart hook outputs your session ID at the beginning of your session. After EVERY verification attempt, you MUST submit a verdict before doing anything else even if it failed. Do not skip to fixing code. The submit-verdict command validates and records the verdict.
1
+ You MUST verify all code changes through real tools before completing any task. After every verification attempt, you MUST submit a verdict (pass or fail) via `ironbee hook submit-verdict` before doing anything else. If verification fails, submit the fail verdict first, then fix.
2
+
3
+ Verification runs in **cycles** decided by file pattern match you don't choose, the gate detects:
4
+
5
+ - **Browser cycle** frontend file changes (default: most code extensions). Tools come from the **browser-devtools** MCP server (prefix `bdt_`). Verification means navigating to the affected page and FUNCTIONALLY exercising the change in the browser — clicking, typing, submitting — not just looking at it.
6
+
7
+ A backend-runtime cycle (e.g. `node` after `ironbee enable-backend node`) may also be active for this project — **see the runtime section near the bottom of this file** for whether it applies and which tools to call.
8
+
9
+ ## Application lifecycle
10
+
11
+ You manage the running application during verification:
12
+ - **Build** if needed (e.g. `npm run build`, `docker compose build`).
13
+ - **Start** before navigating/connecting (e.g. `npm run dev`, `docker compose up -d`).
14
+ - **Stop** the dev server after verification is complete.
15
+
16
+ Skip start if already running. Fix build errors before proceeding. **Don't guess ports** check actual via `docker compose ps`, process output, or config.
17
+
18
+ ## Required steps
19
+
20
+ 1. Build and start the application if not already running.
21
+ 2. **Start verification**: `echo '{"session_id":"<your-session-id>"}' | ironbee hook verification-start` — required before any devtools tool call.
22
+ 3. Run the **Browser cycle** flow: navigate (`bdt_navigation_go-to`) functionally test screenshot (`bdt_content_take-screenshot`) → accessibility (`bdt_a11y_take-aria-snapshot`) → console (`bdt_o11y_get-console-messages`). All four are MANDATORY.
23
+ - If `recording.enable` is on, the gate forces `bdt_content_start-recording` BEFORE the steps above and rejects the verdict if you don't call `bdt_content_stop-recording` AFTER them. Always pair start/stop around steps above.
24
+ - **See the runtime section near the bottom of this file** — if a backend-runtime cycle is active for this project, run its flow within the same verification cycle as well.
25
+ 4. Stop the dev server when done.
26
+ 5. **If recording was started, stop it NOW** `bdt_content_stop-recording` BEFORE submit-verdict. submit-verdict rejects with "recording is still active" if you skip this.
27
+ 6. **IMMEDIATELY submit your verdict** — do NOT edit any code before submitting: `echo '<verdict-json>' | ironbee hook submit-verdict`.
28
+ - Pass verdict carries fields for every active cycle. Fail verdict adds `issues`. Pass after fail adds `fixes`.
29
+ - Status `pass` is overridden to fail by the gate when evidence doesn't back it.
30
+
31
+ The stop hook checks tool usage AND verdict validity for every active cycle. After EVERY verification attempt, you MUST submit a verdict before doing anything else — even if it failed. Do not skip to fixing code.
29
32
 
30
33
  If verification fails: submit fail verdict → fix the code → re-verify → submit again.
31
34
 
@@ -33,8 +36,13 @@ Every code edit (Write/Edit) automatically clears your verdict, requiring re-ver
33
36
 
34
37
  ## BANNED
35
38
 
36
- - Writing verdict.json directly — always use `ironbee hook submit-verdict`
37
- - Skipping the fail verdict — always submit fail before fixing, so issues are tracked
38
- - Submitting a verdict without actually performing browser verification
39
- - Submitting a verdict based on assumptions, code reading, or prior knowledge
40
- - Copying example verdicts from hook messages without doing real verification first
39
+ - Writing `verdict.json` directly — always use `ironbee hook submit-verdict`.
40
+ - Skipping the fail verdict — always submit fail before fixing, so issues are tracked.
41
+ - Submitting a verdict without actually performing verification through real tools.
42
+ - Submitting a verdict based on assumptions, code reading, or prior knowledge.
43
+ - Copying example verdicts from hook messages without doing real verification first.
44
+ - Calling `bdt_*` tools without first opening a verification cycle (`ironbee hook verification-start`).
45
+ - **Submitting a verdict while a browser recording is still active** — always call `bdt_content_stop-recording` BEFORE `ironbee hook submit-verdict`. The recording start/stop pair brackets the verification flow.
46
+
47
+ <!--IRONBEE:RUNTIME:node-->
48
+ <!--/IRONBEE:RUNTIME:node-->