watchbell 1.2.4 → 1.2.6

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 (678) hide show
  1. package/package.json +1 -1
  2. package/server/.next/BUILD_ID +1 -1
  3. package/server/.next/build-manifest.json +3 -3
  4. package/server/.next/prerender-manifest.json +3 -3
  5. package/server/.next/required-server-files.json +1 -1
  6. package/server/.next/server/app/(console)/(private)/ai/agents/page/server-reference-manifest.json +22 -12
  7. package/server/.next/server/app/(console)/(private)/ai/agents/page.js +60 -60
  8. package/server/.next/server/app/(console)/(private)/ai/agents/page.js.nft.json +1 -1
  9. package/server/.next/server/app/(console)/(private)/ai/agents/page_client-reference-manifest.js +1 -1
  10. package/server/.next/server/app/(console)/(private)/ai/ask/page/server-reference-manifest.json +21 -11
  11. package/server/.next/server/app/(console)/(private)/ai/ask/page.js +60 -60
  12. package/server/.next/server/app/(console)/(private)/ai/ask/page.js.nft.json +1 -1
  13. package/server/.next/server/app/(console)/(private)/ai/ask/page_client-reference-manifest.js +1 -1
  14. package/server/.next/server/app/(console)/(private)/ai/connect/page/server-reference-manifest.json +20 -10
  15. package/server/.next/server/app/(console)/(private)/ai/connect/page.js +60 -60
  16. package/server/.next/server/app/(console)/(private)/ai/connect/page.js.nft.json +1 -1
  17. package/server/.next/server/app/(console)/(private)/ai/connect/page_client-reference-manifest.js +1 -1
  18. package/server/.next/server/app/(console)/(private)/ai/keys/page/server-reference-manifest.json +23 -13
  19. package/server/.next/server/app/(console)/(private)/ai/keys/page.js +60 -60
  20. package/server/.next/server/app/(console)/(private)/ai/keys/page.js.nft.json +1 -1
  21. package/server/.next/server/app/(console)/(private)/ai/keys/page_client-reference-manifest.js +1 -1
  22. package/server/.next/server/app/(console)/(private)/ai/logs/page/server-reference-manifest.json +21 -11
  23. package/server/.next/server/app/(console)/(private)/ai/logs/page.js +60 -60
  24. package/server/.next/server/app/(console)/(private)/ai/logs/page.js.nft.json +1 -1
  25. package/server/.next/server/app/(console)/(private)/ai/logs/page_client-reference-manifest.js +1 -1
  26. package/server/.next/server/app/(console)/(private)/ai/models/page/server-reference-manifest.json +30 -20
  27. package/server/.next/server/app/(console)/(private)/ai/models/page.js +60 -60
  28. package/server/.next/server/app/(console)/(private)/ai/models/page.js.nft.json +1 -1
  29. package/server/.next/server/app/(console)/(private)/ai/models/page_client-reference-manifest.js +1 -1
  30. package/server/.next/server/app/(console)/(private)/ai/page/server-reference-manifest.json +20 -10
  31. package/server/.next/server/app/(console)/(private)/ai/page.js +60 -60
  32. package/server/.next/server/app/(console)/(private)/ai/page.js.nft.json +1 -1
  33. package/server/.next/server/app/(console)/(private)/ai/page_client-reference-manifest.js +1 -1
  34. package/server/.next/server/app/(console)/(private)/ai/playground/page/server-reference-manifest.json +23 -13
  35. package/server/.next/server/app/(console)/(private)/ai/playground/page.js +60 -60
  36. package/server/.next/server/app/(console)/(private)/ai/playground/page.js.nft.json +1 -1
  37. package/server/.next/server/app/(console)/(private)/ai/playground/page_client-reference-manifest.js +1 -1
  38. package/server/.next/server/app/(console)/(private)/ai/providers/page/server-reference-manifest.json +26 -16
  39. package/server/.next/server/app/(console)/(private)/ai/providers/page.js +60 -60
  40. package/server/.next/server/app/(console)/(private)/ai/providers/page.js.nft.json +1 -1
  41. package/server/.next/server/app/(console)/(private)/ai/providers/page_client-reference-manifest.js +1 -1
  42. package/server/.next/server/app/(console)/(private)/ai/quota/page/server-reference-manifest.json +21 -11
  43. package/server/.next/server/app/(console)/(private)/ai/quota/page.js +60 -60
  44. package/server/.next/server/app/(console)/(private)/ai/quota/page.js.nft.json +1 -1
  45. package/server/.next/server/app/(console)/(private)/ai/quota/page_client-reference-manifest.js +1 -1
  46. package/server/.next/server/app/(console)/(private)/ai/usage/page/server-reference-manifest.json +21 -11
  47. package/server/.next/server/app/(console)/(private)/ai/usage/page.js +60 -60
  48. package/server/.next/server/app/(console)/(private)/ai/usage/page.js.nft.json +1 -1
  49. package/server/.next/server/app/(console)/(private)/ai/usage/page_client-reference-manifest.js +1 -1
  50. package/server/.next/server/app/(console)/(private)/api-docs/[[...op]]/page/server-reference-manifest.json +20 -10
  51. package/server/.next/server/app/(console)/(private)/api-docs/[[...op]]/page.js +60 -60
  52. package/server/.next/server/app/(console)/(private)/api-docs/[[...op]]/page.js.nft.json +1 -1
  53. package/server/.next/server/app/(console)/(private)/api-docs/[[...op]]/page_client-reference-manifest.js +1 -1
  54. package/server/.next/server/app/(console)/(private)/auto-actions/page/server-reference-manifest.json +21 -11
  55. package/server/.next/server/app/(console)/(private)/auto-actions/page.js +60 -60
  56. package/server/.next/server/app/(console)/(private)/auto-actions/page.js.nft.json +1 -1
  57. package/server/.next/server/app/(console)/(private)/auto-actions/page_client-reference-manifest.js +1 -1
  58. package/server/.next/server/app/(console)/alerts/page/server-reference-manifest.json +36 -26
  59. package/server/.next/server/app/(console)/alerts/page.js +60 -60
  60. package/server/.next/server/app/(console)/alerts/page.js.nft.json +1 -1
  61. package/server/.next/server/app/(console)/alerts/page_client-reference-manifest.js +1 -1
  62. package/server/.next/server/app/(console)/apps/[id]/page/server-reference-manifest.json +37 -27
  63. package/server/.next/server/app/(console)/apps/[id]/page.js +60 -60
  64. package/server/.next/server/app/(console)/apps/[id]/page.js.nft.json +1 -1
  65. package/server/.next/server/app/(console)/apps/[id]/page_client-reference-manifest.js +1 -1
  66. package/server/.next/server/app/(console)/apps/page/server-reference-manifest.json +23 -13
  67. package/server/.next/server/app/(console)/apps/page.js +60 -60
  68. package/server/.next/server/app/(console)/apps/page.js.nft.json +1 -1
  69. package/server/.next/server/app/(console)/apps/page_client-reference-manifest.js +1 -1
  70. package/server/.next/server/app/(console)/backups/page/server-reference-manifest.json +23 -13
  71. package/server/.next/server/app/(console)/backups/page.js +60 -60
  72. package/server/.next/server/app/(console)/backups/page.js.nft.json +1 -1
  73. package/server/.next/server/app/(console)/backups/page_client-reference-manifest.js +1 -1
  74. package/server/.next/server/app/(console)/catalog/page/server-reference-manifest.json +20 -10
  75. package/server/.next/server/app/(console)/catalog/page.js +60 -60
  76. package/server/.next/server/app/(console)/catalog/page.js.nft.json +1 -1
  77. package/server/.next/server/app/(console)/catalog/page_client-reference-manifest.js +1 -1
  78. package/server/.next/server/app/(console)/connections/page/server-reference-manifest.json +31 -21
  79. package/server/.next/server/app/(console)/connections/page.js +60 -60
  80. package/server/.next/server/app/(console)/connections/page.js.nft.json +1 -1
  81. package/server/.next/server/app/(console)/connections/page_client-reference-manifest.js +1 -1
  82. package/server/.next/server/app/(console)/d1/page/server-reference-manifest.json +20 -10
  83. package/server/.next/server/app/(console)/d1/page.js +60 -60
  84. package/server/.next/server/app/(console)/d1/page.js.nft.json +1 -1
  85. package/server/.next/server/app/(console)/d1/page_client-reference-manifest.js +1 -1
  86. package/server/.next/server/app/(console)/deployments/page/server-reference-manifest.json +26 -16
  87. package/server/.next/server/app/(console)/deployments/page.js +60 -60
  88. package/server/.next/server/app/(console)/deployments/page.js.nft.json +1 -1
  89. package/server/.next/server/app/(console)/deployments/page_client-reference-manifest.js +1 -1
  90. package/server/.next/server/app/(console)/dns/page/server-reference-manifest.json +27 -17
  91. package/server/.next/server/app/(console)/dns/page.js +60 -60
  92. package/server/.next/server/app/(console)/dns/page.js.nft.json +1 -1
  93. package/server/.next/server/app/(console)/dns/page_client-reference-manifest.js +1 -1
  94. package/server/.next/server/app/(console)/domains/page/server-reference-manifest.json +22 -12
  95. package/server/.next/server/app/(console)/domains/page.js +60 -60
  96. package/server/.next/server/app/(console)/domains/page.js.nft.json +1 -1
  97. package/server/.next/server/app/(console)/domains/page_client-reference-manifest.js +1 -1
  98. package/server/.next/server/app/(console)/events/page/server-reference-manifest.json +20 -10
  99. package/server/.next/server/app/(console)/events/page.js +60 -60
  100. package/server/.next/server/app/(console)/events/page.js.nft.json +1 -1
  101. package/server/.next/server/app/(console)/events/page_client-reference-manifest.js +1 -1
  102. package/server/.next/server/app/(console)/firebase/page/server-reference-manifest.json +27 -17
  103. package/server/.next/server/app/(console)/firebase/page.js +60 -60
  104. package/server/.next/server/app/(console)/firebase/page.js.nft.json +1 -1
  105. package/server/.next/server/app/(console)/firebase/page_client-reference-manifest.js +1 -1
  106. package/server/.next/server/app/(console)/logs/page/server-reference-manifest.json +21 -11
  107. package/server/.next/server/app/(console)/logs/page.js +60 -60
  108. package/server/.next/server/app/(console)/logs/page.js.nft.json +1 -1
  109. package/server/.next/server/app/(console)/logs/page_client-reference-manifest.js +1 -1
  110. package/server/.next/server/app/(console)/manage/sections/page/server-reference-manifest.json +21 -11
  111. package/server/.next/server/app/(console)/manage/sections/page.js +60 -60
  112. package/server/.next/server/app/(console)/manage/sections/page.js.nft.json +1 -1
  113. package/server/.next/server/app/(console)/manage/sections/page_client-reference-manifest.js +1 -1
  114. package/server/.next/server/app/(console)/neon/page/server-reference-manifest.json +31 -21
  115. package/server/.next/server/app/(console)/neon/page.js +60 -60
  116. package/server/.next/server/app/(console)/neon/page.js.nft.json +1 -1
  117. package/server/.next/server/app/(console)/neon/page_client-reference-manifest.js +1 -1
  118. package/server/.next/server/app/(console)/overview/page/server-reference-manifest.json +30 -20
  119. package/server/.next/server/app/(console)/overview/page.js +60 -60
  120. package/server/.next/server/app/(console)/overview/page.js.nft.json +1 -1
  121. package/server/.next/server/app/(console)/overview/page_client-reference-manifest.js +1 -1
  122. package/server/.next/server/app/(console)/repos/[id]/page/server-reference-manifest.json +21 -11
  123. package/server/.next/server/app/(console)/repos/[id]/page.js +60 -60
  124. package/server/.next/server/app/(console)/repos/[id]/page.js.nft.json +1 -1
  125. package/server/.next/server/app/(console)/repos/[id]/page_client-reference-manifest.js +1 -1
  126. package/server/.next/server/app/(console)/repos/page/server-reference-manifest.json +20 -10
  127. package/server/.next/server/app/(console)/repos/page.js +60 -60
  128. package/server/.next/server/app/(console)/repos/page.js.nft.json +1 -1
  129. package/server/.next/server/app/(console)/repos/page_client-reference-manifest.js +1 -1
  130. package/server/.next/server/app/(console)/settings/page/server-reference-manifest.json +30 -20
  131. package/server/.next/server/app/(console)/settings/page.js +60 -60
  132. package/server/.next/server/app/(console)/settings/page.js.nft.json +1 -1
  133. package/server/.next/server/app/(console)/settings/page_client-reference-manifest.js +1 -1
  134. package/server/.next/server/app/(console)/sql/page/server-reference-manifest.json +27 -17
  135. package/server/.next/server/app/(console)/sql/page.js +60 -60
  136. package/server/.next/server/app/(console)/sql/page.js.nft.json +1 -1
  137. package/server/.next/server/app/(console)/sql/page_client-reference-manifest.js +1 -1
  138. package/server/.next/server/app/(console)/status/page/server-reference-manifest.json +20 -10
  139. package/server/.next/server/app/(console)/status/page.js +60 -60
  140. package/server/.next/server/app/(console)/status/page.js.nft.json +1 -1
  141. package/server/.next/server/app/(console)/status/page_client-reference-manifest.js +1 -1
  142. package/server/.next/server/app/(console)/supabase/page/server-reference-manifest.json +41 -31
  143. package/server/.next/server/app/(console)/supabase/page.js +60 -60
  144. package/server/.next/server/app/(console)/supabase/page.js.nft.json +1 -1
  145. package/server/.next/server/app/(console)/supabase/page_client-reference-manifest.js +1 -1
  146. package/server/.next/server/app/(console)/topology/page/server-reference-manifest.json +20 -10
  147. package/server/.next/server/app/(console)/topology/page.js +60 -60
  148. package/server/.next/server/app/(console)/topology/page.js.nft.json +1 -1
  149. package/server/.next/server/app/(console)/topology/page_client-reference-manifest.js +1 -1
  150. package/server/.next/server/app/(console)/turso/page/server-reference-manifest.json +20 -10
  151. package/server/.next/server/app/(console)/turso/page.js +60 -60
  152. package/server/.next/server/app/(console)/turso/page.js.nft.json +1 -1
  153. package/server/.next/server/app/(console)/turso/page_client-reference-manifest.js +1 -1
  154. package/server/.next/server/app/(console)/upstash/page/server-reference-manifest.json +20 -10
  155. package/server/.next/server/app/(console)/upstash/page.js +60 -60
  156. package/server/.next/server/app/(console)/upstash/page.js.nft.json +1 -1
  157. package/server/.next/server/app/(console)/upstash/page_client-reference-manifest.js +1 -1
  158. package/server/.next/server/app/(console)/uptime/page/server-reference-manifest.json +34 -24
  159. package/server/.next/server/app/(console)/uptime/page.js +60 -60
  160. package/server/.next/server/app/(console)/uptime/page.js.nft.json +1 -1
  161. package/server/.next/server/app/(console)/uptime/page_client-reference-manifest.js +1 -1
  162. package/server/.next/server/app/(console)/welcome/page/server-reference-manifest.json +25 -15
  163. package/server/.next/server/app/(console)/welcome/page.js +60 -60
  164. package/server/.next/server/app/(console)/welcome/page.js.nft.json +1 -1
  165. package/server/.next/server/app/(console)/welcome/page_client-reference-manifest.js +1 -1
  166. package/server/.next/server/app/_global-error/page/server-reference-manifest.json +1 -1
  167. package/server/.next/server/app/_global-error/page.js.nft.json +1 -1
  168. package/server/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  169. package/server/.next/server/app/_global-error.html +1 -1
  170. package/server/.next/server/app/_global-error.rsc +2 -2
  171. package/server/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +2 -2
  172. package/server/.next/server/app/_global-error.segments/_full.segment.rsc +2 -2
  173. package/server/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  174. package/server/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  175. package/server/.next/server/app/_not-found/page.js.nft.json +1 -1
  176. package/server/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  177. package/server/.next/server/app/_not-found.html +1 -1
  178. package/server/.next/server/app/_not-found.rsc +3 -3
  179. package/server/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
  180. package/server/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  181. package/server/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  182. package/server/.next/server/app/account/password/page/server-reference-manifest.json +2 -2
  183. package/server/.next/server/app/account/password/page.js.nft.json +1 -1
  184. package/server/.next/server/app/account/password/page_client-reference-manifest.js +1 -1
  185. package/server/.next/server/app/api/collect/route/server-reference-manifest.json +17 -7
  186. package/server/.next/server/app/api/collect/route.js +63 -63
  187. package/server/.next/server/app/api/collect/route.js.nft.json +1 -1
  188. package/server/.next/server/app/api/daily/route/server-reference-manifest.json +17 -7
  189. package/server/.next/server/app/api/daily/route.js +45 -45
  190. package/server/.next/server/app/api/daily/route.js.nft.json +1 -1
  191. package/server/.next/server/app/api/health/route.js.nft.json +1 -1
  192. package/server/.next/server/app/api/ping/[...parts]/route.js.nft.json +1 -1
  193. package/server/.next/server/app/api/status/route.js +2 -2
  194. package/server/.next/server/app/api/status/route.js.nft.json +1 -1
  195. package/server/.next/server/app/api/telegram/webhook/route/server-reference-manifest.json +17 -7
  196. package/server/.next/server/app/api/telegram/webhook/route.js +42 -42
  197. package/server/.next/server/app/api/telegram/webhook/route.js.nft.json +1 -1
  198. package/server/.next/server/app/api/v1/[[...rest]]/route.js.nft.json +1 -1
  199. package/server/.next/server/app/api/v1/advice/route.js +4 -3
  200. package/server/.next/server/app/api/v1/advice/route.js.nft.json +1 -1
  201. package/server/.next/server/app/api/v1/ai/chat/completions/route.js.nft.json +1 -1
  202. package/server/.next/server/app/api/v1/ai/models/route.js.nft.json +1 -1
  203. package/server/.next/server/app/api/v1/ai/questions/[id]/route.js.nft.json +1 -1
  204. package/server/.next/server/app/api/v1/ai/questions/route.js +2 -2
  205. package/server/.next/server/app/api/v1/ai/questions/route.js.nft.json +1 -1
  206. package/server/.next/server/app/api/v1/mcp/route.js +1 -1
  207. package/server/.next/server/app/api/v1/mcp/route.js.nft.json +1 -1
  208. package/server/.next/server/app/api/v1/me/route.js.nft.json +1 -1
  209. package/server/.next/server/app/api/v1/openapi.json/route.js.nft.json +1 -1
  210. package/server/.next/server/app/api/v1/status/apps/[app]/route.js +4 -3
  211. package/server/.next/server/app/api/v1/status/apps/[app]/route.js.nft.json +1 -1
  212. package/server/.next/server/app/api/v1/status/route.js +4 -3
  213. package/server/.next/server/app/api/v1/status/route.js.nft.json +1 -1
  214. package/server/.next/server/app/api/watchdog/route.js +15 -15
  215. package/server/.next/server/app/api/watchdog/route.js.nft.json +1 -1
  216. package/server/.next/server/app/auth/confirm/route.js.nft.json +1 -1
  217. package/server/.next/server/app/auth/google/callback/route.js.nft.json +1 -1
  218. package/server/.next/server/app/auth/google/create/callback/route.js.nft.json +1 -1
  219. package/server/.next/server/app/auth/not-member/route.js.nft.json +1 -1
  220. package/server/.next/server/app/auth/session-ended/route.js.nft.json +1 -1
  221. package/server/.next/server/app/icon.svg/route.js.nft.json +1 -1
  222. package/server/.next/server/app/invite/page/server-reference-manifest.json +2 -2
  223. package/server/.next/server/app/invite/page.js.nft.json +1 -1
  224. package/server/.next/server/app/invite/page_client-reference-manifest.js +1 -1
  225. package/server/.next/server/app/mfa/page/server-reference-manifest.json +2 -2
  226. package/server/.next/server/app/mfa/page.js +14 -14
  227. package/server/.next/server/app/mfa/page.js.nft.json +1 -1
  228. package/server/.next/server/app/mfa/page_client-reference-manifest.js +1 -1
  229. package/server/.next/server/app/mfa/setup/page/server-reference-manifest.json +3 -3
  230. package/server/.next/server/app/mfa/setup/page.js +14 -14
  231. package/server/.next/server/app/mfa/setup/page.js.nft.json +1 -1
  232. package/server/.next/server/app/mfa/setup/page_client-reference-manifest.js +1 -1
  233. package/server/.next/server/app/page/server-reference-manifest.json +1 -1
  234. package/server/.next/server/app/page.js.nft.json +1 -1
  235. package/server/.next/server/app/page_client-reference-manifest.js +1 -1
  236. package/server/.next/server/app/s/[slug]/badge/[file]/route.js.nft.json +1 -1
  237. package/server/.next/server/app/s/[slug]/page/server-reference-manifest.json +1 -1
  238. package/server/.next/server/app/s/[slug]/page.js.nft.json +1 -1
  239. package/server/.next/server/app/s/[slug]/page_client-reference-manifest.js +1 -1
  240. package/server/.next/server/app/setup/page/server-reference-manifest.json +2 -2
  241. package/server/.next/server/app/setup/page.js.nft.json +1 -1
  242. package/server/.next/server/app/setup/page_client-reference-manifest.js +1 -1
  243. package/server/.next/server/app/signin/page/server-reference-manifest.json +3 -3
  244. package/server/.next/server/app/signin/page.js +23 -23
  245. package/server/.next/server/app/signin/page.js.nft.json +1 -1
  246. package/server/.next/server/app/signin/page_client-reference-manifest.js +1 -1
  247. package/server/.next/server/chunks/{[externals]__0ia-wyj5qrosx._.js → [externals]__1-y7b_mfadqi-._.js} +1 -1
  248. package/server/.next/server/chunks/{[externals]__0igl_rsv6z3fr._.js → [externals]__1b3dgyi9diwhy._.js} +1 -1
  249. package/server/.next/server/chunks/{[externals]__0mh8e6gkgfswq._.js → [externals]__1dd9hhrnxhegy._.js} +1 -1
  250. package/server/.next/server/chunks/{[root-of-the-server]__0_e2eoq7w3ff_._.js → [root-of-the-server]__0-zrmrb4499ay._.js} +2 -2
  251. package/server/.next/server/chunks/[root-of-the-server]__01dj-ln12bcmb._.js +1 -1
  252. package/server/.next/server/chunks/{[root-of-the-server]__0ezd1s2862iob._.js → [root-of-the-server]__02h-ec_gusm_2._.js} +2 -2
  253. package/server/.next/server/chunks/[root-of-the-server]__02v25dn1cwxz6._.js +1 -1
  254. package/server/.next/server/chunks/[root-of-the-server]__03276vwi4jgvk._.js +1 -1
  255. package/server/.next/server/chunks/{[root-of-the-server]__0exicuoq6gmph._.js → [root-of-the-server]__038br8sr9eepd._.js} +2 -2
  256. package/server/.next/server/chunks/{[root-of-the-server]__20ng0hgzxagf_._.js → [root-of-the-server]__040a3il587nja._.js} +2 -2
  257. package/server/.next/server/chunks/[root-of-the-server]__04htuwoulmp21._.js +3 -0
  258. package/server/.next/server/chunks/{[root-of-the-server]__0cc32xnniktg9._.js → [root-of-the-server]__04iumkvxok49x._.js} +2 -2
  259. package/server/.next/server/chunks/[root-of-the-server]__05qcc-0e8z1u8._.js +1 -1
  260. package/server/.next/server/chunks/{[root-of-the-server]__01vos42kjq9nn._.js → [root-of-the-server]__0655w3_d4ejfb._.js} +1 -1
  261. package/server/.next/server/chunks/[root-of-the-server]__07eo--c90cju2._.js +1 -1
  262. package/server/.next/server/chunks/{[root-of-the-server]__05zj7uswzr0f9._.js → [root-of-the-server]__08i6b8tzxads4._.js} +2 -2
  263. package/server/.next/server/chunks/{[root-of-the-server]__0-ftc1hhcjcl2._.js → [root-of-the-server]__09dk9k-9q4d16._.js} +2 -2
  264. package/server/.next/server/chunks/[root-of-the-server]__0a5op--7u5_xh._.js +3 -0
  265. package/server/.next/server/chunks/{[root-of-the-server]__040ix5fqb_zb-._.js → [root-of-the-server]__0a5t6bkr3-uqw._.js} +2 -2
  266. package/server/.next/server/chunks/{[root-of-the-server]__1gt_-h9n48pwi._.js → [root-of-the-server]__0c0pkv3an1lg-._.js} +2 -2
  267. package/server/.next/server/chunks/{[root-of-the-server]__0185dne3slx7e._.js → [root-of-the-server]__0cmp5mwchd8sn._.js} +2 -2
  268. package/server/.next/server/chunks/{[root-of-the-server]__0oqltt9cni6m0._.js → [root-of-the-server]__0ct18spdi1leu._.js} +2 -2
  269. package/server/.next/server/chunks/{[root-of-the-server]__0r88w3qhrtzz_._.js → [root-of-the-server]__0db2p-om-b_4s._.js} +1 -1
  270. package/server/.next/server/chunks/[root-of-the-server]__0dfx2psnngcys._.js +3 -0
  271. package/server/.next/server/chunks/[root-of-the-server]__0fc4c9-xzmkol._.js +3 -0
  272. package/server/.next/server/chunks/[root-of-the-server]__0gb4uz-gv3va0._.js +1 -1
  273. package/server/.next/server/chunks/[root-of-the-server]__0gqye-fi-f3zk._.js +1 -1
  274. package/server/.next/server/chunks/{[root-of-the-server]__0rb1-3538-pq9._.js → [root-of-the-server]__0jswmvddgl3sb._.js} +1 -1
  275. package/server/.next/server/chunks/[root-of-the-server]__0kk-m8_ul4f4k._.js +1 -1
  276. package/server/.next/server/chunks/{[root-of-the-server]__0ms1uw85c5wg2._.js → [root-of-the-server]__0lco43i5w25zg._.js} +2 -2
  277. package/server/.next/server/chunks/[root-of-the-server]__0lht1cr4aiudu._.js +3 -0
  278. package/server/.next/server/chunks/{[root-of-the-server]__0ikiyg3u02ofv._.js → [root-of-the-server]__0m_nqt44ioex_._.js} +1 -1
  279. package/server/.next/server/chunks/[root-of-the-server]__0mrbo2p5fy4ji._.js +3 -0
  280. package/server/.next/server/chunks/[root-of-the-server]__0o6q27cnw6-77._.js +1 -1
  281. package/server/.next/server/chunks/{[root-of-the-server]__0w_og0zl6hqzj._.js → [root-of-the-server]__0qme276hvajvy._.js} +1 -1
  282. package/server/.next/server/chunks/[root-of-the-server]__0r3cq1lecww4e._.js +3 -0
  283. package/server/.next/server/chunks/{[root-of-the-server]__0070gc9ml0mf7._.js → [root-of-the-server]__0r_6xpjwcdrda._.js} +1 -1
  284. package/server/.next/server/chunks/[root-of-the-server]__0rctmpp7p7cp9._.js +3 -0
  285. package/server/.next/server/chunks/{[root-of-the-server]__0x47i6wm-cd1z._.js → [root-of-the-server]__0ruici82tzf0w._.js} +2 -2
  286. package/server/.next/server/chunks/{[root-of-the-server]__0e2utnqdim70d._.js → [root-of-the-server]__0s8wo4espz6eu._.js} +2 -2
  287. package/server/.next/server/chunks/[root-of-the-server]__0sp5xoed3-994._.js +3 -0
  288. package/server/.next/server/chunks/{[root-of-the-server]__0twr9duara46x._.js → [root-of-the-server]__0sq7jwlhv9n79._.js} +2 -2
  289. package/server/.next/server/chunks/{[root-of-the-server]__0sabwm3w1rm0q._.js → [root-of-the-server]__0ubalx5w0ds9m._.js} +1 -1
  290. package/server/.next/server/chunks/[root-of-the-server]__0ux1hi2fgqxu7._.js +3 -0
  291. package/server/.next/server/chunks/[root-of-the-server]__0vp-x4ifpr3p9._.js +1 -1
  292. package/server/.next/server/chunks/[root-of-the-server]__0vv63vp8y0fs-._.js +3 -0
  293. package/server/.next/server/chunks/{[root-of-the-server]__0-st5xltl53h9._.js → [root-of-the-server]__0w07p3ypro834._.js} +2 -2
  294. package/server/.next/server/chunks/{[root-of-the-server]__0x6qqr79pq_j9._.js → [root-of-the-server]__0whk62ebfu1u0._.js} +1 -1
  295. package/server/.next/server/chunks/{[root-of-the-server]__1vqs8o9bv1wbk._.js → [root-of-the-server]__0x4_tt5v17fx3._.js} +2 -2
  296. package/server/.next/server/chunks/{[root-of-the-server]__05jzua9637vlo._.js → [root-of-the-server]__0x929r1phz1oi._.js} +2 -2
  297. package/server/.next/server/chunks/{[root-of-the-server]__01yzy5zxsekxi._.js → [root-of-the-server]__0ycpg444s91lb._.js} +1 -1
  298. package/server/.next/server/chunks/[root-of-the-server]__0z3hf530bwcq_._.js +3 -0
  299. package/server/.next/server/chunks/[root-of-the-server]__0zkeao78mms1_._.js +3 -0
  300. package/server/.next/server/chunks/{[root-of-the-server]__0kt0hjvyklnk8._.js → [root-of-the-server]__0zu1odpvrptrt._.js} +2 -2
  301. package/server/.next/server/chunks/[root-of-the-server]__0zwr7fll4dm9q._.js +3 -0
  302. package/server/.next/server/chunks/{[root-of-the-server]__0cz3da2wx3_wd._.js → [root-of-the-server]__1-2ckgdamg0-j._.js} +2 -2
  303. package/server/.next/server/chunks/[root-of-the-server]__1-ne3clcouvm2._.js +3 -0
  304. package/server/.next/server/chunks/[root-of-the-server]__1-xgpr5q148ze._.js +3 -0
  305. package/server/.next/server/chunks/[root-of-the-server]__10negjjz5k5bz._.js +3 -0
  306. package/server/.next/server/chunks/{[root-of-the-server]__1bce11artflky._.js → [root-of-the-server]__12lrpnd-dhawi._.js} +2 -2
  307. package/server/.next/server/chunks/[root-of-the-server]__14-pt1-s1o5ex._.js +3 -0
  308. package/server/.next/server/chunks/[root-of-the-server]__14jw0y_hj7jmw._.js +3 -0
  309. package/server/.next/server/chunks/{[root-of-the-server]__0znmcklxfccvk._.js → [root-of-the-server]__15vqo7amys573._.js} +2 -2
  310. package/server/.next/server/chunks/[root-of-the-server]__16jyhasrd2ojp._.js +3 -0
  311. package/server/.next/server/chunks/{[root-of-the-server]__0kzpzdkpz_nt0._.js → [root-of-the-server]__177l2p7kcj-16._.js} +2 -2
  312. package/server/.next/server/chunks/{[root-of-the-server]__186-sa38csgot._.js → [root-of-the-server]__17dr2z1o1hsvk._.js} +1 -1
  313. package/server/.next/server/chunks/{[root-of-the-server]__08-puk3_gawjd._.js → [root-of-the-server]__17jngidngj3rb._.js} +2 -2
  314. package/server/.next/server/chunks/[root-of-the-server]__19k0l-ubyp1j_._.js +3 -0
  315. package/server/.next/server/chunks/[root-of-the-server]__1_zr2xlmtkn4l._.js +3 -0
  316. package/server/.next/server/chunks/[root-of-the-server]__1aagly59gw-xf._.js +3 -0
  317. package/server/.next/server/chunks/[root-of-the-server]__1bg8grh9kfims._.js +3 -0
  318. package/server/.next/server/chunks/{[root-of-the-server]__0tykhzqhwdx_k._.js → [root-of-the-server]__1bjvjngj7lvqi._.js} +2 -2
  319. package/server/.next/server/chunks/[root-of-the-server]__1c0cb3ur16yhh._.js +3 -0
  320. package/server/.next/server/chunks/[root-of-the-server]__1c1nhm-kj5kqu._.js +3 -0
  321. package/server/.next/server/chunks/[root-of-the-server]__1c78cu7kb9vkl._.js +1 -1
  322. package/server/.next/server/chunks/{[root-of-the-server]__1g4iy2tasmn0f._.js → [root-of-the-server]__1d1u-wejsfl84._.js} +1 -1
  323. package/server/.next/server/chunks/[root-of-the-server]__1d4wmw2wohveb._.js +3 -0
  324. package/server/.next/server/chunks/{[root-of-the-server]__1spds17tpnsgr._.js → [root-of-the-server]__1etg41llk7f09._.js} +2 -2
  325. package/server/.next/server/chunks/[root-of-the-server]__1g6xpr_typmce._.js +3 -0
  326. package/server/.next/server/chunks/[root-of-the-server]__1io5zo7iam532._.js +1 -1
  327. package/server/.next/server/chunks/{[root-of-the-server]__1a7_3nq1jjab-._.js → [root-of-the-server]__1jjusd74y8gd5._.js} +2 -2
  328. package/server/.next/server/chunks/[root-of-the-server]__1jvy8r4n-62x7._.js +3 -0
  329. package/server/.next/server/chunks/[root-of-the-server]__1kr6f03r82mk6._.js +3 -0
  330. package/server/.next/server/chunks/[root-of-the-server]__1kwldcrcmwc0x._.js +3 -0
  331. package/server/.next/server/chunks/[root-of-the-server]__1lq25064c4ny_._.js +3 -0
  332. package/server/.next/server/chunks/[root-of-the-server]__1m8gyvj7rkapj._.js +1 -1
  333. package/server/.next/server/chunks/{[root-of-the-server]__1_zjje9edw0bz._.js → [root-of-the-server]__1nm0sjvuf9jrb._.js} +2 -2
  334. package/server/.next/server/chunks/[root-of-the-server]__1ozfk4_3lx1o7._.js +1 -1
  335. package/server/.next/server/chunks/{[root-of-the-server]__0i75m0es1m3hf._.js → [root-of-the-server]__1p3fqi03x5du8._.js} +1 -1
  336. package/server/.next/server/chunks/[root-of-the-server]__1pa_syiho939h._.js +3 -0
  337. package/server/.next/server/chunks/[root-of-the-server]__1qmdi981syrsn._.js +3 -0
  338. package/server/.next/server/chunks/[root-of-the-server]__1r24segt1slar._.js +3 -0
  339. package/server/.next/server/chunks/[root-of-the-server]__1r9v6qgjwlv32._.js +3 -0
  340. package/server/.next/server/chunks/[root-of-the-server]__1sm4p209f_yie._.js +3 -0
  341. package/server/.next/server/chunks/{[root-of-the-server]__0xqgsjnebebv8._.js → [root-of-the-server]__1smidspfoqz48._.js} +2 -2
  342. package/server/.next/server/chunks/{[root-of-the-server]__20r_62r36t28o._.js → [root-of-the-server]__1t87mhqedigsz._.js} +2 -2
  343. package/server/.next/server/chunks/[root-of-the-server]__1u5my3-gpw499._.js +3 -0
  344. package/server/.next/server/chunks/[root-of-the-server]__20dehd8e5-v9y._.js +1 -1
  345. package/server/.next/server/chunks/{[root-of-the-server]__1ny8nr52qvr4i._.js → [root-of-the-server]__20sp5m_w5iklm._.js} +2 -2
  346. package/server/.next/server/chunks/{_1_9n8x5ncta29._.js → _0-jfehdfklu-i._.js} +2 -2
  347. package/server/.next/server/chunks/{_1n-fm2bdo9t2m._.js → _0-ub844lc_z_a._.js} +3 -3
  348. package/server/.next/server/chunks/_05hhw0eql5-dv._.js +10 -0
  349. package/server/.next/server/chunks/{_0zj10_al6r59j._.js → _08fv52mqg619m._.js} +2 -2
  350. package/server/.next/server/chunks/{_1cq1vvbp6pglr._.js → _08z7lmk32r__5._.js} +3 -3
  351. package/server/.next/server/chunks/_0b7rdk-4lrvfy._.js +10 -0
  352. package/server/.next/server/chunks/_0n-wbmmvp4omq._.js +1 -1
  353. package/server/.next/server/chunks/{_1myv9csc_in08._.js → _1-pv4d4qhe7to._.js} +3 -3
  354. package/server/.next/server/chunks/_12g2m3a5e94_5._.js +3 -0
  355. package/server/.next/server/chunks/{_1e_rbkrukj0x9._.js → _13dlt388gceez._.js} +2 -2
  356. package/server/.next/server/chunks/_19wqm5leaaesp._.js +1 -1
  357. package/server/.next/server/chunks/{_0ls7sornjrg95._.js → _1b1t9p1xljuql._.js} +1 -1
  358. package/server/.next/server/chunks/_1d_77nvqcnkcg._.js +3 -0
  359. package/server/.next/server/chunks/_1e_6lrlg9ml3-._.js +1 -1
  360. package/server/.next/server/chunks/_1l-68brbq289m._.js +10 -0
  361. package/server/.next/server/chunks/src_0--qn984h6czu._.js +1 -1
  362. package/server/.next/server/chunks/{src_0_l3dzp06o4x5._.js → src_01fd1ve-xj9xo._.js} +2 -2
  363. package/server/.next/server/chunks/{src_0m6xxpw2u-xv_._.js → src_049aazgsmienv._.js} +2 -2
  364. package/server/.next/server/chunks/src_05vq-abuilwk4._.js +3 -0
  365. package/server/.next/server/chunks/src_063xvouojxyoa._.js +1 -1
  366. package/server/.next/server/chunks/src_06lwphwuzgl6e._.js +3 -0
  367. package/server/.next/server/chunks/src_0_9n02bmhtk4z._.js +3 -0
  368. package/server/.next/server/chunks/src_0tw-h0otr2tgt._.js +1 -1
  369. package/server/.next/server/chunks/src_1a5yibsjcy1ga._.js +1 -1
  370. package/server/.next/server/chunks/src_1u-olt84z63rx._.js +1 -1
  371. package/server/.next/server/chunks/{src_15fupbs9-n8q9._.js → src_20sym_ohuqw76._.js} +2 -2
  372. package/server/.next/server/chunks/src_2108_me3q06ih._.js +3 -0
  373. package/server/.next/server/chunks/src_lib_0eqv8l-v8d5ze._.js +1 -1
  374. package/server/.next/server/chunks/src_lib_0glcfed-uogyd._.js +1 -1
  375. package/server/.next/server/chunks/src_lib_0pyyxm3m1rttg._.js +9 -0
  376. package/server/.next/server/chunks/src_lib_13irheo9qqhgx._.js +9 -0
  377. package/server/.next/server/chunks/src_lib_collector_runners_ts_12z4gtgikss74._.js +5 -5
  378. package/server/.next/server/chunks/src_lib_demo_pool_ts_0fpn8acsdk64i._.js +15 -15
  379. package/server/.next/server/chunks/src_lib_demo_pool_ts_14rjvkgozh1d4._.js +13 -13
  380. package/server/.next/server/chunks/src_lib_demo_pool_ts_17xz9bk-d5uic._.js +13 -13
  381. package/server/.next/server/chunks/src_lib_demo_pool_ts_210g_on8zx_-n._.js +13 -13
  382. package/server/.next/server/chunks/src_lib_view_labels_ts_1uxs84z7vclz5._.js +1 -1
  383. package/server/.next/server/chunks/src_private_1_nggk_wre7qf._.js +2 -2
  384. package/server/.next/server/chunks/src_private_notes_notes-actions_ts_1g63g8u965fhc._.js +1 -1
  385. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_agents_page_actions_21atz5tidps07.js +1 -1
  386. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_models_page_actions_0rvlzfa8rjyz_.js +1 -1
  387. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_playground_page_actions_01ejc1xilpuh4.js +1 -1
  388. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_quota_page_actions_0iki29gyi8cwa.js +1 -1
  389. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_usage_page_actions_1c99h-kwdnep7.js +1 -1
  390. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_auto-actions_page_actions_1kw4ce6-efkr1.js +1 -1
  391. package/server/.next/server/chunks/ssr/{[externals]__0vlxry7jq5j1j._.js → [externals]__0d7rvi3tmo9zf._.js} +1 -1
  392. package/server/.next/server/chunks/ssr/{[externals]__1mol6ksxmtkv6._.js → [externals]__1rj83sktdlxvt._.js} +1 -1
  393. package/server/.next/server/chunks/ssr/{[externals]__0yyslm1ka5px3._.js → [externals]__1s7xw086rvse0._.js} +1 -1
  394. package/server/.next/server/chunks/ssr/{[externals]__0irbihjwcc9is._.js → [externals]__20leqouf6m6f3._.js} +1 -1
  395. package/server/.next/server/chunks/ssr/{[root-of-the-server]__193nmh09rrpbx._.js → [root-of-the-server]__0-zqh1gf4dsj3._.js} +1 -1
  396. package/server/.next/server/chunks/ssr/[root-of-the-server]__001mglelq4wpc._.js +1 -1
  397. package/server/.next/server/chunks/ssr/{[root-of-the-server]__1ctkj-25wt37o._.js → [root-of-the-server]__05gue5stvejba._.js} +3 -3
  398. package/server/.next/server/chunks/ssr/[root-of-the-server]__077-acap7g4ck._.js +3 -0
  399. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0wi2grctadbk8._.js → [root-of-the-server]__080do5vfu69n5._.js} +1 -1
  400. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0xjg51t1__v-s._.js → [root-of-the-server]__08u1c2f2i7ru4._.js} +1 -1
  401. package/server/.next/server/chunks/ssr/[root-of-the-server]__09blzlbsxqvy9._.js +1 -1
  402. package/server/.next/server/chunks/ssr/[root-of-the-server]__0amfa4t2-in-x._.js +3 -0
  403. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0sj92w6mg92ds._.js → [root-of-the-server]__0b3g72j9cu141._.js} +2 -2
  404. package/server/.next/server/chunks/ssr/[root-of-the-server]__0ed6qo3lg9_f9._.js +3 -0
  405. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0z_1k5876-_wx._.js → [root-of-the-server]__0ee5ew5q3jh8i._.js} +2 -2
  406. package/server/.next/server/chunks/ssr/{[root-of-the-server]__110158s15r7mi._.js → [root-of-the-server]__0fd39clnjw9fb._.js} +2 -2
  407. package/server/.next/server/chunks/ssr/[root-of-the-server]__0h9rpg5-lhp5q._.js +3 -0
  408. package/server/.next/server/chunks/ssr/[root-of-the-server]__0jgapr1cnvhi6._.js +1 -1
  409. package/server/.next/server/chunks/ssr/[root-of-the-server]__0keo0-hwsnkw9._.js +1 -1
  410. package/server/.next/server/chunks/ssr/[root-of-the-server]__0l50vsk8enxzj._.js +1 -1
  411. package/server/.next/server/chunks/ssr/{[root-of-the-server]__1a0b_dbx4uans._.js → [root-of-the-server]__0p86d9imejczs._.js} +2 -2
  412. package/server/.next/server/chunks/ssr/{[root-of-the-server]__133_j0bmsjnzt._.js → [root-of-the-server]__0q7rssq_3unbc._.js} +2 -2
  413. package/server/.next/server/chunks/ssr/[root-of-the-server]__0rdf04ziqasfz._.js +1 -1
  414. package/server/.next/server/chunks/ssr/[root-of-the-server]__0rrdzb9wowemv._.js +1 -1
  415. package/server/.next/server/chunks/ssr/{[root-of-the-server]__1_h_ya1h8efdj._.js → [root-of-the-server]__0tqqte5jb6jz7._.js} +2 -2
  416. package/server/.next/server/chunks/ssr/{[root-of-the-server]__1ijizmc3ga_6o._.js → [root-of-the-server]__0xscr-8y9a4cj._.js} +2 -2
  417. package/server/.next/server/chunks/ssr/{[root-of-the-server]__1ogwz1buruc_x._.js → [root-of-the-server]__11paa809_igt_._.js} +2 -2
  418. package/server/.next/server/chunks/ssr/[root-of-the-server]__18gcvkhrt73zc._.js +3 -0
  419. package/server/.next/server/chunks/ssr/[root-of-the-server]__1_f7nip9age3d._.js +1 -1
  420. package/server/.next/server/chunks/ssr/{[root-of-the-server]__1tj-iwvrxfd1a._.js → [root-of-the-server]__1o6cysvbfkltz._.js} +1 -1
  421. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0hzlz_t5eect2._.js → [root-of-the-server]__1qrk2rfmx21b_._.js} +2 -2
  422. package/server/.next/server/chunks/ssr/[root-of-the-server]__1sw2q1p1t59y8._.js +1 -1
  423. package/server/.next/server/chunks/ssr/{[root-of-the-server]__1kfivch_kfesn._.js → [root-of-the-server]__1tgcpistmcbrd._.js} +3 -3
  424. package/server/.next/server/chunks/ssr/[root-of-the-server]__1u_13nhw3kuz3._.js +1 -1
  425. package/server/.next/server/chunks/ssr/{[root-of-the-server]__1-d88ogkwql_b._.js → [root-of-the-server]__1uzqsxyxwffdo._.js} +2 -2
  426. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0n-sc7pzu7fpz._.js → [root-of-the-server]__1y7nfsglxx7cn._.js} +1 -1
  427. package/server/.next/server/chunks/ssr/[root-of-the-server]__1zmuaump_n9c1._.js +3 -0
  428. package/server/.next/server/chunks/ssr/_0-wc6f6p0c8lv._.js +1 -1
  429. package/server/.next/server/chunks/ssr/_02eudwc8ieb2r._.js +2 -2
  430. package/server/.next/server/chunks/ssr/{_0e4xfzm8oecc-._.js → _07-dfx0qix52k._.js} +2 -2
  431. package/server/.next/server/chunks/ssr/{_1jclq5d7tposb._.js → _07f-svx_l12lw._.js} +2 -2
  432. package/server/.next/server/chunks/ssr/_08xqk3eibu5aw._.js +1 -1
  433. package/server/.next/server/chunks/ssr/_09s2unlb4r6yf._.js +3 -0
  434. package/server/.next/server/chunks/ssr/_0_oc9q0vqkynd._.js +1 -1
  435. package/server/.next/server/chunks/ssr/_0a22b7zsckifp._.js +1 -1
  436. package/server/.next/server/chunks/ssr/_0azq3ml4gbn1d._.js +1 -1
  437. package/server/.next/server/chunks/ssr/_0bd4cxnpnnq2u._.js +1 -1
  438. package/server/.next/server/chunks/ssr/_0c7stbntpuyt_._.js +1 -1
  439. package/server/.next/server/chunks/ssr/_0c8kew3jsb-yb._.js +3 -0
  440. package/server/.next/server/chunks/ssr/_0cbbks0ms7i_u._.js +2 -2
  441. package/server/.next/server/chunks/ssr/_0cw4kz3d6kmb1._.js +1 -1
  442. package/server/.next/server/chunks/ssr/_0d2d527wcx-lf._.js +2 -2
  443. package/server/.next/server/chunks/ssr/_0d702k82llasi._.js +1 -1
  444. package/server/.next/server/chunks/ssr/_0gl-ewvbhb677._.js +2 -2
  445. package/server/.next/server/chunks/ssr/_0i04zoixa2iup._.js +2 -2
  446. package/server/.next/server/chunks/ssr/_0idbg-ok0so2h._.js +2 -2
  447. package/server/.next/server/chunks/ssr/{_1e5kqt081d8yt._.js → _0jqrjb30bblvy._.js} +2 -2
  448. package/server/.next/server/chunks/ssr/_0kdn56_ow-x_s._.js +1 -1
  449. package/server/.next/server/chunks/ssr/_0oovfx_t_-u0k._.js +1 -1
  450. package/server/.next/server/chunks/ssr/_0oub-njkja8gu._.js +2 -2
  451. package/server/.next/server/chunks/ssr/_0pqkexxo7rts_._.js +2 -2
  452. package/server/.next/server/chunks/ssr/_0qhvl_fw4qetx._.js +1 -1
  453. package/server/.next/server/chunks/ssr/_0rsh9v4b3yj0b._.js +3 -0
  454. package/server/.next/server/chunks/ssr/_0tnd528j0i1i4._.js +2 -2
  455. package/server/.next/server/chunks/ssr/_0uwkwcgucqgcf._.js +2 -2
  456. package/server/.next/server/chunks/ssr/_0v6v5w16qxwke._.js +1 -1
  457. package/server/.next/server/chunks/ssr/_0wo-lpqf7hr1y._.js +2 -2
  458. package/server/.next/server/chunks/ssr/_0zixhhc1lheoi._.js +2 -2
  459. package/server/.next/server/chunks/ssr/_1-6d1tm3r_qwg._.js +1 -1
  460. package/server/.next/server/chunks/ssr/_10bven6gb1vj0._.js +1 -1
  461. package/server/.next/server/chunks/ssr/_118h21qua_4o3._.js +1 -1
  462. package/server/.next/server/chunks/ssr/_12makqwatfke-._.js +2 -2
  463. package/server/.next/server/chunks/ssr/_19-3vzkc6rk97._.js +1 -1
  464. package/server/.next/server/chunks/ssr/_1_-o2s48aj4i7._.js +1 -1
  465. package/server/.next/server/chunks/ssr/{_1rinsar6bp6ul._.js → _1bc69myq83woe._.js} +2 -2
  466. package/server/.next/server/chunks/ssr/_1c7jkkvkvzj_u._.js +2 -2
  467. package/server/.next/server/chunks/ssr/_1cl55h_h3q-b_._.js +1 -1
  468. package/server/.next/server/chunks/ssr/_1dlo17ba9g-f9._.js +2 -2
  469. package/server/.next/server/chunks/ssr/_1fc8k_0p8l00c._.js +2 -2
  470. package/server/.next/server/chunks/ssr/_1fuywfexex2s8._.js +2 -2
  471. package/server/.next/server/chunks/ssr/_1g2zbl_-4z_hg._.js +1 -1
  472. package/server/.next/server/chunks/ssr/_1he21-bt45k8z._.js +2 -2
  473. package/server/.next/server/chunks/ssr/{_08d4hz_ddxc02._.js → _1j61tfpfj2t9d._.js} +2 -2
  474. package/server/.next/server/chunks/ssr/_1j9cka-44jd65._.js +1 -1
  475. package/server/.next/server/chunks/ssr/_1jh_o2i8hj2g5._.js +1 -1
  476. package/server/.next/server/chunks/ssr/_1ln6o3a9quwxo._.js +2 -2
  477. package/server/.next/server/chunks/ssr/_1m4km_w39x5e9._.js +1 -1
  478. package/server/.next/server/chunks/ssr/_1pp1o361lgpwu._.js +2 -2
  479. package/server/.next/server/chunks/ssr/_1r7o1vx4875hu._.js +1 -1
  480. package/server/.next/server/chunks/ssr/_1yh3k88t_kh4h._.js +2 -2
  481. package/server/.next/server/chunks/ssr/_1z6dy1k48mskn._.js +1 -1
  482. package/server/.next/server/chunks/ssr/_218164gkxgum_._.js +1 -1
  483. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_(private)_ai_keys_page_actions_181-3r4e_0yb5.js +1 -1
  484. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_(private)_ai_logs_page_actions_1ryb93n6khky3.js +1 -1
  485. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_alerts_page_actions_06_3gmyq3jtvi.js +1 -1
  486. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_apps_[id]_page_actions_0y5m8cul6d7kk.js +1 -1
  487. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_apps_page_actions_0ksau5eicvycc.js +1 -1
  488. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_connections_page_actions_1fgolmmpxrouc.js +1 -1
  489. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_dns_page_actions_17d_lvhl-u_4w.js +1 -1
  490. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_domains_page_actions_1yv3fj_fh-n-5.js +1 -1
  491. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_firebase_page_actions_00wuues_v_j3r.js +1 -1
  492. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_logs_page_actions_0oqh51t2rx6q0.js +1 -1
  493. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_manage_sections_page_actions_1sb2ldu57uj32.js +1 -1
  494. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_settings_page_actions_12wgjpd0lbh12.js +1 -1
  495. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_supabase_page_actions_1f3a_tpkwjo8z.js +1 -1
  496. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_uptime_page_actions_1ylbdz0-ykfh6.js +1 -1
  497. package/server/.next/server/chunks/ssr/_next-internal_server_app_account_password_page_actions_1v4e71_oifbx9.js +1 -1
  498. package/server/.next/server/chunks/ssr/_next-internal_server_app_signin_page_actions_11wzk446p6_zi.js +1 -1
  499. package/server/.next/server/chunks/ssr/src_0330uf9pdfco9._.js +1 -1
  500. package/server/.next/server/chunks/ssr/src_06tjy8wljego8._.js +1 -1
  501. package/server/.next/server/chunks/ssr/src_084tdkx3c_yqi._.js +1 -1
  502. package/server/.next/server/chunks/ssr/src_0abts6wp5ucc0._.js +1 -1
  503. package/server/.next/server/chunks/ssr/src_0dceh6hsdybq8._.js +3 -0
  504. package/server/.next/server/chunks/ssr/src_0etvjdinp5urq._.js +1 -1
  505. package/server/.next/server/chunks/ssr/src_0ph020gy78gi9._.js +1 -1
  506. package/server/.next/server/chunks/ssr/src_0uitfl3c1mdqb._.js +1 -1
  507. package/server/.next/server/chunks/ssr/src_10zavgy86u3us._.js +1 -1
  508. package/server/.next/server/chunks/ssr/{src_186l56gdeizg8._.js → src_14ulgwoxoyfkq._.js} +2 -2
  509. package/server/.next/server/chunks/ssr/src_1bg_io_v7gt71._.js +3 -0
  510. package/server/.next/server/chunks/ssr/src_1q-jgpnd3lbcu._.js +1 -1
  511. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_agents_1fyhh1ldgm23z._.js +1 -1
  512. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_ask_ask-form_tsx_18ttm9nna_9y6._.js +1 -1
  513. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_logs_export-button_tsx_1k-crb88n1za_._.js +1 -1
  514. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_models_0ayzqn062pnv5._.js +1 -1
  515. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_playground_playground-view_tsx_18ua5zn_a0mar._.js +1 -1
  516. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_providers_1ru-30x6-uwu4._.js +1 -1
  517. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_quota_limits-form_tsx_1vouaaf560z_x._.js +1 -1
  518. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_usage_limits-form_tsx_0sfk3ver58rqw._.js +1 -1
  519. package/server/.next/server/chunks/ssr/{src_app_(console)_1co5pna1vfflj._.js → src_app_(console)_0e832kna-734m._.js} +2 -2
  520. package/server/.next/server/chunks/ssr/src_app_(console)_0kwns5iudhgwj._.js +3 -0
  521. package/server/.next/server/chunks/ssr/src_app_(console)_alerts_0j5xlt68kwg8x._.js +2 -2
  522. package/server/.next/server/chunks/ssr/src_app_(console)_apps_[id]_1sfvku9ui1le-._.js +1 -1
  523. package/server/.next/server/chunks/ssr/src_app_(console)_backups_actions_ts_1vpytsdh0wc1f._.js +1 -1
  524. package/server/.next/server/chunks/ssr/src_app_(console)_backups_drive-buttons_tsx_00cku5r_z3jkg._.js +1 -1
  525. package/server/.next/server/chunks/ssr/src_app_(console)_connections_1fahc65-97qla._.js +1 -1
  526. package/server/.next/server/chunks/ssr/src_app_(console)_connections_1fmp_anbkapur._.js +1 -1
  527. package/server/.next/server/chunks/ssr/src_app_(console)_connections_actions_ts_103blv4gzq76z._.js +1 -1
  528. package/server/.next/server/chunks/ssr/src_app_(console)_create_actions_ts_05-86qr6kfjey._.js +1 -1
  529. package/server/.next/server/chunks/ssr/src_app_(console)_dns_actions_ts_1jzn58xzwbukz._.js +1 -1
  530. package/server/.next/server/chunks/ssr/src_app_(console)_dns_record-actions_tsx_0cqmz51zcuebv._.js +1 -1
  531. package/server/.next/server/chunks/ssr/src_app_(console)_firebase_row-menu_tsx_0hssoq3pqjl-n._.js +1 -1
  532. package/server/.next/server/chunks/ssr/src_app_(console)_logs_log-viewer_tsx_0v3e4cflfk14w._.js +1 -1
  533. package/server/.next/server/chunks/ssr/src_app_(console)_manage_sections_section-switch_tsx_1mfs-o_357i22._.js +1 -1
  534. package/server/.next/server/chunks/ssr/src_app_(console)_monitor-actions_ts_10w3h7myk2ppi._.js +1 -1
  535. package/server/.next/server/chunks/ssr/src_app_(console)_overview_page_tsx_0se3f3ln9q-42._.js +1 -1
  536. package/server/.next/server/chunks/ssr/src_app_(console)_palette-action_ts_0zyw9a9imev6p._.js +1 -1
  537. package/server/.next/server/chunks/ssr/src_app_(console)_sql_1icfsti04djqe._.js +2 -2
  538. package/server/.next/server/chunks/ssr/src_app_(console)_sql_actions_ts_1oqco02hw-3vp._.js +1 -1
  539. package/server/.next/server/chunks/ssr/src_app_(console)_supabase_0ib3m2ch9gu-4._.js +1 -1
  540. package/server/.next/server/chunks/ssr/src_app_(console)_supabase_pool-actions_ts_0nzd4vwy_9zzx._.js +1 -1
  541. package/server/.next/server/chunks/ssr/src_app_(console)_uptime_1mnnkfi-2zv-k._.js +1 -1
  542. package/server/.next/server/chunks/ssr/src_app_(console)_vercel-actions_ts_0wpk1yo9v632d._.js +1 -1
  543. package/server/.next/server/chunks/ssr/src_app_mfa_setup_setup-flow_tsx_1fpwygr2vdgnh._.js +1 -1
  544. package/server/.next/server/chunks/ssr/src_app_setup_setup-form_tsx_0izoagdur96e1._.js +1 -1
  545. package/server/.next/server/chunks/ssr/src_app_signin_1fj68y-bbe-xr._.js +3 -0
  546. package/server/.next/server/chunks/ssr/src_components_08d78uqnnmrrh._.js +1 -1
  547. package/server/.next/server/chunks/ssr/src_components_create_create-dialog_tsx_1s_9clly_m1ru._.js +1 -1
  548. package/server/.next/server/chunks/ssr/src_lib_0eqv8l-v8d5ze._.js +1 -1
  549. package/server/.next/server/chunks/ssr/src_lib_1eioo4oodq-8h._.js +1 -1
  550. package/server/.next/server/chunks/ssr/src_lib_1gauld53vvpev._.js +3 -0
  551. package/server/.next/server/chunks/ssr/src_lib_collector_run_ts_0-q8is8s0y9cq._.js +3 -3
  552. package/server/.next/server/chunks/ssr/{src_lib_demo_0ftmf3wmtezvl._.js → src_lib_demo_09ht4doed9eqi._.js} +2 -2
  553. package/server/.next/server/chunks/ssr/src_lib_demo_1b1yd_ne2dpeh._.js +1 -1
  554. package/server/.next/server/chunks/ssr/src_lib_demo_pool_ts_0fpn8acsdk64i._.js +14 -14
  555. package/server/.next/server/chunks/ssr/src_lib_view_labels_ts_1uxs84z7vclz5._.js +1 -1
  556. package/server/.next/server/chunks/ssr/src_private_04omlb_sgy-_r._.js +2 -2
  557. package/server/.next/server/chunks/ssr/src_private_0iy_wyg2p1jkn._.js +1 -1
  558. package/server/.next/server/chunks/ssr/src_private_1yzfhupl3rlpx._.js +6 -0
  559. package/server/.next/server/chunks/ssr/src_private_actions_decide-form_tsx_1hngtxpyle3v8._.js +1 -1
  560. package/server/.next/server/chunks/ssr/src_private_ai_providers_actions_ts_0wxa36ai6s5nn._.js +1 -1
  561. package/server/.next/server/chunks/ssr/src_private_notes_notes-actions_ts_1g63g8u965fhc._.js +1 -1
  562. package/server/.next/server/middleware-build-manifest.js +3 -3
  563. package/server/.next/server/pages/404.html +1 -1
  564. package/server/.next/server/pages/500.html +1 -1
  565. package/server/.next/server/preview-props.json +3 -3
  566. package/server/.next/server/server-reference-manifest.js +1 -1
  567. package/server/.next/server/server-reference-manifest.json +321 -143
  568. package/server/.next/static/chunks/{1ukyjy13dwy_z.js → 0-ett1b-o34r0.js} +1 -1
  569. package/server/.next/static/chunks/{3f1td0b-oy-sr.js → 0-fov5gyz32mj.js} +1 -1
  570. package/server/.next/static/chunks/{38g-5wiggu6__.js → 041ko45qawas9.js} +1 -1
  571. package/server/.next/static/chunks/{33ddsp07_9o1d.js → 0ia5361d7hoce.js} +2 -2
  572. package/server/.next/static/chunks/{2xio-kspedw69.js → 0m40tf7-fh2ht.js} +1 -1
  573. package/server/.next/static/chunks/{1y_6crandf_3f.js → 0o6_y6xu__s6q.js} +1 -1
  574. package/server/.next/static/chunks/{2s-_9p0-395sm.js → 0x1xj431cbkfa.js} +1 -1
  575. package/server/.next/static/chunks/{1xm6ay06cjchs.js → 0x6eipkda93fh.js} +1 -1
  576. package/server/.next/static/chunks/{2-m982u6v7z8m.js → 0zj507c7ui4jt.js} +1 -1
  577. package/server/.next/static/chunks/{40n6mtthd3_sh.js → 11_iva96ceble.js} +1 -1
  578. package/server/.next/static/chunks/{3letbzhf_1srv.js → 15_3o9t6d7ujo.js} +1 -1
  579. package/server/.next/static/chunks/{340qccog2_uge.js → 1e0iyxugtm7b0.js} +2 -2
  580. package/server/.next/static/chunks/{0md0jy9rztofl.js → 1eeqy_pc_llv4.js} +1 -1
  581. package/server/.next/static/chunks/{0-6om8-d7itz8.js → 1g3u_ngexgvss.js} +1 -1
  582. package/server/.next/static/chunks/{2z6gojfx3lqvt.js → 1ghfc_9g9io17.js} +1 -1
  583. package/server/.next/static/chunks/{0v_-lu_cx7f91.js → 1gw40u38oaj6z.js} +1 -1
  584. package/server/.next/static/chunks/{1rkrtrvwbbnjf.js → 1jc9qa7xb63lp.js} +1 -1
  585. package/server/.next/static/chunks/{01u9q07wu6-x1.js → 1muk1ubaswhlj.js} +1 -1
  586. package/server/.next/static/chunks/{31v3igne_z-0k.js → 1qug5gmo2rbaf.js} +1 -1
  587. package/server/.next/static/chunks/{16yvy9zkjac5c.js → 1vyf467_8v-cw.js} +1 -1
  588. package/server/.next/static/chunks/{2a3tky__z9q4j.js → 1z8byc-won_tq.js} +1 -1
  589. package/server/.next/static/chunks/{0181phyuecg9b.js → 1zhnm25vt6hu8.js} +1 -1
  590. package/server/.next/static/chunks/{1gt3cagsbgx4w.js → 243ijh4fs2zsq.js} +1 -1
  591. package/server/.next/static/chunks/{2cipdjdkoq312.js → 299jy1-g0cm8n.js} +1 -1
  592. package/server/.next/static/chunks/{2ue_c6tww95_c.js → 2hscqr4n7hu7n.js} +1 -1
  593. package/server/.next/static/chunks/{18johpgap0xmw.js → 2j4kmkog1zkpo.js} +1 -1
  594. package/server/.next/static/chunks/{18mkhwl0zlvnp.js → 2j9fpx77gfesr.js} +1 -1
  595. package/server/.next/static/chunks/{0hj1-5zruyih6.js → 2jdlcu25qy00d.js} +1 -1
  596. package/server/.next/static/chunks/{3imk3dh9_4wd5.js → 2kurh5s5u8_4-.js} +1 -1
  597. package/server/.next/static/chunks/{1_8g4usrgjnnu.js → 2seth6dz7lydu.js} +1 -1
  598. package/server/.next/static/chunks/{0xcpi35p5fa83.js → 2t30gqjhercob.js} +1 -1
  599. package/server/.next/static/chunks/{1q-m7qgrvvzwb.js → 2y05vm9r_wxds.js} +1 -1
  600. package/server/.next/static/chunks/{0z0may9twpt-j.js → 2ziborutqth-2.js} +1 -1
  601. package/server/.next/static/chunks/{0_5_9w6m-xwd0.js → 3-xb6vd_khwfo.js} +1 -1
  602. package/server/.next/static/chunks/{1sc1vz_ygak9u.js → 36e9fpbpqndu5.js} +1 -1
  603. package/server/.next/static/chunks/{0t66sf4vvalei.js → 3cjokqd7600_0.js} +1 -1
  604. package/server/.next/static/chunks/{3qedt96akbcad.js → 3hpyrqm98toxv.js} +1 -1
  605. package/server/.next/static/chunks/{1ys80h6x541kn.js → 3kqiccrh_bnpl.js} +2 -2
  606. package/server/.next/static/chunks/{3wi930ujb_5_z.js → 3r3-9oir5c1ul.js} +1 -1
  607. package/server/.next/static/chunks/{0krhehmzgigx5.js → 3wl06e5yyzlwh.js} +1 -1
  608. package/server/.next/static/chunks/{3jhh47vezwohc.js → 3xbsyym_tfj0u.js} +1 -1
  609. package/server/.next/static/chunks/{3a5a2iizetq9b.js → 3ymogjp57edbj.js} +1 -1
  610. package/server/.next/static/chunks/{00oeu_tbjky7m.js → 422gxqrwveuyc.js} +1 -1
  611. package/server/.next/static/chunks/{2ect0ww0gtoad.js → 442t8i7d46g9y.js} +2 -2
  612. package/server/.next/static/chunks/{0mp6prf1hx5mx.js → 4545xu4sehvxc.js} +1 -1
  613. package/server/server.js +1 -1
  614. package/server/.next/server/chunks/[root-of-the-server]__0-u9oeob2sa7f._.js +0 -3
  615. package/server/.next/server/chunks/[root-of-the-server]__028cxv1v6v0yb._.js +0 -3
  616. package/server/.next/server/chunks/[root-of-the-server]__04oipax0jupxr._.js +0 -3
  617. package/server/.next/server/chunks/[root-of-the-server]__07byme21uj5ln._.js +0 -3
  618. package/server/.next/server/chunks/[root-of-the-server]__07g16s_wi2sai._.js +0 -3
  619. package/server/.next/server/chunks/[root-of-the-server]__0ab040lxtt8_d._.js +0 -3
  620. package/server/.next/server/chunks/[root-of-the-server]__0dvuy3ibsyiik._.js +0 -3
  621. package/server/.next/server/chunks/[root-of-the-server]__0gmn5s40au84-._.js +0 -3
  622. package/server/.next/server/chunks/[root-of-the-server]__0k7o0hgdraix2._.js +0 -3
  623. package/server/.next/server/chunks/[root-of-the-server]__0o0z59_jylzvy._.js +0 -3
  624. package/server/.next/server/chunks/[root-of-the-server]__0quiawzx_nww0._.js +0 -3
  625. package/server/.next/server/chunks/[root-of-the-server]__0v1t0gkrsn99q._.js +0 -3
  626. package/server/.next/server/chunks/[root-of-the-server]__0wdxw44t9l9o_._.js +0 -3
  627. package/server/.next/server/chunks/[root-of-the-server]__0y99cuuxm0xs3._.js +0 -3
  628. package/server/.next/server/chunks/[root-of-the-server]__0zflnh-2nol66._.js +0 -3
  629. package/server/.next/server/chunks/[root-of-the-server]__10cqzo_4dhr4m._.js +0 -3
  630. package/server/.next/server/chunks/[root-of-the-server]__10dp33pb5e0ml._.js +0 -3
  631. package/server/.next/server/chunks/[root-of-the-server]__12xl6ax-q8s93._.js +0 -3
  632. package/server/.next/server/chunks/[root-of-the-server]__14sac3h4sfhh7._.js +0 -3
  633. package/server/.next/server/chunks/[root-of-the-server]__16md_196q9s8a._.js +0 -3
  634. package/server/.next/server/chunks/[root-of-the-server]__17xbg7cngebwp._.js +0 -3
  635. package/server/.next/server/chunks/[root-of-the-server]__18lfi0w0e_h0k._.js +0 -3
  636. package/server/.next/server/chunks/[root-of-the-server]__1c1wqmzm65xo8._.js +0 -3
  637. package/server/.next/server/chunks/[root-of-the-server]__1gry2nrq5xhxl._.js +0 -3
  638. package/server/.next/server/chunks/[root-of-the-server]__1hl9k6e1o7xh2._.js +0 -3
  639. package/server/.next/server/chunks/[root-of-the-server]__1kk_s-q90445m._.js +0 -3
  640. package/server/.next/server/chunks/[root-of-the-server]__1kqq90-sj8-op._.js +0 -3
  641. package/server/.next/server/chunks/[root-of-the-server]__1lam0c5a3f224._.js +0 -3
  642. package/server/.next/server/chunks/[root-of-the-server]__1lfsf7un8kdbr._.js +0 -3
  643. package/server/.next/server/chunks/[root-of-the-server]__1nusfevn1z4nm._.js +0 -3
  644. package/server/.next/server/chunks/[root-of-the-server]__1o9v_499yd5k8._.js +0 -3
  645. package/server/.next/server/chunks/[root-of-the-server]__1oc55uo0ax787._.js +0 -3
  646. package/server/.next/server/chunks/[root-of-the-server]__1onjxlntn-u8g._.js +0 -3
  647. package/server/.next/server/chunks/[root-of-the-server]__1pscg7y0et34j._.js +0 -3
  648. package/server/.next/server/chunks/[root-of-the-server]__1qdbn4gdg7ndr._.js +0 -3
  649. package/server/.next/server/chunks/[root-of-the-server]__1uqxnb7qfqcms._.js +0 -3
  650. package/server/.next/server/chunks/[root-of-the-server]__1vxtt1favjdfr._.js +0 -3
  651. package/server/.next/server/chunks/[root-of-the-server]__1xwgj26z5f7ih._.js +0 -3
  652. package/server/.next/server/chunks/[root-of-the-server]__20sv90-2ei08l._.js +0 -3
  653. package/server/.next/server/chunks/_0pf2g5n_ko5dq._.js +0 -3
  654. package/server/.next/server/chunks/_0qmi54vmnlwdv._.js +0 -10
  655. package/server/.next/server/chunks/_15g-opioju_ju._.js +0 -3
  656. package/server/.next/server/chunks/_1daeuesc2d2tg._.js +0 -3
  657. package/server/.next/server/chunks/_1g_prqb_u33e3._.js +0 -10
  658. package/server/.next/server/chunks/src_12wdz9bdn7a-7._.js +0 -3
  659. package/server/.next/server/chunks/src_lib_103kimc1xvc_0._.js +0 -9
  660. package/server/.next/server/chunks/src_lib_1sdusf16f07x-._.js +0 -9
  661. package/server/.next/server/chunks/ssr/[root-of-the-server]__056nm27ib-x1m._.js +0 -3
  662. package/server/.next/server/chunks/ssr/[root-of-the-server]__0eaqsql69fhf8._.js +0 -3
  663. package/server/.next/server/chunks/ssr/[root-of-the-server]__0l_cl2qk_xmmr._.js +0 -3
  664. package/server/.next/server/chunks/ssr/[root-of-the-server]__0nxyo70ahj7tk._.js +0 -3
  665. package/server/.next/server/chunks/ssr/[root-of-the-server]__1wr4__6rvsb3b._.js +0 -3
  666. package/server/.next/server/chunks/ssr/_0uvkx5n0kf7r2._.js +0 -3
  667. package/server/.next/server/chunks/ssr/_0zkmkbrbc96-h._.js +0 -3
  668. package/server/.next/server/chunks/ssr/_1o94cw0ml7xu7._.js +0 -3
  669. package/server/.next/server/chunks/ssr/src_0jxjbvkvg0bjg._.js +0 -3
  670. package/server/.next/server/chunks/ssr/src_0txyv7r1zns16._.js +0 -3
  671. package/server/.next/server/chunks/ssr/src_1xoua7wkmyfkn._.js +0 -3
  672. package/server/.next/server/chunks/ssr/src_1y827m5-ojdib._.js +0 -6
  673. package/server/.next/server/chunks/ssr/src_app_(console)_1shtcv6hidi4-._.js +0 -3
  674. package/server/.next/server/chunks/ssr/src_app_signin_0ko968fxahf6u._.js +0 -3
  675. package/server/.next/server/chunks/ssr/src_lib_04orn7u7ufxp1._.js +0 -3
  676. /package/server/.next/static/{2_t4xVgbum1rtVSQxAYYV → u0RcJ9L5FEEUdENisty65}/_buildManifest.js +0 -0
  677. /package/server/.next/static/{2_t4xVgbum1rtVSQxAYYV → u0RcJ9L5FEEUdENisty65}/_clientMiddlewareManifest.js +0 -0
  678. /package/server/.next/static/{2_t4xVgbum1rtVSQxAYYV → u0RcJ9L5FEEUdENisty65}/_ssgManifest.js +0 -0
