claude-flow 2.0.0-alpha.88 → 2.0.0-alpha.89

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 (1278) hide show
  1. package/.claude/checkpoints/1754487634.json +1 -0
  2. package/.claude/checkpoints/1754487635.json +1 -0
  3. package/.claude/checkpoints/1754488689.json +1 -0
  4. package/.claude/checkpoints/1754488691.json +1 -0
  5. package/.claude/checkpoints/1754488701.json +1 -0
  6. package/.claude/checkpoints/1754488704.json +1 -0
  7. package/.claude/checkpoints/1754488713.json +1 -0
  8. package/.claude/checkpoints/1754488715.json +1 -0
  9. package/.claude/checkpoints/1754488730.json +1 -0
  10. package/.claude/checkpoints/1754488731.json +1 -0
  11. package/.claude/checkpoints/1754488749.json +1 -0
  12. package/.claude/checkpoints/1754488750.json +1 -0
  13. package/.claude/checkpoints/1754488763.json +1 -0
  14. package/.claude/checkpoints/1754488765.json +1 -0
  15. package/.claude/checkpoints/1754488798.json +1 -0
  16. package/.claude/checkpoints/1754488799.json +1 -0
  17. package/.claude/checkpoints/1754488841.json +1 -0
  18. package/.claude/checkpoints/1754488843.json +1 -0
  19. package/.claude/checkpoints/1754488853.json +1 -0
  20. package/.claude/checkpoints/1754488855.json +1 -0
  21. package/.claude/checkpoints/1754488876.json +1 -0
  22. package/.claude/checkpoints/1754488878.json +1 -0
  23. package/.claude/checkpoints/1754488893.json +1 -0
  24. package/.claude/checkpoints/1754488895.json +1 -0
  25. package/.claude/checkpoints/1754488906.json +1 -0
  26. package/.claude/checkpoints/1754488908.json +1 -0
  27. package/.claude/checkpoints/1754488941.json +1 -0
  28. package/.claude/checkpoints/1754488943.json +1 -0
  29. package/.claude/checkpoints/1754488958.json +1 -0
  30. package/.claude/checkpoints/1754488959.json +1 -0
  31. package/.claude/checkpoints/1754488983.json +1 -0
  32. package/.claude/checkpoints/1754488985.json +1 -0
  33. package/.claude/checkpoints/1754489001.json +1 -0
  34. package/.claude/checkpoints/1754489003.json +1 -0
  35. package/.claude/checkpoints/1754489018.json +1 -0
  36. package/.claude/checkpoints/1754489020.json +1 -0
  37. package/.claude/checkpoints/1754489029.json +1 -0
  38. package/.claude/checkpoints/1754489030.json +1 -0
  39. package/.claude/checkpoints/1754489037.json +1 -0
  40. package/.claude/checkpoints/1754489039.json +1 -0
  41. package/.claude/checkpoints/1754489077.json +1 -0
  42. package/.claude/checkpoints/1754489079.json +1 -0
  43. package/.claude/checkpoints/1754489125.json +1 -0
  44. package/.claude/checkpoints/1754489127.json +1 -0
  45. package/.claude/checkpoints/1754489141.json +1 -0
  46. package/.claude/checkpoints/1754489142.json +1 -0
  47. package/.claude/checkpoints/1754489161.json +1 -0
  48. package/.claude/checkpoints/1754489162.json +1 -0
  49. package/.claude/checkpoints/1754489169.json +1 -0
  50. package/.claude/checkpoints/1754489171.json +1 -0
  51. package/.claude/checkpoints/1754489210.json +1 -0
  52. package/.claude/checkpoints/1754489212.json +1 -0
  53. package/.claude/checkpoints/1754489230.json +1 -0
  54. package/.claude/checkpoints/1754489231.json +1 -0
  55. package/.claude/checkpoints/1754489233.json +1 -0
  56. package/.claude/checkpoints/1754489235.json +1 -0
  57. package/.claude/checkpoints/1754489236.json +1 -0
  58. package/.claude/checkpoints/1754489238.json +1 -0
  59. package/.claude/checkpoints/1754489239.json +1 -0
  60. package/.claude/checkpoints/1754489241.json +1 -0
  61. package/.claude/checkpoints/1754489243.json +1 -0
  62. package/.claude/checkpoints/1754489244.json +1 -0
  63. package/.claude/checkpoints/1754489246.json +1 -0
  64. package/.claude/checkpoints/1754489248.json +1 -0
  65. package/.claude/checkpoints/1754489249.json +1 -0
  66. package/.claude/checkpoints/1754489291.json +1 -0
  67. package/.claude/checkpoints/1754489293.json +1 -0
  68. package/.claude/checkpoints/1754570742.json +1 -0
  69. package/.claude/checkpoints/1754570745.json +1 -0
  70. package/.claude/checkpoints/1754570824.json +1 -0
  71. package/.claude/checkpoints/1754570826.json +1 -0
  72. package/.claude/checkpoints/1754570828.json +1 -0
  73. package/.claude/checkpoints/1754570829.json +1 -0
  74. package/.claude/checkpoints/1754570831.json +1 -0
  75. package/.claude/checkpoints/1754570833.json +1 -0
  76. package/.claude/checkpoints/1754570912.json +1 -0
  77. package/.claude/checkpoints/1754570913.json +1 -0
  78. package/.claude/checkpoints/1754570915.json +1 -0
  79. package/.claude/checkpoints/1754570917.json +1 -0
  80. package/.claude/checkpoints/1754570919.json +1 -0
  81. package/.claude/checkpoints/1754570921.json +1 -0
  82. package/.claude/checkpoints/1754571061.json +1 -0
  83. package/.claude/checkpoints/1754571063.json +1 -0
  84. package/.claude/checkpoints/1754571064.json +1 -0
  85. package/.claude/checkpoints/1754571067.json +1 -0
  86. package/.claude/checkpoints/1754571069.json +1 -0
  87. package/.claude/checkpoints/1754571071.json +1 -0
  88. package/.claude/checkpoints/1754571142.json +1 -0
  89. package/.claude/checkpoints/1754571144.json +1 -0
  90. package/.claude/checkpoints/1754571146.json +1 -0
  91. package/.claude/checkpoints/1754571148.json +1 -0
  92. package/.claude/checkpoints/1754571150.json +1 -0
  93. package/.claude/checkpoints/1754571152.json +1 -0
  94. package/.claude/checkpoints/1754571242.json +1 -0
  95. package/.claude/checkpoints/1754571244.json +1 -0
  96. package/.claude/checkpoints/1754571246.json +1 -0
  97. package/.claude/checkpoints/1754571249.json +1 -0
  98. package/.claude/checkpoints/1754572742.json +1 -0
  99. package/.claude/checkpoints/1754572744.json +1 -0
  100. package/.claude/checkpoints/1754573188.json +1 -0
  101. package/.claude/checkpoints/1754573190.json +1 -0
  102. package/.claude/checkpoints/1754573275.json +1 -0
  103. package/.claude/checkpoints/1754573277.json +1 -0
  104. package/.claude/checkpoints/1754573353.json +1 -0
  105. package/.claude/checkpoints/1754573355.json +1 -0
  106. package/.claude/checkpoints/1754573773.json +1 -0
  107. package/.claude/checkpoints/1754573774.json +1 -0
  108. package/.claude/checkpoints/1754573776.json +1 -0
  109. package/.claude/checkpoints/1754573778.json +1 -0
  110. package/.claude/checkpoints/1754573779.json +1 -0
  111. package/.claude/checkpoints/1754573781.json +1 -0
  112. package/.claude/checkpoints/1754573928.json +1 -0
  113. package/.claude/checkpoints/1754573930.json +1 -0
  114. package/.claude/checkpoints/1754574008.json +1 -0
  115. package/.claude/checkpoints/1754574010.json +1 -0
  116. package/.claude/checkpoints/1754574030.json +1 -0
  117. package/.claude/checkpoints/1754574032.json +1 -0
  118. package/.claude/checkpoints/1754574059.json +1 -0
  119. package/.claude/checkpoints/1754574061.json +1 -0
  120. package/.claude/checkpoints/1754574090.json +1 -0
  121. package/.claude/checkpoints/1754574092.json +1 -0
  122. package/.claude/checkpoints/1754576541.json +1 -0
  123. package/.claude/checkpoints/1754576543.json +1 -0
  124. package/.claude/checkpoints/1754576588.json +1 -0
  125. package/.claude/checkpoints/1754576590.json +1 -0
  126. package/.claude/checkpoints/1754576625.json +1 -0
  127. package/.claude/checkpoints/1754576628.json +1 -0
  128. package/.claude/checkpoints/1754576726.json +1 -0
  129. package/.claude/checkpoints/1754576746.json +1 -0
  130. package/.claude/checkpoints/1754576748.json +1 -0
  131. package/.claude/checkpoints/1754576837.json +1 -0
  132. package/.claude/checkpoints/1754576839.json +1 -0
  133. package/.claude/checkpoints/1754576942.json +1 -0
  134. package/.claude/checkpoints/1754576945.json +1 -0
  135. package/.claude/checkpoints/1754577031.json +1 -0
  136. package/.claude/checkpoints/1754577033.json +1 -0
  137. package/.claude/checkpoints/1754577055.json +1 -0
  138. package/.claude/checkpoints/1754577057.json +1 -0
  139. package/.claude/checkpoints/1754577071.json +1 -0
  140. package/.claude/checkpoints/1754577073.json +1 -0
  141. package/.claude/checkpoints/1754577112.json +1 -0
  142. package/.claude/checkpoints/1754577114.json +1 -0
  143. package/.claude/checkpoints/1754577150.json +1 -0
  144. package/.claude/checkpoints/1754577151.json +1 -0
  145. package/.claude/checkpoints/1754577183.json +1 -0
  146. package/.claude/checkpoints/1754577184.json +1 -0
  147. package/.claude/checkpoints/1754577189.json +1 -0
  148. package/.claude/checkpoints/1754577191.json +1 -0
  149. package/.claude/checkpoints/1754577214.json +1 -0
  150. package/.claude/checkpoints/1754577215.json +1 -0
  151. package/.claude/checkpoints/1754577222.json +1 -0
  152. package/.claude/checkpoints/1754577224.json +1 -0
  153. package/.claude/checkpoints/1754577226.json +1 -0
  154. package/.claude/checkpoints/1754577228.json +1 -0
  155. package/.claude/checkpoints/1754577270.json +1 -0
  156. package/.claude/checkpoints/1754577272.json +1 -0
  157. package/.claude/checkpoints/1754577274.json +1 -0
  158. package/.claude/checkpoints/1754577278.json +1 -0
  159. package/.claude/checkpoints/1754577279.json +1 -0
  160. package/.claude/checkpoints/1754577304.json +1 -0
  161. package/.claude/checkpoints/1754577306.json +1 -0
  162. package/.claude/checkpoints/1754577705.json +1 -0
  163. package/.claude/checkpoints/1754577707.json +1 -0
  164. package/.claude/checkpoints/1754583844.json +1 -0
  165. package/.claude/checkpoints/1754583846.json +1 -0
  166. package/.claude/checkpoints/1754583881.json +1 -0
  167. package/.claude/checkpoints/1754583884.json +1 -0
  168. package/.claude/checkpoints/1754583904.json +1 -0
  169. package/.claude/checkpoints/1754583949.json +1 -0
  170. package/.claude/checkpoints/1754583951.json +1 -0
  171. package/.claude/checkpoints/1754584049.json +1 -0
  172. package/.claude/checkpoints/1754584051.json +1 -0
  173. package/.claude/checkpoints/1754584104.json +1 -0
  174. package/.claude/checkpoints/1754584106.json +1 -0
  175. package/.claude/checkpoints/1754584156.json +1 -0
  176. package/.claude/checkpoints/1754584158.json +1 -0
  177. package/.claude/checkpoints/1754584224.json +1 -0
  178. package/.claude/checkpoints/1754584226.json +1 -0
  179. package/.claude/checkpoints/1754584373.json +1 -0
  180. package/.claude/checkpoints/1754584570.json +1 -0
  181. package/.claude/checkpoints/1754584572.json +1 -0
  182. package/.claude/checkpoints/1754584578.json +1 -0
  183. package/.claude/checkpoints/1754584580.json +1 -0
  184. package/.claude/checkpoints/1754922435.json +1 -0
  185. package/.claude/checkpoints/1754922438.json +1 -0
  186. package/.claude/checkpoints/1754922545.json +1 -0
  187. package/.claude/checkpoints/1754922547.json +1 -0
  188. package/.claude/checkpoints/1754922602.json +1 -0
  189. package/.claude/checkpoints/1754922604.json +1 -0
  190. package/.claude/checkpoints/1754922693.json +1 -0
  191. package/.claude/checkpoints/1754922695.json +1 -0
  192. package/.claude/checkpoints/1754938688.json +1 -0
  193. package/.claude/checkpoints/1754938691.json +1 -0
  194. package/.claude/checkpoints/1754938938.json +1 -0
  195. package/.claude/checkpoints/1754938940.json +1 -0
  196. package/.claude/checkpoints/1754939352.json +1 -0
  197. package/.claude/checkpoints/1754939354.json +1 -0
  198. package/.claude/checkpoints/1754943366.json +1 -0
  199. package/.claude/checkpoints/1754943367.json +1 -0
  200. package/.claude/checkpoints/1754944128.json +1 -0
  201. package/.claude/checkpoints/1754944130.json +1 -0
  202. package/.claude/checkpoints/1754944969.json +1 -0
  203. package/.claude/checkpoints/1754944970.json +1 -0
  204. package/.claude/checkpoints/1754945005.json +1 -0
  205. package/.claude/checkpoints/1754945007.json +1 -0
  206. package/.claude/checkpoints/1754945065.json +1 -0
  207. package/.claude/checkpoints/1754945067.json +1 -0
  208. package/.claude/checkpoints/1754945078.json +1 -0
  209. package/.claude/checkpoints/1754945080.json +1 -0
  210. package/.claude/checkpoints/1754945140.json +1 -0
  211. package/.claude/checkpoints/1754945142.json +1 -0
  212. package/.claude/checkpoints/1754945747.json +1 -0
  213. package/.claude/checkpoints/1754945749.json +1 -0
  214. package/.claude/checkpoints/1754946107.json +1 -0
  215. package/.claude/checkpoints/1754946453.json +1 -0
  216. package/.claude/checkpoints/1754946454.json +1 -0
  217. package/.claude/checkpoints/1754947157.json +1 -0
  218. package/.claude/checkpoints/1754947159.json +1 -0
  219. package/.claude/checkpoints/1754948127.json +1 -0
  220. package/.claude/checkpoints/1754948129.json +1 -0
  221. package/.claude/checkpoints/1754966231.json +1 -0
  222. package/.claude/checkpoints/1754966233.json +1 -0
  223. package/.claude/checkpoints/1754966298.json +1 -0
  224. package/.claude/checkpoints/1754966300.json +1 -0
  225. package/.claude/checkpoints/1754966304.json +1 -0
  226. package/.claude/checkpoints/1754966306.json +1 -0
  227. package/.claude/checkpoints/1754966323.json +1 -0
  228. package/.claude/checkpoints/1754966325.json +1 -0
  229. package/.claude/checkpoints/1754966328.json +1 -0
  230. package/.claude/checkpoints/1754966330.json +1 -0
  231. package/.claude/checkpoints/1754966365.json +1 -0
  232. package/.claude/checkpoints/1754966367.json +1 -0
  233. package/.claude/checkpoints/1754966393.json +1 -0
  234. package/.claude/checkpoints/1754966395.json +1 -0
  235. package/.claude/checkpoints/1754966396.json +1 -0
  236. package/.claude/checkpoints/1754966413.json +1 -0
  237. package/.claude/checkpoints/1754966415.json +1 -0
  238. package/.claude/checkpoints/1754966416.json +1 -0
  239. package/.claude/checkpoints/1754966418.json +1 -0
  240. package/.claude/checkpoints/1754966424.json +1 -0
  241. package/.claude/checkpoints/1754966425.json +1 -0
  242. package/.claude/checkpoints/1754966447.json +1 -0
  243. package/.claude/checkpoints/1754966449.json +1 -0
  244. package/.claude/checkpoints/1754966457.json +1 -0
  245. package/.claude/checkpoints/1754966458.json +1 -0
  246. package/.claude/checkpoints/1754966459.json +1 -0
  247. package/.claude/checkpoints/1754966461.json +1 -0
  248. package/.claude/checkpoints/1754966462.json +1 -0
  249. package/.claude/checkpoints/1754966464.json +1 -0
  250. package/.claude/checkpoints/1754966465.json +1 -0
  251. package/.claude/checkpoints/1754966466.json +1 -0
  252. package/.claude/checkpoints/1754966468.json +1 -0
  253. package/.claude/checkpoints/1754966469.json +1 -0
  254. package/.claude/checkpoints/1754966470.json +1 -0
  255. package/.claude/checkpoints/1754966471.json +1 -0
  256. package/.claude/checkpoints/1754966472.json +1 -0
  257. package/.claude/checkpoints/1754966500.json +1 -0
  258. package/.claude/checkpoints/1754966502.json +1 -0
  259. package/.claude/checkpoints/1754966509.json +1 -0
  260. package/.claude/checkpoints/1754966510.json +1 -0
  261. package/.claude/checkpoints/1754966511.json +1 -0
  262. package/.claude/checkpoints/1754966512.json +1 -0
  263. package/.claude/checkpoints/1754966513.json +1 -0
  264. package/.claude/checkpoints/1754966514.json +1 -0
  265. package/.claude/checkpoints/1754966516.json +1 -0
  266. package/.claude/checkpoints/1754966517.json +1 -0
  267. package/.claude/checkpoints/1754966533.json +1 -0
  268. package/.claude/checkpoints/1754966535.json +1 -0
  269. package/.claude/checkpoints/1754966537.json +1 -0
  270. package/.claude/checkpoints/1754966538.json +1 -0
  271. package/.claude/checkpoints/1754966540.json +1 -0
  272. package/.claude/checkpoints/1754966542.json +1 -0
  273. package/.claude/checkpoints/1754966544.json +1 -0
  274. package/.claude/checkpoints/1754966545.json +1 -0
  275. package/.claude/checkpoints/1754966560.json +1 -0
  276. package/.claude/checkpoints/1754966562.json +1 -0
  277. package/.claude/checkpoints/1754966574.json +1 -0
  278. package/.claude/checkpoints/1754966576.json +1 -0
  279. package/.claude/checkpoints/1754966578.json +1 -0
  280. package/.claude/checkpoints/1754966580.json +1 -0
  281. package/.claude/checkpoints/1754966581.json +1 -0
  282. package/.claude/checkpoints/1754966583.json +1 -0
  283. package/.claude/checkpoints/1754966584.json +1 -0
  284. package/.claude/checkpoints/1754966586.json +1 -0
  285. package/.claude/checkpoints/1754966588.json +1 -0
  286. package/.claude/checkpoints/1754966589.json +1 -0
  287. package/.claude/checkpoints/1754966591.json +1 -0
  288. package/.claude/checkpoints/1754966593.json +1 -0
  289. package/.claude/checkpoints/1754966604.json +1 -0
  290. package/.claude/checkpoints/1754966606.json +1 -0
  291. package/.claude/checkpoints/1754966614.json +1 -0
  292. package/.claude/checkpoints/1754966620.json +1 -0
  293. package/.claude/checkpoints/1754966623.json +1 -0
  294. package/.claude/checkpoints/1754966634.json +1 -0
  295. package/.claude/checkpoints/1754966636.json +1 -0
  296. package/.claude/checkpoints/1754966644.json +1 -0
  297. package/.claude/checkpoints/1754966645.json +1 -0
  298. package/.claude/checkpoints/1754966649.json +1 -0
  299. package/.claude/checkpoints/1754966655.json +1 -0
  300. package/.claude/checkpoints/1754966659.json +1 -0
  301. package/.claude/checkpoints/1754966661.json +1 -0
  302. package/.claude/checkpoints/1754966663.json +1 -0
  303. package/.claude/checkpoints/1754966666.json +1 -0
  304. package/.claude/checkpoints/1754966668.json +1 -0
  305. package/.claude/checkpoints/1754966673.json +1 -0
  306. package/.claude/checkpoints/1754966678.json +1 -0
  307. package/.claude/checkpoints/1754966680.json +1 -0
  308. package/.claude/checkpoints/1754966689.json +1 -0
  309. package/.claude/checkpoints/1754966693.json +1 -0
  310. package/.claude/checkpoints/1754966700.json +1 -0
  311. package/.claude/checkpoints/1754966704.json +1 -0
  312. package/.claude/checkpoints/1754966708.json +1 -0
  313. package/.claude/checkpoints/1754966718.json +1 -0
  314. package/.claude/checkpoints/1754966723.json +1 -0
  315. package/.claude/checkpoints/1754966728.json +1 -0
  316. package/.claude/checkpoints/1754966732.json +1 -0
  317. package/.claude/checkpoints/1754966761.json +1 -0
  318. package/.claude/checkpoints/1754966765.json +1 -0
  319. package/.claude/checkpoints/1754966770.json +1 -0
  320. package/.claude/checkpoints/1754966773.json +1 -0
  321. package/.claude/checkpoints/1754966781.json +1 -0
  322. package/.claude/checkpoints/1754966789.json +1 -0
  323. package/.claude/checkpoints/1754966799.json +1 -0
  324. package/.claude/checkpoints/1754966805.json +1 -0
  325. package/.claude/checkpoints/1754966828.json +1 -0
  326. package/.claude/checkpoints/1754966831.json +1 -0
  327. package/.claude/checkpoints/1754966877.json +1 -0
  328. package/.claude/checkpoints/1754966881.json +1 -0
  329. package/.claude/checkpoints/1754966954.json +1 -0
  330. package/.claude/checkpoints/1754966958.json +1 -0
  331. package/.claude/checkpoints/1754966967.json +1 -0
  332. package/.claude/checkpoints/1754966970.json +1 -0
  333. package/.claude/checkpoints/1754966974.json +1 -0
  334. package/.claude/checkpoints/1754966979.json +1 -0
  335. package/.claude/checkpoints/1754966981.json +1 -0
  336. package/.claude/checkpoints/1754966984.json +1 -0
  337. package/.claude/checkpoints/1754967027.json +1 -0
  338. package/.claude/checkpoints/1754967031.json +1 -0
  339. package/.claude/checkpoints/1754967035.json +1 -0
  340. package/.claude/checkpoints/1754967039.json +1 -0
  341. package/.claude/checkpoints/1755008208.json +1 -0
  342. package/.claude/checkpoints/1755008210.json +1 -0
  343. package/.claude/checkpoints/1755008364.json +1 -0
  344. package/.claude/checkpoints/1755008367.json +1 -0
  345. package/.claude/checkpoints/1755008382.json +1 -0
  346. package/.claude/checkpoints/1755008384.json +1 -0
  347. package/.claude/checkpoints/1755008392.json +1 -0
  348. package/.claude/checkpoints/1755008394.json +1 -0
  349. package/.claude/checkpoints/1755008405.json +1 -0
  350. package/.claude/checkpoints/1755008406.json +1 -0
  351. package/.claude/checkpoints/1755008723.json +1 -0
  352. package/.claude/checkpoints/1755008796.json +1 -0
  353. package/.claude/checkpoints/1755008819.json +1 -0
  354. package/.claude/checkpoints/1755008840.json +1 -0
  355. package/.claude/checkpoints/1755008856.json +1 -0
  356. package/.claude/checkpoints/1755008931.json +1 -0
  357. package/.claude/checkpoints/1755008933.json +1 -0
  358. package/.claude/checkpoints/1755008971.json +1 -0
  359. package/.claude/checkpoints/1755008973.json +1 -0
  360. package/.claude/checkpoints/1755009483.json +1 -0
  361. package/.claude/checkpoints/1755009485.json +1 -0
  362. package/.claude/checkpoints/1755009575.json +1 -0
  363. package/.claude/checkpoints/1755009576.json +1 -0
  364. package/.claude/checkpoints/1755009587.json +1 -0
  365. package/.claude/checkpoints/1755009589.json +1 -0
  366. package/.claude/checkpoints/1755009611.json +1 -0
  367. package/.claude/checkpoints/1755009613.json +1 -0
  368. package/.claude/checkpoints/1755009652.json +1 -0
  369. package/.claude/checkpoints/1755009653.json +1 -0
  370. package/.claude/checkpoints/1755009662.json +1 -0
  371. package/.claude/checkpoints/1755009664.json +1 -0
  372. package/.claude/checkpoints/1755009673.json +1 -0
  373. package/.claude/checkpoints/1755009675.json +1 -0
  374. package/.claude/checkpoints/1755009689.json +1 -0
  375. package/.claude/checkpoints/1755009691.json +1 -0
  376. package/.claude/checkpoints/1755009705.json +1 -0
  377. package/.claude/checkpoints/1755009706.json +1 -0
  378. package/.claude/checkpoints/1755009717.json +1 -0
  379. package/.claude/checkpoints/1755009719.json +1 -0
  380. package/.claude/checkpoints/1755009777.json +1 -0
  381. package/.claude/checkpoints/1755009779.json +1 -0
  382. package/.claude/checkpoints/1755010192.json +1 -0
  383. package/.claude/checkpoints/1755010227.json +1 -0
  384. package/.claude/checkpoints/1755010245.json +1 -0
  385. package/.claude/checkpoints/1755010254.json +1 -0
  386. package/.claude/checkpoints/1755010355.json +1 -0
  387. package/.claude/checkpoints/1755010425.json +1 -0
  388. package/.claude/checkpoints/1755010448.json +1 -0
  389. package/.claude/checkpoints/1755010809.json +1 -0
  390. package/.claude/checkpoints/1755010811.json +1 -0
  391. package/.claude/checkpoints/1755010995.json +1 -0
  392. package/.claude/checkpoints/1755010997.json +1 -0
  393. package/.claude/checkpoints/1755011011.json +1 -0
  394. package/.claude/checkpoints/1755011012.json +1 -0
  395. package/.claude/checkpoints/1755011438.json +1 -0
  396. package/.claude/checkpoints/1755011439.json +1 -0
  397. package/.claude/checkpoints/1755011457.json +1 -0
  398. package/.claude/checkpoints/1755011458.json +1 -0
  399. package/.claude/checkpoints/1755011472.json +1 -0
  400. package/.claude/checkpoints/1755011473.json +1 -0
  401. package/.claude/checkpoints/1755011510.json +1 -0
  402. package/.claude/checkpoints/1755011512.json +1 -0
  403. package/.claude/checkpoints/1755011529.json +1 -0
  404. package/.claude/checkpoints/1755011530.json +1 -0
  405. package/.claude/checkpoints/1755012655.json +1 -0
  406. package/.claude/checkpoints/1755012657.json +1 -0
  407. package/.claude/checkpoints/1755012781.json +1 -0
  408. package/.claude/checkpoints/1755012783.json +1 -0
  409. package/.claude/checkpoints/1755012824.json +1 -0
  410. package/.claude/checkpoints/1755012826.json +1 -0
  411. package/.claude/checkpoints/1755012882.json +1 -0
  412. package/.claude/checkpoints/1755012884.json +1 -0
  413. package/.claude/checkpoints/1755012892.json +1 -0
  414. package/.claude/checkpoints/1755012894.json +1 -0
  415. package/.claude/checkpoints/1755012901.json +1 -0
  416. package/.claude/checkpoints/1755012903.json +1 -0
  417. package/.claude/checkpoints/1755012941.json +1 -0
  418. package/.claude/checkpoints/1755012943.json +1 -0
  419. package/.claude/checkpoints/1755012994.json +1 -0
  420. package/.claude/checkpoints/1755012996.json +1 -0
  421. package/.claude/checkpoints/1755013112.json +1 -0
  422. package/.claude/checkpoints/1755013114.json +1 -0
  423. package/.claude/checkpoints/1755013187.json +1 -0
  424. package/.claude/checkpoints/1755013188.json +1 -0
  425. package/.claude/checkpoints/1755013201.json +1 -0
  426. package/.claude/checkpoints/1755013203.json +1 -0
  427. package/.claude/checkpoints/1755013298.json +1 -0
  428. package/.claude/checkpoints/1755013300.json +1 -0
  429. package/.claude/checkpoints/1755013402.json +1 -0
  430. package/.claude/checkpoints/1755013404.json +1 -0
  431. package/.claude/checkpoints/1755013559.json +1 -0
  432. package/.claude/checkpoints/1755013561.json +1 -0
  433. package/.claude/checkpoints/1755013568.json +1 -0
  434. package/.claude/checkpoints/1755013570.json +1 -0
  435. package/.claude/checkpoints/1755013808.json +1 -0
  436. package/.claude/checkpoints/1755013810.json +1 -0
  437. package/.claude/checkpoints/1755013894.json +1 -0
  438. package/.claude/checkpoints/1755013896.json +1 -0
  439. package/.claude/checkpoints/1755013931.json +1 -0
  440. package/.claude/checkpoints/1755013932.json +1 -0
  441. package/.claude/checkpoints/1755014194.json +1 -0
  442. package/.claude/checkpoints/1755014195.json +1 -0
  443. package/.claude/checkpoints/1755014215.json +1 -0
  444. package/.claude/checkpoints/1755014217.json +1 -0
  445. package/.claude/checkpoints/1755014288.json +1 -0
  446. package/.claude/checkpoints/1755014290.json +1 -0
  447. package/.claude/checkpoints/1755014507.json +1 -0
  448. package/.claude/checkpoints/1755014588.json +1 -0
  449. package/.claude/checkpoints/1755014631.json +1 -0
  450. package/.claude/checkpoints/1755014660.json +1 -0
  451. package/.claude/checkpoints/1755016785.json +1 -0
  452. package/.claude/checkpoints/1755016787.json +1 -0
  453. package/.claude/checkpoints/1755016850.json +1 -0
  454. package/.claude/checkpoints/1755016852.json +1 -0
  455. package/.claude/checkpoints/1755017040.json +1 -0
  456. package/.claude/checkpoints/1755017042.json +1 -0
  457. package/.claude/checkpoints/1755017123.json +1 -0
  458. package/.claude/checkpoints/1755017146.json +1 -0
  459. package/.claude/checkpoints/1755017185.json +1 -0
  460. package/.claude/checkpoints/1755017208.json +1 -0
  461. package/.claude/checkpoints/1755017225.json +1 -0
  462. package/.claude/checkpoints/1755017451.json +1 -0
  463. package/.claude/checkpoints/1755017453.json +1 -0
  464. package/.claude/checkpoints/1755017564.json +1 -0
  465. package/.claude/checkpoints/1755017566.json +1 -0
  466. package/.claude/checkpoints/1755017649.json +1 -0
  467. package/.claude/checkpoints/1755017650.json +1 -0
  468. package/.claude/checkpoints/1755017673.json +1 -0
  469. package/.claude/checkpoints/1755017674.json +1 -0
  470. package/.claude/checkpoints/1755017942.json +1 -0
  471. package/.claude/checkpoints/1755017943.json +1 -0
  472. package/.claude/checkpoints/1755017978.json +1 -0
  473. package/.claude/checkpoints/1755017979.json +1 -0
  474. package/.claude/checkpoints/1755017988.json +1 -0
  475. package/.claude/checkpoints/1755017990.json +1 -0
  476. package/.claude/checkpoints/1755017998.json +1 -0
  477. package/.claude/checkpoints/1755017999.json +1 -0
  478. package/.claude/checkpoints/1755018011.json +1 -0
  479. package/.claude/checkpoints/1755018013.json +1 -0
  480. package/.claude/checkpoints/1755018023.json +1 -0
  481. package/.claude/checkpoints/1755018025.json +1 -0
  482. package/.claude/checkpoints/1755018033.json +1 -0
  483. package/.claude/checkpoints/1755018035.json +1 -0
  484. package/.claude/checkpoints/1755018043.json +1 -0
  485. package/.claude/checkpoints/1755018045.json +1 -0
  486. package/.claude/checkpoints/1755018053.json +1 -0
  487. package/.claude/checkpoints/1755018055.json +1 -0
  488. package/.claude/checkpoints/1755018064.json +1 -0
  489. package/.claude/checkpoints/1755018065.json +1 -0
  490. package/.claude/checkpoints/1755018073.json +1 -0
  491. package/.claude/checkpoints/1755018075.json +1 -0
  492. package/.claude/checkpoints/1755018083.json +1 -0
  493. package/.claude/checkpoints/1755018085.json +1 -0
  494. package/.claude/checkpoints/1755018092.json +1 -0
  495. package/.claude/checkpoints/1755018094.json +1 -0
  496. package/.claude/checkpoints/1755018105.json +1 -0
  497. package/.claude/checkpoints/1755018106.json +1 -0
  498. package/.claude/checkpoints/1755018118.json +1 -0
  499. package/.claude/checkpoints/1755018120.json +1 -0
  500. package/.claude/checkpoints/1755018128.json +1 -0
  501. package/.claude/checkpoints/1755018130.json +1 -0
  502. package/.claude/checkpoints/1755018137.json +1 -0
  503. package/.claude/checkpoints/1755018139.json +1 -0
  504. package/.claude/checkpoints/1755018148.json +1 -0
  505. package/.claude/checkpoints/1755018150.json +1 -0
  506. package/.claude/checkpoints/1755018157.json +1 -0
  507. package/.claude/checkpoints/1755018159.json +1 -0
  508. package/.claude/checkpoints/1755018166.json +1 -0
  509. package/.claude/checkpoints/1755018168.json +1 -0
  510. package/.claude/checkpoints/1755018177.json +1 -0
  511. package/.claude/checkpoints/1755018178.json +1 -0
  512. package/.claude/checkpoints/1755018186.json +1 -0
  513. package/.claude/checkpoints/1755018188.json +1 -0
  514. package/.claude/checkpoints/1755018198.json +1 -0
  515. package/.claude/checkpoints/1755018200.json +1 -0
  516. package/.claude/checkpoints/1755018207.json +1 -0
  517. package/.claude/checkpoints/1755018209.json +1 -0
  518. package/.claude/checkpoints/1755018217.json +1 -0
  519. package/.claude/checkpoints/1755018218.json +1 -0
  520. package/.claude/checkpoints/1755018230.json +1 -0
  521. package/.claude/checkpoints/1755018232.json +1 -0
  522. package/.claude/checkpoints/1755018323.json +1 -0
  523. package/.claude/checkpoints/1755018325.json +1 -0
  524. package/.claude/checkpoints/1755019354.json +1 -0
  525. package/.claude/checkpoints/1755019356.json +1 -0
  526. package/.claude/checkpoints/1755019471.json +1 -0
  527. package/.claude/checkpoints/1755019472.json +1 -0
  528. package/.claude/checkpoints/1755019512.json +1 -0
  529. package/.claude/checkpoints/1755019514.json +1 -0
  530. package/.claude/checkpoints/1755019853.json +1 -0
  531. package/.claude/checkpoints/1755019854.json +1 -0
  532. package/.claude/checkpoints/1755019928.json +1 -0
  533. package/.claude/checkpoints/1755019930.json +1 -0
  534. package/.claude/checkpoints/1755020218.json +1 -0
  535. package/.claude/checkpoints/1755020220.json +1 -0
  536. package/.claude/checkpoints/1755020245.json +1 -0
  537. package/.claude/checkpoints/1755020247.json +1 -0
  538. package/.claude/checkpoints/1755021412.json +1 -0
  539. package/.claude/checkpoints/1755021414.json +1 -0
  540. package/.claude/checkpoints/1755021578.json +1 -0
  541. package/.claude/checkpoints/1755021803.json +1 -0
  542. package/.claude/checkpoints/1755021805.json +1 -0
  543. package/.claude/checkpoints/1755022444.json +1 -0
  544. package/.claude/checkpoints/1755022446.json +1 -0
  545. package/.claude/checkpoints/1755022457.json +1 -0
  546. package/.claude/checkpoints/1755022458.json +1 -0
  547. package/.claude/checkpoints/1755022478.json +1 -0
  548. package/.claude/checkpoints/1755022479.json +1 -0
  549. package/.claude/checkpoints/1755022494.json +1 -0
  550. package/.claude/checkpoints/1755022496.json +1 -0
  551. package/.claude/checkpoints/1755022609.json +1 -0
  552. package/.claude/checkpoints/1755022611.json +1 -0
  553. package/.claude/checkpoints/1755022624.json +1 -0
  554. package/.claude/checkpoints/1755022626.json +1 -0
  555. package/.claude/checkpoints/1755022672.json +1 -0
  556. package/.claude/checkpoints/1755022674.json +1 -0
  557. package/.claude/checkpoints/1755022815.json +1 -0
  558. package/.claude/checkpoints/1755022817.json +1 -0
  559. package/.claude/checkpoints/1755023010.json +1 -0
  560. package/.claude/checkpoints/1755023012.json +1 -0
  561. package/.claude/checkpoints/1755023049.json +1 -0
  562. package/.claude/checkpoints/1755023051.json +1 -0
  563. package/.claude/checkpoints/1755023322.json +1 -0
  564. package/.claude/checkpoints/1755023323.json +1 -0
  565. package/.claude/checkpoints/1755023377.json +1 -0
  566. package/.claude/checkpoints/1755023379.json +1 -0
  567. package/.claude/checkpoints/1755023392.json +1 -0
  568. package/.claude/checkpoints/1755023394.json +1 -0
  569. package/.claude/checkpoints/1755023408.json +1 -0
  570. package/.claude/checkpoints/1755023410.json +1 -0
  571. package/.claude/checkpoints/1755023445.json +1 -0
  572. package/.claude/checkpoints/1755023447.json +1 -0
  573. package/.claude/checkpoints/1755023471.json +1 -0
  574. package/.claude/checkpoints/1755023472.json +1 -0
  575. package/.claude/checkpoints/1755023481.json +1 -0
  576. package/.claude/checkpoints/1755023482.json +1 -0
  577. package/.claude/checkpoints/1755023491.json +1 -0
  578. package/.claude/checkpoints/1755023493.json +1 -0
  579. package/.claude/checkpoints/1755023516.json +1 -0
  580. package/.claude/checkpoints/1755023518.json +1 -0
  581. package/.claude/checkpoints/1755023526.json +1 -0
  582. package/.claude/checkpoints/1755023528.json +1 -0
  583. package/.claude/checkpoints/1755023540.json +1 -0
  584. package/.claude/checkpoints/1755023542.json +1 -0
  585. package/.claude/checkpoints/1755023586.json +1 -0
  586. package/.claude/checkpoints/1755023588.json +1 -0
  587. package/.claude/checkpoints/1755023595.json +1 -0
  588. package/.claude/checkpoints/1755023597.json +1 -0
  589. package/.claude/checkpoints/1755023619.json +1 -0
  590. package/.claude/checkpoints/1755023620.json +1 -0
  591. package/.claude/checkpoints/1755023631.json +1 -0
  592. package/.claude/checkpoints/1755023632.json +1 -0
  593. package/.claude/checkpoints/1755023643.json +1 -0
  594. package/.claude/checkpoints/1755023645.json +1 -0
  595. package/.claude/checkpoints/1755023674.json +1 -0
  596. package/.claude/checkpoints/1755023676.json +1 -0
  597. package/.claude/checkpoints/1755023683.json +1 -0
  598. package/.claude/checkpoints/1755023685.json +1 -0
  599. package/.claude/checkpoints/1755023693.json +1 -0
  600. package/.claude/checkpoints/1755023694.json +1 -0
  601. package/.claude/checkpoints/1755023719.json +1 -0
  602. package/.claude/checkpoints/1755023721.json +1 -0
  603. package/.claude/checkpoints/1755023727.json +1 -0
  604. package/.claude/checkpoints/1755023729.json +1 -0
  605. package/.claude/checkpoints/1755023744.json +1 -0
  606. package/.claude/checkpoints/1755023746.json +1 -0
  607. package/.claude/checkpoints/1755023767.json +1 -0
  608. package/.claude/checkpoints/1755023769.json +1 -0
  609. package/.claude/checkpoints/1755023893.json +1 -0
  610. package/.claude/checkpoints/1755023895.json +1 -0
  611. package/.claude/checkpoints/1755023906.json +1 -0
  612. package/.claude/checkpoints/1755023908.json +1 -0
  613. package/.claude/checkpoints/1755023917.json +1 -0
  614. package/.claude/checkpoints/1755023919.json +1 -0
  615. package/.claude/checkpoints/1755024002.json +1 -0
  616. package/.claude/checkpoints/1755024003.json +1 -0
  617. package/.claude/checkpoints/1755024070.json +1 -0
  618. package/.claude/checkpoints/1755024072.json +1 -0
  619. package/.claude/checkpoints/1755024079.json +1 -0
  620. package/.claude/checkpoints/1755024081.json +1 -0
  621. package/.claude/checkpoints/1755024237.json +1 -0
  622. package/.claude/checkpoints/1755024239.json +1 -0
  623. package/.claude/checkpoints/1755024349.json +1 -0
  624. package/.claude/checkpoints/1755024351.json +1 -0
  625. package/.claude/checkpoints/1755024418.json +1 -0
  626. package/.claude/checkpoints/1755024419.json +1 -0
  627. package/.claude/checkpoints/1755024432.json +1 -0
  628. package/.claude/checkpoints/1755024434.json +1 -0
  629. package/.claude/checkpoints/1755024546.json +1 -0
  630. package/.claude/checkpoints/1755024548.json +1 -0
  631. package/.claude/checkpoints/1755024563.json +1 -0
  632. package/.claude/checkpoints/1755024565.json +1 -0
  633. package/.claude/checkpoints/1755024638.json +1 -0
  634. package/.claude/checkpoints/1755024640.json +1 -0
  635. package/.claude/checkpoints/1755024713.json +1 -0
  636. package/.claude/checkpoints/1755024715.json +1 -0
  637. package/.claude/checkpoints/1755024883.json +1 -0
  638. package/.claude/checkpoints/1755024885.json +1 -0
  639. package/.claude/checkpoints/1755024894.json +1 -0
  640. package/.claude/checkpoints/1755024896.json +1 -0
  641. package/.claude/checkpoints/1755024905.json +1 -0
  642. package/.claude/checkpoints/1755024907.json +1 -0
  643. package/.claude/checkpoints/1755025147.json +1 -0
  644. package/.claude/checkpoints/1755025186.json +1 -0
  645. package/.claude/checkpoints/1755025188.json +1 -0
  646. package/.claude/checkpoints/1755025222.json +1 -0
  647. package/.claude/checkpoints/1755025224.json +1 -0
  648. package/.claude/checkpoints/1755025261.json +1 -0
  649. package/.claude/checkpoints/1755025263.json +1 -0
  650. package/.claude/checkpoints/1755025277.json +1 -0
  651. package/.claude/checkpoints/1755025279.json +1 -0
  652. package/.claude/checkpoints/1755025285.json +1 -0
  653. package/.claude/checkpoints/1755025287.json +1 -0
  654. package/.claude/checkpoints/1755025328.json +1 -0
  655. package/.claude/checkpoints/1755025330.json +1 -0
  656. package/.claude/checkpoints/1755025483.json +1 -0
  657. package/.claude/checkpoints/1755025485.json +1 -0
  658. package/.claude/checkpoints/1755025517.json +1 -0
  659. package/.claude/checkpoints/1755025534.json +1 -0
  660. package/.claude/checkpoints/1755025542.json +1 -0
  661. package/.claude/checkpoints/1755025552.json +1 -0
  662. package/.claude/checkpoints/1755025554.json +1 -0
  663. package/.claude/checkpoints/1755025598.json +1 -0
  664. package/.claude/checkpoints/1755025600.json +1 -0
  665. package/.claude/checkpoints/1755025625.json +1 -0
  666. package/.claude/checkpoints/1755025656.json +1 -0
  667. package/.claude/checkpoints/1755025693.json +1 -0
  668. package/.claude/checkpoints/1755025720.json +1 -0
  669. package/.claude/checkpoints/1755025736.json +1 -0
  670. package/.claude/checkpoints/1755025810.json +1 -0
  671. package/.claude/checkpoints/1755025815.json +1 -0
  672. package/.claude/checkpoints/1755025929.json +1 -0
  673. package/.claude/checkpoints/1755025976.json +1 -0
  674. package/.claude/checkpoints/1755025978.json +1 -0
  675. package/.claude/checkpoints/1755026000.json +1 -0
  676. package/.claude/checkpoints/1755026002.json +1 -0
  677. package/.claude/checkpoints/1755026016.json +1 -0
  678. package/.claude/checkpoints/1755026018.json +1 -0
  679. package/.claude/checkpoints/1755026056.json +1 -0
  680. package/.claude/checkpoints/1755026191.json +1 -0
  681. package/.claude/checkpoints/1755026218.json +1 -0
  682. package/.claude/checkpoints/1755026219.json +1 -0
  683. package/.claude/checkpoints/1755026317.json +1 -0
  684. package/.claude/checkpoints/1755026319.json +1 -0
  685. package/.claude/checkpoints/1755026398.json +1 -0
  686. package/.claude/checkpoints/1755026404.json +1 -0
  687. package/.claude/checkpoints/1755026729.json +1 -0
  688. package/.claude/checkpoints/1755026731.json +1 -0
  689. package/.claude/checkpoints/1755026744.json +1 -0
  690. package/.claude/checkpoints/1755026746.json +1 -0
  691. package/.claude/checkpoints/1755026766.json +1 -0
  692. package/.claude/checkpoints/1755026768.json +1 -0
  693. package/.claude/checkpoints/1755026989.json +1 -0
  694. package/.claude/checkpoints/1755026991.json +1 -0
  695. package/.claude/checkpoints/1755027076.json +1 -0
  696. package/.claude/checkpoints/1755027078.json +1 -0
  697. package/.claude/checkpoints/1755027088.json +1 -0
  698. package/.claude/checkpoints/1755027090.json +1 -0
  699. package/.claude/checkpoints/1755027251.json +1 -0
  700. package/.claude/checkpoints/1755027252.json +1 -0
  701. package/.claude/checkpoints/1755027264.json +1 -0
  702. package/.claude/checkpoints/1755027266.json +1 -0
  703. package/.claude/checkpoints/1755027274.json +1 -0
  704. package/.claude/checkpoints/1755027276.json +1 -0
  705. package/.claude/checkpoints/1755027289.json +1 -0
  706. package/.claude/checkpoints/1755027291.json +1 -0
  707. package/.claude/checkpoints/1755027468.json +1 -0
  708. package/.claude/checkpoints/1755027470.json +1 -0
  709. package/.claude/checkpoints/1755027489.json +1 -0
  710. package/.claude/checkpoints/1755027491.json +1 -0
  711. package/.claude/checkpoints/1755027511.json +1 -0
  712. package/.claude/checkpoints/1755027513.json +1 -0
  713. package/.claude/checkpoints/1755027726.json +1 -0
  714. package/.claude/checkpoints/1755027728.json +1 -0
  715. package/.claude/checkpoints/1755027741.json +1 -0
  716. package/.claude/checkpoints/1755027743.json +1 -0
  717. package/.claude/checkpoints/1755027774.json +1 -0
  718. package/.claude/checkpoints/1755027776.json +1 -0
  719. package/.claude/checkpoints/1755027820.json +1 -0
  720. package/.claude/checkpoints/1755027822.json +1 -0
  721. package/.claude/checkpoints/1755027874.json +1 -0
  722. package/.claude/checkpoints/1755027876.json +1 -0
  723. package/.claude/checkpoints/1755027894.json +1 -0
  724. package/.claude/checkpoints/1755027896.json +1 -0
  725. package/.claude/checkpoints/1755027917.json +1 -0
  726. package/.claude/checkpoints/1755027919.json +1 -0
  727. package/.claude/checkpoints/1755027969.json +1 -0
  728. package/.claude/checkpoints/1755027972.json +1 -0
  729. package/.claude/checkpoints/1755028187.json +1 -0
  730. package/.claude/checkpoints/1755028189.json +1 -0
  731. package/.claude/checkpoints/1755028246.json +1 -0
  732. package/.claude/checkpoints/1755028247.json +1 -0
  733. package/.claude/checkpoints/1755028317.json +1 -0
  734. package/.claude/checkpoints/1755028319.json +1 -0
  735. package/.claude/checkpoints/1755028421.json +1 -0
  736. package/.claude/checkpoints/1755028422.json +1 -0
  737. package/.claude/checkpoints/1755028513.json +1 -0
  738. package/.claude/checkpoints/1755028514.json +1 -0
  739. package/.claude/checkpoints/1755028580.json +1 -0
  740. package/.claude/checkpoints/1755028582.json +1 -0
  741. package/.claude/checkpoints/1755028636.json +1 -0
  742. package/.claude/checkpoints/1755028638.json +1 -0
  743. package/.claude/checkpoints/1755028652.json +1 -0
  744. package/.claude/checkpoints/1755028653.json +1 -0
  745. package/.claude/checkpoints/1755028670.json +1 -0
  746. package/.claude/checkpoints/1755028672.json +1 -0
  747. package/.claude/checkpoints/1755028692.json +1 -0
  748. package/.claude/checkpoints/1755028694.json +1 -0
  749. package/.claude/checkpoints/1755036212.json +1 -0
  750. package/.claude/checkpoints/1755036215.json +1 -0
  751. package/.claude/checkpoints/1755036250.json +1 -0
  752. package/.claude/checkpoints/1755036252.json +1 -0
  753. package/.claude/checkpoints/1755036713.json +1 -0
  754. package/.claude/checkpoints/1755036715.json +1 -0
  755. package/.claude/checkpoints/1755036930.json +1 -0
  756. package/.claude/checkpoints/1755036932.json +1 -0
  757. package/.claude/checkpoints/1755036949.json +1 -0
  758. package/.claude/checkpoints/1755036950.json +1 -0
  759. package/.claude/checkpoints/1755036977.json +1 -0
  760. package/.claude/checkpoints/1755036978.json +1 -0
  761. package/.claude/checkpoints/1755036990.json +1 -0
  762. package/.claude/checkpoints/1755036991.json +1 -0
  763. package/.claude/checkpoints/1755037019.json +1 -0
  764. package/.claude/checkpoints/1755037021.json +1 -0
  765. package/.claude/checkpoints/1755038007.json +1 -0
  766. package/.claude/checkpoints/1755038009.json +1 -0
  767. package/.claude/checkpoints/1755038084.json +1 -0
  768. package/.claude/checkpoints/1755038086.json +1 -0
  769. package/.claude/checkpoints/1755095620.json +1 -0
  770. package/.claude/checkpoints/1755095643.json +1 -0
  771. package/.claude/checkpoints/1755095678.json +1 -0
  772. package/.claude/checkpoints/1755095705.json +1 -0
  773. package/.claude/checkpoints/1755095729.json +1 -0
  774. package/.claude/checkpoints/1755095751.json +1 -0
  775. package/.claude/checkpoints/1755096435.json +1 -0
  776. package/.claude/checkpoints/1755096438.json +1 -0
  777. package/.claude/checkpoints/1755096744.json +1 -0
  778. package/.claude/checkpoints/1755096746.json +1 -0
  779. package/.claude/checkpoints/1755097287.json +1 -0
  780. package/.claude/checkpoints/1755097289.json +1 -0
  781. package/.claude/checkpoints/1755097472.json +1 -0
  782. package/.claude/checkpoints/1755097474.json +1 -0
  783. package/.claude/checkpoints/1755097499.json +1 -0
  784. package/.claude/checkpoints/1755097501.json +1 -0
  785. package/.claude/checkpoints/1755097776.json +1 -0
  786. package/.claude/checkpoints/1755097778.json +1 -0
  787. package/.claude/checkpoints/1755097825.json +1 -0
  788. package/.claude/checkpoints/1755097827.json +1 -0
  789. package/.claude/checkpoints/1755097859.json +1 -0
  790. package/.claude/checkpoints/1755097861.json +1 -0
  791. package/.claude/checkpoints/1755097887.json +1 -0
  792. package/.claude/checkpoints/1755097888.json +1 -0
  793. package/.claude/checkpoints/1755108433.json +1 -0
  794. package/.claude/checkpoints/1755108435.json +1 -0
  795. package/.claude/checkpoints/1755108448.json +1 -0
  796. package/.claude/checkpoints/1755108450.json +1 -0
  797. package/.claude/checkpoints/1755115724.json +1 -0
  798. package/.claude/checkpoints/1755115726.json +1 -0
  799. package/.claude/checkpoints/1755115737.json +1 -0
  800. package/.claude/checkpoints/1755115739.json +1 -0
  801. package/.claude/checkpoints/1755115870.json +1 -0
  802. package/.claude/checkpoints/1755115872.json +1 -0
  803. package/.claude/checkpoints/1755115939.json +1 -0
  804. package/.claude/checkpoints/1755115941.json +1 -0
  805. package/.claude/checkpoints/1755116119.json +1 -0
  806. package/.claude/checkpoints/1755116121.json +1 -0
  807. package/.claude/checkpoints/1755116334.json +1 -0
  808. package/.claude/checkpoints/1755116336.json +1 -0
  809. package/.claude/checkpoints/1755116364.json +1 -0
  810. package/.claude/checkpoints/1755116365.json +1 -0
  811. package/.claude/checkpoints/1755116428.json +1 -0
  812. package/.claude/checkpoints/1755116430.json +1 -0
  813. package/.claude/checkpoints/1755116683.json +1 -0
  814. package/.claude/checkpoints/1755116684.json +1 -0
  815. package/.claude/checkpoints/1755116933.json +1 -0
  816. package/.claude/checkpoints/1755117141.json +1 -0
  817. package/.claude/checkpoints/1755117143.json +1 -0
  818. package/.claude/checkpoints/1755117172.json +1 -0
  819. package/.claude/checkpoints/1755117174.json +1 -0
  820. package/.claude/checkpoints/1755117241.json +1 -0
  821. package/.claude/checkpoints/1755117243.json +1 -0
  822. package/.claude/checkpoints/1755117263.json +1 -0
  823. package/.claude/checkpoints/1755117265.json +1 -0
  824. package/.claude/checkpoints/1755117279.json +1 -0
  825. package/.claude/checkpoints/1755117281.json +1 -0
  826. package/.claude/checkpoints/1755117308.json +1 -0
  827. package/.claude/checkpoints/1755117310.json +1 -0
  828. package/.claude/checkpoints/1755117338.json +1 -0
  829. package/.claude/checkpoints/1755117340.json +1 -0
  830. package/.claude/checkpoints/1755117442.json +1 -0
  831. package/.claude/checkpoints/1755117444.json +1 -0
  832. package/.claude/checkpoints/1755117497.json +1 -0
  833. package/.claude/checkpoints/1755117499.json +1 -0
  834. package/.claude/checkpoints/1755117522.json +1 -0
  835. package/.claude/checkpoints/1755117524.json +1 -0
  836. package/.claude/checkpoints/1755117535.json +1 -0
  837. package/.claude/checkpoints/1755117537.json +1 -0
  838. package/.claude/checkpoints/1755117572.json +1 -0
  839. package/.claude/checkpoints/1755117574.json +1 -0
  840. package/.claude/checkpoints/1755117585.json +1 -0
  841. package/.claude/checkpoints/1755117586.json +1 -0
  842. package/.claude/checkpoints/1755117658.json +1 -0
  843. package/.claude/checkpoints/1755117660.json +1 -0
  844. package/.claude/checkpoints/1755119182.json +1 -0
  845. package/.claude/checkpoints/1755119201.json +1 -0
  846. package/.claude/checkpoints/1755119249.json +1 -0
  847. package/.claude/checkpoints/1755119251.json +1 -0
  848. package/.claude/checkpoints/summary-session-20250805-200233.md +956 -0
  849. package/.claude/checkpoints/summary-session-20250806-133644.md +1440 -0
  850. package/.claude/checkpoints/summary-session-20250807-125301.md +304 -0
  851. package/.claude/checkpoints/summary-session-20250807-131651.md +596 -0
  852. package/.claude/checkpoints/summary-session-20250807-132048.md +763 -0
  853. package/.claude/checkpoints/summary-session-20250807-132330.md +767 -0
  854. package/.claude/checkpoints/summary-session-20250807-170706.md +675 -0
  855. package/.claude/checkpoints/summary-session-20250807-171831.md +679 -0
  856. package/.claude/checkpoints/summary-session-20250807-173048.md +674 -0
  857. package/.claude/checkpoints/summary-session-20250811-143232.md +59 -0
  858. package/.claude/checkpoints/summary-session-20250811-144236.md +63 -0
  859. package/.claude/checkpoints/summary-session-20250811-185512.md +49 -0
  860. package/.claude/checkpoints/summary-session-20250811-185901.md +61 -0
  861. package/.claude/checkpoints/summary-session-20250811-185934.md +64 -0
  862. package/.claude/checkpoints/summary-session-20250811-190537.md +69 -0
  863. package/.claude/checkpoints/summary-session-20250811-191203.md +77 -0
  864. package/.claude/checkpoints/summary-session-20250811-201653.md +69 -0
  865. package/.claude/checkpoints/summary-session-20250811-202920.md +77 -0
  866. package/.claude/checkpoints/summary-session-20250811-204609.md +102 -0
  867. package/.claude/checkpoints/summary-session-20250811-205608.md +110 -0
  868. package/.claude/checkpoints/summary-session-20250811-210336.md +120 -0
  869. package/.claude/checkpoints/summary-session-20250811-210754.md +127 -0
  870. package/.claude/checkpoints/summary-session-20250811-213411.md +130 -0
  871. package/.claude/checkpoints/summary-session-20250811-213547.md +137 -0
  872. package/.claude/checkpoints/summary-session-20250811-215220.md +127 -0
  873. package/.claude/checkpoints/summary-session-20250812-030438.md +398 -0
  874. package/.claude/checkpoints/summary-session-20250812-142301.md +243 -0
  875. package/.claude/checkpoints/summary-session-20250812-142758.md +257 -0
  876. package/.claude/checkpoints/summary-session-20250812-143045.md +264 -0
  877. package/.claude/checkpoints/summary-session-20250812-143337.md +264 -0
  878. package/.claude/checkpoints/summary-session-20250812-144654.md +322 -0
  879. package/.claude/checkpoints/summary-session-20250812-145428.md +338 -0
  880. package/.claude/checkpoints/summary-session-20250812-150459.md +360 -0
  881. package/.claude/checkpoints/summary-session-20250812-150641.md +364 -0
  882. package/.claude/checkpoints/summary-session-20250812-150742.md +369 -0
  883. package/.claude/checkpoints/summary-session-20250812-151438.md +396 -0
  884. package/.claude/checkpoints/summary-session-20250812-153223.md +375 -0
  885. package/.claude/checkpoints/summary-session-20250812-153908.md +404 -0
  886. package/.claude/checkpoints/summary-session-20250812-154646.md +588 -0
  887. package/.claude/checkpoints/summary-session-20250812-154825.md +414 -0
  888. package/.claude/checkpoints/summary-session-20250812-155238.md +431 -0
  889. package/.claude/checkpoints/summary-session-20250812-155441.md +428 -0
  890. package/.claude/checkpoints/summary-session-20250812-155903.md +450 -0
  891. package/.claude/checkpoints/summary-session-20250812-160453.md +451 -0
  892. package/.claude/checkpoints/summary-session-20250812-161936.md +432 -0
  893. package/.claude/checkpoints/summary-session-20250812-164725.md +454 -0
  894. package/.claude/checkpoints/summary-session-20250812-165624.md +460 -0
  895. package/.claude/checkpoints/summary-session-20250812-170545.md +563 -0
  896. package/.claude/checkpoints/summary-session-20250812-172533.md +630 -0
  897. package/.claude/checkpoints/summary-session-20250812-173803.md +652 -0
  898. package/.claude/checkpoints/summary-session-20250812-174256.md +652 -0
  899. package/.claude/checkpoints/summary-session-20250812-175343.md +610 -0
  900. package/.claude/checkpoints/summary-session-20250812-175952.md +603 -0
  901. package/.claude/checkpoints/summary-session-20250812-180342.md +566 -0
  902. package/.claude/checkpoints/summary-session-20250812-180929.md +537 -0
  903. package/.claude/checkpoints/summary-session-20250812-181809.md +559 -0
  904. package/.claude/checkpoints/summary-session-20250812-182341.md +571 -0
  905. package/.claude/checkpoints/summary-session-20250812-182417.md +578 -0
  906. package/.claude/checkpoints/summary-session-20250812-183749.md +630 -0
  907. package/.claude/checkpoints/summary-session-20250812-184319.md +654 -0
  908. package/.claude/checkpoints/summary-session-20250812-184344.md +657 -0
  909. package/.claude/checkpoints/summary-session-20250812-184627.md +668 -0
  910. package/.claude/checkpoints/summary-session-20250812-185625.md +707 -0
  911. package/.claude/checkpoints/summary-session-20250812-185643.md +710 -0
  912. package/.claude/checkpoints/summary-session-20250812-185822.md +705 -0
  913. package/.claude/checkpoints/summary-session-20250812-185841.md +708 -0
  914. package/.claude/checkpoints/summary-session-20250812-190006.md +710 -0
  915. package/.claude/checkpoints/summary-session-20250812-190056.md +720 -0
  916. package/.claude/checkpoints/summary-session-20250812-190135.md +732 -0
  917. package/.claude/checkpoints/summary-session-20250812-190233.md +738 -0
  918. package/.claude/checkpoints/summary-session-20250812-190433.md +744 -0
  919. package/.claude/checkpoints/summary-session-20250812-190613.md +762 -0
  920. package/.claude/checkpoints/summary-session-20250812-190623.md +764 -0
  921. package/.claude/checkpoints/summary-session-20250812-190657.md +770 -0
  922. package/.claude/checkpoints/summary-session-20250812-190730.md +775 -0
  923. package/.claude/checkpoints/summary-session-20250812-190752.md +780 -0
  924. package/.claude/checkpoints/summary-session-20250812-190814.md +783 -0
  925. package/.claude/checkpoints/summary-session-20250812-190902.md +788 -0
  926. package/.claude/checkpoints/summary-session-20250812-191042.md +788 -0
  927. package/.claude/checkpoints/summary-session-20250812-191408.md +806 -0
  928. package/.claude/checkpoints/summary-session-20250812-191414.md +809 -0
  929. package/.claude/checkpoints/summary-session-20250812-191631.md +813 -0
  930. package/.claude/checkpoints/summary-session-20250812-191636.md +816 -0
  931. package/.claude/checkpoints/summary-session-20250812-191645.md +818 -0
  932. package/.claude/checkpoints/summary-session-20250812-191716.md +822 -0
  933. package/.claude/checkpoints/summary-session-20250812-191736.md +825 -0
  934. package/.claude/checkpoints/summary-session-20250812-191906.md +828 -0
  935. package/.claude/checkpoints/summary-session-20250812-191916.md +831 -0
  936. package/.claude/checkpoints/summary-session-20250812-192009.md +838 -0
  937. package/.claude/checkpoints/summary-session-20250812-192021.md +840 -0
  938. package/.claude/checkpoints/summary-session-20250812-192036.md +843 -0
  939. package/.claude/checkpoints/summary-session-20250812-192052.md +845 -0
  940. package/.claude/checkpoints/summary-session-20250812-192653.md +848 -0
  941. package/.claude/checkpoints/summary-session-20250812-193203.md +848 -0
  942. package/.claude/checkpoints/summary-session-20250812-193528.md +843 -0
  943. package/.claude/checkpoints/summary-session-20250812-193848.md +850 -0
  944. package/.claude/checkpoints/summary-session-20250812-194751.md +872 -0
  945. package/.claude/checkpoints/summary-session-20250812-195642.md +882 -0
  946. package/.claude/checkpoints/summary-session-20250812-195832.md +897 -0
  947. package/.claude/checkpoints/summary-session-20250812-220533.md +673 -0
  948. package/.claude/checkpoints/summary-session-20250812-221314.md +685 -0
  949. package/.claude/checkpoints/summary-session-20250812-221712.md +714 -0
  950. package/.claude/checkpoints/summary-session-20250812-223458.md +729 -0
  951. package/.claude/checkpoints/summary-session-20250813-143613.md +555 -0
  952. package/.claude/checkpoints/summary-session-20250813-150640.md +550 -0
  953. package/.claude/checkpoints/summary-session-20250813-151139.md +563 -0
  954. package/.claude/checkpoints/summary-session-20250813-160651.md +468 -0
  955. package/.claude/checkpoints/summary-session-20250813-180939.md +358 -0
  956. package/.claude/checkpoints/summary-session-20250813-190738.md +223 -0
  957. package/.claude/checkpoints/summary-session-20250813-190921.md +222 -0
  958. package/.claude/checkpoints/summary-session-20250813-201703.md +136 -0
  959. package/.claude/checkpoints/summary-session-20250813-202224.md +159 -0
  960. package/.claude/checkpoints/summary-session-20250813-202247.md +161 -0
  961. package/.claude/checkpoints/summary-session-20250813-204113.md +253 -0
  962. package/.claude/checkpoints/summary-session-20250813-204229.md +258 -0
  963. package/.claude/checkpoints/summary-session-20250813-210008.md +263 -0
  964. package/.claude/checkpoints/summary-session-20250813-210240.md +272 -0
  965. package/.claude/checkpoints/summary-session-20250813-210745.md +283 -0
  966. package/.claude/checkpoints/summary-session-20250813-211415.md +279 -0
  967. package/.claude/checkpoints/task-1754424032.json +1 -0
  968. package/.claude/checkpoints/task-1754424181.json +1 -0
  969. package/.claude/checkpoints/task-1754487377.json +1 -0
  970. package/.claude/checkpoints/task-1754487387.json +1 -0
  971. package/.claude/checkpoints/task-1754487396.json +1 -0
  972. package/.claude/checkpoints/task-1754487449.json +1 -0
  973. package/.claude/checkpoints/task-1754487462.json +1 -0
  974. package/.claude/checkpoints/task-1754487493.json +1 -0
  975. package/.claude/checkpoints/task-1754487569.json +1 -0
  976. package/.claude/checkpoints/task-1754487622.json +1 -0
  977. package/.claude/checkpoints/task-1754488647.json +1 -0
  978. package/.claude/checkpoints/task-1754489012.json +1 -0
  979. package/.claude/checkpoints/task-1754570662.json +1 -0
  980. package/.claude/checkpoints/task-1754571217.json +1 -0
  981. package/.claude/checkpoints/task-1754572538.json +1 -0
  982. package/.claude/checkpoints/task-1754572705.json +1 -0
  983. package/.claude/checkpoints/task-1754572868.json +1 -0
  984. package/.claude/checkpoints/task-1754573119.json +1 -0
  985. package/.claude/checkpoints/task-1754573265.json +1 -0
  986. package/.claude/checkpoints/task-1754575439.json +1 -0
  987. package/.claude/checkpoints/task-1754575679.json +1 -0
  988. package/.claude/checkpoints/task-1754575754.json +1 -0
  989. package/.claude/checkpoints/task-1754576495.json +1 -0
  990. package/.claude/checkpoints/task-1754576562.json +1 -0
  991. package/.claude/checkpoints/task-1754576677.json +1 -0
  992. package/.claude/checkpoints/task-1754576693.json +1 -0
  993. package/.claude/checkpoints/task-1754576714.json +1 -0
  994. package/.claude/checkpoints/task-1754576740.json +1 -0
  995. package/.claude/checkpoints/task-1754576766.json +1 -0
  996. package/.claude/checkpoints/task-1754576773.json +1 -0
  997. package/.claude/checkpoints/task-1754576824.json +1 -0
  998. package/.claude/checkpoints/task-1754576862.json +1 -0
  999. package/.claude/checkpoints/task-1754576941.json +1 -0
  1000. package/.claude/checkpoints/task-1754576978.json +1 -0
  1001. package/.claude/checkpoints/task-1754583140.json +1 -0
  1002. package/.claude/checkpoints/task-1754583520.json +1 -0
  1003. package/.claude/checkpoints/task-1754584007.json +1 -0
  1004. package/.claude/checkpoints/task-1754584636.json +1 -0
  1005. package/.claude/checkpoints/task-1754584927.json +1 -0
  1006. package/.claude/checkpoints/task-1754586868.json +1 -0
  1007. package/.claude/checkpoints/task-1754587664.json +1 -0
  1008. package/.claude/checkpoints/task-1754921613.json +1 -0
  1009. package/.claude/checkpoints/task-1754921718.json +1 -0
  1010. package/.claude/checkpoints/task-1754923193.json +1 -0
  1011. package/.claude/checkpoints/task-1754938396.json +1 -0
  1012. package/.claude/checkpoints/task-1754938548.json +1 -0
  1013. package/.claude/checkpoints/task-1754938627.json +1 -0
  1014. package/.claude/checkpoints/task-1754938699.json +1 -0
  1015. package/.claude/checkpoints/task-1754938774.json +1 -0
  1016. package/.claude/checkpoints/task-1754939210.json +1 -0
  1017. package/.claude/checkpoints/task-1754941440.json +1 -0
  1018. package/.claude/checkpoints/task-1754943313.json +1 -0
  1019. package/.claude/checkpoints/task-1754944054.json +1 -0
  1020. package/.claude/checkpoints/task-1754944879.json +1 -0
  1021. package/.claude/checkpoints/task-1754945703.json +1 -0
  1022. package/.claude/checkpoints/task-1754945968.json +1 -0
  1023. package/.claude/checkpoints/task-1754945989.json +1 -0
  1024. package/.claude/checkpoints/task-1754946024.json +1 -0
  1025. package/.claude/checkpoints/task-1754946389.json +1 -0
  1026. package/.claude/checkpoints/task-1754947053.json +1 -0
  1027. package/.claude/checkpoints/task-1754947196.json +1 -0
  1028. package/.claude/checkpoints/task-1754947254.json +1 -0
  1029. package/.claude/checkpoints/task-1754947475.json +1 -0
  1030. package/.claude/checkpoints/task-1754948101.json +1 -0
  1031. package/.claude/checkpoints/task-1754948249.json +1 -0
  1032. package/.claude/checkpoints/task-1754949040.json +1 -0
  1033. package/.claude/checkpoints/task-1754949127.json +1 -0
  1034. package/.claude/checkpoints/task-1754966099.json +1 -0
  1035. package/.claude/checkpoints/task-1755008137.json +1 -0
  1036. package/.claude/checkpoints/task-1755008271.json +1 -0
  1037. package/.claude/checkpoints/task-1755008660.json +1 -0
  1038. package/.claude/checkpoints/task-1755008900.json +1 -0
  1039. package/.claude/checkpoints/task-1755009103.json +1 -0
  1040. package/.claude/checkpoints/task-1755009368.json +1 -0
  1041. package/.claude/checkpoints/task-1755009415.json +1 -0
  1042. package/.claude/checkpoints/task-1755009426.json +1 -0
  1043. package/.claude/checkpoints/task-1755009482.json +1 -0
  1044. package/.claude/checkpoints/task-1755010109.json +1 -0
  1045. package/.claude/checkpoints/task-1755010637.json +1 -0
  1046. package/.claude/checkpoints/task-1755010833.json +1 -0
  1047. package/.claude/checkpoints/task-1755010934.json +1 -0
  1048. package/.claude/checkpoints/task-1755011155.json +1 -0
  1049. package/.claude/checkpoints/task-1755011183.json +1 -0
  1050. package/.claude/checkpoints/task-1755011219.json +1 -0
  1051. package/.claude/checkpoints/task-1755011239.json +1 -0
  1052. package/.claude/checkpoints/task-1755011415.json +1 -0
  1053. package/.claude/checkpoints/task-1755012643.json +1 -0
  1054. package/.claude/checkpoints/task-1755012772.json +1 -0
  1055. package/.claude/checkpoints/task-1755013067.json +1 -0
  1056. package/.claude/checkpoints/task-1755013154.json +1 -0
  1057. package/.claude/checkpoints/task-1755013256.json +1 -0
  1058. package/.claude/checkpoints/task-1755013542.json +1 -0
  1059. package/.claude/checkpoints/task-1755013620.json +1 -0
  1060. package/.claude/checkpoints/task-1755013667.json +1 -0
  1061. package/.claude/checkpoints/task-1755013749.json +1 -0
  1062. package/.claude/checkpoints/task-1755013978.json +1 -0
  1063. package/.claude/checkpoints/task-1755014033.json +1 -0
  1064. package/.claude/checkpoints/task-1755014111.json +1 -0
  1065. package/.claude/checkpoints/task-1755014421.json +1 -0
  1066. package/.claude/checkpoints/task-1755015379.json +1 -0
  1067. package/.claude/checkpoints/task-1755016645.json +1 -0
  1068. package/.claude/checkpoints/task-1755016823.json +1 -0
  1069. package/.claude/checkpoints/task-1755017060.json +1 -0
  1070. package/.claude/checkpoints/task-1755017274.json +1 -0
  1071. package/.claude/checkpoints/task-1755017915.json +1 -0
  1072. package/.claude/checkpoints/task-1755018858.json +1 -0
  1073. package/.claude/checkpoints/task-1755019061.json +1 -0
  1074. package/.claude/checkpoints/task-1755019793.json +1 -0
  1075. package/.claude/checkpoints/task-1755020170.json +1 -0
  1076. package/.claude/checkpoints/task-1755020389.json +1 -0
  1077. package/.claude/checkpoints/task-1755020823.json +1 -0
  1078. package/.claude/checkpoints/task-1755021335.json +1 -0
  1079. package/.claude/checkpoints/task-1755021476.json +1 -0
  1080. package/.claude/checkpoints/task-1755021716.json +1 -0
  1081. package/.claude/checkpoints/task-1755021890.json +1 -0
  1082. package/.claude/checkpoints/task-1755022420.json +1 -0
  1083. package/.claude/checkpoints/task-1755022760.json +1 -0
  1084. package/.claude/checkpoints/task-1755022914.json +1 -0
  1085. package/.claude/checkpoints/task-1755023040.json +1 -0
  1086. package/.claude/checkpoints/task-1755023280.json +1 -0
  1087. package/.claude/checkpoints/task-1755023796.json +1 -0
  1088. package/.claude/checkpoints/task-1755023819.json +1 -0
  1089. package/.claude/checkpoints/task-1755023932.json +1 -0
  1090. package/.claude/checkpoints/task-1755024196.json +1 -0
  1091. package/.claude/checkpoints/task-1755024220.json +1 -0
  1092. package/.claude/checkpoints/task-1755024384.json +1 -0
  1093. package/.claude/checkpoints/task-1755024948.json +1 -0
  1094. package/.claude/checkpoints/task-1755024979.json +1 -0
  1095. package/.claude/checkpoints/task-1755024998.json +1 -0
  1096. package/.claude/checkpoints/task-1755025018.json +1 -0
  1097. package/.claude/checkpoints/task-1755025117.json +1 -0
  1098. package/.claude/checkpoints/task-1755025208.json +1 -0
  1099. package/.claude/checkpoints/task-1755025243.json +1 -0
  1100. package/.claude/checkpoints/task-1755025349.json +1 -0
  1101. package/.claude/checkpoints/task-1755025374.json +1 -0
  1102. package/.claude/checkpoints/task-1755025379.json +1 -0
  1103. package/.claude/checkpoints/task-1755025382.json +1 -0
  1104. package/.claude/checkpoints/task-1755025384.json +1 -0
  1105. package/.claude/checkpoints/task-1755025402.json +1 -0
  1106. package/.claude/checkpoints/task-1755025570.json +1 -0
  1107. package/.claude/checkpoints/task-1755025614.json +1 -0
  1108. package/.claude/checkpoints/task-1755025647.json +1 -0
  1109. package/.claude/checkpoints/task-1755025667.json +1 -0
  1110. package/.claude/checkpoints/task-1755025932.json +1 -0
  1111. package/.claude/checkpoints/task-1755026045.json +1 -0
  1112. package/.claude/checkpoints/task-1755026051.json +1 -0
  1113. package/.claude/checkpoints/task-1755026064.json +1 -0
  1114. package/.claude/checkpoints/task-1755026105.json +1 -0
  1115. package/.claude/checkpoints/task-1755026188.json +1 -0
  1116. package/.claude/checkpoints/task-1755026203.json +1 -0
  1117. package/.claude/checkpoints/task-1755026233.json +1 -0
  1118. package/.claude/checkpoints/task-1755026243.json +1 -0
  1119. package/.claude/checkpoints/task-1755026344.json +1 -0
  1120. package/.claude/checkpoints/task-1755026353.json +1 -0
  1121. package/.claude/checkpoints/task-1755026394.json +1 -0
  1122. package/.claude/checkpoints/task-1755026417.json +1 -0
  1123. package/.claude/checkpoints/task-1755026428.json +1 -0
  1124. package/.claude/checkpoints/task-1755026695.json +1 -0
  1125. package/.claude/checkpoints/task-1755026957.json +1 -0
  1126. package/.claude/checkpoints/task-1755027224.json +1 -0
  1127. package/.claude/checkpoints/task-1755027440.json +1 -0
  1128. package/.claude/checkpoints/task-1755027646.json +1 -0
  1129. package/.claude/checkpoints/task-1755027935.json +1 -0
  1130. package/.claude/checkpoints/task-1755028148.json +1 -0
  1131. package/.claude/checkpoints/task-1755028616.json +1 -0
  1132. package/.claude/checkpoints/task-1755036055.json +1 -0
  1133. package/.claude/checkpoints/task-1755036596.json +1 -0
  1134. package/.claude/checkpoints/task-1755036900.json +1 -0
  1135. package/.claude/checkpoints/task-1755037864.json +1 -0
  1136. package/.claude/checkpoints/task-1755095595.json +1 -0
  1137. package/.claude/checkpoints/task-1755095867.json +1 -0
  1138. package/.claude/checkpoints/task-1755096216.json +1 -0
  1139. package/.claude/checkpoints/task-1755096298.json +1 -0
  1140. package/.claude/checkpoints/task-1755096548.json +1 -0
  1141. package/.claude/checkpoints/task-1755097018.json +1 -0
  1142. package/.claude/checkpoints/task-1755097756.json +1 -0
  1143. package/.claude/checkpoints/task-1755101034.json +1 -0
  1144. package/.claude/checkpoints/task-1755108293.json +1 -0
  1145. package/.claude/checkpoints/task-1755108834.json +1 -0
  1146. package/.claude/checkpoints/task-1755111496.json +1 -0
  1147. package/.claude/checkpoints/task-1755111507.json +1 -0
  1148. package/.claude/checkpoints/task-1755111516.json +1 -0
  1149. package/.claude/checkpoints/task-1755111541.json +1 -0
  1150. package/.claude/checkpoints/task-1755111574.json +1 -0
  1151. package/.claude/checkpoints/task-1755111589.json +1 -0
  1152. package/.claude/checkpoints/task-1755111956.json +1 -0
  1153. package/.claude/checkpoints/task-1755112153.json +1 -0
  1154. package/.claude/checkpoints/task-1755115641.json +1 -0
  1155. package/.claude/checkpoints/task-1755116206.json +1 -0
  1156. package/.claude/checkpoints/task-1755116261.json +1 -0
  1157. package/.claude/checkpoints/task-1755116559.json +1 -0
  1158. package/.claude/checkpoints/task-1755116593.json +1 -0
  1159. package/.claude/checkpoints/task-1755116636.json +1 -0
  1160. package/.claude/checkpoints/task-1755116719.json +1 -0
  1161. package/.claude/checkpoints/task-1755116945.json +1 -0
  1162. package/.claude/checkpoints/task-1755117389.json +1 -0
  1163. package/.claude/checkpoints/task-1755117449.json +1 -0
  1164. package/.claude/checkpoints/task-1755117467.json +1 -0
  1165. package/.claude/checkpoints/task-1755117549.json +1 -0
  1166. package/.claude/checkpoints/task-1755117629.json +1 -0
  1167. package/.claude/checkpoints/task-1755117663.json +1 -0
  1168. package/.claude/checkpoints/task-1755117726.json +1 -0
  1169. package/.claude/checkpoints/task-1755118725.json +1 -0
  1170. package/.claude/checkpoints/task-1755118749.json +1 -0
  1171. package/.claude/checkpoints/task-1755118878.json +1 -0
  1172. package/.claude/checkpoints/task-1755118897.json +1 -0
  1173. package/.claude/checkpoints/task-1755118913.json +1 -0
  1174. package/.claude/checkpoints/task-1755118941.json +1 -0
  1175. package/.claude/checkpoints/task-1755119123.json +1 -0
  1176. package/.claude/checkpoints/task-1755119346.json +1 -0
  1177. package/.claude/checkpoints/task-1755119692.json +1 -0
  1178. package/.claude/checkpoints/task-1755121935.json +1 -0
  1179. package/.claude/checkpoints/task-1755121959.json +1 -0
  1180. package/.claude/checkpoints/task-1755122026.json +1 -0
  1181. package/.claude/commands/improved-workflows.js +76 -0
  1182. package/.claude/commands/pair/README.md +261 -0
  1183. package/.claude/commands/pair/commands.md +546 -0
  1184. package/.claude/commands/pair/config.md +510 -0
  1185. package/.claude/commands/pair/examples.md +512 -0
  1186. package/.claude/commands/pair/modes.md +348 -0
  1187. package/.claude/commands/pair/session.md +407 -0
  1188. package/.claude/commands/pair/start.md +209 -0
  1189. package/.claude/commands/stream-chain/pipeline.md +121 -0
  1190. package/.claude/commands/stream-chain/run.md +70 -0
  1191. package/.claude/commands/truth/start.md +143 -0
  1192. package/.claude/commands/verify/check.md +50 -0
  1193. package/.claude/commands/verify/start.md +128 -0
  1194. package/.claude/config/verification.json +41 -0
  1195. package/.claude/helpers/truth-score.js +323 -0
  1196. package/.claude/helpers/verify.sh +170 -0
  1197. package/.claude/settings.json +4 -0
  1198. package/.claude/templates/CLAUDE_VERIFIED.md +329 -0
  1199. package/CHANGELOG.md +352 -0
  1200. package/README.md +2 -2
  1201. package/bin/claude-flow +1 -1
  1202. package/bin/claude-flow.js +8 -0
  1203. package/package.json +1 -1
  1204. package/scripts/validation-summary.ts +408 -0
  1205. package/src/cli/command-registry.js +223 -0
  1206. package/src/cli/commands/verification.ts +353 -0
  1207. package/src/cli/help-formatter.js +5 -0
  1208. package/src/cli/help-text.js +95 -1
  1209. package/src/cli/simple-commands/analysis.js +266 -214
  1210. package/src/cli/simple-commands/claude-telemetry.js +308 -0
  1211. package/src/cli/simple-commands/claude-track.js +102 -0
  1212. package/src/cli/simple-commands/hive-mind.js +14 -11
  1213. package/src/cli/simple-commands/init/help.js +11 -0
  1214. package/src/cli/simple-commands/init/index.js +80 -29
  1215. package/src/cli/simple-commands/init/template-copier.js +30 -11
  1216. package/src/cli/simple-commands/init/templates/verification-claude-md.js +433 -0
  1217. package/src/cli/simple-commands/pair-autofix-only.js +757 -0
  1218. package/src/cli/simple-commands/pair-basic.js +732 -0
  1219. package/src/cli/simple-commands/pair-enhanced.backup.js +1066 -0
  1220. package/src/cli/simple-commands/pair-old.js +607 -0
  1221. package/src/cli/simple-commands/pair-working.js +839 -0
  1222. package/src/cli/simple-commands/pair.js +839 -0
  1223. package/src/cli/simple-commands/stream-chain-clean.js +217 -0
  1224. package/src/cli/simple-commands/stream-chain-fixed.js +78 -0
  1225. package/src/cli/simple-commands/stream-chain-real.js +415 -0
  1226. package/src/cli/simple-commands/stream-chain-working.js +327 -0
  1227. package/src/cli/simple-commands/stream-chain.js +495 -0
  1228. package/src/cli/simple-commands/stream-chain.js.backup +823 -0
  1229. package/src/cli/simple-commands/swarm.js +29 -14
  1230. package/src/cli/simple-commands/token-tracker.js +369 -0
  1231. package/src/cli/simple-commands/train-and-stream.js +357 -0
  1232. package/src/cli/simple-commands/training-pipeline-old.js.bak +763 -0
  1233. package/src/cli/simple-commands/training-pipeline.js +861 -0
  1234. package/src/cli/simple-commands/verification-hooks.js +341 -0
  1235. package/src/cli/simple-commands/verification-integration.js +472 -0
  1236. package/src/cli/simple-commands/verification-training-integration.js +643 -0
  1237. package/src/cli/simple-commands/verification.js +532 -0
  1238. package/src/core/version.js +1 -1
  1239. package/src/hooks/index.ts +30 -1
  1240. package/src/neural/NeuralDomainMapper.ts +1679 -0
  1241. package/src/neural/examples.md +587 -0
  1242. package/src/neural/index.ts +469 -0
  1243. package/src/neural/integration.ts +826 -0
  1244. package/src/verification/README.md +295 -0
  1245. package/src/verification/agent-scorer.ts +940 -0
  1246. package/src/verification/alert-manager.ts +1345 -0
  1247. package/src/verification/api/graphql/resolvers.js +1018 -0
  1248. package/src/verification/api/graphql/schema.graphql +638 -0
  1249. package/src/verification/api/openapi/specification.yaml +1150 -0
  1250. package/src/verification/api/routes/verification.js +771 -0
  1251. package/src/verification/api/types/index.ts +152 -0
  1252. package/src/verification/api/websocket/truth-monitor.js +519 -0
  1253. package/src/verification/architecture.md +842 -0
  1254. package/src/verification/checkpoint-manager.ts +649 -0
  1255. package/src/verification/cli-integration.ts +562 -0
  1256. package/src/verification/dashboard-exporter.ts +1174 -0
  1257. package/src/verification/examples.ts +559 -0
  1258. package/src/verification/hooks.ts +1273 -0
  1259. package/src/verification/index.ts +123 -0
  1260. package/src/verification/interfaces.ts +833 -0
  1261. package/src/verification/middleware.ts +698 -0
  1262. package/src/verification/rollback-engine.ts +636 -0
  1263. package/src/verification/rollback.ts +2120 -0
  1264. package/src/verification/security-bypass-test.ts +744 -0
  1265. package/src/verification/security.ts +1426 -0
  1266. package/src/verification/simple-hooks.ts +221 -0
  1267. package/src/verification/system-tracker.ts +935 -0
  1268. package/src/verification/telemetry.ts +1421 -0
  1269. package/src/verification/test-verification.ts +47 -0
  1270. package/src/verification/tests/e2e/verification-pipeline.test.ts +1119 -0
  1271. package/src/verification/tests/integration/cross-agent-communication.test.ts +730 -0
  1272. package/src/verification/tests/mocks/false-reporting-scenarios.test.ts +1060 -0
  1273. package/src/verification/tests/performance/verification-overhead.test.ts +739 -0
  1274. package/src/verification/tests/unit/truth-scoring.test.ts +507 -0
  1275. package/src/verification/tests.ts +747 -0
  1276. package/src/verification/truth-scorer.ts +746 -0
  1277. package/src/verification/types.ts +1099 -0
  1278. package/src/verification/verification-pipeline.ts +1080 -0
