watchbell 1.2.2 → 1.2.4

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 (1064) hide show
  1. package/bin/watchbell.mjs +5 -2
  2. package/package.json +1 -1
  3. package/server/.next/BUILD_ID +1 -1
  4. package/server/.next/build-manifest.json +105 -105
  5. package/server/.next/prerender-manifest.json +4 -4
  6. package/server/.next/server/app/(console)/(private)/ai/agents/page/build-manifest.json +3 -3
  7. package/server/.next/server/app/(console)/(private)/ai/agents/page/server-reference-manifest.json +32 -22
  8. package/server/.next/server/app/(console)/(private)/ai/agents/page.js +82 -80
  9. package/server/.next/server/app/(console)/(private)/ai/agents/page.js.nft.json +1 -1
  10. package/server/.next/server/app/(console)/(private)/ai/agents/page_client-reference-manifest.js +1 -1
  11. package/server/.next/server/app/(console)/(private)/ai/ask/page/build-manifest.json +3 -3
  12. package/server/.next/server/app/(console)/(private)/ai/ask/page/server-reference-manifest.json +30 -20
  13. package/server/.next/server/app/(console)/(private)/ai/ask/page.js +81 -79
  14. package/server/.next/server/app/(console)/(private)/ai/ask/page.js.nft.json +1 -1
  15. package/server/.next/server/app/(console)/(private)/ai/ask/page_client-reference-manifest.js +1 -1
  16. package/server/.next/server/app/(console)/(private)/ai/connect/page/build-manifest.json +3 -3
  17. package/server/.next/server/app/(console)/(private)/ai/connect/page/server-reference-manifest.json +28 -18
  18. package/server/.next/server/app/(console)/(private)/ai/connect/page.js +81 -79
  19. package/server/.next/server/app/(console)/(private)/ai/connect/page.js.nft.json +1 -1
  20. package/server/.next/server/app/(console)/(private)/ai/connect/page_client-reference-manifest.js +1 -1
  21. package/server/.next/server/app/(console)/(private)/ai/keys/page/build-manifest.json +3 -3
  22. package/server/.next/server/app/(console)/(private)/ai/keys/page/server-reference-manifest.json +34 -24
  23. package/server/.next/server/app/(console)/(private)/ai/keys/page.js +81 -79
  24. package/server/.next/server/app/(console)/(private)/ai/keys/page.js.nft.json +1 -1
  25. package/server/.next/server/app/(console)/(private)/ai/keys/page_client-reference-manifest.js +1 -1
  26. package/server/.next/server/app/(console)/(private)/ai/logs/page/build-manifest.json +3 -3
  27. package/server/.next/server/app/(console)/(private)/ai/logs/page/server-reference-manifest.json +30 -20
  28. package/server/.next/server/app/(console)/(private)/ai/logs/page.js +81 -79
  29. package/server/.next/server/app/(console)/(private)/ai/logs/page.js.nft.json +1 -1
  30. package/server/.next/server/app/(console)/(private)/ai/logs/page_client-reference-manifest.js +1 -1
  31. package/server/.next/server/app/(console)/(private)/ai/models/page/build-manifest.json +3 -3
  32. package/server/.next/server/app/(console)/(private)/ai/models/page/server-reference-manifest.json +48 -38
  33. package/server/.next/server/app/(console)/(private)/ai/models/page.js +81 -79
  34. package/server/.next/server/app/(console)/(private)/ai/models/page.js.nft.json +1 -1
  35. package/server/.next/server/app/(console)/(private)/ai/models/page_client-reference-manifest.js +1 -1
  36. package/server/.next/server/app/(console)/(private)/ai/page/build-manifest.json +3 -3
  37. package/server/.next/server/app/(console)/(private)/ai/page/server-reference-manifest.json +28 -18
  38. package/server/.next/server/app/(console)/(private)/ai/page.js +81 -79
  39. package/server/.next/server/app/(console)/(private)/ai/page.js.nft.json +1 -1
  40. package/server/.next/server/app/(console)/(private)/ai/page_client-reference-manifest.js +1 -1
  41. package/server/.next/server/app/(console)/(private)/ai/playground/page/build-manifest.json +3 -3
  42. package/server/.next/server/app/(console)/(private)/ai/playground/page/server-reference-manifest.json +34 -24
  43. package/server/.next/server/app/(console)/(private)/ai/playground/page.js +81 -79
  44. package/server/.next/server/app/(console)/(private)/ai/playground/page.js.nft.json +1 -1
  45. package/server/.next/server/app/(console)/(private)/ai/playground/page_client-reference-manifest.js +1 -1
  46. package/server/.next/server/app/(console)/(private)/ai/providers/page/build-manifest.json +3 -3
  47. package/server/.next/server/app/(console)/(private)/ai/providers/page/server-reference-manifest.json +40 -30
  48. package/server/.next/server/app/(console)/(private)/ai/providers/page.js +82 -80
  49. package/server/.next/server/app/(console)/(private)/ai/providers/page.js.nft.json +1 -1
  50. package/server/.next/server/app/(console)/(private)/ai/providers/page_client-reference-manifest.js +1 -1
  51. package/server/.next/server/app/(console)/(private)/ai/quota/page/build-manifest.json +3 -3
  52. package/server/.next/server/app/(console)/(private)/ai/quota/page/server-reference-manifest.json +30 -20
  53. package/server/.next/server/app/(console)/(private)/ai/quota/page.js +83 -81
  54. package/server/.next/server/app/(console)/(private)/ai/quota/page.js.nft.json +1 -1
  55. package/server/.next/server/app/(console)/(private)/ai/quota/page_client-reference-manifest.js +1 -1
  56. package/server/.next/server/app/(console)/(private)/ai/usage/page/build-manifest.json +3 -3
  57. package/server/.next/server/app/(console)/(private)/ai/usage/page/server-reference-manifest.json +30 -20
  58. package/server/.next/server/app/(console)/(private)/ai/usage/page.js +85 -82
  59. package/server/.next/server/app/(console)/(private)/ai/usage/page.js.nft.json +1 -1
  60. package/server/.next/server/app/(console)/(private)/ai/usage/page_client-reference-manifest.js +1 -1
  61. package/server/.next/server/app/(console)/(private)/api-docs/[[...op]]/page/build-manifest.json +3 -3
  62. package/server/.next/server/app/(console)/(private)/api-docs/[[...op]]/page/server-reference-manifest.json +28 -18
  63. package/server/.next/server/app/(console)/(private)/api-docs/[[...op]]/page.js +81 -79
  64. package/server/.next/server/app/(console)/(private)/api-docs/[[...op]]/page.js.nft.json +1 -1
  65. package/server/.next/server/app/(console)/(private)/api-docs/[[...op]]/page_client-reference-manifest.js +1 -1
  66. package/server/.next/server/app/(console)/(private)/auto-actions/page/build-manifest.json +3 -3
  67. package/server/.next/server/app/(console)/(private)/auto-actions/page/server-reference-manifest.json +30 -20
  68. package/server/.next/server/app/(console)/(private)/auto-actions/page.js +81 -79
  69. package/server/.next/server/app/(console)/(private)/auto-actions/page.js.nft.json +1 -1
  70. package/server/.next/server/app/(console)/(private)/auto-actions/page_client-reference-manifest.js +1 -1
  71. package/server/.next/server/app/(console)/alerts/page/build-manifest.json +3 -3
  72. package/server/.next/server/app/(console)/alerts/page/server-reference-manifest.json +84 -44
  73. package/server/.next/server/app/(console)/alerts/page.js +84 -81
  74. package/server/.next/server/app/(console)/alerts/page.js.nft.json +1 -1
  75. package/server/.next/server/app/(console)/alerts/page_client-reference-manifest.js +1 -1
  76. package/server/.next/server/app/(console)/apps/[id]/page/build-manifest.json +3 -3
  77. package/server/.next/server/app/(console)/apps/[id]/page/server-reference-manifest.json +62 -52
  78. package/server/.next/server/app/(console)/apps/[id]/page.js +87 -85
  79. package/server/.next/server/app/(console)/apps/[id]/page.js.nft.json +1 -1
  80. package/server/.next/server/app/(console)/apps/[id]/page_client-reference-manifest.js +1 -1
  81. package/server/.next/server/app/(console)/apps/page/build-manifest.json +3 -3
  82. package/server/.next/server/app/(console)/apps/page/server-reference-manifest.json +34 -24
  83. package/server/.next/server/app/(console)/apps/page.js +83 -81
  84. package/server/.next/server/app/(console)/apps/page.js.nft.json +1 -1
  85. package/server/.next/server/app/(console)/apps/page_client-reference-manifest.js +1 -1
  86. package/server/.next/server/app/(console)/backups/page/build-manifest.json +3 -3
  87. package/server/.next/server/app/(console)/backups/page/server-reference-manifest.json +34 -24
  88. package/server/.next/server/app/(console)/backups/page.js +84 -82
  89. package/server/.next/server/app/(console)/backups/page.js.nft.json +1 -1
  90. package/server/.next/server/app/(console)/backups/page_client-reference-manifest.js +1 -1
  91. package/server/.next/server/app/(console)/catalog/page/build-manifest.json +3 -3
  92. package/server/.next/server/app/(console)/catalog/page/server-reference-manifest.json +28 -18
  93. package/server/.next/server/app/(console)/catalog/page.js +82 -80
  94. package/server/.next/server/app/(console)/catalog/page.js.nft.json +1 -1
  95. package/server/.next/server/app/(console)/catalog/page_client-reference-manifest.js +1 -1
  96. package/server/.next/server/app/(console)/connections/page/build-manifest.json +3 -3
  97. package/server/.next/server/app/(console)/connections/page/server-reference-manifest.json +50 -40
  98. package/server/.next/server/app/(console)/connections/page.js +85 -83
  99. package/server/.next/server/app/(console)/connections/page.js.nft.json +1 -1
  100. package/server/.next/server/app/(console)/connections/page_client-reference-manifest.js +1 -1
  101. package/server/.next/server/app/(console)/d1/page/build-manifest.json +3 -3
  102. package/server/.next/server/app/(console)/d1/page/server-reference-manifest.json +28 -18
  103. package/server/.next/server/app/(console)/d1/page.js +83 -81
  104. package/server/.next/server/app/(console)/d1/page.js.nft.json +1 -1
  105. package/server/.next/server/app/(console)/d1/page_client-reference-manifest.js +1 -1
  106. package/server/.next/server/app/(console)/deployments/page/build-manifest.json +3 -3
  107. package/server/.next/server/app/(console)/deployments/page/server-reference-manifest.json +40 -30
  108. package/server/.next/server/app/(console)/deployments/page.js +83 -81
  109. package/server/.next/server/app/(console)/deployments/page.js.nft.json +1 -1
  110. package/server/.next/server/app/(console)/deployments/page_client-reference-manifest.js +1 -1
  111. package/server/.next/server/app/(console)/dns/page/build-manifest.json +3 -3
  112. package/server/.next/server/app/(console)/dns/page/server-reference-manifest.json +42 -32
  113. package/server/.next/server/app/(console)/dns/page.js +86 -84
  114. package/server/.next/server/app/(console)/dns/page.js.nft.json +1 -1
  115. package/server/.next/server/app/(console)/dns/page_client-reference-manifest.js +1 -1
  116. package/server/.next/server/app/(console)/domains/page/build-manifest.json +3 -3
  117. package/server/.next/server/app/(console)/domains/page/server-reference-manifest.json +32 -22
  118. package/server/.next/server/app/(console)/domains/page.js +85 -83
  119. package/server/.next/server/app/(console)/domains/page.js.nft.json +1 -1
  120. package/server/.next/server/app/(console)/domains/page_client-reference-manifest.js +1 -1
  121. package/server/.next/server/app/(console)/events/page/build-manifest.json +3 -3
  122. package/server/.next/server/app/(console)/events/page/server-reference-manifest.json +28 -18
  123. package/server/.next/server/app/(console)/events/page.js +82 -80
  124. package/server/.next/server/app/(console)/events/page.js.nft.json +1 -1
  125. package/server/.next/server/app/(console)/events/page_client-reference-manifest.js +1 -1
  126. package/server/.next/server/app/(console)/firebase/page/build-manifest.json +3 -3
  127. package/server/.next/server/app/(console)/firebase/page/server-reference-manifest.json +42 -32
  128. package/server/.next/server/app/(console)/firebase/page.js +84 -82
  129. package/server/.next/server/app/(console)/firebase/page.js.nft.json +1 -1
  130. package/server/.next/server/app/(console)/firebase/page_client-reference-manifest.js +1 -1
  131. package/server/.next/server/app/(console)/logs/page/build-manifest.json +3 -3
  132. package/server/.next/server/app/(console)/logs/page/server-reference-manifest.json +30 -20
  133. package/server/.next/server/app/(console)/logs/page.js +81 -79
  134. package/server/.next/server/app/(console)/logs/page.js.nft.json +1 -1
  135. package/server/.next/server/app/(console)/logs/page_client-reference-manifest.js +1 -1
  136. package/server/.next/server/app/(console)/manage/sections/page/build-manifest.json +3 -3
  137. package/server/.next/server/app/(console)/manage/sections/page/server-reference-manifest.json +30 -20
  138. package/server/.next/server/app/(console)/manage/sections/page.js +81 -79
  139. package/server/.next/server/app/(console)/manage/sections/page.js.nft.json +1 -1
  140. package/server/.next/server/app/(console)/manage/sections/page_client-reference-manifest.js +1 -1
  141. package/server/.next/server/app/(console)/neon/page/build-manifest.json +3 -3
  142. package/server/.next/server/app/(console)/neon/page/server-reference-manifest.json +50 -40
  143. package/server/.next/server/app/(console)/neon/page.js +86 -84
  144. package/server/.next/server/app/(console)/neon/page.js.nft.json +1 -1
  145. package/server/.next/server/app/(console)/neon/page_client-reference-manifest.js +1 -1
  146. package/server/.next/server/app/(console)/overview/page/build-manifest.json +3 -3
  147. package/server/.next/server/app/(console)/overview/page/server-reference-manifest.json +44 -34
  148. package/server/.next/server/app/(console)/overview/page.js +90 -88
  149. package/server/.next/server/app/(console)/overview/page.js.nft.json +1 -1
  150. package/server/.next/server/app/(console)/overview/page_client-reference-manifest.js +1 -1
  151. package/server/.next/server/app/(console)/repos/[id]/page/build-manifest.json +3 -3
  152. package/server/.next/server/app/(console)/repos/[id]/page/server-reference-manifest.json +30 -20
  153. package/server/.next/server/app/(console)/repos/[id]/page.js +84 -82
  154. package/server/.next/server/app/(console)/repos/[id]/page.js.nft.json +1 -1
  155. package/server/.next/server/app/(console)/repos/[id]/page_client-reference-manifest.js +1 -1
  156. package/server/.next/server/app/(console)/repos/page/build-manifest.json +3 -3
  157. package/server/.next/server/app/(console)/repos/page/server-reference-manifest.json +28 -18
  158. package/server/.next/server/app/(console)/repos/page.js +81 -79
  159. package/server/.next/server/app/(console)/repos/page.js.nft.json +1 -1
  160. package/server/.next/server/app/(console)/repos/page_client-reference-manifest.js +1 -1
  161. package/server/.next/server/app/(console)/settings/page/build-manifest.json +3 -3
  162. package/server/.next/server/app/(console)/settings/page/server-reference-manifest.json +48 -38
  163. package/server/.next/server/app/(console)/settings/page.js +82 -80
  164. package/server/.next/server/app/(console)/settings/page.js.nft.json +1 -1
  165. package/server/.next/server/app/(console)/settings/page_client-reference-manifest.js +1 -1
  166. package/server/.next/server/app/(console)/sql/page/build-manifest.json +3 -3
  167. package/server/.next/server/app/(console)/sql/page/server-reference-manifest.json +42 -32
  168. package/server/.next/server/app/(console)/sql/page.js +81 -79
  169. package/server/.next/server/app/(console)/sql/page.js.nft.json +1 -1
  170. package/server/.next/server/app/(console)/sql/page_client-reference-manifest.js +1 -1
  171. package/server/.next/server/app/(console)/status/page/build-manifest.json +3 -3
  172. package/server/.next/server/app/(console)/status/page/server-reference-manifest.json +28 -18
  173. package/server/.next/server/app/(console)/status/page.js +84 -81
  174. package/server/.next/server/app/(console)/status/page.js.nft.json +1 -1
  175. package/server/.next/server/app/(console)/status/page_client-reference-manifest.js +1 -1
  176. package/server/.next/server/app/(console)/supabase/page/build-manifest.json +3 -3
  177. package/server/.next/server/app/(console)/supabase/page/server-reference-manifest.json +66 -56
  178. package/server/.next/server/app/(console)/supabase/page.js +91 -90
  179. package/server/.next/server/app/(console)/supabase/page.js.nft.json +1 -1
  180. package/server/.next/server/app/(console)/supabase/page_client-reference-manifest.js +1 -1
  181. package/server/.next/server/app/(console)/topology/page/build-manifest.json +3 -3
  182. package/server/.next/server/app/(console)/topology/page/server-reference-manifest.json +28 -18
  183. package/server/.next/server/app/(console)/topology/page.js +83 -81
  184. package/server/.next/server/app/(console)/topology/page.js.nft.json +1 -1
  185. package/server/.next/server/app/(console)/topology/page_client-reference-manifest.js +1 -1
  186. package/server/.next/server/app/(console)/turso/page/build-manifest.json +3 -3
  187. package/server/.next/server/app/(console)/turso/page/server-reference-manifest.json +28 -18
  188. package/server/.next/server/app/(console)/turso/page.js +82 -80
  189. package/server/.next/server/app/(console)/turso/page.js.nft.json +1 -1
  190. package/server/.next/server/app/(console)/turso/page_client-reference-manifest.js +1 -1
  191. package/server/.next/server/app/(console)/upstash/page/build-manifest.json +3 -3
  192. package/server/.next/server/app/(console)/upstash/page/server-reference-manifest.json +28 -18
  193. package/server/.next/server/app/(console)/upstash/page.js +82 -80
  194. package/server/.next/server/app/(console)/upstash/page.js.nft.json +1 -1
  195. package/server/.next/server/app/(console)/upstash/page_client-reference-manifest.js +1 -1
  196. package/server/.next/server/app/(console)/uptime/page/build-manifest.json +3 -3
  197. package/server/.next/server/app/(console)/uptime/page/server-reference-manifest.json +56 -46
  198. package/server/.next/server/app/(console)/uptime/page.js +84 -82
  199. package/server/.next/server/app/(console)/uptime/page.js.nft.json +1 -1
  200. package/server/.next/server/app/(console)/uptime/page_client-reference-manifest.js +1 -1
  201. package/server/.next/server/app/(console)/welcome/page/build-manifest.json +3 -3
  202. package/server/.next/server/app/(console)/welcome/page/server-reference-manifest.json +38 -28
  203. package/server/.next/server/app/(console)/welcome/page.js +81 -79
  204. package/server/.next/server/app/(console)/welcome/page.js.nft.json +1 -1
  205. package/server/.next/server/app/(console)/welcome/page_client-reference-manifest.js +1 -1
  206. package/server/.next/server/app/_global-error/page/build-manifest.json +3 -3
  207. package/server/.next/server/app/_global-error/page/server-reference-manifest.json +1 -1
  208. package/server/.next/server/app/_global-error/page.js.nft.json +1 -1
  209. package/server/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  210. package/server/.next/server/app/_global-error.html +1 -1
  211. package/server/.next/server/app/_global-error.rsc +3 -3
  212. package/server/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +2 -2
  213. package/server/.next/server/app/_global-error.segments/_full.segment.rsc +3 -3
  214. package/server/.next/server/app/_global-error.segments/_tree.segment.rsc +2 -2
  215. package/server/.next/server/app/_not-found/page/build-manifest.json +3 -3
  216. package/server/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  217. package/server/.next/server/app/_not-found/page.js +14 -11
  218. package/server/.next/server/app/_not-found/page.js.nft.json +1 -1
  219. package/server/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  220. package/server/.next/server/app/_not-found.html +1 -1
  221. package/server/.next/server/app/_not-found.rsc +28 -23
  222. package/server/.next/server/app/_not-found.segments/_full.segment.rsc +28 -23
  223. package/server/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +26 -23
  224. package/server/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  225. package/server/.next/server/app/account/password/page/build-manifest.json +3 -3
  226. package/server/.next/server/app/account/password/page/server-reference-manifest.json +2 -2
  227. package/server/.next/server/app/account/password/page.js +17 -18
  228. package/server/.next/server/app/account/password/page.js.nft.json +1 -1
  229. package/server/.next/server/app/account/password/page_client-reference-manifest.js +1 -1
  230. package/server/.next/server/app/api/collect/route/server-reference-manifest.json +7 -7
  231. package/server/.next/server/app/api/collect/route.js +38 -37
  232. package/server/.next/server/app/api/collect/route.js.nft.json +1 -1
  233. package/server/.next/server/app/api/daily/route/server-reference-manifest.json +7 -7
  234. package/server/.next/server/app/api/daily/route.js +38 -37
  235. package/server/.next/server/app/api/daily/route.js.nft.json +1 -1
  236. package/server/.next/server/app/api/ping/[...parts]/route.js.nft.json +1 -1
  237. package/server/.next/server/app/api/status/route.js.nft.json +1 -1
  238. package/server/.next/server/app/api/telegram/webhook/route/server-reference-manifest.json +7 -7
  239. package/server/.next/server/app/api/telegram/webhook/route.js +63 -62
  240. package/server/.next/server/app/api/telegram/webhook/route.js.nft.json +1 -1
  241. package/server/.next/server/app/api/v1/advice/route.js +2 -2
  242. package/server/.next/server/app/api/v1/advice/route.js.nft.json +1 -1
  243. package/server/.next/server/app/api/v1/ai/chat/completions/route.js.nft.json +1 -1
  244. package/server/.next/server/app/api/v1/ai/models/route.js.nft.json +1 -1
  245. package/server/.next/server/app/api/v1/ai/questions/[id]/route.js.nft.json +1 -1
  246. package/server/.next/server/app/api/v1/ai/questions/route.js +2 -2
  247. package/server/.next/server/app/api/v1/ai/questions/route.js.nft.json +1 -1
  248. package/server/.next/server/app/api/v1/mcp/route.js +2 -2
  249. package/server/.next/server/app/api/v1/mcp/route.js.nft.json +1 -1
  250. package/server/.next/server/app/api/v1/me/route.js.nft.json +1 -1
  251. package/server/.next/server/app/api/v1/openapi.json/route.js.nft.json +1 -1
  252. package/server/.next/server/app/api/v1/status/apps/[app]/route.js +2 -2
  253. package/server/.next/server/app/api/v1/status/apps/[app]/route.js.nft.json +1 -1
  254. package/server/.next/server/app/api/v1/status/route.js +2 -2
  255. package/server/.next/server/app/api/v1/status/route.js.nft.json +1 -1
  256. package/server/.next/server/app/api/watchdog/route.js +13 -13
  257. package/server/.next/server/app/api/watchdog/route.js.nft.json +1 -1
  258. package/server/.next/server/app/auth/confirm/route.js.nft.json +1 -1
  259. package/server/.next/server/app/auth/google/callback/route.js.nft.json +1 -1
  260. package/server/.next/server/app/auth/google/create/callback/route.js.nft.json +1 -1
  261. package/server/.next/server/app/auth/not-member/route.js.nft.json +1 -1
  262. package/server/.next/server/app/auth/session-ended/route.js.nft.json +1 -1
  263. package/server/.next/server/app/invite/page/build-manifest.json +3 -3
  264. package/server/.next/server/app/invite/page/server-reference-manifest.json +2 -2
  265. package/server/.next/server/app/invite/page.js +22 -22
  266. package/server/.next/server/app/invite/page.js.nft.json +1 -1
  267. package/server/.next/server/app/invite/page_client-reference-manifest.js +1 -1
  268. package/server/.next/server/app/mfa/page/build-manifest.json +3 -3
  269. package/server/.next/server/app/mfa/page/server-reference-manifest.json +2 -2
  270. package/server/.next/server/app/mfa/page.js +40 -29
  271. package/server/.next/server/app/mfa/page.js.nft.json +1 -1
  272. package/server/.next/server/app/mfa/page_client-reference-manifest.js +1 -1
  273. package/server/.next/server/app/mfa/setup/page/build-manifest.json +3 -3
  274. package/server/.next/server/app/mfa/setup/page/server-reference-manifest.json +3 -3
  275. package/server/.next/server/app/mfa/setup/page.js +40 -29
  276. package/server/.next/server/app/mfa/setup/page.js.nft.json +1 -1
  277. package/server/.next/server/app/mfa/setup/page_client-reference-manifest.js +1 -1
  278. package/server/.next/server/app/page/build-manifest.json +3 -3
  279. package/server/.next/server/app/page/server-reference-manifest.json +1 -1
  280. package/server/.next/server/app/page.js +14 -11
  281. package/server/.next/server/app/page.js.nft.json +1 -1
  282. package/server/.next/server/app/page_client-reference-manifest.js +1 -1
  283. package/server/.next/server/app/s/[slug]/badge/[file]/route.js.nft.json +1 -1
  284. package/server/.next/server/app/s/[slug]/page/build-manifest.json +3 -3
  285. package/server/.next/server/app/s/[slug]/page/server-reference-manifest.json +1 -1
  286. package/server/.next/server/app/s/[slug]/page.js +23 -21
  287. package/server/.next/server/app/s/[slug]/page.js.nft.json +1 -1
  288. package/server/.next/server/app/s/[slug]/page_client-reference-manifest.js +1 -1
  289. package/server/.next/server/app/setup/page/build-manifest.json +3 -3
  290. package/server/.next/server/app/setup/page/server-reference-manifest.json +2 -2
  291. package/server/.next/server/app/setup/page.js +20 -18
  292. package/server/.next/server/app/setup/page.js.nft.json +1 -1
  293. package/server/.next/server/app/setup/page_client-reference-manifest.js +1 -1
  294. package/server/.next/server/app/signin/page/build-manifest.json +3 -3
  295. package/server/.next/server/app/signin/page/server-reference-manifest.json +3 -3
  296. package/server/.next/server/app/signin/page.js +47 -33
  297. package/server/.next/server/app/signin/page.js.nft.json +1 -1
  298. package/server/.next/server/app/signin/page_client-reference-manifest.js +1 -1
  299. package/server/.next/server/chunks/{[externals]__0y_x27mdj85p4._.js → [externals]__0ia-wyj5qrosx._.js} +1 -1
  300. package/server/.next/server/chunks/{[externals]__1fzfzd0ia0sk6._.js → [externals]__0igl_rsv6z3fr._.js} +1 -1
  301. package/server/.next/server/chunks/{[externals]__1qqyrxnupegg3._.js → [externals]__0mh8e6gkgfswq._.js} +1 -1
  302. package/server/.next/server/chunks/{[root-of-the-server]__0hblpf7wqke-j._.js → [root-of-the-server]__0-ftc1hhcjcl2._.js} +2 -2
  303. package/server/.next/server/chunks/{[root-of-the-server]__0x487cn6dsn12._.js → [root-of-the-server]__0-st5xltl53h9._.js} +2 -2
  304. package/server/.next/server/chunks/{[root-of-the-server]__03i6yscmtbhhg._.js → [root-of-the-server]__0-u9oeob2sa7f._.js} +2 -2
  305. package/server/.next/server/chunks/{[root-of-the-server]__0_nljmqhjcept._.js → [root-of-the-server]__0070gc9ml0mf7._.js} +1 -1
  306. package/server/.next/server/chunks/{[root-of-the-server]__07bw6o0jc31yr._.js → [root-of-the-server]__0185dne3slx7e._.js} +2 -2
  307. package/server/.next/server/chunks/{[root-of-the-server]__0v-gc-c_e8pwl._.js → [root-of-the-server]__040ix5fqb_zb-._.js} +2 -2
  308. package/server/.next/server/chunks/{[root-of-the-server]__07mzeijv31avl._.js → [root-of-the-server]__05jzua9637vlo._.js} +2 -2
  309. package/server/.next/server/chunks/{[root-of-the-server]__1_or7dycvkseg._.js → [root-of-the-server]__06uaa_2zbg57p._.js} +1 -1
  310. package/server/.next/server/chunks/{[root-of-the-server]__1brl5otpkvgd3._.js → [root-of-the-server]__07byme21uj5ln._.js} +2 -2
  311. package/server/.next/server/chunks/{[root-of-the-server]__1lerees-l5-6c._.js → [root-of-the-server]__07g16s_wi2sai._.js} +2 -2
  312. package/server/.next/server/chunks/{[root-of-the-server]__0lu91s5izfu0p._.js → [root-of-the-server]__08-puk3_gawjd._.js} +2 -2
  313. package/server/.next/server/chunks/{[root-of-the-server]__0hnljrh9qi9t-._.js → [root-of-the-server]__0_e2eoq7w3ff_._.js} +2 -2
  314. package/server/.next/server/chunks/{[root-of-the-server]__0zni_2pv2fdgb._.js → [root-of-the-server]__0cc32xnniktg9._.js} +2 -2
  315. package/server/.next/server/chunks/{[root-of-the-server]__213bsllf-9ztc._.js → [root-of-the-server]__0cz3da2wx3_wd._.js} +2 -2
  316. package/server/.next/server/chunks/{[root-of-the-server]__0noc6l63d3l9w._.js → [root-of-the-server]__0dvuy3ibsyiik._.js} +2 -2
  317. package/server/.next/server/chunks/{[root-of-the-server]__1xxmlb3soqzom._.js → [root-of-the-server]__0e2utnqdim70d._.js} +2 -2
  318. package/server/.next/server/chunks/{[root-of-the-server]__0ihedjvt-l2-u._.js → [root-of-the-server]__0exicuoq6gmph._.js} +2 -2
  319. package/server/.next/server/chunks/{[root-of-the-server]__10wbld2tja51-._.js → [root-of-the-server]__0ezd1s2862iob._.js} +2 -2
  320. package/server/.next/server/chunks/[root-of-the-server]__0gmn5s40au84-._.js +3 -0
  321. package/server/.next/server/chunks/[root-of-the-server]__0i75m0es1m3hf._.js +3 -0
  322. package/server/.next/server/chunks/{[root-of-the-server]__0awtaloe4_8am._.js → [root-of-the-server]__0ikiyg3u02ofv._.js} +1 -1
  323. package/server/.next/server/chunks/{[root-of-the-server]__1xl6_spngp6k3._.js → [root-of-the-server]__0ms1uw85c5wg2._.js} +2 -2
  324. package/server/.next/server/chunks/[root-of-the-server]__0o0z59_jylzvy._.js +3 -0
  325. package/server/.next/server/chunks/{[root-of-the-server]__1zvoez8iapsem._.js → [root-of-the-server]__0oqltt9cni6m0._.js} +2 -2
  326. package/server/.next/server/chunks/{[root-of-the-server]__1lj1f2w2-w8nw._.js → [root-of-the-server]__0quiawzx_nww0._.js} +2 -2
  327. package/server/.next/server/chunks/{[root-of-the-server]__0r1men25anfgb._.js → [root-of-the-server]__0r88w3qhrtzz_._.js} +1 -1
  328. package/server/.next/server/chunks/{[root-of-the-server]__0kp0yx909wtab._.js → [root-of-the-server]__0rb1-3538-pq9._.js} +1 -1
  329. package/server/.next/server/chunks/{[root-of-the-server]__0g1cifa7hd790._.js → [root-of-the-server]__0sabwm3w1rm0q._.js} +1 -1
  330. package/server/.next/server/chunks/{[root-of-the-server]__0hlyn_aj72sn5._.js → [root-of-the-server]__0tykhzqhwdx_k._.js} +2 -2
  331. package/server/.next/server/chunks/{[root-of-the-server]__0yuyew8m9dc6-._.js → [root-of-the-server]__0w_og0zl6hqzj._.js} +1 -1
  332. package/server/.next/server/chunks/[root-of-the-server]__0wdxw44t9l9o_._.js +3 -0
  333. package/server/.next/server/chunks/{[root-of-the-server]__16waq6rapvngp._.js → [root-of-the-server]__0x47i6wm-cd1z._.js} +2 -2
  334. package/server/.next/server/chunks/{[root-of-the-server]__0s8vjz6urzn76._.js → [root-of-the-server]__0x6qqr79pq_j9._.js} +1 -1
  335. package/server/.next/server/chunks/{[root-of-the-server]__0nrg8zzqizk69._.js → [root-of-the-server]__0xqgsjnebebv8._.js} +2 -2
  336. package/server/.next/server/chunks/{[root-of-the-server]__0q-x05ekhpohj._.js → [root-of-the-server]__0y99cuuxm0xs3._.js} +1 -1
  337. package/server/.next/server/chunks/[root-of-the-server]__0zflnh-2nol66._.js +3 -0
  338. package/server/.next/server/chunks/{[root-of-the-server]__0l6_iao04u72h._.js → [root-of-the-server]__0znmcklxfccvk._.js} +2 -2
  339. package/server/.next/server/chunks/[root-of-the-server]__10dp33pb5e0ml._.js +3 -0
  340. package/server/.next/server/chunks/[root-of-the-server]__12xl6ax-q8s93._.js +3 -0
  341. package/server/.next/server/chunks/{[root-of-the-server]__090in165mp6av._.js → [root-of-the-server]__14sac3h4sfhh7._.js} +1 -1
  342. package/server/.next/server/chunks/{[root-of-the-server]__0oy0hcm48kl-q._.js → [root-of-the-server]__16md_196q9s8a._.js} +2 -2
  343. package/server/.next/server/chunks/[root-of-the-server]__17xbg7cngebwp._.js +3 -0
  344. package/server/.next/server/chunks/{[root-of-the-server]__0hrtz5c_46jkw._.js → [root-of-the-server]__186-sa38csgot._.js} +1 -1
  345. package/server/.next/server/chunks/[root-of-the-server]__18lfi0w0e_h0k._.js +3 -0
  346. package/server/.next/server/chunks/{[root-of-the-server]__0u3un538__ca5._.js → [root-of-the-server]__1a7_3nq1jjab-._.js} +2 -2
  347. package/server/.next/server/chunks/{[root-of-the-server]__15dhjj384tuw_._.js → [root-of-the-server]__1bce11artflky._.js} +2 -2
  348. package/server/.next/server/chunks/[root-of-the-server]__1c1wqmzm65xo8._.js +3 -0
  349. package/server/.next/server/chunks/{[root-of-the-server]__1adw_bv2u89kc._.js → [root-of-the-server]__1g4iy2tasmn0f._.js} +1 -1
  350. package/server/.next/server/chunks/[root-of-the-server]__1gry2nrq5xhxl._.js +3 -0
  351. package/server/.next/server/chunks/{[root-of-the-server]__1dh4di29mjq9y._.js → [root-of-the-server]__1gt_-h9n48pwi._.js} +2 -2
  352. package/server/.next/server/chunks/[root-of-the-server]__1hl9k6e1o7xh2._.js +3 -0
  353. package/server/.next/server/chunks/[root-of-the-server]__1kk_s-q90445m._.js +3 -0
  354. package/server/.next/server/chunks/{[root-of-the-server]__02ldm_7l9zld8._.js → [root-of-the-server]__1lfsf7un8kdbr._.js} +1 -1
  355. package/server/.next/server/chunks/[root-of-the-server]__1nusfevn1z4nm._.js +3 -0
  356. package/server/.next/server/chunks/{[root-of-the-server]__0l9ja3579qrju._.js → [root-of-the-server]__1ny8nr52qvr4i._.js} +2 -2
  357. package/server/.next/server/chunks/{[root-of-the-server]__125fkw52kl2ty._.js → [root-of-the-server]__1o9v_499yd5k8._.js} +2 -2
  358. package/server/.next/server/chunks/[root-of-the-server]__1oc55uo0ax787._.js +3 -0
  359. package/server/.next/server/chunks/{[root-of-the-server]__1w7dv8zm-k_oa._.js → [root-of-the-server]__1qdbn4gdg7ndr._.js} +2 -2
  360. package/server/.next/server/chunks/[root-of-the-server]__1uqxnb7qfqcms._.js +3 -0
  361. package/server/.next/server/chunks/{[root-of-the-server]__1dbz126yujh44._.js → [root-of-the-server]__1vqs8o9bv1wbk._.js} +2 -2
  362. package/server/.next/server/chunks/[root-of-the-server]__1vxtt1favjdfr._.js +3 -0
  363. package/server/.next/server/chunks/[root-of-the-server]__1xwgj26z5f7ih._.js +3 -0
  364. package/server/.next/server/chunks/{[root-of-the-server]__1ooxluowhatjt._.js → [root-of-the-server]__20ng0hgzxagf_._.js} +2 -2
  365. package/server/.next/server/chunks/{[root-of-the-server]__0032rbj2s87zo._.js → [root-of-the-server]__20r_62r36t28o._.js} +2 -2
  366. package/server/.next/server/chunks/[root-of-the-server]__20sv90-2ei08l._.js +3 -0
  367. package/server/.next/server/chunks/_0-fp57b-utmuw._.js +1 -1
  368. package/server/.next/server/chunks/_004j-wbs3yn84._.js +1 -1
  369. package/server/.next/server/chunks/_01x32f51v50y7._.js +3 -0
  370. package/server/.next/server/chunks/_03qlijpos6a21._.js +1 -1
  371. package/server/.next/server/chunks/_06gv0srpbf_lk._.js +3 -0
  372. package/server/.next/server/chunks/_06lf75x-xhl7v._.js +1 -1
  373. package/server/.next/server/chunks/_0brb2454uen18._.js +1 -1
  374. package/server/.next/server/chunks/_0dkhprw6wsizx._.js +1 -1
  375. package/server/.next/server/chunks/_0ffsv993spriq._.js +3 -0
  376. package/server/.next/server/chunks/_0hsj1tx2ynla-._.js +3 -0
  377. package/server/.next/server/chunks/{_1-pcsy2hkg0il._.js → _0ljdeybzgdyai._.js} +1 -1
  378. package/server/.next/server/chunks/_0ls7sornjrg95._.js +5 -0
  379. package/server/.next/server/chunks/_0n-wbmmvp4omq._.js +1 -1
  380. package/server/.next/server/chunks/{_0duxuj4kmjibl._.js → _0nt4ifc48vl34._.js} +28 -21
  381. package/server/.next/server/chunks/_0qmi54vmnlwdv._.js +3 -3
  382. package/server/.next/server/chunks/{_113ebzq_9i756._.js → _0rkn5gstaj2d0._.js} +28 -21
  383. package/server/.next/server/chunks/_0s2odl9xacsg0._.js +1 -1
  384. package/server/.next/server/chunks/_0sy878k2ywjbq._.js +1 -1
  385. package/server/.next/server/chunks/_0xf7mtsrkgc9e._.js +2 -2
  386. package/server/.next/server/chunks/_0zj10_al6r59j._.js +2 -2
  387. package/server/.next/server/chunks/_1476vtrt9101m._.js +1 -1
  388. package/server/.next/server/chunks/_17aiz6zt-yv52._.js +2 -2
  389. package/server/.next/server/chunks/_18p-vw2zmdx9f._.js +1 -1
  390. package/server/.next/server/chunks/{_1ihndlef8r00f._.js → _1_4jb754aeifp._.js} +28 -21
  391. package/server/.next/server/chunks/{_0if5sw58tii_3._.js → _1_9n8x5ncta29._.js} +2 -2
  392. package/server/.next/server/chunks/_1_son1yzo5xvl._.js +1 -1
  393. package/server/.next/server/chunks/_1_xsrlijknnh3._.js +1 -1
  394. package/server/.next/server/chunks/{_16urxazbgm48y._.js → _1cq1vvbp6pglr._.js} +3 -3
  395. package/server/.next/server/chunks/_1e_rbkrukj0x9._.js +2 -2
  396. package/server/.next/server/chunks/_1g_prqb_u33e3._.js +3 -3
  397. package/server/.next/server/chunks/_1h73gul79s8pi._.js +1 -1
  398. package/server/.next/server/chunks/{_0ry4553j-m5fp._.js → _1myv9csc_in08._.js} +3 -3
  399. package/server/.next/server/chunks/{_1g8r-7wcf8sy3._.js → _1n-fm2bdo9t2m._.js} +3 -3
  400. package/server/.next/server/chunks/{_1mwb214-ablfo._.js → _1qsryafbujfwn._.js} +28 -21
  401. package/server/.next/server/chunks/node_modules_drizzle-orm_entity_1-0q2stnw2ab8.js +1 -1
  402. package/server/.next/server/chunks/src_0--qn984h6czu._.js +1 -1
  403. package/server/.next/server/chunks/src_063xvouojxyoa._.js +1 -1
  404. package/server/.next/server/chunks/src_088gmyaew7ds0._.js +1 -1
  405. package/server/.next/server/chunks/{src_09cgjvch02173._.js → src_0_l3dzp06o4x5._.js} +2 -2
  406. package/server/.next/server/chunks/{src_0c7qu5adpm3gv._.js → src_0m6xxpw2u-xv_._.js} +2 -2
  407. package/server/.next/server/chunks/src_0y_4gogmeu-2k._.js +1 -1
  408. package/server/.next/server/chunks/{src_20ilndq84j3b3._.js → src_15fupbs9-n8q9._.js} +2 -2
  409. package/server/.next/server/chunks/src_1a5yibsjcy1ga._.js +1 -1
  410. package/server/.next/server/chunks/src_1bqzr81r3wkvi._.js +1 -1
  411. package/server/.next/server/chunks/src_1p24c-nz35cov._.js +3 -0
  412. package/server/.next/server/chunks/src_1tux0n9_5b1kr._.js +1 -1
  413. package/server/.next/server/chunks/src_1u-olt84z63rx._.js +1 -1
  414. package/server/.next/server/chunks/src_1wduh0eckiwl1._.js +1 -1
  415. package/server/.next/server/chunks/src_1wzm081p6qyre._.js +1 -1
  416. package/server/.next/server/chunks/src_lib_001zhbfd1zeuk._.js +3 -0
  417. package/server/.next/server/chunks/src_lib_0eqv8l-v8d5ze._.js +3 -0
  418. package/server/.next/server/chunks/src_lib_0glcfed-uogyd._.js +1 -1
  419. package/server/.next/server/chunks/{src_lib_206j7lyff31-g._.js → src_lib_0k_aposzvy1c8._.js} +2 -2
  420. package/server/.next/server/chunks/src_lib_0ta8sd9jeuw50._.js +21 -14
  421. package/server/.next/server/chunks/{src_lib_1-u7dbsavbtb0._.js → src_lib_0vjapfdxkooq5._.js} +2 -2
  422. package/server/.next/server/chunks/{src_lib_0krdzz8eu9xh3._.js → src_lib_0yn0bj14ih0id._.js} +2 -2
  423. package/server/.next/server/chunks/src_lib_103kimc1xvc_0._.js +3 -3
  424. package/server/.next/server/chunks/src_lib_1en6omqx66g9d._.js +21 -14
  425. package/server/.next/server/chunks/{src_lib_0ayxuk4ftzf2f._.js → src_lib_1qbgm0zu8q1rr._.js} +2 -2
  426. package/server/.next/server/chunks/src_lib_1qo6t00wwitz6._.js +21 -14
  427. package/server/.next/server/chunks/src_lib_1sdusf16f07x-._.js +3 -3
  428. package/server/.next/server/chunks/src_lib_alerts_catalog_ts_1ndg28acul64q._.js +1 -1
  429. package/server/.next/server/chunks/src_lib_auth_ts_11yt3pae6wy-o._.js +1 -1
  430. package/server/.next/server/chunks/src_lib_collector_runners_ts_12z4gtgikss74._.js +4 -4
  431. package/server/.next/server/chunks/src_lib_data_metrics-db_ts_0zp7x6l28a2ep._.js +3 -0
  432. package/server/.next/server/chunks/src_lib_data_provider-status-db_ts_09oo6p4m7x7te._.js +1 -1
  433. package/server/.next/server/chunks/src_lib_demo_pool_ts_17xz9bk-d5uic._.js +6 -6
  434. package/server/.next/server/chunks/src_lib_local-auth_setup_ts_10d8-k_e6pvft._.js +2 -2
  435. package/server/.next/server/chunks/src_lib_view_databases_ts_1ovdbo8spjhf9._.js +1 -1
  436. package/server/.next/server/chunks/src_lib_view_labels_ts_1uxs84z7vclz5._.js +1 -1
  437. package/server/.next/server/chunks/src_private_assist_questions-db_ts_1l-wvmlexd7tr._.js +1 -1
  438. package/server/.next/server/chunks/src_private_assist_questions-db_ts_1pc4g504t-qmu._.js +1 -1
  439. package/server/.next/server/chunks/src_private_notes_notes-actions_ts_1g63g8u965fhc._.js +1 -1
  440. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_agents_page_actions_21atz5tidps07.js +3 -0
  441. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_models_page_actions_0rvlzfa8rjyz_.js +3 -0
  442. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_playground_page_actions_01ejc1xilpuh4.js +4 -0
  443. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_quota_page_actions_0iki29gyi8cwa.js +3 -0
  444. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_usage_page_actions_1c99h-kwdnep7.js +3 -0
  445. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_auto-actions_page_actions_1kw4ce6-efkr1.js +3 -0
  446. package/server/.next/server/chunks/ssr/{[externals]__0jv_q8g96gubg._.js → [externals]__01kgu896o9-9t._.js} +1 -1
  447. package/server/.next/server/chunks/ssr/{[externals]__1d_fn156y1kzg._.js → [externals]__0i0hmh-a743jn._.js} +1 -1
  448. package/server/.next/server/chunks/ssr/{[externals]__1neu6qld_ilyx._.js → [externals]__0irbihjwcc9is._.js} +1 -1
  449. package/server/.next/server/chunks/ssr/{[externals]__0yzs5m5hot2o2._.js → [externals]__0qc7l-41h018j._.js} +1 -1
  450. package/server/.next/server/chunks/ssr/{[externals]__0et8619os7o06._.js → [externals]__0vlxry7jq5j1j._.js} +1 -1
  451. package/server/.next/server/chunks/ssr/{[externals]__0x50_fipcza3k._.js → [externals]__0yyslm1ka5px3._.js} +1 -1
  452. package/server/.next/server/chunks/ssr/[externals]__194b54tqm6qaq._.js +3 -0
  453. package/server/.next/server/chunks/ssr/[externals]__1mol6ksxmtkv6._.js +3 -0
  454. package/server/.next/server/chunks/ssr/[externals]__1prfp5pzeoflz._.js +3 -0
  455. package/server/.next/server/chunks/ssr/[externals]__1zxtjc2qr2epg._.js +3 -0
  456. package/server/.next/server/chunks/ssr/[root-of-the-server]__001mglelq4wpc._.js +1 -1
  457. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0p7d9dfmuhnvv._.js → [root-of-the-server]__004q78ed0nf0_._.js} +2 -2
  458. package/server/.next/server/chunks/ssr/[root-of-the-server]__01zthkv8nrlct._.js +3 -0
  459. package/server/.next/server/chunks/ssr/{[root-of-the-server]__00wwav5k7xmy0._.js → [root-of-the-server]__04_prmhm_cts4._.js} +2 -2
  460. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0_677ii9bahoy._.js → [root-of-the-server]__056nm27ib-x1m._.js} +2 -2
  461. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0khp_gsot3jh_._.js → [root-of-the-server]__06b1pw15-_hv5._.js} +2 -2
  462. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0khvq0xdah931._.js → [root-of-the-server]__09blzlbsxqvy9._.js} +2 -2
  463. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0-o5i-5pqjk5v._.js → [root-of-the-server]__0_6on4a5w76va._.js} +1 -1
  464. package/server/.next/server/chunks/ssr/{[root-of-the-server]__15wwi1pda8ims._.js → [root-of-the-server]__0c_q6tvcmsmt9._.js} +2 -2
  465. package/server/.next/server/chunks/ssr/{[root-of-the-server]__050d99bknjdvq._.js → [root-of-the-server]__0ct4apye0sfmc._.js} +2 -2
  466. package/server/.next/server/chunks/ssr/[root-of-the-server]__0e8ya6wyy2plv._.js +3 -0
  467. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0p5znbfo0wgsu._.js → [root-of-the-server]__0eaqsql69fhf8._.js} +2 -2
  468. package/server/.next/server/chunks/ssr/{[root-of-the-server]__1kieqcc6kdywx._.js → [root-of-the-server]__0ek1-s5z9ggq2._.js} +2 -2
  469. package/server/.next/server/chunks/ssr/[root-of-the-server]__0h0txd7z3sxq7._.js +3 -0
  470. package/server/.next/server/chunks/ssr/{[root-of-the-server]__08w3ad-xux1g4._.js → [root-of-the-server]__0h1vffivfh242._.js} +1 -1
  471. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0_1130gx52k-9._.js → [root-of-the-server]__0hzlz_t5eect2._.js} +2 -2
  472. package/server/.next/server/chunks/ssr/{[root-of-the-server]__16jkttbe1yoai._.js → [root-of-the-server]__0jgapr1cnvhi6._.js} +2 -2
  473. package/server/.next/server/chunks/ssr/{[root-of-the-server]__11ham42w_feik._.js → [root-of-the-server]__0k29b_kblv6sv._.js} +1 -1
  474. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0bn_thc_vtf_i._.js → [root-of-the-server]__0keo0-hwsnkw9._.js} +2 -2
  475. package/server/.next/server/chunks/ssr/{[root-of-the-server]__12-a3tcnfdcyq._.js → [root-of-the-server]__0l50vsk8enxzj._.js} +2 -2
  476. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0exp042uqhyqs._.js → [root-of-the-server]__0l_cl2qk_xmmr._.js} +2 -2
  477. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0y84mqfn13ss4._.js → [root-of-the-server]__0n-sc7pzu7fpz._.js} +1 -1
  478. package/server/.next/server/chunks/ssr/[root-of-the-server]__0nxyo70ahj7tk._.js +3 -0
  479. package/server/.next/server/chunks/ssr/[root-of-the-server]__0o0cpvobd-u0n._.js +3 -0
  480. package/server/.next/server/chunks/ssr/{[root-of-the-server]__1096-q3_trmm9._.js → [root-of-the-server]__0oon1p2_04l7s._.js} +2 -2
  481. package/server/.next/server/chunks/ssr/[root-of-the-server]__0qnly-gjvfntd._.js +3 -0
  482. package/server/.next/server/chunks/ssr/[root-of-the-server]__0qqcz9ynsgmgl._.js +3 -0
  483. package/server/.next/server/chunks/ssr/[root-of-the-server]__0rdf04ziqasfz._.js +3 -0
  484. package/server/.next/server/chunks/ssr/[root-of-the-server]__0rrdzb9wowemv._.js +3 -0
  485. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0ptdec0sozaqm._.js → [root-of-the-server]__0sj92w6mg92ds._.js} +2 -2
  486. package/server/.next/server/chunks/ssr/{[root-of-the-server]__05hw89gap74cw._.js → [root-of-the-server]__0uxychcp_pldy._.js} +2 -2
  487. package/server/.next/server/chunks/ssr/{[root-of-the-server]__1k_hi9mbd4_by._.js → [root-of-the-server]__0wi2grctadbk8._.js} +1 -1
  488. package/server/.next/server/chunks/ssr/[root-of-the-server]__0xjg51t1__v-s._.js +3 -0
  489. package/server/.next/server/chunks/ssr/[root-of-the-server]__0y6psx1_d7fkt._.js +3 -0
  490. package/server/.next/server/chunks/ssr/{[root-of-the-server]__15keslh0ov5mv._.js → [root-of-the-server]__0z_1k5876-_wx._.js} +2 -2
  491. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0ua-p_wz8epv9._.js → [root-of-the-server]__1-d88ogkwql_b._.js} +2 -2
  492. package/server/.next/server/chunks/ssr/[root-of-the-server]__10kuehp7saz8h._.js +3 -0
  493. package/server/.next/server/chunks/ssr/{[root-of-the-server]__10rhqv5xq9jaj._.js → [root-of-the-server]__110158s15r7mi._.js} +2 -2
  494. package/server/.next/server/chunks/ssr/[root-of-the-server]__113zn8es2wp67._.js +3 -0
  495. package/server/.next/server/chunks/ssr/[root-of-the-server]__14ept-_l8j32m._.js +1 -1
  496. package/server/.next/server/chunks/ssr/[root-of-the-server]__15s9onrf73-k8._.js +3 -0
  497. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0tjab3yn0asf7._.js → [root-of-the-server]__193nmh09rrpbx._.js} +1 -1
  498. package/server/.next/server/chunks/ssr/[root-of-the-server]__1_b_k8wgqyxy7._.js +3 -0
  499. package/server/.next/server/chunks/ssr/[root-of-the-server]__1_f7nip9age3d._.js +1 -1
  500. package/server/.next/server/chunks/ssr/[root-of-the-server]__1_h_ya1h8efdj._.js +3 -0
  501. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0kr_tvfgqtb-o._.js → [root-of-the-server]__1a0b_dbx4uans._.js} +2 -2
  502. package/server/.next/server/chunks/ssr/[root-of-the-server]__1ctkj-25wt37o._.js +4 -0
  503. package/server/.next/server/chunks/ssr/[root-of-the-server]__1d5tbv79yjhqm._.js +3 -0
  504. package/server/.next/server/chunks/ssr/[root-of-the-server]__1e0l6kek0ufui._.js +3 -0
  505. package/server/.next/server/chunks/ssr/[root-of-the-server]__1hek7tjixcjch._.js +3 -0
  506. package/server/.next/server/chunks/ssr/[root-of-the-server]__1ijizmc3ga_6o._.js +3 -0
  507. package/server/.next/server/chunks/ssr/[root-of-the-server]__1itgt83qo1e77._.js +3 -0
  508. package/server/.next/server/chunks/ssr/[root-of-the-server]__1kfivch_kfesn._.js +4 -0
  509. package/server/.next/server/chunks/ssr/[root-of-the-server]__1nat8lbog5imr._.js +1 -1
  510. package/server/.next/server/chunks/ssr/[root-of-the-server]__1o63-3k1wez40._.js +3 -0
  511. package/server/.next/server/chunks/ssr/[root-of-the-server]__1ogwz1buruc_x._.js +3 -0
  512. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0llh-w4ta1qbp._.js → [root-of-the-server]__1sw2q1p1t59y8._.js} +2 -2
  513. package/server/.next/server/chunks/ssr/{[root-of-the-server]__06uaa_2zbg57p._.js → [root-of-the-server]__1tj-iwvrxfd1a._.js} +2 -2
  514. package/server/.next/server/chunks/ssr/{[root-of-the-server]__1xwqrik2sugmi._.js → [root-of-the-server]__1u_13nhw3kuz3._.js} +2 -2
  515. package/server/.next/server/chunks/ssr/[root-of-the-server]__1wr4__6rvsb3b._.js +3 -0
  516. package/server/.next/server/chunks/ssr/[root-of-the-server]__1yx8ayym979jd._.js +3 -0
  517. package/server/.next/server/chunks/ssr/[root-of-the-server]__1zmavjo5fhryp._.js +3 -0
  518. package/server/.next/server/chunks/ssr/[root-of-the-server]__20of6xa16fwqa._.js +1 -1
  519. package/server/.next/server/chunks/ssr/_0-wc6f6p0c8lv._.js +3 -0
  520. package/server/.next/server/chunks/ssr/_01x32f51v50y7._.js +3 -0
  521. package/server/.next/server/chunks/ssr/{_04ltmruop4rt3._.js → _02eudwc8ieb2r._.js} +3 -3
  522. package/server/.next/server/chunks/ssr/_034fv8o7kws2k._.js +3 -0
  523. package/server/.next/server/chunks/ssr/_03od6e8ibcxtf._.js +3 -0
  524. package/server/.next/server/chunks/ssr/_042ow6smd_1gj._.js +3 -0
  525. package/server/.next/server/chunks/ssr/{_1_gydx19bikgo._.js → _08d4hz_ddxc02._.js} +2 -2
  526. package/server/.next/server/chunks/ssr/_08e6i1zuyz-ns._.js +3 -0
  527. package/server/.next/server/chunks/ssr/{_090fib2x989oc._.js → _08xqk3eibu5aw._.js} +2 -2
  528. package/server/.next/server/chunks/ssr/{_01irlde8uxva8._.js → _0_8v3-nq-b4ug._.js} +2 -2
  529. package/server/.next/server/chunks/ssr/_0_oc9q0vqkynd._.js +1 -1
  530. package/server/.next/server/chunks/ssr/_0a22b7zsckifp._.js +1 -1
  531. package/server/.next/server/chunks/ssr/_0azq3ml4gbn1d._.js +1 -1
  532. package/server/.next/server/chunks/ssr/_0bd4cxnpnnq2u._.js +1 -1
  533. package/server/.next/server/chunks/ssr/_0c7stbntpuyt_._.js +3 -0
  534. package/server/.next/server/chunks/ssr/{_1ag8axv14phju._.js → _0cbbks0ms7i_u._.js} +3 -3
  535. package/server/.next/server/chunks/ssr/_0cukja7zcxh7e._.js +1 -1
  536. package/server/.next/server/chunks/ssr/_0cw4kz3d6kmb1._.js +1 -1
  537. package/server/.next/server/chunks/ssr/_0d2d527wcx-lf._.js +4 -0
  538. package/server/.next/server/chunks/ssr/_0d702k82llasi._.js +1 -1
  539. package/server/.next/server/chunks/ssr/_0e4xfzm8oecc-._.js +3 -0
  540. package/server/.next/server/chunks/ssr/_0ffsv993spriq._.js +3 -0
  541. package/server/.next/server/chunks/ssr/_0gl-ewvbhb677._.js +4 -0
  542. package/server/.next/server/chunks/ssr/_0hsj1tx2ynla-._.js +3 -0
  543. package/server/.next/server/chunks/ssr/_0i04zoixa2iup._.js +4 -0
  544. package/server/.next/server/chunks/ssr/_0idbg-ok0so2h._.js +4 -0
  545. package/server/.next/server/chunks/ssr/{_0tqc0bsnybvva._.js → _0ipnb60-_660b._.js} +2 -2
  546. package/server/.next/server/chunks/ssr/_0kdn56_ow-x_s._.js +3 -0
  547. package/server/.next/server/chunks/ssr/{src_lib_0-nc33gvdtkg5._.js → _0ls7sornjrg95._.js} +2 -2
  548. package/server/.next/server/chunks/ssr/_0oovfx_t_-u0k._.js +1 -1
  549. package/server/.next/server/chunks/ssr/{_18lgd6o04ugow._.js → _0oub-njkja8gu._.js} +3 -3
  550. package/server/.next/server/chunks/ssr/_0pqkexxo7rts_._.js +4 -0
  551. package/server/.next/server/chunks/ssr/_0qhvl_fw4qetx._.js +1 -1
  552. package/server/.next/server/chunks/ssr/_0qo8tc43kjsf_._.js +1 -1
  553. package/server/.next/server/chunks/ssr/_0tnd528j0i1i4._.js +4 -0
  554. package/server/.next/server/chunks/ssr/_0uvkx5n0kf7r2._.js +3 -0
  555. package/server/.next/server/chunks/ssr/_0uwkwcgucqgcf._.js +4 -0
  556. package/server/.next/server/chunks/ssr/_0v6v5w16qxwke._.js +1 -1
  557. package/server/.next/server/chunks/ssr/_0wo-lpqf7hr1y._.js +2 -2
  558. package/server/.next/server/chunks/ssr/_0zixhhc1lheoi._.js +4 -0
  559. package/server/.next/server/chunks/ssr/_0zkmkbrbc96-h._.js +3 -0
  560. package/server/.next/server/chunks/ssr/_1-6d1tm3r_qwg._.js +1 -1
  561. package/server/.next/server/chunks/ssr/_10bven6gb1vj0._.js +1 -1
  562. package/server/.next/server/chunks/ssr/_118h21qua_4o3._.js +1 -1
  563. package/server/.next/server/chunks/ssr/_11llsmv578p2i._.js +3 -0
  564. package/server/.next/server/chunks/ssr/_12makqwatfke-._.js +4 -0
  565. package/server/.next/server/chunks/ssr/_1476vtrt9101m._.js +1 -1
  566. package/server/.next/server/chunks/ssr/_19-3vzkc6rk97._.js +1 -1
  567. package/server/.next/server/chunks/ssr/_1_-o2s48aj4i7._.js +1 -1
  568. package/server/.next/server/chunks/ssr/_1_xsrlijknnh3._.js +1 -1
  569. package/server/.next/server/chunks/ssr/_1b1t9p1xljuql._.js +5 -0
  570. package/server/.next/server/chunks/ssr/_1c7jkkvkvzj_u._.js +4 -0
  571. package/server/.next/server/chunks/ssr/_1cl55h_h3q-b_._.js +1 -1
  572. package/server/.next/server/chunks/ssr/_1de6e6l7599fp._.js +1 -1
  573. package/server/.next/server/chunks/ssr/_1dlo17ba9g-f9._.js +4 -0
  574. package/server/.next/server/chunks/ssr/_1e5kqt081d8yt._.js +3 -0
  575. package/server/.next/server/chunks/ssr/_1fc8k_0p8l00c._.js +4 -0
  576. package/server/.next/server/chunks/ssr/{_1w_rq6clcs0ft._.js → _1fuywfexex2s8._.js} +3 -3
  577. package/server/.next/server/chunks/ssr/_1g2zbl_-4z_hg._.js +1 -1
  578. package/server/.next/server/chunks/ssr/_1gl78598hz_ku._.js +1 -1
  579. package/server/.next/server/chunks/ssr/_1h93joqd_-1og._.js +1 -1
  580. package/server/.next/server/chunks/ssr/_1he21-bt45k8z._.js +4 -0
  581. package/server/.next/server/chunks/ssr/_1j9cka-44jd65._.js +1 -1
  582. package/server/.next/server/chunks/ssr/_1jclq5d7tposb._.js +3 -0
  583. package/server/.next/server/chunks/ssr/_1jh_o2i8hj2g5._.js +1 -1
  584. package/server/.next/server/chunks/ssr/_1ln6o3a9quwxo._.js +4 -0
  585. package/server/.next/server/chunks/ssr/{_0hmxyfx7su4uk._.js → _1m4km_w39x5e9._.js} +2 -2
  586. package/server/.next/server/chunks/ssr/_1o94cw0ml7xu7._.js +3 -0
  587. package/server/.next/server/chunks/ssr/_1ok868mr1th-7._.js +3 -0
  588. package/server/.next/server/chunks/ssr/_1pp1o361lgpwu._.js +4 -0
  589. package/server/.next/server/chunks/ssr/_1qdox4yn1u4pc._.js +1 -1
  590. package/server/.next/server/chunks/ssr/_1qdqc9j_skd1q._.js +1 -1
  591. package/server/.next/server/chunks/ssr/_1r7o1vx4875hu._.js +1 -1
  592. package/server/.next/server/chunks/ssr/{_1gk334l49puy-._.js → _1rinsar6bp6ul._.js} +2 -2
  593. package/server/.next/server/chunks/ssr/_1yh3k88t_kh4h._.js +4 -0
  594. package/server/.next/server/chunks/ssr/_1z6dy1k48mskn._.js +1 -1
  595. package/server/.next/server/chunks/ssr/_20wy2moxkzhf0._.js +3 -0
  596. package/server/.next/server/chunks/ssr/{_026w_ig6vy9bt._.js → _218164gkxgum_._.js} +2 -2
  597. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_(private)_ai_keys_page_actions_181-3r4e_0yb5.js +3 -0
  598. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_(private)_ai_logs_page_actions_1ryb93n6khky3.js +3 -0
  599. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_alerts_page_actions_06_3gmyq3jtvi.js +3 -0
  600. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_apps_[id]_page_actions_0y5m8cul6d7kk.js +3 -0
  601. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_apps_page_actions_0ksau5eicvycc.js +3 -0
  602. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_connections_page_actions_1fgolmmpxrouc.js +3 -0
  603. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_dns_page_actions_17d_lvhl-u_4w.js +3 -0
  604. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_domains_page_actions_1yv3fj_fh-n-5.js +3 -0
  605. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_firebase_page_actions_00wuues_v_j3r.js +3 -0
  606. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_logs_page_actions_0oqh51t2rx6q0.js +3 -0
  607. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_manage_sections_page_actions_1sb2ldu57uj32.js +3 -0
  608. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_settings_page_actions_12wgjpd0lbh12.js +3 -0
  609. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_supabase_page_actions_1f3a_tpkwjo8z.js +3 -0
  610. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_uptime_page_actions_1ylbdz0-ykfh6.js +3 -0
  611. package/server/.next/server/chunks/ssr/_next-internal_server_app_account_password_page_actions_1v4e71_oifbx9.js +1 -1
  612. package/server/.next/server/chunks/ssr/_next-internal_server_app_signin_page_actions_11wzk446p6_zi.js +1 -1
  613. package/server/.next/server/chunks/ssr/node_modules_0bqq4kab3lt4c._.js +3 -0
  614. package/server/.next/server/chunks/ssr/{node_modules_05z64qbskywkh._.js → node_modules_1-uce_v-roeci._.js} +1 -1
  615. package/server/.next/server/chunks/ssr/node_modules_@base-ui_react_dialog_index_parts_mjs_0wvx70_xziwkw._.js +3 -0
  616. package/server/.next/server/chunks/ssr/node_modules_next_dist_client_components_0p8s4lhdi0ir6._.js +3 -0
  617. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0-kkewzcx4540.js +3 -0
  618. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_00t5_cu_8xco2.js +3 -0
  619. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_028rm32yw9745.js +3 -0
  620. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_02tytjla8gfpw.js +3 -0
  621. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_05tff2l0grv3d.js +3 -0
  622. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_08qavwdx-gipt.js +3 -0
  623. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_09jdr97vksmwk.js +3 -0
  624. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0c3z69fbbz6-a.js +3 -0
  625. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0d4hxwzkts-8z.js +3 -0
  626. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0dq-zslzf2s94.js +3 -0
  627. 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
  628. 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
  629. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0esqulnipbhj7.js +3 -0
  630. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0icasmc2qvtfa.js +3 -0
  631. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0idohkgskbja5.js +3 -0
  632. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0ii2a6tud83pj.js +3 -0
  633. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0ivr2dcq7hh5t.js +3 -0
  634. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0mcwghl-di24f.js +3 -0
  635. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0n05qgf2t9o6n.js +3 -0
  636. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0ntej2bo95ns3.js +3 -0
  637. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0o1l93c0tj-p8.js +3 -0
  638. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0ollx_iq739y6.js +3 -0
  639. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0v16m5nv0x43b.js +3 -0
  640. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0wa_9ywaoqxrf.js +3 -0
  641. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0y94b-zvw0vrq.js +3 -0
  642. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0ydzswpddtx9q.js +3 -0
  643. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0zwpkpyuh6z99.js +3 -0
  644. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_14t5-0abqp0sm.js +3 -0
  645. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_18h3ke4tl-fzl.js +3 -0
  646. 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
  647. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1_s_25znkg8mz.js +3 -0
  648. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1_ysa6fs0tt59.js +3 -0
  649. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1b4hixza89i52.js +3 -0
  650. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1brrqdx4msjzf.js +3 -0
  651. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1e74o7dar2z12.js +3 -0
  652. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1eqpqmdz9jgs0.js +3 -0
  653. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1f3932777ye1o.js +3 -0
  654. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1kx1n5-wqjvko.js +3 -0
  655. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1l6umnmh89nvy.js +3 -0
  656. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1mdyuengydtxm.js +3 -0
  657. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1qmm1wm-dfm_v.js +3 -0
  658. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1t-fn8blx1hp8.js +3 -0
  659. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1tf9xiz17b3cq.js +3 -0
  660. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1tffdbiasnszd.js +3 -0
  661. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1uisz6sszlhwp.js +3 -0
  662. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1umag21mbk-rs.js +3 -0
  663. 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
  664. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1wmviw4zw6t_r.js +3 -0
  665. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1xq449tjypb4s.js +3 -0
  666. package/server/.next/server/chunks/ssr/src_02ynbzyh8nn02._.js +3 -0
  667. package/server/.next/server/chunks/ssr/src_0330uf9pdfco9._.js +3 -0
  668. package/server/.next/server/chunks/ssr/src_06tjy8wljego8._.js +1 -1
  669. package/server/.next/server/chunks/ssr/src_084tdkx3c_yqi._.js +1 -1
  670. package/server/.next/server/chunks/ssr/src_0_5_wl0sww-x7._.js +1 -1
  671. package/server/.next/server/chunks/ssr/src_0abts6wp5ucc0._.js +1 -1
  672. package/server/.next/server/chunks/ssr/src_0etvjdinp5urq._.js +3 -0
  673. package/server/.next/server/chunks/ssr/{src_1xjlp4oxlprxb._.js → src_0jxjbvkvg0bjg._.js} +2 -2
  674. package/server/.next/server/chunks/ssr/src_0ph020gy78gi9._.js +1 -1
  675. package/server/.next/server/chunks/ssr/src_0txyv7r1zns16._.js +3 -0
  676. package/server/.next/server/chunks/ssr/src_0uitfl3c1mdqb._.js +1 -1
  677. package/server/.next/server/chunks/ssr/src_0xh3xicmff6ws._.js +1 -1
  678. package/server/.next/server/chunks/ssr/src_10zavgy86u3us._.js +1 -1
  679. package/server/.next/server/chunks/ssr/{src_071xsnvnzlvj8._.js → src_1751lvujjc-tz._.js} +2 -2
  680. package/server/.next/server/chunks/ssr/{src_0905fjqu0qv57._.js → src_186l56gdeizg8._.js} +2 -2
  681. package/server/.next/server/chunks/ssr/src_1f1x6508qetmp._.js +3 -0
  682. package/server/.next/server/chunks/ssr/src_1koc8y1nfdlw3._.js +1 -1
  683. package/server/.next/server/chunks/ssr/{src_0i-1ohush6mui._.js → src_1p24c-nz35cov._.js} +2 -2
  684. package/server/.next/server/chunks/ssr/src_1pd5lqhm1x4yf._.js +1 -1
  685. package/server/.next/server/chunks/ssr/src_1q-jgpnd3lbcu._.js +1 -1
  686. package/server/.next/server/chunks/ssr/{src_0widudneyf0oq._.js → src_1wnx8vxv7nd04._.js} +2 -2
  687. package/server/.next/server/chunks/ssr/src_1xoua7wkmyfkn._.js +3 -0
  688. package/server/.next/server/chunks/ssr/src_1y827m5-ojdib._.js +6 -0
  689. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_agents_1fyhh1ldgm23z._.js +1 -1
  690. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_ask_ask-form_tsx_18ttm9nna_9y6._.js +1 -1
  691. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_logs_export-button_tsx_1k-crb88n1za_._.js +1 -1
  692. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_models_0ayzqn062pnv5._.js +1 -1
  693. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_playground_playground-view_tsx_18ua5zn_a0mar._.js +2 -2
  694. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_providers_1ru-30x6-uwu4._.js +1 -1
  695. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_quota_limits-form_tsx_1vouaaf560z_x._.js +1 -1
  696. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_usage_limits-form_tsx_0sfk3ver58rqw._.js +1 -1
  697. package/server/.next/server/chunks/ssr/src_app_(console)_1co5pna1vfflj._.js +3 -0
  698. package/server/.next/server/chunks/ssr/src_app_(console)_1shtcv6hidi4-._.js +3 -0
  699. package/server/.next/server/chunks/ssr/src_app_(console)_alerts_0j5xlt68kwg8x._.js +2 -1
  700. package/server/.next/server/chunks/ssr/src_app_(console)_alerts_1t61z2wktki-v._.js +1 -1
  701. package/server/.next/server/chunks/ssr/src_app_(console)_apps_[id]_1jme7fm7ej_lr._.js +3 -0
  702. package/server/.next/server/chunks/ssr/src_app_(console)_apps_[id]_1sfvku9ui1le-._.js +1 -1
  703. package/server/.next/server/chunks/ssr/src_app_(console)_backups_actions_ts_1vpytsdh0wc1f._.js +1 -1
  704. package/server/.next/server/chunks/ssr/src_app_(console)_backups_drive-buttons_tsx_00cku5r_z3jkg._.js +1 -1
  705. package/server/.next/server/chunks/ssr/src_app_(console)_connections_02upf_c41dauw._.js +1 -1
  706. package/server/.next/server/chunks/ssr/src_app_(console)_connections_1fahc65-97qla._.js +1 -1
  707. package/server/.next/server/chunks/ssr/src_app_(console)_connections_1fmp_anbkapur._.js +1 -1
  708. package/server/.next/server/chunks/ssr/src_app_(console)_connections_actions_ts_103blv4gzq76z._.js +1 -1
  709. package/server/.next/server/chunks/ssr/src_app_(console)_create_actions_ts_05-86qr6kfjey._.js +1 -1
  710. package/server/.next/server/chunks/ssr/src_app_(console)_d1_page_tsx_167hwnq_9uh81._.js +1 -1
  711. package/server/.next/server/chunks/ssr/src_app_(console)_dns_0d1uyir4fe7pc._.js +1 -1
  712. package/server/.next/server/chunks/ssr/src_app_(console)_dns_actions_ts_1jzn58xzwbukz._.js +1 -1
  713. package/server/.next/server/chunks/ssr/src_app_(console)_dns_record-actions_tsx_0cqmz51zcuebv._.js +1 -1
  714. package/server/.next/server/chunks/ssr/src_app_(console)_domains_1ut499n11u8_r._.js +1 -1
  715. package/server/.next/server/chunks/ssr/src_app_(console)_firebase_row-menu_tsx_0hssoq3pqjl-n._.js +1 -1
  716. package/server/.next/server/chunks/ssr/src_app_(console)_logs_log-viewer_tsx_0v3e4cflfk14w._.js +1 -1
  717. package/server/.next/server/chunks/ssr/src_app_(console)_manage_sections_17htk-vea5fna._.js +1 -1
  718. package/server/.next/server/chunks/ssr/src_app_(console)_manage_sections_section-switch_tsx_1mfs-o_357i22._.js +1 -1
  719. package/server/.next/server/chunks/ssr/src_app_(console)_monitor-actions_ts_10w3h7myk2ppi._.js +1 -1
  720. package/server/.next/server/chunks/ssr/src_app_(console)_overview_page_tsx_0se3f3ln9q-42._.js +1 -1
  721. package/server/.next/server/chunks/ssr/src_app_(console)_palette-action_ts_0zyw9a9imev6p._.js +1 -1
  722. package/server/.next/server/chunks/ssr/src_app_(console)_repos_[id]_page_tsx_1nkxthc4ethrj._.js +2 -2
  723. package/server/.next/server/chunks/ssr/src_app_(console)_sql_1icfsti04djqe._.js +2 -2
  724. package/server/.next/server/chunks/ssr/src_app_(console)_sql_actions_ts_1oqco02hw-3vp._.js +1 -1
  725. package/server/.next/server/chunks/ssr/src_app_(console)_status_page_tsx_1zvj799nv4kah._.js +1 -1
  726. package/server/.next/server/chunks/ssr/src_app_(console)_supabase_0ib3m2ch9gu-4._.js +1 -1
  727. package/server/.next/server/chunks/ssr/src_app_(console)_supabase_1ofufib3-zzt-._.js +1 -1
  728. package/server/.next/server/chunks/ssr/src_app_(console)_supabase_pool-actions_ts_0nzd4vwy_9zzx._.js +1 -1
  729. package/server/.next/server/chunks/ssr/src_app_(console)_uptime_1mnnkfi-2zv-k._.js +1 -1
  730. package/server/.next/server/chunks/ssr/src_app_(console)_vercel-actions_ts_0wpk1yo9v632d._.js +1 -1
  731. package/server/.next/server/chunks/ssr/src_app_mfa_setup_setup-flow_tsx_1fpwygr2vdgnh._.js +1 -1
  732. package/server/.next/server/chunks/ssr/src_app_s_[slug]_page_tsx_0jjqe6py82mpb._.js +1 -1
  733. package/server/.next/server/chunks/ssr/src_app_setup_setup-form_tsx_0izoagdur96e1._.js +1 -1
  734. package/server/.next/server/chunks/ssr/{src_app_signin_0hb58isfg-2yx._.js → src_app_signin_0ko968fxahf6u._.js} +2 -2
  735. package/server/.next/server/chunks/ssr/src_components_0-x11r8_844pu._.js +1 -1
  736. package/server/.next/server/chunks/ssr/src_components_08d78uqnnmrrh._.js +1 -1
  737. package/server/.next/server/chunks/ssr/src_components_0_xymno8nakru._.js +3 -0
  738. package/server/.next/server/chunks/ssr/src_components_0ozvphxxwb7d-._.js +3 -0
  739. package/server/.next/server/chunks/ssr/src_components_0tmtbf2etsx03._.js +1 -1
  740. package/server/.next/server/chunks/ssr/src_components_charts_tsx_0u0c5sxi3-7ug._.js +1 -1
  741. package/server/.next/server/chunks/ssr/src_components_create_create-dialog_tsx_1s_9clly_m1ru._.js +1 -1
  742. package/server/.next/server/chunks/ssr/src_components_live_tsx_1p2s3b807w0jt._.js +1 -1
  743. package/server/.next/server/chunks/ssr/src_components_ui_dialog_tsx_1tn-i_6d3rhzt._.js +1 -1
  744. package/server/.next/server/chunks/ssr/src_lib_001zhbfd1zeuk._.js +3 -0
  745. package/server/.next/server/chunks/ssr/src_lib_04orn7u7ufxp1._.js +3 -0
  746. package/server/.next/server/chunks/ssr/src_lib_0eqv8l-v8d5ze._.js +3 -0
  747. package/server/.next/server/chunks/ssr/src_lib_0nbad7vu413-f._.js +23 -0
  748. package/server/.next/server/chunks/ssr/src_lib_1eioo4oodq-8h._.js +3 -0
  749. package/server/.next/server/chunks/ssr/src_lib_1l8ej-zoyyegd._.js +3 -0
  750. package/server/.next/server/chunks/ssr/src_lib_1nkahiclbn55q._.js +3 -0
  751. package/server/.next/server/chunks/ssr/src_lib_alerts_catalog_ts_1ndg28acul64q._.js +1 -1
  752. package/server/.next/server/chunks/ssr/src_lib_auth_ts_11yt3pae6wy-o._.js +1 -1
  753. package/server/.next/server/chunks/ssr/src_lib_collector_run_ts_0-q8is8s0y9cq._.js +1 -1
  754. package/server/.next/server/chunks/ssr/src_lib_collector_self-update_ts_18m5vmptpjhtg._.js +3 -0
  755. package/server/.next/server/chunks/ssr/src_lib_data_github-db_ts_02xuh84m-__8z._.js +1 -1
  756. package/server/.next/server/chunks/ssr/src_lib_data_metrics-db_ts_0zp7x6l28a2ep._.js +3 -0
  757. package/server/.next/server/chunks/ssr/src_lib_data_provider-status-db_ts_09oo6p4m7x7te._.js +1 -1
  758. package/server/.next/server/chunks/ssr/{src_lib_demo_1wu-a6lubzph6._.js → src_lib_demo_0ftmf3wmtezvl._.js} +2 -2
  759. package/server/.next/server/chunks/ssr/src_lib_local-auth_setup_ts_05zj7z33ne4f5._.js +1 -1
  760. package/server/.next/server/chunks/ssr/src_lib_security_node-runtime_ts_1jei00s21d6v0._.js +3 -0
  761. package/server/.next/server/chunks/ssr/src_lib_view_14iq8onyfo7nd._.js +3 -0
  762. package/server/.next/server/chunks/ssr/src_lib_view_databases_ts_1ovdbo8spjhf9._.js +1 -1
  763. package/server/.next/server/chunks/ssr/src_lib_view_labels_ts_1uxs84z7vclz5._.js +1 -1
  764. package/server/.next/server/chunks/ssr/src_lib_view_network_ts_0toa7t-gw9cup._.js +1 -1
  765. package/server/.next/server/chunks/ssr/src_private_0iy_wyg2p1jkn._.js +1 -1
  766. package/server/.next/server/chunks/ssr/src_private_actions_decide-form_tsx_1hngtxpyle3v8._.js +1 -1
  767. package/server/.next/server/chunks/ssr/src_private_ai_providers_actions_ts_0wxa36ai6s5nn._.js +1 -1
  768. package/server/.next/server/chunks/ssr/src_private_assist_questions-db_ts_1l-wvmlexd7tr._.js +1 -1
  769. package/server/.next/server/chunks/ssr/src_private_notes_notes-actions_ts_1g63g8u965fhc._.js +1 -1
  770. package/server/.next/server/middleware-build-manifest.js +105 -105
  771. package/server/.next/server/pages/404.html +1 -1
  772. package/server/.next/server/pages/500.html +1 -1
  773. package/server/.next/server/preview-props.json +3 -3
  774. package/server/.next/server/server-reference-manifest.js +1 -1
  775. package/server/.next/server/server-reference-manifest.json +868 -672
  776. package/server/.next/static/chunks/0-6om8-d7itz8.js +1 -0
  777. package/server/.next/static/chunks/00oeu_tbjky7m.js +1 -0
  778. package/server/.next/static/chunks/0181phyuecg9b.js +1 -0
  779. package/server/.next/static/chunks/{36js6cf9c-53b.js → 01u9q07wu6-x1.js} +1 -1
  780. package/server/.next/static/chunks/0_5_9w6m-xwd0.js +1 -0
  781. package/server/.next/static/chunks/{0rgn3-cks0udn.js → 0a-rekt06v0sv.js} +1 -1
  782. package/server/.next/static/chunks/0hj1-5zruyih6.js +1 -0
  783. package/server/.next/static/chunks/0krhehmzgigx5.js +1 -0
  784. package/server/.next/static/chunks/0md0jy9rztofl.js +1 -0
  785. package/server/.next/static/chunks/0mp6prf1hx5mx.js +1 -0
  786. package/server/.next/static/chunks/0t66sf4vvalei.js +1 -0
  787. package/server/.next/static/chunks/{1o1lidcbrrh92.js → 0v_-lu_cx7f91.js} +1 -1
  788. package/server/.next/static/chunks/0x_wb_w6fgkyt.js +1 -0
  789. package/server/.next/static/chunks/0xcpi35p5fa83.js +1 -0
  790. package/server/.next/static/chunks/0z0may9twpt-j.js +1 -0
  791. package/server/.next/static/chunks/{2yjh4ytp-sedv.js → 149lk0boxihnl.js} +1 -1
  792. package/server/.next/static/chunks/{0i8-ofb4wfcch.js → 16yvy9zkjac5c.js} +1 -1
  793. package/server/.next/static/chunks/17lwu-2id6c_-.js +1 -0
  794. package/server/.next/static/chunks/18johpgap0xmw.js +1 -0
  795. package/server/.next/static/chunks/18mkhwl0zlvnp.js +1 -0
  796. package/server/.next/static/chunks/1_8g4usrgjnnu.js +1 -0
  797. package/server/.next/static/chunks/1c0s-ejiwfy2u.js +1 -0
  798. package/server/.next/static/chunks/{319s97ka6eaex.js → 1gt3cagsbgx4w.js} +1 -1
  799. package/server/.next/static/chunks/1q-m7qgrvvzwb.js +1 -0
  800. package/server/.next/static/chunks/{1qxc6cck2xkbs.js → 1rkrtrvwbbnjf.js} +1 -1
  801. package/server/.next/static/chunks/{12fo0pcbpv7lw.js → 1sc1vz_ygak9u.js} +1 -1
  802. package/server/.next/static/chunks/1tg1mstvws8rj.css +3 -0
  803. package/server/.next/static/chunks/1ukyjy13dwy_z.js +1 -0
  804. package/server/.next/static/chunks/1urtw14pwufsv.js +1 -0
  805. package/server/.next/static/chunks/1xm6ay06cjchs.js +1 -0
  806. package/server/.next/static/chunks/{3orhi-m-n-ra4.js → 1y_6crandf_3f.js} +1 -1
  807. package/server/.next/static/chunks/1ys80h6x541kn.js +5 -0
  808. package/server/.next/static/chunks/2-m982u6v7z8m.js +1 -0
  809. package/server/.next/static/chunks/20ujg0hz_need.js +1 -0
  810. package/server/.next/static/chunks/2a3tky__z9q4j.js +1 -0
  811. package/server/.next/static/chunks/2cipdjdkoq312.js +1 -0
  812. package/server/.next/static/chunks/{0-_zjfssid86w.js → 2ect0ww0gtoad.js} +2 -2
  813. package/server/.next/static/chunks/2s-_9p0-395sm.js +1 -0
  814. package/server/.next/static/chunks/{0a5vchcarwyam.js → 2ue_c6tww95_c.js} +1 -1
  815. package/server/.next/static/chunks/2xio-kspedw69.js +1 -0
  816. package/server/.next/static/chunks/2z6gojfx3lqvt.js +1 -0
  817. package/server/.next/static/chunks/31v3igne_z-0k.js +1 -0
  818. package/server/.next/static/chunks/33ddsp07_9o1d.js +7 -0
  819. package/server/.next/static/chunks/340qccog2_uge.js +2 -0
  820. package/server/.next/static/chunks/35ua22np4u9jr.js +1 -0
  821. package/server/.next/static/chunks/{2q88116332v43.js → 37zqf9hef7g0k.js} +1 -1
  822. package/server/.next/static/chunks/38ao1jq4zw-nd.js +1 -0
  823. package/server/.next/static/chunks/{3xo5igjfumqip.js → 38g-5wiggu6__.js} +1 -1
  824. package/server/.next/static/chunks/{05p62k_8g05pm.js → 3a5a2iizetq9b.js} +11 -11
  825. package/server/.next/static/chunks/3f1td0b-oy-sr.js +1 -0
  826. package/server/.next/static/chunks/{1pre7l9hmk-b6.js → 3imk3dh9_4wd5.js} +1 -1
  827. package/server/.next/static/chunks/3jhh47vezwohc.js +1 -0
  828. package/server/.next/static/chunks/3letbzhf_1srv.js +1 -0
  829. package/server/.next/static/chunks/{3u3h2mlon2qu7.js → 3qedt96akbcad.js} +1 -1
  830. package/server/.next/static/chunks/3vpy-ra0rib9m.js +1 -0
  831. package/server/.next/static/chunks/3wi930ujb_5_z.js +1 -0
  832. package/server/.next/static/chunks/40n6mtthd3_sh.js +1 -0
  833. package/server/drizzle-selfhost/0007_webhook_channel.sql +5 -0
  834. package/server/drizzle-selfhost/meta/_journal.json +7 -0
  835. package/tools/reset-login.mjs +1 -1
  836. package/server/.next/server/chunks/[root-of-the-server]__0f5bt0o1k41ft._.js +0 -3
  837. package/server/.next/server/chunks/[root-of-the-server]__0hedtycoyydoc._.js +0 -3
  838. package/server/.next/server/chunks/[root-of-the-server]__0zmvf4j8e2gno._.js +0 -3
  839. package/server/.next/server/chunks/[root-of-the-server]__1-9hjrgvj0fpb._.js +0 -3
  840. package/server/.next/server/chunks/[root-of-the-server]__13hrm9c61i7uk._.js +0 -3
  841. package/server/.next/server/chunks/[root-of-the-server]__14eyo4i2tm93k._.js +0 -3
  842. package/server/.next/server/chunks/[root-of-the-server]__14ou3bydfm0ms._.js +0 -3
  843. package/server/.next/server/chunks/[root-of-the-server]__19ylbgd65iej4._.js +0 -3
  844. package/server/.next/server/chunks/[root-of-the-server]__1dyith2r4bacm._.js +0 -3
  845. package/server/.next/server/chunks/[root-of-the-server]__1e1l75cf48ph2._.js +0 -3
  846. package/server/.next/server/chunks/[root-of-the-server]__1eu2_f44as742._.js +0 -3
  847. package/server/.next/server/chunks/[root-of-the-server]__1mim39ea6-dm1._.js +0 -3
  848. package/server/.next/server/chunks/[root-of-the-server]__1p0zd1rtbkj9r._.js +0 -3
  849. package/server/.next/server/chunks/[root-of-the-server]__1pvx0izh1m_0_._.js +0 -3
  850. package/server/.next/server/chunks/[root-of-the-server]__1v4i7ytwadml8._.js +0 -3
  851. package/server/.next/server/chunks/[root-of-the-server]__1vwz2r58cojht._.js +0 -3
  852. package/server/.next/server/chunks/[root-of-the-server]__1zg653esm3__p._.js +0 -3
  853. package/server/.next/server/chunks/[root-of-the-server]__1zrqz88a2lkx5._.js +0 -3
  854. package/server/.next/server/chunks/[root-of-the-server]__1zwi7po5_xe8-._.js +0 -3
  855. package/server/.next/server/chunks/_0qyupoc7u5hr7._.js +0 -3
  856. package/server/.next/server/chunks/_1-ior_ot6mgxg._.js +0 -3
  857. package/server/.next/server/chunks/_1-pw7jw52sbti._.js +0 -3
  858. package/server/.next/server/chunks/src_0i-1ohush6mui._.js +0 -3
  859. package/server/.next/server/chunks/src_1-xw4hea2lvb3._.js +0 -3
  860. package/server/.next/server/chunks/src_lib_0-nc33gvdtkg5._.js +0 -5
  861. package/server/.next/server/chunks/src_lib_0-xd6p5793qdu._.js +0 -3
  862. package/server/.next/server/chunks/src_lib_0qbcg988i_-ee._.js +0 -3
  863. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_agents_page_actions_1q6nc5chwn5k4.js +0 -3
  864. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_models_page_actions_0n_anax2l1jpu.js +0 -3
  865. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_playground_page_actions_1kyng_xuojdtb.js +0 -4
  866. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_quota_page_actions_04r4ro6x7-p7p.js +0 -3
  867. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_usage_page_actions_1fq9uugdpqa_l.js +0 -3
  868. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_auto-actions_page_actions_0mhtiq_5szpe0.js +0 -3
  869. package/server/.next/server/chunks/ssr/[externals]__1hqh7fi0-rtlc._.js +0 -3
  870. package/server/.next/server/chunks/ssr/[externals]__1mmmc4yhx5fm6._.js +0 -3
  871. package/server/.next/server/chunks/ssr/[externals]__1nv-uycpa6_lh._.js +0 -3
  872. package/server/.next/server/chunks/ssr/[externals]__1p5zuqwmfkoo1._.js +0 -3
  873. package/server/.next/server/chunks/ssr/[root-of-the-server]__0-jx3t8dg8n5t._.js +0 -3
  874. package/server/.next/server/chunks/ssr/[root-of-the-server]__01mgajn73iwc7._.js +0 -5
  875. package/server/.next/server/chunks/ssr/[root-of-the-server]__04klr3-4qi7-t._.js +0 -3
  876. package/server/.next/server/chunks/ssr/[root-of-the-server]__04zgt2t-w6-75._.js +0 -3
  877. package/server/.next/server/chunks/ssr/[root-of-the-server]__05q-laapy00sk._.js +0 -3
  878. package/server/.next/server/chunks/ssr/[root-of-the-server]__0dd9rci1isdjf._.js +0 -3
  879. package/server/.next/server/chunks/ssr/[root-of-the-server]__0ejxk0jlgi4eb._.js +0 -3
  880. package/server/.next/server/chunks/ssr/[root-of-the-server]__0lehuiyzxp78t._.js +0 -3
  881. package/server/.next/server/chunks/ssr/[root-of-the-server]__0nlfip3wc3l2z._.js +0 -4
  882. package/server/.next/server/chunks/ssr/[root-of-the-server]__0tp9vtckbkk9o._.js +0 -3
  883. package/server/.next/server/chunks/ssr/[root-of-the-server]__0wcnxr_g-bd3r._.js +0 -3
  884. package/server/.next/server/chunks/ssr/[root-of-the-server]__10y2ig7dg3f-k._.js +0 -3
  885. package/server/.next/server/chunks/ssr/[root-of-the-server]__18xb7pbdmiyiz._.js +0 -3
  886. package/server/.next/server/chunks/ssr/[root-of-the-server]__194546bqpq02e._.js +0 -3
  887. package/server/.next/server/chunks/ssr/[root-of-the-server]__1bvp2ia3h9qbs._.js +0 -3
  888. package/server/.next/server/chunks/ssr/[root-of-the-server]__1dyjzbqwy6o12._.js +0 -3
  889. package/server/.next/server/chunks/ssr/[root-of-the-server]__1fj33_xkainxk._.js +0 -4
  890. package/server/.next/server/chunks/ssr/[root-of-the-server]__1l695djsioelp._.js +0 -3
  891. package/server/.next/server/chunks/ssr/[root-of-the-server]__1pfk0fqey3ipf._.js +0 -3
  892. package/server/.next/server/chunks/ssr/[root-of-the-server]__1pgpryg9lkmoz._.js +0 -3
  893. package/server/.next/server/chunks/ssr/[root-of-the-server]__1rvdnoxnu0ddf._.js +0 -3
  894. package/server/.next/server/chunks/ssr/[root-of-the-server]__1t4thrxlv4zre._.js +0 -3
  895. package/server/.next/server/chunks/ssr/[root-of-the-server]__1tco2ec6ha1k6._.js +0 -3
  896. package/server/.next/server/chunks/ssr/[root-of-the-server]__1tcu4-eowz9vt._.js +0 -3
  897. package/server/.next/server/chunks/ssr/[root-of-the-server]__1tuftf7fags7x._.js +0 -5
  898. package/server/.next/server/chunks/ssr/[root-of-the-server]__1vyste6xyyu37._.js +0 -3
  899. package/server/.next/server/chunks/ssr/[root-of-the-server]__1yf4_oyl-3xp7._.js +0 -3
  900. package/server/.next/server/chunks/ssr/[root-of-the-server]__2195hg4329yfp._.js +0 -3
  901. package/server/.next/server/chunks/ssr/_0-uwh2rwm_dic._.js +0 -4
  902. package/server/.next/server/chunks/ssr/_06kn13xh_13da._.js +0 -3
  903. package/server/.next/server/chunks/ssr/_06kwu83_fmex9._.js +0 -4
  904. package/server/.next/server/chunks/ssr/_09s2unlb4r6yf._.js +0 -3
  905. package/server/.next/server/chunks/ssr/_0ad3y3l77xkxe._.js +0 -3
  906. package/server/.next/server/chunks/ssr/_0i-e824vtomvg._.js +0 -4
  907. package/server/.next/server/chunks/ssr/_0jjoot3rhbde3._.js +0 -4
  908. package/server/.next/server/chunks/ssr/_0kn710rrv_o2t._.js +0 -4
  909. package/server/.next/server/chunks/ssr/_0mgclon6_oh87._.js +0 -4
  910. package/server/.next/server/chunks/ssr/_0qcvpnwa1u3vr._.js +0 -3
  911. package/server/.next/server/chunks/ssr/_0qyupoc7u5hr7._.js +0 -3
  912. package/server/.next/server/chunks/ssr/_0sotiqakj-6ci._.js +0 -3
  913. package/server/.next/server/chunks/ssr/_0ufjz7kfd4jbd._.js +0 -3
  914. package/server/.next/server/chunks/ssr/_0uogspz6zrvwk._.js +0 -4
  915. package/server/.next/server/chunks/ssr/_0wzg8e30al7bu._.js +0 -3
  916. package/server/.next/server/chunks/ssr/_0ymtfa6vo-yz5._.js +0 -3
  917. package/server/.next/server/chunks/ssr/_0yn1xeumiigj0._.js +0 -3
  918. package/server/.next/server/chunks/ssr/_1-ior_ot6mgxg._.js +0 -3
  919. package/server/.next/server/chunks/ssr/_10pz3ggun9s5i._.js +0 -4
  920. package/server/.next/server/chunks/ssr/_12ddramfkd6o1._.js +0 -4
  921. package/server/.next/server/chunks/ssr/_15ft896zgt02e._.js +0 -4
  922. package/server/.next/server/chunks/ssr/_1b1ano88ar-gi._.js +0 -4
  923. package/server/.next/server/chunks/ssr/_1boia2p3_0nsz._.js +0 -4
  924. package/server/.next/server/chunks/ssr/_1e24cpw3g7njr._.js +0 -4
  925. package/server/.next/server/chunks/ssr/_1e5zfwgdf0mm5._.js +0 -3
  926. package/server/.next/server/chunks/ssr/_1gvbcfoah__sl._.js +0 -3
  927. package/server/.next/server/chunks/ssr/_1h5tfqxzqd2tz._.js +0 -3
  928. package/server/.next/server/chunks/ssr/_1i77n2n-wb98v._.js +0 -4
  929. package/server/.next/server/chunks/ssr/_1k8rjvzlscs56._.js +0 -3
  930. package/server/.next/server/chunks/ssr/_1l-vlfiltmzu3._.js +0 -3
  931. package/server/.next/server/chunks/ssr/_1rf_mwfkk_9oa._.js +0 -3
  932. package/server/.next/server/chunks/ssr/_1uae0vl2c6fz7._.js +0 -3
  933. package/server/.next/server/chunks/ssr/_1y8wer5tpgiqw._.js +0 -3
  934. package/server/.next/server/chunks/ssr/_1ybhu25y38395._.js +0 -4
  935. package/server/.next/server/chunks/ssr/_210edglbxmcb3._.js +0 -4
  936. package/server/.next/server/chunks/ssr/_217qa04yo70zg._.js +0 -3
  937. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_(private)_ai_keys_page_actions_1910ocjt__nlh.js +0 -3
  938. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_(private)_ai_logs_page_actions_136-s4sxl6nra.js +0 -3
  939. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_alerts_page_actions_0f7cxitw-svnl.js +0 -3
  940. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_apps_[id]_page_actions_14l8--w36mywn.js +0 -3
  941. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_apps_page_actions_1zw_mdh2ep6vs.js +0 -3
  942. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_connections_page_actions_06a1fnrawxlh1.js +0 -3
  943. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_dns_page_actions_1p2deebbgom7b.js +0 -3
  944. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_domains_page_actions_0-wg58qcvu_rv.js +0 -3
  945. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_firebase_page_actions_217-u-dmlzx6a.js +0 -3
  946. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_logs_page_actions_11-8xinblaop_.js +0 -3
  947. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_manage_sections_page_actions_0ven9q46d3d7s.js +0 -3
  948. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_settings_page_actions_1z3l1p4keed3m.js +0 -3
  949. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_supabase_page_actions_1evatil08dntl.js +0 -3
  950. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_uptime_page_actions_0k1237d-q3oc4.js +0 -3
  951. package/server/.next/server/chunks/ssr/node_modules_1_u5afwqp6brs._.js +0 -3
  952. package/server/.next/server/chunks/ssr/node_modules_next_dist_client_components_0wpq8j32_ibz4._.js +0 -3
  953. package/server/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_forbidden_0symwr9mbf-fh.js +0 -3
  954. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0-kg_ige9ehqj.js +0 -3
  955. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_00k37tbaia8dh.js +0 -3
  956. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_00z_p6szkga15.js +0 -3
  957. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_01-utr59mtfg1.js +0 -3
  958. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_055hw7kwif935.js +0 -3
  959. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_06fg_efdkc3kx.js +0 -3
  960. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_08f3d08smwt6_.js +0 -3
  961. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_08lcfro9qovjn.js +0 -3
  962. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0c8wd69fns_0d.js +0 -3
  963. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0cha-3kg99u4h.js +0 -3
  964. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0d_0he72lzkh9.js +0 -3
  965. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0f6chw8z5cuyg.js +0 -3
  966. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0j9-_xhs21abp.js +0 -3
  967. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0kwpdjujljna-.js +0 -3
  968. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0rer2akuum5r-.js +0 -3
  969. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0umt_achusjjb.js +0 -3
  970. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0un7wq602mt3n.js +0 -3
  971. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0vrdl9n7guitd.js +0 -3
  972. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0vse2cboy4cms.js +0 -3
  973. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0x7ey4_8b48_o.js +0 -3
  974. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0z8l8t55t65t_.js +0 -3
  975. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0zap6p0vuv-fp.js +0 -3
  976. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1-m49cfu6a7gl.js +0 -3
  977. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1-w3hswsbrppl.js +0 -3
  978. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1167zbjp4ys_a.js +0 -3
  979. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_129serqqq3xyq.js +0 -3
  980. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_12en3pdvxu0dy.js +0 -3
  981. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1596hk9t3r1a5.js +0 -3
  982. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_17us24ry0om-z.js +0 -3
  983. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1_8xi22-aoxu1.js +0 -3
  984. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1_l32aoya75_m.js +0 -3
  985. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1ar0v26274uhj.js +0 -3
  986. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1dkgfjoaf_1g3.js +0 -3
  987. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1eg14m09zdg__.js +0 -3
  988. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1h_y671y1la_8.js +0 -3
  989. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1mkokmyyp47hd.js +0 -3
  990. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1msjiuu45famw.js +0 -3
  991. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1mw7isdchouml.js +0 -3
  992. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1n4cotiug2a_r.js +0 -3
  993. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1njl24pr6dwrt.js +0 -3
  994. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1o1_3bydb-3j5.js +0 -3
  995. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1pjor42_s9imf.js +0 -3
  996. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1qta4yeufzpz7.js +0 -3
  997. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1qxbl6k6dji0s.js +0 -3
  998. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_21a3kf8buivxw.js +0 -3
  999. package/server/.next/server/chunks/ssr/src_0f_ip1ke7i9r7._.js +0 -3
  1000. package/server/.next/server/chunks/ssr/src_0ixeyy74fe5jy._.js +0 -3
  1001. package/server/.next/server/chunks/ssr/src_0jdurlhzhcg5x._.js +0 -3
  1002. package/server/.next/server/chunks/ssr/src_0ley8c3htc2q9._.js +0 -3
  1003. package/server/.next/server/chunks/ssr/src_0oagnv9_4qww7._.js +0 -3
  1004. package/server/.next/server/chunks/ssr/src_0p0fk07bj9gpq._.js +0 -3
  1005. package/server/.next/server/chunks/ssr/src_0ubtruqmercw2._.js +0 -3
  1006. package/server/.next/server/chunks/ssr/src_1-xw4hea2lvb3._.js +0 -3
  1007. package/server/.next/server/chunks/ssr/src_12sdm7skn8fr1._.js +0 -3
  1008. package/server/.next/server/chunks/ssr/src_16lx0qdi44evh._.js +0 -3
  1009. package/server/.next/server/chunks/ssr/src_17yq6_bqlwgvy._.js +0 -3
  1010. package/server/.next/server/chunks/ssr/src_1n-6pz04odixj._.js +0 -3
  1011. package/server/.next/server/chunks/ssr/src_1nse4o3frj33x._.js +0 -3
  1012. package/server/.next/server/chunks/ssr/src_app_(console)_08pmfte22v8vg._.js +0 -3
  1013. package/server/.next/server/chunks/ssr/src_app_(console)_1rx84pcbevbbk._.js +0 -3
  1014. package/server/.next/server/chunks/ssr/src_components_11x625pqq9ovs._.js +0 -3
  1015. package/server/.next/server/chunks/ssr/src_components_1yp2m9j9dnsv-._.js +0 -3
  1016. package/server/.next/server/chunks/ssr/src_components_ui_dropdown-menu_tsx_1xyz_k6bpdu_5._.js +0 -3
  1017. package/server/.next/server/chunks/ssr/src_lib_0-xd6p5793qdu._.js +0 -3
  1018. package/server/.next/server/chunks/ssr/src_lib_005l0kcpyu43o._.js +0 -16
  1019. package/server/.next/server/chunks/ssr/src_lib_0qbcg988i_-ee._.js +0 -3
  1020. package/server/.next/server/chunks/ssr/src_lib_18e550s395xn5._.js +0 -3
  1021. package/server/.next/server/chunks/ssr/src_lib_1_5ea0kxdn6zt._.js +0 -3
  1022. package/server/.next/server/chunks/ssr/src_lib_collector_node-runtime_ts_0778fef3fi3zj._.js +0 -3
  1023. package/server/.next/server/chunks/ssr/src_private_1yzfhupl3rlpx._.js +0 -6
  1024. package/server/.next/static/chunks/02-edmd1oolf2.css +0 -3
  1025. package/server/.next/static/chunks/02e07gc948zdh.js +0 -1
  1026. package/server/.next/static/chunks/073u0a0mfexc8.js +0 -1
  1027. package/server/.next/static/chunks/09fx7h5vm68up.js +0 -1
  1028. package/server/.next/static/chunks/0ao7_ov9mlvqp.js +0 -1
  1029. package/server/.next/static/chunks/0cvmbpyjages7.js +0 -5
  1030. package/server/.next/static/chunks/0hnhf3barhk90.js +0 -1
  1031. package/server/.next/static/chunks/0id261ol_gl6f.js +0 -1
  1032. package/server/.next/static/chunks/0q2ogu5cn9q9p.js +0 -1
  1033. package/server/.next/static/chunks/0z_fqwq62_95p.js +0 -1
  1034. package/server/.next/static/chunks/12l7tr29-a97t.js +0 -1
  1035. package/server/.next/static/chunks/16d1ws92me6_q.js +0 -1
  1036. package/server/.next/static/chunks/1__8cm_-lydee.js +0 -1
  1037. package/server/.next/static/chunks/1hmur12m0hx3z.js +0 -1
  1038. package/server/.next/static/chunks/205s3z3_jvp5m.js +0 -1
  1039. package/server/.next/static/chunks/20cpkauaj8e6x.js +0 -7
  1040. package/server/.next/static/chunks/23scyaimkowfl.js +0 -1
  1041. package/server/.next/static/chunks/25meucm7i1e7b.js +0 -1
  1042. package/server/.next/static/chunks/2oy7awlquezq_.js +0 -1
  1043. package/server/.next/static/chunks/2pj8subq20y-_.js +0 -1
  1044. package/server/.next/static/chunks/2qcurt9u9shwc.js +0 -1
  1045. package/server/.next/static/chunks/2scf40c-_g_q1.js +0 -1
  1046. package/server/.next/static/chunks/2tnx5isef9ryw.js +0 -1
  1047. package/server/.next/static/chunks/2v_f39dz8sa3-.js +0 -1
  1048. package/server/.next/static/chunks/2whojv56qi3ke.js +0 -1
  1049. package/server/.next/static/chunks/2wlen-jacsbqv.js +0 -1
  1050. package/server/.next/static/chunks/36bqhxadlfbfn.js +0 -1
  1051. package/server/.next/static/chunks/372gugw4ldy47.js +0 -1
  1052. package/server/.next/static/chunks/39n_1gky-xh0a.js +0 -1
  1053. package/server/.next/static/chunks/3fv862m8cvcoe.js +0 -1
  1054. package/server/.next/static/chunks/3g73nar6-7bqk.js +0 -1
  1055. package/server/.next/static/chunks/3sg_npfod25zq.js +0 -1
  1056. package/server/.next/static/chunks/3vacue9vhoqag.js +0 -1
  1057. package/server/.next/static/chunks/3x8-w_p0n-gsd.js +0 -1
  1058. package/server/.next/static/chunks/3yljsdgzvrkdf.js +0 -1
  1059. package/server/.next/static/chunks/415ijq-anmr2o.js +0 -1
  1060. package/server/.next/static/chunks/43wm4_0-0-eej.js +0 -1
  1061. package/server/.next/static/chunks/44bizq7fli9cp.js +0 -1
  1062. /package/server/.next/static/{90CuiGzddaxNn9lvRkGlH → 2_t4xVgbum1rtVSQxAYYV}/_buildManifest.js +0 -0
  1063. /package/server/.next/static/{90CuiGzddaxNn9lvRkGlH → 2_t4xVgbum1rtVSQxAYYV}/_clientMiddlewareManifest.js +0 -0
  1064. /package/server/.next/static/{90CuiGzddaxNn9lvRkGlH → 2_t4xVgbum1rtVSQxAYYV}/_ssgManifest.js +0 -0
@@ -1,16 +1,23 @@
1
- (()=>{"use strict";module.exports=[220642,765359,e=>{var t=e.i(218331);let a=e=>`${e} hari`,r=(e,t)=>0>Number(e)?`${t} udah habis.`:`${t} habis dalam ${a(e)}.`,i={"the job reported a failure":"job-nya lapor gagal","started but didn't finish":"udah mulai tapi nggak selesai","never pinged":"belum pernah ping","no ping in time":"nggak ada ping tepat waktu"},n={critical:"kritis",high:"tinggi",moderate:"sedang",low:"rendah",unknown:"nggak diketahui"},s={MonitorDown:[[/^(.+): no ping for (\d+ (?:min|h|days?))\.$/,(e,t,a)=>`${t}: nggak ada ping selama ${a.replace(/^(\d+) min$/,"$1 menit").replace(/^(\d+) h$/,"$1 jam").replace(/^(\d+) days?$/,"$1 hari")}.`],[/^(.+): (the job reported a failure|started but didn't finish|never pinged|no ping in time)\.$/,(e,t,a)=>`${t}: ${i[a]}.`],[/^(.+) failed its check \((.*)\) on (\d+) consecutive checks\.$/,(e,t,a,r)=>`${t}: ${r} cek gagal berturut-turut (${a}).`],[/^(.+) returned no answer on (\d+) consecutive checks\.$/,(e,t,a)=>`${t}: ${a} cek gagal berturut-turut (nggak ada jawaban).`],[/^(.+) returned (HTTP \d+) on (\d+) consecutive checks\.$/,(e,t,a,r)=>`${t}: ${r} cek gagal berturut-turut (${a}).`],[/^(.+) answers again\.$/,(e,t)=>`${t} udah jawab lagi.`],[/^(\S+) moved to (\S+); MonitorDomainMoved takes over\.$/,(e,t,a)=>`${t} pindah ke ${a}; MonitorDomainMoved yang ambil alih.`]],MonitorDomainMoved:[[/^(\S+) is no longer a domain of (.+); production is on (\S+)\.$/,(e,t,a,r)=>`${t} udah bukan domain ${a}; production sekarang di ${r}.`],[/^The monitor checks (\S+), a domain of (.+)\.$/,(e,t,a)=>`Monitor ngecek ${t}, domain ${a}.`]],CollectorStale:[[/^The collector hasn't finished a run yet\.$/,()=>"Collector belum pernah selesai jalan."],[/^The last minute run finished ([\d,]+) min ago\.$/,(e,t)=>`Collector terakhir selesai jalan ${t} menit lalu.`]],HighLatency:[[/^p95 ([\d,]+) ms over the last 10 minutes \(limit ([\d,]+) ms\)\.$/,(e,t,a)=>`p95 ${t} ms selama 10 menit terakhir (batas ${a} ms).`]],DeploymentFailed:[[/^Production deployment \(no commit\) failed\.$/,()=>"Deploy production (tanpa commit) gagal."],[/^Production deployment (\S+) failed\.$/,(e,t)=>`Deploy production ${t} gagal.`]],DatabasePaused:[[/^Supabase project (.+) is paused\.$/,(e,t)=>`Project Supabase ${t} lagi di-pause.`]],CertExpiringSoon:[[/^The TLS certificate of (.+) expires in (-?\d+) days?\.$/,(e,t,a)=>r(a,`Sertifikat TLS ${t}`)]],DomainExpiringSoon:[[/^(.+) expires in (-?\d+) days?\.$/,(e,t,a)=>r(a,t)]],StorageAlmostFull:[[/^(.+) uses ([\d,]+) MB of ([\d,]+) MB \(([\d,]+)%\)\.$/,(e,t,a,r,i)=>`${t} pakai ${a} MB dari ${r} MB (${i}%).`]],NeonComputeHigh:[[/^(.+) used ([\d,]+) of ([\d,]+) CU-hours this month\.$/,(e,t,a,r)=>`${t} udah pakai ${a} dari ${r} CU-hours bulan ini.`]],FirestoreQuotaHigh:[[/^(.+) hit a Firestore quota \(RESOURCE_EXHAUSTED\)\.$/,(e,t)=>`${t} kena kuota Firestore (RESOURCE_EXHAUSTED).`],[/^(.+) read ([\d,]+) of ([\d,]+) documents today \(([\d,]+)%\)\.$/,(e,t,a,r,i)=>`${t} udah baca ${a} dari ${r} dokumen hari ini (${i}%).`]],AutoPauseRisk:[[/^No API traffic for (\d+) days?\. Supabase pauses free projects after about 7 days\.$/,(e,t)=>`Nggak ada traffic API selama ${a(t)}. Supabase nge-pause project free setelah sekitar 7 hari.`]],DnsProxiedToVercel:[[/^(.+) points to Vercel through the Cloudflare proxy\. Vercel recommends DNS only\.$/,(e,t)=>`${t} ngarah ke Vercel lewat proxy Cloudflare. Vercel nyaranin DNS only.`]],DbQuotaHigh:[[/^(.+): (.+) at ([\d,]+)% of the free plan\.$/,(e,t,a,r)=>`${t}: ${a.replace(/^Rows read/,"baris dibaca").replace(/^Rows written/,"baris ditulis").replace(/^Commands/,"command").replace(/^usage$/,"pemakaian").replace(/ today\b/," hari ini").replace(/\bof ([^ ]+(?: [A-Z]+)?)\b/,"dari $1").replace(/ this month\b/," bulan ini").replace(/\(account\)/,"(akun)")} udah ${r}% dari kuota gratis.`]],ComputeHigh:[[/^(.+) compute is back under the limits\.$/,(e,t)=>`Compute ${t} udah balik di bawah batas.`],[/^(.+): ((?:CPU|RAM|disk|connections) .+)\.$/,(e,t,a)=>`${t}: ${a.replace(/ for (\d+) min/g," selama $1 menit").replace(/\(limit /g,"(batas ").replace(/\bconnections (\d+) of (\d+)/g,"koneksi $1 dari $2")}.`]],CredentialExpiring:[[/^Google Drive access was removed \(invalid_grant\)\. Reconnect it\.$/,()=>"Akses Google Drive dicabut (invalid_grant). Sambungin lagi ya."],[/^The (\S+) credential (.+) has expired\.$/,(e,t,a)=>`Credential ${t} ${a} udah kedaluwarsa.`],[/^The (\S+) credential (.+) expires in (-?\d+) days?\.$/,(e,t,a,i)=>r(i,`Credential ${t} ${a}`)]],VulnerableDependency:[[/^(.+) has no moderate, high or critical dependency advisories\.$/,(e,t)=>`${t} nggak punya advisory dependency sedang, tinggi atau kritis.`],[/^(.+) has no high or critical dependency advisories\.$/,(e,t)=>`${t} nggak punya advisory dependency tinggi atau kritis.`],[/^(\d+) vulnerable packages? \(([^)]*)\): (.*)$/,(e,t,a,r)=>`${t} paket rentan (${a.replace(/\b(critical|high|moderate|low|unknown)\b/g,e=>n[e])}): ${r.replace(/ \(no fix yet\)/g," (belum ada fix)").replace(/, \+(\d+) more\.$/,", +$1 lagi.")}`]],FrameworkVulnerable:[[/^(.+) runs Next\.js (.+) with no known advisories\.$/,(e,t,a)=>`${t} pakai Next.js ${a} tanpa advisory yang diketahui.`],[/^Next\.js (.+) has (\d+) known vulnerabilit(?:y|ies) \((critical|high|moderate|low|unknown)\), (?:fixed in (\S+)(?: \((one fix needs|some fixes need) Next\.js (\d+)\))?|no fix yet)\.$/,(e,t,a,r,i,s,o)=>`Next.js ${t} punya ${a} kerentanan yang diketahui (${n[r]}), ${i?`udah di-fix di ${i}${s?` (${"one fix needs"===s?"satu fix":"sebagian fix"} butuh Next.js ${o})`:""}`:"belum ada fix"}.`]]};function o(e,t){for(let[a,r]of Object.hasOwn(s,e)?s[e]:[]){let e=a.exec(t);if(e)return r(...e)}return t}e.s(["f",0,o],765359);let l={en:{open:"FIRING",repeat:"REPEAT",resolve:"RESOLVED"},id:{open:"MUNCUL",repeat:"ULANG",resolve:"PULIH"}},d={en:{critical:"critical",warning:"warning",info:"info"},id:{critical:"kritis",warning:"peringatan",info:"info"}},u={en:{firing:"firing",resolved:"resolved",since:"since",open:"Open alerts",more:"more on the Alerts page",causedBy:"caused by",incident:"reports an incident",step:"Next step"},id:{firing:"aktif",resolved:"pulih",since:"sejak",open:"Buka Alerts",more:"lagi di halaman Alerts",causedBy:"gara-gara",incident:"lagi ada insiden",step:"Langkah"}},c=e=>e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),p={critical:0,warning:1,info:2};function g(e,t){let a=e.filter(e=>"resolve"!==e.kind).length,r=e.length-a;return[a?`${a} ${u[t].firing}`:"",r?`${r} ${u[t].resolved}`:""].filter(Boolean).join(", ")}function f(e,t,a,r,i,n){let s=[...e].sort((e,t)=>("resolve"===e.kind)-("resolve"===t.kind)||p[e.severity]-p[t.severity]),o=[r],l=r.length+i.length+40;for(let e=0;e<s.length;e++){let r=a(s[e]);if(l+r.length+1>t){o.push(n(s.length-e));break}o.push(r),l+=r.length+1}return o.push(i),o.join("\n").slice(0,t)}let m={en:{CollectorStale:"the watchdog already runs the collector itself every 5 minutes. Check the job on cron-job.org and the latest Vercel deploy.",DomainExpiringSoon:"renew the domain at its registrar; Watchbell can't pay for it.",StorageAlmostFull:"delete old data or shorten retention in that database; the free tier can't add storage.",NeonComputeHigh:"cut queries or make Neon auto-suspend sooner; the quota resets at the start of the month.",FirestoreQuotaHigh:"cut Firestore reads (cache in the app); the quota resets daily.",DbQuotaHigh:"cut queries to that database until its quota resets.",ComputeHigh:"check the Pool card on the Supabase page (idle connections close automatically at 10 of 15); for CPU or disk, look for heavy queries.",DnsProxiedToVercel:"turn off the proxy (orange cloud) for that record in Cloudflare; Vercel needs DNS only.",CredentialExpiring:"create a new token and replace it in Settings → Connections before it expires.",FrameworkVulnerable:"if the app's GitHub repository isn't linked yet, link it on the app page to get an update PR from the office; or update next yourself.",MonitorDomainMoved:"press Update monitor on the Uptime page (or approve the proposal) so the monitor checks the new domain; the app itself is fine."},id:{CollectorStale:"watchdog udah jalanin collector sendiri tiap 5 menit. Cek job di cron-job.org dan deploy terakhir di Vercel.",DomainExpiringSoon:"perpanjang domain di registrar-nya, Watchbell nggak bisa bayar.",StorageAlmostFull:"hapus data lama atau pendekin retensi di database itu, free tier nggak bisa nambah storage.",NeonComputeHigh:"kurangin query atau percepat auto-suspend Neon, kuota reset awal bulan.",FirestoreQuotaHigh:"kurangin read Firestore (cache di app), kuota reset tiap hari.",DbQuotaHigh:"kurangin query ke database itu sampai kuotanya reset.",ComputeHigh:"cek kartu Pool di halaman Supabase (koneksi nganggur ditutup otomatis di 10 dari 15), kalau CPU/disk cari query yang berat.",DnsProxiedToVercel:"matiin proxy (awan oranye) record itu di Cloudflare, Vercel butuh DNS only.",CredentialExpiring:"bikin token baru dan ganti di Settings → Connections sebelum habis.",FrameworkVulnerable:"kalau repo GitHub app-nya belum di-link, link di halaman app biar office bikinin PR update; atau update next sendiri.",MonitorDomainMoved:"pencet Update monitor di halaman Uptime (atau approve usulannya) biar monitor ngecek domain baru; app-nya sendiri aman."}};e.s(["Z",0,d,"l",0,function(e,a,r,i="en"){let n=`${r.replace(/\/+$/,"")}/alerts`,s=u[i],p=e=>`${l[i][e.kind]} \xb7 ${d[i][e.severity]} \xb7 `,h=e=>"id"===i?o(e.ruleKey,e.message):e.message,k=e=>"resolve"===e.kind?null:((e,t="en")=>{let a=Object.hasOwn(m[t],e)?m[t][e]:void 0;return a?`${u[t].step}: ${a}`:null})(e.ruleKey,i),y=e=>[e.causedBy?`${s.causedBy} ${e.causedBy}`:"",e.provider?`${e.provider} ${s.incident}`:""].filter(Boolean).join(" · "),$=e=>`
2
- +${e} ${s.more}`;return{telegram:f(e,4096,e=>`
3
- <b>${p(e)}${c(e.ruleKey)} \xb7 ${c(e.title)}</b>
4
- ${c(h(e))}${y(e)?`
5
- <i>${c(y(e))}</i>`:""}${k(e)?`
6
- 👉 ${c(k(e))}`:""}
7
- ${s.since} ${(0,t.U)(e.startedAt)} ${(0,t.J)(e.startedAt)}`,`<b>Watchbell</b>: ${g(e,i)} \xb7 ${(0,t.U)(a)} ${(0,t.J)(a)}`,`
8
- <a href="${c(n)}">${s.open}</a>`,$),discord:f(e,2e3,e=>`
9
- **${p(e)}${e.ruleKey} \xb7 ${e.title.replace(/[*_`~|\[\]<>]/g,"")}**
10
- ${h(e).replace(/[*_`~|\[\]<>]/g,"")}${y(e)?`
11
- _${y(e)}_`:""}${k(e)?`
12
- 👉 ${k(e)}`:""}`,`**Watchbell**: ${g(e,i)} \xb7 ${(0,t.U)(a)} ${(0,t.J)(a)}`,`
13
- ${n}`,$)}},"H",0,c],220642)},895625,e=>{var t=e.i(971724),a=e.i(105954),r=e.i(140561),i=e.i(600205),n=e.i(77193);let s=t.z.object({COLLECTOR_SECRET:a.z.string().min(32),CRON_SECRET:a.z.string().min(16),QSTASH_CURRENT_SIGNING_KEY:a.z.string().min(10),QSTASH_NEXT_SIGNING_KEY:a.z.string().min(10)}),o=s.extend({QSTASH_CURRENT_SIGNING_KEY:r.z.union([i.z.literal(""),a.z.string().min(10)]).default(""),QSTASH_NEXT_SIGNING_KEY:r.z.union([i.z.literal(""),a.z.string().min(10)]).default("")}),l=!1;e.s(["f",0,function(){try{var e=process.env;let t=("selfhost"===(0,n.c)(e)?o:s).safeParse(e);if(!t.success)throw Error(`Missing or invalid scheduler settings: ${t.error.issues.map(e=>e.path.join(".")).join(", ")}`);return t.data}catch(e){return l||(l=!0,console.warn(e instanceof Error?e.message:"Missing or invalid scheduler settings")),null}}])},629955,11827,e=>{var t=e.i(875225),a=e.i(349129),r=e.i(924924),i=e.i(618916),n=e.i(921991),s=e.i(656083),o=e.i(472832);let l="Pause requested · ";function d(e,t){if(!e.keep||"ACTIVE_HEALTHY"!==e.status)return!1;let a=e.lastTraffic??e.trackedSince;return t.getTime()-a.getTime()>=432e6}function u(e,t){return e.autoRestore?"INACTIVE"!==e.status?{act:!1,reason:"not-paused"}:e.accessDenied?{act:!1,reason:"denied"}:e.lastAutoRestoreAt&&t.getTime()-e.lastAutoRestoreAt.getTime()<216e5?{act:!1,reason:"too-soon"}:e.slotsLeft<=0?{act:!1,reason:"no-slot"}:{act:!0}:{act:!1,reason:"off"}}e.s(["B",0,l,"F",0,u,"v",0,d],11827);var c=e.i(326003),p=e.i(843448),g=e.i(547499),f=e.i(628448),m=e.i(342833);async function h(e){let a=await (0,r.f)().select({data:i.snapshots.data}).from(i.resources).innerJoin(i.snapshots,(0,t.u)(i.snapshots.resourceId,i.resources.id)).where((0,t.b)((0,t.u)(i.resources.accountId,e),(0,t.u)(i.resources.kind,"supabase_project"))),n=new Map;for(let{data:e}of a){let t=(0,c.k)(c.B,e);t.orgSlug&&void 0!==t.freeOrg&&n.set(t.orgSlug,t.freeOrg)}return n}let k=e=>`${e} day${1===e?"":"s"}`,y=e=>e instanceof Error?e.name:"unknown";async function $(e,a,n){try{let s=await (0,r.f)().select({k:i.keepActive,r:i.resources,s:i.snapshots,a:i.accounts}).from(i.keepActive).innerJoin(i.resources,(0,t.u)(i.resources.id,i.keepActive.resourceId)).innerJoin(i.accounts,(0,t.u)(i.accounts.id,i.resources.accountId)).leftJoin(i.snapshots,(0,t.u)(i.snapshots.resourceId,i.resources.id)).where((0,t.b)((0,t.u)(i.keepActive.keep,!0),(0,t.u)(i.resources.kind,"supabase_project"),(0,t.u)(i.resources.monitored,!0),(0,t.M)(i.resources.goneAt),(0,t.u)(i.accounts.status,"ok"))).limit(100),o=(0,g.f)().OPS_ENCRYPTION_KEY;for(let[t,{k:r,r:i,s:l,a:d}]of s.entries()){let u=a-Date.now()-500;if(u<250)return void n.push(`keep-active: ${s.length-t} left for the next run, time budget used`);if(!(r.lastKeepAliveAt&&e.getTime()-r.lastKeepAliveAt.getTime()<72e6))try{await w(i,l,d,e,o,u,n)}catch(e){console.warn("keep-active failed:",y(e)),n.push(`keep-active/${i.name}: ${y(e)}`)}}}catch(e){console.warn("keep-active failed:",y(e)),n.push(`keep-active: ${y(e)}`)}}async function w(e,a,o,l,u,g,h){let y=(0,c.k)(c.B,a?.data),$=y.lastTrafficAt?new Date(y.lastTrafficAt):y.trafficAt?new Date(new Date(y.trafficAt).getTime()-6048e5):null;if(!d({status:y.status??"",keep:!0,lastTraffic:$,trackedSince:e.firstSeenAt},l))return;let w=Math.floor((l.getTime()-($??e.firstSeenAt).getTime())/864e5),v=(0,n.V)({ciphertext:o.credentialCiphertext,iv:o.credentialIv},u);if(!v)return void h.push(`keep-active/${o.label}: credential can't be read`);let b=await (0,m.i)(v,e.externalId,{timeoutMs:Math.min(5e3,g)});if(b.ok)await (0,r.f)().update(i.keepActive).set({lastKeepAliveAt:l}).where((0,t.u)(i.keepActive.resourceId,e.id)),await (0,s.f)([{at:l,type:"action",kind:"ok",resourceId:e.id,actorUserId:null,message:`Keep-alive: sent to ${e.name} (no API traffic for ${k(w)})`,detail:null}]);else{let t=Math.max(1,p.e-w);await (0,s.f)([{at:l,type:"action",kind:"warn",resourceId:e.id,actorUserId:null,reason:"KeepAliveFailed",message:`Keep-alive failed for ${e.name}; it may pause in about ${k(t)}`,detail:"scope"===b.kind?"This token can't run the read-only query (Database read).":(0,f.S)(b.error)}]),h.push(`keep-active/${e.name}: ${b.error}`)}}async function v(e){let[n]=await (0,r.f)().select({at:i.events.at}).from(i.events).where((0,t.b)((0,t.u)(i.events.reason,"Action"),(0,t.u)(i.events.resourceId,e),(0,t.u)(i.events.type,"action"),(0,t.y)(i.events.kind,["ok","err"]),(0,t.E)(i.events.actorUserId),(0,t.D)(i.events.message,`${l}%`))).orderBy((0,a.A)(i.events.at)).limit(1);return n?.at??null}async function b(){return(await (0,r.f)().select({id:i.keepActive.resourceId}).from(i.keepActive).where((0,t.u)(i.keepActive.autoRestore,!0)).limit(1)).length>0}async function A(e,a,l=1/0){let d=a.filter(e=>!!e.resourceId&&"INACTIVE"===e.status),c=()=>l-Date.now()-500;if(!d.length||250>c())return;let k=await (0,r.f)().select({k:i.keepActive,id:i.resources.id,name:i.resources.name,ref:i.resources.externalId,accountId:i.resources.accountId,label:i.accounts.label,lastTestAt:i.accounts.lastTestAt,ciphertext:i.accounts.credentialCiphertext,iv:i.accounts.credentialIv}).from(i.keepActive).innerJoin(i.resources,(0,t.u)(i.resources.id,i.keepActive.resourceId)).innerJoin(i.accounts,(0,t.u)(i.accounts.id,i.resources.accountId)).where((0,t.b)((0,t.u)(i.keepActive.autoRestore,!0),(0,t.y)(i.keepActive.resourceId,d.map(e=>e.resourceId)),(0,t.u)(i.resources.kind,"supabase_project"),(0,t.M)(i.resources.goneAt)));if(!k.length)return;let $=await (0,o.f)([...new Set(k.map(e=>e.accountId))]),w=new Map,b=new Map;for(let l of k)try{let d=a.filter(e=>e.accountId===l.accountId),k=d.find(e=>e.resourceId===l.id)?.orgSlug??"";if(!w.has(l.accountId)){let e=await h(l.accountId);w.set(l.accountId,e),b.set(l.accountId,(0,p._)(d.map(t=>({status:t.status,freeOrg:e.get(t.orgSlug??"")??null}))).left)}let y=!1===w.get(l.accountId).get(k),A=y?1/0:b.get(l.accountId),I=$.get(l.accountId),S=Math.max(l.k.updatedAt.getTime(),l.lastTestAt?.getTime()??0),T=I?.write==="denied"&&new Date(I.at).getTime()>S,x=u({status:"INACTIVE",autoRestore:!0,lastAutoRestoreAt:l.k.lastAutoRestoreAt,slotsLeft:A,accessDenied:T},e);if(!x.act){"no-slot"===x.reason&&await (0,s.f)([{at:e,type:"action",kind:"info",resourceId:l.id,actorUserId:null,reason:"AutoRestoreWaits",message:`Auto-restore: ${l.name} waits, account ${l.label} has no free slot`,detail:"Pause another project in this account, or restore it by hand once a slot is free."}]);continue}let j=await v(l.id);if(j&&j.getTime()>l.k.updatedAt.getTime())continue;let D=c();if(D<250)return;await (0,r.f)().update(i.keepActive).set({lastAutoRestoreAt:e}).where((0,t.u)(i.keepActive.resourceId,l.id));let C=(0,n.V)({ciphertext:l.ciphertext,iv:l.iv},(0,g.f)().OPS_ENCRYPTION_KEY);if(!C)continue;let E=await (0,m.G)(C,l.ref,{timeoutMs:Math.min(5e3,D)});E.ok?(y||b.set(l.accountId,b.get(l.accountId)-1),await (0,o.y)(l.accountId,"ok"),await (0,s.f)([{at:e,type:"action",kind:"ok",resourceId:l.id,actorUserId:null,message:`Auto-restore: restoring ${l.name}`,detail:null}])):("scope"===E.kind&&await (0,o.y)(l.accountId,"denied"),await (0,s.f)([{at:e,type:"action",kind:"err",resourceId:l.id,actorUserId:null,message:`Auto-restore: ${l.name} couldn't be restored`,detail:"scope"===E.kind?`${(0,f.b)("supabase",{})} Auto-restore stops until then.`:(0,f.S)(E.error)}]))}catch(e){console.warn("auto-restore failed:",y(e))}}async function I(e,a,n=o.W,s=new Date){let l=await (0,o.q)(e.id,"keep-alive",a);if(l)return{ok:!1,error:l};let d=await (0,o.p)(a,"supabase_project");if(!d)return{ok:!1,error:"This project isn't watched any more, or its credential can't be read."};let[u]=await (0,r.f)().select({last:i.keepActive.lastKeepAliveAt}).from(i.keepActive).where((0,t.u)(i.keepActive.resourceId,a)).limit(1);if(u?.last&&s.getTime()-u.last.getTime()<72e6)return n({done:!1,message:"A keep-alive was already sent in the last 20 hours."},e,d.account.id);let c=d.resource.name,p=await (0,m.i)(d.token,d.resource.externalId,{timeoutMs:5e3});return p.ok&&await (0,r.f)().insert(i.keepActive).values({resourceId:a,lastKeepAliveAt:s}).onConflictDoUpdate({target:i.keepActive.resourceId,set:{lastKeepAliveAt:s}}),n(p.ok?{done:!0,message:`Keep-alive sent to ${c}.`,audit:{message:`Keep-alive sent \xb7 ${c}`,resourceId:a}}:{done:!1,failed:{ok:!1,kind:p.kind,error:"scope"===p.kind?"This token can't run the read-only query (Database read).":p.error,...p.status?{status:p.status}:{}},audit:{message:`Keep-alive failed \xb7 ${c}`,resourceId:a}},e,d.account.id)}e.s(["m",0,h,"z",0,A,"g",0,b,"v",0,I,"V",0,$,"G",0,function(e,t,a){return!1===t.get(a)?1/0:(0,p._)(e.map(e=>({status:e.status,freeOrg:t.get(e.orgSlug)??null}))).left}],629955)},483100,e=>{var t=e.i(875225),a=e.i(349129),r=e.i(518899),i=e.i(924924),n=e.i(618916),s=e.i(220642),o=e.i(921991),l=e.i(656083),d=e.i(209576),u=e.i(111970),c=e.i(762504),p=e.i(547499),g=e.i(224382),f=e.i(600273),m=e.i(968068),h=e.i(695811),k=e.i(633974),y=e.i(76012),$=e.i(298397),w=e.i(218331),v=e.i(146394);let b="digest.lastSentDay",A="digest.state";async function I(e){let[a]=await (0,i.f)().select().from(n.channels).where((0,t.u)(n.channels.kind,e)).limit(1);if(!a)return null;try{return{row:a,config:JSON.parse((0,o.K)({ciphertext:a.configCiphertext,iv:a.configIv},(0,p.f)().OPS_ENCRYPTION_KEY))}}catch{return null}}async function S(){let e=(0,m.f)(),[t,a]=await Promise.all([I("telegram"),I("discord")]),r=new Set;return e.telegramToken&&t?.row.enabled&&t.config?.chatId&&r.add("telegram"),a?.row.enabled&&a.config?.url&&r.add("discord"),{send:(r,i)=>"telegram"===r?(0,y.I)(e.telegramToken,t.config.chatId,i):(0,g.f)(a.config.url,i),configured:r}}async function T(){let e=(0,m.f)().telegramToken;if(!e)return null;let t=await I("telegram");return t?.row.enabled&&t.config?.chatId?{token:e,chatId:t.config.chatId}:null}async function x(){let e=await I("discord");return e?.row.enabled&&e.config?.url?{url:e.config.url}:null}let j="notify.telegramThreads",D=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;async function C(e,t,a){let s=e.filter(e=>D.test(e));if(!s.length||!Number.isSafeInteger(t)||t<=0)return;let o=Object.fromEntries(s.map(e=>[e,{m:t,at:a.getTime()}])),l=a.getTime()-6048e5,d=r.B`case when jsonb_typeof(${n.settings.value}) = 'object' then ${n.settings.value} else '{}'::jsonb end`;await (0,i.f)().insert(n.settings).values({key:j,value:o}).onConflictDoUpdate({target:n.settings.key,set:{value:r.B`(select coalesce(jsonb_object_agg(e.key, e.value), '{}'::jsonb) from jsonb_each(${JSON.stringify(o)}::jsonb || ${d}) as e
14
- where jsonb_typeof(e.value) = 'object' and (e.value->>'at') ~ '^[0-9]{1,15}$' and (e.value->>'at')::bigint > ${l})`,updatedAt:a}})}async function E(e){if(!e||!D.test(e))return null;try{let[a]=await (0,i.f)().select({value:n.settings.value}).from(n.settings).where((0,t.u)(n.settings.key,j)).limit(1),r=a?.value&&"object"==typeof a.value?a.value[e]:null;return"number"==typeof r?.m&&Number.isSafeInteger(r.m)&&r.m>0?r.m:null}catch{return null}}let _=()=>(0,d.f)().catch(()=>$.a);async function N(e,o,l={}){var d;if(o-Date.now()<6e3)return{sent:0,dropped:0};let c=await (0,u.I)(),g=await (0,i.f)().select({a:n.alerts,channels:n.alertRules.channels}).from(n.alerts).innerJoin(n.alertRules,(0,t.u)(n.alertRules.key,n.alerts.ruleKey)).where((0,t.b)((0,t.E)(n.alerts.pending),r.B`(${n.alerts.pending} = 'resolve') = (${n.alerts.resolvedAt} is not null)`,(0,u.s)(c))).orderBy((0,a.M)(n.alerts.pendingSince)).limit(50);if(!g.length)return{sent:0,dropped:0};let f=new Set((await (0,i.f)().update(n.alerts).set({claimedAt:e}).where((d=g.map(e=>e.a.id),(0,t.b)((0,t.y)(n.alerts.id,d),(0,t.E)(n.alerts.pending),(0,t.F)((0,t.M)(n.alerts.claimedAt),(0,t.S)(n.alerts.claimedAt,new Date(e.getTime()-12e4)))))).returning({id:n.alerts.id})).map(e=>e.id)),m=g.filter(e=>f.has(e.a.id));if(!m.length)return{sent:0,dropped:0};let{send:k,configured:y}=l.sender??await S(),w=new Set(m.filter(({a:t})=>"resolve"!==t.pending&&(t.silencedUntilResolved||null!==t.silencedUntil&&t.silencedUntil.getTime()>e.getTime())).map(({a:e})=>e.id)),[v,b]=await Promise.all([_(),(0,h.B)()]),A=new Set;for(let a of["telegram","discord"]){if(!y.has(a))continue;let r=m.filter(e=>e.channels.includes(a)&&!w.has(e.a.id));if(!r.length)continue;let o=r.map(({a:e})=>{let t="telegram"===a?e:(0,$.o)(e,v);return{kind:e.pending,ruleKey:e.ruleKey,severity:e.severity,title:t.title,message:t.message,startedAt:e.startedAt,causedBy:t.causedBy,provider:e.providerIncident}}),l=(0,s.l)(o,e,(0,p.f)().SITE_URL,b[a]),d=await k(a,(0,$.G)("telegram"===a?l.telegram:l.discord));await (0,i.f)().update(n.channels).set(d.ok?{lastSentAt:e,lastError:null}:{lastError:d.error}).where((0,t.u)(n.channels.kind,a)),d.ok&&r.forEach(({a:e})=>A.add(e.id)),d.ok&&"telegram"===a&&d.messageId&&await C(r.filter(({a:e})=>"open"===e.pending).map(({a:e})=>e.id),d.messageId,e).catch(()=>console.warn("notify: remembering the Telegram message failed"))}let I=0,T=0,x=[];for(let{a,channels:r}of m){let s=r.some(e=>y.has(e)),o=null!==a.pendingSince&&e.getTime()-a.pendingSince.getTime()>18e5;A.has(a.id)?(I++,await (0,i.f)().update(n.alerts).set({pending:null,pendingSince:null,lastNotifiedAt:e,claimedAt:null,..."open"===a.pending?{notifiedOpen:!0}:{}}).where((0,t.u)(n.alerts.id,a.id))):w.has(a.id)||!s||o?(T++,await (0,i.f)().update(n.alerts).set({pending:null,claimedAt:null}).where((0,t.u)(n.alerts.id,a.id))):x.push(a.id)}return x.length&&await (0,i.f)().update(n.alerts).set({claimedAt:null}).where((0,t.y)(n.alerts.id,x)),{sent:I,dropped:T}}async function M(e){let s=new Date(e.getTime()-864e5),o=await (0,u.I)(),l=r.B`case ${n.alerts.severity} when 'critical' then 0 when 'warning' then 1 else 2 end`,[d,p,g,f,m]=await Promise.all([(0,i.f)().select({ruleKey:n.alerts.ruleKey,severity:n.alerts.severity,title:n.alerts.title,message:n.alerts.message,resourceId:n.alerts.resourceId,startedAt:n.alerts.startedAt}).from(n.alerts).where((0,t.b)((0,t.M)(n.alerts.resolvedAt),(0,u.s)(o))).orderBy(l,(0,a.A)(n.alerts.startedAt)).limit(50),(0,i.f)().select({n:r.B`count(*)::int`}).from(n.alerts).where((0,t.B)(n.alerts.startedAt,s)),(0,i.f)().select({ruleKey:n.alerts.ruleKey,title:n.alerts.title,resourceId:n.alerts.resourceId,startedAt:n.alerts.startedAt,resolvedAt:n.alerts.resolvedAt}).from(n.alerts).where((0,t.b)((0,t.E)(n.alerts.resolvedAt),(0,t.B)(n.alerts.resolvedAt,s))).orderBy((0,a.A)(n.alerts.resolvedAt)).limit(20),(0,i.f)().select({id:n.resources.id,name:n.resources.name}).from(n.resources).where((0,t.b)((0,t.u)(n.resources.kind,"app"),(0,t.u)(n.resources.monitored,!0),(0,t.M)(n.resources.goneAt))).orderBy(n.resources.name).limit(v.O.apps),(0,c.h)(e)]),h=f.map(e=>e.id),[k,y]=h.length?await Promise.all([(0,i.f)().select({id:n.monitors.resourceId,total:r.B`count(*)::int`,bad:r.B`(count(*) filter (where not ${n.checks.ok}))::int`}).from(n.checks).innerJoin(n.monitors,(0,t.u)(n.monitors.id,n.checks.monitorId)).where((0,t.b)((0,t.y)(n.monitors.resourceId,h),(0,t.B)(n.checks.at,s),(0,t.u)(n.checks.inMaintenance,!1))).groupBy(n.monitors.resourceId),(0,i.f)().select({id:n.storedLogs.resourceId,n:r.B`count(*)::int`}).from(n.storedLogs).where((0,t.b)((0,t.y)(n.storedLogs.resourceId,h),(0,t.B)(n.storedLogs.at,s))).groupBy(n.storedLogs.resourceId)]):[[],[]],w=new Map(k.map(e=>[e.id,e])),b=new Map(y.map(e=>[e.id,e.n])),A=await _();return{now:e,opened:p[0]?.n??0,firing:d.map(({resourceId:e,...t})=>{let a=(0,$.o)({...t,resourceId:e,causedBy:null},A);return{...t,title:a.title,message:a.message}}),resolved:g.flatMap(e=>e.resolvedAt?[{ruleKey:e.ruleKey,title:(0,$.o)({title:e.title,message:"",causedBy:null,resourceId:e.resourceId},A).title,took:function(e,t){let a=Math.max(1,Math.round((t.getTime()-e.getTime())/6e4));if(a<60)return`${a} min`;let r=Math.floor(a/60);return r<24?`${r} h ${a%60} min`:`${Math.floor(r/24)} d ${r%24} h`}(e.startedAt,e.resolvedAt)}]:[]),apps:f.map(e=>{let t=w.get(e.id);return{name:e.name,uptime:t&&t.total>0?(t.total-t.bad)/t.total*100:null,errors:b.get(e.id)??0}}),providers:m.filter(e=>"ok"!==e.state).map(e=>({label:e.label,text:e.text}))}}async function R(e,a,r){await (0,i.f)().update(n.channels).set(a.ok?{lastSentAt:r,lastError:null}:{lastError:a.error}).where((0,t.u)(n.channels.kind,e))}async function H(e){let[t,a]=await Promise.all([M(e),(0,h.H)("email")]);return(0,f.J)({...t,siteUrl:(0,p.f)().SITE_URL},a)}async function P(e,a={}){let r=await (0,i.f)().select().from(n.settings).where((0,t.y)(n.settings.key,[b,A])),s=r.find(e=>e.key===b)?.value,o="string"==typeof s?s:null;if(!(0,f.A)(e,o))return;let d=(0,m.f)(),u=await I("email_digest");if(!d.resendKey||!d.digestFrom||!u?.row.enabled||!u.config?.to)return;let{resendKey:c,digestFrom:p}=d,g=u.config.to,h=(0,w.x)(e),y=await (0,f.K)(e,{lastSentDay:o,state:r.find(e=>e.key===A)?.value??null,build:a.build??(()=>H(e)),send:a.send??(e=>(0,k.f)(c,{from:p,to:g,...e,idempotencyKey:`digest-${h}`}))});y.acted&&(y.result&&await R("email_digest",y.result,e),y.state?await (0,i.f)().insert(n.settings).values({key:A,value:y.state}).onConflictDoUpdate({target:n.settings.key,set:{value:y.state,updatedAt:e}}):await (0,i.f)().delete(n.settings).where((0,t.u)(n.settings.key,A)),y.sentDay&&await (0,i.f)().insert(n.settings).values({key:b,value:y.sentDay}).onConflictDoUpdate({target:n.settings.key,set:{value:y.sentDay,updatedAt:e}}),y.event&&await (0,l.f)([{type:"system",kind:"warn",message:y.event.message,detail:y.event.detail,resourceId:null,reason:"DigestFailed",at:e}]))}e.s(["q",0,N,"G",0,x,"P",0,R,"J",0,P,"Q",0,T,"M",0,E],483100)},472832,628448,e=>{var t=e.i(875225),a=e.i(665044),r=e.i(924924),i=e.i(618916),n=e.i(921991),s=e.i(407602),o=e.i(547499),l=e.i(479301),d=e.i(189104);function u(e,t){return"member"===e?`Too many actions. Try again in ${(0,d.H)(t)}.`:"That was just done. Wait a minute before trying again."}function c(e){let t=e.replace(/\s+/g," ").trim();return t.length>200?`${t.slice(0,199)}…`:t}e.s(["G",0,"This changed since you opened it. Reload and try again.","z",0,u,"b",0,function(e,t){return"supabase"===e?"This token is read-only; replace it with one that has Project admin write.":"cloudflare"===e?'This Cloudflare token can\'t edit DNS; add "Zone → DNS → Edit" to it, or replace it with a token that has it.':"vercel"===e?`This token can't change projects in team ${t.team||"this team"}; replace it with one whose scope includes that team.`:`This API key can't manage project ${t.project||"this project"}; replace it with a personal or organization key, or a key for this project.`},"S",0,c],628448);var p=e.i(593111);let g="access.";async function f(e,a){if(!(0,l.f)(e))return null;let[s]=await (0,r.f)().select({r:i.resources,a:i.accounts}).from(i.resources).innerJoin(i.accounts,(0,t.u)(i.accounts.id,i.resources.accountId)).where((0,t.b)((0,t.u)(i.resources.id,e),(0,t.u)(i.resources.kind,a),(0,t.M)(i.resources.goneAt))).limit(1);if(!s)return null;let d=(0,n.V)({ciphertext:s.a.credentialCiphertext,iv:s.a.credentialIv},(0,o.f)().OPS_ENCRYPTION_KEY);return d?{resource:s.r,account:{id:s.a.id,label:s.a.label,provider:s.a.provider,scopeNote:s.a.scopeNote},token:d}:null}async function m(e,t,a){let r=await (0,p.f)(d.t.providerAction,e);if(!r.allowed)return u("member",r.retryAfter);let i=await (0,p.f)(d.t.actionTarget,`${t}:${a}`);return i.allowed?null:u("target",i.retryAfter)}async function h(e,t,a){let n={write:t,at:new Date().toISOString(),...a?{scope:a}:{}};await (0,r.f)().insert(i.settings).values({key:`${g}${e}`,value:n}).onConflictDoUpdate({target:i.settings.key,set:{value:n,updatedAt:new Date}})}async function k(e){let a=new Map,n=e.filter(l.f);if(0===n.length)return a;for(let e of(await (0,r.f)().select().from(i.settings).where((0,t.y)(i.settings.key,n.map(e=>`${g}${e}`))))){let t=e.value;t&&("ok"===t.write||"denied"===t.write)&&"string"==typeof t.at&&a.set(e.key.slice(g.length),{write:t.write,at:t.at,..."string"==typeof t.scope?{scope:t.scope}:{}})}return a}async function y(e,t,r,i={}){if(!("audit"in e))return{ok:!1,error:e.message};let n="failed"in e?e.failed:null,o="failed"in e?"":e.message,l=n?n.error:"failed"in e?void 0:e.audit.detail;try{await (0,s.f)({kind:n?"err":"ok",message:`${i.auditPrefix??""}${e.audit.message}`,resourceId:e.audit.resourceId,actorUserId:t.userId,...l?{detail:c(l)}:{}})}catch{console.warn("audit event failed")}if(!n||"scope"===n.kind)try{await h(r,n?"denied":"ok")}catch{console.warn("access write failed")}return!1!==i.refresh&&(0,a.refresh)(),n?{ok:!1,error:n.error}:{ok:!0,message:o}}e.s(["W",0,y,"p",0,f,"y",0,h,"q",0,m,"f",0,k],472832)},224382,600273,e=>{var t=e.i(425498),a=e.i(77193);let r=/^https:\/\/(?:(?:canary|ptb)\.)?discord(?:app)?\.com\/api\/webhooks\/\d{5,25}\/[\w-]{20,}$/;async function i(e,n,s={}){let o;if((0,a.W)())return{ok:!1,kind:"config",error:t.Y};if(r.test(e.trim())?null:"Paste the whole webhook URL from Discord.")return{ok:!1,kind:"config",error:"The saved Discord webhook URL isn't valid."};try{o=await (s.fetch??fetch)(e,{method:"POST",headers:{"Content-Type":"application/json"},signal:AbortSignal.timeout(s.timeoutMs??5e3),cache:"no-store",body:JSON.stringify({content:n.slice(0,2e3),username:"Watchbell",allowed_mentions:{parse:[]}})})}catch{return{ok:!1,kind:"transient",error:"Discord didn't answer."}}if(204===o.status||o.ok)return{ok:!0};if(429===o.status){let e=await o.json().catch(()=>null),t=Math.ceil(e?.retry_after??5);return{ok:!1,kind:"transient",retryAfterS:t,error:`Discord asked us to wait ${t} s.`}}return 404===o.status||401===o.status?{ok:!1,kind:"config",error:"Discord says this webhook no longer exists."}:{ok:!1,kind:o.status>=500?"transient":"config",error:`Discord returned an error (${o.status}).`}}e.s(["f",0,i],224382);var n=e.i(220642),s=e.i(765359),o=e.i(218331),l=e.i(195191),d=e.i(298397);function u(e,t){return(0,o.M)(e,t)&&(0,o.z)(e).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:e=>e,noChecks:"no checks",errors:e=>`${e} stored error${1===e?"":"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:e=>e.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:e=>`${e} error tersimpan`}},p={May:"Mei",Aug:"Agu",Oct:"Okt",Dec:"Des"},g=[5,15,30,60];async function f(e,t){let a={acted:!1,state:t.state,sentDay:null,event:null,result:null};if(!u(e,t.lastSentDay))return a;let r=(0,o.x)(e),i=t.state&&t.state.day===r?t.state:null;if(i?.stopped)return{...a,state:i};if(i&&i.attempts>0){let t=(g[i.attempts-1]??g[g.length-1])*6e4;if(i.lastAttemptAt&&e.getTime()-new Date(i.lastAttemptAt).getTime()<t)return{...a,state:i}}i??={day:r,...await t.build(),attempts:0,lastAttemptAt:null,stopped:!1,lastError:null};let n=await t.send({subject:i.subject,html:i.html,text:i.text});if(n.ok)return{acted:!0,state:null,sentDay:r,event:null,result:n};let s=i.attempts+1,l="config"===n.kind||s>=5,d="config"===n.kind?`${n.error}. Fix it and the next digest goes out tomorrow.`:`${n.error} Gave up after ${s} attempts today.`;return{acted:!0,sentDay:null,result:n,state:{...i,attempts:s,lastAttemptAt:e.toISOString(),stopped:l,lastError:n.error},event:l?{message:"Daily digest not sent",detail:d}:null}}e.s(["J",0,function(e,t="en"){let a=c[t],r=`${e.siteUrl.replace(/\/+$/,"")}/alerts`,i=((e,t)=>{let{day:a,month:r}=(0,o.e)(e);return`${a} ${"id"===t?p[r]??r:r}`})(e.now,t),u=`${e.firing.length} ${a.firing}, ${e.opened} ${a.opened}, ${e.resolved.length} ${a.resolved}`,g=`Watchbell \xb7 ${i} \xb7 ${u}`,f=[...e.apps].sort((e,t)=>(e.uptime??101)-(t.uptime??101)||t.errors-e.errors||e.name.localeCompare(t.name)),m=e.firing.map(e=>`${n.Z[t][e.severity]} \xb7 ${e.ruleKey} \xb7 ${e.title}: ${"id"===t?(0,s.f)(e.ruleKey,e.message):e.message}`),h=e.resolved.map(e=>`${e.ruleKey} \xb7 ${e.title} (${a.after} ${a.took(e.took)})`),k=f.map(e=>`${e.name}: ${null===e.uptime?a.noChecks:`${(0,l.C)(e.uptime)} ${a.up}`}, ${a.errors(e.errors)}`),y=e.providers.map(e=>`${e.label}: ${e.text}`),$=[`Watchbell \xb7 ${i}`,`${u} ${a.last24}`,"",a.stillHead,...m.length?m.map(e=>`- ${e}`):[a.noFiring],"",a.resolvedHead,...h.length?h.map(e=>`- ${e}`):[a.noResolved],...k.length?["",a.appsHead,...k.map(e=>`- ${e}`)]:[],...y.length?["",a.providersHead,...y.map(e=>`- ${e}`)]:[],"",`${a.open}: ${r}`].join("\n"),w=e=>`<h3 style="font:600 14px system-ui,sans-serif;margin:18px 0 6px">${(0,n.H)(e)}</h3>`,v=(e,t)=>e.length?`<ul style="margin:0;padding-left:18px">${e.map(e=>`<li style="margin:2px 0">${(0,n.H)(e)}</li>`).join("")}</ul>`:`<p style="margin:0;color:#596170">${(0,n.H)(t)}</p>`,b=['<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,n.H)(i)}</h2>`,`<p style="margin:0;color:#596170">${(0,n.H)(`${u} ${a.last24}`)}</p>`,w(a.stillHead),v(m,a.noFiring),w(a.resolvedHead),v(h,a.noResolved),...k.length?[w(a.appsHead),v(k,"")]:[],...y.length?[w(a.providersHead),v(y,"")]:[],`<p style="margin:18px 0 0"><a href="${(0,n.H)(r).replace(/"/g,"&quot;")}" style="color:#1f45c9">${(0,n.H)(a.open)}</a></p>`,"</div>"].join("");return{subject:(0,d.G)(g),html:(0,d.G)(b),text:(0,d.G)($)}},"A",0,u,"K",0,f],600273)},968068,e=>{e.s(["f",0,function(e=process.env){let t=e.TELEGRAM_BOT_TOKEN?.trim()??"",a=e.RESEND_API_KEY?.trim()??"",r=e.DIGEST_FROM?.trim()??"";return{telegramToken:/^\d+:[\w-]{20,}$/.test(t)?t:null,resendKey:a.startsWith("re_")?a:null,digestFrom:/<?[^\s<>@]+@[^\s<>@]+\.[^\s<>@]+>?$/.test(r)?r:null}}])},695811,e=>{var t=e.i(960049);function a(e){let t=e&&"object"==typeof e?e:null,a=t?t.lang:e,r=e=>{var r;return"string"==typeof(r=t&&e in t?t[e]:a)&&"id"===r.trim().toLowerCase()?"id":"en"};return{telegram:r("telegram"),discord:r("discord"),email:r("email")}}async function r(){try{return a(await (0,t.l)())}catch{return a(null)}}async function i(e="telegram"){return(await r())[e]}e.s(["H",0,i,"B",0,r,"t",0,function(e,t,a){return e[t][a]}])},633974,e=>{var t=e.i(425498),a=e.i(77193);async function r(e,i,n={}){let s;if((0,a.W)())return{ok:!1,kind:"config",error:t.Y};try{s=await (n.fetch??fetch)("https://api.resend.com/emails",{method:"POST",signal:AbortSignal.timeout(5e3),cache:"no-store",headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json","User-Agent":"OpsConsole/1.0","Idempotency-Key":i.idempotencyKey},body:JSON.stringify({from:i.from,to:[i.to],subject:i.subject,html:i.html,text:i.text})})}catch{return{ok:!1,kind:"transient",error:"Resend didn't answer."}}if(s.ok)return{ok:!0};let o=await s.json().catch(()=>null);return 429===s.status||s.status>=500?{ok:!1,kind:"transient",error:`Resend returned an error (${s.status}).`}:{ok:!1,kind:"config",error:`Resend: ${String(o?.message??s.status).slice(0,200)}`}}e.s(["f",0,r])},76012,e=>{var t=e.i(425498),a=e.i(77193);async function r(e,i,n,s,o=5e3){let l;if((0,a.W)())return{ok:!1,code:null,description:t.Y,retryAfter:null};try{l=await s(`https://api.telegram.org/bot${e}/${i}`,{...n,signal:AbortSignal.timeout(o),cache:"no-store"})}catch{return{ok:!1,code:null,description:"Telegram didn't answer.",retryAfter:null}}let d=await l.json().catch(()=>null);return d?.ok?{ok:!0,result:d.result}:{ok:!1,code:d?.error_code??l.status,description:String(d?.description??`HTTP ${l.status}`).slice(0,200),retryAfter:d?.parameters?.retry_after??null}}async function i(e,t,a,n={}){let s="number"==typeof n.replyTo&&Number.isSafeInteger(n.replyTo)&&n.replyTo>0?{reply_parameters:{message_id:n.replyTo,allow_sending_without_reply:!0}}:{},o=await r(e,"sendMessage",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({chat_id:t,text:a,parse_mode:"HTML",link_preview_options:{is_disabled:!0},...n.replyMarkup?{reply_markup:n.replyMarkup}:{},...s})},n.fetch??fetch);if(o.ok){let e=o.result?.message_id;return"number"==typeof e&&Number.isSafeInteger(e)&&e>0?{ok:!0,messageId:e}:{ok:!0}}return 429===o.code?{ok:!1,kind:"transient",retryAfterS:o.retryAfter??30,error:`Telegram asked us to wait ${o.retryAfter??30} s.`}:null===o.code||o.code>=500?{ok:!1,kind:"transient",error:null===o.code?o.description:`Telegram returned an error (${o.code}).`}:{ok:!1,kind:"config",error:`Telegram: ${o.description}`}}e.s(["I",0,i,"z",0,r])}]})();
1
+ (()=>{"use strict";module.exports=[220642,765359,e=>{var t=e.i(218331),r=e.i(293857);let a=e=>`${e} hari`,n=(e,t)=>0>Number(e)?`${t} udah habis.`:`${t} habis dalam ${a(e)}.`,i={"the job reported a failure":"job-nya lapor gagal","started but didn't finish":"udah mulai tapi nggak selesai","never pinged":"belum pernah ping","no ping in time":"nggak ada ping tepat waktu"},s={critical:"kritis",high:"tinggi",moderate:"sedang",low:"rendah",unknown:"nggak diketahui"},o={MonitorDown:[[/^(.+): no ping for (\d+ (?:min|h|days?))\.$/,(e,t,r)=>`${t}: nggak ada ping selama ${r.replace(/^(\d+) min$/,"$1 menit").replace(/^(\d+) h$/,"$1 jam").replace(/^(\d+) days?$/,"$1 hari")}.`],[/^(.+): (the job reported a failure|started but didn't finish|never pinged|no ping in time)\.$/,(e,t,r)=>`${t}: ${i[r]}.`],[/^(.+) failed its check \((.*)\) on (\d+) consecutive checks\.$/,(e,t,r,a)=>`${t}: ${a} cek gagal berturut-turut (${r}).`],[/^(.+) returned no answer on (\d+) consecutive checks\.$/,(e,t,r)=>`${t}: ${r} cek gagal berturut-turut (nggak ada jawaban).`],[/^(.+) returned (HTTP \d+) on (\d+) consecutive checks\.$/,(e,t,r,a)=>`${t}: ${a} cek gagal berturut-turut (${r}).`],[/^(.+) answers again\.$/,(e,t)=>`${t} udah jawab lagi.`],[/^(\S+) moved to (\S+); MonitorDomainMoved takes over\.$/,(e,t,r)=>`${t} pindah ke ${r}; MonitorDomainMoved yang ambil alih.`]],MonitorDomainMoved:[[/^(\S+) is no longer a domain of (.+); production is on (\S+)\.$/,(e,t,r,a)=>`${t} udah bukan domain ${r}; production sekarang di ${a}.`],[/^The monitor checks (\S+), a domain of (.+)\.$/,(e,t,r)=>`Monitor ngecek ${t}, domain ${r}.`]],CollectorStale:[[/^The collector hasn't finished a run yet\.$/,()=>"Collector belum pernah selesai jalan."],[/^The last minute run finished ([\d,]+) min ago\.$/,(e,t)=>`Collector terakhir selesai jalan ${t} menit lalu.`]],HighLatency:[[/^p95 ([\d,]+) ms over the last 10 minutes \(limit ([\d,]+) ms\)\.$/,(e,t,r)=>`p95 ${t} ms selama 10 menit terakhir (batas ${r} ms).`]],DeploymentFailed:[[/^Production deployment \(no commit\) failed\.$/,()=>"Deploy production (tanpa commit) gagal."],[/^Production deployment (\S+) failed\.$/,(e,t)=>`Deploy production ${t} gagal.`]],DatabasePaused:[[/^Supabase project (.+) is paused\.$/,(e,t)=>`Project Supabase ${t} lagi di-pause.`]],CertExpiringSoon:[[/^The TLS certificate of (.+) expires in (-?\d+) days?\.$/,(e,t,r)=>n(r,`Sertifikat TLS ${t}`)]],DomainExpiringSoon:[[/^(.+) expires in (-?\d+) days?\.$/,(e,t,r)=>n(r,t)]],StorageAlmostFull:[[/^(.+) uses ([\d,]+) MB of ([\d,]+) MB \(([\d,]+)%\)\.$/,(e,t,r,a,n)=>`${t} pakai ${r} MB dari ${a} MB (${n}%).`]],NeonComputeHigh:[[/^(.+) used ([\d,]+) of ([\d,]+) CU-hours this month\.$/,(e,t,r,a)=>`${t} udah pakai ${r} dari ${a} CU-hours bulan ini.`]],FirestoreQuotaHigh:[[/^(.+) hit a Firestore quota \(RESOURCE_EXHAUSTED\)\.$/,(e,t)=>`${t} kena kuota Firestore (RESOURCE_EXHAUSTED).`],[/^(.+) read ([\d,]+) of ([\d,]+) documents today \(([\d,]+)%\)\.$/,(e,t,r,a,n)=>`${t} udah baca ${r} dari ${a} dokumen hari ini (${n}%).`]],AutoPauseRisk:[[/^No API traffic for (\d+) days?\. Supabase pauses free projects after about 7 days\.$/,(e,t)=>`Nggak ada traffic API selama ${a(t)}. Supabase nge-pause project free setelah sekitar 7 hari.`]],DnsProxiedToVercel:[[/^(.+) points to Vercel through the Cloudflare proxy\. Vercel recommends DNS only\.$/,(e,t)=>`${t} ngarah ke Vercel lewat proxy Cloudflare. Vercel nyaranin DNS only.`]],DbQuotaHigh:[[/^(.+): (.+) at ([\d,]+)% of the free plan\.$/,(e,t,r,a)=>`${t}: ${r.replace(/^Rows read/,"baris dibaca").replace(/^Rows written/,"baris ditulis").replace(/^Commands/,"command").replace(/^usage$/,"pemakaian").replace(/ today\b/," hari ini").replace(/\bof ([^ ]+(?: [A-Z]+)?)\b/,"dari $1").replace(/ this month\b/," bulan ini").replace(/\(account\)/,"(akun)")} udah ${a}% dari kuota gratis.`]],ComputeHigh:[[/^(.+) compute is back under the limits\.$/,(e,t)=>`Compute ${t} udah balik di bawah batas.`],[/^(.+): ((?:CPU|RAM|disk|connections) .+)\.$/,(e,t,r)=>`${t}: ${r.replace(/ for (\d+) min/g," selama $1 menit").replace(/\(limit /g,"(batas ").replace(/\bconnections (\d+) of (\d+)/g,"koneksi $1 dari $2")}.`]],CredentialExpiring:[[/^Google Drive access was removed \(invalid_grant\)\. Reconnect it\.$/,()=>"Akses Google Drive dicabut (invalid_grant). Sambungin lagi ya."],[/^The (\S+) credential (.+) has expired\.$/,(e,t,r)=>`Credential ${t} ${r} udah kedaluwarsa.`],[/^The (\S+) credential (.+) expires in (-?\d+) days?\.$/,(e,t,r,a)=>n(a,`Credential ${t} ${r}`)]],VulnerableDependency:[[/^(.+) has no moderate, high or critical dependency advisories\.$/,(e,t)=>`${t} nggak punya advisory dependency sedang, tinggi atau kritis.`],[/^(.+) has no high or critical dependency advisories\.$/,(e,t)=>`${t} nggak punya advisory dependency tinggi atau kritis.`],[/^(\d+) vulnerable packages? \(([^)]*)\): (.*)$/,(e,t,r,a)=>`${t} paket rentan (${r.replace(/\b(critical|high|moderate|low|unknown)\b/g,e=>s[e])}): ${a.replace(/ \(no fix yet\)/g," (belum ada fix)").replace(/, \+(\d+) more\.$/,", +$1 lagi.")}`]],FrameworkVulnerable:[[/^(.+) runs Next\.js (.+) with no known advisories\.$/,(e,t,r)=>`${t} pakai Next.js ${r} tanpa advisory yang diketahui.`],[/^Next\.js (.+) has (\d+) known vulnerabilit(?:y|ies) \((critical|high|moderate|low|unknown)\), (?:fixed in (\S+)(?: \((one fix needs|some fixes need) Next\.js (\d+)\))?|no fix yet)\.$/,(e,t,r,a,n,i,o)=>`Next.js ${t} punya ${r} kerentanan yang diketahui (${s[a]}), ${n?`udah di-fix di ${n}${i?` (${"one fix needs"===i?"satu fix":"sebagian fix"} butuh Next.js ${o})`:""}`:"belum ada fix"}.`]]};function l(e,t){for(let[r,a]of Object.hasOwn(o,e)?o[e]:[]){let e=r.exec(t);if(e)return a(...e)}return t}e.s(["f",0,l],765359);let d={en:{open:"FIRING",repeat:"REPEAT",resolve:"RESOLVED"},id:{open:"MUNCUL",repeat:"ULANG",resolve:"PULIH"}},c={en:{critical:"critical",warning:"warning",info:"info"},id:{critical:"kritis",warning:"peringatan",info:"info"}},u={en:{firing:"firing",resolved:"resolved",since:"since",open:"Open alerts",more:"more on the Alerts page",causedBy:"caused by",incident:"reports an incident",step:"Next step",test:"test"},id:{firing:"aktif",resolved:"pulih",since:"sejak",open:"Buka Alerts",more:"lagi di halaman Alerts",causedBy:"karena",incident:"lagi ada insiden",step:"Yang perlu kamu lakukan",test:"tes"}},p=e=>e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),h={critical:0,warning:1,info:2};function f(e,t){let r=e.filter(e=>"resolve"!==e.kind).length,a=e.length-r;return[r?`${r} ${u[t].firing}`:"",a?`${a} ${u[t].resolved}`:""].filter(Boolean).join(", ")}function g(e,t,r,a,n,i){let s=[...e].sort((e,t)=>("resolve"===e.kind)-("resolve"===t.kind)||h[e.severity]-h[t.severity]),o=[a],l=a.length+n.length+40;for(let e=0;e<s.length;e++){let a=r(s[e]);if(l+a.length+1>t){o.push(i(s.length-e));break}o.push(a),l+=a.length+1}return o.push(n),o.join("\n").slice(0,t)}let m={en:{CollectorStale:"the watchdog already runs the collector itself every 5 minutes. Check the job on cron-job.org and the latest Vercel deploy.",DomainExpiringSoon:"renew the domain at its registrar; Watchbell can't pay for it.",StorageAlmostFull:"delete old data or shorten retention in that database; the free tier can't add storage.",NeonComputeHigh:"cut queries or make Neon auto-suspend sooner; the quota resets at the start of the month.",FirestoreQuotaHigh:"cut Firestore reads (cache in the app); the quota resets daily.",DbQuotaHigh:"cut queries to that database until its quota resets.",ComputeHigh:"check the Pool card on the Supabase page (idle connections close automatically at 10 of 15); for CPU or disk, look for heavy queries.",DnsProxiedToVercel:"turn off the proxy (orange cloud) for that record in Cloudflare; Vercel needs DNS only.",CredentialExpiring:"create a new token and replace it in Settings → Connections before it expires.",FrameworkVulnerable:"if the app's GitHub repository isn't linked yet, link it on the app page to get an update PR from the office; or update next yourself.",MonitorDomainMoved:"press Update monitor on the Uptime page (or approve the proposal) so the monitor checks the new domain; the app itself is fine."},id:{CollectorStale:"watchdog udah jalanin collector sendiri tiap 5 menit. Cek job di cron-job.org dan deploy terakhir di Vercel.",DomainExpiringSoon:"perpanjang domain di registrar-nya, Watchbell nggak bisa bayar.",StorageAlmostFull:"hapus data lama atau pendekin retensi di database itu, free tier nggak bisa nambah storage.",NeonComputeHigh:"kurangin query atau percepat auto-suspend Neon, kuota reset awal bulan.",FirestoreQuotaHigh:"kurangin read Firestore (cache di app), kuota reset tiap hari.",DbQuotaHigh:"kurangin query ke database itu sampai kuotanya reset.",ComputeHigh:"cek kartu Pool di halaman Supabase (koneksi nganggur ditutup otomatis di 10 dari 15), kalau CPU/disk cari query yang berat.",DnsProxiedToVercel:"matiin proxy (awan oranye) record itu di Cloudflare, Vercel butuh DNS only.",CredentialExpiring:"bikin token baru dan ganti di Settings → Connections sebelum habis.",FrameworkVulnerable:"kalau repo GitHub app-nya belum di-link, link di halaman app biar office bikinin PR update; atau update next sendiri.",MonitorDomainMoved:"pencet Update monitor di halaman Uptime (atau approve usulannya) biar monitor ngecek domain baru; app-nya sendiri aman."}},k=(e,t="en")=>Object.hasOwn(m[t],e)?m[t][e]??null:null;e.s(["Z",0,c,"l",0,function(e,a,n,i="en",s={},o={}){let h=`${n.replace(/\/+$/,"")}/alerts`,m=u[i],$=e=>`${d[i][e.kind]} \xb7 ${c[i][e.severity]} \xb7 `,y=e=>o.test?r.I[i]:"id"===i?l(e.ruleKey,e.message):e.message,w=o.test?`Watchbell (${m.test})`:"Watchbell",b=e=>"resolve"===e.kind?null:((e,t="en")=>{let r=k(e,t);return r?`${u[t].step}: ${r}`:null})(e.ruleKey,i),v=e=>[e.causedBy?`${m.causedBy} ${e.causedBy}`:"",e.provider?`${e.provider} ${m.incident}`:""].filter(Boolean).join(" · "),A=e=>`
2
+ +${e} ${m.more}`,T=(e,a)=>{let n=Object.hasOwn(s,e.ruleKey)?s[e.ruleKey]?.[i]:void 0;if(!n)return null;let[o="",...l]=(0,r.l)(n,{status:d[i][e.kind],severity:c[i][e.severity],rule:e.ruleKey,target:a(e.title),detail:a(y(e)),cause:a(v(e)),step:"resolve"===e.kind?"":k(e.ruleKey,i)??"",since:`${(0,t.U)(e.startedAt)} ${(0,t.J)(e.startedAt)}`,threshold:null==e.threshold?"":e.threshold.toLocaleString("en-US")}).split("\n");return[o,l.join("\n")]},S=e=>e.replace(/[*_`~|\[\]<>]/g,"");return{telegram:g(e,4096,e=>{let r=T(e,e=>e);return r?`
3
+ <b>${p(r[0])}</b>${r[1]?`
4
+ ${p(r[1])}`:""}`:`
5
+ <b>${$(e)}${p(e.ruleKey)} \xb7 ${p(e.title)}</b>
6
+ ${p(y(e))}${v(e)?`
7
+ <i>${p(v(e))}</i>`:""}${b(e)?`
8
+ 👉 ${p(b(e))}`:""}
9
+ ${m.since} ${(0,t.U)(e.startedAt)} ${(0,t.J)(e.startedAt)}`},`<b>${w}</b>: ${f(e,i)} \xb7 ${(0,t.U)(a)} ${(0,t.J)(a)}`,`
10
+ <a href="${p(h)}">${m.open}</a>`,A),discord:g(e,2e3,e=>{let t=T(e,S);return t?`
11
+ **${t[0]}**${t[1]?`
12
+ ${t[1]}`:""}`:`
13
+ **${$(e)}${e.ruleKey} \xb7 ${S(e.title)}**
14
+ ${S(y(e))}${v(e)?`
15
+ _${v(e)}_`:""}${b(e)?`
16
+ 👉 ${b(e)}`:""}`},`**${w}**: ${f(e,i)} \xb7 ${(0,t.U)(a)} ${(0,t.J)(a)}`,`
17
+ ${h}`,A)}},"H",0,p],220642)},895625,e=>{var t=e.i(971724),r=e.i(105954),a=e.i(140561),n=e.i(600205),i=e.i(77193);let s=t.z.object({COLLECTOR_SECRET:r.z.string().min(32),CRON_SECRET:r.z.string().min(16),QSTASH_CURRENT_SIGNING_KEY:r.z.string().min(10),QSTASH_NEXT_SIGNING_KEY:r.z.string().min(10)}),o=s.extend({QSTASH_CURRENT_SIGNING_KEY:a.z.union([n.z.literal(""),r.z.string().min(10)]).default(""),QSTASH_NEXT_SIGNING_KEY:a.z.union([n.z.literal(""),r.z.string().min(10)]).default("")}),l=!1;e.s(["f",0,function(){try{var e=process.env;let t=("selfhost"===(0,i.c)(e)?o:s).safeParse(e);if(!t.success)throw Error(`Missing or invalid scheduler settings: ${t.error.issues.map(e=>e.path.join(".")).join(", ")}`);return t.data}catch(e){return l||(l=!0,console.warn(e instanceof Error?e.message:"Missing or invalid scheduler settings")),null}}])},629955,11827,e=>{var t=e.i(875225),r=e.i(349129),a=e.i(924924),n=e.i(618916),i=e.i(921991),s=e.i(656083),o=e.i(472832);let l="Pause requested · ";function d(e,t){if(!e.keep||"ACTIVE_HEALTHY"!==e.status)return!1;let r=e.lastTraffic??e.trackedSince;return t.getTime()-r.getTime()>=432e6}function c(e,t){return e.autoRestore?"INACTIVE"!==e.status?{act:!1,reason:"not-paused"}:e.accessDenied?{act:!1,reason:"denied"}:e.lastAutoRestoreAt&&t.getTime()-e.lastAutoRestoreAt.getTime()<216e5?{act:!1,reason:"too-soon"}:e.slotsLeft<=0?{act:!1,reason:"no-slot"}:{act:!0}:{act:!1,reason:"off"}}e.s(["B",0,l,"F",0,c,"v",0,d],11827);var u=e.i(326003),p=e.i(843448),h=e.i(547499),f=e.i(628448),g=e.i(342833);async function m(e){let r=await (0,a.f)().select({data:n.snapshots.data}).from(n.resources).innerJoin(n.snapshots,(0,t.u)(n.snapshots.resourceId,n.resources.id)).where((0,t.b)((0,t.u)(n.resources.accountId,e),(0,t.u)(n.resources.kind,"supabase_project"))),i=new Map;for(let{data:e}of r){let t=(0,u.k)(u.B,e);t.orgSlug&&void 0!==t.freeOrg&&i.set(t.orgSlug,t.freeOrg)}return i}let k=e=>`${e} day${1===e?"":"s"}`,$=e=>e instanceof Error?e.name:"unknown";async function y(e,r,i){try{let s=await (0,a.f)().select({k:n.keepActive,r:n.resources,s:n.snapshots,a:n.accounts}).from(n.keepActive).innerJoin(n.resources,(0,t.u)(n.resources.id,n.keepActive.resourceId)).innerJoin(n.accounts,(0,t.u)(n.accounts.id,n.resources.accountId)).leftJoin(n.snapshots,(0,t.u)(n.snapshots.resourceId,n.resources.id)).where((0,t.b)((0,t.u)(n.keepActive.keep,!0),(0,t.u)(n.resources.kind,"supabase_project"),(0,t.u)(n.resources.monitored,!0),(0,t.M)(n.resources.goneAt),(0,t.u)(n.accounts.status,"ok"))).limit(100),o=(0,h.f)().OPS_ENCRYPTION_KEY;for(let[t,{k:a,r:n,s:l,a:d}]of s.entries()){let c=r-Date.now()-500;if(c<250)return void i.push(`keep-active: ${s.length-t} left for the next run, time budget used`);if(!(a.lastKeepAliveAt&&e.getTime()-a.lastKeepAliveAt.getTime()<72e6))try{await w(n,l,d,e,o,c,i)}catch(e){console.warn("keep-active failed:",$(e)),i.push(`keep-active/${n.name}: ${$(e)}`)}}}catch(e){console.warn("keep-active failed:",$(e)),i.push(`keep-active: ${$(e)}`)}}async function w(e,r,o,l,c,h,m){let $=(0,u.k)(u.B,r?.data),y=$.lastTrafficAt?new Date($.lastTrafficAt):$.trafficAt?new Date(new Date($.trafficAt).getTime()-6048e5):null;if(!d({status:$.status??"",keep:!0,lastTraffic:y,trackedSince:e.firstSeenAt},l))return;let w=Math.floor((l.getTime()-(y??e.firstSeenAt).getTime())/864e5),b=(0,i.V)({ciphertext:o.credentialCiphertext,iv:o.credentialIv},c);if(!b)return void m.push(`keep-active/${o.label}: credential can't be read`);let v=await (0,g.i)(b,e.externalId,{timeoutMs:Math.min(5e3,h)});if(v.ok)await (0,a.f)().update(n.keepActive).set({lastKeepAliveAt:l}).where((0,t.u)(n.keepActive.resourceId,e.id)),await (0,s.f)([{at:l,type:"action",kind:"ok",resourceId:e.id,actorUserId:null,message:`Keep-alive: sent to ${e.name} (no API traffic for ${k(w)})`,detail:null}]);else{let t=Math.max(1,p.e-w);await (0,s.f)([{at:l,type:"action",kind:"warn",resourceId:e.id,actorUserId:null,reason:"KeepAliveFailed",message:`Keep-alive failed for ${e.name}; it may pause in about ${k(t)}`,detail:"scope"===v.kind?"This token can't run the read-only query (Database read).":(0,f.S)(v.error)}]),m.push(`keep-active/${e.name}: ${v.error}`)}}async function b(e){let[i]=await (0,a.f)().select({at:n.events.at}).from(n.events).where((0,t.b)((0,t.u)(n.events.reason,"Action"),(0,t.u)(n.events.resourceId,e),(0,t.u)(n.events.type,"action"),(0,t.y)(n.events.kind,["ok","err"]),(0,t.E)(n.events.actorUserId),(0,t.D)(n.events.message,`${l}%`))).orderBy((0,r.A)(n.events.at)).limit(1);return i?.at??null}async function v(){return(await (0,a.f)().select({id:n.keepActive.resourceId}).from(n.keepActive).where((0,t.u)(n.keepActive.autoRestore,!0)).limit(1)).length>0}async function A(e,r,l=1/0){let d=r.filter(e=>!!e.resourceId&&"INACTIVE"===e.status),u=()=>l-Date.now()-500;if(!d.length||250>u())return;let k=await (0,a.f)().select({k:n.keepActive,id:n.resources.id,name:n.resources.name,ref:n.resources.externalId,accountId:n.resources.accountId,label:n.accounts.label,lastTestAt:n.accounts.lastTestAt,ciphertext:n.accounts.credentialCiphertext,iv:n.accounts.credentialIv}).from(n.keepActive).innerJoin(n.resources,(0,t.u)(n.resources.id,n.keepActive.resourceId)).innerJoin(n.accounts,(0,t.u)(n.accounts.id,n.resources.accountId)).where((0,t.b)((0,t.u)(n.keepActive.autoRestore,!0),(0,t.y)(n.keepActive.resourceId,d.map(e=>e.resourceId)),(0,t.u)(n.resources.kind,"supabase_project"),(0,t.M)(n.resources.goneAt)));if(!k.length)return;let y=await (0,o.f)([...new Set(k.map(e=>e.accountId))]),w=new Map,v=new Map;for(let l of k)try{let d=r.filter(e=>e.accountId===l.accountId),k=d.find(e=>e.resourceId===l.id)?.orgSlug??"";if(!w.has(l.accountId)){let e=await m(l.accountId);w.set(l.accountId,e),v.set(l.accountId,(0,p._)(d.map(t=>({status:t.status,freeOrg:e.get(t.orgSlug??"")??null}))).left)}let $=!1===w.get(l.accountId).get(k),A=$?1/0:v.get(l.accountId),T=y.get(l.accountId),S=Math.max(l.k.updatedAt.getTime(),l.lastTestAt?.getTime()??0),I=T?.write==="denied"&&new Date(T.at).getTime()>S,x=c({status:"INACTIVE",autoRestore:!0,lastAutoRestoreAt:l.k.lastAutoRestoreAt,slotsLeft:A,accessDenied:I},e);if(!x.act){"no-slot"===x.reason&&await (0,s.f)([{at:e,type:"action",kind:"info",resourceId:l.id,actorUserId:null,reason:"AutoRestoreWaits",message:`Auto-restore: ${l.name} waits, account ${l.label} has no free slot`,detail:"Pause another project in this account, or restore it by hand once a slot is free."}]);continue}let D=await b(l.id);if(D&&D.getTime()>l.k.updatedAt.getTime())continue;let E=u();if(E<250)return;await (0,a.f)().update(n.keepActive).set({lastAutoRestoreAt:e}).where((0,t.u)(n.keepActive.resourceId,l.id));let j=(0,i.V)({ciphertext:l.ciphertext,iv:l.iv},(0,h.f)().OPS_ENCRYPTION_KEY);if(!j)continue;let C=await (0,g.G)(j,l.ref,{timeoutMs:Math.min(5e3,E)});C.ok?($||v.set(l.accountId,v.get(l.accountId)-1),await (0,o.y)(l.accountId,"ok"),await (0,s.f)([{at:e,type:"action",kind:"ok",resourceId:l.id,actorUserId:null,message:`Auto-restore: restoring ${l.name}`,detail:null}])):("scope"===C.kind&&await (0,o.y)(l.accountId,"denied"),await (0,s.f)([{at:e,type:"action",kind:"err",resourceId:l.id,actorUserId:null,message:`Auto-restore: ${l.name} couldn't be restored`,detail:"scope"===C.kind?`${(0,f.b)("supabase",{})} Auto-restore stops until then.`:(0,f.S)(C.error)}]))}catch(e){console.warn("auto-restore failed:",$(e))}}async function T(e,r,i=o.W,s=new Date){let l=await (0,o.q)(e.id,"keep-alive",r);if(l)return{ok:!1,error:l};let d=await (0,o.p)(r,"supabase_project");if(!d)return{ok:!1,error:"This project isn't watched any more, or its credential can't be read."};let[c]=await (0,a.f)().select({last:n.keepActive.lastKeepAliveAt}).from(n.keepActive).where((0,t.u)(n.keepActive.resourceId,r)).limit(1);if(c?.last&&s.getTime()-c.last.getTime()<72e6)return i({done:!1,message:"A keep-alive was already sent in the last 20 hours."},e,d.account.id);let u=d.resource.name,p=await (0,g.i)(d.token,d.resource.externalId,{timeoutMs:5e3});return p.ok&&await (0,a.f)().insert(n.keepActive).values({resourceId:r,lastKeepAliveAt:s}).onConflictDoUpdate({target:n.keepActive.resourceId,set:{lastKeepAliveAt:s}}),i(p.ok?{done:!0,message:`Keep-alive sent to ${u}.`,audit:{message:`Keep-alive sent \xb7 ${u}`,resourceId:r}}:{done:!1,failed:{ok:!1,kind:p.kind,error:"scope"===p.kind?"This token can't run the read-only query (Database read).":p.error,...p.status?{status:p.status}:{}},audit:{message:`Keep-alive failed \xb7 ${u}`,resourceId:r}},e,d.account.id)}e.s(["m",0,m,"z",0,A,"g",0,v,"v",0,T,"V",0,y,"G",0,function(e,t,r){return!1===t.get(r)?1/0:(0,p._)(e.map(e=>({status:e.status,freeOrg:t.get(e.orgSlug)??null}))).left}],629955)},483100,e=>{e.i(313931);var t=e.i(875225),r=e.i(349129),a=e.i(518899),n=e.i(924924),i=e.i(618916),s=e.i(220642),o=e.i(921991),l=e.i(656083),d=e.i(532148),c=e.i(209576),u=e.i(111970),p=e.i(762504),h=e.i(547499),f=e.i(224382),g=e.i(201162),m=e.i(973990),k=e.i(600273),$=e.i(968068),y=e.i(695811),w=e.i(633974),b=e.i(76012),v=e.i(298397),A=e.i(218331),T=e.i(146394);let S="digest.lastSentDay",I="digest.state";async function x(e){let[r]=await (0,n.f)().select().from(i.channels).where((0,t.u)(i.channels.kind,e)).limit(1);if(!r)return null;try{return{row:r,config:JSON.parse((0,o.K)({ciphertext:r.configCiphertext,iv:r.configIv},(0,h.f)().OPS_ENCRYPTION_KEY))}}catch{return null}}async function D(){let e=(0,$.f)(),[t,r,a,n]=await Promise.all([x("telegram"),x("discord"),x("webhook"),x("smtp")]),i=new Set;e.telegramToken&&t?.row.enabled&&t.config?.chatId&&i.add("telegram"),r?.row.enabled&&r.config?.url&&i.add("discord"),a?.row.enabled&&a.config?.url&&i.add("webhook"),n?.row.enabled&&n.config?.host&&i.add("smtp");let s=`${(0,h.f)().SITE_URL.replace(/\/+$/,"")}/alerts`;return{send:(i,o,l)=>"telegram"===i?(0,b.I)(e.telegramToken,t.config.chatId,o):"webhook"===i?(0,g.E)(a.config,(0,g.J)(o,l??[],new Date,s)):"smtp"===i?(0,m.f)(n.config,(o.split("\n")[0]??"").replace(/[*_`~]/g,"").slice(0,150)||"Watchbell alert",o.replace(/\*\*(.+?)\*\*/g,"$1").replace(/(^|[\s(])_(\S(?:.*?\S)?)_(?=[\s).,!?:;]|$)/gm,"$1$2").replace(/`([^`\n]+)`/g,"$1")):(0,f.f)(r.config.url,o),configured:i}}async function E(){let e=(0,$.f)().telegramToken;if(!e)return null;let t=await x("telegram");return t?.row.enabled&&t.config?.chatId?{token:e,chatId:t.config.chatId}:null}async function j(){let e=await x("discord");return e?.row.enabled&&e.config?.url?{url:e.config.url}:null}let C="notify.telegramThreads",_=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;async function N(e,t,r){let s=e.filter(e=>_.test(e));if(!s.length||!Number.isSafeInteger(t)||t<=0)return;let o=Object.fromEntries(s.map(e=>[e,{m:t,at:r.getTime()}])),l=r.getTime()-6048e5,d=a.B`case when jsonb_typeof(${i.settings.value}) = 'object' then ${i.settings.value} else '{}'::jsonb end`;await (0,n.f)().insert(i.settings).values({key:C,value:o}).onConflictDoUpdate({target:i.settings.key,set:{value:a.B`(select coalesce(jsonb_object_agg(e.key, e.value), '{}'::jsonb) from jsonb_each(${JSON.stringify(o)}::jsonb || ${d}) as e
18
+ where jsonb_typeof(e.value) = 'object' and (e.value->>'at') ~ '^[0-9]{1,15}$' and (e.value->>'at')::bigint > ${l})`,updatedAt:r}})}async function M(e){if(!e||!_.test(e))return null;try{let[r]=await (0,n.f)().select({value:i.settings.value}).from(i.settings).where((0,t.u)(i.settings.key,C)).limit(1),a=r?.value&&"object"==typeof r.value?r.value[e]:null;return"number"==typeof a?.m&&Number.isSafeInteger(a.m)&&a.m>0?a.m:null}catch{return null}}let R=()=>(0,c.f)().catch(()=>v.a);async function P(e,o,l={}){var c;if(o-Date.now()<6e3)return{sent:0,dropped:0};let p=await (0,u.I)(),f=await (0,n.f)().select({a:i.alerts,channels:i.alertRules.channels,threshold:i.alertRules.threshold}).from(i.alerts).innerJoin(i.alertRules,(0,t.u)(i.alertRules.key,i.alerts.ruleKey)).where((0,t.b)((0,t.E)(i.alerts.pending),a.B`(${i.alerts.pending} = 'resolve') = (${i.alerts.resolvedAt} is not null)`,(0,u.s)(p))).orderBy((0,r.M)(i.alerts.pendingSince)).limit(50);if(!f.length)return{sent:0,dropped:0};let g=new Set((await (0,n.f)().update(i.alerts).set({claimedAt:e}).where((c=f.map(e=>e.a.id),(0,t.b)((0,t.y)(i.alerts.id,c),(0,t.E)(i.alerts.pending),(0,t.F)((0,t.M)(i.alerts.claimedAt),(0,t.S)(i.alerts.claimedAt,new Date(e.getTime()-12e4)))))).returning({id:i.alerts.id})).map(e=>e.id)),m=f.filter(e=>g.has(e.a.id));if(!m.length)return{sent:0,dropped:0};let{send:k,configured:$}=l.sender??await D(),w=new Set(m.filter(({a:t})=>"resolve"!==t.pending&&(t.silencedUntilResolved||null!==t.silencedUntil&&t.silencedUntil.getTime()>e.getTime())).map(({a:e})=>e.id)),[b,A,T]=await Promise.all([R(),(0,y.B)(),(0,d.w)()]),S=new Set;for(let r of["telegram","discord","webhook","smtp"]){if(!$.has(r))continue;let a=m.filter(e=>e.channels.includes(r)&&!w.has(e.a.id));if(!a.length)continue;let o=a.map(({a:e,threshold:t})=>{let a="telegram"===r?e:(0,v.o)(e,b);return{kind:e.pending,ruleKey:e.ruleKey,severity:e.severity,title:a.title,message:a.message,startedAt:e.startedAt,causedBy:a.causedBy,provider:e.providerIncident,threshold:t}}),l=(0,s.l)(o,e,(0,h.f)().SITE_URL,"webhook"===r?"en":"smtp"===r?A.email:A[r],T),d=await k(r,(0,v.G)("telegram"===r?l.telegram:l.discord),"webhook"===r?o.map(e=>({...e,title:(0,v.G)(e.title),message:(0,v.G)(e.message)})):void 0);await (0,n.f)().update(i.channels).set(d.ok?{lastSentAt:e,lastError:null}:{lastError:d.error}).where((0,t.u)(i.channels.kind,r)),d.ok&&a.forEach(({a:e})=>S.add(e.id)),d.ok&&"telegram"===r&&d.messageId&&await N(a.filter(({a:e})=>"open"===e.pending).map(({a:e})=>e.id),d.messageId,e).catch(()=>console.warn("notify: remembering the Telegram message failed"))}let I=0,x=0,E=[];for(let{a:r,channels:a}of m){let s=a.some(e=>$.has(e)),o=null!==r.pendingSince&&e.getTime()-r.pendingSince.getTime()>18e5;S.has(r.id)?(I++,await (0,n.f)().update(i.alerts).set({pending:null,pendingSince:null,lastNotifiedAt:e,claimedAt:null,..."open"===r.pending?{notifiedOpen:!0}:{}}).where((0,t.u)(i.alerts.id,r.id))):w.has(r.id)||!s||o?(x++,await (0,n.f)().update(i.alerts).set({pending:null,claimedAt:null}).where((0,t.u)(i.alerts.id,r.id))):E.push(r.id)}return E.length&&await (0,n.f)().update(i.alerts).set({claimedAt:null}).where((0,t.y)(i.alerts.id,E)),{sent:I,dropped:x}}async function U(e){let s=new Date(e.getTime()-864e5),o=await (0,u.I)(),l=a.B`case ${i.alerts.severity} when 'critical' then 0 when 'warning' then 1 else 2 end`,[d,c,h,f,g]=await Promise.all([(0,n.f)().select({ruleKey:i.alerts.ruleKey,severity:i.alerts.severity,title:i.alerts.title,message:i.alerts.message,resourceId:i.alerts.resourceId,startedAt:i.alerts.startedAt}).from(i.alerts).where((0,t.b)((0,t.M)(i.alerts.resolvedAt),(0,u.s)(o))).orderBy(l,(0,r.A)(i.alerts.startedAt)).limit(50),(0,n.f)().select({n:a.B`count(*)::int`}).from(i.alerts).where((0,t.B)(i.alerts.startedAt,s)),(0,n.f)().select({ruleKey:i.alerts.ruleKey,title:i.alerts.title,resourceId:i.alerts.resourceId,startedAt:i.alerts.startedAt,resolvedAt:i.alerts.resolvedAt}).from(i.alerts).where((0,t.b)((0,t.E)(i.alerts.resolvedAt),(0,t.B)(i.alerts.resolvedAt,s))).orderBy((0,r.A)(i.alerts.resolvedAt)).limit(20),(0,n.f)().select({id:i.resources.id,name:i.resources.name}).from(i.resources).where((0,t.b)((0,t.u)(i.resources.kind,"app"),(0,t.u)(i.resources.monitored,!0),(0,t.M)(i.resources.goneAt))).orderBy(i.resources.name).limit(T.O.apps),(0,p.h)(e)]),m=f.map(e=>e.id),[k,$]=m.length?await Promise.all([(0,n.f)().select({id:i.monitors.resourceId,total:a.B`count(*)::int`,bad:a.B`(count(*) filter (where not ${i.checks.ok}))::int`}).from(i.checks).innerJoin(i.monitors,(0,t.u)(i.monitors.id,i.checks.monitorId)).where((0,t.b)((0,t.y)(i.monitors.resourceId,m),(0,t.B)(i.checks.at,s),(0,t.u)(i.checks.inMaintenance,!1))).groupBy(i.monitors.resourceId),(0,n.f)().select({id:i.storedLogs.resourceId,n:a.B`count(*)::int`}).from(i.storedLogs).where((0,t.b)((0,t.y)(i.storedLogs.resourceId,m),(0,t.B)(i.storedLogs.at,s))).groupBy(i.storedLogs.resourceId)]):[[],[]],y=new Map(k.map(e=>[e.id,e])),w=new Map($.map(e=>[e.id,e.n])),b=await R();return{now:e,opened:c[0]?.n??0,firing:d.map(({resourceId:e,...t})=>{let r=(0,v.o)({...t,resourceId:e,causedBy:null},b);return{...t,title:r.title,message:r.message}}),resolved:h.flatMap(e=>e.resolvedAt?[{ruleKey:e.ruleKey,title:(0,v.o)({title:e.title,message:"",causedBy:null,resourceId:e.resourceId},b).title,took:function(e,t){let r=Math.max(1,Math.round((t.getTime()-e.getTime())/6e4));if(r<60)return`${r} min`;let a=Math.floor(r/60);return a<24?`${a} h ${r%60} min`:`${Math.floor(a/24)} d ${a%24} h`}(e.startedAt,e.resolvedAt)}]:[]),apps:f.map(e=>{let t=y.get(e.id);return{name:e.name,uptime:t&&t.total>0?(t.total-t.bad)/t.total*100:null,errors:w.get(e.id)??0}}),providers:g.filter(e=>"ok"!==e.state).map(e=>({label:e.label,text:e.text}))}}async function H(e,r,a){await (0,n.f)().update(i.channels).set(r.ok?{lastSentAt:a,lastError:null}:{lastError:r.error}).where((0,t.u)(i.channels.kind,e))}async function O(e){let[t,r]=await Promise.all([U(e),(0,y.H)("email")]);return(0,k.J)({...t,siteUrl:(0,h.f)().SITE_URL},r)}async function K(e,r={}){let a=await (0,n.f)().select().from(i.settings).where((0,t.y)(i.settings.key,[S,I])),s=a.find(e=>e.key===S)?.value,o="string"==typeof s?s:null;if(!(0,k.A)(e,o))return;let d=(0,$.f)(),c=await x("email_digest");if(!d.resendKey||!d.digestFrom||!c?.row.enabled||!c.config?.to)return;let{resendKey:u,digestFrom:p}=d,h=c.config.to,f=(0,A.x)(e),g=await (0,k.K)(e,{lastSentDay:o,state:a.find(e=>e.key===I)?.value??null,build:r.build??(()=>O(e)),send:r.send??(e=>(0,w.f)(u,{from:p,to:h,...e,idempotencyKey:`digest-${f}`}))});g.acted&&(g.result&&await H("email_digest",g.result,e),g.state?await (0,n.f)().insert(i.settings).values({key:I,value:g.state}).onConflictDoUpdate({target:i.settings.key,set:{value:g.state,updatedAt:e}}):await (0,n.f)().delete(i.settings).where((0,t.u)(i.settings.key,I)),g.sentDay&&await (0,n.f)().insert(i.settings).values({key:S,value:g.sentDay}).onConflictDoUpdate({target:i.settings.key,set:{value:g.sentDay,updatedAt:e}}),g.event&&await (0,l.f)([{type:"system",kind:"warn",message:g.event.message,detail:g.event.detail,resourceId:null,reason:"DigestFailed",at:e}]))}e.s(["q",0,P,"G",0,j,"P",0,H,"J",0,K,"Q",0,E,"M",0,M],483100)},472832,628448,e=>{var t=e.i(875225),r=e.i(665044),a=e.i(924924),n=e.i(618916),i=e.i(921991),s=e.i(407602),o=e.i(547499),l=e.i(479301),d=e.i(189104);function c(e,t){return"member"===e?`Too many actions. Try again in ${(0,d.H)(t)}.`:"That was just done. Wait a minute before trying again."}function u(e){let t=e.replace(/\s+/g," ").trim();return t.length>200?`${t.slice(0,199)}…`:t}e.s(["G",0,"This changed since you opened it. Reload and try again.","z",0,c,"b",0,function(e,t){return"supabase"===e?"This token is read-only; replace it with one that has Project admin write.":"cloudflare"===e?'This Cloudflare token can\'t edit DNS; add "Zone → DNS → Edit" to it, or replace it with a token that has it.':"vercel"===e?`This token can't change projects in team ${t.team||"this team"}; replace it with one whose scope includes that team.`:`This API key can't manage project ${t.project||"this project"}; replace it with a personal or organization key, or a key for this project.`},"S",0,u],628448);var p=e.i(593111);let h="access.";async function f(e,r){if(!(0,l.f)(e))return null;let[s]=await (0,a.f)().select({r:n.resources,a:n.accounts}).from(n.resources).innerJoin(n.accounts,(0,t.u)(n.accounts.id,n.resources.accountId)).where((0,t.b)((0,t.u)(n.resources.id,e),(0,t.u)(n.resources.kind,r),(0,t.M)(n.resources.goneAt))).limit(1);if(!s)return null;let d=(0,i.V)({ciphertext:s.a.credentialCiphertext,iv:s.a.credentialIv},(0,o.f)().OPS_ENCRYPTION_KEY);return d?{resource:s.r,account:{id:s.a.id,label:s.a.label,provider:s.a.provider,scopeNote:s.a.scopeNote},token:d}:null}async function g(e,t,r){let a=await (0,p.f)(d.t.providerAction,e);if(!a.allowed)return c("member",a.retryAfter);let n=await (0,p.f)(d.t.actionTarget,`${t}:${r}`);return n.allowed?null:c("target",n.retryAfter)}async function m(e,t,r){let i={write:t,at:new Date().toISOString(),...r?{scope:r}:{}};await (0,a.f)().insert(n.settings).values({key:`${h}${e}`,value:i}).onConflictDoUpdate({target:n.settings.key,set:{value:i,updatedAt:new Date}})}async function k(e){let r=new Map,i=e.filter(l.f);if(0===i.length)return r;for(let e of(await (0,a.f)().select().from(n.settings).where((0,t.y)(n.settings.key,i.map(e=>`${h}${e}`))))){let t=e.value;t&&("ok"===t.write||"denied"===t.write)&&"string"==typeof t.at&&r.set(e.key.slice(h.length),{write:t.write,at:t.at,..."string"==typeof t.scope?{scope:t.scope}:{}})}return r}async function $(e,t,a,n={}){if(!("audit"in e))return{ok:!1,error:e.message};let i="failed"in e?e.failed:null,o="failed"in e?"":e.message,l=i?i.error:"failed"in e?void 0:e.audit.detail;try{await (0,s.f)({kind:i?"err":"ok",message:`${n.auditPrefix??""}${e.audit.message}`,resourceId:e.audit.resourceId,actorUserId:t.userId,...l?{detail:u(l)}:{}})}catch{console.warn("audit event failed")}if(!i||"scope"===i.kind)try{await m(a,i?"denied":"ok")}catch{console.warn("access write failed")}return!1!==n.refresh&&(0,r.refresh)(),i?{ok:!1,error:i.error}:{ok:!0,message:o}}e.s(["W",0,$,"p",0,f,"y",0,m,"q",0,g,"f",0,k],472832)},224382,201162,973990,600273,e=>{var t=e.i(425498),r=e.i(77193);let a=/^https:\/\/(?:(?:canary|ptb)\.)?discord(?:app)?\.com\/api\/webhooks\/\d{5,25}\/[\w-]{20,}$/;async function n(e,i,s={}){let o;if((0,r.W)())return{ok:!1,kind:"config",error:t.Y};if(a.test(e.trim())?null:"Paste the whole webhook URL from Discord.")return{ok:!1,kind:"config",error:"The saved Discord webhook URL isn't valid."};try{o=await (s.fetch??fetch)(e,{method:"POST",headers:{"Content-Type":"application/json"},signal:AbortSignal.timeout(s.timeoutMs??5e3),cache:"no-store",body:JSON.stringify({content:i.slice(0,2e3),username:"Watchbell",allowed_mentions:{parse:[]}})})}catch{return{ok:!1,kind:"transient",error:"Discord didn't answer."}}if(204===o.status||o.ok)return{ok:!0};if(429===o.status){let e=await o.json().catch(()=>null),t=Math.ceil(e?.retry_after??5);return{ok:!1,kind:"transient",retryAfterS:t,error:`Discord asked us to wait ${t} s.`}}return 404===o.status||401===o.status?{ok:!1,kind:"config",error:"Discord says this webhook no longer exists."}:{ok:!1,kind:o.status>=500?"transient":"config",error:`Discord returned an error (${o.status}).`}}e.s(["f",0,n],224382);var i=e.i(666680),s=e.i(300794),o=e.i(266479);let l={open:"firing",repeat:"repeat",resolve:"resolved"};async function d(e){return(await (0,s.lookup)(e,{all:!0})).map(e=>e.address)}async function c(e,a,n={}){let s,l;if((0,r.W)())return{ok:!1,kind:"config",error:t.Y};if(function(e){let t;try{t=new URL(e.trim())}catch{return"Paste the whole address, starting with https://."}let r=(0,o._)(t);return"scheme"===r?"Use an https:// address without a user name or password in it.":"blocked"===r?"Use an address on the public internet, on port 443. Watchbell doesn't post into private networks.":null}(e.url))return{ok:!1,kind:"config",error:"The saved webhook address isn't allowed any more."};let u=new URL(e.url.trim());try{let e=await (n.lookup??d)(u.hostname);if(!e.length||e.some(o.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 p=JSON.stringify(a),h=String(Math.floor(Date.parse(a.sentAt)/1e3)),f={"Content-Type":"application/json","User-Agent":"Watchbell-Webhook/1.0","X-Watchbell-Timestamp":h};e.secret&&(f["X-Watchbell-Signature"]=(l=e.secret,`sha256=${(0,i.createHmac)("sha256",l).update(`${h}.${p}`).digest("hex")}`));try{s=await (n.fetch??fetch)(u.toString(),{method:"POST",headers:f,body:p,redirect:"manual",cache:"no-store",signal:AbortSignal.timeout(n.timeoutMs??5e3)})}catch{return{ok:!1,kind:"transient",error:"The webhook didn't answer."}}if(await s.body?.cancel().catch(()=>void 0),s.ok)return{ok:!0};if(s.status>=300&&s.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===s.status){let e=Math.min(600,Math.max(1,Number(s.headers.get("retry-after"))||30));return{ok:!1,kind:"transient",retryAfterS:e,error:`The webhook asked to wait ${e} s.`}}return{ok:!1,kind:s.status>=500?"transient":"config",error:`The webhook returned an error (${s.status}).`}}e.s(["E",0,c,"J",0,function(e,t,r,a){return{source:"watchbell",event:t.length?"alerts":"test",sentAt:r.toISOString(),text:e.slice(0,4e3),link:a,alerts:t.slice(0,20).map(e=>({status:l[e.kind],rule:e.ruleKey,severity:e.severity,title:e.title,message:e.message,startedAt:e.startedAt.toISOString(),causedBy:e.causedBy,provider:e.provider}))}}],201162);var u=e.i(761095),p=e.i(685560),h=e.i(669456);function f(e){let t=new Set;return e.split(/[\s,;]+/).filter(e=>e&&!t.has(e.toLowerCase())&&t.add(e.toLowerCase()))}let g=[465,587,2525],m=h.z.email();class k{socket;buf;lines;ready;waiters;onData;constructor(e){this.socket=e,this.buf="",this.lines=[],this.ready=[],this.waiters=[],this.onData=e=>this.read(e),e.on("data",this.onData)}attach(e){this.socket.off("data",this.onData),this.socket=e,e.on("data",this.onData)}read(e){let t;for(this.buf+=e.toString("utf8");(t=this.buf.indexOf("\n"))>=0;){let e=this.buf.slice(0,t).replace(/\r$/,"");if(this.buf=this.buf.slice(t+1),this.lines.push(e),/^\d{3}( |$)/.test(e)){let t={code:Number(e.slice(0,3)),text:this.lines.join("\n")};this.lines=[];let r=this.waiters.shift();r?r(t):this.ready.push(t)}}}next(){let e=this.ready.shift();return e?Promise.resolve(e):new Promise(e=>this.waiters.push(e))}send(e){this.socket.write(`${e}\r
19
+ `)}}class $ extends Error{kind;constructor(e,t){super(e),this.kind=t}}async function y(e,a,n,l={}){let d;if((0,r.W)())return{ok:!1,kind:"config",error:t.Y};if(Object.keys(function(e){let t={},r=e.host.trim().toLowerCase();/^[a-z0-9.-]{3,253}$/.test(r)&&r.includes(".")?(0,o.N)(r)&&(t.host="Use a mail server on the public internet. Watchbell doesn't connect into private networks."):t.host="Enter the server name, for example smtp.office365.com.",g.includes(e.port)||(t.port="Use port 587 (STARTTLS), 465 (TLS) or 2525."),(!e.user.trim()||e.user.length>200)&&(t.user="Enter the user name the server expects (often the whole address)."),(!e.pass||e.pass.length>500)&&(t.pass="Enter the password or app password."),m.safeParse(e.from.trim()).success||(t.from="Enter the address the mail comes from.");let a=f(e.to);if(a.length)if(a.length>10)t.to="Up to 10 addresses.";else{let e=a.find(e=>!m.safeParse(e).success);e&&(t.to=`${e} isn't a valid address.`)}else t.to="Enter the address that gets the alerts.";return t}(e)).length)return{ok:!1,kind:"config",error:"The saved mail server settings aren't valid any more."};let c=e.host.trim().toLowerCase();try{let e=await (l.lookup??(async e=>(await (0,s.lookup)(e,{all:!0})).map(e=>e.address)))(c);if(!e.length||e.some(o.W))return{ok:!1,kind:"config",error:"The mail server resolves to a private address; Watchbell won't connect there."};d=e[0]}catch{return{ok:!1,kind:"transient",error:"The mail server's name didn't resolve."}}let h=465===e.port,w=null,b=new Promise((e,t)=>setTimeout(()=>t(new $("The mail server took too long to answer.","transient")),l.timeoutMs??15e3).unref?.()),v=async()=>{var t,r,s,o;let g,m;try{w=await (l.connect??((e,t,r,a)=>new Promise((n,i)=>{let s=a?p.default.connect({host:e,port:t,servername:r}):u.default.connect({host:e,port:t});s.once(a?"secureConnect":"connect",()=>n(s)),s.once("error",i)})))(d,e.port,c,h)}catch{throw new $(`Couldn't connect to ${c}:${e.port}.`,"transient")}let y=new k(w),b=async(e,t,r="config")=>{let a=await y.next();if(!e.includes(a.code))throw new $(`The mail server refused ${t} (${a.code}).`,a.code>=400&&a.code<500?"transient":r);return a};await b([220],"the connection","transient"),y.send("EHLO watchbell");let v=await b([250],"EHLO");if(!h){if(!/^250[- ]STARTTLS\b/im.test(v.text))throw new $("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");y.send("STARTTLS"),await b([220],"STARTTLS"),w=await (l.upgrade??((e,t)=>new Promise((r,a)=>{let n=p.default.connect({socket:e,servername:t});n.once("secureConnect",()=>r(n)),n.once("error",a)})))(w,c),y.attach(w),y.send("EHLO watchbell"),v=await b([250],"EHLO after STARTTLS")}y.send(`AUTH PLAIN ${Buffer.from(`\0${e.user}\0${e.pass}`,"utf8").toString("base64")}`),await b([235],"the user name or password"),y.send(`MAIL FROM:<${e.from.trim()}>`),await b([250],"the sender address");let A=f(e.to);for(let[e,t]of A.entries())y.send(`RCPT TO:<${t}>`),await b([250,251],A.length>1?`recipient ${e+1} of ${A.length}`:"the recipient address");y.send("DATA"),await b([354],"the message"),w.write(`${(t=e,r=a,s=n,o=new Date,m=Buffer.from(s.replace(/\r?\n/g,"\r\n"),"utf8").toString("base64").replace(/.{1,76}/g,"$&\r\n"),[`From: Watchbell <${t.from.trim()}>`,`To: ${f(t.to).map(e=>`<${e}>`).join(", ")}`,`Subject: ${(g=r.replace(/[\r\n]+/g," ").slice(0,200),/^[\x20-\x7e]*$/.test(g)?g:`=?UTF-8?B?${Buffer.from(g,"utf8").toString("base64")}?=`)}`,`Date: ${o.toUTCString()}`,`Message-ID: <${(0,i.randomUUID)()}@watchbell>`,"MIME-Version: 1.0","Content-Type: text/plain; charset=utf-8","Content-Transfer-Encoding: base64","",m].join("\r\n"))}\r
20
+ .\r
21
+ `),await b([250],"the message"),y.send("QUIT"),await Promise.race([y.next(),new Promise(e=>setTimeout(e,2e3))])};try{return await Promise.race([v(),b]),{ok:!0}}catch(e){return e instanceof $?{ok:!1,kind:e.kind,error:e.message}:{ok:!1,kind:"transient",error:"The mail server closed the connection."}}finally{w?.destroy()}}e.s(["f",0,y],973990);var w=e.i(220642),b=e.i(765359),v=e.i(218331),A=e.i(195191),T=e.i(298397);function S(e,t){return(0,v.M)(e,t)&&(0,v.z)(e).hour>=7}let I={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:e=>e,noChecks:"no checks",errors:e=>`${e} stored error${1===e?"":"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:e=>e.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:e=>`${e} error tersimpan`}},x={May:"Mei",Aug:"Agu",Oct:"Okt",Dec:"Des"},D=[5,15,30,60];async function E(e,t){let r={acted:!1,state:t.state,sentDay:null,event:null,result:null};if(!S(e,t.lastSentDay))return r;let a=(0,v.x)(e),n=t.state&&t.state.day===a?t.state:null;if(n?.stopped)return{...r,state:n};if(n&&n.attempts>0){let t=(D[n.attempts-1]??D[D.length-1])*6e4;if(n.lastAttemptAt&&e.getTime()-new Date(n.lastAttemptAt).getTime()<t)return{...r,state:n}}n??={day:a,...await t.build(),attempts:0,lastAttemptAt:null,stopped:!1,lastError:null};let i=await t.send({subject:n.subject,html:n.html,text:n.text});if(i.ok)return{acted:!0,state:null,sentDay:a,event:null,result:i};let s=n.attempts+1,o="config"===i.kind||s>=5,l="config"===i.kind?`${i.error}. Fix it and the next digest goes out tomorrow.`:`${i.error} Gave up after ${s} attempts today.`;return{acted:!0,sentDay:null,result:i,state:{...n,attempts:s,lastAttemptAt:e.toISOString(),stopped:o,lastError:i.error},event:o?{message:"Daily digest not sent",detail:l}:null}}e.s(["J",0,function(e,t="en"){let r=I[t],a=`${e.siteUrl.replace(/\/+$/,"")}/alerts`,n=((e,t)=>{let{day:r,month:a}=(0,v.e)(e);return`${r} ${"id"===t?x[a]??a:a}`})(e.now,t),i=`${e.firing.length} ${r.firing}, ${e.opened} ${r.opened}, ${e.resolved.length} ${r.resolved}`,s=`Watchbell \xb7 ${n} \xb7 ${i}`,o=[...e.apps].sort((e,t)=>(e.uptime??101)-(t.uptime??101)||t.errors-e.errors||e.name.localeCompare(t.name)),l=e.firing.map(e=>`${w.Z[t][e.severity]} \xb7 ${e.ruleKey} \xb7 ${e.title}: ${"id"===t?(0,b.f)(e.ruleKey,e.message):e.message}`),d=e.resolved.map(e=>`${e.ruleKey} \xb7 ${e.title} (${r.after} ${r.took(e.took)})`),c=o.map(e=>`${e.name}: ${null===e.uptime?r.noChecks:`${(0,A.C)(e.uptime)} ${r.up}`}, ${r.errors(e.errors)}`),u=e.providers.map(e=>`${e.label}: ${e.text}`),p=[`Watchbell \xb7 ${n}`,`${i} ${r.last24}`,"",r.stillHead,...l.length?l.map(e=>`- ${e}`):[r.noFiring],"",r.resolvedHead,...d.length?d.map(e=>`- ${e}`):[r.noResolved],...c.length?["",r.appsHead,...c.map(e=>`- ${e}`)]:[],...u.length?["",r.providersHead,...u.map(e=>`- ${e}`)]:[],"",`${r.open}: ${a}`].join("\n"),h=e=>`<h3 style="font:600 14px system-ui,sans-serif;margin:18px 0 6px">${(0,w.H)(e)}</h3>`,f=(e,t)=>e.length?`<ul style="margin:0;padding-left:18px">${e.map(e=>`<li style="margin:2px 0">${(0,w.H)(e)}</li>`).join("")}</ul>`:`<p style="margin:0;color:#596170">${(0,w.H)(t)}</p>`,g=['<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)(n)}</h2>`,`<p style="margin:0;color:#596170">${(0,w.H)(`${i} ${r.last24}`)}</p>`,h(r.stillHead),f(l,r.noFiring),h(r.resolvedHead),f(d,r.noResolved),...c.length?[h(r.appsHead),f(c,"")]:[],...u.length?[h(r.providersHead),f(u,"")]:[],`<p style="margin:18px 0 0"><a href="${(0,w.H)(a).replace(/"/g,"&quot;")}" style="color:#2f4372">${(0,w.H)(r.open)}</a></p>`,"</div>"].join("");return{subject:(0,T.G)(s),html:(0,T.G)(g),text:(0,T.G)(p)}},"A",0,S,"K",0,E],600273)},968068,e=>{e.s(["f",0,function(e=process.env){let t=e.TELEGRAM_BOT_TOKEN?.trim()??"",r=e.RESEND_API_KEY?.trim()??"",a=e.DIGEST_FROM?.trim()??"";return{telegramToken:/^\d+:[\w-]{20,}$/.test(t)?t:null,resendKey:r.startsWith("re_")?r:null,digestFrom:/<?[^\s<>@]+@[^\s<>@]+\.[^\s<>@]+>?$/.test(a)?a:null}}])},695811,e=>{var t=e.i(960049);function r(e){let t=e&&"object"==typeof e?e:null,r=t?t.lang:e,a=e=>{var a;return"string"==typeof(a=t&&e in t?t[e]:r)&&"id"===a.trim().toLowerCase()?"id":"en"};return{telegram:a("telegram"),discord:a("discord"),email:a("email")}}async function a(){try{return r(await (0,t.l)())}catch{return r(null)}}async function n(e="telegram"){return(await a())[e]}e.s(["H",0,n,"B",0,a,"t",0,function(e,t,r){return e[t][r]}])},633974,e=>{var t=e.i(425498),r=e.i(77193);async function a(e,n,i={}){let s;if((0,r.W)())return{ok:!1,kind:"config",error:t.Y};try{s=await (i.fetch??fetch)("https://api.resend.com/emails",{method:"POST",signal:AbortSignal.timeout(5e3),cache:"no-store",headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json","User-Agent":"OpsConsole/1.0","Idempotency-Key":n.idempotencyKey},body:JSON.stringify({from:n.from,to:[n.to],subject:n.subject,html:n.html,text:n.text})})}catch{return{ok:!1,kind:"transient",error:"Resend didn't answer."}}if(s.ok)return{ok:!0};let o=await s.json().catch(()=>null);return 429===s.status||s.status>=500?{ok:!1,kind:"transient",error:`Resend returned an error (${s.status}).`}:{ok:!1,kind:"config",error:`Resend: ${String(o?.message??s.status).slice(0,200)}`}}e.s(["f",0,a])},76012,e=>{var t=e.i(425498),r=e.i(77193);async function a(e,n,i,s,o=5e3){let l;if((0,r.W)())return{ok:!1,code:null,description:t.Y,retryAfter:null};try{l=await s(`https://api.telegram.org/bot${e}/${n}`,{...i,signal:AbortSignal.timeout(o),cache:"no-store"})}catch{return{ok:!1,code:null,description:"Telegram didn't answer.",retryAfter:null}}let d=await l.json().catch(()=>null);return d?.ok?{ok:!0,result:d.result}:{ok:!1,code:d?.error_code??l.status,description:String(d?.description??`HTTP ${l.status}`).slice(0,200),retryAfter:d?.parameters?.retry_after??null}}async function n(e,t,r,i={}){let s="number"==typeof i.replyTo&&Number.isSafeInteger(i.replyTo)&&i.replyTo>0?{reply_parameters:{message_id:i.replyTo,allow_sending_without_reply:!0}}:{},o=await a(e,"sendMessage",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({chat_id:t,text:r,parse_mode:"HTML",link_preview_options:{is_disabled:!0},...i.replyMarkup?{reply_markup:i.replyMarkup}:{},...s})},i.fetch??fetch);if(o.ok){let e=o.result?.message_id;return"number"==typeof e&&Number.isSafeInteger(e)&&e>0?{ok:!0,messageId:e}:{ok:!0}}return 429===o.code?{ok:!1,kind:"transient",retryAfterS:o.retryAfter??30,error:`Telegram asked us to wait ${o.retryAfter??30} s.`}:null===o.code||o.code>=500?{ok:!1,kind:"transient",error:null===o.code?o.description:`Telegram returned an error (${o.code}).`}:{ok:!1,kind:"config",error:`Telegram: ${o.description}`}}e.s(["I",0,n,"z",0,a])}]})();
15
22
 
16
23
  //# sourceMappingURL=src_lib_1qo6t00wwitz6._.js.map
@@ -1,9 +1,9 @@
1
- (()=>{"use strict";module.exports=[537622,e=>{var t=e.i(665044),a=e.i(77193);e.s(["f",0,function(e){if((0,a.r)())for(let a of new Set(e))try{let e;e=a,(0,t.revalidateTag)(e,{expire:0})}catch(e){console.warn(`cache: couldn't expire ${a}: ${e instanceof Error?e.message.slice(0,120):"unknown"}`)}}])},140318,977832,e=>{var t=e.i(875225),a=e.i(518899),r=e.i(924924),n=e.i(618916),s=e.i(390775),i=e.i(921991),o=e.i(656083),l=e.i(629955),u=e.i(497867);function d(e){if(!e)return null;if("unknown"!==e.state)return e.state;let t=e.data?.lastGoodState;return"string"==typeof t&&u.f.includes(t)?t:null}let c={turso_database:"Turso database",upstash_redis:"Upstash Redis",d1_database:"D1 database"};function f(e){let{prev:t,next:a}=e;if(null===t||"unknown"===t||"unknown"===a||t===a)return null;let r={resourceId:e.resourceId,type:"database",at:e.at};if("supabase_project"===e.kind)return"paused"===a?{...r,reason:"DatabasePaused",kind:"paused",message:"Supabase project paused",detail:"Status changed to INACTIVE"}:"ok"===a?{...r,reason:"DatabaseRestored",kind:"ok",message:"Supabase project active again",detail:"Status changed to ACTIVE_HEALTHY"}:"warn"===a?{...r,reason:"DatabaseUnhealthy",kind:"warn",message:"Supabase project unhealthy",detail:e.label}:"err"===a?{...r,reason:"DatabaseFailed",kind:"err",message:`Supabase project: ${e.label.toLowerCase()}`,detail:e.label}:null;if("neon_project"===e.kind)return"err"===a?{...r,reason:"NeonSuspended",kind:"err",message:"Neon compute suspended",detail:e.label}:"err"===t&&("ok"===a||"idle"===a)?{...r,reason:"NeonAvailable",kind:"ok",message:"Neon compute available again",detail:e.label}:null;let n=c[e.kind];if(n)return"err"===a?{...r,reason:"DatabaseFailed",kind:"err",message:`${n}: ${e.label.toLowerCase()}`,detail:e.label}:"off"===a?{...r,reason:"DatabaseMissing",kind:"off",message:`${n} missing`,detail:e.label}:"ok"===a&&("err"===t||"off"===t)?{...r,reason:"DatabaseRestored",kind:"ok",message:`${n} available again`,detail:e.label}:null;if("err"===a){let t="Daily quota used up"===e.label;return{...r,reason:t?"FirestoreQuotaUsedUp":"FirestoreUnreachable",kind:"err",message:t?"Firestore daily quota used up":"Firestore not reachable",detail:e.label}}return"off"===a?{...r,reason:"FirestoreMissing",kind:"off",message:"Firestore database missing",detail:e.label}:"ok"===a&&("err"===t||"off"===t)?{...r,reason:"FirestoreReachable",kind:"ok",message:"Firestore reachable again",detail:e.label}:null}function p(e,t){return"auth"===e.kind?"auth":"scope"===e.kind?t?"auth":"column":"missing"===e.kind?t?"unknown":"column":"unknown"}e.s(["t",0,p,"K",0,f,"F",0,d],977832);var w=e.i(960063),m=e.i(800366),h=e.i(326003),g=e.i(843448),y=e.i(547499),b=e.i(795194),k=e.i(780148),I=e.i(443917),v=e.i(342833),A=e.i(442473);let S="skipped the rest, time budget used";function $(e){let t=e.deadline-Date.now()-500;if(t<250)throw Error(S);return{timeoutMs:Math.min(5e3,t)}}async function D(e,t,a){let r=!1;return{out:await (0,A.P)(t,3,async t=>{let n;try{n=$(e)}catch{r=!0;return}return a(t,n)}),skipped:r}}function x(e){if(e)throw Error(S)}async function E(e){let a=await (0,r.f)().select().from(n.accounts).where((0,t.b)((0,t.u)(n.accounts.provider,e),(0,t.u)(n.accounts.status,"ok"))),s=(0,y.f)().OPS_ENCRYPTION_KEY;return a.map(e=>({acc:e,credential:(0,i.V)({ciphertext:e.credentialCiphertext,iv:e.credentialIv},s)}))}function j(e,a){return(0,r.f)().select({r:n.resources,s:n.snapshots}).from(n.resources).leftJoin(n.snapshots,(0,t.u)(n.snapshots.resourceId,n.resources.id)).where((0,t.b)((0,t.u)(n.resources.accountId,e),(0,t.u)(n.resources.kind,a),(0,t.u)(n.resources.monitored,!0),(0,t.M)(n.resources.goneAt))).limit(100)}let M=e=>a.B`${n.snapshots.data} || ${JSON.stringify(e)}::jsonb`;async function O(e,t,a){let s=d(e.s?{state:e.s.state,data:e.s.data}:null),i="unknown"===t.state,o=i?s?{lastGoodState:s}:{}:{...t.patch,lastGoodState:t.state},l=!i&&s!==t.state;return await (0,r.f)().insert(n.snapshots).values({resourceId:e.r.id,state:t.state,data:o,collectedAt:a,stateSince:a}).onConflictDoUpdate({target:n.snapshots.resourceId,set:{state:t.state,data:M(o),...i?{}:{collectedAt:a},...l?{stateSince:a}:{}}}),i?null:f({kind:e.r.kind,resourceId:e.r.id,prev:s,next:t.state,label:t.label,at:a})}async function R(e,a){await (0,r.f)().update(n.snapshots).set({data:M(a)}).where((0,t.u)(n.snapshots.resourceId,e.r.id))}let N=e=>(0,o.f)(e);async function C(e,a,i,o,l){if("auth"===p(o,!0)){let e=(0,s.E)({ok:!1,kind:"auth",error:o.error});e&&await (0,r.f)().update(n.accounts).set({...e,updatedAt:l.now}).where((0,t.u)(n.accounts.id,a.id))}for(let e of i)await O(e,{state:"unknown",label:"Unknown",patch:{}},l.now);l.errors.push(`${e}/${a.label}: ${o.error}`)}let P=e=>e.toISOString();async function T(e){return e.length?new Set((await (0,r.f)().select({app:n.links.fromResourceId,state:n.snapshots.state,data:n.snapshots.data}).from(n.links).innerJoin(n.resources,(0,t.u)(n.resources.id,n.links.toResourceId)).innerJoin(n.snapshots,(0,t.u)(n.snapshots.resourceId,n.resources.id)).where((0,t.b)((0,t.u)(n.links.kind,"uses_db"),(0,t.y)(n.links.fromResourceId,e),(0,t.u)(n.resources.monitored,!0),(0,t.M)(n.resources.goneAt)))).filter(e=>"paused"===e.state||"unknown"===e.state&&"paused"===e.data.lastGoodState).map(e=>e.app)):new Set}async function z(e){if(!e.protectOnly||await (0,l.g)())for(let{acc:t,credential:a}of(await E("supabase"))){if($(e),!a){e.errors.push(`supabase/${t.label}: credential can't be read`);continue}let r=await j(t.id,"supabase_project");if(!r.length)continue;let n=await (0,v.W)(a,$(e));if(!n.ok){e.protectOnly?e.errors.push(`supabase/${t.label}: ${n.error}`):await C("supabase",t,r,n,e);continue}let s=new Map(n.data.map(e=>[e.ref,e])),i=[];for(let t of e.protectOnly?[]:r){let a=s.get(t.r.externalId);if(!a){i.push(await O(t,{state:"off",label:"Not found",patch:{status:"REMOVED"}},e.now));continue}let r=(0,g.P)(a.status),n=d(t.s?{state:t.s.state,data:t.s.data}:null),o={status:a.status,region:a.region,pgVersion:a.pgVersion,orgSlug:a.orgSlug};"paused"===r.state&&"paused"!==n&&(o.pausedBeforeSeen=null===n),i.push(await O(t,{state:r.state,label:r.label,patch:o},e.now))}await N(i);let o=new Map(r.map(e=>[e.r.externalId,e.r.id])),u=n.data.map(e=>({resourceId:o.get(e.ref)??null,accountId:t.id,status:e.status,orgSlug:e.orgSlug}));await (0,l.z)(e.now,u,e.deadline).catch(()=>{console.warn("auto-restore failed"),e.errors.push("auto-restore failed")})}}async function B(e){for(let{acc:t,credential:a}of(await E("supabase"))){if($(e),!a)continue;let r=await j(t.id,"supabase_project");if(!r.length)continue;let n=new Map(r.map(e=>[e.r.id,(0,h.k)(h.B,e.s?.data)])),s=new Map;for(let r of new Set([...n.values()].map(e=>e.orgSlug).filter(e=>!!e))){let n=await (0,v.K)(a,r,$(e));s.set(r,n.ok&&null!==n.data?"free"===n.data:null),n.ok||"scope"===n.kind||e.errors.push(`supabase/${t.label} plan: ${n.error}`)}let{skipped:i}=await D(e,r,async(t,r)=>{let i=n.get(t.r.id),o={freeOrg:i.orgSlug?s.get(i.orgSlug)??null:null};if((i.status??"").startsWith("ACTIVE_")){let[n,s]=await Promise.all([(0,v.F)(a,t.r.externalId,r),(0,v.Z)(a,t.r.externalId,r)]);n.ok?Object.assign(o,{health:n.data.map(({name:e,status:t})=>({name:e,status:t})),healthAt:P(e.now),healthError:null}):"column"===p(n,!1)?o.healthError=n.error:e.errors.push(`supabase/${t.r.name} health: ${n.error}`),s.ok?Object.assign(o,{lastTrafficAt:(0,g.H)(s.data)?.toISOString()??null,trafficAt:P(e.now),trafficError:null}):"column"===p(s,!1)?o.trafficError=s.error:e.errors.push(`supabase/${t.r.name} traffic: ${s.error}`)}await R(t,o)});x(i)}}async function _(e){for(let{acc:t,credential:a}of(await E("neon"))){if($(e),!a){e.errors.push(`neon/${t.label}: credential can't be read`);continue}let r=await j(t.id,"neon_project");if(!r.length)continue;let{out:n,skipped:s}=await D(e,r,(e,t)=>Promise.all([(0,I.Z)(a,e.r.externalId,t),(0,I.k)(a,e.r.externalId,t),(0,I.e)(a,e.r.externalId,t)])),i=n.flat().find(e=>void 0!==e&&!e.ok&&"auth"===e.kind);if(i){await C("neon",t,r,i,e);continue}let o=[];for(let[t,a]of r.entries()){let r=n[t];if(!r)continue;let[s,i,l]=r;if(!s.ok||!i.ok||!l.ok){let t=[s,i,l].find(e=>!e.ok);"missing"===t.kind?o.push(await O(a,{state:"off",label:"Not found",patch:{}},e.now)):(await O(a,{state:"unknown",label:"Unknown",patch:{}},e.now),e.errors.push(`neon/${a.r.name}: ${t.error}`));continue}let u=(0,m.p)({endpoints:i.data,computeSeconds:s.data.computeSeconds});o.push(await O(a,{state:u.state,label:u.label,patch:{region:s.data.region,pgVersion:s.data.pgVersion,computeSeconds:s.data.computeSeconds,transferBytes:s.data.transferBytes,activeSeconds:s.data.activeSeconds,periodStart:s.data.periodStart,periodEnd:s.data.periodEnd,endpoints:i.data,branches:l.data}},e.now))}await N(o),x(s)}}let W=e=>e.ok?{latencyMs:e.data.latencyMs,pingError:null,pingReason:null,pingKind:null}:{pingError:e.error,pingReason:e.reason??null,pingKind:e.kind};async function U(e){for(let{acc:t,credential:a}of(await E("firebase"))){$(e);let r=a?(0,k.p)(a):null;if(!r){e.errors.push(`firebase/${t.label}: credential can't be read`);continue}let n=await j(t.id,"firestore");if(!n.length)continue;let s=await (0,k.X)(r,$(e));if(!s.ok){await C("firebase",t,n,s,e);continue}let{out:i,skipped:o}=await D(e,n,(e,t)=>(0,b.G)(s.data,e.r.externalId,t)),l=[];for(let[t,a]of n.entries()){let r=i[t];if(!r)continue;let n=(0,w.g)(r);"unknown"!==n.state||r.ok||e.errors.push(`firebase/${a.r.name}: ${r.error}`),l.push(await O(a,{...n,patch:W(r)},e.now))}await N(l),x(o)}}async function F(e){for(let{acc:t,credential:a}of(await E("firebase"))){$(e);let r=a?(0,k.p)(a):null;if(!r)continue;let n=(await j(t.id,"firestore")).filter(e=>e.s?.state!=="off");if(!n.length)continue;let s=await (0,k.X)(r,$(e));if(!s.ok){e.errors.push(`firebase/${t.label}: ${s.error}`);continue}let i=(0,w.a)(e.now),{skipped:o}=await D(e,n,async(t,a)=>{let r=await (0,b.W)(s.data,t.r.externalId,i,e.now,a);r.ok?await R(t,{...r.data,opsAt:P(e.now),opsError:null}):"column"===p(r,!1)?await R(t,{reads:null,writes:null,deletes:null,opsAt:P(e.now),opsError:/requires billing/i.test(r.message??"")?"Not available on Spark: Firestore usage needs billing (Blaze plan)":"SERVICE_DISABLED"===r.reason?"Not readable: the Cloud Monitoring API is off in this project":"Not readable: the service account needs monitoring.viewer"}):e.errors.push(`firebase/${t.r.name} usage: ${r.error}`)});x(o)}}async function V(e){let t=Date.now()+2*Math.max(0,e.deadline-Date.now())/3,a=await J(()=>Y({...e,deadline:t})),r=await J(()=>L(e));if(a)throw a;if(r)throw r}async function J(e){try{return await e(),null}catch(e){return e instanceof Error?e:Error(String(e))}}async function Y(e){for(let{acc:t,credential:a}of(await E("supabase")))if($(e),a)for(let r of(await j(t.id,"supabase_project"))){let t=(0,h.k)(h.B,r.s?.data);if(!(0,g.z)({status:t.status??"",lastTrafficAt:t.lastTrafficAt?new Date(t.lastTrafficAt):null,sizeAt:t.sizeAt?new Date(t.sizeAt):null,now:e.now}))continue;let n=await (0,v.r)(a,r.r.externalId,$(e));n.ok?await R(r,{sizeBytes:n.data,sizeAt:P(e.now),sizeError:null}):"column"===p(n,!1)?await R(r,{sizeError:n.error}):e.errors.push(`supabase/${r.r.name} size: ${n.error}`)}}async function L(e){for(let{acc:t,credential:a}of(await E("firebase"))){$(e);let r=a?(0,k.p)(a):null;if(!r)continue;let n=(await j(t.id,"firestore")).filter(e=>e.s?.state!=="off");if(!n.length)continue;let s=await (0,k.X)(r,$(e));if(!s.ok){e.errors.push(`firebase/${t.label}: ${s.error}`);continue}let{skipped:i}=await D(e,n,async(t,a)=>{let r=await (0,b.q)(s.data,t.r.externalId,a);r.ok?await R(t,{authUsers:r.data,authAt:P(e.now),authError:null}):"column"===p(r,!1)?await R(t,{authError:"Not readable: the service account needs firebaseauth.viewer"}):e.errors.push(`firebase/${t.r.name} users: ${r.error}`)});x(i)}}e.s(["w",0,C,"O",0,E,"q",0,T,"T",0,D,"W",0,x,"M",0,N,"I",0,J,"f",0,V,"g",0,U,"x",0,F,"h",0,_,"N",0,z,"y",0,B,"e",0,j,"s",0,$,"a",0,O],140318)},956846,e=>{var t=e.i(875225),a=e.i(518899),r=e.i(924924),n=e.i(618916),s=e.i(764766),i=e.i(390775),o=e.i(537622),l=e.i(749124),u=e.i(532148),d=e.i(988294),c=e.i(739886),f=e.i(656083),p=e.i(921991),w=e.i(381725),m=e.i(483100),h=e.i(111970),g=e.i(703352),y=e.i(948736),b=e.i(655060),k=e.i(762504),I=e.i(547499),v=e.i(275426),A=e.i(873354),S=e.i(177706),$=e.i(61926),D=e.i(140318),x=e.i(977832),E=e.i(89491),j=e.i(592951),M=e.i(691734),O=e.i(43790),R=e.i(11552);async function N(e){let t=[await (0,D.I)(()=>P(e)),await (0,D.I)(()=>z(e)),await (0,D.I)(()=>B(e))].find(e=>null!==e);if(t)throw t}let C=e=>e.toISOString();async function P(e){for(let{acc:t,credential:a}of(await (0,D.O)("turso"))){if((0,D.s)(e),!a){e.errors.push(`turso/${t.label}: credential can't be read`);continue}let r=await (0,D.e)(t.id,"turso_database");if(!r.length)continue;let n=await (0,M.u)(a,(0,D.s)(e));if(!n.ok){await (0,D.w)("turso",t,r,n,e);continue}let s=new Set(r.map(e=>String(e.r.meta.org??""))),i=[];for(let o of n.data.filter(e=>s.has(e.slug))){let[n,s]=await Promise.all([(0,M.X)(a,o.slug,(0,D.s)(e)),(0,M.d)(a,o.slug,(0,D.s)(e))]),l=r.filter(e=>e.r.meta.org===o.slug);if(!n.ok){for(let t of l)await (0,D.a)(t,{state:"unknown",label:"Unknown",patch:{}},e.now);e.errors.push(`turso/${t.label}: ${n.error}`);continue}let u=new Map(n.data.map(e=>[e.id,e]));for(let t of l)i.push(await T(t,u.get(t.r.externalId),o,s,e))}let o=new Set(n.data.map(e=>e.slug));for(let t of r.filter(e=>!o.has(String(e.r.meta.org??""))))i.push(await (0,D.a)(t,{state:"off",label:"Organization not visible to this token",patch:{}},e.now));await (0,D.M)(i)}}async function T(e,t,a,r,n){if(!t)return(0,D.a)(e,{state:"off",label:"Not found",patch:{}},n.now);let s=(0,E.h)({blockReads:t.blockReads,blockWrites:t.blockWrites,orgBlockedReads:a.blockedReads,orgBlockedWrites:a.blockedWrites}),i={org:a.slug,group:t.group,primaryRegion:t.primaryRegion,plan:a.plan,blockReads:t.blockReads,blockWrites:t.blockWrites};if(r.ok){let e=r.data.byDb.get(t.id);Object.assign(i,{rowsRead:e?.rowsRead??null,rowsWritten:e?.rowsWritten??null,storageBytes:e?.storageBytes??null,orgRowsRead:r.data.org.rowsRead,orgRowsWritten:r.data.org.rowsWritten,orgStorageBytes:r.data.org.storageBytes,orgDatabases:r.data.org.databases,usageAt:C(n.now),usageError:null})}else"column"===(0,x.t)(r,!1)?i.usageError=r.error:n.errors.push(`turso/${e.r.name} usage: ${r.error}`);return(0,D.a)(e,{...s,patch:i},n.now)}async function z(e){for(let{acc:t,credential:a}of(await (0,D.O)("upstash"))){(0,D.s)(e);let r=a?(0,O.L)(a):null;if(!r){e.errors.push(`upstash/${t.label}: credential can't be read`);continue}let n=await (0,D.e)(t.id,"upstash_redis");if(!n.length)continue;let s=await (0,O.M)(r,(0,D.s)(e));if(!s.ok){await (0,D.w)("upstash",t,n,s,e);continue}let i=new Map(s.data.map(e=>[e.id,e])),{out:o,skipped:l}=await (0,D.T)(e,n,(e,t)=>i.has(e.r.externalId)?(0,O.Z)(r,e.r.externalId,t):Promise.resolve(null)),u=[];for(let[t,a]of n.entries()){let r=i.get(a.r.externalId);if(!r){u.push(await (0,D.a)(a,{state:"off",label:"Not found",patch:{}},e.now));continue}let n=(0,E.t)(r.state),s={region:r.region,status:r.state,type:r.type},l=o[t];l?.ok?Object.assign(s,{...l.data,statsAt:C(e.now),statsError:null}):l&&"column"===(0,x.t)(l,!1)?s.statsError=l.error:l&&e.errors.push(`upstash/${a.r.name} stats: ${l.error}`),u.push(await (0,D.a)(a,{...n,patch:s},e.now))}await (0,D.M)(u),(0,D.W)(l)}}async function B(e){let t={};for(let{acc:a,credential:r}of(await (0,D.O)("cloudflare"))){if((0,D.s)(e),!r)continue;let n=await W(a.id,r,e);if(!n.length){t[a.id]={d1:"error",analytics:null,at:C(e.now),note:"No Cloudflare account found for this token"};continue}let s="ok",i=null;for(let t of n){let n=await (0,j.L)(r,t,(0,D.s)(e));if(!n.ok){"error"==(s="scope"===n.kind||"auth"===n.kind?"missing":"error")&&e.errors.push(`d1/${a.label}: ${n.error}`);continue}await U(a.id,t,n.data,e.now);let o=(await (0,D.e)(a.id,"d1_database")).filter(e=>e.r.meta.accountId===t);if(!o.length)continue;let l=await (0,j.t)(r,t,(0,j.Y)(e.now),(0,D.s)(e));i=l.ok?i??"ok":"scope"===l.kind?"missing":i??"error",l.ok||"scope"===l.kind||e.errors.push(`d1/${a.label} analytics: ${l.error}`);let{out:u,skipped:d}=await (0,D.T)(e,o,(e,a)=>(0,j.m)(r,t,e.r.externalId,a)),c=new Map((l.ok?l.data:[]).map(e=>[e.databaseId,e])),f=u.map(e=>e?.ok?e.data.sizeBytes??0:0),p={accountRowsRead:l.ok?l.data.reduce((e,t)=>e+t.rowsRead,0):null,accountRowsWritten:l.ok?l.data.reduce((e,t)=>e+t.rowsWritten,0):null,accountSizeBytes:u.every(e=>e?.ok)?f.reduce((e,t)=>e+t,0):null,accountDatabases:n.data.length},w=[];for(let[t,a]of o.entries()){let r=u[t];void 0!==r&&w.push(await _(a,r,c.get(a.r.externalId)??null,l.ok,l.ok?null:l.error,p,e))}await (0,D.M)(w),(0,D.W)(d)}t[a.id]={d1:s,analytics:i,at:C(e.now),note:null}}await (0,r.f)().insert(n.settings).values({key:R.f,value:t}).onConflictDoUpdate({target:n.settings.key,set:{value:t,updatedAt:e.now}})}async function _(e,t,a,r,n,s,i){let o={accountId:e.r.meta.accountId??null,createdAt:e.r.meta.createdAt??null,accountDatabases:s.accountDatabases};if(t.ok?Object.assign(o,{sizeBytes:t.data.sizeBytes,numTables:t.data.numTables,readReplication:t.data.readReplication,detailsAt:C(i.now),detailsError:null}):"scope"===t.kind?o.detailsError=t.error:i.errors.push(`d1/${e.r.name}: ${t.error}`),r?Object.assign(o,{rowsRead:a?.rowsRead??0,rowsWritten:a?.rowsWritten??0,readQueries:a?.readQueries??0,writeQueries:a?.writeQueries??0,accountRowsRead:s.accountRowsRead,accountRowsWritten:s.accountRowsWritten,usageDay:(0,j.Y)(i.now),usageAt:C(i.now),usageError:null}):o.usageError=n,null!==s.accountSizeBytes&&(o.accountSizeBytes=s.accountSizeBytes),!t.ok&&"transient"===t.kind)return(0,D.a)(e,{state:"unknown",label:"Unknown",patch:{}},i.now);let l=(0,E.c)(r?s:{accountRowsRead:null,accountRowsWritten:null});return(0,D.a)(e,{...l,patch:o},i.now)}async function W(e,a,s){let i=new Set,o=await (0,j.N)(a,(0,D.s)(s));if(o.ok)for(let e of o.data)i.add(e.id);for(let a of(await (0,r.f)().select({meta:n.resources.meta}).from(n.resources).where((0,t.b)((0,t.u)(n.resources.accountId,e),(0,t.u)(n.resources.kind,"zone"),(0,t.M)(n.resources.goneAt))).limit(200)))"string"==typeof a.meta.accountId&&/^[0-9a-f]{32}$/i.test(a.meta.accountId)&&i.add(a.meta.accountId);return[...i].slice(0,5)}async function U(e,a,s,i){let o=(await (0,r.f)().select({id:n.resources.id,externalId:n.resources.externalId,meta:n.resources.meta,goneAt:n.resources.goneAt}).from(n.resources).where((0,t.b)((0,t.u)(n.resources.accountId,e),(0,t.u)(n.resources.kind,"d1_database")))).filter(e=>e.meta.accountId===a),l=new Map(o.map(e=>[e.externalId,e])),u=new Set(s.map(e=>e.uuid));await (0,r.f)().transaction(async r=>{for(let o of s){let s={accountId:a,createdAt:o.createdAt},u=l.get(o.uuid);u?await r.update(n.resources).set({name:o.name,meta:s,lastSeenAt:i,goneAt:null,updatedAt:i}).where((0,t.u)(n.resources.id,u.id)):await r.insert(n.resources).values({accountId:e,kind:"d1_database",externalId:o.uuid,name:o.name,meta:s,monitored:!0,lastSeenAt:i}).onConflictDoNothing({target:[n.resources.accountId,n.resources.kind,n.resources.externalId]})}let d=o.filter(e=>!u.has(e.externalId)&&!e.goneAt).map(e=>e.id);d.length&&await r.update(n.resources).set({goneAt:i,updatedAt:i}).where((0,t.y)(n.resources.id,d))})}var F=e.i(442473),V=e.i(666680),J=e.i(473283),Y=e.i(422067);async function L(e=new Date){let t=(0,V.randomUUID)(),n=new Date(e.getTime()+Y.d).toISOString(),s=await (0,r.f)().execute(a.B`
1
+ (()=>{"use strict";module.exports=[537622,e=>{var t=e.i(665044),a=e.i(77193);e.s(["f",0,function(e){if((0,a.r)())for(let a of new Set(e))try{let e;e=a,(0,t.revalidateTag)(e,{expire:0})}catch(e){console.warn(`cache: couldn't expire ${a}: ${e instanceof Error?e.message.slice(0,120):"unknown"}`)}}])},140318,977832,e=>{var t=e.i(875225),a=e.i(518899),r=e.i(924924),n=e.i(618916),s=e.i(390775),o=e.i(921991),i=e.i(656083),l=e.i(629955),u=e.i(497867);function d(e){if(!e)return null;if("unknown"!==e.state)return e.state;let t=e.data?.lastGoodState;return"string"==typeof t&&u.f.includes(t)?t:null}let c={turso_database:"Turso database",upstash_redis:"Upstash Redis",d1_database:"D1 database"};function f(e){let{prev:t,next:a}=e;if(null===t||"unknown"===t||"unknown"===a||t===a)return null;let r={resourceId:e.resourceId,type:"database",at:e.at};if("supabase_project"===e.kind)return"paused"===a?{...r,reason:"DatabasePaused",kind:"paused",message:"Supabase project paused",detail:"Status changed to INACTIVE"}:"ok"===a?{...r,reason:"DatabaseRestored",kind:"ok",message:"Supabase project active again",detail:"Status changed to ACTIVE_HEALTHY"}:"warn"===a?{...r,reason:"DatabaseUnhealthy",kind:"warn",message:"Supabase project unhealthy",detail:e.label}:"err"===a?{...r,reason:"DatabaseFailed",kind:"err",message:`Supabase project: ${e.label.toLowerCase()}`,detail:e.label}:null;if("neon_project"===e.kind)return"err"===a?{...r,reason:"NeonSuspended",kind:"err",message:"Neon compute suspended",detail:e.label}:"err"===t&&("ok"===a||"idle"===a)?{...r,reason:"NeonAvailable",kind:"ok",message:"Neon compute available again",detail:e.label}:null;let n=c[e.kind];if(n)return"err"===a?{...r,reason:"DatabaseFailed",kind:"err",message:`${n}: ${e.label.toLowerCase()}`,detail:e.label}:"off"===a?{...r,reason:"DatabaseMissing",kind:"off",message:`${n} missing`,detail:e.label}:"ok"===a&&("err"===t||"off"===t)?{...r,reason:"DatabaseRestored",kind:"ok",message:`${n} available again`,detail:e.label}:null;if("err"===a){let t="Daily quota used up"===e.label;return{...r,reason:t?"FirestoreQuotaUsedUp":"FirestoreUnreachable",kind:"err",message:t?"Firestore daily quota used up":"Firestore not reachable",detail:e.label}}return"off"===a?{...r,reason:"FirestoreMissing",kind:"off",message:"Firestore database missing",detail:e.label}:"ok"===a&&("err"===t||"off"===t)?{...r,reason:"FirestoreReachable",kind:"ok",message:"Firestore reachable again",detail:e.label}:null}function p(e,t){return"auth"===e.kind?"auth":"scope"===e.kind?t?"auth":"column":"missing"===e.kind?t?"unknown":"column":"unknown"}e.s(["t",0,p,"K",0,f,"F",0,d],977832);var w=e.i(960063),m=e.i(800366),h=e.i(326003),g=e.i(843448),y=e.i(547499),b=e.i(795194),k=e.i(780148),v=e.i(443917),I=e.i(342833),A=e.i(442473);let S="skipped the rest, time budget used";function $(e){let t=e.deadline-Date.now()-500;if(t<250)throw Error(S);return{timeoutMs:Math.min(5e3,t)}}async function D(e,t,a){let r=!1;return{out:await (0,A.P)(t,3,async t=>{let n;try{n=$(e)}catch{r=!0;return}return a(t,n)}),skipped:r}}function x(e){if(e)throw Error(S)}async function E(e){let a=await (0,r.f)().select().from(n.accounts).where((0,t.b)((0,t.u)(n.accounts.provider,e),(0,t.u)(n.accounts.status,"ok"))),s=(0,y.f)().OPS_ENCRYPTION_KEY;return a.map(e=>({acc:e,credential:(0,o.V)({ciphertext:e.credentialCiphertext,iv:e.credentialIv},s)}))}function j(e,a){return(0,r.f)().select({r:n.resources,s:n.snapshots}).from(n.resources).leftJoin(n.snapshots,(0,t.u)(n.snapshots.resourceId,n.resources.id)).where((0,t.b)((0,t.u)(n.resources.accountId,e),(0,t.u)(n.resources.kind,a),(0,t.u)(n.resources.monitored,!0),(0,t.M)(n.resources.goneAt))).limit(100)}let M=e=>a.B`${n.snapshots.data} || ${JSON.stringify(e)}::jsonb`;async function O(e,t,a){let s=d(e.s?{state:e.s.state,data:e.s.data}:null),o="unknown"===t.state,i=o?s?{lastGoodState:s}:{}:{...t.patch,lastGoodState:t.state},l=!o&&s!==t.state;return await (0,r.f)().insert(n.snapshots).values({resourceId:e.r.id,state:t.state,data:i,collectedAt:a,stateSince:a}).onConflictDoUpdate({target:n.snapshots.resourceId,set:{state:t.state,data:M(i),...o?{}:{collectedAt:a},...l?{stateSince:a}:{}}}),o?null:f({kind:e.r.kind,resourceId:e.r.id,prev:s,next:t.state,label:t.label,at:a})}async function R(e,a){await (0,r.f)().update(n.snapshots).set({data:M(a)}).where((0,t.u)(n.snapshots.resourceId,e.r.id))}let N=e=>(0,i.f)(e);async function C(e,a,o,i,l){if("auth"===p(i,!0)){let e=(0,s.E)({ok:!1,kind:"auth",error:i.error});e&&await (0,r.f)().update(n.accounts).set({...e,updatedAt:l.now}).where((0,t.u)(n.accounts.id,a.id))}for(let e of o)await O(e,{state:"unknown",label:"Unknown",patch:{}},l.now);l.errors.push(`${e}/${a.label}: ${i.error}`)}let P=e=>e.toISOString();async function T(e){return e.length?new Set((await (0,r.f)().select({app:n.links.fromResourceId,state:n.snapshots.state,data:n.snapshots.data}).from(n.links).innerJoin(n.resources,(0,t.u)(n.resources.id,n.links.toResourceId)).innerJoin(n.snapshots,(0,t.u)(n.snapshots.resourceId,n.resources.id)).where((0,t.b)((0,t.u)(n.links.kind,"uses_db"),(0,t.y)(n.links.fromResourceId,e),(0,t.u)(n.resources.monitored,!0),(0,t.M)(n.resources.goneAt)))).filter(e=>"paused"===e.state||"unknown"===e.state&&"paused"===e.data.lastGoodState).map(e=>e.app)):new Set}async function z(e){if(!e.protectOnly||await (0,l.g)())for(let{acc:t,credential:a}of(await E("supabase"))){if($(e),!a){e.errors.push(`supabase/${t.label}: credential can't be read`);continue}let r=await j(t.id,"supabase_project");if(!r.length)continue;let n=await (0,I.W)(a,$(e));if(!n.ok){e.protectOnly?e.errors.push(`supabase/${t.label}: ${n.error}`):await C("supabase",t,r,n,e);continue}let s=new Map(n.data.map(e=>[e.ref,e])),o=[];for(let t of e.protectOnly?[]:r){let a=s.get(t.r.externalId);if(!a){o.push(await O(t,{state:"off",label:"Not found",patch:{status:"REMOVED"}},e.now));continue}let r=(0,g.P)(a.status),n=d(t.s?{state:t.s.state,data:t.s.data}:null),i={status:a.status,region:a.region,pgVersion:a.pgVersion,orgSlug:a.orgSlug};"paused"===r.state&&"paused"!==n&&(i.pausedBeforeSeen=null===n),o.push(await O(t,{state:r.state,label:r.label,patch:i},e.now))}await N(o);let i=new Map(r.map(e=>[e.r.externalId,e.r.id])),u=n.data.map(e=>({resourceId:i.get(e.ref)??null,accountId:t.id,status:e.status,orgSlug:e.orgSlug}));await (0,l.z)(e.now,u,e.deadline).catch(()=>{console.warn("auto-restore failed"),e.errors.push("auto-restore failed")})}}async function B(e){for(let{acc:t,credential:a}of(await E("supabase"))){if($(e),!a)continue;let r=await j(t.id,"supabase_project");if(!r.length)continue;let n=new Map(r.map(e=>[e.r.id,(0,h.k)(h.B,e.s?.data)])),s=new Map;for(let r of new Set([...n.values()].map(e=>e.orgSlug).filter(e=>!!e))){let n=await (0,I.K)(a,r,$(e));s.set(r,n.ok&&null!==n.data?"free"===n.data:null),n.ok||"scope"===n.kind||e.errors.push(`supabase/${t.label} plan: ${n.error}`)}let{skipped:o}=await D(e,r,async(t,r)=>{let o=n.get(t.r.id),i={freeOrg:o.orgSlug?s.get(o.orgSlug)??null:null};if((o.status??"").startsWith("ACTIVE_")){let[n,s]=await Promise.all([(0,I.F)(a,t.r.externalId,r),(0,I.Z)(a,t.r.externalId,r)]);n.ok?Object.assign(i,{health:n.data.map(({name:e,status:t})=>({name:e,status:t})),healthAt:P(e.now),healthError:null}):"column"===p(n,!1)?i.healthError=n.error:e.errors.push(`supabase/${t.r.name} health: ${n.error}`),s.ok?Object.assign(i,{lastTrafficAt:(0,g.H)(s.data)?.toISOString()??null,trafficAt:P(e.now),trafficError:null}):"column"===p(s,!1)?i.trafficError=s.error:e.errors.push(`supabase/${t.r.name} traffic: ${s.error}`)}await R(t,i)});x(o)}}async function _(e){for(let{acc:t,credential:a}of(await E("neon"))){if($(e),!a){e.errors.push(`neon/${t.label}: credential can't be read`);continue}let r=await j(t.id,"neon_project");if(!r.length)continue;let{out:n,skipped:s}=await D(e,r,(e,t)=>Promise.all([(0,v.Z)(a,e.r.externalId,t),(0,v.k)(a,e.r.externalId,t),(0,v.e)(a,e.r.externalId,t)])),o=n.flat().find(e=>void 0!==e&&!e.ok&&"auth"===e.kind);if(o){await C("neon",t,r,o,e);continue}let i=[];for(let[t,a]of r.entries()){let r=n[t];if(!r)continue;let[s,o,l]=r;if(!s.ok||!o.ok||!l.ok){let t=[s,o,l].find(e=>!e.ok);"missing"===t.kind?i.push(await O(a,{state:"off",label:"Not found",patch:{}},e.now)):(await O(a,{state:"unknown",label:"Unknown",patch:{}},e.now),e.errors.push(`neon/${a.r.name}: ${t.error}`));continue}let u=(0,m.p)({endpoints:o.data,computeSeconds:s.data.computeSeconds});i.push(await O(a,{state:u.state,label:u.label,patch:{region:s.data.region,pgVersion:s.data.pgVersion,computeSeconds:s.data.computeSeconds,transferBytes:s.data.transferBytes,activeSeconds:s.data.activeSeconds,periodStart:s.data.periodStart,periodEnd:s.data.periodEnd,endpoints:o.data,branches:l.data}},e.now))}await N(i),x(s)}}let W=e=>e.ok?{latencyMs:e.data.latencyMs,pingError:null,pingReason:null,pingKind:null}:{pingError:e.error,pingReason:e.reason??null,pingKind:e.kind};async function U(e){for(let{acc:t,credential:a}of(await E("firebase"))){$(e);let r=a?(0,k.p)(a):null;if(!r){e.errors.push(`firebase/${t.label}: credential can't be read`);continue}let n=await j(t.id,"firestore");if(!n.length)continue;let s=await (0,k.X)(r,$(e));if(!s.ok){await C("firebase",t,n,s,e);continue}let{out:o,skipped:i}=await D(e,n,(e,t)=>(0,b.G)(s.data,e.r.externalId,t)),l=[];for(let[t,a]of n.entries()){let r=o[t];if(!r)continue;let n=(0,w.g)(r);"unknown"!==n.state||r.ok||e.errors.push(`firebase/${a.r.name}: ${r.error}`),l.push(await O(a,{...n,patch:W(r)},e.now))}await N(l),x(i)}}async function F(e){for(let{acc:t,credential:a}of(await E("firebase"))){$(e);let r=a?(0,k.p)(a):null;if(!r)continue;let n=(await j(t.id,"firestore")).filter(e=>e.s?.state!=="off");if(!n.length)continue;let s=await (0,k.X)(r,$(e));if(!s.ok){e.errors.push(`firebase/${t.label}: ${s.error}`);continue}let o=(0,w.a)(e.now),{skipped:i}=await D(e,n,async(t,a)=>{let r=await (0,b.W)(s.data,t.r.externalId,o,e.now,a);r.ok?await R(t,{...r.data,opsAt:P(e.now),opsError:null}):"column"===p(r,!1)?await R(t,{reads:null,writes:null,deletes:null,opsAt:P(e.now),opsError:/requires billing/i.test(r.message??"")?"Not available on Spark: Firestore usage needs billing (Blaze plan)":"SERVICE_DISABLED"===r.reason?"Not readable: the Cloud Monitoring API is off in this project":"Not readable: the service account needs monitoring.viewer"}):e.errors.push(`firebase/${t.r.name} usage: ${r.error}`)});x(i)}}async function V(e){let t=Date.now()+2*Math.max(0,e.deadline-Date.now())/3,a=await L(()=>J({...e,deadline:t})),r=await L(()=>Y(e));if(a)throw a;if(r)throw r}async function L(e){try{return await e(),null}catch(e){return e instanceof Error?e:Error(String(e))}}async function J(e){for(let{acc:t,credential:a}of(await E("supabase")))if($(e),a)for(let r of(await j(t.id,"supabase_project"))){let t=(0,h.k)(h.B,r.s?.data);if(!(0,g.z)({status:t.status??"",lastTrafficAt:t.lastTrafficAt?new Date(t.lastTrafficAt):null,sizeAt:t.sizeAt?new Date(t.sizeAt):null,now:e.now}))continue;let n=await (0,I.r)(a,r.r.externalId,$(e));n.ok?await R(r,{sizeBytes:n.data,sizeAt:P(e.now),sizeError:null}):"column"===p(n,!1)?await R(r,{sizeError:n.error}):e.errors.push(`supabase/${r.r.name} size: ${n.error}`)}}async function Y(e){for(let{acc:t,credential:a}of(await E("firebase"))){$(e);let r=a?(0,k.p)(a):null;if(!r)continue;let n=(await j(t.id,"firestore")).filter(e=>e.s?.state!=="off");if(!n.length)continue;let s=await (0,k.X)(r,$(e));if(!s.ok){e.errors.push(`firebase/${t.label}: ${s.error}`);continue}let{skipped:o}=await D(e,n,async(t,a)=>{let r=await (0,b.q)(s.data,t.r.externalId,a);r.ok?await R(t,{authUsers:r.data,authAt:P(e.now),authError:null}):"column"===p(r,!1)?await R(t,{authError:"Not readable: the service account needs firebaseauth.viewer"}):e.errors.push(`firebase/${t.r.name} users: ${r.error}`)});x(o)}}e.s(["w",0,C,"O",0,E,"q",0,T,"T",0,D,"W",0,x,"M",0,N,"I",0,L,"f",0,V,"g",0,U,"x",0,F,"h",0,_,"N",0,z,"y",0,B,"e",0,j,"s",0,$,"a",0,O],140318)},956846,e=>{var t=e.i(875225),a=e.i(518899),r=e.i(924924),n=e.i(618916),s=e.i(764766),o=e.i(390775),i=e.i(537622),l=e.i(749124),u=e.i(532148),d=e.i(988294),c=e.i(739886),f=e.i(656083),p=e.i(921991),w=e.i(381725),m=e.i(483100),h=e.i(111970),g=e.i(703352),y=e.i(948736),b=e.i(655060),k=e.i(762504),v=e.i(547499),I=e.i(275426),A=e.i(873354),S=e.i(177706),$=e.i(61926),D=e.i(140318),x=e.i(977832),E=e.i(89491),j=e.i(592951),M=e.i(691734),O=e.i(43790),R=e.i(11552);async function N(e){let t=[await (0,D.I)(()=>P(e)),await (0,D.I)(()=>z(e)),await (0,D.I)(()=>B(e))].find(e=>null!==e);if(t)throw t}let C=e=>e.toISOString();async function P(e){for(let{acc:t,credential:a}of(await (0,D.O)("turso"))){if((0,D.s)(e),!a){e.errors.push(`turso/${t.label}: credential can't be read`);continue}let r=await (0,D.e)(t.id,"turso_database");if(!r.length)continue;let n=await (0,M.u)(a,(0,D.s)(e));if(!n.ok){await (0,D.w)("turso",t,r,n,e);continue}let s=new Set(r.map(e=>String(e.r.meta.org??""))),o=[];for(let i of n.data.filter(e=>s.has(e.slug))){let[n,s]=await Promise.all([(0,M.X)(a,i.slug,(0,D.s)(e)),(0,M.d)(a,i.slug,(0,D.s)(e))]),l=r.filter(e=>e.r.meta.org===i.slug);if(!n.ok){for(let t of l)await (0,D.a)(t,{state:"unknown",label:"Unknown",patch:{}},e.now);e.errors.push(`turso/${t.label}: ${n.error}`);continue}let u=new Map(n.data.map(e=>[e.id,e]));for(let t of l)o.push(await T(t,u.get(t.r.externalId),i,s,e))}let i=new Set(n.data.map(e=>e.slug));for(let t of r.filter(e=>!i.has(String(e.r.meta.org??""))))o.push(await (0,D.a)(t,{state:"off",label:"Organization not visible to this token",patch:{}},e.now));await (0,D.M)(o)}}async function T(e,t,a,r,n){if(!t)return(0,D.a)(e,{state:"off",label:"Not found",patch:{}},n.now);let s=(0,E.h)({blockReads:t.blockReads,blockWrites:t.blockWrites,orgBlockedReads:a.blockedReads,orgBlockedWrites:a.blockedWrites}),o={org:a.slug,group:t.group,primaryRegion:t.primaryRegion,plan:a.plan,blockReads:t.blockReads,blockWrites:t.blockWrites};if(r.ok){let e=r.data.byDb.get(t.id);Object.assign(o,{rowsRead:e?.rowsRead??null,rowsWritten:e?.rowsWritten??null,storageBytes:e?.storageBytes??null,orgRowsRead:r.data.org.rowsRead,orgRowsWritten:r.data.org.rowsWritten,orgStorageBytes:r.data.org.storageBytes,orgDatabases:r.data.org.databases,usageAt:C(n.now),usageError:null})}else"column"===(0,x.t)(r,!1)?o.usageError=r.error:n.errors.push(`turso/${e.r.name} usage: ${r.error}`);return(0,D.a)(e,{...s,patch:o},n.now)}async function z(e){for(let{acc:t,credential:a}of(await (0,D.O)("upstash"))){(0,D.s)(e);let r=a?(0,O.L)(a):null;if(!r){e.errors.push(`upstash/${t.label}: credential can't be read`);continue}let n=await (0,D.e)(t.id,"upstash_redis");if(!n.length)continue;let s=await (0,O.M)(r,(0,D.s)(e));if(!s.ok){await (0,D.w)("upstash",t,n,s,e);continue}let o=new Map(s.data.map(e=>[e.id,e])),{out:i,skipped:l}=await (0,D.T)(e,n,(e,t)=>o.has(e.r.externalId)?(0,O.Z)(r,e.r.externalId,t):Promise.resolve(null)),u=[];for(let[t,a]of n.entries()){let r=o.get(a.r.externalId);if(!r){u.push(await (0,D.a)(a,{state:"off",label:"Not found",patch:{}},e.now));continue}let n=(0,E.t)(r.state),s={region:r.region,status:r.state,type:r.type},l=i[t];l?.ok?Object.assign(s,{...l.data,statsAt:C(e.now),statsError:null}):l&&"column"===(0,x.t)(l,!1)?s.statsError=l.error:l&&e.errors.push(`upstash/${a.r.name} stats: ${l.error}`),u.push(await (0,D.a)(a,{...n,patch:s},e.now))}await (0,D.M)(u),(0,D.W)(l)}}async function B(e){let t={};for(let{acc:a,credential:r}of(await (0,D.O)("cloudflare"))){if((0,D.s)(e),!r)continue;let n=await W(a.id,r,e);if(!n.length){t[a.id]={d1:"error",analytics:null,at:C(e.now),note:"No Cloudflare account found for this token"};continue}let s="ok",o=null;for(let t of n){let n=await (0,j.L)(r,t,(0,D.s)(e));if(!n.ok){"error"==(s="scope"===n.kind||"auth"===n.kind?"missing":"error")&&e.errors.push(`d1/${a.label}: ${n.error}`);continue}await U(a.id,t,n.data,e.now);let i=(await (0,D.e)(a.id,"d1_database")).filter(e=>e.r.meta.accountId===t);if(!i.length)continue;let l=await (0,j.t)(r,t,(0,j.Y)(e.now),(0,D.s)(e));o=l.ok?o??"ok":"scope"===l.kind?"missing":o??"error",l.ok||"scope"===l.kind||e.errors.push(`d1/${a.label} analytics: ${l.error}`);let{out:u,skipped:d}=await (0,D.T)(e,i,(e,a)=>(0,j.m)(r,t,e.r.externalId,a)),c=new Map((l.ok?l.data:[]).map(e=>[e.databaseId,e])),f=u.map(e=>e?.ok?e.data.sizeBytes??0:0),p={accountRowsRead:l.ok?l.data.reduce((e,t)=>e+t.rowsRead,0):null,accountRowsWritten:l.ok?l.data.reduce((e,t)=>e+t.rowsWritten,0):null,accountSizeBytes:u.every(e=>e?.ok)?f.reduce((e,t)=>e+t,0):null,accountDatabases:n.data.length},w=[];for(let[t,a]of i.entries()){let r=u[t];void 0!==r&&w.push(await _(a,r,c.get(a.r.externalId)??null,l.ok,l.ok?null:l.error,p,e))}await (0,D.M)(w),(0,D.W)(d)}t[a.id]={d1:s,analytics:o,at:C(e.now),note:null}}await (0,r.f)().insert(n.settings).values({key:R.f,value:t}).onConflictDoUpdate({target:n.settings.key,set:{value:t,updatedAt:e.now}})}async function _(e,t,a,r,n,s,o){let i={accountId:e.r.meta.accountId??null,createdAt:e.r.meta.createdAt??null,accountDatabases:s.accountDatabases};if(t.ok?Object.assign(i,{sizeBytes:t.data.sizeBytes,numTables:t.data.numTables,readReplication:t.data.readReplication,detailsAt:C(o.now),detailsError:null}):"scope"===t.kind?i.detailsError=t.error:o.errors.push(`d1/${e.r.name}: ${t.error}`),r?Object.assign(i,{rowsRead:a?.rowsRead??0,rowsWritten:a?.rowsWritten??0,readQueries:a?.readQueries??0,writeQueries:a?.writeQueries??0,accountRowsRead:s.accountRowsRead,accountRowsWritten:s.accountRowsWritten,usageDay:(0,j.Y)(o.now),usageAt:C(o.now),usageError:null}):i.usageError=n,null!==s.accountSizeBytes&&(i.accountSizeBytes=s.accountSizeBytes),!t.ok&&"transient"===t.kind)return(0,D.a)(e,{state:"unknown",label:"Unknown",patch:{}},o.now);let l=(0,E.c)(r?s:{accountRowsRead:null,accountRowsWritten:null});return(0,D.a)(e,{...l,patch:i},o.now)}async function W(e,a,s){let o=new Set,i=await (0,j.N)(a,(0,D.s)(s));if(i.ok)for(let e of i.data)o.add(e.id);for(let a of(await (0,r.f)().select({meta:n.resources.meta}).from(n.resources).where((0,t.b)((0,t.u)(n.resources.accountId,e),(0,t.u)(n.resources.kind,"zone"),(0,t.M)(n.resources.goneAt))).limit(200)))"string"==typeof a.meta.accountId&&/^[0-9a-f]{32}$/i.test(a.meta.accountId)&&o.add(a.meta.accountId);return[...o].slice(0,5)}async function U(e,a,s,o){let i=(await (0,r.f)().select({id:n.resources.id,externalId:n.resources.externalId,meta:n.resources.meta,goneAt:n.resources.goneAt}).from(n.resources).where((0,t.b)((0,t.u)(n.resources.accountId,e),(0,t.u)(n.resources.kind,"d1_database")))).filter(e=>e.meta.accountId===a),l=new Map(i.map(e=>[e.externalId,e])),u=new Set(s.map(e=>e.uuid));await (0,r.f)().transaction(async r=>{for(let i of s){let s={accountId:a,createdAt:i.createdAt},u=l.get(i.uuid);u?await r.update(n.resources).set({name:i.name,meta:s,lastSeenAt:o,goneAt:null,updatedAt:o}).where((0,t.u)(n.resources.id,u.id)):await r.insert(n.resources).values({accountId:e,kind:"d1_database",externalId:i.uuid,name:i.name,meta:s,monitored:!0,lastSeenAt:o}).onConflictDoNothing({target:[n.resources.accountId,n.resources.kind,n.resources.externalId]})}let d=i.filter(e=>!u.has(e.externalId)&&!e.goneAt).map(e=>e.id);d.length&&await r.update(n.resources).set({goneAt:o,updatedAt:o}).where((0,t.y)(n.resources.id,d))})}var F=e.i(442473),V=e.i(666680),L=e.i(473283),J=e.i(422067);async function Y(e=new Date){let t=(0,V.randomUUID)(),n=new Date(e.getTime()+J.d).toISOString(),s=await (0,r.f)().execute(a.B`
2
2
  insert into ops.settings (key, value) values ('collector.lease', ${JSON.stringify({until:n,owner:t})}::jsonb)
3
3
  on conflict (key) do update set value = excluded.value, updated_at = now()
4
4
  where (ops.settings.value->>'until')::timestamptz < ${e.toISOString()}::timestamptz
5
- returning key`);return(0,J.f)(s).length>0?t:null}async function q(e){await (0,r.f)().execute(a.B`
5
+ returning key`);return(0,L.f)(s).length>0?t:null}async function q(e){await (0,r.f)().execute(a.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' = ${e}`)}var K=e.i(679270);let Z=/^v?(\d{1,9})\.(\d{1,9})\.(\d{1,9})(?:-([0-9A-Za-z.-]{1,64}))?(?:\+[0-9A-Za-z.-]{1,64})?$/,X=/^\d{4}-\d{2}-\d{2}$/;function G(e){let t="string"==typeof e?Z.exec(e.trim()):null;if(!t)return null;let[a,r,n]=[t[1],t[2],t[3]].map(Number);return{major:a,minor:r,patch:n,pre:t[4]??null,text:`${a}.${r}.${n}${t[4]?`-${t[4]}`:""}`}}function H(e,t){return e.major!==t.major?e.major-t.major:e.minor!==t.minor?e.minor-t.minor:e.patch!==t.patch?e.patch-t.patch:e.pre===t.pre?0:null===e.pre?1:null===t.pre||e.pre<t.pre?-1:1}function Q(e){let t=(e&&"object"==typeof e?e:null)?.result?.releases;if(!Array.isArray(t)||0===t.length)return null;let a=[];for(let e of t){if(!e||"object"!=typeof e||"string"!=typeof e.name||"boolean"!=typeof e.isEol||null!=e.eolFrom&&("string"!=typeof e.eolFrom||!X.test(e.eolFrom)))return null;a.push({name:e.name,isEol:e.isEol,eolFrom:e.eolFrom??null})}return a}var ee=e.i(583521);let et="runtime.node";async function ea(e,t,a,r){let n;try{n=await a(e,{method:"GET",headers:{Accept:"application/json","Accept-Encoding":"gzip"},signal:AbortSignal.timeout(r),cache:"no-store"})}catch{return{ok:!1,error:`Couldn't reach ${t}`}}if(!n.ok)return{ok:!1,error:`${t} returned an error (${n.status})`};try{return{ok:!0,body:await n.json()}}catch{return{ok:!1,error:`${t} answered in a format the console doesn't recognise`}}}async function er(e={}){let t=e.fetch??fetch,a=e.timeoutMs??8e3,[r,n]=await Promise.all([ea("https://nodejs.org/dist/index.json","nodejs.org",t,a),ea("https://endoflife.date/api/v1/products/nodejs/","endoflife.date",t,a)]),s=r.ok?function(e){if(!Array.isArray(e)||0===e.length)return null;let t=[],a=new Map;for(let r of e){if(!r||"object"!=typeof r||"boolean"!=typeof r.security)return null;let e=G(r.version);if(!e||null!==e.pre||!String(r.version).startsWith("v"))return null;r.security&&t.push(e);let n=a.get(e.major);(!n||H(e,n)>0)&&a.set(e.major,e)}return t.sort((e,t)=>H(t,e)),{security:t.map(e=>e.text),latest:Object.fromEntries([...a].sort((e,t)=>t[0]-e[0]).map(([e,t])=>[String(e),t.text]))}}(r.body):null,i=n.ok?Q(n.body):null,o=e=>`${e} answered in a format the console doesn't recognise`;return{index:s,indexError:r.ok?s?null:o("nodejs.org"):r.error,cycles:i,cyclesError:n.ok?i?null:o("endoflife.date"):n.error}}let en=e=>"string"==typeof e&&Number.isFinite(Date.parse(e))?e:null,es=e=>"string"==typeof e?e:null;async function ei(){var e;let[a]=await (0,r.f)().select({value:n.settings.value}).from(n.settings).where((0,t.u)(n.settings.key,et)).limit(1);return a?(e=a.value)&&"object"==typeof e?{index:function(e){let t=e&&"object"==typeof e?e:null;if(!t||!Array.isArray(t.security)||!t.latest||"object"!=typeof t.latest)return null;let a=t.security.map(G),r=Object.entries(t.latest).map(([e,t])=>[e,G(t)]);return a.some(e=>!e)||r.some(([e,t])=>!t||String(t.major)!==e)?null:{security:a.map(e=>e.text),latest:Object.fromEntries(r.map(([e,t])=>[e,t.text]))}}(e.index),indexCheckedAt:en(e.indexCheckedAt),indexError:es(e.indexError),cycles:Q({result:{releases:e.cycles}}),cyclesCheckedAt:en(e.cyclesCheckedAt),cyclesError:es(e.cyclesError)}:null:null}async function eo(e,t,a,s=process.env){let i;if(function(e=process.env){let t=(0,ee.N)(e,"NO_UPDATE_CHECK"),a=t?.value.trim()??"";return{off:""!==a&&!/^(0|false|no|off)$/i.test(a),name:t?.name??"WATCHBELL_NO_UPDATE_CHECK"}}(s).off)return;let o=t-Date.now();if(o<1e3)throw Error("skipped, time budget used");let l=await er({timeoutMs:Math.min(8e3,o)}),u=await ei();l.indexError&&a.push(`node: ${l.indexError}`),l.cyclesError&&a.push(`node: ${l.cyclesError}`);let d=(i=e.toISOString(),{index:l.index??u?.index??null,indexCheckedAt:i,indexError:l.indexError,cycles:l.cycles??u?.cycles??null,cyclesCheckedAt:i,cyclesError:l.cyclesError});await (0,r.f)().insert(n.settings).values({key:et,value:d}).onConflictDoUpdate({target:n.settings.key,set:{value:d,updatedAt:e}})}var el=e.i(515743),eu=e.i(336030),ed=e.i(905685),ec=e.i(751762);e.i(794713);let ef="collector.lastRun",ep="vercel.backoffUntil",ew="vercel.currentMiss",em={supabase:D.N,supabaseUsage:D.y,neon:D.h,firebase:D.g,firebaseUsage:D.x,extraDbs:N};async function eh(){let e=await (0,r.f)().select({key:n.settings.key,value:n.settings.value}).from(n.settings).where((0,t.y)(n.settings.key,[ef,A.Z])).limit(2);return{lastRun:e.find(e=>e.key===ef)?.value??{},afterDeploy:e.find(e=>e.key===A.Z)?.value??null}}async function eg(e){await (0,r.f)().insert(n.settings).values({key:ef,value:e}).onConflictDoUpdate({target:n.settings.key,set:{value:e,updatedAt:new Date}})}let ey=e=>(0,f.f)(e);async function eb(e,s,i,o,l=[]){let u=(await (0,r.f)().select({m:n.monitors,app:n.resources}).from(n.monitors).innerJoin(n.resources,(0,t.u)(n.resources.id,n.monitors.resourceId)).where((0,t.b)((0,t.u)(n.monitors.kind,"http"),(0,t.u)(n.monitors.paused,!1),(0,t.u)(n.monitors.ownerPaused,!1),(0,t.u)(n.resources.monitored,!0),(0,t.M)(n.resources.goneAt))).orderBy(a.B`${n.monitors.lastCheckedAt} asc nulls first`,n.monitors.id)).filter(({m:t})=>(0,Y.B)(t.lastCheckedAt,e,o));if(!u.length)return 0;let d=await (0,F.P)(u,6,({m:e})=>{let t=(0,Y.P)(e.timeoutMs,s,Date.now());return null===t?Promise.resolve(null):(0,F.b)(e.url,{expectedStatus:e.expectedStatus,timeoutMs:t,body:(0,el.C)(e)})}),c=u.flatMap((e,t)=>d[t]?[{...e,r:d[t]}]:[]);if(c.length<u.length&&i.push(`checks: ${u.length-c.length} monitors skipped, time budget used`),!c.length)return 0;let f=[];for(let t of c)await (0,eu.j)(t.m,t.r,e)&&f.push(t);return f.length?(await (0,r.f)().insert(n.checks).values(f.map(({m:t,app:a,r})=>({monitorId:t.id,at:e,ok:r.ok,statusCode:r.statusCode,latencyMs:r.latencyMs,error:r.error,inMaintenance:null!==(0,v.x)(l,{monitorId:t.id,appId:a.id},e)}))),await ey(f.map(({m:t,app:a,r})=>(0,ed.F)({resourceId:a.id,path:(0,$.K)(t.url),prev:t.state,next:(0,ed.G)(t.failStreak,r).state,code:r.statusCode,error:r.error,at:e}))),f.length):0}let ek=["checks","heartbeats"];async function eI(e,t,a=c.f){if(!ek.some(t=>e.includes(t)))return[];try{return await a()}catch(e){return t.push(`maintenance: ${(0,ec.f)(e)}`),[]}}async function ev(e){let[a]=await (0,r.f)().select().from(n.settings).where((0,t.u)(n.settings.key,ep)).limit(1),s=a?.value?.until;return!!s&&e.getTime()<new Date(s).getTime()}async function eA(e,t){if("transient"!==e.kind||!e.retryAfterS)return!1;let a={until:new Date(t.getTime()+1e3*Math.min(e.retryAfterS,3600)).toISOString()};return await (0,r.f)().insert(n.settings).values({key:ep,value:a}).onConflictDoUpdate({target:n.settings.key,set:{value:a,updatedAt:t}}),!0}let eS=e=>a.B`coalesce(${n.deployments.externalId} = ${e}::text, false)`;async function e$(e,s,i,o,l=b.m){let u=[];try{for(let l of e){let e=s.filter(e=>e.resourceId===l.id),{currentId:d,previousId:c}=(0,$.a)(e.map(e=>({id:e.id,createdAt:e.createdAt??new Date(0)})),(l.externalId?i.get(l.externalId):null)??null),f=await (0,r.f)().update(n.deployments).set({isCurrent:eS(d),isPreviousProduction:eS(c),updatedAt:o.now}).where((0,t.b)((0,t.u)(n.deployments.resourceId,l.id),(0,t.F)(a.B`${n.deployments.isCurrent} is distinct from ${eS(d)}`,a.B`${n.deployments.isPreviousProduction} is distinct from ${eS(c)}`))).returning({id:n.deployments.externalId}),p=(0,A.X)({appId:l.id,currentId:d,changedIds:f.map(e=>e.id),createdAt:e.find(e=>e.id===d)?.createdAt??null,state:o.afterDeploy,now:o.now});p&&u.push({appId:l.id,deploymentId:p})}}finally{if(u.length)try{await l(u,o.now)}catch(e){o.errors.push(`vercel/${o.label}: after-deploy security check not scheduled: ${(0,ec.f)(e)}`)}}}let eD=e=>new Map(e.map(e=>[e.id,{...e.branchFrom?{branchFrom:e.branchFrom}:{},...e.gitDirty?{gitDirty:!0}:{}}]));async function ex(e,t,a,r,n=new Map,s=g.f){try{await s(e,t,n)}catch(e){a.push(`vercel/${r}: production source not saved: ${(0,ec.f)(e)}`)}}async function eE(e,a,s,o){if(await ev(e))return;let l=(0,I.f)().OPS_ENCRYPTION_KEY;for(let u of(await (0,r.f)().select().from(n.accounts).where((0,t.b)((0,t.u)(n.accounts.provider,"vercel"),(0,t.u)(n.accounts.status,"ok"))))){let d=(0,p.V)({ciphertext:u.credentialCiphertext,iv:u.credentialIv},l);if((0,i.A)(d)||!d){s.push(`vercel/${u.label}: credential can't be read`);continue}let c=await (0,r.f)().select().from(n.resources).where((0,t.b)((0,t.u)(n.resources.accountId,u.id),(0,t.u)(n.resources.kind,"app"),(0,t.u)(n.resources.monitored,!0),(0,t.M)(n.resources.goneAt)));if(!c.length)continue;let f=new Map(c.map(e=>[e.externalId,e])),w=await (0,S.X)(d);if(!w.ok){let a=(0,i.E)({ok:!1,kind:w.kind,error:w.error});if(a&&await (0,r.f)().update(n.accounts).set({...a,updatedAt:e}).where((0,t.u)(n.accounts.id,u.id)),s.push(`vercel/${u.label}: ${w.error}`),await eA(w,e))return;continue}let m=new Set(c.map(e=>String(e.meta.teamId)));for(let i of w.data.filter(e=>m.has(e.id))){if(Date.now()>a)return void s.push("vercel: skipped remaining teams, time budget used");let[l,u]=await Promise.all([(0,S.W)(d,i),(0,S.K)(d,i,{since:e.getTime()-6048e5,limit:100})]);if(!l.ok||!u.ok){let t=l.ok?u:l;if(s.push(`vercel/${i.name}: ${t.error}`),await eA(t,e))return;continue}let p=new Map(l.data.map(e=>[e.id,e.currentDeploymentId])),w=u.data.filter(e=>f.has(e.projectId)),m=eD(w),h=new Map((w.length?await (0,r.f)().select({externalId:n.deployments.externalId,state:n.deployments.state,target:n.deployments.target,branch:n.deployments.branch,commitSha:n.deployments.commitSha,commitMessage:n.deployments.commitMessage,source:n.deployments.source,url:n.deployments.url,buildingAt:n.deployments.buildingAt,readyAt:n.deployments.readyAt}).from(n.deployments).where((0,t.y)(n.deployments.externalId,w.map(e=>e.id))):[]).map(e=>[e.externalId,e])),g=[];for(let t of w){let a=f.get(t.projectId),s=h.get(t.id),i={state:t.state,target:t.target,branch:t.branch,commitSha:t.sha,commitMessage:t.message,source:t.source,url:t.url,buildingAt:t.buildingAt,readyAt:t.readyAt};if((0,$.E)(s,i)){let s={resourceId:a.id,externalId:t.id,...i,createdAtProvider:t.createdAt,updatedAt:e};await (0,r.f)().insert(n.deployments).values(s).onConflictDoUpdate({target:n.deployments.externalId,set:s})}g.push((0,ed.L)(s?.state,t,a.id,e))}await ey(g);let y=c.filter(e=>String(e.meta.teamId)===i.id),b=await (0,r.f)().select({resourceId:n.deployments.resourceId,id:n.deployments.externalId,createdAt:n.deployments.createdAtProvider}).from(n.deployments).where((0,t.b)((0,t.y)(n.deployments.resourceId,y.map(e=>e.id)),(0,t.u)(n.deployments.target,"production"),(0,t.u)(n.deployments.state,"ready"))),[k]=await (0,r.f)().select().from(n.settings).where((0,t.u)(n.settings.key,ew)).limit(1),I=[],v=()=>I.length?(0,r.f)().insert(n.settings).values({key:ew,value:(0,$.Y)(k?.value,I,e)}).onConflictDoUpdate({target:n.settings.key,set:{value:(0,$.Y)(k?.value,I,e),updatedAt:e}}):Promise.resolve();for(let t of(0,$.Q)(y,p,b,(0,$.S)(k?.value,e))){if(Date.now()>a)break;let o=await (0,S.S)(d,i,t.deploymentId);if(!o.ok){if(s.push(`vercel/${i.name}: current deployment: ${o.error}`),await eA(o,e))return void await v();I.push(t.deploymentId);continue}let l=o.data;for(let[e,t]of eD([l]))m.set(e,t);let u={resourceId:t.appId,externalId:l.id,state:l.state,target:l.target,branch:l.branch,commitSha:l.sha,commitMessage:l.message,source:l.source,url:l.url,buildingAt:l.buildingAt,readyAt:l.readyAt,createdAtProvider:l.createdAt,updatedAt:e};await (0,r.f)().insert(n.deployments).values(u).onConflictDoUpdate({target:n.deployments.externalId,set:u}),"ready"===l.state&&"production"===l.target?b.push({resourceId:t.appId,id:l.id,createdAt:l.createdAt}):I.push(t.deploymentId)}await v(),await e$(y,b,p,{now:e,afterDeploy:o,errors:s,label:i.name}),await ex(y,e,s,i.name,m)}}}async function ej(e){let i=await (0,r.f)().select().from(n.resources).where((0,t.b)((0,t.u)(n.resources.kind,"app"),(0,t.u)(n.resources.monitored,!0),(0,t.M)(n.resources.goneAt)));if(!i.length)return;let o=await (0,r.f)().select().from(n.monitors).where((0,t.b)((0,t.y)(n.monitors.resourceId,i.map(e=>e.id)),(0,t.u)(n.monitors.paused,!1),(0,t.u)(n.monitors.ownerPaused,!1))),l=new Set((await (0,r.f)().select({r:n.deployments.resourceId}).from(n.deployments).where((0,t.b)((0,t.y)(n.deployments.resourceId,i.map(e=>e.id)),(0,t.u)(n.deployments.target,"production"),(0,t.u)(n.deployments.state,"building"),(0,t.B)(n.deployments.createdAtProvider,new Date(e.getTime()-36e5))))).map(e=>e.r)),u=await (0,D.q)(i.map(e=>e.id)),d=new Map((await (0,r.f)().select().from(n.snapshots).where((0,t.y)(n.snapshots.resourceId,i.map(e=>e.id)))).map(e=>[e.resourceId,e])),c=new Map(i.map(e=>[e.id,e])),f=(0,s.P)(o.map(e=>({id:e.id,kind:e.kind,url:e.url,appId:e.resourceId,appName:c.get(e.resourceId)?.name??"",appMeta:c.get(e.resourceId)?.meta,lastError:e.lastError})),i),p=e=>f.has(e.id)&&"err"===e.state?"warn":e.state;for(let[e,l]of(0,s.R)(o.map(e=>({id:e.id,kind:e.kind,url:e.url,appId:e.resourceId,appName:c.get(e.resourceId)?.name??"",appMeta:c.get(e.resourceId)?.meta,lastError:e.lastError})),i))await (0,r.f)().update(n.resources).set({meta:a.B`${n.resources.meta} || ${JSON.stringify({pastDomains:l})}::jsonb`}).where((0,t.u)(n.resources.id,e));for(let t of i){let s=o.filter(e=>e.resourceId===t.id),i=(0,ed.V)({monitors:s.map(p),building:l.has(t.id),dbPaused:u.has(t.id)}),c=s.find(e=>"err"===e.state)??s.find(e=>"warn"===e.state),f={code:c?.lastStatus??null,latencyMs:s.find(e=>"heartbeat"!==e.kind)?.lastLatencyMs??null,dbPaused:u.has(t.id)},w=d.get(t.id);await (0,r.f)().insert(n.snapshots).values({resourceId:t.id,state:i,data:f,collectedAt:e,stateSince:e}).onConflictDoUpdate({target:n.snapshots.resourceId,set:{state:i,data:a.B`${n.snapshots.data} || ${JSON.stringify(f)}::jsonb`,collectedAt:e,...w?.state!==i?{stateSince:e}:{}}})}}async function eM(e,t={}){let a={writeLastRun:eg,refreshApps:ej,refreshNetwork:K.x,invalidate:o.f,...t};try{await a.writeLastRun({...e.lastRun,...Object.fromEntries(e.done.map(t=>[t,e.started.toISOString()]))});try{await a.refreshApps(new Date)}catch(t){e.errors.push(`app-snapshots: ${(0,ec.f)(t)}`)}if(e.done.some(e=>K.p.includes(e)))try{await a.refreshNetwork(new Date)}catch(t){e.errors.push(`network-states: ${(0,ec.f)(t)}`)}}finally{a.invalidate((0,l.o)(e.tried??e.done))}}async function eO(e,t,a,r={evaluate:u.$,deliver:m.q,digest:m.J}){let n=[];if(e.includes("alerts"))if(Date.now()>t)a.push("alerts: skipped, time budget used");else{let e=!0;try{await r.evaluate(new Date),console.info("collector alerts evaluated")}catch(t){e=!1,a.push(`alerts: ${(0,ec.f)(t)}`)}try{await r.deliver(new Date,t),console.info("collector notifications delivered")}catch(t){e=!1,a.push(`notify: ${(0,ec.f)(t)}`)}e&&n.push("alerts")}if(e.includes("digest")&&(0,Y.z)("digest",t,Date.now()))try{await r.digest(new Date),console.info("collector digest done"),n.push("digest")}catch(e){a.push(`digest: ${(0,ec.f)(e)}`)}return n}async function eR(e,t,a,r){let n=[],s=[];for(let i of e){if(Date.now()>t){a.push(`${i}: skipped, time budget used`);continue}if((0,Y.z)(i,t,Date.now())){s.push(i);try{await r(i),n.push(i)}catch(e){a.push(`${i}: ${(0,ec.f)(e)}`)}}}return{done:n,tried:s}}async function eN(e){let a,s=new Date,i=await L(s);if(!i)return{skipped:!0,ok:!0,tasks:[],checks:0,durationMs:0,errors:[]};try{[a]=await (0,r.f)().insert(n.collectorRuns).values({startedAt:s,trigger:"builtin"===e?"manual":e}).returning({id:n.collectorRuns.id})}catch(e){throw await q(i).catch(()=>void 0),e}let o=[],l=[],u=0,c=s.getTime()+Y.p,f=e=>console.info(`collector ${e} +${Date.now()-s.getTime()}ms`);try{f("start");let{lastRun:t,afterDeploy:a}=await eh(),r="cron_job_org"!==e&&"builtin"!==e,n=await (0,h.I)(),{due:i,early:p}=(0,Y._)((0,Y.S)(t,s,r,n),(0,b.Y)(a),n),m=!1,g=e=>p||!m?e.filter(e=>"security"!==e):e,I=i.filter(e=>Y.u.includes(e)),S=I.includes("alerts")?c-Y.X:c,$=await eI(i,o);f(`due ${i.join(",")}`);let{done:D,tried:x}=await eR(i.filter(e=>!Y.u.includes(e)),S,o,async e=>{if(f(`task ${e}`),"heartbeats"===e){let e=new Date;u+=await (0,d.r)(e,(t,a)=>null!==(0,v.x)($,{monitorId:t,appId:a},e),r)}"checks"===e&&(u+=await eb(new Date,S,o,r,$)),"vercel"===e&&await eE(new Date,S,o,(0,A.Y)(a));let t=em[e];t&&await t({now:new Date,deadline:S,errors:o,protectOnly:(0,Y.$)(e,n)}),"cloudflare"===e&&await (0,K.h)(new Date,S,o),"domains"===e&&await (0,K.H)(new Date,S,o),"tls"===e&&await (0,K.V)(new Date,S,o),"rdap"===e&&await (0,K.W)(new Date,S,o),"eol"===e&&await (0,K.i)(new Date,S,o),"node"===e&&await eo(new Date,S,o),"status"===e&&await (0,k.i)(new Date),"logs"===e&&await (0,w._)(new Date,S,o),"pageviews"===e&&await (0,y.f)(new Date,S,o),"security"===e&&(m=(await (0,b.U)({now:s,deadline:S,errors:o,paused:n,early:p})).complete)});l.push(...D),f("main done"),await eM({lastRun:t,done:g(l),tried:x,started:s,errors:o}),f("settled");let E=await eO(I,c,o);f("post done"),E.length&&await eg({...t,...Object.fromEntries(g([...l,...E]).map(e=>[e,s.toISOString()]))}),l.push(...E)}catch(e){o.push(`run: ${(0,ec.f)(e)}`)}finally{let e=Date.now()-s.getTime();await (0,r.f)().update(n.collectorRuns).set({finishedAt:new Date,ok:0===o.length,errorSummary:o.join("\n").slice(0,2e3)||null,durationMs:e,tasks:l,checks:u}).where((0,t.u)(n.collectorRuns.id,a.id)).catch(()=>void 0),await q(i).catch(()=>void 0)}return{skipped:!1,ok:0===o.length,tasks:l,checks:u,durationMs:Date.now()-s.getTime(),errors:o}}e.s(["f",0,eN],956846)},703352,948736,873354,655060,e=>{var t=e.i(875225),a=e.i(518899),r=e.i(924924),n=e.i(618916),s=e.i(502240);async function i(e,o,l=new Map){if(!e.length)return 0;let u=await (0,r.f)().select({app:n.deployments.resourceId,id:n.deployments.externalId,source:n.deployments.source,branch:n.deployments.branch,sha:n.deployments.commitSha}).from(n.deployments).where((0,t.b)((0,t.y)(n.deployments.resourceId,e.map(e=>e.id)),(0,t.u)(n.deployments.isCurrent,!0))),d=0;for(let i of e){let e,c=u.find(e=>e.app===i.id);if(!c)continue;let f=(0,s.O)(i.meta?.productionSource),p=l.get(c.id),w={source:c.source??null,branch:c.branch??null,sha:c.sha??null};if(!(e=p?(0,s.s)({...w,branchFrom:p.branchFrom??null,gitDirty:!0===p.gitDirty}):f?.id===c.id?{kind:f.kind,...f.ref?{ref:f.ref}:{},...f.sha?{sha:f.sha}:{}}:"git"===w.source||"cli"===w.source?(0,s.s)(w):null)){if(f?.at&&f.id!==c.id){let e={...f};delete e.at,await (0,r.f)().update(n.resources).set({meta:a.B`${n.resources.meta} || ${JSON.stringify({productionSource:e})}::jsonb`}).where((0,t.u)(n.resources.id,i.id)),d++}continue}e={...e,id:c.id};let m=!!f?.at&&o.getTime()-Date.parse(f.at)<s.u;if((0,s.v)(f,e)&&m)continue;let h={...e,at:o.toISOString()};await (0,r.f)().update(n.resources).set({meta:a.B`${n.resources.meta} || ${JSON.stringify({productionSource:h})}::jsonb`}).where((0,t.u)(n.resources.id,i.id)),d++}return d}e.s(["f",0,i],703352);var o=e.i(442473),l=e.i(381725),u=e.i(767512),d=e.i(971724),c=e.i(206033),f=e.i(455744),p=e.i(469755),w=e.i(105954),m=e.i(857897);let h=/not enabled/i,g=(e,t,a={})=>({ok:!1,kind:e,error:t,...a}),y="Vercel Web Analytics answered in a format the console doesn't recognise.",b=d.z.object({data:d.z.object({pageviews:c.z.number().finite().nonnegative(),visitors:c.z.number().finite().nonnegative()})}),k=d.z.object({data:f.z.array(p.z.unknown())}),I=d.z.object({timestamp:w.z.string().transform((e,t)=>{let a=Date.parse(e);return Number.isNaN(a)?(t.addIssue({code:"custom",message:"bad timestamp"}),m.z.NEVER):a}),pageviews:c.z.number().finite().nonnegative().nullish().catch(null)});async function v(e,t,a,r){let n=r.since.toISOString(),s=r.until.toISOString(),i=r.fetch??fetch,l=new AbortController,u=setTimeout(()=>l.abort(new DOMException("window","TimeoutError")),r.timeoutMs??8e3),d=r.signal?AbortSignal.any([l.signal,r.signal]):l.signal,c=(0,o.X)(d);async function f(o,u){let f=new URLSearchParams({projectId:a,teamId:t,...u,since:n,until:s});try{let t=await Promise.race([i(`https://api.vercel.com/v1/query/web-analytics/visits/${o}?${f}`,{headers:{Authorization:`Bearer ${e}`,Accept:"application/json"},signal:d,cache:"no-store"}),c]),a=null,r=!1;if(401===t.status||403===t.status)a=g("auth",`Vercel rejected this credential (${t.status}).`,{status:t.status});else if(429===t.status){let e=Number(t.headers.get("Retry-After"));a=g("transient","Vercel says there were too many requests.",{status:429,retryAfterS:Number.isFinite(e)&&e>0?e:60})}else if(400===t.status){let e=await Promise.race([t.text(),c]).catch(()=>"");h.test(e)?r=!0:a=g("transient","Vercel Web Analytics rejected the request (400).",{status:400})}else t.ok||(a=g("transient",`Vercel Web Analytics returned an error (${t.status}).`,{status:t.status}));if(r)return{kind:"off"};if(a)return await t.body?.cancel().catch(()=>void 0),{kind:"fail",fail:a};try{return{kind:"body",body:await Promise.race([t.json(),c])}}catch(e){if(d.aborted)throw e;return{kind:"fail",fail:g("format",y)}}}catch{return{kind:"fail",fail:d.aborted?l.signal.aborted&&!r.signal?.aborted?g("transient","Vercel Web Analytics didn't answer in time."):g("transient","Reading Vercel Web Analytics was cancelled."):g("transient","Couldn't reach Vercel Web Analytics.")}}}try{let[e,t]=await Promise.all([f("count",{}),f("aggregate",{by:"hour"})]);if("off"===e.kind||"off"===t.kind)return{ok:!0,enabled:!1};let a=[e,t].flatMap(e=>"fail"===e.kind?[e.fail]:[]),r=a.find(e=>"auth"===e.kind);if(r)return r;let n="body"===t.kind?k.safeParse(t.body):null,s="fail"===t.kind?t.fail:n?.success?null:g("format",y),i=a.find(e=>"transient"===e.kind);if(i)return i;if(s)return s;if(!n?.success)return g("format",y);let o="body"===e.kind?b.safeParse(e.body):null,l=n.data.data.flatMap(e=>{let t=I.safeParse(e);return t.success?[t.data]:[]});if(l.length>0&&l.every(e=>null==e.pageviews))return g("format",y);let u=new Map;for(let e of l){let t=36e5*Math.floor(e.timestamp/36e5);u.set(t,(u.get(t)??0)+(e.pageviews??0))}let d=[...u].sort((e,t)=>e[0]-t[0]).slice(-24).map(([e,t])=>({at:new Date(e),views:t}));if(o?.success)return{ok:!0,enabled:!0,total:o.data.data.pageviews,visitors:o.data.data.visitors,hourly:d};return{ok:!0,enabled:!0,total:d.reduce((e,t)=>e+t.views,0),visitors:null,hourly:d}}finally{clearTimeout(u),l.abort()}}var A=e.i(943816);async function S(e,t,a){let r=await (0,l.g)(null);if(!r.length)return;let n=new Date(36e5*Math.floor(e.getTime()/36e5)-828e5);await (0,o.P)(r,3,async r=>{if(Date.now()+8500>t)return;let s=await v(r.token,r.teamId,r.projectId,{since:n,until:e});if(!s.ok)return void a.push(`pageviews/${r.appName}: ${s.error}`);try{await (0,u.r)(r.appId,{pageviews:(0,A.Z)(s,e)},e)}catch{a.push(`pageviews/${r.appName}: couldn't save the page views`)}})}e.s(["f",0,S],948736);var $=e.i(422067),D=e.i(433609),x=e.i(800523),E=e.i(479301);let j="security.afterDeploy",M=e=>"object"==typeof e&&null!==e&&!Array.isArray(e),O=e=>"string"==typeof e&&e.length>0&&e.length<=100;function R(e){let t={pending:{},checked:{}};if(!M(e))return t;if(M(e.pending))for(let[a,r]of Object.entries(e.pending)){if(!(0,E.f)(a)||!M(r)||!O(r.id)||"string"!=typeof r.at||Number.isNaN(Date.parse(r.at)))continue;let e="number"==typeof r.attempts&&Number.isInteger(r.attempts)&&r.attempts>=0?Math.min(r.attempts,3):0;t.pending[a]={id:r.id,at:r.at,attempts:e,...!0===r.next?{next:!0}:{},...!0===r.deps?{deps:!0}:{}}}if(M(e.checked))for(let[a,r]of Object.entries(e.checked))(0,E.f)(a)&&O(r)&&(t.checked[a]=r);return t}let N=e=>Object.keys(e.pending).length>0;function C(e,t,a){let r={pending:{...e.pending},checked:{...e.checked}},n=!1;for(let e of t)(0,E.f)(e.appId)&&O(e.deploymentId)&&r.checked[e.appId]!==e.deploymentId&&r.pending[e.appId]?.id!==e.deploymentId&&(r.pending[e.appId]={id:e.deploymentId,at:a.toISOString(),attempts:0},n=!0);return{state:r,changed:n}}function P(e,t){let a,r={...e.pending},n={...e.checked};for(let e of t){let t=r[e];t&&(delete r[e],delete n[e],n[e]=t.id)}return{pending:r,checked:(a=Object.entries(n)).length<=500?n:Object.fromEntries(a.slice(a.length-500))}}function T(e,t){let a=Object.entries(e.pending).filter(([,e])=>t.getTime()-Date.parse(e.at)>216e5).map(([e])=>e);return a.length?P(e,a):e}let z=(e,t)=>Object.entries(e.pending).filter(([,e])=>!e[t]).map(([e])=>e);function B(e,t){let a={},r=[];for(let[n,s]of Object.entries(e.pending)){let e={...s};t.hosting&&!e.next&&(t.nextDone?.has(n)?e.next=!0:t.nextStarted?.has(n)&&(e.attempts=Math.min(e.attempts+1,3))),t.devops&&!e.deps&&t.depsDone?.has(n)&&(e.deps=!0),a[n]=e,((e.next||!t.hosting)&&(e.deps||!t.devops)||e.attempts>=3)&&r.push(n)}return P({pending:a,checked:e.checked},r)}e.s(["Z",0,j,"X",0,function(e){var t,a;let r=e.currentId;return r&&e.state.checked[e.appId]!==r&&e.state.pending[e.appId]?.id!==r&&(t=e.changedIds,((a=r)&&t.includes(a)?a:null)||e.createdAt&&e.now.getTime()-e.createdAt.getTime()<=216e5)?r:null},"a",0,T,"A",0,N,"B",0,C,"p",0,z,"Y",0,R,"E",0,B],873354);var _=e.i(970465);let W="security.slot",U=e=>Array.isArray(e)?e.filter(e=>"string"==typeof e&&e.length>0&&e.length<=100).slice(0,1e3):[],F=(e,t)=>[...new Set([...e,...t])].slice(0,1e3),V=e=>async()=>{let[a]=await (0,r.f)().select({value:n.settings.value}).from(n.settings).where((0,t.u)(n.settings.key,e)).limit(1);return a?.value??null},J=e=>async t=>{await (0,r.f)().insert(n.settings).values({key:e,value:t}).onConflictDoUpdate({target:n.settings.key,set:{value:t,updatedAt:new Date}})},Y={read:V(j),write:J(j),readSlot:V(W),writeSlot:J(W),nextCheck:x.h,depsStep:(e,t)=>(0,D.O)(e,t)};async function L(e,t=Y){let a=R(await t.read()),r=T(a,e.now),n=!e.paused.has("hosting"),s=!e.paused.has("devops"),i=n?z(r,"next"):[],o=s?z(r,"deps"):[],l=e.early?null:function(e,t){let a=e&&"object"==typeof e&&!Array.isArray(e)?e:{};if(a.slot!==t)return{slot:t,runs:0,next:[],repos:[],cut:{},nextDone:!1,depsDone:!1};let r="number"==typeof a.runs&&Number.isInteger(a.runs)&&a.runs>=0?a.runs:0,n={};if(a.cut&&"object"==typeof a.cut&&!Array.isArray(a.cut))for(let[e,t]of Object.entries(a.cut).slice(0,1e3))e.length<=100&&"number"==typeof t&&Number.isInteger(t)&&t>0&&(n[e]=Math.min(t,2));return{slot:t,runs:r,next:U(a.next),repos:U(a.repos),cut:n,nextDone:!0===a.nextDone,depsDone:!0===a.depsDone}}(await t.readSlot(),new Date((0,$.G)("security",e.now)).toISOString()),u=!!l&&n&&!l.nextDone,d=!!l&&s&&!l.depsDone,c=n&&(i.length>0||u),f=s&&(o.length>0||d),p={hosting:n,devops:s,nextDone:new Set,nextStarted:new Set,depsDone:new Set},w=async()=>{let a=Math.min(Date.now()+_.y,!l&&f?e.deadline-2*D.d:e.deadline),r=u?[...l.next,...Object.entries(l.cut).filter(([,e])=>e>=2).map(([e])=>e)]:[],n=u?{first:i,skip:[...new Set(r)].filter(e=>!i.includes(e))}:{only:i},s=await t.nextCheck(a,n);for(let t of s.failed)e.errors.push(`security ${t}`);for(let e of s.done)p.nextDone.add(e);for(let e of i)s.listed.includes(e)||p.nextDone.add(e);for(let e of s.started)p.nextStarted.add(e);if(u){let e=new Set(s.done);for(let t of(l.next=F(l.next,s.done),s.started))e.has(t)||(l.cut[t]=Math.min((l.cut[t]??0)+1,2));l.nextDone=s.listed.every(t=>e.has(t)||(l.cut[t]??0)>=2)}},m=async()=>{let a=await t.depsStep(Math.min(Date.now()+D.o,e.deadline),d?{marked:o,onlyMarked:!1,skip:l.repos}:{marked:o,onlyMarked:!0});for(let t of(a.problem&&e.errors.push(`security deps: ${a.problem}`),a.settled))p.depsDone.add(t);d&&(l.repos=F(l.repos,a.done),l.depsDone=a.complete)};try{l&&l.runs++,l?(f&&await m(),c&&await w()):(c&&await w(),f&&await m())}finally{let e=null;if(l)try{await t.writeSlot(l)}catch(t){e=t}try{let e=B(r,p);JSON.stringify(e)!==JSON.stringify(a)&&await t.write(e)}catch(t){e??=t}if(e)throw e}return{complete:!l||(l.nextDone||!n)&&(l.depsDone||!s)||l.runs>=20}}async function q(e,t,a=Y){if(!e.length)return!1;let{state:r,changed:n}=C(R(await a.read()),e,t);return n&&await a.write(r),n}e.s(["m",0,q,"Y",0,e=>N(R(e)),"U",0,L],655060)}]})();
7
+ where key = 'collector.lease' and value->>'owner' = ${e}`)}var K=e.i(679270);let Z=/^v?(\d{1,9})\.(\d{1,9})\.(\d{1,9})(?:-([0-9A-Za-z.-]{1,64}))?(?:\+[0-9A-Za-z.-]{1,64})?$/,G=/^\d{4}-\d{2}-\d{2}$/;function X(e){let t="string"==typeof e?Z.exec(e.trim()):null;if(!t)return null;let[a,r,n]=[t[1],t[2],t[3]].map(Number);return{major:a,minor:r,patch:n,pre:t[4]??null,text:`${a}.${r}.${n}${t[4]?`-${t[4]}`:""}`}}function H(e,t){return e.major!==t.major?e.major-t.major:e.minor!==t.minor?e.minor-t.minor:e.patch!==t.patch?e.patch-t.patch:e.pre===t.pre?0:null===e.pre?1:null===t.pre||e.pre<t.pre?-1:1}function Q(e){let t=(e&&"object"==typeof e?e:null)?.result?.releases;if(!Array.isArray(t)||0===t.length)return null;let a=[];for(let e of t){if(!e||"object"!=typeof e||"string"!=typeof e.name||"boolean"!=typeof e.isEol||null!=e.eolFrom&&("string"!=typeof e.eolFrom||!G.test(e.eolFrom)))return null;a.push({name:e.name,isEol:e.isEol,eolFrom:e.eolFrom??null})}return a}var ee=e.i(583521);let et="runtime.node";function ea(e=process.env){let t=(0,ee.N)(e,"NO_UPDATE_CHECK"),a=t?.value.trim()??"";return{off:""!==a&&!/^(0|false|no|off)$/i.test(a),name:t?.name??"WATCHBELL_NO_UPDATE_CHECK"}}async function er(e,t,a,r){let n;try{n=await a(e,{method:"GET",headers:{Accept:"application/json","Accept-Encoding":"gzip"},signal:AbortSignal.timeout(r),cache:"no-store"})}catch{return{ok:!1,error:`Couldn't reach ${t}`}}if(!n.ok)return{ok:!1,error:`${t} returned an error (${n.status})`};try{return{ok:!0,body:await n.json()}}catch{return{ok:!1,error:`${t} answered in a format the console doesn't recognise`}}}async function en(e={}){let t=e.fetch??fetch,a=e.timeoutMs??8e3,[r,n]=await Promise.all([er("https://nodejs.org/dist/index.json","nodejs.org",t,a),er("https://endoflife.date/api/v1/products/nodejs/","endoflife.date",t,a)]),s=r.ok?function(e){if(!Array.isArray(e)||0===e.length)return null;let t=[],a=new Map;for(let r of e){if(!r||"object"!=typeof r||"boolean"!=typeof r.security)return null;let e=X(r.version);if(!e||null!==e.pre||!String(r.version).startsWith("v"))return null;r.security&&t.push(e);let n=a.get(e.major);(!n||H(e,n)>0)&&a.set(e.major,e)}return t.sort((e,t)=>H(t,e)),{security:t.map(e=>e.text),latest:Object.fromEntries([...a].sort((e,t)=>t[0]-e[0]).map(([e,t])=>[String(e),t.text]))}}(r.body):null,o=n.ok?Q(n.body):null,i=e=>`${e} answered in a format the console doesn't recognise`;return{index:s,indexError:r.ok?s?null:i("nodejs.org"):r.error,cycles:o,cyclesError:n.ok?o?null:i("endoflife.date"):n.error}}let es=e=>"string"==typeof e&&Number.isFinite(Date.parse(e))?e:null,eo=e=>"string"==typeof e?e:null;async function ei(){var e;let[a]=await (0,r.f)().select({value:n.settings.value}).from(n.settings).where((0,t.u)(n.settings.key,et)).limit(1);return a?(e=a.value)&&"object"==typeof e?{index:function(e){let t=e&&"object"==typeof e?e:null;if(!t||!Array.isArray(t.security)||!t.latest||"object"!=typeof t.latest)return null;let a=t.security.map(X),r=Object.entries(t.latest).map(([e,t])=>[e,X(t)]);return a.some(e=>!e)||r.some(([e,t])=>!t||String(t.major)!==e)?null:{security:a.map(e=>e.text),latest:Object.fromEntries(r.map(([e,t])=>[e,t.text]))}}(e.index),indexCheckedAt:es(e.indexCheckedAt),indexError:eo(e.indexError),cycles:Q({result:{releases:e.cycles}}),cyclesCheckedAt:es(e.cyclesCheckedAt),cyclesError:eo(e.cyclesError)}:null:null}async function el(e,t,a,s=process.env){let o;if(ea(s).off)return;let i=t-Date.now();if(i<1e3)throw Error("skipped, time budget used");let l=await en({timeoutMs:Math.min(8e3,i)}),u=await ei();l.indexError&&a.push(`node: ${l.indexError}`),l.cyclesError&&a.push(`node: ${l.cyclesError}`);let d=(o=e.toISOString(),{index:l.index??u?.index??null,indexCheckedAt:o,indexError:l.indexError,cycles:l.cycles??u?.cycles??null,cyclesCheckedAt:o,cyclesError:l.cyclesError});await (0,r.f)().insert(n.settings).values({key:et,value:d}).onConflictDoUpdate({target:n.settings.key,set:{value:d,updatedAt:e}})}var eu=e.i(77193);let ed=/^\d{1,4}\.\d{1,4}\.\d{1,6}$/,ec=e=>"string"==typeof e&&ed.test(e);async function ef(e={}){let t,a=e.fetch??fetch;try{t=await a("https://registry.npmjs.org/watchbell/latest",{method:"GET",headers:{Accept:"application/json","Accept-Encoding":"gzip"},signal:AbortSignal.timeout(e.timeoutMs??6e3),cache:"no-store"})}catch{return{ok:!1,error:"Couldn't reach registry.npmjs.org"}}if(!t.ok)return{ok:!1,error:`registry.npmjs.org returned an error (${t.status})`};try{let e=await t.json();return ec(e.version)?{ok:!0,version:e.version}:{ok:!1,error:"registry.npmjs.org answered without a version"}}catch{return{ok:!1,error:"registry.npmjs.org answered in a format the console doesn't recognise"}}}async function ep(e,t,a,s=process.env,o){let i=function(e=process.env){let t=e.WATCHBELL_VERSION?.trim();return ec(t)?t:null}(s);if(!i||"selfhost"!==(0,eu.c)(s)||ea(s).off)return;let l=t-Date.now();if(l<1e3)return;let u=await ef({fetch:o,timeoutMs:Math.min(6e3,l)});if(u.ok){let t={version:u.version,checkedAt:e.toISOString()};await (0,r.f)().insert(n.settings).values({key:"watchbell.latest",value:t}).onConflictDoUpdate({target:n.settings.key,set:{value:t,updatedAt:e}})}else a.push(`update check: ${u.error}`);await (0,r.f)().insert(n.settings).values({key:"watchbell.seenVersion",value:{version:i}}).onConflictDoNothing({target:n.settings.key})}var ew=e.i(515743),em=e.i(336030),eh=e.i(905685),eg=e.i(751762);e.i(794713);let ey="collector.lastRun",eb="vercel.backoffUntil",ek="vercel.currentMiss",ev={supabase:D.N,supabaseUsage:D.y,neon:D.h,firebase:D.g,firebaseUsage:D.x,extraDbs:N};async function eI(){let e=await (0,r.f)().select({key:n.settings.key,value:n.settings.value}).from(n.settings).where((0,t.y)(n.settings.key,[ey,A.Z])).limit(2);return{lastRun:e.find(e=>e.key===ey)?.value??{},afterDeploy:e.find(e=>e.key===A.Z)?.value??null}}async function eA(e){await (0,r.f)().insert(n.settings).values({key:ey,value:e}).onConflictDoUpdate({target:n.settings.key,set:{value:e,updatedAt:new Date}})}let eS=e=>(0,f.f)(e);async function e$(e,s,o,i,l=[]){let u=(await (0,r.f)().select({m:n.monitors,app:n.resources}).from(n.monitors).innerJoin(n.resources,(0,t.u)(n.resources.id,n.monitors.resourceId)).where((0,t.b)((0,t.u)(n.monitors.kind,"http"),(0,t.u)(n.monitors.paused,!1),(0,t.u)(n.monitors.ownerPaused,!1),(0,t.u)(n.resources.monitored,!0),(0,t.M)(n.resources.goneAt))).orderBy(a.B`${n.monitors.lastCheckedAt} asc nulls first`,n.monitors.id)).filter(({m:t})=>(0,J.B)(t.lastCheckedAt,e,i));if(!u.length)return 0;let d=await (0,F.P)(u,6,({m:e})=>{let t=(0,J.P)(e.timeoutMs,s,Date.now());return null===t?Promise.resolve(null):(0,F.b)(e.url,{expectedStatus:e.expectedStatus,timeoutMs:t,body:(0,ew.C)(e)})}),c=u.flatMap((e,t)=>d[t]?[{...e,r:d[t]}]:[]);if(c.length<u.length&&o.push(`checks: ${u.length-c.length} monitors skipped, time budget used`),!c.length)return 0;let f=[];for(let t of c)await (0,em.j)(t.m,t.r,e)&&f.push(t);return f.length?(await (0,r.f)().insert(n.checks).values(f.map(({m:t,app:a,r})=>({monitorId:t.id,at:e,ok:r.ok,statusCode:r.statusCode,latencyMs:r.latencyMs,error:r.error,inMaintenance:null!==(0,I.x)(l,{monitorId:t.id,appId:a.id},e)}))),await eS(f.map(({m:t,app:a,r})=>(0,eh.F)({resourceId:a.id,path:(0,$.K)(t.url),prev:t.state,next:(0,eh.G)(t.failStreak,r).state,code:r.statusCode,error:r.error,at:e}))),f.length):0}let eD=["checks","heartbeats"];async function ex(e,t,a=c.f){if(!eD.some(t=>e.includes(t)))return[];try{return await a()}catch(e){return t.push(`maintenance: ${(0,eg.f)(e)}`),[]}}async function eE(e){let[a]=await (0,r.f)().select().from(n.settings).where((0,t.u)(n.settings.key,eb)).limit(1),s=a?.value?.until;return!!s&&e.getTime()<new Date(s).getTime()}async function ej(e,t){if("transient"!==e.kind||!e.retryAfterS)return!1;let a={until:new Date(t.getTime()+1e3*Math.min(e.retryAfterS,3600)).toISOString()};return await (0,r.f)().insert(n.settings).values({key:eb,value:a}).onConflictDoUpdate({target:n.settings.key,set:{value:a,updatedAt:t}}),!0}let eM=e=>a.B`coalesce(${n.deployments.externalId} = ${e}::text, false)`;async function eO(e,s,o,i,l=b.m){let u=[];try{for(let l of e){let e=s.filter(e=>e.resourceId===l.id),{currentId:d,previousId:c}=(0,$.a)(e.map(e=>({id:e.id,createdAt:e.createdAt??new Date(0)})),(l.externalId?o.get(l.externalId):null)??null),f=await (0,r.f)().update(n.deployments).set({isCurrent:eM(d),isPreviousProduction:eM(c),updatedAt:i.now}).where((0,t.b)((0,t.u)(n.deployments.resourceId,l.id),(0,t.F)(a.B`${n.deployments.isCurrent} is distinct from ${eM(d)}`,a.B`${n.deployments.isPreviousProduction} is distinct from ${eM(c)}`))).returning({id:n.deployments.externalId}),p=(0,A.X)({appId:l.id,currentId:d,changedIds:f.map(e=>e.id),createdAt:e.find(e=>e.id===d)?.createdAt??null,state:i.afterDeploy,now:i.now});p&&u.push({appId:l.id,deploymentId:p})}}finally{if(u.length)try{await l(u,i.now)}catch(e){i.errors.push(`vercel/${i.label}: after-deploy security check not scheduled: ${(0,eg.f)(e)}`)}}}let eR=e=>new Map(e.map(e=>[e.id,{...e.branchFrom?{branchFrom:e.branchFrom}:{},...e.gitDirty?{gitDirty:!0}:{}}]));async function eN(e,t,a,r,n=new Map,s=g.f){try{await s(e,t,n)}catch(e){a.push(`vercel/${r}: production source not saved: ${(0,eg.f)(e)}`)}}async function eC(e,a,s,i){if(await eE(e))return;let l=(0,v.f)().OPS_ENCRYPTION_KEY;for(let u of(await (0,r.f)().select().from(n.accounts).where((0,t.b)((0,t.u)(n.accounts.provider,"vercel"),(0,t.u)(n.accounts.status,"ok"))))){let d=(0,p.V)({ciphertext:u.credentialCiphertext,iv:u.credentialIv},l);if((0,o.A)(d)||!d){s.push(`vercel/${u.label}: credential can't be read`);continue}let c=await (0,r.f)().select().from(n.resources).where((0,t.b)((0,t.u)(n.resources.accountId,u.id),(0,t.u)(n.resources.kind,"app"),(0,t.u)(n.resources.monitored,!0),(0,t.M)(n.resources.goneAt)));if(!c.length)continue;let f=new Map(c.map(e=>[e.externalId,e])),w=await (0,S.X)(d);if(!w.ok){let a=(0,o.E)({ok:!1,kind:w.kind,error:w.error});if(a&&await (0,r.f)().update(n.accounts).set({...a,updatedAt:e}).where((0,t.u)(n.accounts.id,u.id)),s.push(`vercel/${u.label}: ${w.error}`),await ej(w,e))return;continue}let m=new Set(c.map(e=>String(e.meta.teamId)));for(let o of w.data.filter(e=>m.has(e.id))){if(Date.now()>a)return void s.push("vercel: skipped remaining teams, time budget used");let[l,u]=await Promise.all([(0,S.W)(d,o),(0,S.K)(d,o,{since:e.getTime()-6048e5,limit:100})]);if(!l.ok||!u.ok){let t=l.ok?u:l;if(s.push(`vercel/${o.name}: ${t.error}`),await ej(t,e))return;continue}let p=new Map(l.data.map(e=>[e.id,e.currentDeploymentId])),w=u.data.filter(e=>f.has(e.projectId)),m=eR(w),h=new Map((w.length?await (0,r.f)().select({externalId:n.deployments.externalId,state:n.deployments.state,target:n.deployments.target,branch:n.deployments.branch,commitSha:n.deployments.commitSha,commitMessage:n.deployments.commitMessage,source:n.deployments.source,url:n.deployments.url,buildingAt:n.deployments.buildingAt,readyAt:n.deployments.readyAt}).from(n.deployments).where((0,t.y)(n.deployments.externalId,w.map(e=>e.id))):[]).map(e=>[e.externalId,e])),g=[];for(let t of w){let a=f.get(t.projectId),s=h.get(t.id),o={state:t.state,target:t.target,branch:t.branch,commitSha:t.sha,commitMessage:t.message,source:t.source,url:t.url,buildingAt:t.buildingAt,readyAt:t.readyAt};if((0,$.E)(s,o)){let s={resourceId:a.id,externalId:t.id,...o,createdAtProvider:t.createdAt,updatedAt:e};await (0,r.f)().insert(n.deployments).values(s).onConflictDoUpdate({target:n.deployments.externalId,set:s})}g.push((0,eh.L)(s?.state,t,a.id,e))}await eS(g);let y=c.filter(e=>String(e.meta.teamId)===o.id),b=await (0,r.f)().select({resourceId:n.deployments.resourceId,id:n.deployments.externalId,createdAt:n.deployments.createdAtProvider}).from(n.deployments).where((0,t.b)((0,t.y)(n.deployments.resourceId,y.map(e=>e.id)),(0,t.u)(n.deployments.target,"production"),(0,t.u)(n.deployments.state,"ready"))),[k]=await (0,r.f)().select().from(n.settings).where((0,t.u)(n.settings.key,ek)).limit(1),v=[],I=()=>v.length?(0,r.f)().insert(n.settings).values({key:ek,value:(0,$.Y)(k?.value,v,e)}).onConflictDoUpdate({target:n.settings.key,set:{value:(0,$.Y)(k?.value,v,e),updatedAt:e}}):Promise.resolve();for(let t of(0,$.Q)(y,p,b,(0,$.S)(k?.value,e))){if(Date.now()>a)break;let i=await (0,S.S)(d,o,t.deploymentId);if(!i.ok){if(s.push(`vercel/${o.name}: current deployment: ${i.error}`),await ej(i,e))return void await I();v.push(t.deploymentId);continue}let l=i.data;for(let[e,t]of eR([l]))m.set(e,t);let u={resourceId:t.appId,externalId:l.id,state:l.state,target:l.target,branch:l.branch,commitSha:l.sha,commitMessage:l.message,source:l.source,url:l.url,buildingAt:l.buildingAt,readyAt:l.readyAt,createdAtProvider:l.createdAt,updatedAt:e};await (0,r.f)().insert(n.deployments).values(u).onConflictDoUpdate({target:n.deployments.externalId,set:u}),"ready"===l.state&&"production"===l.target?b.push({resourceId:t.appId,id:l.id,createdAt:l.createdAt}):v.push(t.deploymentId)}await I(),await eO(y,b,p,{now:e,afterDeploy:i,errors:s,label:o.name}),await eN(y,e,s,o.name,m)}}}async function eP(e){let o=await (0,r.f)().select().from(n.resources).where((0,t.b)((0,t.u)(n.resources.kind,"app"),(0,t.u)(n.resources.monitored,!0),(0,t.M)(n.resources.goneAt)));if(!o.length)return;let i=await (0,r.f)().select().from(n.monitors).where((0,t.b)((0,t.y)(n.monitors.resourceId,o.map(e=>e.id)),(0,t.u)(n.monitors.paused,!1),(0,t.u)(n.monitors.ownerPaused,!1))),l=new Set((await (0,r.f)().select({r:n.deployments.resourceId}).from(n.deployments).where((0,t.b)((0,t.y)(n.deployments.resourceId,o.map(e=>e.id)),(0,t.u)(n.deployments.target,"production"),(0,t.u)(n.deployments.state,"building"),(0,t.B)(n.deployments.createdAtProvider,new Date(e.getTime()-36e5))))).map(e=>e.r)),u=await (0,D.q)(o.map(e=>e.id)),d=new Map((await (0,r.f)().select().from(n.snapshots).where((0,t.y)(n.snapshots.resourceId,o.map(e=>e.id)))).map(e=>[e.resourceId,e])),c=new Map(o.map(e=>[e.id,e])),f=(0,s.P)(i.map(e=>({id:e.id,kind:e.kind,url:e.url,appId:e.resourceId,appName:c.get(e.resourceId)?.name??"",appMeta:c.get(e.resourceId)?.meta,lastError:e.lastError})),o),p=e=>f.has(e.id)&&"err"===e.state?"warn":e.state;for(let[e,l]of(0,s.R)(i.map(e=>({id:e.id,kind:e.kind,url:e.url,appId:e.resourceId,appName:c.get(e.resourceId)?.name??"",appMeta:c.get(e.resourceId)?.meta,lastError:e.lastError})),o))await (0,r.f)().update(n.resources).set({meta:a.B`${n.resources.meta} || ${JSON.stringify({pastDomains:l})}::jsonb`}).where((0,t.u)(n.resources.id,e));for(let t of o){let s=i.filter(e=>e.resourceId===t.id),o=(0,eh.V)({monitors:s.map(p),building:l.has(t.id),dbPaused:u.has(t.id)}),c=s.find(e=>"err"===e.state)??s.find(e=>"warn"===e.state),f={code:c?.lastStatus??null,latencyMs:s.find(e=>"heartbeat"!==e.kind)?.lastLatencyMs??null,dbPaused:u.has(t.id)},w=d.get(t.id);await (0,r.f)().insert(n.snapshots).values({resourceId:t.id,state:o,data:f,collectedAt:e,stateSince:e}).onConflictDoUpdate({target:n.snapshots.resourceId,set:{state:o,data:a.B`${n.snapshots.data} || ${JSON.stringify(f)}::jsonb`,collectedAt:e,...w?.state!==o?{stateSince:e}:{}}})}}async function eT(e,t={}){let a={writeLastRun:eA,refreshApps:eP,refreshNetwork:K.x,invalidate:i.f,...t};try{await a.writeLastRun({...e.lastRun,...Object.fromEntries(e.done.map(t=>[t,e.started.toISOString()]))});try{await a.refreshApps(new Date)}catch(t){e.errors.push(`app-snapshots: ${(0,eg.f)(t)}`)}if(e.done.some(e=>K.p.includes(e)))try{await a.refreshNetwork(new Date)}catch(t){e.errors.push(`network-states: ${(0,eg.f)(t)}`)}}finally{a.invalidate((0,l.o)(e.tried??e.done))}}async function ez(e,t,a,r={evaluate:u.$,deliver:m.q,digest:m.J}){let n=[];if(e.includes("alerts"))if(Date.now()>t)a.push("alerts: skipped, time budget used");else{let e=!0;try{await r.evaluate(new Date),console.info("collector alerts evaluated")}catch(t){e=!1,a.push(`alerts: ${(0,eg.f)(t)}`)}try{await r.deliver(new Date,t),console.info("collector notifications delivered")}catch(t){e=!1,a.push(`notify: ${(0,eg.f)(t)}`)}e&&n.push("alerts")}if(e.includes("digest")&&(0,J.z)("digest",t,Date.now()))try{await r.digest(new Date),console.info("collector digest done"),n.push("digest")}catch(e){a.push(`digest: ${(0,eg.f)(e)}`)}return n}async function eB(e,t,a,r){let n=[],s=[];for(let o of e){if(Date.now()>t){a.push(`${o}: skipped, time budget used`);continue}if((0,J.z)(o,t,Date.now())){s.push(o);try{await r(o),n.push(o)}catch(e){a.push(`${o}: ${(0,eg.f)(e)}`)}}}return{done:n,tried:s}}async function e_(e){let a,s=new Date,o=await Y(s);if(!o)return{skipped:!0,ok:!0,tasks:[],checks:0,durationMs:0,errors:[]};try{[a]=await (0,r.f)().insert(n.collectorRuns).values({startedAt:s,trigger:"builtin"===e?"manual":e}).returning({id:n.collectorRuns.id})}catch(e){throw await q(o).catch(()=>void 0),e}let i=[],l=[],u=0,c=s.getTime()+J.p,f=e=>console.info(`collector ${e} +${Date.now()-s.getTime()}ms`);try{f("start");let{lastRun:t,afterDeploy:a}=await eI(),r="cron_job_org"!==e&&"builtin"!==e,n=await (0,h.I)(),{due:o,early:p}=(0,J._)((0,J.S)(t,s,r,n),(0,b.Y)(a),n),m=!1,g=e=>p||!m?e.filter(e=>"security"!==e):e,v=o.filter(e=>J.u.includes(e)),S=v.includes("alerts")?c-J.X:c,$=await ex(o,i);f(`due ${o.join(",")}`);let{done:D,tried:x}=await eB(o.filter(e=>!J.u.includes(e)),S,i,async e=>{if(f(`task ${e}`),"heartbeats"===e){let e=new Date;u+=await (0,d.r)(e,(t,a)=>null!==(0,I.x)($,{monitorId:t,appId:a},e),r)}"checks"===e&&(u+=await e$(new Date,S,i,r,$)),"vercel"===e&&await eC(new Date,S,i,(0,A.Y)(a));let t=ev[e];t&&await t({now:new Date,deadline:S,errors:i,protectOnly:(0,J.$)(e,n)}),"cloudflare"===e&&await (0,K.h)(new Date,S,i),"domains"===e&&await (0,K.H)(new Date,S,i),"tls"===e&&await (0,K.V)(new Date,S,i),"rdap"===e&&await (0,K.W)(new Date,S,i),"eol"===e&&await (0,K.i)(new Date,S,i),"node"===e&&(await el(new Date,S,i),await ep(new Date,S,i)),"status"===e&&await (0,k.i)(new Date),"logs"===e&&await (0,w._)(new Date,S,i),"pageviews"===e&&await (0,y.f)(new Date,S,i),"security"===e&&(m=(await (0,b.U)({now:s,deadline:S,errors:i,paused:n,early:p})).complete)});l.push(...D),f("main done"),await eT({lastRun:t,done:g(l),tried:x,started:s,errors:i}),f("settled");let E=await ez(v,c,i);f("post done"),E.length&&await eA({...t,...Object.fromEntries(g([...l,...E]).map(e=>[e,s.toISOString()]))}),l.push(...E)}catch(e){i.push(`run: ${(0,eg.f)(e)}`)}finally{let e=Date.now()-s.getTime();await (0,r.f)().update(n.collectorRuns).set({finishedAt:new Date,ok:0===i.length,errorSummary:i.join("\n").slice(0,2e3)||null,durationMs:e,tasks:l,checks:u}).where((0,t.u)(n.collectorRuns.id,a.id)).catch(()=>void 0),await q(o).catch(()=>void 0)}return{skipped:!1,ok:0===i.length,tasks:l,checks:u,durationMs:Date.now()-s.getTime(),errors:i}}e.s(["f",0,e_],956846)},703352,948736,873354,655060,e=>{var t=e.i(875225),a=e.i(518899),r=e.i(924924),n=e.i(618916),s=e.i(502240);async function o(e,i,l=new Map){if(!e.length)return 0;let u=await (0,r.f)().select({app:n.deployments.resourceId,id:n.deployments.externalId,source:n.deployments.source,branch:n.deployments.branch,sha:n.deployments.commitSha}).from(n.deployments).where((0,t.b)((0,t.y)(n.deployments.resourceId,e.map(e=>e.id)),(0,t.u)(n.deployments.isCurrent,!0))),d=0;for(let o of e){let e,c=u.find(e=>e.app===o.id);if(!c)continue;let f=(0,s.O)(o.meta?.productionSource),p=l.get(c.id),w={source:c.source??null,branch:c.branch??null,sha:c.sha??null};if(!(e=p?(0,s.s)({...w,branchFrom:p.branchFrom??null,gitDirty:!0===p.gitDirty}):f?.id===c.id?{kind:f.kind,...f.ref?{ref:f.ref}:{},...f.sha?{sha:f.sha}:{}}:"git"===w.source||"cli"===w.source?(0,s.s)(w):null)){if(f?.at&&f.id!==c.id){let e={...f};delete e.at,await (0,r.f)().update(n.resources).set({meta:a.B`${n.resources.meta} || ${JSON.stringify({productionSource:e})}::jsonb`}).where((0,t.u)(n.resources.id,o.id)),d++}continue}e={...e,id:c.id};let m=!!f?.at&&i.getTime()-Date.parse(f.at)<s.u;if((0,s.v)(f,e)&&m)continue;let h={...e,at:i.toISOString()};await (0,r.f)().update(n.resources).set({meta:a.B`${n.resources.meta} || ${JSON.stringify({productionSource:h})}::jsonb`}).where((0,t.u)(n.resources.id,o.id)),d++}return d}e.s(["f",0,o],703352);var i=e.i(442473),l=e.i(381725),u=e.i(767512),d=e.i(971724),c=e.i(206033),f=e.i(455744),p=e.i(469755),w=e.i(105954),m=e.i(857897);let h=/not enabled/i,g=(e,t,a={})=>({ok:!1,kind:e,error:t,...a}),y="Vercel Web Analytics answered in a format the console doesn't recognise.",b=d.z.object({data:d.z.object({pageviews:c.z.number().finite().nonnegative(),visitors:c.z.number().finite().nonnegative()})}),k=d.z.object({data:f.z.array(p.z.unknown())}),v=d.z.object({timestamp:w.z.string().transform((e,t)=>{let a=Date.parse(e);return Number.isNaN(a)?(t.addIssue({code:"custom",message:"bad timestamp"}),m.z.NEVER):a}),pageviews:c.z.number().finite().nonnegative().nullish().catch(null)});async function I(e,t,a,r){let n=r.since.toISOString(),s=r.until.toISOString(),o=r.fetch??fetch,l=new AbortController,u=setTimeout(()=>l.abort(new DOMException("window","TimeoutError")),r.timeoutMs??8e3),d=r.signal?AbortSignal.any([l.signal,r.signal]):l.signal,c=(0,i.X)(d);async function f(i,u){let f=new URLSearchParams({projectId:a,teamId:t,...u,since:n,until:s});try{let t=await Promise.race([o(`https://api.vercel.com/v1/query/web-analytics/visits/${i}?${f}`,{headers:{Authorization:`Bearer ${e}`,Accept:"application/json"},signal:d,cache:"no-store"}),c]),a=null,r=!1;if(401===t.status||403===t.status)a=g("auth",`Vercel rejected this credential (${t.status}).`,{status:t.status});else if(429===t.status){let e=Number(t.headers.get("Retry-After"));a=g("transient","Vercel says there were too many requests.",{status:429,retryAfterS:Number.isFinite(e)&&e>0?e:60})}else if(400===t.status){let e=await Promise.race([t.text(),c]).catch(()=>"");h.test(e)?r=!0:a=g("transient","Vercel Web Analytics rejected the request (400).",{status:400})}else t.ok||(a=g("transient",`Vercel Web Analytics returned an error (${t.status}).`,{status:t.status}));if(r)return{kind:"off"};if(a)return await t.body?.cancel().catch(()=>void 0),{kind:"fail",fail:a};try{return{kind:"body",body:await Promise.race([t.json(),c])}}catch(e){if(d.aborted)throw e;return{kind:"fail",fail:g("format",y)}}}catch{return{kind:"fail",fail:d.aborted?l.signal.aborted&&!r.signal?.aborted?g("transient","Vercel Web Analytics didn't answer in time."):g("transient","Reading Vercel Web Analytics was cancelled."):g("transient","Couldn't reach Vercel Web Analytics.")}}}try{let[e,t]=await Promise.all([f("count",{}),f("aggregate",{by:"hour"})]);if("off"===e.kind||"off"===t.kind)return{ok:!0,enabled:!1};let a=[e,t].flatMap(e=>"fail"===e.kind?[e.fail]:[]),r=a.find(e=>"auth"===e.kind);if(r)return r;let n="body"===t.kind?k.safeParse(t.body):null,s="fail"===t.kind?t.fail:n?.success?null:g("format",y),o=a.find(e=>"transient"===e.kind);if(o)return o;if(s)return s;if(!n?.success)return g("format",y);let i="body"===e.kind?b.safeParse(e.body):null,l=n.data.data.flatMap(e=>{let t=v.safeParse(e);return t.success?[t.data]:[]});if(l.length>0&&l.every(e=>null==e.pageviews))return g("format",y);let u=new Map;for(let e of l){let t=36e5*Math.floor(e.timestamp/36e5);u.set(t,(u.get(t)??0)+(e.pageviews??0))}let d=[...u].sort((e,t)=>e[0]-t[0]).slice(-24).map(([e,t])=>({at:new Date(e),views:t}));if(i?.success)return{ok:!0,enabled:!0,total:i.data.data.pageviews,visitors:i.data.data.visitors,hourly:d};return{ok:!0,enabled:!0,total:d.reduce((e,t)=>e+t.views,0),visitors:null,hourly:d}}finally{clearTimeout(u),l.abort()}}var A=e.i(943816);async function S(e,t,a){let r=await (0,l.g)(null);if(!r.length)return;let n=new Date(36e5*Math.floor(e.getTime()/36e5)-828e5);await (0,i.P)(r,3,async r=>{if(Date.now()+8500>t)return;let s=await I(r.token,r.teamId,r.projectId,{since:n,until:e});if(!s.ok)return void a.push(`pageviews/${r.appName}: ${s.error}`);try{await (0,u.r)(r.appId,{pageviews:(0,A.Z)(s,e)},e)}catch{a.push(`pageviews/${r.appName}: couldn't save the page views`)}})}e.s(["f",0,S],948736);var $=e.i(422067),D=e.i(433609),x=e.i(800523),E=e.i(479301);let j="security.afterDeploy",M=e=>"object"==typeof e&&null!==e&&!Array.isArray(e),O=e=>"string"==typeof e&&e.length>0&&e.length<=100;function R(e){let t={pending:{},checked:{}};if(!M(e))return t;if(M(e.pending))for(let[a,r]of Object.entries(e.pending)){if(!(0,E.f)(a)||!M(r)||!O(r.id)||"string"!=typeof r.at||Number.isNaN(Date.parse(r.at)))continue;let e="number"==typeof r.attempts&&Number.isInteger(r.attempts)&&r.attempts>=0?Math.min(r.attempts,3):0;t.pending[a]={id:r.id,at:r.at,attempts:e,...!0===r.next?{next:!0}:{},...!0===r.deps?{deps:!0}:{}}}if(M(e.checked))for(let[a,r]of Object.entries(e.checked))(0,E.f)(a)&&O(r)&&(t.checked[a]=r);return t}let N=e=>Object.keys(e.pending).length>0;function C(e,t,a){let r={pending:{...e.pending},checked:{...e.checked}},n=!1;for(let e of t)(0,E.f)(e.appId)&&O(e.deploymentId)&&r.checked[e.appId]!==e.deploymentId&&r.pending[e.appId]?.id!==e.deploymentId&&(r.pending[e.appId]={id:e.deploymentId,at:a.toISOString(),attempts:0},n=!0);return{state:r,changed:n}}function P(e,t){let a,r={...e.pending},n={...e.checked};for(let e of t){let t=r[e];t&&(delete r[e],delete n[e],n[e]=t.id)}return{pending:r,checked:(a=Object.entries(n)).length<=500?n:Object.fromEntries(a.slice(a.length-500))}}function T(e,t){let a=Object.entries(e.pending).filter(([,e])=>t.getTime()-Date.parse(e.at)>216e5).map(([e])=>e);return a.length?P(e,a):e}let z=(e,t)=>Object.entries(e.pending).filter(([,e])=>!e[t]).map(([e])=>e);function B(e,t){let a={},r=[];for(let[n,s]of Object.entries(e.pending)){let e={...s};t.hosting&&!e.next&&(t.nextDone?.has(n)?e.next=!0:t.nextStarted?.has(n)&&(e.attempts=Math.min(e.attempts+1,3))),t.devops&&!e.deps&&t.depsDone?.has(n)&&(e.deps=!0),a[n]=e,((e.next||!t.hosting)&&(e.deps||!t.devops)||e.attempts>=3)&&r.push(n)}return P({pending:a,checked:e.checked},r)}e.s(["Z",0,j,"X",0,function(e){var t,a;let r=e.currentId;return r&&e.state.checked[e.appId]!==r&&e.state.pending[e.appId]?.id!==r&&(t=e.changedIds,((a=r)&&t.includes(a)?a:null)||e.createdAt&&e.now.getTime()-e.createdAt.getTime()<=216e5)?r:null},"a",0,T,"A",0,N,"B",0,C,"p",0,z,"Y",0,R,"E",0,B],873354);var _=e.i(970465);let W="security.slot",U=e=>Array.isArray(e)?e.filter(e=>"string"==typeof e&&e.length>0&&e.length<=100).slice(0,1e3):[],F=(e,t)=>[...new Set([...e,...t])].slice(0,1e3),V=e=>async()=>{let[a]=await (0,r.f)().select({value:n.settings.value}).from(n.settings).where((0,t.u)(n.settings.key,e)).limit(1);return a?.value??null},L=e=>async t=>{await (0,r.f)().insert(n.settings).values({key:e,value:t}).onConflictDoUpdate({target:n.settings.key,set:{value:t,updatedAt:new Date}})},J={read:V(j),write:L(j),readSlot:V(W),writeSlot:L(W),nextCheck:x.h,depsStep:(e,t)=>(0,D.O)(e,t)};async function Y(e,t=J){let a=R(await t.read()),r=T(a,e.now),n=!e.paused.has("hosting"),s=!e.paused.has("devops"),o=n?z(r,"next"):[],i=s?z(r,"deps"):[],l=e.early?null:function(e,t){let a=e&&"object"==typeof e&&!Array.isArray(e)?e:{};if(a.slot!==t)return{slot:t,runs:0,next:[],repos:[],cut:{},nextDone:!1,depsDone:!1};let r="number"==typeof a.runs&&Number.isInteger(a.runs)&&a.runs>=0?a.runs:0,n={};if(a.cut&&"object"==typeof a.cut&&!Array.isArray(a.cut))for(let[e,t]of Object.entries(a.cut).slice(0,1e3))e.length<=100&&"number"==typeof t&&Number.isInteger(t)&&t>0&&(n[e]=Math.min(t,2));return{slot:t,runs:r,next:U(a.next),repos:U(a.repos),cut:n,nextDone:!0===a.nextDone,depsDone:!0===a.depsDone}}(await t.readSlot(),new Date((0,$.G)("security",e.now)).toISOString()),u=!!l&&n&&!l.nextDone,d=!!l&&s&&!l.depsDone,c=n&&(o.length>0||u),f=s&&(i.length>0||d),p={hosting:n,devops:s,nextDone:new Set,nextStarted:new Set,depsDone:new Set},w=async()=>{let a=Math.min(Date.now()+_.y,!l&&f?e.deadline-2*D.d:e.deadline),r=u?[...l.next,...Object.entries(l.cut).filter(([,e])=>e>=2).map(([e])=>e)]:[],n=u?{first:o,skip:[...new Set(r)].filter(e=>!o.includes(e))}:{only:o},s=await t.nextCheck(a,n);for(let t of s.failed)e.errors.push(`security ${t}`);for(let e of s.done)p.nextDone.add(e);for(let e of o)s.listed.includes(e)||p.nextDone.add(e);for(let e of s.started)p.nextStarted.add(e);if(u){let e=new Set(s.done);for(let t of(l.next=F(l.next,s.done),s.started))e.has(t)||(l.cut[t]=Math.min((l.cut[t]??0)+1,2));l.nextDone=s.listed.every(t=>e.has(t)||(l.cut[t]??0)>=2)}},m=async()=>{let a=await t.depsStep(Math.min(Date.now()+D.o,e.deadline),d?{marked:i,onlyMarked:!1,skip:l.repos}:{marked:i,onlyMarked:!0});for(let t of(a.problem&&e.errors.push(`security deps: ${a.problem}`),a.settled))p.depsDone.add(t);d&&(l.repos=F(l.repos,a.done),l.depsDone=a.complete)};try{l&&l.runs++,l?(f&&await m(),c&&await w()):(c&&await w(),f&&await m())}finally{let e=null;if(l)try{await t.writeSlot(l)}catch(t){e=t}try{let e=B(r,p);JSON.stringify(e)!==JSON.stringify(a)&&await t.write(e)}catch(t){e??=t}if(e)throw e}return{complete:!l||(l.nextDone||!n)&&(l.depsDone||!s)||l.runs>=20}}async function q(e,t,a=J){if(!e.length)return!1;let{state:r,changed:n}=C(R(await a.read()),e,t);return n&&await a.write(r),n}e.s(["m",0,q,"Y",0,e=>N(R(e)),"U",0,Y],655060)}]})();
8
8
 
9
9
  //# sourceMappingURL=src_lib_1sdusf16f07x-._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[927262,e=>{"use strict";let n=e=>(e??0).toLocaleString("en-US"),o={MonitorDown:{key:"MonitorDown",severity:"critical",threshold:3,bounds:[1,10],source:"own",needs:null,sampled:!0,condition:e=>`${n(e)} failed checks in a row`},CollectorStale:{key:"CollectorStale",severity:"critical",threshold:5,bounds:[3,60],source:"own",needs:null,sampled:!1,condition:e=>`No collector run for ${n(e)} min`},HighLatency:{key:"HighLatency",severity:"warning",threshold:1500,bounds:[100,3e4],source:"own",needs:null,sampled:!0,condition:e=>`p95 > ${n(e)} 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:e=>`TLS certificate expires in < ${n(e)} days`},DomainExpiringSoon:{key:"DomainExpiringSoon",severity:"warning",threshold:30,bounds:[1,180],source:"api",needs:"domains",sampled:!1,condition:e=>`Domain expires in < ${n(e)} days`},StorageAlmostFull:{key:"StorageAlmostFull",severity:"warning",threshold:80,bounds:[10,100],source:"api",needs:"databases",sampled:!1,condition:e=>`Database size > ${n(e)}% of free limit`},NeonComputeHigh:{key:"NeonComputeHigh",severity:"warning",threshold:80,bounds:[1,100],source:"api",needs:"databases",sampled:!1,condition:e=>`> ${n(e)} of 100 CU-hours this month`},FirestoreQuotaHigh:{key:"FirestoreQuotaHigh",severity:"warning",threshold:80,bounds:[10,100],source:"test",needs:"databases",sampled:!1,condition:e=>`Daily reads > ${n(e)}% of 50k`},AutoPauseRisk:{key:"AutoPauseRisk",severity:"info",threshold:4,bounds:[1,6],source:"api",needs:"databases",sampled:!1,condition:e=>`Supabase project without API traffic for ${n(e)}+ 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:e=>`Supabase CPU > ${n(e)}% for 15 min, RAM > ${n(Math.min(99,(e??80)+10))}%, disk > ${n(e)}% or connections > ${n(e)}% of max`},DbQuotaHigh:{key:"DbQuotaHigh",severity:"warning",threshold:80,bounds:[10,100],source:"api",needs:"databases",sampled:!1,condition:e=>`Turso, Upstash or D1 usage > ${n(e)}% of a free-plan quota`},CredentialExpiring:{key:"CredentialExpiring",severity:"warning",threshold:14,bounds:[1,60],source:"api",needs:null,sampled:!1,condition:e=>`Account credential expires in < ${n(e)} 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"}},s=Object.keys(o),i=["critical","warning","info"],r=["telegram","discord","email_digest"];e.s(["_",0,o,"u",0,s,"h",0,e=>"string"==typeof e&&e in o,"N",0,function(e,s){let a=o[e],t={},d=i.find(e=>e===s.severity);d||(t.severity="Pick a severity.");let l=null;if(a.bounds){let e=String(s.threshold??"").replace(/,/g,"").trim(),o=/^\d+$/.test(e)?Number(e):0/0;!Number.isInteger(o)||o<a.bounds[0]||o>a.bounds[1]?t.threshold=`Enter a whole number from ${n(a.bounds[0])} to ${n(a.bounds[1])}.`:l=o}let u=Array.isArray(s.channels)?s.channels:[];return(u.every(e=>r.includes(e))||(t.channels="Pick from Telegram, Discord and the daily digest."),Object.keys(t).length||!d)?{ok:!1,fieldErrors:t}:{ok:!0,value:{severity:d,threshold:l,channels:[...new Set(u)],enabled:!0===s.enabled}}}])}];
1
+ module.exports=[927262,e=>{"use strict";let o=e=>(e??0).toLocaleString("en-US"),n={MonitorDown:{key:"MonitorDown",severity:"critical",threshold:3,bounds:[1,10],source:"own",needs:null,sampled:!0,condition:e=>`${o(e)} failed checks in a row`},CollectorStale:{key:"CollectorStale",severity:"critical",threshold:5,bounds:[3,60],source:"own",needs:null,sampled:!1,condition:e=>`No collector run for ${o(e)} min`},HighLatency:{key:"HighLatency",severity:"warning",threshold:1500,bounds:[100,3e4],source:"own",needs:null,sampled:!0,condition:e=>`Slowest 5% of checks over ${o(e)} 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:e=>`TLS certificate expires in < ${o(e)} days`},DomainExpiringSoon:{key:"DomainExpiringSoon",severity:"warning",threshold:30,bounds:[1,180],source:"api",needs:"domains",sampled:!1,condition:e=>`Domain expires in < ${o(e)} days`},StorageAlmostFull:{key:"StorageAlmostFull",severity:"warning",threshold:80,bounds:[10,100],source:"api",needs:"databases",sampled:!1,condition:e=>`Database size > ${o(e)}% of free limit`},NeonComputeHigh:{key:"NeonComputeHigh",severity:"warning",threshold:80,bounds:[1,100],source:"api",needs:"databases",sampled:!1,condition:e=>`> ${o(e)} of 100 CU-hours this month`},FirestoreQuotaHigh:{key:"FirestoreQuotaHigh",severity:"warning",threshold:80,bounds:[10,100],source:"test",needs:"databases",sampled:!1,condition:e=>`Daily reads > ${o(e)}% of 50k`},AutoPauseRisk:{key:"AutoPauseRisk",severity:"info",threshold:4,bounds:[1,6],source:"api",needs:"databases",sampled:!1,condition:e=>`Supabase project without API traffic for ${o(e)}+ 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:e=>`Supabase CPU > ${o(e)}% for 15 min, RAM > ${o(Math.min(99,(e??80)+10))}%, disk > ${o(e)}% or connections > ${o(e)}% of max`},DbQuotaHigh:{key:"DbQuotaHigh",severity:"warning",threshold:80,bounds:[10,100],source:"api",needs:"databases",sampled:!1,condition:e=>`Turso, Upstash or D1 usage > ${o(e)}% of a free-plan quota`},CredentialExpiring:{key:"CredentialExpiring",severity:"warning",threshold:14,bounds:[1,60],source:"api",needs:null,sampled:!1,condition:e=>`Account credential expires in < ${o(e)} 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"}},s=Object.keys(n),i=e=>"string"==typeof e&&e in n,r=["critical","warning","info"],a=["telegram","discord","webhook","smtp","email_digest"],t={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"};e.s(["_",0,n,"u",0,s,"$",0,t,"h",0,i,"N",0,function(e,s){let i=n[e],t={},d=r.find(e=>e===s.severity);d||(t.severity="Pick a severity.");let l=null;if(i.bounds){let e=String(s.threshold??"").replace(/,/g,"").trim(),n=/^\d+$/.test(e)?Number(e):0/0;!Number.isInteger(n)||n<i.bounds[0]||n>i.bounds[1]?t.threshold=`Enter a whole number from ${o(i.bounds[0])} to ${o(i.bounds[1])}.`:l=n}let u=Array.isArray(s.channels)?s.channels:[];return(u.every(e=>a.includes(e))||(t.channels="Pick from Telegram, Discord and the daily digest."),Object.keys(t).length||!d)?{ok:!1,fieldErrors:t}:{ok:!0,value:{severity:d,threshold:l,channels:[...new Set(u)],enabled:!0===s.enabled}}},"v",0,e=>i(e)?t[e]:e])}];
2
2
 
3
3
  //# sourceMappingURL=src_lib_alerts_catalog_ts_1ndg28acul64q._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[109307,600079,e=>{"use strict";var r=e.i(93321);e.i(570396);var t=e.i(673727),i=e.i(800717),n=e.i(548734),a=e.i(837137),o=e.i(745614),s=e.i(19809),u=e.i(371289);class c extends Error{reason;constructor(e){super(e),this.reason=e}}let l={"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 d(e,r,i,n){try{let t=await i.requireActionMember(e);if((0,u.W)()){if(!n)return{ok:!1,error:s.Y};return await ("local"===n?r(t):n(t))}return await r(t)}catch(r){if((0,t.unstable_rethrow)(r),r instanceof c)return{ok:!1,error:l[r.reason]};if((0,s.h)(r))return{ok:!1,error:s.Y};let e=(0,u.W)()?(0,o.E)(r):null;if(e)return{ok:!1,error:e};return console.error("action failed:",r instanceof Error?r.name:"unknown"),{ok:!1,error:"Something went wrong. Try again."}}}e.s(["W",0,c,"F",0,d],600079);var m=e.i(366443),w=e.i(753682),f=e.i(221246);let h=(0,i.cache)(async()=>(0,m.f)().sessionUser()),g="/auth/session-ended";async function b(e,r){if("aal2"===r)return"ok";let t=await (0,m.f)().hasVerifiedFactor(e.userId);return"signed-out"===t?"signed-out":(0,w.f)({role:e.role,aal:r,hasVerifiedFactor:t})}async function y(){let e=await h();e||(0,t.redirect)("/signin");let r=await p(e.userId);r||(0,t.redirect)("/auth/not-member");let i=await b(r,e.aal);return"signed-out"===i&&(0,t.redirect)(g),{member:r,step:i}}let p=(0,i.cache)(async e=>{let[t]=await (0,n.f)().select({id:a.members.id,userId:a.members.userId,email:a.members.email,role:a.members.role}).from(a.members).where((0,r.u)(a.members.userId,e)).limit(1);return t??null});async function k(e){let[t]=await (0,n.f)().select().from(a.invites).where((0,r.b)((0,r.u)(a.invites.email,e),(0,r.M)(a.invites.acceptedAt),(0,r.H)(a.invites.expiresAt,new Date))).limit(1);return t??null}async function v(){let e=await h();e||(0,t.redirect)("/signin");let r=await p(e.userId);if(r){let i=await b(r,e.aal);return"signed-out"===i&&(0,t.redirect)(g),"setup"===i&&(0,t.redirect)("/mfa/setup"),"challenge"===i&&(0,t.redirect)("/mfa"),e.mustChangePassword&&(0,t.redirect)("/account/password"),r}e.email&&await k(e.email)&&(0,t.redirect)("/invite"),(0,t.redirect)("/auth/not-member")}async function I(e){let r=await v();return{ok:(0,f.L)(r.role,e),member:r}}async function Y(e){let r=await h();if(!r)throw new c("signed-out");let t=await p(r.userId);if(!t)throw new c("not-member");if(!(0,f.L)(t.role,e))throw new c("forbidden");let i=await b(t,r.aal);if("signed-out"===i)throw new c("signed-out");if("ok"!==i)throw new c("mfa");if(r.mustChangePassword)throw new c("password-change");return t}e.s(["F",0,y,"M",0,k,"x",0,h,"B",0,I,"g",0,Y,"I",0,v],109307)}];
1
+ module.exports=[109307,600079,e=>{"use strict";var r=e.i(93321);e.i(570396);var t=e.i(673727),i=e.i(800717),n=e.i(548734),a=e.i(837137),o=e.i(745614),s=e.i(19809),u=e.i(371289);class l extends Error{reason;constructor(e){super(e),this.reason=e}}let c={"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 d(e,r,i,n){try{let t=await i.requireActionMember(e);if((0,u.W)()){if(!n)return{ok:!1,error:s.Y};return await ("local"===n?r(t):n(t))}return await r(t)}catch(r){if((0,t.unstable_rethrow)(r),r instanceof l)return{ok:!1,error:c[r.reason]};if((0,s.h)(r))return{ok:!1,error:s.Y};let e=(0,u.W)()?(0,o.E)(r):null;if(e)return{ok:!1,error:e};return console.error("action failed:",r instanceof Error?r.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."}}}e.s(["W",0,l,"F",0,d],600079);var m=e.i(366443),f=e.i(753682),w=e.i(221246);let h=(0,i.cache)(async()=>(0,m.f)().sessionUser()),g="/auth/session-ended";async function b(e,r){if("aal2"===r)return"ok";let t=await (0,m.f)().hasVerifiedFactor(e.userId);return"signed-out"===t?"signed-out":(0,f.f)({role:e.role,aal:r,hasVerifiedFactor:t})}async function y(){let e=await h();e||(0,t.redirect)("/signin");let r=await p(e.userId);r||(0,t.redirect)("/auth/not-member");let i=await b(r,e.aal);return"signed-out"===i&&(0,t.redirect)(g),{member:r,step:i}}let p=(0,i.cache)(async e=>{let[t]=await (0,n.f)().select({id:a.members.id,userId:a.members.userId,email:a.members.email,role:a.members.role}).from(a.members).where((0,r.u)(a.members.userId,e)).limit(1);return t??null});async function k(e){let[t]=await (0,n.f)().select().from(a.invites).where((0,r.b)((0,r.u)(a.invites.email,e),(0,r.M)(a.invites.acceptedAt),(0,r.H)(a.invites.expiresAt,new Date))).limit(1);return t??null}async function v(){let e=await h();e||(0,t.redirect)("/signin");let r=await p(e.userId);if(r){let i=await b(r,e.aal);return"signed-out"===i&&(0,t.redirect)(g),"setup"===i&&(0,t.redirect)("/mfa/setup"),"challenge"===i&&(0,t.redirect)("/mfa"),e.mustChangePassword&&(0,t.redirect)("/account/password"),r}e.email&&await k(e.email)&&(0,t.redirect)("/invite"),(0,t.redirect)("/auth/not-member")}async function I(e){let r=await v();return{ok:(0,w.L)(r.role,e),member:r}}async function Y(e){let r=await h();if(!r)throw new l("signed-out");let t=await p(r.userId);if(!t)throw new l("not-member");if(!(0,w.L)(t.role,e))throw new l("forbidden");let i=await b(t,r.aal);if("signed-out"===i)throw new l("signed-out");if("ok"!==i)throw new l("mfa");if(r.mustChangePassword)throw new l("password-change");return t}e.s(["F",0,y,"M",0,k,"x",0,h,"B",0,I,"g",0,Y,"I",0,v],109307)}];
2
2
 
3
3
  //# sourceMappingURL=src_lib_auth_ts_11yt3pae6wy-o._.js.map