@@ -1,3 +1,3 @@
1
- (()=>{"use strict";module.exports=[949663,912283,876808,747556,e=>{var t=e.i(927262),n=e.i(201516),r=e.i(273133),a=e.i(120213),s=e.i(84979),i=e.i(84877),l=e.i(679662);let o=/^v?(\d+)\.(\d+)\.(\d+)(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/;function d(e,t){let n=o.exec(e.trim()),r=o.exec(t.trim());return!!n&&!!r&&n[1]===r[1]&&("0"!==n[1]||n[2]===r[2])&&(0,i.f)(t,e)>=0}let u=/^Watch(?:bell|post): update (?:\S+ (?:to|ke) \S+|\d+ vulnerable packages) in ((?:[A-Za-z0-9._-]+\/){0,3}[A-Za-z0-9._-]+) \(/,c=e=>u.exec(e)?.[1]??null;e.s(["M",0,e=>`Lockfile tertinggal — jalankan npm install (${e.slice(0,5).join(", ")}${e.length>5?`, +${e.length-5}`:""}).`,"a",0,function(e,t,n){if(!e.length)return{ok:!1,why:"nothing"};let r=e.filter(e=>n.includes(e.severity)&&!("moderate"===e.severity&&e.dev));if(!r.length)return{ok:!1,why:"severity"};for(let e of r){let n=t.get(e.package);if(!n||!d(n,e.to))return{ok:!1,why:"major"}}return{ok:!0,upgrades:r}},"m",0,function(e,t){if(!t)return{deps:e,stale:[]};let n=[...Object.entries(t.dependencies).map(([e,t])=>[e,t,!1]),...Object.entries(t.optionalDependencies).map(([e,t])=>[e,t,!1]),...Object.entries(t.devDependencies).map(([e,t])=>[e,t,!0])],r=[...e],a=[];for(let[e,t,s]of n){let n=(0,l.Y)(t);if(!n||!(0,l.C)(n))continue;let o=r.filter(t=>t.name===e);!o.length||o.some(e=>(0,i.f)(e.version,n)>=0)||((r=r.filter(t=>t.name!==e)).push({name:e,version:n,dev:o.every(e=>e.dev)&&s}),a.push(e))}return{deps:r,stale:a}},"D",0,function(e){let t=new Map;for(let n of e){if(!n.direct)continue;let e=t.get(n.package);(!e||0>(0,i.f)(n.installedVersion,e))&&t.set(n.package,n.installedVersion)}return t},"U",0,function(e,t,n=null){for(let r of t){if(c(r.title)!==n)continue;let t=function(e){if(e.packages?.length)return e.packages;let t=/^Watch(?:bell|post): update (\S+) (?:to|ke) /.exec(e.title);return t?[t[1]]:"all"}(r);if("all"===t||e.some(e=>t.includes(e)))return r}return null},"J",0,d],912283);let p=["next","eslint-config-next"],f={CRITICAL:"critical",HIGH:"high",MODERATE:"moderate",LOW:"low",UNKNOWN:"unknown"};function m(e,t){if(!e||!(0,l.C)(e))return null;let n=t.map(e=>e.fixed).filter(t=>!!t&&(0,l.C)(t)&&(0,i.f)(t,e)>0);if(!n.length)return null;let r=n.filter(t=>d(e,t));return(r.length?r:n).reduce((e,t)=>(0,i.f)(t,e)>0?t:e)}function h(e,t){let n=m(e,t),r=n?t.map(e=>e.fixed).filter(e=>!!e&&(0,l.C)(e)&&(0,i.f)(e,n)>0):[],a=r.reduce((e,t)=>null===e||(0,i.f)(t,e)>0?t:e,null),o=a?` (${1===r.length?"one fix needs":"some fixes need"} Next.js ${a.split(".")[0]})`:"";return`Next.js ${e??"(unknown version)"} has ${(0,s.q)(t.length)} (${(0,s.N)(t).toLowerCase()}), ${n?`fixed in ${n}${o}`:"no fix yet"}.`}e.s(["P",0,h,"p",0,function(e){if(!e||"vulnerable"!==e.status||!e.findings.length||!e.version)return null;let t=m(e.version,e.findings);if(!t)return null;let n=f[(0,s.N)(e.findings)],r=[...new Set(e.findings.map(e=>e.id))],a=[...new Set(e.findings.flatMap(e=>e.cve?[e.cve]:[]))];return{from:e.version,to:t,upgrades:[{package:"next",to:t,vulnIds:r,cves:a,severity:n},{package:"eslint-config-next",to:t,vulnIds:[],cves:[],severity:n,companionOf:"next"}],installed:new Map(p.map(t=>[t,e.version]))}},"F",0,function(e){let t=e.find(e=>"next"===e.package&&!e.companionOf);return!t||e.some(e=>"eslint-config-next"===e.package)?e:[...e,{package:"eslint-config-next",to:t.to,vulnIds:[],cves:[],severity:t.severity,companionOf:"next"}]}],876808);let g=e=>Math.round(e).toLocaleString("en-US"),y=(e,t)=>Math.floor((e.getTime()-t.getTime())/864e5),k=(e,t)=>`${e} ${t}${1===e?"":"s"}`,w=e=>{try{let t=new URL(e);return`${t.host}${t.pathname}`}catch{return e}},v=e=>{try{return new URL(e).host}catch{return e}},b=e=>{try{return new URL(e).pathname}catch{return"/"}},I="Down · ",A=(e,t,n)=>({rule:e,subject:t,status:"unknown",resourceId:null,accountId:null,title:t,message:"",provider:null,sampleAt:null,...n}),$=e=>"firestore"===e.provider?"firebase":"d1"===e.provider?"cloudflare":e.provider,S=new Set(["turso","upstash","d1"]),V={MonitorDown:(e,t)=>e.monitors.map(e=>{let r=A("MonitorDown",e.id,{resourceId:e.appId,title:`${e.appName} ${"heartbeat"===e.kind?e.url:b(e.url)}`,provider:"vercel",sampleAt:e.lastCheckedAt}),a=t??3;if("heartbeat"===e.kind){let t;return{...r,status:"err"===e.state?"firing":"ok"===e.state?"ok":"unknown",message:`${e.appName} \xb7 ${e.url}: ${t=e.lastError,t?.startsWith(I)?t.slice(I.length):"no ping in time"}.`}}return e.movedTo?{...r,status:"ok",message:`${v(e.url)} moved to ${e.movedTo}; MonitorDomainMoved takes over.`}:e.failStreak>=a?{...r,status:"firing",message:(0,n.H)(e)?`${w(e.url)} failed its check (${(0,n.H)(e)}) on ${a} consecutive checks.`:`${w(e.url)} returned ${e.lastStatus?`HTTP ${e.lastStatus}`:"no answer"} on ${a} consecutive checks.`}:{...r,status:0===e.failStreak&&e.lastCheckedAt?"ok":"unknown",message:`${w(e.url)} answers again.`}}),MonitorDomainMoved:e=>e.monitors.filter(e=>"http"===e.kind).map(e=>{let t=A("MonitorDomainMoved",e.id,{resourceId:e.appId,title:`${e.appName} ${b(e.url)}`,provider:"vercel"});return e.movedTo?{...t,status:"firing",message:`${v(e.url)} is no longer a domain of ${e.appName}; production is on ${e.movedTo}.`}:{...t,status:"ok",message:`The monitor checks ${v(e.url)}, a domain of ${e.appName}.`}}),CollectorStale:(e,t)=>{let n=e.lastMinuteRunAt;return[A("CollectorStale","collector",{status:!n||e.now.getTime()-n.getTime()>(t??5)*6e4?"firing":"ok",title:"collector",message:n?`The last minute run finished ${g((e.now.getTime()-n.getTime())/6e4)} min ago.`:"The collector hasn't finished a run yet."})]},HighLatency:(e,t)=>e.monitors.filter(e=>"http"===e.kind).map(e=>{let n=A("HighLatency",e.id,{resourceId:e.appId,title:`${e.appName} ${b(e.url)}`,provider:"vercel",sampleAt:e.lastCheckedAt});if(e.checksLast10<5||null===e.p95Last10)return n;let r=t??1500;return{...n,status:e.p95Last10>r?"firing":"ok",message:`p95 ${g(e.p95Last10)} ms over the last 10 minutes (limit ${g(r)} ms).`}}),DeploymentFailed:e=>e.apps.map(e=>{let t=A("DeploymentFailed",e.id,{resourceId:e.id,title:e.name,provider:"vercel"}),n=e.latestProduction;return n?"error"===n.state?{...t,status:"firing",message:`Production deployment ${n.sha?n.sha.slice(0,7):"(no commit)"} failed.`}:{...t,status:"building"===n.state?"unknown":"ok"}:{...t,status:"ok"}}),DatabasePaused:e=>e.dbs&&e.dbs.filter(e=>"supabase"===e.provider).map(e=>A("DatabasePaused",e.id,{resourceId:e.id,title:e.name,provider:"supabase",status:"unknown"===e.state?"unknown":"paused"===e.state?"firing":"ok",message:`Supabase project ${e.name} is paused.`})),CertExpiringSoon:(e,t)=>e.domains&&e.domains.map(n=>{let r=A("CertExpiringSoon",n.id,{resourceId:n.id,title:n.name,provider:"cloudflare"});if(!n.tlsNotAfter)return r;let a=y(n.tlsNotAfter,e.now);return{...r,status:a<(t??14)?"firing":"ok",message:`The TLS certificate of ${n.name} expires in ${k(a,"day")}.`}}),DomainExpiringSoon:(e,t)=>e.domains&&e.domains.map(n=>{let r=A("DomainExpiringSoon",n.id,{resourceId:n.id,title:n.name,provider:"cloudflare"});if(!n.expiresAt)return r;let a=y(n.expiresAt,e.now);return{...r,status:a<(t??30)?"firing":"ok",message:`${n.name} expires in ${k(a,"day")}.`}}),StorageAlmostFull:(e,t)=>e.dbs&&e.dbs.filter(e=>"firestore"!==e.provider).map(e=>{let n=A("StorageAlmostFull",e.id,{resourceId:e.id,title:e.name,provider:$(e)});if(null===e.sizeBytes||!e.sizeLimitBytes)return n;let r=e.sizeBytes/e.sizeLimitBytes*100;return{...n,status:r>(t??80)?"firing":"ok",message:`${e.name} uses ${g(e.sizeBytes/1e6)} MB of ${g(e.sizeLimitBytes/1e6)} MB (${g(r)}%).`}}),NeonComputeHigh:(e,t)=>e.dbs&&e.dbs.filter(e=>"neon"===e.provider).map(e=>{let n=A("NeonComputeHigh",e.id,{resourceId:e.id,title:e.name,provider:"neon"});return null===e.cuHours?n:{...n,status:e.cuHours>(t??80)?"firing":"ok",message:`${e.name} used ${g(e.cuHours)} of ${g(e.cuLimit??100)} CU-hours this month.`}}),FirestoreQuotaHigh:(e,t)=>e.dbs&&e.dbs.filter(e=>"firestore"===e.provider).map(e=>{let n=A("FirestoreQuotaHigh",e.id,{resourceId:e.id,title:e.name,provider:"firebase"});if(e.quotaExhausted)return{...n,status:"firing",message:`${e.name} hit a Firestore quota (RESOURCE_EXHAUSTED).`};if(null===e.readsToday||!e.readsLimit)return!1===e.quotaExhausted?{...n,status:"ok"}:n;let r=e.readsToday/e.readsLimit*100;return{...n,status:r>(t??80)?"firing":"ok",message:`${e.name} read ${g(e.readsToday)} of ${g(e.readsLimit)} documents today (${g(r)}%).`}}),AutoPauseRisk:(e,t)=>e.dbs&&e.dbs.filter(e=>"supabase"===e.provider).map(n=>{let r=A("AutoPauseRisk",n.id,{resourceId:n.id,title:n.name,provider:"supabase"});if("paused"===n.state)return{...r,status:"ok"};if(!n.lastApiAt)return r;let a=Math.floor((e.now.getTime()-n.lastApiAt.getTime())/864e5);return{...r,status:a>=(t??4)?"firing":"ok",message:`No API traffic for ${k(a,"day")}. Supabase pauses free projects after about 7 days.`}}),DnsProxiedToVercel:e=>e.dns&&e.dns.map(e=>A("DnsProxiedToVercel",e.id,{resourceId:e.resourceId,title:e.name,provider:"cloudflare",status:e.proxied&&e.pointsToVercel?"firing":"ok",message:`${e.name} points to Vercel through the Cloudflare proxy. Vercel recommends DNS only.`})),DbQuotaHigh:(e,t)=>e.dbs&&e.dbs.filter(e=>S.has(e.provider)).map(e=>{let n=A("DbQuotaHigh",e.id,{resourceId:e.id,title:e.name,provider:$(e)});return null==e.quotaPct?n:{...n,status:e.quotaPct>(t??80)?"firing":"ok",message:`${e.name}: ${e.quotaLabel??"usage"} at ${g(e.quotaPct)}% of the free plan.`}}),ComputeHigh:(e,t)=>e.compute?e.compute.map(n=>{let a=A("ComputeHigh",n.id,{resourceId:n.id,title:n.name,provider:"supabase",sampleAt:n.latest?new Date(n.latest.at):null}),s=(0,r.B)(n.latest,(0,r.V)(t),e.now);return null===s?a:{...a,status:s.length?"firing":"ok",message:s.length?`${n.name}: ${s.join(", ")}.`:`${n.name} compute is back under the limits.`}}):null,CredentialExpiring:(e,t)=>e.accounts.map(n=>{let r=A("CredentialExpiring",n.id,{accountId:n.id,title:`${n.provider} \xb7 ${n.label}`,provider:n.provider});if("drive"===n.provider&&"error"===n.status&&n.lastError?.includes("invalid_grant"))return{...r,status:"firing",message:"Google Drive access was removed (invalid_grant). Reconnect it."};if(!n.expiresAt)return{...r,status:"ok"};let a=y(n.expiresAt,e.now);return{...r,status:a<(t??14)?"firing":"ok",message:a<0?`The ${n.provider} credential ${n.label} has expired.`:`The ${n.provider} credential ${n.label} expires in ${k(a,"day")}.`}}),VulnerableDependency:e=>e.deps?e.deps.flatMap(t=>{let n=e.apps.find(e=>e.id===t.appId);if(!n)return[];let r=A("VulnerableDependency",t.appId,{resourceId:t.appId,title:n.name,provider:"github"});if(t.error)return[r];let s=(0,a.g)(t.vulns);return s?[{...r,status:"firing",message:(0,a.L)(t.vulns),..."critical"===s?{severity:"critical"}:{}}]:[{...r,status:"ok",message:`${n.name} has no moderate, high or critical dependency advisories.`}]}):null,FrameworkVulnerable:e=>e.frameworks?e.frameworks.flatMap(t=>{let n=e.apps.find(e=>e.id===t.appId);if(!n)return[];let r=A("FrameworkVulnerable",t.appId,{resourceId:t.appId,title:n.name});return"ok"===t.status?[{...r,status:"ok",message:`${n.name} runs Next.js ${t.version??"(unknown version)"} with no known advisories.`}]:"vulnerable"===t.status&&t.findings.length?[{...r,status:"firing",message:h(t.version,t.findings),..."CRITICAL"===(0,s.N)(t.findings)?{severity:"critical"}:{}}]:[r]}):null};e.s(["f",0,function(e,n,r){let a=[],s=new Set;for(let i of n){if(!i.enabled||r&&!r.includes(i.key)||!t._[i.key])continue;let n=V[i.key](e,i.threshold);n&&(s.add(i.key),a.push(...n))}return{observations:a,evaluated:s}}],949663);let x=["MonitorDown","HighLatency"],R=["telegram","discord","webhook","smtp"],D=e=>e.channels.some(e=>R.includes(e));function M(e,t){return t.collectorStale&&"CollectorStale"!==e.rule?"CollectorStale":e.resourceId&&x.includes(e.rule)?t.mutedApps.get(e.resourceId)??null:null}let T=(e,t)=>"critical"===t&&"warning"===e?"critical":e,B=(e,t)=>e.silencedUntilResolved||null!==e.silencedUntil&&e.silencedUntil.getTime()>t.getTime(),N=(e,t)=>`${e}|${t}`;e.s(["f",0,function(e,n,r,a,s){let i={open:[],touch:[],resolve:[]},l=new Map(a.map(e=>[e.key,e])),o=new Map(n.map(e=>[N(e.rule,e.subject),e])),d=new Set(e.map(e=>N(e.ruleKey,e.subject))),u=e=>i.resolve.push({id:e.id,pending:e.notifiedOpen?"resolve":null});for(let n of e){let e=l.get(n.ruleKey),a=o.get(N(n.ruleKey,n.subject));if(!e||!e.enabled){i.resolve.push({id:n.id,pending:null});continue}if(!r.has(n.ruleKey))continue;if(!a){i.resolve.push({id:n.id,pending:null});continue}if("unknown"===a.status)continue;let d=a.provider?s.incidents.get(a.provider)??null:null;if("firing"===a.status){let t=M(a,s),r=n.notifiedOpen&&null!==n.lastNotifiedAt&&s.now.getTime()-n.lastNotifiedAt.getTime()>=216e5,l={id:n.id,okStreak:0,lastSampleAt:a.sampleAt??n.lastSampleAt,lastSeenAt:s.now,message:a.message,causedBy:t,providerIncident:d},o=!n.notifiedOpen&&(!n.pendingSince||s.now.getTime()-n.pendingSince.getTime()>=216e5);(r||o)&&!B(n,s.now)&&!t&&null===n.pending&&D(e)&&(l.pending=r?"repeat":"open"),i.touch.push(l);continue}if(!t._[n.ruleKey].sampled||null===a.sampleAt){u(n);continue}if(!(null===n.lastSampleAt||a.sampleAt.getTime()>n.lastSampleAt.getTime()))continue;let c=n.okStreak+1;c>=2?u(n):i.touch.push({id:n.id,okStreak:c,lastSampleAt:a.sampleAt})}for(let e of n){if("firing"!==e.status||d.has(N(e.rule,e.subject))||s.maintenance.has(e.subject)||e.resourceId&&s.maintenance.has(e.resourceId))continue;let t=l.get(e.rule);if(!t)continue;let n=M(e,s);i.open.push({ruleKey:e.rule,subject:e.subject,resourceId:e.resourceId,accountId:e.accountId,severity:T(t.severity,e.severity),title:e.title,message:e.message,startedAt:s.now,lastSeenAt:s.now,lastSampleAt:e.sampleAt,causedBy:n,providerIncident:e.provider?s.incidents.get(e.provider)??null:null,pending:n||!D(t)?null:"open"})}return i}],747556)},708621,e=>{let t=["status","severity","rule","target","detail","cause","step","since","threshold"],n=["id","en"],r={en:"{status} · {severity} · {rule} · {target}\n{detail}\n{cause}\nNext step: {step}\nsince {since}",id:"{status} · {severity} · {rule} · {target}\n{detail}\n{cause}\nYang perlu kamu lakukan: {step}\nsejak {since}"},a=/\{([a-zA-Z_]+)\}/g,s=e=>e.replace(/\r\n?/g,"\n").replace(/[ \t]+$/gm,"").trim();function i(e){if(e.length>1e3)return`Keep it under ${1e3.toLocaleString("en-US")} characters.`;for(let[,n]of e.matchAll(a))if(!t.includes(n))return`{${n}} isn't a field. Use ${t.map(e=>`{${e}}`).join(", ")}.`;return null}e.s(["I",0,{en:"Test message: Watchbell's sentence about what it saw goes here.",id:"Pesan tes: di sini nanti kalimat Watchbell soal apa yang dilihatnya."},"z",0,"alerts.messageTemplates","i",0,n,"_",0,function(e){if(!e||"object"!=typeof e||Array.isArray(e))return{};let t={};for(let[r,a]of Object.entries(e)){if(!a||"object"!=typeof a)continue;let e={};for(let t of n){let n=a[t];"string"==typeof n&&n.trim()&&null===i(n)&&(e[t]=n)}Object.keys(e).length&&(t[r]=e)}return t},"l",0,function(e,t){return s(e).split("\n").flatMap(e=>{let n=[...e.matchAll(a)].map(e=>e[1]).filter(e=>Object.hasOwn(t,e));return n.length&&n.every(e=>!t[e].trim())?[]:[e.replace(a,(e,n)=>Object.hasOwn(t,n)?t[n]:e)]}).join("\n").replace(/\n{3,}/g,"\n\n").trim()},"F",0,function(e,t){let n="string"==typeof e?s(e):"";return n&&n!==r[t]?n:null},"m",0,i])},455317,71575,569057,930270,e=>{var t=e.i(93321),n=e.i(530385),r=e.i(351674),a=e.i(548734),s=e.i(837137),i=e.i(927262),l=e.i(949663),o=e.i(747556),d=e.i(708621),u=e.i(519051),c=e.i(160147),p=e.i(245710);function f(e,t){return"1h"===e?{silencedUntil:new Date(t.getTime()+36e5),silencedUntilResolved:!1}:{silencedUntil:null,silencedUntilResolved:!0}}e.s(["_",0,[["critical","Critical"],["warning","Warning"],["info","Info"]],"O",0,function(e,t){return e.silencedUntilResolved?{state:"off",text:"Silenced until resolved"}:e.silencedUntil&&e.silencedUntil.getTime()>t.getTime()?{state:"off",text:`Silenced until ${(0,p.U)(e.silencedUntil)}`}:"open"===e.pending||"repeat"===e.pending?{state:"build",text:"Sending…"}:e.causedBy&&!e.notifiedOpen?{state:"off",text:"Muted"}:e.lastNotifiedAt?{state:"ok",text:`Sent ${(0,p.U)(e.lastNotifiedAt)}`}:{state:"off",text:"Digest only"}},"G",0,function(e){return e.enabled?e.firing?{state:"err",text:`Firing \xb7 ${e.firing}`}:e.hasData?{state:"off",text:"Inactive"}:{state:"unknown",text:"No data yet"}:{state:"off",text:"Disabled"}},"A",0,f,"M",0,function(e,t){let n=Math.max(1,Math.round((t.getTime()-e.getTime())/6e4));if(n<60)return`${n} min`;let r=Math.floor(n/60);return r<24?`${r} h ${n%60} min`:`${Math.floor(r/24)} d ${r%24} h`}],71575);var m=e.i(639271),h=e.i(656298),g=e.i(688275),y=e.i(893893),k=e.i(672319),w=e.i(188546),v=e.i(233711);async function b(){let[e]=await (0,a.f)().select({at:s.collectorRuns.finishedAt}).from(s.collectorRuns).where((0,t.b)((0,t.E)(s.collectorRuns.finishedAt),(0,t.y)(s.collectorRuns.trigger,["cron_job_org","qstash","manual"]))).orderBy((0,n.A)(s.collectorRuns.finishedAt)).limit(1);return e?.at??null}async function I(){let[e]=await (0,a.f)().select({at:s.collectorRuns.finishedAt}).from(s.collectorRuns).where((0,t.b)((0,t.E)(s.collectorRuns.finishedAt),(0,t.y)(s.collectorRuns.trigger,["cron_job_org","manual"]))).orderBy((0,n.A)(s.collectorRuns.finishedAt)).limit(1);return e?.at??null}e.s(["D",0,b,"d",0,I],569057);var A=e.i(367247),$=e.i(436357),S=e.i(912283),V=e.i(358179),x=e.i(492665),R=e.i(683439),D=e.i(679662),M=e.i(852539),T=e.i(33135),B=e.i(533957);let N="OpsConsole-Deps/1.0 (+https://watchbell.west-solutions.web.id)";async function j(e,t,n,r){let a=r.deadline-Date.now();if(a<500)return{ok:!1,error:"No time left for OSV.dev"};let s=AbortSignal.timeout(a);return P(e,{method:"POST",headers:{"content-type":"application/json","user-agent":N},body:JSON.stringify(t),signal:s},n,s,r)}async function C(e,t,n){let r=n.deadline-Date.now();if(r<500)return{ok:!1,error:"No time left for OSV.dev"};let a=AbortSignal.timeout(Math.min(r,8e3));return P(e,{method:"GET",headers:{"user-agent":N},signal:a},t,a,n)}async function P(e,t,n,r,a){let s;try{s=await (a.fetch??fetch)(e,{...t,redirect:"error",cache:"no-store"})}catch(e){return{ok:!1,error:(0,B.t)(e)?"OSV.dev didn't answer in time":"Couldn't reach OSV.dev"}}if(!s.ok)return await s.body?.cancel().catch(()=>void 0),{ok:!1,error:`OSV.dev answered HTTP ${s.status}`};try{let{bytes:e,truncated:t}=await (0,T.z)(s,n,(0,T.X)(r));if(t)return{ok:!1,error:"OSV.dev sent too large an answer"};return{ok:!0,body:JSON.parse(new TextDecoder().decode(e))}}catch(e){return{ok:!1,error:(0,B.t)(e)?"OSV.dev didn't answer in time":"OSV.dev sent an answer we couldn't read"}}}async function O(e,t){let n=[];for(let r of(0,M.f)(e)){let e=await j(M.n,r,4194304,t);if(!e.ok)return e;let a=(0,M.j)(e.body,r.queries.length);if(!a)return{ok:!1,error:"OSV.dev sent an answer we couldn't read"};n.push(...a)}return{ok:!0,ids:n}}async function L(e,t){let n=[...new Set(e)].filter(M.G);if(n.length>300)return{ok:!1,error:`Too many advisories to read in one scan (${n.length})`};let r=new Map,a=null;for(let e=0;e<n.length&&!a;e+=8)await Promise.all(n.slice(e,e+8).map(async e=>{let n=await C(`${M.W}${encodeURIComponent(e)}`,1048576,t),s=n.ok?(0,M.O)(n.body):null;s?r.set(e,s):a??=n.ok?"OSV.dev sent an advisory we couldn't read":n.error}));return a?{ok:!1,error:a}:{ok:!0,map:r}}var z=e.i(521050),U=e.i(120213),E=e.i(689963),_=e.i(26972),H=e.i(427221),q=e.i(811365),K=e.i(760417);let F=E.z.array(_.z.object({name:H.z.string(),type:H.z.string(),sha:H.z.string(),size:q.z.number().optional()}));async function J(e,t,n,r={},a=null){if(!(0,K.M)(t)||!(0,K.c)(n))return{ok:!1,kind:"format",error:"That isn't a repository name or ref."};if(null!==a&&(0,z.Q)(a)!==a)return{ok:!1,kind:"format",error:"That isn't a folder in a repository."};let s=a?a.split("/").map(encodeURIComponent).join("/"):"",i=await (0,K.j)(`/repos/${(0,K.f)(t)}/contents/${s}?ref=${encodeURIComponent(n)}`,e,r);if(!i.ok)return i;let l=F.safeParse(i.data);return l.success?{ok:!0,data:l.data.filter(e=>"file"===e.type&&/^[0-9a-f]{40}$/.test(e.sha)).map(e=>({name:e.name,sha:e.sha,size:e.size??0}))}:{ok:!1,kind:"format",error:"GitHub answered the file list in a format the console doesn't recognise."}}async function G(e,t,n,r={}){if(!(0,K.M)(t)||!(0,K.c)(n))return{ok:!1,kind:"format",error:"That isn't a repository name or branch."};let a=await (0,K.j)(`/repos/${(0,K.f)(t)}/git/ref/heads/${n.split("/").map(encodeURIComponent).join("/")}`,e,r);return a.ok?{ok:!0,data:!0}:"missing"===a.kind?{ok:!0,data:!1}:a}function W(e,t,n,r,a,s={}){return(0,K.V)(e,t,n,r,a,s)}async function Z(e,t,n={}){if(!(0,K.M)(t))return{ok:!1,kind:"format",error:"That isn't a repository name."};let r=await (0,K.j)(`/repos/${(0,K.f)(t)}/dependabot/alerts?state=open&ecosystem=npm&per_page=100`,e,n);if(!r.ok)return"scope"===r.kind||"missing"===r.kind?{ok:!0,data:{denied:!0}}:r;let a=(0,U.E)(r.data);return a?{ok:!0,data:{alerts:a}}:{ok:!1,kind:"format",error:"GitHub answered the Dependabot alerts in a format the console doesn't recognise."}}var Q=e.i(751263);async function Y(){let[e]=await (0,a.f)().select().from(s.accounts).where((0,t.u)(s.accounts.provider,"github")).orderBy((0,n.M)(s.accounts.createdAt)).limit(1);if(!e)return{error:"GitHub isn't connected."};let r=(0,V.V)({ciphertext:e.credentialCiphertext,iv:e.credentialIv},(0,x.f)().OPS_ENCRYPTION_KEY);return r?{token:r,accountId:e.id}:{error:"Can't read the stored GitHub credential. Replace it on Connections."}}async function X(){let[e]=await (0,a.f)().select({value:s.settings.value}).from(s.settings).where((0,t.u)(s.settings.key,"deps.scanAll")).limit(1);return e?.value===!0}let ee=e=>{let t=(0,Q.w)(e);return{dir:(0,z.Q)((e??{}).rootDirectory),unsupported:(0,z.l)((e??{}).rootDirectoryUnsupported),branch:(0,Q.i)((0,Q.V)(e),null),...t?{fallback:t}:{}}};async function et(e){let n=[...new Set(e.filter(R.f))],r=new Map;if(!n.length)return r;let i=await (0,a.f)().select({repoId:s.appRepos.repoId,name:s.resources.name,monitored:s.resources.monitored,meta:s.resources.meta}).from(s.appRepos).innerJoin(s.resources,(0,t.u)(s.resources.id,s.appRepos.appId)).where((0,t.b)((0,t.y)(s.appRepos.repoId,n),(0,t.M)(s.resources.goneAt))).limit(1e3);for(let e of(i.sort((e,t)=>Number(!!t.monitored)-Number(!!e.monitored)||(e.name<t.name?-1:+(e.name>t.name))),i))r.has(e.repoId)||r.set(e.repoId,ee(e.meta));return r}async function en(){let e={id:s.githubRepos.id,fullName:s.githubRepos.fullName,defaultBranch:s.githubRepos.defaultBranch,scannedAt:s.dependencyScans.scannedAt},n=(0,t.b)((0,t.M)(s.githubRepos.goneAt),(0,t.u)(s.githubRepos.archived,!1)),r=await X()?await (0,a.f)().select(e).from(s.githubRepos).leftJoin(s.dependencyScans,(0,t.u)(s.dependencyScans.repoId,s.githubRepos.id)).where(n).limit(500):await (0,a.f)().selectDistinct(e).from(s.appRepos).innerJoin(s.githubRepos,(0,t.u)(s.githubRepos.id,s.appRepos.repoId)).leftJoin(s.dependencyScans,(0,t.u)(s.dependencyScans.repoId,s.githubRepos.id)).where(n).limit(500),i=r.length?await et(r.map(e=>e.id)):new Map;return(0,U.M)(r.map(e=>{let t=i.get(e.id);return{...e,rootDir:t?.dir??null,rootDirUnsupported:t?.unsupported??null,prodBranch:t?.branch??null,...t?.fallback?{prodFallback:t.fallback}:{}}}))}let er=(e,t)=>e.length>t?`${e.slice(0,t-1)}…`:e;async function ea(e,t){let n=new Date;await (0,a.f)().insert(s.dependencyScans).values({repoId:e,...t,updatedAt:n}).onConflictDoUpdate({target:s.dependencyScans.repoId,set:{...t,updatedAt:n}})}async function es(e){return(0,a.f)().select({id:s.dependencyVulns.id,package:s.dependencyVulns.package,installedVersion:s.dependencyVulns.installedVersion,vulnId:s.dependencyVulns.vulnId,severity:s.dependencyVulns.severity,fixedVersion:s.dependencyVulns.fixedVersion,summary:s.dependencyVulns.summary,aliases:s.dependencyVulns.aliases,dev:s.dependencyVulns.dev,direct:s.dependencyVulns.direct,source:s.dependencyVulns.source}).from(s.dependencyVulns).where((0,t.b)((0,t.u)(s.dependencyVulns.repoId,e),(0,t.M)(s.dependencyVulns.resolvedAt))).limit(2e3)}function ei(e,t){for(let n of D.a){let r=e.find(e=>e.name===n.path);if(r)return{path:(0,z.H)(t,n.path),kind:n.kind,sha:r.sha}}return null}async function el(e,n,r,i={}){let l=()=>({...i,timeoutMs:Math.max(1e3,Math.min(r-Date.now(),1e4))}),o=async e=>(await ea(n.id,{error:er(e,300),scannedAt:new Date}).catch(()=>void 0),{status:"failed",error:e}),d=n.defaultBranch??"HEAD",u=null;for(let t of[n.prodBranch,n.prodFallback]){if(t&&t===n.defaultBranch)break;let r=(0,Q.i)(t,n.defaultBranch);if(!r)continue;let a=await G(e,n.fullName,r,l());if(!a.ok)return o(a.error);if(a.data){u=r;break}}let c=null!==u;u&&(d=u);let p=c?`Scanned ${u}, the branch production is built from.`:null,f=(0,z.Q)(n.rootDir),m=f?null:(0,z.l)(n.rootDirUnsupported),h=m?`The Vercel Root Directory "${m}" couldn't be used (Watchbell reads plain folder names, at most 4 deep); scanned the repository root.`:null,g=await J(e,n.fullName,d,l(),f);if(!g.ok)return o(f&&"missing"===g.kind?`The folder ${(0,z.x)(f)} isn't in ${n.fullName} on ${d}.`:g.error);let y=ei(g.data,f),k=g.data.find(e=>"package.json"===e.name)??null,w=!1,v=null;if(f&&k&&!y){let t=await J(e,n.fullName,d,l());if(!t.ok)return o(t.error);w=null!==(y=ei(v=t.data,null))}let b=y?y.sha:k?`pkg:${k.sha}`:null,I=b&&f?`${f}:${b}${w&&k?`+${k.sha}`:""}`:b&&m?`odd:${b}`:b,A=I&&c?`br:${u}:${I}`:I,[$]=await (0,a.f)().select().from(s.dependencyScans).where((0,t.u)(s.dependencyScans.repoId,n.id)).limit(1),V=new Date;if(!(0,U.U)($??null,A,V,i.force))return{status:"unchanged"};if(!A){let e=await es(n.id);return e.length&&await (0,a.f)().update(s.dependencyVulns).set({resolvedAt:V}).where((0,t.y)(s.dependencyVulns.id,e.map(e=>e.id))),await ea(n.id,{lockfilePath:null,lockfileSha:null,packageCount:0,scannedAt:V,queriedAt:V,error:null,note:er([p,h,`No package.json or lockfile ${f?"in":"at"} ${(0,z.x)(f)}.`].filter(Boolean).join(" "),300)}),{status:"scanned",vulns:0,packages:0,note:"no package.json"}}let x=(0,z.H)(f,"package.json"),R=k?await W(e,n.fullName,x,d,K.$,l()):null;if(R&&!R.ok)return o(R.error);let T=R?.ok&&R.data?(0,D.b)(R.data):null,B=null,N="package-json",j=w&&y?`Scanned ${(0,z.x)(f)} with the repository root's ${y.path} (workspaces).`:null;if(y){if(2e3>r-Date.now())return o("Time budget used before the lockfile was read; the next run tries again.");let t=await W(e,n.fullName,y.path,d,0xf00000,{...i,timeoutMs:Math.max(1e3,Math.min(r-Date.now(),2e4))});if(!t.ok)return o(t.error);let a=!0;if(w&&f&&t.data&&!(0,z.p)(y.kind,t.data,f)){let t=v?.some(e=>"package.json"===e.name)?await W(e,n.fullName,"package.json",d,K.$,l()):null;if(t&&!t.ok)return o(t.error);a=(0,z.F)(t?.data??null,f)}a?(B=t.data?(0,D.D)(y.kind,t.data):null,N=y.kind,B||(j=[j,`${y.path} couldn't be read; the versions come from package.json ranges (approximate).`].filter(Boolean).join(" "))):(j=`The repository root's ${y.path} isn't a workspace that includes ${f}, so the versions come from ${x} ranges (approximate).`,y=null)}if(B){let e=(0,S.m)(B,T);B=e.deps,e.stale.length&&(j=[j,(0,S.M)(e.stale)].filter(Boolean).join(" "))}else B=T?(0,D.e)(T):[],N="package-json",j??=y?null:"No lockfile: the versions come from package.json ranges (approximate).";let C=await es(n.id),P=[];if(B.length){let e=await O(B,{fetch:i.fetch,deadline:r});if(!e.ok)return o(e.error);let t=(0,U.A)(C,!0===i.force),n=await L((0,U.z)(B,e.ids,t),{fetch:i.fetch,deadline:r});if(!n.ok)return o(n.error);P=(0,M.i)(B,e.ids,n.map,t)}if(r-Date.now()>1500){let t=await Z(e,n.fullName,l());t.ok&&"alerts"in t.data?P=(0,U.R)(P,t.data.alerts,B):t.ok&&(j=[j,"Dependabot alerts aren't readable with this token (optional: Dependabot alerts: Read)."].filter(Boolean).join(" "))}let E=(0,U.h)(C,P,(0,D.K)(T));j=[p,h,j].filter(Boolean).join(" ")||null;let _=new Date;return await (0,a.f)().transaction(async e=>{for(let r of(E.insert.length&&await e.insert(s.dependencyVulns).values(E.insert.map(e=>({repoId:n.id,package:e.package,installedVersion:e.installedVersion,vulnId:e.vulnId,aliases:e.aliases,severity:e.severity,fixedVersion:e.fixedVersion,summary:e.summary,direct:e.direct,dev:e.dev,source:e.source,firstSeenAt:_,lastSeenAt:_}))).onConflictDoNothing(),E.update))await e.update(s.dependencyVulns).set({severity:r.severity,fixedVersion:r.fixedVersion,summary:r.summary,aliases:r.aliases,dev:r.dev,direct:r.direct,lastSeenAt:_}).where((0,t.u)(s.dependencyVulns.id,r.id));E.resolve.length&&await e.update(s.dependencyVulns).set({resolvedAt:_}).where((0,t.b)((0,t.y)(s.dependencyVulns.id,E.resolve),(0,t.M)(s.dependencyVulns.resolvedAt))),await e.insert(s.dependencyScans).values({repoId:n.id,lockfilePath:y?.path??(k?x:null),lockfileSha:A,packageCount:B.length,scannedAt:_,queriedAt:_,error:null,note:j?er(j,300):null,updatedAt:_}).onConflictDoUpdate({target:s.dependencyScans.repoId,set:{lockfilePath:y?.path??(k?x:null),lockfileSha:A,packageCount:B.length,scannedAt:_,queriedAt:_,error:null,note:j?er(j,300):null,updatedAt:_}})}),{status:"scanned",vulns:E.insert.length+E.update.length,packages:B.length,note:"package-json"===N?j:null}}async function eo(e,n={}){var r,i;let l,o,d,u,c=await Y();if("error"in c)return{error:c.error};let{first:p,only:f,skip:m,...h}=n,g=(r=await en(),l=(i={first:p,only:f,skip:m}).only?new Set(i.only):null,o=new Set(i.skip??[]),d=(l?r.filter(e=>l.has(e.id)):r).filter(e=>!o.has(e.id)),u=new Set(i.first??[]),[...d.filter(e=>u.has(e.id)),...d.filter(e=>!u.has(e.id))]),y={scanned:0,unchanged:0,failed:[],left:0,done:[],listed:g.map(e=>e.id)};for(let[t,n]of g.entries()){if(e-Date.now()<4e3){y.left=g.length-t;break}y.done.push(n.id);try{let t=await el(c.token,n,e,h);"scanned"===t.status?y.scanned++:"unchanged"===t.status?y.unchanged++:y.failed.push(`${n.fullName}: ${t.error}`)}catch(e){y.failed.push(`${n.fullName}: ${e instanceof Error?e.name:"error"}`)}}return await (0,a.f)().delete(s.dependencyVulns).where((0,t.b)((0,t.E)(s.dependencyVulns.resolvedAt),(0,t.S)(s.dependencyVulns.resolvedAt,new Date(Date.now()-7776e6)))).catch(()=>void 0),y}let ed=async()=>(await (0,a.f)().select({id:s.accounts.id}).from(s.accounts).where((0,t.u)(s.accounts.provider,"github")).limit(1)).length>0;async function eu(e,n,r={}){let i,l,o,{marked:d,onlyMarked:u}=n;if(!await ed())return{problem:null,settled:[...d],done:[],complete:!0};let c=d.filter(R.f),p=c.length?await (0,a.f)().select({appId:s.appRepos.appId,repoId:s.appRepos.repoId}).from(s.appRepos).where((0,t.y)(s.appRepos.appId,c)).limit(5*c.length):[],f=[...new Set(p.map(e=>e.repoId))],m=e=>p.filter(t=>t.appId===e).map(e=>e.repoId),h=d.filter(e=>!m(e).length);if(u&&!f.length)return{problem:null,settled:[...d],done:[],complete:!0};if(e-Date.now()<4e3)return{problem:null,settled:h,done:[],complete:!1};let g=(n.skip??[]).filter(e=>!f.includes(e)),y=await eo(e,{...r,first:f,...u?{only:f}:{skip:g}});if("error"in y){let e;return{problem:(e=y.error,/didn't answer in time|no time left|time budget|rate limit/i.test(e))?null:y.error,settled:[...d],done:[],complete:!0}}let k=new Set([...y.done,...f.filter(e=>!y.listed.includes(e))]);return{problem:(i=y.failed.filter(e=>!/didn't answer in time|no time left|time budget|rate limit/i.test(e)),(l=y.failed.length-i.length+(y.left??0))&&console.info(`deps: ${l} repositor${1===l?"y":"ies"} wait for the next run`),o=i.slice(0,3),i.length>3&&o.push(`+${i.length-3} more`),o.length?o.join("; "):null),settled:d.filter(e=>m(e).every(e=>k.has(e))),done:y.done,complete:0===y.left}}async function ec(e){let r={repo:null,scan:null,vulns:[],writeConnected:!1};if(!(0,R.f)(e))return r;let[i]=await (0,a.f)().select({id:s.githubRepos.id,fullName:s.githubRepos.fullName}).from(s.appRepos).innerJoin(s.githubRepos,(0,t.u)(s.githubRepos.id,s.appRepos.repoId)).where((0,t.u)(s.appRepos.appId,e)).limit(1);if(!i)return r;let[[l],o,[d]]=await Promise.all([(0,a.f)().select({scannedAt:s.dependencyScans.scannedAt,lockfilePath:s.dependencyScans.lockfilePath,packageCount:s.dependencyScans.packageCount,error:s.dependencyScans.error,note:s.dependencyScans.note}).from(s.dependencyScans).where((0,t.u)(s.dependencyScans.repoId,i.id)).limit(1),(0,a.f)().select({package:s.dependencyVulns.package,installedVersion:s.dependencyVulns.installedVersion,vulnId:s.dependencyVulns.vulnId,severity:s.dependencyVulns.severity,fixedVersion:s.dependencyVulns.fixedVersion,summary:s.dependencyVulns.summary,aliases:s.dependencyVulns.aliases,dev:s.dependencyVulns.dev,direct:s.dependencyVulns.direct,firstSeenAt:s.dependencyVulns.firstSeenAt}).from(s.dependencyVulns).where((0,t.b)((0,t.u)(s.dependencyVulns.repoId,i.id),(0,t.M)(s.dependencyVulns.resolvedAt))).limit(2e3),(0,a.f)().select({id:s.accounts.id}).from(s.accounts).where((0,t.u)(s.accounts.provider,"github_write")).limit(1)]);o.sort((e,t)=>(0,U.t)(e.severity)-(0,U.t)(t.severity)||(e.package<t.package?-1:+(e.package>t.package))||(e.vulnId<t.vulnId?-1:1));let u=await (0,a.f)().select({number:s.dependencyPrs.number,stage:s.dependencyPrs.stage,stageText:s.dependencyPrs.stageText,openedAt:s.dependencyPrs.openedAt}).from(s.dependencyPrs).where((0,t.b)((0,t.u)(s.dependencyPrs.repoId,i.id),(0,t.B)(s.dependencyPrs.openedAt,new Date(Date.now()-12096e5)))).orderBy((0,n.A)(s.dependencyPrs.openedAt)).limit(5).catch(()=>[]);return{repo:i,scan:l??null,vulns:o,writeConnected:!!d,prs:(u??[]).map(e=>({...e,fullName:i.fullName}))}}async function ep(e,n={}){if(!(0,R.f)(e))return{ok:!1,error:"That app no longer exists."};let[i]=await (0,a.f)().select({app:s.resources.name,id:s.githubRepos.id,fullName:s.githubRepos.fullName,defaultBranch:s.githubRepos.defaultBranch,goneAt:s.githubRepos.goneAt,meta:s.resources.meta}).from(s.appRepos).innerJoin(s.githubRepos,(0,t.u)(s.githubRepos.id,s.appRepos.repoId)).innerJoin(s.resources,(0,t.u)(s.resources.id,s.appRepos.appId)).where((0,t.u)(s.appRepos.appId,e)).limit(1);if(!i)return{ok:!1,error:"Link a repository first."};if(i.goneAt)return{ok:!1,error:"That repository is no longer shared with the GitHub token."};let l=await Y();if("error"in l)return{ok:!1,error:l.error};let o=ee(i.meta),d=await el(l.token,{id:i.id,fullName:i.fullName,defaultBranch:i.defaultBranch,scannedAt:null,rootDir:o.dir,rootDirUnsupported:o.unsupported,prodBranch:o.branch,prodFallback:o.fallback??null},Date.now()+4e4,{...n,force:!0});if("failed"===d.status)return{ok:!1,error:`The scan failed: ${d.error}`};let[u]=await (0,a.f)().select({n:r.B`count(*)::int`}).from(s.dependencyVulns).where((0,t.b)((0,t.u)(s.dependencyVulns.repoId,i.id),(0,t.M)(s.dependencyVulns.resolvedAt))),c=u?.n??0;return{ok:!0,app:i.app,repo:i.fullName,vulns:c,message:c?`${c} known vulnerabilit${1===c?"y":"ies"} in ${d.packages??0} packages.`:`No known vulnerabilities in ${d.packages??0} packages.`}}async function ef(e){let n=e.filter(R.f);if(!n.length)return[];let r=await (0,a.f)().select({appId:s.appRepos.appId,repoId:s.appRepos.repoId,error:s.dependencyScans.error}).from(s.appRepos).innerJoin(s.dependencyScans,(0,t.u)(s.dependencyScans.repoId,s.appRepos.repoId)).where((0,t.b)((0,t.y)(s.appRepos.appId,n),(0,t.E)(s.dependencyScans.scannedAt)));if(!r.length)return[];let i=await (0,a.f)().select({repoId:s.dependencyVulns.repoId,package:s.dependencyVulns.package,installedVersion:s.dependencyVulns.installedVersion,fixedVersion:s.dependencyVulns.fixedVersion,severity:s.dependencyVulns.severity,summary:s.dependencyVulns.summary,dev:s.dependencyVulns.dev,direct:s.dependencyVulns.direct}).from(s.dependencyVulns).where((0,t.b)((0,t.y)(s.dependencyVulns.repoId,[...new Set(r.map(e=>e.repoId))]),(0,t.M)(s.dependencyVulns.resolvedAt))).limit(1e4);return r.map(e=>({appId:e.appId,repoId:e.repoId,error:e.error,vulns:i.filter(t=>t.repoId===e.repoId).map(e=>({package:e.package,installedVersion:e.installedVersion,fixedVersion:e.fixedVersion,severity:e.severity,summary:e.summary,dev:e.dev,direct:e.direct}))}))}async function em(e,n=new Set){let i=e.filter(R.f),l=new Map;if(!i.length)return l;let o=await (0,a.f)().select({appId:s.appRepos.appId,repoId:s.appRepos.repoId}).from(s.appRepos).where((0,t.y)(s.appRepos.appId,i));if(!o.length)return l;let d=await (0,a.f)().select({repoId:s.dependencyVulns.repoId,package:s.dependencyVulns.package,installedVersion:s.dependencyVulns.installedVersion,fixedVersion:s.dependencyVulns.fixedVersion,vulnId:s.dependencyVulns.vulnId,aliases:s.dependencyVulns.aliases,severity:s.dependencyVulns.severity,direct:s.dependencyVulns.direct}).from(s.dependencyVulns).where((0,t.b)((0,t.y)(s.dependencyVulns.repoId,[...new Set(o.map(e=>e.repoId))]),(0,t.M)(s.dependencyVulns.resolvedAt),(0,t.u)(s.dependencyVulns.direct,!0),(0,t.E)(s.dependencyVulns.fixedVersion))).limit(2e3),u=d.some(e=>"next"===e.package)?new Set((await (0,a.f)().selectDistinct({appId:s.dependencyPrs.appId}).from(s.dependencyPrs).where((0,t.b)((0,t.y)(s.dependencyPrs.appId,i),(0,t.$)(s.dependencyPrs.stage,["merged","closed"]),(0,t.B)(s.dependencyPrs.openedAt,new Date(Date.now()-12096e5)),r.B`${s.dependencyPrs.packages} @> '["next"]'::jsonb`)).limit(i.length)).map(e=>e.appId)):new Set;for(let e of o){let t=n.has(e.appId)||u.has(e.appId);(0,U.B)(d.filter(n=>n.repoId===e.repoId&&!(t&&"next"===n.package))).length&&l.set(e.appId,e.repoId)}return l}e.s(["o",0,12e3,"d",0,4e3,"j",0,ec,"O",0,eu,"C",0,em,"a",0,ef,"h",0,ep],930270);var eh=e.i(242605);async function eg(){return(0,a.f)().select({appId:s.links.fromResourceId,dbId:s.links.toResourceId}).from(s.links).where((0,t.u)(s.links.kind,"uses_db")).limit(500)}async function ey(e){let i=(0,t.b)((0,t.u)(s.resources.monitored,!0),(0,t.M)(s.resources.goneAt)),[l,o,d,u,c]=await Promise.all([I(),b(),(0,a.f)().select({m:s.monitors,appName:s.resources.name,appMeta:s.resources.meta}).from(s.monitors).innerJoin(s.resources,(0,t.u)(s.resources.id,s.monitors.resourceId)).where((0,t.b)(i,(0,t.u)(s.monitors.paused,!1),(0,t.u)(s.monitors.ownerPaused,!1))),(0,a.f)().select({id:s.resources.id,name:s.resources.name,meta:s.resources.meta}).from(s.resources).where((0,t.b)(i,(0,t.u)(s.resources.kind,"app"))),(0,a.f)().select({id:s.accounts.id,provider:s.accounts.provider,label:s.accounts.label,expiresAt:s.accounts.expiresAt,status:s.accounts.status,lastError:s.accounts.lastError}).from(s.accounts)]),p=d.map(e=>e.m.id),f=p.length?await (0,a.f)().select({id:s.checks.monitorId,n:r.B`count(*)::int`,p95:r.B`percentile_cont(0.95) within group (order by ${s.checks.latencyMs})::float8`}).from(s.checks).where((0,t.b)((0,t.y)(s.checks.monitorId,p),(0,t.B)(s.checks.at,new Date(e.getTime()-6e5)),(0,t.u)(s.checks.inMaintenance,!1))).groupBy(s.checks.monitorId):[],S=u.map(e=>e.id),V=S.length?await (0,a.f)().selectDistinctOn([s.deployments.resourceId],{appId:s.deployments.resourceId,state:s.deployments.state,sha:s.deployments.commitSha,createdAt:s.deployments.createdAtProvider}).from(s.deployments).where((0,t.b)((0,t.y)(s.deployments.resourceId,S),(0,t.u)(s.deployments.target,"production"))).orderBy(s.deployments.resourceId,(0,n.A)(s.deployments.createdAtProvider)):[],x=await (0,a.f)().select({id:s.resources.id,name:s.resources.name,kind:s.resources.kind,state:s.snapshots.state,data:s.snapshots.data}).from(s.resources).innerJoin(s.snapshots,(0,t.u)(s.snapshots.resourceId,s.resources.id)).where((0,t.b)(i,(0,t.y)(s.resources.kind,["supabase_project","neon_project","firestore","turso_database","upstash_redis","d1_database","zone","domain"]))),R=e=>x.filter(t=>t.kind===e),D=x.filter(e=>["supabase_project","neon_project","firestore","turso_database","upstash_redis","d1_database"].includes(e.kind)),M=R("zone"),T=R("domain"),B=await eg(),N=await (0,A.Y)().catch(()=>null),j=S.length?await ef(S).catch(()=>null):null,C=S.length?await (0,eh.F)(S).catch(()=>null):null;return{now:e,lastMinuteRunAt:l,lastAnyRunAt:o,monitors:d.map(({m:e,appName:t,appMeta:n})=>{let r=f.find(t=>t.id===e.id),a="heartbeat"===e.kind;return{id:e.id,appId:e.resourceId,appName:t,url:a?e.name??"heartbeat":e.url,kind:a?"heartbeat":"http",state:e.state,failStreak:e.failStreak,lastStatus:e.lastStatus,lastError:e.lastError,lastCheckedAt:e.lastCheckedAt,p95Last10:r?.p95??null,checksLast10:r?.n??0,movedTo:a?null:(0,$.u)(e.url,{name:t,meta:n},u.filter(t=>t.id!==e.resourceId),{lastError:e.lastError})?.to??null}}),apps:u.map(e=>{let t=V.find(t=>t.appId===e.id);return{id:e.id,name:e.name,latestProduction:t?{state:t.state,sha:t.sha,createdAt:t.createdAt}:null}}),accounts:c,dbs:D.length?D.map(t=>(function(e,t){let n={id:e.id,name:e.name,state:e.state,sizeBytes:null,sizeLimitBytes:null,lastApiAt:null,cuHours:null,cuLimit:null,readsToday:null,readsLimit:null,quotaExhausted:null};if("supabase_project"===e.kind){let t=(0,y.k)(y.B,e.data),r=(0,v.Z)(t.lastTrafficAt),a=(0,v.Z)(t.trafficAt),s=r??(a&&!t.trafficError?new Date(a.getTime()-6048e5):null);return{...n,provider:"supabase",sizeBytes:t.sizeBytes??null,sizeLimitBytes:k.R,lastApiAt:s}}if("neon_project"===e.kind){let t=(0,y.k)(y.s,e.data),r=(t.branches??[]).map(e=>e.logicalSize).filter(e=>"number"==typeof e);return{...n,provider:"neon",cuHours:null==t.computeSeconds?null:t.computeSeconds/3600,cuLimit:g.a.cuHours,sizeBytes:r.length?r.reduce((e,t)=>e+t,0):null,sizeLimitBytes:g.a.storageBytes}}if("firestore"===e.kind){let r=(0,y.k)(y.w,e.data),a=(0,v.Z)(r.opsAt),s=null!=r.reads&&a&&a.getTime()>=(0,h.a)(t).getTime()?r.reads:null,i=null!=r.latencyMs||null!=r.pingError;return{...n,provider:"firestore",readsToday:s,readsLimit:h.T.reads,quotaExhausted:i?"RESOURCE_EXHAUSTED"===r.pingReason:null}}if("turso_database"===e.kind){let r=(0,y.k)(y.N,e.data),a=(0,m.u)((0,m.G)(r,t));return{...n,provider:"turso",sizeBytes:r.orgStorageBytes??null,sizeLimitBytes:m.g.storageBytes,quotaPct:a?.pct??null,quotaLabel:a?`${a.label} ${a.text}`:null}}if("upstash_redis"===e.kind){let r=(0,y.k)(y.e,e.data),a=(0,m.u)((0,m.$)(r,t));return{...n,provider:"upstash",sizeBytes:r.storageBytes??null,sizeLimitBytes:m.W.storageBytes,quotaPct:a?.pct??null,quotaLabel:a?`${a.label} ${a.text}`:null}}if("d1_database"===e.kind){let r=(0,y.k)(y.x,e.data),a=(0,m.u)((0,m.I)(r,t));return{...n,provider:"d1",sizeBytes:r.sizeBytes??null,sizeLimitBytes:m.M.dbBytes,quotaPct:a?.pct??null,quotaLabel:a?`${a.label} ${a.text}`:null}}return null})(t,e)).filter(e=>null!==e):null,domains:M.length||T.length?[...M.map(e=>({id:e.id,name:e.name,tlsNotAfter:null,expiresAt:(0,v.Z)((0,w.q)(e.data).rdap?.expiresAt)})),...T.map(e=>({id:e.id,name:e.name,tlsNotAfter:(0,v.Z)((0,w.q)(e.data).tls?.notAfter),expiresAt:null}))]:null,dns:function(e,t){let n=e.filter(e=>Array.isArray(e.data.records));if(!n.length)return null;let r=e.map(e=>e.name),a=[];for(let e of n){let n=t.filter(t=>(0,v.J)(t.name,r)===e.name.toLowerCase().replace(/\.$/,"")),s=[...new Set(n.flatMap(e=>(0,w.q)(e.data).vercel?.recommendedIps??[]))];for(let t of(0,w.q)(e.data).records){if(!(0,v.l)(t,s))continue;let r=t.name.toLowerCase().replace(/\.$/,""),i=n.find(e=>e.name.toLowerCase().replace(/\.$/,"")===r);a.push({id:`${e.id}:${t.id}`,resourceId:i?.id??e.id,name:t.name,proxied:t.proxied,pointsToVercel:!0})}}return a}(M,T),links:B,compute:N,deps:j&&j.length?j:null,frameworks:C&&C.length?C:null}}var ek=e.i(714530),ew=e.i(396667);let ev={vercel:"Vercel",supabase:"Supabase",neon:"Neon",cloudflare:"Cloudflare",firebase:"Firebase",gcp:"Google Cloud"};async function eb(){return(await (0,a.f)().select().from(s.alertRules)).filter(e=>(0,i.h)(e.key)).map(e=>({key:e.key,severity:e.severity,threshold:e.threshold,enabled:e.enabled,channels:e.channels}))}async function eI(e,n={}){let[r,d,p,f,m,h]=await Promise.all([ey(e),eb(),(0,a.f)().select().from(s.alerts).where((0,t.M)(s.alerts.resolvedAt)),(0,a.f)().select({provider:s.providerStatus.provider,state:s.providerStatus.state}).from(s.providerStatus),(0,ek.w)(),(0,ew.I)()]),g=new Map(r.accounts.map(e=>[e.id,e.provider])),y=p.filter(e=>!(0,c.O)(h,e.ruleKey,e.accountId?g.get(e.accountId):null)),k=(0,l.f)(r,d,n.only),w=k.evaluated,v=k.observations.filter(e=>!(0,c.O)(h,e.rule,e.provider)),b=d.find(e=>"CollectorStale"===e.key),I=void 0===r.lastAnyRunAt?r.lastMinuteRunAt:r.lastAnyRunAt,A=!!b?.enabled&&(!I||e.getTime()-I.getTime()>(b.threshold??5)*6e4),$=new Map((r.dbs??[]).filter(e=>"paused"===e.state).map(e=>[e.id,e.name])),S=new Map(r.links.filter(e=>$.has(e.dbId)).map(e=>[e.appId,`DatabasePaused \xb7 ${$.get(e.dbId)}`])),V=new Map(f.filter(e=>"warn"===e.state||"err"===e.state).map(e=>["gcp"===e.provider?"firebase":e.provider,ev[e.provider]??e.provider])),x=(0,u.u)(m,r.monitors.map(e=>({id:e.id,appId:e.appId})),e,r.apps.map(e=>e.id)),R=y.filter(e=>(0,i.h)(e.ruleKey)).map(e=>({id:e.id,ruleKey:e.ruleKey,subject:e.subject,okStreak:e.okStreak,lastSampleAt:e.lastSampleAt,silencedUntil:e.silencedUntil,silencedUntilResolved:e.silencedUntilResolved,notifiedOpen:e.notifiedOpen,lastNotifiedAt:e.lastNotifiedAt,pending:e.pending,pendingSince:e.pendingSince})),D=(0,o.f)(R,v,w,d,{now:e,collectorStale:A,mutedApps:S,incidents:V,maintenance:x});return D.open.length||D.touch.length||D.resolve.length?(await (0,a.f)().transaction(async n=>{for(let t of D.open)await n.insert(s.alerts).values({...t,pendingSince:t.pending?e:null}).onConflictDoNothing();for(let r of D.touch){let{id:a,pending:i,...l}=r;await n.update(s.alerts).set({...l,...i?{pending:i,pendingSince:e}:{}}).where((0,t.b)((0,t.u)(s.alerts.id,a),(0,t.M)(s.alerts.resolvedAt)))}for(let r of D.resolve)await n.update(s.alerts).set({resolvedAt:e,pending:r.pending,pendingSince:r.pending?e:null}).where((0,t.b)((0,t.u)(s.alerts.id,r.id),(0,t.M)(s.alerts.resolvedAt)))}),{opened:D.open.length,resolved:D.resolve.length}):{opened:0,resolved:0}}async function eA(){let[e,n]=await Promise.all([(0,ew.I)(),(0,a.f)().select({ruleKey:s.alerts.ruleKey,provider:s.accounts.provider,n:r.B`count(*)::int`}).from(s.alerts).leftJoin(s.accounts,(0,t.u)(s.accounts.id,s.alerts.accountId)).where((0,t.b)((0,t.M)(s.alerts.resolvedAt),(0,t.y)(s.alerts.severity,["critical","warning"]))).groupBy(s.alerts.ruleKey,s.accounts.provider)]);return n.reduce((t,n)=>t+((0,c.O)(e,n.ruleKey,n.provider)?0:Number(n.n)),0)}let e$=r.B`case ${s.alerts.severity} when 'critical' then 0 when 'warning' then 1 else 2 end`;async function eS(e=new Set){return(await (0,a.f)().select({a:s.alerts,name:s.resources.name,kind:s.resources.kind}).from(s.alerts).leftJoin(s.resources,(0,t.u)(s.resources.id,s.alerts.resourceId)).where((0,t.b)((0,t.M)(s.alerts.resolvedAt),(0,ew.s)(e))).orderBy(e$,(0,n.A)(s.alerts.startedAt)).limit(200)).map(({a:e,name:t,kind:n})=>({...e,resourceName:t??null,resourceKind:n??null}))}async function eV(){return eS(await (0,ew.I)())}async function ex(e){return(await (0,a.f)().select({id:s.alerts.id,ruleKey:s.alerts.ruleKey,severity:s.alerts.severity,title:s.alerts.title,resourceId:s.alerts.resourceId,startedAt:s.alerts.startedAt,resolvedAt:s.alerts.resolvedAt}).from(s.alerts).where((0,t.b)((0,t.E)(s.alerts.resolvedAt),(0,t.B)(s.alerts.resolvedAt,new Date(e.getTime()-6048e5)))).orderBy((0,n.A)(s.alerts.resolvedAt)).limit(50)).flatMap(e=>e.resolvedAt?[{...e,resolvedAt:e.resolvedAt}]:[])}async function eR(){let[e,n,l]=await Promise.all([eb(),(0,a.f)().select({key:s.alerts.ruleKey,n:r.B`count(*)::int`}).from(s.alerts).where((0,t.M)(s.alerts.resolvedAt)).groupBy(s.alerts.ruleKey),(0,a.f)().select({kind:s.resources.kind}).from(s.resources).innerJoin(s.snapshots,(0,t.u)(s.snapshots.resourceId,s.resources.id)).where((0,t.b)((0,t.u)(s.resources.monitored,!0),(0,t.M)(s.resources.goneAt))).groupBy(s.resources.kind)]),o=new Set(l.map(e=>e.kind)),d={databases:["supabase_project","neon_project","firestore"].some(e=>o.has(e)),domains:o.has("domain")||o.has("zone"),dns:o.has("zone")};return i.u.flatMap(t=>{let r=e.find(e=>e.key===t);if(!r)return[];let a=i._[t].needs;return[{rule:r,firing:n.find(e=>e.key===t)?.n??0,hasData:null===a||d[a]}]})}async function eD(e,n,r,i){let l="off"===n?{silencedUntil:null,silencedUntilResolved:!1,silencedBy:null}:{...f(n,i),silencedBy:r},[o]=await (0,a.f)().update(s.alerts).set(l).where((0,t.b)((0,t.u)(s.alerts.id,e),(0,t.M)(s.alerts.resolvedAt))).returning({ruleKey:s.alerts.ruleKey,title:s.alerts.title,resourceId:s.alerts.resourceId});return o??null}async function eM(e,n){return(await (0,a.f)().update(s.alertRules).set({...n,updatedAt:new Date}).where((0,t.u)(s.alertRules.key,e)).returning({key:s.alertRules.key})).length>0}async function eT(){try{let[e]=await (0,a.f)().select({value:s.settings.value}).from(s.settings).where((0,t.u)(s.settings.key,d.z)).limit(1);return(0,d._)(e?.value)}catch{return{}}}async function eB(e,t){let n=await eT();Object.keys(t).length?n[e]=t:delete n[e],await (0,a.f)().insert(s.settings).values({key:d.z,value:n}).onConflictDoUpdate({target:s.settings.key,set:{value:n,updatedAt:new Date}})}e.s(["$",0,eI,"q",0,eS,"I",0,ex,"i",0,eV,"X",0,eA,"w",0,eT,"y",0,eR,"z",0,eM,"_",0,eB,"N",0,eD],455317)}]})();
1
+ (()=>{"use strict";module.exports=[949663,912283,876808,747556,e=>{var t=e.i(927262),n=e.i(201516),r=e.i(273133),a=e.i(120213),s=e.i(84979),i=e.i(84877),l=e.i(679662);let o=/^v?(\d+)\.(\d+)\.(\d+)(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/;function d(e,t){let n=o.exec(e.trim()),r=o.exec(t.trim());return!!n&&!!r&&n[1]===r[1]&&("0"!==n[1]||n[2]===r[2])&&(0,i.f)(t,e)>=0}let u=/^Watch(?:bell|post): update (?:\S+ (?:to|ke) \S+|\d+ vulnerable packages) in ((?:[A-Za-z0-9._-]+\/){0,3}[A-Za-z0-9._-]+) \(/,c=e=>u.exec(e)?.[1]??null;e.s(["M",0,e=>`Lockfile tertinggal — jalankan npm install (${e.slice(0,5).join(", ")}${e.length>5?`, +${e.length-5}`:""}).`,"a",0,function(e,t,n){if(!e.length)return{ok:!1,why:"nothing"};let r=e.filter(e=>n.includes(e.severity)&&!("moderate"===e.severity&&e.dev));if(!r.length)return{ok:!1,why:"severity"};for(let e of r){let n=t.get(e.package);if(!n||!d(n,e.to))return{ok:!1,why:"major"}}return{ok:!0,upgrades:r}},"m",0,function(e,t){if(!t)return{deps:e,stale:[]};let n=[...Object.entries(t.dependencies).map(([e,t])=>[e,t,!1]),...Object.entries(t.optionalDependencies).map(([e,t])=>[e,t,!1]),...Object.entries(t.devDependencies).map(([e,t])=>[e,t,!0])],r=[...e],a=[];for(let[e,t,s]of n){let n=(0,l.Y)(t);if(!n||!(0,l.C)(n))continue;let o=r.filter(t=>t.name===e);!o.length||o.some(e=>(0,i.f)(e.version,n)>=0)||((r=r.filter(t=>t.name!==e)).push({name:e,version:n,dev:o.every(e=>e.dev)&&s}),a.push(e))}return{deps:r,stale:a}},"D",0,function(e){let t=new Map;for(let n of e){if(!n.direct)continue;let e=t.get(n.package);(!e||0>(0,i.f)(n.installedVersion,e))&&t.set(n.package,n.installedVersion)}return t},"U",0,function(e,t,n=null){for(let r of t){if(c(r.title)!==n)continue;let t=function(e){if(e.packages?.length)return e.packages;let t=/^Watch(?:bell|post): update (\S+) (?:to|ke) /.exec(e.title);return t?[t[1]]:"all"}(r);if("all"===t||e.some(e=>t.includes(e)))return r}return null},"J",0,d],912283);let p=["next","eslint-config-next"],f={CRITICAL:"critical",HIGH:"high",MODERATE:"moderate",LOW:"low",UNKNOWN:"unknown"};function m(e,t){if(!e||!(0,l.C)(e))return null;let n=t.map(e=>e.fixed).filter(t=>!!t&&(0,l.C)(t)&&(0,i.f)(t,e)>0);if(!n.length)return null;let r=n.filter(t=>d(e,t));return(r.length?r:n).reduce((e,t)=>(0,i.f)(t,e)>0?t:e)}function h(e,t){let n=m(e,t),r=n?t.map(e=>e.fixed).filter(e=>!!e&&(0,l.C)(e)&&(0,i.f)(e,n)>0):[],a=r.reduce((e,t)=>null===e||(0,i.f)(t,e)>0?t:e,null),o=a?` (${1===r.length?"one fix needs":"some fixes need"} Next.js ${a.split(".")[0]})`:"";return`Next.js ${e??"(unknown version)"} has ${(0,s.q)(t.length)} (${(0,s.N)(t).toLowerCase()}), ${n?`fixed in ${n}${o}`:"no fix yet"}.`}e.s(["P",0,h,"p",0,function(e){if(!e||"vulnerable"!==e.status||!e.findings.length||!e.version)return null;let t=m(e.version,e.findings);if(!t)return null;let n=f[(0,s.N)(e.findings)],r=[...new Set(e.findings.map(e=>e.id))],a=[...new Set(e.findings.flatMap(e=>e.cve?[e.cve]:[]))];return{from:e.version,to:t,upgrades:[{package:"next",to:t,vulnIds:r,cves:a,severity:n},{package:"eslint-config-next",to:t,vulnIds:[],cves:[],severity:n,companionOf:"next"}],installed:new Map(p.map(t=>[t,e.version]))}},"F",0,function(e){let t=e.find(e=>"next"===e.package&&!e.companionOf);return!t||e.some(e=>"eslint-config-next"===e.package)?e:[...e,{package:"eslint-config-next",to:t.to,vulnIds:[],cves:[],severity:t.severity,companionOf:"next"}]}],876808);let g=e=>Math.round(e).toLocaleString("en-US"),y=(e,t)=>Math.floor((e.getTime()-t.getTime())/864e5),k=(e,t)=>`${e} ${t}${1===e?"":"s"}`,w=e=>{try{let t=new URL(e);return`${t.host}${t.pathname}`}catch{return e}},v=e=>{try{return new URL(e).host}catch{return e}},b=e=>{try{return new URL(e).pathname}catch{return"/"}},I="Down · ",A=(e,t,n)=>({rule:e,subject:t,status:"unknown",resourceId:null,accountId:null,title:t,message:"",provider:null,sampleAt:null,...n}),$=e=>"firestore"===e.provider?"firebase":"d1"===e.provider?"cloudflare":e.provider,S=new Set(["turso","upstash","d1"]),V={MonitorDown:(e,t)=>e.monitors.map(e=>{let r=A("MonitorDown",e.id,{resourceId:e.appId,title:`${e.appName} ${"heartbeat"===e.kind?e.url:b(e.url)}`,provider:"vercel",sampleAt:e.lastCheckedAt}),a=t??3;if("heartbeat"===e.kind){let t;return{...r,status:"err"===e.state?"firing":"ok"===e.state?"ok":"unknown",message:`${e.appName} \xb7 ${e.url}: ${t=e.lastError,t?.startsWith(I)?t.slice(I.length):"no ping in time"}.`}}return e.movedTo?{...r,status:"ok",message:`${v(e.url)} moved to ${e.movedTo}; MonitorDomainMoved takes over.`}:e.failStreak>=a?{...r,status:"firing",message:(0,n.H)(e)?`${w(e.url)} failed its check (${(0,n.H)(e)}) on ${a} consecutive checks.`:`${w(e.url)} returned ${e.lastStatus?`HTTP ${e.lastStatus}`:"no answer"} on ${a} consecutive checks.`}:{...r,status:0===e.failStreak&&e.lastCheckedAt?"ok":"unknown",message:`${w(e.url)} answers again.`}}),MonitorDomainMoved:e=>e.monitors.filter(e=>"http"===e.kind).map(e=>{let t=A("MonitorDomainMoved",e.id,{resourceId:e.appId,title:`${e.appName} ${b(e.url)}`,provider:"vercel"});return e.movedTo?{...t,status:"firing",message:`${v(e.url)} is no longer a domain of ${e.appName}; production is on ${e.movedTo}.`}:{...t,status:"ok",message:`The monitor checks ${v(e.url)}, a domain of ${e.appName}.`}}),CollectorStale:(e,t)=>{let n=e.lastMinuteRunAt;return[A("CollectorStale","collector",{status:!n||e.now.getTime()-n.getTime()>(t??5)*6e4?"firing":"ok",title:"collector",message:n?`The last minute run finished ${g((e.now.getTime()-n.getTime())/6e4)} min ago.`:"The collector hasn't finished a run yet."})]},HighLatency:(e,t)=>e.monitors.filter(e=>"http"===e.kind).map(e=>{let n=A("HighLatency",e.id,{resourceId:e.appId,title:`${e.appName} ${b(e.url)}`,provider:"vercel",sampleAt:e.lastCheckedAt});if(e.checksLast10<5||null===e.p95Last10)return n;let r=t??1500;return{...n,status:e.p95Last10>r?"firing":"ok",message:`p95 ${g(e.p95Last10)} ms over the last 10 minutes (limit ${g(r)} ms).`}}),DeploymentFailed:e=>e.apps.map(e=>{let t=A("DeploymentFailed",e.id,{resourceId:e.id,title:e.name,provider:"vercel"}),n=e.latestProduction;return n?"error"===n.state?{...t,status:"firing",message:`Production deployment ${n.sha?n.sha.slice(0,7):"(no commit)"} failed.`}:{...t,status:"building"===n.state?"unknown":"ok"}:{...t,status:"ok"}}),DatabasePaused:e=>e.dbs&&e.dbs.filter(e=>"supabase"===e.provider).map(e=>A("DatabasePaused",e.id,{resourceId:e.id,title:e.name,provider:"supabase",status:"unknown"===e.state?"unknown":"paused"===e.state?"firing":"ok",message:`Supabase project ${e.name} is paused.`})),CertExpiringSoon:(e,t)=>e.domains&&e.domains.map(n=>{let r=A("CertExpiringSoon",n.id,{resourceId:n.id,title:n.name,provider:"cloudflare"});if(!n.tlsNotAfter)return r;let a=y(n.tlsNotAfter,e.now);return{...r,status:a<(t??14)?"firing":"ok",message:`The TLS certificate of ${n.name} expires in ${k(a,"day")}.`}}),DomainExpiringSoon:(e,t)=>e.domains&&e.domains.map(n=>{let r=A("DomainExpiringSoon",n.id,{resourceId:n.id,title:n.name,provider:"cloudflare"});if(!n.expiresAt)return r;let a=y(n.expiresAt,e.now);return{...r,status:a<(t??30)?"firing":"ok",message:`${n.name} expires in ${k(a,"day")}.`}}),StorageAlmostFull:(e,t)=>e.dbs&&e.dbs.filter(e=>"firestore"!==e.provider).map(e=>{let n=A("StorageAlmostFull",e.id,{resourceId:e.id,title:e.name,provider:$(e)});if(null===e.sizeBytes||!e.sizeLimitBytes)return n;let r=e.sizeBytes/e.sizeLimitBytes*100;return{...n,status:r>(t??80)?"firing":"ok",message:`${e.name} uses ${g(e.sizeBytes/1e6)} MB of ${g(e.sizeLimitBytes/1e6)} MB (${g(r)}%).`}}),NeonComputeHigh:(e,t)=>e.dbs&&e.dbs.filter(e=>"neon"===e.provider).map(e=>{let n=A("NeonComputeHigh",e.id,{resourceId:e.id,title:e.name,provider:"neon"});return null===e.cuHours?n:{...n,status:e.cuHours>(t??80)?"firing":"ok",message:`${e.name} used ${g(e.cuHours)} of ${g(e.cuLimit??100)} CU-hours this month.`}}),FirestoreQuotaHigh:(e,t)=>e.dbs&&e.dbs.filter(e=>"firestore"===e.provider).map(e=>{let n=A("FirestoreQuotaHigh",e.id,{resourceId:e.id,title:e.name,provider:"firebase"});if(e.quotaExhausted)return{...n,status:"firing",message:`${e.name} hit a Firestore quota (RESOURCE_EXHAUSTED).`};if(null===e.readsToday||!e.readsLimit)return!1===e.quotaExhausted?{...n,status:"ok"}:n;let r=e.readsToday/e.readsLimit*100;return{...n,status:r>(t??80)?"firing":"ok",message:`${e.name} read ${g(e.readsToday)} of ${g(e.readsLimit)} documents today (${g(r)}%).`}}),AutoPauseRisk:(e,t)=>e.dbs&&e.dbs.filter(e=>"supabase"===e.provider).map(n=>{let r=A("AutoPauseRisk",n.id,{resourceId:n.id,title:n.name,provider:"supabase"});if("paused"===n.state)return{...r,status:"ok"};if(!n.lastApiAt)return r;let a=Math.floor((e.now.getTime()-n.lastApiAt.getTime())/864e5);return{...r,status:a>=(t??4)?"firing":"ok",message:`No API traffic for ${k(a,"day")}. Supabase pauses free projects after about 7 days.`}}),DnsProxiedToVercel:e=>e.dns&&e.dns.map(e=>A("DnsProxiedToVercel",e.id,{resourceId:e.resourceId,title:e.name,provider:"cloudflare",status:e.proxied&&e.pointsToVercel?"firing":"ok",message:`${e.name} points to Vercel through the Cloudflare proxy. Vercel recommends DNS only.`})),DbQuotaHigh:(e,t)=>e.dbs&&e.dbs.filter(e=>S.has(e.provider)).map(e=>{let n=A("DbQuotaHigh",e.id,{resourceId:e.id,title:e.name,provider:$(e)});return null==e.quotaPct?n:{...n,status:e.quotaPct>(t??80)?"firing":"ok",message:`${e.name}: ${e.quotaLabel??"usage"} at ${g(e.quotaPct)}% of the free plan.`}}),ComputeHigh:(e,t)=>e.compute?e.compute.map(n=>{let a=A("ComputeHigh",n.id,{resourceId:n.id,title:n.name,provider:"supabase",sampleAt:n.latest?new Date(n.latest.at):null}),s=(0,r.B)(n.latest,(0,r.V)(t),e.now);return null===s?a:{...a,status:s.length?"firing":"ok",message:s.length?`${n.name}: ${s.join(", ")}.`:`${n.name} compute is back under the limits.`}}):null,CredentialExpiring:(e,t)=>e.accounts.map(n=>{let r=A("CredentialExpiring",n.id,{accountId:n.id,title:`${n.provider} \xb7 ${n.label}`,provider:n.provider});if("drive"===n.provider&&"error"===n.status&&n.lastError?.includes("invalid_grant"))return{...r,status:"firing",message:"Google Drive access was removed (invalid_grant). Reconnect it."};if(!n.expiresAt)return{...r,status:"ok"};let a=y(n.expiresAt,e.now);return{...r,status:a<(t??14)?"firing":"ok",message:a<0?`The ${n.provider} credential ${n.label} has expired.`:`The ${n.provider} credential ${n.label} expires in ${k(a,"day")}.`}}),VulnerableDependency:e=>e.deps?e.deps.flatMap(t=>{let n=e.apps.find(e=>e.id===t.appId);if(!n)return[];let r=A("VulnerableDependency",t.appId,{resourceId:t.appId,title:n.name,provider:"github"});if(t.error)return[r];let s=(0,a.g)(t.vulns);return s?[{...r,status:"firing",message:(0,a.L)(t.vulns),..."critical"===s?{severity:"critical"}:{}}]:[{...r,status:"ok",message:`${n.name} has no moderate, high or critical dependency advisories.`}]}):null,FrameworkVulnerable:e=>e.frameworks?e.frameworks.flatMap(t=>{let n=e.apps.find(e=>e.id===t.appId);if(!n)return[];let r=A("FrameworkVulnerable",t.appId,{resourceId:t.appId,title:n.name});return"ok"===t.status?[{...r,status:"ok",message:`${n.name} runs Next.js ${t.version??"(unknown version)"} with no known advisories.`}]:"vulnerable"===t.status&&t.findings.length?[{...r,status:"firing",message:h(t.version,t.findings),..."CRITICAL"===(0,s.N)(t.findings)?{severity:"critical"}:{}}]:[r]}):null};e.s(["f",0,function(e,n,r){let a=[],s=new Set;for(let i of n){if(!i.enabled||r&&!r.includes(i.key)||!t._[i.key])continue;let n=V[i.key](e,i.threshold);n&&(s.add(i.key),a.push(...n))}return{observations:a,evaluated:s}}],949663);let x=["MonitorDown","HighLatency"],R=["telegram","discord","webhook","smtp"],D=e=>e.channels.some(e=>R.includes(e));function M(e,t){return t.collectorStale&&"CollectorStale"!==e.rule?"CollectorStale":e.resourceId&&x.includes(e.rule)?t.mutedApps.get(e.resourceId)??null:null}let T=(e,t)=>"critical"===t&&"warning"===e?"critical":e,B=(e,t)=>e.silencedUntilResolved||null!==e.silencedUntil&&e.silencedUntil.getTime()>t.getTime(),N=(e,t)=>`${e}|${t}`;e.s(["f",0,function(e,n,r,a,s){let i={open:[],touch:[],resolve:[]},l=new Map(a.map(e=>[e.key,e])),o=new Map(n.map(e=>[N(e.rule,e.subject),e])),d=new Set(e.map(e=>N(e.ruleKey,e.subject))),u=e=>i.resolve.push({id:e.id,pending:e.notifiedOpen?"resolve":null});for(let n of e){let e=l.get(n.ruleKey),a=o.get(N(n.ruleKey,n.subject));if(!e||!e.enabled){i.resolve.push({id:n.id,pending:null});continue}if(!r.has(n.ruleKey))continue;if(!a){i.resolve.push({id:n.id,pending:null});continue}if("unknown"===a.status)continue;let d=a.provider?s.incidents.get(a.provider)??null:null;if("firing"===a.status){let t=M(a,s),r=n.notifiedOpen&&null!==n.lastNotifiedAt&&s.now.getTime()-n.lastNotifiedAt.getTime()>=216e5,l={id:n.id,okStreak:0,lastSampleAt:a.sampleAt??n.lastSampleAt,lastSeenAt:s.now,message:a.message,causedBy:t,providerIncident:d},o=!n.notifiedOpen&&(!n.pendingSince||s.now.getTime()-n.pendingSince.getTime()>=216e5);(r||o)&&!B(n,s.now)&&!t&&null===n.pending&&D(e)&&(l.pending=r?"repeat":"open"),i.touch.push(l);continue}if(!t._[n.ruleKey].sampled||null===a.sampleAt){u(n);continue}if(!(null===n.lastSampleAt||a.sampleAt.getTime()>n.lastSampleAt.getTime()))continue;let c=n.okStreak+1;c>=2?u(n):i.touch.push({id:n.id,okStreak:c,lastSampleAt:a.sampleAt})}for(let e of n){if("firing"!==e.status||d.has(N(e.rule,e.subject))||s.maintenance.has(e.subject)||e.resourceId&&s.maintenance.has(e.resourceId))continue;let t=l.get(e.rule);if(!t)continue;let n=M(e,s);i.open.push({ruleKey:e.rule,subject:e.subject,resourceId:e.resourceId,accountId:e.accountId,severity:T(t.severity,e.severity),title:e.title,message:e.message,startedAt:s.now,lastSeenAt:s.now,lastSampleAt:e.sampleAt,causedBy:n,providerIncident:e.provider?s.incidents.get(e.provider)??null:null,pending:n||!D(t)?null:"open"})}return i}],747556)},708621,e=>{let t=["status","severity","rule","target","detail","cause","step","since","threshold"],n=["id","en"],r={en:"{status} · {severity} · {rule} · {target}\n{detail}\n{cause}\nNext step: {step}\nsince {since}",id:"{status} · {severity} · {rule} · {target}\n{detail}\n{cause}\nYang perlu kamu lakukan: {step}\nsejak {since}"},a=/\{([a-zA-Z_]+)\}/g,s=e=>e.replace(/\r\n?/g,"\n").replace(/[ \t]+$/gm,"").trim();function i(e){if(e.length>1e3)return`Keep it under ${1e3.toLocaleString("en-US")} characters.`;for(let[,n]of e.matchAll(a))if(!t.includes(n))return`{${n}} isn't a field. Use ${t.map(e=>`{${e}}`).join(", ")}.`;return null}e.s(["I",0,{en:"Test message: Watchbell's sentence about what it saw goes here.",id:"Pesan tes: di sini nanti kalimat Watchbell soal apa yang dilihatnya."},"z",0,"alerts.messageTemplates","i",0,n,"_",0,function(e){if(!e||"object"!=typeof e||Array.isArray(e))return{};let t={};for(let[r,a]of Object.entries(e)){if(!a||"object"!=typeof a)continue;let e={};for(let t of n){let n=a[t];"string"==typeof n&&n.trim()&&null===i(n)&&(e[t]=n)}Object.keys(e).length&&(t[r]=e)}return t},"l",0,function(e,t){return s(e).split("\n").flatMap(e=>{let n=[...e.matchAll(a)].map(e=>e[1]).filter(e=>Object.hasOwn(t,e));return n.length&&n.every(e=>!t[e].trim())?[]:[e.replace(a,(e,n)=>Object.hasOwn(t,n)?t[n]:e)]}).join("\n").replace(/\n{3,}/g,"\n\n").trim()},"F",0,function(e,t){let n="string"==typeof e?s(e):"";return n&&n!==r[t]?n:null},"m",0,i])},455317,71575,569057,930270,e=>{var t=e.i(93321),n=e.i(530385),r=e.i(351674),a=e.i(548734),s=e.i(837137),i=e.i(927262),l=e.i(949663),o=e.i(747556),d=e.i(708621),u=e.i(519051),c=e.i(160147),p=e.i(245710);function f(e,t){return"1h"===e?{silencedUntil:new Date(t.getTime()+36e5),silencedUntilResolved:!1}:{silencedUntil:null,silencedUntilResolved:!0}}e.s(["_",0,[["critical","Critical"],["warning","Warning"],["info","Info"]],"O",0,function(e,t){return e.silencedUntilResolved?{state:"off",text:"Silenced until resolved"}:e.silencedUntil&&e.silencedUntil.getTime()>t.getTime()?{state:"off",text:`Silenced until ${(0,p.U)(e.silencedUntil)}`}:"open"===e.pending||"repeat"===e.pending?{state:"build",text:"Sending…"}:e.causedBy&&!e.notifiedOpen?{state:"off",text:"Muted"}:e.lastNotifiedAt?{state:"ok",text:`Sent ${(0,p.U)(e.lastNotifiedAt)}`}:{state:"off",text:"Digest only"}},"G",0,function(e){return e.enabled?e.firing?{state:"err",text:`Firing \xb7 ${e.firing}`}:e.hasData?{state:"off",text:"Inactive"}:{state:"unknown",text:"No data yet"}:{state:"off",text:"Disabled"}},"A",0,f,"M",0,function(e,t){let n=Math.max(1,Math.round((t.getTime()-e.getTime())/6e4));if(n<60)return`${n} min`;let r=Math.floor(n/60);return r<24?`${r} h ${n%60} min`:`${Math.floor(r/24)} d ${r%24} h`}],71575);var m=e.i(639271),h=e.i(656298),g=e.i(688275),y=e.i(893893),k=e.i(672319),w=e.i(188546),v=e.i(233711),b=e.i(460565);async function I(){let[e]=await (0,a.f)().select({at:s.collectorRuns.finishedAt}).from(s.collectorRuns).where((0,t.b)((0,t.E)(s.collectorRuns.finishedAt),(0,t.y)(s.collectorRuns.trigger,["cron_job_org","qstash","manual"]))).orderBy((0,n.A)(s.collectorRuns.finishedAt)).limit(1);return e?.at??null}async function A(){let[e]=await (0,a.f)().select({at:s.collectorRuns.finishedAt}).from(s.collectorRuns).where((0,t.b)((0,t.E)(s.collectorRuns.finishedAt),(0,t.y)(s.collectorRuns.trigger,["cron_job_org","manual"]))).orderBy((0,n.A)(s.collectorRuns.finishedAt)).limit(1);return e?.at??null}async function $(){let[e]=await (0,a.f)().select({threshold:s.alertRules.threshold}).from(s.alertRules).where((0,t.u)(s.alertRules.key,"CollectorStale")).limit(1);return(0,b.X)(e?.threshold)}e.s(["o",0,$,"D",0,I,"d",0,A],569057);var S=e.i(367247),V=e.i(436357),x=e.i(912283),R=e.i(358179),D=e.i(492665),M=e.i(683439),T=e.i(679662),B=e.i(852539),N=e.i(33135),j=e.i(533957);let C="OpsConsole-Deps/1.0 (+https://watchbell.west-solutions.web.id)";async function P(e,t,n,r){let a=r.deadline-Date.now();if(a<500)return{ok:!1,error:"No time left for OSV.dev"};let s=AbortSignal.timeout(a);return L(e,{method:"POST",headers:{"content-type":"application/json","user-agent":C},body:JSON.stringify(t),signal:s},n,s,r)}async function O(e,t,n){let r=n.deadline-Date.now();if(r<500)return{ok:!1,error:"No time left for OSV.dev"};let a=AbortSignal.timeout(Math.min(r,8e3));return L(e,{method:"GET",headers:{"user-agent":C},signal:a},t,a,n)}async function L(e,t,n,r,a){let s;try{s=await (a.fetch??fetch)(e,{...t,redirect:"error",cache:"no-store"})}catch(e){return{ok:!1,error:(0,j.t)(e)?"OSV.dev didn't answer in time":"Couldn't reach OSV.dev"}}if(!s.ok)return await s.body?.cancel().catch(()=>void 0),{ok:!1,error:`OSV.dev answered HTTP ${s.status}`};try{let{bytes:e,truncated:t}=await (0,N.z)(s,n,(0,N.X)(r));if(t)return{ok:!1,error:"OSV.dev sent too large an answer"};return{ok:!0,body:JSON.parse(new TextDecoder().decode(e))}}catch(e){return{ok:!1,error:(0,j.t)(e)?"OSV.dev didn't answer in time":"OSV.dev sent an answer we couldn't read"}}}async function z(e,t){let n=[];for(let r of(0,B.f)(e)){let e=await P(B.n,r,4194304,t);if(!e.ok)return e;let a=(0,B.j)(e.body,r.queries.length);if(!a)return{ok:!1,error:"OSV.dev sent an answer we couldn't read"};n.push(...a)}return{ok:!0,ids:n}}async function U(e,t){let n=[...new Set(e)].filter(B.G);if(n.length>300)return{ok:!1,error:`Too many advisories to read in one scan (${n.length})`};let r=new Map,a=null;for(let e=0;e<n.length&&!a;e+=8)await Promise.all(n.slice(e,e+8).map(async e=>{let n=await O(`${B.W}${encodeURIComponent(e)}`,1048576,t),s=n.ok?(0,B.O)(n.body):null;s?r.set(e,s):a??=n.ok?"OSV.dev sent an advisory we couldn't read":n.error}));return a?{ok:!1,error:a}:{ok:!0,map:r}}var E=e.i(521050),_=e.i(120213),H=e.i(689963),q=e.i(26972),K=e.i(427221),F=e.i(811365),J=e.i(760417);let G=H.z.array(q.z.object({name:K.z.string(),type:K.z.string(),sha:K.z.string(),size:F.z.number().optional()}));async function W(e,t,n,r={},a=null){if(!(0,J.M)(t)||!(0,J.c)(n))return{ok:!1,kind:"format",error:"That isn't a repository name or ref."};if(null!==a&&(0,E.Q)(a)!==a)return{ok:!1,kind:"format",error:"That isn't a folder in a repository."};let s=a?a.split("/").map(encodeURIComponent).join("/"):"",i=await (0,J.j)(`/repos/${(0,J.f)(t)}/contents/${s}?ref=${encodeURIComponent(n)}`,e,r);if(!i.ok)return i;let l=G.safeParse(i.data);return l.success?{ok:!0,data:l.data.filter(e=>"file"===e.type&&/^[0-9a-f]{40}$/.test(e.sha)).map(e=>({name:e.name,sha:e.sha,size:e.size??0}))}:{ok:!1,kind:"format",error:"GitHub answered the file list in a format the console doesn't recognise."}}async function Z(e,t,n,r={}){if(!(0,J.M)(t)||!(0,J.c)(n))return{ok:!1,kind:"format",error:"That isn't a repository name or branch."};let a=await (0,J.j)(`/repos/${(0,J.f)(t)}/git/ref/heads/${n.split("/").map(encodeURIComponent).join("/")}`,e,r);return a.ok?{ok:!0,data:!0}:"missing"===a.kind?{ok:!0,data:!1}:a}function Q(e,t,n,r,a,s={}){return(0,J.V)(e,t,n,r,a,s)}async function X(e,t,n={}){if(!(0,J.M)(t))return{ok:!1,kind:"format",error:"That isn't a repository name."};let r=await (0,J.j)(`/repos/${(0,J.f)(t)}/dependabot/alerts?state=open&ecosystem=npm&per_page=100`,e,n);if(!r.ok)return"scope"===r.kind||"missing"===r.kind?{ok:!0,data:{denied:!0}}:r;let a=(0,_.E)(r.data);return a?{ok:!0,data:{alerts:a}}:{ok:!1,kind:"format",error:"GitHub answered the Dependabot alerts in a format the console doesn't recognise."}}var Y=e.i(751263);async function ee(){let[e]=await (0,a.f)().select().from(s.accounts).where((0,t.u)(s.accounts.provider,"github")).orderBy((0,n.M)(s.accounts.createdAt)).limit(1);if(!e)return{error:"GitHub isn't connected."};let r=(0,R.V)({ciphertext:e.credentialCiphertext,iv:e.credentialIv},(0,D.f)().OPS_ENCRYPTION_KEY);return r?{token:r,accountId:e.id}:{error:"Can't read the stored GitHub credential. Replace it on Connections."}}async function et(){let[e]=await (0,a.f)().select({value:s.settings.value}).from(s.settings).where((0,t.u)(s.settings.key,"deps.scanAll")).limit(1);return e?.value===!0}let en=e=>{let t=(0,Y.w)(e);return{dir:(0,E.Q)((e??{}).rootDirectory),unsupported:(0,E.l)((e??{}).rootDirectoryUnsupported),branch:(0,Y.i)((0,Y.V)(e),null),...t?{fallback:t}:{}}};async function er(e){let n=[...new Set(e.filter(M.f))],r=new Map;if(!n.length)return r;let i=await (0,a.f)().select({repoId:s.appRepos.repoId,name:s.resources.name,monitored:s.resources.monitored,meta:s.resources.meta}).from(s.appRepos).innerJoin(s.resources,(0,t.u)(s.resources.id,s.appRepos.appId)).where((0,t.b)((0,t.y)(s.appRepos.repoId,n),(0,t.M)(s.resources.goneAt))).limit(1e3);for(let e of(i.sort((e,t)=>Number(!!t.monitored)-Number(!!e.monitored)||(e.name<t.name?-1:+(e.name>t.name))),i))r.has(e.repoId)||r.set(e.repoId,en(e.meta));return r}async function ea(){let e={id:s.githubRepos.id,fullName:s.githubRepos.fullName,defaultBranch:s.githubRepos.defaultBranch,scannedAt:s.dependencyScans.scannedAt},n=(0,t.b)((0,t.M)(s.githubRepos.goneAt),(0,t.u)(s.githubRepos.archived,!1)),r=await et()?await (0,a.f)().select(e).from(s.githubRepos).leftJoin(s.dependencyScans,(0,t.u)(s.dependencyScans.repoId,s.githubRepos.id)).where(n).limit(500):await (0,a.f)().selectDistinct(e).from(s.appRepos).innerJoin(s.githubRepos,(0,t.u)(s.githubRepos.id,s.appRepos.repoId)).leftJoin(s.dependencyScans,(0,t.u)(s.dependencyScans.repoId,s.githubRepos.id)).where(n).limit(500),i=r.length?await er(r.map(e=>e.id)):new Map;return(0,_.M)(r.map(e=>{let t=i.get(e.id);return{...e,rootDir:t?.dir??null,rootDirUnsupported:t?.unsupported??null,prodBranch:t?.branch??null,...t?.fallback?{prodFallback:t.fallback}:{}}}))}let es=(e,t)=>e.length>t?`${e.slice(0,t-1)}…`:e;async function ei(e,t){let n=new Date;await (0,a.f)().insert(s.dependencyScans).values({repoId:e,...t,updatedAt:n}).onConflictDoUpdate({target:s.dependencyScans.repoId,set:{...t,updatedAt:n}})}async function el(e){return(0,a.f)().select({id:s.dependencyVulns.id,package:s.dependencyVulns.package,installedVersion:s.dependencyVulns.installedVersion,vulnId:s.dependencyVulns.vulnId,severity:s.dependencyVulns.severity,fixedVersion:s.dependencyVulns.fixedVersion,summary:s.dependencyVulns.summary,aliases:s.dependencyVulns.aliases,dev:s.dependencyVulns.dev,direct:s.dependencyVulns.direct,source:s.dependencyVulns.source}).from(s.dependencyVulns).where((0,t.b)((0,t.u)(s.dependencyVulns.repoId,e),(0,t.M)(s.dependencyVulns.resolvedAt))).limit(2e3)}function eo(e,t){for(let n of T.a){let r=e.find(e=>e.name===n.path);if(r)return{path:(0,E.H)(t,n.path),kind:n.kind,sha:r.sha}}return null}async function ed(e,n,r,i={}){let l=()=>({...i,timeoutMs:Math.max(1e3,Math.min(r-Date.now(),1e4))}),o=async e=>(await ei(n.id,{error:es(e,300),scannedAt:new Date}).catch(()=>void 0),{status:"failed",error:e}),d=n.defaultBranch??"HEAD",u=null;for(let t of[n.prodBranch,n.prodFallback]){if(t&&t===n.defaultBranch)break;let r=(0,Y.i)(t,n.defaultBranch);if(!r)continue;let a=await Z(e,n.fullName,r,l());if(!a.ok)return o(a.error);if(a.data){u=r;break}}let c=null!==u;u&&(d=u);let p=c?`Scanned ${u}, the branch production is built from.`:null,f=(0,E.Q)(n.rootDir),m=f?null:(0,E.l)(n.rootDirUnsupported),h=m?`The Vercel Root Directory "${m}" couldn't be used (Watchbell reads plain folder names, at most 4 deep); scanned the repository root.`:null,g=await W(e,n.fullName,d,l(),f);if(!g.ok)return o(f&&"missing"===g.kind?`The folder ${(0,E.x)(f)} isn't in ${n.fullName} on ${d}.`:g.error);let y=eo(g.data,f),k=g.data.find(e=>"package.json"===e.name)??null,w=!1,v=null;if(f&&k&&!y){let t=await W(e,n.fullName,d,l());if(!t.ok)return o(t.error);w=null!==(y=eo(v=t.data,null))}let b=y?y.sha:k?`pkg:${k.sha}`:null,I=b&&f?`${f}:${b}${w&&k?`+${k.sha}`:""}`:b&&m?`odd:${b}`:b,A=I&&c?`br:${u}:${I}`:I,[$]=await (0,a.f)().select().from(s.dependencyScans).where((0,t.u)(s.dependencyScans.repoId,n.id)).limit(1),S=new Date;if(!(0,_.U)($??null,A,S,i.force))return{status:"unchanged"};if(!A){let e=await el(n.id);return e.length&&await (0,a.f)().update(s.dependencyVulns).set({resolvedAt:S}).where((0,t.y)(s.dependencyVulns.id,e.map(e=>e.id))),await ei(n.id,{lockfilePath:null,lockfileSha:null,packageCount:0,scannedAt:S,queriedAt:S,error:null,note:es([p,h,`No package.json or lockfile ${f?"in":"at"} ${(0,E.x)(f)}.`].filter(Boolean).join(" "),300)}),{status:"scanned",vulns:0,packages:0,note:"no package.json"}}let V=(0,E.H)(f,"package.json"),R=k?await Q(e,n.fullName,V,d,J.$,l()):null;if(R&&!R.ok)return o(R.error);let D=R?.ok&&R.data?(0,T.b)(R.data):null,M=null,N="package-json",j=w&&y?`Scanned ${(0,E.x)(f)} with the repository root's ${y.path} (workspaces).`:null;if(y){if(2e3>r-Date.now())return o("Time budget used before the lockfile was read; the next run tries again.");let t=await Q(e,n.fullName,y.path,d,0xf00000,{...i,timeoutMs:Math.max(1e3,Math.min(r-Date.now(),2e4))});if(!t.ok)return o(t.error);let a=!0;if(w&&f&&t.data&&!(0,E.p)(y.kind,t.data,f)){let t=v?.some(e=>"package.json"===e.name)?await Q(e,n.fullName,"package.json",d,J.$,l()):null;if(t&&!t.ok)return o(t.error);a=(0,E.F)(t?.data??null,f)}a?(M=t.data?(0,T.D)(y.kind,t.data):null,N=y.kind,M||(j=[j,`${y.path} couldn't be read; the versions come from package.json ranges (approximate).`].filter(Boolean).join(" "))):(j=`The repository root's ${y.path} isn't a workspace that includes ${f}, so the versions come from ${V} ranges (approximate).`,y=null)}if(M){let e=(0,x.m)(M,D);M=e.deps,e.stale.length&&(j=[j,(0,x.M)(e.stale)].filter(Boolean).join(" "))}else M=D?(0,T.e)(D):[],N="package-json",j??=y?null:"No lockfile: the versions come from package.json ranges (approximate).";let C=await el(n.id),P=[];if(M.length){let e=await z(M,{fetch:i.fetch,deadline:r});if(!e.ok)return o(e.error);let t=(0,_.A)(C,!0===i.force),n=await U((0,_.z)(M,e.ids,t),{fetch:i.fetch,deadline:r});if(!n.ok)return o(n.error);P=(0,B.i)(M,e.ids,n.map,t)}if(r-Date.now()>1500){let t=await X(e,n.fullName,l());t.ok&&"alerts"in t.data?P=(0,_.R)(P,t.data.alerts,M):t.ok&&(j=[j,"Dependabot alerts aren't readable with this token (optional: Dependabot alerts: Read)."].filter(Boolean).join(" "))}let O=(0,_.h)(C,P,(0,T.K)(D));j=[p,h,j].filter(Boolean).join(" ")||null;let L=new Date;return await (0,a.f)().transaction(async e=>{for(let r of(O.insert.length&&await e.insert(s.dependencyVulns).values(O.insert.map(e=>({repoId:n.id,package:e.package,installedVersion:e.installedVersion,vulnId:e.vulnId,aliases:e.aliases,severity:e.severity,fixedVersion:e.fixedVersion,summary:e.summary,direct:e.direct,dev:e.dev,source:e.source,firstSeenAt:L,lastSeenAt:L}))).onConflictDoNothing(),O.update))await e.update(s.dependencyVulns).set({severity:r.severity,fixedVersion:r.fixedVersion,summary:r.summary,aliases:r.aliases,dev:r.dev,direct:r.direct,lastSeenAt:L}).where((0,t.u)(s.dependencyVulns.id,r.id));O.resolve.length&&await e.update(s.dependencyVulns).set({resolvedAt:L}).where((0,t.b)((0,t.y)(s.dependencyVulns.id,O.resolve),(0,t.M)(s.dependencyVulns.resolvedAt))),await e.insert(s.dependencyScans).values({repoId:n.id,lockfilePath:y?.path??(k?V:null),lockfileSha:A,packageCount:M.length,scannedAt:L,queriedAt:L,error:null,note:j?es(j,300):null,updatedAt:L}).onConflictDoUpdate({target:s.dependencyScans.repoId,set:{lockfilePath:y?.path??(k?V:null),lockfileSha:A,packageCount:M.length,scannedAt:L,queriedAt:L,error:null,note:j?es(j,300):null,updatedAt:L}})}),{status:"scanned",vulns:O.insert.length+O.update.length,packages:M.length,note:"package-json"===N?j:null}}async function eu(e,n={}){var r,i;let l,o,d,u,c=await ee();if("error"in c)return{error:c.error};let{first:p,only:f,skip:m,...h}=n,g=(r=await ea(),l=(i={first:p,only:f,skip:m}).only?new Set(i.only):null,o=new Set(i.skip??[]),d=(l?r.filter(e=>l.has(e.id)):r).filter(e=>!o.has(e.id)),u=new Set(i.first??[]),[...d.filter(e=>u.has(e.id)),...d.filter(e=>!u.has(e.id))]),y={scanned:0,unchanged:0,failed:[],left:0,done:[],listed:g.map(e=>e.id)};for(let[t,n]of g.entries()){if(e-Date.now()<4e3){y.left=g.length-t;break}y.done.push(n.id);try{let t=await ed(c.token,n,e,h);"scanned"===t.status?y.scanned++:"unchanged"===t.status?y.unchanged++:y.failed.push(`${n.fullName}: ${t.error}`)}catch(e){y.failed.push(`${n.fullName}: ${e instanceof Error?e.name:"error"}`)}}return await (0,a.f)().delete(s.dependencyVulns).where((0,t.b)((0,t.E)(s.dependencyVulns.resolvedAt),(0,t.S)(s.dependencyVulns.resolvedAt,new Date(Date.now()-7776e6)))).catch(()=>void 0),y}let ec=async()=>(await (0,a.f)().select({id:s.accounts.id}).from(s.accounts).where((0,t.u)(s.accounts.provider,"github")).limit(1)).length>0;async function ep(e,n,r={}){let i,l,o,{marked:d,onlyMarked:u}=n;if(!await ec())return{problem:null,settled:[...d],done:[],complete:!0};let c=d.filter(M.f),p=c.length?await (0,a.f)().select({appId:s.appRepos.appId,repoId:s.appRepos.repoId}).from(s.appRepos).where((0,t.y)(s.appRepos.appId,c)).limit(5*c.length):[],f=[...new Set(p.map(e=>e.repoId))],m=e=>p.filter(t=>t.appId===e).map(e=>e.repoId),h=d.filter(e=>!m(e).length);if(u&&!f.length)return{problem:null,settled:[...d],done:[],complete:!0};if(e-Date.now()<4e3)return{problem:null,settled:h,done:[],complete:!1};let g=(n.skip??[]).filter(e=>!f.includes(e)),y=await eu(e,{...r,first:f,...u?{only:f}:{skip:g}});if("error"in y){let e;return{problem:(e=y.error,/didn't answer in time|no time left|time budget|rate limit/i.test(e))?null:y.error,settled:[...d],done:[],complete:!0}}let k=new Set([...y.done,...f.filter(e=>!y.listed.includes(e))]);return{problem:(i=y.failed.filter(e=>!/didn't answer in time|no time left|time budget|rate limit/i.test(e)),(l=y.failed.length-i.length+(y.left??0))&&console.info(`deps: ${l} repositor${1===l?"y":"ies"} wait for the next run`),o=i.slice(0,3),i.length>3&&o.push(`+${i.length-3} more`),o.length?o.join("; "):null),settled:d.filter(e=>m(e).every(e=>k.has(e))),done:y.done,complete:0===y.left}}async function ef(e){let r={repo:null,scan:null,vulns:[],writeConnected:!1};if(!(0,M.f)(e))return r;let[i]=await (0,a.f)().select({id:s.githubRepos.id,fullName:s.githubRepos.fullName}).from(s.appRepos).innerJoin(s.githubRepos,(0,t.u)(s.githubRepos.id,s.appRepos.repoId)).where((0,t.u)(s.appRepos.appId,e)).limit(1);if(!i)return r;let[[l],o,[d]]=await Promise.all([(0,a.f)().select({scannedAt:s.dependencyScans.scannedAt,lockfilePath:s.dependencyScans.lockfilePath,packageCount:s.dependencyScans.packageCount,error:s.dependencyScans.error,note:s.dependencyScans.note}).from(s.dependencyScans).where((0,t.u)(s.dependencyScans.repoId,i.id)).limit(1),(0,a.f)().select({package:s.dependencyVulns.package,installedVersion:s.dependencyVulns.installedVersion,vulnId:s.dependencyVulns.vulnId,severity:s.dependencyVulns.severity,fixedVersion:s.dependencyVulns.fixedVersion,summary:s.dependencyVulns.summary,aliases:s.dependencyVulns.aliases,dev:s.dependencyVulns.dev,direct:s.dependencyVulns.direct,firstSeenAt:s.dependencyVulns.firstSeenAt}).from(s.dependencyVulns).where((0,t.b)((0,t.u)(s.dependencyVulns.repoId,i.id),(0,t.M)(s.dependencyVulns.resolvedAt))).limit(2e3),(0,a.f)().select({id:s.accounts.id}).from(s.accounts).where((0,t.u)(s.accounts.provider,"github_write")).limit(1)]);o.sort((e,t)=>(0,_.t)(e.severity)-(0,_.t)(t.severity)||(e.package<t.package?-1:+(e.package>t.package))||(e.vulnId<t.vulnId?-1:1));let u=await (0,a.f)().select({number:s.dependencyPrs.number,stage:s.dependencyPrs.stage,stageText:s.dependencyPrs.stageText,openedAt:s.dependencyPrs.openedAt}).from(s.dependencyPrs).where((0,t.b)((0,t.u)(s.dependencyPrs.repoId,i.id),(0,t.B)(s.dependencyPrs.openedAt,new Date(Date.now()-12096e5)))).orderBy((0,n.A)(s.dependencyPrs.openedAt)).limit(5).catch(()=>[]);return{repo:i,scan:l??null,vulns:o,writeConnected:!!d,prs:(u??[]).map(e=>({...e,fullName:i.fullName}))}}async function em(e,n={}){if(!(0,M.f)(e))return{ok:!1,error:"That app no longer exists."};let[i]=await (0,a.f)().select({app:s.resources.name,id:s.githubRepos.id,fullName:s.githubRepos.fullName,defaultBranch:s.githubRepos.defaultBranch,goneAt:s.githubRepos.goneAt,meta:s.resources.meta}).from(s.appRepos).innerJoin(s.githubRepos,(0,t.u)(s.githubRepos.id,s.appRepos.repoId)).innerJoin(s.resources,(0,t.u)(s.resources.id,s.appRepos.appId)).where((0,t.u)(s.appRepos.appId,e)).limit(1);if(!i)return{ok:!1,error:"Link a repository first."};if(i.goneAt)return{ok:!1,error:"That repository is no longer shared with the GitHub token."};let l=await ee();if("error"in l)return{ok:!1,error:l.error};let o=en(i.meta),d=await ed(l.token,{id:i.id,fullName:i.fullName,defaultBranch:i.defaultBranch,scannedAt:null,rootDir:o.dir,rootDirUnsupported:o.unsupported,prodBranch:o.branch,prodFallback:o.fallback??null},Date.now()+4e4,{...n,force:!0});if("failed"===d.status)return{ok:!1,error:`The scan failed: ${d.error}`};let[u]=await (0,a.f)().select({n:r.B`count(*)::int`}).from(s.dependencyVulns).where((0,t.b)((0,t.u)(s.dependencyVulns.repoId,i.id),(0,t.M)(s.dependencyVulns.resolvedAt))),c=u?.n??0;return{ok:!0,app:i.app,repo:i.fullName,vulns:c,message:c?`${c} known vulnerabilit${1===c?"y":"ies"} in ${d.packages??0} packages.`:`No known vulnerabilities in ${d.packages??0} packages.`}}async function eh(e){let n=e.filter(M.f);if(!n.length)return[];let r=await (0,a.f)().select({appId:s.appRepos.appId,repoId:s.appRepos.repoId,error:s.dependencyScans.error}).from(s.appRepos).innerJoin(s.dependencyScans,(0,t.u)(s.dependencyScans.repoId,s.appRepos.repoId)).where((0,t.b)((0,t.y)(s.appRepos.appId,n),(0,t.E)(s.dependencyScans.scannedAt)));if(!r.length)return[];let i=await (0,a.f)().select({repoId:s.dependencyVulns.repoId,package:s.dependencyVulns.package,installedVersion:s.dependencyVulns.installedVersion,fixedVersion:s.dependencyVulns.fixedVersion,severity:s.dependencyVulns.severity,summary:s.dependencyVulns.summary,dev:s.dependencyVulns.dev,direct:s.dependencyVulns.direct}).from(s.dependencyVulns).where((0,t.b)((0,t.y)(s.dependencyVulns.repoId,[...new Set(r.map(e=>e.repoId))]),(0,t.M)(s.dependencyVulns.resolvedAt))).limit(1e4);return r.map(e=>({appId:e.appId,repoId:e.repoId,error:e.error,vulns:i.filter(t=>t.repoId===e.repoId).map(e=>({package:e.package,installedVersion:e.installedVersion,fixedVersion:e.fixedVersion,severity:e.severity,summary:e.summary,dev:e.dev,direct:e.direct}))}))}async function eg(e,n=new Set){let i=e.filter(M.f),l=new Map;if(!i.length)return l;let o=await (0,a.f)().select({appId:s.appRepos.appId,repoId:s.appRepos.repoId}).from(s.appRepos).where((0,t.y)(s.appRepos.appId,i));if(!o.length)return l;let d=await (0,a.f)().select({repoId:s.dependencyVulns.repoId,package:s.dependencyVulns.package,installedVersion:s.dependencyVulns.installedVersion,fixedVersion:s.dependencyVulns.fixedVersion,vulnId:s.dependencyVulns.vulnId,aliases:s.dependencyVulns.aliases,severity:s.dependencyVulns.severity,direct:s.dependencyVulns.direct}).from(s.dependencyVulns).where((0,t.b)((0,t.y)(s.dependencyVulns.repoId,[...new Set(o.map(e=>e.repoId))]),(0,t.M)(s.dependencyVulns.resolvedAt),(0,t.u)(s.dependencyVulns.direct,!0),(0,t.E)(s.dependencyVulns.fixedVersion))).limit(2e3),u=d.some(e=>"next"===e.package)?new Set((await (0,a.f)().selectDistinct({appId:s.dependencyPrs.appId}).from(s.dependencyPrs).where((0,t.b)((0,t.y)(s.dependencyPrs.appId,i),(0,t.$)(s.dependencyPrs.stage,["merged","closed"]),(0,t.B)(s.dependencyPrs.openedAt,new Date(Date.now()-12096e5)),r.B`${s.dependencyPrs.packages} @> '["next"]'::jsonb`)).limit(i.length)).map(e=>e.appId)):new Set;for(let e of o){let t=n.has(e.appId)||u.has(e.appId);(0,_.B)(d.filter(n=>n.repoId===e.repoId&&!(t&&"next"===n.package))).length&&l.set(e.appId,e.repoId)}return l}e.s(["o",0,12e3,"d",0,4e3,"j",0,ef,"O",0,ep,"C",0,eg,"a",0,eh,"h",0,em],930270);var ey=e.i(242605);async function ek(){return(0,a.f)().select({appId:s.links.fromResourceId,dbId:s.links.toResourceId}).from(s.links).where((0,t.u)(s.links.kind,"uses_db")).limit(500)}async function ew(e){let i=(0,t.b)((0,t.u)(s.resources.monitored,!0),(0,t.M)(s.resources.goneAt)),[l,o,d,u,c]=await Promise.all([A(),I(),(0,a.f)().select({m:s.monitors,appName:s.resources.name,appMeta:s.resources.meta}).from(s.monitors).innerJoin(s.resources,(0,t.u)(s.resources.id,s.monitors.resourceId)).where((0,t.b)(i,(0,t.u)(s.monitors.paused,!1),(0,t.u)(s.monitors.ownerPaused,!1))),(0,a.f)().select({id:s.resources.id,name:s.resources.name,meta:s.resources.meta}).from(s.resources).where((0,t.b)(i,(0,t.u)(s.resources.kind,"app"))),(0,a.f)().select({id:s.accounts.id,provider:s.accounts.provider,label:s.accounts.label,expiresAt:s.accounts.expiresAt,status:s.accounts.status,lastError:s.accounts.lastError}).from(s.accounts)]),p=d.map(e=>e.m.id),f=p.length?await (0,a.f)().select({id:s.checks.monitorId,n:r.B`count(*)::int`,p95:r.B`percentile_cont(0.95) within group (order by ${s.checks.latencyMs})::float8`}).from(s.checks).where((0,t.b)((0,t.y)(s.checks.monitorId,p),(0,t.B)(s.checks.at,new Date(e.getTime()-6e5)),(0,t.u)(s.checks.inMaintenance,!1))).groupBy(s.checks.monitorId):[],b=u.map(e=>e.id),$=b.length?await (0,a.f)().selectDistinctOn([s.deployments.resourceId],{appId:s.deployments.resourceId,state:s.deployments.state,sha:s.deployments.commitSha,createdAt:s.deployments.createdAtProvider}).from(s.deployments).where((0,t.b)((0,t.y)(s.deployments.resourceId,b),(0,t.u)(s.deployments.target,"production"))).orderBy(s.deployments.resourceId,(0,n.A)(s.deployments.createdAtProvider)):[],x=await (0,a.f)().select({id:s.resources.id,name:s.resources.name,kind:s.resources.kind,state:s.snapshots.state,data:s.snapshots.data}).from(s.resources).innerJoin(s.snapshots,(0,t.u)(s.snapshots.resourceId,s.resources.id)).where((0,t.b)(i,(0,t.y)(s.resources.kind,["supabase_project","neon_project","firestore","turso_database","upstash_redis","d1_database","zone","domain"]))),R=e=>x.filter(t=>t.kind===e),D=x.filter(e=>["supabase_project","neon_project","firestore","turso_database","upstash_redis","d1_database"].includes(e.kind)),M=R("zone"),T=R("domain"),B=await ek(),N=await (0,S.Y)().catch(()=>null),j=b.length?await eh(b).catch(()=>null):null,C=b.length?await (0,ey.F)(b).catch(()=>null):null;return{now:e,lastMinuteRunAt:l,lastAnyRunAt:o,monitors:d.map(({m:e,appName:t,appMeta:n})=>{let r=f.find(t=>t.id===e.id),a="heartbeat"===e.kind;return{id:e.id,appId:e.resourceId,appName:t,url:a?e.name??"heartbeat":e.url,kind:a?"heartbeat":"http",state:e.state,failStreak:e.failStreak,lastStatus:e.lastStatus,lastError:e.lastError,lastCheckedAt:e.lastCheckedAt,p95Last10:r?.p95??null,checksLast10:r?.n??0,movedTo:a?null:(0,V.u)(e.url,{name:t,meta:n},u.filter(t=>t.id!==e.resourceId),{lastError:e.lastError})?.to??null}}),apps:u.map(e=>{let t=$.find(t=>t.appId===e.id);return{id:e.id,name:e.name,latestProduction:t?{state:t.state,sha:t.sha,createdAt:t.createdAt}:null}}),accounts:c,dbs:D.length?D.map(t=>(function(e,t){let n={id:e.id,name:e.name,state:e.state,sizeBytes:null,sizeLimitBytes:null,lastApiAt:null,cuHours:null,cuLimit:null,readsToday:null,readsLimit:null,quotaExhausted:null};if("supabase_project"===e.kind){let t=(0,y.k)(y.B,e.data),r=(0,v.Z)(t.lastTrafficAt),a=(0,v.Z)(t.trafficAt),s=r??(a&&!t.trafficError?new Date(a.getTime()-6048e5):null);return{...n,provider:"supabase",sizeBytes:t.sizeBytes??null,sizeLimitBytes:k.R,lastApiAt:s}}if("neon_project"===e.kind){let t=(0,y.k)(y.s,e.data),r=(t.branches??[]).map(e=>e.logicalSize).filter(e=>"number"==typeof e);return{...n,provider:"neon",cuHours:null==t.computeSeconds?null:t.computeSeconds/3600,cuLimit:g.a.cuHours,sizeBytes:r.length?r.reduce((e,t)=>e+t,0):null,sizeLimitBytes:g.a.storageBytes}}if("firestore"===e.kind){let r=(0,y.k)(y.w,e.data),a=(0,v.Z)(r.opsAt),s=null!=r.reads&&a&&a.getTime()>=(0,h.a)(t).getTime()?r.reads:null,i=null!=r.latencyMs||null!=r.pingError;return{...n,provider:"firestore",readsToday:s,readsLimit:h.T.reads,quotaExhausted:i?"RESOURCE_EXHAUSTED"===r.pingReason:null}}if("turso_database"===e.kind){let r=(0,y.k)(y.N,e.data),a=(0,m.u)((0,m.G)(r,t));return{...n,provider:"turso",sizeBytes:r.orgStorageBytes??null,sizeLimitBytes:m.g.storageBytes,quotaPct:a?.pct??null,quotaLabel:a?`${a.label} ${a.text}`:null}}if("upstash_redis"===e.kind){let r=(0,y.k)(y.e,e.data),a=(0,m.u)((0,m.$)(r,t));return{...n,provider:"upstash",sizeBytes:r.storageBytes??null,sizeLimitBytes:m.W.storageBytes,quotaPct:a?.pct??null,quotaLabel:a?`${a.label} ${a.text}`:null}}if("d1_database"===e.kind){let r=(0,y.k)(y.x,e.data),a=(0,m.u)((0,m.I)(r,t));return{...n,provider:"d1",sizeBytes:r.sizeBytes??null,sizeLimitBytes:m.M.dbBytes,quotaPct:a?.pct??null,quotaLabel:a?`${a.label} ${a.text}`:null}}return null})(t,e)).filter(e=>null!==e):null,domains:M.length||T.length?[...M.map(e=>({id:e.id,name:e.name,tlsNotAfter:null,expiresAt:(0,v.Z)((0,w.q)(e.data).rdap?.expiresAt)})),...T.map(e=>({id:e.id,name:e.name,tlsNotAfter:(0,v.Z)((0,w.q)(e.data).tls?.notAfter),expiresAt:null}))]:null,dns:function(e,t){let n=e.filter(e=>Array.isArray(e.data.records));if(!n.length)return null;let r=e.map(e=>e.name),a=[];for(let e of n){let n=t.filter(t=>(0,v.J)(t.name,r)===e.name.toLowerCase().replace(/\.$/,"")),s=[...new Set(n.flatMap(e=>(0,w.q)(e.data).vercel?.recommendedIps??[]))];for(let t of(0,w.q)(e.data).records){if(!(0,v.l)(t,s))continue;let r=t.name.toLowerCase().replace(/\.$/,""),i=n.find(e=>e.name.toLowerCase().replace(/\.$/,"")===r);a.push({id:`${e.id}:${t.id}`,resourceId:i?.id??e.id,name:t.name,proxied:t.proxied,pointsToVercel:!0})}}return a}(M,T),links:B,compute:N,deps:j&&j.length?j:null,frameworks:C&&C.length?C:null}}var ev=e.i(714530),eb=e.i(396667);let eI={vercel:"Vercel",supabase:"Supabase",neon:"Neon",cloudflare:"Cloudflare",firebase:"Firebase",gcp:"Google Cloud"};async function eA(){return(await (0,a.f)().select().from(s.alertRules)).filter(e=>(0,i.h)(e.key)).map(e=>({key:e.key,severity:e.severity,threshold:e.threshold,enabled:e.enabled,channels:e.channels}))}async function e$(e,n={}){let[r,d,p,f,m,h]=await Promise.all([ew(e),eA(),(0,a.f)().select().from(s.alerts).where((0,t.M)(s.alerts.resolvedAt)),(0,a.f)().select({provider:s.providerStatus.provider,state:s.providerStatus.state}).from(s.providerStatus),(0,ev.w)(),(0,eb.I)()]),g=new Map(r.accounts.map(e=>[e.id,e.provider])),y=p.filter(e=>!(0,c.O)(h,e.ruleKey,e.accountId?g.get(e.accountId):null)),k=(0,l.f)(r,d,n.only),w=k.evaluated,v=k.observations.filter(e=>!(0,c.O)(h,e.rule,e.provider)),b=d.find(e=>"CollectorStale"===e.key),I=void 0===r.lastAnyRunAt?r.lastMinuteRunAt:r.lastAnyRunAt,A=!!b?.enabled&&(!I||e.getTime()-I.getTime()>(b.threshold??5)*6e4),$=new Map((r.dbs??[]).filter(e=>"paused"===e.state).map(e=>[e.id,e.name])),S=new Map(r.links.filter(e=>$.has(e.dbId)).map(e=>[e.appId,`DatabasePaused \xb7 ${$.get(e.dbId)}`])),V=new Map(f.filter(e=>"warn"===e.state||"err"===e.state).map(e=>["gcp"===e.provider?"firebase":e.provider,eI[e.provider]??e.provider])),x=(0,u.u)(m,r.monitors.map(e=>({id:e.id,appId:e.appId})),e,r.apps.map(e=>e.id)),R=y.filter(e=>(0,i.h)(e.ruleKey)).map(e=>({id:e.id,ruleKey:e.ruleKey,subject:e.subject,okStreak:e.okStreak,lastSampleAt:e.lastSampleAt,silencedUntil:e.silencedUntil,silencedUntilResolved:e.silencedUntilResolved,notifiedOpen:e.notifiedOpen,lastNotifiedAt:e.lastNotifiedAt,pending:e.pending,pendingSince:e.pendingSince})),D=(0,o.f)(R,v,w,d,{now:e,collectorStale:A,mutedApps:S,incidents:V,maintenance:x});return D.open.length||D.touch.length||D.resolve.length?(await (0,a.f)().transaction(async n=>{for(let t of D.open)await n.insert(s.alerts).values({...t,pendingSince:t.pending?e:null}).onConflictDoNothing();for(let r of D.touch){let{id:a,pending:i,...l}=r;await n.update(s.alerts).set({...l,...i?{pending:i,pendingSince:e}:{}}).where((0,t.b)((0,t.u)(s.alerts.id,a),(0,t.M)(s.alerts.resolvedAt)))}for(let r of D.resolve)await n.update(s.alerts).set({resolvedAt:e,pending:r.pending,pendingSince:r.pending?e:null}).where((0,t.b)((0,t.u)(s.alerts.id,r.id),(0,t.M)(s.alerts.resolvedAt)))}),{opened:D.open.length,resolved:D.resolve.length}):{opened:0,resolved:0}}async function eS(){let[e,n]=await Promise.all([(0,eb.I)(),(0,a.f)().select({ruleKey:s.alerts.ruleKey,provider:s.accounts.provider,n:r.B`count(*)::int`}).from(s.alerts).leftJoin(s.accounts,(0,t.u)(s.accounts.id,s.alerts.accountId)).where((0,t.b)((0,t.M)(s.alerts.resolvedAt),(0,t.y)(s.alerts.severity,["critical","warning"]))).groupBy(s.alerts.ruleKey,s.accounts.provider)]);return n.reduce((t,n)=>t+((0,c.O)(e,n.ruleKey,n.provider)?0:Number(n.n)),0)}let eV=r.B`case ${s.alerts.severity} when 'critical' then 0 when 'warning' then 1 else 2 end`;async function ex(e=new Set){return(await (0,a.f)().select({a:s.alerts,name:s.resources.name,kind:s.resources.kind}).from(s.alerts).leftJoin(s.resources,(0,t.u)(s.resources.id,s.alerts.resourceId)).where((0,t.b)((0,t.M)(s.alerts.resolvedAt),(0,eb.s)(e))).orderBy(eV,(0,n.A)(s.alerts.startedAt)).limit(200)).map(({a:e,name:t,kind:n})=>({...e,resourceName:t??null,resourceKind:n??null}))}async function eR(){return ex(await (0,eb.I)())}async function eD(e){return(await (0,a.f)().select({id:s.alerts.id,ruleKey:s.alerts.ruleKey,severity:s.alerts.severity,title:s.alerts.title,resourceId:s.alerts.resourceId,startedAt:s.alerts.startedAt,resolvedAt:s.alerts.resolvedAt}).from(s.alerts).where((0,t.b)((0,t.E)(s.alerts.resolvedAt),(0,t.B)(s.alerts.resolvedAt,new Date(e.getTime()-6048e5)))).orderBy((0,n.A)(s.alerts.resolvedAt)).limit(50)).flatMap(e=>e.resolvedAt?[{...e,resolvedAt:e.resolvedAt}]:[])}async function eM(){let[e,n,l]=await Promise.all([eA(),(0,a.f)().select({key:s.alerts.ruleKey,n:r.B`count(*)::int`}).from(s.alerts).where((0,t.M)(s.alerts.resolvedAt)).groupBy(s.alerts.ruleKey),(0,a.f)().select({kind:s.resources.kind}).from(s.resources).innerJoin(s.snapshots,(0,t.u)(s.snapshots.resourceId,s.resources.id)).where((0,t.b)((0,t.u)(s.resources.monitored,!0),(0,t.M)(s.resources.goneAt))).groupBy(s.resources.kind)]),o=new Set(l.map(e=>e.kind)),d={databases:["supabase_project","neon_project","firestore"].some(e=>o.has(e)),domains:o.has("domain")||o.has("zone"),dns:o.has("zone")};return i.u.flatMap(t=>{let r=e.find(e=>e.key===t);if(!r)return[];let a=i._[t].needs;return[{rule:r,firing:n.find(e=>e.key===t)?.n??0,hasData:null===a||d[a]}]})}async function eT(e,n,r,i){let l="off"===n?{silencedUntil:null,silencedUntilResolved:!1,silencedBy:null}:{...f(n,i),silencedBy:r},[o]=await (0,a.f)().update(s.alerts).set(l).where((0,t.b)((0,t.u)(s.alerts.id,e),(0,t.M)(s.alerts.resolvedAt))).returning({ruleKey:s.alerts.ruleKey,title:s.alerts.title,resourceId:s.alerts.resourceId});return o??null}async function eB(e,n){return(await (0,a.f)().update(s.alertRules).set({...n,updatedAt:new Date}).where((0,t.u)(s.alertRules.key,e)).returning({key:s.alertRules.key})).length>0}async function eN(){try{let[e]=await (0,a.f)().select({value:s.settings.value}).from(s.settings).where((0,t.u)(s.settings.key,d.z)).limit(1);return(0,d._)(e?.value)}catch{return{}}}async function ej(e,t){let n=await eN();Object.keys(t).length?n[e]=t:delete n[e],await (0,a.f)().insert(s.settings).values({key:d.z,value:n}).onConflictDoUpdate({target:s.settings.key,set:{value:n,updatedAt:new Date}})}e.s(["$",0,e$,"q",0,ex,"I",0,eD,"i",0,eR,"X",0,eS,"w",0,eN,"y",0,eM,"z",0,eB,"_",0,ej,"N",0,eT],455317)}]})();
2
2
 
3
3
  //# sourceMappingURL=src_lib_0eqv8l-v8d5ze._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[286165,e=>{e.v(s=>Promise.all(["server/chunks/src_0dxbyz8iemj_5._.js","server/chunks/_0ofzzim090ezo._.js","server/chunks/node_modules_drizzle-orm_pg-core_db_0yjenkrjkvb-b.js","server/chunks/src_lib_data_telegram-bot-db_ts_1t81y-y57-0s-._.js","server/chunks/[root-of-the-server]__0vdm37x30hr6p._.js","server/chunks/src_db_client_ts_10ccz2djmlpbs._.js","server/chunks/node_modules_drizzle-orm_0p2-_xghnn-0j._.js","server/chunks/_004c7-39glldb._.js","server/chunks/src_lib_notify_telegram-bot_ts_18y40dkchmcqd._.js","server/chunks/_18p-vw2zmdx9f._.js"].map(s=>e.l(s))).then(()=>s(692697)))},102690,e=>{e.v(s=>Promise.all(["server/chunks/src_lib_notify_env_ts_1dn77cxuokc3w._.js"].map(s=>e.l(s))).then(()=>s(96658)))},541346,e=>{e.v(s=>Promise.all(["server/chunks/[root-of-the-server]__00aao65ocl0um._.js","server/chunks/_10vh_l3hht4_3._.js","server/chunks/src_lib_notify_telegram-bot_ts_18y40dkchmcqd._.js"].map(s=>e.l(s))).then(()=>s(501424)))},678571,e=>{"use strict";var s=e.i(541211),r=e.i(501424);let _=e=>new Promise(s=>{setTimeout(s,e).unref?.()});async function t(){let[{notifyEnv:s},r,_,{updateDeps:t},{handleUpdate:l}]=await Promise.all([e.A(102690),e.A(541346),e.A(286165),e.A(46799),e.A(994168)]);return{token:async()=>s().telegramToken,enabled:_.webhookOn,offset:{read:_.readPollOffset,write:_.writePollOffset},getUpdates:r.getUpdates,handle:async e=>l(e,await t())}}e.s(["startTelegramPoller",0,function(e){let l=!1;return(async()=>{let n=e??await t(),o=n.sleep??_;for(;!l;)try{let e=await n.enabled()?await n.token():null;if(!e){await o(1e4);continue}let _=await n.getUpdates(e,await n.offset.read());if(!_.ok){if(_.conflict){console.warn("telegram poll: Telegram has a webhook set; turn approvals on in Alerts → Notifications to switch this install to polling"),await o(6e4);continue}console.warn(`telegram poll: getUpdates failed: ${_.error}`),await o(1e4);continue}for(let e of _.updates){if(l)break;let _=e?.update_id,t=(0,r.parseUpdate)(e);if(t)try{await n.handle(t)}catch(e){console.warn(`telegram poll: handling an update failed: ${(0,s.logCause)(e)}`)}"number"==typeof _&&await n.offset.write(_+1)}}catch(e){console.warn(`telegram poll: loop error: ${(0,s.logCause)(e)}`),await o(1e4)}})().catch(e=>console.warn(`telegram poll: could not start: ${(0,s.logCause)(e)}`)),{stop:()=>{l=!0}}}])},994168,e=>{e.v(s=>Promise.all(["server/chunks/src_0hx0sol2clocu._.js","server/chunks/_0ofzzim090ezo._.js","server/chunks/src_lib_notify_lang_ts_1r2w02ctaky7e._.js","server/chunks/src_lib_notify_telegram-bot_ts_18y40dkchmcqd._.js","server/chunks/[root-of-the-server]__0vdm37x30hr6p._.js","server/chunks/src_db_client_ts_10ccz2djmlpbs._.js","server/chunks/_18p-vw2zmdx9f._.js","server/chunks/node_modules_drizzle-orm_0p2-_xghnn-0j._.js","server/chunks/node_modules_drizzle-orm_pg-core_db_0yjenkrjkvb-b.js","server/chunks/_004c7-39glldb._.js"].map(s=>e.l(s))).then(()=>s(341575)))},46799,e=>{e.v(s=>Promise.all(["server/chunks/src_1u-olt84z63rx._.js","server/chunks/src_lib_rate-limit_ts_1ahtm4quu2rri._.js","server/chunks/src_lib_local-auth_sessions-db_ts_1spok9ccfxeam._.js","server/chunks/_1i8u10u8nrzy2._.js","server/chunks/_0ofzzim090ezo._.js","server/chunks/src_lib_notify_lang_ts_1r2w02ctaky7e._.js","server/chunks/src_lib_time_ts_1a27wp71yhgti._.js","server/chunks/_06gv0srpbf_lk._.js","server/chunks/src_lib_view_databases_ts_0fdc7jkjvyrxi._.js","server/chunks/[root-of-the-server]__1cpee8xi1ig3-._.js","server/chunks/node_modules_next_dist_1i-_xribpwttd._.js","server/chunks/src_lib_notify_telegram-bot_ts_18y40dkchmcqd._.js","server/chunks/src_db_client_ts_10ccz2djmlpbs._.js","server/chunks/src_lib_data_telegram-bot-db_ts_1t81y-y57-0s-._.js","server/chunks/_0nmfe_o9yhlh2._.js","server/chunks/_0tz4o-qufnu3l._.js","server/chunks/_1e_rbkrukj0x9._.js","server/chunks/_0nt4ifc48vl34._.js","server/chunks/node_modules_drizzle-orm_1hvomr2ymp14o._.js","server/chunks/_18p-vw2zmdx9f._.js","server/chunks/node_modules_drizzle-orm_pg-core_db_0yjenkrjkvb-b.js"].map(s=>e.l(s))).then(()=>s(112115)))}];
1
+ module.exports=[286165,e=>{e.v(s=>Promise.all(["server/chunks/src_0dxbyz8iemj_5._.js","server/chunks/_0ofzzim090ezo._.js","server/chunks/node_modules_drizzle-orm_pg-core_db_0yjenkrjkvb-b.js","server/chunks/src_lib_data_telegram-bot-db_ts_1t81y-y57-0s-._.js","server/chunks/[root-of-the-server]__0vdm37x30hr6p._.js","server/chunks/src_db_client_ts_10ccz2djmlpbs._.js","server/chunks/node_modules_drizzle-orm_0p2-_xghnn-0j._.js","server/chunks/_004c7-39glldb._.js","server/chunks/src_lib_notify_telegram-bot_ts_18y40dkchmcqd._.js","server/chunks/_18p-vw2zmdx9f._.js"].map(s=>e.l(s))).then(()=>s(692697)))},102690,e=>{e.v(s=>Promise.all(["server/chunks/src_lib_notify_env_ts_1dn77cxuokc3w._.js"].map(s=>e.l(s))).then(()=>s(96658)))},541346,e=>{e.v(s=>Promise.all(["server/chunks/[root-of-the-server]__00aao65ocl0um._.js","server/chunks/_10vh_l3hht4_3._.js","server/chunks/src_lib_notify_telegram-bot_ts_18y40dkchmcqd._.js"].map(s=>e.l(s))).then(()=>s(501424)))},678571,e=>{"use strict";var s=e.i(541211),r=e.i(501424);let _=e=>new Promise(s=>{setTimeout(s,e).unref?.()});async function t(){let[{notifyEnv:s},r,_,{updateDeps:t},{handleUpdate:l}]=await Promise.all([e.A(102690),e.A(541346),e.A(286165),e.A(46799),e.A(994168)]);return{token:async()=>s().telegramToken,enabled:_.webhookOn,offset:{read:_.readPollOffset,write:_.writePollOffset},getUpdates:r.getUpdates,handle:async e=>l(e,await t())}}e.s(["startTelegramPoller",0,function(e){let l=!1;return(async()=>{let n=e??await t(),o=n.sleep??_;for(;!l;)try{let e=await n.enabled()?await n.token():null;if(!e){await o(1e4);continue}let _=await n.getUpdates(e,await n.offset.read());if(!_.ok){if(_.conflict){console.warn("telegram poll: Telegram has a webhook set; turn approvals on in Alerts → Notifications to switch this install to polling"),await o(6e4);continue}console.warn(`telegram poll: getUpdates failed: ${_.error}`),await o(1e4);continue}for(let e of _.updates){if(l)break;let _=e?.update_id,t=(0,r.parseUpdate)(e);if(t)try{await n.handle(t)}catch(e){console.warn(`telegram poll: handling an update failed: ${(0,s.logCause)(e)}`)}"number"==typeof _&&await n.offset.write(_+1)}}catch(e){console.warn(`telegram poll: loop error: ${(0,s.logCause)(e)}`),await o(1e4)}})().catch(e=>console.warn(`telegram poll: could not start: ${(0,s.logCause)(e)}`)),{stop:()=>{l=!0}}}])},994168,e=>{e.v(s=>Promise.all(["server/chunks/src_0hx0sol2clocu._.js","server/chunks/_0ofzzim090ezo._.js","server/chunks/src_lib_notify_lang_ts_1r2w02ctaky7e._.js","server/chunks/src_lib_notify_telegram-bot_ts_18y40dkchmcqd._.js","server/chunks/[root-of-the-server]__0vdm37x30hr6p._.js","server/chunks/src_db_client_ts_10ccz2djmlpbs._.js","server/chunks/_18p-vw2zmdx9f._.js","server/chunks/node_modules_drizzle-orm_0p2-_xghnn-0j._.js","server/chunks/node_modules_drizzle-orm_pg-core_db_0yjenkrjkvb-b.js","server/chunks/_004c7-39glldb._.js"].map(s=>e.l(s))).then(()=>s(341575)))},46799,e=>{e.v(s=>Promise.all(["server/chunks/src_1u-olt84z63rx._.js","server/chunks/src_lib_rate-limit_ts_1ahtm4quu2rri._.js","server/chunks/src_lib_local-auth_sessions-db_ts_1spok9ccfxeam._.js","server/chunks/_1i8u10u8nrzy2._.js","server/chunks/_0ofzzim090ezo._.js","server/chunks/src_lib_notify_lang_ts_1r2w02ctaky7e._.js","server/chunks/src_lib_time_ts_1a27wp71yhgti._.js","server/chunks/_06gv0srpbf_lk._.js","server/chunks/src_lib_view_databases_ts_0fdc7jkjvyrxi._.js","server/chunks/[root-of-the-server]__1cpee8xi1ig3-._.js","server/chunks/node_modules_next_dist_1i-_xribpwttd._.js","server/chunks/src_lib_notify_telegram-bot_ts_18y40dkchmcqd._.js","server/chunks/src_db_client_ts_10ccz2djmlpbs._.js","server/chunks/src_lib_data_telegram-bot-db_ts_1t81y-y57-0s-._.js","server/chunks/_0nmfe_o9yhlh2._.js","server/chunks/_0tz4o-qufnu3l._.js","server/chunks/_08fv52mqg619m._.js","server/chunks/_0nt4ifc48vl34._.js","server/chunks/node_modules_drizzle-orm_1hvomr2ymp14o._.js","server/chunks/_18p-vw2zmdx9f._.js","server/chunks/node_modules_drizzle-orm_pg-core_db_0yjenkrjkvb-b.js"].map(s=>e.l(s))).then(()=>s(112115)))}];
2
2
 
3
3
  //# sourceMappingURL=src_lib_0glcfed-uogyd._.js.map
@@ -0,0 +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"}`)}}])},697913,468602,e=>{var t=e.i(875225),a=e.i(924924),r=e.i(618916),n=e.i(656083),s=e.i(583521);function i(e,t,a){let r=a.toISOString().slice(0,10),n=e&&"object"==typeof e?e:{},s=n.day===r&&Number.isFinite(n.ms)&&Number.isFinite(n.runs)?{day:r,ms:n.ms,runs:n.runs,warned:!0===n.warned}:{day:r,ms:0,runs:0,warned:!1},i=Number.isFinite(t)&&t>0?Math.round(t):0,o={...s,ms:s.ms+i,runs:s.runs+1},l=!s.warned&&o.ms>24e4;return l&&(o.warned=!0),{next:o,crossed:l}}e.s(["W",0,24e4,"Q",0,i,"g",0,function(e=process.env){let t=((0,s.d)(e,"COLLECT_MIN_GAP_MIN")??"").trim(),a=""===t?10:Number(t);return Number.isFinite(a)&&a>=0?6e4*a:6e5},"R",0,function(e,t,a){return a>0&&null!==e&&t.getTime()-e.getTime()<a}],468602);let o="collector.cpuDay";async function l(e,s=new Date){try{let[l]=await (0,a.f)().select({value:r.settings.value}).from(r.settings).where((0,t.u)(r.settings.key,o)).limit(1),{next:u,crossed:d}=i(l?.value,e,s);await (0,a.f)().insert(r.settings).values({key:o,value:u}).onConflictDoUpdate({target:r.settings.key,set:{value:u,updatedAt:s}}),d&&await (0,n.f)([{type:"system",kind:"warn",message:"Collector CPU high today",detail:`${Math.round(u.ms/1e3)} s in ${u.runs} runs, over 4 min (Vercel Hobby allows about 8 min a day). Check the cron-job.org schedule.`,resourceId:null,at:s}])}catch(e){console.warn("collector cpu count failed:",e instanceof Error?e.name:"error")}}e.s(["f",0,l],697913)},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),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,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 N(e,a){await (0,r.f)().update(n.snapshots).set({data:M(a)}).where((0,t.u)(n.snapshots.resourceId,e.r.id))}let R=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 T=e=>e.toISOString();async function P(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])),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 R(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,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: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,I.F)(a,t.r.externalId,r),(0,I.Z)(a,t.r.externalId,r)]);n.ok?Object.assign(o,{health:n.data.map(({name:e,status:t})=>({name:e,status:t})),healthAt:T(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:T(e.now),trafficError:null}):"column"===p(s,!1)?o.trafficError=s.error:e.errors.push(`supabase/${t.r.name} traffic: ${s.error}`)}await N(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,v.Z)(a,e.r.externalId,t),(0,v.k)(a,e.r.externalId,t),(0,v.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 R(o),x(s)}}let U=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 W(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:U(r)},e.now))}await R(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 N(t,{...r.data,opsAt:T(e.now),opsError:null}):"column"===p(r,!1)?await N(t,{reads:null,writes:null,deletes:null,opsAt:T(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 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 N(r,{sizeBytes:n.data,sizeAt:T(e.now),sizeError:null}):"column"===p(n,!1)?await N(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:i}=await D(e,n,async(t,a)=>{let r=await (0,b.q)(s.data,t.r.externalId,a);r.ok?await N(t,{authUsers:r.data,authAt:T(e.now),authError:null}):"column"===p(r,!1)?await N(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,P,"T",0,D,"W",0,x,"M",0,R,"I",0,L,"f",0,V,"g",0,W,"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(697913),s=e.i(618916),i=e.i(764766),o=e.i(390775),l=e.i(537622),u=e.i(749124),d=e.i(532148),c=e.i(988294),f=e.i(739886),p=e.i(656083),w=e.i(921991),m=e.i(381725),h=e.i(483100),g=e.i(111970),y=e.i(703352),b=e.i(948736),k=e.i(655060),v=e.i(762504),I=e.i(547499),A=e.i(275426),S=e.i(873354),$=e.i(177706),D=e.i(61926),x=e.i(140318),E=e.i(977832),j=e.i(89491),M=e.i(592951),O=e.i(691734),N=e.i(43790),R=e.i(11552);async function C(e){let t=[await (0,x.I)(()=>P(e)),await (0,x.I)(()=>B(e)),await (0,x.I)(()=>_(e))].find(e=>null!==e);if(t)throw t}let T=e=>e.toISOString();async function P(e){for(let{acc:t,credential:a}of(await (0,x.O)("turso"))){if((0,x.s)(e),!a){e.errors.push(`turso/${t.label}: credential can't be read`);continue}let r=await (0,x.e)(t.id,"turso_database");if(!r.length)continue;let n=await (0,O.u)(a,(0,x.s)(e));if(!n.ok){await (0,x.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,O.X)(a,o.slug,(0,x.s)(e)),(0,O.d)(a,o.slug,(0,x.s)(e))]),l=r.filter(e=>e.r.meta.org===o.slug);if(!n.ok){for(let t of l)await (0,x.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 z(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,x.a)(t,{state:"off",label:"Organization not visible to this token",patch:{}},e.now));await (0,x.M)(i)}}async function z(e,t,a,r,n){if(!t)return(0,x.a)(e,{state:"off",label:"Not found",patch:{}},n.now);let s=(0,j.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:T(n.now),usageError:null})}else"column"===(0,E.t)(r,!1)?i.usageError=r.error:n.errors.push(`turso/${e.r.name} usage: ${r.error}`);return(0,x.a)(e,{...s,patch:i},n.now)}async function B(e){for(let{acc:t,credential:a}of(await (0,x.O)("upstash"))){(0,x.s)(e);let r=a?(0,N.L)(a):null;if(!r){e.errors.push(`upstash/${t.label}: credential can't be read`);continue}let n=await (0,x.e)(t.id,"upstash_redis");if(!n.length)continue;let s=await (0,N.M)(r,(0,x.s)(e));if(!s.ok){await (0,x.w)("upstash",t,n,s,e);continue}let i=new Map(s.data.map(e=>[e.id,e])),{out:o,skipped:l}=await (0,x.T)(e,n,(e,t)=>i.has(e.r.externalId)?(0,N.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,x.a)(a,{state:"off",label:"Not found",patch:{}},e.now));continue}let n=(0,j.t)(r.state),s={region:r.region,status:r.state,type:r.type},l=o[t];l?.ok?Object.assign(s,{...l.data,statsAt:T(e.now),statsError:null}):l&&"column"===(0,E.t)(l,!1)?s.statsError=l.error:l&&e.errors.push(`upstash/${a.r.name} stats: ${l.error}`),u.push(await (0,x.a)(a,{...n,patch:s},e.now))}await (0,x.M)(u),(0,x.W)(l)}}async function _(e){let t={};for(let{acc:a,credential:r}of(await (0,x.O)("cloudflare"))){if((0,x.s)(e),!r)continue;let n=await W(a.id,r,e);if(!n.length){t[a.id]={d1:"error",analytics:null,at:T(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,M.L)(r,t,(0,x.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 F(a.id,t,n.data,e.now);let o=(await (0,x.e)(a.id,"d1_database")).filter(e=>e.r.meta.accountId===t);if(!o.length)continue;let l=await (0,M.t)(r,t,(0,M.Y)(e.now),(0,x.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,x.T)(e,o,(e,a)=>(0,M.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 U(a,r,c.get(a.r.externalId)??null,l.ok,l.ok?null:l.error,p,e))}await (0,x.M)(w),(0,x.W)(d)}t[a.id]={d1:s,analytics:i,at:T(e.now),note:null}}await (0,r.f)().insert(s.settings).values({key:R.f,value:t}).onConflictDoUpdate({target:s.settings.key,set:{value:t,updatedAt:e.now}})}async function U(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:T(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,M.Y)(i.now),usageAt:T(i.now),usageError:null}):o.usageError=n,null!==s.accountSizeBytes&&(o.accountSizeBytes=s.accountSizeBytes),!t.ok&&"transient"===t.kind)return(0,x.a)(e,{state:"unknown",label:"Unknown",patch:{}},i.now);let l=(0,j.c)(r?s:{accountRowsRead:null,accountRowsWritten:null});return(0,x.a)(e,{...l,patch:o},i.now)}async function W(e,a,n){let i=new Set,o=await (0,M.N)(a,(0,x.s)(n));if(o.ok)for(let e of o.data)i.add(e.id);for(let a of(await (0,r.f)().select({meta:s.resources.meta}).from(s.resources).where((0,t.b)((0,t.u)(s.resources.accountId,e),(0,t.u)(s.resources.kind,"zone"),(0,t.M)(s.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 F(e,a,n,i){let o=(await (0,r.f)().select({id:s.resources.id,externalId:s.resources.externalId,meta:s.resources.meta,goneAt:s.resources.goneAt}).from(s.resources).where((0,t.b)((0,t.u)(s.resources.accountId,e),(0,t.u)(s.resources.kind,"d1_database")))).filter(e=>e.meta.accountId===a),l=new Map(o.map(e=>[e.externalId,e])),u=new Set(n.map(e=>e.uuid));await (0,r.f)().transaction(async r=>{for(let o of n){let n={accountId:a,createdAt:o.createdAt},u=l.get(o.uuid);u?await r.update(s.resources).set({name:o.name,meta:n,lastSeenAt:i,goneAt:null,updatedAt:i}).where((0,t.u)(s.resources.id,u.id)):await r.insert(s.resources).values({accountId:e,kind:"d1_database",externalId:o.uuid,name:o.name,meta:n,monitored:!0,lastSeenAt:i}).onConflictDoNothing({target:[s.resources.accountId,s.resources.kind,s.resources.externalId]})}let d=o.filter(e=>!u.has(e.externalId)&&!e.goneAt).map(e=>e.id);d.length&&await r.update(s.resources).set({goneAt:i,updatedAt:i}).where((0,t.y)(s.resources.id,d))})}var V=e.i(442473),L=e.i(666680),J=e.i(473283),Y=e.i(422067);async function q(e=new Date){let t=(0,L.randomUUID)(),n=new Date(e.getTime()+Y.d).toISOString(),s=await (0,r.f)().execute(a.B`
2
+ insert into ops.settings (key, value) values ('collector.lease', ${JSON.stringify({until:n,owner:t})}::jsonb)
3
+ on conflict (key) do update set value = excluded.value, updated_at = now()
4
+ where (ops.settings.value->>'until')::timestamptz < ${e.toISOString()}::timestamptz
5
+ returning key`);return(0,J.f)(s).length>0?t:null}async function G(e){await (0,r.f)().execute(a.B`
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})?$/,H=/^\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 Q(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 ee(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||!H.test(e.eolFrom)))return null;a.push({name:e.name,isEol:e.isEol,eolFrom:e.eolFrom??null})}return a}var et=e.i(583521);let ea="runtime.node";function er(e=process.env){let t=(0,et.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 en(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 es(e={}){let t=e.fetch??fetch,a=e.timeoutMs??8e3,[r,n]=await Promise.all([en("https://nodejs.org/dist/index.json","nodejs.org",t,a),en("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||Q(e,n)>0)&&a.set(e.major,e)}return t.sort((e,t)=>Q(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?ee(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 ei=e=>"string"==typeof e&&Number.isFinite(Date.parse(e))?e:null,eo=e=>"string"==typeof e?e:null;async function el(){var e;let[a]=await (0,r.f)().select({value:s.settings.value}).from(s.settings).where((0,t.u)(s.settings.key,ea)).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:ei(e.indexCheckedAt),indexError:eo(e.indexError),cycles:ee({result:{releases:e.cycles}}),cyclesCheckedAt:ei(e.cyclesCheckedAt),cyclesError:eo(e.cyclesError)}:null:null}async function eu(e,t,a,n=process.env){let i;if(er(n).off)return;let o=t-Date.now();if(o<1e3)throw Error("skipped, time budget used");let l=await es({timeoutMs:Math.min(8e3,o)}),u=await el();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(s.settings).values({key:ea,value:d}).onConflictDoUpdate({target:s.settings.key,set:{value:d,updatedAt:e}})}var ed=e.i(77193);let ec=/^\d{1,4}\.\d{1,4}\.\d{1,6}$/,ef=e=>"string"==typeof e&&ec.test(e);async function ep(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 ef(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 ew(e,t,a,n=process.env,i){let o=function(e=process.env){let t=e.WATCHBELL_VERSION?.trim();return ef(t)?t:null}(n);if(!o||"selfhost"!==(0,ed.c)(n)||er(n).off)return;let l=t-Date.now();if(l<1e3)return;let u=await ep({fetch:i,timeoutMs:Math.min(6e3,l)});if(u.ok){let t={version:u.version,checkedAt:e.toISOString()};await (0,r.f)().insert(s.settings).values({key:"watchbell.latest",value:t}).onConflictDoUpdate({target:s.settings.key,set:{value:t,updatedAt:e}})}else a.push(`update check: ${u.error}`);await (0,r.f)().insert(s.settings).values({key:"watchbell.seenVersion",value:{version:o}}).onConflictDoNothing({target:s.settings.key})}var em=e.i(515743),eh=e.i(336030),eg=e.i(905685),ey=e.i(751762);e.i(794713);let eb="collector.lastRun",ek="vercel.backoffUntil",ev="vercel.currentMiss",eI={supabase:x.N,supabaseUsage:x.y,neon:x.h,firebase:x.g,firebaseUsage:x.x,extraDbs:C};async function eA(){let e=await (0,r.f)().select({key:s.settings.key,value:s.settings.value}).from(s.settings).where((0,t.y)(s.settings.key,[eb,S.Z])).limit(2);return{lastRun:e.find(e=>e.key===eb)?.value??{},afterDeploy:e.find(e=>e.key===S.Z)?.value??null}}async function eS(e){await (0,r.f)().insert(s.settings).values({key:eb,value:e}).onConflictDoUpdate({target:s.settings.key,set:{value:e,updatedAt:new Date}})}let e$=e=>(0,p.f)(e);async function eD(e,n,i,o,l=[]){let u=(await (0,r.f)().select({m:s.monitors,app:s.resources}).from(s.monitors).innerJoin(s.resources,(0,t.u)(s.resources.id,s.monitors.resourceId)).where((0,t.b)((0,t.u)(s.monitors.kind,"http"),(0,t.u)(s.monitors.paused,!1),(0,t.u)(s.monitors.ownerPaused,!1),(0,t.u)(s.resources.monitored,!0),(0,t.M)(s.resources.goneAt))).orderBy(a.B`${s.monitors.lastCheckedAt} asc nulls first`,s.monitors.id)).filter(({m:t})=>(0,Y.B)(t.lastCheckedAt,e,o));if(!u.length)return 0;let d=await (0,V.P)(u,6,({m:e})=>{let t=(0,Y.P)(e.timeoutMs,n,Date.now());return null===t?Promise.resolve(null):(0,V.b)(e.url,{expectedStatus:e.expectedStatus,timeoutMs:t,body:(0,em.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,eh.j)(t.m,t.r,e)&&f.push(t);return f.length?(await (0,r.f)().insert(s.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,A.x)(l,{monitorId:t.id,appId:a.id},e)}))),await e$(f.map(({m:t,app:a,r})=>(0,eg.F)({resourceId:a.id,path:(0,D.K)(t.url),prev:t.state,next:(0,eg.G)(t.failStreak,r).state,code:r.statusCode,error:r.error,at:e}))),f.length):0}let ex=["checks","heartbeats"];async function eE(e,t,a=f.f){if(!ex.some(t=>e.includes(t)))return[];try{return await a()}catch(e){return t.push(`maintenance: ${(0,ey.f)(e)}`),[]}}async function ej(e){let[a]=await (0,r.f)().select().from(s.settings).where((0,t.u)(s.settings.key,ek)).limit(1),n=a?.value?.until;return!!n&&e.getTime()<new Date(n).getTime()}async function eM(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(s.settings).values({key:ek,value:a}).onConflictDoUpdate({target:s.settings.key,set:{value:a,updatedAt:t}}),!0}let eO=e=>a.B`coalesce(${s.deployments.externalId} = ${e}::text, false)`;async function eN(e,n,i,o,l=k.m){let u=[];try{for(let l of e){let e=n.filter(e=>e.resourceId===l.id),{currentId:d,previousId:c}=(0,D.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(s.deployments).set({isCurrent:eO(d),isPreviousProduction:eO(c),updatedAt:o.now}).where((0,t.b)((0,t.u)(s.deployments.resourceId,l.id),(0,t.F)(a.B`${s.deployments.isCurrent} is distinct from ${eO(d)}`,a.B`${s.deployments.isPreviousProduction} is distinct from ${eO(c)}`))).returning({id:s.deployments.externalId}),p=(0,S.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,ey.f)(e)}`)}}}let eR=e=>new Map(e.map(e=>[e.id,{...e.branchFrom?{branchFrom:e.branchFrom}:{},...e.gitDirty?{gitDirty:!0}:{}}]));async function eC(e,t,a,r,n=new Map,s=y.f){try{await s(e,t,n)}catch(e){a.push(`vercel/${r}: production source not saved: ${(0,ey.f)(e)}`)}}async function eT(e,a,n,i){if(await ej(e))return;let l=(0,I.f)().OPS_ENCRYPTION_KEY;for(let u of(await (0,r.f)().select().from(s.accounts).where((0,t.b)((0,t.u)(s.accounts.provider,"vercel"),(0,t.u)(s.accounts.status,"ok"))))){let d=(0,w.V)({ciphertext:u.credentialCiphertext,iv:u.credentialIv},l);if((0,o.A)(d)||!d){n.push(`vercel/${u.label}: credential can't be read`);continue}let c=await (0,r.f)().select().from(s.resources).where((0,t.b)((0,t.u)(s.resources.accountId,u.id),(0,t.u)(s.resources.kind,"app"),(0,t.u)(s.resources.monitored,!0),(0,t.M)(s.resources.goneAt)));if(!c.length)continue;let f=new Map(c.map(e=>[e.externalId,e])),p=await (0,$.X)(d);if(!p.ok){let a=(0,o.E)({ok:!1,kind:p.kind,error:p.error});if(a&&await (0,r.f)().update(s.accounts).set({...a,updatedAt:e}).where((0,t.u)(s.accounts.id,u.id)),n.push(`vercel/${u.label}: ${p.error}`),await eM(p,e))return;continue}let m=new Set(c.map(e=>String(e.meta.teamId)));for(let o of p.data.filter(e=>m.has(e.id))){if(Date.now()>a)return void n.push("vercel: skipped remaining teams, time budget used");let[l,u]=await Promise.all([(0,$.W)(d,o),(0,$.K)(d,o,{since:e.getTime()-6048e5,limit:100})]);if(!l.ok||!u.ok){let t=l.ok?u:l;if(n.push(`vercel/${o.name}: ${t.error}`),await eM(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:s.deployments.externalId,state:s.deployments.state,target:s.deployments.target,branch:s.deployments.branch,commitSha:s.deployments.commitSha,commitMessage:s.deployments.commitMessage,source:s.deployments.source,url:s.deployments.url,buildingAt:s.deployments.buildingAt,readyAt:s.deployments.readyAt}).from(s.deployments).where((0,t.y)(s.deployments.externalId,w.map(e=>e.id))):[]).map(e=>[e.externalId,e])),g=[];for(let t of w){let a=f.get(t.projectId),n=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,D.E)(n,i)){let n={resourceId:a.id,externalId:t.id,...i,createdAtProvider:t.createdAt,updatedAt:e};await (0,r.f)().insert(s.deployments).values(n).onConflictDoUpdate({target:s.deployments.externalId,set:n})}g.push((0,eg.L)(n?.state,t,a.id,e))}await e$(g);let y=c.filter(e=>String(e.meta.teamId)===o.id),b=await (0,r.f)().select({resourceId:s.deployments.resourceId,id:s.deployments.externalId,createdAt:s.deployments.createdAtProvider}).from(s.deployments).where((0,t.b)((0,t.y)(s.deployments.resourceId,y.map(e=>e.id)),(0,t.u)(s.deployments.target,"production"),(0,t.u)(s.deployments.state,"ready"))),[k]=await (0,r.f)().select().from(s.settings).where((0,t.u)(s.settings.key,ev)).limit(1),v=[],I=()=>v.length?(0,r.f)().insert(s.settings).values({key:ev,value:(0,D.Y)(k?.value,v,e)}).onConflictDoUpdate({target:s.settings.key,set:{value:(0,D.Y)(k?.value,v,e),updatedAt:e}}):Promise.resolve();for(let t of(0,D.Q)(y,p,b,(0,D.S)(k?.value,e))){if(Date.now()>a)break;let i=await (0,$.S)(d,o,t.deploymentId);if(!i.ok){if(n.push(`vercel/${o.name}: current deployment: ${i.error}`),await eM(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(s.deployments).values(u).onConflictDoUpdate({target:s.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 eN(y,b,p,{now:e,afterDeploy:i,errors:n,label:o.name}),await eC(y,e,n,o.name,m)}}}async function eP(e){let n=await (0,r.f)().select().from(s.resources).where((0,t.b)((0,t.u)(s.resources.kind,"app"),(0,t.u)(s.resources.monitored,!0),(0,t.M)(s.resources.goneAt)));if(!n.length)return;let o=await (0,r.f)().select().from(s.monitors).where((0,t.b)((0,t.y)(s.monitors.resourceId,n.map(e=>e.id)),(0,t.u)(s.monitors.paused,!1),(0,t.u)(s.monitors.ownerPaused,!1))),l=new Set((await (0,r.f)().select({r:s.deployments.resourceId}).from(s.deployments).where((0,t.b)((0,t.y)(s.deployments.resourceId,n.map(e=>e.id)),(0,t.u)(s.deployments.target,"production"),(0,t.u)(s.deployments.state,"building"),(0,t.B)(s.deployments.createdAtProvider,new Date(e.getTime()-36e5))))).map(e=>e.r)),u=await (0,x.q)(n.map(e=>e.id)),d=new Map((await (0,r.f)().select().from(s.snapshots).where((0,t.y)(s.snapshots.resourceId,n.map(e=>e.id)))).map(e=>[e.resourceId,e])),c=new Map(n.map(e=>[e.id,e])),f=(0,i.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})),n),p=e=>f.has(e.id)&&"err"===e.state?"warn":e.state;for(let[e,l]of(0,i.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})),n))await (0,r.f)().update(s.resources).set({meta:a.B`${s.resources.meta} || ${JSON.stringify({pastDomains:l})}::jsonb`}).where((0,t.u)(s.resources.id,e));for(let t of n){let n=o.filter(e=>e.resourceId===t.id),i=(0,eg.V)({monitors:n.map(p),building:l.has(t.id),dbPaused:u.has(t.id)}),c=n.find(e=>"err"===e.state)??n.find(e=>"warn"===e.state),f={code:c?.lastStatus??null,latencyMs:n.find(e=>"heartbeat"!==e.kind)?.lastLatencyMs??null,dbPaused:u.has(t.id)},w=d.get(t.id);await (0,r.f)().insert(s.snapshots).values({resourceId:t.id,state:i,data:f,collectedAt:e,stateSince:e}).onConflictDoUpdate({target:s.snapshots.resourceId,set:{state:i,data:a.B`${s.snapshots.data} || ${JSON.stringify(f)}::jsonb`,collectedAt:e,...w?.state!==i?{stateSince:e}:{}}})}}async function ez(e,t={}){let a={writeLastRun:eS,refreshApps:eP,refreshNetwork:K.x,invalidate:l.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,ey.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,ey.f)(t)}`)}}finally{a.invalidate((0,u.o)(e.tried??e.done))}}async function eB(e,t,a,r={evaluate:d.$,deliver:h.q,digest:h.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,ey.f)(t)}`)}try{await r.deliver(new Date,t),console.info("collector notifications delivered")}catch(t){e=!1,a.push(`notify: ${(0,ey.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,ey.f)(e)}`)}return n}async function e_(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,ey.f)(e)}`)}}}return{done:n,tried:s}}async function eU(e){let a,i=new Date,o=await q(i);if(!o)return{skipped:!0,ok:!0,tasks:[],checks:0,durationMs:0,errors:[]};try{[a]=await (0,r.f)().insert(s.collectorRuns).values({startedAt:i,trigger:"builtin"===e?"manual":e}).returning({id:s.collectorRuns.id})}catch(e){throw await G(o).catch(()=>void 0),e}let l=[],u=[],d=0,f=i.getTime()+Y.p,p=process.cpuUsage(),w=()=>{let e=process.cpuUsage(p);return Math.round((e.user+e.system)/1e3)},h=e=>console.info(`collector ${e} +${Date.now()-i.getTime()}ms cpu ${w()}ms`);try{h("start");let{lastRun:t,afterDeploy:a}=await eA(),r="cron_job_org"!==e&&"builtin"!==e,n=await (0,g.I)(),{due:s,early:o}=(0,Y._)((0,Y.S)(t,i,r,n),(0,k.Y)(a),n),p=!1,w=e=>o||!p?e.filter(e=>"security"!==e):e,y=s.filter(e=>Y.u.includes(e)),I=y.includes("alerts")?f-Y.X:f,$=await eE(s,l);h(`due ${s.join(",")}`);let{done:D,tried:x}=await e_(s.filter(e=>!Y.u.includes(e)),I,l,async e=>{if(h(`task ${e}`),"heartbeats"===e){let e=new Date;d+=await (0,c.r)(e,(t,a)=>null!==(0,A.x)($,{monitorId:t,appId:a},e),r)}"checks"===e&&(d+=await eD(new Date,I,l,r,$)),"vercel"===e&&await eT(new Date,I,l,(0,S.Y)(a));let t=eI[e];t&&await t({now:new Date,deadline:I,errors:l,protectOnly:(0,Y.$)(e,n)}),"cloudflare"===e&&await (0,K.h)(new Date,I,l),"domains"===e&&await (0,K.H)(new Date,I,l),"tls"===e&&await (0,K.V)(new Date,I,l),"rdap"===e&&await (0,K.W)(new Date,I,l),"eol"===e&&await (0,K.i)(new Date,I,l),"node"===e&&(await eu(new Date,I,l),await ew(new Date,I,l)),"status"===e&&await (0,v.i)(new Date),"logs"===e&&await (0,m._)(new Date,I,l),"pageviews"===e&&await (0,b.f)(new Date,I,l),"security"===e&&(p=(await (0,k.U)({now:i,deadline:I,errors:l,paused:n,early:o})).complete)});u.push(...D),h("main done"),await ez({lastRun:t,done:w(u),tried:x,started:i,errors:l}),h("settled");let E=await eB(y,f,l);h("post done"),E.length&&await eS({...t,...Object.fromEntries(w([...u,...E]).map(e=>[e,i.toISOString()]))}),u.push(...E)}catch(e){l.push(`run: ${(0,ey.f)(e)}`)}finally{let e=Date.now()-i.getTime();await (0,r.f)().update(s.collectorRuns).set({finishedAt:new Date,ok:0===l.length,errorSummary:l.join("\n").slice(0,2e3)||null,durationMs:e,tasks:u,checks:d}).where((0,t.u)(s.collectorRuns.id,a.id)).catch(()=>void 0),await G(o).catch(()=>void 0),process.env.VERCEL&&await (0,n.f)(w())}return{skipped:!1,ok:0===l.length,tasks:u,checks:d,durationMs:Date.now()-i.getTime(),errors:l}}e.s(["f",0,eU],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())}),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(),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=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(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 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 N(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 R=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 T(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 P(e,t){let a=Object.entries(e.pending).filter(([,e])=>t.getTime()-Date.parse(e.at)>216e5).map(([e])=>e);return a.length?T(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 T({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,P,"A",0,R,"B",0,C,"p",0,z,"Y",0,N,"E",0,B],873354);var _=e.i(970465);let U="security.slot",W=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(U),writeSlot:L(U),nextCheck:x.h,depsStep:(e,t)=>(0,D.O)(e,t)};async function Y(e,t=J){let a=N(await t.read()),r=P(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:W(a.next),repos:W(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=J){if(!e.length)return!1;let{state:r,changed:n}=C(N(await a.read()),e,t);return n&&await a.write(r),n}e.s(["m",0,q,"Y",0,e=>R(N(e)),"U",0,Y],655060)}]})();
8
+
9
+ //# sourceMappingURL=src_lib_0pyyxm3m1rttg._.js.map
@@ -0,0 +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"}`)}}])},697913,468602,e=>{var t=e.i(875225),a=e.i(924924),r=e.i(618916),n=e.i(656083),s=e.i(583521);function i(e,t,a){let r=a.toISOString().slice(0,10),n=e&&"object"==typeof e?e:{},s=n.day===r&&Number.isFinite(n.ms)&&Number.isFinite(n.runs)?{day:r,ms:n.ms,runs:n.runs,warned:!0===n.warned}:{day:r,ms:0,runs:0,warned:!1},i=Number.isFinite(t)&&t>0?Math.round(t):0,o={...s,ms:s.ms+i,runs:s.runs+1},l=!s.warned&&o.ms>24e4;return l&&(o.warned=!0),{next:o,crossed:l}}e.s(["W",0,24e4,"Q",0,i,"g",0,function(e=process.env){let t=((0,s.d)(e,"COLLECT_MIN_GAP_MIN")??"").trim(),a=""===t?10:Number(t);return Number.isFinite(a)&&a>=0?6e4*a:6e5},"R",0,function(e,t,a){return a>0&&null!==e&&t.getTime()-e.getTime()<a}],468602);let o="collector.cpuDay";async function l(e,s=new Date){try{let[l]=await (0,a.f)().select({value:r.settings.value}).from(r.settings).where((0,t.u)(r.settings.key,o)).limit(1),{next:u,crossed:d}=i(l?.value,e,s);await (0,a.f)().insert(r.settings).values({key:o,value:u}).onConflictDoUpdate({target:r.settings.key,set:{value:u,updatedAt:s}}),d&&await (0,n.f)([{type:"system",kind:"warn",message:"Collector CPU high today",detail:`${Math.round(u.ms/1e3)} s in ${u.runs} runs, over 4 min (Vercel Hobby allows about 8 min a day). Check the cron-job.org schedule.`,resourceId:null,at:s}])}catch(e){console.warn("collector cpu count failed:",e instanceof Error?e.name:"error")}}e.s(["f",0,l],697913)},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),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,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 N(e,a){await (0,r.f)().update(n.snapshots).set({data:M(a)}).where((0,t.u)(n.snapshots.resourceId,e.r.id))}let R=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 T=e=>e.toISOString();async function P(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])),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 R(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,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: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,I.F)(a,t.r.externalId,r),(0,I.Z)(a,t.r.externalId,r)]);n.ok?Object.assign(o,{health:n.data.map(({name:e,status:t})=>({name:e,status:t})),healthAt:T(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:T(e.now),trafficError:null}):"column"===p(s,!1)?o.trafficError=s.error:e.errors.push(`supabase/${t.r.name} traffic: ${s.error}`)}await N(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,v.Z)(a,e.r.externalId,t),(0,v.k)(a,e.r.externalId,t),(0,v.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 R(o),x(s)}}let U=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 W(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:U(r)},e.now))}await R(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 N(t,{...r.data,opsAt:T(e.now),opsError:null}):"column"===p(r,!1)?await N(t,{reads:null,writes:null,deletes:null,opsAt:T(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 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 N(r,{sizeBytes:n.data,sizeAt:T(e.now),sizeError:null}):"column"===p(n,!1)?await N(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:i}=await D(e,n,async(t,a)=>{let r=await (0,b.q)(s.data,t.r.externalId,a);r.ok?await N(t,{authUsers:r.data,authAt:T(e.now),authError:null}):"column"===p(r,!1)?await N(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,P,"T",0,D,"W",0,x,"M",0,R,"I",0,L,"f",0,V,"g",0,W,"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(697913),s=e.i(618916),i=e.i(764766),o=e.i(390775),l=e.i(537622),u=e.i(749124),d=e.i(532148),c=e.i(988294),f=e.i(739886),p=e.i(656083),w=e.i(921991),m=e.i(381725),h=e.i(483100),g=e.i(111970),y=e.i(703352),b=e.i(948736),k=e.i(655060),v=e.i(762504),I=e.i(547499),A=e.i(275426),S=e.i(873354),$=e.i(177706),D=e.i(61926),x=e.i(140318),E=e.i(977832),j=e.i(89491),M=e.i(592951),O=e.i(691734),N=e.i(43790),R=e.i(11552);async function C(e){let t=[await (0,x.I)(()=>P(e)),await (0,x.I)(()=>B(e)),await (0,x.I)(()=>_(e))].find(e=>null!==e);if(t)throw t}let T=e=>e.toISOString();async function P(e){for(let{acc:t,credential:a}of(await (0,x.O)("turso"))){if((0,x.s)(e),!a){e.errors.push(`turso/${t.label}: credential can't be read`);continue}let r=await (0,x.e)(t.id,"turso_database");if(!r.length)continue;let n=await (0,O.u)(a,(0,x.s)(e));if(!n.ok){await (0,x.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,O.X)(a,o.slug,(0,x.s)(e)),(0,O.d)(a,o.slug,(0,x.s)(e))]),l=r.filter(e=>e.r.meta.org===o.slug);if(!n.ok){for(let t of l)await (0,x.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 z(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,x.a)(t,{state:"off",label:"Organization not visible to this token",patch:{}},e.now));await (0,x.M)(i)}}async function z(e,t,a,r,n){if(!t)return(0,x.a)(e,{state:"off",label:"Not found",patch:{}},n.now);let s=(0,j.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:T(n.now),usageError:null})}else"column"===(0,E.t)(r,!1)?i.usageError=r.error:n.errors.push(`turso/${e.r.name} usage: ${r.error}`);return(0,x.a)(e,{...s,patch:i},n.now)}async function B(e){for(let{acc:t,credential:a}of(await (0,x.O)("upstash"))){(0,x.s)(e);let r=a?(0,N.L)(a):null;if(!r){e.errors.push(`upstash/${t.label}: credential can't be read`);continue}let n=await (0,x.e)(t.id,"upstash_redis");if(!n.length)continue;let s=await (0,N.M)(r,(0,x.s)(e));if(!s.ok){await (0,x.w)("upstash",t,n,s,e);continue}let i=new Map(s.data.map(e=>[e.id,e])),{out:o,skipped:l}=await (0,x.T)(e,n,(e,t)=>i.has(e.r.externalId)?(0,N.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,x.a)(a,{state:"off",label:"Not found",patch:{}},e.now));continue}let n=(0,j.t)(r.state),s={region:r.region,status:r.state,type:r.type},l=o[t];l?.ok?Object.assign(s,{...l.data,statsAt:T(e.now),statsError:null}):l&&"column"===(0,E.t)(l,!1)?s.statsError=l.error:l&&e.errors.push(`upstash/${a.r.name} stats: ${l.error}`),u.push(await (0,x.a)(a,{...n,patch:s},e.now))}await (0,x.M)(u),(0,x.W)(l)}}async function _(e){let t={};for(let{acc:a,credential:r}of(await (0,x.O)("cloudflare"))){if((0,x.s)(e),!r)continue;let n=await W(a.id,r,e);if(!n.length){t[a.id]={d1:"error",analytics:null,at:T(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,M.L)(r,t,(0,x.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 F(a.id,t,n.data,e.now);let o=(await (0,x.e)(a.id,"d1_database")).filter(e=>e.r.meta.accountId===t);if(!o.length)continue;let l=await (0,M.t)(r,t,(0,M.Y)(e.now),(0,x.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,x.T)(e,o,(e,a)=>(0,M.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 U(a,r,c.get(a.r.externalId)??null,l.ok,l.ok?null:l.error,p,e))}await (0,x.M)(w),(0,x.W)(d)}t[a.id]={d1:s,analytics:i,at:T(e.now),note:null}}await (0,r.f)().insert(s.settings).values({key:R.f,value:t}).onConflictDoUpdate({target:s.settings.key,set:{value:t,updatedAt:e.now}})}async function U(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:T(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,M.Y)(i.now),usageAt:T(i.now),usageError:null}):o.usageError=n,null!==s.accountSizeBytes&&(o.accountSizeBytes=s.accountSizeBytes),!t.ok&&"transient"===t.kind)return(0,x.a)(e,{state:"unknown",label:"Unknown",patch:{}},i.now);let l=(0,j.c)(r?s:{accountRowsRead:null,accountRowsWritten:null});return(0,x.a)(e,{...l,patch:o},i.now)}async function W(e,a,n){let i=new Set,o=await (0,M.N)(a,(0,x.s)(n));if(o.ok)for(let e of o.data)i.add(e.id);for(let a of(await (0,r.f)().select({meta:s.resources.meta}).from(s.resources).where((0,t.b)((0,t.u)(s.resources.accountId,e),(0,t.u)(s.resources.kind,"zone"),(0,t.M)(s.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 F(e,a,n,i){let o=(await (0,r.f)().select({id:s.resources.id,externalId:s.resources.externalId,meta:s.resources.meta,goneAt:s.resources.goneAt}).from(s.resources).where((0,t.b)((0,t.u)(s.resources.accountId,e),(0,t.u)(s.resources.kind,"d1_database")))).filter(e=>e.meta.accountId===a),l=new Map(o.map(e=>[e.externalId,e])),u=new Set(n.map(e=>e.uuid));await (0,r.f)().transaction(async r=>{for(let o of n){let n={accountId:a,createdAt:o.createdAt},u=l.get(o.uuid);u?await r.update(s.resources).set({name:o.name,meta:n,lastSeenAt:i,goneAt:null,updatedAt:i}).where((0,t.u)(s.resources.id,u.id)):await r.insert(s.resources).values({accountId:e,kind:"d1_database",externalId:o.uuid,name:o.name,meta:n,monitored:!0,lastSeenAt:i}).onConflictDoNothing({target:[s.resources.accountId,s.resources.kind,s.resources.externalId]})}let d=o.filter(e=>!u.has(e.externalId)&&!e.goneAt).map(e=>e.id);d.length&&await r.update(s.resources).set({goneAt:i,updatedAt:i}).where((0,t.y)(s.resources.id,d))})}var V=e.i(442473),L=e.i(666680),J=e.i(473283),Y=e.i(422067);async function q(e=new Date){let t=(0,L.randomUUID)(),n=new Date(e.getTime()+Y.d).toISOString(),s=await (0,r.f)().execute(a.B`
2
+ insert into ops.settings (key, value) values ('collector.lease', ${JSON.stringify({until:n,owner:t})}::jsonb)
3
+ on conflict (key) do update set value = excluded.value, updated_at = now()
4
+ where (ops.settings.value->>'until')::timestamptz < ${e.toISOString()}::timestamptz
5
+ returning key`);return(0,J.f)(s).length>0?t:null}async function G(e){await (0,r.f)().execute(a.B`
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})?$/,H=/^\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 Q(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 ee(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||!H.test(e.eolFrom)))return null;a.push({name:e.name,isEol:e.isEol,eolFrom:e.eolFrom??null})}return a}var et=e.i(583521);let ea="runtime.node";function er(e=process.env){let t=(0,et.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 en(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 es(e={}){let t=e.fetch??fetch,a=e.timeoutMs??8e3,[r,n]=await Promise.all([en("https://nodejs.org/dist/index.json","nodejs.org",t,a),en("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||Q(e,n)>0)&&a.set(e.major,e)}return t.sort((e,t)=>Q(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?ee(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 ei=e=>"string"==typeof e&&Number.isFinite(Date.parse(e))?e:null,eo=e=>"string"==typeof e?e:null;async function el(){var e;let[a]=await (0,r.f)().select({value:s.settings.value}).from(s.settings).where((0,t.u)(s.settings.key,ea)).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:ei(e.indexCheckedAt),indexError:eo(e.indexError),cycles:ee({result:{releases:e.cycles}}),cyclesCheckedAt:ei(e.cyclesCheckedAt),cyclesError:eo(e.cyclesError)}:null:null}async function eu(e,t,a,n=process.env){let i;if(er(n).off)return;let o=t-Date.now();if(o<1e3)throw Error("skipped, time budget used");let l=await es({timeoutMs:Math.min(8e3,o)}),u=await el();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(s.settings).values({key:ea,value:d}).onConflictDoUpdate({target:s.settings.key,set:{value:d,updatedAt:e}})}var ed=e.i(77193);let ec=/^\d{1,4}\.\d{1,4}\.\d{1,6}$/,ef=e=>"string"==typeof e&&ec.test(e);async function ep(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 ef(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 ew(e,t,a,n=process.env,i){let o=function(e=process.env){let t=e.WATCHBELL_VERSION?.trim();return ef(t)?t:null}(n);if(!o||"selfhost"!==(0,ed.c)(n)||er(n).off)return;let l=t-Date.now();if(l<1e3)return;let u=await ep({fetch:i,timeoutMs:Math.min(6e3,l)});if(u.ok){let t={version:u.version,checkedAt:e.toISOString()};await (0,r.f)().insert(s.settings).values({key:"watchbell.latest",value:t}).onConflictDoUpdate({target:s.settings.key,set:{value:t,updatedAt:e}})}else a.push(`update check: ${u.error}`);await (0,r.f)().insert(s.settings).values({key:"watchbell.seenVersion",value:{version:o}}).onConflictDoNothing({target:s.settings.key})}var em=e.i(515743),eh=e.i(336030),eg=e.i(905685),ey=e.i(751762);e.i(794713);let eb="collector.lastRun",ek="vercel.backoffUntil",ev="vercel.currentMiss",eI={supabase:x.N,supabaseUsage:x.y,neon:x.h,firebase:x.g,firebaseUsage:x.x,extraDbs:C};async function eA(){let e=await (0,r.f)().select({key:s.settings.key,value:s.settings.value}).from(s.settings).where((0,t.y)(s.settings.key,[eb,S.Z])).limit(2);return{lastRun:e.find(e=>e.key===eb)?.value??{},afterDeploy:e.find(e=>e.key===S.Z)?.value??null}}async function eS(e){await (0,r.f)().insert(s.settings).values({key:eb,value:e}).onConflictDoUpdate({target:s.settings.key,set:{value:e,updatedAt:new Date}})}let e$=e=>(0,p.f)(e);async function eD(e,n,i,o,l=[]){let u=(await (0,r.f)().select({m:s.monitors,app:s.resources}).from(s.monitors).innerJoin(s.resources,(0,t.u)(s.resources.id,s.monitors.resourceId)).where((0,t.b)((0,t.u)(s.monitors.kind,"http"),(0,t.u)(s.monitors.paused,!1),(0,t.u)(s.monitors.ownerPaused,!1),(0,t.u)(s.resources.monitored,!0),(0,t.M)(s.resources.goneAt))).orderBy(a.B`${s.monitors.lastCheckedAt} asc nulls first`,s.monitors.id)).filter(({m:t})=>(0,Y.B)(t.lastCheckedAt,e,o));if(!u.length)return 0;let d=await (0,V.P)(u,6,({m:e})=>{let t=(0,Y.P)(e.timeoutMs,n,Date.now());return null===t?Promise.resolve(null):(0,V.b)(e.url,{expectedStatus:e.expectedStatus,timeoutMs:t,body:(0,em.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,eh.j)(t.m,t.r,e)&&f.push(t);return f.length?(await (0,r.f)().insert(s.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,A.x)(l,{monitorId:t.id,appId:a.id},e)}))),await e$(f.map(({m:t,app:a,r})=>(0,eg.F)({resourceId:a.id,path:(0,D.K)(t.url),prev:t.state,next:(0,eg.G)(t.failStreak,r).state,code:r.statusCode,error:r.error,at:e}))),f.length):0}let ex=["checks","heartbeats"];async function eE(e,t,a=f.f){if(!ex.some(t=>e.includes(t)))return[];try{return await a()}catch(e){return t.push(`maintenance: ${(0,ey.f)(e)}`),[]}}async function ej(e){let[a]=await (0,r.f)().select().from(s.settings).where((0,t.u)(s.settings.key,ek)).limit(1),n=a?.value?.until;return!!n&&e.getTime()<new Date(n).getTime()}async function eM(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(s.settings).values({key:ek,value:a}).onConflictDoUpdate({target:s.settings.key,set:{value:a,updatedAt:t}}),!0}let eO=e=>a.B`coalesce(${s.deployments.externalId} = ${e}::text, false)`;async function eN(e,n,i,o,l=k.m){let u=[];try{for(let l of e){let e=n.filter(e=>e.resourceId===l.id),{currentId:d,previousId:c}=(0,D.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(s.deployments).set({isCurrent:eO(d),isPreviousProduction:eO(c),updatedAt:o.now}).where((0,t.b)((0,t.u)(s.deployments.resourceId,l.id),(0,t.F)(a.B`${s.deployments.isCurrent} is distinct from ${eO(d)}`,a.B`${s.deployments.isPreviousProduction} is distinct from ${eO(c)}`))).returning({id:s.deployments.externalId}),p=(0,S.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,ey.f)(e)}`)}}}let eR=e=>new Map(e.map(e=>[e.id,{...e.branchFrom?{branchFrom:e.branchFrom}:{},...e.gitDirty?{gitDirty:!0}:{}}]));async function eC(e,t,a,r,n=new Map,s=y.f){try{await s(e,t,n)}catch(e){a.push(`vercel/${r}: production source not saved: ${(0,ey.f)(e)}`)}}async function eT(e,a,n,i){if(await ej(e))return;let l=(0,I.f)().OPS_ENCRYPTION_KEY;for(let u of(await (0,r.f)().select().from(s.accounts).where((0,t.b)((0,t.u)(s.accounts.provider,"vercel"),(0,t.u)(s.accounts.status,"ok"))))){let d=(0,w.V)({ciphertext:u.credentialCiphertext,iv:u.credentialIv},l);if((0,o.A)(d)||!d){n.push(`vercel/${u.label}: credential can't be read`);continue}let c=await (0,r.f)().select().from(s.resources).where((0,t.b)((0,t.u)(s.resources.accountId,u.id),(0,t.u)(s.resources.kind,"app"),(0,t.u)(s.resources.monitored,!0),(0,t.M)(s.resources.goneAt)));if(!c.length)continue;let f=new Map(c.map(e=>[e.externalId,e])),p=await (0,$.X)(d);if(!p.ok){let a=(0,o.E)({ok:!1,kind:p.kind,error:p.error});if(a&&await (0,r.f)().update(s.accounts).set({...a,updatedAt:e}).where((0,t.u)(s.accounts.id,u.id)),n.push(`vercel/${u.label}: ${p.error}`),await eM(p,e))return;continue}let m=new Set(c.map(e=>String(e.meta.teamId)));for(let o of p.data.filter(e=>m.has(e.id))){if(Date.now()>a)return void n.push("vercel: skipped remaining teams, time budget used");let[l,u]=await Promise.all([(0,$.W)(d,o),(0,$.K)(d,o,{since:e.getTime()-6048e5,limit:100})]);if(!l.ok||!u.ok){let t=l.ok?u:l;if(n.push(`vercel/${o.name}: ${t.error}`),await eM(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:s.deployments.externalId,state:s.deployments.state,target:s.deployments.target,branch:s.deployments.branch,commitSha:s.deployments.commitSha,commitMessage:s.deployments.commitMessage,source:s.deployments.source,url:s.deployments.url,buildingAt:s.deployments.buildingAt,readyAt:s.deployments.readyAt}).from(s.deployments).where((0,t.y)(s.deployments.externalId,w.map(e=>e.id))):[]).map(e=>[e.externalId,e])),g=[];for(let t of w){let a=f.get(t.projectId),n=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,D.E)(n,i)){let n={resourceId:a.id,externalId:t.id,...i,createdAtProvider:t.createdAt,updatedAt:e};await (0,r.f)().insert(s.deployments).values(n).onConflictDoUpdate({target:s.deployments.externalId,set:n})}g.push((0,eg.L)(n?.state,t,a.id,e))}await e$(g);let y=c.filter(e=>String(e.meta.teamId)===o.id),b=await (0,r.f)().select({resourceId:s.deployments.resourceId,id:s.deployments.externalId,createdAt:s.deployments.createdAtProvider}).from(s.deployments).where((0,t.b)((0,t.y)(s.deployments.resourceId,y.map(e=>e.id)),(0,t.u)(s.deployments.target,"production"),(0,t.u)(s.deployments.state,"ready"))),[k]=await (0,r.f)().select().from(s.settings).where((0,t.u)(s.settings.key,ev)).limit(1),v=[],I=()=>v.length?(0,r.f)().insert(s.settings).values({key:ev,value:(0,D.Y)(k?.value,v,e)}).onConflictDoUpdate({target:s.settings.key,set:{value:(0,D.Y)(k?.value,v,e),updatedAt:e}}):Promise.resolve();for(let t of(0,D.Q)(y,p,b,(0,D.S)(k?.value,e))){if(Date.now()>a)break;let i=await (0,$.S)(d,o,t.deploymentId);if(!i.ok){if(n.push(`vercel/${o.name}: current deployment: ${i.error}`),await eM(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(s.deployments).values(u).onConflictDoUpdate({target:s.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 eN(y,b,p,{now:e,afterDeploy:i,errors:n,label:o.name}),await eC(y,e,n,o.name,m)}}}async function eP(e){let n=await (0,r.f)().select().from(s.resources).where((0,t.b)((0,t.u)(s.resources.kind,"app"),(0,t.u)(s.resources.monitored,!0),(0,t.M)(s.resources.goneAt)));if(!n.length)return;let o=await (0,r.f)().select().from(s.monitors).where((0,t.b)((0,t.y)(s.monitors.resourceId,n.map(e=>e.id)),(0,t.u)(s.monitors.paused,!1),(0,t.u)(s.monitors.ownerPaused,!1))),l=new Set((await (0,r.f)().select({r:s.deployments.resourceId}).from(s.deployments).where((0,t.b)((0,t.y)(s.deployments.resourceId,n.map(e=>e.id)),(0,t.u)(s.deployments.target,"production"),(0,t.u)(s.deployments.state,"building"),(0,t.B)(s.deployments.createdAtProvider,new Date(e.getTime()-36e5))))).map(e=>e.r)),u=await (0,x.q)(n.map(e=>e.id)),d=new Map((await (0,r.f)().select().from(s.snapshots).where((0,t.y)(s.snapshots.resourceId,n.map(e=>e.id)))).map(e=>[e.resourceId,e])),c=new Map(n.map(e=>[e.id,e])),f=(0,i.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})),n),p=e=>f.has(e.id)&&"err"===e.state?"warn":e.state;for(let[e,l]of(0,i.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})),n))await (0,r.f)().update(s.resources).set({meta:a.B`${s.resources.meta} || ${JSON.stringify({pastDomains:l})}::jsonb`}).where((0,t.u)(s.resources.id,e));for(let t of n){let n=o.filter(e=>e.resourceId===t.id),i=(0,eg.V)({monitors:n.map(p),building:l.has(t.id),dbPaused:u.has(t.id)}),c=n.find(e=>"err"===e.state)??n.find(e=>"warn"===e.state),f={code:c?.lastStatus??null,latencyMs:n.find(e=>"heartbeat"!==e.kind)?.lastLatencyMs??null,dbPaused:u.has(t.id)},w=d.get(t.id);await (0,r.f)().insert(s.snapshots).values({resourceId:t.id,state:i,data:f,collectedAt:e,stateSince:e}).onConflictDoUpdate({target:s.snapshots.resourceId,set:{state:i,data:a.B`${s.snapshots.data} || ${JSON.stringify(f)}::jsonb`,collectedAt:e,...w?.state!==i?{stateSince:e}:{}}})}}async function ez(e,t={}){let a={writeLastRun:eS,refreshApps:eP,refreshNetwork:K.x,invalidate:l.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,ey.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,ey.f)(t)}`)}}finally{a.invalidate((0,u.o)(e.tried??e.done))}}async function eB(e,t,a,r={evaluate:d.$,deliver:h.q,digest:h.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,ey.f)(t)}`)}try{await r.deliver(new Date,t),console.info("collector notifications delivered")}catch(t){e=!1,a.push(`notify: ${(0,ey.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,ey.f)(e)}`)}return n}async function e_(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,ey.f)(e)}`)}}}return{done:n,tried:s}}async function eU(e){let a,i=new Date,o=await q(i);if(!o)return{skipped:!0,ok:!0,tasks:[],checks:0,durationMs:0,errors:[]};try{[a]=await (0,r.f)().insert(s.collectorRuns).values({startedAt:i,trigger:"builtin"===e?"manual":e}).returning({id:s.collectorRuns.id})}catch(e){throw await G(o).catch(()=>void 0),e}let l=[],u=[],d=0,f=i.getTime()+Y.p,p=process.cpuUsage(),w=()=>{let e=process.cpuUsage(p);return Math.round((e.user+e.system)/1e3)},h=e=>console.info(`collector ${e} +${Date.now()-i.getTime()}ms cpu ${w()}ms`);try{h("start");let{lastRun:t,afterDeploy:a}=await eA(),r="cron_job_org"!==e&&"builtin"!==e,n=await (0,g.I)(),{due:s,early:o}=(0,Y._)((0,Y.S)(t,i,r,n),(0,k.Y)(a),n),p=!1,w=e=>o||!p?e.filter(e=>"security"!==e):e,y=s.filter(e=>Y.u.includes(e)),I=y.includes("alerts")?f-Y.X:f,$=await eE(s,l);h(`due ${s.join(",")}`);let{done:D,tried:x}=await e_(s.filter(e=>!Y.u.includes(e)),I,l,async e=>{if(h(`task ${e}`),"heartbeats"===e){let e=new Date;d+=await (0,c.r)(e,(t,a)=>null!==(0,A.x)($,{monitorId:t,appId:a},e),r)}"checks"===e&&(d+=await eD(new Date,I,l,r,$)),"vercel"===e&&await eT(new Date,I,l,(0,S.Y)(a));let t=eI[e];t&&await t({now:new Date,deadline:I,errors:l,protectOnly:(0,Y.$)(e,n)}),"cloudflare"===e&&await (0,K.h)(new Date,I,l),"domains"===e&&await (0,K.H)(new Date,I,l),"tls"===e&&await (0,K.V)(new Date,I,l),"rdap"===e&&await (0,K.W)(new Date,I,l),"eol"===e&&await (0,K.i)(new Date,I,l),"node"===e&&(await eu(new Date,I,l),await ew(new Date,I,l)),"status"===e&&await (0,v.i)(new Date),"logs"===e&&await (0,m._)(new Date,I,l),"pageviews"===e&&await (0,b.f)(new Date,I,l),"security"===e&&(p=(await (0,k.U)({now:i,deadline:I,errors:l,paused:n,early:o})).complete)});u.push(...D),h("main done"),await ez({lastRun:t,done:w(u),tried:x,started:i,errors:l}),h("settled");let E=await eB(y,f,l);h("post done"),E.length&&await eS({...t,...Object.fromEntries(w([...u,...E]).map(e=>[e,i.toISOString()]))}),u.push(...E)}catch(e){l.push(`run: ${(0,ey.f)(e)}`)}finally{let e=Date.now()-i.getTime();await (0,r.f)().update(s.collectorRuns).set({finishedAt:new Date,ok:0===l.length,errorSummary:l.join("\n").slice(0,2e3)||null,durationMs:e,tasks:u,checks:d}).where((0,t.u)(s.collectorRuns.id,a.id)).catch(()=>void 0),await G(o).catch(()=>void 0),process.env.VERCEL&&await (0,n.f)(w())}return{skipped:!1,ok:0===l.length,tasks:u,checks:d,durationMs:Date.now()-i.getTime(),errors:l}}e.s(["f",0,eU],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())}),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(),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=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(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 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 N(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 R=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 T(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 P(e,t){let a=Object.entries(e.pending).filter(([,e])=>t.getTime()-Date.parse(e.at)>216e5).map(([e])=>e);return a.length?T(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 T({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,P,"A",0,R,"B",0,C,"p",0,z,"Y",0,N,"E",0,B],873354);var _=e.i(970465);let U="security.slot",W=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(U),writeSlot:L(U),nextCheck:x.h,depsStep:(e,t)=>(0,D.O)(e,t)};async function Y(e,t=J){let a=N(await t.read()),r=P(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:W(a.next),repos:W(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=J){if(!e.length)return!1;let{state:r,changed:n}=C(N(await a.read()),e,t);return n&&await a.write(r),n}e.s(["m",0,q,"Y",0,e=>R(N(e)),"U",0,Y],655060)}]})();
8
+
9
+ //# sourceMappingURL=src_lib_13irheo9qqhgx._.js.map