@@ -0,0 +1,1345 @@
1
+ /**
2
+ * Truth Alert Manager - Advanced alerting and notification system
3
+ *
4
+ * Provides comprehensive threshold monitoring, intelligent alert routing,
5
+ * escalation management, and automated remediation capabilities.
6
+ */
7
+
8
+ import type { ILogger } from '../core/logger.js';
9
+ import type { IEventBus } from '../core/event-bus.js';
10
+ import type {
11
+ TruthMetric,
12
+ TruthAlert,
13
+ AlertThreshold,
14
+ AlertAction,
15
+ EscalationLevel,
16
+ TruthAlertType,
17
+ TruthTelemetryConfig,
18
+ } from './telemetry.js';
19
+
20
+ export interface AlertRule {
21
+ id: string;
22
+ name: string;
23
+ description: string;
24
+ enabled: boolean;
25
+
26
+ // Condition definition
27
+ metric: string;
28
+ operator: 'gt' | 'lt' | 'eq' | 'gte' | 'lte' | 'ne' | 'change' | 'rate';
29
+ threshold: number;
30
+ duration: number; // How long condition must persist (ms)
31
+
32
+ // Alert configuration
33
+ severity: 'info' | 'warning' | 'critical' | 'emergency';
34
+ category: TruthAlertType;
35
+ priority: number; // 1-10, higher is more urgent
36
+
37
+ // Context and filtering
38
+ filters: Record<string, any>;
39
+ conditions: AlertCondition[];
40
+
41
+ // Actions and escalation
42
+ actions: AlertAction[];
43
+ escalationPath: EscalationLevel[];
44
+ suppressions: AlertSuppression[];
45
+
46
+ // Metadata
47
+ tags: Record<string, string>;
48
+ createdBy: string;
49
+ createdAt: Date;
50
+ lastModified: Date;
51
+ }
52
+
53
+ export interface AlertCondition {
54
+ field: string;
55
+ operator: string;
56
+ value: any;
57
+ logicalOperator?: 'AND' | 'OR';
58
+ }
59
+
60
+ export interface AlertSuppression {
61
+ id: string;
62
+ condition: string;
63
+ startTime: Date;
64
+ endTime: Date;
65
+ reason: string;
66
+ createdBy: string;
67
+ }
68
+
69
+ export interface AlertChannel {
70
+ id: string;
71
+ name: string;
72
+ type: 'email' | 'slack' | 'webhook' | 'sms' | 'teams' | 'discord' | 'pagerduty';
73
+ config: Record<string, any>;
74
+ enabled: boolean;
75
+ filters: AlertFilter[];
76
+ rateLimits: RateLimit[];
77
+ }
78
+
79
+ export interface AlertFilter {
80
+ field: string;
81
+ operator: string;
82
+ values: string[];
83
+ action: 'include' | 'exclude';
84
+ }
85
+
86
+ export interface RateLimit {
87
+ window: number; // time window in milliseconds
88
+ maxAlerts: number;
89
+ resetTime?: Date;
90
+ currentCount: number;
91
+ }
92
+
93
+ export interface AlertHistory {
94
+ alertId: string;
95
+ timestamp: Date;
96
+ action: 'created' | 'acknowledged' | 'resolved' | 'escalated' | 'suppressed';
97
+ actor: string;
98
+ details: Record<string, any>;
99
+ }
100
+
101
+ export interface AlertStatistics {
102
+ totalAlerts: number;
103
+ activeAlerts: number;
104
+ resolvedAlerts: number;
105
+ averageResolutionTime: number;
106
+ alertsByType: Record<string, number>;
107
+ alertsBySeverity: Record<string, number>;
108
+ topAlertSources: Array<{ source: string; count: number }>;
109
+ escalationRate: number;
110
+ falsePositiveRate: number;
111
+ }
112
+
113
+ export interface ThresholdGroup {
114
+ name: string;
115
+ thresholds: AlertThreshold[];
116
+ enabled: boolean;
117
+ scope: 'system' | 'agent' | 'task' | 'custom';
118
+ }
119
+
120
+ export class TruthAlertManager {
121
+ private config: TruthTelemetryConfig;
122
+ private logger: ILogger;
123
+ private eventBus: IEventBus;
124
+
125
+ // Alert management state
126
+ private alertRules = new Map<string, AlertRule>();
127
+ private activeAlerts = new Map<string, TruthAlert>();
128
+ private alertHistory: AlertHistory[] = [];
129
+ private alertChannels = new Map<string, AlertChannel>();
130
+ private suppressions = new Map<string, AlertSuppression>();
131
+
132
+ // Threshold monitoring
133
+ private thresholdGroups = new Map<string, ThresholdGroup>();
134
+ private metricStates = new Map<string, MetricState>();
135
+
136
+ // Processing state
137
+ private processingInterval?: NodeJS.Timeout;
138
+ private escalationInterval?: NodeJS.Timeout;
139
+ private cleanupInterval?: NodeJS.Timeout;
140
+
141
+ // Statistics
142
+ private statistics: AlertStatistics;
143
+
144
+ constructor(
145
+ config: TruthTelemetryConfig,
146
+ logger: ILogger,
147
+ eventBus: IEventBus
148
+ ) {
149
+ this.config = config;
150
+ this.logger = logger;
151
+ this.eventBus = eventBus;
152
+
153
+ this.statistics = this.initializeStatistics();
154
+ this.initializeDefaultRules();
155
+ this.initializeDefaultChannels();
156
+ }
157
+
158
+ async initialize(): Promise<void> {
159
+ this.logger.info('Initializing Truth Alert Manager', {
160
+ alertEnabled: this.config.alertEnabled,
161
+ thresholds: this.config.alertThresholds,
162
+ });
163
+
164
+ // Start processing loops
165
+ this.startAlertProcessing();
166
+ this.startEscalationProcessing();
167
+ this.startCleanupProcessing();
168
+
169
+ // Load configuration
170
+ await this.loadAlertConfiguration();
171
+
172
+ this.logger.info('Truth Alert Manager initialized successfully', {
173
+ rules: this.alertRules.size,
174
+ channels: this.alertChannels.size,
175
+ });
176
+ }
177
+
178
+ async shutdown(): Promise<void> {
179
+ this.logger.info('Shutting down Truth Alert Manager');
180
+
181
+ // Stop processing intervals
182
+ if (this.processingInterval) clearInterval(this.processingInterval);
183
+ if (this.escalationInterval) clearInterval(this.escalationInterval);
184
+ if (this.cleanupInterval) clearInterval(this.cleanupInterval);
185
+
186
+ // Save state
187
+ await this.saveAlertConfiguration();
188
+
189
+ this.logger.info('Truth Alert Manager shutdown complete');
190
+ }
191
+
192
+ // ========================================================================================
193
+ // Alert Processing
194
+ // ========================================================================================
195
+
196
+ async checkThresholds(metric: TruthMetric): Promise<void> {
197
+ if (!this.config.alertEnabled) return;
198
+
199
+ try {
200
+ // Update metric state
201
+ await this.updateMetricState(metric);
202
+
203
+ // Check all applicable rules
204
+ const applicableRules = this.getApplicableRules(metric);
205
+
206
+ for (const rule of applicableRules) {
207
+ await this.evaluateRule(rule, metric);
208
+ }
209
+
210
+ } catch (error) {
211
+ this.logger.error('Error checking thresholds', { metricId: metric.id, error });
212
+ }
213
+ }
214
+
215
+ private async updateMetricState(metric: TruthMetric): Promise<void> {
216
+ const key = `${metric.agentId}:${metric.metricType}`;
217
+
218
+ let state = this.metricStates.get(key);
219
+ if (!state) {
220
+ state = {
221
+ key,
222
+ currentValue: metric.value,
223
+ previousValue: metric.value,
224
+ lastUpdate: metric.timestamp,
225
+ changeRate: 0,
226
+ samples: [metric.value],
227
+ thresholdViolations: new Map(),
228
+ };
229
+ this.metricStates.set(key, state);
230
+ } else {
231
+ // Update state
232
+ state.previousValue = state.currentValue;
233
+ state.currentValue = metric.value;
234
+ state.lastUpdate = metric.timestamp;
235
+
236
+ // Calculate change rate (per hour)
237
+ const timeDiff = metric.timestamp.getTime() - state.lastUpdate.getTime();
238
+ if (timeDiff > 0) {
239
+ const valueDiff = metric.value - state.previousValue;
240
+ state.changeRate = (valueDiff / timeDiff) * (60 * 60 * 1000); // per hour
241
+ }
242
+
243
+ // Update samples (keep last 100)
244
+ state.samples.push(metric.value);
245
+ if (state.samples.length > 100) {
246
+ state.samples = state.samples.slice(-100);
247
+ }
248
+ }
249
+ }
250
+
251
+ private getApplicableRules(metric: TruthMetric): AlertRule[] {
252
+ return Array.from(this.alertRules.values()).filter(rule => {
253
+ if (!rule.enabled) return false;
254
+
255
+ // Check if rule applies to this metric
256
+ if (rule.metric !== metric.metricType && rule.metric !== '*') return false;
257
+
258
+ // Check filters
259
+ if (!this.matchesFilters(metric, rule.filters)) return false;
260
+
261
+ // Check conditions
262
+ if (!this.matchesConditions(metric, rule.conditions)) return false;
263
+
264
+ return true;
265
+ });
266
+ }
267
+
268
+ private async evaluateRule(rule: AlertRule, metric: TruthMetric): Promise<void> {
269
+ const key = `${metric.agentId}:${metric.metricType}`;
270
+ const state = this.metricStates.get(key);
271
+
272
+ if (!state) return;
273
+
274
+ // Evaluate threshold condition
275
+ const conditionMet = this.evaluateCondition(rule, metric, state);
276
+
277
+ if (conditionMet) {
278
+ await this.handleThresholdViolation(rule, metric, state);
279
+ } else {
280
+ await this.handleThresholdClearance(rule, metric, state);
281
+ }
282
+ }
283
+
284
+ private evaluateCondition(rule: AlertRule, metric: TruthMetric, state: MetricState): boolean {
285
+ const value = metric.value;
286
+ const threshold = rule.threshold;
287
+
288
+ switch (rule.operator) {
289
+ case 'gt': return value > threshold;
290
+ case 'gte': return value >= threshold;
291
+ case 'lt': return value < threshold;
292
+ case 'lte': return value <= threshold;
293
+ case 'eq': return value === threshold;
294
+ case 'ne': return value !== threshold;
295
+ case 'change': return Math.abs(value - state.previousValue) > threshold;
296
+ case 'rate': return Math.abs(state.changeRate) > threshold;
297
+ default: return false;
298
+ }
299
+ }
300
+
301
+ private async handleThresholdViolation(
302
+ rule: AlertRule,
303
+ metric: TruthMetric,
304
+ state: MetricState
305
+ ): Promise<void> {
306
+ const violationKey = `${rule.id}:${state.key}`;
307
+ let violation = state.thresholdViolations.get(violationKey);
308
+
309
+ if (!violation) {
310
+ // New violation
311
+ violation = {
312
+ ruleId: rule.id,
313
+ startTime: metric.timestamp,
314
+ lastSeen: metric.timestamp,
315
+ count: 1,
316
+ alertId: null,
317
+ };
318
+ state.thresholdViolations.set(violationKey, violation);
319
+ } else {
320
+ // Existing violation
321
+ violation.lastSeen = metric.timestamp;
322
+ violation.count++;
323
+ }
324
+
325
+ // Check if violation has persisted long enough
326
+ const duration = metric.timestamp.getTime() - violation.startTime.getTime();
327
+
328
+ if (duration >= rule.duration && !violation.alertId) {
329
+ // Create alert
330
+ const alertId = await this.createAlert(rule, metric, violation);
331
+ violation.alertId = alertId;
332
+ }
333
+ }
334
+
335
+ private async handleThresholdClearance(
336
+ rule: AlertRule,
337
+ metric: TruthMetric,
338
+ state: MetricState
339
+ ): Promise<void> {
340
+ const violationKey = `${rule.id}:${state.key}`;
341
+ const violation = state.thresholdViolations.get(violationKey);
342
+
343
+ if (violation && violation.alertId) {
344
+ // Resolve the alert
345
+ await this.resolveAlert(violation.alertId, 'threshold_cleared');
346
+ }
347
+
348
+ // Clear violation
349
+ state.thresholdViolations.delete(violationKey);
350
+ }
351
+
352
+ private async createAlert(
353
+ rule: AlertRule,
354
+ metric: TruthMetric,
355
+ violation: ThresholdViolation
356
+ ): Promise<string> {
357
+ const alertId = `alert-${Date.now()}-${Math.random().toString(36).slice(2)}`;
358
+
359
+ const alert: TruthAlert = {
360
+ id: alertId,
361
+ timestamp: new Date(),
362
+ severity: rule.severity,
363
+ type: rule.category,
364
+ message: this.generateAlertMessage(rule, metric),
365
+ source: `agent:${metric.agentId}`,
366
+ context: {
367
+ ruleId: rule.id,
368
+ ruleName: rule.name,
369
+ metricType: metric.metricType,
370
+ metricValue: metric.value,
371
+ threshold: rule.threshold,
372
+ operator: rule.operator,
373
+ duration: violation.lastSeen.getTime() - violation.startTime.getTime(),
374
+ violationCount: violation.count,
375
+ agentId: metric.agentId,
376
+ taskId: metric.taskId,
377
+ ...metric.context,
378
+ },
379
+ thresholds: [
380
+ {
381
+ metric: rule.metric,
382
+ operator: rule.operator,
383
+ value: rule.threshold,
384
+ duration: rule.duration,
385
+ severity: rule.severity,
386
+ },
387
+ ],
388
+ actions: [...rule.actions],
389
+ escalationPath: [...rule.escalationPath],
390
+ resolved: false,
391
+ };
392
+
393
+ this.activeAlerts.set(alertId, alert);
394
+
395
+ // Update statistics
396
+ this.statistics.totalAlerts++;
397
+ this.statistics.activeAlerts++;
398
+ this.statistics.alertsByType[alert.type] = (this.statistics.alertsByType[alert.type] || 0) + 1;
399
+ this.statistics.alertsBySeverity[alert.severity] = (this.statistics.alertsBySeverity[alert.severity] || 0) + 1;
400
+
401
+ // Log alert creation
402
+ this.logger.warn('Truth alert created', {
403
+ alertId,
404
+ rule: rule.name,
405
+ metric: metric.metricType,
406
+ value: metric.value,
407
+ threshold: rule.threshold,
408
+ agent: metric.agentId,
409
+ });
410
+
411
+ // Add to history
412
+ this.addToHistory(alertId, 'created', 'system', { rule: rule.name });
413
+
414
+ // Emit event
415
+ this.eventBus.emit('truth-alert:created', { alert, rule, metric });
416
+
417
+ // Execute alert actions
418
+ await this.executeAlertActions(alert);
419
+
420
+ return alertId;
421
+ }
422
+
423
+ async executeAlertActions(alert: TruthAlert): Promise<void> {
424
+ for (const action of alert.actions) {
425
+ if (!action.enabled) continue;
426
+
427
+ try {
428
+ await this.executeAction(alert, action);
429
+ } catch (error) {
430
+ this.logger.error('Failed to execute alert action', {
431
+ alertId: alert.id,
432
+ actionType: action.type,
433
+ error,
434
+ });
435
+ }
436
+ }
437
+ }
438
+
439
+ private async executeAction(alert: TruthAlert, action: AlertAction): Promise<void> {
440
+ switch (action.type) {
441
+ case 'notify':
442
+ await this.sendNotification(alert, action);
443
+ break;
444
+
445
+ case 'escalate':
446
+ await this.escalateAlert(alert, action);
447
+ break;
448
+
449
+ case 'auto-remediate':
450
+ await this.autoRemediate(alert, action);
451
+ break;
452
+
453
+ case 'suspend':
454
+ await this.suspendAgent(alert, action);
455
+ break;
456
+
457
+ case 'restart':
458
+ await this.restartAgent(alert, action);
459
+ break;
460
+
461
+ default:
462
+ this.logger.warn('Unknown alert action type', { type: action.type });
463
+ }
464
+ }
465
+
466
+ // ========================================================================================
467
+ // Notification System
468
+ // ========================================================================================
469
+
470
+ private async sendNotification(alert: TruthAlert, action: AlertAction): Promise<void> {
471
+ const channelIds = action.config.channels || ['default'];
472
+
473
+ for (const channelId of channelIds) {
474
+ const channel = this.alertChannels.get(channelId);
475
+ if (!channel || !channel.enabled) continue;
476
+
477
+ // Check filters
478
+ if (!this.alertMatchesChannelFilters(alert, channel)) continue;
479
+
480
+ // Check rate limits
481
+ if (!this.checkRateLimit(channel, alert)) continue;
482
+
483
+ await this.sendToChannel(alert, channel);
484
+ }
485
+ }
486
+
487
+ private async sendToChannel(alert: TruthAlert, channel: AlertChannel): Promise<void> {
488
+ try {
489
+ switch (channel.type) {
490
+ case 'email':
491
+ await this.sendEmailNotification(alert, channel);
492
+ break;
493
+
494
+ case 'slack':
495
+ await this.sendSlackNotification(alert, channel);
496
+ break;
497
+
498
+ case 'webhook':
499
+ await this.sendWebhookNotification(alert, channel);
500
+ break;
501
+
502
+ case 'teams':
503
+ await this.sendTeamsNotification(alert, channel);
504
+ break;
505
+
506
+ case 'discord':
507
+ await this.sendDiscordNotification(alert, channel);
508
+ break;
509
+
510
+ case 'pagerduty':
511
+ await this.sendPagerDutyNotification(alert, channel);
512
+ break;
513
+
514
+ default:
515
+ this.logger.warn('Unknown channel type', { type: channel.type });
516
+ }
517
+
518
+ this.logger.info('Alert notification sent', {
519
+ alertId: alert.id,
520
+ channel: channel.name,
521
+ type: channel.type,
522
+ });
523
+
524
+ } catch (error) {
525
+ this.logger.error('Failed to send notification', {
526
+ alertId: alert.id,
527
+ channel: channel.name,
528
+ error,
529
+ });
530
+ }
531
+ }
532
+
533
+ // ========================================================================================
534
+ // Escalation Management
535
+ // ========================================================================================
536
+
537
+ private async escalateAlert(alert: TruthAlert, action: AlertAction): Promise<void> {
538
+ const escalationLevel = action.config.level || 1;
539
+
540
+ if (escalationLevel <= alert.escalationLevel) return; // Already escalated
541
+
542
+ alert.escalationLevel = escalationLevel;
543
+
544
+ // Find escalation configuration
545
+ const escalation = alert.escalationPath.find(e => e.level === escalationLevel);
546
+ if (!escalation) return;
547
+
548
+ // Check escalation conditions
549
+ if (!this.checkEscalationConditions(alert, escalation)) return;
550
+
551
+ // Update alert severity if needed
552
+ if (escalationLevel > 1) {
553
+ alert.severity = this.getEscalatedSeverity(alert.severity);
554
+ }
555
+
556
+ // Send escalation notifications
557
+ await this.sendEscalationNotifications(alert, escalation);
558
+
559
+ // Add to history
560
+ this.addToHistory(alert.id, 'escalated', 'system', {
561
+ level: escalationLevel,
562
+ targets: escalation.targets,
563
+ });
564
+
565
+ // Update statistics
566
+ this.statistics.escalationRate = this.calculateEscalationRate();
567
+
568
+ this.logger.warn('Alert escalated', {
569
+ alertId: alert.id,
570
+ level: escalationLevel,
571
+ severity: alert.severity,
572
+ });
573
+
574
+ this.eventBus.emit('truth-alert:escalated', { alert, escalationLevel });
575
+ }
576
+
577
+ private async sendEscalationNotifications(
578
+ alert: TruthAlert,
579
+ escalation: EscalationLevel
580
+ ): Promise<void> {
581
+ for (const target of escalation.targets) {
582
+ const channel = this.alertChannels.get(target);
583
+ if (channel && channel.enabled) {
584
+ await this.sendToChannel(alert, channel);
585
+ }
586
+ }
587
+ }
588
+
589
+ // ========================================================================================
590
+ // Auto-Remediation
591
+ // ========================================================================================
592
+
593
+ private async autoRemediate(alert: TruthAlert, action: AlertAction): Promise<void> {
594
+ const remediationType = action.config.type;
595
+
596
+ try {
597
+ switch (remediationType) {
598
+ case 'restart_agent':
599
+ await this.restartAgent(alert, action);
600
+ break;
601
+
602
+ case 'scale_resources':
603
+ await this.scaleResources(alert, action);
604
+ break;
605
+
606
+ case 'adjust_thresholds':
607
+ await this.adjustThresholds(alert, action);
608
+ break;
609
+
610
+ case 'redistribute_load':
611
+ await this.redistributeLoad(alert, action);
612
+ break;
613
+
614
+ case 'failover':
615
+ await this.initiateFailover(alert, action);
616
+ break;
617
+
618
+ default:
619
+ this.logger.warn('Unknown remediation type', { type: remediationType });
620
+ }
621
+
622
+ this.logger.info('Auto-remediation executed', {
623
+ alertId: alert.id,
624
+ type: remediationType,
625
+ });
626
+
627
+ } catch (error) {
628
+ this.logger.error('Auto-remediation failed', {
629
+ alertId: alert.id,
630
+ type: remediationType,
631
+ error,
632
+ });
633
+ }
634
+ }
635
+
636
+ private async restartAgent(alert: TruthAlert, action: AlertAction): Promise<void> {
637
+ const agentId = alert.context.agentId;
638
+ if (!agentId) return;
639
+
640
+ this.eventBus.emit('agent:restart-requested', {
641
+ agentId,
642
+ reason: 'automated_remediation',
643
+ alertId: alert.id,
644
+ });
645
+ }
646
+
647
+ private async suspendAgent(alert: TruthAlert, action: AlertAction): Promise<void> {
648
+ const agentId = alert.context.agentId;
649
+ if (!agentId) return;
650
+
651
+ this.eventBus.emit('agent:suspend-requested', {
652
+ agentId,
653
+ duration: action.config.duration || 300000, // 5 minutes default
654
+ reason: 'automated_remediation',
655
+ alertId: alert.id,
656
+ });
657
+ }
658
+
659
+ private async scaleResources(alert: TruthAlert, action: AlertAction): Promise<void> {
660
+ this.eventBus.emit('system:scale-requested', {
661
+ direction: action.config.direction || 'up',
662
+ factor: action.config.factor || 1.5,
663
+ reason: 'automated_remediation',
664
+ alertId: alert.id,
665
+ });
666
+ }
667
+
668
+ private async adjustThresholds(alert: TruthAlert, action: AlertAction): Promise<void> {
669
+ const ruleId = alert.context.ruleId;
670
+ const rule = this.alertRules.get(ruleId);
671
+
672
+ if (rule) {
673
+ const adjustment = action.config.adjustment || 0.1;
674
+ rule.threshold = rule.threshold + (rule.threshold * adjustment);
675
+
676
+ this.logger.info('Alert threshold adjusted', {
677
+ ruleId,
678
+ oldThreshold: rule.threshold - (rule.threshold * adjustment),
679
+ newThreshold: rule.threshold,
680
+ });
681
+ }
682
+ }
683
+
684
+ private async redistributeLoad(alert: TruthAlert, action: AlertAction): Promise<void> {
685
+ this.eventBus.emit('load-balancer:redistribute', {
686
+ reason: 'automated_remediation',
687
+ alertId: alert.id,
688
+ excludeAgents: [alert.context.agentId],
689
+ });
690
+ }
691
+
692
+ private async initiateFailover(alert: TruthAlert, action: AlertAction): Promise<void> {
693
+ this.eventBus.emit('system:failover-requested', {
694
+ primaryAgent: alert.context.agentId,
695
+ reason: 'automated_remediation',
696
+ alertId: alert.id,
697
+ });
698
+ }
699
+
700
+ // ========================================================================================
701
+ // Alert Resolution
702
+ // ========================================================================================
703
+
704
+ async resolveAlert(alertId: string, reason: string, resolvedBy?: string): Promise<boolean> {
705
+ const alert = this.activeAlerts.get(alertId);
706
+ if (!alert || alert.resolved) return false;
707
+
708
+ alert.resolved = true;
709
+ alert.resolvedAt = new Date();
710
+ alert.resolvedBy = resolvedBy || 'system';
711
+ alert.context.resolutionReason = reason;
712
+
713
+ // Update statistics
714
+ this.statistics.activeAlerts--;
715
+ this.statistics.resolvedAlerts++;
716
+
717
+ // Calculate resolution time
718
+ const resolutionTime = alert.resolvedAt.getTime() - alert.timestamp.getTime();
719
+ this.updateAverageResolutionTime(resolutionTime);
720
+
721
+ // Add to history
722
+ this.addToHistory(alertId, 'resolved', resolvedBy || 'system', { reason });
723
+
724
+ this.logger.info('Alert resolved', {
725
+ alertId,
726
+ reason,
727
+ resolvedBy: resolvedBy || 'system',
728
+ duration: resolutionTime,
729
+ });
730
+
731
+ this.eventBus.emit('truth-alert:resolved', { alert, reason, resolvedBy });
732
+
733
+ return true;
734
+ }
735
+
736
+ async acknowledgeAlert(alertId: string, acknowledgedBy: string, comment?: string): Promise<boolean> {
737
+ const alert = this.activeAlerts.get(alertId);
738
+ if (!alert || alert.resolved) return false;
739
+
740
+ alert.acknowledged = true;
741
+ alert.acknowledgedAt = new Date();
742
+ alert.acknowledgedBy = acknowledgedBy;
743
+
744
+ if (comment) {
745
+ alert.context.acknowledgmentComment = comment;
746
+ }
747
+
748
+ // Add to history
749
+ this.addToHistory(alertId, 'acknowledged', acknowledgedBy, { comment });
750
+
751
+ this.logger.info('Alert acknowledged', {
752
+ alertId,
753
+ acknowledgedBy,
754
+ comment,
755
+ });
756
+
757
+ this.eventBus.emit('truth-alert:acknowledged', { alert, acknowledgedBy, comment });
758
+
759
+ return true;
760
+ }
761
+
762
+ // ========================================================================================
763
+ // Rule Management
764
+ // ========================================================================================
765
+
766
+ createAlertRule(rule: Omit<AlertRule, 'id' | 'createdAt' | 'lastModified'>): string {
767
+ const ruleId = `rule-${Date.now()}-${Math.random().toString(36).slice(2)}`;
768
+
769
+ const fullRule: AlertRule = {
770
+ ...rule,
771
+ id: ruleId,
772
+ createdAt: new Date(),
773
+ lastModified: new Date(),
774
+ };
775
+
776
+ this.alertRules.set(ruleId, fullRule);
777
+
778
+ this.logger.info('Alert rule created', {
779
+ ruleId,
780
+ name: rule.name,
781
+ metric: rule.metric,
782
+ threshold: rule.threshold,
783
+ });
784
+
785
+ return ruleId;
786
+ }
787
+
788
+ updateAlertRule(ruleId: string, updates: Partial<AlertRule>): boolean {
789
+ const rule = this.alertRules.get(ruleId);
790
+ if (!rule) return false;
791
+
792
+ const updatedRule = {
793
+ ...rule,
794
+ ...updates,
795
+ id: ruleId, // Prevent ID changes
796
+ lastModified: new Date(),
797
+ };
798
+
799
+ this.alertRules.set(ruleId, updatedRule);
800
+
801
+ this.logger.info('Alert rule updated', { ruleId, updates });
802
+
803
+ return true;
804
+ }
805
+
806
+ deleteAlertRule(ruleId: string): boolean {
807
+ const deleted = this.alertRules.delete(ruleId);
808
+
809
+ if (deleted) {
810
+ this.logger.info('Alert rule deleted', { ruleId });
811
+ }
812
+
813
+ return deleted;
814
+ }
815
+
816
+ // ========================================================================================
817
+ // Processing Loops
818
+ // ========================================================================================
819
+
820
+ private startAlertProcessing(): void {
821
+ this.processingInterval = setInterval(() => {
822
+ this.processActiveAlerts();
823
+ }, 30000); // Every 30 seconds
824
+
825
+ this.logger.info('Started alert processing');
826
+ }
827
+
828
+ private startEscalationProcessing(): void {
829
+ this.escalationInterval = setInterval(() => {
830
+ this.processEscalations();
831
+ }, 60000); // Every minute
832
+
833
+ this.logger.info('Started escalation processing');
834
+ }
835
+
836
+ private startCleanupProcessing(): void {
837
+ this.cleanupInterval = setInterval(() => {
838
+ this.cleanupResolvedAlerts();
839
+ this.cleanupOldHistory();
840
+ this.resetRateLimits();
841
+ }, 300000); // Every 5 minutes
842
+
843
+ this.logger.info('Started cleanup processing');
844
+ }
845
+
846
+ async processAlert(alert: TruthAlert): Promise<void> {
847
+ // Check for auto-resolution conditions
848
+ await this.checkAutoResolution(alert);
849
+
850
+ // Check for escalation conditions
851
+ await this.checkEscalation(alert);
852
+
853
+ // Update alert statistics
854
+ this.updateAlertStatistics(alert);
855
+ }
856
+
857
+ private async processActiveAlerts(): Promise<void> {
858
+ for (const alert of this.activeAlerts.values()) {
859
+ if (!alert.resolved) {
860
+ await this.processAlert(alert);
861
+ }
862
+ }
863
+ }
864
+
865
+ private async processEscalations(): Promise<void> {
866
+ for (const alert of this.activeAlerts.values()) {
867
+ if (!alert.resolved && !alert.acknowledged) {
868
+ await this.checkEscalation(alert);
869
+ }
870
+ }
871
+ }
872
+
873
+ private async checkAutoResolution(alert: TruthAlert): Promise<void> {
874
+ // Check if the underlying condition has been resolved
875
+ const currentValue = await this.getCurrentMetricValue(alert);
876
+ if (currentValue === null) return;
877
+
878
+ const rule = this.alertRules.get(alert.context.ruleId);
879
+ if (!rule) return;
880
+
881
+ // Check if condition is no longer met
882
+ const conditionMet = this.evaluateConditionValue(rule, currentValue);
883
+
884
+ if (!conditionMet) {
885
+ await this.resolveAlert(alert.id, 'condition_resolved');
886
+ }
887
+ }
888
+
889
+ private async checkEscalation(alert: TruthAlert): Promise<void> {
890
+ const now = Date.now();
891
+ const alertAge = now - alert.timestamp.getTime();
892
+
893
+ // Find next escalation level
894
+ const nextEscalation = alert.escalationPath.find(
895
+ e => e.level > alert.escalationLevel
896
+ );
897
+
898
+ if (nextEscalation && alertAge >= nextEscalation.delay) {
899
+ await this.escalateAlert(alert, {
900
+ type: 'escalate',
901
+ target: 'escalation',
902
+ config: { level: nextEscalation.level },
903
+ enabled: true,
904
+ });
905
+ }
906
+ }
907
+
908
+ // ========================================================================================
909
+ // Utility Methods
910
+ // ========================================================================================
911
+
912
+ private generateAlertMessage(rule: AlertRule, metric: TruthMetric): string {
913
+ return `${rule.name}: ${metric.metricType} ${rule.operator} ${rule.threshold} ` +
914
+ `(current: ${metric.value.toFixed(3)}) for agent ${metric.agentId}`;
915
+ }
916
+
917
+ private matchesFilters(metric: TruthMetric, filters: Record<string, any>): boolean {
918
+ for (const [key, value] of Object.entries(filters)) {
919
+ const metricValue = this.getMetricProperty(metric, key);
920
+ if (metricValue !== value) return false;
921
+ }
922
+ return true;
923
+ }
924
+
925
+ private matchesConditions(metric: TruthMetric, conditions: AlertCondition[]): boolean {
926
+ if (conditions.length === 0) return true;
927
+
928
+ // Simple AND/OR logic evaluation
929
+ let result = true;
930
+ let currentOperator = 'AND';
931
+
932
+ for (const condition of conditions) {
933
+ const metricValue = this.getMetricProperty(metric, condition.field);
934
+ const conditionResult = this.evaluateConditionValue(condition, metricValue);
935
+
936
+ if (currentOperator === 'AND') {
937
+ result = result && conditionResult;
938
+ } else {
939
+ result = result || conditionResult;
940
+ }
941
+
942
+ currentOperator = condition.logicalOperator || 'AND';
943
+ }
944
+
945
+ return result;
946
+ }
947
+
948
+ private getMetricProperty(metric: TruthMetric, path: string): any {
949
+ const parts = path.split('.');
950
+ let value: any = metric;
951
+
952
+ for (const part of parts) {
953
+ value = value?.[part];
954
+ }
955
+
956
+ return value;
957
+ }
958
+
959
+ private evaluateConditionValue(condition: any, value: any): boolean {
960
+ switch (condition.operator) {
961
+ case 'gt': return value > condition.value;
962
+ case 'gte': return value >= condition.value;
963
+ case 'lt': return value < condition.value;
964
+ case 'lte': return value <= condition.value;
965
+ case 'eq': return value === condition.value;
966
+ case 'ne': return value !== condition.value;
967
+ case 'contains': return String(value).includes(condition.value);
968
+ case 'startsWith': return String(value).startsWith(condition.value);
969
+ case 'endsWith': return String(value).endsWith(condition.value);
970
+ default: return false;
971
+ }
972
+ }
973
+
974
+ private alertMatchesChannelFilters(alert: TruthAlert, channel: AlertChannel): boolean {
975
+ for (const filter of channel.filters) {
976
+ const alertValue = this.getMetricProperty(alert, filter.field);
977
+ const matches = filter.values.includes(String(alertValue));
978
+
979
+ if (filter.action === 'include' && !matches) return false;
980
+ if (filter.action === 'exclude' && matches) return false;
981
+ }
982
+ return true;
983
+ }
984
+
985
+ private checkRateLimit(channel: AlertChannel, alert: TruthAlert): boolean {
986
+ for (const rateLimit of channel.rateLimits) {
987
+ const now = Date.now();
988
+
989
+ // Reset if window has passed
990
+ if (rateLimit.resetTime && now > rateLimit.resetTime.getTime()) {
991
+ rateLimit.currentCount = 0;
992
+ rateLimit.resetTime = new Date(now + rateLimit.window);
993
+ }
994
+
995
+ // Initialize if needed
996
+ if (!rateLimit.resetTime) {
997
+ rateLimit.resetTime = new Date(now + rateLimit.window);
998
+ rateLimit.currentCount = 0;
999
+ }
1000
+
1001
+ // Check limit
1002
+ if (rateLimit.currentCount >= rateLimit.maxAlerts) {
1003
+ return false;
1004
+ }
1005
+
1006
+ // Increment counter
1007
+ rateLimit.currentCount++;
1008
+ }
1009
+
1010
+ return true;
1011
+ }
1012
+
1013
+ private checkEscalationConditions(alert: TruthAlert, escalation: EscalationLevel): boolean {
1014
+ // Simple condition evaluation
1015
+ for (const condition of escalation.conditions) {
1016
+ // This would typically parse and evaluate complex conditions
1017
+ // For now, using simple checks
1018
+ if (condition.includes('unacknowledged') && alert.acknowledged) return false;
1019
+ if (condition.includes('duration') && !this.checkDurationCondition(alert, condition)) return false;
1020
+ }
1021
+ return true;
1022
+ }
1023
+
1024
+ private checkDurationCondition(alert: TruthAlert, condition: string): boolean {
1025
+ // Parse condition like "duration > 30m"
1026
+ const match = condition.match(/duration\s*([><=]+)\s*(\d+)([mhs])/);
1027
+ if (!match) return true;
1028
+
1029
+ const operator = match[1];
1030
+ const value = parseInt(match[2]);
1031
+ const unit = match[3];
1032
+
1033
+ const multiplier = unit === 's' ? 1000 : unit === 'm' ? 60000 : 3600000; // hours
1034
+ const thresholdMs = value * multiplier;
1035
+ const durationMs = Date.now() - alert.timestamp.getTime();
1036
+
1037
+ switch (operator) {
1038
+ case '>': return durationMs > thresholdMs;
1039
+ case '>=': return durationMs >= thresholdMs;
1040
+ case '<': return durationMs < thresholdMs;
1041
+ case '<=': return durationMs <= thresholdMs;
1042
+ case '=': return Math.abs(durationMs - thresholdMs) < 1000;
1043
+ default: return true;
1044
+ }
1045
+ }
1046
+
1047
+ private getEscalatedSeverity(currentSeverity: string): 'info' | 'warning' | 'critical' | 'emergency' {
1048
+ switch (currentSeverity) {
1049
+ case 'info': return 'warning';
1050
+ case 'warning': return 'critical';
1051
+ case 'critical': return 'emergency';
1052
+ default: return 'emergency';
1053
+ }
1054
+ }
1055
+
1056
+ private async getCurrentMetricValue(alert: TruthAlert): Promise<number | null> {
1057
+ // This would typically query the current metric value
1058
+ // For now, returning null to indicate unavailable
1059
+ return null;
1060
+ }
1061
+
1062
+ private addToHistory(alertId: string, action: string, actor: string, details: Record<string, any>): void {
1063
+ this.alertHistory.push({
1064
+ alertId,
1065
+ timestamp: new Date(),
1066
+ action: action as any,
1067
+ actor,
1068
+ details,
1069
+ });
1070
+
1071
+ // Keep history size manageable
1072
+ if (this.alertHistory.length > 10000) {
1073
+ this.alertHistory = this.alertHistory.slice(-5000);
1074
+ }
1075
+ }
1076
+
1077
+ private cleanupResolvedAlerts(): void {
1078
+ const cutoff = new Date(Date.now() - 24 * 60 * 60 * 1000); // 24 hours
1079
+
1080
+ for (const [alertId, alert] of this.activeAlerts) {
1081
+ if (alert.resolved && alert.resolvedAt && alert.resolvedAt < cutoff) {
1082
+ this.activeAlerts.delete(alertId);
1083
+ }
1084
+ }
1085
+ }
1086
+
1087
+ private cleanupOldHistory(): void {
1088
+ const cutoff = new Date(Date.now() - 7 * 24 * 60 * 60 * 1000); // 7 days
1089
+ this.alertHistory = this.alertHistory.filter(h => h.timestamp >= cutoff);
1090
+ }
1091
+
1092
+ private resetRateLimits(): void {
1093
+ const now = Date.now();
1094
+
1095
+ for (const channel of this.alertChannels.values()) {
1096
+ for (const rateLimit of channel.rateLimits) {
1097
+ if (rateLimit.resetTime && now > rateLimit.resetTime.getTime()) {
1098
+ rateLimit.currentCount = 0;
1099
+ rateLimit.resetTime = new Date(now + rateLimit.window);
1100
+ }
1101
+ }
1102
+ }
1103
+ }
1104
+
1105
+ private updateAlertStatistics(alert: TruthAlert): void {
1106
+ // Update top alert sources
1107
+ const source = alert.source;
1108
+ const existing = this.statistics.topAlertSources.find(s => s.source === source);
1109
+ if (existing) {
1110
+ existing.count++;
1111
+ } else {
1112
+ this.statistics.topAlertSources.push({ source, count: 1 });
1113
+ }
1114
+
1115
+ // Sort and limit
1116
+ this.statistics.topAlertSources.sort((a, b) => b.count - a.count);
1117
+ this.statistics.topAlertSources = this.statistics.topAlertSources.slice(0, 10);
1118
+ }
1119
+
1120
+ private updateAverageResolutionTime(resolutionTime: number): void {
1121
+ const count = this.statistics.resolvedAlerts;
1122
+ const currentAvg = this.statistics.averageResolutionTime;
1123
+
1124
+ this.statistics.averageResolutionTime =
1125
+ ((currentAvg * (count - 1)) + resolutionTime) / count;
1126
+ }
1127
+
1128
+ private calculateEscalationRate(): number {
1129
+ const escalatedAlerts = this.alertHistory.filter(h => h.action === 'escalated').length;
1130
+ return this.statistics.totalAlerts > 0 ? escalatedAlerts / this.statistics.totalAlerts : 0;
1131
+ }
1132
+
1133
+ // ========================================================================================
1134
+ // Notification Implementations (Placeholders)
1135
+ // ========================================================================================
1136
+
1137
+ private async sendEmailNotification(alert: TruthAlert, channel: AlertChannel): Promise<void> {
1138
+ // Implementation would send actual email
1139
+ this.logger.info('Email notification sent', { alertId: alert.id, to: channel.config.to });
1140
+ }
1141
+
1142
+ private async sendSlackNotification(alert: TruthAlert, channel: AlertChannel): Promise<void> {
1143
+ // Implementation would send to Slack webhook
1144
+ this.logger.info('Slack notification sent', { alertId: alert.id, webhook: channel.config.webhook });
1145
+ }
1146
+
1147
+ private async sendWebhookNotification(alert: TruthAlert, channel: AlertChannel): Promise<void> {
1148
+ // Implementation would POST to webhook URL
1149
+ this.logger.info('Webhook notification sent', { alertId: alert.id, url: channel.config.url });
1150
+ }
1151
+
1152
+ private async sendTeamsNotification(alert: TruthAlert, channel: AlertChannel): Promise<void> {
1153
+ // Implementation would send to Teams webhook
1154
+ this.logger.info('Teams notification sent', { alertId: alert.id, webhook: channel.config.webhook });
1155
+ }
1156
+
1157
+ private async sendDiscordNotification(alert: TruthAlert, channel: AlertChannel): Promise<void> {
1158
+ // Implementation would send to Discord webhook
1159
+ this.logger.info('Discord notification sent', { alertId: alert.id, webhook: channel.config.webhook });
1160
+ }
1161
+
1162
+ private async sendPagerDutyNotification(alert: TruthAlert, channel: AlertChannel): Promise<void> {
1163
+ // Implementation would create PagerDuty incident
1164
+ this.logger.info('PagerDuty notification sent', { alertId: alert.id, serviceKey: channel.config.serviceKey });
1165
+ }
1166
+
1167
+ // ========================================================================================
1168
+ // Configuration Management
1169
+ // ========================================================================================
1170
+
1171
+ private async loadAlertConfiguration(): Promise<void> {
1172
+ // Placeholder for loading configuration from storage
1173
+ this.logger.debug('Loading alert configuration');
1174
+ }
1175
+
1176
+ private async saveAlertConfiguration(): Promise<void> {
1177
+ // Placeholder for saving configuration to storage
1178
+ this.logger.debug('Saving alert configuration');
1179
+ }
1180
+
1181
+ private initializeDefaultRules(): void {
1182
+ // Create default alert rules
1183
+ const defaultRules: Omit<AlertRule, 'id' | 'createdAt' | 'lastModified'>[] = [
1184
+ {
1185
+ name: 'Low Truth Accuracy',
1186
+ description: 'Alert when agent accuracy falls below threshold',
1187
+ enabled: true,
1188
+ metric: 'accuracy',
1189
+ operator: 'lt',
1190
+ threshold: this.config.alertThresholds.accuracyThreshold,
1191
+ duration: 300000, // 5 minutes
1192
+ severity: 'critical',
1193
+ category: 'accuracy_degradation',
1194
+ priority: 8,
1195
+ filters: {},
1196
+ conditions: [],
1197
+ actions: [
1198
+ { type: 'notify', target: 'default', config: { channels: ['default'] }, enabled: true },
1199
+ ],
1200
+ escalationPath: [
1201
+ { level: 1, delay: 900000, targets: ['critical'], conditions: ['unacknowledged'] }, // 15 minutes
1202
+ ],
1203
+ suppressions: [],
1204
+ tags: { category: 'accuracy', auto_created: 'true' },
1205
+ createdBy: 'system',
1206
+ },
1207
+ {
1208
+ name: 'High Human Intervention Rate',
1209
+ description: 'Alert when human intervention rate exceeds threshold',
1210
+ enabled: true,
1211
+ metric: '*',
1212
+ operator: 'gt',
1213
+ threshold: this.config.alertThresholds.interventionRateThreshold,
1214
+ duration: 600000, // 10 minutes
1215
+ severity: 'warning',
1216
+ category: 'high_intervention_rate',
1217
+ priority: 6,
1218
+ filters: { 'context.verificationMethod': 'human' },
1219
+ conditions: [],
1220
+ actions: [
1221
+ { type: 'notify', target: 'default', config: { channels: ['default'] }, enabled: true },
1222
+ ],
1223
+ escalationPath: [],
1224
+ suppressions: [],
1225
+ tags: { category: 'efficiency', auto_created: 'true' },
1226
+ createdBy: 'system',
1227
+ },
1228
+ ];
1229
+
1230
+ defaultRules.forEach(rule => this.createAlertRule(rule));
1231
+ }
1232
+
1233
+ private initializeDefaultChannels(): void {
1234
+ // Create default notification channels
1235
+ const defaultChannels: Omit<AlertChannel, 'id'>[] = [
1236
+ {
1237
+ name: 'Default Log Channel',
1238
+ type: 'email',
1239
+ config: { to: 'admin@example.com' },
1240
+ enabled: true,
1241
+ filters: [],
1242
+ rateLimits: [
1243
+ { window: 300000, maxAlerts: 10, currentCount: 0 }, // 10 alerts per 5 minutes
1244
+ ],
1245
+ },
1246
+ {
1247
+ name: 'Critical Alerts',
1248
+ type: 'slack',
1249
+ config: { webhook: 'https://hooks.slack.com/services/...' },
1250
+ enabled: false, // Disabled until configured
1251
+ filters: [
1252
+ { field: 'severity', operator: 'eq', values: ['critical', 'emergency'], action: 'include' },
1253
+ ],
1254
+ rateLimits: [
1255
+ { window: 60000, maxAlerts: 5, currentCount: 0 }, // 5 alerts per minute
1256
+ ],
1257
+ },
1258
+ ];
1259
+
1260
+ defaultChannels.forEach(channel => {
1261
+ const channelId = `channel-${Date.now()}-${Math.random().toString(36).slice(2)}`;
1262
+ this.alertChannels.set(channelId, { ...channel, id: channelId });
1263
+ });
1264
+ }
1265
+
1266
+ private initializeStatistics(): AlertStatistics {
1267
+ return {
1268
+ totalAlerts: 0,
1269
+ activeAlerts: 0,
1270
+ resolvedAlerts: 0,
1271
+ averageResolutionTime: 0,
1272
+ alertsByType: {},
1273
+ alertsBySeverity: {},
1274
+ topAlertSources: [],
1275
+ escalationRate: 0,
1276
+ falsePositiveRate: 0,
1277
+ };
1278
+ }
1279
+
1280
+ // ========================================================================================
1281
+ // Public API
1282
+ // ========================================================================================
1283
+
1284
+ getActiveAlerts(): TruthAlert[] {
1285
+ return Array.from(this.activeAlerts.values()).filter(a => !a.resolved);
1286
+ }
1287
+
1288
+ getAlert(alertId: string): TruthAlert | undefined {
1289
+ return this.activeAlerts.get(alertId);
1290
+ }
1291
+
1292
+ getAlertHistory(alertId?: string, limit: number = 100): AlertHistory[] {
1293
+ let history = this.alertHistory;
1294
+
1295
+ if (alertId) {
1296
+ history = history.filter(h => h.alertId === alertId);
1297
+ }
1298
+
1299
+ return history.slice(-limit);
1300
+ }
1301
+
1302
+ getAlertRules(): AlertRule[] {
1303
+ return Array.from(this.alertRules.values());
1304
+ }
1305
+
1306
+ getAlertChannels(): AlertChannel[] {
1307
+ return Array.from(this.alertChannels.values());
1308
+ }
1309
+
1310
+ getStatistics(): AlertStatistics {
1311
+ return { ...this.statistics };
1312
+ }
1313
+
1314
+ createSuppression(alertId: string, suppression: Omit<AlertSuppression, 'id'>): string {
1315
+ const suppressionId = `suppression-${Date.now()}`;
1316
+ this.suppressions.set(suppressionId, { ...suppression, id: suppressionId });
1317
+ return suppressionId;
1318
+ }
1319
+
1320
+ removeSuppression(suppressionId: string): boolean {
1321
+ return this.suppressions.delete(suppressionId);
1322
+ }
1323
+ }
1324
+
1325
+ // ========================================================================================
1326
+ // Supporting Interfaces
1327
+ // ========================================================================================
1328
+
1329
+ interface MetricState {
1330
+ key: string;
1331
+ currentValue: number;
1332
+ previousValue: number;
1333
+ lastUpdate: Date;
1334
+ changeRate: number;
1335
+ samples: number[];
1336
+ thresholdViolations: Map<string, ThresholdViolation>;
1337
+ }
1338
+
1339
+ interface ThresholdViolation {
1340
+ ruleId: string;
1341
+ startTime: Date;
1342
+ lastSeen: Date;
1343
+ count: number;
1344
+ alertId: string | null;
1345
+ }