watchbell 1.2.1 → 1.2.3

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 (1081) hide show
  1. package/README.md +34 -11
  2. package/bin/watchbell.mjs +735 -45
  3. package/package.json +1 -1
  4. package/scripts/node-runtime.mjs +166 -0
  5. package/scripts/selfhost-log.mjs +116 -0
  6. package/server/.next/BUILD_ID +1 -1
  7. package/server/.next/build-manifest.json +105 -105
  8. package/server/.next/prerender-manifest.json +4 -4
  9. package/server/.next/server/app/(console)/(private)/ai/agents/page/build-manifest.json +3 -3
  10. package/server/.next/server/app/(console)/(private)/ai/agents/page/server-reference-manifest.json +32 -22
  11. package/server/.next/server/app/(console)/(private)/ai/agents/page.js +76 -74
  12. package/server/.next/server/app/(console)/(private)/ai/agents/page.js.nft.json +1 -1
  13. package/server/.next/server/app/(console)/(private)/ai/agents/page_client-reference-manifest.js +1 -1
  14. package/server/.next/server/app/(console)/(private)/ai/ask/page/build-manifest.json +3 -3
  15. package/server/.next/server/app/(console)/(private)/ai/ask/page/server-reference-manifest.json +30 -20
  16. package/server/.next/server/app/(console)/(private)/ai/ask/page.js +75 -73
  17. package/server/.next/server/app/(console)/(private)/ai/ask/page.js.nft.json +1 -1
  18. package/server/.next/server/app/(console)/(private)/ai/ask/page_client-reference-manifest.js +1 -1
  19. package/server/.next/server/app/(console)/(private)/ai/connect/page/build-manifest.json +3 -3
  20. package/server/.next/server/app/(console)/(private)/ai/connect/page/server-reference-manifest.json +28 -18
  21. package/server/.next/server/app/(console)/(private)/ai/connect/page.js +75 -73
  22. package/server/.next/server/app/(console)/(private)/ai/connect/page.js.nft.json +1 -1
  23. package/server/.next/server/app/(console)/(private)/ai/connect/page_client-reference-manifest.js +1 -1
  24. package/server/.next/server/app/(console)/(private)/ai/keys/page/build-manifest.json +3 -3
  25. package/server/.next/server/app/(console)/(private)/ai/keys/page/server-reference-manifest.json +34 -24
  26. package/server/.next/server/app/(console)/(private)/ai/keys/page.js +75 -73
  27. package/server/.next/server/app/(console)/(private)/ai/keys/page.js.nft.json +1 -1
  28. package/server/.next/server/app/(console)/(private)/ai/keys/page_client-reference-manifest.js +1 -1
  29. package/server/.next/server/app/(console)/(private)/ai/logs/page/build-manifest.json +3 -3
  30. package/server/.next/server/app/(console)/(private)/ai/logs/page/server-reference-manifest.json +30 -20
  31. package/server/.next/server/app/(console)/(private)/ai/logs/page.js +75 -73
  32. package/server/.next/server/app/(console)/(private)/ai/logs/page.js.nft.json +1 -1
  33. package/server/.next/server/app/(console)/(private)/ai/logs/page_client-reference-manifest.js +1 -1
  34. package/server/.next/server/app/(console)/(private)/ai/models/page/build-manifest.json +3 -3
  35. package/server/.next/server/app/(console)/(private)/ai/models/page/server-reference-manifest.json +48 -38
  36. package/server/.next/server/app/(console)/(private)/ai/models/page.js +75 -73
  37. package/server/.next/server/app/(console)/(private)/ai/models/page.js.nft.json +1 -1
  38. package/server/.next/server/app/(console)/(private)/ai/models/page_client-reference-manifest.js +1 -1
  39. package/server/.next/server/app/(console)/(private)/ai/page/build-manifest.json +3 -3
  40. package/server/.next/server/app/(console)/(private)/ai/page/server-reference-manifest.json +28 -18
  41. package/server/.next/server/app/(console)/(private)/ai/page.js +75 -73
  42. package/server/.next/server/app/(console)/(private)/ai/page.js.nft.json +1 -1
  43. package/server/.next/server/app/(console)/(private)/ai/page_client-reference-manifest.js +1 -1
  44. package/server/.next/server/app/(console)/(private)/ai/playground/page/build-manifest.json +3 -3
  45. package/server/.next/server/app/(console)/(private)/ai/playground/page/server-reference-manifest.json +34 -24
  46. package/server/.next/server/app/(console)/(private)/ai/playground/page.js +75 -73
  47. package/server/.next/server/app/(console)/(private)/ai/playground/page.js.nft.json +1 -1
  48. package/server/.next/server/app/(console)/(private)/ai/playground/page_client-reference-manifest.js +1 -1
  49. package/server/.next/server/app/(console)/(private)/ai/providers/page/build-manifest.json +3 -3
  50. package/server/.next/server/app/(console)/(private)/ai/providers/page/server-reference-manifest.json +40 -30
  51. package/server/.next/server/app/(console)/(private)/ai/providers/page.js +76 -74
  52. package/server/.next/server/app/(console)/(private)/ai/providers/page.js.nft.json +1 -1
  53. package/server/.next/server/app/(console)/(private)/ai/providers/page_client-reference-manifest.js +1 -1
  54. package/server/.next/server/app/(console)/(private)/ai/quota/page/build-manifest.json +3 -3
  55. package/server/.next/server/app/(console)/(private)/ai/quota/page/server-reference-manifest.json +30 -20
  56. package/server/.next/server/app/(console)/(private)/ai/quota/page.js +77 -75
  57. package/server/.next/server/app/(console)/(private)/ai/quota/page.js.nft.json +1 -1
  58. package/server/.next/server/app/(console)/(private)/ai/quota/page_client-reference-manifest.js +1 -1
  59. package/server/.next/server/app/(console)/(private)/ai/usage/page/build-manifest.json +3 -3
  60. package/server/.next/server/app/(console)/(private)/ai/usage/page/server-reference-manifest.json +30 -20
  61. package/server/.next/server/app/(console)/(private)/ai/usage/page.js +79 -76
  62. package/server/.next/server/app/(console)/(private)/ai/usage/page.js.nft.json +1 -1
  63. package/server/.next/server/app/(console)/(private)/ai/usage/page_client-reference-manifest.js +1 -1
  64. package/server/.next/server/app/(console)/(private)/api-docs/[[...op]]/page/build-manifest.json +3 -3
  65. package/server/.next/server/app/(console)/(private)/api-docs/[[...op]]/page/server-reference-manifest.json +28 -18
  66. package/server/.next/server/app/(console)/(private)/api-docs/[[...op]]/page.js +75 -73
  67. package/server/.next/server/app/(console)/(private)/api-docs/[[...op]]/page.js.nft.json +1 -1
  68. package/server/.next/server/app/(console)/(private)/api-docs/[[...op]]/page_client-reference-manifest.js +1 -1
  69. package/server/.next/server/app/(console)/(private)/auto-actions/page/build-manifest.json +3 -3
  70. package/server/.next/server/app/(console)/(private)/auto-actions/page/server-reference-manifest.json +30 -20
  71. package/server/.next/server/app/(console)/(private)/auto-actions/page.js +75 -73
  72. package/server/.next/server/app/(console)/(private)/auto-actions/page.js.nft.json +1 -1
  73. package/server/.next/server/app/(console)/(private)/auto-actions/page_client-reference-manifest.js +1 -1
  74. package/server/.next/server/app/(console)/alerts/page/build-manifest.json +3 -3
  75. package/server/.next/server/app/(console)/alerts/page/server-reference-manifest.json +74 -44
  76. package/server/.next/server/app/(console)/alerts/page.js +78 -75
  77. package/server/.next/server/app/(console)/alerts/page.js.nft.json +1 -1
  78. package/server/.next/server/app/(console)/alerts/page_client-reference-manifest.js +1 -1
  79. package/server/.next/server/app/(console)/apps/[id]/page/build-manifest.json +3 -3
  80. package/server/.next/server/app/(console)/apps/[id]/page/server-reference-manifest.json +62 -52
  81. package/server/.next/server/app/(console)/apps/[id]/page.js +81 -79
  82. package/server/.next/server/app/(console)/apps/[id]/page.js.nft.json +1 -1
  83. package/server/.next/server/app/(console)/apps/[id]/page_client-reference-manifest.js +1 -1
  84. package/server/.next/server/app/(console)/apps/page/build-manifest.json +3 -3
  85. package/server/.next/server/app/(console)/apps/page/server-reference-manifest.json +34 -24
  86. package/server/.next/server/app/(console)/apps/page.js +77 -75
  87. package/server/.next/server/app/(console)/apps/page.js.nft.json +1 -1
  88. package/server/.next/server/app/(console)/apps/page_client-reference-manifest.js +1 -1
  89. package/server/.next/server/app/(console)/backups/page/build-manifest.json +3 -3
  90. package/server/.next/server/app/(console)/backups/page/server-reference-manifest.json +34 -24
  91. package/server/.next/server/app/(console)/backups/page.js +78 -76
  92. package/server/.next/server/app/(console)/backups/page.js.nft.json +1 -1
  93. package/server/.next/server/app/(console)/backups/page_client-reference-manifest.js +1 -1
  94. package/server/.next/server/app/(console)/catalog/page/build-manifest.json +3 -3
  95. package/server/.next/server/app/(console)/catalog/page/server-reference-manifest.json +28 -18
  96. package/server/.next/server/app/(console)/catalog/page.js +76 -74
  97. package/server/.next/server/app/(console)/catalog/page.js.nft.json +1 -1
  98. package/server/.next/server/app/(console)/catalog/page_client-reference-manifest.js +1 -1
  99. package/server/.next/server/app/(console)/connections/page/build-manifest.json +3 -3
  100. package/server/.next/server/app/(console)/connections/page/server-reference-manifest.json +50 -40
  101. package/server/.next/server/app/(console)/connections/page.js +79 -77
  102. package/server/.next/server/app/(console)/connections/page.js.nft.json +1 -1
  103. package/server/.next/server/app/(console)/connections/page_client-reference-manifest.js +1 -1
  104. package/server/.next/server/app/(console)/d1/page/build-manifest.json +3 -3
  105. package/server/.next/server/app/(console)/d1/page/server-reference-manifest.json +28 -18
  106. package/server/.next/server/app/(console)/d1/page.js +77 -75
  107. package/server/.next/server/app/(console)/d1/page.js.nft.json +1 -1
  108. package/server/.next/server/app/(console)/d1/page_client-reference-manifest.js +1 -1
  109. package/server/.next/server/app/(console)/deployments/page/build-manifest.json +3 -3
  110. package/server/.next/server/app/(console)/deployments/page/server-reference-manifest.json +40 -30
  111. package/server/.next/server/app/(console)/deployments/page.js +77 -75
  112. package/server/.next/server/app/(console)/deployments/page.js.nft.json +1 -1
  113. package/server/.next/server/app/(console)/deployments/page_client-reference-manifest.js +1 -1
  114. package/server/.next/server/app/(console)/dns/page/build-manifest.json +3 -3
  115. package/server/.next/server/app/(console)/dns/page/server-reference-manifest.json +42 -32
  116. package/server/.next/server/app/(console)/dns/page.js +80 -78
  117. package/server/.next/server/app/(console)/dns/page.js.nft.json +1 -1
  118. package/server/.next/server/app/(console)/dns/page_client-reference-manifest.js +1 -1
  119. package/server/.next/server/app/(console)/domains/page/build-manifest.json +3 -3
  120. package/server/.next/server/app/(console)/domains/page/server-reference-manifest.json +32 -22
  121. package/server/.next/server/app/(console)/domains/page.js +79 -77
  122. package/server/.next/server/app/(console)/domains/page.js.nft.json +1 -1
  123. package/server/.next/server/app/(console)/domains/page_client-reference-manifest.js +1 -1
  124. package/server/.next/server/app/(console)/events/page/build-manifest.json +3 -3
  125. package/server/.next/server/app/(console)/events/page/server-reference-manifest.json +28 -18
  126. package/server/.next/server/app/(console)/events/page.js +76 -74
  127. package/server/.next/server/app/(console)/events/page.js.nft.json +1 -1
  128. package/server/.next/server/app/(console)/events/page_client-reference-manifest.js +1 -1
  129. package/server/.next/server/app/(console)/firebase/page/build-manifest.json +3 -3
  130. package/server/.next/server/app/(console)/firebase/page/server-reference-manifest.json +42 -32
  131. package/server/.next/server/app/(console)/firebase/page.js +78 -76
  132. package/server/.next/server/app/(console)/firebase/page.js.nft.json +1 -1
  133. package/server/.next/server/app/(console)/firebase/page_client-reference-manifest.js +1 -1
  134. package/server/.next/server/app/(console)/logs/page/build-manifest.json +3 -3
  135. package/server/.next/server/app/(console)/logs/page/server-reference-manifest.json +30 -20
  136. package/server/.next/server/app/(console)/logs/page.js +75 -73
  137. package/server/.next/server/app/(console)/logs/page.js.nft.json +1 -1
  138. package/server/.next/server/app/(console)/logs/page_client-reference-manifest.js +1 -1
  139. package/server/.next/server/app/(console)/manage/sections/page/build-manifest.json +3 -3
  140. package/server/.next/server/app/(console)/manage/sections/page/server-reference-manifest.json +30 -20
  141. package/server/.next/server/app/(console)/manage/sections/page.js +75 -73
  142. package/server/.next/server/app/(console)/manage/sections/page.js.nft.json +1 -1
  143. package/server/.next/server/app/(console)/manage/sections/page_client-reference-manifest.js +1 -1
  144. package/server/.next/server/app/(console)/neon/page/build-manifest.json +3 -3
  145. package/server/.next/server/app/(console)/neon/page/server-reference-manifest.json +50 -40
  146. package/server/.next/server/app/(console)/neon/page.js +80 -78
  147. package/server/.next/server/app/(console)/neon/page.js.nft.json +1 -1
  148. package/server/.next/server/app/(console)/neon/page_client-reference-manifest.js +1 -1
  149. package/server/.next/server/app/(console)/overview/page/build-manifest.json +3 -3
  150. package/server/.next/server/app/(console)/overview/page/server-reference-manifest.json +46 -36
  151. package/server/.next/server/app/(console)/overview/page.js +84 -82
  152. package/server/.next/server/app/(console)/overview/page.js.nft.json +1 -1
  153. package/server/.next/server/app/(console)/overview/page_client-reference-manifest.js +1 -1
  154. package/server/.next/server/app/(console)/repos/[id]/page/build-manifest.json +3 -3
  155. package/server/.next/server/app/(console)/repos/[id]/page/server-reference-manifest.json +30 -20
  156. package/server/.next/server/app/(console)/repos/[id]/page.js +78 -76
  157. package/server/.next/server/app/(console)/repos/[id]/page.js.nft.json +1 -1
  158. package/server/.next/server/app/(console)/repos/[id]/page_client-reference-manifest.js +1 -1
  159. package/server/.next/server/app/(console)/repos/page/build-manifest.json +3 -3
  160. package/server/.next/server/app/(console)/repos/page/server-reference-manifest.json +28 -18
  161. package/server/.next/server/app/(console)/repos/page.js +75 -73
  162. package/server/.next/server/app/(console)/repos/page.js.nft.json +1 -1
  163. package/server/.next/server/app/(console)/repos/page_client-reference-manifest.js +1 -1
  164. package/server/.next/server/app/(console)/settings/page/build-manifest.json +3 -3
  165. package/server/.next/server/app/(console)/settings/page/server-reference-manifest.json +48 -38
  166. package/server/.next/server/app/(console)/settings/page.js +76 -74
  167. package/server/.next/server/app/(console)/settings/page.js.nft.json +1 -1
  168. package/server/.next/server/app/(console)/settings/page_client-reference-manifest.js +1 -1
  169. package/server/.next/server/app/(console)/sql/page/build-manifest.json +3 -3
  170. package/server/.next/server/app/(console)/sql/page/server-reference-manifest.json +42 -32
  171. package/server/.next/server/app/(console)/sql/page.js +75 -73
  172. package/server/.next/server/app/(console)/sql/page.js.nft.json +1 -1
  173. package/server/.next/server/app/(console)/sql/page_client-reference-manifest.js +1 -1
  174. package/server/.next/server/app/(console)/status/page/build-manifest.json +3 -3
  175. package/server/.next/server/app/(console)/status/page/server-reference-manifest.json +28 -18
  176. package/server/.next/server/app/(console)/status/page.js +78 -75
  177. package/server/.next/server/app/(console)/status/page.js.nft.json +1 -1
  178. package/server/.next/server/app/(console)/status/page_client-reference-manifest.js +1 -1
  179. package/server/.next/server/app/(console)/supabase/page/build-manifest.json +3 -3
  180. package/server/.next/server/app/(console)/supabase/page/server-reference-manifest.json +68 -58
  181. package/server/.next/server/app/(console)/supabase/page.js +85 -84
  182. package/server/.next/server/app/(console)/supabase/page.js.nft.json +1 -1
  183. package/server/.next/server/app/(console)/supabase/page_client-reference-manifest.js +1 -1
  184. package/server/.next/server/app/(console)/topology/page/build-manifest.json +3 -3
  185. package/server/.next/server/app/(console)/topology/page/server-reference-manifest.json +28 -18
  186. package/server/.next/server/app/(console)/topology/page.js +77 -75
  187. package/server/.next/server/app/(console)/topology/page.js.nft.json +1 -1
  188. package/server/.next/server/app/(console)/topology/page_client-reference-manifest.js +1 -1
  189. package/server/.next/server/app/(console)/turso/page/build-manifest.json +3 -3
  190. package/server/.next/server/app/(console)/turso/page/server-reference-manifest.json +28 -18
  191. package/server/.next/server/app/(console)/turso/page.js +76 -74
  192. package/server/.next/server/app/(console)/turso/page.js.nft.json +1 -1
  193. package/server/.next/server/app/(console)/turso/page_client-reference-manifest.js +1 -1
  194. package/server/.next/server/app/(console)/upstash/page/build-manifest.json +3 -3
  195. package/server/.next/server/app/(console)/upstash/page/server-reference-manifest.json +28 -18
  196. package/server/.next/server/app/(console)/upstash/page.js +76 -74
  197. package/server/.next/server/app/(console)/upstash/page.js.nft.json +1 -1
  198. package/server/.next/server/app/(console)/upstash/page_client-reference-manifest.js +1 -1
  199. package/server/.next/server/app/(console)/uptime/page/build-manifest.json +3 -3
  200. package/server/.next/server/app/(console)/uptime/page/server-reference-manifest.json +56 -46
  201. package/server/.next/server/app/(console)/uptime/page.js +78 -76
  202. package/server/.next/server/app/(console)/uptime/page.js.nft.json +1 -1
  203. package/server/.next/server/app/(console)/uptime/page_client-reference-manifest.js +1 -1
  204. package/server/.next/server/app/(console)/welcome/page/build-manifest.json +3 -3
  205. package/server/.next/server/app/(console)/welcome/page/server-reference-manifest.json +38 -28
  206. package/server/.next/server/app/(console)/welcome/page.js +75 -73
  207. package/server/.next/server/app/(console)/welcome/page.js.nft.json +1 -1
  208. package/server/.next/server/app/(console)/welcome/page_client-reference-manifest.js +1 -1
  209. package/server/.next/server/app/_global-error/page/build-manifest.json +3 -3
  210. package/server/.next/server/app/_global-error/page/server-reference-manifest.json +1 -1
  211. package/server/.next/server/app/_global-error/page.js.nft.json +1 -1
  212. package/server/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  213. package/server/.next/server/app/_global-error.html +1 -1
  214. package/server/.next/server/app/_global-error.rsc +4 -4
  215. package/server/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +3 -3
  216. package/server/.next/server/app/_global-error.segments/_full.segment.rsc +4 -4
  217. package/server/.next/server/app/_global-error.segments/_tree.segment.rsc +2 -2
  218. package/server/.next/server/app/_not-found/page/build-manifest.json +3 -3
  219. package/server/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  220. package/server/.next/server/app/_not-found/page.js +14 -11
  221. package/server/.next/server/app/_not-found/page.js.nft.json +1 -1
  222. package/server/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  223. package/server/.next/server/app/_not-found.html +1 -1
  224. package/server/.next/server/app/_not-found.rsc +29 -24
  225. package/server/.next/server/app/_not-found.segments/_full.segment.rsc +29 -24
  226. package/server/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +27 -24
  227. package/server/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  228. package/server/.next/server/app/account/password/page/build-manifest.json +3 -3
  229. package/server/.next/server/app/account/password/page/server-reference-manifest.json +2 -2
  230. package/server/.next/server/app/account/password/page.js +17 -18
  231. package/server/.next/server/app/account/password/page.js.nft.json +1 -1
  232. package/server/.next/server/app/account/password/page_client-reference-manifest.js +1 -1
  233. package/server/.next/server/app/api/collect/route/server-reference-manifest.json +7 -7
  234. package/server/.next/server/app/api/collect/route.js +24 -24
  235. package/server/.next/server/app/api/collect/route.js.nft.json +1 -1
  236. package/server/.next/server/app/api/daily/route/server-reference-manifest.json +7 -7
  237. package/server/.next/server/app/api/daily/route.js +24 -24
  238. package/server/.next/server/app/api/daily/route.js.nft.json +1 -1
  239. package/server/.next/server/app/api/ping/[...parts]/route.js.nft.json +1 -1
  240. package/server/.next/server/app/api/status/route.js.nft.json +1 -1
  241. package/server/.next/server/app/api/telegram/webhook/route/server-reference-manifest.json +7 -7
  242. package/server/.next/server/app/api/telegram/webhook/route.js +23 -23
  243. package/server/.next/server/app/api/telegram/webhook/route.js.nft.json +1 -1
  244. package/server/.next/server/app/api/v1/advice/route.js +3 -3
  245. package/server/.next/server/app/api/v1/advice/route.js.nft.json +1 -1
  246. package/server/.next/server/app/api/v1/ai/chat/completions/route.js +1 -1
  247. package/server/.next/server/app/api/v1/ai/chat/completions/route.js.nft.json +1 -1
  248. package/server/.next/server/app/api/v1/ai/models/route.js +1 -1
  249. package/server/.next/server/app/api/v1/ai/models/route.js.nft.json +1 -1
  250. package/server/.next/server/app/api/v1/ai/questions/[id]/route.js.nft.json +1 -1
  251. package/server/.next/server/app/api/v1/ai/questions/route.js +3 -3
  252. package/server/.next/server/app/api/v1/ai/questions/route.js.nft.json +1 -1
  253. package/server/.next/server/app/api/v1/mcp/route.js +2 -2
  254. package/server/.next/server/app/api/v1/mcp/route.js.nft.json +1 -1
  255. package/server/.next/server/app/api/v1/me/route.js.nft.json +1 -1
  256. package/server/.next/server/app/api/v1/openapi.json/route.js.nft.json +1 -1
  257. package/server/.next/server/app/api/v1/status/apps/[app]/route.js +3 -3
  258. package/server/.next/server/app/api/v1/status/apps/[app]/route.js.nft.json +1 -1
  259. package/server/.next/server/app/api/v1/status/route.js +3 -3
  260. package/server/.next/server/app/api/v1/status/route.js.nft.json +1 -1
  261. package/server/.next/server/app/api/watchdog/route.js +13 -13
  262. package/server/.next/server/app/api/watchdog/route.js.nft.json +1 -1
  263. package/server/.next/server/app/auth/confirm/route.js.nft.json +1 -1
  264. package/server/.next/server/app/auth/google/callback/route.js +2 -2
  265. package/server/.next/server/app/auth/google/callback/route.js.nft.json +1 -1
  266. package/server/.next/server/app/auth/google/create/callback/route.js.nft.json +1 -1
  267. package/server/.next/server/app/auth/not-member/route.js.nft.json +1 -1
  268. package/server/.next/server/app/auth/session-ended/route.js.nft.json +1 -1
  269. package/server/.next/server/app/invite/page/build-manifest.json +3 -3
  270. package/server/.next/server/app/invite/page/server-reference-manifest.json +2 -2
  271. package/server/.next/server/app/invite/page.js +22 -22
  272. package/server/.next/server/app/invite/page.js.nft.json +1 -1
  273. package/server/.next/server/app/invite/page_client-reference-manifest.js +1 -1
  274. package/server/.next/server/app/mfa/page/build-manifest.json +3 -3
  275. package/server/.next/server/app/mfa/page/server-reference-manifest.json +2 -2
  276. package/server/.next/server/app/mfa/page.js +31 -32
  277. package/server/.next/server/app/mfa/page.js.nft.json +1 -1
  278. package/server/.next/server/app/mfa/page_client-reference-manifest.js +1 -1
  279. package/server/.next/server/app/mfa/setup/page/build-manifest.json +3 -3
  280. package/server/.next/server/app/mfa/setup/page/server-reference-manifest.json +3 -3
  281. package/server/.next/server/app/mfa/setup/page.js +31 -32
  282. package/server/.next/server/app/mfa/setup/page.js.nft.json +1 -1
  283. package/server/.next/server/app/mfa/setup/page_client-reference-manifest.js +1 -1
  284. package/server/.next/server/app/page/build-manifest.json +3 -3
  285. package/server/.next/server/app/page/server-reference-manifest.json +1 -1
  286. package/server/.next/server/app/page.js +14 -11
  287. package/server/.next/server/app/page.js.nft.json +1 -1
  288. package/server/.next/server/app/page_client-reference-manifest.js +1 -1
  289. package/server/.next/server/app/s/[slug]/badge/[file]/route.js.nft.json +1 -1
  290. package/server/.next/server/app/s/[slug]/page/build-manifest.json +3 -3
  291. package/server/.next/server/app/s/[slug]/page/server-reference-manifest.json +1 -1
  292. package/server/.next/server/app/s/[slug]/page.js +21 -20
  293. package/server/.next/server/app/s/[slug]/page.js.nft.json +1 -1
  294. package/server/.next/server/app/s/[slug]/page_client-reference-manifest.js +1 -1
  295. package/server/.next/server/app/setup/page/build-manifest.json +3 -3
  296. package/server/.next/server/app/setup/page/server-reference-manifest.json +2 -2
  297. package/server/.next/server/app/setup/page.js +20 -18
  298. package/server/.next/server/app/setup/page.js.nft.json +1 -1
  299. package/server/.next/server/app/setup/page_client-reference-manifest.js +1 -1
  300. package/server/.next/server/app/signin/page/build-manifest.json +3 -3
  301. package/server/.next/server/app/signin/page/server-reference-manifest.json +3 -3
  302. package/server/.next/server/app/signin/page.js +28 -28
  303. package/server/.next/server/app/signin/page.js.nft.json +1 -1
  304. package/server/.next/server/app/signin/page_client-reference-manifest.js +1 -1
  305. package/server/.next/server/chunks/{[externals]__0dolpidprtypa._.js → [externals]__0y_x27mdj85p4._.js} +1 -1
  306. package/server/.next/server/chunks/{[externals]__0pfohce9kbhcc._.js → [externals]__1fzfzd0ia0sk6._.js} +1 -1
  307. package/server/.next/server/chunks/{[externals]__1ou2ofma806s1._.js → [externals]__1qqyrxnupegg3._.js} +1 -1
  308. package/server/.next/server/chunks/{[root-of-the-server]__0wbhuhlkn_ueu._.js → [root-of-the-server]__0-ytbad9hn7uc._.js} +2 -2
  309. package/server/.next/server/chunks/{[root-of-the-server]__1cbg6fvn16har._.js → [root-of-the-server]__0032rbj2s87zo._.js} +2 -2
  310. package/server/.next/server/chunks/{[root-of-the-server]__1-bvfylgbkjso._.js → [root-of-the-server]__02n6y6aa6qp1b._.js} +2 -2
  311. package/server/.next/server/chunks/{[root-of-the-server]__163-eo1vkbzx1._.js → [root-of-the-server]__03i6yscmtbhhg._.js} +2 -2
  312. package/server/.next/server/chunks/{[root-of-the-server]__1x9u88f9545aa._.js → [root-of-the-server]__05qcc-0e8z1u8._.js} +2 -2
  313. package/server/.next/server/chunks/{[root-of-the-server]__1p1k8nq50cwfy._.js → [root-of-the-server]__07bw6o0jc31yr._.js} +2 -2
  314. package/server/.next/server/chunks/{[root-of-the-server]__14pgqdfdkuopi._.js → [root-of-the-server]__07eo--c90cju2._.js} +2 -2
  315. package/server/.next/server/chunks/{[root-of-the-server]__0iysztx_xio84._.js → [root-of-the-server]__07mzeijv31avl._.js} +2 -2
  316. package/server/.next/server/chunks/{[root-of-the-server]__05ht00n_eiksb._.js → [root-of-the-server]__090in165mp6av._.js} +1 -1
  317. package/server/.next/server/chunks/{[root-of-the-server]__02s57amypj_ye._.js → [root-of-the-server]__09odxyho_9vk_._.js} +2 -2
  318. package/server/.next/server/chunks/{[root-of-the-server]__0403hy52a1qcu._.js → [root-of-the-server]__0bmyll20mg_gf._.js} +1 -1
  319. package/server/.next/server/chunks/{[root-of-the-server]__08k886n7y6f_3._.js → [root-of-the-server]__0btybbrsr4abf._.js} +1 -1
  320. package/server/.next/server/chunks/{[root-of-the-server]__0hvejly8-nlkq._.js → [root-of-the-server]__0c-33noc8yn1-._.js} +1 -1
  321. package/server/.next/server/chunks/{[root-of-the-server]__1xrt934xl5wbd._.js → [root-of-the-server]__0d99wclm2suox._.js} +2 -2
  322. package/server/.next/server/chunks/{[root-of-the-server]__0b136ghrklbbn._.js → [root-of-the-server]__0dsy-9ts8s-pn._.js} +1 -1
  323. package/server/.next/server/chunks/{[root-of-the-server]__01estsu5k8l4t._.js → [root-of-the-server]__0g1cifa7hd790._.js} +1 -1
  324. package/server/.next/server/chunks/{[root-of-the-server]__0pwn8go30dm_3._.js → [root-of-the-server]__0gox66sv0bx47._.js} +2 -2
  325. package/server/.next/server/chunks/{[root-of-the-server]__0w8qhgmo5c23i._.js → [root-of-the-server]__0hblpf7wqke-j._.js} +2 -2
  326. package/server/.next/server/chunks/{[root-of-the-server]__0kgmy-sltdtb_._.js → [root-of-the-server]__0hlyn_aj72sn5._.js} +2 -2
  327. package/server/.next/server/chunks/{[root-of-the-server]__0cskq__p3tja8._.js → [root-of-the-server]__0hnljrh9qi9t-._.js} +2 -2
  328. package/server/.next/server/chunks/{[root-of-the-server]__0xgl1cg3z00iz._.js → [root-of-the-server]__0hrtz5c_46jkw._.js} +1 -1
  329. package/server/.next/server/chunks/[root-of-the-server]__0iicsi0n7tfa5._.js +3 -0
  330. package/server/.next/server/chunks/{[root-of-the-server]__0dc0pz57q73va._.js → [root-of-the-server]__0kp0yx909wtab._.js} +1 -1
  331. package/server/.next/server/chunks/{[root-of-the-server]__04ruh9diphqtp._.js → [root-of-the-server]__0ku7nva3gxa9p._.js} +2 -2
  332. package/server/.next/server/chunks/{[root-of-the-server]__1w-yk3b07wcf1._.js → [root-of-the-server]__0l6_iao04u72h._.js} +2 -2
  333. package/server/.next/server/chunks/{[root-of-the-server]__1yzaj148hs9a1._.js → [root-of-the-server]__0l9ja3579qrju._.js} +2 -2
  334. package/server/.next/server/chunks/{[root-of-the-server]__0_64c807n6q9e._.js → [root-of-the-server]__0noc6l63d3l9w._.js} +2 -2
  335. package/server/.next/server/chunks/[root-of-the-server]__0nqbue6i0l3qs._.js +3 -0
  336. package/server/.next/server/chunks/{[root-of-the-server]__04zuzs7oruu3o._.js → [root-of-the-server]__0nrg8zzqizk69._.js} +2 -2
  337. package/server/.next/server/chunks/{[root-of-the-server]__1lbmzw1j9jufm._.js → [root-of-the-server]__0oy0hcm48kl-q._.js} +2 -2
  338. package/server/.next/server/chunks/{[root-of-the-server]__0l5v9itfv9nhr._.js → [root-of-the-server]__0r1men25anfgb._.js} +1 -1
  339. package/server/.next/server/chunks/{[root-of-the-server]__05jzukkrp2pvu._.js → [root-of-the-server]__0s5b-tdq7rndj._.js} +2 -2
  340. package/server/.next/server/chunks/{[root-of-the-server]__1ry92m8xlcebk._.js → [root-of-the-server]__0v-gc-c_e8pwl._.js} +2 -2
  341. package/server/.next/server/chunks/[root-of-the-server]__0wp6j3irilu76._.js +3 -0
  342. package/server/.next/server/chunks/{[root-of-the-server]__0t9o5ca5bzg0p._.js → [root-of-the-server]__0x487cn6dsn12._.js} +2 -2
  343. package/server/.next/server/chunks/{[root-of-the-server]__11qvos_7nf8z8._.js → [root-of-the-server]__0yuyew8m9dc6-._.js} +1 -1
  344. package/server/.next/server/chunks/{[root-of-the-server]__1w9hei9xe1odr._.js → [root-of-the-server]__0zni_2pv2fdgb._.js} +2 -2
  345. package/server/.next/server/chunks/{[root-of-the-server]__10mob-6xfy8b0._.js → [root-of-the-server]__125fkw52kl2ty._.js} +2 -2
  346. package/server/.next/server/chunks/[root-of-the-server]__13hrm9c61i7uk._.js +3 -0
  347. package/server/.next/server/chunks/{[root-of-the-server]__0m9648az7bkus._.js → [root-of-the-server]__16lfk1wg0ejaa._.js} +2 -2
  348. package/server/.next/server/chunks/{[root-of-the-server]__1vmls0bkau925._.js → [root-of-the-server]__16waq6rapvngp._.js} +2 -2
  349. package/server/.next/server/chunks/[root-of-the-server]__18eg-mk5loj_8._.js +3 -0
  350. package/server/.next/server/chunks/[root-of-the-server]__19ylbgd65iej4._.js +3 -0
  351. package/server/.next/server/chunks/{[root-of-the-server]__1vutb2z9gw8el._.js → [root-of-the-server]__1adw_bv2u89kc._.js} +1 -1
  352. package/server/.next/server/chunks/[root-of-the-server]__1c653f_8qzrpd._.js +3 -0
  353. package/server/.next/server/chunks/{[root-of-the-server]__00wz8qo4hgq2i._.js → [root-of-the-server]__1c78cu7kb9vkl._.js} +2 -2
  354. package/server/.next/server/chunks/[root-of-the-server]__1d5y0cc5mg_07._.js +3 -0
  355. package/server/.next/server/chunks/[root-of-the-server]__1e1l75cf48ph2._.js +3 -0
  356. package/server/.next/server/chunks/[root-of-the-server]__1eu2_f44as742._.js +3 -0
  357. package/server/.next/server/chunks/[root-of-the-server]__1hv3hk5182t-o._.js +3 -0
  358. package/server/.next/server/chunks/[root-of-the-server]__1j6xniw630fg0._.js +3 -0
  359. package/server/.next/server/chunks/{[root-of-the-server]__1cwr95yi8preu._.js → [root-of-the-server]__1jsf0jf_ljpsm._.js} +2 -2
  360. package/server/.next/server/chunks/{[root-of-the-server]__1fj8d0drhw1yx._.js → [root-of-the-server]__1lerees-l5-6c._.js} +2 -2
  361. package/server/.next/server/chunks/{[root-of-the-server]__1sb8d4e5b5pdl._.js → [root-of-the-server]__1lj1f2w2-w8nw._.js} +2 -2
  362. package/server/.next/server/chunks/[root-of-the-server]__1nu5isiy7d832._.js +3 -0
  363. package/server/.next/server/chunks/{[root-of-the-server]__0sfnhgc5reef1._.js → [root-of-the-server]__1ooxluowhatjt._.js} +2 -2
  364. package/server/.next/server/chunks/[root-of-the-server]__1pvx0izh1m_0_._.js +3 -0
  365. package/server/.next/server/chunks/{[root-of-the-server]__0i3bs_98vlttu._.js → [root-of-the-server]__1rpgddeg42i-q._.js} +2 -2
  366. package/server/.next/server/chunks/{[root-of-the-server]__1r9j5o80kocvz._.js → [root-of-the-server]__1s4bwjevs4hd-._.js} +2 -2
  367. package/server/.next/server/chunks/[root-of-the-server]__1uox9a0td-o0-._.js +3 -0
  368. package/server/.next/server/chunks/[root-of-the-server]__1vvg0ur3_7o0p._.js +3 -0
  369. package/server/.next/server/chunks/[root-of-the-server]__1vwz2r58cojht._.js +3 -0
  370. package/server/.next/server/chunks/{[root-of-the-server]__1zcp6yrat15t5._.js → [root-of-the-server]__1wpdlr4uh1un4._.js} +2 -2
  371. package/server/.next/server/chunks/[root-of-the-server]__1x7en4waq21dd._.js +3 -0
  372. package/server/.next/server/chunks/[root-of-the-server]__1x813cg-b9rls._.js +3 -0
  373. package/server/.next/server/chunks/{[root-of-the-server]__1147qf6sf3ru4._.js → [root-of-the-server]__1xl6_spngp6k3._.js} +2 -2
  374. package/server/.next/server/chunks/{[root-of-the-server]__1lfidps4tcfkg._.js → [root-of-the-server]__1y2qf8ltxhk0o._.js} +2 -2
  375. package/server/.next/server/chunks/[root-of-the-server]__1z_0gt-w6bx9v._.js +3 -0
  376. package/server/.next/server/chunks/{[root-of-the-server]__1w_wtn9h9eu93._.js → [root-of-the-server]__1zvoez8iapsem._.js} +2 -2
  377. package/server/.next/server/chunks/[root-of-the-server]__209g3_0l-y67u._.js +3 -0
  378. package/server/.next/server/chunks/[root-of-the-server]__20pu-tixzpeev._.js +3 -0
  379. package/server/.next/server/chunks/_0-fp57b-utmuw._.js +1 -1
  380. package/server/.next/server/chunks/_004c7-39glldb._.js +4 -4
  381. package/server/.next/server/chunks/_004j-wbs3yn84._.js +1 -1
  382. package/server/.next/server/chunks/_03qlijpos6a21._.js +1 -1
  383. package/server/.next/server/chunks/_06lf75x-xhl7v._.js +1 -1
  384. package/server/.next/server/chunks/_09l75j3ey14tc._.js +1 -1
  385. package/server/.next/server/chunks/_0brb2454uen18._.js +1 -1
  386. package/server/.next/server/chunks/_0dkhprw6wsizx._.js +1 -1
  387. package/server/.next/server/chunks/_0duxuj4kmjibl._.js +46 -0
  388. package/server/.next/server/chunks/_0gz8ldqeokdtn._.js +1 -1
  389. package/server/.next/server/chunks/_0kmhvts35imzs._.js +4 -4
  390. package/server/.next/server/chunks/_0l_hz-8cj94r7._.js +3 -0
  391. package/server/.next/server/chunks/_0n-wbmmvp4omq._.js +1 -1
  392. package/server/.next/server/chunks/_0ofzzim090ezo._.js +1 -1
  393. package/server/.next/server/chunks/_0q3ygdztfvqq6._.js +3 -0
  394. package/server/.next/server/chunks/{_1msi9fy888xna._.js → _0q9a3ettj_h2s._.js} +2 -2
  395. package/server/.next/server/chunks/_0qmi54vmnlwdv._.js +7 -7
  396. package/server/.next/server/chunks/_0qyupoc7u5hr7._.js +3 -0
  397. package/server/.next/server/chunks/_0rwuppwyvemfj._.js +4 -4
  398. package/server/.next/server/chunks/{_1z8__gxixw-z-._.js → _0ry4553j-m5fp._.js} +3 -3
  399. package/server/.next/server/chunks/_0s2odl9xacsg0._.js +1 -1
  400. package/server/.next/server/chunks/_0sy878k2ywjbq._.js +1 -1
  401. package/server/.next/server/chunks/_0tz4o-qufnu3l._.js +4 -4
  402. package/server/.next/server/chunks/_0voowig3y32v1._.js +4 -4
  403. package/server/.next/server/chunks/_0wtlf0x_depae._.js +3 -0
  404. package/server/.next/server/chunks/_0xf7mtsrkgc9e._.js +2 -2
  405. package/server/.next/server/chunks/_0zj10_al6r59j._.js +26 -26
  406. package/server/.next/server/chunks/_1-pcsy2hkg0il._.js +3 -0
  407. package/server/.next/server/chunks/_1-pw7jw52sbti._.js +1 -1
  408. package/server/.next/server/chunks/_10vh_l3hht4_3._.js +4 -4
  409. package/server/.next/server/chunks/_113ebzq_9i756._.js +46 -0
  410. package/server/.next/server/chunks/{_219klbycazlx_._.js → _16urxazbgm48y._.js} +3 -3
  411. package/server/.next/server/chunks/_17aiz6zt-yv52._.js +2 -2
  412. package/server/.next/server/chunks/_18p-vw2zmdx9f._.js +1 -1
  413. package/server/.next/server/chunks/_1_son1yzo5xvl._.js +1 -1
  414. package/server/.next/server/chunks/_1_xsrlijknnh3._.js +1 -1
  415. package/server/.next/server/chunks/_1a5vma58w9ytn._.js +4 -4
  416. package/server/.next/server/chunks/_1e_rbkrukj0x9._.js +26 -26
  417. package/server/.next/server/chunks/{_060yqv0qyo-lp._.js → _1g8r-7wcf8sy3._.js} +3 -3
  418. package/server/.next/server/chunks/_1g_prqb_u33e3._.js +7 -7
  419. package/server/.next/server/chunks/_1h73gul79s8pi._.js +1 -1
  420. package/server/.next/server/chunks/_1ihndlef8r00f._.js +46 -0
  421. package/server/.next/server/chunks/_1mwb214-ablfo._.js +46 -0
  422. package/server/.next/server/chunks/_1ngkjn56qmi2x._.js +3 -0
  423. package/server/.next/server/chunks/_1v7q0xdxbqawm._.js +4 -4
  424. package/server/.next/server/chunks/_1xs2ya_n7kb04._.js +4 -4
  425. package/server/.next/server/chunks/node_modules_drizzle-orm_entity_1-0q2stnw2ab8.js +1 -1
  426. package/server/.next/server/chunks/node_modules_zod_v4_classic_external_01k1rek7hgd0j.js +4 -4
  427. package/server/.next/server/chunks/src_0--qn984h6czu._.js +1 -1
  428. package/server/.next/server/chunks/{src_0lcm1yhnzhn2d._.js → src_00ixvrjrk_2h4._.js} +2 -2
  429. package/server/.next/server/chunks/src_063xvouojxyoa._.js +1 -1
  430. package/server/.next/server/chunks/src_088gmyaew7ds0._.js +1 -1
  431. package/server/.next/server/chunks/{src_0v67kw2p2wd_c._.js → src_0tdn7mun5rvc6._.js} +2 -2
  432. package/server/.next/server/chunks/src_0y_4gogmeu-2k._.js +1 -1
  433. package/server/.next/server/chunks/src_1-xw4hea2lvb3._.js +1 -1
  434. package/server/.next/server/chunks/{src_0390zcofy42lg._.js → src_10vyvp9vy_69h._.js} +2 -2
  435. package/server/.next/server/chunks/{src_1v3tf1ye2jzyk._.js → src_13n1vi7uew4iu._.js} +2 -2
  436. package/server/.next/server/chunks/src_1a5yibsjcy1ga._.js +1 -1
  437. package/server/.next/server/chunks/src_1bqzr81r3wkvi._.js +1 -1
  438. package/server/.next/server/chunks/{src_07vqa8fdgu9ah._.js → src_1il7wg_qjxny7._.js} +2 -2
  439. package/server/.next/server/chunks/src_1tux0n9_5b1kr._.js +7 -4
  440. package/server/.next/server/chunks/src_1u-olt84z63rx._.js +1 -1
  441. package/server/.next/server/chunks/src_1wduh0eckiwl1._.js +1 -1
  442. package/server/.next/server/chunks/src_1wzm081p6qyre._.js +7 -4
  443. package/server/.next/server/chunks/src_20ilndq84j3b3._.js +3 -0
  444. package/server/.next/server/chunks/src_lib_0ayxuk4ftzf2f._.js +6 -0
  445. package/server/.next/server/chunks/src_lib_0ds7lhpop_adf._.js +1 -1
  446. package/server/.next/server/chunks/src_lib_0glcfed-uogyd._.js +1 -1
  447. package/server/.next/server/chunks/src_lib_0krdzz8eu9xh3._.js +6 -0
  448. package/server/.next/server/chunks/src_lib_0ta8sd9jeuw50._.js +15 -9
  449. package/server/.next/server/chunks/src_lib_1-u7dbsavbtb0._.js +6 -0
  450. package/server/.next/server/chunks/src_lib_103kimc1xvc_0._.js +9 -0
  451. package/server/.next/server/chunks/src_lib_1en6omqx66g9d._.js +15 -9
  452. package/server/.next/server/chunks/src_lib_1qo6t00wwitz6._.js +15 -9
  453. package/server/.next/server/chunks/src_lib_1sdusf16f07x-._.js +9 -0
  454. package/server/.next/server/chunks/src_lib_1sz77jjn7xl7o._.js +1 -1
  455. package/server/.next/server/chunks/src_lib_1xwavi_m_li7p._.js +1 -1
  456. package/server/.next/server/chunks/src_lib_206j7lyff31-g._.js +6 -0
  457. package/server/.next/server/chunks/src_lib_alerts_catalog_ts_1ndg28acul64q._.js +1 -1
  458. package/server/.next/server/chunks/src_lib_auth_ts_11yt3pae6wy-o._.js +1 -1
  459. package/server/.next/server/chunks/src_lib_collector_runners_ts_12z4gtgikss74._.js +5 -5
  460. package/server/.next/server/chunks/src_lib_data_advisor-db_ts_0rl1ug3iana24._.js +1 -1
  461. package/server/.next/server/chunks/src_lib_data_apps-db_ts_02ovqtci8e7o6._.js +1 -1
  462. package/server/.next/server/chunks/src_lib_data_provider-status-db_ts_09oo6p4m7x7te._.js +1 -1
  463. package/server/.next/server/chunks/src_lib_demo_pool_ts_17xz9bk-d5uic._.js +6 -6
  464. package/server/.next/server/chunks/src_lib_domain-move_ts_04stiet1-xpe2._.js +1 -1
  465. package/server/.next/server/chunks/src_lib_local-auth_setup_ts_10d8-k_e6pvft._.js +2 -2
  466. package/server/.next/server/chunks/src_lib_notify_telegram-bot_ts_18y40dkchmcqd._.js +1 -1
  467. package/server/.next/server/chunks/src_lib_view_databases_ts_1ovdbo8spjhf9._.js +1 -1
  468. package/server/.next/server/chunks/src_lib_view_display-name_ts_0xoimm6j7bwnf._.js +1 -1
  469. package/server/.next/server/chunks/src_lib_view_labels_ts_1uxs84z7vclz5._.js +1 -1
  470. package/server/.next/server/chunks/src_private_1_nggk_wre7qf._.js +2 -2
  471. package/server/.next/server/chunks/src_private_ai_gateway_ts_04_5ao9914d0p._.js +1 -1
  472. package/server/.next/server/chunks/src_private_ai_gateway_ts_1qtr4nyb8kgnd._.js +2 -2
  473. package/server/.next/server/chunks/src_private_assist_provider-answer_ts_10qv42t-5046y._.js +1 -1
  474. package/server/.next/server/chunks/src_private_assist_questions-db_ts_1l-wvmlexd7tr._.js +1 -1
  475. package/server/.next/server/chunks/src_private_assist_questions-db_ts_1pc4g504t-qmu._.js +1 -1
  476. package/server/.next/server/chunks/src_private_notes_notes-actions_ts_1g63g8u965fhc._.js +1 -1
  477. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_agents_page_actions_21atz5tidps07.js +3 -0
  478. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_models_page_actions_0rvlzfa8rjyz_.js +3 -0
  479. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_playground_page_actions_01ejc1xilpuh4.js +4 -0
  480. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_quota_page_actions_0iki29gyi8cwa.js +3 -0
  481. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_usage_page_actions_1c99h-kwdnep7.js +3 -0
  482. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_auto-actions_page_actions_1kw4ce6-efkr1.js +3 -0
  483. package/server/.next/server/chunks/ssr/{[externals]__0jv_q8g96gubg._.js → [externals]__00tbi838eotwu._.js} +1 -1
  484. package/server/.next/server/chunks/ssr/{[externals]__1hqh7fi0-rtlc._.js → [externals]__01kgu896o9-9t._.js} +1 -1
  485. package/server/.next/server/chunks/ssr/{[externals]__1neu6qld_ilyx._.js → [externals]__078uqm46tk5mo._.js} +1 -1
  486. package/server/.next/server/chunks/ssr/{[externals]__0yzs5m5hot2o2._.js → [externals]__0i0hmh-a743jn._.js} +1 -1
  487. package/server/.next/server/chunks/ssr/{[externals]__0et8619os7o06._.js → [externals]__0qc7l-41h018j._.js} +1 -1
  488. package/server/.next/server/chunks/ssr/[externals]__194b54tqm6qaq._.js +3 -0
  489. package/server/.next/server/chunks/ssr/[externals]__1_ttbfsdm3x1-._.js +3 -0
  490. package/server/.next/server/chunks/ssr/{[externals]__0x50_fipcza3k._.js → [externals]__1devsqn7ez77y._.js} +1 -1
  491. package/server/.next/server/chunks/ssr/[externals]__1prfp5pzeoflz._.js +3 -0
  492. package/server/.next/server/chunks/ssr/[externals]__1zxtjc2qr2epg._.js +3 -0
  493. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0oayb8dm0iu8k._.js → [root-of-the-server]__004q78ed0nf0_._.js} +2 -2
  494. package/server/.next/server/chunks/ssr/[root-of-the-server]__01zthkv8nrlct._.js +3 -0
  495. package/server/.next/server/chunks/ssr/{[root-of-the-server]__050d99bknjdvq._.js → [root-of-the-server]__04_prmhm_cts4._.js} +2 -2
  496. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0-jx3t8dg8n5t._.js → [root-of-the-server]__04nc91kiy757l._.js} +2 -2
  497. package/server/.next/server/chunks/ssr/{[root-of-the-server]__1xwqrik2sugmi._.js → [root-of-the-server]__09blzlbsxqvy9._.js} +2 -2
  498. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0-o5i-5pqjk5v._.js → [root-of-the-server]__0_6on4a5w76va._.js} +1 -1
  499. package/server/.next/server/chunks/ssr/{[root-of-the-server]__1tco2ec6ha1k6._.js → [root-of-the-server]__0a3n6wzq8xui9._.js} +2 -2
  500. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0ptdec0sozaqm._.js → [root-of-the-server]__0an0wsglj2bhh._.js} +2 -2
  501. package/server/.next/server/chunks/ssr/{[root-of-the-server]__18xb7pbdmiyiz._.js → [root-of-the-server]__0ban7lwqlko9y._.js} +2 -2
  502. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0khp_gsot3jh_._.js → [root-of-the-server]__0c_q6tvcmsmt9._.js} +2 -2
  503. package/server/.next/server/chunks/ssr/{[root-of-the-server]__00wwav5k7xmy0._.js → [root-of-the-server]__0ct4apye0sfmc._.js} +2 -2
  504. package/server/.next/server/chunks/ssr/{[root-of-the-server]__15keslh0ov5mv._.js → [root-of-the-server]__0d2ry7-u1cv8c._.js} +2 -2
  505. package/server/.next/server/chunks/ssr/[root-of-the-server]__0e8ya6wyy2plv._.js +3 -0
  506. package/server/.next/server/chunks/ssr/[root-of-the-server]__0h0txd7z3sxq7._.js +3 -0
  507. package/server/.next/server/chunks/ssr/{[root-of-the-server]__08w3ad-xux1g4._.js → [root-of-the-server]__0h1vffivfh242._.js} +1 -1
  508. package/server/.next/server/chunks/ssr/{[root-of-the-server]__05hw89gap74cw._.js → [root-of-the-server]__0i0_6dnnf0hov._.js} +2 -2
  509. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0khvq0xdah931._.js → [root-of-the-server]__0jgapr1cnvhi6._.js} +2 -2
  510. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0_1130gx52k-9._.js → [root-of-the-server]__0jn0o2e32mwcp._.js} +2 -2
  511. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0ojywxj06986-._.js → [root-of-the-server]__0k29b_kblv6sv._.js} +1 -1
  512. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0ejxk0jlgi4eb._.js → [root-of-the-server]__0keo0-hwsnkw9._.js} +2 -2
  513. package/server/.next/server/chunks/ssr/[root-of-the-server]__0klc2dyzyjeba._.js +3 -0
  514. package/server/.next/server/chunks/ssr/{[root-of-the-server]__16jkttbe1yoai._.js → [root-of-the-server]__0l50vsk8enxzj._.js} +2 -2
  515. package/server/.next/server/chunks/ssr/[root-of-the-server]__0nlfip3wc3l2z._.js +2 -2
  516. package/server/.next/server/chunks/ssr/{[root-of-the-server]__11ham42w_feik._.js → [root-of-the-server]__0o0cpvobd-u0n._.js} +1 -1
  517. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0kr_tvfgqtb-o._.js → [root-of-the-server]__0paolyy3xkow9._.js} +2 -2
  518. package/server/.next/server/chunks/ssr/[root-of-the-server]__0qnly-gjvfntd._.js +3 -0
  519. package/server/.next/server/chunks/ssr/[root-of-the-server]__0qqcz9ynsgmgl._.js +3 -0
  520. package/server/.next/server/chunks/ssr/{[root-of-the-server]__1k_hi9mbd4_by._.js → [root-of-the-server]__0qwds8dkahd2_._.js} +1 -1
  521. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0bn_thc_vtf_i._.js → [root-of-the-server]__0rdf04ziqasfz._.js} +2 -2
  522. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0_677ii9bahoy._.js → [root-of-the-server]__0ronqmm1xpldk._.js} +2 -2
  523. package/server/.next/server/chunks/ssr/[root-of-the-server]__0rrdzb9wowemv._.js +3 -0
  524. package/server/.next/server/chunks/ssr/[root-of-the-server]__0uxychcp_pldy._.js +3 -0
  525. package/server/.next/server/chunks/ssr/[root-of-the-server]__0vnfx03nb5vku._.js +3 -0
  526. package/server/.next/server/chunks/ssr/[root-of-the-server]__0x7w-5h8or6qr._.js +3 -0
  527. package/server/.next/server/chunks/ssr/{[root-of-the-server]__15wwi1pda8ims._.js → [root-of-the-server]__0xpkzaqer75i-._.js} +2 -2
  528. package/server/.next/server/chunks/ssr/[root-of-the-server]__0y6psx1_d7fkt._.js +3 -0
  529. package/server/.next/server/chunks/ssr/{[root-of-the-server]__04klr3-4qi7-t._.js → [root-of-the-server]__107gjehjdhw8p._.js} +2 -2
  530. package/server/.next/server/chunks/ssr/[root-of-the-server]__10kuehp7saz8h._.js +3 -0
  531. package/server/.next/server/chunks/ssr/[root-of-the-server]__113zn8es2wp67._.js +3 -0
  532. package/server/.next/server/chunks/ssr/{[root-of-the-server]__04tkts7c9ylma._.js → [root-of-the-server]__13fabu66slkfb._.js} +2 -2
  533. package/server/.next/server/chunks/ssr/[root-of-the-server]__14ept-_l8j32m._.js +1 -1
  534. package/server/.next/server/chunks/ssr/[root-of-the-server]__15s9onrf73-k8._.js +3 -0
  535. package/server/.next/server/chunks/ssr/{[root-of-the-server]__10rhqv5xq9jaj._.js → [root-of-the-server]__191t_hhtr-k27._.js} +2 -2
  536. package/server/.next/server/chunks/ssr/[root-of-the-server]__19l_r5vy3kxo1._.js +3 -0
  537. package/server/.next/server/chunks/ssr/{[root-of-the-server]__1096-q3_trmm9._.js → [root-of-the-server]__1_b_k8wgqyxy7._.js} +2 -2
  538. package/server/.next/server/chunks/ssr/[root-of-the-server]__1_f7nip9age3d._.js +1 -1
  539. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0exp042uqhyqs._.js → [root-of-the-server]__1a7x--bos5pv8._.js} +2 -2
  540. package/server/.next/server/chunks/ssr/[root-of-the-server]__1adcmllk9wt5l._.js +3 -0
  541. package/server/.next/server/chunks/ssr/[root-of-the-server]__1d5tbv79yjhqm._.js +3 -0
  542. package/server/.next/server/chunks/ssr/[root-of-the-server]__1fj33_xkainxk._.js +2 -2
  543. package/server/.next/server/chunks/ssr/[root-of-the-server]__1itgt83qo1e77._.js +3 -0
  544. package/server/.next/server/chunks/ssr/{[root-of-the-server]__12ymdwm8dphvu._.js → [root-of-the-server]__1mumjk3h0om80._.js} +2 -2
  545. package/server/.next/server/chunks/ssr/[root-of-the-server]__1nat8lbog5imr._.js +1 -1
  546. package/server/.next/server/chunks/ssr/[root-of-the-server]__1p2oghl9lfgmk._.js +3 -0
  547. package/server/.next/server/chunks/ssr/{[root-of-the-server]__1tcu4-eowz9vt._.js → [root-of-the-server]__1pwd99rch8xyl._.js} +2 -2
  548. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0llh-w4ta1qbp._.js → [root-of-the-server]__1sw2q1p1t59y8._.js} +2 -2
  549. package/server/.next/server/chunks/ssr/{[root-of-the-server]__06uaa_2zbg57p._.js → [root-of-the-server]__1tj-iwvrxfd1a._.js} +2 -2
  550. package/server/.next/server/chunks/ssr/{[root-of-the-server]__12-a3tcnfdcyq._.js → [root-of-the-server]__1u_13nhw3kuz3._.js} +2 -2
  551. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0tjab3yn0asf7._.js → [root-of-the-server]__1uojs0x42k86p._.js} +1 -1
  552. package/server/.next/server/chunks/ssr/{[root-of-the-server]__1kieqcc6kdywx._.js → [root-of-the-server]__1yx8ayym979jd._.js} +2 -2
  553. package/server/.next/server/chunks/ssr/[root-of-the-server]__1zmavjo5fhryp._.js +3 -0
  554. package/server/.next/server/chunks/ssr/[root-of-the-server]__20of6xa16fwqa._.js +1 -1
  555. package/server/.next/server/chunks/ssr/_0-wc6f6p0c8lv._.js +3 -0
  556. package/server/.next/server/chunks/ssr/{_04ltmruop4rt3._.js → _02eudwc8ieb2r._.js} +3 -3
  557. package/server/.next/server/chunks/ssr/_034fv8o7kws2k._.js +3 -0
  558. package/server/.next/server/chunks/ssr/_03od6e8ibcxtf._.js +3 -0
  559. package/server/.next/server/chunks/ssr/_042ow6smd_1gj._.js +3 -0
  560. package/server/.next/server/chunks/ssr/{_090fib2x989oc._.js → _08xqk3eibu5aw._.js} +2 -2
  561. package/server/.next/server/chunks/ssr/{_01irlde8uxva8._.js → _0_8v3-nq-b4ug._.js} +2 -2
  562. package/server/.next/server/chunks/ssr/_0_oc9q0vqkynd._.js +1 -1
  563. package/server/.next/server/chunks/ssr/_0_rtyc4t9xcdo._.js +1 -1
  564. package/server/.next/server/chunks/ssr/_0a22b7zsckifp._.js +1 -1
  565. package/server/.next/server/chunks/ssr/_0azq3ml4gbn1d._.js +1 -1
  566. package/server/.next/server/chunks/ssr/_0bd4cxnpnnq2u._.js +1 -1
  567. package/server/.next/server/chunks/ssr/{_1ag8axv14phju._.js → _0cbbks0ms7i_u._.js} +3 -3
  568. package/server/.next/server/chunks/ssr/_0cukja7zcxh7e._.js +1 -1
  569. package/server/.next/server/chunks/ssr/_0cw4kz3d6kmb1._.js +1 -1
  570. package/server/.next/server/chunks/ssr/_0d2d527wcx-lf._.js +4 -0
  571. package/server/.next/server/chunks/ssr/_0d702k82llasi._.js +1 -1
  572. package/server/.next/server/chunks/ssr/{_14n2368190qms._.js → _0fq8thje0tuch._.js} +2 -2
  573. package/server/.next/server/chunks/ssr/_0gl-ewvbhb677._.js +4 -0
  574. package/server/.next/server/chunks/ssr/_0i04zoixa2iup._.js +4 -0
  575. package/server/.next/server/chunks/ssr/_0idbg-ok0so2h._.js +4 -0
  576. package/server/.next/server/chunks/ssr/{_0tqc0bsnybvva._.js → _0ipnb60-_660b._.js} +2 -2
  577. package/server/.next/server/chunks/ssr/_0kdn56_ow-x_s._.js +3 -0
  578. package/server/.next/server/chunks/ssr/{_022u_nnwo1yb4._.js → _0kxkg0dbp42ai._.js} +2 -2
  579. package/server/.next/server/chunks/ssr/_0lmcrl8r9dg49._.js +1 -1
  580. package/server/.next/server/chunks/ssr/_0mp5aext18ijx._.js +3 -0
  581. package/server/.next/server/chunks/ssr/_0ns_087lx5abm._.js +1 -1
  582. package/server/.next/server/chunks/ssr/_0oovfx_t_-u0k._.js +1 -1
  583. package/server/.next/server/chunks/ssr/{_18lgd6o04ugow._.js → _0oub-njkja8gu._.js} +3 -3
  584. package/server/.next/server/chunks/ssr/_0pqkexxo7rts_._.js +4 -0
  585. package/server/.next/server/chunks/ssr/_0qhvl_fw4qetx._.js +1 -1
  586. package/server/.next/server/chunks/ssr/_0qo8tc43kjsf_._.js +1 -1
  587. package/server/.next/server/chunks/ssr/_0qyupoc7u5hr7._.js +3 -0
  588. package/server/.next/server/chunks/ssr/_0tnd528j0i1i4._.js +4 -0
  589. package/server/.next/server/chunks/ssr/_0uwkwcgucqgcf._.js +4 -0
  590. package/server/.next/server/chunks/ssr/_0v6v5w16qxwke._.js +1 -1
  591. package/server/.next/server/chunks/ssr/_0wb79bnj96x0g._.js +3 -0
  592. package/server/.next/server/chunks/ssr/_0wo-lpqf7hr1y._.js +2 -2
  593. package/server/.next/server/chunks/ssr/_0zixhhc1lheoi._.js +4 -0
  594. package/server/.next/server/chunks/ssr/_1-6d1tm3r_qwg._.js +1 -1
  595. package/server/.next/server/chunks/ssr/_10bven6gb1vj0._.js +5 -5
  596. package/server/.next/server/chunks/ssr/_118h21qua_4o3._.js +1 -1
  597. package/server/.next/server/chunks/ssr/_11llsmv578p2i._.js +3 -0
  598. package/server/.next/server/chunks/ssr/_12makqwatfke-._.js +4 -0
  599. package/server/.next/server/chunks/ssr/_19-3vzkc6rk97._.js +1 -1
  600. package/server/.next/server/chunks/ssr/_1_-o2s48aj4i7._.js +1 -1
  601. package/server/.next/server/chunks/ssr/_1_xsrlijknnh3._.js +1 -1
  602. package/server/.next/server/chunks/ssr/_1c7jkkvkvzj_u._.js +4 -0
  603. package/server/.next/server/chunks/ssr/_1cl55h_h3q-b_._.js +1 -1
  604. package/server/.next/server/chunks/ssr/_1de6e6l7599fp._.js +1 -1
  605. package/server/.next/server/chunks/ssr/_1dlo17ba9g-f9._.js +4 -0
  606. package/server/.next/server/chunks/ssr/_1dqf3jmb24s37._.js +1 -1
  607. package/server/.next/server/chunks/ssr/_1e47r3tlad52r._.js +3 -0
  608. package/server/.next/server/chunks/ssr/_1fc8k_0p8l00c._.js +4 -0
  609. package/server/.next/server/chunks/ssr/{_1w_rq6clcs0ft._.js → _1fuywfexex2s8._.js} +3 -3
  610. package/server/.next/server/chunks/ssr/_1g2zbl_-4z_hg._.js +1 -1
  611. package/server/.next/server/chunks/ssr/_1gl78598hz_ku._.js +1 -1
  612. package/server/.next/server/chunks/ssr/_1h93joqd_-1og._.js +1 -1
  613. package/server/.next/server/chunks/ssr/_1he21-bt45k8z._.js +4 -0
  614. package/server/.next/server/chunks/ssr/_1j9cka-44jd65._.js +1 -1
  615. package/server/.next/server/chunks/ssr/_1jh_o2i8hj2g5._.js +1 -1
  616. package/server/.next/server/chunks/ssr/_1ln6o3a9quwxo._.js +4 -0
  617. package/server/.next/server/chunks/ssr/{_0hmxyfx7su4uk._.js → _1m4km_w39x5e9._.js} +2 -2
  618. package/server/.next/server/chunks/ssr/_1pp1o361lgpwu._.js +4 -0
  619. package/server/.next/server/chunks/ssr/_1qdox4yn1u4pc._.js +1 -1
  620. package/server/.next/server/chunks/ssr/_1qdqc9j_skd1q._.js +1 -1
  621. package/server/.next/server/chunks/ssr/_1r7o1vx4875hu._.js +1 -1
  622. package/server/.next/server/chunks/ssr/_1yh3k88t_kh4h._.js +4 -0
  623. package/server/.next/server/chunks/ssr/_1z6dy1k48mskn._.js +1 -1
  624. package/server/.next/server/chunks/ssr/_20wy2moxkzhf0._.js +3 -0
  625. package/server/.next/server/chunks/ssr/{_026w_ig6vy9bt._.js → _218164gkxgum_._.js} +2 -2
  626. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_(private)_ai_keys_page_actions_181-3r4e_0yb5.js +3 -0
  627. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_(private)_ai_logs_page_actions_1ryb93n6khky3.js +3 -0
  628. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_alerts_page_actions_06_3gmyq3jtvi.js +3 -0
  629. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_apps_[id]_page_actions_0y5m8cul6d7kk.js +3 -0
  630. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_apps_page_actions_0ksau5eicvycc.js +3 -0
  631. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_connections_page_actions_1fgolmmpxrouc.js +3 -0
  632. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_dns_page_actions_17d_lvhl-u_4w.js +3 -0
  633. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_domains_page_actions_1yv3fj_fh-n-5.js +3 -0
  634. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_firebase_page_actions_00wuues_v_j3r.js +3 -0
  635. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_logs_page_actions_0oqh51t2rx6q0.js +3 -0
  636. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_manage_sections_page_actions_1sb2ldu57uj32.js +3 -0
  637. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_settings_page_actions_12wgjpd0lbh12.js +3 -0
  638. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_supabase_page_actions_1f3a_tpkwjo8z.js +3 -0
  639. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_uptime_page_actions_1ylbdz0-ykfh6.js +3 -0
  640. package/server/.next/server/chunks/ssr/_next-internal_server_app_account_password_page_actions_1v4e71_oifbx9.js +1 -1
  641. package/server/.next/server/chunks/ssr/_next-internal_server_app_signin_page_actions_11wzk446p6_zi.js +1 -1
  642. package/server/.next/server/chunks/ssr/node_modules_0bqq4kab3lt4c._.js +3 -0
  643. package/server/.next/server/chunks/ssr/{node_modules_05z64qbskywkh._.js → node_modules_1-uce_v-roeci._.js} +1 -1
  644. package/server/.next/server/chunks/ssr/node_modules_@base-ui_react_dialog_index_parts_mjs_0wvx70_xziwkw._.js +3 -0
  645. package/server/.next/server/chunks/ssr/node_modules_next_dist_client_components_0p8s4lhdi0ir6._.js +3 -0
  646. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0-kkewzcx4540.js +3 -0
  647. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_00t5_cu_8xco2.js +3 -0
  648. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_028rm32yw9745.js +3 -0
  649. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_02tytjla8gfpw.js +3 -0
  650. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_05tff2l0grv3d.js +3 -0
  651. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_08qavwdx-gipt.js +3 -0
  652. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_09jdr97vksmwk.js +3 -0
  653. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0c3z69fbbz6-a.js +3 -0
  654. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0d4hxwzkts-8z.js +3 -0
  655. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0dq-zslzf2s94.js +3 -0
  656. package/server/.next/server/chunks/ssr/{node_modules_next_dist_esm_build_templates_app-page_1q_82vyl-q7u6.js → node_modules_next_dist_esm_build_templates_app-page_0e-rjmezj0qkk.js} +2 -2
  657. package/server/.next/server/chunks/ssr/{node_modules_next_dist_esm_build_templates_app-page_0ivgh76j_tu2x.js → node_modules_next_dist_esm_build_templates_app-page_0e50mslm8ys4t.js} +2 -2
  658. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0esqulnipbhj7.js +3 -0
  659. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0icasmc2qvtfa.js +3 -0
  660. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0idohkgskbja5.js +3 -0
  661. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0ii2a6tud83pj.js +3 -0
  662. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0ivr2dcq7hh5t.js +3 -0
  663. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0mcwghl-di24f.js +3 -0
  664. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0n05qgf2t9o6n.js +3 -0
  665. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0ntej2bo95ns3.js +3 -0
  666. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0o1l93c0tj-p8.js +3 -0
  667. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0ollx_iq739y6.js +3 -0
  668. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0v16m5nv0x43b.js +3 -0
  669. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0wa_9ywaoqxrf.js +3 -0
  670. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0y94b-zvw0vrq.js +3 -0
  671. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0ydzswpddtx9q.js +3 -0
  672. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0zwpkpyuh6z99.js +3 -0
  673. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_14t5-0abqp0sm.js +3 -0
  674. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_18h3ke4tl-fzl.js +3 -0
  675. package/server/.next/server/chunks/ssr/{node_modules_next_dist_esm_build_templates_app-page_14-4y3i6c1vxc.js → node_modules_next_dist_esm_build_templates_app-page_19kqs-fc2i0zv.js} +2 -2
  676. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1_s_25znkg8mz.js +3 -0
  677. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1_ysa6fs0tt59.js +3 -0
  678. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1b4hixza89i52.js +3 -0
  679. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1brrqdx4msjzf.js +3 -0
  680. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1e74o7dar2z12.js +3 -0
  681. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1eqpqmdz9jgs0.js +3 -0
  682. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1f3932777ye1o.js +3 -0
  683. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1kx1n5-wqjvko.js +3 -0
  684. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1l6umnmh89nvy.js +3 -0
  685. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1mdyuengydtxm.js +3 -0
  686. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1qmm1wm-dfm_v.js +3 -0
  687. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1t-fn8blx1hp8.js +3 -0
  688. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1tf9xiz17b3cq.js +3 -0
  689. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1tffdbiasnszd.js +3 -0
  690. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1uisz6sszlhwp.js +3 -0
  691. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1umag21mbk-rs.js +3 -0
  692. package/server/.next/server/chunks/ssr/{node_modules_next_dist_esm_build_templates_app-page_0i3p3qfjihm3f.js → node_modules_next_dist_esm_build_templates_app-page_1vakvu0qtsn07.js} +2 -2
  693. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1wmviw4zw6t_r.js +3 -0
  694. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1xq449tjypb4s.js +3 -0
  695. package/server/.next/server/chunks/ssr/node_modules_zod_v4_classic_external_01k1rek7hgd0j.js +4 -4
  696. package/server/.next/server/chunks/ssr/src_02ynbzyh8nn02._.js +3 -0
  697. package/server/.next/server/chunks/ssr/src_0330uf9pdfco9._.js +3 -0
  698. package/server/.next/server/chunks/ssr/{src_0oagnv9_4qww7._.js → src_05kvmrkq5nfyh._.js} +2 -2
  699. package/server/.next/server/chunks/ssr/src_06tjy8wljego8._.js +1 -1
  700. package/server/.next/server/chunks/ssr/src_084tdkx3c_yqi._.js +1 -1
  701. package/server/.next/server/chunks/ssr/{src_0905fjqu0qv57._.js → src_097wa6oc_utgr._.js} +2 -2
  702. package/server/.next/server/chunks/ssr/src_0_5_wl0sww-x7._.js +6 -3
  703. package/server/.next/server/chunks/ssr/src_0abts6wp5ucc0._.js +1 -1
  704. package/server/.next/server/chunks/ssr/src_0etvjdinp5urq._.js +3 -0
  705. package/server/.next/server/chunks/ssr/src_0ph020gy78gi9._.js +1 -1
  706. package/server/.next/server/chunks/ssr/src_0uitfl3c1mdqb._.js +1 -1
  707. package/server/.next/server/chunks/ssr/src_0xh3xicmff6ws._.js +1 -1
  708. package/server/.next/server/chunks/ssr/src_1-xw4hea2lvb3._.js +1 -1
  709. package/server/.next/server/chunks/ssr/src_10zavgy86u3us._.js +1 -1
  710. package/server/.next/server/chunks/ssr/{src_071xsnvnzlvj8._.js → src_1751lvujjc-tz._.js} +2 -2
  711. package/server/.next/server/chunks/ssr/src_1f1x6508qetmp._.js +3 -0
  712. package/server/.next/server/chunks/ssr/{src_1nse4o3frj33x._.js → src_1fomo1_as1-ea._.js} +2 -2
  713. package/server/.next/server/chunks/ssr/src_1koc8y1nfdlw3._.js +1 -1
  714. package/server/.next/server/chunks/ssr/src_1pd5lqhm1x4yf._.js +1 -1
  715. package/server/.next/server/chunks/ssr/src_1q-jgpnd3lbcu._.js +1 -1
  716. package/server/.next/server/chunks/ssr/src_1sdwdnblbiq_g._.js +1 -1
  717. package/server/.next/server/chunks/ssr/src_1sv5tf2pk5-pn._.js +3 -0
  718. package/server/.next/server/chunks/ssr/{src_0widudneyf0oq._.js → src_1wnx8vxv7nd04._.js} +2 -2
  719. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_agents_1fyhh1ldgm23z._.js +1 -1
  720. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_ask_ask-form_tsx_18ttm9nna_9y6._.js +1 -1
  721. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_logs_export-button_tsx_1k-crb88n1za_._.js +1 -1
  722. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_models_0ayzqn062pnv5._.js +1 -1
  723. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_playground_playground-view_tsx_18ua5zn_a0mar._.js +2 -2
  724. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_providers_1ru-30x6-uwu4._.js +1 -1
  725. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_quota_limits-form_tsx_1vouaaf560z_x._.js +1 -1
  726. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_usage_limits-form_tsx_0sfk3ver58rqw._.js +1 -1
  727. package/server/.next/server/chunks/ssr/src_app_(console)_0p2-zm5eewkqo._.js +3 -0
  728. package/server/.next/server/chunks/ssr/src_app_(console)_1za4o0--zhso5._.js +3 -0
  729. package/server/.next/server/chunks/ssr/src_app_(console)_alerts_0j5xlt68kwg8x._.js +1 -1
  730. package/server/.next/server/chunks/ssr/src_app_(console)_alerts_1t61z2wktki-v._.js +1 -1
  731. package/server/.next/server/chunks/ssr/src_app_(console)_apps_[id]_1jme7fm7ej_lr._.js +3 -0
  732. package/server/.next/server/chunks/ssr/src_app_(console)_apps_[id]_1sfvku9ui1le-._.js +1 -1
  733. package/server/.next/server/chunks/ssr/src_app_(console)_backups_actions_ts_1vpytsdh0wc1f._.js +1 -1
  734. package/server/.next/server/chunks/ssr/src_app_(console)_backups_drive-buttons_tsx_00cku5r_z3jkg._.js +1 -1
  735. package/server/.next/server/chunks/ssr/src_app_(console)_connections_02upf_c41dauw._.js +1 -1
  736. package/server/.next/server/chunks/ssr/src_app_(console)_connections_1fahc65-97qla._.js +1 -1
  737. package/server/.next/server/chunks/ssr/src_app_(console)_connections_1fmp_anbkapur._.js +1 -1
  738. package/server/.next/server/chunks/ssr/src_app_(console)_connections_actions_ts_103blv4gzq76z._.js +1 -1
  739. package/server/.next/server/chunks/ssr/src_app_(console)_create_actions_ts_05-86qr6kfjey._.js +1 -1
  740. package/server/.next/server/chunks/ssr/src_app_(console)_d1_page_tsx_167hwnq_9uh81._.js +1 -1
  741. package/server/.next/server/chunks/ssr/src_app_(console)_dns_0d1uyir4fe7pc._.js +1 -1
  742. package/server/.next/server/chunks/ssr/src_app_(console)_dns_actions_ts_1jzn58xzwbukz._.js +1 -1
  743. package/server/.next/server/chunks/ssr/src_app_(console)_dns_record-actions_tsx_0cqmz51zcuebv._.js +1 -1
  744. package/server/.next/server/chunks/ssr/src_app_(console)_domains_1ut499n11u8_r._.js +1 -1
  745. package/server/.next/server/chunks/ssr/src_app_(console)_firebase_row-menu_tsx_0hssoq3pqjl-n._.js +1 -1
  746. package/server/.next/server/chunks/ssr/src_app_(console)_logs_log-viewer_tsx_0v3e4cflfk14w._.js +1 -1
  747. package/server/.next/server/chunks/ssr/src_app_(console)_manage_sections_17htk-vea5fna._.js +1 -1
  748. package/server/.next/server/chunks/ssr/src_app_(console)_manage_sections_section-switch_tsx_1mfs-o_357i22._.js +1 -1
  749. package/server/.next/server/chunks/ssr/src_app_(console)_monitor-actions_ts_10w3h7myk2ppi._.js +1 -1
  750. package/server/.next/server/chunks/ssr/src_app_(console)_overview_page_tsx_0se3f3ln9q-42._.js +1 -1
  751. package/server/.next/server/chunks/ssr/src_app_(console)_palette-action_ts_0zyw9a9imev6p._.js +1 -1
  752. package/server/.next/server/chunks/ssr/src_app_(console)_repos_[id]_page_tsx_1nkxthc4ethrj._.js +1 -1
  753. package/server/.next/server/chunks/ssr/src_app_(console)_sql_1icfsti04djqe._.js +2 -2
  754. package/server/.next/server/chunks/ssr/src_app_(console)_sql_actions_ts_1oqco02hw-3vp._.js +1 -1
  755. package/server/.next/server/chunks/ssr/src_app_(console)_status_page_tsx_1zvj799nv4kah._.js +1 -1
  756. package/server/.next/server/chunks/ssr/src_app_(console)_supabase_0ib3m2ch9gu-4._.js +1 -1
  757. package/server/.next/server/chunks/ssr/src_app_(console)_supabase_1ofufib3-zzt-._.js +1 -1
  758. package/server/.next/server/chunks/ssr/src_app_(console)_supabase_pool-actions_ts_0nzd4vwy_9zzx._.js +1 -1
  759. package/server/.next/server/chunks/ssr/src_app_(console)_uptime_1mnnkfi-2zv-k._.js +1 -1
  760. package/server/.next/server/chunks/ssr/src_app_(console)_vercel-actions_ts_0wpk1yo9v632d._.js +1 -1
  761. package/server/.next/server/chunks/ssr/src_app_mfa_setup_setup-flow_tsx_1fpwygr2vdgnh._.js +1 -1
  762. package/server/.next/server/chunks/ssr/src_app_s_[slug]_page_tsx_0jjqe6py82mpb._.js +1 -1
  763. package/server/.next/server/chunks/ssr/src_app_setup_setup-form_tsx_0izoagdur96e1._.js +1 -1
  764. package/server/.next/server/chunks/ssr/{src_app_signin_06v-xlrxfp079._.js → src_app_signin_11vigmz4xm91m._.js} +2 -2
  765. package/server/.next/server/chunks/ssr/src_components_0-x11r8_844pu._.js +1 -1
  766. package/server/.next/server/chunks/ssr/src_components_08d78uqnnmrrh._.js +1 -1
  767. package/server/.next/server/chunks/ssr/src_components_0_xymno8nakru._.js +3 -0
  768. package/server/.next/server/chunks/ssr/src_components_0ozvphxxwb7d-._.js +3 -0
  769. package/server/.next/server/chunks/ssr/src_components_0tmtbf2etsx03._.js +1 -1
  770. package/server/.next/server/chunks/ssr/src_components_charts_tsx_0u0c5sxi3-7ug._.js +1 -1
  771. package/server/.next/server/chunks/ssr/src_components_create_create-dialog_tsx_1s_9clly_m1ru._.js +1 -1
  772. package/server/.next/server/chunks/ssr/src_components_live_tsx_1p2s3b807w0jt._.js +1 -1
  773. package/server/.next/server/chunks/ssr/src_components_ui_dialog_tsx_1tn-i_6d3rhzt._.js +1 -1
  774. package/server/.next/server/chunks/ssr/src_lib_005l0kcpyu43o._.js +7 -1
  775. package/server/.next/server/chunks/ssr/src_lib_0f_4mvf4-xxst._.js +1 -1
  776. package/server/.next/server/chunks/ssr/src_lib_1xwavi_m_li7p._.js +1 -1
  777. package/server/.next/server/chunks/ssr/src_lib_1zgor_vrwl5kt._.js +5 -0
  778. package/server/.next/server/chunks/ssr/src_lib_alerts_catalog_ts_1ndg28acul64q._.js +1 -1
  779. package/server/.next/server/chunks/ssr/src_lib_auth_ts_11yt3pae6wy-o._.js +1 -1
  780. package/server/.next/server/chunks/ssr/src_lib_collector_run_ts_0-q8is8s0y9cq._.js +3 -3
  781. package/server/.next/server/chunks/ssr/src_lib_collector_self-update_ts_18m5vmptpjhtg._.js +3 -0
  782. package/server/.next/server/chunks/ssr/src_lib_data_apps-db_ts_02ovqtci8e7o6._.js +1 -1
  783. package/server/.next/server/chunks/ssr/src_lib_data_github-db_ts_02xuh84m-__8z._.js +1 -1
  784. package/server/.next/server/chunks/ssr/src_lib_data_provider-status-db_ts_09oo6p4m7x7te._.js +1 -1
  785. package/server/.next/server/chunks/ssr/{src_lib_demo_15okweo0amos4._.js → src_lib_demo_07uq47fhms-3d._.js} +2 -2
  786. package/server/.next/server/chunks/ssr/src_lib_domain-move_ts_04stiet1-xpe2._.js +1 -1
  787. package/server/.next/server/chunks/ssr/src_lib_local-auth_setup_ts_05zj7z33ne4f5._.js +1 -1
  788. package/server/.next/server/chunks/ssr/src_lib_security_node-runtime_ts_1jei00s21d6v0._.js +3 -0
  789. package/server/.next/server/chunks/ssr/src_lib_view_databases_ts_1ovdbo8spjhf9._.js +1 -1
  790. package/server/.next/server/chunks/ssr/src_lib_view_display-name_ts_0xoimm6j7bwnf._.js +1 -1
  791. package/server/.next/server/chunks/ssr/src_lib_view_labels_ts_1uxs84z7vclz5._.js +1 -1
  792. package/server/.next/server/chunks/ssr/src_lib_view_network_ts_0toa7t-gw9cup._.js +1 -1
  793. package/server/.next/server/chunks/ssr/src_private_04omlb_sgy-_r._.js +1 -1
  794. package/server/.next/server/chunks/ssr/src_private_0iy_wyg2p1jkn._.js +1 -1
  795. package/server/.next/server/chunks/ssr/src_private_actions_decide-form_tsx_1hngtxpyle3v8._.js +1 -1
  796. package/server/.next/server/chunks/ssr/src_private_actions_telegram-approvals_ts_14gvz6qi_j4aa._.js +1 -1
  797. package/server/.next/server/chunks/ssr/src_private_ai_gateway_ts_04_5ao9914d0p._.js +1 -1
  798. package/server/.next/server/chunks/ssr/src_private_ai_providers_actions_ts_0wxa36ai6s5nn._.js +1 -1
  799. package/server/.next/server/chunks/ssr/src_private_assist_advisor-notes_ts_0qkpm5c3la7fo._.js +6 -6
  800. package/server/.next/server/chunks/ssr/src_private_assist_questions-db_ts_1l-wvmlexd7tr._.js +1 -1
  801. package/server/.next/server/chunks/ssr/src_private_notes_notes-actions_ts_1g63g8u965fhc._.js +1 -1
  802. package/server/.next/server/middleware-build-manifest.js +105 -105
  803. package/server/.next/server/pages/404.html +1 -1
  804. package/server/.next/server/pages/500.html +1 -1
  805. package/server/.next/server/preview-props.json +3 -3
  806. package/server/.next/server/server-reference-manifest.js +1 -1
  807. package/server/.next/server/server-reference-manifest.json +860 -674
  808. package/server/.next/static/chunks/04ospu_w--6p9.js +1 -0
  809. package/server/.next/static/chunks/06a83nde7riq-.js +1 -0
  810. package/server/.next/static/chunks/088c6cw88jmlb.js +7 -0
  811. package/server/.next/static/chunks/08f1euchlacye.js +1 -0
  812. package/server/.next/static/chunks/09e-vdlax9bp6.js +1 -0
  813. package/server/.next/static/chunks/{0rgn3-cks0udn.js → 0a-rekt06v0sv.js} +1 -1
  814. package/server/.next/static/chunks/{3zaeh5nbkqpyj.js → 0a4b85ckxbprh.js} +1 -1
  815. package/server/.next/static/chunks/0buwzrf7dpagn.js +1 -0
  816. package/server/.next/static/chunks/0dmql-jz-o69o.js +1 -0
  817. package/server/.next/static/chunks/0iyozrryj1w49.js +1 -0
  818. package/server/.next/static/chunks/{0r2z8zg4n43pd.js → 0jf5lpzwq4vh1.js} +1 -1
  819. package/server/.next/static/chunks/0p6hja9octhrd.js +1 -0
  820. package/server/.next/static/chunks/{2wd8yh_ni0lqj.js → 0qoql97izcn4l.js} +1 -1
  821. package/server/.next/static/chunks/0qsk0bb1x81nc.js +1 -0
  822. package/server/.next/static/chunks/{22ierqxhqtwn6.js → 0wkv5e-c430ea.js} +2 -2
  823. package/server/.next/static/chunks/0x41o1ud_ksl1.js +1 -0
  824. package/server/.next/static/chunks/0x_wb_w6fgkyt.js +1 -0
  825. package/server/.next/static/chunks/{0foc_dy1j2x52.js → 12bbufru1ui37.js} +1 -1
  826. package/server/.next/static/chunks/{25r6-t40ok5s9.js → 12zasgv1xisb5.js} +1 -1
  827. package/server/.next/static/chunks/{2yjh4ytp-sedv.js → 149lk0boxihnl.js} +1 -1
  828. package/server/.next/static/chunks/17lwu-2id6c_-.js +1 -0
  829. package/server/.next/static/chunks/{16lnw4itnfhw-.js → 1_93oj1b-nrla.js} +1 -1
  830. package/server/.next/static/chunks/1bt81ubbahkh6.js +1 -0
  831. package/server/.next/static/chunks/1c0s-ejiwfy2u.js +1 -0
  832. package/server/.next/static/chunks/1g_kip3m3h9q6.js +1 -0
  833. package/server/.next/static/chunks/1i8i1ieoh738i.js +1 -0
  834. package/server/.next/static/chunks/1s0s32oqy-54t.js +1 -0
  835. package/server/.next/static/chunks/1ss-6-h8nloc9.js +1 -0
  836. package/server/.next/static/chunks/1t8fe3w70uapo.js +1 -0
  837. package/server/.next/static/chunks/1t9f2pdc3crnr.js +1 -0
  838. package/server/.next/static/chunks/1urtw14pwufsv.js +1 -0
  839. package/server/.next/static/chunks/1wh-ps6a57yj1.js +1 -0
  840. package/server/.next/static/chunks/20ujg0hz_need.js +1 -0
  841. package/server/.next/static/chunks/23b9tctw1mn5a.js +76 -0
  842. package/server/.next/static/chunks/292uz-rsh422k.js +1 -0
  843. package/server/.next/static/chunks/{11gctw6uutyd7.js → 29xg947lkf4-x.js} +1 -1
  844. package/server/.next/static/chunks/2ac9gyn8mzqp4.js +1 -0
  845. package/server/.next/static/chunks/2fze_cnwk8j76.js +1 -0
  846. package/server/.next/static/chunks/2g9dossbqnlr7.js +1 -0
  847. package/server/.next/static/chunks/{2aerfowxsf234.js → 2l4upq4bwgvvu.js} +1 -1
  848. package/server/.next/static/chunks/{177dd6kiifsoi.js → 2pi0r5spn0slc.js} +1 -1
  849. package/server/.next/static/chunks/2rpa_j81h_45y.js +1 -0
  850. package/server/.next/static/chunks/2szc6dvuj3gxy.js +1 -0
  851. package/server/.next/static/chunks/2u3iceaxpiiws.js +1 -0
  852. package/server/.next/static/chunks/2z21xxtcmsmhe.js +1 -0
  853. package/server/.next/static/chunks/{1rt5heq1xn_az.js → 315s21b2dd7lg.js} +1 -1
  854. package/server/.next/static/chunks/35to2q1uretcv.js +1 -0
  855. package/server/.next/static/chunks/{2q88116332v43.js → 37zqf9hef7g0k.js} +1 -1
  856. package/server/.next/static/chunks/38-ay595f3xie.js +1 -0
  857. package/server/.next/static/chunks/38ao1jq4zw-nd.js +1 -0
  858. package/server/.next/static/chunks/38conxv_f-pgo.js +1 -0
  859. package/server/.next/static/chunks/3cyesi3hi6l1g.js +5 -0
  860. package/server/.next/static/chunks/{04lzxilmq17f_.js → 3efi_dyz4y0lj.js} +1 -1
  861. package/server/.next/static/chunks/3qjirj3rjf5mu.js +1 -0
  862. package/server/.next/static/chunks/3vpy-ra0rib9m.js +1 -0
  863. package/server/.next/static/chunks/{22h4lj0gp_6n5.js → 3xxcpv79l5tnh.js} +1 -1
  864. package/server/.next/static/chunks/3ybb15n1q3f-o.css +3 -0
  865. package/server/drizzle-selfhost/0007_webhook_channel.sql +5 -0
  866. package/server/drizzle-selfhost/meta/_journal.json +7 -0
  867. package/tools/reset-login.mjs +1 -1
  868. package/server/.next/server/chunks/[root-of-the-server]__0ych1y0j6e38k._.js +0 -3
  869. package/server/.next/server/chunks/[root-of-the-server]__0zhzy29i2vylk._.js +0 -3
  870. package/server/.next/server/chunks/[root-of-the-server]__0zwe7i-isx08p._.js +0 -3
  871. package/server/.next/server/chunks/[root-of-the-server]__10ee5dhzx78ne._.js +0 -3
  872. package/server/.next/server/chunks/[root-of-the-server]__10q3dc485yp4l._.js +0 -3
  873. package/server/.next/server/chunks/[root-of-the-server]__10u93zgn0-c5a._.js +0 -3
  874. package/server/.next/server/chunks/[root-of-the-server]__115yxhfn37r-k._.js +0 -3
  875. package/server/.next/server/chunks/[root-of-the-server]__14mz6mbk2m_e0._.js +0 -3
  876. package/server/.next/server/chunks/[root-of-the-server]__15y82djobfhof._.js +0 -3
  877. package/server/.next/server/chunks/[root-of-the-server]__165qlmqwvxmzr._.js +0 -3
  878. package/server/.next/server/chunks/[root-of-the-server]__1acps2oi9s0i7._.js +0 -3
  879. package/server/.next/server/chunks/[root-of-the-server]__1erq9v_t5jwp5._.js +0 -3
  880. package/server/.next/server/chunks/[root-of-the-server]__1ip0gr1i080kn._.js +0 -3
  881. package/server/.next/server/chunks/[root-of-the-server]__1mrpvwofqktnv._.js +0 -3
  882. package/server/.next/server/chunks/[root-of-the-server]__1ppnnpydkrs93._.js +0 -3
  883. package/server/.next/server/chunks/[root-of-the-server]__1qdo_hgivrawk._.js +0 -3
  884. package/server/.next/server/chunks/[root-of-the-server]__1qp_dvfy4vvsm._.js +0 -3
  885. package/server/.next/server/chunks/[root-of-the-server]__1rk6wb8qem46d._.js +0 -3
  886. package/server/.next/server/chunks/[root-of-the-server]__1s20vd1etiird._.js +0 -3
  887. package/server/.next/server/chunks/[root-of-the-server]__1s9_nmhp7chvj._.js +0 -3
  888. package/server/.next/server/chunks/[root-of-the-server]__1yc_xjjam78sg._.js +0 -3
  889. package/server/.next/server/chunks/[root-of-the-server]__2067x8gf07f-i._.js +0 -3
  890. package/server/.next/server/chunks/_0beox3lp9z58-._.js +0 -3
  891. package/server/.next/server/chunks/_0gobsd0_oxj5v._.js +0 -3
  892. package/server/.next/server/chunks/_0vwctvzwde-sz._.js +0 -37
  893. package/server/.next/server/chunks/_0yzmfi6iwa_sk._.js +0 -3
  894. package/server/.next/server/chunks/_1c3ksp22eq0rw._.js +0 -37
  895. package/server/.next/server/chunks/_1cjfskikk32wj._.js +0 -37
  896. package/server/.next/server/chunks/_1d9mf39gz0bv4._.js +0 -3
  897. package/server/.next/server/chunks/_1dlvqnaceqr-_._.js +0 -3
  898. package/server/.next/server/chunks/_1jveb9aojczvg._.js +0 -3
  899. package/server/.next/server/chunks/_1qw43v448l9e7._.js +0 -37
  900. package/server/.next/server/chunks/src_0yve3gn52i_mn._.js +0 -3
  901. package/server/.next/server/chunks/src_lib_0cbh80jxsdx3n._.js +0 -6
  902. package/server/.next/server/chunks/src_lib_0s_txig7jm3ty._.js +0 -9
  903. package/server/.next/server/chunks/src_lib_15wd7ab4u5nrn._.js +0 -9
  904. package/server/.next/server/chunks/src_lib_15y0kwcot_7u0._.js +0 -6
  905. package/server/.next/server/chunks/src_lib_16y1secb8t9fj._.js +0 -6
  906. package/server/.next/server/chunks/src_lib_1iwyh213u9xts._.js +0 -6
  907. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_agents_page_actions_1q6nc5chwn5k4.js +0 -3
  908. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_models_page_actions_0n_anax2l1jpu.js +0 -3
  909. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_playground_page_actions_1kyng_xuojdtb.js +0 -4
  910. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_quota_page_actions_04r4ro6x7-p7p.js +0 -3
  911. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_usage_page_actions_1fq9uugdpqa_l.js +0 -3
  912. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_auto-actions_page_actions_0mhtiq_5szpe0.js +0 -3
  913. package/server/.next/server/chunks/ssr/[externals]__1mmmc4yhx5fm6._.js +0 -3
  914. package/server/.next/server/chunks/ssr/[externals]__1nv-uycpa6_lh._.js +0 -3
  915. package/server/.next/server/chunks/ssr/[externals]__1p5zuqwmfkoo1._.js +0 -3
  916. package/server/.next/server/chunks/ssr/[externals]__1thdbok76xtof._.js +0 -3
  917. package/server/.next/server/chunks/ssr/[root-of-the-server]__01mgajn73iwc7._.js +0 -5
  918. package/server/.next/server/chunks/ssr/[root-of-the-server]__05q-laapy00sk._.js +0 -3
  919. package/server/.next/server/chunks/ssr/[root-of-the-server]__0dd9rci1isdjf._.js +0 -3
  920. package/server/.next/server/chunks/ssr/[root-of-the-server]__0lehuiyzxp78t._.js +0 -3
  921. package/server/.next/server/chunks/ssr/[root-of-the-server]__0p7d9dfmuhnvv._.js +0 -3
  922. package/server/.next/server/chunks/ssr/[root-of-the-server]__0tp9vtckbkk9o._.js +0 -3
  923. package/server/.next/server/chunks/ssr/[root-of-the-server]__0wcnxr_g-bd3r._.js +0 -3
  924. package/server/.next/server/chunks/ssr/[root-of-the-server]__10y2ig7dg3f-k._.js +0 -3
  925. package/server/.next/server/chunks/ssr/[root-of-the-server]__194546bqpq02e._.js +0 -3
  926. package/server/.next/server/chunks/ssr/[root-of-the-server]__1bvp2ia3h9qbs._.js +0 -3
  927. package/server/.next/server/chunks/ssr/[root-of-the-server]__1dyjzbqwy6o12._.js +0 -3
  928. package/server/.next/server/chunks/ssr/[root-of-the-server]__1l695djsioelp._.js +0 -3
  929. package/server/.next/server/chunks/ssr/[root-of-the-server]__1pfk0fqey3ipf._.js +0 -3
  930. package/server/.next/server/chunks/ssr/[root-of-the-server]__1pgpryg9lkmoz._.js +0 -3
  931. package/server/.next/server/chunks/ssr/[root-of-the-server]__1t4thrxlv4zre._.js +0 -3
  932. package/server/.next/server/chunks/ssr/[root-of-the-server]__1tuftf7fags7x._.js +0 -5
  933. package/server/.next/server/chunks/ssr/[root-of-the-server]__1vyste6xyyu37._.js +0 -3
  934. package/server/.next/server/chunks/ssr/[root-of-the-server]__1yf4_oyl-3xp7._.js +0 -3
  935. package/server/.next/server/chunks/ssr/_0-uwh2rwm_dic._.js +0 -4
  936. package/server/.next/server/chunks/ssr/_06kn13xh_13da._.js +0 -3
  937. package/server/.next/server/chunks/ssr/_06kwu83_fmex9._.js +0 -4
  938. package/server/.next/server/chunks/ssr/_0i-e824vtomvg._.js +0 -4
  939. package/server/.next/server/chunks/ssr/_0i2a_ziqzhyq-._.js +0 -3
  940. package/server/.next/server/chunks/ssr/_0jjoot3rhbde3._.js +0 -4
  941. package/server/.next/server/chunks/ssr/_0kn710rrv_o2t._.js +0 -4
  942. package/server/.next/server/chunks/ssr/_0mgclon6_oh87._.js +0 -4
  943. package/server/.next/server/chunks/ssr/_0qcvpnwa1u3vr._.js +0 -3
  944. package/server/.next/server/chunks/ssr/_0sotiqakj-6ci._.js +0 -3
  945. package/server/.next/server/chunks/ssr/_0uogspz6zrvwk._.js +0 -4
  946. package/server/.next/server/chunks/ssr/_0ymtfa6vo-yz5._.js +0 -3
  947. package/server/.next/server/chunks/ssr/_0yn1xeumiigj0._.js +0 -3
  948. package/server/.next/server/chunks/ssr/_10pz3ggun9s5i._.js +0 -4
  949. package/server/.next/server/chunks/ssr/_12ddramfkd6o1._.js +0 -4
  950. package/server/.next/server/chunks/ssr/_15ft896zgt02e._.js +0 -4
  951. package/server/.next/server/chunks/ssr/_1b1ano88ar-gi._.js +0 -4
  952. package/server/.next/server/chunks/ssr/_1boia2p3_0nsz._.js +0 -4
  953. package/server/.next/server/chunks/ssr/_1dlvqnaceqr-_._.js +0 -3
  954. package/server/.next/server/chunks/ssr/_1e24cpw3g7njr._.js +0 -4
  955. package/server/.next/server/chunks/ssr/_1e5zfwgdf0mm5._.js +0 -3
  956. package/server/.next/server/chunks/ssr/_1h5tfqxzqd2tz._.js +0 -3
  957. package/server/.next/server/chunks/ssr/_1i77n2n-wb98v._.js +0 -4
  958. package/server/.next/server/chunks/ssr/_1k8rjvzlscs56._.js +0 -3
  959. package/server/.next/server/chunks/ssr/_1l-vlfiltmzu3._.js +0 -3
  960. package/server/.next/server/chunks/ssr/_1wssvwkmxcdn5._.js +0 -3
  961. package/server/.next/server/chunks/ssr/_1ybhu25y38395._.js +0 -4
  962. package/server/.next/server/chunks/ssr/_20gx4od4pnj8d._.js +0 -3
  963. package/server/.next/server/chunks/ssr/_210edglbxmcb3._.js +0 -4
  964. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_(private)_ai_keys_page_actions_1910ocjt__nlh.js +0 -3
  965. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_(private)_ai_logs_page_actions_136-s4sxl6nra.js +0 -3
  966. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_alerts_page_actions_0f7cxitw-svnl.js +0 -3
  967. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_apps_[id]_page_actions_14l8--w36mywn.js +0 -3
  968. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_apps_page_actions_1zw_mdh2ep6vs.js +0 -3
  969. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_connections_page_actions_06a1fnrawxlh1.js +0 -3
  970. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_dns_page_actions_1p2deebbgom7b.js +0 -3
  971. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_domains_page_actions_0-wg58qcvu_rv.js +0 -3
  972. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_firebase_page_actions_217-u-dmlzx6a.js +0 -3
  973. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_logs_page_actions_11-8xinblaop_.js +0 -3
  974. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_manage_sections_page_actions_0ven9q46d3d7s.js +0 -3
  975. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_settings_page_actions_1z3l1p4keed3m.js +0 -3
  976. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_supabase_page_actions_1evatil08dntl.js +0 -3
  977. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_uptime_page_actions_0k1237d-q3oc4.js +0 -3
  978. package/server/.next/server/chunks/ssr/node_modules_1_u5afwqp6brs._.js +0 -3
  979. package/server/.next/server/chunks/ssr/node_modules_next_dist_client_components_0wpq8j32_ibz4._.js +0 -3
  980. package/server/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_forbidden_0symwr9mbf-fh.js +0 -3
  981. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0-kg_ige9ehqj.js +0 -3
  982. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_00k37tbaia8dh.js +0 -3
  983. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_00z_p6szkga15.js +0 -3
  984. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_01-utr59mtfg1.js +0 -3
  985. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_055hw7kwif935.js +0 -3
  986. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_06fg_efdkc3kx.js +0 -3
  987. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_08f3d08smwt6_.js +0 -3
  988. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_08lcfro9qovjn.js +0 -3
  989. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0c8wd69fns_0d.js +0 -3
  990. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0cha-3kg99u4h.js +0 -3
  991. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0d_0he72lzkh9.js +0 -3
  992. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0f6chw8z5cuyg.js +0 -3
  993. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0j9-_xhs21abp.js +0 -3
  994. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0kwpdjujljna-.js +0 -3
  995. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0rer2akuum5r-.js +0 -3
  996. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0umt_achusjjb.js +0 -3
  997. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0un7wq602mt3n.js +0 -3
  998. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0vrdl9n7guitd.js +0 -3
  999. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0vse2cboy4cms.js +0 -3
  1000. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0x7ey4_8b48_o.js +0 -3
  1001. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0z8l8t55t65t_.js +0 -3
  1002. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0zap6p0vuv-fp.js +0 -3
  1003. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1-m49cfu6a7gl.js +0 -3
  1004. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1-w3hswsbrppl.js +0 -3
  1005. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1167zbjp4ys_a.js +0 -3
  1006. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_129serqqq3xyq.js +0 -3
  1007. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_12en3pdvxu0dy.js +0 -3
  1008. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1596hk9t3r1a5.js +0 -3
  1009. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_17us24ry0om-z.js +0 -3
  1010. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1_8xi22-aoxu1.js +0 -3
  1011. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1_l32aoya75_m.js +0 -3
  1012. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1ar0v26274uhj.js +0 -3
  1013. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1dkgfjoaf_1g3.js +0 -3
  1014. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1eg14m09zdg__.js +0 -3
  1015. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1h_y671y1la_8.js +0 -3
  1016. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1mkokmyyp47hd.js +0 -3
  1017. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1msjiuu45famw.js +0 -3
  1018. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1mw7isdchouml.js +0 -3
  1019. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1n4cotiug2a_r.js +0 -3
  1020. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1njl24pr6dwrt.js +0 -3
  1021. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1o1_3bydb-3j5.js +0 -3
  1022. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1pjor42_s9imf.js +0 -3
  1023. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1qta4yeufzpz7.js +0 -3
  1024. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1qxbl6k6dji0s.js +0 -3
  1025. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_21a3kf8buivxw.js +0 -3
  1026. package/server/.next/server/chunks/ssr/src_0f_ip1ke7i9r7._.js +0 -3
  1027. package/server/.next/server/chunks/ssr/src_0ley8c3htc2q9._.js +0 -3
  1028. package/server/.next/server/chunks/ssr/src_0p0fk07bj9gpq._.js +0 -3
  1029. package/server/.next/server/chunks/ssr/src_0ubtruqmercw2._.js +0 -3
  1030. package/server/.next/server/chunks/ssr/src_0vi30frvjgri2._.js +0 -3
  1031. package/server/.next/server/chunks/ssr/src_12sdm7skn8fr1._.js +0 -3
  1032. package/server/.next/server/chunks/ssr/src_16lx0qdi44evh._.js +0 -3
  1033. package/server/.next/server/chunks/ssr/src_17yq6_bqlwgvy._.js +0 -3
  1034. package/server/.next/server/chunks/ssr/src_1n-6pz04odixj._.js +0 -3
  1035. package/server/.next/server/chunks/ssr/src_app_(console)_05mlxmavgli8_._.js +0 -3
  1036. package/server/.next/server/chunks/ssr/src_app_(console)_0u1ec16rmzze6._.js +0 -3
  1037. package/server/.next/server/chunks/ssr/src_components_11x625pqq9ovs._.js +0 -3
  1038. package/server/.next/server/chunks/ssr/src_components_1yp2m9j9dnsv-._.js +0 -3
  1039. package/server/.next/server/chunks/ssr/src_components_ui_dropdown-menu_tsx_1xyz_k6bpdu_5._.js +0 -3
  1040. package/server/.next/static/chunks/01mhc6kz81iwf.js +0 -1
  1041. package/server/.next/static/chunks/02byu0sw5d0g9.js +0 -1
  1042. package/server/.next/static/chunks/02e07gc948zdh.js +0 -1
  1043. package/server/.next/static/chunks/04yl9t4cn6zwm.js +0 -1
  1044. package/server/.next/static/chunks/08oksl0raetg5.js +0 -1
  1045. package/server/.next/static/chunks/0d556cjlmwiq4.js +0 -1
  1046. package/server/.next/static/chunks/0jm8a63677590.js +0 -1
  1047. package/server/.next/static/chunks/0lcmy-_tdtrqk.js +0 -1
  1048. package/server/.next/static/chunks/0ld0vtd027il_.js +0 -1
  1049. package/server/.next/static/chunks/0qciunoy58a03.js +0 -7
  1050. package/server/.next/static/chunks/0r-2mywc7qkb_.js +0 -1
  1051. package/server/.next/static/chunks/0xwz6ps1581qa.js +0 -1
  1052. package/server/.next/static/chunks/1-zyqj42cr9hy.css +0 -3
  1053. package/server/.next/static/chunks/12l7tr29-a97t.js +0 -1
  1054. package/server/.next/static/chunks/160mk2sltxl3e.js +0 -1
  1055. package/server/.next/static/chunks/1bn-7bluoi2vi.js +0 -1
  1056. package/server/.next/static/chunks/1d0mukiro5klq.js +0 -1
  1057. package/server/.next/static/chunks/1jc8ghvf721gg.js +0 -76
  1058. package/server/.next/static/chunks/1nfofl7nhy6fx.js +0 -1
  1059. package/server/.next/static/chunks/1x8bgprfjtt59.js +0 -1
  1060. package/server/.next/static/chunks/1yctclvh0qaxz.js +0 -1
  1061. package/server/.next/static/chunks/1zyyqxguxs96l.js +0 -1
  1062. package/server/.next/static/chunks/23scyaimkowfl.js +0 -1
  1063. package/server/.next/static/chunks/2lfa16b0tlnvj.js +0 -1
  1064. package/server/.next/static/chunks/2onhuya5-n3-e.js +0 -1
  1065. package/server/.next/static/chunks/2pn16qmann41d.js +0 -1
  1066. package/server/.next/static/chunks/2szlo15y09085.js +0 -1
  1067. package/server/.next/static/chunks/2v_f39dz8sa3-.js +0 -1
  1068. package/server/.next/static/chunks/2xhx4rma6gx5o.js +0 -1
  1069. package/server/.next/static/chunks/37f1rjolzxbiv.js +0 -1
  1070. package/server/.next/static/chunks/38c9rnljzl6iw.js +0 -1
  1071. package/server/.next/static/chunks/3_erdlvi2tz19.js +0 -1
  1072. package/server/.next/static/chunks/3qbk8r6jm8udo.js +0 -5
  1073. package/server/.next/static/chunks/3sg_npfod25zq.js +0 -1
  1074. package/server/.next/static/chunks/3tl9dgour-h9l.js +0 -1
  1075. package/server/.next/static/chunks/3vbz762vgy3dx.js +0 -1
  1076. package/server/.next/static/chunks/3wi43ltm1e5iy.js +0 -1
  1077. package/server/.next/static/chunks/3yljsdgzvrkdf.js +0 -1
  1078. package/server/.next/static/chunks/42z3imsp11da1.js +0 -1
  1079. /package/server/.next/static/{ZGhdfWFNBWLdWW4UhJrAO → rBXBlxKpaOHcc5KZDIhAL}/_buildManifest.js +0 -0
  1080. /package/server/.next/static/{ZGhdfWFNBWLdWW4UhJrAO → rBXBlxKpaOHcc5KZDIhAL}/_clientMiddlewareManifest.js +0 -0
  1081. /package/server/.next/static/{ZGhdfWFNBWLdWW4UhJrAO → rBXBlxKpaOHcc5KZDIhAL}/_ssgManifest.js +0 -0
@@ -1,3 +1,3 @@
1
- module.exports=[814574,772925,8842,a=>{"use strict";var b=a.i(187924),c=a.i(740197),d=a.i(917953);a.s(["f",0,d],772925);var d=d,e=a.i(521341),f=a.i(532489),g=a.i(768758),h=a.i(505358),i=a.i(749867),j=d;a.s(["f",0,j],8842);var j=d,k=a.i(368114),l=a.i(572131),m=a.i(221436),n=a.i(926184);let o=l.forwardRef(function(a,b){let{render:c,className:d,disabled:e=!1,focusableWhenDisabled:f=!1,nativeButton:g=!0,style:h,...i}=a,{getButtonProps:j,buttonRef:k}=(0,m.f)({disabled:e,focusableWhenDisabled:f,native:g});return(0,n.a)("button",a,{state:{disabled:e},ref:[b,k],props:[i,j]})}),p=(0,a.i(400187).f)("group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/80",outline:"border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground hover:bg-[color-mix(in_oklch,var(--secondary),var(--foreground)_5%)] aria-expanded:bg-secondary aria-expanded:text-secondary-foreground",ghost:"hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50",destructive:"bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",xs:"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",sm:"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5",lg:"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",icon:"size-8","icon-xs":"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3","icon-sm":"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg","icon-lg":"size-9"}},defaultVariants:{variant:"default",size:"default"}});function q({className:a,variant:c="default",size:d="default",...e}){return(0,b.jsx)(o,{"data-slot":"button",className:(0,k.f)(p({variant:c,size:d,className:a})),...e})}var r=a.i(164831);let s={name:"x",size:24,node:[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]};s.node;let t=(0,r.f)(s);function u({...a}){return(0,b.jsx)(e.f.Portal,{"data-slot":"dialog-portal",...a})}function v({className:a,...c}){return(0,b.jsx)(g.f.Backdrop,{"data-slot":"dialog-overlay",className:(0,k.f)("fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0",a),...c})}a.s(["N",0,function({...a}){return(0,b.jsx)(c.f.Root,{"data-slot":"dialog",...a})},"d",0,function({className:a,children:c,showCloseButton:d=!0,...e}){return(0,b.jsxs)(u,{children:[(0,b.jsx)(v,{}),(0,b.jsxs)(h.f.Popup,{"data-slot":"dialog-content",className:(0,k.f)("fixed top-1/2 left-1/2 z-50 grid w-full grid-cols-[minmax(0,1fr)] max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-popover p-4 text-sm text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",a),...e,children:[c,d&&(0,b.jsxs)(f.f.Close,{"data-slot":"dialog-close",render:(0,b.jsx)(q,{variant:"ghost",className:"absolute top-2 right-2",size:"icon-sm"}),children:[(0,b.jsx)(t,{}),(0,b.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})},"C",0,function({className:a,...c}){return(0,b.jsx)(j.Description,{"data-slot":"dialog-description",className:(0,k.f)("text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground",a),...c})},"F",0,function({className:a,...c}){return(0,b.jsx)(i.f.Title,{"data-slot":"dialog-title",className:(0,k.f)("font-heading text-base leading-none font-medium",a),...c})},"a",0,function({...a}){return(0,b.jsx)(d.Trigger,{"data-slot":"dialog-trigger",...a})}],814574)}];
1
+ module.exports=[814574,772925,8842,a=>{"use strict";var b=a.i(187924),c=a.i(740197),d=a.i(917953);a.s(["f",0,d],772925);var d=d,e=a.i(521341),f=a.i(532489),g=a.i(768758),h=a.i(505358),i=a.i(749867),j=d;a.s(["f",0,j],8842);var j=d,k=a.i(368114),l=a.i(572131),m=a.i(221436),n=a.i(926184);let o=l.forwardRef(function(a,b){let{render:c,className:d,disabled:e=!1,focusableWhenDisabled:f=!1,nativeButton:g=!0,style:h,...i}=a,{getButtonProps:j,buttonRef:k}=(0,m.f)({disabled:e,focusableWhenDisabled:f,native:g});return(0,n.a)("button",a,{state:{disabled:e},ref:[b,k],props:[i,j]})}),p=(0,a.i(400187).f)("group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/80",outline:"border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground hover:bg-[color-mix(in_oklch,var(--secondary),var(--foreground)_5%)] aria-expanded:bg-secondary aria-expanded:text-secondary-foreground",ghost:"hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50",destructive:"bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",xs:"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",sm:"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5",lg:"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",icon:"size-8","icon-xs":"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3","icon-sm":"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg","icon-lg":"size-9"}},defaultVariants:{variant:"default",size:"default"}});function q({className:a,variant:c="default",size:d="default",...e}){return(0,b.jsx)(o,{"data-slot":"button",className:(0,k.f)(p({variant:c,size:d,className:a})),...e})}var r=a.i(164831);let s={name:"x",size:24,node:[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]};s.node;let t=(0,r.f)(s);function u({...a}){return(0,b.jsx)(e.f.Portal,{"data-slot":"dialog-portal",...a})}function v({className:a,...c}){return(0,b.jsx)(g.f.Backdrop,{"data-slot":"dialog-overlay",className:(0,k.f)("fixed inset-0 isolate z-50 bg-black/40 duration-100 data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0",a),...c})}a.s(["N",0,function({...a}){return(0,b.jsx)(c.f.Root,{"data-slot":"dialog",...a})},"d",0,function({className:a,children:c,showCloseButton:d=!0,...e}){return(0,b.jsxs)(u,{children:[(0,b.jsx)(v,{}),(0,b.jsxs)(h.f.Popup,{"data-slot":"dialog-content",className:(0,k.f)("fixed top-1/2 left-1/2 z-50 grid w-full grid-cols-[minmax(0,1fr)] max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-popover p-4 text-sm text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0",a),...e,children:[c,d&&(0,b.jsxs)(f.f.Close,{"data-slot":"dialog-close",render:(0,b.jsx)(q,{variant:"ghost",className:"absolute top-2 right-2",size:"icon-sm"}),children:[(0,b.jsx)(t,{}),(0,b.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})},"C",0,function({className:a,...c}){return(0,b.jsx)(j.Description,{"data-slot":"dialog-description",className:(0,k.f)("text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground",a),...c})},"F",0,function({className:a,...c}){return(0,b.jsx)(i.f.Title,{"data-slot":"dialog-title",className:(0,k.f)("font-heading text-base leading-none font-medium",a),...c})},"a",0,function({...a}){return(0,b.jsx)(d.Trigger,{"data-slot":"dialog-trigger",...a})}],814574)}];
2
2
 
3
3
  //# sourceMappingURL=src_components_ui_dialog_tsx_1tn-i_6d3rhzt._.js.map
@@ -10,6 +10,12 @@ ${g.since} ${(0,b.U)(a.startedAt)} ${(0,b.J)(a.startedAt)}`,`<b>Watchbell</b>: $
10
10
  ${q(a).replace(/[*_`~|\[\]<>]/g,"")}${s(a)?`
11
11
  _${s(a)}_`:""}${r(a)?`
12
12
  👉 ${r(a)}`:""}`,`**Watchbell**: ${n(a,e)} \xb7 ${(0,b.U)(c)} ${(0,b.J)(c)}`,`
13
- ${f}`,t)}},"H",0,l],192738)},49146,a=>{var b=a.i(462820),c=a.i(93321),d=a.i(530385),e=a.i(351674),f=a.i(548734),g=a.i(837137),h=a.i(192738),i=a.i(358179),j=a.i(601219),k=a.i(247730),l=a.i(396667),m=a.i(46396),n=a.i(492665),o=a.i(390626),p=a.i(80997),q=a.i(718025),r=a.i(552543),s=a.i(288879),t=a.i(204784),u=a.i(446914),v=a.i(71575),w=a.i(556987),x=a.i(245710),y=a.i(910697);let z="digest.lastSentDay",A="digest.state";async function B(a){let[b]=await (0,f.f)().select().from(g.channels).where((0,c.u)(g.channels.kind,a)).limit(1);if(!b)return null;try{return{row:b,config:JSON.parse((0,i.K)({ciphertext:b.configCiphertext,iv:b.configIv},(0,n.f)().OPS_ENCRYPTION_KEY))}}catch{return null}}async function C(a,b){let c=(0,i.l)(JSON.stringify(b),(0,n.f)().OPS_ENCRYPTION_KEY),d={configCiphertext:c.ciphertext,configIv:c.iv,keyVersion:c.keyVersion,enabled:!0,lastError:null,updatedAt:new Date};await (0,f.f)().insert(g.channels).values({kind:a,...d}).onConflictDoUpdate({target:g.channels.kind,set:d})}async function D(a,b){return(await (0,f.f)().update(g.channels).set({enabled:b,updatedAt:new Date}).where((0,c.u)(g.channels.kind,a)).returning({kind:g.channels.kind})).length>0}async function E(){let a=(0,q.f)(),[b,c]=await Promise.all([B("telegram"),B("discord")]),d=new Set;return a.telegramToken&&b?.row.enabled&&b.config?.chatId&&d.add("telegram"),c?.row.enabled&&c.config?.url&&d.add("discord"),{send:(d,e)=>"telegram"===d?(0,u.I)(a.telegramToken,b.config.chatId,e):(0,o.$)(c.config.url,e),configured:d}}async function F(){let a=(0,q.f)().telegramToken;if(!a)return null;let b=await B("telegram");return b?.row.enabled&&b.config?.chatId?{token:a,chatId:b.config.chatId}:null}async function G(){let a=await B("discord");return a?.row.enabled&&a.config?.url?{url:a.config.url}:null}let H=()=>(0,k.f)().catch(()=>w.a);async function I(a,b,i={}){var j;if(b-Date.now()<6e3)return{sent:0,dropped:0};let k=await (0,l.I)(),m=await (0,f.f)().select({a:g.alerts,channels:g.alertRules.channels}).from(g.alerts).innerJoin(g.alertRules,(0,c.u)(g.alertRules.key,g.alerts.ruleKey)).where((0,c.b)((0,c.E)(g.alerts.pending),e.B`(${g.alerts.pending} = 'resolve') = (${g.alerts.resolvedAt} is not null)`,(0,l.s)(k))).orderBy((0,d.M)(g.alerts.pendingSince)).limit(50);if(!m.length)return{sent:0,dropped:0};let o=new Set((await (0,f.f)().update(g.alerts).set({claimedAt:a}).where((j=m.map(a=>a.a.id),(0,c.b)((0,c.y)(g.alerts.id,j),(0,c.E)(g.alerts.pending),(0,c.F)((0,c.M)(g.alerts.claimedAt),(0,c.S)(g.alerts.claimedAt,new Date(a.getTime()-12e4)))))).returning({id:g.alerts.id})).map(a=>a.id)),p=m.filter(a=>o.has(a.a.id));if(!p.length)return{sent:0,dropped:0};let{send:q,configured:s}=i.sender??await E(),t=new Set(p.filter(({a:b})=>"resolve"!==b.pending&&(b.silencedUntilResolved||null!==b.silencedUntil&&b.silencedUntil.getTime()>a.getTime())).map(({a})=>a.id)),[u,v]=await Promise.all([H(),(0,r.B)()]),x=new Set;for(let b of["telegram","discord"]){if(!s.has(b))continue;let d=p.filter(a=>a.channels.includes(b)&&!t.has(a.a.id));if(!d.length)continue;let e=d.map(({a})=>{let b=(0,w.o)(a,u);return{kind:a.pending,ruleKey:a.ruleKey,severity:a.severity,title:b.title,message:b.message,startedAt:a.startedAt,causedBy:b.causedBy,provider:a.providerIncident}}),i=(0,h.l)(e,a,(0,n.f)().SITE_URL,v[b]),j=await q(b,(0,w.G)("telegram"===b?i.telegram:i.discord));await (0,f.f)().update(g.channels).set(j.ok?{lastSentAt:a,lastError:null}:{lastError:j.error}).where((0,c.u)(g.channels.kind,b)),j.ok&&d.forEach(({a})=>x.add(a.id))}let y=0,z=0,A=[];for(let{a:b,channels:d}of p){let e=d.some(a=>s.has(a)),h=null!==b.pendingSince&&a.getTime()-b.pendingSince.getTime()>18e5;x.has(b.id)?(y++,await (0,f.f)().update(g.alerts).set({pending:null,pendingSince:null,lastNotifiedAt:a,claimedAt:null,..."open"===b.pending?{notifiedOpen:!0}:{}}).where((0,c.u)(g.alerts.id,b.id))):t.has(b.id)||!e||h?(z++,await (0,f.f)().update(g.alerts).set({pending:null,claimedAt:null}).where((0,c.u)(g.alerts.id,b.id))):A.push(b.id)}return A.length&&await (0,f.f)().update(g.alerts).set({claimedAt:null}).where((0,c.y)(g.alerts.id,A)),{sent:y,dropped:z}}async function J(a){let b=new Date(a.getTime()-864e5),h=await (0,l.I)(),i=e.B`case ${g.alerts.severity} when 'critical' then 0 when 'warning' then 1 else 2 end`,[j,k,n,o,p]=await Promise.all([(0,f.f)().select({ruleKey:g.alerts.ruleKey,severity:g.alerts.severity,title:g.alerts.title,message:g.alerts.message,resourceId:g.alerts.resourceId,startedAt:g.alerts.startedAt}).from(g.alerts).where((0,c.b)((0,c.M)(g.alerts.resolvedAt),(0,l.s)(h))).orderBy(i,(0,d.A)(g.alerts.startedAt)).limit(50),(0,f.f)().select({n:e.B`count(*)::int`}).from(g.alerts).where((0,c.B)(g.alerts.startedAt,b)),(0,f.f)().select({ruleKey:g.alerts.ruleKey,title:g.alerts.title,resourceId:g.alerts.resourceId,startedAt:g.alerts.startedAt,resolvedAt:g.alerts.resolvedAt}).from(g.alerts).where((0,c.b)((0,c.E)(g.alerts.resolvedAt),(0,c.B)(g.alerts.resolvedAt,b))).orderBy((0,d.A)(g.alerts.resolvedAt)).limit(20),(0,f.f)().select({id:g.resources.id,name:g.resources.name}).from(g.resources).where((0,c.b)((0,c.u)(g.resources.kind,"app"),(0,c.u)(g.resources.monitored,!0),(0,c.M)(g.resources.goneAt))).orderBy(g.resources.name).limit(y.O.apps),(0,m.h)(a)]),q=o.map(a=>a.id),[r,s]=q.length?await Promise.all([(0,f.f)().select({id:g.monitors.resourceId,total:e.B`count(*)::int`,bad:e.B`(count(*) filter (where not ${g.checks.ok}))::int`}).from(g.checks).innerJoin(g.monitors,(0,c.u)(g.monitors.id,g.checks.monitorId)).where((0,c.b)((0,c.y)(g.monitors.resourceId,q),(0,c.B)(g.checks.at,b),(0,c.u)(g.checks.inMaintenance,!1))).groupBy(g.monitors.resourceId),(0,f.f)().select({id:g.storedLogs.resourceId,n:e.B`count(*)::int`}).from(g.storedLogs).where((0,c.b)((0,c.y)(g.storedLogs.resourceId,q),(0,c.B)(g.storedLogs.at,b))).groupBy(g.storedLogs.resourceId)]):[[],[]],t=new Map(r.map(a=>[a.id,a])),u=new Map(s.map(a=>[a.id,a.n])),x=await H();return{now:a,opened:k[0]?.n??0,firing:j.map(({resourceId:a,...b})=>{let c=(0,w.o)({...b,resourceId:a,causedBy:null},x);return{...b,title:c.title,message:c.message}}),resolved:n.flatMap(a=>a.resolvedAt?[{ruleKey:a.ruleKey,title:(0,w.o)({title:a.title,message:"",causedBy:null,resourceId:a.resourceId},x).title,took:(0,v.M)(a.startedAt,a.resolvedAt)}]:[]),apps:o.map(a=>{let b=t.get(a.id);return{name:a.name,uptime:b&&b.total>0?(b.total-b.bad)/b.total*100:null,errors:u.get(a.id)??0}}),providers:p.filter(a=>"ok"!==a.state).map(a=>({label:a.label,text:a.text}))}}async function K(a,b,d){await (0,f.f)().update(g.channels).set(b.ok?{lastSentAt:d,lastError:null}:{lastError:b.error}).where((0,c.u)(g.channels.kind,a))}async function L(a){let[b,c]=await Promise.all([J(a),(0,r.I)("email")]);return(0,p.J)({...b,siteUrl:(0,n.f)().SITE_URL},c)}async function M(a,c){let d=(0,q.f)();if(!d.resendKey||!d.digestFrom)return{ok:!1,kind:"config",error:b.n.notSet("RESEND_API_KEY or DIGEST_FROM")};let e=await B("email_digest");if(!e?.config?.to)return{ok:!1,kind:"config",error:"The daily email digest isn't connected."};let f=await L(a),g=await (0,t.f)(d.resendKey,{from:d.digestFrom,to:e.config.to,subject:f.subject,html:f.html,text:f.text,idempotencyKey:c});return await K("email_digest",g,a),g}async function N(a,b={}){let d=await (0,f.f)().select().from(g.settings).where((0,c.y)(g.settings.key,[z,A])),e=d.find(a=>a.key===z)?.value,h="string"==typeof e?e:null;if(!(0,p.A)(a,h))return;let i=(0,q.f)(),k=await B("email_digest");if(!i.resendKey||!i.digestFrom||!k?.row.enabled||!k.config?.to)return;let{resendKey:l,digestFrom:m}=i,n=k.config.to,o=(0,x.x)(a),r=await (0,p.K)(a,{lastSentDay:h,state:d.find(a=>a.key===A)?.value??null,build:b.build??(()=>L(a)),send:b.send??(a=>(0,t.f)(l,{from:m,to:n,...a,idempotencyKey:`digest-${o}`}))});r.acted&&(r.result&&await K("email_digest",r.result,a),r.state?await (0,f.f)().insert(g.settings).values({key:A,value:r.state}).onConflictDoUpdate({target:g.settings.key,set:{value:r.state,updatedAt:a}}):await (0,f.f)().delete(g.settings).where((0,c.u)(g.settings.key,A)),r.sentDay&&await (0,f.f)().insert(g.settings).values({key:z,value:r.sentDay}).onConflictDoUpdate({target:g.settings.key,set:{value:r.sentDay,updatedAt:a}}),r.event&&await (0,j.f)([{type:"system",kind:"warn",message:r.event.message,detail:r.event.detail,resourceId:null,reason:"DigestFailed",at:a}]))}let O={en:{title:"Test message",message:"If you can read this, alerts reach you here."},id:{title:"Pesan tes",message:"Kalau pesan ini kebaca, alert udah nyampe ke sini."}};async function P(a,c,d={}){if("email_digest"===a)return M(c,`test-${c.getTime()}`);let{send:e,configured:f}=d.sender??await E();if(!f.has(a))return{ok:!1,kind:"config",error:"telegram"===a?`Telegram isn't connected, or ${b.n.notSet("TELEGRAM_BOT_TOKEN")}`:"Discord isn't connected."};let g=await (0,r.I)(a),i=(0,h.l)([{kind:"open",ruleKey:"Test",severity:"info",...O[g],startedAt:c,causedBy:null,provider:null}],c,(0,n.f)().SITE_URL,g),j=await e(a,"telegram"===a?i.telegram:i.discord);return await K(a,j,c),j}async function Q(){let a=(0,q.f)(),c={telegram:a.telegramToken?null:b.n.notSet("TELEGRAM_BOT_TOKEN"),discord:null,email_digest:a.resendKey&&a.digestFrom?null:b.n.notSet("RESEND_API_KEY or DIGEST_FROM")},[d,e,f]=await Promise.all([B("telegram"),B("discord"),B("email_digest")]),g=(a,b)=>({kind:a,connected:null!==b,enabled:b?.row.enabled??!1,hint:b?(0,s.f)(a,b.config):null,lastSentAt:b?.row.lastSentAt??null,lastError:b?.row.lastError??null,envMissing:c[a]});return[g("telegram",d),g("discord",e),g("email_digest",f)]}a.s(["k",0,Q,"q",0,I,"G",0,G,"P",0,K,"L",0,P,"y",0,D,"J",0,N,"Q",0,F,"Y",0,C])},390626,80997,718025,a=>{var b=a.i(19809),c=a.i(371289);let d=/^https:\/\/(?:(?:canary|ptb)\.)?discord(?:app)?\.com\/api\/webhooks\/\d{5,25}\/[\w-]{20,}$/;function e(a){return d.test(a.trim())?null:"Paste the whole webhook URL from Discord."}async function f(a,d,g={}){let h;if((0,c.W)())return{ok:!1,kind:"config",error:b.Y};if(e(a))return{ok:!1,kind:"config",error:"The saved Discord webhook URL isn't valid."};try{h=await (g.fetch??fetch)(a,{method:"POST",headers:{"Content-Type":"application/json"},signal:AbortSignal.timeout(g.timeoutMs??5e3),cache:"no-store",body:JSON.stringify({content:d.slice(0,2e3),username:"Watchbell",allowed_mentions:{parse:[]}})})}catch{return{ok:!1,kind:"transient",error:"Discord didn't answer."}}if(204===h.status||h.ok)return{ok:!0};if(429===h.status){let a=await h.json().catch(()=>null),b=Math.ceil(a?.retry_after??5);return{ok:!1,kind:"transient",retryAfterS:b,error:`Discord asked us to wait ${b} s.`}}return 404===h.status||401===h.status?{ok:!1,kind:"config",error:"Discord says this webhook no longer exists."}:{ok:!1,kind:h.status>=500?"transient":"config",error:`Discord returned an error (${h.status}).`}}a.s(["$",0,f,"e",0,e],390626);var g=a.i(192738),h=a.i(67890),i=a.i(245710),j=a.i(469762),k=a.i(556987);function l(a,b){return(0,i.M)(a,b)&&(0,i.z)(a).hour>=7}let m={en:{firing:"firing",opened:"opened",resolved:"resolved",last24:"in the last 24 hours.",stillHead:"Still firing",noFiring:"Nothing is firing.",resolvedHead:"Resolved",noResolved:"Nothing resolved.",appsHead:"Applications (24 h)",providersHead:"Providers",open:"Open alerts",after:"after",up:"up",took:a=>a,noChecks:"no checks",errors:a=>`${a} stored error${1===a?"":"s"}`},id:{firing:"aktif",opened:"baru",resolved:"pulih",last24:"dalam 24 jam terakhir.",stillHead:"Masih aktif",noFiring:"Nggak ada yang aktif.",resolvedHead:"Pulih",noResolved:"Nggak ada yang pulih.",appsHead:"Aplikasi (24 jam)",providersHead:"Provider",open:"Buka Alerts",after:"setelah",up:"aktif",took:a=>a.replace(/\b(\d+) min\b/g,"$1 menit").replace(/\b(\d+) h\b/g,"$1 jam").replace(/\b(\d+) d\b/g,"$1 hari"),noChecks:"belum ada cek",errors:a=>`${a} error tersimpan`}},n={May:"Mei",Aug:"Agu",Oct:"Okt",Dec:"Des"},o=[5,15,30,60];async function p(a,b){let c={acted:!1,state:b.state,sentDay:null,event:null,result:null};if(!l(a,b.lastSentDay))return c;let d=(0,i.x)(a),e=b.state&&b.state.day===d?b.state:null;if(e?.stopped)return{...c,state:e};if(e&&e.attempts>0){let b=(o[e.attempts-1]??o[o.length-1])*6e4;if(e.lastAttemptAt&&a.getTime()-new Date(e.lastAttemptAt).getTime()<b)return{...c,state:e}}e??={day:d,...await b.build(),attempts:0,lastAttemptAt:null,stopped:!1,lastError:null};let f=await b.send({subject:e.subject,html:e.html,text:e.text});if(f.ok)return{acted:!0,state:null,sentDay:d,event:null,result:f};let g=e.attempts+1,h="config"===f.kind||g>=5,j="config"===f.kind?`${f.error}. Fix it and the next digest goes out tomorrow.`:`${f.error} Gave up after ${g} attempts today.`;return{acted:!0,sentDay:null,result:f,state:{...e,attempts:g,lastAttemptAt:a.toISOString(),stopped:h,lastError:f.error},event:h?{message:"Daily digest not sent",detail:j}:null}}a.s(["J",0,function(a,b="en"){let c=m[b],d=`${a.siteUrl.replace(/\/+$/,"")}/alerts`,e=((a,b)=>{let{day:c,month:d}=(0,i.e)(a);return`${c} ${"id"===b?n[d]??d:d}`})(a.now,b),f=`${a.firing.length} ${c.firing}, ${a.opened} ${c.opened}, ${a.resolved.length} ${c.resolved}`,l=`Watchbell \xb7 ${e} \xb7 ${f}`,o=[...a.apps].sort((a,b)=>(a.uptime??101)-(b.uptime??101)||b.errors-a.errors||a.name.localeCompare(b.name)),p=a.firing.map(a=>`${g.Z[b][a.severity]} \xb7 ${a.ruleKey} \xb7 ${a.title}: ${"id"===b?(0,h.f)(a.ruleKey,a.message):a.message}`),q=a.resolved.map(a=>`${a.ruleKey} \xb7 ${a.title} (${c.after} ${c.took(a.took)})`),r=o.map(a=>`${a.name}: ${null===a.uptime?c.noChecks:`${(0,j.C)(a.uptime)} ${c.up}`}, ${c.errors(a.errors)}`),s=a.providers.map(a=>`${a.label}: ${a.text}`),t=[`Watchbell \xb7 ${e}`,`${f} ${c.last24}`,"",c.stillHead,...p.length?p.map(a=>`- ${a}`):[c.noFiring],"",c.resolvedHead,...q.length?q.map(a=>`- ${a}`):[c.noResolved],...r.length?["",c.appsHead,...r.map(a=>`- ${a}`)]:[],...s.length?["",c.providersHead,...s.map(a=>`- ${a}`)]:[],"",`${c.open}: ${d}`].join("\n"),u=a=>`<h3 style="font:600 14px system-ui,sans-serif;margin:18px 0 6px">${(0,g.H)(a)}</h3>`,v=(a,b)=>a.length?`<ul style="margin:0;padding-left:18px">${a.map(a=>`<li style="margin:2px 0">${(0,g.H)(a)}</li>`).join("")}</ul>`:`<p style="margin:0;color:#596170">${(0,g.H)(b)}</p>`,w=['<div style="font:14px/1.5 system-ui,sans-serif;color:#14171f;max-width:560px">',`<h2 style="font:600 16px system-ui,sans-serif;margin:0 0 4px">Watchbell \xb7 ${(0,g.H)(e)}</h2>`,`<p style="margin:0;color:#596170">${(0,g.H)(`${f} ${c.last24}`)}</p>`,u(c.stillHead),v(p,c.noFiring),u(c.resolvedHead),v(q,c.noResolved),...r.length?[u(c.appsHead),v(r,"")]:[],...s.length?[u(c.providersHead),v(s,"")]:[],`<p style="margin:18px 0 0"><a href="${(0,g.H)(d).replace(/"/g,"&quot;")}" style="color:#1f45c9">${(0,g.H)(c.open)}</a></p>`,"</div>"].join("");return{subject:(0,k.G)(l),html:(0,k.G)(w),text:(0,k.G)(t)}},"A",0,l,"K",0,p],80997),a.s(["f",0,function(a=process.env){let b=a.TELEGRAM_BOT_TOKEN?.trim()??"",c=a.RESEND_API_KEY?.trim()??"",d=a.DIGEST_FROM?.trim()??"";return{telegramToken:/^\d+:[\w-]{20,}$/.test(b)?b:null,resendKey:c.startsWith("re_")?c:null,digestFrom:/<?[^\s<>@]+@[^\s<>@]+\.[^\s<>@]+>?$/.test(d)?d:null}}],718025)},288879,204784,a=>{a.s(["f",0,function(a,b){if("telegram"===a)return`${b.chatLabel||"Chat"} \xb7 …${b.chatId.slice(-4)}`;if("discord"===a){let a=/\/webhooks\/(\d+)\//.exec(b.url)?.[1]??"";return`webhook …${a.slice(-4)}`}return`${b.to.slice(0,2)}…@…`}],288879);var b=a.i(19809),c=a.i(371289);async function d(a,e,f={}){let g;if((0,c.W)())return{ok:!1,kind:"config",error:b.Y};try{g=await (f.fetch??fetch)("https://api.resend.com/emails",{method:"POST",signal:AbortSignal.timeout(5e3),cache:"no-store",headers:{Authorization:`Bearer ${a}`,"Content-Type":"application/json","User-Agent":"OpsConsole/1.0","Idempotency-Key":e.idempotencyKey},body:JSON.stringify({from:e.from,to:[e.to],subject:e.subject,html:e.html,text:e.text})})}catch{return{ok:!1,kind:"transient",error:"Resend didn't answer."}}if(g.ok)return{ok:!0};let h=await g.json().catch(()=>null);return 429===g.status||g.status>=500?{ok:!1,kind:"transient",error:`Resend returned an error (${g.status}).`}:{ok:!1,kind:"config",error:`Resend: ${String(h?.message??g.status).slice(0,200)}`}}a.s(["f",0,d],204784)},552543,a=>{var b=a.i(186133);function c(a){let b=a&&"object"==typeof a?a:null,c=b?b.lang:a,d=a=>{var d;return"string"==typeof(d=b&&a in b?b[a]:c)&&"id"===d.trim().toLowerCase()?"id":"en"};return{telegram:d("telegram"),discord:d("discord"),email:d("email")}}async function d(){try{return c(await (0,b.l)())}catch{return c(null)}}async function e(a="telegram"){return(await d())[a]}a.s(["c",0,["telegram","discord","email"],"H",0,c,"I",0,e,"B",0,d,"t",0,function(a,b,c){return a[b][c]}])},446914,a=>{var b=a.i(19809),c=a.i(462820),d=a.i(371289);async function e(a,c,f,g,h=5e3){let i;if((0,d.W)())return{ok:!1,code:null,description:b.Y,retryAfter:null};try{i=await g(`https://api.telegram.org/bot${a}/${c}`,{...f,signal:AbortSignal.timeout(h),cache:"no-store"})}catch{return{ok:!1,code:null,description:"Telegram didn't answer.",retryAfter:null}}let j=await i.json().catch(()=>null);return j?.ok?{ok:!0,result:j.result}:{ok:!1,code:j?.error_code??i.status,description:String(j?.description??`HTTP ${i.status}`).slice(0,200),retryAfter:j?.parameters?.retry_after??null}}async function f(a,b,c,d={}){let g=await e(a,"sendMessage",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({chat_id:b,text:c,parse_mode:"HTML",link_preview_options:{is_disabled:!0},...d.replyMarkup?{reply_markup:d.replyMarkup}:{}})},d.fetch??fetch);return g.ok?{ok:!0}:429===g.code?{ok:!1,kind:"transient",retryAfterS:g.retryAfter??30,error:`Telegram asked us to wait ${g.retryAfter??30} s.`}:null===g.code||g.code>=500?{ok:!1,kind:"transient",error:null===g.code?g.description:`Telegram returned an error (${g.code}).`}:{ok:!1,kind:"config",error:`Telegram: ${g.description}`}}async function g(a,b={}){let d=await e(a,"getUpdates?limit=20&timeout=0",{method:"GET"},b.fetch??fetch);if(!d.ok)return 409===d.code?{ok:!1,error:"This bot has a webhook set, so the console can't list chats. Remove the webhook or paste the chat id."}:401===d.code||404===d.code?{ok:!1,error:`Telegram rejected TELEGRAM_BOT_TOKEN. Check the value ${c.n.checkWhere}.`}:{ok:!1,error:"Couldn't reach Telegram. Try again."};let f=new Map;for(let a of Array.isArray(d.result)?d.result:[]){let b=a.message?.chat??a.my_chat_member?.chat??a.channel_post?.chat;b&&"number"==typeof b.id&&f.set(String(b.id),`${b.title??b.first_name??b.username??"Chat"} (${b.type??"chat"})`)}return{ok:!0,chats:[...f].map(([a,b])=>({id:a,label:b}))}}a.s(["N",0,g,"I",0,f,"z",0,e])}]})();
13
+ ${f}`,t)}},"H",0,l],192738)},49146,a=>{var b=a.i(462820),c=a.i(93321),d=a.i(530385),e=a.i(351674),f=a.i(548734),g=a.i(837137),h=a.i(192738),i=a.i(358179),j=a.i(601219),k=a.i(247730),l=a.i(396667),m=a.i(46396),n=a.i(492665),o=a.i(390626),p=a.i(755453),q=a.i(352595),r=a.i(80997),s=a.i(718025),t=a.i(552543),u=a.i(288879),v=a.i(204784),w=a.i(446914),x=a.i(71575),y=a.i(556987),z=a.i(245710),A=a.i(910697);let B="digest.lastSentDay",C="digest.state";async function D(a){let[b]=await (0,f.f)().select().from(g.channels).where((0,c.u)(g.channels.kind,a)).limit(1);if(!b)return null;try{return{row:b,config:JSON.parse((0,i.K)({ciphertext:b.configCiphertext,iv:b.configIv},(0,n.f)().OPS_ENCRYPTION_KEY))}}catch{return null}}async function E(a,b){let c=(0,i.l)(JSON.stringify(b),(0,n.f)().OPS_ENCRYPTION_KEY),d={configCiphertext:c.ciphertext,configIv:c.iv,keyVersion:c.keyVersion,enabled:!0,lastError:null,updatedAt:new Date};await (0,f.f)().insert(g.channels).values({kind:a,...d}).onConflictDoUpdate({target:g.channels.kind,set:d})}async function F(a,b){return(await (0,f.f)().update(g.channels).set({enabled:b,updatedAt:new Date}).where((0,c.u)(g.channels.kind,a)).returning({kind:g.channels.kind})).length>0}async function G(){let a=(0,s.f)(),[b,c,d,e]=await Promise.all([D("telegram"),D("discord"),D("webhook"),D("smtp")]),f=new Set;a.telegramToken&&b?.row.enabled&&b.config?.chatId&&f.add("telegram"),c?.row.enabled&&c.config?.url&&f.add("discord"),d?.row.enabled&&d.config?.url&&f.add("webhook"),e?.row.enabled&&e.config?.host&&f.add("smtp");let g=`${(0,n.f)().SITE_URL.replace(/\/+$/,"")}/alerts`;return{send:(f,h,i)=>"telegram"===f?(0,w.I)(a.telegramToken,b.config.chatId,h):"webhook"===f?(0,p.E)(d.config,(0,p.J)(h,i??[],new Date,g)):"smtp"===f?(0,q.r)(e.config,(h.split("\n")[0]??"").replace(/[*_`~]/g,"").slice(0,150)||"Watchbell alert",`${h}
14
+
15
+ ${g}`):(0,o.$)(c.config.url,h),configured:f}}async function H(){let a=(0,s.f)().telegramToken;if(!a)return null;let b=await D("telegram");return b?.row.enabled&&b.config?.chatId?{token:a,chatId:b.config.chatId}:null}async function I(){let a=await D("discord");return a?.row.enabled&&a.config?.url?{url:a.config.url}:null}let J="notify.telegramThreads",K=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;async function L(a,b,c){let d=a.filter(a=>K.test(a));if(!d.length||!Number.isSafeInteger(b)||b<=0)return;let h=Object.fromEntries(d.map(a=>[a,{m:b,at:c.getTime()}])),i=c.getTime()-6048e5,j=e.B`case when jsonb_typeof(${g.settings.value}) = 'object' then ${g.settings.value} else '{}'::jsonb end`;await (0,f.f)().insert(g.settings).values({key:J,value:h}).onConflictDoUpdate({target:g.settings.key,set:{value:e.B`(select coalesce(jsonb_object_agg(e.key, e.value), '{}'::jsonb) from jsonb_each(${JSON.stringify(h)}::jsonb || ${j}) as e
16
+ where jsonb_typeof(e.value) = 'object' and (e.value->>'at') ~ '^[0-9]{1,15}$' and (e.value->>'at')::bigint > ${i})`,updatedAt:c}})}async function M(a){if(!a||!K.test(a))return null;try{let[b]=await (0,f.f)().select({value:g.settings.value}).from(g.settings).where((0,c.u)(g.settings.key,J)).limit(1),d=b?.value&&"object"==typeof b.value?b.value[a]:null;return"number"==typeof d?.m&&Number.isSafeInteger(d.m)&&d.m>0?d.m:null}catch{return null}}let N=()=>(0,k.f)().catch(()=>y.a);async function O(a,b,i={}){var j;if(b-Date.now()<6e3)return{sent:0,dropped:0};let k=await (0,l.I)(),m=await (0,f.f)().select({a:g.alerts,channels:g.alertRules.channels}).from(g.alerts).innerJoin(g.alertRules,(0,c.u)(g.alertRules.key,g.alerts.ruleKey)).where((0,c.b)((0,c.E)(g.alerts.pending),e.B`(${g.alerts.pending} = 'resolve') = (${g.alerts.resolvedAt} is not null)`,(0,l.s)(k))).orderBy((0,d.M)(g.alerts.pendingSince)).limit(50);if(!m.length)return{sent:0,dropped:0};let o=new Set((await (0,f.f)().update(g.alerts).set({claimedAt:a}).where((j=m.map(a=>a.a.id),(0,c.b)((0,c.y)(g.alerts.id,j),(0,c.E)(g.alerts.pending),(0,c.F)((0,c.M)(g.alerts.claimedAt),(0,c.S)(g.alerts.claimedAt,new Date(a.getTime()-12e4)))))).returning({id:g.alerts.id})).map(a=>a.id)),p=m.filter(a=>o.has(a.a.id));if(!p.length)return{sent:0,dropped:0};let{send:q,configured:r}=i.sender??await G(),s=new Set(p.filter(({a:b})=>"resolve"!==b.pending&&(b.silencedUntilResolved||null!==b.silencedUntil&&b.silencedUntil.getTime()>a.getTime())).map(({a})=>a.id)),[u,v]=await Promise.all([N(),(0,t.B)()]),w=new Set;for(let b of["telegram","discord","webhook","smtp"]){if(!r.has(b))continue;let d=p.filter(a=>a.channels.includes(b)&&!s.has(a.a.id));if(!d.length)continue;let e=d.map(({a})=>{let c="telegram"===b?a:(0,y.o)(a,u);return{kind:a.pending,ruleKey:a.ruleKey,severity:a.severity,title:c.title,message:c.message,startedAt:a.startedAt,causedBy:c.causedBy,provider:a.providerIncident}}),i=(0,h.l)(e,a,(0,n.f)().SITE_URL,"webhook"===b?"en":"smtp"===b?v.email:v[b]),j=await q(b,(0,y.G)("telegram"===b?i.telegram:i.discord),"webhook"===b?e.map(a=>({...a,title:(0,y.G)(a.title),message:(0,y.G)(a.message)})):void 0);await (0,f.f)().update(g.channels).set(j.ok?{lastSentAt:a,lastError:null}:{lastError:j.error}).where((0,c.u)(g.channels.kind,b)),j.ok&&d.forEach(({a})=>w.add(a.id)),j.ok&&"telegram"===b&&j.messageId&&await L(d.filter(({a})=>"open"===a.pending).map(({a})=>a.id),j.messageId,a).catch(()=>console.warn("notify: remembering the Telegram message failed"))}let x=0,z=0,A=[];for(let{a:b,channels:d}of p){let e=d.some(a=>r.has(a)),h=null!==b.pendingSince&&a.getTime()-b.pendingSince.getTime()>18e5;w.has(b.id)?(x++,await (0,f.f)().update(g.alerts).set({pending:null,pendingSince:null,lastNotifiedAt:a,claimedAt:null,..."open"===b.pending?{notifiedOpen:!0}:{}}).where((0,c.u)(g.alerts.id,b.id))):s.has(b.id)||!e||h?(z++,await (0,f.f)().update(g.alerts).set({pending:null,claimedAt:null}).where((0,c.u)(g.alerts.id,b.id))):A.push(b.id)}return A.length&&await (0,f.f)().update(g.alerts).set({claimedAt:null}).where((0,c.y)(g.alerts.id,A)),{sent:x,dropped:z}}async function P(a){let b=new Date(a.getTime()-864e5),h=await (0,l.I)(),i=e.B`case ${g.alerts.severity} when 'critical' then 0 when 'warning' then 1 else 2 end`,[j,k,n,o,p]=await Promise.all([(0,f.f)().select({ruleKey:g.alerts.ruleKey,severity:g.alerts.severity,title:g.alerts.title,message:g.alerts.message,resourceId:g.alerts.resourceId,startedAt:g.alerts.startedAt}).from(g.alerts).where((0,c.b)((0,c.M)(g.alerts.resolvedAt),(0,l.s)(h))).orderBy(i,(0,d.A)(g.alerts.startedAt)).limit(50),(0,f.f)().select({n:e.B`count(*)::int`}).from(g.alerts).where((0,c.B)(g.alerts.startedAt,b)),(0,f.f)().select({ruleKey:g.alerts.ruleKey,title:g.alerts.title,resourceId:g.alerts.resourceId,startedAt:g.alerts.startedAt,resolvedAt:g.alerts.resolvedAt}).from(g.alerts).where((0,c.b)((0,c.E)(g.alerts.resolvedAt),(0,c.B)(g.alerts.resolvedAt,b))).orderBy((0,d.A)(g.alerts.resolvedAt)).limit(20),(0,f.f)().select({id:g.resources.id,name:g.resources.name}).from(g.resources).where((0,c.b)((0,c.u)(g.resources.kind,"app"),(0,c.u)(g.resources.monitored,!0),(0,c.M)(g.resources.goneAt))).orderBy(g.resources.name).limit(A.O.apps),(0,m.h)(a)]),q=o.map(a=>a.id),[r,s]=q.length?await Promise.all([(0,f.f)().select({id:g.monitors.resourceId,total:e.B`count(*)::int`,bad:e.B`(count(*) filter (where not ${g.checks.ok}))::int`}).from(g.checks).innerJoin(g.monitors,(0,c.u)(g.monitors.id,g.checks.monitorId)).where((0,c.b)((0,c.y)(g.monitors.resourceId,q),(0,c.B)(g.checks.at,b),(0,c.u)(g.checks.inMaintenance,!1))).groupBy(g.monitors.resourceId),(0,f.f)().select({id:g.storedLogs.resourceId,n:e.B`count(*)::int`}).from(g.storedLogs).where((0,c.b)((0,c.y)(g.storedLogs.resourceId,q),(0,c.B)(g.storedLogs.at,b))).groupBy(g.storedLogs.resourceId)]):[[],[]],t=new Map(r.map(a=>[a.id,a])),u=new Map(s.map(a=>[a.id,a.n])),v=await N();return{now:a,opened:k[0]?.n??0,firing:j.map(({resourceId:a,...b})=>{let c=(0,y.o)({...b,resourceId:a,causedBy:null},v);return{...b,title:c.title,message:c.message}}),resolved:n.flatMap(a=>a.resolvedAt?[{ruleKey:a.ruleKey,title:(0,y.o)({title:a.title,message:"",causedBy:null,resourceId:a.resourceId},v).title,took:(0,x.M)(a.startedAt,a.resolvedAt)}]:[]),apps:o.map(a=>{let b=t.get(a.id);return{name:a.name,uptime:b&&b.total>0?(b.total-b.bad)/b.total*100:null,errors:u.get(a.id)??0}}),providers:p.filter(a=>"ok"!==a.state).map(a=>({label:a.label,text:a.text}))}}async function Q(a,b,d){await (0,f.f)().update(g.channels).set(b.ok?{lastSentAt:d,lastError:null}:{lastError:b.error}).where((0,c.u)(g.channels.kind,a))}async function R(a){let[b,c]=await Promise.all([P(a),(0,t.I)("email")]);return(0,r.J)({...b,siteUrl:(0,n.f)().SITE_URL},c)}async function S(a,c){let d=(0,s.f)();if(!d.resendKey||!d.digestFrom)return{ok:!1,kind:"config",error:b.n.notSet("RESEND_API_KEY or DIGEST_FROM")};let e=await D("email_digest");if(!e?.config?.to)return{ok:!1,kind:"config",error:"The daily email digest isn't connected."};let f=await R(a),g=await (0,v.f)(d.resendKey,{from:d.digestFrom,to:e.config.to,subject:f.subject,html:f.html,text:f.text,idempotencyKey:c});return await Q("email_digest",g,a),g}async function T(a,b={}){let d=await (0,f.f)().select().from(g.settings).where((0,c.y)(g.settings.key,[B,C])),e=d.find(a=>a.key===B)?.value,h="string"==typeof e?e:null;if(!(0,r.A)(a,h))return;let i=(0,s.f)(),k=await D("email_digest");if(!i.resendKey||!i.digestFrom||!k?.row.enabled||!k.config?.to)return;let{resendKey:l,digestFrom:m}=i,n=k.config.to,o=(0,z.x)(a),p=await (0,r.K)(a,{lastSentDay:h,state:d.find(a=>a.key===C)?.value??null,build:b.build??(()=>R(a)),send:b.send??(a=>(0,v.f)(l,{from:m,to:n,...a,idempotencyKey:`digest-${o}`}))});p.acted&&(p.result&&await Q("email_digest",p.result,a),p.state?await (0,f.f)().insert(g.settings).values({key:C,value:p.state}).onConflictDoUpdate({target:g.settings.key,set:{value:p.state,updatedAt:a}}):await (0,f.f)().delete(g.settings).where((0,c.u)(g.settings.key,C)),p.sentDay&&await (0,f.f)().insert(g.settings).values({key:B,value:p.sentDay}).onConflictDoUpdate({target:g.settings.key,set:{value:p.sentDay,updatedAt:a}}),p.event&&await (0,j.f)([{type:"system",kind:"warn",message:p.event.message,detail:p.event.detail,resourceId:null,reason:"DigestFailed",at:a}]))}let U={en:{title:"Test message",message:"If you can read this, alerts reach you here."},id:{title:"Pesan tes",message:"Kalau pesan ini kebaca, alert udah nyampe ke sini."}};async function V(a,c,d={}){if("email_digest"===a)return S(c,`test-${c.getTime()}`);let{send:e,configured:f}=d.sender??await G();if(!f.has(a))return{ok:!1,kind:"config",error:"telegram"===a?`Telegram isn't connected, or ${b.n.notSet("TELEGRAM_BOT_TOKEN")}`:"webhook"===a?"The webhook isn't connected.":"smtp"===a?"Email (SMTP) isn't connected.":"Discord isn't connected."};let g="webhook"===a?"en":await (0,t.I)("smtp"===a?"email":a),i=(0,h.l)([{kind:"open",ruleKey:"Test",severity:"info",...U[g],startedAt:c,causedBy:null,provider:null}],c,(0,n.f)().SITE_URL,g),j=await e(a,"telegram"===a?i.telegram:i.discord);return await Q(a,j,c),j}async function W(){let a=(0,s.f)(),c={telegram:a.telegramToken?null:b.n.notSet("TELEGRAM_BOT_TOKEN"),discord:null,webhook:null,smtp:null,email_digest:a.resendKey&&a.digestFrom?null:b.n.notSet("RESEND_API_KEY or DIGEST_FROM")},[d,e,f,g,h]=await Promise.all([D("telegram"),D("discord"),D("webhook"),D("smtp"),D("email_digest")]),i=(a,b)=>({kind:a,connected:null!==b,enabled:b?.row.enabled??!1,hint:b?(0,u.f)(a,b.config):null,lastSentAt:b?.row.lastSentAt??null,lastError:b?.row.lastError??null,envMissing:c[a]});return[i("telegram",d),i("discord",e),i("webhook",f),i("smtp",g),i("email_digest",h)]}a.s(["k",0,W,"q",0,O,"G",0,I,"u",0,D,"P",0,Q,"L",0,V,"y",0,F,"J",0,T,"Q",0,H,"M",0,M,"Y",0,E])},390626,755453,352595,80997,718025,a=>{var b=a.i(19809),c=a.i(371289);let d=/^https:\/\/(?:(?:canary|ptb)\.)?discord(?:app)?\.com\/api\/webhooks\/\d{5,25}\/[\w-]{20,}$/;function e(a){return d.test(a.trim())?null:"Paste the whole webhook URL from Discord."}async function f(a,d,g={}){let h;if((0,c.W)())return{ok:!1,kind:"config",error:b.Y};if(e(a))return{ok:!1,kind:"config",error:"The saved Discord webhook URL isn't valid."};try{h=await (g.fetch??fetch)(a,{method:"POST",headers:{"Content-Type":"application/json"},signal:AbortSignal.timeout(g.timeoutMs??5e3),cache:"no-store",body:JSON.stringify({content:d.slice(0,2e3),username:"Watchbell",allowed_mentions:{parse:[]}})})}catch{return{ok:!1,kind:"transient",error:"Discord didn't answer."}}if(204===h.status||h.ok)return{ok:!0};if(429===h.status){let a=await h.json().catch(()=>null),b=Math.ceil(a?.retry_after??5);return{ok:!1,kind:"transient",retryAfterS:b,error:`Discord asked us to wait ${b} s.`}}return 404===h.status||401===h.status?{ok:!1,kind:"config",error:"Discord says this webhook no longer exists."}:{ok:!1,kind:h.status>=500?"transient":"config",error:`Discord returned an error (${h.status}).`}}a.s(["$",0,f,"e",0,e],390626);var g=a.i(666680),h=a.i(300794),i=a.i(261283);function j(a){let b;try{b=new URL(a.trim())}catch{return"Paste the whole address, starting with https://."}let c=(0,i._)(b);return"scheme"===c?"Use an https:// address without a user name or password in it.":"blocked"===c?"Use an address on the public internet, on port 443. Watchbell doesn't post into private networks.":null}let k={open:"firing",repeat:"repeat",resolve:"resolved"};async function l(a){return(await (0,h.lookup)(a,{all:!0})).map(a=>a.address)}async function m(a,d,e={}){let f,h;if((0,c.W)())return{ok:!1,kind:"config",error:b.Y};if(j(a.url))return{ok:!1,kind:"config",error:"The saved webhook address isn't allowed any more."};let k=new URL(a.url.trim());try{let a=await (e.lookup??l)(k.hostname);if(!a.length||a.some(i.W))return{ok:!1,kind:"config",error:"The webhook host resolves to a private address; Watchbell won't post there."}}catch{return{ok:!1,kind:"transient",error:"The webhook host didn't resolve."}}let n=JSON.stringify(d),o=String(Math.floor(Date.parse(d.sentAt)/1e3)),p={"Content-Type":"application/json","User-Agent":"Watchbell-Webhook/1.0","X-Watchbell-Timestamp":o};a.secret&&(p["X-Watchbell-Signature"]=(h=a.secret,`sha256=${(0,g.createHmac)("sha256",h).update(`${o}.${n}`).digest("hex")}`));try{f=await (e.fetch??fetch)(k.toString(),{method:"POST",headers:p,body:n,redirect:"manual",cache:"no-store",signal:AbortSignal.timeout(e.timeoutMs??5e3)})}catch{return{ok:!1,kind:"transient",error:"The webhook didn't answer."}}if(await f.body?.cancel().catch(()=>void 0),f.ok)return{ok:!0};if(f.status>=300&&f.status<400)return{ok:!1,kind:"config",error:"The webhook answered with a redirect; Watchbell doesn't follow them. Use the final address."};if(429===f.status){let a=Math.min(600,Math.max(1,Number(f.headers.get("retry-after"))||30));return{ok:!1,kind:"transient",retryAfterS:a,error:`The webhook asked to wait ${a} s.`}}return{ok:!1,kind:f.status>=500?"transient":"config",error:`The webhook returned an error (${f.status}).`}}a.s(["k",0,function(a){return""===a||a.length>=16&&a.length<=200?null:"Use a secret of 16 to 200 characters, or leave it empty."},"E",0,m,"J",0,function(a,b,c,d){return{source:"watchbell",event:b.length?"alerts":"test",sentAt:c.toISOString(),text:a.slice(0,4e3),link:d,alerts:b.slice(0,20).map(a=>({status:k[a.kind],rule:a.ruleKey,severity:a.severity,title:a.title,message:a.message,startedAt:a.startedAt.toISOString(),causedBy:a.causedBy,provider:a.provider}))}},"I",0,j],755453);var n=a.i(761095),o=a.i(685560),p=a.i(61675);let q=[465,587,2525],r=p.z.email();function s(a){let b={},c=a.host.trim().toLowerCase();return/^[a-z0-9.-]{3,253}$/.test(c)&&c.includes(".")?(0,i.N)(c)&&(b.host="Use a mail server on the public internet. Watchbell doesn't connect into private networks."):b.host="Enter the server name, for example smtp.office365.com.",q.includes(a.port)||(b.port="Use port 587 (STARTTLS), 465 (TLS) or 2525."),(!a.user.trim()||a.user.length>200)&&(b.user="Enter the user name the server expects (often the whole address)."),(!a.pass||a.pass.length>500)&&(b.pass="Enter the password or app password."),r.safeParse(a.from.trim()).success||(b.from="Enter the address the mail comes from."),r.safeParse(a.to.trim()).success||(b.to="Enter the address that gets the alerts."),b}class t{socket;buf;lines;ready;waiters;onData;constructor(a){this.socket=a,this.buf="",this.lines=[],this.ready=[],this.waiters=[],this.onData=a=>this.read(a),a.on("data",this.onData)}attach(a){this.socket.off("data",this.onData),this.socket=a,a.on("data",this.onData)}read(a){let b;for(this.buf+=a.toString("utf8");(b=this.buf.indexOf("\n"))>=0;){let a=this.buf.slice(0,b).replace(/\r$/,"");if(this.buf=this.buf.slice(b+1),this.lines.push(a),/^\d{3}( |$)/.test(a)){let b={code:Number(a.slice(0,3)),text:this.lines.join("\n")};this.lines=[];let c=this.waiters.shift();c?c(b):this.ready.push(b)}}}next(){let a=this.ready.shift();return a?Promise.resolve(a):new Promise(a=>this.waiters.push(a))}send(a){this.socket.write(`${a}\r
17
+ `)}}class u extends Error{kind;constructor(a,b){super(a),this.kind=b}}async function v(a,d,e,f={}){let j;if((0,c.W)())return{ok:!1,kind:"config",error:b.Y};if(Object.keys(s(a)).length)return{ok:!1,kind:"config",error:"The saved mail server settings aren't valid any more."};let k=a.host.trim().toLowerCase();try{let a=await (f.lookup??(async a=>(await (0,h.lookup)(a,{all:!0})).map(a=>a.address)))(k);if(!a.length||a.some(i.W))return{ok:!1,kind:"config",error:"The mail server resolves to a private address; Watchbell won't connect there."};j=a[0]}catch{return{ok:!1,kind:"transient",error:"The mail server's name didn't resolve."}}let l=465===a.port,m=null,p=new Promise((a,b)=>setTimeout(()=>b(new u("The mail server took too long to answer.","transient")),f.timeoutMs??15e3).unref?.()),q=async()=>{var b,c,h,i;let p,q;try{m=await (f.connect??((a,b,c,d)=>new Promise((e,f)=>{let g=d?o.default.connect({host:a,port:b,servername:c}):n.default.connect({host:a,port:b});g.once(d?"secureConnect":"connect",()=>e(g)),g.once("error",f)})))(j,a.port,k,l)}catch{throw new u(`Couldn't connect to ${k}:${a.port}.`,"transient")}let r=new t(m),s=async(a,b,c="config")=>{let d=await r.next();if(!a.includes(d.code))throw new u(`The mail server refused ${b} (${d.code}).`,d.code>=400&&d.code<500?"transient":c);return d};await s([220],"the connection","transient"),r.send("EHLO watchbell");let v=await s([250],"EHLO");if(!l){if(!/^250[- ]STARTTLS\b/im.test(v.text))throw new u("The mail server doesn't offer STARTTLS on this port, so the password would go in clear. Use port 465 or a server with STARTTLS.","config");r.send("STARTTLS"),await s([220],"STARTTLS"),m=await (f.upgrade??((a,b)=>new Promise((c,d)=>{let e=o.default.connect({socket:a,servername:b});e.once("secureConnect",()=>c(e)),e.once("error",d)})))(m,k),r.attach(m),r.send("EHLO watchbell"),v=await s([250],"EHLO after STARTTLS")}r.send(`AUTH PLAIN ${Buffer.from(`\0${a.user}\0${a.pass}`,"utf8").toString("base64")}`),await s([235],"the user name or password"),r.send(`MAIL FROM:<${a.from.trim()}>`),await s([250],"the sender address"),r.send(`RCPT TO:<${a.to.trim()}>`),await s([250,251],"the recipient address"),r.send("DATA"),await s([354],"the message"),m.write(`${(b=a,c=d,h=e,i=new Date,q=Buffer.from(h.replace(/\r?\n/g,"\r\n"),"utf8").toString("base64").replace(/.{1,76}/g,"$&\r\n"),[`From: Watchbell <${b.from.trim()}>`,`To: <${b.to.trim()}>`,`Subject: ${(p=c.replace(/[\r\n]+/g," ").slice(0,200),/^[\x20-\x7e]*$/.test(p)?p:`=?UTF-8?B?${Buffer.from(p,"utf8").toString("base64")}?=`)}`,`Date: ${i.toUTCString()}`,`Message-ID: <${(0,g.randomUUID)()}@watchbell>`,"MIME-Version: 1.0","Content-Type: text/plain; charset=utf-8","Content-Transfer-Encoding: base64","",q].join("\r\n"))}\r
18
+ .\r
19
+ `),await s([250],"the message"),r.send("QUIT"),await Promise.race([r.next(),new Promise(a=>setTimeout(a,2e3))])};try{return await Promise.race([q(),p]),{ok:!0}}catch(a){return a instanceof u?{ok:!1,kind:a.kind,error:a.message}:{ok:!1,kind:"transient",error:"The mail server closed the connection."}}finally{m?.destroy()}}a.s(["r",0,v,"t",0,s],352595);var w=a.i(192738),x=a.i(67890),y=a.i(245710),z=a.i(469762),A=a.i(556987);function B(a,b){return(0,y.M)(a,b)&&(0,y.z)(a).hour>=7}let C={en:{firing:"firing",opened:"opened",resolved:"resolved",last24:"in the last 24 hours.",stillHead:"Still firing",noFiring:"Nothing is firing.",resolvedHead:"Resolved",noResolved:"Nothing resolved.",appsHead:"Applications (24 h)",providersHead:"Providers",open:"Open alerts",after:"after",up:"up",took:a=>a,noChecks:"no checks",errors:a=>`${a} stored error${1===a?"":"s"}`},id:{firing:"aktif",opened:"baru",resolved:"pulih",last24:"dalam 24 jam terakhir.",stillHead:"Masih aktif",noFiring:"Nggak ada yang aktif.",resolvedHead:"Pulih",noResolved:"Nggak ada yang pulih.",appsHead:"Aplikasi (24 jam)",providersHead:"Provider",open:"Buka Alerts",after:"setelah",up:"aktif",took:a=>a.replace(/\b(\d+) min\b/g,"$1 menit").replace(/\b(\d+) h\b/g,"$1 jam").replace(/\b(\d+) d\b/g,"$1 hari"),noChecks:"belum ada cek",errors:a=>`${a} error tersimpan`}},D={May:"Mei",Aug:"Agu",Oct:"Okt",Dec:"Des"},E=[5,15,30,60];async function F(a,b){let c={acted:!1,state:b.state,sentDay:null,event:null,result:null};if(!B(a,b.lastSentDay))return c;let d=(0,y.x)(a),e=b.state&&b.state.day===d?b.state:null;if(e?.stopped)return{...c,state:e};if(e&&e.attempts>0){let b=(E[e.attempts-1]??E[E.length-1])*6e4;if(e.lastAttemptAt&&a.getTime()-new Date(e.lastAttemptAt).getTime()<b)return{...c,state:e}}e??={day:d,...await b.build(),attempts:0,lastAttemptAt:null,stopped:!1,lastError:null};let f=await b.send({subject:e.subject,html:e.html,text:e.text});if(f.ok)return{acted:!0,state:null,sentDay:d,event:null,result:f};let g=e.attempts+1,h="config"===f.kind||g>=5,i="config"===f.kind?`${f.error}. Fix it and the next digest goes out tomorrow.`:`${f.error} Gave up after ${g} attempts today.`;return{acted:!0,sentDay:null,result:f,state:{...e,attempts:g,lastAttemptAt:a.toISOString(),stopped:h,lastError:f.error},event:h?{message:"Daily digest not sent",detail:i}:null}}a.s(["J",0,function(a,b="en"){let c=C[b],d=`${a.siteUrl.replace(/\/+$/,"")}/alerts`,e=((a,b)=>{let{day:c,month:d}=(0,y.e)(a);return`${c} ${"id"===b?D[d]??d:d}`})(a.now,b),f=`${a.firing.length} ${c.firing}, ${a.opened} ${c.opened}, ${a.resolved.length} ${c.resolved}`,g=`Watchbell \xb7 ${e} \xb7 ${f}`,h=[...a.apps].sort((a,b)=>(a.uptime??101)-(b.uptime??101)||b.errors-a.errors||a.name.localeCompare(b.name)),i=a.firing.map(a=>`${w.Z[b][a.severity]} \xb7 ${a.ruleKey} \xb7 ${a.title}: ${"id"===b?(0,x.f)(a.ruleKey,a.message):a.message}`),j=a.resolved.map(a=>`${a.ruleKey} \xb7 ${a.title} (${c.after} ${c.took(a.took)})`),k=h.map(a=>`${a.name}: ${null===a.uptime?c.noChecks:`${(0,z.C)(a.uptime)} ${c.up}`}, ${c.errors(a.errors)}`),l=a.providers.map(a=>`${a.label}: ${a.text}`),m=[`Watchbell \xb7 ${e}`,`${f} ${c.last24}`,"",c.stillHead,...i.length?i.map(a=>`- ${a}`):[c.noFiring],"",c.resolvedHead,...j.length?j.map(a=>`- ${a}`):[c.noResolved],...k.length?["",c.appsHead,...k.map(a=>`- ${a}`)]:[],...l.length?["",c.providersHead,...l.map(a=>`- ${a}`)]:[],"",`${c.open}: ${d}`].join("\n"),n=a=>`<h3 style="font:600 14px system-ui,sans-serif;margin:18px 0 6px">${(0,w.H)(a)}</h3>`,o=(a,b)=>a.length?`<ul style="margin:0;padding-left:18px">${a.map(a=>`<li style="margin:2px 0">${(0,w.H)(a)}</li>`).join("")}</ul>`:`<p style="margin:0;color:#596170">${(0,w.H)(b)}</p>`,p=['<div style="font:14px/1.5 system-ui,sans-serif;color:#14171f;max-width:560px">',`<h2 style="font:600 16px system-ui,sans-serif;margin:0 0 4px">Watchbell \xb7 ${(0,w.H)(e)}</h2>`,`<p style="margin:0;color:#596170">${(0,w.H)(`${f} ${c.last24}`)}</p>`,n(c.stillHead),o(i,c.noFiring),n(c.resolvedHead),o(j,c.noResolved),...k.length?[n(c.appsHead),o(k,"")]:[],...l.length?[n(c.providersHead),o(l,"")]:[],`<p style="margin:18px 0 0"><a href="${(0,w.H)(d).replace(/"/g,"&quot;")}" style="color:#2f4372">${(0,w.H)(c.open)}</a></p>`,"</div>"].join("");return{subject:(0,A.G)(g),html:(0,A.G)(p),text:(0,A.G)(m)}},"A",0,B,"K",0,F],80997),a.s(["f",0,function(a=process.env){let b=a.TELEGRAM_BOT_TOKEN?.trim()??"",c=a.RESEND_API_KEY?.trim()??"",d=a.DIGEST_FROM?.trim()??"";return{telegramToken:/^\d+:[\w-]{20,}$/.test(b)?b:null,resendKey:c.startsWith("re_")?c:null,digestFrom:/<?[^\s<>@]+@[^\s<>@]+\.[^\s<>@]+>?$/.test(d)?d:null}}],718025)},288879,204784,a=>{a.s(["f",0,function(a,b){if("telegram"===a)return`${b.chatLabel||"Chat"} \xb7 …${b.chatId.slice(-4)}`;if("discord"===a){let a=/\/webhooks\/(\d+)\//.exec(b.url)?.[1]??"";return`webhook …${a.slice(-4)}`}if("webhook"===a){let a="";try{a=new URL(b.url).hostname}catch{a="?"}return`${a}/…${b.secret?" · signed":""}`}return"smtp"===a?`${b.host}:${b.port} \xb7 to ${b.to.slice(0,2)}…@…`:`${b.to.slice(0,2)}…@…`}],288879);var b=a.i(19809),c=a.i(371289);async function d(a,e,f={}){let g;if((0,c.W)())return{ok:!1,kind:"config",error:b.Y};try{g=await (f.fetch??fetch)("https://api.resend.com/emails",{method:"POST",signal:AbortSignal.timeout(5e3),cache:"no-store",headers:{Authorization:`Bearer ${a}`,"Content-Type":"application/json","User-Agent":"OpsConsole/1.0","Idempotency-Key":e.idempotencyKey},body:JSON.stringify({from:e.from,to:[e.to],subject:e.subject,html:e.html,text:e.text})})}catch{return{ok:!1,kind:"transient",error:"Resend didn't answer."}}if(g.ok)return{ok:!0};let h=await g.json().catch(()=>null);return 429===g.status||g.status>=500?{ok:!1,kind:"transient",error:`Resend returned an error (${g.status}).`}:{ok:!1,kind:"config",error:`Resend: ${String(h?.message??g.status).slice(0,200)}`}}a.s(["f",0,d],204784)},552543,a=>{var b=a.i(186133);function c(a){let b=a&&"object"==typeof a?a:null,c=b?b.lang:a,d=a=>{var d;return"string"==typeof(d=b&&a in b?b[a]:c)&&"id"===d.trim().toLowerCase()?"id":"en"};return{telegram:d("telegram"),discord:d("discord"),email:d("email")}}async function d(){try{return c(await (0,b.l)())}catch{return c(null)}}async function e(a="telegram"){return(await d())[a]}a.s(["c",0,["telegram","discord","email"],"H",0,c,"I",0,e,"B",0,d,"t",0,function(a,b,c){return a[b][c]}])},446914,a=>{var b=a.i(19809),c=a.i(462820),d=a.i(371289);async function e(a,c,f,g,h=5e3){let i;if((0,d.W)())return{ok:!1,code:null,description:b.Y,retryAfter:null};try{i=await g(`https://api.telegram.org/bot${a}/${c}`,{...f,signal:AbortSignal.timeout(h),cache:"no-store"})}catch{return{ok:!1,code:null,description:"Telegram didn't answer.",retryAfter:null}}let j=await i.json().catch(()=>null);return j?.ok?{ok:!0,result:j.result}:{ok:!1,code:j?.error_code??i.status,description:String(j?.description??`HTTP ${i.status}`).slice(0,200),retryAfter:j?.parameters?.retry_after??null}}async function f(a,b,c,d={}){let g="number"==typeof d.replyTo&&Number.isSafeInteger(d.replyTo)&&d.replyTo>0?{reply_parameters:{message_id:d.replyTo,allow_sending_without_reply:!0}}:{},h=await e(a,"sendMessage",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({chat_id:b,text:c,parse_mode:"HTML",link_preview_options:{is_disabled:!0},...d.replyMarkup?{reply_markup:d.replyMarkup}:{},...g})},d.fetch??fetch);if(h.ok){let a=h.result?.message_id;return"number"==typeof a&&Number.isSafeInteger(a)&&a>0?{ok:!0,messageId:a}:{ok:!0}}return 429===h.code?{ok:!1,kind:"transient",retryAfterS:h.retryAfter??30,error:`Telegram asked us to wait ${h.retryAfter??30} s.`}:null===h.code||h.code>=500?{ok:!1,kind:"transient",error:null===h.code?h.description:`Telegram returned an error (${h.code}).`}:{ok:!1,kind:"config",error:`Telegram: ${h.description}`}}async function g(a,b={}){let d=await e(a,"getUpdates?limit=20&timeout=0",{method:"GET"},b.fetch??fetch);if(!d.ok)return 409===d.code?{ok:!1,error:"This bot has a webhook set, so the console can't list chats. Remove the webhook or paste the chat id."}:401===d.code||404===d.code?{ok:!1,error:`Telegram rejected TELEGRAM_BOT_TOKEN. Check the value ${c.n.checkWhere}.`}:{ok:!1,error:"Couldn't reach Telegram. Try again."};let f=new Map;for(let a of Array.isArray(d.result)?d.result:[]){let b=a.message?.chat??a.my_chat_member?.chat??a.channel_post?.chat;b&&"number"==typeof b.id&&f.set(String(b.id),`${b.title??b.first_name??b.username??"Chat"} (${b.type??"chat"})`)}return{ok:!0,chats:[...f].map(([a,b])=>({id:a,label:b}))}}a.s(["N",0,g,"I",0,f,"z",0,e])}]})();
14
20
 
15
21
  //# sourceMappingURL=src_lib_005l0kcpyu43o._.js.map
@@ -43,6 +43,6 @@ jobs:
43
43
  git add -- "$LOCKFILE"
44
44
  git commit -m "chore(deps): update package-lock.json (Watchbell)"
45
45
  git push origin "HEAD:$BRANCH"
46
- `;a.s(["h",0,"deps.lockfileActions","w",0,6e5,"G",0,f,"g",0,e,"C",0,function(a){let b=a.lockfilePath??"package-lock.json";return!e(a.repo)||!c.test(a.branch)||!d.test(b)||b.includes("..")||!Number.isInteger(a.prNumber)||a.prNumber<1?null:{repo:a.repo,branch:a.branch,lockfile:b,pr:a.prNumber}},"i",0,function(a){let b=a&&"object"==typeof a&&!Array.isArray(a)?a.repo:null;return{repo:e(b)?b:null}}])},812092,117859,a=>{var b=a.i(26972),c=a.i(427221),d=a.i(83931),e=a.i(899370),f=a.i(811365),g=a.i(689963),h=a.i(149310),i=a.i(84877),j=a.i(679662),k=a.i(462820);let l=["dependencies","devDependencies","optionalDependencies"],m="watchpost/deps-",n=a=>"object"==typeof a&&null!==a&&!Array.isArray(a),o=(a,b)=>a.startsWith(m)&&/^watchpost\/deps-[0-9a-f]{8}$/.test(a)&&a!==b,p=a=>{let b=a.filter(a=>!a.companionOf);return b.length?b:a},q={npm:"npm install",pnpm:"pnpm install",yarn:"yarn install",bun:"bun install","package-json":"npm install"};a.s(["M",0,function(a,b){let c;try{c=JSON.parse(a)}catch{return null}if(!n(c))return null;for(let a of b){let b=c[a.group];if(!n(b)||b[a.package]!==a.from)return null;b[a.package]=a.to}let d=/^[{[]\r?\n([ \t]+)\S/.exec(a),e=d?d[1]:" ",f=a.includes("\r\n")?"\r\n":"\n",g=JSON.stringify(c,null,e);return"\r\n"===f&&(g=g.replace(/\n/g,"\r\n")),/\r?\n$/.test(a)?g+f:g},"U",0,function(a,b=null){let c=a.map(a=>`${a.package}@${a.to}`).sort().join(",");return`${m}${function(a){let b=0x811c9dc5;for(let c=0;c<a.length;c++)b^=a.charCodeAt(c),b=Math.imul(b,0x1000193)>>>0;return b.toString(16).padStart(8,"0")}(b?`${b}|${c}`:c)}`},"G",0,function(a){let b=p(a);return 1===b.length?`chore(deps): update ${b[0].package} to ${b[0].fixed} (security fix)`:`chore(deps): update ${b.length} packages for security fixes`},"c",0,o,"k",0,function(a,b){let c;try{c=JSON.parse(a)}catch{return null}if(!n(c))return null;let d=[];for(let a of b)if((0,j.L)(a.package)&&(0,j.C)(a.to))for(let b of l){let e=c[b];if(!n(e)||"string"!=typeof e[a.package])continue;let f=e[a.package],g=(0,j.Y)(f),h=function(a,b){let c=/^\s*(\^|~|>=|=)?\s*v?\d+(?:\.(?:\d+|x|\*))?(?:\.(?:\d+|x|\*))?(?:-[0-9A-Za-z.-]+)?\s*$/.exec(a);return c&&(0,j.C)(b)?`${c[1]??""}${b}`:null}(f,a.to);!g||!h||(0,i.f)(g,a.to)>=0||d.push({package:a.package,group:b,from:f,to:h,fixed:a.to,vulnIds:a.vulnIds,cves:a.cves,...a.companionOf?{companionOf:a.companionOf}:{}})}return d},"y",0,function(a,b,c=!1,d=null){let e=q[b??"npm"]??"npm install",f=`run \`${e}\`${d?` in \`${d}\``:""}`,g=a.filter(a=>!a.companionOf),h=a.filter(a=>a.companionOf),i=g.map(a=>{let b=[...a.cves,...a.vulnIds.filter(b=>!a.cves.includes(b))].slice(0,4).map(a=>`[${a}](https://osv.dev/vulnerability/${encodeURIComponent(a)})`).join(", ");return`| \`${a.package}\` | \`${a.from}\` | \`${a.to}\` | ${b||"-"} |`});return[c?"This PR was opened **automatically** by Watchbell (Automatic security fixes). Watchbell merges it itself when CI is green, the Vercel preview is READY and passes the smoke test, and auto-rollback is on; if anything fails, the PR stays open for you to check.":k.K.prApproved,"","These packages have known vulnerabilities (source: OSV.dev / GitHub Advisory) and a fixed version exists:","","| Package | Current version | New version | Advisory |","| --- | --- | --- | --- |",...i,"",...h.map(a=>`Updated to match ${a.companionOf} (no advisory of its own): \`${a.package}\` \`${a.from}\` → \`${a.to}\`.`),...h.length?[""]:[],"### Important: the lockfile is not updated","",c?`Watchbell only changes \`package.json\`; it can't regenerate the lockfile on the server. Vercel installs the new version at build time, so production is safe after the merge. Afterwards ${f} on the main branch and commit the lockfile to bring it up to date.`:`Watchbell only changes \`package.json\`; it can't regenerate the lockfile on the server. Before merging, check out this branch, ${f}, then commit the changed lockfile. Then make sure the build and tests still pass.`,"","Vulnerable packages that are only installed through other packages (transitive) are not changed here; check with `npm audit` after installing.","","_Nothing is pushed to the main branch: all changes are on this PR branch._"].join("\n")},"f",0,function(a,b=null){let c=p(a),d=b?` in ${b}`:"",e=1===c.length?`Watchbell: update ${c[0].package} to ${c[0].fixed}${d} (security fix)`:`Watchbell: update ${c.length} vulnerable packages${d} (${c.slice(0,2).map(a=>a.package).join(", ")}${c.length>2?", …":""})`;return e.length>200?`${e.slice(0,199)}…`:e}],117859);var r=a.i(760417);async function s(a,b,c,d,e,f=!1){let g,h=e.timeoutMs??8e3;try{g=await (e.fetch??fetch)(`https://api.github.com${b}`,{method:a,headers:{Authorization:`Bearer ${c}`,Accept:f?"application/vnd.github.raw+json":"application/vnd.github+json","X-GitHub-Api-Version":"2022-11-28","User-Agent":"Watchbell",...void 0!==d?{"Content-Type":"application/json"}:{}},body:void 0!==d?JSON.stringify(d):void 0,signal:AbortSignal.timeout(h),cache:"no-store",redirect:"error"})}catch(a){return{ok:!1,kind:"transient",error:a instanceof DOMException&&("TimeoutError"===a.name||"AbortError"===a.name)?`GitHub didn't answer within ${Math.round(h/1e3)} seconds.`:"Couldn't reach GitHub."}}let i=await g.text().catch(()=>"");if(f&&g.ok)return{ok:!0,status:g.status,data:i};let j=null;try{j=i?JSON.parse(i):null}catch{j=null}if(g.ok)return{ok:!0,status:g.status,data:j};let k=g.status;return 401===k?{ok:!1,kind:"auth",status:k,error:"GitHub rejected the PR-write token (401). It may have expired or been revoked."}:429===k||403===k&&"0"===g.headers.get("x-ratelimit-remaining")?{ok:!1,kind:"transient",status:k,error:"GitHub's rate limit is used up for now. Try again later."}:403===k?{ok:!1,kind:"scope",status:k,error:"The GitHub PR-write token can't do this (403). It needs Contents and Pull requests: Read and write on this repository."}:404===k?{ok:!1,kind:"missing",status:k,error:"The PR-write token doesn't see this repository (404). Give it access to the repository."}:409===k||422===k?{ok:!1,kind:"format",status:k,error:`GitHub refused the change (${k}).`}:{ok:!1,kind:"transient",status:k,error:`GitHub returned an error (${k}).`}}let t=a=>({ok:!1,kind:"format",error:`GitHub answered ${a} in a format the console doesn't recognise.`}),u={ok:!1,kind:"format",error:"That isn't a repository or branch the console may write."};async function v(a,e,f={}){if(!(0,r.M)(e))return u;let g=await s("GET",`/repos/${(0,r.f)(e)}`,a,void 0,f);if(!g.ok)return g;let h=b.z.object({default_branch:c.z.string(),permissions:b.z.object({push:d.z.boolean()}).partial().optional()}).safeParse(g.data);return h.success&&(0,r.c)(h.data.default_branch)?{ok:!0,data:{defaultBranch:h.data.default_branch,canPush:h.data.permissions?.push??null}}:t("the repository")}async function w(a,d,e,f={}){if(!(0,r.M)(d)||!(0,r.c)(e))return u;let g=await s("GET",`/repos/${(0,r.f)(d)}/git/ref/heads/${e.split("/").map(encodeURIComponent).join("/")}`,a,void 0,f);if(!g.ok)return"missing"===g.kind?{ok:!0,data:null}:g;let h=b.z.object({object:b.z.object({sha:c.z.string().regex(/^[0-9a-f]{40}$/)})}).safeParse(g.data);return h.success?{ok:!0,data:h.data.object.sha}:t("the branch")}let x=/^(?:[A-Za-z0-9._-]{1,100}\/){0,6}package\.json$/,y=a=>x.test(a)&&!a.split("/").some(a=>"."===a||".."===a),z=(a,b)=>`/repos/${(0,r.f)(a)}/contents/${b.split("/").map(encodeURIComponent).join("/")}`;async function A(a,d,f,g={},h="package.json"){if(!(0,r.M)(d)||!(0,r.c)(f)||!y(h))return u;let i=await s("GET",`${z(d,h)}?ref=${encodeURIComponent(f)}`,a,void 0,g);if(!i.ok)return"missing"===i.kind?{ok:!0,data:null}:i;let j=b.z.object({sha:c.z.string(),encoding:e.z.literal("base64"),content:c.z.string()}).safeParse(i.data);return j.success?{ok:!0,data:{sha:j.data.sha,text:Buffer.from(j.data.content.replace(/\s/g,""),"base64").toString("utf8")}}:t("package.json")}let B=/^(?:[A-Za-z0-9._-]{1,100}\/){0,6}(?:package-lock|npm-shrinkwrap)\.json$/,C=a=>B.test(a)&&!a.split("/").some(a=>"."===a||".."===a);async function D(a,b,c,d,e={}){if(!(0,r.M)(b)||!(0,r.c)(c)||!C(d))return u;let f=await s("GET",`${z(b,d)}?ref=${encodeURIComponent(c)}`,a,void 0,{timeoutMs:2e4,...e},!0);return f.ok?"string"==typeof f.data?{ok:!0,data:f.data}:t("the lockfile"):"missing"===f.kind?{ok:!0,data:null}:f}async function E(a,b,c,d,e,f={}){if(!(0,r.M)(b)||!o(c,e)||!/^[0-9a-f]{40}$/.test(d))return u;let g=await s("POST",`/repos/${(0,r.f)(b)}/git/refs`,a,{ref:`refs/heads/${c}`,sha:d},f);return g.ok?{ok:!0,data:!0}:g}async function F(a,b,c,d,e,f,g,h={},i="package.json"){if(!(0,r.M)(b)||!o(c,d)||!y(i))return u;let j=await s("PUT",z(b,i),a,{message:g,content:Buffer.from(e,"utf8").toString("base64"),sha:f,branch:c},h);return j.ok?{ok:!0,data:!0}:j}let G=b.z.object({number:f.z.number(),html_url:c.z.string().startsWith("https://github.com/")});async function H(a,b,c,d,e,f={}){if(!(0,r.M)(b)||!o(d,e))return u;let h=new URLSearchParams({state:"open",head:`${c}:${d}`,per_page:"1"}),i=await s("GET",`/repos/${(0,r.f)(b)}/pulls?${h}`,a,void 0,f);if(!i.ok)return i;let j=g.z.array(G).safeParse(i.data);if(!j.success)return t("the pull requests");let k=j.data[0];return{ok:!0,data:k?{number:k.number,url:k.html_url}:null}}async function I(a,b,c,d,e,f,g={}){if(!(0,r.M)(b)||!o(c,d)||!(0,r.c)(d))return u;let h=await s("POST",`/repos/${(0,r.f)(b)}/pulls`,a,{title:e,head:c,base:d,body:f,maintainer_can_modify:!0},g);if(!h.ok)return h;let i=G.safeParse(h.data);return i.success?{ok:!0,data:{number:i.data.number,url:i.data.html_url}}:t("the new pull request")}let J=g.z.array(b.z.object({number:f.z.number(),title:c.z.string(),head:b.z.object({ref:c.z.string(),sha:c.z.string(),repo:b.z.object({full_name:c.z.string()}).nullable()}),base:b.z.object({ref:c.z.string()})}));async function K(a,b,c={}){if(!(0,r.M)(b))return u;let d=await s("GET",`/repos/${(0,r.f)(b)}/pulls?state=open&per_page=100`,a,void 0,c);if(!d.ok)return d;let e=J.safeParse(d.data);return e.success?{ok:!0,data:e.data.filter(a=>/^watchpost\/deps-[0-9a-f]{8}$/.test(a.head.ref)&&a.head.repo?.full_name===b).map(a=>({number:a.number,branch:a.head.ref,title:a.title,headSha:a.head.sha,base:a.base.ref}))}:t("the pull requests")}async function L(a,e,f,g={}){if(!(0,r.M)(e)||!Number.isInteger(f)||f<=0)return u;let i=await s("GET",`/repos/${(0,r.f)(e)}/pulls/${f}`,a,void 0,g);if(!i.ok)return i;let j=b.z.object({state:h.z.enum(["open","closed"]),merged:d.z.boolean().optional(),mergeable:d.z.boolean().nullable().optional(),head:b.z.object({ref:c.z.string(),sha:c.z.string().regex(/^[0-9a-f]{40}$/)}),base:b.z.object({ref:c.z.string()})}).safeParse(i.data);return j.success?{ok:!0,data:{state:j.data.state,merged:!0===j.data.merged,mergeable:j.data.mergeable??null,headSha:j.data.head.sha,branch:j.data.head.ref,base:j.data.base.ref}}:t("the pull request")}async function M(a,d,e,h={}){if(!(0,r.M)(d)||!/^[0-9a-f]{40}$/.test(e))return u;let[i,j]=await Promise.all([s("GET",`/repos/${(0,r.f)(d)}/commits/${e}/check-runs?per_page=100`,a,void 0,h),s("GET",`/repos/${(0,r.f)(d)}/commits/${e}/status`,a,void 0,h)]),k=a=>!a.ok&&("scope"===a.kind||"missing"===a.kind);if(!i.ok&&!k(i))return i;if(!j.ok&&!k(j))return j;let l=i.ok?b.z.object({check_runs:g.z.array(b.z.object({status:c.z.string(),conclusion:c.z.string().nullable()}))}).safeParse(i.data):null,m=j.ok?b.z.object({state:c.z.string(),total_count:f.z.number()}).safeParse(j.data):null;return{ok:!0,data:{checkRuns:l?.success?l.data.check_runs.map(a=>({status:a.status,conclusion:a.conclusion})):null,combined:m?.success?{state:m.data.state,total:m.data.total_count}:null}}}async function N(a,e,f,g,h,i,j,k={}){if(!(0,r.M)(e)||!o(g,h)||!/^[0-9a-f]{40}$/.test(i)||!Number.isInteger(f)||f<=0)return u;let l=await s("PUT",`/repos/${(0,r.f)(e)}/pulls/${f}/merge`,a,{merge_method:"squash",sha:i,commit_title:`Watchbell: ${j.replace(/^Watch(?:bell|post):\s*/,"")}`.slice(0,250)},k);if(!l.ok)return 405===l.status?{ok:!1,kind:"format",status:405,error:"GitHub says the PR can't be merged now (405)."}:409===l.status?{ok:!1,kind:"format",status:409,error:"The PR's head moved since the checks were read (409)."}:l;let m=b.z.object({merged:d.z.boolean(),sha:c.z.string()}).safeParse(l.data);return m.success&&m.data.merged?{ok:!0,data:{sha:m.data.sha}}:t("the merge")}async function O(a,d,e,f={}){if(!(0,r.M)(d)||!Number.isInteger(e)||e<=0)return u;let h=await s("GET",`/repos/${(0,r.f)(d)}/pulls/${e}/files?per_page=100`,a,void 0,f);if(!h.ok)return h;let i=g.z.array(b.z.object({filename:c.z.string(),previous_filename:c.z.string().optional()})).safeParse(h.data);return i.success?{ok:!0,data:i.data.map(a=>({filename:a.filename,previous:a.previous_filename??null}))}:t("the PR's files")}let P=b.z.object({name:c.z.string().optional(),email:c.z.string().optional()}).nullable().optional();async function Q(a,d,e,f={}){if(!(0,r.M)(d)||!Number.isInteger(e)||e<=0)return u;let h=await s("GET",`/repos/${(0,r.f)(d)}/pulls/${e}/commits?per_page=100`,a,void 0,f);if(!h.ok)return h;let i=g.z.array(b.z.object({sha:c.z.string().regex(/^[0-9a-f]{40}$/),author:b.z.object({login:c.z.string()}).nullable().optional(),commit:b.z.object({message:c.z.string(),author:P})})).safeParse(h.data);return i.success?{ok:!0,data:i.data.map(a=>({sha:a.sha,login:a.author?.login??null,name:a.commit.author?.name??"",email:a.commit.author?.email??"",message:a.commit.message}))}:t("the PR's commits")}async function R(a,d,e,f={}){if(!(0,r.M)(d)||!/^[0-9a-f]{40}$/.test(e))return u;let h=await s("GET",`/repos/${(0,r.f)(d)}/commits/${e}`,a,void 0,f);if(!h.ok)return h;let i=b.z.object({files:g.z.array(b.z.object({filename:c.z.string(),previous_filename:c.z.string().optional()}))}).safeParse(h.data);return i.success?{ok:!0,data:i.data.files.flatMap(a=>[a.filename,...a.previous_filename?[a.previous_filename]:[]])}:t("the commit")}async function S(a,d={}){let e=await s("GET","/user",a,void 0,d);if(!e.ok)return e;let f=b.z.object({login:c.z.string().min(1)}).safeParse(e.data);return f.success?{ok:!0,data:f.data.login}:t("the token's user")}async function T(a,b,c,d={}){if(!/^[A-Za-z0-9-]{1,39}\/[A-Za-z0-9._-]{1,100}$/.test(b))return u;let e=await s("POST",`/repos/${b}/dispatches`,a,{event_type:"watchpost-lockfile",client_payload:c},d);return e.ok?{ok:!0,data:!0}:e}a.s(["M",0,w,"s",0,M,"h",0,R,"k",0,E,"y",0,I,"B",0,T,"$",0,C,"l",0,D,"E",0,A,"C",0,N,"x",0,H,"e",0,K,"P",0,Q,"O",0,O,"b",0,L,"D",0,F,"H",0,v,"z",0,S],812092)}]})();
46
+ `;a.s(["h",0,"deps.lockfileActions","w",0,6e5,"G",0,f,"g",0,e,"C",0,function(a){let b=a.lockfilePath??"package-lock.json";return!e(a.repo)||!c.test(a.branch)||!d.test(b)||b.includes("..")||!Number.isInteger(a.prNumber)||a.prNumber<1?null:{repo:a.repo,branch:a.branch,lockfile:b,pr:a.prNumber}},"i",0,function(a){let b=a&&"object"==typeof a&&!Array.isArray(a)?a.repo:null;return{repo:e(b)?b:null}}])},812092,117859,a=>{var b=a.i(26972),c=a.i(427221),d=a.i(83931),e=a.i(899370),f=a.i(811365),g=a.i(689963),h=a.i(149310),i=a.i(84877),j=a.i(679662),k=a.i(462820);let l=["dependencies","devDependencies","optionalDependencies"],m="watchpost/deps-",n=a=>"object"==typeof a&&null!==a&&!Array.isArray(a),o=(a,b)=>a.startsWith(m)&&/^watchpost\/deps-[0-9a-f]{8}$/.test(a)&&a!==b,p=a=>{let b=a.filter(a=>!a.companionOf);return b.length?b:a},q={npm:"npm install",pnpm:"pnpm install",yarn:"yarn install",bun:"bun install","package-json":"npm install"};a.s(["M",0,function(a,b){let c;try{c=JSON.parse(a)}catch{return null}if(!n(c))return null;for(let a of b){let b=c[a.group];if(!n(b)||b[a.package]!==a.from)return null;b[a.package]=a.to}let d=/^[{[]\r?\n([ \t]+)\S/.exec(a),e=d?d[1]:" ",f=a.includes("\r\n")?"\r\n":"\n",g=JSON.stringify(c,null,e);return"\r\n"===f&&(g=g.replace(/\n/g,"\r\n")),/\r?\n$/.test(a)?g+f:g},"U",0,function(a,b=null){let c=a.map(a=>`${a.package}@${a.to}`).sort().join(",");return`${m}${function(a){let b=0x811c9dc5;for(let c=0;c<a.length;c++)b^=a.charCodeAt(c),b=Math.imul(b,0x1000193)>>>0;return b.toString(16).padStart(8,"0")}(b?`${b}|${c}`:c)}`},"G",0,function(a){let b=p(a);return 1===b.length?`chore(deps): update ${b[0].package} to ${b[0].fixed} (security fix)`:`chore(deps): update ${b.length} packages for security fixes`},"c",0,o,"k",0,function(a,b){let c;try{c=JSON.parse(a)}catch{return null}if(!n(c))return null;let d=[];for(let a of b)if((0,j.L)(a.package)&&(0,j.C)(a.to))for(let b of l){let e=c[b];if(!n(e)||"string"!=typeof e[a.package])continue;let f=e[a.package],g=(0,j.Y)(f),h=function(a,b){let c=/^\s*(\^|~|>=|=)?\s*v?\d+(?:\.(?:\d+|x|\*))?(?:\.(?:\d+|x|\*))?(?:-[0-9A-Za-z.-]+)?\s*$/.exec(a);return c&&(0,j.C)(b)?`${c[1]??""}${b}`:null}(f,a.to);!g||!h||(0,i.f)(g,a.to)>=0||d.push({package:a.package,group:b,from:f,to:h,fixed:a.to,vulnIds:a.vulnIds,cves:a.cves,...a.companionOf?{companionOf:a.companionOf}:{}})}return d},"y",0,function(a,b,c=!1,d=null){let e=q[b??"npm"]??"npm install",f=`run \`${e}\`${d?` in \`${d}\``:""}`,g=a.filter(a=>!a.companionOf),h=a.filter(a=>a.companionOf),i=g.map(a=>{let b=[...a.cves,...a.vulnIds.filter(b=>!a.cves.includes(b))].slice(0,4).map(a=>`[${a}](https://osv.dev/vulnerability/${encodeURIComponent(a)})`).join(", ");return`| \`${a.package}\` | \`${a.from}\` | \`${a.to}\` | ${b||"-"} |`});return[c?"This PR was opened **automatically** by Watchbell (Automatic security fixes). Watchbell merges it itself when CI is green, the Vercel preview is READY and passes the smoke test, and auto-rollback is on; if anything fails, the PR stays open for you to check.":k.K.prApproved,"","These packages have known vulnerabilities (source: OSV.dev / GitHub Advisory) and a fixed version exists:","","| Package | Current version | New version | Advisory |","| --- | --- | --- | --- |",...i,"",...h.map(a=>`Updated to match ${a.companionOf} (no advisory of its own): \`${a.package}\` \`${a.from}\` → \`${a.to}\`.`),...h.length?[""]:[],"### Important: the lockfile is not updated","",c?`Watchbell only changes \`package.json\`; it can't regenerate the lockfile on the server. Vercel installs the new version at build time, so production is safe after the merge. Afterwards ${f} on the main branch and commit the lockfile to bring it up to date.`:`Watchbell only changes \`package.json\`; it can't regenerate the lockfile on the server. Before merging, check out this branch, ${f}, then commit the changed lockfile. Then make sure the build and tests still pass.`,"","Vulnerable packages that are only installed through other packages (transitive) are not changed here; check with `npm audit` after installing.","","_Nothing is pushed to the main branch: all changes are on this PR branch._"].join("\n")},"f",0,function(a,b=null){let c=p(a),d=b?` in ${b}`:"",e=1===c.length?`Watchbell: update ${c[0].package} to ${c[0].fixed}${d} (security fix)`:`Watchbell: update ${c.length} vulnerable packages${d} (${c.slice(0,2).map(a=>a.package).join(", ")}${c.length>2?", …":""})`;return e.length>200?`${e.slice(0,199)}…`:e}],117859);var r=a.i(760417);async function s(a,b,c,d,e,f=!1){let g,h=e.timeoutMs??8e3;try{g=await (e.fetch??fetch)(`https://api.github.com${b}`,{method:a,headers:{Authorization:`Bearer ${c}`,Accept:f?"application/vnd.github.raw+json":"application/vnd.github+json","X-GitHub-Api-Version":"2022-11-28","User-Agent":"Watchbell",...void 0!==d?{"Content-Type":"application/json"}:{}},body:void 0!==d?JSON.stringify(d):void 0,signal:AbortSignal.timeout(h),cache:"no-store",redirect:"error"})}catch(a){return{ok:!1,kind:"transient",error:a instanceof DOMException&&("TimeoutError"===a.name||"AbortError"===a.name)?`GitHub didn't answer within ${Math.round(h/1e3)} seconds.`:"Couldn't reach GitHub."}}let i=await g.text().catch(()=>"");if(f&&g.ok)return{ok:!0,status:g.status,data:i};let j=null;try{j=i?JSON.parse(i):null}catch{j=null}if(g.ok)return{ok:!0,status:g.status,data:j};let k=g.status;return 401===k?{ok:!1,kind:"auth",status:k,error:"GitHub rejected the PR-write token (401). It may have expired or been revoked."}:429===k||403===k&&"0"===g.headers.get("x-ratelimit-remaining")?{ok:!1,kind:"transient",status:k,error:"GitHub's rate limit is used up for now. Try again later."}:403===k?{ok:!1,kind:"scope",status:k,error:"The GitHub PR-write token can't do this (403). It needs Contents and Pull requests: Read and write on this repository."}:404===k?{ok:!1,kind:"missing",status:k,error:"The PR-write token doesn't see this repository (404). Give it access to the repository."}:409===k||422===k?{ok:!1,kind:"format",status:k,error:`GitHub refused the change (${k}).`}:{ok:!1,kind:"transient",status:k,error:`GitHub returned an error (${k}).`}}let t=a=>({ok:!1,kind:"format",error:`GitHub answered ${a} in a format the console doesn't recognise.`}),u={ok:!1,kind:"format",error:"That isn't a repository or branch the console may write."};async function v(a,e,f={}){if(!(0,r.M)(e))return u;let g=await s("GET",`/repos/${(0,r.f)(e)}`,a,void 0,f);if(!g.ok)return g;let h=b.z.object({default_branch:c.z.string(),permissions:b.z.object({push:d.z.boolean()}).partial().optional()}).safeParse(g.data);return h.success&&(0,r.c)(h.data.default_branch)?{ok:!0,data:{defaultBranch:h.data.default_branch,canPush:h.data.permissions?.push??null}}:t("the repository")}async function w(a,d,e,f={}){if(!(0,r.M)(d)||!(0,r.c)(e))return u;let g=await s("GET",`/repos/${(0,r.f)(d)}/git/ref/heads/${e.split("/").map(encodeURIComponent).join("/")}`,a,void 0,f);if(!g.ok)return"missing"===g.kind?{ok:!0,data:null}:g;let h=b.z.object({object:b.z.object({sha:c.z.string().regex(/^[0-9a-f]{40}$/)})}).safeParse(g.data);return h.success?{ok:!0,data:h.data.object.sha}:t("the branch")}let x=/^(?:[A-Za-z0-9._-]{1,100}\/){0,6}package\.json$/,y=a=>x.test(a)&&!a.split("/").some(a=>"."===a||".."===a),z=(a,b)=>`/repos/${(0,r.f)(a)}/contents/${b.split("/").map(encodeURIComponent).join("/")}`;async function A(a,d,f,g={},h="package.json"){if(!(0,r.M)(d)||!(0,r.c)(f)||!y(h))return u;let i=await s("GET",`${z(d,h)}?ref=${encodeURIComponent(f)}`,a,void 0,g);if(!i.ok)return"missing"===i.kind?{ok:!0,data:null}:i;let j=b.z.object({sha:c.z.string(),encoding:e.z.literal("base64"),content:c.z.string()}).safeParse(i.data);return j.success?{ok:!0,data:{sha:j.data.sha,text:Buffer.from(j.data.content.replace(/\s/g,""),"base64").toString("utf8")}}:t("package.json")}let B=/^(?:[A-Za-z0-9._-]{1,100}\/){0,6}(?:package-lock|npm-shrinkwrap)\.json$/,C=a=>B.test(a)&&!a.split("/").some(a=>"."===a||".."===a);async function D(a,b,c,d,e={}){if(!(0,r.M)(b)||!(0,r.c)(c)||!C(d))return u;let f=await s("GET",`${z(b,d)}?ref=${encodeURIComponent(c)}`,a,void 0,{timeoutMs:2e4,...e},!0);return f.ok?"string"==typeof f.data?{ok:!0,data:f.data}:t("the lockfile"):"missing"===f.kind?{ok:!0,data:null}:f}async function E(a,b,c,d,e,f={}){if(!(0,r.M)(b)||!o(c,e)||!/^[0-9a-f]{40}$/.test(d))return u;let g=await s("POST",`/repos/${(0,r.f)(b)}/git/refs`,a,{ref:`refs/heads/${c}`,sha:d},f);return g.ok?{ok:!0,data:!0}:g}async function F(a,b,c,d,e,f,g,h={},i="package.json"){if(!(0,r.M)(b)||!o(c,d)||!y(i))return u;let j=await s("PUT",z(b,i),a,{message:g,content:Buffer.from(e,"utf8").toString("base64"),sha:f,branch:c},h);return j.ok?{ok:!0,data:!0}:j}let G=b.z.object({number:f.z.number(),html_url:c.z.string().startsWith("https://github.com/")});async function H(a,b,c,d,e,f={}){if(!(0,r.M)(b)||!o(d,e))return u;let h=new URLSearchParams({state:"open",head:`${c}:${d}`,per_page:"1"}),i=await s("GET",`/repos/${(0,r.f)(b)}/pulls?${h}`,a,void 0,f);if(!i.ok)return i;let j=g.z.array(G).safeParse(i.data);if(!j.success)return t("the pull requests");let k=j.data[0];return{ok:!0,data:k?{number:k.number,url:k.html_url}:null}}async function I(a,b,c,d,e,f,g={},h={}){if(!(0,r.M)(b)||!o(c,d)||!(0,r.c)(d))return u;let i=await s("POST",`/repos/${(0,r.f)(b)}/pulls`,a,{title:e,head:c,base:d,body:f,maintainer_can_modify:!0,...h.draft?{draft:!0}:{}},g);if(!i.ok)return i;let j=G.safeParse(i.data);return j.success?{ok:!0,data:{number:j.data.number,url:j.data.html_url}}:t("the new pull request")}let J=g.z.array(b.z.object({number:f.z.number(),title:c.z.string(),head:b.z.object({ref:c.z.string(),sha:c.z.string(),repo:b.z.object({full_name:c.z.string()}).nullable()}),base:b.z.object({ref:c.z.string()})}));async function K(a,b,c={}){if(!(0,r.M)(b))return u;let d=await s("GET",`/repos/${(0,r.f)(b)}/pulls?state=open&per_page=100`,a,void 0,c);if(!d.ok)return d;let e=J.safeParse(d.data);return e.success?{ok:!0,data:e.data.filter(a=>/^watchpost\/deps-[0-9a-f]{8}$/.test(a.head.ref)&&a.head.repo?.full_name===b).map(a=>({number:a.number,branch:a.head.ref,title:a.title,headSha:a.head.sha,base:a.base.ref}))}:t("the pull requests")}async function L(a,e,f,g={}){if(!(0,r.M)(e)||!Number.isInteger(f)||f<=0)return u;let i=await s("GET",`/repos/${(0,r.f)(e)}/pulls/${f}`,a,void 0,g);if(!i.ok)return i;let j=b.z.object({state:h.z.enum(["open","closed"]),merged:d.z.boolean().optional(),mergeable:d.z.boolean().nullable().optional(),head:b.z.object({ref:c.z.string(),sha:c.z.string().regex(/^[0-9a-f]{40}$/)}),base:b.z.object({ref:c.z.string()})}).safeParse(i.data);return j.success?{ok:!0,data:{state:j.data.state,merged:!0===j.data.merged,mergeable:j.data.mergeable??null,headSha:j.data.head.sha,branch:j.data.head.ref,base:j.data.base.ref}}:t("the pull request")}async function M(a,d,e,h={}){if(!(0,r.M)(d)||!/^[0-9a-f]{40}$/.test(e))return u;let[i,j]=await Promise.all([s("GET",`/repos/${(0,r.f)(d)}/commits/${e}/check-runs?per_page=100`,a,void 0,h),s("GET",`/repos/${(0,r.f)(d)}/commits/${e}/status`,a,void 0,h)]),k=a=>!a.ok&&("scope"===a.kind||"missing"===a.kind);if(!i.ok&&!k(i))return i;if(!j.ok&&!k(j))return j;let l=i.ok?b.z.object({check_runs:g.z.array(b.z.object({status:c.z.string(),conclusion:c.z.string().nullable()}))}).safeParse(i.data):null,m=j.ok?b.z.object({state:c.z.string(),total_count:f.z.number()}).safeParse(j.data):null;return{ok:!0,data:{checkRuns:l?.success?l.data.check_runs.map(a=>({status:a.status,conclusion:a.conclusion})):null,combined:m?.success?{state:m.data.state,total:m.data.total_count}:null}}}async function N(a,e,f,g,h,i,j,k={}){if(!(0,r.M)(e)||!o(g,h)||!/^[0-9a-f]{40}$/.test(i)||!Number.isInteger(f)||f<=0)return u;let l=await s("PUT",`/repos/${(0,r.f)(e)}/pulls/${f}/merge`,a,{merge_method:"squash",sha:i,commit_title:`Watchbell: ${j.replace(/^Watch(?:bell|post):\s*/,"")}`.slice(0,250)},k);if(!l.ok)return 405===l.status?{ok:!1,kind:"format",status:405,error:"GitHub says the PR can't be merged now (405)."}:409===l.status?{ok:!1,kind:"format",status:409,error:"The PR's head moved since the checks were read (409)."}:l;let m=b.z.object({merged:d.z.boolean(),sha:c.z.string()}).safeParse(l.data);return m.success&&m.data.merged?{ok:!0,data:{sha:m.data.sha}}:t("the merge")}async function O(a,d,e,f={}){if(!(0,r.M)(d)||!Number.isInteger(e)||e<=0)return u;let h=await s("GET",`/repos/${(0,r.f)(d)}/pulls/${e}/files?per_page=100`,a,void 0,f);if(!h.ok)return h;let i=g.z.array(b.z.object({filename:c.z.string(),previous_filename:c.z.string().optional()})).safeParse(h.data);return i.success?{ok:!0,data:i.data.map(a=>({filename:a.filename,previous:a.previous_filename??null}))}:t("the PR's files")}let P=b.z.object({name:c.z.string().optional(),email:c.z.string().optional()}).nullable().optional();async function Q(a,d,e,f={}){if(!(0,r.M)(d)||!Number.isInteger(e)||e<=0)return u;let h=await s("GET",`/repos/${(0,r.f)(d)}/pulls/${e}/commits?per_page=100`,a,void 0,f);if(!h.ok)return h;let i=g.z.array(b.z.object({sha:c.z.string().regex(/^[0-9a-f]{40}$/),author:b.z.object({login:c.z.string()}).nullable().optional(),commit:b.z.object({message:c.z.string(),author:P})})).safeParse(h.data);return i.success?{ok:!0,data:i.data.map(a=>({sha:a.sha,login:a.author?.login??null,name:a.commit.author?.name??"",email:a.commit.author?.email??"",message:a.commit.message}))}:t("the PR's commits")}async function R(a,d,e,f={}){if(!(0,r.M)(d)||!/^[0-9a-f]{40}$/.test(e))return u;let h=await s("GET",`/repos/${(0,r.f)(d)}/commits/${e}`,a,void 0,f);if(!h.ok)return h;let i=b.z.object({files:g.z.array(b.z.object({filename:c.z.string(),previous_filename:c.z.string().optional()}))}).safeParse(h.data);return i.success?{ok:!0,data:i.data.files.flatMap(a=>[a.filename,...a.previous_filename?[a.previous_filename]:[]])}:t("the commit")}async function S(a,d={}){let e=await s("GET","/user",a,void 0,d);if(!e.ok)return e;let f=b.z.object({login:c.z.string().min(1)}).safeParse(e.data);return f.success?{ok:!0,data:f.data.login}:t("the token's user")}async function T(a,b,c,d={}){if(!/^[A-Za-z0-9-]{1,39}\/[A-Za-z0-9._-]{1,100}$/.test(b))return u;let e=await s("POST",`/repos/${b}/dispatches`,a,{event_type:"watchpost-lockfile",client_payload:c},d);return e.ok?{ok:!0,data:!0}:e}a.s(["M",0,w,"s",0,M,"h",0,R,"k",0,E,"y",0,I,"B",0,T,"$",0,C,"l",0,D,"E",0,A,"C",0,N,"x",0,H,"e",0,K,"P",0,Q,"O",0,O,"b",0,L,"D",0,F,"H",0,v,"z",0,S],812092)}]})();
47
47
 
48
48
  //# sourceMappingURL=src_lib_0f_4mvf4-xxst._.js.map
@@ -1,3 +1,3 @@
1
- (()=>{"use strict";module.exports=[445710,634418,a=>{var b=a.i(93321),c=a.i(548734),d=a.i(837137),e=a.i(306556);let f=(a,c)=>null===c?(0,b.M)(a):(0,b.u)(a,c);async function g(a,g,h){let i=(0,e.G)(a.failStreak,g);return(await (0,c.f)().update(d.monitors).set({state:i.state,failStreak:i.failStreak,lastCheckedAt:h,lastStatus:g.statusCode,lastLatencyMs:g.latencyMs,lastError:g.error,...i.state!==a.state?{stateSince:h}:{},updatedAt:h}).where((0,b.b)((0,b.u)(d.monitors.id,a.id),null===a.lastCheckedAt?(0,b.M)(d.monitors.lastCheckedAt):(0,b.u)(d.monitors.lastCheckedAt,a.lastCheckedAt),(0,b.u)(d.monitors.state,a.state),(0,b.u)(d.monitors.failStreak,a.failStreak),(0,b.u)(d.monitors.url,a.url),(0,b.u)(d.monitors.expectedStatus,a.expectedStatus),f(d.monitors.bodyContains,a.bodyContains),f(d.monitors.jsonPath,a.jsonPath),f(d.monitors.jsonEquals,a.jsonEquals))).returning({id:d.monitors.id})).length>0}a.s(["T",0,f,"j",0,g],445710);let h={heartbeats:60,checks:60,vercel:60,supabase:300,supabaseUsage:3600,neon:300,firebase:300,firebaseUsage:3600,extraDbs:3600,cloudflare:3600,domains:21600,tls:3600,rdap:3600,eol:86400,status:300,logs:300,pageviews:1800,security:21600,alerts:60,digest:300},i={supabase:0,digest:0,neon:60,firebase:120,status:180,logs:240,pageviews:1620,supabaseUsage:660,extraDbs:960,firebaseUsage:1320,cloudflare:1980,tls:2460,rdap:3120,domains:5280,eol:13560,security:16560};function j(a,b){let c=1e3*h[a],d=(i[a]??0)*1e3;return Math.floor((b.getTime()+5e3-d)/c)*c+d}let k={status:6e3,logs:9e3,pageviews:9e3,digest:6e3,eol:6e3,security:11e3},l={heartbeats:"hosting",checks:"hosting",vercel:"hosting",cloudflare:"hosting",domains:"hosting",tls:"hosting",rdap:"hosting",logs:"hosting",pageviews:"hosting",supabase:"database",supabaseUsage:"database",neon:"database",firebase:"database",firebaseUsage:"database",extraDbs:"database",eol:null,status:null,alerts:null,digest:null,security:null},m={security:["hosting","devops"]},n=["supabase"];function o(a,b){return a.filter(a=>{let c=m[a];if(c)return c.some(a=>!b.has(a));let d=l[a];return null===d||!b.has(d)||n.includes(a)})}a.s(["X",0,3e3,"p",0,2e4,"d",0,55e3,"u",0,["alerts","digest"],"O",0,5e4,"t",0,h,"P",0,function(a,b,c){let d=Math.min(a,b-c);return d<1e3?null:d},"S",0,function(a,b,c,d=new Set){let e=0;return o(Object.keys(h),d).filter(d=>{let f=a[d]?new Date(a[d]).getTime():null;if(h[d]<=60)return null===f||!!c||b.getTime()-f>=1e3*h[d]-1e4;let g=j(d,b);return(null===f||!(f>=g-5e3))&&(!(null===f||b.getTime()+5e3-g>=6e4)||!(e>=2)&&(e++,!0))})},"$",0,(a,b)=>{let c=l[a];return null!==c&&b.has(c)&&n.includes(a)},"B",0,function(a,b,c){return!c||!a||b.getTime()-a.getTime()>=5e4},"G",0,j,"z",0,function(a,b,c){return b-c>=(k[a]??0)},"_",0,function(a,b,c=new Set){if(!b||a.includes("security")||!o(["security"],c).length)return{due:[...a],early:!1};let d=Object.keys(h),e=a.findIndex(a=>d.indexOf(a)>d.indexOf("security")),f=[...a];return f.splice(e<0?f.length:e,0,"security"),{due:f,early:!0}}],634418)},895176,383487,a=>{var b=a.i(93321),c=a.i(530385),d=a.i(351674),e=a.i(548734),f=a.i(837137),g=a.i(903816),h=a.i(646324),i=a.i(33135),j=a.i(19809),k=a.i(445710),l=a.i(306556),m=a.i(634418),n=a.i(601219),o=a.i(436357),p=a.i(757902),q=a.i(519051),r=a.i(371289),s=a.i(201516),t=a.i(469762),u=a.i(968715),v=a.i(910697),w=a.i(767163);async function x(a,c=()=>!1,d=!1,g){let h=(await (0,e.f)().select({m:f.monitors}).from(f.monitors).innerJoin(f.resources,(0,b.u)(f.resources.id,f.monitors.resourceId)).where((0,b.b)((0,b.u)(f.monitors.kind,"heartbeat"),(0,b.u)(f.monitors.paused,!1),(0,b.u)(f.monitors.ownerPaused,!1),(0,b.u)(f.resources.monitored,!0),(0,b.M)(f.resources.goneAt),...g?[(0,b.u)(f.monitors.id,g)]:[]))).filter(({m:b})=>void 0!==g||(0,m.B)(b.lastCheckedAt,a,d)),i=[],j=[];for(let{m:d}of h){let h=d.periodS??3600,k=d.graceS??600,n=(0,w.C)({lastPingAt:d.lastPingAt,lastPingKind:d.lastPingKind,periodS:h,graceS:k,createdAt:d.createdAt},a);if("unknown"===n.state)continue;let o=n.state!==d.state;(await (0,e.f)().update(f.monitors).set({state:n.state,failStreak:n.failStreak,lastCheckedAt:a,lastError:"ok"===n.state?null:n.text,...o?{stateSince:a}:{},updatedAt:a}).where((0,b.b)((0,b.u)(f.monitors.id,d.id),(0,b.u)(f.monitors.state,d.state),(0,b.u)(f.monitors.ownerPaused,!1),(0,b.u)(f.monitors.paused,!1),null===d.lastPingAt?(0,b.M)(f.monitors.lastPingAt):(0,b.u)(f.monitors.lastPingAt,d.lastPingAt),null===d.periodS?(0,b.M)(f.monitors.periodS):(0,b.u)(f.monitors.periodS,d.periodS),null===d.graceS?(0,b.M)(f.monitors.graceS):(0,b.u)(f.monitors.graceS,d.graceS))).returning({id:f.monitors.id})).length&&((void 0===g||(0,m.B)(d.lastCheckedAt,a,!0))&&j.push({monitorId:d.id,at:a,ok:"err"!==n.state,statusCode:null,latencyMs:null,error:"ok"===n.state?null:n.text,inMaintenance:c(d.id,d.resourceId)}),i.push((0,l.F)({resourceId:d.resourceId,path:d.name??"heartbeat",prev:d.state,next:n.state,code:null,error:n.text,at:a,heartbeat:!0})))}return j.length&&await (0,e.f)().insert(f.checks).values(j),await (0,n.f)(i),j.length}a.i(312573),a.i(323878),a.s(["f",0,x],383487);var y=a.i(714530),z=a.i(513701);function A(a){let b="heartbeat"===a.kind;return{id:a.id,appId:a.resourceId,url:a.url,path:b?a.name??"heartbeat":(0,h.K)(a.url),state:a.state,lastStatus:a.lastStatus,lastLatencyMs:a.lastLatencyMs,failStreak:a.failStreak,paused:a.paused,ownerPaused:a.ownerPaused,lastCheckedAt:a.lastCheckedAt,expectedStatus:a.expectedStatus,timeoutMs:a.timeoutMs,intervalS:a.intervalS,bodyContains:a.bodyContains,jsonPath:a.jsonPath,jsonEquals:a.jsonEquals,lastError:a.lastError,kind:b?"heartbeat":"http",name:a.name??null,periodS:a.periodS??null,graceS:a.graceS??null,lastPingAt:a.lastPingAt??null,stateSince:a.stateSince??null}}async function B(a){let d=await (0,e.f)().select({m:f.monitors,appName:f.resources.name,goneAt:f.resources.goneAt,appMeta:f.resources.meta}).from(f.monitors).innerJoin(f.resources,(0,b.u)(f.resources.id,f.monitors.resourceId)).where((0,b.b)((0,b.u)(f.resources.kind,"app"),(0,b.u)(f.resources.monitored,!0))).orderBy(f.resources.name,(0,c.A)(f.monitors.kind),f.monitors.url).limit(v.O.monitors),g=await (0,z._)(d.map(a=>a.m.id),a),h=await C(d.map(a=>({id:a.m.id,kind:a.m.kind,url:a.m.url,appId:a.m.resourceId,appName:a.appName,appMeta:a.appMeta,lastError:a.m.lastError})));return d.map(({m:b,appName:c,goneAt:d})=>({...A(b),appName:c,appGone:null!==d,days:g.get(b.id),uptime30:(0,u.Y)((0,u.w)(g.get(b.id),a,u.I)),move:h.get(b.id)??null}))}async function C(a){if(!a.some(a=>null!==(0,o.Y)(a.appMeta)))return new Map;let c=await (0,e.f)().select({id:f.resources.id,name:f.resources.name,meta:f.resources.meta}).from(f.resources).where((0,b.b)((0,b.u)(f.resources.kind,"app"),(0,b.u)(f.resources.monitored,!0),(0,b.M)(f.resources.goneAt))).limit(500);return(0,o.P)(a,c)}let D={ok:!1,error:"That monitor no longer exists."},E={ok:!1,error:"This app already has a monitor for that address."},F={ok:!1,error:"That app isn't watched. Tick it in Connections → Sync first."},G="This app no longer exists at Vercel.",H={ok:!1,error:G},I="The app no longer exists at Vercel",J={ok:!0,message:"Already running."},K={ok:!1,error:"Someone else changed this monitor just now. Reopen it and try again."},L={ok:!1,error:"This app already has a heartbeat with that name."},M={ok:!1,error:"That monitor isn't a heartbeat."},N={ok:!1,error:"That monitor is a heartbeat. Edit it from its own menu."},O={ok:!1,error:"The console doesn't check a heartbeat. It waits for your job's ping."},P=a=>"heartbeat"===a.kind?a.name??"heartbeat":(0,t.F)(a.url);async function Q(){let a=await (0,e.f)().select({id:f.resources.id,name:f.resources.name}).from(f.resources).where((0,b.b)((0,b.u)(f.resources.kind,"app"),(0,b.u)(f.resources.monitored,!0),(0,b.M)(f.resources.goneAt))).orderBy(f.resources.name).limit(v.O.apps);if(!a.length)return[];let c=await (0,e.f)().select({appId:f.monitors.resourceId,url:f.monitors.url}).from(f.monitors).where((0,b.b)((0,b.y)(f.monitors.resourceId,a.map(a=>a.id)),(0,b.u)(f.monitors.kind,"http"))).orderBy(f.monitors.createdAt);return a.map(a=>({...a,domain:(0,t.m)(a.name,c.filter(b=>b.appId===a.id).map(a=>a.url))}))}async function R(a){return(0,e.f)().transaction(async b=>(await b.execute(d.B`select pg_advisory_xact_lock(hashtext('ops.monitors'))`),a(b)))}async function S(a=(0,e.f)()){let[c]=await a.select({n:d.B`count(*)::int`}).from(f.monitors).innerJoin(f.resources,(0,b.u)(f.resources.id,f.monitors.resourceId)).where((0,b.b)((0,b.u)(f.monitors.kind,"http"),(0,b.u)(f.monitors.paused,!1),(0,b.u)(f.monitors.ownerPaused,!1),(0,b.u)(f.resources.monitored,!0),(0,b.M)(f.resources.goneAt)));return c?.n??0}async function T(a=(0,e.f)()){let[c]=await a.select({n:d.B`count(*)::int`}).from(f.monitors).where((0,b.u)(f.monitors.kind,"heartbeat"));return c?.n??0}async function U(a){let[c]=await (0,e.f)().select({m:f.monitors,watched:f.resources.monitored,goneAt:f.resources.goneAt}).from(f.monitors).innerJoin(f.resources,(0,b.u)(f.resources.id,f.monitors.resourceId)).where((0,b.u)(f.monitors.id,a)).limit(1);return c??null}function V(a){let b=a?.code??a?.cause?.code;return"string"==typeof b?b:void 0}async function W(a,c){return R(async d=>{let[e]=await d.select({id:f.resources.id,goneAt:f.resources.goneAt}).from(f.resources).where((0,b.b)((0,b.u)(f.resources.id,a),(0,b.u)(f.resources.kind,"app"),(0,b.u)(f.resources.monitored,!0))).limit(1);if(!e)return F;if(e.goneAt)return H;let g=(0,s.g)(await S(d));return g?{ok:!1,error:g}:(await d.insert(f.monitors).values({resourceId:a,kind:"http",url:c.url,expectedStatus:c.expectedStatus,timeoutMs:c.timeoutMs,bodyContains:c.bodyContains,jsonPath:c.jsonPath,jsonEquals:c.jsonEquals}).onConflictDoNothing().returning({id:f.monitors.id})).length?{ok:!0,message:`Monitoring ${(0,t.F)(c.url)}. First result within a minute.`,audit:{message:`Monitor added: ${(0,t.F)(c.url)}`,resourceId:a}}:E})}async function X(a,c){let{token:d,hash:e}=(0,p.P)();return R(async g=>{let[h]=await g.select({id:f.resources.id,goneAt:f.resources.goneAt}).from(f.resources).where((0,b.b)((0,b.u)(f.resources.id,a),(0,b.u)(f.resources.kind,"app"),(0,b.u)(f.resources.monitored,!0))).limit(1);if(!h)return F;if(h.goneAt)return H;let i=(0,s.f)(await T(g));return i?{ok:!1,error:i}:(await g.insert(f.monitors).values({resourceId:a,kind:"heartbeat",url:(0,p.B)(c.name),name:c.name,tokenHash:e,periodS:c.periodS,graceS:c.graceS,state:"unknown"}).onConflictDoNothing().returning({id:f.monitors.id})).length?{ok:!0,message:`Added ${c.name}. It waits for the first ping.`,token:d,audit:{message:`Heartbeat added: ${c.name}`,resourceId:a}}:L})}async function Y(a,c){let d,g=await U(a);if(!g)return D;if("heartbeat"!==g.m.kind)return M;if(g.goneAt)return H;if(!g.watched)return F;let h=(0,p.B)(c.name),[i]=await (0,e.f)().select({id:f.monitors.id}).from(f.monitors).where((0,b.b)((0,b.u)(f.monitors.resourceId,g.m.resourceId),(0,b.u)(f.monitors.url,h),(0,b.c)(f.monitors.id,a))).limit(1);if(i)return L;try{d=await (0,e.f)().update(f.monitors).set({name:c.name,url:h,periodS:c.periodS,graceS:c.graceS,updatedAt:new Date}).where((0,b.b)((0,b.u)(f.monitors.id,a),(0,b.u)(f.monitors.kind,"heartbeat"))).returning({id:f.monitors.id})}catch(a){if("23505"===V(a))return L;throw a}if(!d.length)return D;let j=g.m.name!==c.name;return{ok:!0,message:`Saved ${c.name}.`,audit:{message:`Heartbeat edited: ${c.name}`,...j&&g.m.name?{detail:`was ${g.m.name}`}:{},resourceId:g.m.resourceId}}}async function Z(a){let c=await U(a);if(!c)return D;if("heartbeat"!==c.m.kind)return M;let{token:d,hash:g}=(0,p.P)();if(!(await (0,e.f)().update(f.monitors).set({tokenHash:g,updatedAt:new Date}).where((0,b.b)((0,b.u)(f.monitors.id,a),(0,b.u)(f.monitors.kind,"heartbeat"))).returning({id:f.monitors.id})).length)return D;let h=P(c.m);return{ok:!0,message:`New ping URL for ${h}. The old one no longer works.`,token:d,audit:{message:`Ping URL replaced: ${h}`,resourceId:c.m.resourceId}}}async function $(a,c,d=new Date){let g=await U(a);if(!g)return D;if("heartbeat"!==g.m.kind)return M;if(!(await (0,e.f)().update(f.monitors).set({lastPingAt:d,lastPingKind:c,updatedAt:d}).where((0,b.b)((0,b.u)(f.monitors.id,a),(0,b.u)(f.monitors.kind,"heartbeat"))).returning({id:f.monitors.id})).length)return D;let h=P(g.m),i=`Test ping (${c}) recorded for ${h}`,j=!1;try{let b=await (0,y.w)();await x(new Date,(a,c)=>null!==(0,q.x)(b,{monitorId:a,appId:c},new Date),!0,a),j=!0}catch{console.warn("test ping: recompute failed")}return{ok:!0,message:j?`${i}.`:`${i}. The state updates within a minute.`,audit:{message:i,detail:"Test",resourceId:g.m.resourceId}}}async function _(a,c){let d,g=await U(a);if(!g)return D;if("heartbeat"===g.m.kind)return N;if(g.goneAt)return H;if(!g.watched)return F;let[h]=await (0,e.f)().select({id:f.monitors.id}).from(f.monitors).where((0,b.b)((0,b.u)(f.monitors.resourceId,g.m.resourceId),(0,b.u)(f.monitors.url,c.url),(0,b.c)(f.monitors.id,a))).limit(1);if(h)return E;let i=new Date,j={url:g.m.url,expectedStatus:g.m.expectedStatus,timeoutMs:g.m.timeoutMs,bodyContains:g.m.bodyContains,jsonPath:g.m.jsonPath,jsonEquals:g.m.jsonEquals},l=(0,s.V)(j,c)?{state:"unknown",failStreak:0,stateSince:i,lastCheckedAt:null,lastStatus:null,lastLatencyMs:null,lastError:null}:{};try{d=await (0,e.f)().update(f.monitors).set({url:c.url,expectedStatus:c.expectedStatus,timeoutMs:c.timeoutMs,bodyContains:c.bodyContains,jsonPath:c.jsonPath,jsonEquals:c.jsonEquals,...l,updatedAt:i}).where((0,b.b)((0,b.u)(f.monitors.id,a),(0,b.u)(f.monitors.url,g.m.url),(0,b.u)(f.monitors.expectedStatus,g.m.expectedStatus),(0,k.T)(f.monitors.bodyContains,g.m.bodyContains),(0,k.T)(f.monitors.jsonPath,g.m.jsonPath),(0,k.T)(f.monitors.jsonEquals,g.m.jsonEquals))).returning({id:f.monitors.id})}catch(a){if("23505"===V(a))return E;throw a}if(!d.length)return await U(a)?K:D;let m=j.url!==c.url;return{ok:!0,message:g.m.ownerPaused?`Saved ${(0,t.F)(c.url)}. It's checked again once you resume it.`:`Checking ${(0,t.F)(c.url)} from the next run.`,audit:{message:`Monitor edited: ${(0,t.F)(c.url)}`,...m?{detail:`was ${(0,t.F)(j.url)}`}:{},resourceId:g.m.resourceId}}}async function aa(a,c){let d=await U(a);if(!d)return D;let g=new Date,h=P(d.m);if(c)return await (0,e.f)().update(f.monitors).set({ownerPaused:!0,updatedAt:g}).where((0,b.u)(f.monitors.id,a)),{ok:!0,message:`Paused ${h}. Its history is kept.`,audit:{message:`Monitor paused: ${h}`,resourceId:d.m.resourceId}};if(!d.m.ownerPaused)return J;let i=d.watched&&!d.goneAt;return R(async c=>{let e="heartbeat"===d.m.kind?null:(0,s.g)(await S(c),+!!i);return e?{ok:!1,error:e}:(await c.update(f.monitors).set({ownerPaused:!1,...i?{paused:!1}:{},state:"unknown",failStreak:0,stateSince:g,updatedAt:g}).where((0,b.b)((0,b.u)(f.monitors.id,a),(0,b.u)(f.monitors.ownerPaused,!0))).returning({id:f.monitors.id})).length?{ok:!0,message:i?`Resumed ${h}. First result within a minute.`:d.goneAt?`Resumed ${h}. ${I}, so it won't be checked.`:`Resumed ${h}. It's checked again once its app is watched.`,audit:{message:`Monitor resumed: ${h}`,resourceId:d.m.resourceId}}:(await c.select({id:f.monitors.id}).from(f.monitors).where((0,b.u)(f.monitors.id,a)).limit(1)).length?J:D})}async function ab(a,c){let d=await (0,e.f)().select({paused:f.monitors.paused,ownerPaused:f.monitors.ownerPaused,kind:f.monitors.kind}).from(f.monitors).where((0,b.u)(f.monitors.resourceId,a));if(!d.length)return{ok:!1,error:"This app has no monitors."};let g=new Date;if(c)return await (0,e.f)().update(f.monitors).set({ownerPaused:!0,updatedAt:g}).where((0,b.u)(f.monitors.resourceId,a)),{ok:!0,message:`Paused ${d.length} monitor${1===d.length?"":"s"}. Their history is kept.`,audit:{message:`Monitors paused: ${d.length}`,resourceId:a}};let[h]=await (0,e.f)().select({watched:f.resources.monitored,goneAt:f.resources.goneAt}).from(f.resources).where((0,b.u)(f.resources.id,a)).limit(1),i=!!h&&h.watched&&!h.goneAt,j=d.filter(a=>a.ownerPaused).length,k=1===j?"":"s",l=d.filter(a=>a.ownerPaused&&"heartbeat"!==a.kind).length;return R(async c=>{let d=(0,s.g)(await S(c),i?l:0);return d?{ok:!1,error:d}:(await c.update(f.monitors).set({ownerPaused:!1,...i?{paused:!1}:{},state:"unknown",failStreak:0,stateSince:g,updatedAt:g}).where((0,b.b)((0,b.u)(f.monitors.resourceId,a),(0,b.u)(f.monitors.ownerPaused,!0))),{ok:!0,message:i?`Resumed ${j} monitor${k}. First results within a minute.`:h?.goneAt?`Resumed ${j} monitor${k}. ${I}, so they won't be checked.`:`Resumed ${j} monitor${k}. They're checked again once the app is watched.`,audit:{message:`Monitors resumed: ${j}`,resourceId:a}})})}async function ac(a){let c=await U(a);if(!c)return D;let e=c.watched&&!c.goneAt&&"heartbeat"!==c.m.kind,g=d.B`(select count(*) from ${f.monitors} where ${f.monitors.resourceId} = ${c.m.resourceId}) > 1`,h=await R(async c=>(await c.delete(f.monitors).where((0,b.b)((0,b.u)(f.monitors.id,a),e?g:void 0)).returning({id:f.monitors.id})).length?"deleted":e&&(await c.select({id:f.monitors.id}).from(f.monitors).where((0,b.u)(f.monitors.id,a)).limit(1)).length?"last":"gone");if("gone"===h)return D;if("last"===h)return{ok:!1,error:(0,s.p)({appWatched:!0,monitorsOfApp:1})??"That monitor no longer exists."};let i=P(c.m);return{ok:!0,message:`Deleted ${i}.`,audit:{message:`Monitor deleted: ${i}`,resourceId:c.m.resourceId}}}function ad(a,b){return!a.lastCheckedAt||b.getTime()-a.lastCheckedAt.getTime()>=m.O?null:{ok:!0,message:(0,s.T)({...a,lastCheckedAt:a.lastCheckedAt},b),passed:a.lastStatus===a.expectedStatus&&!a.lastError}}async function ae(a){let b=await U(a);if(!b)return D;if("heartbeat"===b.m.kind)return O;let c=b.goneAt?G:b.watched?(0,s.i)(b.m)?null:"Paused monitors aren't checked. Resume it first.":"Its app isn't watched. Tick it in Connections → Sync first.";if(c)return{ok:!1,error:c};let d=ad(b.m,new Date);if(d)return d;let m=await (0,y.w)(),o=(0,r.W)()?(0,j.M)(b.m.expectedStatus):await (0,i.b)(b.m.url,{expectedStatus:b.m.expectedStatus,timeoutMs:b.m.timeoutMs,body:(0,g.C)(b.m)}),p=new Date;if(!await (0,k.j)(b.m,o,p)){let b=await U(a);return b?ad(b.m,new Date)??{ok:!1,error:"The monitor changed while it was being checked. Try again."}:D}let u=null!==(0,q.x)(m,{monitorId:a,appId:b.m.resourceId},p);await (0,e.f)().insert(f.checks).values({monitorId:a,at:p,ok:o.ok,statusCode:o.statusCode,latencyMs:o.latencyMs,error:o.error,inMaintenance:u});let v=(0,l.G)(b.m.failStreak,o),w=(0,l.F)({resourceId:b.m.resourceId,path:(0,h.K)(b.m.url),prev:b.m.state,next:v.state,code:o.statusCode,error:o.error,at:p});return await (0,n.f)([w]),{ok:!0,message:(0,s.X)(o),passed:o.ok,audit:{message:`Check now: ${(0,t.F)(b.m.url)}`,resourceId:b.m.resourceId}}}a.s(["Q",0,S,"b",0,Q,"X",0,ae,"_",0,X,"$",0,W,"j",0,ac,"d",0,B,"J",0,C,"p",0,$,"R",0,Z,"f",0,ab,"C",0,aa,"M",0,A,"G",0,Y,"q",0,_,"e",0,R],895176)},757902,a=>{var b=a.i(666680);function c(a){return(0,b.createHash)("sha256").update(a).digest("hex")}a.s(["B",0,function(a){let c=a.normalize("NFKD").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,60);return`heartbeat:${c||(0,b.createHash)("sha256").update(a.trim().toLowerCase()).digest("hex").slice(0,16)}`},"P",0,function(){let a=`hb_${(0,b.randomBytes)(16).toString("hex")}`;return{token:a,hash:c(a)}},"C",0,c])}]})();
1
+ (()=>{"use strict";module.exports=[445710,634418,a=>{var b=a.i(93321),c=a.i(548734),d=a.i(837137),e=a.i(306556);let f=(a,c)=>null===c?(0,b.M)(a):(0,b.u)(a,c);async function g(a,g,h){let i=(0,e.G)(a.failStreak,g);return(await (0,c.f)().update(d.monitors).set({state:i.state,failStreak:i.failStreak,lastCheckedAt:h,lastStatus:g.statusCode,lastLatencyMs:g.latencyMs,lastError:g.error,...i.state!==a.state?{stateSince:h}:{},updatedAt:h}).where((0,b.b)((0,b.u)(d.monitors.id,a.id),null===a.lastCheckedAt?(0,b.M)(d.monitors.lastCheckedAt):(0,b.u)(d.monitors.lastCheckedAt,a.lastCheckedAt),(0,b.u)(d.monitors.state,a.state),(0,b.u)(d.monitors.failStreak,a.failStreak),(0,b.u)(d.monitors.url,a.url),(0,b.u)(d.monitors.expectedStatus,a.expectedStatus),f(d.monitors.bodyContains,a.bodyContains),f(d.monitors.jsonPath,a.jsonPath),f(d.monitors.jsonEquals,a.jsonEquals))).returning({id:d.monitors.id})).length>0}a.s(["T",0,f,"j",0,g],445710);let h={heartbeats:60,checks:60,vercel:60,supabase:300,supabaseUsage:3600,neon:300,firebase:300,firebaseUsage:3600,extraDbs:3600,cloudflare:3600,domains:21600,tls:3600,rdap:3600,eol:86400,status:300,logs:300,pageviews:1800,node:43200,security:21600,alerts:60,digest:300},i={supabase:0,digest:0,neon:60,firebase:120,status:180,logs:240,pageviews:1620,supabaseUsage:660,extraDbs:960,firebaseUsage:1320,cloudflare:1980,tls:2460,rdap:3120,domains:5280,eol:13560,node:13380,security:16560};function j(a,b){let c=1e3*h[a],d=(i[a]??0)*1e3;return Math.floor((b.getTime()+5e3-d)/c)*c+d}let k={status:6e3,logs:9e3,pageviews:9e3,digest:6e3,eol:6e3,node:6e3,security:11e3},l={heartbeats:"hosting",checks:"hosting",vercel:"hosting",cloudflare:"hosting",domains:"hosting",tls:"hosting",rdap:"hosting",logs:"hosting",pageviews:"hosting",supabase:"database",supabaseUsage:"database",neon:"database",firebase:"database",firebaseUsage:"database",extraDbs:"database",eol:null,node:null,status:null,alerts:null,digest:null,security:null},m={security:["hosting","devops"]},n=["supabase"];function o(a,b){return a.filter(a=>{let c=m[a];if(c)return c.some(a=>!b.has(a));let d=l[a];return null===d||!b.has(d)||n.includes(a)})}a.s(["X",0,3e3,"p",0,2e4,"d",0,55e3,"u",0,["alerts","digest"],"O",0,5e4,"t",0,h,"P",0,function(a,b,c){let d=Math.min(a,b-c);return d<1e3?null:d},"S",0,function(a,b,c,d=new Set){let e=0;return o(Object.keys(h),d).filter(d=>{let f=a[d]?new Date(a[d]).getTime():null;if(h[d]<=60)return null===f||!!c||b.getTime()-f>=1e3*h[d]-1e4;let g=j(d,b);return(null===f||!(f>=g-5e3))&&(!(null===f||b.getTime()+5e3-g>=6e4)||!(e>=2)&&(e++,!0))})},"$",0,(a,b)=>{let c=l[a];return null!==c&&b.has(c)&&n.includes(a)},"B",0,function(a,b,c){return!c||!a||b.getTime()-a.getTime()>=5e4},"G",0,j,"z",0,function(a,b,c){return b-c>=(k[a]??0)},"_",0,function(a,b,c=new Set){if(!b||a.includes("security")||!o(["security"],c).length)return{due:[...a],early:!1};let d=Object.keys(h),e=a.findIndex(a=>d.indexOf(a)>d.indexOf("security")),f=[...a];return f.splice(e<0?f.length:e,0,"security"),{due:f,early:!0}}],634418)},895176,383487,a=>{var b=a.i(93321),c=a.i(530385),d=a.i(351674),e=a.i(548734),f=a.i(837137),g=a.i(903816),h=a.i(646324),i=a.i(33135),j=a.i(19809),k=a.i(445710),l=a.i(306556),m=a.i(634418),n=a.i(601219),o=a.i(436357),p=a.i(757902),q=a.i(519051),r=a.i(371289),s=a.i(201516),t=a.i(469762),u=a.i(968715),v=a.i(910697),w=a.i(767163);async function x(a,c=()=>!1,d=!1,g){let h=(await (0,e.f)().select({m:f.monitors}).from(f.monitors).innerJoin(f.resources,(0,b.u)(f.resources.id,f.monitors.resourceId)).where((0,b.b)((0,b.u)(f.monitors.kind,"heartbeat"),(0,b.u)(f.monitors.paused,!1),(0,b.u)(f.monitors.ownerPaused,!1),(0,b.u)(f.resources.monitored,!0),(0,b.M)(f.resources.goneAt),...g?[(0,b.u)(f.monitors.id,g)]:[]))).filter(({m:b})=>void 0!==g||(0,m.B)(b.lastCheckedAt,a,d)),i=[],j=[];for(let{m:d}of h){let h=d.periodS??3600,k=d.graceS??600,n=(0,w.C)({lastPingAt:d.lastPingAt,lastPingKind:d.lastPingKind,periodS:h,graceS:k,createdAt:d.createdAt},a);if("unknown"===n.state)continue;let o=n.state!==d.state;(await (0,e.f)().update(f.monitors).set({state:n.state,failStreak:n.failStreak,lastCheckedAt:a,lastError:"ok"===n.state?null:n.text,...o?{stateSince:a}:{},updatedAt:a}).where((0,b.b)((0,b.u)(f.monitors.id,d.id),(0,b.u)(f.monitors.state,d.state),(0,b.u)(f.monitors.ownerPaused,!1),(0,b.u)(f.monitors.paused,!1),null===d.lastPingAt?(0,b.M)(f.monitors.lastPingAt):(0,b.u)(f.monitors.lastPingAt,d.lastPingAt),null===d.periodS?(0,b.M)(f.monitors.periodS):(0,b.u)(f.monitors.periodS,d.periodS),null===d.graceS?(0,b.M)(f.monitors.graceS):(0,b.u)(f.monitors.graceS,d.graceS))).returning({id:f.monitors.id})).length&&((void 0===g||(0,m.B)(d.lastCheckedAt,a,!0))&&j.push({monitorId:d.id,at:a,ok:"err"!==n.state,statusCode:null,latencyMs:null,error:"ok"===n.state?null:n.text,inMaintenance:c(d.id,d.resourceId)}),i.push((0,l.F)({resourceId:d.resourceId,path:d.name??"heartbeat",prev:d.state,next:n.state,code:null,error:n.text,at:a,heartbeat:!0})))}return j.length&&await (0,e.f)().insert(f.checks).values(j),await (0,n.f)(i),j.length}a.i(312573),a.i(323878),a.s(["f",0,x],383487);var y=a.i(714530),z=a.i(513701);function A(a){let b="heartbeat"===a.kind;return{id:a.id,appId:a.resourceId,url:a.url,path:b?a.name??"heartbeat":(0,h.K)(a.url),state:a.state,lastStatus:a.lastStatus,lastLatencyMs:a.lastLatencyMs,failStreak:a.failStreak,paused:a.paused,ownerPaused:a.ownerPaused,lastCheckedAt:a.lastCheckedAt,expectedStatus:a.expectedStatus,timeoutMs:a.timeoutMs,intervalS:a.intervalS,bodyContains:a.bodyContains,jsonPath:a.jsonPath,jsonEquals:a.jsonEquals,lastError:a.lastError,kind:b?"heartbeat":"http",name:a.name??null,periodS:a.periodS??null,graceS:a.graceS??null,lastPingAt:a.lastPingAt??null,stateSince:a.stateSince??null}}async function B(a){let d=await (0,e.f)().select({m:f.monitors,appName:f.resources.name,goneAt:f.resources.goneAt,appMeta:f.resources.meta}).from(f.monitors).innerJoin(f.resources,(0,b.u)(f.resources.id,f.monitors.resourceId)).where((0,b.b)((0,b.u)(f.resources.kind,"app"),(0,b.u)(f.resources.monitored,!0))).orderBy(f.resources.name,(0,c.A)(f.monitors.kind),f.monitors.url).limit(v.O.monitors),g=await (0,z._)(d.map(a=>a.m.id),a),h=await C(d.map(a=>({id:a.m.id,kind:a.m.kind,url:a.m.url,appId:a.m.resourceId,appName:a.appName,appMeta:a.appMeta,lastError:a.m.lastError})));return d.map(({m:b,appName:c,goneAt:d})=>({...A(b),appName:c,appGone:null!==d,days:g.get(b.id),uptime30:(0,u.Y)((0,u.w)(g.get(b.id),a,u.I)),move:h.get(b.id)??null}))}async function C(a){if(!a.some(a=>null!==(0,o.Y)(a.appMeta)))return new Map;let c=await (0,e.f)().select({id:f.resources.id,name:f.resources.name,meta:f.resources.meta}).from(f.resources).where((0,b.b)((0,b.u)(f.resources.kind,"app"),(0,b.u)(f.resources.monitored,!0),(0,b.M)(f.resources.goneAt))).limit(500);return(0,o.P)(a,c)}let D={ok:!1,error:"That monitor no longer exists."},E={ok:!1,error:"This app already has a monitor for that address."},F={ok:!1,error:"That app isn't watched. Tick it in Connections → Sync first."},G="This app no longer exists at Vercel.",H={ok:!1,error:G},I="The app no longer exists at Vercel",J={ok:!0,message:"Already running."},K={ok:!1,error:"Someone else changed this monitor just now. Reopen it and try again."},L={ok:!1,error:"This app already has a heartbeat with that name."},M={ok:!1,error:"That monitor isn't a heartbeat."},N={ok:!1,error:"That monitor is a heartbeat. Edit it from its own menu."},O={ok:!1,error:"The console doesn't check a heartbeat. It waits for your job's ping."},P=a=>"heartbeat"===a.kind?a.name??"heartbeat":(0,t.F)(a.url);async function Q(){let a=await (0,e.f)().select({id:f.resources.id,name:f.resources.name}).from(f.resources).where((0,b.b)((0,b.u)(f.resources.kind,"app"),(0,b.u)(f.resources.monitored,!0),(0,b.M)(f.resources.goneAt))).orderBy(f.resources.name).limit(v.O.apps);if(!a.length)return[];let c=await (0,e.f)().select({appId:f.monitors.resourceId,url:f.monitors.url}).from(f.monitors).where((0,b.b)((0,b.y)(f.monitors.resourceId,a.map(a=>a.id)),(0,b.u)(f.monitors.kind,"http"))).orderBy(f.monitors.createdAt);return a.map(a=>({...a,domain:(0,t.m)(a.name,c.filter(b=>b.appId===a.id).map(a=>a.url))}))}async function R(a){return(0,e.f)().transaction(async b=>(await b.execute(d.B`select pg_advisory_xact_lock(hashtext('ops.monitors'))`),a(b)))}async function S(a=(0,e.f)()){let[c]=await a.select({n:d.B`count(*)::int`}).from(f.monitors).innerJoin(f.resources,(0,b.u)(f.resources.id,f.monitors.resourceId)).where((0,b.b)((0,b.u)(f.monitors.kind,"http"),(0,b.u)(f.monitors.paused,!1),(0,b.u)(f.monitors.ownerPaused,!1),(0,b.u)(f.resources.monitored,!0),(0,b.M)(f.resources.goneAt)));return c?.n??0}async function T(a=(0,e.f)()){let[c]=await a.select({n:d.B`count(*)::int`}).from(f.monitors).where((0,b.u)(f.monitors.kind,"heartbeat"));return c?.n??0}async function U(a){let[c]=await (0,e.f)().select({m:f.monitors,watched:f.resources.monitored,goneAt:f.resources.goneAt}).from(f.monitors).innerJoin(f.resources,(0,b.u)(f.resources.id,f.monitors.resourceId)).where((0,b.u)(f.monitors.id,a)).limit(1);return c??null}function V(a){let b=a?.code??a?.cause?.code;return"string"==typeof b?b:void 0}async function W(a,c){return R(async d=>{let[e]=await d.select({id:f.resources.id,goneAt:f.resources.goneAt}).from(f.resources).where((0,b.b)((0,b.u)(f.resources.id,a),(0,b.u)(f.resources.kind,"app"),(0,b.u)(f.resources.monitored,!0))).limit(1);if(!e)return F;if(e.goneAt)return H;let g=(0,s.g)(await S(d));return g?{ok:!1,error:g}:(await d.insert(f.monitors).values({resourceId:a,kind:"http",url:c.url,expectedStatus:c.expectedStatus,timeoutMs:c.timeoutMs,bodyContains:c.bodyContains,jsonPath:c.jsonPath,jsonEquals:c.jsonEquals}).onConflictDoNothing().returning({id:f.monitors.id})).length?{ok:!0,message:`Monitoring ${(0,t.F)(c.url)}. First result within a minute.`,audit:{message:`Monitor added: ${(0,t.F)(c.url)}`,resourceId:a}}:E})}async function X(a,c){let{token:d,hash:e}=(0,p.P)();return R(async g=>{let[h]=await g.select({id:f.resources.id,goneAt:f.resources.goneAt}).from(f.resources).where((0,b.b)((0,b.u)(f.resources.id,a),(0,b.u)(f.resources.kind,"app"),(0,b.u)(f.resources.monitored,!0))).limit(1);if(!h)return F;if(h.goneAt)return H;let i=(0,s.f)(await T(g));return i?{ok:!1,error:i}:(await g.insert(f.monitors).values({resourceId:a,kind:"heartbeat",url:(0,p.B)(c.name),name:c.name,tokenHash:e,periodS:c.periodS,graceS:c.graceS,state:"unknown"}).onConflictDoNothing().returning({id:f.monitors.id})).length?{ok:!0,message:`Added ${c.name}. It waits for the first ping.`,token:d,audit:{message:`Heartbeat added: ${c.name}`,resourceId:a}}:L})}async function Y(a,c){let d,g=await U(a);if(!g)return D;if("heartbeat"!==g.m.kind)return M;if(g.goneAt)return H;if(!g.watched)return F;let h=(0,p.B)(c.name),[i]=await (0,e.f)().select({id:f.monitors.id}).from(f.monitors).where((0,b.b)((0,b.u)(f.monitors.resourceId,g.m.resourceId),(0,b.u)(f.monitors.url,h),(0,b.c)(f.monitors.id,a))).limit(1);if(i)return L;try{d=await (0,e.f)().update(f.monitors).set({name:c.name,url:h,periodS:c.periodS,graceS:c.graceS,updatedAt:new Date}).where((0,b.b)((0,b.u)(f.monitors.id,a),(0,b.u)(f.monitors.kind,"heartbeat"))).returning({id:f.monitors.id})}catch(a){if("23505"===V(a))return L;throw a}if(!d.length)return D;let j=g.m.name!==c.name;return{ok:!0,message:`Saved ${c.name}.`,audit:{message:`Heartbeat edited: ${c.name}`,...j&&g.m.name?{detail:`was ${g.m.name}`}:{},resourceId:g.m.resourceId}}}async function Z(a){let c=await U(a);if(!c)return D;if("heartbeat"!==c.m.kind)return M;let{token:d,hash:g}=(0,p.P)();if(!(await (0,e.f)().update(f.monitors).set({tokenHash:g,updatedAt:new Date}).where((0,b.b)((0,b.u)(f.monitors.id,a),(0,b.u)(f.monitors.kind,"heartbeat"))).returning({id:f.monitors.id})).length)return D;let h=P(c.m);return{ok:!0,message:`New ping URL for ${h}. The old one no longer works.`,token:d,audit:{message:`Ping URL replaced: ${h}`,resourceId:c.m.resourceId}}}async function $(a,c,d=new Date){let g=await U(a);if(!g)return D;if("heartbeat"!==g.m.kind)return M;if(!(await (0,e.f)().update(f.monitors).set({lastPingAt:d,lastPingKind:c,updatedAt:d}).where((0,b.b)((0,b.u)(f.monitors.id,a),(0,b.u)(f.monitors.kind,"heartbeat"))).returning({id:f.monitors.id})).length)return D;let h=P(g.m),i=`Test ping (${c}) recorded for ${h}`,j=!1;try{let b=await (0,y.w)();await x(new Date,(a,c)=>null!==(0,q.x)(b,{monitorId:a,appId:c},new Date),!0,a),j=!0}catch{console.warn("test ping: recompute failed")}return{ok:!0,message:j?`${i}.`:`${i}. The state updates within a minute.`,audit:{message:i,detail:"Test",resourceId:g.m.resourceId}}}async function _(a,c){let d,g=await U(a);if(!g)return D;if("heartbeat"===g.m.kind)return N;if(g.goneAt)return H;if(!g.watched)return F;let[h]=await (0,e.f)().select({id:f.monitors.id}).from(f.monitors).where((0,b.b)((0,b.u)(f.monitors.resourceId,g.m.resourceId),(0,b.u)(f.monitors.url,c.url),(0,b.c)(f.monitors.id,a))).limit(1);if(h)return E;let i=new Date,j={url:g.m.url,expectedStatus:g.m.expectedStatus,timeoutMs:g.m.timeoutMs,bodyContains:g.m.bodyContains,jsonPath:g.m.jsonPath,jsonEquals:g.m.jsonEquals},l=(0,s.V)(j,c)?{state:"unknown",failStreak:0,stateSince:i,lastCheckedAt:null,lastStatus:null,lastLatencyMs:null,lastError:null}:{};try{d=await (0,e.f)().update(f.monitors).set({url:c.url,expectedStatus:c.expectedStatus,timeoutMs:c.timeoutMs,bodyContains:c.bodyContains,jsonPath:c.jsonPath,jsonEquals:c.jsonEquals,...l,updatedAt:i}).where((0,b.b)((0,b.u)(f.monitors.id,a),(0,b.u)(f.monitors.url,g.m.url),(0,b.u)(f.monitors.expectedStatus,g.m.expectedStatus),(0,k.T)(f.monitors.bodyContains,g.m.bodyContains),(0,k.T)(f.monitors.jsonPath,g.m.jsonPath),(0,k.T)(f.monitors.jsonEquals,g.m.jsonEquals))).returning({id:f.monitors.id})}catch(a){if("23505"===V(a))return E;throw a}if(!d.length)return await U(a)?K:D;let m=j.url!==c.url;return{ok:!0,message:g.m.ownerPaused?`Saved ${(0,t.F)(c.url)}. It's checked again once you resume it.`:`Checking ${(0,t.F)(c.url)} from the next run.`,audit:{message:`Monitor edited: ${(0,t.F)(c.url)}`,...m?{detail:`was ${(0,t.F)(j.url)}`}:{},resourceId:g.m.resourceId}}}async function aa(a,c){let d=await U(a);if(!d)return D;let g=new Date,h=P(d.m);if(c)return await (0,e.f)().update(f.monitors).set({ownerPaused:!0,updatedAt:g}).where((0,b.u)(f.monitors.id,a)),{ok:!0,message:`Paused ${h}. Its history is kept.`,audit:{message:`Monitor paused: ${h}`,resourceId:d.m.resourceId}};if(!d.m.ownerPaused)return J;let i=d.watched&&!d.goneAt;return R(async c=>{let e="heartbeat"===d.m.kind?null:(0,s.g)(await S(c),+!!i);return e?{ok:!1,error:e}:(await c.update(f.monitors).set({ownerPaused:!1,...i?{paused:!1}:{},state:"unknown",failStreak:0,stateSince:g,updatedAt:g}).where((0,b.b)((0,b.u)(f.monitors.id,a),(0,b.u)(f.monitors.ownerPaused,!0))).returning({id:f.monitors.id})).length?{ok:!0,message:i?`Resumed ${h}. First result within a minute.`:d.goneAt?`Resumed ${h}. ${I}, so it won't be checked.`:`Resumed ${h}. It's checked again once its app is watched.`,audit:{message:`Monitor resumed: ${h}`,resourceId:d.m.resourceId}}:(await c.select({id:f.monitors.id}).from(f.monitors).where((0,b.u)(f.monitors.id,a)).limit(1)).length?J:D})}async function ab(a,c){let d=await (0,e.f)().select({paused:f.monitors.paused,ownerPaused:f.monitors.ownerPaused,kind:f.monitors.kind}).from(f.monitors).where((0,b.u)(f.monitors.resourceId,a));if(!d.length)return{ok:!1,error:"This app has no monitors."};let g=new Date;if(c)return await (0,e.f)().update(f.monitors).set({ownerPaused:!0,updatedAt:g}).where((0,b.u)(f.monitors.resourceId,a)),{ok:!0,message:`Paused ${d.length} monitor${1===d.length?"":"s"}. Their history is kept.`,audit:{message:`Monitors paused: ${d.length}`,resourceId:a}};let[h]=await (0,e.f)().select({watched:f.resources.monitored,goneAt:f.resources.goneAt}).from(f.resources).where((0,b.u)(f.resources.id,a)).limit(1),i=!!h&&h.watched&&!h.goneAt,j=d.filter(a=>a.ownerPaused).length,k=1===j?"":"s",l=d.filter(a=>a.ownerPaused&&"heartbeat"!==a.kind).length;return R(async c=>{let d=(0,s.g)(await S(c),i?l:0);return d?{ok:!1,error:d}:(await c.update(f.monitors).set({ownerPaused:!1,...i?{paused:!1}:{},state:"unknown",failStreak:0,stateSince:g,updatedAt:g}).where((0,b.b)((0,b.u)(f.monitors.resourceId,a),(0,b.u)(f.monitors.ownerPaused,!0))),{ok:!0,message:i?`Resumed ${j} monitor${k}. First results within a minute.`:h?.goneAt?`Resumed ${j} monitor${k}. ${I}, so they won't be checked.`:`Resumed ${j} monitor${k}. They're checked again once the app is watched.`,audit:{message:`Monitors resumed: ${j}`,resourceId:a}})})}async function ac(a){let c=await U(a);if(!c)return D;let e=c.watched&&!c.goneAt&&"heartbeat"!==c.m.kind,g=d.B`(select count(*) from ${f.monitors} where ${f.monitors.resourceId} = ${c.m.resourceId}) > 1`,h=await R(async c=>(await c.delete(f.monitors).where((0,b.b)((0,b.u)(f.monitors.id,a),e?g:void 0)).returning({id:f.monitors.id})).length?"deleted":e&&(await c.select({id:f.monitors.id}).from(f.monitors).where((0,b.u)(f.monitors.id,a)).limit(1)).length?"last":"gone");if("gone"===h)return D;if("last"===h)return{ok:!1,error:(0,s.p)({appWatched:!0,monitorsOfApp:1})??"That monitor no longer exists."};let i=P(c.m);return{ok:!0,message:`Deleted ${i}.`,audit:{message:`Monitor deleted: ${i}`,resourceId:c.m.resourceId}}}function ad(a,b){return!a.lastCheckedAt||b.getTime()-a.lastCheckedAt.getTime()>=m.O?null:{ok:!0,message:(0,s.T)({...a,lastCheckedAt:a.lastCheckedAt},b),passed:a.lastStatus===a.expectedStatus&&!a.lastError}}async function ae(a){let b=await U(a);if(!b)return D;if("heartbeat"===b.m.kind)return O;let c=b.goneAt?G:b.watched?(0,s.i)(b.m)?null:"Paused monitors aren't checked. Resume it first.":"Its app isn't watched. Tick it in Connections → Sync first.";if(c)return{ok:!1,error:c};let d=ad(b.m,new Date);if(d)return d;let m=await (0,y.w)(),o=(0,r.W)()?(0,j.M)(b.m.expectedStatus):await (0,i.b)(b.m.url,{expectedStatus:b.m.expectedStatus,timeoutMs:b.m.timeoutMs,body:(0,g.C)(b.m)}),p=new Date;if(!await (0,k.j)(b.m,o,p)){let b=await U(a);return b?ad(b.m,new Date)??{ok:!1,error:"The monitor changed while it was being checked. Try again."}:D}let u=null!==(0,q.x)(m,{monitorId:a,appId:b.m.resourceId},p);await (0,e.f)().insert(f.checks).values({monitorId:a,at:p,ok:o.ok,statusCode:o.statusCode,latencyMs:o.latencyMs,error:o.error,inMaintenance:u});let v=(0,l.G)(b.m.failStreak,o),w=(0,l.F)({resourceId:b.m.resourceId,path:(0,h.K)(b.m.url),prev:b.m.state,next:v.state,code:o.statusCode,error:o.error,at:p});return await (0,n.f)([w]),{ok:!0,message:(0,s.X)(o),passed:o.ok,audit:{message:`Check now: ${(0,t.F)(b.m.url)}`,resourceId:b.m.resourceId}}}a.s(["Q",0,S,"b",0,Q,"X",0,ae,"_",0,X,"$",0,W,"j",0,ac,"d",0,B,"J",0,C,"p",0,$,"R",0,Z,"f",0,ab,"C",0,aa,"M",0,A,"G",0,Y,"q",0,_,"e",0,R],895176)},757902,a=>{var b=a.i(666680);function c(a){return(0,b.createHash)("sha256").update(a).digest("hex")}a.s(["B",0,function(a){let c=a.normalize("NFKD").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,60);return`heartbeat:${c||(0,b.createHash)("sha256").update(a.trim().toLowerCase()).digest("hex").slice(0,16)}`},"P",0,function(){let a=`hb_${(0,b.randomBytes)(16).toString("hex")}`;return{token:a,hash:c(a)}},"C",0,c])}]})();
2
2
 
3
3
  //# sourceMappingURL=src_lib_1xwavi_m_li7p._.js.map
@@ -0,0 +1,5 @@
1
+ (()=>{"use strict";module.exports=[601219,496843,a=>{var b=a.i(351674),c=a.i(548734),d=a.i(837137),e=a.i(245710);let f={monitor:{"Monitor down":"MonitorDown","Monitor degraded":"MonitorDegraded","Monitor recovered":"MonitorRecovered"},deployment:{"Deployment started":"DeployStarted","Deployment ready":"DeployReady","Deployment failed":"DeployFailed","Deployment canceled":"DeployCanceled"},system:{"Collector stopped":"CollectorStopped","Daily jobs finished":"DailyFinished","Daily jobs finished with problems":"DailyProblems"}};function g(a){return a.reason?a.reason:"action"===a.type?"Action":f[a.type]?.[a.message]??null}function h(a){return null!==a&&"Action"!==a}let i=/^(.+?) (?:reports an incident|incident resolved)$/;async function j(a,e=(0,c.f)()){for(let c of a){if(!c)continue;let a=c.at??new Date,f=g(c);if(h(f)){let g=new Date(a.getTime()-36e5);if((await e.update(d.events).set({count:b.B`${d.events.count} + 1`,lastAt:b.B`greatest(coalesce(${d.events.lastAt}, ${d.events.at}), ${a.toISOString()}::timestamptz)`,detail:c.detail,kind:c.kind}).where(b.B`${d.events.id} = (select id from ops.events where reason = ${f} and resource_id is not distinct from ${c.resourceId}::uuid
2
+ and message = ${c.message}
3
+ and coalesce(last_at, at) >= ${g.toISOString()}::timestamptz order by coalesce(last_at, at) desc limit 1)`).returning({id:d.events.id})).length)continue}await e.insert(d.events).values({at:a,resourceId:c.resourceId,type:c.type,kind:c.kind,message:c.message,detail:c.detail,actorUserId:c.actorUserId??null,reason:f,count:1})}}a.s(["t",0,36e5,"L",0,function(a){if(a.resource)return a.resource;if("ProviderIncident"===a.reason||"ProviderRecovered"===a.reason){let b=i.exec(a.message);if(b)return b[1]}return"system"===a.type?"collector":"console"},"y",0,g,"W",0,function(a,b,c){return a<=1||!b?null:`\xd7${a} \xb7 last ${(0,e.$)(b,c)}`},"w",0,h],496843),a.s(["f",0,j],601219)},323878,a=>{var b=a.i(93321),c=a.i(351674),d=a.i(548734),e=a.i(837137),f=a.i(312573);async function g(a,f){let[g]=await (0,d.f)().insert(e.rateLimits).values({key:a,windowStart:f,count:1}).onConflictDoUpdate({target:[e.rateLimits.key,e.rateLimits.windowStart],set:{count:c.B`${e.rateLimits.count} + 1`}}).returning({count:e.rateLimits.count});if(1===g.count)try{await (0,d.f)().delete(e.rateLimits).where((0,b.S)(e.rateLimits.windowStart,new Date(Date.now()-864e5)))}catch{console.warn("rate limit sweep failed")}return g.count}async function h(a,b){let c=new Date,d=0;return{...await (0,f.A)(a,b,{now:c,hit:async(a,b)=>d=await g(a,b)}),windowStart:(0,f.M)(c,a.windowSeconds),count:d}}async function i(a,g,h){await (0,d.f)().update(e.rateLimits).set({count:c.B`${e.rateLimits.count} - 1`}).where((0,b.b)((0,b.u)(e.rateLimits.key,(0,f.P)(a,g)),(0,b.u)(e.rateLimits.windowStart,h),(0,b.H)(e.rateLimits.count,0)))}async function j(a,c){let g=new Date,[h]=await (0,d.f)().select({count:e.rateLimits.count}).from(e.rateLimits).where((0,b.b)((0,b.u)(e.rateLimits.key,(0,f.P)(a,c)),(0,b.u)(e.rateLimits.windowStart,(0,f.M)(g,a.windowSeconds))));return(0,f.J)(a,h?.count??0,g)}a.s(["j",0,h,"C",0,function(a,b){return(0,f.A)(a,b,{hit:g})},"H",0,j,"K",0,i])}]})();
4
+
5
+ //# sourceMappingURL=src_lib_1zgor_vrwl5kt._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[927262,a=>{"use strict";let b=a=>(a??0).toLocaleString("en-US"),c={MonitorDown:{key:"MonitorDown",severity:"critical",threshold:3,bounds:[1,10],source:"own",needs:null,sampled:!0,condition:a=>`${b(a)} failed checks in a row`},CollectorStale:{key:"CollectorStale",severity:"critical",threshold:5,bounds:[3,60],source:"own",needs:null,sampled:!1,condition:a=>`No collector run for ${b(a)} min`},HighLatency:{key:"HighLatency",severity:"warning",threshold:1500,bounds:[100,3e4],source:"own",needs:null,sampled:!0,condition:a=>`p95 > ${b(a)} ms for 10 min`},DeploymentFailed:{key:"DeploymentFailed",severity:"warning",threshold:null,bounds:null,source:"api",needs:null,sampled:!1,condition:()=>"Production deployment state = ERROR"},DatabasePaused:{key:"DatabasePaused",severity:"warning",threshold:null,bounds:null,source:"api",needs:"databases",sampled:!1,condition:()=>"Supabase status = INACTIVE"},CertExpiringSoon:{key:"CertExpiringSoon",severity:"warning",threshold:14,bounds:[1,90],source:"own",needs:"domains",sampled:!1,condition:a=>`TLS certificate expires in < ${b(a)} days`},DomainExpiringSoon:{key:"DomainExpiringSoon",severity:"warning",threshold:30,bounds:[1,180],source:"api",needs:"domains",sampled:!1,condition:a=>`Domain expires in < ${b(a)} days`},StorageAlmostFull:{key:"StorageAlmostFull",severity:"warning",threshold:80,bounds:[10,100],source:"api",needs:"databases",sampled:!1,condition:a=>`Database size > ${b(a)}% of free limit`},NeonComputeHigh:{key:"NeonComputeHigh",severity:"warning",threshold:80,bounds:[1,100],source:"api",needs:"databases",sampled:!1,condition:a=>`> ${b(a)} of 100 CU-hours this month`},FirestoreQuotaHigh:{key:"FirestoreQuotaHigh",severity:"warning",threshold:80,bounds:[10,100],source:"test",needs:"databases",sampled:!1,condition:a=>`Daily reads > ${b(a)}% of 50k`},AutoPauseRisk:{key:"AutoPauseRisk",severity:"info",threshold:4,bounds:[1,6],source:"api",needs:"databases",sampled:!1,condition:a=>`Supabase project without API traffic for ${b(a)}+ days`},DnsProxiedToVercel:{key:"DnsProxiedToVercel",severity:"info",threshold:null,bounds:null,source:"api",needs:"dns",sampled:!1,condition:()=>"Cloudflare record proxied in front of Vercel"},ComputeHigh:{key:"ComputeHigh",severity:"warning",threshold:80,bounds:[50,95],source:"api",needs:"databases",sampled:!1,condition:a=>`Supabase CPU > ${b(a)}% for 15 min, RAM > ${b(Math.min(99,(a??80)+10))}%, disk > ${b(a)}% or connections > ${b(a)}% of max`},DbQuotaHigh:{key:"DbQuotaHigh",severity:"warning",threshold:80,bounds:[10,100],source:"api",needs:"databases",sampled:!1,condition:a=>`Turso, Upstash or D1 usage > ${b(a)}% of a free-plan quota`},CredentialExpiring:{key:"CredentialExpiring",severity:"warning",threshold:14,bounds:[1,60],source:"api",needs:null,sampled:!1,condition:a=>`Account credential expires in < ${b(a)} days`},VulnerableDependency:{key:"VulnerableDependency",severity:"warning",threshold:null,bounds:null,source:"api",needs:null,sampled:!1,condition:()=>"A dependency has a critical or high advisory, or a moderate one on a direct dependency (OSV.dev)"},FrameworkVulnerable:{key:"FrameworkVulnerable",severity:"warning",threshold:null,bounds:null,source:"own",needs:null,sampled:!1,condition:()=>"The app's Next.js version has a known advisory (OSV.dev)"},MonitorDomainMoved:{key:"MonitorDomainMoved",severity:"warning",threshold:null,bounds:null,source:"own",needs:null,sampled:!1,condition:()=>"The monitor's domain is no longer one of the app's domains"}},d=Object.keys(c),e=["critical","warning","info"],f=["telegram","discord","email_digest"];a.s(["_",0,c,"u",0,d,"h",0,a=>"string"==typeof a&&a in c,"N",0,function(a,d){let g=c[a],h={},i=e.find(a=>a===d.severity);i||(h.severity="Pick a severity.");let j=null;if(g.bounds){let a=String(d.threshold??"").replace(/,/g,"").trim(),c=/^\d+$/.test(a)?Number(a):0/0;!Number.isInteger(c)||c<g.bounds[0]||c>g.bounds[1]?h.threshold=`Enter a whole number from ${b(g.bounds[0])} to ${b(g.bounds[1])}.`:j=c}let k=Array.isArray(d.channels)?d.channels:[];return(k.every(a=>f.includes(a))||(h.channels="Pick from Telegram, Discord and the daily digest."),Object.keys(h).length||!i)?{ok:!1,fieldErrors:h}:{ok:!0,value:{severity:i,threshold:j,channels:[...new Set(k)],enabled:!0===d.enabled}}}])}];
1
+ module.exports=[927262,a=>{"use strict";let b=a=>(a??0).toLocaleString("en-US"),c={MonitorDown:{key:"MonitorDown",severity:"critical",threshold:3,bounds:[1,10],source:"own",needs:null,sampled:!0,condition:a=>`${b(a)} failed checks in a row`},CollectorStale:{key:"CollectorStale",severity:"critical",threshold:5,bounds:[3,60],source:"own",needs:null,sampled:!1,condition:a=>`No collector run for ${b(a)} min`},HighLatency:{key:"HighLatency",severity:"warning",threshold:1500,bounds:[100,3e4],source:"own",needs:null,sampled:!0,condition:a=>`Slowest 5% of checks over ${b(a)} ms for 10 min`},DeploymentFailed:{key:"DeploymentFailed",severity:"warning",threshold:null,bounds:null,source:"api",needs:null,sampled:!1,condition:()=>"A production deploy fails"},DatabasePaused:{key:"DatabasePaused",severity:"warning",threshold:null,bounds:null,source:"api",needs:"databases",sampled:!1,condition:()=>"Supabase pauses the project"},CertExpiringSoon:{key:"CertExpiringSoon",severity:"warning",threshold:14,bounds:[1,90],source:"own",needs:"domains",sampled:!1,condition:a=>`TLS certificate expires in < ${b(a)} days`},DomainExpiringSoon:{key:"DomainExpiringSoon",severity:"warning",threshold:30,bounds:[1,180],source:"api",needs:"domains",sampled:!1,condition:a=>`Domain expires in < ${b(a)} days`},StorageAlmostFull:{key:"StorageAlmostFull",severity:"warning",threshold:80,bounds:[10,100],source:"api",needs:"databases",sampled:!1,condition:a=>`Database size > ${b(a)}% of free limit`},NeonComputeHigh:{key:"NeonComputeHigh",severity:"warning",threshold:80,bounds:[1,100],source:"api",needs:"databases",sampled:!1,condition:a=>`> ${b(a)} of 100 CU-hours this month`},FirestoreQuotaHigh:{key:"FirestoreQuotaHigh",severity:"warning",threshold:80,bounds:[10,100],source:"test",needs:"databases",sampled:!1,condition:a=>`Daily reads > ${b(a)}% of 50k`},AutoPauseRisk:{key:"AutoPauseRisk",severity:"info",threshold:4,bounds:[1,6],source:"api",needs:"databases",sampled:!1,condition:a=>`Supabase project without API traffic for ${b(a)}+ days`},DnsProxiedToVercel:{key:"DnsProxiedToVercel",severity:"info",threshold:null,bounds:null,source:"api",needs:"dns",sampled:!1,condition:()=>"Cloudflare record proxied in front of Vercel"},ComputeHigh:{key:"ComputeHigh",severity:"warning",threshold:80,bounds:[50,95],source:"api",needs:"databases",sampled:!1,condition:a=>`Supabase CPU > ${b(a)}% for 15 min, RAM > ${b(Math.min(99,(a??80)+10))}%, disk > ${b(a)}% or connections > ${b(a)}% of max`},DbQuotaHigh:{key:"DbQuotaHigh",severity:"warning",threshold:80,bounds:[10,100],source:"api",needs:"databases",sampled:!1,condition:a=>`Turso, Upstash or D1 usage > ${b(a)}% of a free-plan quota`},CredentialExpiring:{key:"CredentialExpiring",severity:"warning",threshold:14,bounds:[1,60],source:"api",needs:null,sampled:!1,condition:a=>`Account credential expires in < ${b(a)} days`},VulnerableDependency:{key:"VulnerableDependency",severity:"warning",threshold:null,bounds:null,source:"api",needs:null,sampled:!1,condition:()=>"A dependency has a critical or high advisory, or a moderate one on a direct dependency (OSV.dev)"},FrameworkVulnerable:{key:"FrameworkVulnerable",severity:"warning",threshold:null,bounds:null,source:"own",needs:null,sampled:!1,condition:()=>"The app's Next.js version has a known advisory (OSV.dev)"},MonitorDomainMoved:{key:"MonitorDomainMoved",severity:"warning",threshold:null,bounds:null,source:"own",needs:null,sampled:!1,condition:()=>"The monitor's domain is no longer one of the app's domains"}},d=Object.keys(c),e=a=>"string"==typeof a&&a in c,f=["critical","warning","info"],g=["telegram","discord","webhook","smtp","email_digest"],h={MonitorDown:"Site down",CollectorStale:"Checks stopped",HighLatency:"Slow responses",DeploymentFailed:"Deploy failed",DatabasePaused:"Database paused",CertExpiringSoon:"Certificate expiring",DomainExpiringSoon:"Domain expiring",StorageAlmostFull:"Database almost full",NeonComputeHigh:"Neon hours running out",FirestoreQuotaHigh:"Firestore reads running out",AutoPauseRisk:"Supabase may pause",DnsProxiedToVercel:"Cloudflare proxy in front of Vercel",ComputeHigh:"Supabase under load",DbQuotaHigh:"Free quota running out",CredentialExpiring:"Token expiring",VulnerableDependency:"Vulnerable package",FrameworkVulnerable:"Next.js needs a security update",MonitorDomainMoved:"App moved to a new domain"};a.s(["_",0,c,"u",0,d,"$",0,h,"h",0,e,"N",0,function(a,d){let e=c[a],h={},i=f.find(a=>a===d.severity);i||(h.severity="Pick a severity.");let j=null;if(e.bounds){let a=String(d.threshold??"").replace(/,/g,"").trim(),c=/^\d+$/.test(a)?Number(a):0/0;!Number.isInteger(c)||c<e.bounds[0]||c>e.bounds[1]?h.threshold=`Enter a whole number from ${b(e.bounds[0])} to ${b(e.bounds[1])}.`:j=c}let k=Array.isArray(d.channels)?d.channels:[];return(k.every(a=>g.includes(a))||(h.channels="Pick from Telegram, Discord and the daily digest."),Object.keys(h).length||!i)?{ok:!1,fieldErrors:h}:{ok:!0,value:{severity:i,threshold:j,channels:[...new Set(k)],enabled:!0===d.enabled}}},"v",0,a=>e(a)?h[a]:a])}];
2
2
 
3
3
  //# sourceMappingURL=src_lib_alerts_catalog_ts_1ndg28acul64q._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[109307,600079,a=>{"use strict";var b=a.i(93321);a.i(570396);var c=a.i(673727),d=a.i(800717),e=a.i(548734),f=a.i(837137),g=a.i(745614),h=a.i(19809),i=a.i(371289);class j extends Error{reason;constructor(a){super(a),this.reason=a}}let k={"signed-out":"Your session ended. Sign in again.","not-member":"Your email isn't on this console.",forbidden:"You don't have permission to do that.",mfa:"Confirm your sign-in with your authenticator code first.","password-change":"Change your temporary password first."};async function l(a,b,d,e){try{let c=await d.requireActionMember(a);if((0,i.W)()){if(!e)return{ok:!1,error:h.Y};return await ("local"===e?b(c):e(c))}return await b(c)}catch(b){if((0,c.unstable_rethrow)(b),b instanceof j)return{ok:!1,error:k[b.reason]};if((0,h.h)(b))return{ok:!1,error:h.Y};let a=(0,i.W)()?(0,g.E)(b):null;if(a)return{ok:!1,error:a};return console.error("action failed:",b instanceof Error?b.name:"unknown"),{ok:!1,error:"Something went wrong. Try again."}}}a.s(["W",0,j,"F",0,l],600079);var m=a.i(366443),n=a.i(753682),o=a.i(221246);let p=(0,d.cache)(async()=>(0,m.f)().sessionUser()),q="/auth/session-ended";async function r(a,b){if("aal2"===b)return"ok";let c=await (0,m.f)().hasVerifiedFactor(a.userId);return"signed-out"===c?"signed-out":(0,n.f)({role:a.role,aal:b,hasVerifiedFactor:c})}async function s(){let a=await p();a||(0,c.redirect)("/signin");let b=await t(a.userId);b||(0,c.redirect)("/auth/not-member");let d=await r(b,a.aal);return"signed-out"===d&&(0,c.redirect)(q),{member:b,step:d}}let t=(0,d.cache)(async a=>{let[c]=await (0,e.f)().select({id:f.members.id,userId:f.members.userId,email:f.members.email,role:f.members.role}).from(f.members).where((0,b.u)(f.members.userId,a)).limit(1);return c??null});async function u(a){let[c]=await (0,e.f)().select().from(f.invites).where((0,b.b)((0,b.u)(f.invites.email,a),(0,b.M)(f.invites.acceptedAt),(0,b.H)(f.invites.expiresAt,new Date))).limit(1);return c??null}async function v(){let a=await p();a||(0,c.redirect)("/signin");let b=await t(a.userId);if(b){let d=await r(b,a.aal);return"signed-out"===d&&(0,c.redirect)(q),"setup"===d&&(0,c.redirect)("/mfa/setup"),"challenge"===d&&(0,c.redirect)("/mfa"),a.mustChangePassword&&(0,c.redirect)("/account/password"),b}a.email&&await u(a.email)&&(0,c.redirect)("/invite"),(0,c.redirect)("/auth/not-member")}async function w(a){let b=await v();return{ok:(0,o.L)(b.role,a),member:b}}async function x(a){let b=await p();if(!b)throw new j("signed-out");let c=await t(b.userId);if(!c)throw new j("not-member");if(!(0,o.L)(c.role,a))throw new j("forbidden");let d=await r(c,b.aal);if("signed-out"===d)throw new j("signed-out");if("ok"!==d)throw new j("mfa");if(b.mustChangePassword)throw new j("password-change");return c}a.s(["F",0,s,"M",0,u,"x",0,p,"B",0,w,"g",0,x,"I",0,v],109307)}];
1
+ module.exports=[109307,600079,a=>{"use strict";var b=a.i(93321);a.i(570396);var c=a.i(673727),d=a.i(800717),e=a.i(548734),f=a.i(837137),g=a.i(745614),h=a.i(19809),i=a.i(371289);class j extends Error{reason;constructor(a){super(a),this.reason=a}}let k={"signed-out":"Your session ended. Sign in again.","not-member":"Your email isn't on this console.",forbidden:"You don't have permission to do that.",mfa:"Confirm your sign-in with your authenticator code first.","password-change":"Change your temporary password first."};async function l(a,b,d,e){try{let c=await d.requireActionMember(a);if((0,i.W)()){if(!e)return{ok:!1,error:h.Y};return await ("local"===e?b(c):e(c))}return await b(c)}catch(b){if((0,c.unstable_rethrow)(b),b instanceof j)return{ok:!1,error:k[b.reason]};if((0,h.h)(b))return{ok:!1,error:h.Y};let a=(0,i.W)()?(0,g.E)(b):null;if(a)return{ok:!1,error:a};return console.error("action failed:",b instanceof Error?b.name:"unknown"),{ok:!1,error:"That didn't go through, and Watchbell couldn't tell why. Try again in a moment; if it keeps failing, the server log has the details."}}}a.s(["W",0,j,"F",0,l],600079);var m=a.i(366443),n=a.i(753682),o=a.i(221246);let p=(0,d.cache)(async()=>(0,m.f)().sessionUser()),q="/auth/session-ended";async function r(a,b){if("aal2"===b)return"ok";let c=await (0,m.f)().hasVerifiedFactor(a.userId);return"signed-out"===c?"signed-out":(0,n.f)({role:a.role,aal:b,hasVerifiedFactor:c})}async function s(){let a=await p();a||(0,c.redirect)("/signin");let b=await t(a.userId);b||(0,c.redirect)("/auth/not-member");let d=await r(b,a.aal);return"signed-out"===d&&(0,c.redirect)(q),{member:b,step:d}}let t=(0,d.cache)(async a=>{let[c]=await (0,e.f)().select({id:f.members.id,userId:f.members.userId,email:f.members.email,role:f.members.role}).from(f.members).where((0,b.u)(f.members.userId,a)).limit(1);return c??null});async function u(a){let[c]=await (0,e.f)().select().from(f.invites).where((0,b.b)((0,b.u)(f.invites.email,a),(0,b.M)(f.invites.acceptedAt),(0,b.H)(f.invites.expiresAt,new Date))).limit(1);return c??null}async function v(){let a=await p();a||(0,c.redirect)("/signin");let b=await t(a.userId);if(b){let d=await r(b,a.aal);return"signed-out"===d&&(0,c.redirect)(q),"setup"===d&&(0,c.redirect)("/mfa/setup"),"challenge"===d&&(0,c.redirect)("/mfa"),a.mustChangePassword&&(0,c.redirect)("/account/password"),b}a.email&&await u(a.email)&&(0,c.redirect)("/invite"),(0,c.redirect)("/auth/not-member")}async function w(a){let b=await v();return{ok:(0,o.L)(b.role,a),member:b}}async function x(a){let b=await p();if(!b)throw new j("signed-out");let c=await t(b.userId);if(!c)throw new j("not-member");if(!(0,o.L)(c.role,a))throw new j("forbidden");let d=await r(c,b.aal);if("signed-out"===d)throw new j("signed-out");if("ok"!==d)throw new j("mfa");if(b.mustChangePassword)throw new j("password-change");return c}a.s(["F",0,s,"M",0,u,"x",0,p,"B",0,w,"g",0,x,"I",0,v],109307)}];
2
2
 
3
3
  //# sourceMappingURL=src_lib_auth_ts_11yt3pae6wy-o._.js.map
@@ -1,9 +1,9 @@
1
- module.exports=[270432,a=>{"use strict";var b=a.i(93321),c=a.i(351674),d=a.i(548734),e=a.i(837137),f=a.i(436357),g=a.i(109068),h=a.i(678831),i=a.i(45617),j=a.i(455317),k=a.i(383487),l=a.i(714530),m=a.i(601219),n=a.i(358179),o=a.i(292321),p=a.i(49146),q=a.i(396667),r=a.i(33135),s=a.i(669943),t=a.i(26972),u=a.i(811365),v=a.i(689963),w=a.i(191179),x=a.i(427221),y=a.i(530174);let z=/not enabled/i,A=(a,b,c={})=>({ok:!1,kind:a,error:b,...c}),B="Vercel Web Analytics answered in a format the console doesn't recognise.",C=t.z.object({data:t.z.object({pageviews:u.z.number().finite().nonnegative(),visitors:u.z.number().finite().nonnegative()})}),D=t.z.object({data:v.z.array(w.z.unknown())}),E=t.z.object({timestamp:x.z.string().transform((a,b)=>{let c=Date.parse(a);return Number.isNaN(c)?(b.addIssue({code:"custom",message:"bad timestamp"}),y.z.NEVER):c}),pageviews:u.z.number().finite().nonnegative().nullish().catch(null)});async function F(a,b,c,d){let e=d.since.toISOString(),f=d.until.toISOString(),g=d.fetch??fetch,h=new AbortController,i=setTimeout(()=>h.abort(new DOMException("window","TimeoutError")),d.timeoutMs??8e3),j=d.signal?AbortSignal.any([h.signal,d.signal]):h.signal,k=(0,r.X)(j);async function l(i,l){let m=new URLSearchParams({projectId:c,teamId:b,...l,since:e,until:f});try{let b=await Promise.race([g(`https://api.vercel.com/v1/query/web-analytics/visits/${i}?${m}`,{headers:{Authorization:`Bearer ${a}`,Accept:"application/json"},signal:j,cache:"no-store"}),k]),c=null,d=!1;if(401===b.status||403===b.status)c=A("auth",`Vercel rejected this credential (${b.status}).`,{status:b.status});else if(429===b.status){let a=Number(b.headers.get("Retry-After"));c=A("transient","Vercel says there were too many requests.",{status:429,retryAfterS:Number.isFinite(a)&&a>0?a:60})}else if(400===b.status){let a=await Promise.race([b.text(),k]).catch(()=>"");z.test(a)?d=!0:c=A("transient","Vercel Web Analytics rejected the request (400).",{status:400})}else b.ok||(c=A("transient",`Vercel Web Analytics returned an error (${b.status}).`,{status:b.status}));if(d)return{kind:"off"};if(c)return await b.body?.cancel().catch(()=>void 0),{kind:"fail",fail:c};try{return{kind:"body",body:await Promise.race([b.json(),k])}}catch(a){if(j.aborted)throw a;return{kind:"fail",fail:A("format",B)}}}catch{return{kind:"fail",fail:j.aborted?h.signal.aborted&&!d.signal?.aborted?A("transient","Vercel Web Analytics didn't answer in time."):A("transient","Reading Vercel Web Analytics was cancelled."):A("transient","Couldn't reach Vercel Web Analytics.")}}}try{let[a,b]=await Promise.all([l("count",{}),l("aggregate",{by:"hour"})]);if("off"===a.kind||"off"===b.kind)return{ok:!0,enabled:!1};let c=[a,b].flatMap(a=>"fail"===a.kind?[a.fail]:[]),d=c.find(a=>"auth"===a.kind);if(d)return d;let e="body"===b.kind?D.safeParse(b.body):null,f="fail"===b.kind?b.fail:e?.success?null:A("format",B),g=c.find(a=>"transient"===a.kind);if(g)return g;if(f)return f;if(!e?.success)return A("format",B);let h="body"===a.kind?C.safeParse(a.body):null,i=e.data.data.flatMap(a=>{let b=E.safeParse(a);return b.success?[b.data]:[]});if(i.length>0&&i.every(a=>null==a.pageviews))return A("format",B);let j=new Map;for(let a of i){let b=36e5*Math.floor(a.timestamp/36e5);j.set(b,(j.get(b)??0)+(a.pageviews??0))}let k=[...j].sort((a,b)=>a[0]-b[0]).slice(-24).map(([a,b])=>({at:new Date(a),views:b}));if(h?.success)return{ok:!0,enabled:!0,total:h.data.data.pageviews,visitors:h.data.data.visitors,hourly:k};return{ok:!0,enabled:!0,total:k.reduce((a,b)=>a+b.views,0),visitors:null,hourly:k}}finally{clearTimeout(i),h.abort()}}var G=a.i(631107);async function H(a,b,c){let d=await (0,o.g)(null);if(!d.length)return;let e=new Date(36e5*Math.floor(a.getTime()/36e5)-828e5);await (0,r.P)(d,3,async d=>{if(Date.now()+8500>b)return;let f=await F(d.token,d.teamId,d.projectId,{since:e,until:a});if(!f.ok)return void c.push(`pageviews/${d.appName}: ${f.error}`);try{await (0,s.r)(d.appId,{pageviews:(0,G.a)(f,a)},a)}catch{c.push(`pageviews/${d.appName}: couldn't save the page views`)}})}var I=a.i(634418),J=a.i(930270),K=a.i(242605),L=a.i(683439);let M="security.afterDeploy",N=a=>"object"==typeof a&&null!==a&&!Array.isArray(a),O=a=>"string"==typeof a&&a.length>0&&a.length<=100;function P(a){let b={pending:{},checked:{}};if(!N(a))return b;if(N(a.pending))for(let[c,d]of Object.entries(a.pending)){if(!(0,L.f)(c)||!N(d)||!O(d.id)||"string"!=typeof d.at||Number.isNaN(Date.parse(d.at)))continue;let a="number"==typeof d.attempts&&Number.isInteger(d.attempts)&&d.attempts>=0?Math.min(d.attempts,3):0;b.pending[c]={id:d.id,at:d.at,attempts:a,...!0===d.next?{next:!0}:{},...!0===d.deps?{deps:!0}:{}}}if(N(a.checked))for(let[c,d]of Object.entries(a.checked))(0,L.f)(c)&&O(d)&&(b.checked[c]=d);return b}function Q(a,b){let c,d={...a.pending},e={...a.checked};for(let a of b){let b=d[a];b&&(delete d[a],delete e[a],e[a]=b.id)}return{pending:d,checked:(c=Object.entries(e)).length<=500?e:Object.fromEntries(c.slice(c.length-500))}}let R=(a,b)=>Object.entries(a.pending).filter(([,a])=>!a[b]).map(([a])=>a);var S=a.i(46126);let T="security.slot",U=a=>Array.isArray(a)?a.filter(a=>"string"==typeof a&&a.length>0&&a.length<=100).slice(0,1e3):[],V=(a,b)=>[...new Set([...a,...b])].slice(0,1e3),W=a=>async()=>{let[c]=await (0,d.f)().select({value:e.settings.value}).from(e.settings).where((0,b.u)(e.settings.key,a)).limit(1);return c?.value??null},X=a=>async b=>{await (0,d.f)().insert(e.settings).values({key:a,value:b}).onConflictDoUpdate({target:e.settings.key,set:{value:b,updatedAt:new Date}})},Y={read:W(M),write:X(M),readSlot:W(T),writeSlot:X(T),nextCheck:K.h,depsStep:(a,b)=>(0,J.O)(a,b)};async function Z(a,b=Y){var c;let d,e=P(await b.read()),f=(c=a.now,(d=Object.entries(e.pending).filter(([,a])=>c.getTime()-Date.parse(a.at)>216e5).map(([a])=>a)).length?Q(e,d):e),g=!a.paused.has("hosting"),h=!a.paused.has("devops"),i=g?R(f,"next"):[],j=h?R(f,"deps"):[],k=a.early?null:function(a,b){let c=a&&"object"==typeof a&&!Array.isArray(a)?a:{};if(c.slot!==b)return{slot:b,runs:0,next:[],repos:[],cut:{},nextDone:!1,depsDone:!1};let d="number"==typeof c.runs&&Number.isInteger(c.runs)&&c.runs>=0?c.runs:0,e={};if(c.cut&&"object"==typeof c.cut&&!Array.isArray(c.cut))for(let[a,b]of Object.entries(c.cut).slice(0,1e3))a.length<=100&&"number"==typeof b&&Number.isInteger(b)&&b>0&&(e[a]=Math.min(b,2));return{slot:b,runs:d,next:U(c.next),repos:U(c.repos),cut:e,nextDone:!0===c.nextDone,depsDone:!0===c.depsDone}}(await b.readSlot(),new Date((0,I.G)("security",a.now)).toISOString()),l=!!k&&g&&!k.nextDone,m=!!k&&h&&!k.depsDone,n=g&&(i.length>0||l),o=h&&(j.length>0||m),p={hosting:g,devops:h,nextDone:new Set,nextStarted:new Set,depsDone:new Set},q=async()=>{let c=Math.min(Date.now()+S.y,!k&&o?a.deadline-2*J.d:a.deadline),d=l?[...k.next,...Object.entries(k.cut).filter(([,a])=>a>=2).map(([a])=>a)]:[],e=l?{first:i,skip:[...new Set(d)].filter(a=>!i.includes(a))}:{only:i},f=await b.nextCheck(c,e);for(let b of f.failed)a.errors.push(`security ${b}`);for(let a of f.done)p.nextDone.add(a);for(let a of i)f.listed.includes(a)||p.nextDone.add(a);for(let a of f.started)p.nextStarted.add(a);if(l){let a=new Set(f.done);for(let b of(k.next=V(k.next,f.done),f.started))a.has(b)||(k.cut[b]=Math.min((k.cut[b]??0)+1,2));k.nextDone=f.listed.every(b=>a.has(b)||(k.cut[b]??0)>=2)}},r=async()=>{let c=await b.depsStep(Math.min(Date.now()+J.o,a.deadline),m?{marked:j,onlyMarked:!1,skip:k.repos}:{marked:j,onlyMarked:!0});for(let b of(c.problem&&a.errors.push(`security deps: ${c.problem}`),c.settled))p.depsDone.add(b);m&&(k.repos=V(k.repos,c.done),k.depsDone=c.complete)};try{k&&k.runs++,k?(o&&await r(),n&&await q()):(n&&await q(),o&&await r())}finally{let a=null;if(k)try{await b.writeSlot(k)}catch(b){a=b}try{let a=function(a,b){let c={},d=[];for(let[e,f]of Object.entries(a.pending)){let a={...f};b.hosting&&!a.next&&(b.nextDone?.has(e)?a.next=!0:b.nextStarted?.has(e)&&(a.attempts=Math.min(a.attempts+1,3))),b.devops&&!a.deps&&b.depsDone?.has(e)&&(a.deps=!0),c[e]=a,((a.next||!b.hosting)&&(a.deps||!b.devops)||a.attempts>=3)&&d.push(e)}return Q({pending:c,checked:a.checked},d)}(f,p);JSON.stringify(a)!==JSON.stringify(e)&&await b.write(a)}catch(b){a??=b}if(a)throw a}return{complete:!k||(k.nextDone||!g)&&(k.depsDone||!h)||k.runs>=20}}async function $(a,b,c=Y){if(!a.length)return!1;let{state:d,changed:e}=function(a,b,c){let d={pending:{...a.pending},checked:{...a.checked}},e=!1;for(let a of b)(0,L.f)(a.appId)&&O(a.deploymentId)&&d.checked[a.appId]!==a.deploymentId&&d.pending[a.appId]?.id!==a.deploymentId&&(d.pending[a.appId]={id:a.deploymentId,at:c.toISOString(),attempts:0},e=!0);return{state:d,changed:e}}(P(await c.read()),a,b);return e&&await c.write(d),e}var _=a.i(46396),aa=a.i(492665),ab=a.i(519051),ac=a.i(572134),ad=a.i(646324),ae=a.i(443002),af=a.i(900477),ag=a.i(639271),ah=a.i(514670),ai=a.i(354448),aj=a.i(584897),ak=a.i(697365);async function al(a){let b=[await (0,ae.I)(()=>an(a)),await (0,ae.I)(()=>ap(a)),await (0,ae.I)(()=>aq(a))].find(a=>null!==a);if(b)throw b}let am=a=>a.toISOString();async function an(a){for(let{acc:b,credential:c}of(await (0,ae.O)("turso"))){if((0,ae.s)(a),!c){a.errors.push(`turso/${b.label}: credential can't be read`);continue}let d=await (0,ae.e)(b.id,"turso_database");if(!d.length)continue;let e=await (0,ai.u)(c,(0,ae.s)(a));if(!e.ok){await (0,ae.w)("turso",b,d,e,a);continue}let f=new Set(d.map(a=>String(a.r.meta.org??""))),g=[];for(let h of e.data.filter(a=>f.has(a.slug))){let[e,f]=await Promise.all([(0,ai.X)(c,h.slug,(0,ae.s)(a)),(0,ai.d)(c,h.slug,(0,ae.s)(a))]),i=d.filter(a=>a.r.meta.org===h.slug);if(!e.ok){for(let b of i)await (0,ae.a)(b,{state:"unknown",label:"Unknown",patch:{}},a.now);a.errors.push(`turso/${b.label}: ${e.error}`);continue}let j=new Map(e.data.map(a=>[a.id,a]));for(let b of i)g.push(await ao(b,j.get(b.r.externalId),h,f,a))}let h=new Set(e.data.map(a=>a.slug));for(let b of d.filter(a=>!h.has(String(a.r.meta.org??""))))g.push(await (0,ae.a)(b,{state:"off",label:"Organization not visible to this token",patch:{}},a.now));await (0,ae.M)(g)}}async function ao(a,b,c,d,e){if(!b)return(0,ae.a)(a,{state:"off",label:"Not found",patch:{}},e.now);let f=(0,ag.i)({blockReads:b.blockReads,blockWrites:b.blockWrites,orgBlockedReads:c.blockedReads,orgBlockedWrites:c.blockedWrites}),g={org:c.slug,group:b.group,primaryRegion:b.primaryRegion,plan:c.plan,blockReads:b.blockReads,blockWrites:b.blockWrites};if(d.ok){let a=d.data.byDb.get(b.id);Object.assign(g,{rowsRead:a?.rowsRead??null,rowsWritten:a?.rowsWritten??null,storageBytes:a?.storageBytes??null,orgRowsRead:d.data.org.rowsRead,orgRowsWritten:d.data.org.rowsWritten,orgStorageBytes:d.data.org.storageBytes,orgDatabases:d.data.org.databases,usageAt:am(e.now),usageError:null})}else"column"===(0,af.t)(d,!1)?g.usageError=d.error:e.errors.push(`turso/${a.r.name} usage: ${d.error}`);return(0,ae.a)(a,{...f,patch:g},e.now)}async function ap(a){for(let{acc:b,credential:c}of(await (0,ae.O)("upstash"))){(0,ae.s)(a);let d=c?(0,aj.L)(c):null;if(!d){a.errors.push(`upstash/${b.label}: credential can't be read`);continue}let e=await (0,ae.e)(b.id,"upstash_redis");if(!e.length)continue;let f=await (0,aj.M)(d,(0,ae.s)(a));if(!f.ok){await (0,ae.w)("upstash",b,e,f,a);continue}let g=new Map(f.data.map(a=>[a.id,a])),{out:h,skipped:i}=await (0,ae.T)(a,e,(a,b)=>g.has(a.r.externalId)?(0,aj.Z)(d,a.r.externalId,b):Promise.resolve(null)),j=[];for(let[b,c]of e.entries()){let d=g.get(c.r.externalId);if(!d){j.push(await (0,ae.a)(c,{state:"off",label:"Not found",patch:{}},a.now));continue}let e=(0,ag.t)(d.state),f={region:d.region,status:d.state,type:d.type},i=h[b];i?.ok?Object.assign(f,{...i.data,statsAt:am(a.now),statsError:null}):i&&"column"===(0,af.t)(i,!1)?f.statsError=i.error:i&&a.errors.push(`upstash/${c.r.name} stats: ${i.error}`),j.push(await (0,ae.a)(c,{...e,patch:f},a.now))}await (0,ae.M)(j),(0,ae.W)(i)}}async function aq(a){let b={};for(let{acc:c,credential:d}of(await (0,ae.O)("cloudflare"))){if((0,ae.s)(a),!d)continue;let e=await as(c.id,d,a);if(!e.length){b[c.id]={d1:"error",analytics:null,at:am(a.now),note:"No Cloudflare account found for this token"};continue}let f="ok",g=null;for(let b of e){let e=await (0,ah.L)(d,b,(0,ae.s)(a));if(!e.ok){"error"==(f="scope"===e.kind||"auth"===e.kind?"missing":"error")&&a.errors.push(`d1/${c.label}: ${e.error}`);continue}await at(c.id,b,e.data,a.now);let h=(await (0,ae.e)(c.id,"d1_database")).filter(a=>a.r.meta.accountId===b);if(!h.length)continue;let i=await (0,ah.t)(d,b,(0,ah.Y)(a.now),(0,ae.s)(a));g=i.ok?g??"ok":"scope"===i.kind?"missing":g??"error",i.ok||"scope"===i.kind||a.errors.push(`d1/${c.label} analytics: ${i.error}`);let{out:j,skipped:k}=await (0,ae.T)(a,h,(a,c)=>(0,ah.m)(d,b,a.r.externalId,c)),l=new Map((i.ok?i.data:[]).map(a=>[a.databaseId,a])),m=j.map(a=>a?.ok?a.data.sizeBytes??0:0),n={accountRowsRead:i.ok?i.data.reduce((a,b)=>a+b.rowsRead,0):null,accountRowsWritten:i.ok?i.data.reduce((a,b)=>a+b.rowsWritten,0):null,accountSizeBytes:j.every(a=>a?.ok)?m.reduce((a,b)=>a+b,0):null,accountDatabases:e.data.length},o=[];for(let[b,c]of h.entries()){let d=j[b];void 0!==d&&o.push(await ar(c,d,l.get(c.r.externalId)??null,i.ok,i.ok?null:i.error,n,a))}await (0,ae.M)(o),(0,ae.W)(k)}b[c.id]={d1:f,analytics:g,at:am(a.now),note:null}}await (0,d.f)().insert(e.settings).values({key:ak.F,value:b}).onConflictDoUpdate({target:e.settings.key,set:{value:b,updatedAt:a.now}})}async function ar(a,b,c,d,e,f,g){let h={accountId:a.r.meta.accountId??null,createdAt:a.r.meta.createdAt??null,accountDatabases:f.accountDatabases};if(b.ok?Object.assign(h,{sizeBytes:b.data.sizeBytes,numTables:b.data.numTables,readReplication:b.data.readReplication,detailsAt:am(g.now),detailsError:null}):"scope"===b.kind?h.detailsError=b.error:g.errors.push(`d1/${a.r.name}: ${b.error}`),d?Object.assign(h,{rowsRead:c?.rowsRead??0,rowsWritten:c?.rowsWritten??0,readQueries:c?.readQueries??0,writeQueries:c?.writeQueries??0,accountRowsRead:f.accountRowsRead,accountRowsWritten:f.accountRowsWritten,usageDay:(0,ah.Y)(g.now),usageAt:am(g.now),usageError:null}):h.usageError=e,null!==f.accountSizeBytes&&(h.accountSizeBytes=f.accountSizeBytes),!b.ok&&"transient"===b.kind)return(0,ae.a)(a,{state:"unknown",label:"Unknown",patch:{}},g.now);let i=(0,ag.c)(d?f:{accountRowsRead:null,accountRowsWritten:null});return(0,ae.a)(a,{...i,patch:h},g.now)}async function as(a,c,f){let g=new Set,h=await (0,ah.N)(c,(0,ae.s)(f));if(h.ok)for(let a of h.data)g.add(a.id);for(let c of(await (0,d.f)().select({meta:e.resources.meta}).from(e.resources).where((0,b.b)((0,b.u)(e.resources.accountId,a),(0,b.u)(e.resources.kind,"zone"),(0,b.M)(e.resources.goneAt))).limit(200)))"string"==typeof c.meta.accountId&&/^[0-9a-f]{32}$/i.test(c.meta.accountId)&&g.add(c.meta.accountId);return[...g].slice(0,5)}async function at(a,c,f,g){let h=(await (0,d.f)().select({id:e.resources.id,externalId:e.resources.externalId,meta:e.resources.meta,goneAt:e.resources.goneAt}).from(e.resources).where((0,b.b)((0,b.u)(e.resources.accountId,a),(0,b.u)(e.resources.kind,"d1_database")))).filter(a=>a.meta.accountId===c),i=new Map(h.map(a=>[a.externalId,a])),j=new Set(f.map(a=>a.uuid));await (0,d.f)().transaction(async d=>{for(let h of f){let f={accountId:c,createdAt:h.createdAt},j=i.get(h.uuid);j?await d.update(e.resources).set({name:h.name,meta:f,lastSeenAt:g,goneAt:null,updatedAt:g}).where((0,b.u)(e.resources.id,j.id)):await d.insert(e.resources).values({accountId:a,kind:"d1_database",externalId:h.uuid,name:h.name,meta:f,monitored:!0,lastSeenAt:g}).onConflictDoNothing({target:[e.resources.accountId,e.resources.kind,e.resources.externalId]})}let k=h.filter(a=>!j.has(a.externalId)&&!a.goneAt).map(a=>a.id);k.length&&await d.update(e.resources).set({goneAt:g,updatedAt:g}).where((0,b.y)(e.resources.id,k))})}var au=a.i(666680),av=a.i(263251);async function aw(a=new Date){let b=(0,au.randomUUID)(),e=new Date(a.getTime()+I.d).toISOString(),f=await (0,d.f)().execute(c.B`
1
+ module.exports=[270432,a=>{"use strict";var b=a.i(93321),c=a.i(351674),d=a.i(548734),e=a.i(837137),f=a.i(436357),g=a.i(109068),h=a.i(678831),i=a.i(45617),j=a.i(455317),k=a.i(383487),l=a.i(714530),m=a.i(601219),n=a.i(358179),o=a.i(292321),p=a.i(49146),q=a.i(396667),r=a.i(751263);async function s(a,f,g=new Map){if(!a.length)return 0;let h=await (0,d.f)().select({app:e.deployments.resourceId,id:e.deployments.externalId,source:e.deployments.source,branch:e.deployments.branch,sha:e.deployments.commitSha}).from(e.deployments).where((0,b.b)((0,b.y)(e.deployments.resourceId,a.map(a=>a.id)),(0,b.u)(e.deployments.isCurrent,!0))),i=0;for(let j of a){let a,k=h.find(a=>a.app===j.id);if(!k)continue;let l=(0,r.O)(j.meta?.productionSource),m=g.get(k.id),n={source:k.source??null,branch:k.branch??null,sha:k.sha??null};if(!(a=m?(0,r.s)({...n,branchFrom:m.branchFrom??null,gitDirty:!0===m.gitDirty}):l?.id===k.id?{kind:l.kind,...l.ref?{ref:l.ref}:{},...l.sha?{sha:l.sha}:{}}:"git"===n.source||"cli"===n.source?(0,r.s)(n):null)){if(l?.at&&l.id!==k.id){let a={...l};delete a.at,await (0,d.f)().update(e.resources).set({meta:c.B`${e.resources.meta} || ${JSON.stringify({productionSource:a})}::jsonb`}).where((0,b.u)(e.resources.id,j.id)),i++}continue}a={...a,id:k.id};let o=!!l?.at&&f.getTime()-Date.parse(l.at)<r.u;if((0,r.v)(l,a)&&o)continue;let p={...a,at:f.toISOString()};await (0,d.f)().update(e.resources).set({meta:c.B`${e.resources.meta} || ${JSON.stringify({productionSource:p})}::jsonb`}).where((0,b.u)(e.resources.id,j.id)),i++}return i}var t=a.i(33135),u=a.i(669943),v=a.i(26972),w=a.i(811365),x=a.i(689963),y=a.i(191179),z=a.i(427221),A=a.i(530174);let B=/not enabled/i,C=(a,b,c={})=>({ok:!1,kind:a,error:b,...c}),D="Vercel Web Analytics answered in a format the console doesn't recognise.",E=v.z.object({data:v.z.object({pageviews:w.z.number().finite().nonnegative(),visitors:w.z.number().finite().nonnegative()})}),F=v.z.object({data:x.z.array(y.z.unknown())}),G=v.z.object({timestamp:z.z.string().transform((a,b)=>{let c=Date.parse(a);return Number.isNaN(c)?(b.addIssue({code:"custom",message:"bad timestamp"}),A.z.NEVER):c}),pageviews:w.z.number().finite().nonnegative().nullish().catch(null)});async function H(a,b,c,d){let e=d.since.toISOString(),f=d.until.toISOString(),g=d.fetch??fetch,h=new AbortController,i=setTimeout(()=>h.abort(new DOMException("window","TimeoutError")),d.timeoutMs??8e3),j=d.signal?AbortSignal.any([h.signal,d.signal]):h.signal,k=(0,t.X)(j);async function l(i,l){let m=new URLSearchParams({projectId:c,teamId:b,...l,since:e,until:f});try{let b=await Promise.race([g(`https://api.vercel.com/v1/query/web-analytics/visits/${i}?${m}`,{headers:{Authorization:`Bearer ${a}`,Accept:"application/json"},signal:j,cache:"no-store"}),k]),c=null,d=!1;if(401===b.status||403===b.status)c=C("auth",`Vercel rejected this credential (${b.status}).`,{status:b.status});else if(429===b.status){let a=Number(b.headers.get("Retry-After"));c=C("transient","Vercel says there were too many requests.",{status:429,retryAfterS:Number.isFinite(a)&&a>0?a:60})}else if(400===b.status){let a=await Promise.race([b.text(),k]).catch(()=>"");B.test(a)?d=!0:c=C("transient","Vercel Web Analytics rejected the request (400).",{status:400})}else b.ok||(c=C("transient",`Vercel Web Analytics returned an error (${b.status}).`,{status:b.status}));if(d)return{kind:"off"};if(c)return await b.body?.cancel().catch(()=>void 0),{kind:"fail",fail:c};try{return{kind:"body",body:await Promise.race([b.json(),k])}}catch(a){if(j.aborted)throw a;return{kind:"fail",fail:C("format",D)}}}catch{return{kind:"fail",fail:j.aborted?h.signal.aborted&&!d.signal?.aborted?C("transient","Vercel Web Analytics didn't answer in time."):C("transient","Reading Vercel Web Analytics was cancelled."):C("transient","Couldn't reach Vercel Web Analytics.")}}}try{let[a,b]=await Promise.all([l("count",{}),l("aggregate",{by:"hour"})]);if("off"===a.kind||"off"===b.kind)return{ok:!0,enabled:!1};let c=[a,b].flatMap(a=>"fail"===a.kind?[a.fail]:[]),d=c.find(a=>"auth"===a.kind);if(d)return d;let e="body"===b.kind?F.safeParse(b.body):null,f="fail"===b.kind?b.fail:e?.success?null:C("format",D),g=c.find(a=>"transient"===a.kind);if(g)return g;if(f)return f;if(!e?.success)return C("format",D);let h="body"===a.kind?E.safeParse(a.body):null,i=e.data.data.flatMap(a=>{let b=G.safeParse(a);return b.success?[b.data]:[]});if(i.length>0&&i.every(a=>null==a.pageviews))return C("format",D);let j=new Map;for(let a of i){let b=36e5*Math.floor(a.timestamp/36e5);j.set(b,(j.get(b)??0)+(a.pageviews??0))}let k=[...j].sort((a,b)=>a[0]-b[0]).slice(-24).map(([a,b])=>({at:new Date(a),views:b}));if(h?.success)return{ok:!0,enabled:!0,total:h.data.data.pageviews,visitors:h.data.data.visitors,hourly:k};return{ok:!0,enabled:!0,total:k.reduce((a,b)=>a+b.views,0),visitors:null,hourly:k}}finally{clearTimeout(i),h.abort()}}var I=a.i(631107);async function J(a,b,c){let d=await (0,o.g)(null);if(!d.length)return;let e=new Date(36e5*Math.floor(a.getTime()/36e5)-828e5);await (0,t.P)(d,3,async d=>{if(Date.now()+8500>b)return;let f=await H(d.token,d.teamId,d.projectId,{since:e,until:a});if(!f.ok)return void c.push(`pageviews/${d.appName}: ${f.error}`);try{await (0,u.r)(d.appId,{pageviews:(0,I.a)(f,a)},a)}catch{c.push(`pageviews/${d.appName}: couldn't save the page views`)}})}var K=a.i(634418),L=a.i(930270),M=a.i(242605),N=a.i(683439);let O="security.afterDeploy",P=a=>"object"==typeof a&&null!==a&&!Array.isArray(a),Q=a=>"string"==typeof a&&a.length>0&&a.length<=100;function R(a){let b={pending:{},checked:{}};if(!P(a))return b;if(P(a.pending))for(let[c,d]of Object.entries(a.pending)){if(!(0,N.f)(c)||!P(d)||!Q(d.id)||"string"!=typeof d.at||Number.isNaN(Date.parse(d.at)))continue;let a="number"==typeof d.attempts&&Number.isInteger(d.attempts)&&d.attempts>=0?Math.min(d.attempts,3):0;b.pending[c]={id:d.id,at:d.at,attempts:a,...!0===d.next?{next:!0}:{},...!0===d.deps?{deps:!0}:{}}}if(P(a.checked))for(let[c,d]of Object.entries(a.checked))(0,N.f)(c)&&Q(d)&&(b.checked[c]=d);return b}function S(a,b){let c,d={...a.pending},e={...a.checked};for(let a of b){let b=d[a];b&&(delete d[a],delete e[a],e[a]=b.id)}return{pending:d,checked:(c=Object.entries(e)).length<=500?e:Object.fromEntries(c.slice(c.length-500))}}let T=(a,b)=>Object.entries(a.pending).filter(([,a])=>!a[b]).map(([a])=>a);var U=a.i(46126);let V="security.slot",W=a=>Array.isArray(a)?a.filter(a=>"string"==typeof a&&a.length>0&&a.length<=100).slice(0,1e3):[],X=(a,b)=>[...new Set([...a,...b])].slice(0,1e3),Y=a=>async()=>{let[c]=await (0,d.f)().select({value:e.settings.value}).from(e.settings).where((0,b.u)(e.settings.key,a)).limit(1);return c?.value??null},Z=a=>async b=>{await (0,d.f)().insert(e.settings).values({key:a,value:b}).onConflictDoUpdate({target:e.settings.key,set:{value:b,updatedAt:new Date}})},$={read:Y(O),write:Z(O),readSlot:Y(V),writeSlot:Z(V),nextCheck:M.h,depsStep:(a,b)=>(0,L.O)(a,b)};async function _(a,b=$){var c;let d,e=R(await b.read()),f=(c=a.now,(d=Object.entries(e.pending).filter(([,a])=>c.getTime()-Date.parse(a.at)>216e5).map(([a])=>a)).length?S(e,d):e),g=!a.paused.has("hosting"),h=!a.paused.has("devops"),i=g?T(f,"next"):[],j=h?T(f,"deps"):[],k=a.early?null:function(a,b){let c=a&&"object"==typeof a&&!Array.isArray(a)?a:{};if(c.slot!==b)return{slot:b,runs:0,next:[],repos:[],cut:{},nextDone:!1,depsDone:!1};let d="number"==typeof c.runs&&Number.isInteger(c.runs)&&c.runs>=0?c.runs:0,e={};if(c.cut&&"object"==typeof c.cut&&!Array.isArray(c.cut))for(let[a,b]of Object.entries(c.cut).slice(0,1e3))a.length<=100&&"number"==typeof b&&Number.isInteger(b)&&b>0&&(e[a]=Math.min(b,2));return{slot:b,runs:d,next:W(c.next),repos:W(c.repos),cut:e,nextDone:!0===c.nextDone,depsDone:!0===c.depsDone}}(await b.readSlot(),new Date((0,K.G)("security",a.now)).toISOString()),l=!!k&&g&&!k.nextDone,m=!!k&&h&&!k.depsDone,n=g&&(i.length>0||l),o=h&&(j.length>0||m),p={hosting:g,devops:h,nextDone:new Set,nextStarted:new Set,depsDone:new Set},q=async()=>{let c=Math.min(Date.now()+U.y,!k&&o?a.deadline-2*L.d:a.deadline),d=l?[...k.next,...Object.entries(k.cut).filter(([,a])=>a>=2).map(([a])=>a)]:[],e=l?{first:i,skip:[...new Set(d)].filter(a=>!i.includes(a))}:{only:i},f=await b.nextCheck(c,e);for(let b of f.failed)a.errors.push(`security ${b}`);for(let a of f.done)p.nextDone.add(a);for(let a of i)f.listed.includes(a)||p.nextDone.add(a);for(let a of f.started)p.nextStarted.add(a);if(l){let a=new Set(f.done);for(let b of(k.next=X(k.next,f.done),f.started))a.has(b)||(k.cut[b]=Math.min((k.cut[b]??0)+1,2));k.nextDone=f.listed.every(b=>a.has(b)||(k.cut[b]??0)>=2)}},r=async()=>{let c=await b.depsStep(Math.min(Date.now()+L.o,a.deadline),m?{marked:j,onlyMarked:!1,skip:k.repos}:{marked:j,onlyMarked:!0});for(let b of(c.problem&&a.errors.push(`security deps: ${c.problem}`),c.settled))p.depsDone.add(b);m&&(k.repos=X(k.repos,c.done),k.depsDone=c.complete)};try{k&&k.runs++,k?(o&&await r(),n&&await q()):(n&&await q(),o&&await r())}finally{let a=null;if(k)try{await b.writeSlot(k)}catch(b){a=b}try{let a=function(a,b){let c={},d=[];for(let[e,f]of Object.entries(a.pending)){let a={...f};b.hosting&&!a.next&&(b.nextDone?.has(e)?a.next=!0:b.nextStarted?.has(e)&&(a.attempts=Math.min(a.attempts+1,3))),b.devops&&!a.deps&&b.depsDone?.has(e)&&(a.deps=!0),c[e]=a,((a.next||!b.hosting)&&(a.deps||!b.devops)||a.attempts>=3)&&d.push(e)}return S({pending:c,checked:a.checked},d)}(f,p);JSON.stringify(a)!==JSON.stringify(e)&&await b.write(a)}catch(b){a??=b}if(a)throw a}return{complete:!k||(k.nextDone||!g)&&(k.depsDone||!h)||k.runs>=20}}async function aa(a,b,c=$){if(!a.length)return!1;let{state:d,changed:e}=function(a,b,c){let d={pending:{...a.pending},checked:{...a.checked}},e=!1;for(let a of b)(0,N.f)(a.appId)&&Q(a.deploymentId)&&d.checked[a.appId]!==a.deploymentId&&d.pending[a.appId]?.id!==a.deploymentId&&(d.pending[a.appId]={id:a.deploymentId,at:c.toISOString(),attempts:0},e=!0);return{state:d,changed:e}}(R(await c.read()),a,b);return e&&await c.write(d),e}var ab=a.i(46396),ac=a.i(492665),ad=a.i(519051),ae=a.i(572134),af=a.i(646324),ag=a.i(443002),ah=a.i(900477),ai=a.i(639271),aj=a.i(514670),ak=a.i(354448),al=a.i(584897),am=a.i(697365);async function an(a){let b=[await (0,ag.I)(()=>ap(a)),await (0,ag.I)(()=>ar(a)),await (0,ag.I)(()=>as(a))].find(a=>null!==a);if(b)throw b}let ao=a=>a.toISOString();async function ap(a){for(let{acc:b,credential:c}of(await (0,ag.O)("turso"))){if((0,ag.s)(a),!c){a.errors.push(`turso/${b.label}: credential can't be read`);continue}let d=await (0,ag.e)(b.id,"turso_database");if(!d.length)continue;let e=await (0,ak.u)(c,(0,ag.s)(a));if(!e.ok){await (0,ag.w)("turso",b,d,e,a);continue}let f=new Set(d.map(a=>String(a.r.meta.org??""))),g=[];for(let h of e.data.filter(a=>f.has(a.slug))){let[e,f]=await Promise.all([(0,ak.X)(c,h.slug,(0,ag.s)(a)),(0,ak.d)(c,h.slug,(0,ag.s)(a))]),i=d.filter(a=>a.r.meta.org===h.slug);if(!e.ok){for(let b of i)await (0,ag.a)(b,{state:"unknown",label:"Unknown",patch:{}},a.now);a.errors.push(`turso/${b.label}: ${e.error}`);continue}let j=new Map(e.data.map(a=>[a.id,a]));for(let b of i)g.push(await aq(b,j.get(b.r.externalId),h,f,a))}let h=new Set(e.data.map(a=>a.slug));for(let b of d.filter(a=>!h.has(String(a.r.meta.org??""))))g.push(await (0,ag.a)(b,{state:"off",label:"Organization not visible to this token",patch:{}},a.now));await (0,ag.M)(g)}}async function aq(a,b,c,d,e){if(!b)return(0,ag.a)(a,{state:"off",label:"Not found",patch:{}},e.now);let f=(0,ai.i)({blockReads:b.blockReads,blockWrites:b.blockWrites,orgBlockedReads:c.blockedReads,orgBlockedWrites:c.blockedWrites}),g={org:c.slug,group:b.group,primaryRegion:b.primaryRegion,plan:c.plan,blockReads:b.blockReads,blockWrites:b.blockWrites};if(d.ok){let a=d.data.byDb.get(b.id);Object.assign(g,{rowsRead:a?.rowsRead??null,rowsWritten:a?.rowsWritten??null,storageBytes:a?.storageBytes??null,orgRowsRead:d.data.org.rowsRead,orgRowsWritten:d.data.org.rowsWritten,orgStorageBytes:d.data.org.storageBytes,orgDatabases:d.data.org.databases,usageAt:ao(e.now),usageError:null})}else"column"===(0,ah.t)(d,!1)?g.usageError=d.error:e.errors.push(`turso/${a.r.name} usage: ${d.error}`);return(0,ag.a)(a,{...f,patch:g},e.now)}async function ar(a){for(let{acc:b,credential:c}of(await (0,ag.O)("upstash"))){(0,ag.s)(a);let d=c?(0,al.L)(c):null;if(!d){a.errors.push(`upstash/${b.label}: credential can't be read`);continue}let e=await (0,ag.e)(b.id,"upstash_redis");if(!e.length)continue;let f=await (0,al.M)(d,(0,ag.s)(a));if(!f.ok){await (0,ag.w)("upstash",b,e,f,a);continue}let g=new Map(f.data.map(a=>[a.id,a])),{out:h,skipped:i}=await (0,ag.T)(a,e,(a,b)=>g.has(a.r.externalId)?(0,al.Z)(d,a.r.externalId,b):Promise.resolve(null)),j=[];for(let[b,c]of e.entries()){let d=g.get(c.r.externalId);if(!d){j.push(await (0,ag.a)(c,{state:"off",label:"Not found",patch:{}},a.now));continue}let e=(0,ai.t)(d.state),f={region:d.region,status:d.state,type:d.type},i=h[b];i?.ok?Object.assign(f,{...i.data,statsAt:ao(a.now),statsError:null}):i&&"column"===(0,ah.t)(i,!1)?f.statsError=i.error:i&&a.errors.push(`upstash/${c.r.name} stats: ${i.error}`),j.push(await (0,ag.a)(c,{...e,patch:f},a.now))}await (0,ag.M)(j),(0,ag.W)(i)}}async function as(a){let b={};for(let{acc:c,credential:d}of(await (0,ag.O)("cloudflare"))){if((0,ag.s)(a),!d)continue;let e=await au(c.id,d,a);if(!e.length){b[c.id]={d1:"error",analytics:null,at:ao(a.now),note:"No Cloudflare account found for this token"};continue}let f="ok",g=null;for(let b of e){let e=await (0,aj.L)(d,b,(0,ag.s)(a));if(!e.ok){"error"==(f="scope"===e.kind||"auth"===e.kind?"missing":"error")&&a.errors.push(`d1/${c.label}: ${e.error}`);continue}await av(c.id,b,e.data,a.now);let h=(await (0,ag.e)(c.id,"d1_database")).filter(a=>a.r.meta.accountId===b);if(!h.length)continue;let i=await (0,aj.t)(d,b,(0,aj.Y)(a.now),(0,ag.s)(a));g=i.ok?g??"ok":"scope"===i.kind?"missing":g??"error",i.ok||"scope"===i.kind||a.errors.push(`d1/${c.label} analytics: ${i.error}`);let{out:j,skipped:k}=await (0,ag.T)(a,h,(a,c)=>(0,aj.m)(d,b,a.r.externalId,c)),l=new Map((i.ok?i.data:[]).map(a=>[a.databaseId,a])),m=j.map(a=>a?.ok?a.data.sizeBytes??0:0),n={accountRowsRead:i.ok?i.data.reduce((a,b)=>a+b.rowsRead,0):null,accountRowsWritten:i.ok?i.data.reduce((a,b)=>a+b.rowsWritten,0):null,accountSizeBytes:j.every(a=>a?.ok)?m.reduce((a,b)=>a+b,0):null,accountDatabases:e.data.length},o=[];for(let[b,c]of h.entries()){let d=j[b];void 0!==d&&o.push(await at(c,d,l.get(c.r.externalId)??null,i.ok,i.ok?null:i.error,n,a))}await (0,ag.M)(o),(0,ag.W)(k)}b[c.id]={d1:f,analytics:g,at:ao(a.now),note:null}}await (0,d.f)().insert(e.settings).values({key:am.F,value:b}).onConflictDoUpdate({target:e.settings.key,set:{value:b,updatedAt:a.now}})}async function at(a,b,c,d,e,f,g){let h={accountId:a.r.meta.accountId??null,createdAt:a.r.meta.createdAt??null,accountDatabases:f.accountDatabases};if(b.ok?Object.assign(h,{sizeBytes:b.data.sizeBytes,numTables:b.data.numTables,readReplication:b.data.readReplication,detailsAt:ao(g.now),detailsError:null}):"scope"===b.kind?h.detailsError=b.error:g.errors.push(`d1/${a.r.name}: ${b.error}`),d?Object.assign(h,{rowsRead:c?.rowsRead??0,rowsWritten:c?.rowsWritten??0,readQueries:c?.readQueries??0,writeQueries:c?.writeQueries??0,accountRowsRead:f.accountRowsRead,accountRowsWritten:f.accountRowsWritten,usageDay:(0,aj.Y)(g.now),usageAt:ao(g.now),usageError:null}):h.usageError=e,null!==f.accountSizeBytes&&(h.accountSizeBytes=f.accountSizeBytes),!b.ok&&"transient"===b.kind)return(0,ag.a)(a,{state:"unknown",label:"Unknown",patch:{}},g.now);let i=(0,ai.c)(d?f:{accountRowsRead:null,accountRowsWritten:null});return(0,ag.a)(a,{...i,patch:h},g.now)}async function au(a,c,f){let g=new Set,h=await (0,aj.N)(c,(0,ag.s)(f));if(h.ok)for(let a of h.data)g.add(a.id);for(let c of(await (0,d.f)().select({meta:e.resources.meta}).from(e.resources).where((0,b.b)((0,b.u)(e.resources.accountId,a),(0,b.u)(e.resources.kind,"zone"),(0,b.M)(e.resources.goneAt))).limit(200)))"string"==typeof c.meta.accountId&&/^[0-9a-f]{32}$/i.test(c.meta.accountId)&&g.add(c.meta.accountId);return[...g].slice(0,5)}async function av(a,c,f,g){let h=(await (0,d.f)().select({id:e.resources.id,externalId:e.resources.externalId,meta:e.resources.meta,goneAt:e.resources.goneAt}).from(e.resources).where((0,b.b)((0,b.u)(e.resources.accountId,a),(0,b.u)(e.resources.kind,"d1_database")))).filter(a=>a.meta.accountId===c),i=new Map(h.map(a=>[a.externalId,a])),j=new Set(f.map(a=>a.uuid));await (0,d.f)().transaction(async d=>{for(let h of f){let f={accountId:c,createdAt:h.createdAt},j=i.get(h.uuid);j?await d.update(e.resources).set({name:h.name,meta:f,lastSeenAt:g,goneAt:null,updatedAt:g}).where((0,b.u)(e.resources.id,j.id)):await d.insert(e.resources).values({accountId:a,kind:"d1_database",externalId:h.uuid,name:h.name,meta:f,monitored:!0,lastSeenAt:g}).onConflictDoNothing({target:[e.resources.accountId,e.resources.kind,e.resources.externalId]})}let k=h.filter(a=>!j.has(a.externalId)&&!a.goneAt).map(a=>a.id);k.length&&await d.update(e.resources).set({goneAt:g,updatedAt:g}).where((0,b.y)(e.resources.id,k))})}var aw=a.i(666680),ax=a.i(263251);async function ay(a=new Date){let b=(0,aw.randomUUID)(),e=new Date(a.getTime()+K.d).toISOString(),f=await (0,d.f)().execute(c.B`
2
2
  insert into ops.settings (key, value) values ('collector.lease', ${JSON.stringify({until:e,owner:b})}::jsonb)
3
3
  on conflict (key) do update set value = excluded.value, updated_at = now()
4
4
  where (ops.settings.value->>'until')::timestamptz < ${a.toISOString()}::timestamptz
5
- returning key`);return(0,av.f)(f).length>0?b:null}async function ax(a){await (0,d.f)().execute(c.B`
5
+ returning key`);return(0,ax.f)(f).length>0?b:null}async function az(a){await (0,d.f)().execute(c.B`
6
6
  update ops.settings set value = jsonb_build_object('until', '1970-01-01T00:00:00Z'), updated_at = now()
7
- where key = 'collector.lease' and value->>'owner' = ${a}`)}var ay=a.i(418864),az=a.i(903816),aA=a.i(445710),aB=a.i(306556),aC=a.i(648338);a.i(569057);let aD="collector.lastRun",aE="vercel.backoffUntil",aF="vercel.currentMiss",aG={supabase:ae.P,supabaseUsage:ae.y,neon:ae.f,firebase:ae.g,firebaseUsage:ae.x,extraDbs:al};async function aH(){let a=await (0,d.f)().select({key:e.settings.key,value:e.settings.value}).from(e.settings).where((0,b.y)(e.settings.key,[aD,M])).limit(2);return{lastRun:a.find(a=>a.key===aD)?.value??{},afterDeploy:a.find(a=>a.key===M)?.value??null}}async function aI(a){await (0,d.f)().insert(e.settings).values({key:aD,value:a}).onConflictDoUpdate({target:e.settings.key,set:{value:a,updatedAt:new Date}})}let aJ=a=>(0,m.f)(a);async function aK(a,f,g,h,i=[]){let j=(await (0,d.f)().select({m:e.monitors,app:e.resources}).from(e.monitors).innerJoin(e.resources,(0,b.u)(e.resources.id,e.monitors.resourceId)).where((0,b.b)((0,b.u)(e.monitors.kind,"http"),(0,b.u)(e.monitors.paused,!1),(0,b.u)(e.monitors.ownerPaused,!1),(0,b.u)(e.resources.monitored,!0),(0,b.M)(e.resources.goneAt))).orderBy(c.B`${e.monitors.lastCheckedAt} asc nulls first`,e.monitors.id)).filter(({m:b})=>(0,I.B)(b.lastCheckedAt,a,h));if(!j.length)return 0;let k=await (0,r.P)(j,6,({m:a})=>{let b=(0,I.P)(a.timeoutMs,f,Date.now());return null===b?Promise.resolve(null):(0,r.b)(a.url,{expectedStatus:a.expectedStatus,timeoutMs:b,body:(0,az.C)(a)})}),l=j.flatMap((a,b)=>k[b]?[{...a,r:k[b]}]:[]);if(l.length<j.length&&g.push(`checks: ${j.length-l.length} monitors skipped, time budget used`),!l.length)return 0;let m=[];for(let b of l)await (0,aA.j)(b.m,b.r,a)&&m.push(b);return m.length?(await (0,d.f)().insert(e.checks).values(m.map(({m:b,app:c,r:d})=>({monitorId:b.id,at:a,ok:d.ok,statusCode:d.statusCode,latencyMs:d.latencyMs,error:d.error,inMaintenance:null!==(0,ab.x)(i,{monitorId:b.id,appId:c.id},a)}))),await aJ(m.map(({m:b,app:c,r:d})=>(0,aB.F)({resourceId:c.id,path:(0,ad.K)(b.url),prev:b.state,next:(0,aB.G)(b.failStreak,d).state,code:d.statusCode,error:d.error,at:a}))),m.length):0}let aL=["checks","heartbeats"];async function aM(a,b,c=l.w){if(!aL.some(b=>a.includes(b)))return[];try{return await c()}catch(a){return b.push(`maintenance: ${(0,aC.f)(a)}`),[]}}async function aN(a){let[c]=await (0,d.f)().select().from(e.settings).where((0,b.u)(e.settings.key,aE)).limit(1),f=c?.value?.until;return!!f&&a.getTime()<new Date(f).getTime()}async function aO(a,b){if("transient"!==a.kind||!a.retryAfterS)return!1;let c={until:new Date(b.getTime()+1e3*Math.min(a.retryAfterS,3600)).toISOString()};return await (0,d.f)().insert(e.settings).values({key:aE,value:c}).onConflictDoUpdate({target:e.settings.key,set:{value:c,updatedAt:b}}),!0}let aP=a=>c.B`coalesce(${e.deployments.externalId} = ${a}::text, false)`;async function aQ(a,f,g,h,i=$){let j=[];try{for(let i of a){let a=f.filter(a=>a.resourceId===i.id),{currentId:k,previousId:l}=(0,ad.a)(a.map(a=>({id:a.id,createdAt:a.createdAt??new Date(0)})),(i.externalId?g.get(i.externalId):null)??null),m=await (0,d.f)().update(e.deployments).set({isCurrent:aP(k),isPreviousProduction:aP(l),updatedAt:h.now}).where((0,b.b)((0,b.u)(e.deployments.resourceId,i.id),(0,b.F)(c.B`${e.deployments.isCurrent} is distinct from ${aP(k)}`,c.B`${e.deployments.isPreviousProduction} is distinct from ${aP(l)}`))).returning({id:e.deployments.externalId}),n=function(a){var b,c;let d=a.currentId;return d&&a.state.checked[a.appId]!==d&&a.state.pending[a.appId]?.id!==d&&(b=a.changedIds,((c=d)&&b.includes(c)?c:null)||a.createdAt&&a.now.getTime()-a.createdAt.getTime()<=216e5)?d:null}({appId:i.id,currentId:k,changedIds:m.map(a=>a.id),createdAt:a.find(a=>a.id===k)?.createdAt??null,state:h.afterDeploy,now:h.now});n&&j.push({appId:i.id,deploymentId:n})}}finally{if(j.length)try{await i(j,h.now)}catch(a){h.errors.push(`vercel/${h.label}: after-deploy security check not scheduled: ${(0,aC.f)(a)}`)}}}async function aR(a,c,f,h){if(await aN(a))return;let i=(0,aa.f)().OPS_ENCRYPTION_KEY;for(let j of(await (0,d.f)().select().from(e.accounts).where((0,b.b)((0,b.u)(e.accounts.provider,"vercel"),(0,b.u)(e.accounts.status,"ok"))))){let k=(0,n.V)({ciphertext:j.credentialCiphertext,iv:j.credentialIv},i);if((0,g.A)(k)||!k){f.push(`vercel/${j.label}: credential can't be read`);continue}let l=await (0,d.f)().select().from(e.resources).where((0,b.b)((0,b.u)(e.resources.accountId,j.id),(0,b.u)(e.resources.kind,"app"),(0,b.u)(e.resources.monitored,!0),(0,b.M)(e.resources.goneAt)));if(!l.length)continue;let m=new Map(l.map(a=>[a.externalId,a])),o=await (0,ac.X)(k);if(!o.ok){let c=(0,g.E)({ok:!1,kind:o.kind,error:o.error});if(c&&await (0,d.f)().update(e.accounts).set({...c,updatedAt:a}).where((0,b.u)(e.accounts.id,j.id)),f.push(`vercel/${j.label}: ${o.error}`),await aO(o,a))return;continue}let p=new Set(l.map(a=>String(a.meta.teamId)));for(let g of o.data.filter(a=>p.has(a.id))){if(Date.now()>c)return void f.push("vercel: skipped remaining teams, time budget used");let[i,j]=await Promise.all([(0,ac.W)(k,g),(0,ac.K)(k,g,{since:a.getTime()-6048e5,limit:100})]);if(!i.ok||!j.ok){let b=i.ok?j:i;if(f.push(`vercel/${g.name}: ${b.error}`),await aO(b,a))return;continue}let n=new Map(i.data.map(a=>[a.id,a.currentDeploymentId])),o=j.data.filter(a=>m.has(a.projectId)),p=new Map((o.length?await (0,d.f)().select({externalId:e.deployments.externalId,state:e.deployments.state,target:e.deployments.target,branch:e.deployments.branch,commitSha:e.deployments.commitSha,commitMessage:e.deployments.commitMessage,source:e.deployments.source,url:e.deployments.url,buildingAt:e.deployments.buildingAt,readyAt:e.deployments.readyAt}).from(e.deployments).where((0,b.y)(e.deployments.externalId,o.map(a=>a.id))):[]).map(a=>[a.externalId,a])),q=[];for(let b of o){let c=m.get(b.projectId),f=p.get(b.id),g={state:b.state,target:b.target,branch:b.branch,commitSha:b.sha,commitMessage:b.message,source:b.source,url:b.url,buildingAt:b.buildingAt,readyAt:b.readyAt};if((0,ad.E)(f,g)){let f={resourceId:c.id,externalId:b.id,...g,createdAtProvider:b.createdAt,updatedAt:a};await (0,d.f)().insert(e.deployments).values(f).onConflictDoUpdate({target:e.deployments.externalId,set:f})}q.push((0,aB.L)(f?.state,b,c.id,a))}await aJ(q);let r=l.filter(a=>String(a.meta.teamId)===g.id),s=await (0,d.f)().select({resourceId:e.deployments.resourceId,id:e.deployments.externalId,createdAt:e.deployments.createdAtProvider}).from(e.deployments).where((0,b.b)((0,b.y)(e.deployments.resourceId,r.map(a=>a.id)),(0,b.u)(e.deployments.target,"production"),(0,b.u)(e.deployments.state,"ready"))),[t]=await (0,d.f)().select().from(e.settings).where((0,b.u)(e.settings.key,aF)).limit(1),u=[],v=()=>u.length?(0,d.f)().insert(e.settings).values({key:aF,value:(0,ad.Y)(t?.value,u,a)}).onConflictDoUpdate({target:e.settings.key,set:{value:(0,ad.Y)(t?.value,u,a),updatedAt:a}}):Promise.resolve();for(let b of(0,ad.Q)(r,n,s,(0,ad.S)(t?.value,a))){if(Date.now()>c)break;let h=await (0,ac.S)(k,g,b.deploymentId);if(!h.ok){if(f.push(`vercel/${g.name}: current deployment: ${h.error}`),await aO(h,a))return void await v();u.push(b.deploymentId);continue}let i=h.data,j={resourceId:b.appId,externalId:i.id,state:i.state,target:i.target,branch:i.branch,commitSha:i.sha,commitMessage:i.message,source:i.source,url:i.url,buildingAt:i.buildingAt,readyAt:i.readyAt,createdAtProvider:i.createdAt,updatedAt:a};await (0,d.f)().insert(e.deployments).values(j).onConflictDoUpdate({target:e.deployments.externalId,set:j}),"ready"===i.state&&"production"===i.target?s.push({resourceId:b.appId,id:i.id,createdAt:i.createdAt}):u.push(b.deploymentId)}await v(),await aQ(r,s,n,{now:a,afterDeploy:h,errors:f,label:g.name})}}}async function aS(a){let g=await (0,d.f)().select().from(e.resources).where((0,b.b)((0,b.u)(e.resources.kind,"app"),(0,b.u)(e.resources.monitored,!0),(0,b.M)(e.resources.goneAt)));if(!g.length)return;let h=await (0,d.f)().select().from(e.monitors).where((0,b.b)((0,b.y)(e.monitors.resourceId,g.map(a=>a.id)),(0,b.u)(e.monitors.paused,!1),(0,b.u)(e.monitors.ownerPaused,!1))),i=new Set((await (0,d.f)().select({r:e.deployments.resourceId}).from(e.deployments).where((0,b.b)((0,b.y)(e.deployments.resourceId,g.map(a=>a.id)),(0,b.u)(e.deployments.target,"production"),(0,b.u)(e.deployments.state,"building"),(0,b.B)(e.deployments.createdAtProvider,new Date(a.getTime()-36e5))))).map(a=>a.r)),j=await (0,ae.q)(g.map(a=>a.id)),k=new Map((await (0,d.f)().select().from(e.snapshots).where((0,b.y)(e.snapshots.resourceId,g.map(a=>a.id)))).map(a=>[a.resourceId,a])),l=new Map(g.map(a=>[a.id,a])),m=(0,f.P)(h.map(a=>({id:a.id,kind:a.kind,url:a.url,appId:a.resourceId,appName:l.get(a.resourceId)?.name??"",appMeta:l.get(a.resourceId)?.meta,lastError:a.lastError})),g),n=a=>m.has(a.id)&&"err"===a.state?"warn":a.state;for(let[a,i]of(0,f.R)(h.map(a=>({id:a.id,kind:a.kind,url:a.url,appId:a.resourceId,appName:l.get(a.resourceId)?.name??"",appMeta:l.get(a.resourceId)?.meta,lastError:a.lastError})),g))await (0,d.f)().update(e.resources).set({meta:c.B`${e.resources.meta} || ${JSON.stringify({pastDomains:i})}::jsonb`}).where((0,b.u)(e.resources.id,a));for(let b of g){let f=h.filter(a=>a.resourceId===b.id),g=(0,aB.V)({monitors:f.map(n),building:i.has(b.id),dbPaused:j.has(b.id)}),l=f.find(a=>"err"===a.state)??f.find(a=>"warn"===a.state),m={code:l?.lastStatus??null,latencyMs:f.find(a=>"heartbeat"!==a.kind)?.lastLatencyMs??null,dbPaused:j.has(b.id)},o=k.get(b.id);await (0,d.f)().insert(e.snapshots).values({resourceId:b.id,state:g,data:m,collectedAt:a,stateSince:a}).onConflictDoUpdate({target:e.snapshots.resourceId,set:{state:g,data:c.B`${e.snapshots.data} || ${JSON.stringify(m)}::jsonb`,collectedAt:a,...o?.state!==g?{stateSince:a}:{}}})}}async function aT(a,b={}){let c={writeLastRun:aI,refreshApps:aS,refreshNetwork:ay.x,invalidate:h.D,...b};try{await c.writeLastRun({...a.lastRun,...Object.fromEntries(a.done.map(b=>[b,a.started.toISOString()]))});try{await c.refreshApps(new Date)}catch(b){a.errors.push(`app-snapshots: ${(0,aC.f)(b)}`)}if(a.done.some(a=>ay.p.includes(a)))try{await c.refreshNetwork(new Date)}catch(b){a.errors.push(`network-states: ${(0,aC.f)(b)}`)}}finally{c.invalidate((0,i.o)(a.tried??a.done))}}async function aU(a,b,c,d={evaluate:j.$,deliver:p.q,digest:p.J}){let e=[];if(a.includes("alerts"))if(Date.now()>b)c.push("alerts: skipped, time budget used");else{let a=!0;try{await d.evaluate(new Date),console.info("collector alerts evaluated")}catch(b){a=!1,c.push(`alerts: ${(0,aC.f)(b)}`)}try{await d.deliver(new Date,b),console.info("collector notifications delivered")}catch(b){a=!1,c.push(`notify: ${(0,aC.f)(b)}`)}a&&e.push("alerts")}if(a.includes("digest")&&(0,I.z)("digest",b,Date.now()))try{await d.digest(new Date),console.info("collector digest done"),e.push("digest")}catch(a){c.push(`digest: ${(0,aC.f)(a)}`)}return e}async function aV(a,b,c,d){let e=[],f=[];for(let g of a){if(Date.now()>b){c.push(`${g}: skipped, time budget used`);continue}if((0,I.z)(g,b,Date.now())){f.push(g);try{await d(g),e.push(g)}catch(a){c.push(`${g}: ${(0,aC.f)(a)}`)}}}return{done:e,tried:f}}async function aW(a){let c,f=new Date,g=await aw(f);if(!g)return{skipped:!0,ok:!0,tasks:[],checks:0,durationMs:0,errors:[]};try{[c]=await (0,d.f)().insert(e.collectorRuns).values({startedAt:f,trigger:"builtin"===a?"manual":a}).returning({id:e.collectorRuns.id})}catch(a){throw await ax(g).catch(()=>void 0),a}let h=[],i=[],j=0,l=f.getTime()+I.p,m=a=>console.info(`collector ${a} +${Date.now()-f.getTime()}ms`);try{var n;m("start");let{lastRun:b,afterDeploy:c}=await aH(),d="cron_job_org"!==a&&"builtin"!==a,e=await (0,q.I)(),{due:g,early:p}=(0,I._)((0,I.S)(b,f,d,e),(n=P(c),Object.keys(n.pending).length>0),e),r=!1,s=a=>p||!r?a.filter(a=>"security"!==a):a,t=g.filter(a=>I.u.includes(a)),u=t.includes("alerts")?l-I.X:l,v=await aM(g,h);m(`due ${g.join(",")}`);let{done:w,tried:x}=await aV(g.filter(a=>!I.u.includes(a)),u,h,async a=>{if(m(`task ${a}`),"heartbeats"===a){let a=new Date;j+=await (0,k.f)(a,(b,c)=>null!==(0,ab.x)(v,{monitorId:b,appId:c},a),d)}"checks"===a&&(j+=await aK(new Date,u,h,d,v)),"vercel"===a&&await aR(new Date,u,h,P(c));let b=aG[a];b&&await b({now:new Date,deadline:u,errors:h,protectOnly:(0,I.$)(a,e)}),"cloudflare"===a&&await (0,ay.h)(new Date,u,h),"domains"===a&&await (0,ay.H)(new Date,u,h),"tls"===a&&await (0,ay.V)(new Date,u,h),"rdap"===a&&await (0,ay.W)(new Date,u,h),"eol"===a&&await (0,ay.i)(new Date,u,h),"status"===a&&await (0,_.i)(new Date),"logs"===a&&await (0,o._)(new Date,u,h),"pageviews"===a&&await H(new Date,u,h),"security"===a&&(r=(await Z({now:f,deadline:u,errors:h,paused:e,early:p})).complete)});i.push(...w),m("main done"),await aT({lastRun:b,done:s(i),tried:x,started:f,errors:h}),m("settled");let y=await aU(t,l,h);m("post done"),y.length&&await aI({...b,...Object.fromEntries(s([...i,...y]).map(a=>[a,f.toISOString()]))}),i.push(...y)}catch(a){h.push(`run: ${(0,aC.f)(a)}`)}finally{let a=Date.now()-f.getTime();await (0,d.f)().update(e.collectorRuns).set({finishedAt:new Date,ok:0===h.length,errorSummary:h.join("\n").slice(0,2e3)||null,durationMs:a,tasks:i,checks:j}).where((0,b.u)(e.collectorRuns.id,c.id)).catch(()=>void 0),await ax(g).catch(()=>void 0)}return{skipped:!1,ok:0===h.length,tasks:i,checks:j,durationMs:Date.now()-f.getTime(),errors:h}}a.s(["f",0,aW],270432)}];
7
+ where key = 'collector.lease' and value->>'owner' = ${a}`)}var aA=a.i(418864),aB=a.i(50908),aC=a.i(288950),aD=a.i(903816),aE=a.i(445710),aF=a.i(306556),aG=a.i(648338);a.i(569057);let aH="collector.lastRun",aI="vercel.backoffUntil",aJ="vercel.currentMiss",aK={supabase:ag.P,supabaseUsage:ag.y,neon:ag.f,firebase:ag.g,firebaseUsage:ag.x,extraDbs:an};async function aL(){let a=await (0,d.f)().select({key:e.settings.key,value:e.settings.value}).from(e.settings).where((0,b.y)(e.settings.key,[aH,O])).limit(2);return{lastRun:a.find(a=>a.key===aH)?.value??{},afterDeploy:a.find(a=>a.key===O)?.value??null}}async function aM(a){await (0,d.f)().insert(e.settings).values({key:aH,value:a}).onConflictDoUpdate({target:e.settings.key,set:{value:a,updatedAt:new Date}})}let aN=a=>(0,m.f)(a);async function aO(a,f,g,h,i=[]){let j=(await (0,d.f)().select({m:e.monitors,app:e.resources}).from(e.monitors).innerJoin(e.resources,(0,b.u)(e.resources.id,e.monitors.resourceId)).where((0,b.b)((0,b.u)(e.monitors.kind,"http"),(0,b.u)(e.monitors.paused,!1),(0,b.u)(e.monitors.ownerPaused,!1),(0,b.u)(e.resources.monitored,!0),(0,b.M)(e.resources.goneAt))).orderBy(c.B`${e.monitors.lastCheckedAt} asc nulls first`,e.monitors.id)).filter(({m:b})=>(0,K.B)(b.lastCheckedAt,a,h));if(!j.length)return 0;let k=await (0,t.P)(j,6,({m:a})=>{let b=(0,K.P)(a.timeoutMs,f,Date.now());return null===b?Promise.resolve(null):(0,t.b)(a.url,{expectedStatus:a.expectedStatus,timeoutMs:b,body:(0,aD.C)(a)})}),l=j.flatMap((a,b)=>k[b]?[{...a,r:k[b]}]:[]);if(l.length<j.length&&g.push(`checks: ${j.length-l.length} monitors skipped, time budget used`),!l.length)return 0;let m=[];for(let b of l)await (0,aE.j)(b.m,b.r,a)&&m.push(b);return m.length?(await (0,d.f)().insert(e.checks).values(m.map(({m:b,app:c,r:d})=>({monitorId:b.id,at:a,ok:d.ok,statusCode:d.statusCode,latencyMs:d.latencyMs,error:d.error,inMaintenance:null!==(0,ad.x)(i,{monitorId:b.id,appId:c.id},a)}))),await aN(m.map(({m:b,app:c,r:d})=>(0,aF.F)({resourceId:c.id,path:(0,af.K)(b.url),prev:b.state,next:(0,aF.G)(b.failStreak,d).state,code:d.statusCode,error:d.error,at:a}))),m.length):0}let aP=["checks","heartbeats"];async function aQ(a,b,c=l.w){if(!aP.some(b=>a.includes(b)))return[];try{return await c()}catch(a){return b.push(`maintenance: ${(0,aG.f)(a)}`),[]}}async function aR(a){let[c]=await (0,d.f)().select().from(e.settings).where((0,b.u)(e.settings.key,aI)).limit(1),f=c?.value?.until;return!!f&&a.getTime()<new Date(f).getTime()}async function aS(a,b){if("transient"!==a.kind||!a.retryAfterS)return!1;let c={until:new Date(b.getTime()+1e3*Math.min(a.retryAfterS,3600)).toISOString()};return await (0,d.f)().insert(e.settings).values({key:aI,value:c}).onConflictDoUpdate({target:e.settings.key,set:{value:c,updatedAt:b}}),!0}let aT=a=>c.B`coalesce(${e.deployments.externalId} = ${a}::text, false)`;async function aU(a,f,g,h,i=aa){let j=[];try{for(let i of a){let a=f.filter(a=>a.resourceId===i.id),{currentId:k,previousId:l}=(0,af.a)(a.map(a=>({id:a.id,createdAt:a.createdAt??new Date(0)})),(i.externalId?g.get(i.externalId):null)??null),m=await (0,d.f)().update(e.deployments).set({isCurrent:aT(k),isPreviousProduction:aT(l),updatedAt:h.now}).where((0,b.b)((0,b.u)(e.deployments.resourceId,i.id),(0,b.F)(c.B`${e.deployments.isCurrent} is distinct from ${aT(k)}`,c.B`${e.deployments.isPreviousProduction} is distinct from ${aT(l)}`))).returning({id:e.deployments.externalId}),n=function(a){var b,c;let d=a.currentId;return d&&a.state.checked[a.appId]!==d&&a.state.pending[a.appId]?.id!==d&&(b=a.changedIds,((c=d)&&b.includes(c)?c:null)||a.createdAt&&a.now.getTime()-a.createdAt.getTime()<=216e5)?d:null}({appId:i.id,currentId:k,changedIds:m.map(a=>a.id),createdAt:a.find(a=>a.id===k)?.createdAt??null,state:h.afterDeploy,now:h.now});n&&j.push({appId:i.id,deploymentId:n})}}finally{if(j.length)try{await i(j,h.now)}catch(a){h.errors.push(`vercel/${h.label}: after-deploy security check not scheduled: ${(0,aG.f)(a)}`)}}}let aV=a=>new Map(a.map(a=>[a.id,{...a.branchFrom?{branchFrom:a.branchFrom}:{},...a.gitDirty?{gitDirty:!0}:{}}]));async function aW(a,b,c,d,e=new Map,f=s){try{await f(a,b,e)}catch(a){c.push(`vercel/${d}: production source not saved: ${(0,aG.f)(a)}`)}}async function aX(a,c,f,h){if(await aR(a))return;let i=(0,ac.f)().OPS_ENCRYPTION_KEY;for(let j of(await (0,d.f)().select().from(e.accounts).where((0,b.b)((0,b.u)(e.accounts.provider,"vercel"),(0,b.u)(e.accounts.status,"ok"))))){let k=(0,n.V)({ciphertext:j.credentialCiphertext,iv:j.credentialIv},i);if((0,g.A)(k)||!k){f.push(`vercel/${j.label}: credential can't be read`);continue}let l=await (0,d.f)().select().from(e.resources).where((0,b.b)((0,b.u)(e.resources.accountId,j.id),(0,b.u)(e.resources.kind,"app"),(0,b.u)(e.resources.monitored,!0),(0,b.M)(e.resources.goneAt)));if(!l.length)continue;let m=new Map(l.map(a=>[a.externalId,a])),o=await (0,ae.X)(k);if(!o.ok){let c=(0,g.E)({ok:!1,kind:o.kind,error:o.error});if(c&&await (0,d.f)().update(e.accounts).set({...c,updatedAt:a}).where((0,b.u)(e.accounts.id,j.id)),f.push(`vercel/${j.label}: ${o.error}`),await aS(o,a))return;continue}let p=new Set(l.map(a=>String(a.meta.teamId)));for(let g of o.data.filter(a=>p.has(a.id))){if(Date.now()>c)return void f.push("vercel: skipped remaining teams, time budget used");let[i,j]=await Promise.all([(0,ae.W)(k,g),(0,ae.K)(k,g,{since:a.getTime()-6048e5,limit:100})]);if(!i.ok||!j.ok){let b=i.ok?j:i;if(f.push(`vercel/${g.name}: ${b.error}`),await aS(b,a))return;continue}let n=new Map(i.data.map(a=>[a.id,a.currentDeploymentId])),o=j.data.filter(a=>m.has(a.projectId)),p=aV(o),q=new Map((o.length?await (0,d.f)().select({externalId:e.deployments.externalId,state:e.deployments.state,target:e.deployments.target,branch:e.deployments.branch,commitSha:e.deployments.commitSha,commitMessage:e.deployments.commitMessage,source:e.deployments.source,url:e.deployments.url,buildingAt:e.deployments.buildingAt,readyAt:e.deployments.readyAt}).from(e.deployments).where((0,b.y)(e.deployments.externalId,o.map(a=>a.id))):[]).map(a=>[a.externalId,a])),r=[];for(let b of o){let c=m.get(b.projectId),f=q.get(b.id),g={state:b.state,target:b.target,branch:b.branch,commitSha:b.sha,commitMessage:b.message,source:b.source,url:b.url,buildingAt:b.buildingAt,readyAt:b.readyAt};if((0,af.E)(f,g)){let f={resourceId:c.id,externalId:b.id,...g,createdAtProvider:b.createdAt,updatedAt:a};await (0,d.f)().insert(e.deployments).values(f).onConflictDoUpdate({target:e.deployments.externalId,set:f})}r.push((0,aF.L)(f?.state,b,c.id,a))}await aN(r);let s=l.filter(a=>String(a.meta.teamId)===g.id),t=await (0,d.f)().select({resourceId:e.deployments.resourceId,id:e.deployments.externalId,createdAt:e.deployments.createdAtProvider}).from(e.deployments).where((0,b.b)((0,b.y)(e.deployments.resourceId,s.map(a=>a.id)),(0,b.u)(e.deployments.target,"production"),(0,b.u)(e.deployments.state,"ready"))),[u]=await (0,d.f)().select().from(e.settings).where((0,b.u)(e.settings.key,aJ)).limit(1),v=[],w=()=>v.length?(0,d.f)().insert(e.settings).values({key:aJ,value:(0,af.Y)(u?.value,v,a)}).onConflictDoUpdate({target:e.settings.key,set:{value:(0,af.Y)(u?.value,v,a),updatedAt:a}}):Promise.resolve();for(let b of(0,af.Q)(s,n,t,(0,af.S)(u?.value,a))){if(Date.now()>c)break;let h=await (0,ae.S)(k,g,b.deploymentId);if(!h.ok){if(f.push(`vercel/${g.name}: current deployment: ${h.error}`),await aS(h,a))return void await w();v.push(b.deploymentId);continue}let i=h.data;for(let[a,b]of aV([i]))p.set(a,b);let j={resourceId:b.appId,externalId:i.id,state:i.state,target:i.target,branch:i.branch,commitSha:i.sha,commitMessage:i.message,source:i.source,url:i.url,buildingAt:i.buildingAt,readyAt:i.readyAt,createdAtProvider:i.createdAt,updatedAt:a};await (0,d.f)().insert(e.deployments).values(j).onConflictDoUpdate({target:e.deployments.externalId,set:j}),"ready"===i.state&&"production"===i.target?t.push({resourceId:b.appId,id:i.id,createdAt:i.createdAt}):v.push(b.deploymentId)}await w(),await aU(s,t,n,{now:a,afterDeploy:h,errors:f,label:g.name}),await aW(s,a,f,g.name,p)}}}async function aY(a){let g=await (0,d.f)().select().from(e.resources).where((0,b.b)((0,b.u)(e.resources.kind,"app"),(0,b.u)(e.resources.monitored,!0),(0,b.M)(e.resources.goneAt)));if(!g.length)return;let h=await (0,d.f)().select().from(e.monitors).where((0,b.b)((0,b.y)(e.monitors.resourceId,g.map(a=>a.id)),(0,b.u)(e.monitors.paused,!1),(0,b.u)(e.monitors.ownerPaused,!1))),i=new Set((await (0,d.f)().select({r:e.deployments.resourceId}).from(e.deployments).where((0,b.b)((0,b.y)(e.deployments.resourceId,g.map(a=>a.id)),(0,b.u)(e.deployments.target,"production"),(0,b.u)(e.deployments.state,"building"),(0,b.B)(e.deployments.createdAtProvider,new Date(a.getTime()-36e5))))).map(a=>a.r)),j=await (0,ag.q)(g.map(a=>a.id)),k=new Map((await (0,d.f)().select().from(e.snapshots).where((0,b.y)(e.snapshots.resourceId,g.map(a=>a.id)))).map(a=>[a.resourceId,a])),l=new Map(g.map(a=>[a.id,a])),m=(0,f.P)(h.map(a=>({id:a.id,kind:a.kind,url:a.url,appId:a.resourceId,appName:l.get(a.resourceId)?.name??"",appMeta:l.get(a.resourceId)?.meta,lastError:a.lastError})),g),n=a=>m.has(a.id)&&"err"===a.state?"warn":a.state;for(let[a,i]of(0,f.R)(h.map(a=>({id:a.id,kind:a.kind,url:a.url,appId:a.resourceId,appName:l.get(a.resourceId)?.name??"",appMeta:l.get(a.resourceId)?.meta,lastError:a.lastError})),g))await (0,d.f)().update(e.resources).set({meta:c.B`${e.resources.meta} || ${JSON.stringify({pastDomains:i})}::jsonb`}).where((0,b.u)(e.resources.id,a));for(let b of g){let f=h.filter(a=>a.resourceId===b.id),g=(0,aF.V)({monitors:f.map(n),building:i.has(b.id),dbPaused:j.has(b.id)}),l=f.find(a=>"err"===a.state)??f.find(a=>"warn"===a.state),m={code:l?.lastStatus??null,latencyMs:f.find(a=>"heartbeat"!==a.kind)?.lastLatencyMs??null,dbPaused:j.has(b.id)},o=k.get(b.id);await (0,d.f)().insert(e.snapshots).values({resourceId:b.id,state:g,data:m,collectedAt:a,stateSince:a}).onConflictDoUpdate({target:e.snapshots.resourceId,set:{state:g,data:c.B`${e.snapshots.data} || ${JSON.stringify(m)}::jsonb`,collectedAt:a,...o?.state!==g?{stateSince:a}:{}}})}}async function aZ(a,b={}){let c={writeLastRun:aM,refreshApps:aY,refreshNetwork:aA.x,invalidate:h.D,...b};try{await c.writeLastRun({...a.lastRun,...Object.fromEntries(a.done.map(b=>[b,a.started.toISOString()]))});try{await c.refreshApps(new Date)}catch(b){a.errors.push(`app-snapshots: ${(0,aG.f)(b)}`)}if(a.done.some(a=>aA.p.includes(a)))try{await c.refreshNetwork(new Date)}catch(b){a.errors.push(`network-states: ${(0,aG.f)(b)}`)}}finally{c.invalidate((0,i.o)(a.tried??a.done))}}async function a$(a,b,c,d={evaluate:j.$,deliver:p.q,digest:p.J}){let e=[];if(a.includes("alerts"))if(Date.now()>b)c.push("alerts: skipped, time budget used");else{let a=!0;try{await d.evaluate(new Date),console.info("collector alerts evaluated")}catch(b){a=!1,c.push(`alerts: ${(0,aG.f)(b)}`)}try{await d.deliver(new Date,b),console.info("collector notifications delivered")}catch(b){a=!1,c.push(`notify: ${(0,aG.f)(b)}`)}a&&e.push("alerts")}if(a.includes("digest")&&(0,K.z)("digest",b,Date.now()))try{await d.digest(new Date),console.info("collector digest done"),e.push("digest")}catch(a){c.push(`digest: ${(0,aG.f)(a)}`)}return e}async function a_(a,b,c,d){let e=[],f=[];for(let g of a){if(Date.now()>b){c.push(`${g}: skipped, time budget used`);continue}if((0,K.z)(g,b,Date.now())){f.push(g);try{await d(g),e.push(g)}catch(a){c.push(`${g}: ${(0,aG.f)(a)}`)}}}return{done:e,tried:f}}async function a0(a){let c,f=new Date,g=await ay(f);if(!g)return{skipped:!0,ok:!0,tasks:[],checks:0,durationMs:0,errors:[]};try{[c]=await (0,d.f)().insert(e.collectorRuns).values({startedAt:f,trigger:"builtin"===a?"manual":a}).returning({id:e.collectorRuns.id})}catch(a){throw await az(g).catch(()=>void 0),a}let h=[],i=[],j=0,l=f.getTime()+K.p,m=a=>console.info(`collector ${a} +${Date.now()-f.getTime()}ms`);try{var n;m("start");let{lastRun:b,afterDeploy:c}=await aL(),d="cron_job_org"!==a&&"builtin"!==a,e=await (0,q.I)(),{due:g,early:p}=(0,K._)((0,K.S)(b,f,d,e),(n=R(c),Object.keys(n.pending).length>0),e),r=!1,s=a=>p||!r?a.filter(a=>"security"!==a):a,t=g.filter(a=>K.u.includes(a)),u=t.includes("alerts")?l-K.X:l,v=await aQ(g,h);m(`due ${g.join(",")}`);let{done:w,tried:x}=await a_(g.filter(a=>!K.u.includes(a)),u,h,async a=>{if(m(`task ${a}`),"heartbeats"===a){let a=new Date;j+=await (0,k.f)(a,(b,c)=>null!==(0,ad.x)(v,{monitorId:b,appId:c},a),d)}"checks"===a&&(j+=await aO(new Date,u,h,d,v)),"vercel"===a&&await aX(new Date,u,h,R(c));let b=aK[a];b&&await b({now:new Date,deadline:u,errors:h,protectOnly:(0,K.$)(a,e)}),"cloudflare"===a&&await (0,aA.h)(new Date,u,h),"domains"===a&&await (0,aA.H)(new Date,u,h),"tls"===a&&await (0,aA.V)(new Date,u,h),"rdap"===a&&await (0,aA.W)(new Date,u,h),"eol"===a&&await (0,aA.i)(new Date,u,h),"node"===a&&(await (0,aB.q)(new Date,u,h),await (0,aC.L)(new Date,u,h)),"status"===a&&await (0,ab.i)(new Date),"logs"===a&&await (0,o._)(new Date,u,h),"pageviews"===a&&await J(new Date,u,h),"security"===a&&(r=(await _({now:f,deadline:u,errors:h,paused:e,early:p})).complete)});i.push(...w),m("main done"),await aZ({lastRun:b,done:s(i),tried:x,started:f,errors:h}),m("settled");let y=await a$(t,l,h);m("post done"),y.length&&await aM({...b,...Object.fromEntries(s([...i,...y]).map(a=>[a,f.toISOString()]))}),i.push(...y)}catch(a){h.push(`run: ${(0,aG.f)(a)}`)}finally{let a=Date.now()-f.getTime();await (0,d.f)().update(e.collectorRuns).set({finishedAt:new Date,ok:0===h.length,errorSummary:h.join("\n").slice(0,2e3)||null,durationMs:a,tasks:i,checks:j}).where((0,b.u)(e.collectorRuns.id,c.id)).catch(()=>void 0),await az(g).catch(()=>void 0)}return{skipped:!1,ok:0===h.length,tasks:i,checks:j,durationMs:Date.now()-f.getTime(),errors:h}}a.s(["f",0,a0],270432)}];
8
8
 
9
9
  //# sourceMappingURL=src_lib_collector_run_ts_0-q8is8s0y9cq._.js.map