watchbell 1.6.1 → 1.7.1

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 (981) hide show
  1. package/package.json +1 -1
  2. package/server/.next/BUILD_ID +1 -1
  3. package/server/.next/app-path-routes-manifest.json +3 -0
  4. package/server/.next/build-manifest.json +14 -3
  5. package/server/.next/prerender-manifest.json +3 -3
  6. package/server/.next/required-server-files.json +1 -1
  7. package/server/.next/routes-manifest.json +20 -0
  8. package/server/.next/server/app/(console)/(private)/ai/agents/page/server-reference-manifest.json +13 -13
  9. package/server/.next/server/app/(console)/(private)/ai/agents/page.js +71 -69
  10. package/server/.next/server/app/(console)/(private)/ai/agents/page.js.nft.json +1 -1
  11. package/server/.next/server/app/(console)/(private)/ai/agents/page_client-reference-manifest.js +1 -1
  12. package/server/.next/server/app/(console)/(private)/ai/ask/page/server-reference-manifest.json +12 -12
  13. package/server/.next/server/app/(console)/(private)/ai/ask/page.js +71 -69
  14. package/server/.next/server/app/(console)/(private)/ai/ask/page.js.nft.json +1 -1
  15. package/server/.next/server/app/(console)/(private)/ai/ask/page_client-reference-manifest.js +1 -1
  16. package/server/.next/server/app/(console)/(private)/ai/connect/page/server-reference-manifest.json +11 -11
  17. package/server/.next/server/app/(console)/(private)/ai/connect/page.js +71 -69
  18. package/server/.next/server/app/(console)/(private)/ai/connect/page.js.nft.json +1 -1
  19. package/server/.next/server/app/(console)/(private)/ai/connect/page_client-reference-manifest.js +1 -1
  20. package/server/.next/server/app/(console)/(private)/ai/keys/page/server-reference-manifest.json +14 -14
  21. package/server/.next/server/app/(console)/(private)/ai/keys/page.js +71 -69
  22. package/server/.next/server/app/(console)/(private)/ai/keys/page.js.nft.json +1 -1
  23. package/server/.next/server/app/(console)/(private)/ai/keys/page_client-reference-manifest.js +1 -1
  24. package/server/.next/server/app/(console)/(private)/ai/logs/page/server-reference-manifest.json +12 -12
  25. package/server/.next/server/app/(console)/(private)/ai/logs/page.js +71 -69
  26. package/server/.next/server/app/(console)/(private)/ai/logs/page.js.nft.json +1 -1
  27. package/server/.next/server/app/(console)/(private)/ai/logs/page_client-reference-manifest.js +1 -1
  28. package/server/.next/server/app/(console)/(private)/ai/models/page/server-reference-manifest.json +21 -21
  29. package/server/.next/server/app/(console)/(private)/ai/models/page.js +71 -69
  30. package/server/.next/server/app/(console)/(private)/ai/models/page.js.nft.json +1 -1
  31. package/server/.next/server/app/(console)/(private)/ai/models/page_client-reference-manifest.js +1 -1
  32. package/server/.next/server/app/(console)/(private)/ai/page/server-reference-manifest.json +11 -11
  33. package/server/.next/server/app/(console)/(private)/ai/page.js +71 -69
  34. package/server/.next/server/app/(console)/(private)/ai/page.js.nft.json +1 -1
  35. package/server/.next/server/app/(console)/(private)/ai/page_client-reference-manifest.js +1 -1
  36. package/server/.next/server/app/(console)/(private)/ai/playground/page/server-reference-manifest.json +14 -14
  37. package/server/.next/server/app/(console)/(private)/ai/playground/page.js +71 -69
  38. package/server/.next/server/app/(console)/(private)/ai/playground/page.js.nft.json +1 -1
  39. package/server/.next/server/app/(console)/(private)/ai/playground/page_client-reference-manifest.js +1 -1
  40. package/server/.next/server/app/(console)/(private)/ai/providers/page/server-reference-manifest.json +17 -17
  41. package/server/.next/server/app/(console)/(private)/ai/providers/page.js +71 -69
  42. package/server/.next/server/app/(console)/(private)/ai/providers/page.js.nft.json +1 -1
  43. package/server/.next/server/app/(console)/(private)/ai/providers/page_client-reference-manifest.js +1 -1
  44. package/server/.next/server/app/(console)/(private)/ai/quota/page/server-reference-manifest.json +12 -12
  45. package/server/.next/server/app/(console)/(private)/ai/quota/page.js +71 -69
  46. package/server/.next/server/app/(console)/(private)/ai/quota/page.js.nft.json +1 -1
  47. package/server/.next/server/app/(console)/(private)/ai/quota/page_client-reference-manifest.js +1 -1
  48. package/server/.next/server/app/(console)/(private)/ai/usage/page/server-reference-manifest.json +12 -12
  49. package/server/.next/server/app/(console)/(private)/ai/usage/page.js +71 -69
  50. package/server/.next/server/app/(console)/(private)/ai/usage/page.js.nft.json +1 -1
  51. package/server/.next/server/app/(console)/(private)/ai/usage/page_client-reference-manifest.js +1 -1
  52. package/server/.next/server/app/(console)/(private)/api-docs/[[...op]]/page/server-reference-manifest.json +11 -11
  53. package/server/.next/server/app/(console)/(private)/api-docs/[[...op]]/page.js +71 -69
  54. package/server/.next/server/app/(console)/(private)/api-docs/[[...op]]/page.js.nft.json +1 -1
  55. package/server/.next/server/app/(console)/(private)/api-docs/[[...op]]/page_client-reference-manifest.js +1 -1
  56. package/server/.next/server/app/(console)/(private)/auto-actions/page/server-reference-manifest.json +12 -12
  57. package/server/.next/server/app/(console)/(private)/auto-actions/page.js +71 -69
  58. package/server/.next/server/app/(console)/(private)/auto-actions/page.js.nft.json +1 -1
  59. package/server/.next/server/app/(console)/(private)/auto-actions/page_client-reference-manifest.js +1 -1
  60. package/server/.next/server/app/(console)/alerts/page/server-reference-manifest.json +27 -27
  61. package/server/.next/server/app/(console)/alerts/page.js +71 -69
  62. package/server/.next/server/app/(console)/alerts/page.js.nft.json +1 -1
  63. package/server/.next/server/app/(console)/alerts/page_client-reference-manifest.js +1 -1
  64. package/server/.next/server/app/(console)/apps/[id]/page/server-reference-manifest.json +34 -34
  65. package/server/.next/server/app/(console)/apps/[id]/page.js +71 -69
  66. package/server/.next/server/app/(console)/apps/[id]/page.js.nft.json +1 -1
  67. package/server/.next/server/app/(console)/apps/[id]/page_client-reference-manifest.js +1 -1
  68. package/server/.next/server/app/(console)/apps/page/server-reference-manifest.json +14 -14
  69. package/server/.next/server/app/(console)/apps/page.js +71 -69
  70. package/server/.next/server/app/(console)/apps/page.js.nft.json +1 -1
  71. package/server/.next/server/app/(console)/apps/page_client-reference-manifest.js +1 -1
  72. package/server/.next/server/app/(console)/backups/page/server-reference-manifest.json +14 -14
  73. package/server/.next/server/app/(console)/backups/page.js +71 -69
  74. package/server/.next/server/app/(console)/backups/page.js.nft.json +1 -1
  75. package/server/.next/server/app/(console)/backups/page_client-reference-manifest.js +1 -1
  76. package/server/.next/server/app/(console)/catalog/page/server-reference-manifest.json +11 -11
  77. package/server/.next/server/app/(console)/catalog/page.js +71 -69
  78. package/server/.next/server/app/(console)/catalog/page.js.nft.json +1 -1
  79. package/server/.next/server/app/(console)/catalog/page_client-reference-manifest.js +1 -1
  80. package/server/.next/server/app/(console)/connections/page/server-reference-manifest.json +22 -22
  81. package/server/.next/server/app/(console)/connections/page.js +71 -69
  82. package/server/.next/server/app/(console)/connections/page.js.nft.json +1 -1
  83. package/server/.next/server/app/(console)/connections/page_client-reference-manifest.js +1 -1
  84. package/server/.next/server/app/(console)/containers/page/server-reference-manifest.json +14 -14
  85. package/server/.next/server/app/(console)/containers/page.js +71 -69
  86. package/server/.next/server/app/(console)/containers/page.js.nft.json +1 -1
  87. package/server/.next/server/app/(console)/containers/page_client-reference-manifest.js +1 -1
  88. package/server/.next/server/app/(console)/d1/page/server-reference-manifest.json +11 -11
  89. package/server/.next/server/app/(console)/d1/page.js +71 -69
  90. package/server/.next/server/app/(console)/d1/page.js.nft.json +1 -1
  91. package/server/.next/server/app/(console)/d1/page_client-reference-manifest.js +1 -1
  92. package/server/.next/server/app/(console)/deploy/page/server-reference-manifest.json +11 -11
  93. package/server/.next/server/app/(console)/deploy/page.js +71 -69
  94. package/server/.next/server/app/(console)/deploy/page.js.nft.json +1 -1
  95. package/server/.next/server/app/(console)/deploy/page_client-reference-manifest.js +1 -1
  96. package/server/.next/server/app/(console)/deployments/page/server-reference-manifest.json +19 -19
  97. package/server/.next/server/app/(console)/deployments/page.js +71 -69
  98. package/server/.next/server/app/(console)/deployments/page.js.nft.json +1 -1
  99. package/server/.next/server/app/(console)/deployments/page_client-reference-manifest.js +1 -1
  100. package/server/.next/server/app/(console)/dns/page/server-reference-manifest.json +18 -18
  101. package/server/.next/server/app/(console)/dns/page.js +71 -69
  102. package/server/.next/server/app/(console)/dns/page.js.nft.json +1 -1
  103. package/server/.next/server/app/(console)/dns/page_client-reference-manifest.js +1 -1
  104. package/server/.next/server/app/(console)/domains/page/server-reference-manifest.json +13 -13
  105. package/server/.next/server/app/(console)/domains/page.js +71 -69
  106. package/server/.next/server/app/(console)/domains/page.js.nft.json +1 -1
  107. package/server/.next/server/app/(console)/domains/page_client-reference-manifest.js +1 -1
  108. package/server/.next/server/app/(console)/events/page/server-reference-manifest.json +11 -11
  109. package/server/.next/server/app/(console)/events/page.js +71 -69
  110. package/server/.next/server/app/(console)/events/page.js.nft.json +1 -1
  111. package/server/.next/server/app/(console)/events/page_client-reference-manifest.js +1 -1
  112. package/server/.next/server/app/(console)/firebase/page/server-reference-manifest.json +18 -18
  113. package/server/.next/server/app/(console)/firebase/page.js +71 -69
  114. package/server/.next/server/app/(console)/firebase/page.js.nft.json +1 -1
  115. package/server/.next/server/app/(console)/firebase/page_client-reference-manifest.js +1 -1
  116. package/server/.next/server/app/(console)/logs/page/server-reference-manifest.json +12 -12
  117. package/server/.next/server/app/(console)/logs/page.js +71 -69
  118. package/server/.next/server/app/(console)/logs/page.js.nft.json +1 -1
  119. package/server/.next/server/app/(console)/logs/page_client-reference-manifest.js +1 -1
  120. package/server/.next/server/app/(console)/manage/sections/page/server-reference-manifest.json +12 -12
  121. package/server/.next/server/app/(console)/manage/sections/page.js +71 -69
  122. package/server/.next/server/app/(console)/manage/sections/page.js.nft.json +1 -1
  123. package/server/.next/server/app/(console)/manage/sections/page_client-reference-manifest.js +1 -1
  124. package/server/.next/server/app/(console)/neon/page/server-reference-manifest.json +22 -22
  125. package/server/.next/server/app/(console)/neon/page.js +71 -69
  126. package/server/.next/server/app/(console)/neon/page.js.nft.json +1 -1
  127. package/server/.next/server/app/(console)/neon/page_client-reference-manifest.js +1 -1
  128. package/server/.next/server/app/(console)/os/page/server-reference-manifest.json +12 -12
  129. package/server/.next/server/app/(console)/os/page.js +71 -69
  130. package/server/.next/server/app/(console)/os/page.js.nft.json +1 -1
  131. package/server/.next/server/app/(console)/os/page_client-reference-manifest.js +1 -1
  132. package/server/.next/server/app/(console)/overview/page/server-reference-manifest.json +21 -21
  133. package/server/.next/server/app/(console)/overview/page.js +71 -69
  134. package/server/.next/server/app/(console)/overview/page.js.nft.json +1 -1
  135. package/server/.next/server/app/(console)/overview/page_client-reference-manifest.js +1 -1
  136. package/server/.next/server/app/(console)/reports/[id]/pdf/route/app-paths-manifest.json +3 -0
  137. package/server/.next/server/app/(console)/reports/[id]/pdf/route/build-manifest.json +12 -0
  138. package/server/.next/server/app/(console)/reports/[id]/pdf/route/server-reference-manifest.json +4 -0
  139. package/server/.next/server/app/(console)/reports/[id]/pdf/route.js +26 -0
  140. package/server/.next/server/app/(console)/reports/[id]/pdf/route.js.nft.json +1 -0
  141. package/server/.next/server/app/(console)/reports/[id]/pdf/route_client-reference-manifest.js +3 -0
  142. package/server/.next/server/app/(console)/reports/page/app-paths-manifest.json +3 -0
  143. package/server/.next/server/app/(console)/reports/page/build-manifest.json +22 -0
  144. package/server/.next/server/app/(console)/reports/page/next-font-manifest.json +11 -0
  145. package/server/.next/server/app/(console)/reports/page/react-loadable-manifest.json +1 -0
  146. package/server/.next/server/app/(console)/reports/page/server-reference-manifest.json +175 -0
  147. package/server/.next/server/app/(console)/reports/page.js +122 -0
  148. package/server/.next/server/app/(console)/reports/page.js.nft.json +1 -0
  149. package/server/.next/server/app/(console)/reports/page_client-reference-manifest.js +3 -0
  150. package/server/.next/server/app/(console)/repos/[id]/page/server-reference-manifest.json +12 -12
  151. package/server/.next/server/app/(console)/repos/[id]/page.js +71 -69
  152. package/server/.next/server/app/(console)/repos/[id]/page.js.nft.json +1 -1
  153. package/server/.next/server/app/(console)/repos/[id]/page_client-reference-manifest.js +1 -1
  154. package/server/.next/server/app/(console)/repos/page/server-reference-manifest.json +11 -11
  155. package/server/.next/server/app/(console)/repos/page.js +71 -69
  156. package/server/.next/server/app/(console)/repos/page.js.nft.json +1 -1
  157. package/server/.next/server/app/(console)/repos/page_client-reference-manifest.js +1 -1
  158. package/server/.next/server/app/(console)/settings/page/server-reference-manifest.json +62 -42
  159. package/server/.next/server/app/(console)/settings/page.js +74 -72
  160. package/server/.next/server/app/(console)/settings/page.js.nft.json +1 -1
  161. package/server/.next/server/app/(console)/settings/page_client-reference-manifest.js +1 -1
  162. package/server/.next/server/app/(console)/sql/page/server-reference-manifest.json +18 -18
  163. package/server/.next/server/app/(console)/sql/page.js +71 -69
  164. package/server/.next/server/app/(console)/sql/page.js.nft.json +1 -1
  165. package/server/.next/server/app/(console)/sql/page_client-reference-manifest.js +1 -1
  166. package/server/.next/server/app/(console)/status/page/server-reference-manifest.json +11 -11
  167. package/server/.next/server/app/(console)/status/page.js +71 -69
  168. package/server/.next/server/app/(console)/status/page.js.nft.json +1 -1
  169. package/server/.next/server/app/(console)/status/page_client-reference-manifest.js +1 -1
  170. package/server/.next/server/app/(console)/supabase/page/server-reference-manifest.json +32 -32
  171. package/server/.next/server/app/(console)/supabase/page.js +71 -69
  172. package/server/.next/server/app/(console)/supabase/page.js.nft.json +1 -1
  173. package/server/.next/server/app/(console)/supabase/page_client-reference-manifest.js +1 -1
  174. package/server/.next/server/app/(console)/topology/page/server-reference-manifest.json +11 -11
  175. package/server/.next/server/app/(console)/topology/page.js +71 -69
  176. package/server/.next/server/app/(console)/topology/page.js.nft.json +1 -1
  177. package/server/.next/server/app/(console)/topology/page_client-reference-manifest.js +1 -1
  178. package/server/.next/server/app/(console)/turso/page/server-reference-manifest.json +11 -11
  179. package/server/.next/server/app/(console)/turso/page.js +71 -69
  180. package/server/.next/server/app/(console)/turso/page.js.nft.json +1 -1
  181. package/server/.next/server/app/(console)/turso/page_client-reference-manifest.js +1 -1
  182. package/server/.next/server/app/(console)/upstash/page/server-reference-manifest.json +11 -11
  183. package/server/.next/server/app/(console)/upstash/page.js +71 -69
  184. package/server/.next/server/app/(console)/upstash/page.js.nft.json +1 -1
  185. package/server/.next/server/app/(console)/upstash/page_client-reference-manifest.js +1 -1
  186. package/server/.next/server/app/(console)/uptime/page/server-reference-manifest.json +25 -25
  187. package/server/.next/server/app/(console)/uptime/page.js +71 -69
  188. package/server/.next/server/app/(console)/uptime/page.js.nft.json +1 -1
  189. package/server/.next/server/app/(console)/uptime/page_client-reference-manifest.js +1 -1
  190. package/server/.next/server/app/(console)/welcome/page/server-reference-manifest.json +16 -16
  191. package/server/.next/server/app/(console)/welcome/page.js +71 -69
  192. package/server/.next/server/app/(console)/welcome/page.js.nft.json +1 -1
  193. package/server/.next/server/app/(console)/welcome/page_client-reference-manifest.js +1 -1
  194. package/server/.next/server/app/_global-error/page/server-reference-manifest.json +1 -1
  195. package/server/.next/server/app/_global-error/page.js +1 -1
  196. package/server/.next/server/app/_global-error/page.js.nft.json +1 -1
  197. package/server/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  198. package/server/.next/server/app/_global-error.html +1 -1
  199. package/server/.next/server/app/_global-error.rsc +3 -3
  200. package/server/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +2 -2
  201. package/server/.next/server/app/_global-error.segments/_full.segment.rsc +3 -3
  202. package/server/.next/server/app/_global-error.segments/_tree.segment.rsc +2 -2
  203. package/server/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  204. package/server/.next/server/app/_not-found/page.js.nft.json +1 -1
  205. package/server/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  206. package/server/.next/server/app/_not-found.html +1 -1
  207. package/server/.next/server/app/_not-found.rsc +4 -4
  208. package/server/.next/server/app/_not-found.segments/_full.segment.rsc +4 -4
  209. package/server/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +3 -3
  210. package/server/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  211. package/server/.next/server/app/account/password/page/server-reference-manifest.json +2 -2
  212. package/server/.next/server/app/account/password/page.js.nft.json +1 -1
  213. package/server/.next/server/app/account/password/page_client-reference-manifest.js +1 -1
  214. package/server/.next/server/app/api/collect/route/server-reference-manifest.json +8 -8
  215. package/server/.next/server/app/api/collect/route.js +91 -85
  216. package/server/.next/server/app/api/collect/route.js.nft.json +1 -1
  217. package/server/.next/server/app/api/daily/route/server-reference-manifest.json +8 -8
  218. package/server/.next/server/app/api/daily/route.js +92 -86
  219. package/server/.next/server/app/api/daily/route.js.nft.json +1 -1
  220. package/server/.next/server/app/api/health/route.js.nft.json +1 -1
  221. package/server/.next/server/app/api/ping/[...parts]/route.js +8 -7
  222. package/server/.next/server/app/api/ping/[...parts]/route.js.nft.json +1 -1
  223. package/server/.next/server/app/api/status/route.js +1 -1
  224. package/server/.next/server/app/api/status/route.js.nft.json +1 -1
  225. package/server/.next/server/app/api/telegram/webhook/route/server-reference-manifest.json +8 -8
  226. package/server/.next/server/app/api/telegram/webhook/route.js +84 -78
  227. package/server/.next/server/app/api/telegram/webhook/route.js.nft.json +1 -1
  228. package/server/.next/server/app/api/v1/[[...rest]]/route.js.nft.json +1 -1
  229. package/server/.next/server/app/api/v1/advice/route.js +26 -22
  230. package/server/.next/server/app/api/v1/advice/route.js.nft.json +1 -1
  231. package/server/.next/server/app/api/v1/ai/chat/completions/route.js +1 -1
  232. package/server/.next/server/app/api/v1/ai/chat/completions/route.js.nft.json +1 -1
  233. package/server/.next/server/app/api/v1/ai/models/route.js +1 -1
  234. package/server/.next/server/app/api/v1/ai/models/route.js.nft.json +1 -1
  235. package/server/.next/server/app/api/v1/ai/questions/[id]/route.js +1 -1
  236. package/server/.next/server/app/api/v1/ai/questions/[id]/route.js.nft.json +1 -1
  237. package/server/.next/server/app/api/v1/ai/questions/route.js +30 -26
  238. package/server/.next/server/app/api/v1/ai/questions/route.js.nft.json +1 -1
  239. package/server/.next/server/app/api/v1/mcp/route.js +28 -24
  240. package/server/.next/server/app/api/v1/mcp/route.js.nft.json +1 -1
  241. package/server/.next/server/app/api/v1/me/route.js +1 -1
  242. package/server/.next/server/app/api/v1/me/route.js.nft.json +1 -1
  243. package/server/.next/server/app/api/v1/openapi.json/route.js +1 -1
  244. package/server/.next/server/app/api/v1/openapi.json/route.js.nft.json +1 -1
  245. package/server/.next/server/app/api/v1/status/apps/[app]/route.js +29 -25
  246. package/server/.next/server/app/api/v1/status/apps/[app]/route.js.nft.json +1 -1
  247. package/server/.next/server/app/api/v1/status/route.js +29 -25
  248. package/server/.next/server/app/api/v1/status/route.js.nft.json +1 -1
  249. package/server/.next/server/app/api/watchdog/route.js +27 -21
  250. package/server/.next/server/app/api/watchdog/route.js.nft.json +1 -1
  251. package/server/.next/server/app/auth/confirm/route.js +1 -1
  252. package/server/.next/server/app/auth/confirm/route.js.nft.json +1 -1
  253. package/server/.next/server/app/auth/google/callback/route.js +16 -15
  254. package/server/.next/server/app/auth/google/callback/route.js.nft.json +1 -1
  255. package/server/.next/server/app/auth/google/create/callback/route.js +1 -1
  256. package/server/.next/server/app/auth/google/create/callback/route.js.nft.json +1 -1
  257. package/server/.next/server/app/auth/not-member/route.js +1 -1
  258. package/server/.next/server/app/auth/not-member/route.js.nft.json +1 -1
  259. package/server/.next/server/app/auth/session-ended/route.js +1 -1
  260. package/server/.next/server/app/auth/session-ended/route.js.nft.json +1 -1
  261. package/server/.next/server/app/brand-icon/route/app-paths-manifest.json +3 -0
  262. package/server/.next/server/app/brand-icon/route/build-manifest.json +12 -0
  263. package/server/.next/server/app/brand-icon/route/server-reference-manifest.json +4 -0
  264. package/server/.next/server/app/brand-icon/route.js +15 -0
  265. package/server/.next/server/app/brand-icon/route.js.nft.json +1 -0
  266. package/server/.next/server/app/brand-icon/route_client-reference-manifest.js +3 -0
  267. package/server/.next/server/app/icon.svg/route.js.nft.json +1 -1
  268. package/server/.next/server/app/invite/page/server-reference-manifest.json +2 -2
  269. package/server/.next/server/app/invite/page.js.nft.json +1 -1
  270. package/server/.next/server/app/invite/page_client-reference-manifest.js +1 -1
  271. package/server/.next/server/app/mfa/page/server-reference-manifest.json +2 -2
  272. package/server/.next/server/app/mfa/page.js +34 -31
  273. package/server/.next/server/app/mfa/page.js.nft.json +1 -1
  274. package/server/.next/server/app/mfa/page_client-reference-manifest.js +1 -1
  275. package/server/.next/server/app/mfa/setup/page/server-reference-manifest.json +3 -3
  276. package/server/.next/server/app/mfa/setup/page.js +34 -31
  277. package/server/.next/server/app/mfa/setup/page.js.nft.json +1 -1
  278. package/server/.next/server/app/mfa/setup/page_client-reference-manifest.js +1 -1
  279. package/server/.next/server/app/page/server-reference-manifest.json +1 -1
  280. package/server/.next/server/app/page.js.nft.json +1 -1
  281. package/server/.next/server/app/page_client-reference-manifest.js +1 -1
  282. package/server/.next/server/app/s/[slug]/badge/[file]/route.js +10 -8
  283. package/server/.next/server/app/s/[slug]/badge/[file]/route.js.nft.json +1 -1
  284. package/server/.next/server/app/s/[slug]/page/server-reference-manifest.json +1 -1
  285. package/server/.next/server/app/s/[slug]/page.js +10 -10
  286. package/server/.next/server/app/s/[slug]/page.js.nft.json +1 -1
  287. package/server/.next/server/app/s/[slug]/page_client-reference-manifest.js +1 -1
  288. package/server/.next/server/app/setup/page/server-reference-manifest.json +2 -2
  289. package/server/.next/server/app/setup/page.js +1 -1
  290. package/server/.next/server/app/setup/page.js.nft.json +1 -1
  291. package/server/.next/server/app/setup/page_client-reference-manifest.js +1 -1
  292. package/server/.next/server/app/signin/page/server-reference-manifest.json +3 -3
  293. package/server/.next/server/app/signin/page.js +40 -37
  294. package/server/.next/server/app/signin/page.js.nft.json +1 -1
  295. package/server/.next/server/app/signin/page_client-reference-manifest.js +1 -1
  296. package/server/.next/server/app-paths-manifest.json +3 -0
  297. package/server/.next/server/chunks/{[externals]__0n4j2emxdv20_._.js → [externals]__0ws552tlu2170._.js} +1 -1
  298. package/server/.next/server/chunks/{[externals]__1hwo1oo04do39._.js → [externals]__14rgrk9t-kxa1._.js} +1 -1
  299. package/server/.next/server/chunks/{[externals]__1k12utcf9tvqg._.js → [externals]__1pdwh-htbnox8._.js} +1 -1
  300. package/server/.next/server/chunks/[root-of-the-server]__0-amtx67pqi56._.js +3 -0
  301. package/server/.next/server/chunks/{[root-of-the-server]__1avuwg9wmyh48._.js → [root-of-the-server]__0-ytbad9hn7uc._.js} +1 -1
  302. package/server/.next/server/chunks/[root-of-the-server]__01dj-ln12bcmb._.js +1 -1
  303. package/server/.next/server/chunks/[root-of-the-server]__01nlh4ps9u-65._.js +3 -0
  304. package/server/.next/server/chunks/{[root-of-the-server]__09l9icaspfmoh._.js → [root-of-the-server]__01ur0kf75ampv._.js} +2 -2
  305. package/server/.next/server/chunks/{[root-of-the-server]__1tlivd99uri0t._.js → [root-of-the-server]__028m_6oqyqmyy._.js} +2 -2
  306. package/server/.next/server/chunks/[root-of-the-server]__02v25dn1cwxz6._.js +1 -1
  307. package/server/.next/server/chunks/{[root-of-the-server]__0vclan952l_ty._.js → [root-of-the-server]__02wzui3ksepqf._.js} +2 -2
  308. package/server/.next/server/chunks/[root-of-the-server]__0326wv5xmnp48._.js +3 -0
  309. package/server/.next/server/chunks/[root-of-the-server]__03276vwi4jgvk._.js +1 -1
  310. package/server/.next/server/chunks/{[root-of-the-server]__06kp2_zqpttyd._.js → [root-of-the-server]__03537tx7cun49._.js} +2 -2
  311. package/server/.next/server/chunks/{[root-of-the-server]__03589rgm1a3ks._.js → [root-of-the-server]__0400g-0wvq3uf._.js} +2 -2
  312. package/server/.next/server/chunks/{[root-of-the-server]__0at6fxe9efr-x._.js → [root-of-the-server]__04htuwoulmp21._.js} +1 -1
  313. package/server/.next/server/chunks/{[root-of-the-server]__06l038ifglbqy._.js → [root-of-the-server]__04ogdmf82__0g._.js} +1 -1
  314. package/server/.next/server/chunks/[root-of-the-server]__05qcc-0e8z1u8._.js +1 -1
  315. package/server/.next/server/chunks/{[root-of-the-server]__1xdi98xyay6bn._.js → [root-of-the-server]__05vm5cxqq2-pg._.js} +1 -1
  316. package/server/.next/server/chunks/{[root-of-the-server]__0a7moaa91ctod._.js → [root-of-the-server]__06bn4cfh-g8-d._.js} +2 -2
  317. package/server/.next/server/chunks/{[root-of-the-server]__0uz_r72zdnwdd._.js → [root-of-the-server]__06rlokvpk450w._.js} +2 -2
  318. package/server/.next/server/chunks/{[root-of-the-server]__0x5vp_8n6xvpw._.js → [root-of-the-server]__06ty1ktg427pm._.js} +2 -2
  319. package/server/.next/server/chunks/{[root-of-the-server]__20qirklw1sgj0._.js → [root-of-the-server]__076yrld-lo25r._.js} +2 -2
  320. package/server/.next/server/chunks/[root-of-the-server]__07eo--c90cju2._.js +1 -1
  321. package/server/.next/server/chunks/[root-of-the-server]__07u2g5ccvst94._.js +3 -0
  322. package/server/.next/server/chunks/{[root-of-the-server]__09yvavo991rdd._.js → [root-of-the-server]__081k4lp976vd7._.js} +2 -2
  323. package/server/.next/server/chunks/{[root-of-the-server]__00oxbw3nfl_kd._.js → [root-of-the-server]__08i6b8tzxads4._.js} +1 -1
  324. package/server/.next/server/chunks/{[root-of-the-server]__205cmd-k6g2kc._.js → [root-of-the-server]__096q5ufradttx._.js} +1 -1
  325. package/server/.next/server/chunks/{[root-of-the-server]__0myf9g_uv3bia._.js → [root-of-the-server]__09oipjf2ew_pn._.js} +2 -2
  326. package/server/.next/server/chunks/[root-of-the-server]__0_c_c1bv7sopk._.js +3 -0
  327. package/server/.next/server/chunks/{[root-of-the-server]__0ww7a-9fnx2rv._.js → [root-of-the-server]__0a34twsor45ml._.js} +1 -1
  328. package/server/.next/server/chunks/{[root-of-the-server]__09msxcjw3tlue._.js → [root-of-the-server]__0bjh2kw90a-m_._.js} +1 -1
  329. package/server/.next/server/chunks/[root-of-the-server]__0bxqqjjy9ckvm._.js +3 -0
  330. package/server/.next/server/chunks/{[root-of-the-server]__0ebkmgcs7v0c8._.js → [root-of-the-server]__0dahxh87cvyn2._.js} +2 -2
  331. package/server/.next/server/chunks/[root-of-the-server]__0dd4hulw1w-4i._.js +3 -0
  332. package/server/.next/server/chunks/{[root-of-the-server]__0uyc9w7f_r10u._.js → [root-of-the-server]__0dfkxg4ax2hqz._.js} +1 -1
  333. package/server/.next/server/chunks/[root-of-the-server]__0e3hcgbyb09-p._.js +3 -0
  334. package/server/.next/server/chunks/{[root-of-the-server]__0c_mpay_m5kbm._.js → [root-of-the-server]__0erdelc9_06nk._.js} +1 -1
  335. package/server/.next/server/chunks/{[root-of-the-server]__0s3b61ttgb9if._.js → [root-of-the-server]__0fk1609_5zg7g._.js} +2 -2
  336. package/server/.next/server/chunks/[root-of-the-server]__0fl1uspuemkzr._.js +3 -0
  337. package/server/.next/server/chunks/[root-of-the-server]__0gb4uz-gv3va0._.js +1 -1
  338. package/server/.next/server/chunks/[root-of-the-server]__0gqye-fi-f3zk._.js +1 -1
  339. package/server/.next/server/chunks/{[root-of-the-server]__1mbm_bvk1oat7._.js → [root-of-the-server]__0hm5-0_rh9r6m._.js} +2 -2
  340. package/server/.next/server/chunks/{[root-of-the-server]__10-v22hv1sxrv._.js → [root-of-the-server]__0hwm4j4o2v8nc._.js} +2 -2
  341. package/server/.next/server/chunks/{[root-of-the-server]__0vdm37x30hr6p._.js → [root-of-the-server]__0ieq7-dtcg06b._.js} +1 -1
  342. package/server/.next/server/chunks/{[root-of-the-server]__0r0zrp3s_n614._.js → [root-of-the-server]__0iicsi0n7tfa5._.js} +1 -1
  343. package/server/.next/server/chunks/[root-of-the-server]__0k73a-s2lcpoz._.js +3 -0
  344. package/server/.next/server/chunks/[root-of-the-server]__0kk-m8_ul4f4k._.js +1 -1
  345. package/server/.next/server/chunks/{[root-of-the-server]__1z1fgf8k8icw8._.js → [root-of-the-server]__0kzgu06ee59vd._.js} +2 -2
  346. package/server/.next/server/chunks/{[root-of-the-server]__0puji-hw0xtk7._.js → [root-of-the-server]__0mrbo2p5fy4ji._.js} +1 -1
  347. package/server/.next/server/chunks/{[root-of-the-server]__1r2ei065xk141._.js → [root-of-the-server]__0nkfi6x2c4c5p._.js} +1 -1
  348. package/server/.next/server/chunks/{[root-of-the-server]__0ruici82tzf0w._.js → [root-of-the-server]__0nw8jgr3bsi8b._.js} +2 -2
  349. package/server/.next/server/chunks/{[root-of-the-server]__10d4a34z0js-f._.js → [root-of-the-server]__0o4e39mvq8_el._.js} +1 -1
  350. package/server/.next/server/chunks/[root-of-the-server]__0o6q27cnw6-77._.js +1 -1
  351. package/server/.next/server/chunks/[root-of-the-server]__0opds07bp1fnb._.js +3 -0
  352. package/server/.next/server/chunks/{[root-of-the-server]__1tefe1f5835t_._.js → [root-of-the-server]__0pammm8f5qxtv._.js} +2 -2
  353. package/server/.next/server/chunks/{[root-of-the-server]__0ao4b2jjkcvo1._.js → [root-of-the-server]__0pfcnbr0br6li._.js} +1 -1
  354. package/server/.next/server/chunks/{[root-of-the-server]__04v42ls1mfjd2._.js → [root-of-the-server]__0pi9id-ywuq6g._.js} +2 -2
  355. package/server/.next/server/chunks/{[root-of-the-server]__0g0rd65zoitrb._.js → [root-of-the-server]__0s3zxs-_ayd-6._.js} +1 -1
  356. package/server/.next/server/chunks/{[root-of-the-server]__192br5y94wzhx._.js → [root-of-the-server]__0sgy49rgsxyvy._.js} +1 -1
  357. package/server/.next/server/chunks/{[root-of-the-server]__05b18nw2k-7-4._.js → [root-of-the-server]__0sp5xoed3-994._.js} +1 -1
  358. package/server/.next/server/chunks/[root-of-the-server]__0swji6flwxtbv._.js +3 -0
  359. package/server/.next/server/chunks/{[root-of-the-server]__0fii83nfm0bsk._.js → [root-of-the-server]__0tyilr06jn8nb._.js} +1 -1
  360. package/server/.next/server/chunks/[root-of-the-server]__0uss50b85q1j1._.js +3 -0
  361. package/server/.next/server/chunks/{[root-of-the-server]__0g3v-ty9-xstp._.js → [root-of-the-server]__0vco1v37du1ez._.js} +1 -1
  362. package/server/.next/server/chunks/[root-of-the-server]__0vg5zp6z094qr._.js +3 -0
  363. package/server/.next/server/chunks/{[root-of-the-server]__1ji_xmb_m6fam._.js → [root-of-the-server]__0vhq-__j8umfu._.js} +1 -1
  364. package/server/.next/server/chunks/[root-of-the-server]__0vp-x4ifpr3p9._.js +1 -1
  365. package/server/.next/server/chunks/{[root-of-the-server]__06zmu7jjyw1qw._.js → [root-of-the-server]__0w_hiz5nrm8-4._.js} +1 -1
  366. package/server/.next/server/chunks/{[root-of-the-server]__20056vw370xom._.js → [root-of-the-server]__0xd_bgjy5_tr5._.js} +1 -1
  367. package/server/.next/server/chunks/[root-of-the-server]__0xzl28izr2tiq._.js +3 -0
  368. package/server/.next/server/chunks/[root-of-the-server]__0xzreqng-t2g8._.js +3 -0
  369. package/server/.next/server/chunks/[root-of-the-server]__0yhki59n8zyjb._.js +1 -1
  370. package/server/.next/server/chunks/{[root-of-the-server]__0glhrm7zmrvi2._.js → [root-of-the-server]__0z9of310ruzug._.js} +2 -2
  371. package/server/.next/server/chunks/[root-of-the-server]__0zpo6n_av-p7a._.js +3 -0
  372. package/server/.next/server/chunks/{[root-of-the-server]__1hrcyozojb6ot._.js → [root-of-the-server]__0zs-wkvv1cs0i._.js} +1 -1
  373. package/server/.next/server/chunks/{[root-of-the-server]__1wcnj2xtesyd9._.js → [root-of-the-server]__0zu1odpvrptrt._.js} +1 -1
  374. package/server/.next/server/chunks/[root-of-the-server]__1-3u16rnk101p._.js +3 -0
  375. package/server/.next/server/chunks/[root-of-the-server]__1-pe9ipc3y6rn._.js +3 -0
  376. package/server/.next/server/chunks/[root-of-the-server]__1-tqm3jzny4zd._.js +3 -0
  377. package/server/.next/server/chunks/[root-of-the-server]__108g59p2fl8tw._.js +3 -0
  378. package/server/.next/server/chunks/{[root-of-the-server]__0tshehtsx7229._.js → [root-of-the-server]__11a8fxlpahjy2._.js} +1 -1
  379. package/server/.next/server/chunks/[root-of-the-server]__12_wmn5mkj9v7._.js +3 -0
  380. package/server/.next/server/chunks/{[root-of-the-server]__10ts7p_9fu3ge._.js → [root-of-the-server]__12bo9op0qkw9d._.js} +2 -2
  381. package/server/.next/server/chunks/[root-of-the-server]__12tontjm90s-j._.js +3 -0
  382. package/server/.next/server/chunks/[root-of-the-server]__13-qqkdecmwba._.js +3 -0
  383. package/server/.next/server/chunks/{[root-of-the-server]__19jalyhtntk8p._.js → [root-of-the-server]__135cn1pmljq9j._.js} +1 -1
  384. package/server/.next/server/chunks/{[root-of-the-server]__1iruoalu93dg7._.js → [root-of-the-server]__140ixflf83vxj._.js} +2 -2
  385. package/server/.next/server/chunks/[root-of-the-server]__1412kx9qb_j46._.js +3 -0
  386. package/server/.next/server/chunks/[root-of-the-server]__1426to_m4prqh._.js +1 -1
  387. package/server/.next/server/chunks/{[root-of-the-server]__1a563imf6ya2l._.js → [root-of-the-server]__14bynsn7eae8y._.js} +1 -1
  388. package/server/.next/server/chunks/[root-of-the-server]__152e1b97gc8hw._.js +3 -0
  389. package/server/.next/server/chunks/[root-of-the-server]__153lxhkj8-_vf._.js +3 -0
  390. package/server/.next/server/chunks/[root-of-the-server]__15tr3yx8k9lyt._.js +3 -0
  391. package/server/.next/server/chunks/[root-of-the-server]__16-0nul8mfe2m._.js +3 -0
  392. package/server/.next/server/chunks/{[root-of-the-server]__1ons16gam6qb7._.js → [root-of-the-server]__172vz80sdr5ny._.js} +2 -2
  393. package/server/.next/server/chunks/[root-of-the-server]__177l2p7kcj-16._.js +1 -1
  394. package/server/.next/server/chunks/{[root-of-the-server]__0vb1_m_h5hi0z._.js → [root-of-the-server]__17bz0jxsns742._.js} +2 -2
  395. package/server/.next/server/chunks/{[root-of-the-server]__14yq_wf4xemgd._.js → [root-of-the-server]__17jjm80vttqmq._.js} +2 -2
  396. package/server/.next/server/chunks/[root-of-the-server]__18eqxi2vwpdjm._.js +3 -0
  397. package/server/.next/server/chunks/[root-of-the-server]__194y_mcnn0zs3._.js +3 -0
  398. package/server/.next/server/chunks/[root-of-the-server]__1_iy7tzpesarf._.js +3 -0
  399. package/server/.next/server/chunks/[root-of-the-server]__1_vfu21n1zq17._.js +3 -0
  400. package/server/.next/server/chunks/[root-of-the-server]__1akvpmbiap6nf._.js +2 -2
  401. package/server/.next/server/chunks/[root-of-the-server]__1c78cu7kb9vkl._.js +1 -1
  402. package/server/.next/server/chunks/[root-of-the-server]__1cy1k8jbwoull._.js +3 -0
  403. package/server/.next/server/chunks/[root-of-the-server]__1d1zkp1q80t6q._.js +3 -0
  404. package/server/.next/server/chunks/{[root-of-the-server]__1z_l9mj3s_6tu._.js → [root-of-the-server]__1d4wmw2wohveb._.js} +1 -1
  405. package/server/.next/server/chunks/[root-of-the-server]__1dp_mz2p02ze6._.js +3 -0
  406. package/server/.next/server/chunks/{[root-of-the-server]__1ghx3ayy7tm73._.js → [root-of-the-server]__1eng6c6q52y-6._.js} +2 -2
  407. package/server/.next/server/chunks/{[root-of-the-server]__0eqrtvr3uqlqf._.js → [root-of-the-server]__1etg41llk7f09._.js} +1 -1
  408. package/server/.next/server/chunks/[root-of-the-server]__1f-rkijnm8me7._.js +3 -0
  409. package/server/.next/server/chunks/[root-of-the-server]__1fteaav9qn2kq._.js +3 -0
  410. package/server/.next/server/chunks/{[root-of-the-server]__0016p4j5uh74t._.js → [root-of-the-server]__1gfuhug61s-qy._.js} +2 -2
  411. package/server/.next/server/chunks/{[root-of-the-server]__19o-a03uklyrw._.js → [root-of-the-server]__1git7o20yf9nn._.js} +2 -2
  412. package/server/.next/server/chunks/[root-of-the-server]__1h496oc8wu4s6._.js +3 -0
  413. package/server/.next/server/chunks/[root-of-the-server]__1hertcbqi_w97._.js +3 -0
  414. package/server/.next/server/chunks/[root-of-the-server]__1io5zo7iam532._.js +1 -1
  415. package/server/.next/server/chunks/[root-of-the-server]__1j-nkcwy3w6sy._.js +3 -0
  416. package/server/.next/server/chunks/[root-of-the-server]__1jcr8cc_tlvfc._.js +3 -0
  417. package/server/.next/server/chunks/{[root-of-the-server]__0qlf-so9k6401._.js → [root-of-the-server]__1kr6f03r82mk6._.js} +1 -1
  418. package/server/.next/server/chunks/[root-of-the-server]__1l3uz57-1a35s._.js +3 -0
  419. package/server/.next/server/chunks/{[root-of-the-server]__0jpktq0f88rvz._.js → [root-of-the-server]__1l9pn8y-o6xyp._.js} +2 -2
  420. package/server/.next/server/chunks/[root-of-the-server]__1lp_rypkkdjp9._.js +3 -0
  421. package/server/.next/server/chunks/[root-of-the-server]__1m-z1ne4p7pi5._.js +3 -0
  422. package/server/.next/server/chunks/[root-of-the-server]__1ma2tpf6wh9p6._.js +3 -0
  423. package/server/.next/server/chunks/[root-of-the-server]__1nohrxjajgm5c._.js +3 -0
  424. package/server/.next/server/chunks/[root-of-the-server]__1o2km61kftkj1._.js +3 -0
  425. package/server/.next/server/chunks/[root-of-the-server]__1ozfk4_3lx1o7._.js +1 -1
  426. package/server/.next/server/chunks/[root-of-the-server]__1pn773t93gvn-._.js +3 -0
  427. package/server/.next/server/chunks/{[root-of-the-server]__0_vtp19_2frgj._.js → [root-of-the-server]__1pyc-ezfujjcp._.js} +1 -1
  428. package/server/.next/server/chunks/{[root-of-the-server]__1yxxfmyk3649a._.js → [root-of-the-server]__1pyhos8be90-4._.js} +1 -1
  429. package/server/.next/server/chunks/[root-of-the-server]__1q0h-x-7ob6cu._.js +3 -0
  430. package/server/.next/server/chunks/[root-of-the-server]__1q2e13halne9s._.js +3 -0
  431. package/server/.next/server/chunks/[root-of-the-server]__1q7xy_u4inf4h._.js +3 -0
  432. package/server/.next/server/chunks/[root-of-the-server]__1qtorf4s2dfeg._.js +3 -0
  433. package/server/.next/server/chunks/{[root-of-the-server]__20qdu-env7wgt._.js → [root-of-the-server]__1sm4p209f_yie._.js} +1 -1
  434. package/server/.next/server/chunks/{[root-of-the-server]__1cdt67d022uf1._.js → [root-of-the-server]__1ugnox9gcdhvm._.js} +2 -2
  435. package/server/.next/server/chunks/{[root-of-the-server]__1wbnule0tzwdu._.js → [root-of-the-server]__1uhgqik99k1y6._.js} +2 -2
  436. package/server/.next/server/chunks/[root-of-the-server]__1uq4f0bdphqs2._.js +3 -0
  437. package/server/.next/server/chunks/{[root-of-the-server]__02y9yjf7lp37-._.js → [root-of-the-server]__1usilhckla3wj._.js} +1 -1
  438. package/server/.next/server/chunks/[root-of-the-server]__1v_8mu8mt1n5i._.js +3 -0
  439. package/server/.next/server/chunks/[root-of-the-server]__1vtlx_63lj4tg._.js +3 -0
  440. package/server/.next/server/chunks/{[root-of-the-server]__090n04cg_br7j._.js → [root-of-the-server]__1vvg0ur3_7o0p._.js} +1 -1
  441. package/server/.next/server/chunks/{[root-of-the-server]__0vsafetdvsfhj._.js → [root-of-the-server]__1wjsjh-1i-sn6._.js} +1 -1
  442. package/server/.next/server/chunks/[root-of-the-server]__1wxj0f-l93gkh._.js +3 -0
  443. package/server/.next/server/chunks/[root-of-the-server]__1x4u0cdsl_81t._.js +3 -0
  444. package/server/.next/server/chunks/{[root-of-the-server]__0exruft64u1hg._.js → [root-of-the-server]__1x7en4waq21dd._.js} +1 -1
  445. package/server/.next/server/chunks/[root-of-the-server]__1xku6cma1a_kb._.js +3 -0
  446. package/server/.next/server/chunks/{[root-of-the-server]__0pi_camvun8ak._.js → [root-of-the-server]__1xnqsy7nud--q._.js} +2 -2
  447. package/server/.next/server/chunks/[root-of-the-server]__1xzg_370-w-6t._.js +3 -0
  448. package/server/.next/server/chunks/[root-of-the-server]__20dehd8e5-v9y._.js +1 -1
  449. package/server/.next/server/chunks/{[root-of-the-server]__1i841w7a3057h._.js → [root-of-the-server]__212_l7y-180xi._.js} +1 -1
  450. package/server/.next/server/chunks/{[root-of-the-server]__1vfvw1pmssxww._.js → [root-of-the-server]__217jp1b3psyq_._.js} +1 -1
  451. package/server/.next/server/chunks/_0-sqv2nbaba7h._.js +3 -0
  452. package/server/.next/server/chunks/_00t02v1a9nfr1._.js +3 -0
  453. package/server/.next/server/chunks/_01epotkqa90nv._.js +3 -0
  454. package/server/.next/server/chunks/_03wces6vk33l0._.js +3 -0
  455. package/server/.next/server/chunks/_05kxcc393c_0z._.js +3 -0
  456. package/server/.next/server/chunks/_08q7x7rdbiaql._.js +49 -0
  457. package/server/.next/server/chunks/_09iin0yvuppj0._.js +3 -0
  458. package/server/.next/server/chunks/_0apakqacgawy4._.js +3 -0
  459. package/server/.next/server/chunks/{_1t46m15axa4b4._.js → _0buibatfr6-k_._.js} +3 -3
  460. package/server/.next/server/chunks/_0d29nzne5jrwy._.js +49 -0
  461. package/server/.next/server/chunks/_0dq_vw-kky70h._.js +3 -0
  462. package/server/.next/server/chunks/{_0jiq3ns7681pv._.js → _0hekve2tk2eyv._.js} +3 -3
  463. package/server/.next/server/chunks/_0huryxihjw6tl._.js +49 -0
  464. package/server/.next/server/chunks/_0n-wbmmvp4omq._.js +1 -1
  465. package/server/.next/server/chunks/_0ou2tylxx1ltw._.js +10 -0
  466. package/server/.next/server/chunks/_0rqil_klxfz3j._.js +3 -0
  467. package/server/.next/server/chunks/{_0ehqx1pkh20px._.js → _0s_2fgaxby9fy._.js} +3 -3
  468. package/server/.next/server/chunks/_0z4b07-oa6ms9._.js +3 -0
  469. package/server/.next/server/chunks/_10mj3f1wis1ld._.js +3 -0
  470. package/server/.next/server/chunks/_139_9h76gakgh._.js +3 -0
  471. package/server/.next/server/chunks/_14jiq00zwwqdl._.js +3 -0
  472. package/server/.next/server/chunks/_15f0c7f46zkh3._.js +3 -0
  473. package/server/.next/server/chunks/_17u84tg9ibxp9._.js +3 -0
  474. package/server/.next/server/chunks/_1e4rch26scbhq._.js +49 -0
  475. package/server/.next/server/chunks/_1g-4oov0uynv-._.js +3 -0
  476. package/server/.next/server/chunks/_1iugpfonxri3e._.js +3 -0
  477. package/server/.next/server/chunks/_1iunyzyr-tfdj._.js +31 -0
  478. package/server/.next/server/chunks/_1jor4_sz1x8mt._.js +3 -0
  479. package/server/.next/server/chunks/_1m3zrm9-rc926._.js +3 -0
  480. package/server/.next/server/chunks/_1mwwg18ni-phb._.js +3 -0
  481. package/server/.next/server/chunks/{_0zj8nj1f2phf5._.js → _1n4labwyv5msc._.js} +1 -1
  482. package/server/.next/server/chunks/_1ohb_bmawpjlz._.js +10 -0
  483. package/server/.next/server/chunks/_1qcal07c71omr._.js +3 -0
  484. package/server/.next/server/chunks/_20ounk93z_b6h._.js +3 -0
  485. package/server/.next/server/chunks/_next-internal_server_app_(console)_reports_[id]_pdf_route_actions_1z8w14-7mvvj9.js +3 -0
  486. package/server/.next/server/chunks/_next-internal_server_app_brand-icon_route_actions_1d7gd59j_572y.js +3 -0
  487. package/server/.next/server/chunks/{node_modules_drizzle-orm_0p2-_xghnn-0j._.js → node_modules_drizzle-orm_0ac-0bknpndrl._.js} +2 -2
  488. package/server/.next/server/chunks/{node_modules_drizzle-orm_0pxdj1u-i8py9._.js → node_modules_drizzle-orm_0k-yqdh9heao6._.js} +2 -2
  489. package/server/.next/server/chunks/{node_modules_drizzle-orm_15o96osca_ezd._.js → node_modules_drizzle-orm_0k7__h1lfq5ug._.js} +2 -2
  490. package/server/.next/server/chunks/{node_modules_drizzle-orm_1hvomr2ymp14o._.js → node_modules_drizzle-orm_0pv-kejmwhhk-._.js} +2 -2
  491. package/server/.next/server/chunks/node_modules_drizzle-orm_1emqi6ca48q0m._.js +4 -0
  492. package/server/.next/server/chunks/node_modules_drizzle-orm_entity_1-0q2stnw2ab8.js +3 -3
  493. package/server/.next/server/chunks/src_0--qn984h6czu._.js +1 -1
  494. package/server/.next/server/chunks/src_0-s0huszb29pj._.js +3 -0
  495. package/server/.next/server/chunks/src_0071b0w5aco6_._.js +3 -0
  496. package/server/.next/server/chunks/src_05jrvcsgaq5ek._.js +1 -1
  497. package/server/.next/server/chunks/src_06tyytf_c_hlu._.js +1 -1
  498. package/server/.next/server/chunks/src_0_9n02bmhtk4z._.js +1 -1
  499. package/server/.next/server/chunks/src_0c-owt8q0lyj3._.js +1 -1
  500. package/server/.next/server/chunks/src_0dxbyz8iemj_5._.js +1 -1
  501. package/server/.next/server/chunks/src_0qnh_ndxnflja._.js +3 -0
  502. package/server/.next/server/chunks/src_0r3j66vbc5g4f._.js +3 -0
  503. package/server/.next/server/chunks/src_0u2zbz77uh__q._.js +1 -1
  504. package/server/.next/server/chunks/src_0ud2mqnh4emxz._.js +1 -1
  505. package/server/.next/server/chunks/src_1-dy6ie3_ezvm._.js +3 -0
  506. package/server/.next/server/chunks/src_10vyvp9vy_69h._.js +1 -1
  507. package/server/.next/server/chunks/src_13ij0feyzy7me._.js +3 -0
  508. package/server/.next/server/chunks/{src_05be6wzefzaky._.js → src_14vh1kj98t0xu._.js} +2 -2
  509. package/server/.next/server/chunks/src_1_s_jyur8tzy3._.js +3 -0
  510. package/server/.next/server/chunks/src_1a5yibsjcy1ga._.js +1 -1
  511. package/server/.next/server/chunks/src_1cvp6ubs-3z6l._.js +1 -1
  512. package/server/.next/server/chunks/src_1d-0nhc193soh._.js +3 -0
  513. package/server/.next/server/chunks/src_1d1ewqrujfp03._.js +3 -0
  514. package/server/.next/server/chunks/src_1dio7z4_so000._.js +3 -0
  515. package/server/.next/server/chunks/src_1hpbxjbqlnuob._.js +3 -0
  516. package/server/.next/server/chunks/src_1il7wg_qjxny7._.js +1 -1
  517. package/server/.next/server/chunks/src_1tux0n9_5b1kr._.js +1 -1
  518. package/server/.next/server/chunks/src_1u-olt84z63rx._.js +1 -1
  519. package/server/.next/server/chunks/src_1wmb2yl3tn-dd._.js +1 -1
  520. package/server/.next/server/chunks/src_1wzm081p6qyre._.js +1 -1
  521. package/server/.next/server/chunks/{src_0cdn5fuk8f_x2._.js → src_20eae99bkrgpt._.js} +2 -2
  522. package/server/.next/server/chunks/src_db_client_ts_0vckux1-linlc._.js +23 -0
  523. package/server/.next/server/chunks/src_lib_02-wqy78_rn85._.js +3 -0
  524. package/server/.next/server/chunks/src_lib_0ds7lhpop_adf._.js +1 -1
  525. package/server/.next/server/chunks/src_lib_0eqv8l-v8d5ze._.js +1 -1
  526. package/server/.next/server/chunks/src_lib_0glcfed-uogyd._.js +1 -1
  527. package/server/.next/server/chunks/src_lib_0iqdlrya6vfc_._.js +3 -0
  528. package/server/.next/server/chunks/src_lib_0kjik9nmtqlf5._.js +7 -0
  529. package/server/.next/server/chunks/src_lib_0krbxej8kykyp._.js +7 -0
  530. package/server/.next/server/chunks/src_lib_0o9m8m1sm5759._.js +5 -0
  531. package/server/.next/server/chunks/src_lib_0pyyxm3m1rttg._.js +1 -1
  532. package/server/.next/server/chunks/src_lib_0sd9c_cjgc4ro._.js +3 -0
  533. package/server/.next/server/chunks/src_lib_0ta8sd9jeuw50._.js +17 -17
  534. package/server/.next/server/chunks/src_lib_0xfwnbkxb4z5s._.js +7 -0
  535. package/server/.next/server/chunks/src_lib_11ky6rv8zte7m._.js +7 -0
  536. package/server/.next/server/chunks/src_lib_13irheo9qqhgx._.js +1 -1
  537. package/server/.next/server/chunks/src_lib_1550ey8j96v9n._.js +1 -1
  538. package/server/.next/server/chunks/src_lib_1n_d25awwz8ga._.js +3 -0
  539. package/server/.next/server/chunks/src_lib_1onr7b4_kglpt._.js +1 -1
  540. package/server/.next/server/chunks/src_lib_1qo6t00wwitz6._.js +17 -17
  541. package/server/.next/server/chunks/src_lib_1sz77jjn7xl7o._.js +1 -1
  542. package/server/.next/server/chunks/src_lib_alerts_catalog_ts_1ndg28acul64q._.js +1 -1
  543. package/server/.next/server/chunks/src_lib_branding_ts_03ns4y_8z0-6e._.js +3 -0
  544. package/server/.next/server/chunks/src_lib_branding_ts_0jfv9nur5alvy._.js +3 -0
  545. package/server/.next/server/chunks/src_lib_collector_auth_ts_0lqx92__e4zij._.js +6 -3
  546. package/server/.next/server/chunks/src_lib_data_report-db_ts_0b5f4dpxn08gk._.js +3 -0
  547. package/server/.next/server/chunks/src_lib_data_sections-db_ts_1ky6-o4z1mimq._.js +4 -4
  548. package/server/.next/server/chunks/src_lib_data_settings-db_ts_1to3jtggxlaz4._.js +3 -0
  549. package/server/.next/server/chunks/src_lib_data_settings-db_ts_2060-w9nbvitr._.js +3 -0
  550. package/server/.next/server/chunks/src_lib_demo_pool_ts_0fpn8acsdk64i._.js +9 -9
  551. package/server/.next/server/chunks/src_lib_demo_pool_ts_14rjvkgozh1d4._.js +11 -11
  552. package/server/.next/server/chunks/src_lib_demo_pool_ts_17xz9bk-d5uic._.js +11 -11
  553. package/server/.next/server/chunks/src_lib_demo_pool_ts_210g_on8zx_-n._.js +11 -11
  554. package/server/.next/server/chunks/src_lib_local-auth_proxy_ts_1g9krhdh2rnt2._.js +1 -21
  555. package/server/.next/server/chunks/src_lib_maintenance_ts_0voja6l8yogbf._.js +3 -0
  556. package/server/.next/server/chunks/src_lib_rate-limit_ts_09dzyftcadggh._.js +1 -1
  557. package/server/.next/server/chunks/src_lib_rate-limit_ts_0r-eu6to05vyx._.js +1 -1
  558. package/server/.next/server/chunks/src_lib_rate-limit_ts_1ahtm4quu2rri._.js +1 -1
  559. package/server/.next/server/chunks/src_lib_sections_ts_0r8u4nvlpdkgq._.js +1 -1
  560. package/server/.next/server/chunks/src_private_notes_notes-actions_ts_1g63g8u965fhc._.js +1 -1
  561. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_agents_page_actions_21atz5tidps07.js +1 -1
  562. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_models_page_actions_0rvlzfa8rjyz_.js +1 -1
  563. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_playground_page_actions_01ejc1xilpuh4.js +1 -1
  564. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_quota_page_actions_0iki29gyi8cwa.js +1 -1
  565. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_usage_page_actions_1c99h-kwdnep7.js +1 -1
  566. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_auto-actions_page_actions_1kw4ce6-efkr1.js +1 -1
  567. package/server/.next/server/chunks/ssr/{[externals]__1q1drb4oske-9._.js → [externals]__1299yq-rye4ww._.js} +1 -1
  568. package/server/.next/server/chunks/ssr/{[externals]__0summv9f9jkob._.js → [externals]__134px-n77ygse._.js} +1 -1
  569. package/server/.next/server/chunks/ssr/{[externals]__1jdljyrzmqoz0._.js → [externals]__1s9zy_6f7xfd5._.js} +1 -1
  570. package/server/.next/server/chunks/ssr/{[externals]__00hge8tjqv73a._.js → [externals]__1t5grpj1lrsbr._.js} +1 -1
  571. package/server/.next/server/chunks/ssr/[root-of-the-server]__001mglelq4wpc._.js +1 -1
  572. package/server/.next/server/chunks/ssr/{[root-of-the-server]__12t9_ndr9z-2d._.js → [root-of-the-server]__004q78ed0nf0_._.js} +1 -1
  573. package/server/.next/server/chunks/ssr/{[root-of-the-server]__1a5760tg4iits._.js → [root-of-the-server]__03iw2anbe7pxg._.js} +2 -2
  574. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0n4bkq-45z4aa._.js → [root-of-the-server]__04_prmhm_cts4._.js} +1 -1
  575. package/server/.next/server/chunks/ssr/{[root-of-the-server]__183_36tj3p645._.js → [root-of-the-server]__059q8f4tia03z._.js} +2 -2
  576. package/server/.next/server/chunks/ssr/{[root-of-the-server]__1mah0p09qrkpu._.js → [root-of-the-server]__05ot6j41b9i8j._.js} +2 -2
  577. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0423qjo9c2t9-._.js → [root-of-the-server]__077-acap7g4ck._.js} +1 -1
  578. package/server/.next/server/chunks/ssr/[root-of-the-server]__09blzlbsxqvy9._.js +1 -1
  579. package/server/.next/server/chunks/ssr/[root-of-the-server]__0_wsm-adqpmgy._.js +3 -0
  580. package/server/.next/server/chunks/ssr/[root-of-the-server]__0buxkrf7nrji8._.js +3 -0
  581. package/server/.next/server/chunks/ssr/{[root-of-the-server]__05s2n35zn4go-._.js → [root-of-the-server]__0ct4apye0sfmc._.js} +1 -1
  582. package/server/.next/server/chunks/ssr/{[root-of-the-server]__157kjredkf1pa._.js → [root-of-the-server]__0f6ao2fs70kab._.js} +1 -1
  583. package/server/.next/server/chunks/ssr/{[root-of-the-server]__02lkybw6gg3ln._.js → [root-of-the-server]__0f8ibnqfh_mp0._.js} +2 -2
  584. package/server/.next/server/chunks/ssr/[root-of-the-server]__0h8-rlmhjyebb._.js +3 -0
  585. package/server/.next/server/chunks/ssr/{[root-of-the-server]__139ya3ejh6htx._.js → [root-of-the-server]__0hgf7si8htevx._.js} +1 -1
  586. package/server/.next/server/chunks/ssr/[root-of-the-server]__0jgapr1cnvhi6._.js +1 -1
  587. package/server/.next/server/chunks/ssr/[root-of-the-server]__0kejvdc7h-pgz._.js +3 -0
  588. package/server/.next/server/chunks/ssr/[root-of-the-server]__0keo0-hwsnkw9._.js +1 -1
  589. package/server/.next/server/chunks/ssr/[root-of-the-server]__0kjdpn_g9gvwr._.js +3 -0
  590. package/server/.next/server/chunks/ssr/[root-of-the-server]__0l50vsk8enxzj._.js +1 -1
  591. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0z5ucbis8ik32._.js → [root-of-the-server]__0msczl_qf2eml._.js} +2 -2
  592. package/server/.next/server/chunks/ssr/[root-of-the-server]__0mvauw9r_4qss._.js +1 -1
  593. package/server/.next/server/chunks/ssr/[root-of-the-server]__0rdf04ziqasfz._.js +1 -1
  594. package/server/.next/server/chunks/ssr/[root-of-the-server]__0rrdzb9wowemv._.js +1 -1
  595. package/server/.next/server/chunks/ssr/{[root-of-the-server]__1d1ksu1dlha3r._.js → [root-of-the-server]__0s9z1kusbxvae._.js} +2 -2
  596. package/server/.next/server/chunks/ssr/[root-of-the-server]__0u-o_v_v6y58o._.js +3 -0
  597. package/server/.next/server/chunks/ssr/{[root-of-the-server]__10r0u-q18z71i._.js → [root-of-the-server]__0uxychcp_pldy._.js} +1 -1
  598. package/server/.next/server/chunks/ssr/{[root-of-the-server]__1iqedr7nfvayk._.js → [root-of-the-server]__0wlctoz_-yuyh._.js} +1 -1
  599. package/server/.next/server/chunks/ssr/{[root-of-the-server]__092gsphy4oz6k._.js → [root-of-the-server]__0yr0heg1b0y5t._.js} +2 -2
  600. package/server/.next/server/chunks/ssr/[root-of-the-server]__0yvm5q_auexh3._.js +3 -0
  601. package/server/.next/server/chunks/ssr/{[root-of-the-server]__13phmsw9wsyrs._.js → [root-of-the-server]__0zgo5h9mstjc8._.js} +1 -1
  602. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0no6c0whevi73._.js → [root-of-the-server]__107qfgl2c58q0._.js} +1 -1
  603. package/server/.next/server/chunks/ssr/[root-of-the-server]__10ahcnczmy5hx._.js +3 -0
  604. package/server/.next/server/chunks/ssr/{[root-of-the-server]__1nk87bg9lne35._.js → [root-of-the-server]__10y2ig7dg3f-k._.js} +1 -1
  605. package/server/.next/server/chunks/ssr/{[root-of-the-server]__1knbzqo0nba_q._.js → [root-of-the-server]__12cdcpj45tu6j._.js} +2 -2
  606. package/server/.next/server/chunks/ssr/[root-of-the-server]__18dcfrlpoapw9._.js +3 -0
  607. package/server/.next/server/chunks/ssr/[root-of-the-server]__1_f7nip9age3d._.js +1 -1
  608. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0gyvfp6c-_edw._.js → [root-of-the-server]__1a3_aiqflmt4f._.js} +2 -2
  609. package/server/.next/server/chunks/ssr/{[root-of-the-server]__16jfs8j29r4b5._.js → [root-of-the-server]__1brzt_134_2iy._.js} +2 -2
  610. package/server/.next/server/chunks/ssr/[root-of-the-server]__1g6kynby65m0v._.js +3 -0
  611. package/server/.next/server/chunks/ssr/{[root-of-the-server]__07_efq7yhxfj-._.js → [root-of-the-server]__1itgt83qo1e77._.js} +1 -1
  612. package/server/.next/server/chunks/ssr/[root-of-the-server]__1pafj7m_b8m14._.js +3 -0
  613. package/server/.next/server/chunks/ssr/[root-of-the-server]__1rzolbt5ior_s._.js +3 -0
  614. package/server/.next/server/chunks/ssr/{[root-of-the-server]__18gw74mr2vto3._.js → [root-of-the-server]__1sw2q1p1t59y8._.js} +2 -2
  615. package/server/.next/server/chunks/ssr/[root-of-the-server]__1t9_ue4abugtn._.js +3 -0
  616. package/server/.next/server/chunks/ssr/[root-of-the-server]__1u_13nhw3kuz3._.js +1 -1
  617. package/server/.next/server/chunks/ssr/[root-of-the-server]__1vgliw2256_6l._.js +4 -0
  618. package/server/.next/server/chunks/ssr/{[root-of-the-server]__06bgklzuef-ya._.js → [root-of-the-server]__1zki66ic3cluq._.js} +2 -2
  619. package/server/.next/server/chunks/ssr/_008i8a0_8skrp._.js +1 -1
  620. package/server/.next/server/chunks/ssr/_02eudwc8ieb2r._.js +2 -2
  621. package/server/.next/server/chunks/ssr/_08xqk3eibu5aw._.js +1 -1
  622. package/server/.next/server/chunks/ssr/_09s2unlb4r6yf._.js +3 -0
  623. package/server/.next/server/chunks/ssr/_0_oc9q0vqkynd._.js +1 -1
  624. package/server/.next/server/chunks/ssr/_0a22b7zsckifp._.js +1 -1
  625. package/server/.next/server/chunks/ssr/_0bd4cxnpnnq2u._.js +1 -1
  626. package/server/.next/server/chunks/ssr/_0cbbks0ms7i_u._.js +2 -2
  627. package/server/.next/server/chunks/ssr/_0cw4kz3d6kmb1._.js +1 -1
  628. package/server/.next/server/chunks/ssr/_0d2d527wcx-lf._.js +2 -2
  629. package/server/.next/server/chunks/ssr/_0d702k82llasi._.js +1 -1
  630. package/server/.next/server/chunks/ssr/_0gl-ewvbhb677._.js +2 -2
  631. package/server/.next/server/chunks/ssr/_0gmw45sb1llld._.js +1 -1
  632. package/server/.next/server/chunks/ssr/_0hqya_yuov5jw._.js +3 -0
  633. package/server/.next/server/chunks/ssr/_0i04zoixa2iup._.js +2 -2
  634. package/server/.next/server/chunks/ssr/_0idbg-ok0so2h._.js +2 -2
  635. package/server/.next/server/chunks/ssr/_0iy27gi4y9-fe._.js +1 -1
  636. package/server/.next/server/chunks/ssr/{_18sg0ilz439y6._.js → _0k6kbi721s28p._.js} +2 -2
  637. package/server/.next/server/chunks/ssr/_0kdn56_ow-x_s._.js +1 -1
  638. package/server/.next/server/chunks/ssr/_0kk0of-t4vhyh._.js +4 -0
  639. package/server/.next/server/chunks/ssr/{_0c9_fa5ejth12._.js → _0l0eho21fo-8l._.js} +2 -2
  640. package/server/.next/server/chunks/ssr/_0oovfx_t_-u0k._.js +1 -1
  641. package/server/.next/server/chunks/ssr/_0oub-njkja8gu._.js +2 -2
  642. package/server/.next/server/chunks/ssr/_0pqkexxo7rts_._.js +2 -2
  643. package/server/.next/server/chunks/ssr/_0r7_a5m55a1jy._.js +3 -0
  644. package/server/.next/server/chunks/ssr/_0rqil_klxfz3j._.js +3 -0
  645. package/server/.next/server/chunks/ssr/_0tnd528j0i1i4._.js +2 -2
  646. package/server/.next/server/chunks/ssr/_0uwkwcgucqgcf._.js +2 -2
  647. package/server/.next/server/chunks/ssr/_0uz60lk-7e_cj._.js +2 -2
  648. package/server/.next/server/chunks/ssr/_0wo-lpqf7hr1y._.js +2 -2
  649. package/server/.next/server/chunks/ssr/{_19q2vj_ppgsu4._.js → _0x4ybc829r3ta._.js} +2 -2
  650. package/server/.next/server/chunks/ssr/_0xmud7u5hdnqu._.js +2 -2
  651. package/server/.next/server/chunks/ssr/_1-4401bfn50mf._.js +1 -1
  652. package/server/.next/server/chunks/ssr/_1-6d1tm3r_qwg._.js +1 -1
  653. package/server/.next/server/chunks/ssr/_10bven6gb1vj0._.js +1 -1
  654. package/server/.next/server/chunks/ssr/_118h21qua_4o3._.js +1 -1
  655. package/server/.next/server/chunks/ssr/_12makqwatfke-._.js +2 -2
  656. package/server/.next/server/chunks/ssr/_19-3vzkc6rk97._.js +1 -1
  657. package/server/.next/server/chunks/ssr/_19dldpcnzhkuw._.js +1 -1
  658. package/server/.next/server/chunks/ssr/_1_-o2s48aj4i7._.js +1 -1
  659. package/server/.next/server/chunks/ssr/_1bijvrgqfyij6._.js +5 -0
  660. package/server/.next/server/chunks/ssr/_1c7jkkvkvzj_u._.js +2 -2
  661. package/server/.next/server/chunks/ssr/{_1vlm9990gr64r._.js → _1cdlzhw6tkrhd._.js} +2 -2
  662. package/server/.next/server/chunks/ssr/_1cl55h_h3q-b_._.js +1 -1
  663. package/server/.next/server/chunks/ssr/_1dlo17ba9g-f9._.js +2 -2
  664. package/server/.next/server/chunks/ssr/_1dp5bgqob29-f._.js +1 -1
  665. package/server/.next/server/chunks/ssr/_1fc8k_0p8l00c._.js +2 -2
  666. package/server/.next/server/chunks/ssr/_1fuywfexex2s8._.js +2 -2
  667. package/server/.next/server/chunks/ssr/_1g2zbl_-4z_hg._.js +1 -1
  668. package/server/.next/server/chunks/ssr/_1he21-bt45k8z._.js +2 -2
  669. package/server/.next/server/chunks/ssr/_1ioq9f389jnco._.js +3 -0
  670. package/server/.next/server/chunks/ssr/_1iugpfonxri3e._.js +3 -0
  671. package/server/.next/server/chunks/ssr/_1j9cka-44jd65._.js +1 -1
  672. package/server/.next/server/chunks/ssr/_1jh_o2i8hj2g5._.js +1 -1
  673. package/server/.next/server/chunks/ssr/_1ln6o3a9quwxo._.js +2 -2
  674. package/server/.next/server/chunks/ssr/_1m4km_w39x5e9._.js +1 -1
  675. package/server/.next/server/chunks/ssr/_1ong0a252wcvc._.js +13 -0
  676. package/server/.next/server/chunks/ssr/_1pp1o361lgpwu._.js +2 -2
  677. package/server/.next/server/chunks/ssr/_1q0i7-4d4iyye._.js +3 -0
  678. package/server/.next/server/chunks/ssr/_1q3fi6a4gklq6._.js +1 -1
  679. package/server/.next/server/chunks/ssr/_1qcal07c71omr._.js +3 -0
  680. package/server/.next/server/chunks/ssr/_1r2516zqb3e67._.js +3 -0
  681. package/server/.next/server/chunks/ssr/_1ul3og9l7vp32._.js +2 -2
  682. package/server/.next/server/chunks/ssr/_1yh3k88t_kh4h._.js +2 -2
  683. package/server/.next/server/chunks/ssr/_1z6dy1k48mskn._.js +1 -1
  684. package/server/.next/server/chunks/ssr/{_0fl2-fao_ye7t._.js → _1zsfeuyrhcwmh._.js} +2 -2
  685. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_(private)_ai_keys_page_actions_181-3r4e_0yb5.js +1 -1
  686. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_(private)_ai_logs_page_actions_1ryb93n6khky3.js +1 -1
  687. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_alerts_page_actions_06_3gmyq3jtvi.js +1 -1
  688. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_apps_[id]_page_actions_1myo_rodrlg3a.js +2 -2
  689. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_apps_page_actions_0ksau5eicvycc.js +1 -1
  690. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_connections_page_actions_1fgolmmpxrouc.js +1 -1
  691. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_containers_page_actions_1ainjsbrnl360.js +1 -1
  692. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_dns_page_actions_17d_lvhl-u_4w.js +1 -1
  693. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_domains_page_actions_1yv3fj_fh-n-5.js +1 -1
  694. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_firebase_page_actions_00wuues_v_j3r.js +1 -1
  695. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_logs_page_actions_0oqh51t2rx6q0.js +1 -1
  696. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_manage_sections_page_actions_1sb2ldu57uj32.js +1 -1
  697. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_settings_page_actions_1363m-cfkgyvr.js +3 -0
  698. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_supabase_page_actions_1f3a_tpkwjo8z.js +1 -1
  699. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_uptime_page_actions_1ylbdz0-ykfh6.js +1 -1
  700. package/server/.next/server/chunks/ssr/_next-internal_server_app_account_password_page_actions_1v4e71_oifbx9.js +1 -1
  701. package/server/.next/server/chunks/ssr/_next-internal_server_app_signin_page_actions_11wzk446p6_zi.js +1 -1
  702. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1kr0-100zz257.js +3 -0
  703. package/server/.next/server/chunks/ssr/{[root-of-the-server]__14e0j38785glf._.js → src_000iv6actp3t_._.js} +2 -2
  704. package/server/.next/server/chunks/ssr/src_0330uf9pdfco9._.js +1 -1
  705. package/server/.next/server/chunks/ssr/src_06tjy8wljego8._.js +1 -1
  706. package/server/.next/server/chunks/ssr/src_084tdkx3c_yqi._.js +1 -1
  707. package/server/.next/server/chunks/ssr/src_0abts6wp5ucc0._.js +1 -1
  708. package/server/.next/server/chunks/ssr/src_0etvjdinp5urq._.js +1 -1
  709. package/server/.next/server/chunks/ssr/src_0kls100c13ocf._.js +3 -0
  710. package/server/.next/server/chunks/ssr/src_0ovx2ogvlz2eh._.js +1 -1
  711. package/server/.next/server/chunks/ssr/src_0ph020gy78gi9._.js +1 -1
  712. package/server/.next/server/chunks/ssr/{src_1_9q6-wstn038._.js → src_0torilf0s7p-e._.js} +2 -2
  713. package/server/.next/server/chunks/ssr/src_10zavgy86u3us._.js +1 -1
  714. package/server/.next/server/chunks/ssr/src_18m06fg8u7_73._.js +3 -0
  715. package/server/.next/server/chunks/ssr/{src_0632mrev4i__u._.js → src_1_b884ul0envr._.js} +2 -2
  716. package/server/.next/server/chunks/ssr/src_1maoe8g5gnv0u._.js +1 -1
  717. package/server/.next/server/chunks/ssr/src_1q-jgpnd3lbcu._.js +1 -1
  718. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_agents_1fyhh1ldgm23z._.js +1 -1
  719. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_ask_ask-form_tsx_18ttm9nna_9y6._.js +1 -1
  720. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_logs_export-button_tsx_1k-crb88n1za_._.js +1 -1
  721. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_models_0ayzqn062pnv5._.js +1 -1
  722. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_playground_playground-view_tsx_18ua5zn_a0mar._.js +1 -1
  723. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_providers_1ru-30x6-uwu4._.js +1 -1
  724. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_quota_limits-form_tsx_1vouaaf560z_x._.js +1 -1
  725. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_usage_limits-form_tsx_0sfk3ver58rqw._.js +1 -1
  726. package/server/.next/server/chunks/ssr/{src_app_(console)_0krr6t05xs2tn._.js → src_app_(console)_0e1l3e9r_60s4._.js} +2 -2
  727. package/server/.next/server/chunks/ssr/{src_app_(console)_0ohoun7l5f2tb._.js → src_app_(console)_124kgxvmqm7j4._.js} +2 -2
  728. package/server/.next/server/chunks/ssr/src_app_(console)_alerts_0j5xlt68kwg8x._.js +2 -2
  729. package/server/.next/server/chunks/ssr/src_app_(console)_apps_[id]_08in-j3xp5mbn._.js +1 -1
  730. package/server/.next/server/chunks/ssr/src_app_(console)_backups_actions_ts_1vpytsdh0wc1f._.js +1 -1
  731. package/server/.next/server/chunks/ssr/src_app_(console)_backups_drive-buttons_tsx_00cku5r_z3jkg._.js +1 -1
  732. package/server/.next/server/chunks/ssr/src_app_(console)_connections_1fahc65-97qla._.js +1 -1
  733. package/server/.next/server/chunks/ssr/src_app_(console)_connections_1fmp_anbkapur._.js +1 -1
  734. package/server/.next/server/chunks/ssr/src_app_(console)_connections_actions_ts_103blv4gzq76z._.js +1 -1
  735. package/server/.next/server/chunks/ssr/src_app_(console)_containers_containers-view_tsx_1xkcrw5gx53xo._.js +1 -1
  736. package/server/.next/server/chunks/ssr/src_app_(console)_create_actions_ts_05-86qr6kfjey._.js +1 -1
  737. package/server/.next/server/chunks/ssr/src_app_(console)_dns_actions_ts_1jzn58xzwbukz._.js +1 -1
  738. package/server/.next/server/chunks/ssr/src_app_(console)_dns_record-actions_tsx_0cqmz51zcuebv._.js +1 -1
  739. package/server/.next/server/chunks/ssr/src_app_(console)_firebase_row-menu_tsx_0hssoq3pqjl-n._.js +1 -1
  740. package/server/.next/server/chunks/ssr/src_app_(console)_logs_log-viewer_tsx_0v3e4cflfk14w._.js +1 -1
  741. package/server/.next/server/chunks/ssr/src_app_(console)_manage_sections_section-switch_tsx_1mfs-o_357i22._.js +1 -1
  742. package/server/.next/server/chunks/ssr/src_app_(console)_monitor-actions_ts_10w3h7myk2ppi._.js +1 -1
  743. package/server/.next/server/chunks/ssr/src_app_(console)_os_os-view_tsx_0xr69f5vtstls._.js +1 -1
  744. package/server/.next/server/chunks/ssr/src_app_(console)_palette-action_ts_0zyw9a9imev6p._.js +1 -1
  745. package/server/.next/server/chunks/ssr/src_app_(console)_reports_reports-view_tsx_1l0apba6g810q._.js +3 -0
  746. package/server/.next/server/chunks/ssr/src_app_(console)_sql_1icfsti04djqe._.js +2 -2
  747. package/server/.next/server/chunks/ssr/src_app_(console)_sql_actions_ts_1oqco02hw-3vp._.js +1 -1
  748. package/server/.next/server/chunks/ssr/src_app_(console)_supabase_0ib3m2ch9gu-4._.js +1 -1
  749. package/server/.next/server/chunks/ssr/src_app_(console)_supabase_1ofufib3-zzt-._.js +1 -1
  750. package/server/.next/server/chunks/ssr/src_app_(console)_supabase_pool-actions_ts_0nzd4vwy_9zzx._.js +1 -1
  751. package/server/.next/server/chunks/ssr/src_app_(console)_uptime_148phfjye0539._.js +1 -1
  752. package/server/.next/server/chunks/ssr/src_app_(console)_uptime_1mnnkfi-2zv-k._.js +1 -1
  753. package/server/.next/server/chunks/ssr/src_app_(console)_vercel-actions_ts_0wpk1yo9v632d._.js +1 -1
  754. package/server/.next/server/chunks/ssr/src_app_mfa_setup_setup-flow_tsx_1fpwygr2vdgnh._.js +1 -1
  755. package/server/.next/server/chunks/ssr/src_app_s_[slug]_page_tsx_0jjqe6py82mpb._.js +1 -1
  756. package/server/.next/server/chunks/ssr/src_app_setup_setup-form_tsx_0izoagdur96e1._.js +1 -1
  757. package/server/.next/server/chunks/ssr/src_app_signin_1_sp0qx8_z7c9._.js +1 -1
  758. package/server/.next/server/chunks/ssr/src_app_signin_1qq0_77_vdutm._.js +3 -0
  759. package/server/.next/server/chunks/ssr/src_components_create_create-dialog_tsx_1s_9clly_m1ru._.js +1 -1
  760. package/server/.next/server/chunks/ssr/src_lib_0eqv8l-v8d5ze._.js +1 -1
  761. package/server/.next/server/chunks/ssr/src_lib_0etkz1wbvfw-k._.js +3 -0
  762. package/server/.next/server/chunks/ssr/src_lib_0jnv54-8idu07._.js +3 -0
  763. package/server/.next/server/chunks/ssr/{src_lib_1zgor_vrwl5kt._.js → src_lib_0o9m8m1sm5759._.js} +2 -2
  764. package/server/.next/server/chunks/ssr/src_lib_1eioo4oodq-8h._.js +1 -1
  765. package/server/.next/server/chunks/ssr/src_lib_1myex-iv3tu5w._.js +23 -0
  766. package/server/.next/server/chunks/ssr/src_lib_1x__dvajr3xvs._.js +3 -0
  767. package/server/.next/server/chunks/ssr/src_lib_alerts_catalog_ts_1ndg28acul64q._.js +1 -1
  768. package/server/.next/server/chunks/ssr/src_lib_branding_ts_03ns4y_8z0-6e._.js +3 -0
  769. package/server/.next/server/chunks/ssr/src_lib_branding_ts_1p22ju9pii41w._.js +3 -0
  770. package/server/.next/server/chunks/ssr/src_lib_collector_self-update_ts_18m5vmptpjhtg._.js +1 -1
  771. package/server/.next/server/chunks/ssr/src_lib_data_sections-db_ts_1ky6-o4z1mimq._.js +2 -2
  772. package/server/.next/server/chunks/ssr/src_lib_data_settings-db_ts_1to3jtggxlaz4._.js +3 -0
  773. package/server/.next/server/chunks/ssr/{src_lib_demo_15e3gnqzod0tj._.js → src_lib_demo_03sepqqjq9usk._.js} +2 -2
  774. package/server/.next/server/chunks/ssr/src_lib_demo_pool_ts_0fpn8acsdk64i._.js +9 -9
  775. package/server/.next/server/chunks/ssr/src_lib_network_dns-edit_ts_0xtxlbd-uwncx._.js +1 -1
  776. package/server/.next/server/chunks/ssr/src_lib_rate-limit_ts_0r-eu6to05vyx._.js +1 -1
  777. package/server/.next/server/chunks/ssr/src_lib_sections_ts_0r8u4nvlpdkgq._.js +1 -1
  778. package/server/.next/server/chunks/ssr/src_lib_view_usage_ts_1h1tj0m3n2vul._.js +1 -1
  779. package/server/.next/server/chunks/ssr/src_private_0iy_wyg2p1jkn._.js +1 -1
  780. package/server/.next/server/chunks/ssr/src_private_1yzfhupl3rlpx._.js +6 -0
  781. package/server/.next/server/chunks/ssr/src_private_actions_decide-form_tsx_1hngtxpyle3v8._.js +1 -1
  782. package/server/.next/server/chunks/ssr/src_private_ai_providers_actions_ts_0wxa36ai6s5nn._.js +1 -1
  783. package/server/.next/server/chunks/ssr/src_private_notes_notes-actions_ts_1g63g8u965fhc._.js +1 -1
  784. package/server/.next/server/middleware-build-manifest.js +14 -3
  785. package/server/.next/server/middleware.js +1 -1
  786. package/server/.next/server/next-font-manifest.js +1 -1
  787. package/server/.next/server/next-font-manifest.json +4 -0
  788. package/server/.next/server/pages/404.html +1 -1
  789. package/server/.next/server/pages/500.html +1 -1
  790. package/server/.next/server/preview-props.json +3 -3
  791. package/server/.next/server/server-reference-manifest.js +1 -1
  792. package/server/.next/server/server-reference-manifest.json +299 -175
  793. package/server/.next/static/chunks/0-v128fmc05bf.js +1 -0
  794. package/server/.next/static/chunks/{2-xolk9x48-v1.js → 02db293pqegsb.js} +1 -1
  795. package/server/.next/static/chunks/{1935vuszybg7i.js → 03t36gu4t__cw.js} +1 -1
  796. package/server/.next/static/chunks/{0ge2nkna7o16p.js → 07p13q6tuqr2r.js} +1 -1
  797. package/server/.next/static/chunks/{1pogexbz36ij8.js → 09qtiybhnydd3.js} +1 -1
  798. package/server/.next/static/chunks/{02kly5fiyvt77.js → 0_5leiwhgv7d6.js} +1 -1
  799. package/server/.next/static/chunks/{3aou6xwhz8z6a.js → 0_ebioh9utve_.js} +1 -1
  800. package/server/.next/static/chunks/{0l61-etojd65n.js → 0_hd-kx6h59a8.js} +1 -1
  801. package/server/.next/static/chunks/{2fvh4wg2kp4c2.js → 0if7r4ximmzwb.js} +1 -1
  802. package/server/.next/static/chunks/{01euc4zjlprz5.js → 0ohm_qoe5thrr.js} +1 -1
  803. package/server/.next/static/chunks/0ssmmtio659vh.js +1 -0
  804. package/server/.next/static/chunks/{2-uaya1_uxlg8.js → 0t0igs6uqhbf0.js} +1 -1
  805. package/server/.next/static/chunks/{0matuoy08desx.js → 0ut06v9sng9g4.js} +1 -1
  806. package/server/.next/static/chunks/0w--mj7tf-9f-.js +1 -0
  807. package/server/.next/static/chunks/131egbz-4xsjl.js +1 -0
  808. package/server/.next/static/chunks/{3ursfc8kxp2ak.js → 14dbn6_jif37v.js} +2 -2
  809. package/server/.next/static/chunks/{2yc4qzglai5fq.js → 15l58okvbrc4_.js} +1 -1
  810. package/server/.next/static/chunks/{22ygzud_kp29f.js → 1_nuygyg_kes5.js} +2 -2
  811. package/server/.next/static/chunks/1bsq3x1wh49bp.js +1 -0
  812. package/server/.next/static/chunks/{1u8mo8jflotrt.js → 1esunqtpnjwkw.js} +1 -1
  813. package/server/.next/static/chunks/{33_2mbxu9wufm.js → 1gizey8idqrkt.js} +1 -1
  814. package/server/.next/static/chunks/{0dq-2wtk0h5u7.js → 1itgjll79qm1l.js} +1 -1
  815. package/server/.next/static/chunks/{0xlfzxnboj4f1.js → 1o27sfcuph25w.js} +1 -1
  816. package/server/.next/static/chunks/{2szchf79vnxgd.js → 1pz19kzjaj8uw.js} +1 -1
  817. package/server/.next/static/chunks/{1truzt17f0fce.js → 1qzun1-bna-sy.js} +1 -1
  818. package/server/.next/static/chunks/1ugo5ye01racz.js +1 -0
  819. package/server/.next/static/chunks/{0v97o46v-74gw.js → 1z5s55o29xqyu.js} +1 -1
  820. package/server/.next/static/chunks/{1uk98c6r9i2bn.js → 21gu7xcv8ix3_.js} +1 -1
  821. package/server/.next/static/chunks/{0xz55932e19r8.js → 21p4xz6ysy8mv.js} +1 -1
  822. package/server/.next/static/chunks/{2ze-y3he5_bb0.js → 22bdke6t-doqh.js} +1 -1
  823. package/server/.next/static/chunks/{1r99dm6-o5qw2.js → 28ljlwfuuz5a1.js} +1 -1
  824. package/server/.next/static/chunks/{363mcu9nd9znh.js → 29lr_ae0uli9o.js} +1 -1
  825. package/server/.next/static/chunks/{2am77mhkx46hz.js → 2jkqfajf-i0r6.js} +2 -2
  826. package/server/.next/static/chunks/{3gkm-ynu4fq5u.js → 2mhli3hpy5vr9.js} +1 -1
  827. package/server/.next/static/chunks/{2p8bv7d7t08z1.js → 2ns8p-8ngmi9h.js} +1 -1
  828. package/server/.next/static/chunks/{3m3vl3n5xs039.js → 2vdwhg5fnxmu-.js} +2 -2
  829. package/server/.next/static/chunks/{3gmm9g54vx4w0.js → 2xgya43mybqsr.js} +1 -1
  830. package/server/.next/static/chunks/{3e-0ejqqa7jwn.js → 2yv02i0h6tppe.js} +1 -1
  831. package/server/.next/static/chunks/{2m8-ctreu-y-r.js → 31gsdl-_t96jr.js} +1 -1
  832. package/server/.next/static/chunks/36ykgce0otv4r.css +3 -0
  833. package/server/.next/static/chunks/{0ey7akdab5tu8.js → 3_lq_n61v4j3r.js} +1 -1
  834. package/server/.next/static/chunks/{1c9eb592ho0-l.js → 3a11wypkvc5ey.js} +1 -1
  835. package/server/.next/static/chunks/{0mbt6eam4qr2f.js → 3g0p8ugqre9ft.js} +1 -1
  836. package/server/.next/static/chunks/{0y99dm8mesqe9.js → 3jq1ae0_9wu-o.js} +1 -1
  837. package/server/.next/static/chunks/3o358k-0653gr.js +1 -0
  838. package/server/.next/static/chunks/3pnzdk7snuzti.js +1 -0
  839. package/server/.next/static/chunks/{3bwwwv3sp7uyn.js → 4114b2ynqr24j.js} +1 -1
  840. package/server/.next/static/chunks/{0-o-4ilzkrd38.js → 41r6z31pmixbr.js} +1 -1
  841. package/server/.next/static/chunks/{3dk6a5gl9glxo.js → 43wc7pgukn2dp.js} +1 -1
  842. package/server/.next/static/chunks/{3jqmm62dbykt1.js → 4451kr05p691g.js} +1 -1
  843. package/server/.next/static/chunks/44t_7rpq23-bz.js +1 -0
  844. package/server/drizzle-selfhost/0011_reports.sql +56 -0
  845. package/server/drizzle-selfhost/0012_report_send_rule.sql +2 -0
  846. package/server/drizzle-selfhost/meta/_journal.json +14 -0
  847. package/server/server.js +1 -1
  848. package/server/src/lib/report/fonts/Geist-Regular.ttf +0 -0
  849. package/server/src/lib/report/fonts/Geist-SemiBold.ttf +0 -0
  850. package/server/src/lib/report/fonts/GeistMono-Regular.ttf +0 -0
  851. package/server/src/lib/report/fonts/OFL.txt +92 -0
  852. package/tools/reset-login.mjs +2 -0
  853. package/server/.next/server/chunks/[root-of-the-server]__04q-9779vl4kn._.js +0 -3
  854. package/server/.next/server/chunks/[root-of-the-server]__04u9e45_g1jdi._.js +0 -3
  855. package/server/.next/server/chunks/[root-of-the-server]__06nrq_1pbp3z-._.js +0 -3
  856. package/server/.next/server/chunks/[root-of-the-server]__06uaa_2zbg57p._.js +0 -3
  857. package/server/.next/server/chunks/[root-of-the-server]__081hh3_un4awi._.js +0 -3
  858. package/server/.next/server/chunks/[root-of-the-server]__09gla7jgbw2bs._.js +0 -3
  859. package/server/.next/server/chunks/[root-of-the-server]__0a0st8-rftztn._.js +0 -3
  860. package/server/.next/server/chunks/[root-of-the-server]__0dfx2psnngcys._.js +0 -3
  861. package/server/.next/server/chunks/[root-of-the-server]__0di45l_tnq1pm._.js +0 -3
  862. package/server/.next/server/chunks/[root-of-the-server]__0ej4hdoyogtji._.js +0 -3
  863. package/server/.next/server/chunks/[root-of-the-server]__0g81f_2ecmg8a._.js +0 -3
  864. package/server/.next/server/chunks/[root-of-the-server]__0jma907r441wi._.js +0 -3
  865. package/server/.next/server/chunks/[root-of-the-server]__0t0dd5t5rch1i._.js +0 -3
  866. package/server/.next/server/chunks/[root-of-the-server]__0ty2qkszfdr5t._.js +0 -3
  867. package/server/.next/server/chunks/[root-of-the-server]__0ugx1i8km15fl._.js +0 -3
  868. package/server/.next/server/chunks/[root-of-the-server]__0ux1hi2fgqxu7._.js +0 -3
  869. package/server/.next/server/chunks/[root-of-the-server]__12tmfv427e9cb._.js +0 -3
  870. package/server/.next/server/chunks/[root-of-the-server]__1481y3utu_a_o._.js +0 -3
  871. package/server/.next/server/chunks/[root-of-the-server]__14e0j38785glf._.js +0 -3
  872. package/server/.next/server/chunks/[root-of-the-server]__1_0vd5-tvmsg8._.js +0 -3
  873. package/server/.next/server/chunks/[root-of-the-server]__1_goy0uhapvk9._.js +0 -3
  874. package/server/.next/server/chunks/[root-of-the-server]__1ac-dzt5bffr2._.js +0 -3
  875. package/server/.next/server/chunks/[root-of-the-server]__1ajyr5xvo1-x5._.js +0 -3
  876. package/server/.next/server/chunks/[root-of-the-server]__1ey2qia7rofoc._.js +0 -3
  877. package/server/.next/server/chunks/[root-of-the-server]__1hlvqq0azku2x._.js +0 -3
  878. package/server/.next/server/chunks/[root-of-the-server]__1hrviq7s700td._.js +0 -3
  879. package/server/.next/server/chunks/[root-of-the-server]__1ifov-udw6__d._.js +0 -3
  880. package/server/.next/server/chunks/[root-of-the-server]__1ig0p-frprcbm._.js +0 -3
  881. package/server/.next/server/chunks/[root-of-the-server]__1ksyvvsf32jfg._.js +0 -3
  882. package/server/.next/server/chunks/[root-of-the-server]__1kzi1du1sliqb._.js +0 -3
  883. package/server/.next/server/chunks/[root-of-the-server]__1mvibnqor6lx_._.js +0 -3
  884. package/server/.next/server/chunks/[root-of-the-server]__1o-zo4qebuqwy._.js +0 -3
  885. package/server/.next/server/chunks/[root-of-the-server]__1po33h2u2o4e_._.js +0 -3
  886. package/server/.next/server/chunks/[root-of-the-server]__1qps9ushddgwe._.js +0 -3
  887. package/server/.next/server/chunks/[root-of-the-server]__1qrj37m-5y-56._.js +0 -3
  888. package/server/.next/server/chunks/[root-of-the-server]__1qyz1wi13rxxb._.js +0 -3
  889. package/server/.next/server/chunks/[root-of-the-server]__1r8mzvf7_9d2k._.js +0 -3
  890. package/server/.next/server/chunks/[root-of-the-server]__1rxke2_vpd7np._.js +0 -3
  891. package/server/.next/server/chunks/[root-of-the-server]__1sjp750034q4j._.js +0 -3
  892. package/server/.next/server/chunks/[root-of-the-server]__1won_frdj9jms._.js +0 -3
  893. package/server/.next/server/chunks/[root-of-the-server]__1wvp6wau5ueb9._.js +0 -3
  894. package/server/.next/server/chunks/[root-of-the-server]__1y9gsf61fh1fv._.js +0 -3
  895. package/server/.next/server/chunks/[root-of-the-server]__1yxudc_keazqo._.js +0 -3
  896. package/server/.next/server/chunks/[root-of-the-server]__1zvy7u_y3fzbz._.js +0 -3
  897. package/server/.next/server/chunks/[root-of-the-server]__208znvanagmpr._.js +0 -3
  898. package/server/.next/server/chunks/[root-of-the-server]__212-4r-w6a9sm._.js +0 -3
  899. package/server/.next/server/chunks/_0-5pjvqu672_v._.js +0 -49
  900. package/server/.next/server/chunks/_02qrz1g8sdvhe._.js +0 -49
  901. package/server/.next/server/chunks/_03qlijpos6a21._.js +0 -3
  902. package/server/.next/server/chunks/_06gv0srpbf_lk._.js +0 -3
  903. package/server/.next/server/chunks/_06lf75x-xhl7v._.js +0 -3
  904. package/server/.next/server/chunks/_0cbxgnkxr1uj8._.js +0 -3
  905. package/server/.next/server/chunks/_0sy878k2ywjbq._.js +0 -3
  906. package/server/.next/server/chunks/_0vjggb8yo5b9f._.js +0 -3
  907. package/server/.next/server/chunks/_0wval7co8z-pk._.js +0 -3
  908. package/server/.next/server/chunks/_103ai6ybnpq1k._.js +0 -3
  909. package/server/.next/server/chunks/_108e86rhye0o1._.js +0 -3
  910. package/server/.next/server/chunks/_12g2m3a5e94_5._.js +0 -3
  911. package/server/.next/server/chunks/_1_son1yzo5xvl._.js +0 -3
  912. package/server/.next/server/chunks/_1ap0upnvy5i_1._.js +0 -49
  913. package/server/.next/server/chunks/_1b-88djuoexz1._.js +0 -49
  914. package/server/.next/server/chunks/_1ctwjh8q__6_g._.js +0 -3
  915. package/server/.next/server/chunks/_1f14qy3kb8iac._.js +0 -3
  916. package/server/.next/server/chunks/_1fj4vzjpusyn8._.js +0 -5
  917. package/server/.next/server/chunks/_1i8u10u8nrzy2._.js +0 -3
  918. package/server/.next/server/chunks/_1k3v1-vgvzm_o._.js +0 -3
  919. package/server/.next/server/chunks/_1kcmwgs544mo-._.js +0 -3
  920. package/server/.next/server/chunks/_1ptcxyn1tzm9r._.js +0 -3
  921. package/server/.next/server/chunks/_1rskctyr7yt-b._.js +0 -3
  922. package/server/.next/server/chunks/node_modules_drizzle-orm_1oeq7sl_gbxs5._.js +0 -4
  923. package/server/.next/server/chunks/node_modules_drizzle-orm_1tmqw7vk5a4ik._.js +0 -4
  924. package/server/.next/server/chunks/src_063xvouojxyoa._.js +0 -3
  925. package/server/.next/server/chunks/src_088gmyaew7ds0._.js +0 -3
  926. package/server/.next/server/chunks/src_08fq45_-8xq5o._.js +0 -3
  927. package/server/.next/server/chunks/src_0hx0sol2clocu._.js +0 -3
  928. package/server/.next/server/chunks/src_0j84o_hkkaeg-._.js +0 -3
  929. package/server/.next/server/chunks/src_0y_4gogmeu-2k._.js +0 -3
  930. package/server/.next/server/chunks/src_13n1vi7uew4iu._.js +0 -3
  931. package/server/.next/server/chunks/src_1_fnzi0em_6er._.js +0 -3
  932. package/server/.next/server/chunks/src_1bqzr81r3wkvi._.js +0 -3
  933. package/server/.next/server/chunks/src_1wduh0eckiwl1._.js +0 -3
  934. package/server/.next/server/chunks/src_lib_0ma36vqcze7a9._.js +0 -7
  935. package/server/.next/server/chunks/src_lib_0ps7mu81f-6s1._.js +0 -7
  936. package/server/.next/server/chunks/src_lib_14grv5a5_n9o0._.js +0 -7
  937. package/server/.next/server/chunks/src_lib_1en6omqx66g9d._.js +0 -23
  938. package/server/.next/server/chunks/src_lib_1znb-e7g8dkgc._.js +0 -7
  939. package/server/.next/server/chunks/src_lib_collector_runners_ts_12z4gtgikss74._.js +0 -21
  940. package/server/.next/server/chunks/src_lib_data_metrics-db_ts_0zp7x6l28a2ep._.js +0 -3
  941. package/server/.next/server/chunks/src_lib_demo_11p30f_ci6ie2._.js +0 -3
  942. package/server/.next/server/chunks/src_lib_notify_lang_ts_1r2w02ctaky7e._.js +0 -3
  943. package/server/.next/server/chunks/ssr/[root-of-the-server]__03xevz8n-mc20._.js +0 -4
  944. package/server/.next/server/chunks/ssr/[root-of-the-server]__07zuxj3veqm14._.js +0 -3
  945. package/server/.next/server/chunks/ssr/[root-of-the-server]__0de1senl_kfo5._.js +0 -3
  946. package/server/.next/server/chunks/ssr/[root-of-the-server]__19twn3g5nv5q1._.js +0 -3
  947. package/server/.next/server/chunks/ssr/[root-of-the-server]__19wvac83zh5-9._.js +0 -3
  948. package/server/.next/server/chunks/ssr/[root-of-the-server]__1m38od9tgaroe._.js +0 -3
  949. package/server/.next/server/chunks/ssr/[root-of-the-server]__1mxpszbk1aup8._.js +0 -4
  950. package/server/.next/server/chunks/ssr/[root-of-the-server]__1tj-iwvrxfd1a._.js +0 -3
  951. package/server/.next/server/chunks/ssr/[root-of-the-server]__1zmuaump_n9c1._.js +0 -3
  952. package/server/.next/server/chunks/ssr/_01n29sxn-py3x._.js +0 -3
  953. package/server/.next/server/chunks/ssr/_03d3sxmob-gr7._.js +0 -3
  954. package/server/.next/server/chunks/ssr/_0c8kew3jsb-yb._.js +0 -3
  955. package/server/.next/server/chunks/ssr/_0qhvl_fw4qetx._.js +0 -4
  956. package/server/.next/server/chunks/ssr/_0rsh9v4b3yj0b._.js +0 -3
  957. package/server/.next/server/chunks/ssr/_0rw2pberdmaa5._.js +0 -3
  958. package/server/.next/server/chunks/ssr/_0zkmkbrbc96-h._.js +0 -3
  959. package/server/.next/server/chunks/ssr/_16vvfyez78u5k._.js +0 -3
  960. package/server/.next/server/chunks/ssr/_1d0anr0hjs5k5._.js +0 -3
  961. package/server/.next/server/chunks/ssr/_1fj4vzjpusyn8._.js +0 -5
  962. package/server/.next/server/chunks/ssr/_1rskctyr7yt-b._.js +0 -3
  963. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_settings_page_actions_12wgjpd0lbh12.js +0 -3
  964. package/server/.next/server/chunks/ssr/src_0jxjbvkvg0bjg._.js +0 -3
  965. package/server/.next/server/chunks/ssr/src_1emolu5lrse98._.js +0 -6
  966. package/server/.next/server/chunks/ssr/src_1sdwdnblbiq_g._.js +0 -3
  967. package/server/.next/server/chunks/ssr/src_app_signin_12a3ifphkkcs7._.js +0 -3
  968. package/server/.next/server/chunks/ssr/src_lib_0nbad7vu413-f._.js +0 -23
  969. package/server/.next/server/chunks/ssr/src_lib_data_metrics-db_ts_0zp7x6l28a2ep._.js +0 -3
  970. package/server/.next/static/chunks/028g933xfv8jn.js +0 -1
  971. package/server/.next/static/chunks/0utjdzwgd7zw2.js +0 -1
  972. package/server/.next/static/chunks/1sa-1lde5_ikt.js +0 -1
  973. package/server/.next/static/chunks/2zzk4wxiacgja.css +0 -3
  974. package/server/.next/static/chunks/33avmrae70_xs.js +0 -1
  975. package/server/.next/static/chunks/3lvz18snt6489.js +0 -1
  976. package/server/.next/static/chunks/3qv9klayap1tz.js +0 -1
  977. package/server/.next/static/chunks/3xkvsl4vbpm41.js +0 -1
  978. package/server/.next/static/chunks/3yu0azvye6wr_.js +0 -1
  979. /package/server/.next/static/{fogXXBSOhoHV3eIf8_j28 → GBOxoOLq1PhjMCzrjHGdg}/_buildManifest.js +0 -0
  980. /package/server/.next/static/{fogXXBSOhoHV3eIf8_j28 → GBOxoOLq1PhjMCzrjHGdg}/_clientMiddlewareManifest.js +0 -0
  981. /package/server/.next/static/{fogXXBSOhoHV3eIf8_j28 → GBOxoOLq1PhjMCzrjHGdg}/_ssgManifest.js +0 -0
@@ -1,3 +1,3 @@
1
- (()=>{"use strict";module.exports=[949663,912283,876808,747556,a=>{var b=a.i(927262),c=a.i(201516),d=a.i(273133),e=a.i(120213),f=a.i(84979),g=a.i(84877),h=a.i(679662);let i=/^v?(\d+)\.(\d+)\.(\d+)(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/;function j(a,b){let c=i.exec(a.trim()),d=i.exec(b.trim());return!!c&&!!d&&c[1]===d[1]&&("0"!==c[1]||c[2]===d[2])&&(0,g.f)(b,a)>=0}let k=/^Watch(?:bell|post): update (?:\S+ (?:to|ke) \S+|\d+ vulnerable packages) in ((?:[A-Za-z0-9._-]+\/){0,3}[A-Za-z0-9._-]+) \(/,l=a=>k.exec(a)?.[1]??null;a.s(["M",0,a=>`Lockfile tertinggal — jalankan npm install (${a.slice(0,5).join(", ")}${a.length>5?`, +${a.length-5}`:""}).`,"a",0,function(a,b,c){if(!a.length)return{ok:!1,why:"nothing"};let d=a.filter(a=>c.includes(a.severity)&&!("moderate"===a.severity&&a.dev));if(!d.length)return{ok:!1,why:"severity"};for(let a of d){let c=b.get(a.package);if(!c||!j(c,a.to))return{ok:!1,why:"major"}}return{ok:!0,upgrades:d}},"m",0,function(a,b){if(!b)return{deps:a,stale:[]};let c=[...Object.entries(b.dependencies).map(([a,b])=>[a,b,!1]),...Object.entries(b.optionalDependencies).map(([a,b])=>[a,b,!1]),...Object.entries(b.devDependencies).map(([a,b])=>[a,b,!0])],d=[...a],e=[];for(let[a,b,f]of c){let c=(0,h.Y)(b);if(!c||!(0,h.C)(c))continue;let i=d.filter(b=>b.name===a);!i.length||i.some(a=>(0,g.f)(a.version,c)>=0)||((d=d.filter(b=>b.name!==a)).push({name:a,version:c,dev:i.every(a=>a.dev)&&f}),e.push(a))}return{deps:d,stale:e}},"D",0,function(a){let b=new Map;for(let c of a){if(!c.direct)continue;let a=b.get(c.package);(!a||0>(0,g.f)(c.installedVersion,a))&&b.set(c.package,c.installedVersion)}return b},"U",0,function(a,b,c=null){for(let d of b){if(l(d.title)!==c)continue;let b=function(a){if(a.packages?.length)return a.packages;let b=/^Watch(?:bell|post): update (\S+) (?:to|ke) /.exec(a.title);return b?[b[1]]:"all"}(d);if("all"===b||a.some(a=>b.includes(a)))return d}return null},"J",0,j],912283);let m=["next","eslint-config-next"],n={CRITICAL:"critical",HIGH:"high",MODERATE:"moderate",LOW:"low",UNKNOWN:"unknown"};function o(a,b){if(!a||!(0,h.C)(a))return null;let c=b.map(a=>a.fixed).filter(b=>!!b&&(0,h.C)(b)&&(0,g.f)(b,a)>0);if(!c.length)return null;let d=c.filter(b=>j(a,b));return(d.length?d:c).reduce((a,b)=>(0,g.f)(b,a)>0?b:a)}function p(a,b){let c=o(a,b),d=c?b.map(a=>a.fixed).filter(a=>!!a&&(0,h.C)(a)&&(0,g.f)(a,c)>0):[],e=d.reduce((a,b)=>null===a||(0,g.f)(b,a)>0?b:a,null),i=e?` (${1===d.length?"one fix needs":"some fixes need"} Next.js ${e.split(".")[0]})`:"";return`Next.js ${a??"(unknown version)"} has ${(0,f.q)(b.length)} (${(0,f.N)(b).toLowerCase()}), ${c?`fixed in ${c}${i}`:"no fix yet"}.`}a.s(["P",0,p,"p",0,function(a){if(!a||"vulnerable"!==a.status||!a.findings.length||!a.version)return null;let b=o(a.version,a.findings);if(!b)return null;let c=n[(0,f.N)(a.findings)],d=[...new Set(a.findings.map(a=>a.id))],e=[...new Set(a.findings.flatMap(a=>a.cve?[a.cve]:[]))];return{from:a.version,to:b,upgrades:[{package:"next",to:b,vulnIds:d,cves:e,severity:c},{package:"eslint-config-next",to:b,vulnIds:[],cves:[],severity:c,companionOf:"next"}],installed:new Map(m.map(b=>[b,a.version]))}},"F",0,function(a){let b=a.find(a=>"next"===a.package&&!a.companionOf);return!b||a.some(a=>"eslint-config-next"===a.package)?a:[...a,{package:"eslint-config-next",to:b.to,vulnIds:[],cves:[],severity:b.severity,companionOf:"next"}]}],876808);let q=a=>Math.round(a).toLocaleString("en-US"),r=(a,b)=>Math.floor((a.getTime()-b.getTime())/864e5),s=(a,b)=>`${a} ${b}${1===a?"":"s"}`,t=a=>{try{let b=new URL(a);return`${b.host}${b.pathname}`}catch{return a}},u=a=>{try{return new URL(a).host}catch{return a}},v=a=>{try{return new URL(a).pathname}catch{return"/"}},w="Down · ",x=new Set(["failure","timed_out","startup_failure"]),y=(a,b,c)=>({rule:a,subject:b,status:"unknown",resourceId:null,accountId:null,title:b,message:"",provider:null,sampleAt:null,...c}),z=a=>"firestore"===a.provider?"firebase":"d1"===a.provider?"cloudflare":a.provider,A=new Set(["turso","upstash","d1"]),B={MonitorDown:(a,b)=>a.monitors.map(a=>{let d=y("MonitorDown",a.id,{resourceId:a.appId,title:`${a.appName} ${"heartbeat"===a.kind?a.url:v(a.url)}`,provider:"vercel",sampleAt:a.lastCheckedAt}),e=b??3;if("heartbeat"===a.kind){let b;return{...d,status:"err"===a.state?"firing":"ok"===a.state?"ok":"unknown",message:`${a.appName} \xb7 ${a.url}: ${b=a.lastError,b?.startsWith(w)?b.slice(w.length):"no ping in time"}.`}}return a.movedTo?{...d,status:"ok",message:`${u(a.url)} moved to ${a.movedTo}; MonitorDomainMoved takes over.`}:a.failStreak>=e?{...d,status:"firing",message:(0,c.H)(a)?`${t(a.url)} failed its check (${(0,c.H)(a)}) on ${e} consecutive checks.`:`${t(a.url)} returned ${a.lastStatus?`HTTP ${a.lastStatus}`:"no answer"} on ${e} consecutive checks.`}:{...d,status:0===a.failStreak&&a.lastCheckedAt?"ok":"unknown",message:`${t(a.url)} answers again.`}}),MonitorDomainMoved:a=>a.monitors.filter(a=>"http"===a.kind).map(a=>{let b=y("MonitorDomainMoved",a.id,{resourceId:a.appId,title:`${a.appName} ${v(a.url)}`,provider:"vercel"});return a.movedTo?{...b,status:"firing",message:`${u(a.url)} is no longer a domain of ${a.appName}; production is on ${a.movedTo}.`}:{...b,status:"ok",message:`The monitor checks ${u(a.url)}, a domain of ${a.appName}.`}}),CollectorStale:(a,b)=>{let c=a.lastMinuteRunAt;return[y("CollectorStale","collector",{status:!c||a.now.getTime()-c.getTime()>(b??5)*6e4?"firing":"ok",title:"collector",message:c?`The last minute run finished ${q((a.now.getTime()-c.getTime())/6e4)} min ago.`:"The collector hasn't finished a run yet."})]},HighLatency:(a,b)=>a.monitors.filter(a=>"http"===a.kind).map(a=>{let c=y("HighLatency",a.id,{resourceId:a.appId,title:`${a.appName} ${v(a.url)}`,provider:"vercel",sampleAt:a.lastCheckedAt});if(a.checksLast10<5||null===a.p95Last10)return c;let d=b??1500;return{...c,status:a.p95Last10>d?"firing":"ok",message:`p95 ${q(a.p95Last10)} ms over the last 10 minutes (limit ${q(d)} ms).`}}),DeploymentFailed:a=>a.apps.map(a=>{let b=y("DeploymentFailed",a.id,{resourceId:a.id,title:a.name,provider:"vercel"}),c=a.latestProduction;return c?"error"===c.state?{...b,status:"firing",message:`Production deployment ${c.sha?c.sha.slice(0,7):"(no commit)"} failed.`}:{...b,status:"building"===c.state?"unknown":"ok"}:{...b,status:"ok"}}),DatabasePaused:a=>a.dbs&&a.dbs.filter(a=>"supabase"===a.provider).map(a=>y("DatabasePaused",a.id,{resourceId:a.id,title:a.name,provider:"supabase",status:"unknown"===a.state?"unknown":"paused"===a.state?"firing":"ok",message:`Supabase project ${a.name} is paused.`})),CertExpiringSoon:(a,b)=>a.domains&&a.domains.map(c=>{let d=y("CertExpiringSoon",c.id,{resourceId:c.id,title:c.name,provider:"cloudflare"});if(!c.tlsNotAfter)return d;let e=r(c.tlsNotAfter,a.now);return{...d,status:e<(b??14)?"firing":"ok",message:`The TLS certificate of ${c.name} expires in ${s(e,"day")}.`}}),DomainExpiringSoon:(a,b)=>a.domains&&a.domains.map(c=>{let d=y("DomainExpiringSoon",c.id,{resourceId:c.id,title:c.name,provider:"cloudflare"});if(!c.expiresAt)return d;let e=r(c.expiresAt,a.now);return{...d,status:e<(b??30)?"firing":"ok",message:`${c.name} expires in ${s(e,"day")}.`}}),StorageAlmostFull:(a,b)=>a.dbs&&a.dbs.filter(a=>"firestore"!==a.provider).map(a=>{let c=y("StorageAlmostFull",a.id,{resourceId:a.id,title:a.name,provider:z(a)});if(null===a.sizeBytes||!a.sizeLimitBytes)return c;let d=a.sizeBytes/a.sizeLimitBytes*100;return{...c,status:d>(b??80)?"firing":"ok",message:`${a.name} uses ${q(a.sizeBytes/1e6)} MB of ${q(a.sizeLimitBytes/1e6)} MB (${q(d)}%).`}}),NeonComputeHigh:(a,b)=>a.dbs&&a.dbs.filter(a=>"neon"===a.provider).map(a=>{let c=y("NeonComputeHigh",a.id,{resourceId:a.id,title:a.name,provider:"neon"});return null===a.cuHours?c:{...c,status:a.cuHours>(b??80)?"firing":"ok",message:`${a.name} used ${q(a.cuHours)} of ${q(a.cuLimit??100)} CU-hours this month.`}}),FirestoreQuotaHigh:(a,b)=>a.dbs&&a.dbs.filter(a=>"firestore"===a.provider).map(a=>{let c=y("FirestoreQuotaHigh",a.id,{resourceId:a.id,title:a.name,provider:"firebase"});if(a.quotaExhausted)return{...c,status:"firing",message:`${a.name} hit a Firestore quota (RESOURCE_EXHAUSTED).`};if(null===a.readsToday||!a.readsLimit)return!1===a.quotaExhausted?{...c,status:"ok"}:c;let d=a.readsToday/a.readsLimit*100;return{...c,status:d>(b??80)?"firing":"ok",message:`${a.name} read ${q(a.readsToday)} of ${q(a.readsLimit)} documents today (${q(d)}%).`}}),AutoPauseRisk:(a,b)=>a.dbs&&a.dbs.filter(a=>"supabase"===a.provider).map(c=>{let d=y("AutoPauseRisk",c.id,{resourceId:c.id,title:c.name,provider:"supabase"});if("paused"===c.state)return{...d,status:"ok"};if(!c.lastApiAt)return d;let e=Math.floor((a.now.getTime()-c.lastApiAt.getTime())/864e5);return{...d,status:e>=(b??4)?"firing":"ok",message:`No API traffic for ${s(e,"day")}. Supabase pauses free projects after about 7 days.`}}),DnsProxiedToVercel:a=>a.dns&&a.dns.map(a=>y("DnsProxiedToVercel",a.id,{resourceId:a.resourceId,title:a.name,provider:"cloudflare",status:a.proxied&&a.pointsToVercel?"firing":"ok",message:`${a.name} points to Vercel through the Cloudflare proxy. Vercel recommends DNS only.`})),DbQuotaHigh:(a,b)=>a.dbs&&a.dbs.filter(a=>A.has(a.provider)).map(a=>{let c=y("DbQuotaHigh",a.id,{resourceId:a.id,title:a.name,provider:z(a)});return null==a.quotaPct?c:{...c,status:a.quotaPct>(b??80)?"firing":"ok",message:`${a.name}: ${a.quotaLabel??"usage"} at ${q(a.quotaPct)}% of the free plan.`}}),ComputeHigh:(a,b)=>a.compute?a.compute.map(c=>{let e=y("ComputeHigh",c.id,{resourceId:c.id,title:c.name,provider:"supabase",sampleAt:c.latest?new Date(c.latest.at):null}),f=(0,d.B)(c.latest,(0,d.V)(b),a.now);return null===f?e:{...e,status:f.length?"firing":"ok",message:f.length?`${c.name}: ${f.join(", ")}.`:`${c.name} compute is back under the limits.`}}):null,CredentialExpiring:(a,b)=>a.accounts.map(c=>{let d=y("CredentialExpiring",c.id,{accountId:c.id,title:`${c.provider} \xb7 ${c.label}`,provider:c.provider});if("drive"===c.provider&&"error"===c.status&&c.lastError?.includes("invalid_grant"))return{...d,status:"firing",message:"Google Drive access was removed (invalid_grant). Reconnect it."};if(!c.expiresAt)return{...d,status:"ok"};let e=r(c.expiresAt,a.now);return{...d,status:e<(b??14)?"firing":"ok",message:e<0?`The ${c.provider} credential ${c.label} has expired.`:`The ${c.provider} credential ${c.label} expires in ${s(e,"day")}.`}}),VulnerableDependency:a=>a.deps?a.deps.flatMap(b=>{let c=a.apps.find(a=>a.id===b.appId);if(!c)return[];let d=y("VulnerableDependency",b.appId,{resourceId:b.appId,title:c.name,provider:"github"});if(b.error)return[d];let f=(0,e.g)(b.vulns);return f?[{...d,status:"firing",message:(0,e.L)(b.vulns),..."critical"===f?{severity:"critical"}:{}}]:[{...d,status:"ok",message:`${c.name} has no moderate, high or critical dependency advisories.`}]}):null,FrameworkVulnerable:a=>a.frameworks?a.frameworks.flatMap(b=>{let c=a.apps.find(a=>a.id===b.appId);if(!c)return[];let d=y("FrameworkVulnerable",b.appId,{resourceId:b.appId,title:c.name});return"ok"===b.status?[{...d,status:"ok",message:`${c.name} runs Next.js ${b.version??"(unknown version)"} with no known advisories.`}]:"vulnerable"===b.status&&b.findings.length?[{...d,status:"firing",message:p(b.version,b.findings),..."CRITICAL"===(0,f.N)(b.findings)?{severity:"critical"}:{}}]:[d]}):null,CiFailing:a=>a.ci?.length?a.ci.flatMap(b=>{let c=a.apps.find(a=>a.id===b.appId);if(!c)return[];let d=y("CiFailing",b.appId,{resourceId:b.appId,title:c.name,provider:"github"});if(!b.run||"none"in b.run||"completed"!==b.run.status)return[d];let e=`The latest ${b.run.name??"Actions"} run on ${b.run.branch??b.branch??"the default branch"}`;return"success"===b.run.conclusion?[{...d,status:"ok",message:`${e} passed.`}]:x.has(b.run.conclusion??"")?[{...d,status:"firing",message:`${e} failed${b.run.runNumber?` (run #${b.run.runNumber})`:""}.`}]:[d]}):null,OsSecurityUpdate:(a,b)=>(function(a,b){if(!a.os)return null;let c=b??7,d=a.os.system,e=a.os.updates.filter(a=>null!==a.score&&a.score>=c).sort((a,b)=>(b.score??0)-(a.score??0)),f=e.slice(0,3).map(a=>`${a.source} fixes ${a.cves[0]} (${a.score.toFixed(1)})${a.cves.length>1?` and ${a.cves.length-1} more`:""}`);e.length>3&&f.push(`${e.length-3} more packages`),a.os.kernelWaiting&&f.push(`kernel ${a.os.kernelWaiting.installed} waits for a reboot`);let g=y("OsSecurityUpdate","os",{title:d});return!f.length&&a.os.partial?[g]:f.length?[{...g,status:"firing",message:`On ${d}: ${f.join("; ")}.`,...e.some(a=>(a.score??0)>=9)?{severity:"critical"}:{}}]:[{...g,status:"ok",message:`On ${d}, no waiting security update fixes a CVE scored ${c.toFixed(1)} or more, and the newest kernel runs.`}]})(a,b)};a.s(["f",0,function(a,c,d){let e=[],f=new Set;for(let g of c){if(!g.enabled||d&&!d.includes(g.key)||!b._[g.key])continue;let c=B[g.key](a,g.threshold);c&&(f.add(g.key),e.push(...c))}return{observations:e,evaluated:f}}],949663);let C=["MonitorDown","HighLatency"],D=["telegram","discord","webhook","smtp"],E=a=>a.channels.some(a=>D.includes(a));function F(a,b){return b.collectorStale&&"CollectorStale"!==a.rule?"CollectorStale":a.resourceId&&C.includes(a.rule)?b.mutedApps.get(a.resourceId)??null:null}let G=(a,b)=>"critical"===b&&"warning"===a?"critical":a,H=(a,b)=>a.silencedUntilResolved||null!==a.silencedUntil&&a.silencedUntil.getTime()>b.getTime(),I=(a,b)=>`${a}|${b}`;a.s(["f",0,function(a,c,d,e,f){let g={open:[],touch:[],resolve:[]},h=new Map(e.map(a=>[a.key,a])),i=new Map(c.map(a=>[I(a.rule,a.subject),a])),j=new Set(a.map(a=>I(a.ruleKey,a.subject))),k=a=>g.resolve.push({id:a.id,pending:a.notifiedOpen?"resolve":null});for(let c of a){let a=h.get(c.ruleKey),e=i.get(I(c.ruleKey,c.subject));if(!a||!a.enabled){g.resolve.push({id:c.id,pending:null});continue}if(!d.has(c.ruleKey))continue;if(!e){g.resolve.push({id:c.id,pending:null});continue}if("unknown"===e.status)continue;let j=e.provider?f.incidents.get(e.provider)??null:null;if("firing"===e.status){let b=F(e,f),d=c.notifiedOpen&&null!==c.lastNotifiedAt&&f.now.getTime()-c.lastNotifiedAt.getTime()>=216e5,h={id:c.id,okStreak:0,lastSampleAt:e.sampleAt??c.lastSampleAt,lastSeenAt:f.now,message:e.message,causedBy:b,providerIncident:j},i=!c.notifiedOpen&&(!c.pendingSince||f.now.getTime()-c.pendingSince.getTime()>=216e5);(d||i)&&!H(c,f.now)&&!b&&null===c.pending&&E(a)&&(h.pending=d?"repeat":"open"),g.touch.push(h);continue}if(!b._[c.ruleKey].sampled||null===e.sampleAt){k(c);continue}if(!(null===c.lastSampleAt||e.sampleAt.getTime()>c.lastSampleAt.getTime()))continue;let l=c.okStreak+1;l>=2?k(c):g.touch.push({id:c.id,okStreak:l,lastSampleAt:e.sampleAt})}for(let a of c){if("firing"!==a.status||j.has(I(a.rule,a.subject))||f.maintenance.has(a.subject)||a.resourceId&&f.maintenance.has(a.resourceId))continue;let b=h.get(a.rule);if(!b)continue;let c=F(a,f);g.open.push({ruleKey:a.rule,subject:a.subject,resourceId:a.resourceId,accountId:a.accountId,severity:G(b.severity,a.severity),title:a.title,message:a.message,startedAt:f.now,lastSeenAt:f.now,lastSampleAt:a.sampleAt,causedBy:c,providerIncident:a.provider?f.incidents.get(a.provider)??null:null,pending:c||!E(b)?null:"open"})}return g}],747556)},708621,a=>{let b=["status","severity","rule","target","detail","cause","step","since","threshold"],c=["id","en"],d={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}"},e=/\{([a-zA-Z_]+)\}/g,f=a=>a.replace(/\r\n?/g,"\n").replace(/[ \t]+$/gm,"").trim();function g(a){if(a.length>1e3)return`Keep it under ${1e3.toLocaleString("en-US")} characters.`;for(let[,c]of a.matchAll(e))if(!b.includes(c))return`{${c}} isn't a field. Use ${b.map(a=>`{${a}}`).join(", ")}.`;return null}a.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,c,"_",0,function(a){if(!a||"object"!=typeof a||Array.isArray(a))return{};let b={};for(let[d,e]of Object.entries(a)){if(!e||"object"!=typeof e)continue;let a={};for(let b of c){let c=e[b];"string"==typeof c&&c.trim()&&null===g(c)&&(a[b]=c)}Object.keys(a).length&&(b[d]=a)}return b},"l",0,function(a,b){return f(a).split("\n").flatMap(a=>{let c=[...a.matchAll(e)].map(a=>a[1]).filter(a=>Object.hasOwn(b,a));return c.length&&c.every(a=>!b[a].trim())?[]:[a.replace(e,(a,c)=>Object.hasOwn(b,c)?b[c]:a)]}).join("\n").replace(/\n{3,}/g,"\n\n").trim()},"F",0,function(a,b){let c="string"==typeof a?f(a):"";return c&&c!==d[b]?c:null},"m",0,g])},455317,71575,569057,930270,a=>{var b=a.i(93321),c=a.i(530385),d=a.i(351674),e=a.i(548734),f=a.i(837137),g=a.i(927262),h=a.i(949663),i=a.i(747556),j=a.i(708621),k=a.i(519051),l=a.i(160147),m=a.i(245710);function n(a,b){return"1h"===a?{silencedUntil:new Date(b.getTime()+36e5),silencedUntilResolved:!1}:{silencedUntil:null,silencedUntilResolved:!0}}a.s(["_",0,[["critical","Critical"],["warning","Warning"],["info","Info"]],"O",0,function(a,b){return a.silencedUntilResolved?{state:"off",text:"Silenced until resolved"}:a.silencedUntil&&a.silencedUntil.getTime()>b.getTime()?{state:"off",text:`Silenced until ${(0,m.U)(a.silencedUntil)}`}:"open"===a.pending||"repeat"===a.pending?{state:"build",text:"Sending…"}:a.causedBy&&!a.notifiedOpen?{state:"off",text:"Muted"}:a.lastNotifiedAt?{state:"ok",text:`Sent ${(0,m.U)(a.lastNotifiedAt)}`}:{state:"off",text:"Digest only"}},"G",0,function(a){return a.enabled?a.firing?{state:"err",text:`Firing \xb7 ${a.firing}`}:a.hasData?{state:"off",text:"Inactive"}:{state:"unknown",text:"No data yet"}:{state:"off",text:"Disabled"}},"A",0,n,"M",0,function(a,b){let c=Math.max(1,Math.round((b.getTime()-a.getTime())/6e4));if(c<60)return`${c} min`;let d=Math.floor(c/60);return d<24?`${d} h ${c%60} min`:`${Math.floor(d/24)} d ${d%24} h`}],71575);var o=a.i(639271),p=a.i(656298),q=a.i(688275),r=a.i(893893),s=a.i(672319),t=a.i(188546),u=a.i(233711),v=a.i(460565);async function w(){let[a]=await (0,e.f)().select({at:f.collectorRuns.finishedAt}).from(f.collectorRuns).where((0,b.b)((0,b.E)(f.collectorRuns.finishedAt),(0,b.y)(f.collectorRuns.trigger,["cron_job_org","qstash","manual"]))).orderBy((0,c.A)(f.collectorRuns.finishedAt)).limit(1);return a?.at??null}async function x(){let[a]=await (0,e.f)().select({at:f.collectorRuns.finishedAt}).from(f.collectorRuns).where((0,b.b)((0,b.E)(f.collectorRuns.finishedAt),(0,b.y)(f.collectorRuns.trigger,["cron_job_org","manual"]))).orderBy((0,c.A)(f.collectorRuns.finishedAt)).limit(1);return a?.at??null}async function y(){let[a]=await (0,e.f)().select({threshold:f.alertRules.threshold}).from(f.alertRules).where((0,b.u)(f.alertRules.key,"CollectorStale")).limit(1);return(0,v.X)(a?.threshold)}a.s(["o",0,y,"D",0,w,"d",0,x],569057);var z=a.i(683439);async function A(a,c=new Date){var d;let g=a.filter(z.f);return g.length?(d=await (0,e.f)().select({appId:f.appRepos.appId,repo:f.githubRepos.fullName,branch:f.githubRepos.defaultBranch,run:f.githubRepos.actions,checkedAt:f.githubRepos.actionsCheckedAt,goneAt:f.githubRepos.goneAt}).from(f.appRepos).innerJoin(f.githubRepos,(0,b.u)(f.githubRepos.id,f.appRepos.repoId)).where((0,b.y)(f.appRepos.appId,g)),d.filter(a=>a.run&&!a.goneAt).map(a=>({appId:a.appId,repo:a.repo,branch:a.branch,run:a.checkedAt&&c.getTime()-a.checkedAt.getTime()<=1728e5?a.run:null}))):[]}var B=a.i(351917),C=a.i(865653),D=a.i(367247),E=a.i(436357),F=a.i(912283),G=a.i(358179),H=a.i(492665),I=a.i(679662),J=a.i(852539),K=a.i(33135),L=a.i(533957);let M="OpsConsole-Deps/1.0 (+https://watchbell.west-solutions.web.id)";async function N(a,b,c,d){let e=d.deadline-Date.now();if(e<500)return{ok:!1,error:"No time left for OSV.dev"};let f=AbortSignal.timeout(e);return P(a,{method:"POST",headers:{"content-type":"application/json","user-agent":M},body:JSON.stringify(b),signal:f},c,f,d)}async function O(a,b,c){let d=c.deadline-Date.now();if(d<500)return{ok:!1,error:"No time left for OSV.dev"};let e=AbortSignal.timeout(Math.min(d,8e3));return P(a,{method:"GET",headers:{"user-agent":M},signal:e},b,e,c)}async function P(a,b,c,d,e){let f;try{f=await (e.fetch??fetch)(a,{...b,redirect:"error",cache:"no-store"})}catch(a){return{ok:!1,error:(0,L.t)(a)?"OSV.dev didn't answer in time":"Couldn't reach OSV.dev"}}if(!f.ok)return await f.body?.cancel().catch(()=>void 0),{ok:!1,error:`OSV.dev answered HTTP ${f.status}`};try{let{bytes:a,truncated:b}=await (0,K.z)(f,c,(0,K.X)(d));if(b)return{ok:!1,error:"OSV.dev sent too large an answer"};return{ok:!0,body:JSON.parse(new TextDecoder().decode(a))}}catch(a){return{ok:!1,error:(0,L.t)(a)?"OSV.dev didn't answer in time":"OSV.dev sent an answer we couldn't read"}}}async function Q(a,b){let c=[];for(let d of(0,J.f)(a)){let a=await N(J.n,d,4194304,b);if(!a.ok)return a;let e=(0,J.j)(a.body,d.queries.length);if(!e)return{ok:!1,error:"OSV.dev sent an answer we couldn't read"};c.push(...e)}return{ok:!0,ids:c}}async function R(a,b){let c=[...new Set(a)].filter(J.G);if(c.length>300)return{ok:!1,error:`Too many advisories to read in one scan (${c.length})`};let d=new Map,e=null;for(let a=0;a<c.length&&!e;a+=8)await Promise.all(c.slice(a,a+8).map(async a=>{let c=await O(`${J.W}${encodeURIComponent(a)}`,1048576,b),f=c.ok?(0,J.O)(c.body):null;f?d.set(a,f):e??=c.ok?"OSV.dev sent an advisory we couldn't read":c.error}));return e?{ok:!1,error:e}:{ok:!0,map:d}}var S=a.i(521050),T=a.i(120213),U=a.i(689963),V=a.i(26972),W=a.i(427221),X=a.i(811365),Y=a.i(760417);let Z=U.z.array(V.z.object({name:W.z.string(),type:W.z.string(),sha:W.z.string(),size:X.z.number().optional()}));async function $(a,b,c,d={},e=null){if(!(0,Y.M)(b)||!(0,Y.c)(c))return{ok:!1,kind:"format",error:"That isn't a repository name or ref."};if(null!==e&&(0,S.Q)(e)!==e)return{ok:!1,kind:"format",error:"That isn't a folder in a repository."};let f=e?e.split("/").map(encodeURIComponent).join("/"):"",g=await (0,Y.j)(`/repos/${(0,Y.f)(b)}/contents/${f}?ref=${encodeURIComponent(c)}`,a,d);if(!g.ok)return g;let h=Z.safeParse(g.data);return h.success?{ok:!0,data:h.data.filter(a=>"file"===a.type&&/^[0-9a-f]{40}$/.test(a.sha)).map(a=>({name:a.name,sha:a.sha,size:a.size??0}))}:{ok:!1,kind:"format",error:"GitHub answered the file list in a format the console doesn't recognise."}}async function _(a,b,c,d={}){if(!(0,Y.M)(b)||!(0,Y.c)(c))return{ok:!1,kind:"format",error:"That isn't a repository name or branch."};let e=await (0,Y.j)(`/repos/${(0,Y.f)(b)}/git/ref/heads/${c.split("/").map(encodeURIComponent).join("/")}`,a,d);return e.ok?{ok:!0,data:!0}:"missing"===e.kind?{ok:!0,data:!1}:e}function aa(a,b,c,d,e,f={}){return(0,Y.V)(a,b,c,d,e,f)}async function ab(a,b,c={}){if(!(0,Y.M)(b))return{ok:!1,kind:"format",error:"That isn't a repository name."};let d=await (0,Y.j)(`/repos/${(0,Y.f)(b)}/dependabot/alerts?state=open&ecosystem=npm&per_page=100`,a,c);if(!d.ok)return"scope"===d.kind||"missing"===d.kind?{ok:!0,data:{denied:!0}}:d;let e=(0,T.E)(d.data);return e?{ok:!0,data:{alerts:e}}:{ok:!1,kind:"format",error:"GitHub answered the Dependabot alerts in a format the console doesn't recognise."}}var ac=a.i(751263);async function ad(){let[a]=await (0,e.f)().select().from(f.accounts).where((0,b.u)(f.accounts.provider,"github")).orderBy((0,c.M)(f.accounts.createdAt)).limit(1);if(!a)return{error:"GitHub isn't connected."};let d=(0,G.V)({ciphertext:a.credentialCiphertext,iv:a.credentialIv},(0,H.f)().OPS_ENCRYPTION_KEY);return d?{token:d,accountId:a.id}:{error:"Can't read the stored GitHub credential. Replace it on Connections."}}async function ae(){let[a]=await (0,e.f)().select({value:f.settings.value}).from(f.settings).where((0,b.u)(f.settings.key,"deps.scanAll")).limit(1);return a?.value===!0}let af=a=>{let b=(0,ac.w)(a);return{dir:(0,S.Q)((a??{}).rootDirectory),unsupported:(0,S.l)((a??{}).rootDirectoryUnsupported),branch:(0,ac.i)((0,ac.V)(a),null),...b?{fallback:b}:{}}};async function ag(a){let c=[...new Set(a.filter(z.f))],d=new Map;if(!c.length)return d;let g=await (0,e.f)().select({repoId:f.appRepos.repoId,name:f.resources.name,monitored:f.resources.monitored,meta:f.resources.meta}).from(f.appRepos).innerJoin(f.resources,(0,b.u)(f.resources.id,f.appRepos.appId)).where((0,b.b)((0,b.y)(f.appRepos.repoId,c),(0,b.M)(f.resources.goneAt))).limit(1e3);for(let a of(g.sort((a,b)=>Number(!!b.monitored)-Number(!!a.monitored)||(a.name<b.name?-1:+(a.name>b.name))),g))d.has(a.repoId)||d.set(a.repoId,af(a.meta));return d}async function ah(){let a={id:f.githubRepos.id,fullName:f.githubRepos.fullName,defaultBranch:f.githubRepos.defaultBranch,scannedAt:f.dependencyScans.scannedAt},c=(0,b.b)((0,b.M)(f.githubRepos.goneAt),(0,b.u)(f.githubRepos.archived,!1)),d=await ae()?await (0,e.f)().select(a).from(f.githubRepos).leftJoin(f.dependencyScans,(0,b.u)(f.dependencyScans.repoId,f.githubRepos.id)).where(c).limit(500):await (0,e.f)().selectDistinct(a).from(f.appRepos).innerJoin(f.githubRepos,(0,b.u)(f.githubRepos.id,f.appRepos.repoId)).leftJoin(f.dependencyScans,(0,b.u)(f.dependencyScans.repoId,f.githubRepos.id)).where(c).limit(500),g=d.length?await ag(d.map(a=>a.id)):new Map;return(0,T.M)(d.map(a=>{let b=g.get(a.id);return{...a,rootDir:b?.dir??null,rootDirUnsupported:b?.unsupported??null,prodBranch:b?.branch??null,...b?.fallback?{prodFallback:b.fallback}:{}}}))}let ai=(a,b)=>a.length>b?`${a.slice(0,b-1)}…`:a;async function aj(a,b){let c=new Date;await (0,e.f)().insert(f.dependencyScans).values({repoId:a,...b,updatedAt:c}).onConflictDoUpdate({target:f.dependencyScans.repoId,set:{...b,updatedAt:c}})}async function ak(a){return(0,e.f)().select({id:f.dependencyVulns.id,package:f.dependencyVulns.package,installedVersion:f.dependencyVulns.installedVersion,vulnId:f.dependencyVulns.vulnId,severity:f.dependencyVulns.severity,fixedVersion:f.dependencyVulns.fixedVersion,summary:f.dependencyVulns.summary,aliases:f.dependencyVulns.aliases,dev:f.dependencyVulns.dev,direct:f.dependencyVulns.direct,source:f.dependencyVulns.source}).from(f.dependencyVulns).where((0,b.b)((0,b.u)(f.dependencyVulns.repoId,a),(0,b.M)(f.dependencyVulns.resolvedAt))).limit(2e3)}function al(a,b){for(let c of I.a){let d=a.find(a=>a.name===c.path);if(d)return{path:(0,S.H)(b,c.path),kind:c.kind,sha:d.sha}}return null}async function am(a,c,d,g={}){let h=()=>({...g,timeoutMs:Math.max(1e3,Math.min(d-Date.now(),1e4))}),i=async a=>(await aj(c.id,{error:ai(a,300),scannedAt:new Date}).catch(()=>void 0),{status:"failed",error:a}),j=c.defaultBranch??"HEAD",k=null;for(let b of[c.prodBranch,c.prodFallback]){if(b&&b===c.defaultBranch)break;let d=(0,ac.i)(b,c.defaultBranch);if(!d)continue;let e=await _(a,c.fullName,d,h());if(!e.ok)return i(e.error);if(e.data){k=d;break}}let l=null!==k;k&&(j=k);let m=l?`Scanned ${k}, the branch production is built from.`:null,n=(0,S.Q)(c.rootDir),o=n?null:(0,S.l)(c.rootDirUnsupported),p=o?`The Vercel Root Directory "${o}" couldn't be used (Watchbell reads plain folder names, at most 4 deep); scanned the repository root.`:null,q=await $(a,c.fullName,j,h(),n);if(!q.ok)return i(n&&"missing"===q.kind?`The folder ${(0,S.x)(n)} isn't in ${c.fullName} on ${j}.`:q.error);let r=al(q.data,n),s=q.data.find(a=>"package.json"===a.name)??null,t=!1,u=null;if(n&&s&&!r){let b=await $(a,c.fullName,j,h());if(!b.ok)return i(b.error);t=null!==(r=al(u=b.data,null))}let v=r?r.sha:s?`pkg:${s.sha}`:null,w=v&&n?`${n}:${v}${t&&s?`+${s.sha}`:""}`:v&&o?`odd:${v}`:v,x=w&&l?`br:${k}:${w}`:w,[y]=await (0,e.f)().select().from(f.dependencyScans).where((0,b.u)(f.dependencyScans.repoId,c.id)).limit(1),z=new Date;if(!(0,T.U)(y??null,x,z,g.force))return{status:"unchanged"};if(!x){let a=await ak(c.id);return a.length&&await (0,e.f)().update(f.dependencyVulns).set({resolvedAt:z}).where((0,b.y)(f.dependencyVulns.id,a.map(a=>a.id))),await aj(c.id,{lockfilePath:null,lockfileSha:null,packageCount:0,scannedAt:z,queriedAt:z,error:null,note:ai([m,p,`No package.json or lockfile ${n?"in":"at"} ${(0,S.x)(n)}.`].filter(Boolean).join(" "),300)}),{status:"scanned",vulns:0,packages:0,note:"no package.json"}}let A=(0,S.H)(n,"package.json"),B=s?await aa(a,c.fullName,A,j,Y.$,h()):null;if(B&&!B.ok)return i(B.error);let C=B?.ok&&B.data?(0,I.b)(B.data):null,D=null,E="package-json",G=t&&r?`Scanned ${(0,S.x)(n)} with the repository root's ${r.path} (workspaces).`:null;if(r){if(2e3>d-Date.now())return i("Time budget used before the lockfile was read; the next run tries again.");let b=await aa(a,c.fullName,r.path,j,0xf00000,{...g,timeoutMs:Math.max(1e3,Math.min(d-Date.now(),2e4))});if(!b.ok)return i(b.error);let e=!0;if(t&&n&&b.data&&!(0,S.p)(r.kind,b.data,n)){let b=u?.some(a=>"package.json"===a.name)?await aa(a,c.fullName,"package.json",j,Y.$,h()):null;if(b&&!b.ok)return i(b.error);e=(0,S.F)(b?.data??null,n)}e?(D=b.data?(0,I.D)(r.kind,b.data):null,E=r.kind,D||(G=[G,`${r.path} couldn't be read; the versions come from package.json ranges (approximate).`].filter(Boolean).join(" "))):(G=`The repository root's ${r.path} isn't a workspace that includes ${n}, so the versions come from ${A} ranges (approximate).`,r=null)}if(D){let a=(0,F.m)(D,C);D=a.deps,a.stale.length&&(G=[G,(0,F.M)(a.stale)].filter(Boolean).join(" "))}else D=C?(0,I.e)(C):[],E="package-json",G??=r?null:"No lockfile: the versions come from package.json ranges (approximate).";let H=await ak(c.id),K=[];if(D.length){let a=await Q(D,{fetch:g.fetch,deadline:d});if(!a.ok)return i(a.error);let b=(0,T.A)(H,!0===g.force),c=await R((0,T.z)(D,a.ids,b),{fetch:g.fetch,deadline:d});if(!c.ok)return i(c.error);K=(0,J.i)(D,a.ids,c.map,b)}if(d-Date.now()>1500){let b=await ab(a,c.fullName,h());b.ok&&"alerts"in b.data?K=(0,T.R)(K,b.data.alerts,D):b.ok&&(G=[G,"Dependabot alerts aren't readable with this token (optional: Dependabot alerts: Read)."].filter(Boolean).join(" "))}let L=(0,T.h)(H,K,(0,I.K)(C));G=[m,p,G].filter(Boolean).join(" ")||null;let M=new Date;return await (0,e.f)().transaction(async a=>{for(let d of(L.insert.length&&await a.insert(f.dependencyVulns).values(L.insert.map(a=>({repoId:c.id,package:a.package,installedVersion:a.installedVersion,vulnId:a.vulnId,aliases:a.aliases,severity:a.severity,fixedVersion:a.fixedVersion,summary:a.summary,direct:a.direct,dev:a.dev,source:a.source,firstSeenAt:M,lastSeenAt:M}))).onConflictDoNothing(),L.update))await a.update(f.dependencyVulns).set({severity:d.severity,fixedVersion:d.fixedVersion,summary:d.summary,aliases:d.aliases,dev:d.dev,direct:d.direct,lastSeenAt:M}).where((0,b.u)(f.dependencyVulns.id,d.id));L.resolve.length&&await a.update(f.dependencyVulns).set({resolvedAt:M}).where((0,b.b)((0,b.y)(f.dependencyVulns.id,L.resolve),(0,b.M)(f.dependencyVulns.resolvedAt))),await a.insert(f.dependencyScans).values({repoId:c.id,lockfilePath:r?.path??(s?A:null),lockfileSha:x,packageCount:D.length,scannedAt:M,queriedAt:M,error:null,note:G?ai(G,300):null,updatedAt:M}).onConflictDoUpdate({target:f.dependencyScans.repoId,set:{lockfilePath:r?.path??(s?A:null),lockfileSha:x,packageCount:D.length,scannedAt:M,queriedAt:M,error:null,note:G?ai(G,300):null,updatedAt:M}})}),{status:"scanned",vulns:L.insert.length+L.update.length,packages:D.length,note:"package-json"===E?G:null}}async function an(a,c={}){var d,g;let h,i,j,k,l=await ad();if("error"in l)return{error:l.error};let{first:m,only:n,skip:o,...p}=c,q=(d=await ah(),h=(g={first:m,only:n,skip:o}).only?new Set(g.only):null,i=new Set(g.skip??[]),j=(h?d.filter(a=>h.has(a.id)):d).filter(a=>!i.has(a.id)),k=new Set(g.first??[]),[...j.filter(a=>k.has(a.id)),...j.filter(a=>!k.has(a.id))]),r={scanned:0,unchanged:0,failed:[],left:0,done:[],listed:q.map(a=>a.id)};for(let[b,c]of q.entries()){if(a-Date.now()<4e3){r.left=q.length-b;break}r.done.push(c.id);try{let b=await am(l.token,c,a,p);"scanned"===b.status?r.scanned++:"unchanged"===b.status?r.unchanged++:r.failed.push(`${c.fullName}: ${b.error}`)}catch(a){r.failed.push(`${c.fullName}: ${a instanceof Error?a.name:"error"}`)}}return await (0,e.f)().delete(f.dependencyVulns).where((0,b.b)((0,b.E)(f.dependencyVulns.resolvedAt),(0,b.S)(f.dependencyVulns.resolvedAt,new Date(Date.now()-7776e6)))).catch(()=>void 0),r}let ao=async()=>(await (0,e.f)().select({id:f.accounts.id}).from(f.accounts).where((0,b.u)(f.accounts.provider,"github")).limit(1)).length>0;async function ap(a,c,d={}){let g,h,i,{marked:j,onlyMarked:k}=c;if(!await ao())return{problem:null,settled:[...j],done:[],complete:!0};let l=j.filter(z.f),m=l.length?await (0,e.f)().select({appId:f.appRepos.appId,repoId:f.appRepos.repoId}).from(f.appRepos).where((0,b.y)(f.appRepos.appId,l)).limit(5*l.length):[],n=[...new Set(m.map(a=>a.repoId))],o=a=>m.filter(b=>b.appId===a).map(a=>a.repoId),p=j.filter(a=>!o(a).length);if(k&&!n.length)return{problem:null,settled:[...j],done:[],complete:!0};if(a-Date.now()<4e3)return{problem:null,settled:p,done:[],complete:!1};let q=(c.skip??[]).filter(a=>!n.includes(a)),r=await an(a,{...d,first:n,...k?{only:n}:{skip:q}});if("error"in r){let a;return{problem:(a=r.error,/didn't answer in time|no time left|time budget|rate limit/i.test(a))?null:r.error,settled:[...j],done:[],complete:!0}}let s=new Set([...r.done,...n.filter(a=>!r.listed.includes(a))]);return{problem:(g=r.failed.filter(a=>!/didn't answer in time|no time left|time budget|rate limit/i.test(a)),(h=r.failed.length-g.length+(r.left??0))&&console.info(`deps: ${h} repositor${1===h?"y":"ies"} wait for the next run`),i=g.slice(0,3),g.length>3&&i.push(`+${g.length-3} more`),i.length?i.join("; "):null),settled:j.filter(a=>o(a).every(a=>s.has(a))),done:r.done,complete:0===r.left}}async function aq(a){let d={repo:null,scan:null,vulns:[],writeConnected:!1};if(!(0,z.f)(a))return d;let[g]=await (0,e.f)().select({id:f.githubRepos.id,fullName:f.githubRepos.fullName}).from(f.appRepos).innerJoin(f.githubRepos,(0,b.u)(f.githubRepos.id,f.appRepos.repoId)).where((0,b.u)(f.appRepos.appId,a)).limit(1);if(!g)return d;let[[h],i,[j]]=await Promise.all([(0,e.f)().select({scannedAt:f.dependencyScans.scannedAt,lockfilePath:f.dependencyScans.lockfilePath,packageCount:f.dependencyScans.packageCount,error:f.dependencyScans.error,note:f.dependencyScans.note}).from(f.dependencyScans).where((0,b.u)(f.dependencyScans.repoId,g.id)).limit(1),(0,e.f)().select({package:f.dependencyVulns.package,installedVersion:f.dependencyVulns.installedVersion,vulnId:f.dependencyVulns.vulnId,severity:f.dependencyVulns.severity,fixedVersion:f.dependencyVulns.fixedVersion,summary:f.dependencyVulns.summary,aliases:f.dependencyVulns.aliases,dev:f.dependencyVulns.dev,direct:f.dependencyVulns.direct,firstSeenAt:f.dependencyVulns.firstSeenAt}).from(f.dependencyVulns).where((0,b.b)((0,b.u)(f.dependencyVulns.repoId,g.id),(0,b.M)(f.dependencyVulns.resolvedAt))).limit(2e3),(0,e.f)().select({id:f.accounts.id}).from(f.accounts).where((0,b.u)(f.accounts.provider,"github_write")).limit(1)]);i.sort((a,b)=>(0,T.t)(a.severity)-(0,T.t)(b.severity)||(a.package<b.package?-1:+(a.package>b.package))||(a.vulnId<b.vulnId?-1:1));let k=await (0,e.f)().select({number:f.dependencyPrs.number,stage:f.dependencyPrs.stage,stageText:f.dependencyPrs.stageText,openedAt:f.dependencyPrs.openedAt}).from(f.dependencyPrs).where((0,b.b)((0,b.u)(f.dependencyPrs.repoId,g.id),(0,b.B)(f.dependencyPrs.openedAt,new Date(Date.now()-12096e5)))).orderBy((0,c.A)(f.dependencyPrs.openedAt)).limit(5).catch(()=>[]);return{repo:g,scan:h??null,vulns:i,writeConnected:!!j,prs:(k??[]).map(a=>({...a,fullName:g.fullName}))}}async function ar(a,c={}){if(!(0,z.f)(a))return{ok:!1,error:"That app no longer exists."};let[g]=await (0,e.f)().select({app:f.resources.name,id:f.githubRepos.id,fullName:f.githubRepos.fullName,defaultBranch:f.githubRepos.defaultBranch,goneAt:f.githubRepos.goneAt,meta:f.resources.meta}).from(f.appRepos).innerJoin(f.githubRepos,(0,b.u)(f.githubRepos.id,f.appRepos.repoId)).innerJoin(f.resources,(0,b.u)(f.resources.id,f.appRepos.appId)).where((0,b.u)(f.appRepos.appId,a)).limit(1);if(!g)return{ok:!1,error:"Link a repository first."};if(g.goneAt)return{ok:!1,error:"That repository is no longer shared with the GitHub token."};let h=await ad();if("error"in h)return{ok:!1,error:h.error};let i=af(g.meta),j=await am(h.token,{id:g.id,fullName:g.fullName,defaultBranch:g.defaultBranch,scannedAt:null,rootDir:i.dir,rootDirUnsupported:i.unsupported,prodBranch:i.branch,prodFallback:i.fallback??null},Date.now()+4e4,{...c,force:!0});if("failed"===j.status)return{ok:!1,error:`The scan failed: ${j.error}`};let[k]=await (0,e.f)().select({n:d.B`count(*)::int`}).from(f.dependencyVulns).where((0,b.b)((0,b.u)(f.dependencyVulns.repoId,g.id),(0,b.M)(f.dependencyVulns.resolvedAt))),l=k?.n??0;return{ok:!0,app:g.app,repo:g.fullName,vulns:l,message:l?`${l} known vulnerabilit${1===l?"y":"ies"} in ${j.packages??0} packages.`:`No known vulnerabilities in ${j.packages??0} packages.`}}async function as(a){let c=a.filter(z.f);if(!c.length)return[];let d=await (0,e.f)().select({appId:f.appRepos.appId,repoId:f.appRepos.repoId,error:f.dependencyScans.error}).from(f.appRepos).innerJoin(f.dependencyScans,(0,b.u)(f.dependencyScans.repoId,f.appRepos.repoId)).where((0,b.b)((0,b.y)(f.appRepos.appId,c),(0,b.E)(f.dependencyScans.scannedAt)));if(!d.length)return[];let g=await (0,e.f)().select({repoId:f.dependencyVulns.repoId,package:f.dependencyVulns.package,installedVersion:f.dependencyVulns.installedVersion,fixedVersion:f.dependencyVulns.fixedVersion,severity:f.dependencyVulns.severity,summary:f.dependencyVulns.summary,dev:f.dependencyVulns.dev,direct:f.dependencyVulns.direct}).from(f.dependencyVulns).where((0,b.b)((0,b.y)(f.dependencyVulns.repoId,[...new Set(d.map(a=>a.repoId))]),(0,b.M)(f.dependencyVulns.resolvedAt))).limit(1e4);return d.map(a=>({appId:a.appId,repoId:a.repoId,error:a.error,vulns:g.filter(b=>b.repoId===a.repoId).map(a=>({package:a.package,installedVersion:a.installedVersion,fixedVersion:a.fixedVersion,severity:a.severity,summary:a.summary,dev:a.dev,direct:a.direct}))}))}async function at(a,c=new Set){let g=a.filter(z.f),h=new Map;if(!g.length)return h;let i=await (0,e.f)().select({appId:f.appRepos.appId,repoId:f.appRepos.repoId}).from(f.appRepos).where((0,b.y)(f.appRepos.appId,g));if(!i.length)return h;let j=await (0,e.f)().select({repoId:f.dependencyVulns.repoId,package:f.dependencyVulns.package,installedVersion:f.dependencyVulns.installedVersion,fixedVersion:f.dependencyVulns.fixedVersion,vulnId:f.dependencyVulns.vulnId,aliases:f.dependencyVulns.aliases,severity:f.dependencyVulns.severity,direct:f.dependencyVulns.direct}).from(f.dependencyVulns).where((0,b.b)((0,b.y)(f.dependencyVulns.repoId,[...new Set(i.map(a=>a.repoId))]),(0,b.M)(f.dependencyVulns.resolvedAt),(0,b.u)(f.dependencyVulns.direct,!0),(0,b.E)(f.dependencyVulns.fixedVersion))).limit(2e3),k=j.some(a=>"next"===a.package)?new Set((await (0,e.f)().selectDistinct({appId:f.dependencyPrs.appId}).from(f.dependencyPrs).where((0,b.b)((0,b.y)(f.dependencyPrs.appId,g),(0,b.$)(f.dependencyPrs.stage,["merged","closed"]),(0,b.B)(f.dependencyPrs.openedAt,new Date(Date.now()-12096e5)),d.B`${f.dependencyPrs.packages} @> '["next"]'::jsonb`)).limit(g.length)).map(a=>a.appId)):new Set;for(let a of i){let b=c.has(a.appId)||k.has(a.appId);(0,T.B)(j.filter(c=>c.repoId===a.repoId&&!(b&&"next"===c.package))).length&&h.set(a.appId,a.repoId)}return h}a.s(["o",0,12e3,"d",0,4e3,"j",0,aq,"O",0,ap,"C",0,at,"M",0,ad,"a",0,as,"h",0,ar],930270);var au=a.i(242605);async function av(){return(0,e.f)().select({appId:f.links.fromResourceId,dbId:f.links.toResourceId}).from(f.links).where((0,b.u)(f.links.kind,"uses_db")).limit(500)}async function aw(a){let g=(0,b.b)((0,b.u)(f.resources.monitored,!0),(0,b.M)(f.resources.goneAt)),[h,i,j,k,l]=await Promise.all([x(),w(),(0,e.f)().select({m:f.monitors,appName:f.resources.name,appMeta:f.resources.meta}).from(f.monitors).innerJoin(f.resources,(0,b.u)(f.resources.id,f.monitors.resourceId)).where((0,b.b)(g,(0,b.u)(f.monitors.paused,!1),(0,b.u)(f.monitors.ownerPaused,!1))),(0,e.f)().select({id:f.resources.id,name:f.resources.name,meta:f.resources.meta}).from(f.resources).where((0,b.b)(g,(0,b.u)(f.resources.kind,"app"))),(0,e.f)().select({id:f.accounts.id,provider:f.accounts.provider,label:f.accounts.label,expiresAt:f.accounts.expiresAt,status:f.accounts.status,lastError:f.accounts.lastError}).from(f.accounts)]),m=j.map(a=>a.m.id),n=m.length?await (0,e.f)().select({id:f.checks.monitorId,n:d.B`count(*)::int`,p95:d.B`percentile_cont(0.95) within group (order by ${f.checks.latencyMs})::float8`}).from(f.checks).where((0,b.b)((0,b.y)(f.checks.monitorId,m),(0,b.B)(f.checks.at,new Date(a.getTime()-6e5)),(0,b.u)(f.checks.inMaintenance,!1))).groupBy(f.checks.monitorId):[],v=k.map(a=>a.id),y=v.length?await (0,e.f)().selectDistinctOn([f.deployments.resourceId],{appId:f.deployments.resourceId,state:f.deployments.state,sha:f.deployments.commitSha,createdAt:f.deployments.createdAtProvider}).from(f.deployments).where((0,b.b)((0,b.y)(f.deployments.resourceId,v),(0,b.u)(f.deployments.target,"production"))).orderBy(f.deployments.resourceId,(0,c.A)(f.deployments.createdAtProvider)):[],z=await (0,e.f)().select({id:f.resources.id,name:f.resources.name,kind:f.resources.kind,state:f.snapshots.state,data:f.snapshots.data}).from(f.resources).innerJoin(f.snapshots,(0,b.u)(f.snapshots.resourceId,f.resources.id)).where((0,b.b)(g,(0,b.y)(f.resources.kind,["supabase_project","neon_project","firestore","turso_database","upstash_redis","d1_database","zone","domain"]))),F=a=>z.filter(b=>b.kind===a),G=z.filter(a=>["supabase_project","neon_project","firestore","turso_database","upstash_redis","d1_database"].includes(a.kind)),H=F("zone"),I=F("domain"),J=await av(),K=await (0,D.Y)().catch(()=>null),L=v.length?await as(v).catch(()=>null):null,M=v.length?await (0,au.F)(v).catch(()=>null):null,N=v.length?await A(v).catch(()=>null):null,O="on"===(0,B.C)()?function(a){var b;let c;if(!a||"ok"!==a.status||!a.system)return null;let d=(b=a.updates,c=a=>a.security||a.fixes.length>0||null!==a.error,{security:b.filter(c),other:b.filter(a=>!c(a))}).security,e=d.some(a=>null!==a.error),f=d.filter(a=>a.fixes.length).map(a=>{let b=[...a.fixes].sort((a,b)=>(b.cvss3??-1)-(a.cvss3??-1));return{source:a.source,score:b[0].cvss3,cves:b.map(a=>a.cve)}}),g=a.kernel,h=g?.newestInstalled&&g.runningVersion&&(0,C.f)(g.newestInstalled,g.runningVersion)>0?{installed:g.newestInstalled,running:g.runningVersion}:null;return{system:a.system,updates:f,kernelWaiting:h,partial:e}}(await (0,B.y)().catch(()=>null)):null;return{now:a,lastMinuteRunAt:h,lastAnyRunAt:i,monitors:j.map(({m:a,appName:b,appMeta:c})=>{let d=n.find(b=>b.id===a.id),e="heartbeat"===a.kind;return{id:a.id,appId:a.resourceId,appName:b,url:e?a.name??"heartbeat":a.url,kind:e?"heartbeat":"http",state:a.state,failStreak:a.failStreak,lastStatus:a.lastStatus,lastError:a.lastError,lastCheckedAt:a.lastCheckedAt,p95Last10:d?.p95??null,checksLast10:d?.n??0,movedTo:e?null:(0,E.u)(a.url,{name:b,meta:c},k.filter(b=>b.id!==a.resourceId),{lastError:a.lastError})?.to??null}}),apps:k.map(a=>{let b=y.find(b=>b.appId===a.id);return{id:a.id,name:a.name,latestProduction:b?{state:b.state,sha:b.sha,createdAt:b.createdAt}:null}}),accounts:l,dbs:G.length?G.map(b=>(function(a,b){let c={id:a.id,name:a.name,state:a.state,sizeBytes:null,sizeLimitBytes:null,lastApiAt:null,cuHours:null,cuLimit:null,readsToday:null,readsLimit:null,quotaExhausted:null};if("supabase_project"===a.kind){let b=(0,r.k)(r.B,a.data),d=(0,u.Z)(b.lastTrafficAt),e=(0,u.Z)(b.trafficAt),f=d??(e&&!b.trafficError?new Date(e.getTime()-6048e5):null);return{...c,provider:"supabase",sizeBytes:b.sizeBytes??null,sizeLimitBytes:s.R,lastApiAt:f}}if("neon_project"===a.kind){let b=(0,r.k)(r.s,a.data),d=(b.branches??[]).map(a=>a.logicalSize).filter(a=>"number"==typeof a);return{...c,provider:"neon",cuHours:null==b.computeSeconds?null:b.computeSeconds/3600,cuLimit:q.a.cuHours,sizeBytes:d.length?d.reduce((a,b)=>a+b,0):null,sizeLimitBytes:q.a.storageBytes}}if("firestore"===a.kind){let d=(0,r.k)(r.w,a.data),e=(0,u.Z)(d.opsAt),f=null!=d.reads&&e&&e.getTime()>=(0,p.a)(b).getTime()?d.reads:null,g=null!=d.latencyMs||null!=d.pingError;return{...c,provider:"firestore",readsToday:f,readsLimit:p.T.reads,quotaExhausted:g?"RESOURCE_EXHAUSTED"===d.pingReason:null}}if("turso_database"===a.kind){let d=(0,r.k)(r.N,a.data),e=(0,o.u)((0,o.G)(d,b));return{...c,provider:"turso",sizeBytes:d.orgStorageBytes??null,sizeLimitBytes:o.g.storageBytes,quotaPct:e?.pct??null,quotaLabel:e?`${e.label} ${e.text}`:null}}if("upstash_redis"===a.kind){let d=(0,r.k)(r.e,a.data),e=(0,o.u)((0,o.$)(d,b));return{...c,provider:"upstash",sizeBytes:d.storageBytes??null,sizeLimitBytes:o.W.storageBytes,quotaPct:e?.pct??null,quotaLabel:e?`${e.label} ${e.text}`:null}}if("d1_database"===a.kind){let d=(0,r.k)(r.x,a.data),e=(0,o.u)((0,o.I)(d,b));return{...c,provider:"d1",sizeBytes:d.sizeBytes??null,sizeLimitBytes:o.M.dbBytes,quotaPct:e?.pct??null,quotaLabel:e?`${e.label} ${e.text}`:null}}return null})(b,a)).filter(a=>null!==a):null,domains:H.length||I.length?[...H.map(a=>({id:a.id,name:a.name,tlsNotAfter:null,expiresAt:(0,u.Z)((0,t.q)(a.data).rdap?.expiresAt)})),...I.map(a=>({id:a.id,name:a.name,tlsNotAfter:(0,u.Z)((0,t.q)(a.data).tls?.notAfter),expiresAt:null}))]:null,dns:function(a,b){let c=a.filter(a=>Array.isArray(a.data.records));if(!c.length)return null;let d=a.map(a=>a.name),e=[];for(let a of c){let c=b.filter(b=>(0,u.J)(b.name,d)===a.name.toLowerCase().replace(/\.$/,"")),f=[...new Set(c.flatMap(a=>(0,t.q)(a.data).vercel?.recommendedIps??[]))];for(let b of(0,t.q)(a.data).records){if(!(0,u.l)(b,f))continue;let d=b.name.toLowerCase().replace(/\.$/,""),g=c.find(a=>a.name.toLowerCase().replace(/\.$/,"")===d);e.push({id:`${a.id}:${b.id}`,resourceId:g?.id??a.id,name:b.name,proxied:b.proxied,pointsToVercel:!0})}}return e}(H,I),links:J,compute:K,deps:L&&L.length?L:null,frameworks:M&&M.length?M:null,ci:N&&N.length?N:null,os:O}}var ax=a.i(714530),ay=a.i(396667);let az={vercel:"Vercel",supabase:"Supabase",neon:"Neon",cloudflare:"Cloudflare",firebase:"Firebase",gcp:"Google Cloud"};async function aA(){return(await (0,e.f)().select().from(f.alertRules)).filter(a=>(0,g.h)(a.key)).map(a=>({key:a.key,severity:a.severity,threshold:a.threshold,enabled:a.enabled,channels:a.channels}))}async function aB(a,c={}){let[d,j,m,n,o,p]=await Promise.all([aw(a),aA(),(0,e.f)().select().from(f.alerts).where((0,b.M)(f.alerts.resolvedAt)),(0,e.f)().select({provider:f.providerStatus.provider,state:f.providerStatus.state}).from(f.providerStatus),(0,ax.w)(),(0,ay.I)()]),q=new Map(d.accounts.map(a=>[a.id,a.provider])),r=m.filter(a=>!(0,l.O)(p,a.ruleKey,a.accountId?q.get(a.accountId):null)),s=(0,h.f)(d,j,c.only),t=s.evaluated,u=s.observations.filter(a=>!(0,l.O)(p,a.rule,a.provider)),v=j.find(a=>"CollectorStale"===a.key),w=void 0===d.lastAnyRunAt?d.lastMinuteRunAt:d.lastAnyRunAt,x=!!v?.enabled&&(!w||a.getTime()-w.getTime()>(v.threshold??5)*6e4),y=new Map((d.dbs??[]).filter(a=>"paused"===a.state).map(a=>[a.id,a.name])),z=new Map(d.links.filter(a=>y.has(a.dbId)).map(a=>[a.appId,`DatabasePaused \xb7 ${y.get(a.dbId)}`])),A=new Map(n.filter(a=>"warn"===a.state||"err"===a.state).map(a=>["gcp"===a.provider?"firebase":a.provider,az[a.provider]??a.provider])),B=(0,k.u)(o,d.monitors.map(a=>({id:a.id,appId:a.appId})),a,d.apps.map(a=>a.id)),C=r.filter(a=>(0,g.h)(a.ruleKey)).map(a=>({id:a.id,ruleKey:a.ruleKey,subject:a.subject,okStreak:a.okStreak,lastSampleAt:a.lastSampleAt,silencedUntil:a.silencedUntil,silencedUntilResolved:a.silencedUntilResolved,notifiedOpen:a.notifiedOpen,lastNotifiedAt:a.lastNotifiedAt,pending:a.pending,pendingSince:a.pendingSince})),D=(0,i.f)(C,u,t,j,{now:a,collectorStale:x,mutedApps:z,incidents:A,maintenance:B});return D.open.length||D.touch.length||D.resolve.length?(await (0,e.f)().transaction(async c=>{for(let b of D.open)await c.insert(f.alerts).values({...b,pendingSince:b.pending?a:null}).onConflictDoNothing();for(let d of D.touch){let{id:e,pending:g,...h}=d;await c.update(f.alerts).set({...h,...g?{pending:g,pendingSince:a}:{}}).where((0,b.b)((0,b.u)(f.alerts.id,e),(0,b.M)(f.alerts.resolvedAt)))}for(let d of D.resolve)await c.update(f.alerts).set({resolvedAt:a,pending:d.pending,pendingSince:d.pending?a:null}).where((0,b.b)((0,b.u)(f.alerts.id,d.id),(0,b.M)(f.alerts.resolvedAt)))}),{opened:D.open.length,resolved:D.resolve.length}):{opened:0,resolved:0}}async function aC(){let[a,c]=await Promise.all([(0,ay.I)(),(0,e.f)().select({ruleKey:f.alerts.ruleKey,provider:f.accounts.provider,n:d.B`count(*)::int`}).from(f.alerts).leftJoin(f.accounts,(0,b.u)(f.accounts.id,f.alerts.accountId)).where((0,b.b)((0,b.M)(f.alerts.resolvedAt),(0,b.y)(f.alerts.severity,["critical","warning"]))).groupBy(f.alerts.ruleKey,f.accounts.provider)]);return c.reduce((b,c)=>b+((0,l.O)(a,c.ruleKey,c.provider)?0:Number(c.n)),0)}let aD=d.B`case ${f.alerts.severity} when 'critical' then 0 when 'warning' then 1 else 2 end`;async function aE(a=new Set){return(await (0,e.f)().select({a:f.alerts,name:f.resources.name,kind:f.resources.kind}).from(f.alerts).leftJoin(f.resources,(0,b.u)(f.resources.id,f.alerts.resourceId)).where((0,b.b)((0,b.M)(f.alerts.resolvedAt),(0,ay.s)(a))).orderBy(aD,(0,c.A)(f.alerts.startedAt)).limit(200)).map(({a,name:b,kind:c})=>({...a,resourceName:b??null,resourceKind:c??null}))}async function aF(){return aE(await (0,ay.I)())}async function aG(a){return(await (0,e.f)().select({id:f.alerts.id,ruleKey:f.alerts.ruleKey,severity:f.alerts.severity,title:f.alerts.title,resourceId:f.alerts.resourceId,startedAt:f.alerts.startedAt,resolvedAt:f.alerts.resolvedAt}).from(f.alerts).where((0,b.b)((0,b.E)(f.alerts.resolvedAt),(0,b.B)(f.alerts.resolvedAt,new Date(a.getTime()-6048e5)))).orderBy((0,c.A)(f.alerts.resolvedAt)).limit(50)).flatMap(a=>a.resolvedAt?[{...a,resolvedAt:a.resolvedAt}]:[])}async function aH(){let[a,c,h]=await Promise.all([aA(),(0,e.f)().select({key:f.alerts.ruleKey,n:d.B`count(*)::int`}).from(f.alerts).where((0,b.M)(f.alerts.resolvedAt)).groupBy(f.alerts.ruleKey),(0,e.f)().select({kind:f.resources.kind}).from(f.resources).innerJoin(f.snapshots,(0,b.u)(f.snapshots.resourceId,f.resources.id)).where((0,b.b)((0,b.u)(f.resources.monitored,!0),(0,b.M)(f.resources.goneAt))).groupBy(f.resources.kind)]),i=new Set(h.map(a=>a.kind)),j={databases:["supabase_project","neon_project","firestore"].some(a=>i.has(a)),domains:i.has("domain")||i.has("zone"),dns:i.has("zone")};return g.u.flatMap(b=>{let d=a.find(a=>a.key===b);if(!d)return[];let e=g._[b].needs;return[{rule:d,firing:c.find(a=>a.key===b)?.n??0,hasData:null===e||j[e]}]})}async function aI(a,c,d,g){let h="off"===c?{silencedUntil:null,silencedUntilResolved:!1,silencedBy:null}:{...n(c,g),silencedBy:d},[i]=await (0,e.f)().update(f.alerts).set(h).where((0,b.b)((0,b.u)(f.alerts.id,a),(0,b.M)(f.alerts.resolvedAt))).returning({ruleKey:f.alerts.ruleKey,title:f.alerts.title,resourceId:f.alerts.resourceId});return i??null}async function aJ(a,c){return(await (0,e.f)().update(f.alertRules).set({...c,updatedAt:new Date}).where((0,b.u)(f.alertRules.key,a)).returning({key:f.alertRules.key})).length>0}async function aK(){try{let[a]=await (0,e.f)().select({value:f.settings.value}).from(f.settings).where((0,b.u)(f.settings.key,j.z)).limit(1);return(0,j._)(a?.value)}catch{return{}}}async function aL(a,b){let c=await aK();Object.keys(b).length?c[a]=b:delete c[a],await (0,e.f)().insert(f.settings).values({key:j.z,value:c}).onConflictDoUpdate({target:f.settings.key,set:{value:c,updatedAt:new Date}})}a.s(["$",0,aB,"q",0,aE,"I",0,aG,"i",0,aF,"X",0,aC,"w",0,aK,"y",0,aH,"z",0,aJ,"_",0,aL,"N",0,aI],455317)}]})();
1
+ (()=>{"use strict";module.exports=[949663,912283,876808,747556,a=>{var b=a.i(927262),c=a.i(201516),d=a.i(273133),e=a.i(120213),f=a.i(84979),g=a.i(84877),h=a.i(679662);let i=/^v?(\d+)\.(\d+)\.(\d+)(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/;function j(a,b){let c=i.exec(a.trim()),d=i.exec(b.trim());return!!c&&!!d&&c[1]===d[1]&&("0"!==c[1]||c[2]===d[2])&&(0,g.f)(b,a)>=0}let k=/^Watch(?:bell|post): update (?:\S+ (?:to|ke) \S+|\d+ vulnerable packages) in ((?:[A-Za-z0-9._-]+\/){0,3}[A-Za-z0-9._-]+) \(/,l=a=>k.exec(a)?.[1]??null;a.s(["M",0,a=>`Lockfile tertinggal — jalankan npm install (${a.slice(0,5).join(", ")}${a.length>5?`, +${a.length-5}`:""}).`,"a",0,function(a,b,c){if(!a.length)return{ok:!1,why:"nothing"};let d=a.filter(a=>c.includes(a.severity)&&!("moderate"===a.severity&&a.dev));if(!d.length)return{ok:!1,why:"severity"};for(let a of d){let c=b.get(a.package);if(!c||!j(c,a.to))return{ok:!1,why:"major"}}return{ok:!0,upgrades:d}},"m",0,function(a,b){if(!b)return{deps:a,stale:[]};let c=[...Object.entries(b.dependencies).map(([a,b])=>[a,b,!1]),...Object.entries(b.optionalDependencies).map(([a,b])=>[a,b,!1]),...Object.entries(b.devDependencies).map(([a,b])=>[a,b,!0])],d=[...a],e=[];for(let[a,b,f]of c){let c=(0,h.Y)(b);if(!c||!(0,h.C)(c))continue;let i=d.filter(b=>b.name===a);!i.length||i.some(a=>(0,g.f)(a.version,c)>=0)||((d=d.filter(b=>b.name!==a)).push({name:a,version:c,dev:i.every(a=>a.dev)&&f}),e.push(a))}return{deps:d,stale:e}},"D",0,function(a){let b=new Map;for(let c of a){if(!c.direct)continue;let a=b.get(c.package);(!a||0>(0,g.f)(c.installedVersion,a))&&b.set(c.package,c.installedVersion)}return b},"U",0,function(a,b,c=null){for(let d of b){if(l(d.title)!==c)continue;let b=function(a){if(a.packages?.length)return a.packages;let b=/^Watch(?:bell|post): update (\S+) (?:to|ke) /.exec(a.title);return b?[b[1]]:"all"}(d);if("all"===b||a.some(a=>b.includes(a)))return d}return null},"J",0,j],912283);let m=["next","eslint-config-next"],n={CRITICAL:"critical",HIGH:"high",MODERATE:"moderate",LOW:"low",UNKNOWN:"unknown"};function o(a,b){if(!a||!(0,h.C)(a))return null;let c=b.map(a=>a.fixed).filter(b=>!!b&&(0,h.C)(b)&&(0,g.f)(b,a)>0);if(!c.length)return null;let d=c.filter(b=>j(a,b));return(d.length?d:c).reduce((a,b)=>(0,g.f)(b,a)>0?b:a)}function p(a,b){let c=o(a,b),d=c?b.map(a=>a.fixed).filter(a=>!!a&&(0,h.C)(a)&&(0,g.f)(a,c)>0):[],e=d.reduce((a,b)=>null===a||(0,g.f)(b,a)>0?b:a,null),i=e?` (${1===d.length?"one fix needs":"some fixes need"} Next.js ${e.split(".")[0]})`:"";return`Next.js ${a??"(unknown version)"} has ${(0,f.q)(b.length)} (${(0,f.N)(b).toLowerCase()}), ${c?`fixed in ${c}${i}`:"no fix yet"}.`}a.s(["P",0,p,"p",0,function(a){if(!a||"vulnerable"!==a.status||!a.findings.length||!a.version)return null;let b=o(a.version,a.findings);if(!b)return null;let c=n[(0,f.N)(a.findings)],d=[...new Set(a.findings.map(a=>a.id))],e=[...new Set(a.findings.flatMap(a=>a.cve?[a.cve]:[]))];return{from:a.version,to:b,upgrades:[{package:"next",to:b,vulnIds:d,cves:e,severity:c},{package:"eslint-config-next",to:b,vulnIds:[],cves:[],severity:c,companionOf:"next"}],installed:new Map(m.map(b=>[b,a.version]))}},"F",0,function(a){let b=a.find(a=>"next"===a.package&&!a.companionOf);return!b||a.some(a=>"eslint-config-next"===a.package)?a:[...a,{package:"eslint-config-next",to:b.to,vulnIds:[],cves:[],severity:b.severity,companionOf:"next"}]}],876808);let q=a=>Math.round(a).toLocaleString("en-US"),r=(a,b)=>Math.floor((a.getTime()-b.getTime())/864e5),s=(a,b)=>`${a} ${b}${1===a?"":"s"}`,t=a=>{try{let b=new URL(a);return`${b.host}${b.pathname}`}catch{return a}},u=a=>{try{return new URL(a).host}catch{return a}},v=a=>{try{return new URL(a).pathname}catch{return"/"}},w="Down · ",x=new Set(["failure","timed_out","startup_failure"]),y=(a,b,c)=>({rule:a,subject:b,status:"unknown",resourceId:null,accountId:null,title:b,message:"",provider:null,sampleAt:null,...c}),z=a=>"firestore"===a.provider?"firebase":"d1"===a.provider?"cloudflare":a.provider,A=new Set(["turso","upstash","d1"]),B={MonitorDown:(a,b)=>a.monitors.map(a=>{let d=y("MonitorDown",a.id,{resourceId:a.appId,title:`${a.appName} ${"heartbeat"===a.kind?a.url:v(a.url)}`,provider:"vercel",sampleAt:a.lastCheckedAt}),e=b??3;if("heartbeat"===a.kind){let b;return{...d,status:"err"===a.state?"firing":"ok"===a.state?"ok":"unknown",message:`${a.appName} \xb7 ${a.url}: ${b=a.lastError,b?.startsWith(w)?b.slice(w.length):"no ping in time"}.`}}return a.movedTo?{...d,status:"ok",message:`${u(a.url)} moved to ${a.movedTo}; MonitorDomainMoved takes over.`}:a.failStreak>=e?{...d,status:"firing",message:(0,c.H)(a)?`${t(a.url)} failed its check (${(0,c.H)(a)}) on ${e} consecutive checks.`:`${t(a.url)} returned ${a.lastStatus?`HTTP ${a.lastStatus}`:"no answer"} on ${e} consecutive checks.`}:{...d,status:0===a.failStreak&&a.lastCheckedAt?"ok":"unknown",message:`${t(a.url)} answers again.`}}),MonitorDomainMoved:a=>a.monitors.filter(a=>"http"===a.kind).map(a=>{let b=y("MonitorDomainMoved",a.id,{resourceId:a.appId,title:`${a.appName} ${v(a.url)}`,provider:"vercel"});return a.movedTo?{...b,status:"firing",message:`${u(a.url)} is no longer a domain of ${a.appName}; production is on ${a.movedTo}.`}:{...b,status:"ok",message:`The monitor checks ${u(a.url)}, a domain of ${a.appName}.`}}),CollectorStale:(a,b)=>{let c=a.lastMinuteRunAt;return[y("CollectorStale","collector",{status:!c||a.now.getTime()-c.getTime()>(b??5)*6e4?"firing":"ok",title:"collector",message:c?`The last minute run finished ${q((a.now.getTime()-c.getTime())/6e4)} min ago.`:"The collector hasn't finished a run yet."})]},HighLatency:(a,b)=>a.monitors.filter(a=>"http"===a.kind).map(a=>{let c=y("HighLatency",a.id,{resourceId:a.appId,title:`${a.appName} ${v(a.url)}`,provider:"vercel",sampleAt:a.lastCheckedAt});if(a.checksLast10<5||null===a.p95Last10)return c;let d=b??1500;return{...c,status:a.p95Last10>d?"firing":"ok",message:`p95 ${q(a.p95Last10)} ms over the last 10 minutes (limit ${q(d)} ms).`}}),DeploymentFailed:a=>a.apps.map(a=>{let b=y("DeploymentFailed",a.id,{resourceId:a.id,title:a.name,provider:"vercel"}),c=a.latestProduction;return c?"error"===c.state?{...b,status:"firing",message:`Production deployment ${c.sha?c.sha.slice(0,7):"(no commit)"} failed.`}:{...b,status:"building"===c.state?"unknown":"ok"}:{...b,status:"ok"}}),DatabasePaused:a=>a.dbs&&a.dbs.filter(a=>"supabase"===a.provider).map(a=>y("DatabasePaused",a.id,{resourceId:a.id,title:a.name,provider:"supabase",status:"unknown"===a.state?"unknown":"paused"===a.state?"firing":"ok",message:`Supabase project ${a.name} is paused.`})),CertExpiringSoon:(a,b)=>a.domains&&a.domains.map(c=>{let d=y("CertExpiringSoon",c.id,{resourceId:c.id,title:c.name,provider:"cloudflare"});if(!c.tlsNotAfter)return d;let e=r(c.tlsNotAfter,a.now);return{...d,status:e<(b??14)?"firing":"ok",message:`The TLS certificate of ${c.name} expires in ${s(e,"day")}.`}}),DomainExpiringSoon:(a,b)=>a.domains&&a.domains.map(c=>{let d=y("DomainExpiringSoon",c.id,{resourceId:c.id,title:c.name,provider:"cloudflare"});if(!c.expiresAt)return d;let e=r(c.expiresAt,a.now);return{...d,status:e<(b??30)?"firing":"ok",message:`${c.name} expires in ${s(e,"day")}.`}}),StorageAlmostFull:(a,b)=>a.dbs&&a.dbs.filter(a=>"firestore"!==a.provider).map(a=>{let c=y("StorageAlmostFull",a.id,{resourceId:a.id,title:a.name,provider:z(a)});if(null===a.sizeBytes||!a.sizeLimitBytes)return c;let d=a.sizeBytes/a.sizeLimitBytes*100;return{...c,status:d>(b??80)?"firing":"ok",message:`${a.name} uses ${q(a.sizeBytes/1e6)} MB of ${q(a.sizeLimitBytes/1e6)} MB (${q(d)}%).`}}),NeonComputeHigh:(a,b)=>a.dbs&&a.dbs.filter(a=>"neon"===a.provider).map(a=>{let c=y("NeonComputeHigh",a.id,{resourceId:a.id,title:a.name,provider:"neon"});return null===a.cuHours?c:{...c,status:a.cuHours>(b??80)?"firing":"ok",message:`${a.name} used ${q(a.cuHours)} of ${q(a.cuLimit??100)} CU-hours this month.`}}),FirestoreQuotaHigh:(a,b)=>a.dbs&&a.dbs.filter(a=>"firestore"===a.provider).map(a=>{let c=y("FirestoreQuotaHigh",a.id,{resourceId:a.id,title:a.name,provider:"firebase"});if(a.quotaExhausted)return{...c,status:"firing",message:`${a.name} hit a Firestore quota (RESOURCE_EXHAUSTED).`};if(null===a.readsToday||!a.readsLimit)return!1===a.quotaExhausted?{...c,status:"ok"}:c;let d=a.readsToday/a.readsLimit*100;return{...c,status:d>(b??80)?"firing":"ok",message:`${a.name} read ${q(a.readsToday)} of ${q(a.readsLimit)} documents today (${q(d)}%).`}}),AutoPauseRisk:(a,b)=>a.dbs&&a.dbs.filter(a=>"supabase"===a.provider).map(c=>{let d=y("AutoPauseRisk",c.id,{resourceId:c.id,title:c.name,provider:"supabase"});if("paused"===c.state)return{...d,status:"ok"};if(!c.lastApiAt)return d;let e=Math.floor((a.now.getTime()-c.lastApiAt.getTime())/864e5);return{...d,status:e>=(b??4)?"firing":"ok",message:`No API traffic for ${s(e,"day")}. Supabase pauses free projects after about 7 days.`}}),DnsProxiedToVercel:a=>a.dns&&a.dns.map(a=>y("DnsProxiedToVercel",a.id,{resourceId:a.resourceId,title:a.name,provider:"cloudflare",status:a.proxied&&a.pointsToVercel?"firing":"ok",message:`${a.name} points to Vercel through the Cloudflare proxy. Vercel recommends DNS only.`})),DbQuotaHigh:(a,b)=>a.dbs&&a.dbs.filter(a=>A.has(a.provider)).map(a=>{let c=y("DbQuotaHigh",a.id,{resourceId:a.id,title:a.name,provider:z(a)});return null==a.quotaPct?c:{...c,status:a.quotaPct>(b??80)?"firing":"ok",message:`${a.name}: ${a.quotaLabel??"usage"} at ${q(a.quotaPct)}% of the free plan.`}}),ComputeHigh:(a,b)=>a.compute?a.compute.map(c=>{let e=y("ComputeHigh",c.id,{resourceId:c.id,title:c.name,provider:"supabase",sampleAt:c.latest?new Date(c.latest.at):null}),f=(0,d.B)(c.latest,(0,d.V)(b),a.now);return null===f?e:{...e,status:f.length?"firing":"ok",message:f.length?`${c.name}: ${f.join(", ")}.`:`${c.name} compute is back under the limits.`}}):null,CredentialExpiring:(a,b)=>a.accounts.map(c=>{let d=y("CredentialExpiring",c.id,{accountId:c.id,title:`${c.provider} \xb7 ${c.label}`,provider:c.provider});if("drive"===c.provider&&"error"===c.status&&c.lastError?.includes("invalid_grant"))return{...d,status:"firing",message:"Google Drive access was removed (invalid_grant). Reconnect it."};if(!c.expiresAt)return{...d,status:"ok"};let e=r(c.expiresAt,a.now);return{...d,status:e<(b??14)?"firing":"ok",message:e<0?`The ${c.provider} credential ${c.label} has expired.`:`The ${c.provider} credential ${c.label} expires in ${s(e,"day")}.`}}),VulnerableDependency:a=>a.deps?a.deps.flatMap(b=>{let c=a.apps.find(a=>a.id===b.appId);if(!c)return[];let d=y("VulnerableDependency",b.appId,{resourceId:b.appId,title:c.name,provider:"github"});if(b.error)return[d];let f=(0,e.g)(b.vulns);return f?[{...d,status:"firing",message:(0,e.L)(b.vulns),..."critical"===f?{severity:"critical"}:{}}]:[{...d,status:"ok",message:`${c.name} has no moderate, high or critical dependency advisories.`}]}):null,FrameworkVulnerable:a=>a.frameworks?a.frameworks.flatMap(b=>{let c=a.apps.find(a=>a.id===b.appId);if(!c)return[];let d=y("FrameworkVulnerable",b.appId,{resourceId:b.appId,title:c.name});return"ok"===b.status?[{...d,status:"ok",message:`${c.name} runs Next.js ${b.version??"(unknown version)"} with no known advisories.`}]:"vulnerable"===b.status&&b.findings.length?[{...d,status:"firing",message:p(b.version,b.findings),..."CRITICAL"===(0,f.N)(b.findings)?{severity:"critical"}:{}}]:[d]}):null,CiFailing:a=>a.ci?.length?a.ci.flatMap(b=>{let c=a.apps.find(a=>a.id===b.appId);if(!c)return[];let d=y("CiFailing",b.appId,{resourceId:b.appId,title:c.name,provider:"github"});if(!b.run||"none"in b.run||"completed"!==b.run.status)return[d];let e=`The latest ${b.run.name??"Actions"} run on ${b.run.branch??b.branch??"the default branch"}`;return"success"===b.run.conclusion?[{...d,status:"ok",message:`${e} passed.`}]:x.has(b.run.conclusion??"")?[{...d,status:"firing",message:`${e} failed${b.run.runNumber?` (run #${b.run.runNumber})`:""}.`}]:[d]}):null,OsSecurityUpdate:(a,b)=>(function(a,b){if(!a.os)return null;let c=b??7,d=a.os.system,e=a.os.updates.filter(a=>null!==a.score&&a.score>=c).sort((a,b)=>(b.score??0)-(a.score??0)),f=e.slice(0,3).map(a=>`${a.source} fixes ${a.cves[0]} (${a.score.toFixed(1)})${a.cves.length>1?` and ${a.cves.length-1} more`:""}`);e.length>3&&f.push(`${e.length-3} more packages`),a.os.kernelWaiting&&f.push(`kernel ${a.os.kernelWaiting.installed} waits for a reboot`);let g=y("OsSecurityUpdate","os",{title:d});return!f.length&&a.os.partial?[g]:f.length?[{...g,status:"firing",message:`On ${d}: ${f.join("; ")}.`,...e.some(a=>(a.score??0)>=9)?{severity:"critical"}:{}}]:[{...g,status:"ok",message:`On ${d}, no waiting security update fixes a CVE scored ${c.toFixed(1)} or more, and the newest kernel runs.`}]})(a,b),ReportSendFailed:a=>a.reportSends?a.reportSends.map(a=>{let b=y("ReportSendFailed",a.reportId,{title:a.clientName}),c=`The ${C(a.month)} report for ${a.clientName}`;return"sent"===a.status?{...b,status:"ok",message:`${c} was emailed.`}:"failed"!==a.status?b:{...b,status:"firing",message:`${c} couldn't be emailed after 3 tries${a.lastError?`: ${a.lastError}`:"."}`}}):null},C=a=>new Intl.DateTimeFormat("en-GB",{month:"long",year:"numeric",timeZone:"UTC"}).format(new Date(`${a}-15T12:00:00Z`));a.s(["f",0,function(a,c,d){let e=[],f=new Set;for(let g of c){if(!g.enabled||d&&!d.includes(g.key)||!b._[g.key])continue;let c=B[g.key](a,g.threshold);c&&(f.add(g.key),e.push(...c))}return{observations:e,evaluated:f}}],949663);let D=["MonitorDown","HighLatency"],E=["telegram","discord","webhook","smtp"],F=a=>a.channels.some(a=>E.includes(a));function G(a,b){return b.collectorStale&&"CollectorStale"!==a.rule?"CollectorStale":a.resourceId&&D.includes(a.rule)?b.mutedApps.get(a.resourceId)??null:null}let H=(a,b)=>"critical"===b&&"warning"===a?"critical":a,I=(a,b)=>a.silencedUntilResolved||null!==a.silencedUntil&&a.silencedUntil.getTime()>b.getTime(),J=(a,b)=>`${a}|${b}`;a.s(["f",0,function(a,c,d,e,f){let g={open:[],touch:[],resolve:[]},h=new Map(e.map(a=>[a.key,a])),i=new Map(c.map(a=>[J(a.rule,a.subject),a])),j=new Set(a.map(a=>J(a.ruleKey,a.subject))),k=a=>g.resolve.push({id:a.id,pending:a.notifiedOpen?"resolve":null});for(let c of a){let a=h.get(c.ruleKey),e=i.get(J(c.ruleKey,c.subject));if(!a||!a.enabled){g.resolve.push({id:c.id,pending:null});continue}if(!d.has(c.ruleKey))continue;if(!e){g.resolve.push({id:c.id,pending:null});continue}if("unknown"===e.status)continue;let j=e.provider?f.incidents.get(e.provider)??null:null;if("firing"===e.status){let b=G(e,f),d=c.notifiedOpen&&null!==c.lastNotifiedAt&&f.now.getTime()-c.lastNotifiedAt.getTime()>=216e5,h={id:c.id,okStreak:0,lastSampleAt:e.sampleAt??c.lastSampleAt,lastSeenAt:f.now,message:e.message,causedBy:b,providerIncident:j},i=!c.notifiedOpen&&(!c.pendingSince||f.now.getTime()-c.pendingSince.getTime()>=216e5);(d||i)&&!I(c,f.now)&&!b&&null===c.pending&&F(a)&&(h.pending=d?"repeat":"open"),g.touch.push(h);continue}if(!b._[c.ruleKey].sampled||null===e.sampleAt){k(c);continue}if(!(null===c.lastSampleAt||e.sampleAt.getTime()>c.lastSampleAt.getTime()))continue;let l=c.okStreak+1;l>=2?k(c):g.touch.push({id:c.id,okStreak:l,lastSampleAt:e.sampleAt})}for(let a of c){if("firing"!==a.status||j.has(J(a.rule,a.subject))||f.maintenance.has(a.subject)||a.resourceId&&f.maintenance.has(a.resourceId))continue;let b=h.get(a.rule);if(!b)continue;let c=G(a,f);g.open.push({ruleKey:a.rule,subject:a.subject,resourceId:a.resourceId,accountId:a.accountId,severity:H(b.severity,a.severity),title:a.title,message:a.message,startedAt:f.now,lastSeenAt:f.now,lastSampleAt:a.sampleAt,causedBy:c,providerIncident:a.provider?f.incidents.get(a.provider)??null:null,pending:c||!F(b)?null:"open"})}return g}],747556)},708621,a=>{let b=["status","severity","rule","target","detail","cause","step","since","threshold"],c=["id","en"],d={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}"},e=/\{([a-zA-Z_]+)\}/g,f=a=>a.replace(/\r\n?/g,"\n").replace(/[ \t]+$/gm,"").trim();function g(a){if(a.length>1e3)return`Keep it under ${1e3.toLocaleString("en-US")} characters.`;for(let[,c]of a.matchAll(e))if(!b.includes(c))return`{${c}} isn't a field. Use ${b.map(a=>`{${a}}`).join(", ")}.`;return null}a.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,c,"_",0,function(a){if(!a||"object"!=typeof a||Array.isArray(a))return{};let b={};for(let[d,e]of Object.entries(a)){if(!e||"object"!=typeof e)continue;let a={};for(let b of c){let c=e[b];"string"==typeof c&&c.trim()&&null===g(c)&&(a[b]=c)}Object.keys(a).length&&(b[d]=a)}return b},"l",0,function(a,b){return f(a).split("\n").flatMap(a=>{let c=[...a.matchAll(e)].map(a=>a[1]).filter(a=>Object.hasOwn(b,a));return c.length&&c.every(a=>!b[a].trim())?[]:[a.replace(e,(a,c)=>Object.hasOwn(b,c)?b[c]:a)]}).join("\n").replace(/\n{3,}/g,"\n\n").trim()},"F",0,function(a,b){let c="string"==typeof a?f(a):"";return c&&c!==d[b]?c:null},"m",0,g])},455317,71575,805037,569057,930270,a=>{var b=a.i(93321),c=a.i(530385),d=a.i(351674),e=a.i(548734),f=a.i(837137),g=a.i(927262),h=a.i(949663),i=a.i(747556),j=a.i(708621),k=a.i(519051),l=a.i(160147),m=a.i(245710);function n(a,b){return"1h"===a?{silencedUntil:new Date(b.getTime()+36e5),silencedUntilResolved:!1}:{silencedUntil:null,silencedUntilResolved:!0}}a.s(["_",0,[["critical","Critical"],["warning","Warning"],["info","Info"]],"O",0,function(a,b){return a.silencedUntilResolved?{state:"off",text:"Silenced until resolved"}:a.silencedUntil&&a.silencedUntil.getTime()>b.getTime()?{state:"off",text:`Silenced until ${(0,m.U)(a.silencedUntil)}`}:"open"===a.pending||"repeat"===a.pending?{state:"build",text:"Sending…"}:a.causedBy&&!a.notifiedOpen?{state:"off",text:"Muted"}:a.lastNotifiedAt?{state:"ok",text:`Sent ${(0,m.U)(a.lastNotifiedAt)}`}:{state:"off",text:"Digest only"}},"G",0,function(a){return a.enabled?a.firing?{state:"err",text:`Firing \xb7 ${a.firing}`}:a.hasData?{state:"off",text:"Inactive"}:{state:"unknown",text:"No data yet"}:{state:"off",text:"Disabled"}},"A",0,n,"M",0,function(a,b){let c=Math.max(1,Math.round((b.getTime()-a.getTime())/6e4));if(c<60)return`${c} min`;let d=Math.floor(c/60);return d<24?`${d} h ${c%60} min`:`${Math.floor(d/24)} d ${d%24} h`}],71575);var o=a.i(258261),p=a.i(263410),q=a.i(49440),r=a.i(513701),s=a.i(186133),t=a.i(968715),u=a.i(15738);let v=a=>{let[b,c]=a.split("-").map(Number);return 1===c?`${b-1}-12`:`${b}-${String(c-1).padStart(2,"0")}`};async function w(a,b){let c;return function(a,b,c){let d=(0,u.C)(new Date(a.getTime()-864e5*c),b),e=[];for(let c=v((0,u.C)(a,b).slice(0,7));e.length<3&&`${c}-01`>=d;c=v(c))e.push(c);return e}(a,b,Math.min((c=await (0,s.J)()).rollupsHourly,c.alerts,t.F))}async function x(a){let d=a?await (0,e.f)().select().from(p.I).where(a):await (0,e.f)().select().from(p.I).orderBy((0,c.M)(p.I.clientName));if(!d.length)return[];let f=d.map(a=>a.id),[g,h]=await Promise.all([(0,e.f)().select({reportId:p.Z.reportId,monitorId:p.Z.monitorId,displayName:p.Z.displayName,position:p.Z.position}).from(p.Z).where((0,b.y)(p.Z.reportId,f)).orderBy((0,c.M)(p.Z.position)),(0,e.f)().select().from(p.q).where((0,b.y)(p.q.reportId,f)).orderBy((0,c.A)(p.q.month))]);return d.map(a=>{let b=h.find(b=>b.reportId===a.id);return{id:a.id,clientName:a.clientName,title:a.title,lang:a.lang,note:a.note,emailOpening:a.emailOpening,recipients:a.recipients,autoSend:a.autoSend,sender:a.sender,sites:g.filter(b=>b.reportId===a.id).map(({monitorId:a,displayName:b,position:c})=>({monitorId:a,displayName:b,position:c})),lastSend:b?{month:b.month,status:b.status,sentAt:b.sentAt,lastError:b.lastError}:null}})}async function y(a){return/^[0-9a-f-]{36}$/i.test(a)?(await x((0,b.u)(p.I.id,a)))[0]??null:null}async function z(a,c,d,g){let h,i=await y(a);if(!i)return{error:"not-found"};if(!i.sites.length)return{error:"no-sites"};if(c!==(0,u.C)(d,g).slice(0,7)&&!(await w(d,g)).includes(c))return{error:"month-too-old"};let j=(0,u.e)(c),k=(0,u.K)(j[0],g),l=(0,u.K)(`${(a=>{let[b,c]=a.split("-").map(Number);return 12===c?`${b+1}-01`:`${b}-${String(c+1).padStart(2,"0")}`})(c)}-01`,g),m=i.sites.map(a=>a.monitorId),[n,t,v,x,z,[A]]=await Promise.all([(0,e.f)().select({id:f.monitors.id,resourceId:f.monitors.resourceId,intervalS:f.monitors.intervalS}).from(f.monitors).where((0,b.y)(f.monitors.id,m)),(0,r._)(m,d,g),(0,e.f)().select({monitorId:f.rollupsHourly.monitorId,hour:f.rollupsHourly.hour,p50:f.rollupsHourly.p50Ms}).from(f.rollupsHourly).where((0,b.b)((0,b.y)(f.rollupsHourly.monitorId,m),(0,b.B)(f.rollupsHourly.hour,k),(0,b.S)(f.rollupsHourly.hour,l))),(0,e.f)().select({ruleKey:f.alerts.ruleKey,subject:f.alerts.subject,startedAt:f.alerts.startedAt,resolvedAt:f.alerts.resolvedAt}).from(f.alerts).where((0,b.b)((0,b.y)(f.alerts.ruleKey,["MonitorDown","HighLatency"]),(0,b.y)(f.alerts.subject,m),(0,b.S)(f.alerts.startedAt,l),(0,b.F)((0,b.M)(f.alerts.resolvedAt),(0,b.B)(f.alerts.resolvedAt,k)))),(0,e.f)().select().from(p.p).where((0,b.b)((0,b.B)(p.p.day,j[0]),(0,b.n)(p.p.day,j[j.length-1]))),(0,e.f)().select({first:(0,o.t)(p.p.day),last:(0,o.y)(p.p.day)}).from(p.p)]),B=A?.last?(0,u.K)((h=A.last,new Date(Date.parse(`${h}T00:00:00Z`)+864e5).toISOString().slice(0,10)),g):null,[C,D]=await Promise.all([B&&B>=l?[]:(0,e.f)().select({resourceId:f.deployments.resourceId,state:f.deployments.state,createdAtProvider:f.deployments.createdAtProvider}).from(f.deployments).where((0,b.b)((0,b.B)(f.deployments.createdAtProvider,B&&B>k?B:k),(0,b.S)(f.deployments.createdAtProvider,l))),(0,s.J)()]),E=[...z,...(0,q.f)(C,g).filter(a=>a.day>=j[0]&&a.day<=j[j.length-1]&&(!A?.last||a.day>A.last))],F=A?.first??(0,u.C)(new Date(d.getTime()-864e5*D.deployments),g),G=new Map;for(let a of v){if(null===a.p50)continue;let b=G.get(a.monitorId)??new Map,c=(0,u.C)(a.hour,g);b.set(c,[...b.get(c)??[],a.p50]),G.set(a.monitorId,b)}let H=new Map;for(let a of i.sites){let b=n.find(b=>b.id===a.monitorId)?.resourceId;b&&!H.has(b)&&H.set(b,a.monitorId)}let I=i.sites.flatMap(a=>{let b=n.find(b=>b.id===a.monitorId);if(!b)return[];let c=t.get(a.monitorId)??new Map,d=new Map(j.filter(a=>c.has(a)).map(a=>[a,c.get(a)])),e=j.find(a=>(d.get(a)?.checks??0)>0)??null,f=G.get(a.monitorId),g=new Map(j.map(a=>{let b=f?.get(a);return[a,b?.length?Math.round(b.reduce((a,b)=>a+b,0)/b.length):null]}));return[{monitorId:a.monitorId,name:a.displayName,intervalS:b.intervalS,firstDay:e,days:d,p50ByDay:g}]}),J=i.sites.map(a=>{let b=n.find(b=>b.id===a.monitorId)?.resourceId,c=b&&H.get(b)===a.monitorId?E.filter(a=>a.resourceId===b):[];return{monitorId:a.monitorId,ok:c.reduce((a,b)=>a+b.ok,0),failed:c.reduce((a,b)=>a+b.failed,0),firstDay:c[0]?.day??null}});return{month:c,zone:g,generatedAt:d,sites:I,incidents:x.map(a=>({monitorId:a.subject,kind:"MonitorDown"===a.ruleKey?"down":"slow",startedAt:a.startedAt<k?k:a.startedAt,resolvedAt:a.resolvedAt,endedBy:a.resolvedAt?"resolved":"open"})),deploys:J,dataFrom:{uptime:null,updates:F&&F>j[0]?F:null}}}async function A(){let a=await (0,e.f)().select({reportId:p.q.reportId,month:p.q.month,status:p.q.status,lastError:p.q.lastError,clientName:p.I.clientName}).from(p.q).innerJoin(p.I,(0,b.u)(p.I.id,p.q.reportId)).where((0,b.u)(p.I.autoSend,!0)).orderBy((0,c.A)(p.q.month)),d=new Set;return a.filter(a=>!d.has(a.reportId)&&d.add(a.reportId))}async function B(a,c,d){await a.delete(p.Z).where((0,b.u)(p.Z.reportId,c)),d.length&&await a.insert(p.Z).values(d.map(a=>({reportId:c,...a})))}async function C(a){let{sites:b,...c}=a;return(0,e.f)().transaction(async a=>{let[d]=await a.insert(p.I).values(c).returning({id:p.I.id});return await B(a,d.id,b),d.id})}async function D(a,c){let{sites:d,...f}=c;return(0,e.f)().transaction(async c=>!!(await c.update(p.I).set({...f,updatedAt:new Date}).where((0,b.u)(p.I.id,a)).returning({id:p.I.id})).length&&(await B(c,a,d),!0))}async function E(a,c){return(await (0,e.f)().update(p.I).set({...c,updatedAt:new Date}).where((0,b.u)(p.I.id,a)).returning({id:p.I.id})).length>0}async function F(a){return(await (0,e.f)().delete(p.I).where((0,b.u)(p.I.id,a)).returning({id:p.I.id})).length>0}async function G(){return(await (0,e.f)().select({id:f.monitors.id,url:f.monitors.url,app:f.resources.name}).from(f.monitors).innerJoin(f.resources,(0,b.u)(f.resources.id,f.monitors.resourceId)).where((0,b.u)(f.monitors.kind,"http")).orderBy((0,c.M)(f.resources.name),(0,c.M)(f.monitors.url))).map(a=>{let b=a.url;try{let c=new URL(a.url);b=`${c.host}${"/"===c.pathname?"":c.pathname}`}catch{}return{id:a.id,label:`${a.app} \xb7 ${b}`}})}a.s(["K",0,C,"_",0,F,"L",0,y,"q",0,()=>x(),"D",0,z,"r",0,G,"m",0,w,"l",0,A,"A",0,D,"$",0,E],805037);var H=a.i(639271),I=a.i(656298),J=a.i(688275),K=a.i(893893),L=a.i(672319),M=a.i(188546),N=a.i(233711),O=a.i(460565);async function P(){let[a]=await (0,e.f)().select({at:f.collectorRuns.finishedAt}).from(f.collectorRuns).where((0,b.b)((0,b.E)(f.collectorRuns.finishedAt),(0,b.y)(f.collectorRuns.trigger,["cron_job_org","qstash","manual"]))).orderBy((0,c.A)(f.collectorRuns.finishedAt)).limit(1);return a?.at??null}async function Q(){let[a]=await (0,e.f)().select({at:f.collectorRuns.finishedAt}).from(f.collectorRuns).where((0,b.b)((0,b.E)(f.collectorRuns.finishedAt),(0,b.y)(f.collectorRuns.trigger,["cron_job_org","manual"]))).orderBy((0,c.A)(f.collectorRuns.finishedAt)).limit(1);return a?.at??null}async function R(){let[a]=await (0,e.f)().select({threshold:f.alertRules.threshold}).from(f.alertRules).where((0,b.u)(f.alertRules.key,"CollectorStale")).limit(1);return(0,O.X)(a?.threshold)}a.s(["o",0,R,"D",0,P,"d",0,Q],569057);var S=a.i(683439);async function T(a,c=new Date){var d;let g=a.filter(S.f);return g.length?(d=await (0,e.f)().select({appId:f.appRepos.appId,repo:f.githubRepos.fullName,branch:f.githubRepos.defaultBranch,run:f.githubRepos.actions,checkedAt:f.githubRepos.actionsCheckedAt,goneAt:f.githubRepos.goneAt}).from(f.appRepos).innerJoin(f.githubRepos,(0,b.u)(f.githubRepos.id,f.appRepos.repoId)).where((0,b.y)(f.appRepos.appId,g)),d.filter(a=>a.run&&!a.goneAt).map(a=>({appId:a.appId,repo:a.repo,branch:a.branch,run:a.checkedAt&&c.getTime()-a.checkedAt.getTime()<=1728e5?a.run:null}))):[]}var U=a.i(351917),V=a.i(865653),W=a.i(367247),X=a.i(436357),Y=a.i(912283),Z=a.i(358179),$=a.i(492665),_=a.i(679662),aa=a.i(852539),ab=a.i(33135),ac=a.i(533957);let ad="OpsConsole-Deps/1.0 (+https://watchbell.west-solutions.web.id)";async function ae(a,b,c,d){let e=d.deadline-Date.now();if(e<500)return{ok:!1,error:"No time left for OSV.dev"};let f=AbortSignal.timeout(e);return ag(a,{method:"POST",headers:{"content-type":"application/json","user-agent":ad},body:JSON.stringify(b),signal:f},c,f,d)}async function af(a,b,c){let d=c.deadline-Date.now();if(d<500)return{ok:!1,error:"No time left for OSV.dev"};let e=AbortSignal.timeout(Math.min(d,8e3));return ag(a,{method:"GET",headers:{"user-agent":ad},signal:e},b,e,c)}async function ag(a,b,c,d,e){let f;try{f=await (e.fetch??fetch)(a,{...b,redirect:"error",cache:"no-store"})}catch(a){return{ok:!1,error:(0,ac.t)(a)?"OSV.dev didn't answer in time":"Couldn't reach OSV.dev"}}if(!f.ok)return await f.body?.cancel().catch(()=>void 0),{ok:!1,error:`OSV.dev answered HTTP ${f.status}`};try{let{bytes:a,truncated:b}=await (0,ab.z)(f,c,(0,ab.X)(d));if(b)return{ok:!1,error:"OSV.dev sent too large an answer"};return{ok:!0,body:JSON.parse(new TextDecoder().decode(a))}}catch(a){return{ok:!1,error:(0,ac.t)(a)?"OSV.dev didn't answer in time":"OSV.dev sent an answer we couldn't read"}}}async function ah(a,b){let c=[];for(let d of(0,aa.f)(a)){let a=await ae(aa.n,d,4194304,b);if(!a.ok)return a;let e=(0,aa.j)(a.body,d.queries.length);if(!e)return{ok:!1,error:"OSV.dev sent an answer we couldn't read"};c.push(...e)}return{ok:!0,ids:c}}async function ai(a,b){let c=[...new Set(a)].filter(aa.G);if(c.length>300)return{ok:!1,error:`Too many advisories to read in one scan (${c.length})`};let d=new Map,e=null;for(let a=0;a<c.length&&!e;a+=8)await Promise.all(c.slice(a,a+8).map(async a=>{let c=await af(`${aa.W}${encodeURIComponent(a)}`,1048576,b),f=c.ok?(0,aa.O)(c.body):null;f?d.set(a,f):e??=c.ok?"OSV.dev sent an advisory we couldn't read":c.error}));return e?{ok:!1,error:e}:{ok:!0,map:d}}var aj=a.i(521050),ak=a.i(120213),al=a.i(689963),am=a.i(26972),an=a.i(427221),ao=a.i(811365),ap=a.i(760417);let aq=al.z.array(am.z.object({name:an.z.string(),type:an.z.string(),sha:an.z.string(),size:ao.z.number().optional()}));async function ar(a,b,c,d={},e=null){if(!(0,ap.M)(b)||!(0,ap.c)(c))return{ok:!1,kind:"format",error:"That isn't a repository name or ref."};if(null!==e&&(0,aj.Q)(e)!==e)return{ok:!1,kind:"format",error:"That isn't a folder in a repository."};let f=e?e.split("/").map(encodeURIComponent).join("/"):"",g=await (0,ap.j)(`/repos/${(0,ap.f)(b)}/contents/${f}?ref=${encodeURIComponent(c)}`,a,d);if(!g.ok)return g;let h=aq.safeParse(g.data);return h.success?{ok:!0,data:h.data.filter(a=>"file"===a.type&&/^[0-9a-f]{40}$/.test(a.sha)).map(a=>({name:a.name,sha:a.sha,size:a.size??0}))}:{ok:!1,kind:"format",error:"GitHub answered the file list in a format the console doesn't recognise."}}async function as(a,b,c,d={}){if(!(0,ap.M)(b)||!(0,ap.c)(c))return{ok:!1,kind:"format",error:"That isn't a repository name or branch."};let e=await (0,ap.j)(`/repos/${(0,ap.f)(b)}/git/ref/heads/${c.split("/").map(encodeURIComponent).join("/")}`,a,d);return e.ok?{ok:!0,data:!0}:"missing"===e.kind?{ok:!0,data:!1}:e}function at(a,b,c,d,e,f={}){return(0,ap.V)(a,b,c,d,e,f)}async function au(a,b,c={}){if(!(0,ap.M)(b))return{ok:!1,kind:"format",error:"That isn't a repository name."};let d=await (0,ap.j)(`/repos/${(0,ap.f)(b)}/dependabot/alerts?state=open&ecosystem=npm&per_page=100`,a,c);if(!d.ok)return"scope"===d.kind||"missing"===d.kind?{ok:!0,data:{denied:!0}}:d;let e=(0,ak.E)(d.data);return e?{ok:!0,data:{alerts:e}}:{ok:!1,kind:"format",error:"GitHub answered the Dependabot alerts in a format the console doesn't recognise."}}var av=a.i(751263);async function aw(){let[a]=await (0,e.f)().select().from(f.accounts).where((0,b.u)(f.accounts.provider,"github")).orderBy((0,c.M)(f.accounts.createdAt)).limit(1);if(!a)return{error:"GitHub isn't connected."};let d=(0,Z.V)({ciphertext:a.credentialCiphertext,iv:a.credentialIv},(0,$.f)().OPS_ENCRYPTION_KEY);return d?{token:d,accountId:a.id}:{error:"Can't read the stored GitHub credential. Replace it on Connections."}}async function ax(){let[a]=await (0,e.f)().select({value:f.settings.value}).from(f.settings).where((0,b.u)(f.settings.key,"deps.scanAll")).limit(1);return a?.value===!0}let ay=a=>{let b=(0,av.w)(a);return{dir:(0,aj.Q)((a??{}).rootDirectory),unsupported:(0,aj.l)((a??{}).rootDirectoryUnsupported),branch:(0,av.i)((0,av.V)(a),null),...b?{fallback:b}:{}}};async function az(a){let c=[...new Set(a.filter(S.f))],d=new Map;if(!c.length)return d;let g=await (0,e.f)().select({repoId:f.appRepos.repoId,name:f.resources.name,monitored:f.resources.monitored,meta:f.resources.meta}).from(f.appRepos).innerJoin(f.resources,(0,b.u)(f.resources.id,f.appRepos.appId)).where((0,b.b)((0,b.y)(f.appRepos.repoId,c),(0,b.M)(f.resources.goneAt))).limit(1e3);for(let a of(g.sort((a,b)=>Number(!!b.monitored)-Number(!!a.monitored)||(a.name<b.name?-1:+(a.name>b.name))),g))d.has(a.repoId)||d.set(a.repoId,ay(a.meta));return d}async function aA(){let a={id:f.githubRepos.id,fullName:f.githubRepos.fullName,defaultBranch:f.githubRepos.defaultBranch,scannedAt:f.dependencyScans.scannedAt},c=(0,b.b)((0,b.M)(f.githubRepos.goneAt),(0,b.u)(f.githubRepos.archived,!1)),d=await ax()?await (0,e.f)().select(a).from(f.githubRepos).leftJoin(f.dependencyScans,(0,b.u)(f.dependencyScans.repoId,f.githubRepos.id)).where(c).limit(500):await (0,e.f)().selectDistinct(a).from(f.appRepos).innerJoin(f.githubRepos,(0,b.u)(f.githubRepos.id,f.appRepos.repoId)).leftJoin(f.dependencyScans,(0,b.u)(f.dependencyScans.repoId,f.githubRepos.id)).where(c).limit(500),g=d.length?await az(d.map(a=>a.id)):new Map;return(0,ak.M)(d.map(a=>{let b=g.get(a.id);return{...a,rootDir:b?.dir??null,rootDirUnsupported:b?.unsupported??null,prodBranch:b?.branch??null,...b?.fallback?{prodFallback:b.fallback}:{}}}))}let aB=(a,b)=>a.length>b?`${a.slice(0,b-1)}…`:a;async function aC(a,b){let c=new Date;await (0,e.f)().insert(f.dependencyScans).values({repoId:a,...b,updatedAt:c}).onConflictDoUpdate({target:f.dependencyScans.repoId,set:{...b,updatedAt:c}})}async function aD(a){return(0,e.f)().select({id:f.dependencyVulns.id,package:f.dependencyVulns.package,installedVersion:f.dependencyVulns.installedVersion,vulnId:f.dependencyVulns.vulnId,severity:f.dependencyVulns.severity,fixedVersion:f.dependencyVulns.fixedVersion,summary:f.dependencyVulns.summary,aliases:f.dependencyVulns.aliases,dev:f.dependencyVulns.dev,direct:f.dependencyVulns.direct,source:f.dependencyVulns.source}).from(f.dependencyVulns).where((0,b.b)((0,b.u)(f.dependencyVulns.repoId,a),(0,b.M)(f.dependencyVulns.resolvedAt))).limit(2e3)}function aE(a,b){for(let c of _.a){let d=a.find(a=>a.name===c.path);if(d)return{path:(0,aj.H)(b,c.path),kind:c.kind,sha:d.sha}}return null}async function aF(a,c,d,g={}){let h=()=>({...g,timeoutMs:Math.max(1e3,Math.min(d-Date.now(),1e4))}),i=async a=>(await aC(c.id,{error:aB(a,300),scannedAt:new Date}).catch(()=>void 0),{status:"failed",error:a}),j=c.defaultBranch??"HEAD",k=null;for(let b of[c.prodBranch,c.prodFallback]){if(b&&b===c.defaultBranch)break;let d=(0,av.i)(b,c.defaultBranch);if(!d)continue;let e=await as(a,c.fullName,d,h());if(!e.ok)return i(e.error);if(e.data){k=d;break}}let l=null!==k;k&&(j=k);let m=l?`Scanned ${k}, the branch production is built from.`:null,n=(0,aj.Q)(c.rootDir),o=n?null:(0,aj.l)(c.rootDirUnsupported),p=o?`The Vercel Root Directory "${o}" couldn't be used (Watchbell reads plain folder names, at most 4 deep); scanned the repository root.`:null,q=await ar(a,c.fullName,j,h(),n);if(!q.ok)return i(n&&"missing"===q.kind?`The folder ${(0,aj.x)(n)} isn't in ${c.fullName} on ${j}.`:q.error);let r=aE(q.data,n),s=q.data.find(a=>"package.json"===a.name)??null,t=!1,u=null;if(n&&s&&!r){let b=await ar(a,c.fullName,j,h());if(!b.ok)return i(b.error);t=null!==(r=aE(u=b.data,null))}let v=r?r.sha:s?`pkg:${s.sha}`:null,w=v&&n?`${n}:${v}${t&&s?`+${s.sha}`:""}`:v&&o?`odd:${v}`:v,x=w&&l?`br:${k}:${w}`:w,[y]=await (0,e.f)().select().from(f.dependencyScans).where((0,b.u)(f.dependencyScans.repoId,c.id)).limit(1),z=new Date;if(!(0,ak.U)(y??null,x,z,g.force))return{status:"unchanged"};if(!x){let a=await aD(c.id);return a.length&&await (0,e.f)().update(f.dependencyVulns).set({resolvedAt:z}).where((0,b.y)(f.dependencyVulns.id,a.map(a=>a.id))),await aC(c.id,{lockfilePath:null,lockfileSha:null,packageCount:0,scannedAt:z,queriedAt:z,error:null,note:aB([m,p,`No package.json or lockfile ${n?"in":"at"} ${(0,aj.x)(n)}.`].filter(Boolean).join(" "),300)}),{status:"scanned",vulns:0,packages:0,note:"no package.json"}}let A=(0,aj.H)(n,"package.json"),B=s?await at(a,c.fullName,A,j,ap.$,h()):null;if(B&&!B.ok)return i(B.error);let C=B?.ok&&B.data?(0,_.b)(B.data):null,D=null,E="package-json",F=t&&r?`Scanned ${(0,aj.x)(n)} with the repository root's ${r.path} (workspaces).`:null;if(r){if(2e3>d-Date.now())return i("Time budget used before the lockfile was read; the next run tries again.");let b=await at(a,c.fullName,r.path,j,0xf00000,{...g,timeoutMs:Math.max(1e3,Math.min(d-Date.now(),2e4))});if(!b.ok)return i(b.error);let e=!0;if(t&&n&&b.data&&!(0,aj.p)(r.kind,b.data,n)){let b=u?.some(a=>"package.json"===a.name)?await at(a,c.fullName,"package.json",j,ap.$,h()):null;if(b&&!b.ok)return i(b.error);e=(0,aj.F)(b?.data??null,n)}e?(D=b.data?(0,_.D)(r.kind,b.data):null,E=r.kind,D||(F=[F,`${r.path} couldn't be read; the versions come from package.json ranges (approximate).`].filter(Boolean).join(" "))):(F=`The repository root's ${r.path} isn't a workspace that includes ${n}, so the versions come from ${A} ranges (approximate).`,r=null)}if(D){let a=(0,Y.m)(D,C);D=a.deps,a.stale.length&&(F=[F,(0,Y.M)(a.stale)].filter(Boolean).join(" "))}else D=C?(0,_.e)(C):[],E="package-json",F??=r?null:"No lockfile: the versions come from package.json ranges (approximate).";let G=await aD(c.id),H=[];if(D.length){let a=await ah(D,{fetch:g.fetch,deadline:d});if(!a.ok)return i(a.error);let b=(0,ak.A)(G,!0===g.force),c=await ai((0,ak.z)(D,a.ids,b),{fetch:g.fetch,deadline:d});if(!c.ok)return i(c.error);H=(0,aa.i)(D,a.ids,c.map,b)}if(d-Date.now()>1500){let b=await au(a,c.fullName,h());b.ok&&"alerts"in b.data?H=(0,ak.R)(H,b.data.alerts,D):b.ok&&(F=[F,"Dependabot alerts aren't readable with this token (optional: Dependabot alerts: Read)."].filter(Boolean).join(" "))}let I=(0,ak.h)(G,H,(0,_.K)(C));F=[m,p,F].filter(Boolean).join(" ")||null;let J=new Date;return await (0,e.f)().transaction(async a=>{for(let d of(I.insert.length&&await a.insert(f.dependencyVulns).values(I.insert.map(a=>({repoId:c.id,package:a.package,installedVersion:a.installedVersion,vulnId:a.vulnId,aliases:a.aliases,severity:a.severity,fixedVersion:a.fixedVersion,summary:a.summary,direct:a.direct,dev:a.dev,source:a.source,firstSeenAt:J,lastSeenAt:J}))).onConflictDoNothing(),I.update))await a.update(f.dependencyVulns).set({severity:d.severity,fixedVersion:d.fixedVersion,summary:d.summary,aliases:d.aliases,dev:d.dev,direct:d.direct,lastSeenAt:J}).where((0,b.u)(f.dependencyVulns.id,d.id));I.resolve.length&&await a.update(f.dependencyVulns).set({resolvedAt:J}).where((0,b.b)((0,b.y)(f.dependencyVulns.id,I.resolve),(0,b.M)(f.dependencyVulns.resolvedAt))),await a.insert(f.dependencyScans).values({repoId:c.id,lockfilePath:r?.path??(s?A:null),lockfileSha:x,packageCount:D.length,scannedAt:J,queriedAt:J,error:null,note:F?aB(F,300):null,updatedAt:J}).onConflictDoUpdate({target:f.dependencyScans.repoId,set:{lockfilePath:r?.path??(s?A:null),lockfileSha:x,packageCount:D.length,scannedAt:J,queriedAt:J,error:null,note:F?aB(F,300):null,updatedAt:J}})}),{status:"scanned",vulns:I.insert.length+I.update.length,packages:D.length,note:"package-json"===E?F:null}}async function aG(a,c={}){var d,g;let h,i,j,k,l=await aw();if("error"in l)return{error:l.error};let{first:m,only:n,skip:o,...p}=c,q=(d=await aA(),h=(g={first:m,only:n,skip:o}).only?new Set(g.only):null,i=new Set(g.skip??[]),j=(h?d.filter(a=>h.has(a.id)):d).filter(a=>!i.has(a.id)),k=new Set(g.first??[]),[...j.filter(a=>k.has(a.id)),...j.filter(a=>!k.has(a.id))]),r={scanned:0,unchanged:0,failed:[],left:0,done:[],listed:q.map(a=>a.id)};for(let[b,c]of q.entries()){if(a-Date.now()<4e3){r.left=q.length-b;break}r.done.push(c.id);try{let b=await aF(l.token,c,a,p);"scanned"===b.status?r.scanned++:"unchanged"===b.status?r.unchanged++:r.failed.push(`${c.fullName}: ${b.error}`)}catch(a){r.failed.push(`${c.fullName}: ${a instanceof Error?a.name:"error"}`)}}return await (0,e.f)().delete(f.dependencyVulns).where((0,b.b)((0,b.E)(f.dependencyVulns.resolvedAt),(0,b.S)(f.dependencyVulns.resolvedAt,new Date(Date.now()-7776e6)))).catch(()=>void 0),r}let aH=async()=>(await (0,e.f)().select({id:f.accounts.id}).from(f.accounts).where((0,b.u)(f.accounts.provider,"github")).limit(1)).length>0;async function aI(a,c,d={}){let g,h,i,{marked:j,onlyMarked:k}=c;if(!await aH())return{problem:null,settled:[...j],done:[],complete:!0};let l=j.filter(S.f),m=l.length?await (0,e.f)().select({appId:f.appRepos.appId,repoId:f.appRepos.repoId}).from(f.appRepos).where((0,b.y)(f.appRepos.appId,l)).limit(5*l.length):[],n=[...new Set(m.map(a=>a.repoId))],o=a=>m.filter(b=>b.appId===a).map(a=>a.repoId),p=j.filter(a=>!o(a).length);if(k&&!n.length)return{problem:null,settled:[...j],done:[],complete:!0};if(a-Date.now()<4e3)return{problem:null,settled:p,done:[],complete:!1};let q=(c.skip??[]).filter(a=>!n.includes(a)),r=await aG(a,{...d,first:n,...k?{only:n}:{skip:q}});if("error"in r){let a;return{problem:(a=r.error,/didn't answer in time|no time left|time budget|rate limit/i.test(a))?null:r.error,settled:[...j],done:[],complete:!0}}let s=new Set([...r.done,...n.filter(a=>!r.listed.includes(a))]);return{problem:(g=r.failed.filter(a=>!/didn't answer in time|no time left|time budget|rate limit/i.test(a)),(h=r.failed.length-g.length+(r.left??0))&&console.info(`deps: ${h} repositor${1===h?"y":"ies"} wait for the next run`),i=g.slice(0,3),g.length>3&&i.push(`+${g.length-3} more`),i.length?i.join("; "):null),settled:j.filter(a=>o(a).every(a=>s.has(a))),done:r.done,complete:0===r.left}}async function aJ(a){let d={repo:null,scan:null,vulns:[],writeConnected:!1};if(!(0,S.f)(a))return d;let[g]=await (0,e.f)().select({id:f.githubRepos.id,fullName:f.githubRepos.fullName}).from(f.appRepos).innerJoin(f.githubRepos,(0,b.u)(f.githubRepos.id,f.appRepos.repoId)).where((0,b.u)(f.appRepos.appId,a)).limit(1);if(!g)return d;let[[h],i,[j]]=await Promise.all([(0,e.f)().select({scannedAt:f.dependencyScans.scannedAt,lockfilePath:f.dependencyScans.lockfilePath,packageCount:f.dependencyScans.packageCount,error:f.dependencyScans.error,note:f.dependencyScans.note}).from(f.dependencyScans).where((0,b.u)(f.dependencyScans.repoId,g.id)).limit(1),(0,e.f)().select({package:f.dependencyVulns.package,installedVersion:f.dependencyVulns.installedVersion,vulnId:f.dependencyVulns.vulnId,severity:f.dependencyVulns.severity,fixedVersion:f.dependencyVulns.fixedVersion,summary:f.dependencyVulns.summary,aliases:f.dependencyVulns.aliases,dev:f.dependencyVulns.dev,direct:f.dependencyVulns.direct,firstSeenAt:f.dependencyVulns.firstSeenAt}).from(f.dependencyVulns).where((0,b.b)((0,b.u)(f.dependencyVulns.repoId,g.id),(0,b.M)(f.dependencyVulns.resolvedAt))).limit(2e3),(0,e.f)().select({id:f.accounts.id}).from(f.accounts).where((0,b.u)(f.accounts.provider,"github_write")).limit(1)]);i.sort((a,b)=>(0,ak.t)(a.severity)-(0,ak.t)(b.severity)||(a.package<b.package?-1:+(a.package>b.package))||(a.vulnId<b.vulnId?-1:1));let k=await (0,e.f)().select({number:f.dependencyPrs.number,stage:f.dependencyPrs.stage,stageText:f.dependencyPrs.stageText,openedAt:f.dependencyPrs.openedAt}).from(f.dependencyPrs).where((0,b.b)((0,b.u)(f.dependencyPrs.repoId,g.id),(0,b.B)(f.dependencyPrs.openedAt,new Date(Date.now()-12096e5)))).orderBy((0,c.A)(f.dependencyPrs.openedAt)).limit(5).catch(()=>[]);return{repo:g,scan:h??null,vulns:i,writeConnected:!!j,prs:(k??[]).map(a=>({...a,fullName:g.fullName}))}}async function aK(a,c={}){if(!(0,S.f)(a))return{ok:!1,error:"That app no longer exists."};let[g]=await (0,e.f)().select({app:f.resources.name,id:f.githubRepos.id,fullName:f.githubRepos.fullName,defaultBranch:f.githubRepos.defaultBranch,goneAt:f.githubRepos.goneAt,meta:f.resources.meta}).from(f.appRepos).innerJoin(f.githubRepos,(0,b.u)(f.githubRepos.id,f.appRepos.repoId)).innerJoin(f.resources,(0,b.u)(f.resources.id,f.appRepos.appId)).where((0,b.u)(f.appRepos.appId,a)).limit(1);if(!g)return{ok:!1,error:"Link a repository first."};if(g.goneAt)return{ok:!1,error:"That repository is no longer shared with the GitHub token."};let h=await aw();if("error"in h)return{ok:!1,error:h.error};let i=ay(g.meta),j=await aF(h.token,{id:g.id,fullName:g.fullName,defaultBranch:g.defaultBranch,scannedAt:null,rootDir:i.dir,rootDirUnsupported:i.unsupported,prodBranch:i.branch,prodFallback:i.fallback??null},Date.now()+4e4,{...c,force:!0});if("failed"===j.status)return{ok:!1,error:`The scan failed: ${j.error}`};let[k]=await (0,e.f)().select({n:d.B`count(*)::int`}).from(f.dependencyVulns).where((0,b.b)((0,b.u)(f.dependencyVulns.repoId,g.id),(0,b.M)(f.dependencyVulns.resolvedAt))),l=k?.n??0;return{ok:!0,app:g.app,repo:g.fullName,vulns:l,message:l?`${l} known vulnerabilit${1===l?"y":"ies"} in ${j.packages??0} packages.`:`No known vulnerabilities in ${j.packages??0} packages.`}}async function aL(a){let c=a.filter(S.f);if(!c.length)return[];let d=await (0,e.f)().select({appId:f.appRepos.appId,repoId:f.appRepos.repoId,error:f.dependencyScans.error}).from(f.appRepos).innerJoin(f.dependencyScans,(0,b.u)(f.dependencyScans.repoId,f.appRepos.repoId)).where((0,b.b)((0,b.y)(f.appRepos.appId,c),(0,b.E)(f.dependencyScans.scannedAt)));if(!d.length)return[];let g=await (0,e.f)().select({repoId:f.dependencyVulns.repoId,package:f.dependencyVulns.package,installedVersion:f.dependencyVulns.installedVersion,fixedVersion:f.dependencyVulns.fixedVersion,severity:f.dependencyVulns.severity,summary:f.dependencyVulns.summary,dev:f.dependencyVulns.dev,direct:f.dependencyVulns.direct}).from(f.dependencyVulns).where((0,b.b)((0,b.y)(f.dependencyVulns.repoId,[...new Set(d.map(a=>a.repoId))]),(0,b.M)(f.dependencyVulns.resolvedAt))).limit(1e4);return d.map(a=>({appId:a.appId,repoId:a.repoId,error:a.error,vulns:g.filter(b=>b.repoId===a.repoId).map(a=>({package:a.package,installedVersion:a.installedVersion,fixedVersion:a.fixedVersion,severity:a.severity,summary:a.summary,dev:a.dev,direct:a.direct}))}))}async function aM(a,c=new Set){let g=a.filter(S.f),h=new Map;if(!g.length)return h;let i=await (0,e.f)().select({appId:f.appRepos.appId,repoId:f.appRepos.repoId}).from(f.appRepos).where((0,b.y)(f.appRepos.appId,g));if(!i.length)return h;let j=await (0,e.f)().select({repoId:f.dependencyVulns.repoId,package:f.dependencyVulns.package,installedVersion:f.dependencyVulns.installedVersion,fixedVersion:f.dependencyVulns.fixedVersion,vulnId:f.dependencyVulns.vulnId,aliases:f.dependencyVulns.aliases,severity:f.dependencyVulns.severity,direct:f.dependencyVulns.direct}).from(f.dependencyVulns).where((0,b.b)((0,b.y)(f.dependencyVulns.repoId,[...new Set(i.map(a=>a.repoId))]),(0,b.M)(f.dependencyVulns.resolvedAt),(0,b.u)(f.dependencyVulns.direct,!0),(0,b.E)(f.dependencyVulns.fixedVersion))).limit(2e3),k=j.some(a=>"next"===a.package)?new Set((await (0,e.f)().selectDistinct({appId:f.dependencyPrs.appId}).from(f.dependencyPrs).where((0,b.b)((0,b.y)(f.dependencyPrs.appId,g),(0,b.$)(f.dependencyPrs.stage,["merged","closed"]),(0,b.B)(f.dependencyPrs.openedAt,new Date(Date.now()-12096e5)),d.B`${f.dependencyPrs.packages} @> '["next"]'::jsonb`)).limit(g.length)).map(a=>a.appId)):new Set;for(let a of i){let b=c.has(a.appId)||k.has(a.appId);(0,ak.B)(j.filter(c=>c.repoId===a.repoId&&!(b&&"next"===c.package))).length&&h.set(a.appId,a.repoId)}return h}a.s(["o",0,12e3,"d",0,4e3,"j",0,aJ,"O",0,aI,"C",0,aM,"M",0,aw,"a",0,aL,"h",0,aK],930270);var aN=a.i(242605);async function aO(){return(0,e.f)().select({appId:f.links.fromResourceId,dbId:f.links.toResourceId}).from(f.links).where((0,b.u)(f.links.kind,"uses_db")).limit(500)}async function aP(a){let g=(0,b.b)((0,b.u)(f.resources.monitored,!0),(0,b.M)(f.resources.goneAt)),[h,i,j,k,l]=await Promise.all([Q(),P(),(0,e.f)().select({m:f.monitors,appName:f.resources.name,appMeta:f.resources.meta}).from(f.monitors).innerJoin(f.resources,(0,b.u)(f.resources.id,f.monitors.resourceId)).where((0,b.b)(g,(0,b.u)(f.monitors.paused,!1),(0,b.u)(f.monitors.ownerPaused,!1))),(0,e.f)().select({id:f.resources.id,name:f.resources.name,meta:f.resources.meta}).from(f.resources).where((0,b.b)(g,(0,b.u)(f.resources.kind,"app"))),(0,e.f)().select({id:f.accounts.id,provider:f.accounts.provider,label:f.accounts.label,expiresAt:f.accounts.expiresAt,status:f.accounts.status,lastError:f.accounts.lastError}).from(f.accounts)]),m=j.map(a=>a.m.id),n=m.length?await (0,e.f)().select({id:f.checks.monitorId,n:d.B`count(*)::int`,p95:d.B`percentile_cont(0.95) within group (order by ${f.checks.latencyMs})::float8`}).from(f.checks).where((0,b.b)((0,b.y)(f.checks.monitorId,m),(0,b.B)(f.checks.at,new Date(a.getTime()-6e5)),(0,b.u)(f.checks.inMaintenance,!1))).groupBy(f.checks.monitorId):[],o=k.map(a=>a.id),p=o.length?await (0,e.f)().selectDistinctOn([f.deployments.resourceId],{appId:f.deployments.resourceId,state:f.deployments.state,sha:f.deployments.commitSha,createdAt:f.deployments.createdAtProvider}).from(f.deployments).where((0,b.b)((0,b.y)(f.deployments.resourceId,o),(0,b.u)(f.deployments.target,"production"))).orderBy(f.deployments.resourceId,(0,c.A)(f.deployments.createdAtProvider)):[],q=await (0,e.f)().select({id:f.resources.id,name:f.resources.name,kind:f.resources.kind,state:f.snapshots.state,data:f.snapshots.data}).from(f.resources).innerJoin(f.snapshots,(0,b.u)(f.snapshots.resourceId,f.resources.id)).where((0,b.b)(g,(0,b.y)(f.resources.kind,["supabase_project","neon_project","firestore","turso_database","upstash_redis","d1_database","zone","domain"]))),r=a=>q.filter(b=>b.kind===a),s=q.filter(a=>["supabase_project","neon_project","firestore","turso_database","upstash_redis","d1_database"].includes(a.kind)),t=r("zone"),u=r("domain"),v=await aO(),w=await (0,W.Y)().catch(()=>null),x=o.length?await aL(o).catch(()=>null):null,y=o.length?await (0,aN.F)(o).catch(()=>null):null,z=o.length?await T(o).catch(()=>null):null,B="on"===(0,U.C)()?function(a){var b;let c;if(!a||"ok"!==a.status||!a.system)return null;let d=(b=a.updates,c=a=>a.security||a.fixes.length>0||null!==a.error,{security:b.filter(c),other:b.filter(a=>!c(a))}).security,e=d.some(a=>null!==a.error),f=d.filter(a=>a.fixes.length).map(a=>{let b=[...a.fixes].sort((a,b)=>(b.cvss3??-1)-(a.cvss3??-1));return{source:a.source,score:b[0].cvss3,cves:b.map(a=>a.cve)}}),g=a.kernel,h=g?.newestInstalled&&g.runningVersion&&(0,V.f)(g.newestInstalled,g.runningVersion)>0?{installed:g.newestInstalled,running:g.runningVersion}:null;return{system:a.system,updates:f,kernelWaiting:h,partial:e}}(await (0,U.y)().catch(()=>null)):null,C=await A().catch(()=>null);return{now:a,lastMinuteRunAt:h,lastAnyRunAt:i,monitors:j.map(({m:a,appName:b,appMeta:c})=>{let d=n.find(b=>b.id===a.id),e="heartbeat"===a.kind;return{id:a.id,appId:a.resourceId,appName:b,url:e?a.name??"heartbeat":a.url,kind:e?"heartbeat":"http",state:a.state,failStreak:a.failStreak,lastStatus:a.lastStatus,lastError:a.lastError,lastCheckedAt:a.lastCheckedAt,p95Last10:d?.p95??null,checksLast10:d?.n??0,movedTo:e?null:(0,X.u)(a.url,{name:b,meta:c},k.filter(b=>b.id!==a.resourceId),{lastError:a.lastError})?.to??null}}),apps:k.map(a=>{let b=p.find(b=>b.appId===a.id);return{id:a.id,name:a.name,latestProduction:b?{state:b.state,sha:b.sha,createdAt:b.createdAt}:null}}),accounts:l,dbs:s.length?s.map(b=>(function(a,b){let c={id:a.id,name:a.name,state:a.state,sizeBytes:null,sizeLimitBytes:null,lastApiAt:null,cuHours:null,cuLimit:null,readsToday:null,readsLimit:null,quotaExhausted:null};if("supabase_project"===a.kind){let b=(0,K.k)(K.B,a.data),d=(0,N.Z)(b.lastTrafficAt),e=(0,N.Z)(b.trafficAt),f=d??(e&&!b.trafficError?new Date(e.getTime()-6048e5):null);return{...c,provider:"supabase",sizeBytes:b.sizeBytes??null,sizeLimitBytes:L.R,lastApiAt:f}}if("neon_project"===a.kind){let b=(0,K.k)(K.s,a.data),d=(b.branches??[]).map(a=>a.logicalSize).filter(a=>"number"==typeof a);return{...c,provider:"neon",cuHours:null==b.computeSeconds?null:b.computeSeconds/3600,cuLimit:J.a.cuHours,sizeBytes:d.length?d.reduce((a,b)=>a+b,0):null,sizeLimitBytes:J.a.storageBytes}}if("firestore"===a.kind){let d=(0,K.k)(K.w,a.data),e=(0,N.Z)(d.opsAt),f=null!=d.reads&&e&&e.getTime()>=(0,I.a)(b).getTime()?d.reads:null,g=null!=d.latencyMs||null!=d.pingError;return{...c,provider:"firestore",readsToday:f,readsLimit:I.T.reads,quotaExhausted:g?"RESOURCE_EXHAUSTED"===d.pingReason:null}}if("turso_database"===a.kind){let d=(0,K.k)(K.N,a.data),e=(0,H.u)((0,H.G)(d,b));return{...c,provider:"turso",sizeBytes:d.orgStorageBytes??null,sizeLimitBytes:H.g.storageBytes,quotaPct:e?.pct??null,quotaLabel:e?`${e.label} ${e.text}`:null}}if("upstash_redis"===a.kind){let d=(0,K.k)(K.e,a.data),e=(0,H.u)((0,H.$)(d,b));return{...c,provider:"upstash",sizeBytes:d.storageBytes??null,sizeLimitBytes:H.W.storageBytes,quotaPct:e?.pct??null,quotaLabel:e?`${e.label} ${e.text}`:null}}if("d1_database"===a.kind){let d=(0,K.k)(K.x,a.data),e=(0,H.u)((0,H.I)(d,b));return{...c,provider:"d1",sizeBytes:d.sizeBytes??null,sizeLimitBytes:H.M.dbBytes,quotaPct:e?.pct??null,quotaLabel:e?`${e.label} ${e.text}`:null}}return null})(b,a)).filter(a=>null!==a):null,domains:t.length||u.length?[...t.map(a=>({id:a.id,name:a.name,tlsNotAfter:null,expiresAt:(0,N.Z)((0,M.q)(a.data).rdap?.expiresAt)})),...u.map(a=>({id:a.id,name:a.name,tlsNotAfter:(0,N.Z)((0,M.q)(a.data).tls?.notAfter),expiresAt:null}))]:null,dns:function(a,b){let c=a.filter(a=>Array.isArray(a.data.records));if(!c.length)return null;let d=a.map(a=>a.name),e=[];for(let a of c){let c=b.filter(b=>(0,N.J)(b.name,d)===a.name.toLowerCase().replace(/\.$/,"")),f=[...new Set(c.flatMap(a=>(0,M.q)(a.data).vercel?.recommendedIps??[]))];for(let b of(0,M.q)(a.data).records){if(!(0,N.l)(b,f))continue;let d=b.name.toLowerCase().replace(/\.$/,""),g=c.find(a=>a.name.toLowerCase().replace(/\.$/,"")===d);e.push({id:`${a.id}:${b.id}`,resourceId:g?.id??a.id,name:b.name,proxied:b.proxied,pointsToVercel:!0})}}return e}(t,u),links:v,compute:w,deps:x&&x.length?x:null,frameworks:y&&y.length?y:null,ci:z&&z.length?z:null,os:B,reportSends:C}}var aQ=a.i(714530),aR=a.i(396667);let aS={vercel:"Vercel",supabase:"Supabase",neon:"Neon",cloudflare:"Cloudflare",firebase:"Firebase",gcp:"Google Cloud"};async function aT(){return(await (0,e.f)().select().from(f.alertRules)).filter(a=>(0,g.h)(a.key)).map(a=>({key:a.key,severity:a.severity,threshold:a.threshold,enabled:a.enabled,channels:a.channels}))}async function aU(a,c={}){let[d,j,m,n,o,p]=await Promise.all([aP(a),aT(),(0,e.f)().select().from(f.alerts).where((0,b.M)(f.alerts.resolvedAt)),(0,e.f)().select({provider:f.providerStatus.provider,state:f.providerStatus.state}).from(f.providerStatus),(0,aQ.w)(),(0,aR.I)()]),q=new Map(d.accounts.map(a=>[a.id,a.provider])),r=m.filter(a=>!(0,l.O)(p,a.ruleKey,a.accountId?q.get(a.accountId):null)),s=(0,h.f)(d,j,c.only),t=s.evaluated,u=s.observations.filter(a=>!(0,l.O)(p,a.rule,a.provider)),v=j.find(a=>"CollectorStale"===a.key),w=void 0===d.lastAnyRunAt?d.lastMinuteRunAt:d.lastAnyRunAt,x=!!v?.enabled&&(!w||a.getTime()-w.getTime()>(v.threshold??5)*6e4),y=new Map((d.dbs??[]).filter(a=>"paused"===a.state).map(a=>[a.id,a.name])),z=new Map(d.links.filter(a=>y.has(a.dbId)).map(a=>[a.appId,`DatabasePaused \xb7 ${y.get(a.dbId)}`])),A=new Map(n.filter(a=>"warn"===a.state||"err"===a.state).map(a=>["gcp"===a.provider?"firebase":a.provider,aS[a.provider]??a.provider])),B=(0,k.u)(o,d.monitors.map(a=>({id:a.id,appId:a.appId})),a,d.apps.map(a=>a.id)),C=r.filter(a=>(0,g.h)(a.ruleKey)).map(a=>({id:a.id,ruleKey:a.ruleKey,subject:a.subject,okStreak:a.okStreak,lastSampleAt:a.lastSampleAt,silencedUntil:a.silencedUntil,silencedUntilResolved:a.silencedUntilResolved,notifiedOpen:a.notifiedOpen,lastNotifiedAt:a.lastNotifiedAt,pending:a.pending,pendingSince:a.pendingSince})),D=(0,i.f)(C,u,t,j,{now:a,collectorStale:x,mutedApps:z,incidents:A,maintenance:B});return D.open.length||D.touch.length||D.resolve.length?(await (0,e.f)().transaction(async c=>{for(let b of D.open)await c.insert(f.alerts).values({...b,pendingSince:b.pending?a:null}).onConflictDoNothing();for(let d of D.touch){let{id:e,pending:g,...h}=d;await c.update(f.alerts).set({...h,...g?{pending:g,pendingSince:a}:{}}).where((0,b.b)((0,b.u)(f.alerts.id,e),(0,b.M)(f.alerts.resolvedAt)))}for(let d of D.resolve)await c.update(f.alerts).set({resolvedAt:a,pending:d.pending,pendingSince:d.pending?a:null}).where((0,b.b)((0,b.u)(f.alerts.id,d.id),(0,b.M)(f.alerts.resolvedAt)))}),{opened:D.open.length,resolved:D.resolve.length}):{opened:0,resolved:0}}async function aV(){let[a,c]=await Promise.all([(0,aR.I)(),(0,e.f)().select({ruleKey:f.alerts.ruleKey,provider:f.accounts.provider,n:d.B`count(*)::int`}).from(f.alerts).leftJoin(f.accounts,(0,b.u)(f.accounts.id,f.alerts.accountId)).where((0,b.b)((0,b.M)(f.alerts.resolvedAt),(0,b.y)(f.alerts.severity,["critical","warning"]))).groupBy(f.alerts.ruleKey,f.accounts.provider)]);return c.reduce((b,c)=>b+((0,l.O)(a,c.ruleKey,c.provider)?0:Number(c.n)),0)}let aW=d.B`case ${f.alerts.severity} when 'critical' then 0 when 'warning' then 1 else 2 end`;async function aX(a=new Set){return(await (0,e.f)().select({a:f.alerts,name:f.resources.name,kind:f.resources.kind}).from(f.alerts).leftJoin(f.resources,(0,b.u)(f.resources.id,f.alerts.resourceId)).where((0,b.b)((0,b.M)(f.alerts.resolvedAt),(0,aR.s)(a))).orderBy(aW,(0,c.A)(f.alerts.startedAt)).limit(200)).map(({a,name:b,kind:c})=>({...a,resourceName:b??null,resourceKind:c??null}))}async function aY(){return aX(await (0,aR.I)())}async function aZ(a){return(await (0,e.f)().select({id:f.alerts.id,ruleKey:f.alerts.ruleKey,severity:f.alerts.severity,title:f.alerts.title,resourceId:f.alerts.resourceId,startedAt:f.alerts.startedAt,resolvedAt:f.alerts.resolvedAt}).from(f.alerts).where((0,b.b)((0,b.E)(f.alerts.resolvedAt),(0,b.B)(f.alerts.resolvedAt,new Date(a.getTime()-6048e5)))).orderBy((0,c.A)(f.alerts.resolvedAt)).limit(50)).flatMap(a=>a.resolvedAt?[{...a,resolvedAt:a.resolvedAt}]:[])}async function a$(){let[a,c,h]=await Promise.all([aT(),(0,e.f)().select({key:f.alerts.ruleKey,n:d.B`count(*)::int`}).from(f.alerts).where((0,b.M)(f.alerts.resolvedAt)).groupBy(f.alerts.ruleKey),(0,e.f)().select({kind:f.resources.kind}).from(f.resources).innerJoin(f.snapshots,(0,b.u)(f.snapshots.resourceId,f.resources.id)).where((0,b.b)((0,b.u)(f.resources.monitored,!0),(0,b.M)(f.resources.goneAt))).groupBy(f.resources.kind)]),i=new Set(h.map(a=>a.kind)),j={databases:["supabase_project","neon_project","firestore"].some(a=>i.has(a)),domains:i.has("domain")||i.has("zone"),dns:i.has("zone")};return g.u.flatMap(b=>{let d=a.find(a=>a.key===b);if(!d)return[];let e=g._[b].needs;return[{rule:d,firing:c.find(a=>a.key===b)?.n??0,hasData:null===e||j[e]}]})}async function a_(a,c,d,g){let h="off"===c?{silencedUntil:null,silencedUntilResolved:!1,silencedBy:null}:{...n(c,g),silencedBy:d},[i]=await (0,e.f)().update(f.alerts).set(h).where((0,b.b)((0,b.u)(f.alerts.id,a),(0,b.M)(f.alerts.resolvedAt))).returning({ruleKey:f.alerts.ruleKey,title:f.alerts.title,resourceId:f.alerts.resourceId});return i??null}async function a0(a,c){return(await (0,e.f)().update(f.alertRules).set({...c,updatedAt:new Date}).where((0,b.u)(f.alertRules.key,a)).returning({key:f.alertRules.key})).length>0}async function a1(){try{let[a]=await (0,e.f)().select({value:f.settings.value}).from(f.settings).where((0,b.u)(f.settings.key,j.z)).limit(1);return(0,j._)(a?.value)}catch{return{}}}async function a2(a,b){let c=await a1();Object.keys(b).length?c[a]=b:delete c[a],await (0,e.f)().insert(f.settings).values({key:j.z,value:c}).onConflictDoUpdate({target:f.settings.key,set:{value:c,updatedAt:new Date}})}a.s(["$",0,aU,"q",0,aX,"I",0,aZ,"i",0,aY,"X",0,aV,"w",0,a1,"y",0,a$,"z",0,a0,"_",0,a2,"N",0,a_],455317)}]})();
2
2
 
3
3
  //# sourceMappingURL=src_lib_1eioo4oodq-8h._.js.map
@@ -0,0 +1,23 @@
1
+ (()=>{"use strict";module.exports=[192738,67890,a=>{var b=a.i(245710),c=a.i(708621);let d=a=>`${a} hari`,e=(a,b)=>0>Number(a)?`${b} udah habis.`:`${b} habis dalam ${d(a)}.`,f={"the job reported a failure":"job-nya lapor gagal","started but didn't finish":"udah mulai tapi nggak selesai","never pinged":"belum pernah ping","no ping in time":"nggak ada ping tepat waktu"},g={critical:"kritis",high:"tinggi",moderate:"sedang",low:"rendah",unknown:"nggak diketahui"},h={January:"Januari",February:"Februari",March:"Maret",April:"April",May:"Mei",June:"Juni",July:"Juli",August:"Agustus",September:"September",October:"Oktober",November:"November",December:"Desember"},i=a=>a.replace(/^(\w+)/,a=>h[a]??a),j={ReportSendFailed:[[/^The (\w+ \d{4}) report for (.+) couldn't be emailed after 3 tries(?:: (.+)|\.)$/,(a,b,c)=>`Laporan ${i(b)} untuk ${c} gagal dikirim setelah 3 kali coba; alasannya ada di Manage › Reports.`],[/^The (\w+ \d{4}) report for (.+) was emailed\.$/,(a,b,c)=>`Laporan ${i(b)} untuk ${c} sudah terkirim.`]],OsSecurityUpdate:[[/^On (.+?), no waiting security update fixes a CVE scored (\S+) or more, and the newest kernel runs\.$/,(a,b,c)=>`Di ${b} nggak ada update security yang nunggu buat CVE skor ${c} ke atas, dan kernel terbaru udah jalan.`],[/^On (.+?): (.+)\.$/,(a,b,c)=>`Di ${b}: ${c.replace(/ fixes /g," nambal ").replace(/ and (\d+) more\b/g," dan $1 lagi").replace(/\b(\d+) more packages\b/g,"$1 paket lagi").replace(/ waits for a reboot/g," nunggu reboot")}.`]],MonitorDown:[[/^(.+): no ping for (\d+ (?:min|h|days?))\.$/,(a,b,c)=>`${b}: nggak ada ping selama ${c.replace(/^(\d+) min$/,"$1 menit").replace(/^(\d+) h$/,"$1 jam").replace(/^(\d+) days?$/,"$1 hari")}.`],[/^(.+): (the job reported a failure|started but didn't finish|never pinged|no ping in time)\.$/,(a,b,c)=>`${b}: ${f[c]}.`],[/^(.+) failed its check \((.*)\) on (\d+) consecutive checks\.$/,(a,b,c,d)=>`${b}: ${d} cek gagal berturut-turut (${c}).`],[/^(.+) returned no answer on (\d+) consecutive checks\.$/,(a,b,c)=>`${b}: ${c} cek gagal berturut-turut (nggak ada jawaban).`],[/^(.+) returned (HTTP \d+) on (\d+) consecutive checks\.$/,(a,b,c,d)=>`${b}: ${d} cek gagal berturut-turut (${c}).`],[/^(.+) answers again\.$/,(a,b)=>`${b} udah jawab lagi.`],[/^(\S+) moved to (\S+); MonitorDomainMoved takes over\.$/,(a,b,c)=>`${b} pindah ke ${c}; MonitorDomainMoved yang ambil alih.`]],MonitorDomainMoved:[[/^(\S+) is no longer a domain of (.+); production is on (\S+)\.$/,(a,b,c,d)=>`${b} udah bukan domain ${c}; production sekarang di ${d}.`],[/^The monitor checks (\S+), a domain of (.+)\.$/,(a,b,c)=>`Monitor ngecek ${b}, domain ${c}.`]],CollectorStale:[[/^The collector hasn't finished a run yet\.$/,()=>"Collector belum pernah selesai jalan."],[/^The last minute run finished ([\d,]+) min ago\.$/,(a,b)=>`Collector terakhir selesai jalan ${b} menit lalu.`]],HighLatency:[[/^p95 ([\d,]+) ms over the last 10 minutes \(limit ([\d,]+) ms\)\.$/,(a,b,c)=>`p95 ${b} ms selama 10 menit terakhir (batas ${c} ms).`]],DeploymentFailed:[[/^Production deployment \(no commit\) failed\.$/,()=>"Deploy production (tanpa commit) gagal."],[/^Production deployment (\S+) failed\.$/,(a,b)=>`Deploy production ${b} gagal.`]],DatabasePaused:[[/^Supabase project (.+) is paused\.$/,(a,b)=>`Project Supabase ${b} lagi di-pause.`]],CertExpiringSoon:[[/^The TLS certificate of (.+) expires in (-?\d+) days?\.$/,(a,b,c)=>e(c,`Sertifikat TLS ${b}`)]],DomainExpiringSoon:[[/^(.+) expires in (-?\d+) days?\.$/,(a,b,c)=>e(c,b)]],StorageAlmostFull:[[/^(.+) uses ([\d,]+) MB of ([\d,]+) MB \(([\d,]+)%\)\.$/,(a,b,c,d,e)=>`${b} pakai ${c} MB dari ${d} MB (${e}%).`]],NeonComputeHigh:[[/^(.+) used ([\d,]+) of ([\d,]+) CU-hours this month\.$/,(a,b,c,d)=>`${b} udah pakai ${c} dari ${d} CU-hours bulan ini.`]],FirestoreQuotaHigh:[[/^(.+) hit a Firestore quota \(RESOURCE_EXHAUSTED\)\.$/,(a,b)=>`${b} kena kuota Firestore (RESOURCE_EXHAUSTED).`],[/^(.+) read ([\d,]+) of ([\d,]+) documents today \(([\d,]+)%\)\.$/,(a,b,c,d,e)=>`${b} udah baca ${c} dari ${d} dokumen hari ini (${e}%).`]],AutoPauseRisk:[[/^No API traffic for (\d+) days?\. Supabase pauses free projects after about 7 days\.$/,(a,b)=>`Nggak ada traffic API selama ${d(b)}. Supabase nge-pause project free setelah sekitar 7 hari.`]],DnsProxiedToVercel:[[/^(.+) points to Vercel through the Cloudflare proxy\. Vercel recommends DNS only\.$/,(a,b)=>`${b} ngarah ke Vercel lewat proxy Cloudflare. Vercel nyaranin DNS only.`]],DbQuotaHigh:[[/^(.+): (.+) at ([\d,]+)% of the free plan\.$/,(a,b,c,d)=>`${b}: ${c.replace(/^Rows read/,"baris dibaca").replace(/^Rows written/,"baris ditulis").replace(/^Commands/,"command").replace(/^usage$/,"pemakaian").replace(/ today\b/," hari ini").replace(/\bof ([^ ]+(?: [A-Z]+)?)\b/,"dari $1").replace(/ this month\b/," bulan ini").replace(/\(account\)/,"(akun)")} udah ${d}% dari kuota gratis.`]],ComputeHigh:[[/^(.+) compute is back under the limits\.$/,(a,b)=>`Compute ${b} udah balik di bawah batas.`],[/^(.+): ((?:CPU|RAM|disk|connections) .+)\.$/,(a,b,c)=>`${b}: ${c.replace(/ for (\d+) min/g," selama $1 menit").replace(/\(limit /g,"(batas ").replace(/\bconnections (\d+) of (\d+)/g,"koneksi $1 dari $2")}.`]],CredentialExpiring:[[/^Google Drive access was removed \(invalid_grant\)\. Reconnect it\.$/,()=>"Akses Google Drive dicabut (invalid_grant). Sambungin lagi ya."],[/^The (\S+) credential (.+) has expired\.$/,(a,b,c)=>`Credential ${b} ${c} udah kedaluwarsa.`],[/^The (\S+) credential (.+) expires in (-?\d+) days?\.$/,(a,b,c,d)=>e(d,`Credential ${b} ${c}`)]],VulnerableDependency:[[/^(.+) has no moderate, high or critical dependency advisories\.$/,(a,b)=>`${b} nggak punya advisory dependency sedang, tinggi atau kritis.`],[/^(.+) has no high or critical dependency advisories\.$/,(a,b)=>`${b} nggak punya advisory dependency tinggi atau kritis.`],[/^(\d+) vulnerable packages? \(([^)]*)\): (.*)$/,(a,b,c,d)=>`${b} paket rentan (${c.replace(/\b(critical|high|moderate|low|unknown)\b/g,a=>g[a])}): ${d.replace(/ \(no fix yet\)/g," (belum ada fix)").replace(/, \+(\d+) more\.$/,", +$1 lagi.")}`]],CiFailing:[[/^The latest (.+) run on (.+) (failed|passed)( \(run #\d+\))?\.$/,(a,b,c,d,e)=>`Run ${b} terbaru di ${"the default branch"===c?"branch default":c} ${"failed"===d?"gagal":"lolos"}${e??""}.`]],FrameworkVulnerable:[[/^(.+) runs Next\.js (.+) with no known advisories\.$/,(a,b,c)=>`${b} pakai Next.js ${c} tanpa advisory yang diketahui.`],[/^Next\.js (.+) has (\d+) known vulnerabilit(?:y|ies) \((critical|high|moderate|low|unknown)\), (?:fixed in (\S+)(?: \((one fix needs|some fixes need) Next\.js (\d+)\))?|no fix yet)\.$/,(a,b,c,d,e,f,h)=>`Next.js ${b} punya ${c} kerentanan yang diketahui (${g[d]}), ${e?`udah di-fix di ${e}${f?` (${"one fix needs"===f?"satu fix":"sebagian fix"} butuh Next.js ${h})`:""}`:"belum ada fix"}.`]]};function k(a,b){for(let[c,d]of Object.hasOwn(j,a)?j[a]:[]){let a=c.exec(b);if(a)return d(...a)}return b}a.s(["f",0,k],67890);let l={en:{open:"FIRING",repeat:"REPEAT",resolve:"RESOLVED"},id:{open:"MUNCUL",repeat:"ULANG",resolve:"PULIH"}},m={en:{critical:"critical",warning:"warning",info:"info"},id:{critical:"kritis",warning:"peringatan",info:"info"}},n={en:{firing:"firing",resolved:"resolved",since:"since",open:"Open alerts",more:"more on the Alerts page",causedBy:"caused by",incident:"reports an incident",step:"Next step",test:"test"},id:{firing:"aktif",resolved:"pulih",since:"sejak",open:"Buka Alerts",more:"lagi di halaman Alerts",causedBy:"karena",incident:"lagi ada insiden",step:"Yang perlu kamu lakukan",test:"tes"}},o=a=>a.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),p={critical:0,warning:1,info:2};function q(a,b){let c=a.filter(a=>"resolve"!==a.kind).length,d=a.length-c;return[c?`${c} ${n[b].firing}`:"",d?`${d} ${n[b].resolved}`:""].filter(Boolean).join(", ")}function r(a,b,c,d,e,f){let g=[...a].sort((a,b)=>("resolve"===a.kind)-("resolve"===b.kind)||p[a.severity]-p[b.severity]),h=[d],i=d.length+e.length+40;for(let a=0;a<g.length;a++){let d=c(g[a]);if(i+d.length+1>b){h.push(f(g.length-a));break}h.push(d),i+=d.length+1}return h.push(e),h.join("\n").slice(0,b)}let s={en:{CollectorStale:"the watchdog already runs the collector itself every 5 minutes. Check the job on cron-job.org and the latest Vercel deploy.",DomainExpiringSoon:"renew the domain at its registrar; Watchbell can't pay for it.",StorageAlmostFull:"delete old data or shorten retention in that database; the free tier can't add storage.",NeonComputeHigh:"cut queries or make Neon auto-suspend sooner; the quota resets at the start of the month.",FirestoreQuotaHigh:"cut Firestore reads (cache in the app); the quota resets daily.",DbQuotaHigh:"cut queries to that database until its quota resets.",ComputeHigh:"check the Pool card on the Supabase page (idle connections close automatically at 10 of 15); for CPU or disk, look for heavy queries.",DnsProxiedToVercel:"turn off the proxy (orange cloud) for that record in Cloudflare; Vercel needs DNS only.",CredentialExpiring:"create a new token and replace it in Settings → Connections before it expires.",FrameworkVulnerable:"if the app's GitHub repository isn't linked yet, link it on the app page to get an update PR from the office; or update next yourself.",CiFailing:"open the run on GitHub from the app page; Watchbell reads it once a day, so a fix shows after the next sync.",OsSecurityUpdate:"open DevOps › OS vulnerabilities for the command to copy (Watchbell never installs anything), run it on the machine, reboot for a new kernel, then Scan now.",ReportSendFailed:"open Manage › Reports, check the email sender and the recipients, then use Send test; or download the PDF and send it yourself.",MonitorDomainMoved:"press Update monitor on the Uptime page (or approve the proposal) so the monitor checks the new domain; the app itself is fine."},id:{CollectorStale:"watchdog udah jalanin collector sendiri tiap 5 menit. Cek job di cron-job.org dan deploy terakhir di Vercel.",DomainExpiringSoon:"perpanjang domain di registrar-nya, Watchbell nggak bisa bayar.",StorageAlmostFull:"hapus data lama atau pendekin retensi di database itu, free tier nggak bisa nambah storage.",NeonComputeHigh:"kurangin query atau percepat auto-suspend Neon, kuota reset awal bulan.",FirestoreQuotaHigh:"kurangin read Firestore (cache di app), kuota reset tiap hari.",DbQuotaHigh:"kurangin query ke database itu sampai kuotanya reset.",ComputeHigh:"cek kartu Pool di halaman Supabase (koneksi nganggur ditutup otomatis di 10 dari 15), kalau CPU/disk cari query yang berat.",DnsProxiedToVercel:"matiin proxy (awan oranye) record itu di Cloudflare, Vercel butuh DNS only.",CredentialExpiring:"bikin token baru dan ganti di Settings → Connections sebelum habis.",FrameworkVulnerable:"kalau repo GitHub app-nya belum di-link, link di halaman app biar office bikinin PR update; atau update next sendiri.",CiFailing:"buka run-nya di GitHub dari halaman app; Watchbell baca sekali sehari, jadi fix-nya kelihatan setelah sync berikutnya.",OsSecurityUpdate:"buka DevOps › OS vulnerabilities, copy perintahnya (Watchbell nggak install apa-apa sendiri), jalanin di mesinnya, reboot kalau ada kernel baru, terus Scan now.",ReportSendFailed:"buka Manage › Reports, cek pengirim email dan penerimanya, terus coba Send test; atau download PDF-nya dan kirim sendiri.",MonitorDomainMoved:"pencet Update monitor di halaman Uptime (atau approve usulannya) biar monitor ngecek domain baru; app-nya sendiri aman."}},t=(a,b="en")=>Object.hasOwn(s[b],a)?s[b][a]??null:null;a.s(["Z",0,m,"l",0,function(a,d,e,f="en",g={},h={}){let i=`${e.replace(/\/+$/,"")}/alerts`,j=n[f],p=a=>`${l[f][a.kind]} \xb7 ${m[f][a.severity]} \xb7 `,s=a=>h.test?c.I[f]:"id"===f?k(a.ruleKey,a.message):a.message,u=h.test?`Watchbell (${j.test})`:"Watchbell",v=a=>"resolve"===a.kind?null:((a,b="en")=>{let c=t(a,b);return c?`${n[b].step}: ${c}`:null})(a.ruleKey,f),w=a=>[a.causedBy?`${j.causedBy} ${a.causedBy}`:"",a.provider?`${a.provider} ${j.incident}`:""].filter(Boolean).join(" · "),x=a=>`
2
+ +${a} ${j.more}`,y=(a,d)=>{let e=Object.hasOwn(g,a.ruleKey)?g[a.ruleKey]?.[f]:void 0;if(!e)return null;let[h="",...i]=(0,c.l)(e,{status:l[f][a.kind],severity:m[f][a.severity],rule:a.ruleKey,target:d(a.title),detail:d(s(a)),cause:d(w(a)),step:"resolve"===a.kind?"":t(a.ruleKey,f)??"",since:`${(0,b.U)(a.startedAt)} ${(0,b.J)(a.startedAt)}`,threshold:null==a.threshold?"":a.threshold.toLocaleString("en-US")}).split("\n");return[h,i.join("\n")]},z=a=>a.replace(/[*_`~|\[\]<>]/g,"");return{telegram:r(a,4096,a=>{let c=y(a,a=>a);return c?`
3
+ <b>${o(c[0])}</b>${c[1]?`
4
+ ${o(c[1])}`:""}`:`
5
+ <b>${p(a)}${o(a.ruleKey)} \xb7 ${o(a.title)}</b>
6
+ ${o(s(a))}${w(a)?`
7
+ <i>${o(w(a))}</i>`:""}${v(a)?`
8
+ 👉 ${o(v(a))}`:""}
9
+ ${j.since} ${(0,b.U)(a.startedAt)} ${(0,b.J)(a.startedAt)}`},`<b>${u}</b>: ${q(a,f)} \xb7 ${(0,b.U)(d)} ${(0,b.J)(d)}`,`
10
+ <a href="${o(i)}">${j.open}</a>`,x),discord:r(a,2e3,a=>{let b=y(a,z);return b?`
11
+ **${b[0]}**${b[1]?`
12
+ ${b[1]}`:""}`:`
13
+ **${p(a)}${a.ruleKey} \xb7 ${z(a.title)}**
14
+ ${z(s(a))}${w(a)?`
15
+ _${w(a)}_`:""}${v(a)?`
16
+ 👉 ${v(a)}`:""}`},`**${u}**: ${q(a,f)} \xb7 ${(0,b.U)(d)} ${(0,b.J)(d)}`,`
17
+ ${i}`,x)}},"H",0,o,"a",0,t],192738)},49146,a=>{var b=a.i(617084),c=a.i(196081),d=a.i(462820),e=a.i(93321),f=a.i(530385),g=a.i(351674),h=a.i(548734),i=a.i(837137),j=a.i(192738),k=a.i(358179),l=a.i(601219),m=a.i(455317),n=a.i(247730),o=a.i(396667),p=a.i(46396),q=a.i(492665),r=a.i(390626),s=a.i(755453),t=a.i(352595),u=a.i(80997),v=a.i(718025),w=a.i(552543),x=a.i(288879),y=a.i(204784),z=a.i(446914),A=a.i(71575),B=a.i(556987),C=a.i(245710),D=a.i(910697);let E="digest.lastSentDay",F="digest.state";async function G(a){let[b]=await (0,h.f)().select().from(i.channels).where((0,e.u)(i.channels.kind,a)).limit(1);if(!b)return null;try{return{row:b,config:JSON.parse((0,k.K)({ciphertext:b.configCiphertext,iv:b.configIv},(0,q.f)().OPS_ENCRYPTION_KEY))}}catch{return null}}async function H(a,b){let c=(0,k.l)(JSON.stringify(b),(0,q.f)().OPS_ENCRYPTION_KEY),d={configCiphertext:c.ciphertext,configIv:c.iv,keyVersion:c.keyVersion,enabled:!0,lastError:null,updatedAt:new Date};await (0,h.f)().insert(i.channels).values({kind:a,...d}).onConflictDoUpdate({target:i.channels.kind,set:d})}async function I(a,b){return(await (0,h.f)().update(i.channels).set({enabled:b,updatedAt:new Date}).where((0,e.u)(i.channels.kind,a)).returning({kind:i.channels.kind})).length>0}async function J(){let a=(0,v.f)(),[b,d,e,f,g]=await Promise.all([G("telegram"),G("discord"),G("webhook"),G("smtp"),(0,c.X)()]),h=new Set;a.telegramToken&&b?.row.enabled&&b.config?.chatId&&h.add("telegram"),d?.row.enabled&&d.config?.url&&h.add("discord"),e?.row.enabled&&e.config?.url&&h.add("webhook"),f?.row.enabled&&f.config?.host&&h.add("smtp");let i=`${(g.publicUrl??(0,q.f)().SITE_URL).replace(/\/+$/,"")}/alerts`;return{send:(c,h,j)=>"telegram"===c?(0,z.I)(a.telegramToken,b.config.chatId,h):"webhook"===c?(0,s.E)(e.config,(0,s.J)(h,j??[],new Date,i)):"smtp"===c?(0,t.r)(f.config,(h.split("\n")[0]??"").replace(/[*_`~]/g,"").slice(0,150)||"Watchbell alert",h.replace(/\*\*(.+?)\*\*/g,"$1").replace(/(^|[\s(])_(\S(?:.*?\S)?)_(?=[\s).,!?:;]|$)/gm,"$1$2").replace(/`([^`\n]+)`/g,"$1"),{},{fromName:g.senderName}):(0,r.$)(d.config.url,h),configured:h}}async function K(){let a=(0,v.f)().telegramToken;if(!a)return null;let b=await G("telegram");return b?.row.enabled&&b.config?.chatId?{token:a,chatId:b.config.chatId}:null}async function L(){let a=await G("discord");return a?.row.enabled&&a.config?.url?{url:a.config.url}:null}let M="notify.telegramThreads",N=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;async function O(a,b,c){let d=a.filter(a=>N.test(a));if(!d.length||!Number.isSafeInteger(b)||b<=0)return;let e=Object.fromEntries(d.map(a=>[a,{m:b,at:c.getTime()}])),f=c.getTime()-6048e5,j=g.B`case when jsonb_typeof(${i.settings.value}) = 'object' then ${i.settings.value} else '{}'::jsonb end`;await (0,h.f)().insert(i.settings).values({key:M,value:e}).onConflictDoUpdate({target:i.settings.key,set:{value:g.B`(select coalesce(jsonb_object_agg(e.key, e.value), '{}'::jsonb) from jsonb_each(${JSON.stringify(e)}::jsonb || ${j}) as e
18
+ where jsonb_typeof(e.value) = 'object' and (e.value->>'at') ~ '^[0-9]{1,15}$' and (e.value->>'at')::bigint > ${f})`,updatedAt:c}})}async function P(a){if(!a||!N.test(a))return null;try{let[b]=await (0,h.f)().select({value:i.settings.value}).from(i.settings).where((0,e.u)(i.settings.key,M)).limit(1),c=b?.value&&"object"==typeof b.value?b.value[a]:null;return"number"==typeof c?.m&&Number.isSafeInteger(c.m)&&c.m>0?c.m:null}catch{return null}}let Q=()=>(0,n.f)().catch(()=>B.a);async function R(a,b,c={}){var d;if(b-Date.now()<6e3)return{sent:0,dropped:0};let k=await (0,o.I)(),l=await (0,h.f)().select({a:i.alerts,channels:i.alertRules.channels,threshold:i.alertRules.threshold}).from(i.alerts).innerJoin(i.alertRules,(0,e.u)(i.alertRules.key,i.alerts.ruleKey)).where((0,e.b)((0,e.E)(i.alerts.pending),g.B`(${i.alerts.pending} = 'resolve') = (${i.alerts.resolvedAt} is not null)`,(0,o.s)(k))).orderBy((0,f.M)(i.alerts.pendingSince)).limit(50);if(!l.length)return{sent:0,dropped:0};let n=new Set((await (0,h.f)().update(i.alerts).set({claimedAt:a}).where((d=l.map(a=>a.a.id),(0,e.b)((0,e.y)(i.alerts.id,d),(0,e.E)(i.alerts.pending),(0,e.F)((0,e.M)(i.alerts.claimedAt),(0,e.S)(i.alerts.claimedAt,new Date(a.getTime()-12e4)))))).returning({id:i.alerts.id})).map(a=>a.id)),p=l.filter(a=>n.has(a.a.id));if(!p.length)return{sent:0,dropped:0};let{send:r,configured:s}=c.sender??await J(),t=new Set(p.filter(({a:b})=>"resolve"!==b.pending&&(b.silencedUntilResolved||null!==b.silencedUntil&&b.silencedUntil.getTime()>a.getTime())).map(({a})=>a.id)),[u,v,x]=await Promise.all([Q(),(0,w.B)(),(0,m.w)()]),y=new Set;for(let b of["telegram","discord","webhook","smtp"]){if(!s.has(b))continue;let c=p.filter(a=>a.channels.includes(b)&&!t.has(a.a.id));if(!c.length)continue;let d=c.map(({a,threshold:c})=>{let d="telegram"===b?a:(0,B.o)(a,u);return{kind:a.pending,ruleKey:a.ruleKey,severity:a.severity,title:d.title,message:d.message,startedAt:a.startedAt,causedBy:d.causedBy,provider:a.providerIncident,threshold:c}}),f=(0,j.l)(d,a,(0,q.f)().SITE_URL,"webhook"===b?"en":"smtp"===b?v.email:v[b],x),g=await r(b,(0,B.G)("telegram"===b?f.telegram:f.discord),"webhook"===b?d.map(a=>({...a,title:(0,B.G)(a.title),message:(0,B.G)(a.message)})):void 0);await (0,h.f)().update(i.channels).set(g.ok?{lastSentAt:a,lastError:null}:{lastError:g.error}).where((0,e.u)(i.channels.kind,b)),g.ok&&c.forEach(({a})=>y.add(a.id)),g.ok&&"telegram"===b&&g.messageId&&await O(c.filter(({a})=>"open"===a.pending).map(({a})=>a.id),g.messageId,a).catch(()=>console.warn("notify: remembering the Telegram message failed"))}let z=0,A=0,C=[];for(let{a:b,channels:c}of p){let d=c.some(a=>s.has(a)),f=null!==b.pendingSince&&a.getTime()-b.pendingSince.getTime()>18e5;y.has(b.id)?(z++,await (0,h.f)().update(i.alerts).set({pending:null,pendingSince:null,lastNotifiedAt:a,claimedAt:null,..."open"===b.pending?{notifiedOpen:!0}:{}}).where((0,e.u)(i.alerts.id,b.id))):t.has(b.id)||!d||f?(A++,await (0,h.f)().update(i.alerts).set({pending:null,claimedAt:null}).where((0,e.u)(i.alerts.id,b.id))):C.push(b.id)}return C.length&&await (0,h.f)().update(i.alerts).set({claimedAt:null}).where((0,e.y)(i.alerts.id,C)),{sent:z,dropped:A}}async function S(a){let b=new Date(a.getTime()-864e5),c=await (0,o.I)(),d=g.B`case ${i.alerts.severity} when 'critical' then 0 when 'warning' then 1 else 2 end`,[j,k,l,m,n]=await Promise.all([(0,h.f)().select({ruleKey:i.alerts.ruleKey,severity:i.alerts.severity,title:i.alerts.title,message:i.alerts.message,resourceId:i.alerts.resourceId,startedAt:i.alerts.startedAt}).from(i.alerts).where((0,e.b)((0,e.M)(i.alerts.resolvedAt),(0,o.s)(c))).orderBy(d,(0,f.A)(i.alerts.startedAt)).limit(50),(0,h.f)().select({n:g.B`count(*)::int`}).from(i.alerts).where((0,e.B)(i.alerts.startedAt,b)),(0,h.f)().select({ruleKey:i.alerts.ruleKey,title:i.alerts.title,resourceId:i.alerts.resourceId,startedAt:i.alerts.startedAt,resolvedAt:i.alerts.resolvedAt}).from(i.alerts).where((0,e.b)((0,e.E)(i.alerts.resolvedAt),(0,e.B)(i.alerts.resolvedAt,b))).orderBy((0,f.A)(i.alerts.resolvedAt)).limit(20),(0,h.f)().select({id:i.resources.id,name:i.resources.name}).from(i.resources).where((0,e.b)((0,e.u)(i.resources.kind,"app"),(0,e.u)(i.resources.monitored,!0),(0,e.M)(i.resources.goneAt))).orderBy(i.resources.name).limit(D.O.apps),(0,p.h)(a)]),q=m.map(a=>a.id),[r,s]=q.length?await Promise.all([(0,h.f)().select({id:i.monitors.resourceId,total:g.B`count(*)::int`,bad:g.B`(count(*) filter (where not ${i.checks.ok}))::int`}).from(i.checks).innerJoin(i.monitors,(0,e.u)(i.monitors.id,i.checks.monitorId)).where((0,e.b)((0,e.y)(i.monitors.resourceId,q),(0,e.B)(i.checks.at,b),(0,e.u)(i.checks.inMaintenance,!1))).groupBy(i.monitors.resourceId),(0,h.f)().select({id:i.storedLogs.resourceId,n:g.B`count(*)::int`}).from(i.storedLogs).where((0,e.b)((0,e.y)(i.storedLogs.resourceId,q),(0,e.B)(i.storedLogs.at,b))).groupBy(i.storedLogs.resourceId)]):[[],[]],t=new Map(r.map(a=>[a.id,a])),u=new Map(s.map(a=>[a.id,a.n])),v=await Q();return{now:a,opened:k[0]?.n??0,firing:j.map(({resourceId:a,...b})=>{let c=(0,B.o)({...b,resourceId:a,causedBy:null},v);return{...b,title:c.title,message:c.message}}),resolved:l.flatMap(a=>a.resolvedAt?[{ruleKey:a.ruleKey,title:(0,B.o)({title:a.title,message:"",causedBy:null,resourceId:a.resourceId},v).title,took:(0,A.M)(a.startedAt,a.resolvedAt)}]:[]),apps:m.map(a=>{let b=t.get(a.id);return{name:a.name,uptime:b&&b.total>0?(b.total-b.bad)/b.total*100:null,errors:u.get(a.id)??0}}),providers:n.filter(a=>"ok"!==a.state).map(a=>({label:a.label,text:a.text}))}}async function T(a,b,c){await (0,h.f)().update(i.channels).set(b.ok?{lastSentAt:c,lastError:null}:{lastError:b.error}).where((0,e.u)(i.channels.kind,a))}async function U(a){let d=await (0,c.X)().catch(()=>null);return d?.senderName?(0,b.C)(d.senderName,(0,b.W)(a)):a}async function V(a){let[b,d]=await Promise.all([S(a),(0,w.I)("email")]),e=await (0,c.X)().catch(()=>null);return(0,u.J)({...b,siteUrl:e?.publicUrl??(0,q.f)().SITE_URL},d)}async function W(a,b){let c=(0,v.f)();if(!c.resendKey||!c.digestFrom)return{ok:!1,kind:"config",error:d.n.notSet("RESEND_API_KEY or DIGEST_FROM")};let e=await G("email_digest");if(!e?.config?.to)return{ok:!1,kind:"config",error:"The daily email digest isn't connected."};let f=await V(a),g=await U(c.digestFrom),h=await (0,y.f)(c.resendKey,{from:g,to:e.config.to,subject:f.subject,html:f.html,text:f.text,idempotencyKey:b});return await T("email_digest",h,a),h}async function X(a,b={}){let c=await (0,h.f)().select().from(i.settings).where((0,e.y)(i.settings.key,[E,F])),d=c.find(a=>a.key===E)?.value,f="string"==typeof d?d:null;if(!(0,u.A)(a,f))return;let g=(0,v.f)(),j=await G("email_digest");if(!g.resendKey||!g.digestFrom||!j?.row.enabled||!j.config?.to)return;let{resendKey:k}=g,m=await U(g.digestFrom),n=j.config.to,o=(0,C.x)(a),p=await (0,u.K)(a,{lastSentDay:f,state:c.find(a=>a.key===F)?.value??null,build:b.build??(()=>V(a)),send:b.send??(a=>(0,y.f)(k,{from:m,to:n,...a,idempotencyKey:`digest-${o}`}))});p.acted&&(p.result&&await T("email_digest",p.result,a),p.state?await (0,h.f)().insert(i.settings).values({key:F,value:p.state}).onConflictDoUpdate({target:i.settings.key,set:{value:p.state,updatedAt:a}}):await (0,h.f)().delete(i.settings).where((0,e.u)(i.settings.key,F)),p.sentDay&&await (0,h.f)().insert(i.settings).values({key:E,value:p.sentDay}).onConflictDoUpdate({target:i.settings.key,set:{value:p.sentDay,updatedAt:a}}),p.event&&await (0,l.f)([{type:"system",kind:"warn",message:p.event.message,detail:p.event.detail,resourceId:null,reason:"DigestFailed",at:a}]))}let Y={en:{title:"Test message",message:"If you can read this, alerts reach you here."},id:{title:"Pesan tes",message:"Kalau pesan ini kebaca, alert udah nyampe ke sini."}};async function Z(a,b,c={}){if("email_digest"===a)return W(b,`test-${b.getTime()}`);let{send:d,configured:e}=c.sender??await J();if(!e.has(a))return $(a);let f="webhook"===a?"en":await (0,w.I)("smtp"===a?"email":a),g=(0,j.l)([{kind:"open",ruleKey:"Test",severity:"info",...Y[f],startedAt:b,causedBy:null,provider:null}],b,(0,q.f)().SITE_URL,f),h=await d(a,"telegram"===a?g.telegram:g.discord);return await T(a,h,b),h}let $=a=>({ok:!1,kind:"config",error:"telegram"===a?`Telegram isn't connected, or ${d.n.notSet("TELEGRAM_BOT_TOKEN")}`:"webhook"===a?"The webhook isn't connected.":"smtp"===a?"Email (SMTP) isn't connected.":"Discord isn't connected."});async function _(a,b,c,d,e={}){let{send:f,configured:g}=e.sender??await J(),h=await (0,w.B)(),i=[];for(let e of a){if(!g.has(e)){i.push({kind:e,result:$(e)});continue}let a=(0,j.l)([b],d,(0,q.f)().SITE_URL,"webhook"===e?"en":"smtp"===e?h.email:h[e],c,{test:!0}),k=await f(e,(0,B.G)("telegram"===e?a.telegram:a.discord),"webhook"===e?[b]:void 0);await T(e,k,d),i.push({kind:e,result:k})}return i}async function aa(){let a=(0,v.f)(),b={telegram:a.telegramToken?null:d.n.notSet("TELEGRAM_BOT_TOKEN"),discord:null,webhook:null,smtp:null,email_digest:a.resendKey&&a.digestFrom?null:d.n.notSet("RESEND_API_KEY or DIGEST_FROM")},[c,e,f,g,h]=await Promise.all([G("telegram"),G("discord"),G("webhook"),G("smtp"),G("email_digest")]),i=(a,c)=>({kind:a,connected:null!==c,enabled:c?.row.enabled??!1,hint:c?(0,x.t)(a,c.config):null,lastSentAt:c?.row.lastSentAt??null,lastError:c?.row.lastError??null,envMissing:b[a]});return[i("telegram",c),i("discord",e),i("webhook",f),i("smtp",g),i("email_digest",h)]}a.s(["k",0,aa,"q",0,R,"G",0,L,"u",0,G,"P",0,T,"_",0,_,"L",0,Z,"y",0,I,"J",0,X,"Q",0,K,"M",0,P,"Y",0,H])},390626,755453,288879,352595,80997,a=>{var b=a.i(19809),c=a.i(371289);let d=/^https:\/\/(?:(?:canary|ptb)\.)?discord(?:app)?\.com\/api\/webhooks\/\d{5,25}\/[\w-]{20,}$/;function e(a){return d.test(a.trim())?null:"Paste the whole webhook URL from Discord."}async function f(a,d,g={}){let h;if((0,c.W)())return{ok:!1,kind:"config",error:b.Y};if(e(a))return{ok:!1,kind:"config",error:"The saved Discord webhook URL isn't valid."};try{h=await (g.fetch??fetch)(a,{method:"POST",headers:{"Content-Type":"application/json"},signal:AbortSignal.timeout(g.timeoutMs??5e3),cache:"no-store",body:JSON.stringify({content:d.slice(0,2e3),username:"Watchbell",allowed_mentions:{parse:[]}})})}catch{return{ok:!1,kind:"transient",error:"Discord didn't answer."}}if(204===h.status||h.ok)return{ok:!0};if(429===h.status){let a=await h.json().catch(()=>null),b=Math.ceil(a?.retry_after??5);return{ok:!1,kind:"transient",retryAfterS:b,error:`Discord asked us to wait ${b} s.`}}return 404===h.status||401===h.status?{ok:!1,kind:"config",error:"Discord says this webhook no longer exists."}:{ok:!1,kind:h.status>=500?"transient":"config",error:`Discord returned an error (${h.status}).`}}a.s(["$",0,f,"e",0,e],390626);var g=a.i(666680),h=a.i(300794),i=a.i(261283);function j(a){let b;try{b=new URL(a.trim())}catch{return"Paste the whole address, starting with https://."}let c=(0,i._)(b);return"scheme"===c?"Use an https:// address without a user name or password in it.":"blocked"===c?"Use an address on the public internet, on port 443. Watchbell doesn't post into private networks.":null}let k={open:"firing",repeat:"repeat",resolve:"resolved"};async function l(a){return(await (0,h.lookup)(a,{all:!0})).map(a=>a.address)}async function m(a,d,e={}){let f,h;if((0,c.W)())return{ok:!1,kind:"config",error:b.Y};if(j(a.url))return{ok:!1,kind:"config",error:"The saved webhook address isn't allowed any more."};let k=new URL(a.url.trim());try{let a=await (e.lookup??l)(k.hostname);if(!a.length||a.some(i.W))return{ok:!1,kind:"config",error:"The webhook host resolves to a private address; Watchbell won't post there."}}catch{return{ok:!1,kind:"transient",error:"The webhook host didn't resolve."}}let n=JSON.stringify(d),o=String(Math.floor(Date.parse(d.sentAt)/1e3)),p={"Content-Type":"application/json","User-Agent":"Watchbell-Webhook/1.0","X-Watchbell-Timestamp":o};a.secret&&(p["X-Watchbell-Signature"]=(h=a.secret,`sha256=${(0,g.createHmac)("sha256",h).update(`${o}.${n}`).digest("hex")}`));try{f=await (e.fetch??fetch)(k.toString(),{method:"POST",headers:p,body:n,redirect:"manual",cache:"no-store",signal:AbortSignal.timeout(e.timeoutMs??5e3)})}catch{return{ok:!1,kind:"transient",error:"The webhook didn't answer."}}if(await f.body?.cancel().catch(()=>void 0),f.ok)return{ok:!0};if(f.status>=300&&f.status<400)return{ok:!1,kind:"config",error:"The webhook answered with a redirect; Watchbell doesn't follow them. Use the final address."};if(429===f.status){let a=Math.min(600,Math.max(1,Number(f.headers.get("retry-after"))||30));return{ok:!1,kind:"transient",retryAfterS:a,error:`The webhook asked to wait ${a} s.`}}return{ok:!1,kind:f.status>=500?"transient":"config",error:`The webhook returned an error (${f.status}).`}}a.s(["k",0,function(a){return""===a||a.length>=16&&a.length<=200?null:"Use a secret of 16 to 200 characters, or leave it empty."},"E",0,m,"J",0,function(a,b,c,d){return{source:"watchbell",event:b.length?"alerts":"test",sentAt:c.toISOString(),text:a.slice(0,4e3),link:d,alerts:b.slice(0,20).map(a=>({status:k[a.kind],rule:a.ruleKey,severity:a.severity,title:a.title,message:a.message,startedAt:a.startedAt.toISOString(),causedBy:a.causedBy,provider:a.provider}))}},"I",0,j],755453);var n=a.i(761095),o=a.i(685560),p=a.i(61675),q=a.i(617084);function r(a){let b=new Set;return a.split(/[\s,;]+/).filter(a=>a&&!b.has(a.toLowerCase())&&b.add(a.toLowerCase()))}a.s(["a",0,10,"t",0,function(a,b){if("telegram"===a)return`${b.chatLabel||"Chat"} \xb7 …${b.chatId.slice(-4)}`;if("discord"===a){let a=/\/webhooks\/(\d+)\//.exec(b.url)?.[1]??"";return`webhook …${a.slice(-4)}`}if("webhook"===a){let a="";try{a=new URL(b.url).hostname}catch{a="?"}return`${a}/…${b.secret?" · signed":""}`}if("smtp"===a){let a=r(b.to);return`${b.host}:${b.port} \xb7 to ${(a[0]??"").slice(0,2)}…@…${a.length>1?` +${a.length-1}`:""}`}return`${b.to.slice(0,2)}…@…`},"E",0,r],288879);let s=[465,587,2525],t=p.z.email();function u(a){let b={},c=a.host.trim().toLowerCase();/^[a-z0-9.-]{3,253}$/.test(c)&&c.includes(".")?(0,i.N)(c)&&(b.host="Use a mail server on the public internet. Watchbell doesn't connect into private networks."):b.host="Enter the server name, for example smtp.office365.com.",s.includes(a.port)||(b.port="Use port 587 (STARTTLS), 465 (TLS) or 2525."),(!a.user.trim()||a.user.length>200)&&(b.user="Enter the user name the server expects (often the whole address)."),(!a.pass||a.pass.length>500)&&(b.pass="Enter the password or app password."),t.safeParse(a.from.trim()).success||(b.from="Enter the address the mail comes from.");let d=r(a.to);if(d.length)if(d.length>10)b.to="Up to 10 addresses.";else{let a=d.find(a=>!t.safeParse(a).success);a&&(b.to=`${a} isn't a valid address.`)}else b.to="Enter the address that gets the alerts.";return b}let v=a=>Buffer.from(a).toString("base64").replace(/.{1,76}/g,"$&\r\n"),w=a=>a.replace(/[^\w.-]/g,"_").slice(0,100);class x{socket;buf;lines;ready;waiters;onData;constructor(a){this.socket=a,this.buf="",this.lines=[],this.ready=[],this.waiters=[],this.onData=a=>this.read(a),a.on("data",this.onData)}attach(a){this.socket.off("data",this.onData),this.socket=a,a.on("data",this.onData)}read(a){let b;for(this.buf+=a.toString("utf8");(b=this.buf.indexOf("\n"))>=0;){let a=this.buf.slice(0,b).replace(/\r$/,"");if(this.buf=this.buf.slice(b+1),this.lines.push(a),/^\d{3}( |$)/.test(a)){let b={code:Number(a.slice(0,3)),text:this.lines.join("\n")};this.lines=[];let c=this.waiters.shift();c?c(b):this.ready.push(b)}}}next(){let a=this.ready.shift();return a?Promise.resolve(a):new Promise(a=>this.waiters.push(a))}send(a){this.socket.write(`${a}\r
19
+ `)}}class y extends Error{kind;constructor(a,b){super(a),this.kind=b}}async function z(a,d,e,f={},j={}){let k;if((0,c.W)())return{ok:!1,kind:"config",error:b.Y};if(Object.keys(u(a)).length)return{ok:!1,kind:"config",error:"The saved mail server settings aren't valid any more."};let l=a.host.trim().toLowerCase();try{let a=await (f.lookup??(async a=>(await (0,h.lookup)(a,{all:!0})).map(a=>a.address)))(l);if(!a.length||a.some(i.W))return{ok:!1,kind:"config",error:"The mail server resolves to a private address; Watchbell won't connect there."};k=a[0]}catch{return{ok:!1,kind:"transient",error:"The mail server's name didn't resolve."}}let m=465===a.port,p=null,s=new Promise((a,b)=>setTimeout(()=>b(new y("The mail server took too long to answer.","transient")),f.timeoutMs??15e3).unref?.()),t=async()=>{try{p=await (f.connect??((a,b,c,d)=>new Promise((e,f)=>{let g=d?o.default.connect({host:a,port:b,servername:c}):n.default.connect({host:a,port:b});g.once(d?"secureConnect":"connect",()=>e(g)),g.once("error",f)})))(k,a.port,l,m)}catch{throw new y(`Couldn't connect to ${l}:${a.port}.`,"transient")}let b=new x(p),c=async(a,c,d="config")=>{let e=await b.next();if(!a.includes(e.code))throw new y(`The mail server refused ${c} (${e.code}).`,e.code>=400&&e.code<500?"transient":d);return e};await c([220],"the connection","transient"),b.send("EHLO watchbell");let h=await c([250],"EHLO");if(!m){if(!/^250[- ]STARTTLS\b/im.test(h.text))throw new y("The mail server doesn't offer STARTTLS on this port, so the password would go in clear. Use port 465 or a server with STARTTLS.","config");b.send("STARTTLS"),await c([220],"STARTTLS"),p=await (f.upgrade??((a,b)=>new Promise((c,d)=>{let e=o.default.connect({socket:a,servername:b});e.once("secureConnect",()=>c(e)),e.once("error",d)})))(p,l),b.attach(p),b.send("EHLO watchbell"),h=await c([250],"EHLO after STARTTLS")}b.send(`AUTH PLAIN ${Buffer.from(`\0${a.user}\0${a.pass}`,"utf8").toString("base64")}`),await c([235],"the user name or password"),b.send(`MAIL FROM:<${a.from.trim()}>`),await c([250],"the sender address");let i=r(a.to);for(let[a,d]of i.entries())b.send(`RCPT TO:<${d}>`),await c([250,251],i.length>1?`recipient ${a+1} of ${i.length}`:"the recipient address");b.send("DATA"),await c([354],"the message"),p.write(`${function(a,b,c,d,e={}){let f,h=v(Buffer.from(c.replace(/\r?\n/g,"\r\n"),"utf8")),i=[`From: ${(0,q.C)(e.fromName??null,a.from.trim())}`,`To: ${r(a.to).map(a=>`<${a}>`).join(", ")}`,`Subject: ${(f=b.replace(/[\r\n]+/g," ").slice(0,200),/^[\x20-\x7e]*$/.test(f)?f:`=?UTF-8?B?${Buffer.from(f,"utf8").toString("base64")}?=`)}`,`Date: ${d.toUTCString()}`,`Message-ID: <${(0,g.randomUUID)()}@watchbell>`,"MIME-Version: 1.0"];if(!e.attachment)return[...i,"Content-Type: text/plain; charset=utf-8","Content-Transfer-Encoding: base64","",h].join("\r\n");let j=e.attachment,k=`wb-${(0,g.randomUUID)()}`;return[...i,`Content-Type: multipart/mixed; boundary="${k}"`,"",`--${k}`,"Content-Type: text/plain; charset=utf-8","Content-Transfer-Encoding: base64","",h,`--${k}`,`Content-Type: ${j.contentType}; name="${w(j.filename)}"`,"Content-Transfer-Encoding: base64",`Content-Disposition: attachment; filename="${w(j.filename)}"`,"",v(j.data),`--${k}--`,""].join("\r\n")}(a,d,e,new Date,j)}\r
20
+ .\r
21
+ `),await c([250],"the message"),b.send("QUIT"),await Promise.race([b.next(),new Promise(a=>setTimeout(a,2e3))])};try{return await Promise.race([t(),s]),{ok:!0}}catch(a){return a instanceof y?{ok:!1,kind:a.kind,error:a.message}:{ok:!1,kind:"transient",error:"The mail server closed the connection."}}finally{p?.destroy()}}a.s(["r",0,z,"t",0,u],352595);var A=a.i(192738),B=a.i(67890),C=a.i(245710),D=a.i(469762),E=a.i(556987);function F(a,b){return(0,C.M)(a,b)&&(0,C.z)(a).hour>=7}let G={en:{firing:"firing",opened:"opened",resolved:"resolved",last24:"in the last 24 hours.",stillHead:"Still firing",noFiring:"Nothing is firing.",resolvedHead:"Resolved",noResolved:"Nothing resolved.",appsHead:"Applications (24 h)",providersHead:"Providers",open:"Open alerts",after:"after",up:"up",took:a=>a,noChecks:"no checks",errors:a=>`${a} stored error${1===a?"":"s"}`},id:{firing:"aktif",opened:"baru",resolved:"pulih",last24:"dalam 24 jam terakhir.",stillHead:"Masih aktif",noFiring:"Nggak ada yang aktif.",resolvedHead:"Pulih",noResolved:"Nggak ada yang pulih.",appsHead:"Aplikasi (24 jam)",providersHead:"Provider",open:"Buka Alerts",after:"setelah",up:"aktif",took:a=>a.replace(/\b(\d+) min\b/g,"$1 menit").replace(/\b(\d+) h\b/g,"$1 jam").replace(/\b(\d+) d\b/g,"$1 hari"),noChecks:"belum ada cek",errors:a=>`${a} error tersimpan`}},H={May:"Mei",Aug:"Agu",Oct:"Okt",Dec:"Des"},I=[5,15,30,60];async function J(a,b){let c={acted:!1,state:b.state,sentDay:null,event:null,result:null};if(!F(a,b.lastSentDay))return c;let d=(0,C.x)(a),e=b.state&&b.state.day===d?b.state:null;if(e?.stopped)return{...c,state:e};if(e&&e.attempts>0){let b=(I[e.attempts-1]??I[I.length-1])*6e4;if(e.lastAttemptAt&&a.getTime()-new Date(e.lastAttemptAt).getTime()<b)return{...c,state:e}}e??={day:d,...await b.build(),attempts:0,lastAttemptAt:null,stopped:!1,lastError:null};let f=await b.send({subject:e.subject,html:e.html,text:e.text});if(f.ok)return{acted:!0,state:null,sentDay:d,event:null,result:f};let g=e.attempts+1,h="config"===f.kind||g>=5,i="config"===f.kind?`${f.error}. Fix it and the next digest goes out tomorrow.`:`${f.error} Gave up after ${g} attempts today.`;return{acted:!0,sentDay:null,result:f,state:{...e,attempts:g,lastAttemptAt:a.toISOString(),stopped:h,lastError:f.error},event:h?{message:"Daily digest not sent",detail:i}:null}}a.s(["J",0,function(a,b="en"){let c=G[b],d=`${a.siteUrl.replace(/\/+$/,"")}/alerts`,e=((a,b)=>{let{day:c,month:d}=(0,C.e)(a);return`${c} ${"id"===b?H[d]??d:d}`})(a.now,b),f=`${a.firing.length} ${c.firing}, ${a.opened} ${c.opened}, ${a.resolved.length} ${c.resolved}`,g=`Watchbell \xb7 ${e} \xb7 ${f}`,h=[...a.apps].sort((a,b)=>(a.uptime??101)-(b.uptime??101)||b.errors-a.errors||a.name.localeCompare(b.name)),i=a.firing.map(a=>`${A.Z[b][a.severity]} \xb7 ${a.ruleKey} \xb7 ${a.title}: ${"id"===b?(0,B.f)(a.ruleKey,a.message):a.message}`),j=a.resolved.map(a=>`${a.ruleKey} \xb7 ${a.title} (${c.after} ${c.took(a.took)})`),k=h.map(a=>`${a.name}: ${null===a.uptime?c.noChecks:`${(0,D.C)(a.uptime)} ${c.up}`}, ${c.errors(a.errors)}`),l=a.providers.map(a=>`${a.label}: ${a.text}`),m=[`Watchbell \xb7 ${e}`,`${f} ${c.last24}`,"",c.stillHead,...i.length?i.map(a=>`- ${a}`):[c.noFiring],"",c.resolvedHead,...j.length?j.map(a=>`- ${a}`):[c.noResolved],...k.length?["",c.appsHead,...k.map(a=>`- ${a}`)]:[],...l.length?["",c.providersHead,...l.map(a=>`- ${a}`)]:[],"",`${c.open}: ${d}`].join("\n"),n=a=>`<h3 style="font:600 14px system-ui,sans-serif;margin:18px 0 6px">${(0,A.H)(a)}</h3>`,o=(a,b)=>a.length?`<ul style="margin:0;padding-left:18px">${a.map(a=>`<li style="margin:2px 0">${(0,A.H)(a)}</li>`).join("")}</ul>`:`<p style="margin:0;color:#596170">${(0,A.H)(b)}</p>`,p=['<div style="font:14px/1.5 system-ui,sans-serif;color:#14171f;max-width:560px">',`<h2 style="font:600 16px system-ui,sans-serif;margin:0 0 4px">Watchbell \xb7 ${(0,A.H)(e)}</h2>`,`<p style="margin:0;color:#596170">${(0,A.H)(`${f} ${c.last24}`)}</p>`,n(c.stillHead),o(i,c.noFiring),n(c.resolvedHead),o(j,c.noResolved),...k.length?[n(c.appsHead),o(k,"")]:[],...l.length?[n(c.providersHead),o(l,"")]:[],`<p style="margin:18px 0 0"><a href="${(0,A.H)(d).replace(/"/g,"&quot;")}" style="color:#2f4372">${(0,A.H)(c.open)}</a></p>`,"</div>"].join("");return{subject:(0,E.G)(g),html:(0,E.G)(p),text:(0,E.G)(m)}},"A",0,F,"K",0,J],80997)},718025,a=>{a.s(["f",0,function(a=process.env){let b=a.TELEGRAM_BOT_TOKEN?.trim()??"",c=a.RESEND_API_KEY?.trim()??"",d=a.DIGEST_FROM?.trim()??"";return{telegramToken:/^\d+:[\w-]{20,}$/.test(b)?b:null,resendKey:c.startsWith("re_")?c:null,digestFrom:/<?[^\s<>@]+@[^\s<>@]+\.[^\s<>@]+>?$/.test(d)?d:null}}])},552543,a=>{var b=a.i(186133);function c(a){let b=a&&"object"==typeof a?a:null,c=b?b.lang:a,d=a=>{var d;return"string"==typeof(d=b&&a in b?b[a]:c)&&"id"===d.trim().toLowerCase()?"id":"en"};return{telegram:d("telegram"),discord:d("discord"),email:d("email")}}async function d(){try{return c(await (0,b.l)())}catch{return c(null)}}async function e(a="telegram"){return(await d())[a]}a.s(["c",0,["telegram","discord","email"],"H",0,c,"I",0,e,"B",0,d,"t",0,function(a,b,c){return a[b][c]}])},204784,a=>{var b=a.i(19809),c=a.i(371289);async function d(a,e,f={}){let g;if((0,c.W)())return{ok:!1,kind:"config",error:b.Y};try{g=await (f.fetch??fetch)("https://api.resend.com/emails",{method:"POST",signal:AbortSignal.timeout(5e3),cache:"no-store",headers:{Authorization:`Bearer ${a}`,"Content-Type":"application/json","User-Agent":"OpsConsole/1.0","Idempotency-Key":e.idempotencyKey},body:JSON.stringify({from:e.from,to:Array.isArray(e.to)?e.to:[e.to],subject:e.subject,html:e.html,text:e.text,...e.attachments?.length?{attachments:e.attachments}:{}})})}catch{return{ok:!1,kind:"transient",error:"Resend didn't answer."}}if(g.ok)return{ok:!0};let h=await g.json().catch(()=>null);return 429===g.status||g.status>=500?{ok:!1,kind:"transient",error:`Resend returned an error (${g.status}).`}:{ok:!1,kind:"config",error:`Resend: ${String(h?.message??g.status).slice(0,200)}`}}a.s(["f",0,d])},446914,a=>{var b=a.i(19809),c=a.i(462820),d=a.i(371289);async function e(a,c,f,g,h=5e3){let i;if((0,d.W)())return{ok:!1,code:null,description:b.Y,retryAfter:null};try{i=await g(`https://api.telegram.org/bot${a}/${c}`,{...f,signal:AbortSignal.timeout(h),cache:"no-store"})}catch{return{ok:!1,code:null,description:"Telegram didn't answer.",retryAfter:null}}let j=await i.json().catch(()=>null);return j?.ok?{ok:!0,result:j.result}:{ok:!1,code:j?.error_code??i.status,description:String(j?.description??`HTTP ${i.status}`).slice(0,200),retryAfter:j?.parameters?.retry_after??null}}async function f(a,b,c,d={}){let g="number"==typeof d.replyTo&&Number.isSafeInteger(d.replyTo)&&d.replyTo>0?{reply_parameters:{message_id:d.replyTo,allow_sending_without_reply:!0}}:{},h=await e(a,"sendMessage",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({chat_id:b,text:c,parse_mode:"HTML",link_preview_options:{is_disabled:!0},...d.replyMarkup?{reply_markup:d.replyMarkup}:{},...g})},d.fetch??fetch);if(h.ok){let a=h.result?.message_id;return"number"==typeof a&&Number.isSafeInteger(a)&&a>0?{ok:!0,messageId:a}:{ok:!0}}return 429===h.code?{ok:!1,kind:"transient",retryAfterS:h.retryAfter??30,error:`Telegram asked us to wait ${h.retryAfter??30} s.`}:null===h.code||h.code>=500?{ok:!1,kind:"transient",error:null===h.code?h.description:`Telegram returned an error (${h.code}).`}:{ok:!1,kind:"config",error:`Telegram: ${h.description}`}}async function g(a,b={}){let d=await e(a,"getUpdates?limit=20&timeout=0",{method:"GET"},b.fetch??fetch);if(!d.ok)return 409===d.code?{ok:!1,error:"This bot has a webhook set, so the console can't list chats. Remove the webhook or paste the chat id."}:401===d.code||404===d.code?{ok:!1,error:`Telegram rejected TELEGRAM_BOT_TOKEN. Check the value ${c.n.checkWhere}.`}:{ok:!1,error:"Couldn't reach Telegram. Try again."};let f=new Map;for(let a of Array.isArray(d.result)?d.result:[]){let b=a.message?.chat??a.my_chat_member?.chat??a.channel_post?.chat;b&&"number"==typeof b.id&&f.set(String(b.id),`${b.title??b.first_name??b.username??"Chat"} (${b.type??"chat"})`)}return{ok:!0,chats:[...f].map(([a,b])=>({id:a,label:b}))}}a.s(["N",0,g,"I",0,f,"z",0,e])}]})();
22
+
23
+ //# sourceMappingURL=src_lib_1myex-iv3tu5w._.js.map
@@ -0,0 +1,3 @@
1
+ (()=>{"use strict";module.exports=[460565,a=>{a.s(["B",0,3e5,"X",0,function(a){return"number"==typeof a&&Number.isFinite(a)&&a>0?6e4*a:3e5}])},358179,a=>{var b=a.i(666680);let c="aes-256-gcm";function d(a){let b=Buffer.from(a,"base64");if(32!==b.length)throw Error("Encryption key must be 32 bytes, base64-encoded.");return b}function e(a,e){let f=Buffer.from(a.ciphertext,"base64");if(f.length<16)throw Error("Stored credential is damaged.");let g=(0,b.createDecipheriv)(c,d(e),Buffer.from(a.iv,"base64"));return g.setAuthTag(f.subarray(f.length-16)),Buffer.concat([g.update(f.subarray(0,f.length-16)),g.final()]).toString("utf8")}a.s(["K",0,e,"V",0,function(a,b){try{return e(a,b)}catch{return null}},"l",0,function(a,e,f=1){let g=(0,b.randomBytes)(12),h=(0,b.createCipheriv)(c,d(e),g),i=Buffer.concat([h.update(a,"utf8"),h.final()]);return{ciphertext:Buffer.concat([i,h.getAuthTag()]).toString("base64"),iv:g.toString("base64"),keyVersion:f}}])},745614,a=>{let b="The demo is busy right now. Try again in a minute.",c="Too many new demo sessions from your network. Try again in a few minutes.",d=new Map([["watchbell-demo-busy",b],["watchbell-demo-too-many",c]]),e=new Map([...d].map(([a,b])=>[b,a]));a.s(["L",0,b,"_",0,c,"f",0,function(a){return Object.assign(Error(a),{digest:e.get(a)})},"E",0,function(a){for(let c=a,e=0;c&&e<5;c=c.cause,e++){var b;let a="string"==typeof(b=c.digest)?d.get(b)??null:null;if(a&&c instanceof Error&&c.message===a)return a}return null}])},19809,a=>{var b=a.i(371289);let c="Not available in the demo";a.s(["v",0,"This is the Watchbell demo, so no AI model was asked. In your own install, this answer comes from the AI provider you connect under AI Gateway.","Y",0,c,"r",0,"Simulated in the demo: nothing was sent to a provider.","h",0,function(a,d=process.env){return(0,b.W)(d)&&a instanceof Error&&a.message===c},"M",0,function(a,b=Math.random){return{ok:!0,statusCode:a,latencyMs:90+Math.round(260*b()),error:null}}])},753682,a=>{a.s(["f",0,function(a){return"aal2"===a.aal?"ok":a.hasVerifiedFactor?"challenge":"owner"===a.role||"operator"===a.role?"setup":"ok"}])},323878,a=>{var b=a.i(93321),c=a.i(351674),d=a.i(548734),e=a.i(837137),f=a.i(312573);async function g(a,f){let[g]=await (0,d.f)().insert(e.rateLimits).values({key:a,windowStart:f,count:1}).onConflictDoUpdate({target:[e.rateLimits.key,e.rateLimits.windowStart],set:{count:c.B`${e.rateLimits.count} + 1`}}).returning({count:e.rateLimits.count});if(1===g.count)try{await (0,d.f)().delete(e.rateLimits).where((0,b.S)(e.rateLimits.windowStart,new Date(Date.now()-864e5)))}catch{console.warn("rate limit sweep failed")}return g.count}async function h(a,b){let c=new Date,d=0;return{...await (0,f.A)(a,b,{now:c,hit:async(a,b)=>d=await g(a,b)}),windowStart:(0,f.M)(c,a.windowSeconds),count:d}}async function i(a,g,h){await (0,d.f)().update(e.rateLimits).set({count:c.B`${e.rateLimits.count} - 1`}).where((0,b.b)((0,b.u)(e.rateLimits.key,(0,f.P)(a,g)),(0,b.u)(e.rateLimits.windowStart,h),(0,b.H)(e.rateLimits.count,0)))}async function j(a,c){let g=new Date,[h]=await (0,d.f)().select({count:e.rateLimits.count}).from(e.rateLimits).where((0,b.b)((0,b.u)(e.rateLimits.key,(0,f.P)(a,c)),(0,b.u)(e.rateLimits.windowStart,(0,f.M)(g,a.windowSeconds))));return(0,f.J)(a,h?.count??0,g)}a.s(["j",0,h,"C",0,function(a,b){return(0,f.A)(a,b,{hit:g})},"H",0,j,"K",0,i])}]})();
2
+
3
+ //# sourceMappingURL=src_lib_1x__dvajr3xvs._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[927262,a=>{"use strict";let b=a=>(a??0).toLocaleString("en-US"),c={MonitorDown:{key:"MonitorDown",severity:"critical",threshold:3,bounds:[1,10],source:"own",needs:null,sampled:!0,condition:a=>`${b(a)} failed checks in a row`},CollectorStale:{key:"CollectorStale",severity:"critical",threshold:5,bounds:[3,60],source:"own",needs:null,sampled:!1,condition:a=>`No collector run for ${b(a)} min`},HighLatency:{key:"HighLatency",severity:"warning",threshold:1500,bounds:[100,3e4],source:"own",needs:null,sampled:!0,condition:a=>`Slowest 5% of checks over ${b(a)} ms for 10 min`},DeploymentFailed:{key:"DeploymentFailed",severity:"warning",threshold:null,bounds:null,source:"api",needs:null,sampled:!1,condition:()=>"A production deploy fails"},DatabasePaused:{key:"DatabasePaused",severity:"warning",threshold:null,bounds:null,source:"api",needs:"databases",sampled:!1,condition:()=>"Supabase pauses the project"},CertExpiringSoon:{key:"CertExpiringSoon",severity:"warning",threshold:14,bounds:[1,90],source:"own",needs:"domains",sampled:!1,condition:a=>`TLS certificate expires in < ${b(a)} days`},DomainExpiringSoon:{key:"DomainExpiringSoon",severity:"warning",threshold:30,bounds:[1,180],source:"api",needs:"domains",sampled:!1,condition:a=>`Domain expires in < ${b(a)} days`},StorageAlmostFull:{key:"StorageAlmostFull",severity:"warning",threshold:80,bounds:[10,100],source:"api",needs:"databases",sampled:!1,condition:a=>`Database size > ${b(a)}% of free limit`},NeonComputeHigh:{key:"NeonComputeHigh",severity:"warning",threshold:80,bounds:[1,100],source:"api",needs:"databases",sampled:!1,condition:a=>`> ${b(a)} of 100 CU-hours this month`},FirestoreQuotaHigh:{key:"FirestoreQuotaHigh",severity:"warning",threshold:80,bounds:[10,100],source:"test",needs:"databases",sampled:!1,condition:a=>`Daily reads > ${b(a)}% of 50k`},AutoPauseRisk:{key:"AutoPauseRisk",severity:"info",threshold:4,bounds:[1,6],source:"api",needs:"databases",sampled:!1,condition:a=>`Supabase project without API traffic for ${b(a)}+ days`},DnsProxiedToVercel:{key:"DnsProxiedToVercel",severity:"info",threshold:null,bounds:null,source:"api",needs:"dns",sampled:!1,condition:()=>"Cloudflare record proxied in front of Vercel"},ComputeHigh:{key:"ComputeHigh",severity:"warning",threshold:80,bounds:[50,95],source:"api",needs:"databases",sampled:!1,condition:a=>`Supabase CPU > ${b(a)}% for 15 min, RAM > ${b(Math.min(99,(a??80)+10))}%, disk > ${b(a)}% or connections > ${b(a)}% of max`},DbQuotaHigh:{key:"DbQuotaHigh",severity:"warning",threshold:80,bounds:[10,100],source:"api",needs:"databases",sampled:!1,condition:a=>`Turso, Upstash or D1 usage > ${b(a)}% of a free-plan quota`},CredentialExpiring:{key:"CredentialExpiring",severity:"warning",threshold:14,bounds:[1,60],source:"api",needs:null,sampled:!1,condition:a=>`Account credential expires in < ${b(a)} days`},VulnerableDependency:{key:"VulnerableDependency",severity:"warning",threshold:null,bounds:null,source:"api",needs:null,sampled:!1,condition:()=>"A dependency has a critical or high advisory, or a moderate one on a direct dependency (OSV.dev)"},FrameworkVulnerable:{key:"FrameworkVulnerable",severity:"warning",threshold:null,bounds:null,source:"own",needs:null,sampled:!1,condition:()=>"The app's Next.js version has a known advisory (OSV.dev)"},CiFailing:{key:"CiFailing",severity:"warning",threshold:null,bounds:null,source:"api",needs:null,sampled:!1,condition:()=>"The latest GitHub Actions run on the default branch failed"},OsSecurityUpdate:{key:"OsSecurityUpdate",severity:"warning",threshold:7,bounds:[0,10],source:"own",needs:null,sampled:!1,condition:a=>`A waiting security update fixes a CVE scored ${(a??7).toFixed(1)}+ (CVSS), or a new kernel waits for a reboot`},MonitorDomainMoved:{key:"MonitorDomainMoved",severity:"warning",threshold:null,bounds:null,source:"own",needs:null,sampled:!1,condition:()=>"The monitor's domain is no longer one of the app's domains"}},d=Object.keys(c),e=a=>"string"==typeof a&&a in c,f=["critical","warning","info"],g=["telegram","discord","webhook","smtp","email_digest"],h={MonitorDown:"Site down",CollectorStale:"Checks stopped",HighLatency:"Slow responses",DeploymentFailed:"Deploy failed",DatabasePaused:"Database paused",CertExpiringSoon:"Certificate expiring",DomainExpiringSoon:"Domain expiring",StorageAlmostFull:"Database almost full",NeonComputeHigh:"Neon hours running out",FirestoreQuotaHigh:"Firestore reads running out",AutoPauseRisk:"Supabase may pause",DnsProxiedToVercel:"Cloudflare proxy in front of Vercel",ComputeHigh:"Supabase under load",DbQuotaHigh:"Free quota running out",CredentialExpiring:"Token expiring",VulnerableDependency:"Vulnerable package",FrameworkVulnerable:"Next.js needs a security update",CiFailing:"CI is failing",OsSecurityUpdate:"Security updates waiting on this machine",MonitorDomainMoved:"App moved to a new domain"};a.s(["_",0,c,"u",0,d,"$",0,h,"h",0,e,"N",0,function(a,d){let e=c[a],h={},i=f.find(a=>a===d.severity);i||(h.severity="Pick a severity.");let j=null;if(e.bounds){let a=String(d.threshold??"").replace(/,/g,"").trim(),c=/^\d+$/.test(a)?Number(a):0/0;!Number.isInteger(c)||c<e.bounds[0]||c>e.bounds[1]?h.threshold=`Enter a whole number from ${b(e.bounds[0])} to ${b(e.bounds[1])}.`:j=c}let k=Array.isArray(d.channels)?d.channels:[];return(k.every(a=>g.includes(a))||(h.channels="Pick from Telegram, Discord and the daily digest."),Object.keys(h).length||!i)?{ok:!1,fieldErrors:h}:{ok:!0,value:{severity:i,threshold:j,channels:[...new Set(k)],enabled:!0===d.enabled}}},"v",0,a=>e(a)?h[a]:a])}];
1
+ module.exports=[927262,263410,15738,49440,a=>{"use strict";let b=a=>(a??0).toLocaleString("en-US"),c={MonitorDown:{key:"MonitorDown",severity:"critical",threshold:3,bounds:[1,10],source:"own",needs:null,sampled:!0,condition:a=>`${b(a)} failed checks in a row`},CollectorStale:{key:"CollectorStale",severity:"critical",threshold:5,bounds:[3,60],source:"own",needs:null,sampled:!1,condition:a=>`No collector run for ${b(a)} min`},HighLatency:{key:"HighLatency",severity:"warning",threshold:1500,bounds:[100,3e4],source:"own",needs:null,sampled:!0,condition:a=>`Slowest 5% of checks over ${b(a)} ms for 10 min`},DeploymentFailed:{key:"DeploymentFailed",severity:"warning",threshold:null,bounds:null,source:"api",needs:null,sampled:!1,condition:()=>"A production deploy fails"},DatabasePaused:{key:"DatabasePaused",severity:"warning",threshold:null,bounds:null,source:"api",needs:"databases",sampled:!1,condition:()=>"Supabase pauses the project"},CertExpiringSoon:{key:"CertExpiringSoon",severity:"warning",threshold:14,bounds:[1,90],source:"own",needs:"domains",sampled:!1,condition:a=>`TLS certificate expires in < ${b(a)} days`},DomainExpiringSoon:{key:"DomainExpiringSoon",severity:"warning",threshold:30,bounds:[1,180],source:"api",needs:"domains",sampled:!1,condition:a=>`Domain expires in < ${b(a)} days`},StorageAlmostFull:{key:"StorageAlmostFull",severity:"warning",threshold:80,bounds:[10,100],source:"api",needs:"databases",sampled:!1,condition:a=>`Database size > ${b(a)}% of free limit`},NeonComputeHigh:{key:"NeonComputeHigh",severity:"warning",threshold:80,bounds:[1,100],source:"api",needs:"databases",sampled:!1,condition:a=>`> ${b(a)} of 100 CU-hours this month`},FirestoreQuotaHigh:{key:"FirestoreQuotaHigh",severity:"warning",threshold:80,bounds:[10,100],source:"test",needs:"databases",sampled:!1,condition:a=>`Daily reads > ${b(a)}% of 50k`},AutoPauseRisk:{key:"AutoPauseRisk",severity:"info",threshold:4,bounds:[1,6],source:"api",needs:"databases",sampled:!1,condition:a=>`Supabase project without API traffic for ${b(a)}+ days`},DnsProxiedToVercel:{key:"DnsProxiedToVercel",severity:"info",threshold:null,bounds:null,source:"api",needs:"dns",sampled:!1,condition:()=>"Cloudflare record proxied in front of Vercel"},ComputeHigh:{key:"ComputeHigh",severity:"warning",threshold:80,bounds:[50,95],source:"api",needs:"databases",sampled:!1,condition:a=>`Supabase CPU > ${b(a)}% for 15 min, RAM > ${b(Math.min(99,(a??80)+10))}%, disk > ${b(a)}% or connections > ${b(a)}% of max`},DbQuotaHigh:{key:"DbQuotaHigh",severity:"warning",threshold:80,bounds:[10,100],source:"api",needs:"databases",sampled:!1,condition:a=>`Turso, Upstash or D1 usage > ${b(a)}% of a free-plan quota`},CredentialExpiring:{key:"CredentialExpiring",severity:"warning",threshold:14,bounds:[1,60],source:"api",needs:null,sampled:!1,condition:a=>`Account credential expires in < ${b(a)} days`},VulnerableDependency:{key:"VulnerableDependency",severity:"warning",threshold:null,bounds:null,source:"api",needs:null,sampled:!1,condition:()=>"A dependency has a critical or high advisory, or a moderate one on a direct dependency (OSV.dev)"},FrameworkVulnerable:{key:"FrameworkVulnerable",severity:"warning",threshold:null,bounds:null,source:"own",needs:null,sampled:!1,condition:()=>"The app's Next.js version has a known advisory (OSV.dev)"},CiFailing:{key:"CiFailing",severity:"warning",threshold:null,bounds:null,source:"api",needs:null,sampled:!1,condition:()=>"The latest GitHub Actions run on the default branch failed"},OsSecurityUpdate:{key:"OsSecurityUpdate",severity:"warning",threshold:7,bounds:[0,10],source:"own",needs:null,sampled:!1,condition:a=>`A waiting security update fixes a CVE scored ${(a??7).toFixed(1)}+ (CVSS), or a new kernel waits for a reboot`},ReportSendFailed:{key:"ReportSendFailed",severity:"warning",threshold:null,bounds:null,source:"own",needs:null,sampled:!1,condition:()=>"A monthly client report couldn't be emailed after 3 tries"},MonitorDomainMoved:{key:"MonitorDomainMoved",severity:"warning",threshold:null,bounds:null,source:"own",needs:null,sampled:!1,condition:()=>"The monitor's domain is no longer one of the app's domains"}},d=Object.keys(c),e=a=>"string"==typeof a&&a in c,f=["critical","warning","info"],g=["telegram","discord","webhook","smtp","email_digest"],h={MonitorDown:"Site down",CollectorStale:"Checks stopped",HighLatency:"Slow responses",DeploymentFailed:"Deploy failed",DatabasePaused:"Database paused",CertExpiringSoon:"Certificate expiring",DomainExpiringSoon:"Domain expiring",StorageAlmostFull:"Database almost full",NeonComputeHigh:"Neon hours running out",FirestoreQuotaHigh:"Firestore reads running out",AutoPauseRisk:"Supabase may pause",DnsProxiedToVercel:"Cloudflare proxy in front of Vercel",ComputeHigh:"Supabase under load",DbQuotaHigh:"Free quota running out",CredentialExpiring:"Token expiring",VulnerableDependency:"Vulnerable package",FrameworkVulnerable:"Next.js needs a security update",CiFailing:"CI is failing",OsSecurityUpdate:"Security updates waiting on this machine",ReportSendFailed:"Client report not sent",MonitorDomainMoved:"App moved to a new domain"};a.s(["_",0,c,"u",0,d,"$",0,h,"h",0,e,"N",0,function(a,d){let e=c[a],h={},i=f.find(a=>a===d.severity);i||(h.severity="Pick a severity.");let j=null;if(e.bounds){let a=String(d.threshold??"").replace(/,/g,"").trim(),c=/^\d+$/.test(a)?Number(a):0/0;!Number.isInteger(c)||c<e.bounds[0]||c>e.bounds[1]?h.threshold=`Enter a whole number from ${b(e.bounds[0])} to ${b(e.bounds[1])}.`:j=c}let k=Array.isArray(d.channels)?d.channels:[];return(k.every(a=>g.includes(a))||(h.channels="Pick from Telegram, Discord and the daily digest."),Object.keys(h).length||!i)?{ok:!1,fieldErrors:h}:{ok:!0,value:{severity:i,threshold:j,channels:[...new Set(k)],enabled:!0===d.enabled}}},"v",0,a=>e(a)?h[a]:a],927262);var i=a.i(13552),j=a.i(986096),k=a.i(383217),l=a.i(574619),m=a.i(665105),n=a.i(99450),o=a.i(731793),p=a.i(837137);let q={createdAt:(0,n._)("created_at",{withTimezone:!0}).notNull().defaultNow(),updatedAt:(0,n._)("updated_at",{withTimezone:!0}).notNull().defaultNow()},r=p.ops.table("reports",{id:(0,o.q)("id").primaryKey().defaultRandom(),clientName:(0,m.f)("client_name").notNull(),title:(0,m.f)("title"),lang:(0,m.f)("lang").$type().notNull().default("en"),note:(0,m.f)("note"),emailOpening:(0,m.f)("email_opening"),recipients:(0,k.y)("recipients").$type().notNull().default([]),autoSend:(0,i.f)("auto_send").notNull().default(!1),sender:(0,m.f)("sender").$type(),...q}),s=p.ops.table("report_sites",{reportId:(0,o.q)("report_id").notNull().references(()=>r.id,{onDelete:"cascade"}),monitorId:(0,o.q)("monitor_id").notNull().references(()=>p.monitors.id,{onDelete:"cascade"}),displayName:(0,m.f)("display_name").notNull(),position:(0,j.f)("position").notNull().default(0)},a=>[(0,l._)({columns:[a.reportId,a.monitorId]})]),t=p.ops.table("report_sends",{reportId:(0,o.q)("report_id").notNull().references(()=>r.id,{onDelete:"cascade"}),month:(0,m.f)("month").notNull(),status:(0,m.f)("status").$type().notNull(),attempts:(0,j.f)("attempts").notNull().default(0),lastError:(0,m.f)("last_error"),claimedAt:(0,n._)("claimed_at",{withTimezone:!0}),sentAt:(0,n._)("sent_at",{withTimezone:!0})},a=>[(0,l._)({columns:[a.reportId,a.month]})]),u=p.ops.table("deploy_days",{resourceId:(0,o.q)("resource_id").notNull().references(()=>p.resources.id,{onDelete:"cascade"}),day:(0,m.f)("day").notNull(),ok:(0,j.f)("ok").notNull(),failed:(0,j.f)("failed").notNull()},a=>[(0,l._)({columns:[a.resourceId,a.day]})]);function v(a,b){let c=new Intl.DateTimeFormat("en-CA",{timeZone:b,year:"numeric",month:"2-digit",day:"2-digit"}).formatToParts(a),d=a=>c.find(b=>b.type===a)?.value??"";return`${d("year")}-${d("month")}-${d("day")}`}function w(a,b){let c=new Intl.DateTimeFormat("en-CA",{timeZone:b,hourCycle:"h23",year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}).formatToParts(new Date(a)),d=a=>Number(c.find(b=>b.type===a)?.value);return Date.UTC(d("year"),d("month")-1,d("day"),d("hour"),d("minute"),d("second"))-a}a.s(["p",0,u,"q",0,t,"Z",0,s,"I",0,r],263410),a.i(548734),a.i(186133),a.s(["e",0,function(a){let[b,c]=a.split("-").map(Number);return Array.from({length:new Date(Date.UTC(b,c,0)).getUTCDate()},(b,c)=>`${a}-${String(c+1).padStart(2,"0")}`)},"C",0,v,"K",0,function(a,b){let c=Date.parse(`${a}T00:00:00Z`),d=c-w(c,b);return new Date(c-w(d,b))}],15738),a.s(["f",0,function(a,b){let c=new Map;for(let d of a){let a=d.state.toUpperCase();if("READY"!==a&&"ERROR"!==a)continue;let e=v(d.createdAtProvider,b),f=`${d.resourceId}|${e}`,g=c.get(f)??{resourceId:d.resourceId,day:e,ok:0,failed:0};"READY"===a?g.ok++:g.failed++,c.set(f,g)}return[...c.values()].sort((a,b)=>a.resourceId.localeCompare(b.resourceId)||a.day.localeCompare(b.day))}],49440)}];
2
2
 
3
3
  //# sourceMappingURL=src_lib_alerts_catalog_ts_1ndg28acul64q._.js.map
@@ -0,0 +1,3 @@
1
+ module.exports=[617084,a=>{"use strict";let b={name:null,accent:null,senderName:null,publicUrl:null,poweredBy:!0,hasLogo:!1,logoVersion:null},c=/^[0-9a-f]{12}$/,d=a=>a?`/brand-icon?v=${a}`:"/brand-icon",e="#ffffff",f="#111214",g=/^#[0-9a-f]{6}$/;function h(a){let b=[1,3,5].map(b=>parseInt(a.slice(b,b+2),16)/255).map(a=>a<=.03928?a/12.92:((a+.055)/1.055)**2.4);return .2126*b[0]+.7152*b[1]+.0722*b[2]}function i(a,b){let[c,d]=[h(a.toLowerCase()),h(b.toLowerCase())].sort((a,b)=>b-a);return(c+.05)/(d+.05)}function j(a){let b={};if(null!==a.name&&(a.name.length>60||/[<>\r\n]/.test(a.name))&&(b.name="Up to 60 characters, no < or >."),null!==a.senderName&&(a.senderName.length>60||/[<>"\r\n]/.test(a.senderName))&&(b.senderName="Up to 60 characters, no <, > or quotes."),null!==a.publicUrl){let c=!1;try{let b=new URL(a.publicUrl);c="https:"===b.protocol||"http:"===b.protocol&&["localhost","127.0.0.1"].includes(b.hostname)}catch{c=!1}c||(b.publicUrl="An https:// address (http:// only for localhost).")}return null!==a.accent&&(g.test(a.accent)?4.5>i(a.accent,e)?b.accent=`Too pale to read on the light background (${i(a.accent,e).toFixed(1)}:1, needs 4.5:1).`:3>i(a.accent,f)&&(b.accent=`Too dark to see on the dark background (${i(a.accent,f).toFixed(1)}:1, needs 3:1).`):b.accent="A colour as #rrggbb."),b}let k=a=>"string"==typeof a&&a.trim()?a.trim():null;a.s(["k",0,"branding","l",0,b,"W",0,a=>/<([^>]+)>/.exec(a)?.[1]?.trim()??a.trim(),"r",0,d,"u",0,function(a){return a.accent&&g.test(a.accent)?`:root:root, :root:root[data-theme="dark"] { --oc-brand: ${a.accent}; --oc-brand-hover: ${a.accent}; --oc-on-brand: #ffffff; }`:null},"s",0,function(a){return a.name?{title:{default:a.name,template:`%s \xb7 ${a.name}`},...a.hasLogo?{icons:{icon:d(a.logoVersion)}}:{}}:{}},"X",0,a=>a.name??"Watchbell","A",0,function(a){if(a.length<24||[137,80,78,71,13,10,26,10].some((b,c)=>a[c]!==b))return"The logo must be a PNG file.";if(a.length>262144)return"The logo must be 256 KB or smaller.";let b=new DataView(a.buffer,a.byteOffset,a.byteLength),c=b.getUint32(16),d=b.getUint32(20);return!c||!d||Math.abs(c-d)/Math.max(c,d)>.1?"The logo must be square (or nearly).":Math.max(c,d)>512?"The logo can be at most 512 × 512 px.":null},"C",0,function(a,b){let c=(a??"Watchbell").replace(/["\r\n<>]/g,"").trim()||"Watchbell";return/^[\w.-]+$/.test(c)?`${c} <${b}>`:`"${c}" <${b}>`},"q",0,function(a){if(!a||"object"!=typeof a)return{...b};let d={name:k(a.name),accent:"string"==typeof a.accent&&g.test(a.accent)?a.accent:null,senderName:k(a.senderName),publicUrl:k(a.publicUrl),poweredBy:!1!==a.poweredBy,hasLogo:!0===a.hasLogo,logoVersion:"string"==typeof a.logoVersion&&c.test(a.logoVersion)?a.logoVersion:null};for(let a of Object.keys(j(d)))d[a]=null;return d},"R",0,function(a){let b=k(a.publicUrl),c={name:k(a.name),accent:k(a.accent)?.toLowerCase()??null,senderName:k(a.senderName),publicUrl:b?b.replace(/\/+$/,""):null,poweredBy:"on"===a.poweredBy||!0===a.poweredBy||"true"===a.poweredBy,hasLogo:!1,logoVersion:null},d=j(c);return Object.keys(d).length?{ok:!1,fieldErrors:d}:{ok:!0,value:c}}])}];
2
+
3
+ //# sourceMappingURL=src_lib_branding_ts_03ns4y_8z0-6e._.js.map
@@ -0,0 +1,3 @@
1
+ module.exports=[855439,a=>{"use strict";a.s(["r",0,a=>a?`/brand-icon?v=${a}`:"/brand-icon","F",0,function(a){return a.size?"image/png"!==a.type?"The logo must be a PNG file.":a.size>262144?"The logo must be 256 KB or smaller.":null:null}])}];
2
+
3
+ //# sourceMappingURL=src_lib_branding_ts_1p22ju9pii41w._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[288950,511233,a=>{"use strict";var b=a.i(93321),c=a.i(548734),d=a.i(837137),e=a.i(371289),f=a.i(20060);let g="watchbell.latest",h="watchbell.seenVersion",i=/^\d{1,4}\.\d{1,4}\.\d{1,6}$/,j=a=>"string"==typeof a&&i.test(a);function k(a=process.env,b="1.6.1"){let c=a.WATCHBELL_VERSION?.trim();if(j(c))return c;let d=b?.trim();return j(d)?d:null}function l(a,b){let c=a.split(".").map(Number),d=b.split(".").map(Number);for(let a=0;a<3;a++)if(c[a]!==d[a])return c[a]-d[a];return 0}let m=a=>a&&"object"==typeof a&&j(a.version)&&"string"==typeof a.checkedAt?{version:a.version,checkedAt:a.checkedAt}:null,n=a=>a&&"object"==typeof a&&j(a.version)?a.version:null;function o(a){return a.running?a.cloud?!a.seen||l(a.running,a.seen)>0?{kind:"updated",version:a.running}:null:a.latest&&l(a.latest.version,a.running)>0?{kind:"update",running:a.running,latest:a.latest.version}:a.seen&&l(a.running,a.seen)>0?{kind:"updated",version:a.running}:null:null}let p=a=>`https://github.com/watchbell/watchbell/blob/main/CHANGELOG.md#${a.replace(/\./g,"")}`;async function q(a={}){let b,c=a.fetch??fetch;try{b=await c("https://registry.npmjs.org/watchbell/latest",{method:"GET",headers:{Accept:"application/json","Accept-Encoding":"gzip"},signal:AbortSignal.timeout(a.timeoutMs??6e3),cache:"no-store"})}catch{return{ok:!1,error:"Couldn't reach registry.npmjs.org"}}if(!b.ok)return{ok:!1,error:`registry.npmjs.org returned an error (${b.status})`};try{let a=await b.json();return j(a.version)?{ok:!0,version:a.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 r(a,b,i,j=process.env,l){let m=k(j);if(!m||"selfhost"!==(0,e.c)(j)||(0,f.s)(j).off)return;let n=b-Date.now();if(n<1e3)return;let o=await q({fetch:l,timeoutMs:Math.min(6e3,n)});if(o.ok){let b={version:o.version,checkedAt:a.toISOString()};await (0,c.f)().insert(d.settings).values({key:g,value:b}).onConflictDoUpdate({target:d.settings.key,set:{value:b,updatedAt:a}})}else i.push(`update check: ${o.error}`);await (0,c.f)().insert(d.settings).values({key:h,value:{version:m}}).onConflictDoNothing({target:d.settings.key})}async function s(a=process.env){let i=k(a),j=(0,e.c)(a);if(!i||"demo"===j)return null;let l=await (0,c.f)().select({key:d.settings.key,value:d.settings.value}).from(d.settings).where((0,b.y)(d.settings.key,[g,h])).limit(2),p=a=>l.find(b=>b.key===a)?.value;return"cloud"===j?o({running:i,latest:null,seen:n(p(h)),cloud:!0}):o({running:i,latest:(0,f.s)(a).off?null:m(p(g)),seen:n(p(h))})}async function t(a=process.env){let b=k(a);if(!b)return;let e=new Date;await (0,c.f)().insert(d.settings).values({key:h,value:{version:b}}).onConflictDoUpdate({target:d.settings.key,set:{value:{version:b},updatedAt:e}})}a.s(["b",0,g,"F",0,h,"J",0,(a,b)=>a?{text:a,href:b?p(a):null}:null,"k",0,q,"n",0,m,"c",0,n,"y",0,k,"i",0,o,"G",0,p],511233),a.s(["z",0,t,"C",0,s,"L",0,r],288950)}];
1
+ module.exports=[288950,511233,a=>{"use strict";var b=a.i(93321),c=a.i(548734),d=a.i(837137),e=a.i(371289),f=a.i(20060);let g="watchbell.latest",h="watchbell.seenVersion",i=/^\d{1,4}\.\d{1,4}\.\d{1,6}$/,j=a=>"string"==typeof a&&i.test(a);function k(a=process.env,b="1.7.1"){let c=a.WATCHBELL_VERSION?.trim();if(j(c))return c;let d=b?.trim();return j(d)?d:null}function l(a,b){let c=a.split(".").map(Number),d=b.split(".").map(Number);for(let a=0;a<3;a++)if(c[a]!==d[a])return c[a]-d[a];return 0}let m=a=>a&&"object"==typeof a&&j(a.version)&&"string"==typeof a.checkedAt?{version:a.version,checkedAt:a.checkedAt}:null,n=a=>a&&"object"==typeof a&&j(a.version)?a.version:null;function o(a){return a.running?a.cloud?!a.seen||l(a.running,a.seen)>0?{kind:"updated",version:a.running}:null:a.latest&&l(a.latest.version,a.running)>0?{kind:"update",running:a.running,latest:a.latest.version}:a.seen&&l(a.running,a.seen)>0?{kind:"updated",version:a.running}:null:null}let p=a=>`https://github.com/watchbell/watchbell/blob/main/CHANGELOG.md#${a.replace(/\./g,"")}`;async function q(a={}){let b,c=a.fetch??fetch;try{b=await c("https://registry.npmjs.org/watchbell/latest",{method:"GET",headers:{Accept:"application/json","Accept-Encoding":"gzip"},signal:AbortSignal.timeout(a.timeoutMs??6e3),cache:"no-store"})}catch{return{ok:!1,error:"Couldn't reach registry.npmjs.org"}}if(!b.ok)return{ok:!1,error:`registry.npmjs.org returned an error (${b.status})`};try{let a=await b.json();return j(a.version)?{ok:!0,version:a.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 r(a,b,i,j=process.env,l){let m=k(j);if(!m||"selfhost"!==(0,e.c)(j)||(0,f.s)(j).off)return;let n=b-Date.now();if(n<1e3)return;let o=await q({fetch:l,timeoutMs:Math.min(6e3,n)});if(o.ok){let b={version:o.version,checkedAt:a.toISOString()};await (0,c.f)().insert(d.settings).values({key:g,value:b}).onConflictDoUpdate({target:d.settings.key,set:{value:b,updatedAt:a}})}else i.push(`update check: ${o.error}`);await (0,c.f)().insert(d.settings).values({key:h,value:{version:m}}).onConflictDoNothing({target:d.settings.key})}async function s(a=process.env){let i=k(a),j=(0,e.c)(a);if(!i||"demo"===j)return null;let l=await (0,c.f)().select({key:d.settings.key,value:d.settings.value}).from(d.settings).where((0,b.y)(d.settings.key,[g,h])).limit(2),p=a=>l.find(b=>b.key===a)?.value;return"cloud"===j?o({running:i,latest:null,seen:n(p(h)),cloud:!0}):o({running:i,latest:(0,f.s)(a).off?null:m(p(g)),seen:n(p(h))})}async function t(a=process.env){let b=k(a);if(!b)return;let e=new Date;await (0,c.f)().insert(d.settings).values({key:h,value:{version:b}}).onConflictDoUpdate({target:d.settings.key,set:{value:{version:b},updatedAt:e}})}a.s(["b",0,g,"F",0,h,"J",0,(a,b)=>a?{text:a,href:b?p(a):null}:null,"k",0,q,"n",0,m,"c",0,n,"y",0,k,"i",0,o,"G",0,p],511233),a.s(["z",0,t,"C",0,s,"L",0,r],288950)}];
2
2
 
3
3
  //# sourceMappingURL=src_lib_collector_self-update_ts_18m5vmptpjhtg._.js.map
@@ -1,6 +1,6 @@
1
- module.exports=[396667,711251,532971,186133,a=>{"use strict";var b=a.i(93321),c=a.i(351674),d=a.i(800717),e=a.i(548734),f=a.i(263251),g=a.i(837137),h=a.i(686921),i=a.i(371289),j=a.i(160147);let k="budget.limits",l={qstashPerDay:1e3,webAnalyticsEvents:5e4,vercelInvocations:1e6,vercelCpuHours:4,vercelMemoryGbH:360,warnPct:70,errPct:90},m=[{key:"qstashPerDay",label:"Upstash QStash messages",unit:"a day",min:1,max:1e7},{key:"webAnalyticsEvents",label:"Vercel Web Analytics events",unit:"a month",min:1,max:1e8},{key:"vercelInvocations",label:"Vercel function invocations",unit:"a month",min:1,max:1e9},{key:"vercelCpuHours",label:"Vercel active CPU",unit:"hours a month",min:1,max:1e4},{key:"vercelMemoryGbH",label:"Vercel provisioned memory",unit:"GB-hours a month",min:1,max:1e5},{key:"warnPct",label:"Warn from",unit:"% used",min:10,max:99},{key:"errPct",label:"Alarm from",unit:"% used",min:11,max:100}],n=(a,b)=>"number"==typeof b&&Number.isInteger(b)&&b>=a.min&&b<=a.max;function o(a){let b={...l};if(!a||"object"!=typeof a)return b;for(let c of m){let d=a[c.key];n(c,d)&&(b[c.key]=d)}return b.warnPct<b.errPct?b:{...b,warnPct:l.warnPct,errPct:l.errPct}}a.s(["o",0,l,"h",0,k,"S",0,function(a,b){let c=m.filter(c=>a[c.key]!==b[c.key]).map(c=>`${c.label} ${a[c.key].toLocaleString("en-US")} → ${b[c.key].toLocaleString("en-US")}`);return c.length?c.join(", "):null},"X",0,o,"R",0,function(a){let b=a&&"object"==typeof a?a:{},c={...l},d={};for(let a of m){let e=b[a.key],f="string"==typeof e?Number(e.replace(/[,_\s]/g,"")):e;n(a,f)?c[a.key]=f:d[a.key]=`Enter a whole number from ${a.min.toLocaleString("en-US")} to ${a.max.toLocaleString("en-US")}.`}return d.warnPct||d.errPct||!(c.warnPct>=c.errPct)||(d.errPct="Alarm must be above Warn."),Object.keys(d).length?{ok:!1,error:"Check the highlighted fields.",fieldErrors:d}:{ok:!0,value:c}}],711251);var p=a.i(655206);let q="retention.days",r={checks:[3,7,14],rollupsHourly:[60,90,180],storedLogs:[3,7,14],deployments:[30,45,60,90],events:[60,90,180],alerts:[60,90,180],collectorRuns:[7,14,30],recommendationDismissals:[30,90,180]},s=Object.keys(r),t={checks:"Raw checks",rollupsHourly:"Hourly rollups",storedLogs:"Stored logs",deployments:"Deployments",events:"Events",alerts:"Alerts",collectorRuns:"Collector runs",recommendationDismissals:"Advisor dismissals"},u=(a,b)=>"number"==typeof b&&r[a].includes(b);function v(a){let b={...p.f};if(!a||"object"!=typeof a)return b;for(let c of s){let d=a[c];u(c,d)&&(b[c]=d)}return b}async function w(a){let[c]=await (0,e.f)().select({value:g.settings.value}).from(g.settings).where((0,b.u)(g.settings.key,a)).limit(1);return c?.value??null}async function x(a,b){await (0,e.f)().insert(g.settings).values({key:a,value:b}).onConflictDoUpdate({target:g.settings.key,set:{value:b,updatedAt:new Date}})}a.s(["L",0,s,"I",0,t,"H",0,q,"E",0,v,"b",0,function(a,b){let c=s.filter(c=>a[c]!==b[c]).map(c=>`${t[c]} ${a[c]} → ${b[c]} days`);return c.length?c.join(", "):null},"K",0,function(a){let b={},c={...p.f},d=a&&"object"==typeof a?a:{};for(let a of s){let e="string"==typeof d[a]?Number(d[a]):d[a];u(a,e)?c[a]=e:b[a]=`Pick ${r[a].join(", ")} days.`}return Object.keys(b).length?{ok:!1,error:"Check the highlighted fields.",fieldErrors:b}:{ok:!0,value:c}}],532971);let y=async()=>v(await w(q)),z=async()=>o(await w(k)),A="notify.language",B="sections.off",C=async()=>(0,j.N)(await w(B)),D=()=>c.B`(select ${g.settings.value} from ${g.settings} where ${g.settings.key} = ${B})`;a.s(["j",0,z,"l",0,()=>w(A),"J",0,y,"W",0,C,"x",0,a=>x(k,a),"U",0,a=>x(A,a),"A",0,a=>x(q,a),"Y",0,a=>x(B,(0,j.N)(a)),"X",0,D],186133);let E=["supabase_project","neon_project","firestore","turso_database","upstash_redis","d1_database"],F=a=>{if("string"!=typeof a)return a;try{return JSON.parse(a)}catch{return null}},G=(0,d.cache)(async()=>{let a=c.B.join(E.map(a=>c.B`${a}`),c.B`, `),b=await (0,e.f)().execute(c.B`select
1
+ module.exports=[396667,a=>{"use strict";var b=a.i(93321),c=a.i(351674),d=a.i(800717),e=a.i(548734),f=a.i(263251),g=a.i(837137),h=a.i(686921),i=a.i(371289),j=a.i(160147),k=a.i(186133);let l=["supabase_project","neon_project","firestore","turso_database","upstash_redis","d1_database"],m=a=>{if("string"!=typeof a)return a;try{return JSON.parse(a)}catch{return null}},n=(0,d.cache)(async()=>{let a=c.B.join(l.map(a=>c.B`${a}`),c.B`, `),b=await (0,e.f)().execute(c.B`select
2
2
  (select coalesce(jsonb_agg(distinct ${g.accounts.provider}::text), '[]'::jsonb) from ${g.accounts}) as providers,
3
3
  exists(select 1 from ${g.resources} where ${g.resources.kind}::text in (${a}) and ${g.resources.goneAt} is null) as databases,
4
- ${D()} as off`),[d]=(0,f.f)(b),i=F(d?.providers);return{providers:(Array.isArray(i)?i:[]).filter(a=>h.L.includes(a)),databases:d?.databases===!0||d?.databases==="t",off:(0,j.N)(F(d?.off))}});async function H(){let{providers:a,databases:b,off:c}=await G(),d={databases:b},e=[...(0,j.R)(a,{...d,selfhost:"cloud"!==(0,i.c)()})];return{on:e.filter(a=>!c.includes(a)),available:e,off:c,providers:a,has:d}}async function I(){try{return(0,j.J)((await G()).off)}catch{return new Set}}function J(a){if(!a.size)return;let{ruleKeys:d,providers:e}=(0,j.s)(a),f=[];if(d.length&&f.push(c.B`${g.alerts.ruleKey} in (${c.B.join(d.map(a=>c.B`${a}`),c.B`, `)})`),e.length){let a=c.B.join(e.map(a=>c.B`${a}`),c.B`, `);f.push(c.B`(${g.alerts.ruleKey} = 'CredentialExpiring' and ${g.alerts.accountId} in (select ${g.accounts.id} from ${g.accounts} where ${g.accounts.provider}::text in (${a})))`)}return f.length?(0,b.F)(...f):void 0}async function K(a,c){let d=J(new Set([a]));d&&await (0,e.f)().update(g.alerts).set({pendingSince:c}).where((0,b.b)((0,b.E)(g.alerts.pending),d))}async function L(){let a=await (0,e.f)().select({kind:g.monitors.kind,n:c.B`count(*)::int`}).from(g.monitors).where((0,b.b)((0,b.u)(g.monitors.paused,!1),(0,b.u)(g.monitors.ownerPaused,!1))).groupBy(g.monitors.kind),d=b=>Number(a.find(a=>a.kind===b)?.n??0);return{http:d("http"),heartbeat:d("heartbeat")}}a.s(["s",0,function(a){let c=J(a);return c?(0,b.R)(c):void 0},"F",0,L,"I",0,I,"e",0,K,"Q",0,H],396667)}];
4
+ ${(0,k.X)()} as off`),[d]=(0,f.f)(b),i=m(d?.providers);return{providers:(Array.isArray(i)?i:[]).filter(a=>h.L.includes(a)),databases:d?.databases===!0||d?.databases==="t",off:(0,j.N)(m(d?.off))}});async function o(){let{providers:a,databases:b,off:c}=await n(),d={databases:b},e=[...(0,j.R)(a,{...d,selfhost:"cloud"!==(0,i.c)()})];return{on:e.filter(a=>!c.includes(a)),available:e,off:c,providers:a,has:d}}async function p(){try{return(0,j.J)((await n()).off)}catch{return new Set}}function q(a){if(!a.size)return;let{ruleKeys:d,providers:e}=(0,j.s)(a),f=[];if(d.length&&f.push(c.B`${g.alerts.ruleKey} in (${c.B.join(d.map(a=>c.B`${a}`),c.B`, `)})`),e.length){let a=c.B.join(e.map(a=>c.B`${a}`),c.B`, `);f.push(c.B`(${g.alerts.ruleKey} = 'CredentialExpiring' and ${g.alerts.accountId} in (select ${g.accounts.id} from ${g.accounts} where ${g.accounts.provider}::text in (${a})))`)}return f.length?(0,b.F)(...f):void 0}async function r(a,c){let d=q(new Set([a]));d&&await (0,e.f)().update(g.alerts).set({pendingSince:c}).where((0,b.b)((0,b.E)(g.alerts.pending),d))}async function s(){let a=await (0,e.f)().select({kind:g.monitors.kind,n:c.B`count(*)::int`}).from(g.monitors).where((0,b.b)((0,b.u)(g.monitors.paused,!1),(0,b.u)(g.monitors.ownerPaused,!1))).groupBy(g.monitors.kind),d=b=>Number(a.find(a=>a.kind===b)?.n??0);return{http:d("http"),heartbeat:d("heartbeat")}}a.s(["s",0,function(a){let c=q(a);return c?(0,b.R)(c):void 0},"F",0,s,"I",0,p,"e",0,r,"Q",0,o])}];
5
5
 
6
6
  //# sourceMappingURL=src_lib_data_sections-db_ts_1ky6-o4z1mimq._.js.map
@@ -0,0 +1,3 @@
1
+ module.exports=[186133,711251,655206,532971,a=>{"use strict";var b=a.i(93321),c=a.i(351674),d=a.i(548734),e=a.i(837137),f=a.i(160147);let g="budget.limits",h={qstashPerDay:1e3,webAnalyticsEvents:5e4,vercelInvocations:1e6,vercelCpuHours:4,vercelMemoryGbH:360,warnPct:70,errPct:90},i=[{key:"qstashPerDay",label:"Upstash QStash messages",unit:"a day",min:1,max:1e7},{key:"webAnalyticsEvents",label:"Vercel Web Analytics events",unit:"a month",min:1,max:1e8},{key:"vercelInvocations",label:"Vercel function invocations",unit:"a month",min:1,max:1e9},{key:"vercelCpuHours",label:"Vercel active CPU",unit:"hours a month",min:1,max:1e4},{key:"vercelMemoryGbH",label:"Vercel provisioned memory",unit:"GB-hours a month",min:1,max:1e5},{key:"warnPct",label:"Warn from",unit:"% used",min:10,max:99},{key:"errPct",label:"Alarm from",unit:"% used",min:11,max:100}],j=(a,b)=>"number"==typeof b&&Number.isInteger(b)&&b>=a.min&&b<=a.max;function k(a){let b={...h};if(!a||"object"!=typeof a)return b;for(let c of i){let d=a[c.key];j(c,d)&&(b[c.key]=d)}return b.warnPct<b.errPct?b:{...b,warnPct:h.warnPct,errPct:h.errPct}}a.s(["o",0,h,"h",0,g,"S",0,function(a,b){let c=i.filter(c=>a[c.key]!==b[c.key]).map(c=>`${c.label} ${a[c.key].toLocaleString("en-US")} → ${b[c.key].toLocaleString("en-US")}`);return c.length?c.join(", "):null},"X",0,k,"R",0,function(a){let b=a&&"object"==typeof a?a:{},c={...h},d={};for(let a of i){let e=b[a.key],f="string"==typeof e?Number(e.replace(/[,_\s]/g,"")):e;j(a,f)?c[a.key]=f:d[a.key]=`Enter a whole number from ${a.min.toLocaleString("en-US")} to ${a.max.toLocaleString("en-US")}.`}return d.warnPct||d.errPct||!(c.warnPct>=c.errPct)||(d.errPct="Alarm must be above Warn."),Object.keys(d).length?{ok:!1,error:"Check the highlighted fields.",fieldErrors:d}:{ok:!0,value:c}}],711251);let l={checks:7,rollupsHourly:90,deployments:30,events:90,alerts:90,collectorRuns:14,storedLogs:7,recommendationDismissals:90};a.s(["f",0,l],655206);let m="retention.days",n={checks:[3,7,14],rollupsHourly:[60,90,180],storedLogs:[3,7,14],deployments:[30,45,60,90],events:[60,90,180],alerts:[60,90,180],collectorRuns:[7,14,30],recommendationDismissals:[30,90,180]},o=Object.keys(n),p={checks:"Raw checks",rollupsHourly:"Hourly rollups",storedLogs:"Stored logs",deployments:"Deployments",events:"Events",alerts:"Alerts",collectorRuns:"Collector runs",recommendationDismissals:"Advisor dismissals"},q=(a,b)=>"number"==typeof b&&n[a].includes(b);function r(a){let b={...l};if(!a||"object"!=typeof a)return b;for(let c of o){let d=a[c];q(c,d)&&(b[c]=d)}return b}async function s(a){let[c]=await (0,d.f)().select({value:e.settings.value}).from(e.settings).where((0,b.u)(e.settings.key,a)).limit(1);return c?.value??null}async function t(a,b){await (0,d.f)().insert(e.settings).values({key:a,value:b}).onConflictDoUpdate({target:e.settings.key,set:{value:b,updatedAt:new Date}})}a.s(["L",0,o,"I",0,p,"H",0,m,"E",0,r,"b",0,function(a,b){let c=o.filter(c=>a[c]!==b[c]).map(c=>`${p[c]} ${a[c]} → ${b[c]} days`);return c.length?c.join(", "):null},"K",0,function(a){let b={},c={...l},d=a&&"object"==typeof a?a:{};for(let a of o){let e="string"==typeof d[a]?Number(d[a]):d[a];q(a,e)?c[a]=e:b[a]=`Pick ${n[a].join(", ")} days.`}return Object.keys(b).length?{ok:!1,error:"Check the highlighted fields.",fieldErrors:b}:{ok:!0,value:c}}],532971);let u=async()=>r(await s(m)),v=async()=>k(await s(g)),w="notify.language",x="sections.off",y=async()=>(0,f.N)(await s(x));a.s(["j",0,v,"l",0,()=>s(w),"J",0,u,"W",0,y,"x",0,a=>t(g,a),"U",0,a=>t(w,a),"A",0,a=>t(m,a),"Y",0,a=>t(x,(0,f.N)(a)),"X",0,()=>c.B`(select ${e.settings.value} from ${e.settings} where ${e.settings.key} = ${x})`],186133)}];
2
+
3
+ //# sourceMappingURL=src_lib_data_settings-db_ts_1to3jtggxlaz4._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[579739,a=>{"use strict";let b,c=()=>b??=Promise.all([a.A(372153),a.A(106706)]);async function d(a){let[{currentDemoVisitor:b},{withDemoDb:d}]=await c(),e=await b();return d(e.seed,a,e.email)}async function e(){let[{readDemoVisitor:a},{withDemoDb:b}]=await c(),d=await a();d&&await b(d.seed,async()=>void 0,d.email)}a.s(["demoPglite",0,{query:(a,b,c)=>d(d=>d.query(a,b,c)),exec:(a,b)=>d(c=>c.exec(a,b)),transaction:a=>d(b=>b.transaction(a))},"openDemoDb",0,e])},106706,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[root-of-the-server]__16jfs8j29r4b5._.js","server/chunks/ssr/src_db_pglite_ts_0r1r9wqxilnam._.js","server/chunks/ssr/src_lib_demo_0a5wqvhuj5hjh._.js","server/chunks/ssr/node_modules_0vppy-p56c35f._.js","server/chunks/ssr/src_lib_demo_pool_ts_0fpn8acsdk64i._.js","server/chunks/ssr/node_modules_@electric-sql_pglite_dist_0j1fzsq3ed7ph._.js"].map(b=>a.l(b))).then(()=>b(601533)))}];
1
+ module.exports=[579739,a=>{"use strict";let b,c=()=>b??=Promise.all([a.A(372153),a.A(106706)]);async function d(a){let[{currentDemoVisitor:b},{withDemoDb:d}]=await c(),e=await b();return d(e.seed,a,e.email)}async function e(){let[{readDemoVisitor:a},{withDemoDb:b}]=await c(),d=await a();d&&await b(d.seed,async()=>void 0,d.email)}a.s(["demoPglite",0,{query:(a,b,c)=>d(d=>d.query(a,b,c)),exec:(a,b)=>d(c=>c.exec(a,b)),transaction:a=>d(b=>b.transaction(a))},"openDemoDb",0,e])},106706,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[root-of-the-server]__1brzt_134_2iy._.js","server/chunks/ssr/src_db_pglite_ts_0r1r9wqxilnam._.js","server/chunks/ssr/src_lib_demo_0a5wqvhuj5hjh._.js","server/chunks/ssr/node_modules_0vppy-p56c35f._.js","server/chunks/ssr/src_lib_demo_pool_ts_0fpn8acsdk64i._.js","server/chunks/ssr/node_modules_@electric-sql_pglite_dist_0j1fzsq3ed7ph._.js"].map(b=>a.l(b))).then(()=>b(601533)))}];
2
2
 
3
- //# sourceMappingURL=src_lib_demo_15e3gnqzod0tj._.js.map
3
+ //# sourceMappingURL=src_lib_demo_03sepqqjq9usk._.js.map