@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
@@ -5,141 +5,298 @@
5
5
  * 1. Global: ~/.ironbee/config.json
6
6
  * 2. Project: <projectDir>/.ironbee/config.json
7
7
  *
8
- * Project config overrides global config (shallow merge per key).
8
+ * Project config overrides global config (deep merge for nested sections,
9
+ * shallow for primitives — see deepMerge).
10
+ *
11
+ * The pre-split layout (top-level `verifyPatterns` / `additionalVerifyPatterns`)
12
+ * is no longer supported. Configs carrying those fields throw at load time —
13
+ * patterns must move under `browser.*` (or the appropriate runtime under
14
+ * `backend.<runtime>.*`).
9
15
  */
10
- export interface IronBeeConfig {
16
+ /** Backend MCP servers in the runtime registry. Code change to extend. */
17
+ export declare const BACKEND_SERVERS: readonly string[];
18
+ /** Map runtime key (`node`) → backend server name (`node-devtools`). */
19
+ export declare const RUNTIME_TO_SERVER: Record<string, string>;
20
+ /** A single evidence path under a `RequiredToolsConfig`. */
21
+ export interface EvidencePath {
22
+ /** Stable identifier — used in `verification_requested.modes` and block messages. */
23
+ name: string;
11
24
  /**
12
- * Glob patterns for files that require browser verification after editing.
13
- * Replaces the default list entirely when set.
14
- * Examples: "*.ts", "*.css", "src/components/**\/*.tsx"
25
+ * All entries must be satisfied for this path to count.
26
+ * String exact tool must be present. `{ anyOf }` → at least one of the listed tools.
15
27
  */
28
+ allOf: (string | {
29
+ anyOf: string[];
30
+ })[];
31
+ }
32
+ /**
33
+ * Per-cycle required-tools spec. The gate validates by:
34
+ * 1. All `alwaysRequired` tools are present, AND
35
+ * 2. At least one `evidencePaths` entry is fully satisfied (or evidencePaths is empty).
36
+ */
37
+ export interface RequiredToolsConfig {
38
+ alwaysRequired: string[];
39
+ evidencePaths: EvidencePath[];
40
+ }
41
+ /** Browser-cycle config block. */
42
+ export interface BrowserCycleConfig {
16
43
  verifyPatterns?: string[];
17
- /**
18
- * Additional glob patterns appended to verifyPatterns (or the defaults).
19
- * Use this to extend the default list without replacing it.
20
- */
21
44
  additionalVerifyPatterns?: string[];
45
+ alwaysRequired?: string[];
46
+ evidencePaths?: EvidencePath[];
47
+ }
48
+ /** Per-runtime backend cycle config block (e.g. `backend.node`). */
49
+ export interface BackendRuntimeConfig {
50
+ verifyPatterns?: string[];
51
+ additionalVerifyPatterns?: string[];
52
+ alwaysRequired?: string[];
53
+ evidencePaths?: EvidencePath[];
54
+ }
55
+ /** Top-level `backend` config — runtime-keyed (today: `node`). */
56
+ export interface BackendConfig {
57
+ node?: BackendRuntimeConfig;
58
+ [runtime: string]: BackendRuntimeConfig | undefined;
59
+ }
60
+ export interface IronBeeConfig {
22
61
  /**
23
- * Glob patterns for files to exclude from verification.
24
- * Checked before verifyPatterns if a file matches here, it is always skipped.
25
- * Examples: "*.test.ts", "docs/**", "*.config.js"
62
+ * Glob patterns for files to exclude from verification. Applies to every
63
+ * cycle (browser and all backend runtimes). Checked first — matches here
64
+ * are skipped regardless of which cycle's patterns would otherwise match.
26
65
  */
27
66
  ignoredVerifyPatterns?: string[];
28
67
  /** Maximum retry attempts before allowing completion despite failures. */
29
68
  maxRetries?: number;
69
+ /** Browser-cycle config (patterns + required tools). */
70
+ browser?: BrowserCycleConfig;
71
+ /** Backend cycles, keyed by runtime (`node`, future `python`, `java`, …). */
72
+ backend?: BackendConfig;
30
73
  /**
31
74
  * IronBee Collector configuration for remote event ingestion. When the
32
75
  * section is present and `enable` is not explicitly `false`, events are
33
76
  * sent to the collector in addition to local storage.
34
77
  */
35
78
  collector?: {
79
+ enable?: boolean;
80
+ url?: string;
81
+ apiKey?: string;
82
+ batchSize?: number;
36
83
  /**
37
- * Master switch. Defaults to `true` whenever this section is present,
38
- * mirroring `jobQueue.enable`. Set explicitly to `false` to suspend
39
- * the collector without removing `url` / `apiKey` / `batchSize` —
40
- * useful for temporarily working offline while keeping the rest of
41
- * the collector config around.
84
+ * Per-request HTTP timeout in milliseconds. Single-event interactive
85
+ * sends keep the legacy 3000ms cap (writes from `appendAction` must
86
+ * not block hooks). Batched sends from analytics emit
87
+ * (`sendEventsBatchToCollector`) honor this value default 10000ms,
88
+ * since N-event payloads can be hundreds of KB on slow links.
89
+ * Clamped to [1000, 60000] at use site.
42
90
  */
91
+ timeoutMs?: number;
92
+ };
93
+ /**
94
+ * Recording enforcement. Browser-only — backend cycles never trigger
95
+ * recording. Presence of the section opts in; `enable: false` opts out.
96
+ */
97
+ recording?: {
43
98
  enable?: boolean;
99
+ };
100
+ /** Job queue tuning. Presence opts in; `enable: false` opts out. */
101
+ jobQueue?: {
102
+ enable?: boolean;
103
+ autoFlushSizeBytes?: number;
104
+ autoFlushIntervalSeconds?: number;
105
+ };
106
+ /**
107
+ * Session analytics collection. Presence-as-opt-in: the `analytics`
108
+ * section being in config.json turns analytics on; `enable: false`
109
+ * explicitly opts out. Same semantics as `jobQueue` / `recording` /
110
+ * `collector`. The CLI projects the host transcript JSONL into a
111
+ * `SessionAnalytics` record (no content) and ships it via the existing
112
+ * collector pipeline as a `session_analytics` event.
113
+ */
114
+ analytics?: {
115
+ enable?: boolean;
116
+ /** When `true`, project + emit at every Stop hook. When `false`, only SessionEnd. Default `true`. */
117
+ emitOnStop?: boolean;
118
+ /** Throttle: skip Stop-hook projection if last successful emit was within this many seconds. Default 0 (disabled). */
119
+ emitOnStopMinIntervalSeconds?: number;
44
120
  /**
45
- * Collector base URL (e.g. "https://service.ironbee.dev"). Required
46
- * for `enable !== false`; the collector is treated as disabled when
47
- * `url` is missing or empty.
121
+ * Per-event-type opt-in for the granular turn / step wire records
122
+ * (`session_turn_analytics`, `session_turn_step_analytics`).
123
+ * **Default `false`** opt-in by setting `true`.
124
+ *
125
+ * Inverse of the `analytics` master switch (which is presence-as-opt-in)
126
+ * because turn/step events are high-volume secondary signals that
127
+ * not every collector consumer wants. The base `session_analytics`
128
+ * record always ships when analytics is enabled.
48
129
  */
49
- url?: string;
50
- /** API key for authentication (X-API-Key header). Optional if auth is disabled on collector. */
51
- apiKey?: string;
130
+ emitTurnEvents?: boolean;
131
+ emitStepEvents?: boolean;
52
132
  /**
53
- * Max events per POST in the queue's `send_event` handler. Jobs
54
- * accumulated in a snapshot are chunked into batches of this size so
55
- * the collector doesn't reject oversize bodies. Default 100.
56
- * Set to a higher value if your collector tolerates big bodies.
133
+ * When true (default), emit one `api_request` wire event per
134
+ * assistant message line in the transcript (success + failure).
135
+ * **Default `true` (opt-out)** inverse of turn/step gates; per-
136
+ * request audit is the primary value of the analytics pipeline for
137
+ * backend cost accounting. Set explicitly to `false` to suppress.
57
138
  */
58
- batchSize?: number;
139
+ emitApiRequestEvents?: boolean;
59
140
  };
60
141
  /**
61
- * Recording enforcement configuration. When enabled, each verification
62
- * cycle requires a browser recording (start-recording before browser
63
- * tools, stop-recording before verdict).
64
- *
65
- * The presence of this section IS the opt-in signal — `"recording": {}`
66
- * (or any sub-key) turns enforcement on. Set `enable: false` explicitly
67
- * to disable while keeping the section around. Section absent → off.
68
- * Symmetric with `jobQueue` and `collector`.
142
+ * Verification enforcement. **Inverse semantics from `recording`/`jobQueue`/`collector`**:
143
+ * verification is the core feature, opt-out by `enable: false`. Section absent
144
+ * or `enable !== false` → enabled. When disabled, ironbee runs in monitoring-only
145
+ * mode — no enforcement hooks, no skill/rule, no MCP servers; only session
146
+ * lifecycle and tool_call events still flow to the collector.
69
147
  */
70
- recording?: {
148
+ verification?: {
71
149
  enable?: boolean;
72
150
  };
73
151
  /**
74
- * Job queue tuning. The presence of this section IS the opt-in signal —
75
- * adding `"jobQueue": {}` (or any sub-key) enables the queue. To opt out
76
- * after the section exists, set `enable: false` explicitly.
77
- *
78
- * `enable`: master switch. Defaults to `true` when this section is
79
- * present, `false` when absent. Set explicitly to `false` to disable
80
- * without removing the rest of the config (e.g. keep your custom
81
- * `autoFlushSizeBytes` around for later).
152
+ * Historical-session import tuning. Read by `ironbee import`.
82
153
  *
83
- * `autoFlushSizeBytes`: when the live `jobs.jsonl` size meets or exceeds
84
- * this threshold after a submit, a detached worker is spawned in the
85
- * background to snapshot and process it providing mid-session flush
86
- * without waiting for Stop / SessionEnd. Set to `0` (or a negative value)
87
- * to disable size-based auto-flush. Default 32768 (32 KB).
154
+ * `concurrency` is the default number of sessions processed in parallel.
155
+ * Resolution order: `--concurrency` flag > `import.concurrency` >
156
+ * built-in default (4). Lower = gentler on the collector; higher = faster
157
+ * for large backfills.
88
158
  */
89
- jobQueue?: {
90
- enable?: boolean;
91
- autoFlushSizeBytes?: number;
159
+ import?: {
160
+ concurrency?: number;
92
161
  };
93
- /** Allow additional config fields. */
162
+ /** Allow additional config fields (e.g. `browserDevTools` / `nodeDevTools`). */
94
163
  [key: string]: unknown;
95
164
  }
165
+ /** Browser default verify patterns — preserves the pre-split list as-is. */
166
+ export declare const DEFAULT_BROWSER_VERIFY_PATTERNS: string[];
167
+ /** Browser-cycle required tools — strict all-of, no alternative paths. */
168
+ export declare const DEFAULT_BROWSER_ALWAYS_REQUIRED: string[];
169
+ /** Node-cycle required tools — connect always; then probe path or log path. */
170
+ export declare const DEFAULT_BACKEND_NODE_ALWAYS_REQUIRED: string[];
171
+ export declare const DEFAULT_BACKEND_NODE_EVIDENCE_PATHS: EvidencePath[];
96
172
  export declare function loadConfig(projectDir?: string): IronBeeConfig;
97
173
  /**
98
- * Determines whether a file requires browser verification.
174
+ * Returns the names of cycles whose pattern set matches `filePath`.
175
+ * Used by verify-gate to determine which cycles are active for a Stop hook.
99
176
  *
100
- * Check order:
101
- * 1. ignoredVerifyPatterns if matched, skip (return false)
102
- * 2. verifyPatterns (+ additionalVerifyPatterns) → if matched, verify (return true)
103
- * 3. No match skip (return false)
177
+ * Order: browser first, then each registered backend runtime. `ignoredVerifyPatterns`
178
+ * applies globally a file matched there activates no cycles.
179
+ */
180
+ export declare function getActiveCycles(filePath: string, config: IronBeeConfig): string[];
181
+ /**
182
+ * Returns true if a file is under verification by *any* cycle. Used by
183
+ * `clear-verdict` and `require-verdict` hooks where the question is just
184
+ * "should this edit be tracked / gated?", regardless of which cycle.
104
185
  */
105
186
  export declare function requiresVerification(filePath: string, config: IronBeeConfig): boolean;
187
+ /**
188
+ * Per-cycle resolved required-tools spec. Falls back to defaults at this layer
189
+ * so consumers always get a complete `{ alwaysRequired, evidencePaths }` shape.
190
+ *
191
+ * Validity rule: at least one of `alwaysRequired` or `evidencePaths` must be
192
+ * non-empty. Both empty → config error (caught here, surfaced to caller).
193
+ */
194
+ export declare function getRequiredToolsConfig(config: IronBeeConfig, cycle: string): RequiredToolsConfig;
106
195
  export interface BrowserDevToolsMCPConfig {
107
196
  [key: string]: unknown;
108
197
  }
198
+ /** Returns the MCP server entry for `browser-devtools` (PLATFORM=browser, bdt_). */
199
+ export declare function getMcpServerEntry(projectDir?: string): BrowserDevToolsMCPConfig;
200
+ /** Returns the MCP server entry for `node-devtools` (PLATFORM=node, ndt_). */
201
+ export declare function getNodeDevToolsMcpEntry(projectDir?: string): BrowserDevToolsMCPConfig;
202
+ export declare function getMaxRetries(config: IronBeeConfig): number;
109
203
  /**
110
- * Returns the MCP server config for browser-devtools.
111
- *
112
- * Config is read from `browserDevTools` key in IronBee config:
113
- * - `browserDevTools.mcp` full MCP config (used as-is if provided)
114
- * - `browserDevTools.env` env vars for the MCP server (used only when mcp is not provided)
204
+ * Returns true when the IronBee Collector is configured + active for this
205
+ * config — i.e. the collector section is present, `enable !== false`, the
206
+ * `url` is non-empty, and the `IRONBEE_COLLECTOR=false` env override isn't
207
+ * set. Pure check over an already-loaded `IronBeeConfig` so callers that
208
+ * have a config in hand don't pay an extra `loadConfig` round-trip.
115
209
  *
116
- * Priority:
117
- * 1. If `browserDevTools.mcp` exists use as-is (env from mcp config, not from browserDevTools.env)
118
- * 2. Otherwise build default config (npx -y browser-devtools-mcp) with browserDevTools.env merged
119
- *
120
- * IronBee's own env vars (TOOL_NAME_PREFIX, TOOL_INPUT_METADATA_ENABLE) are always applied last,
121
- * overriding any user-provided values.
210
+ * Used by the auto-enable behavior in `isJobQueueEnabled` /
211
+ * `isRecordingEnabled` / `isAnalyticsEnabled`: when the operator has
212
+ * configured a collector, we treat all three feature switches as
213
+ * implicitly opted in. Rationale: setting up a collector is a strong
214
+ * signal that the operator wants events to flow there, and these three
215
+ * sections are exactly what makes events flow (queue dispatch, recording
216
+ * enforcement, analytics derivation). Explicit `enable: false` on any of
217
+ * them still wins — the auto-enable only fires for "section absent".
122
218
  */
123
- export declare function getMcpServerEntry(projectDir?: string): BrowserDevToolsMCPConfig;
124
- export declare function getMaxRetries(config: IronBeeConfig): number;
219
+ export declare function isCollectorConfigured(config: IronBeeConfig): boolean;
125
220
  /**
126
221
  * Returns true when the job queue layer is enabled for this project.
127
222
  *
128
- * Rule:
129
- * - No `jobQueue` section in configdisabled (default-off).
130
- * - `jobQueue` section present enabled, unless `enable: false` is set
131
- * explicitly. Adding any sub-key (e.g. `autoFlushSizeBytes`) implicitly
132
- * opts in.
133
- *
134
- * Used as both a producer-side gate (track-action skips wire construction
135
- * when off) and a defense-in-depth guard inside `submit()` itself.
223
+ * Resolution:
224
+ * 1. Section explicitly disabled (`enable: false`)`false`.
225
+ * 2. Section present (any other shape) `true` (presence-as-opt-in).
226
+ * 3. Collector configured + valid `true` (auto-enable: a collector is
227
+ * pointless without a queue feeding it tool_call events).
228
+ * 4. Otherwise → `false`.
136
229
  */
137
230
  export declare function isJobQueueEnabled(projectDir?: string): boolean;
138
231
  /**
139
232
  * Returns true when recording enforcement is enabled for this project.
140
- * Same presence-as-opt-in semantics as `isJobQueueEnabled`: the `recording`
141
- * section being present in config.json turns enforcement on; set
142
- * `enable: false` explicitly to suspend without removing the section.
233
+ * Same resolution as `isJobQueueEnabled` (presence-as-opt-in + collector
234
+ * auto-enable + explicit-disable wins).
143
235
  */
144
236
  export declare function isRecordingEnabled(projectDir?: string): boolean;
237
+ /**
238
+ * Returns true when verification enforcement is enabled for this config.
239
+ *
240
+ * **Inverse semantics from `isJobQueueEnabled` / `isRecordingEnabled`**:
241
+ * verification is the core feature, opt-out by `enable: false`. Section absent,
242
+ * empty section, or `enable: true` all return true. Only `enable: false`
243
+ * returns false.
244
+ */
245
+ export declare function getVerificationEnabled(config: IronBeeConfig): boolean;
246
+ /**
247
+ * Returns true when analytics collection is enabled for this project.
248
+ * Same resolution as `isJobQueueEnabled` / `isRecordingEnabled`:
249
+ * explicit-disable wins, presence opts in, and collector configured +
250
+ * section absent auto-enables.
251
+ */
252
+ export declare function isAnalyticsEnabled(projectDir?: string): boolean;
253
+ /** Whether the Stop hook should project + emit analytics. Default `true` when analytics is enabled. */
254
+ export declare function isAnalyticsEmitOnStopEnabled(projectDir?: string): boolean;
255
+ /**
256
+ * Throttle interval (seconds) for Stop-hook projection. Default 0 (disabled).
257
+ *
258
+ * The CLI used to default to 30s here as a "don't hammer the backend on
259
+ * hot Stop loops" guard. That was a CLI-side judgment about cadence — backends
260
+ * can rate-limit / dedupe / aggregate however they want, and a 30s default
261
+ * silently dropped per-Stop visibility (especially painful for verify-gate
262
+ * retry loops where each Stop carries fresh signal). Default is now 0;
263
+ * operators who DO want CLI-side throttling can set the config explicitly.
264
+ * `throttleState` in `hook-trigger.ts` returns null when interval ≤ 0, so
265
+ * 0 = no-op fast path.
266
+ */
267
+ export declare function getAnalyticsEmitOnStopMinIntervalSeconds(projectDir?: string): number;
268
+ /**
269
+ * Returns true when the per-turn `session_turn_analytics` wire records should
270
+ * be emitted alongside `session_analytics`. **Default `false` (opt-in)** —
271
+ * inverse of the `analytics` master switch's presence-as-opt-in.
272
+ *
273
+ * Rationale: turn-grain records are high-volume secondary signal; backends
274
+ * that only want session aggregates shouldn't pay for them by default. The
275
+ * base `session_analytics` record always ships when analytics is enabled.
276
+ */
277
+ export declare function isAnalyticsTurnEventsEnabled(projectDir?: string): boolean;
278
+ /**
279
+ * Returns true when the per-step `session_turn_step_analytics` wire records
280
+ * should be emitted. **Default `false` (opt-in)** — same rationale as
281
+ * {@link isAnalyticsTurnEventsEnabled}, with one extra dimension: step-grain
282
+ * records are an order of magnitude higher volume than turn-grain.
283
+ *
284
+ * Independent of `emitTurnEvents`. Backend can reconstruct turn from steps,
285
+ * so step-only / turn-only / both / neither are all valid combinations.
286
+ */
287
+ export declare function isAnalyticsStepEventsEnabled(projectDir?: string): boolean;
288
+ /**
289
+ * Returns true when the per-API-request `api_request` wire records should be
290
+ * emitted. **Default `true` (opt-out)** — INVERSE of the turn / step event
291
+ * gating, mirroring the `verification.enable` opt-out semantics. Per-request
292
+ * audit (cost attribution, failure tracking, request-id timeline) is the
293
+ * primary value of the analytics pipeline for backend cost accounting, so
294
+ * it ships by default. Operators can opt out via `emitApiRequestEvents: false`
295
+ * if backend doesn't consume them.
296
+ *
297
+ * Independent of `emitTurnEvents` / `emitStepEvents`. The `analytics` master
298
+ * switch (section presence) still gates everything below it — without
299
+ * `analytics` in config, no api_request events ship regardless of this flag.
300
+ */
301
+ export declare function isAnalyticsApiRequestEventsEnabled(projectDir?: string): boolean;
145
302
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAOH,MAAM,WAAW,aAAa;IAC1B;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAE1B;;;OAGG;IACH,wBAAwB,CAAC,EAAE,MAAM,EAAE,CAAC;IAEpC;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;IAEjC,0EAA0E;IAC1E,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;;OAIG;IACH,SAAS,CAAC,EAAE;QACR;;;;;;WAMG;QACH,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB;;;;WAIG;QACH,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,gGAAgG;QAChG,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB;;;;;WAKG;QACH,SAAS,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IAEF;;;;;;;;;OASG;IACH,SAAS,CAAC,EAAE;QACR,MAAM,CAAC,EAAE,OAAO,CAAC;KACpB,CAAC;IAEF;;;;;;;;;;;;;;;OAeG;IACH,QAAQ,CAAC,EAAE;QACP,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,kBAAkB,CAAC,EAAE,MAAM,CAAC;KAC/B,CAAC;IAEF,sCAAsC;IACtC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B;AA6CD,wBAAgB,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,aAAa,CAiB7D;AAyCD;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAarF;AAED,MAAM,WAAW,wBAAwB;IACrC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B;AAcD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,wBAAwB,CAuC/E;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAI3D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAG9D;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAG/D"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}