watchbell 1.6.1 → 1.7.0

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 (992) 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 +72 -71
  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 +72 -71
  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 +72 -71
  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 +72 -71
  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 +72 -71
  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 +72 -71
  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 +72 -71
  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 +72 -71
  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 +72 -71
  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 +72 -71
  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 +72 -71
  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 +72 -71
  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 +72 -71
  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 +72 -71
  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 +72 -71
  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 +72 -71
  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 +72 -71
  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 +72 -71
  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 +72 -71
  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 +72 -71
  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 +72 -71
  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 +72 -71
  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 +72 -71
  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 +72 -71
  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 +72 -71
  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 +72 -71
  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 +72 -71
  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 +72 -71
  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 +72 -71
  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 +72 -71
  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 +72 -71
  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 +72 -71
  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 +155 -0
  147. package/server/.next/server/app/(console)/reports/page.js +121 -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 +72 -71
  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 +72 -71
  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 +75 -74
  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 +72 -71
  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 +72 -71
  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 +72 -71
  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 +72 -71
  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 +72 -71
  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 +72 -71
  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 +72 -71
  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 +72 -71
  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 +90 -84
  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 +95 -89
  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 +9 -8
  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 +85 -80
  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 +27 -23
  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 +31 -27
  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 +27 -23
  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 +27 -23
  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 +33 -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 +33 -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 +38 -36
  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]__0oqc6ym5k457v._.js} +1 -1
  298. package/server/.next/server/chunks/{[externals]__1hwo1oo04do39._.js → [externals]__1aervsuoo1qe_._.js} +1 -1
  299. package/server/.next/server/chunks/{[externals]__1k12utcf9tvqg._.js → [externals]__1oag9t_9gex2-._.js} +1 -1
  300. package/server/.next/server/chunks/{[root-of-the-server]__1avuwg9wmyh48._.js → [root-of-the-server]__0-ytbad9hn7uc._.js} +1 -1
  301. package/server/.next/server/chunks/[root-of-the-server]__00s0famyfjv1y._.js +3 -0
  302. package/server/.next/server/chunks/{[root-of-the-server]__09l9icaspfmoh._.js → [root-of-the-server]__016wnct3b5iby._.js} +2 -2
  303. package/server/.next/server/chunks/[root-of-the-server]__01dj-ln12bcmb._.js +1 -1
  304. package/server/.next/server/chunks/[root-of-the-server]__029099rqwqwff._.js +3 -0
  305. package/server/.next/server/chunks/{[root-of-the-server]__03589rgm1a3ks._.js → [root-of-the-server]__02ctwy1u4z3fj._.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]__03276vwi4jgvk._.js +1 -1
  308. package/server/.next/server/chunks/{[root-of-the-server]__06kp2_zqpttyd._.js → [root-of-the-server]__03y8yvaulshnn._.js} +2 -2
  309. package/server/.next/server/chunks/[root-of-the-server]__03z520-siwkv_._.js +3 -0
  310. package/server/.next/server/chunks/{[root-of-the-server]__06l038ifglbqy._.js → [root-of-the-server]__04ogdmf82__0g._.js} +1 -1
  311. package/server/.next/server/chunks/[root-of-the-server]__05qcc-0e8z1u8._.js +1 -1
  312. package/server/.next/server/chunks/{[root-of-the-server]__09msxcjw3tlue._.js → [root-of-the-server]__05s9-538s47_e._.js} +1 -1
  313. package/server/.next/server/chunks/{[root-of-the-server]__1xdi98xyay6bn._.js → [root-of-the-server]__05vm5cxqq2-pg._.js} +1 -1
  314. package/server/.next/server/chunks/[root-of-the-server]__06od3qx7q00rc._.js +3 -0
  315. package/server/.next/server/chunks/{[root-of-the-server]__0uz_r72zdnwdd._.js → [root-of-the-server]__06rlokvpk450w._.js} +2 -2
  316. package/server/.next/server/chunks/{[root-of-the-server]__0ao4b2jjkcvo1._.js → [root-of-the-server]__070v8547b4qpa._.js} +1 -1
  317. package/server/.next/server/chunks/[root-of-the-server]__07eo--c90cju2._.js +1 -1
  318. package/server/.next/server/chunks/{[root-of-the-server]__0fii83nfm0bsk._.js → [root-of-the-server]__07gjmfv5mi33j._.js} +1 -1
  319. package/server/.next/server/chunks/[root-of-the-server]__07u2g5ccvst94._.js +3 -0
  320. package/server/.next/server/chunks/{[root-of-the-server]__205cmd-k6g2kc._.js → [root-of-the-server]__096q5ufradttx._.js} +1 -1
  321. package/server/.next/server/chunks/[root-of-the-server]__09bwtkv2iniyt._.js +3 -0
  322. package/server/.next/server/chunks/[root-of-the-server]__0_2fr1g7uby1m._.js +3 -0
  323. package/server/.next/server/chunks/{[root-of-the-server]__0g0rd65zoitrb._.js → [root-of-the-server]__0aazgg7203ez1._.js} +1 -1
  324. package/server/.next/server/chunks/{[root-of-the-server]__0ebkmgcs7v0c8._.js → [root-of-the-server]__0afpn-tk2qlu0._.js} +2 -2
  325. package/server/.next/server/chunks/[root-of-the-server]__0b7xflnrk4amk._.js +3 -0
  326. package/server/.next/server/chunks/[root-of-the-server]__0bb8xnocnnbt8._.js +3 -0
  327. package/server/.next/server/chunks/[root-of-the-server]__0bxqqjjy9ckvm._.js +3 -0
  328. package/server/.next/server/chunks/[root-of-the-server]__0c0drtvym6hf4._.js +3 -0
  329. package/server/.next/server/chunks/{[root-of-the-server]__0c_mpay_m5kbm._.js → [root-of-the-server]__0erdelc9_06nk._.js} +1 -1
  330. package/server/.next/server/chunks/{[root-of-the-server]__0ww7a-9fnx2rv._.js → [root-of-the-server]__0eyd4kffoz9ex._.js} +1 -1
  331. package/server/.next/server/chunks/[root-of-the-server]__0frz3wu-qcv-d._.js +3 -0
  332. package/server/.next/server/chunks/{[root-of-the-server]__0uyc9w7f_r10u._.js → [root-of-the-server]__0g0-q56cumuup._.js} +1 -1
  333. package/server/.next/server/chunks/[root-of-the-server]__0gb4uz-gv3va0._.js +1 -1
  334. package/server/.next/server/chunks/[root-of-the-server]__0gqye-fi-f3zk._.js +1 -1
  335. package/server/.next/server/chunks/{[root-of-the-server]__0s3b61ttgb9if._.js → [root-of-the-server]__0gv3v5775wfmw._.js} +2 -2
  336. package/server/.next/server/chunks/{[root-of-the-server]__1y9gsf61fh1fv._.js → [root-of-the-server]__0hm-azhxs9ted._.js} +2 -2
  337. package/server/.next/server/chunks/{[root-of-the-server]__0vdm37x30hr6p._.js → [root-of-the-server]__0ieq7-dtcg06b._.js} +1 -1
  338. package/server/.next/server/chunks/{[root-of-the-server]__0r0zrp3s_n614._.js → [root-of-the-server]__0iicsi0n7tfa5._.js} +1 -1
  339. package/server/.next/server/chunks/{[root-of-the-server]__1tlivd99uri0t._.js → [root-of-the-server]__0jevd1p5unnre._.js} +2 -2
  340. package/server/.next/server/chunks/{[root-of-the-server]__0vclan952l_ty._.js → [root-of-the-server]__0jz91oppmwtiq._.js} +2 -2
  341. package/server/.next/server/chunks/[root-of-the-server]__0kk-m8_ul4f4k._.js +1 -1
  342. package/server/.next/server/chunks/{[root-of-the-server]__10d4a34z0js-f._.js → [root-of-the-server]__0mg6rmq22tf26._.js} +1 -1
  343. package/server/.next/server/chunks/[root-of-the-server]__0n-u6p8-hd-89._.js +3 -0
  344. package/server/.next/server/chunks/{[root-of-the-server]__20qirklw1sgj0._.js → [root-of-the-server]__0ng-t81zeeipc._.js} +2 -2
  345. package/server/.next/server/chunks/{[root-of-the-server]__1r2ei065xk141._.js → [root-of-the-server]__0nkfi6x2c4c5p._.js} +1 -1
  346. package/server/.next/server/chunks/{[root-of-the-server]__192br5y94wzhx._.js → [root-of-the-server]__0nyxfjn368366._.js} +1 -1
  347. package/server/.next/server/chunks/[root-of-the-server]__0o6q27cnw6-77._.js +1 -1
  348. package/server/.next/server/chunks/[root-of-the-server]__0p2n1_qp53y51._.js +3 -0
  349. package/server/.next/server/chunks/[root-of-the-server]__0p8j8b2tg73dq._.js +3 -0
  350. package/server/.next/server/chunks/[root-of-the-server]__0p955ekgdwy_c._.js +3 -0
  351. package/server/.next/server/chunks/{[root-of-the-server]__0g3v-ty9-xstp._.js → [root-of-the-server]__0p_rkszoindlf._.js} +1 -1
  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]__0c41pzboxtjvz._.js → [root-of-the-server]__0pm83e1a3wwlw._.js} +1 -1
  354. package/server/.next/server/chunks/[root-of-the-server]__0q9s7rbt0e-cf._.js +3 -0
  355. package/server/.next/server/chunks/{[root-of-the-server]__1mbm_bvk1oat7._.js → [root-of-the-server]__0qhyj1r9qcxp3._.js} +2 -2
  356. package/server/.next/server/chunks/[root-of-the-server]__0ra3lgjt0yuyy._.js +3 -0
  357. package/server/.next/server/chunks/{[root-of-the-server]__1z1fgf8k8icw8._.js → [root-of-the-server]__0ra_bw8zg6kmk._.js} +2 -2
  358. package/server/.next/server/chunks/[root-of-the-server]__0sgumm0843o2j._.js +3 -0
  359. package/server/.next/server/chunks/{[root-of-the-server]__0016p4j5uh74t._.js → [root-of-the-server]__0t6rge6laz89-._.js} +2 -2
  360. package/server/.next/server/chunks/{[root-of-the-server]__04v42ls1mfjd2._.js → [root-of-the-server]__0tsly874_mafr._.js} +2 -2
  361. package/server/.next/server/chunks/{[root-of-the-server]__1iruoalu93dg7._.js → [root-of-the-server]__0u4o6oo428rvf._.js} +2 -2
  362. package/server/.next/server/chunks/{[root-of-the-server]__0a7moaa91ctod._.js → [root-of-the-server]__0ux78ppoct5b_._.js} +2 -2
  363. package/server/.next/server/chunks/[root-of-the-server]__0vg5zp6z094qr._.js +3 -0
  364. package/server/.next/server/chunks/{[root-of-the-server]__1ji_xmb_m6fam._.js → [root-of-the-server]__0vhq-__j8umfu._.js} +1 -1
  365. package/server/.next/server/chunks/[root-of-the-server]__0vjvvirn6-fx-._.js +3 -0
  366. package/server/.next/server/chunks/[root-of-the-server]__0vp-x4ifpr3p9._.js +1 -1
  367. package/server/.next/server/chunks/{[root-of-the-server]__10ts7p_9fu3ge._.js → [root-of-the-server]__0vuirlylhcyzm._.js} +2 -2
  368. package/server/.next/server/chunks/{[root-of-the-server]__06zmu7jjyw1qw._.js → [root-of-the-server]__0w1iqt-rpp_3h._.js} +1 -1
  369. package/server/.next/server/chunks/[root-of-the-server]__0welpj78704um._.js +3 -0
  370. package/server/.next/server/chunks/{[root-of-the-server]__20056vw370xom._.js → [root-of-the-server]__0xd_bgjy5_tr5._.js} +1 -1
  371. package/server/.next/server/chunks/[root-of-the-server]__0xnag1k7mnvoh._.js +3 -0
  372. package/server/.next/server/chunks/[root-of-the-server]__0yhki59n8zyjb._.js +1 -1
  373. package/server/.next/server/chunks/[root-of-the-server]__0ymf9ppvpsffe._.js +3 -0
  374. package/server/.next/server/chunks/[root-of-the-server]__0zpo6n_av-p7a._.js +3 -0
  375. package/server/.next/server/chunks/{[root-of-the-server]__1hrcyozojb6ot._.js → [root-of-the-server]__0zs-wkvv1cs0i._.js} +1 -1
  376. package/server/.next/server/chunks/[root-of-the-server]__0zxrhqtvpoio4._.js +3 -0
  377. package/server/.next/server/chunks/[root-of-the-server]__1-9vvc9y0qqhf._.js +3 -0
  378. package/server/.next/server/chunks/[root-of-the-server]__1-bbb_srnbm5x._.js +3 -0
  379. package/server/.next/server/chunks/[root-of-the-server]__10-4cctiab73h._.js +3 -0
  380. package/server/.next/server/chunks/[root-of-the-server]__11300e77grhx6._.js +3 -0
  381. package/server/.next/server/chunks/{[root-of-the-server]__0tshehtsx7229._.js → [root-of-the-server]__11a8fxlpahjy2._.js} +1 -1
  382. package/server/.next/server/chunks/[root-of-the-server]__11tzj3jzqzk6v._.js +3 -0
  383. package/server/.next/server/chunks/{[root-of-the-server]__1ghx3ayy7tm73._.js → [root-of-the-server]__11yn1ky7yixd7._.js} +2 -2
  384. package/server/.next/server/chunks/[root-of-the-server]__12m0p1vyef6d5._.js +3 -0
  385. package/server/.next/server/chunks/[root-of-the-server]__12w6gylk59cym._.js +3 -0
  386. package/server/.next/server/chunks/[root-of-the-server]__13-qqkdecmwba._.js +3 -0
  387. package/server/.next/server/chunks/{[root-of-the-server]__19jalyhtntk8p._.js → [root-of-the-server]__135cn1pmljq9j._.js} +1 -1
  388. package/server/.next/server/chunks/[root-of-the-server]__13i4zx_j8zugt._.js +3 -0
  389. package/server/.next/server/chunks/[root-of-the-server]__1412kx9qb_j46._.js +3 -0
  390. package/server/.next/server/chunks/[root-of-the-server]__1420nm1i823v8._.js +3 -0
  391. package/server/.next/server/chunks/[root-of-the-server]__1426to_m4prqh._.js +1 -1
  392. package/server/.next/server/chunks/{[root-of-the-server]__1a563imf6ya2l._.js → [root-of-the-server]__14bynsn7eae8y._.js} +1 -1
  393. package/server/.next/server/chunks/[root-of-the-server]__14cb1pomeg0x7._.js +3 -0
  394. package/server/.next/server/chunks/[root-of-the-server]__177l2p7kcj-16._.js +1 -1
  395. package/server/.next/server/chunks/[root-of-the-server]__1_iy7tzpesarf._.js +3 -0
  396. package/server/.next/server/chunks/[root-of-the-server]__1akvpmbiap6nf._.js +1 -1
  397. package/server/.next/server/chunks/[root-of-the-server]__1c78cu7kb9vkl._.js +1 -1
  398. package/server/.next/server/chunks/[root-of-the-server]__1cnmxehqzmqq_._.js +3 -0
  399. package/server/.next/server/chunks/[root-of-the-server]__1d1zkp1q80t6q._.js +3 -0
  400. package/server/.next/server/chunks/[root-of-the-server]__1f84fftr_6_6n._.js +3 -0
  401. package/server/.next/server/chunks/[root-of-the-server]__1fteaav9qn2kq._.js +3 -0
  402. package/server/.next/server/chunks/{[root-of-the-server]__10-v22hv1sxrv._.js → [root-of-the-server]__1gl0-1oziw-g0._.js} +2 -2
  403. package/server/.next/server/chunks/{[root-of-the-server]__02y9yjf7lp37-._.js → [root-of-the-server]__1gufo2kz88z04._.js} +1 -1
  404. package/server/.next/server/chunks/{[root-of-the-server]__1ons16gam6qb7._.js → [root-of-the-server]__1hcn00gn9mapd._.js} +2 -2
  405. package/server/.next/server/chunks/[root-of-the-server]__1i_vd8w3df3i6._.js +3 -0
  406. package/server/.next/server/chunks/{[root-of-the-server]__0x5vp_8n6xvpw._.js → [root-of-the-server]__1ia-rts7ilt7c._.js} +2 -2
  407. package/server/.next/server/chunks/[root-of-the-server]__1igmx9-fdh2wd._.js +3 -0
  408. package/server/.next/server/chunks/[root-of-the-server]__1io5zo7iam532._.js +1 -1
  409. package/server/.next/server/chunks/[root-of-the-server]__1jcr8cc_tlvfc._.js +3 -0
  410. package/server/.next/server/chunks/[root-of-the-server]__1kp2wois-47bg._.js +3 -0
  411. package/server/.next/server/chunks/{[root-of-the-server]__0qlf-so9k6401._.js → [root-of-the-server]__1kr6f03r82mk6._.js} +1 -1
  412. package/server/.next/server/chunks/[root-of-the-server]__1lcszcm98v484._.js +3 -0
  413. package/server/.next/server/chunks/[root-of-the-server]__1le7r_1_00km1._.js +3 -0
  414. package/server/.next/server/chunks/{[root-of-the-server]__0exruft64u1hg._.js → [root-of-the-server]__1lvf4tk_1td0a._.js} +2 -2
  415. package/server/.next/server/chunks/[root-of-the-server]__1mqv7anx5l3yq._.js +3 -0
  416. package/server/.next/server/chunks/[root-of-the-server]__1mufebnwyxlwx._.js +3 -0
  417. package/server/.next/server/chunks/[root-of-the-server]__1o0lvy6ek0v5d._.js +3 -0
  418. package/server/.next/server/chunks/[root-of-the-server]__1ozfk4_3lx1o7._.js +1 -1
  419. package/server/.next/server/chunks/{[root-of-the-server]__09yvavo991rdd._.js → [root-of-the-server]__1p1e6x-mb7ro2._.js} +2 -2
  420. package/server/.next/server/chunks/[root-of-the-server]__1pu84qy7loc8o._.js +3 -0
  421. package/server/.next/server/chunks/{[root-of-the-server]__0_vtp19_2frgj._.js → [root-of-the-server]__1pyc-ezfujjcp._.js} +1 -1
  422. package/server/.next/server/chunks/{[root-of-the-server]__1yxxfmyk3649a._.js → [root-of-the-server]__1pyhos8be90-4._.js} +1 -1
  423. package/server/.next/server/chunks/[root-of-the-server]__1qelr0qe50xap._.js +3 -0
  424. package/server/.next/server/chunks/[root-of-the-server]__1qqdsrhuw0z-w._.js +3 -0
  425. package/server/.next/server/chunks/[root-of-the-server]__1qwy7s_95k9k-._.js +3 -0
  426. package/server/.next/server/chunks/{[root-of-the-server]__0vb1_m_h5hi0z._.js → [root-of-the-server]__1qxm3lqqdbyy7._.js} +2 -2
  427. package/server/.next/server/chunks/[root-of-the-server]__1rusbj8ktmzj0._.js +3 -0
  428. package/server/.next/server/chunks/[root-of-the-server]__1rxaooz-d8jfs._.js +3 -0
  429. package/server/.next/server/chunks/[root-of-the-server]__1s8f1ovcj5r99._.js +3 -0
  430. package/server/.next/server/chunks/[root-of-the-server]__1tdb11b6vn4qm._.js +3 -0
  431. package/server/.next/server/chunks/[root-of-the-server]__1ti5-6okt7fur._.js +3 -0
  432. package/server/.next/server/chunks/{[root-of-the-server]__1cdt67d022uf1._.js → [root-of-the-server]__1ugnox9gcdhvm._.js} +2 -2
  433. package/server/.next/server/chunks/{[root-of-the-server]__090n04cg_br7j._.js → [root-of-the-server]__1vvg0ur3_7o0p._.js} +1 -1
  434. package/server/.next/server/chunks/[root-of-the-server]__1w_ga9n2lj53n._.js +3 -0
  435. package/server/.next/server/chunks/{[root-of-the-server]__0vsafetdvsfhj._.js → [root-of-the-server]__1wjsjh-1i-sn6._.js} +1 -1
  436. package/server/.next/server/chunks/[root-of-the-server]__1x4u0cdsl_81t._.js +3 -0
  437. package/server/.next/server/chunks/[root-of-the-server]__1xe_98y-j38aq._.js +3 -0
  438. package/server/.next/server/chunks/[root-of-the-server]__1xku6cma1a_kb._.js +3 -0
  439. package/server/.next/server/chunks/{[root-of-the-server]__0pi_camvun8ak._.js → [root-of-the-server]__1xnqsy7nud--q._.js} +2 -2
  440. package/server/.next/server/chunks/[root-of-the-server]__1yk1psrx0yy4n._.js +3 -0
  441. package/server/.next/server/chunks/{[root-of-the-server]__19o-a03uklyrw._.js → [root-of-the-server]__1ywvdsk_bmws0._.js} +2 -2
  442. package/server/.next/server/chunks/[root-of-the-server]__1z9kl-irij2lu._.js +3 -0
  443. package/server/.next/server/chunks/[root-of-the-server]__1zmoy4u_xb_yi._.js +3 -0
  444. package/server/.next/server/chunks/[root-of-the-server]__1zq2zv2ogn3ot._.js +3 -0
  445. package/server/.next/server/chunks/[root-of-the-server]__202mmzv3u-hk1._.js +3 -0
  446. package/server/.next/server/chunks/[root-of-the-server]__20dehd8e5-v9y._.js +1 -1
  447. package/server/.next/server/chunks/[root-of-the-server]__20tvyorpg49kd._.js +3 -0
  448. package/server/.next/server/chunks/{[root-of-the-server]__1i841w7a3057h._.js → [root-of-the-server]__212_l7y-180xi._.js} +1 -1
  449. package/server/.next/server/chunks/{[root-of-the-server]__1vfvw1pmssxww._.js → [root-of-the-server]__217jp1b3psyq_._.js} +1 -1
  450. package/server/.next/server/chunks/_0-sqv2nbaba7h._.js +3 -0
  451. package/server/.next/server/chunks/_00t02v1a9nfr1._.js +3 -0
  452. package/server/.next/server/chunks/_01epotkqa90nv._.js +3 -0
  453. package/server/.next/server/chunks/_04oi0m63biyjd._.js +3 -0
  454. package/server/.next/server/chunks/_05kxcc393c_0z._.js +3 -0
  455. package/server/.next/server/chunks/_08q7x7rdbiaql._.js +49 -0
  456. package/server/.next/server/chunks/_0apakqacgawy4._.js +3 -0
  457. package/server/.next/server/chunks/_0bki3kju_1u1f._.js +3 -0
  458. package/server/.next/server/chunks/_0d29nzne5jrwy._.js +49 -0
  459. package/server/.next/server/chunks/_0djze-128wsu0._.js +3 -0
  460. package/server/.next/server/chunks/_0dq_vw-kky70h._.js +3 -0
  461. package/server/.next/server/chunks/_0hm72d9am2vfs._.js +3 -0
  462. package/server/.next/server/chunks/_0huryxihjw6tl._.js +49 -0
  463. package/server/.next/server/chunks/{_0ehqx1pkh20px._.js → _0lboyl6w4kfx4._.js} +3 -3
  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/_10mj3f1wis1ld._.js +3 -0
  468. package/server/.next/server/chunks/_15f0c7f46zkh3._.js +3 -0
  469. package/server/.next/server/chunks/_17u84tg9ibxp9._.js +3 -0
  470. package/server/.next/server/chunks/_1e4rch26scbhq._.js +49 -0
  471. package/server/.next/server/chunks/_1g-4oov0uynv-._.js +3 -0
  472. package/server/.next/server/chunks/_1iugpfonxri3e._.js +3 -0
  473. package/server/.next/server/chunks/_1iunyzyr-tfdj._.js +31 -0
  474. package/server/.next/server/chunks/{_0zj8nj1f2phf5._.js → _1n4labwyv5msc._.js} +1 -1
  475. package/server/.next/server/chunks/_1nuny071s602h._.js +3 -0
  476. package/server/.next/server/chunks/_1ohb_bmawpjlz._.js +10 -0
  477. package/server/.next/server/chunks/_1qcal07c71omr._.js +3 -0
  478. package/server/.next/server/chunks/_1sx70w_rurjin._.js +3 -0
  479. package/server/.next/server/chunks/_1tl0532dffdm-._.js +3 -0
  480. package/server/.next/server/chunks/{_0jiq3ns7681pv._.js → _1txqs5b7jg9so._.js} +3 -3
  481. package/server/.next/server/chunks/{_1t46m15axa4b4._.js → _1w9di5m91vtjk._.js} +3 -3
  482. package/server/.next/server/chunks/_20ounk93z_b6h._.js +3 -0
  483. package/server/.next/server/chunks/_next-internal_server_app_(console)_reports_[id]_pdf_route_actions_1z8w14-7mvvj9.js +3 -0
  484. package/server/.next/server/chunks/_next-internal_server_app_brand-icon_route_actions_1d7gd59j_572y.js +3 -0
  485. package/server/.next/server/chunks/{node_modules_drizzle-orm_0p2-_xghnn-0j._.js → node_modules_drizzle-orm_0ac-0bknpndrl._.js} +2 -2
  486. package/server/.next/server/chunks/{node_modules_drizzle-orm_0pxdj1u-i8py9._.js → node_modules_drizzle-orm_0k-yqdh9heao6._.js} +2 -2
  487. package/server/.next/server/chunks/{node_modules_drizzle-orm_15o96osca_ezd._.js → node_modules_drizzle-orm_0k7__h1lfq5ug._.js} +2 -2
  488. package/server/.next/server/chunks/{node_modules_drizzle-orm_1hvomr2ymp14o._.js → node_modules_drizzle-orm_0pv-kejmwhhk-._.js} +2 -2
  489. package/server/.next/server/chunks/node_modules_drizzle-orm_1emqi6ca48q0m._.js +4 -0
  490. package/server/.next/server/chunks/node_modules_drizzle-orm_entity_1-0q2stnw2ab8.js +3 -3
  491. package/server/.next/server/chunks/src_0--qn984h6czu._.js +1 -1
  492. package/server/.next/server/chunks/src_0-s0huszb29pj._.js +3 -0
  493. package/server/.next/server/chunks/src_05jrvcsgaq5ek._.js +1 -1
  494. package/server/.next/server/chunks/src_06tyytf_c_hlu._.js +1 -1
  495. package/server/.next/server/chunks/src_0_9n02bmhtk4z._.js +1 -1
  496. package/server/.next/server/chunks/src_0c-owt8q0lyj3._.js +1 -1
  497. package/server/.next/server/chunks/src_0dxbyz8iemj_5._.js +1 -1
  498. package/server/.next/server/chunks/src_0frmhaaejchbk._.js +3 -0
  499. package/server/.next/server/chunks/src_0kihmyo3yghxy._.js +3 -0
  500. package/server/.next/server/chunks/src_0qnh_ndxnflja._.js +3 -0
  501. package/server/.next/server/chunks/src_0r3j66vbc5g4f._.js +3 -0
  502. package/server/.next/server/chunks/src_0u2zbz77uh__q._.js +1 -1
  503. package/server/.next/server/chunks/src_0ud2mqnh4emxz._.js +1 -1
  504. package/server/.next/server/chunks/src_10vyvp9vy_69h._.js +1 -1
  505. package/server/.next/server/chunks/src_16t2uefmdlh8d._.js +3 -0
  506. package/server/.next/server/chunks/src_17j4dgvb7rx7k._.js +3 -0
  507. package/server/.next/server/chunks/{src_05be6wzefzaky._.js → src_1_y0pxtbr6e04._.js} +2 -2
  508. package/server/.next/server/chunks/src_1a5yibsjcy1ga._.js +1 -1
  509. package/server/.next/server/chunks/src_1cvp6ubs-3z6l._.js +1 -1
  510. package/server/.next/server/chunks/src_1d-0nhc193soh._.js +3 -0
  511. package/server/.next/server/chunks/src_1d1ewqrujfp03._.js +3 -0
  512. package/server/.next/server/chunks/src_1il7wg_qjxny7._.js +1 -1
  513. package/server/.next/server/chunks/{src_0cdn5fuk8f_x2._.js → src_1mwttl5ainte0._.js} +2 -2
  514. package/server/.next/server/chunks/src_1s913pql1_n-f._.js +3 -0
  515. package/server/.next/server/chunks/src_1tux0n9_5b1kr._.js +1 -1
  516. package/server/.next/server/chunks/src_1u-olt84z63rx._.js +1 -1
  517. package/server/.next/server/chunks/src_1wmb2yl3tn-dd._.js +1 -1
  518. package/server/.next/server/chunks/src_1wzm081p6qyre._.js +1 -1
  519. package/server/.next/server/chunks/src_20xyhmuf0y6_v._.js +3 -0
  520. package/server/.next/server/chunks/src_db_client_ts_0vckux1-linlc._.js +23 -0
  521. package/server/.next/server/chunks/src_lib_02-wqy78_rn85._.js +3 -0
  522. package/server/.next/server/chunks/src_lib_0ds7lhpop_adf._.js +1 -1
  523. package/server/.next/server/chunks/src_lib_0eqv8l-v8d5ze._.js +1 -1
  524. package/server/.next/server/chunks/src_lib_0glcfed-uogyd._.js +1 -1
  525. package/server/.next/server/chunks/src_lib_0hw2g5g295xx0._.js +12 -0
  526. package/server/.next/server/chunks/src_lib_0iqdlrya6vfc_._.js +3 -0
  527. package/server/.next/server/chunks/src_lib_0kjik9nmtqlf5._.js +7 -0
  528. package/server/.next/server/chunks/src_lib_0krbxej8kykyp._.js +7 -0
  529. package/server/.next/server/chunks/src_lib_0o9m8m1sm5759._.js +5 -0
  530. package/server/.next/server/chunks/src_lib_0pyyxm3m1rttg._.js +1 -1
  531. package/server/.next/server/chunks/src_lib_0sd9c_cjgc4ro._.js +3 -0
  532. package/server/.next/server/chunks/src_lib_0ta8sd9jeuw50._.js +17 -17
  533. package/server/.next/server/chunks/src_lib_0xfwnbkxb4z5s._.js +7 -0
  534. package/server/.next/server/chunks/src_lib_11ky6rv8zte7m._.js +7 -0
  535. package/server/.next/server/chunks/src_lib_13irheo9qqhgx._.js +1 -1
  536. package/server/.next/server/chunks/src_lib_1550ey8j96v9n._.js +1 -1
  537. package/server/.next/server/chunks/src_lib_1hveabvnpk83x._.js +12 -0
  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_collector_deploy-days_ts_087kwe68m4i93._.js +3 -0
  547. package/server/.next/server/chunks/src_lib_data_report-db_ts_0b5f4dpxn08gk._.js +3 -0
  548. package/server/.next/server/chunks/src_lib_demo_pool_ts_0fpn8acsdk64i._.js +9 -9
  549. package/server/.next/server/chunks/src_lib_demo_pool_ts_14rjvkgozh1d4._.js +11 -11
  550. package/server/.next/server/chunks/src_lib_demo_pool_ts_17xz9bk-d5uic._.js +11 -11
  551. package/server/.next/server/chunks/src_lib_demo_pool_ts_210g_on8zx_-n._.js +11 -11
  552. package/server/.next/server/chunks/src_lib_local-auth_proxy_ts_1g9krhdh2rnt2._.js +1 -21
  553. package/server/.next/server/chunks/src_lib_maintenance_ts_0voja6l8yogbf._.js +3 -0
  554. package/server/.next/server/chunks/src_lib_notify_lang_ts_1r2w02ctaky7e._.js +1 -1
  555. package/server/.next/server/chunks/src_lib_rate-limit_ts_09dzyftcadggh._.js +1 -1
  556. package/server/.next/server/chunks/src_lib_rate-limit_ts_0r-eu6to05vyx._.js +1 -1
  557. package/server/.next/server/chunks/src_lib_rate-limit_ts_1ahtm4quu2rri._.js +1 -1
  558. package/server/.next/server/chunks/src_lib_sections_ts_0r8u4nvlpdkgq._.js +1 -1
  559. package/server/.next/server/chunks/src_private_notes_notes-actions_ts_1g63g8u965fhc._.js +1 -1
  560. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_agents_page_actions_21atz5tidps07.js +1 -1
  561. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_models_page_actions_0rvlzfa8rjyz_.js +1 -1
  562. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_playground_page_actions_01ejc1xilpuh4.js +1 -1
  563. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_quota_page_actions_0iki29gyi8cwa.js +1 -1
  564. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_usage_page_actions_1c99h-kwdnep7.js +1 -1
  565. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_auto-actions_page_actions_1kw4ce6-efkr1.js +1 -1
  566. package/server/.next/server/chunks/ssr/{[externals]__0summv9f9jkob._.js → [externals]__02peoq6kft9oz._.js} +1 -1
  567. package/server/.next/server/chunks/ssr/{[externals]__1q1drb4oske-9._.js → [externals]__0byytapt83qke._.js} +1 -1
  568. package/server/.next/server/chunks/ssr/{[externals]__00hge8tjqv73a._.js → [externals]__0gb_9a2m3eqk5._.js} +1 -1
  569. package/server/.next/server/chunks/ssr/{[externals]__1jdljyrzmqoz0._.js → [externals]__1baveo0r8_hf1._.js} +1 -1
  570. package/server/.next/server/chunks/ssr/[root-of-the-server]__001mglelq4wpc._.js +1 -1
  571. package/server/.next/server/chunks/ssr/{[root-of-the-server]__12t9_ndr9z-2d._.js → [root-of-the-server]__004q78ed0nf0_._.js} +1 -1
  572. package/server/.next/server/chunks/ssr/[root-of-the-server]__01o65-2jgmg9x._.js +3 -0
  573. package/server/.next/server/chunks/ssr/{[root-of-the-server]__157kjredkf1pa._.js → [root-of-the-server]__041mpme_x36vq._.js} +1 -1
  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]__1a5760tg4iits._.js → [root-of-the-server]__05uxv6qwfpp79._.js} +2 -2
  576. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0423qjo9c2t9-._.js → [root-of-the-server]__077-acap7g4ck._.js} +1 -1
  577. package/server/.next/server/chunks/ssr/[root-of-the-server]__09blzlbsxqvy9._.js +1 -1
  578. package/server/.next/server/chunks/ssr/{[root-of-the-server]__05s2n35zn4go-._.js → [root-of-the-server]__0ct4apye0sfmc._.js} +1 -1
  579. package/server/.next/server/chunks/ssr/{[root-of-the-server]__139ya3ejh6htx._.js → [root-of-the-server]__0hgf7si8htevx._.js} +1 -1
  580. package/server/.next/server/chunks/ssr/[root-of-the-server]__0jgapr1cnvhi6._.js +1 -1
  581. package/server/.next/server/chunks/ssr/[root-of-the-server]__0keo0-hwsnkw9._.js +1 -1
  582. package/server/.next/server/chunks/ssr/[root-of-the-server]__0l50vsk8enxzj._.js +1 -1
  583. package/server/.next/server/chunks/ssr/[root-of-the-server]__0mvauw9r_4qss._.js +1 -1
  584. package/server/.next/server/chunks/ssr/{[root-of-the-server]__07zuxj3veqm14._.js → [root-of-the-server]__0q7rssq_3unbc._.js} +1 -1
  585. package/server/.next/server/chunks/ssr/{[root-of-the-server]__13phmsw9wsyrs._.js → [root-of-the-server]__0qhbs-or7q-om._.js} +1 -1
  586. package/server/.next/server/chunks/ssr/[root-of-the-server]__0rdf04ziqasfz._.js +1 -1
  587. package/server/.next/server/chunks/ssr/[root-of-the-server]__0rrdzb9wowemv._.js +1 -1
  588. package/server/.next/server/chunks/ssr/{[root-of-the-server]__02lkybw6gg3ln._.js → [root-of-the-server]__0rrnk3_fb0l_9._.js} +2 -2
  589. package/server/.next/server/chunks/ssr/[root-of-the-server]__0u-o_v_v6y58o._.js +3 -0
  590. package/server/.next/server/chunks/ssr/{[root-of-the-server]__10r0u-q18z71i._.js → [root-of-the-server]__0uxychcp_pldy._.js} +1 -1
  591. package/server/.next/server/chunks/ssr/{[root-of-the-server]__16jfs8j29r4b5._.js → [root-of-the-server]__0vqae5m2ntd34._.js} +2 -2
  592. package/server/.next/server/chunks/ssr/{[root-of-the-server]__1nk87bg9lne35._.js → [root-of-the-server]__10y2ig7dg3f-k._.js} +1 -1
  593. package/server/.next/server/chunks/ssr/[root-of-the-server]__11yadiuejywcz._.js +3 -0
  594. package/server/.next/server/chunks/ssr/[root-of-the-server]__12c2r19g75dyy._.js +3 -0
  595. package/server/.next/server/chunks/ssr/{[root-of-the-server]__1iqedr7nfvayk._.js → [root-of-the-server]__13x0qmv4fm_1p._.js} +1 -1
  596. package/server/.next/server/chunks/ssr/[root-of-the-server]__18dcfrlpoapw9._.js +3 -0
  597. package/server/.next/server/chunks/ssr/{[root-of-the-server]__183_36tj3p645._.js → [root-of-the-server]__1_axyb404w3bf._.js} +2 -2
  598. package/server/.next/server/chunks/ssr/[root-of-the-server]__1_f7nip9age3d._.js +1 -1
  599. package/server/.next/server/chunks/ssr/[root-of-the-server]__1_q3kww244pif._.js +3 -0
  600. package/server/.next/server/chunks/ssr/[root-of-the-server]__1ev5rocipbkjw._.js +3 -0
  601. package/server/.next/server/chunks/ssr/[root-of-the-server]__1g6kynby65m0v._.js +3 -0
  602. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0z5ucbis8ik32._.js → [root-of-the-server]__1gkcoq0cmmax1._.js} +2 -2
  603. package/server/.next/server/chunks/ssr/{[root-of-the-server]__07_efq7yhxfj-._.js → [root-of-the-server]__1itgt83qo1e77._.js} +1 -1
  604. package/server/.next/server/chunks/ssr/{[root-of-the-server]__1d1ksu1dlha3r._.js → [root-of-the-server]__1k8mxdm-cxfg_._.js} +2 -2
  605. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0no6c0whevi73._.js → [root-of-the-server]__1mbb917mrz5c-._.js} +1 -1
  606. package/server/.next/server/chunks/ssr/{[root-of-the-server]__1knbzqo0nba_q._.js → [root-of-the-server]__1n-rcmbkk7duv._.js} +2 -2
  607. package/server/.next/server/chunks/ssr/[root-of-the-server]__1pafj7m_b8m14._.js +3 -0
  608. package/server/.next/server/chunks/ssr/{[root-of-the-server]__1mah0p09qrkpu._.js → [root-of-the-server]__1pr-neo8jutji._.js} +2 -2
  609. package/server/.next/server/chunks/ssr/{[root-of-the-server]__14e0j38785glf._.js → [root-of-the-server]__1q6iypbn6yagc._.js} +2 -2
  610. package/server/.next/server/chunks/ssr/[root-of-the-server]__1rzolbt5ior_s._.js +3 -0
  611. package/server/.next/server/chunks/ssr/{[root-of-the-server]__18gw74mr2vto3._.js → [root-of-the-server]__1sw2q1p1t59y8._.js} +2 -2
  612. package/server/.next/server/chunks/ssr/[root-of-the-server]__1u_13nhw3kuz3._.js +1 -1
  613. package/server/.next/server/chunks/ssr/[root-of-the-server]__1vgliw2256_6l._.js +4 -0
  614. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0gyvfp6c-_edw._.js → [root-of-the-server]__1xkfr7qk7oxjf._.js} +2 -2
  615. package/server/.next/server/chunks/ssr/[root-of-the-server]__1z3vauqrf2l-_._.js +3 -0
  616. package/server/.next/server/chunks/ssr/{[root-of-the-server]__06bgklzuef-ya._.js → [root-of-the-server]__1z_pt3d8lty_n._.js} +2 -2
  617. package/server/.next/server/chunks/ssr/{[root-of-the-server]__092gsphy4oz6k._.js → [root-of-the-server]__1zsqu1mecqptt._.js} +2 -2
  618. package/server/.next/server/chunks/ssr/_008i8a0_8skrp._.js +1 -1
  619. package/server/.next/server/chunks/ssr/_02eudwc8ieb2r._.js +2 -2
  620. package/server/.next/server/chunks/ssr/_08xqk3eibu5aw._.js +1 -1
  621. package/server/.next/server/chunks/ssr/_09s2unlb4r6yf._.js +3 -0
  622. package/server/.next/server/chunks/ssr/_0_oc9q0vqkynd._.js +1 -1
  623. package/server/.next/server/chunks/ssr/_0a22b7zsckifp._.js +1 -1
  624. package/server/.next/server/chunks/ssr/_0bd4cxnpnnq2u._.js +1 -1
  625. package/server/.next/server/chunks/ssr/_0cbbks0ms7i_u._.js +2 -2
  626. package/server/.next/server/chunks/ssr/_0cw4kz3d6kmb1._.js +1 -1
  627. package/server/.next/server/chunks/ssr/_0d2d527wcx-lf._.js +2 -2
  628. package/server/.next/server/chunks/ssr/_0d702k82llasi._.js +1 -1
  629. package/server/.next/server/chunks/ssr/_0gl-ewvbhb677._.js +2 -2
  630. package/server/.next/server/chunks/ssr/_0gmw45sb1llld._.js +1 -1
  631. package/server/.next/server/chunks/ssr/_0hqya_yuov5jw._.js +3 -0
  632. package/server/.next/server/chunks/ssr/_0i04zoixa2iup._.js +2 -2
  633. package/server/.next/server/chunks/ssr/_0idbg-ok0so2h._.js +2 -2
  634. package/server/.next/server/chunks/ssr/_0iy27gi4y9-fe._.js +1 -1
  635. package/server/.next/server/chunks/ssr/{_0rsh9v4b3yj0b._.js → _0j_qqta7rirh5._.js} +1 -1
  636. package/server/.next/server/chunks/ssr/_0kdn56_ow-x_s._.js +1 -1
  637. package/server/.next/server/chunks/ssr/_0kk0of-t4vhyh._.js +4 -0
  638. package/server/.next/server/chunks/ssr/{_1vlm9990gr64r._.js → _0kq3wqx86yyhb._.js} +2 -2
  639. package/server/.next/server/chunks/ssr/{_0c9_fa5ejth12._.js → _0lg6_we0pe3nk._.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/{_18sg0ilz439y6._.js → _0xkl4rb1wydtd._.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/{_0fl2-fao_ye7t._.js → _170okt24rw1yx._.js} +2 -2
  657. package/server/.next/server/chunks/ssr/_19-3vzkc6rk97._.js +1 -1
  658. package/server/.next/server/chunks/ssr/_19dldpcnzhkuw._.js +1 -1
  659. package/server/.next/server/chunks/ssr/_1_-o2s48aj4i7._.js +1 -1
  660. package/server/.next/server/chunks/ssr/_1bijvrgqfyij6._.js +5 -0
  661. package/server/.next/server/chunks/ssr/_1c7jkkvkvzj_u._.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/{_19q2vj_ppgsu4._.js → _1ge8mluhma23o._.js} +2 -2
  669. package/server/.next/server/chunks/ssr/_1he21-bt45k8z._.js +2 -2
  670. package/server/.next/server/chunks/ssr/_1ioq9f389jnco._.js +3 -0
  671. package/server/.next/server/chunks/ssr/_1iugpfonxri3e._.js +3 -0
  672. package/server/.next/server/chunks/ssr/_1j9cka-44jd65._.js +1 -1
  673. package/server/.next/server/chunks/ssr/_1jh_o2i8hj2g5._.js +1 -1
  674. package/server/.next/server/chunks/ssr/_1ln6o3a9quwxo._.js +2 -2
  675. package/server/.next/server/chunks/ssr/_1m4km_w39x5e9._.js +1 -1
  676. package/server/.next/server/chunks/ssr/_1ong0a252wcvc._.js +13 -0
  677. package/server/.next/server/chunks/ssr/_1pp1o361lgpwu._.js +2 -2
  678. package/server/.next/server/chunks/ssr/_1q0i7-4d4iyye._.js +3 -0
  679. package/server/.next/server/chunks/ssr/_1q3fi6a4gklq6._.js +1 -1
  680. package/server/.next/server/chunks/ssr/_1qcal07c71omr._.js +3 -0
  681. package/server/.next/server/chunks/ssr/_1r2516zqb3e67._.js +3 -0
  682. package/server/.next/server/chunks/ssr/_1ul3og9l7vp32._.js +2 -2
  683. package/server/.next/server/chunks/ssr/_1yh3k88t_kh4h._.js +2 -2
  684. package/server/.next/server/chunks/ssr/_1z6dy1k48mskn._.js +1 -1
  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/src_0330uf9pdfco9._.js +1 -1
  704. package/server/.next/server/chunks/ssr/src_06tjy8wljego8._.js +1 -1
  705. package/server/.next/server/chunks/ssr/src_084tdkx3c_yqi._.js +1 -1
  706. package/server/.next/server/chunks/ssr/{src_0jxjbvkvg0bjg._.js → src_09q8lx_19nta6._.js} +2 -2
  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_10zavgy86u3us._.js +1 -1
  713. package/server/.next/server/chunks/ssr/src_18m06fg8u7_73._.js +3 -0
  714. package/server/.next/server/chunks/ssr/{src_1_9q6-wstn038._.js → src_18ofj2_oxqb0g._.js} +2 -2
  715. package/server/.next/server/chunks/ssr/{src_0632mrev4i__u._.js → src_1ldp01vcphvw5._.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)_0ohoun7l5f2tb._.js → src_app_(console)_03s-e0b0zsqqr._.js} +2 -2
  727. package/server/.next/server/chunks/ssr/{src_app_(console)_0krr6t05xs2tn._.js → src_app_(console)_0eh38ymzn-s-m._.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_pool-actions_ts_0nzd4vwy_9zzx._.js +1 -1
  750. package/server/.next/server/chunks/ssr/src_app_(console)_uptime_148phfjye0539._.js +1 -1
  751. package/server/.next/server/chunks/ssr/src_app_(console)_uptime_1mnnkfi-2zv-k._.js +1 -1
  752. package/server/.next/server/chunks/ssr/src_app_(console)_vercel-actions_ts_0wpk1yo9v632d._.js +1 -1
  753. package/server/.next/server/chunks/ssr/src_app_mfa_setup_setup-flow_tsx_1fpwygr2vdgnh._.js +1 -1
  754. package/server/.next/server/chunks/ssr/src_app_s_[slug]_page_tsx_0jjqe6py82mpb._.js +1 -1
  755. package/server/.next/server/chunks/ssr/src_app_setup_setup-form_tsx_0izoagdur96e1._.js +1 -1
  756. package/server/.next/server/chunks/ssr/src_app_signin_1-h17es4-y1-k._.js +3 -0
  757. package/server/.next/server/chunks/ssr/src_app_signin_1_sp0qx8_z7c9._.js +1 -1
  758. package/server/.next/server/chunks/ssr/src_components_create_create-dialog_tsx_1s_9clly_m1ru._.js +1 -1
  759. package/server/.next/server/chunks/ssr/src_lib_0eqv8l-v8d5ze._.js +1 -1
  760. package/server/.next/server/chunks/ssr/src_lib_0etkz1wbvfw-k._.js +3 -0
  761. package/server/.next/server/chunks/ssr/src_lib_0jnv54-8idu07._.js +3 -0
  762. package/server/.next/server/chunks/ssr/{src_lib_1zgor_vrwl5kt._.js → src_lib_0o9m8m1sm5759._.js} +2 -2
  763. package/server/.next/server/chunks/ssr/src_lib_1eioo4oodq-8h._.js +1 -1
  764. package/server/.next/server/chunks/ssr/src_lib_1myex-iv3tu5w._.js +23 -0
  765. package/server/.next/server/chunks/ssr/src_lib_1x__dvajr3xvs._.js +3 -0
  766. package/server/.next/server/chunks/ssr/src_lib_alerts_catalog_ts_1ndg28acul64q._.js +1 -1
  767. package/server/.next/server/chunks/ssr/src_lib_branding_ts_03ns4y_8z0-6e._.js +3 -0
  768. package/server/.next/server/chunks/ssr/src_lib_collector_self-update_ts_18m5vmptpjhtg._.js +1 -1
  769. package/server/.next/server/chunks/ssr/{src_lib_demo_15e3gnqzod0tj._.js → src_lib_demo_0r3c3k5102jja._.js} +2 -2
  770. package/server/.next/server/chunks/ssr/src_lib_demo_pool_ts_0fpn8acsdk64i._.js +9 -9
  771. package/server/.next/server/chunks/ssr/src_lib_network_dns-edit_ts_0xtxlbd-uwncx._.js +1 -1
  772. package/server/.next/server/chunks/ssr/src_lib_rate-limit_ts_0r-eu6to05vyx._.js +1 -1
  773. package/server/.next/server/chunks/ssr/src_lib_sections_ts_0r8u4nvlpdkgq._.js +1 -1
  774. package/server/.next/server/chunks/ssr/src_private_0iy_wyg2p1jkn._.js +1 -1
  775. package/server/.next/server/chunks/ssr/src_private_1yzfhupl3rlpx._.js +6 -0
  776. package/server/.next/server/chunks/ssr/src_private_actions_decide-form_tsx_1hngtxpyle3v8._.js +1 -1
  777. package/server/.next/server/chunks/ssr/src_private_ai_providers_actions_ts_0wxa36ai6s5nn._.js +1 -1
  778. package/server/.next/server/chunks/ssr/src_private_notes_notes-actions_ts_1g63g8u965fhc._.js +1 -1
  779. package/server/.next/server/middleware-build-manifest.js +14 -3
  780. package/server/.next/server/middleware.js +1 -1
  781. package/server/.next/server/next-font-manifest.js +1 -1
  782. package/server/.next/server/next-font-manifest.json +4 -0
  783. package/server/.next/server/pages/404.html +1 -1
  784. package/server/.next/server/pages/500.html +1 -1
  785. package/server/.next/server/preview-props.json +3 -3
  786. package/server/.next/server/server-reference-manifest.js +1 -1
  787. package/server/.next/server/server-reference-manifest.json +279 -175
  788. package/server/.next/static/chunks/05c15dcfh7cxm.js +1 -0
  789. package/server/.next/static/chunks/{2-uaya1_uxlg8.js → 07_cb192ydsaj.js} +1 -1
  790. package/server/.next/static/chunks/{1c9eb592ho0-l.js → 0_xoojw9q_nof.js} +1 -1
  791. package/server/.next/static/chunks/{1truzt17f0fce.js → 0a9mqrzg8420n.js} +1 -1
  792. package/server/.next/static/chunks/{0mbt6eam4qr2f.js → 0dn6fty1ilg-n.js} +1 -1
  793. package/server/.next/static/chunks/{0dq-2wtk0h5u7.js → 0gxxyq5l_0rp2.js} +1 -1
  794. package/server/.next/static/chunks/0s00_-em3cj00.js +1 -0
  795. package/server/.next/static/chunks/{3m3vl3n5xs039.js → 0valedxcn7j8k.js} +2 -2
  796. package/server/.next/static/chunks/{2ze-y3he5_bb0.js → 0ynyx3s7s4mv7.js} +1 -1
  797. package/server/.next/static/chunks/{0matuoy08desx.js → 0zwq-z8jt5hpz.js} +1 -1
  798. package/server/.next/static/chunks/10y41_ed7ty6e.js +1 -0
  799. package/server/.next/static/chunks/{2-xolk9x48-v1.js → 1416wraxs5p8g.js} +1 -1
  800. package/server/.next/static/chunks/16gt7hkgltvf7.js +1 -0
  801. package/server/.next/static/chunks/{0l61-etojd65n.js → 1_uuog1-u6y0t.js} +1 -1
  802. package/server/.next/static/chunks/{3gmm9g54vx4w0.js → 1azdri14ocjgg.js} +11 -11
  803. package/server/.next/static/chunks/{3jqmm62dbykt1.js → 1cd-2y1kwqosv.js} +1 -1
  804. package/server/.next/static/chunks/{33_2mbxu9wufm.js → 1j_hduntj28ij.js} +1 -1
  805. package/server/.next/static/chunks/{1r99dm6-o5qw2.js → 1nqpnndfmw0tc.js} +1 -1
  806. package/server/.next/static/chunks/{3aou6xwhz8z6a.js → 1nv_9c1bate-f.js} +1 -1
  807. package/server/.next/static/chunks/1sjgdu3r0baj-.js +1 -0
  808. package/server/.next/static/chunks/1velx-cd3d5y1.js +1 -0
  809. package/server/.next/static/chunks/{2yc4qzglai5fq.js → 1vt_t7dg_-pyu.js} +1 -1
  810. package/server/.next/static/chunks/1w51uxl19faw3.js +1 -0
  811. package/server/.next/static/chunks/1xydxxektmjgr.js +1 -0
  812. package/server/.next/static/chunks/{2am77mhkx46hz.js → 1yyigrxptb7jm.js} +2 -2
  813. package/server/.next/static/chunks/{0y99dm8mesqe9.js → 28_88x_e_ynaj.js} +1 -1
  814. package/server/.next/static/chunks/{0-o-4ilzkrd38.js → 28qjoy38cp5by.js} +1 -1
  815. package/server/.next/static/chunks/{2fvh4wg2kp4c2.js → 2azwg3my8wh40.js} +1 -1
  816. package/server/.next/static/chunks/2co8kv2tj776w.js +1 -0
  817. package/server/.next/static/chunks/{0ey7akdab5tu8.js → 2db0smm21dva_.js} +1 -1
  818. package/server/.next/static/chunks/{0v97o46v-74gw.js → 2gk24b05q4q57.js} +1 -1
  819. package/server/.next/static/chunks/{1935vuszybg7i.js → 2i5_2zcei6rqr.js} +1 -1
  820. package/server/.next/static/chunks/2jflssspiz3-i.js +1 -0
  821. package/server/.next/static/chunks/{01euc4zjlprz5.js → 2n198u7xx1koh.js} +1 -1
  822. package/server/.next/static/chunks/{3gkm-ynu4fq5u.js → 2sr03gtef27q0.js} +1 -1
  823. package/server/.next/static/chunks/{02kly5fiyvt77.js → 2txgb9zusks-w.js} +1 -1
  824. package/server/.next/static/chunks/{2m8-ctreu-y-r.js → 3-789qaoce7ff.js} +1 -1
  825. package/server/.next/static/chunks/3-us-wg44ohoc.js +1 -0
  826. package/server/.next/static/chunks/{2szchf79vnxgd.js → 31fs88f_h861n.js} +1 -1
  827. package/server/.next/static/chunks/36ykgce0otv4r.css +3 -0
  828. package/server/.next/static/chunks/{22ygzud_kp29f.js → 378ttzg87hows.js} +1 -1
  829. package/server/.next/static/chunks/{0xz55932e19r8.js → 3aglnkhgcl_kq.js} +1 -1
  830. package/server/.next/static/chunks/{0ge2nkna7o16p.js → 3bvj3-0xltkjo.js} +1 -1
  831. package/server/.next/static/chunks/{3e-0ejqqa7jwn.js → 3cti7pgg_jjlx.js} +1 -1
  832. package/server/.next/static/chunks/{0xlfzxnboj4f1.js → 3dktq-qmj2q5b.js} +1 -1
  833. package/server/.next/static/chunks/{3ursfc8kxp2ak.js → 3ic7ri5b4ifjp.js} +2 -2
  834. package/server/.next/static/chunks/{1pogexbz36ij8.js → 3ic9vbadne9of.js} +1 -1
  835. package/server/.next/static/chunks/{3dk6a5gl9glxo.js → 3lw5n6yzs0665.js} +1 -1
  836. package/server/.next/static/chunks/3mgd5b39ghc-w.js +1 -0
  837. package/server/.next/static/chunks/{1u8mo8jflotrt.js → 3n98m8tj20wcf.js} +1 -1
  838. package/server/.next/static/chunks/{2p8bv7d7t08z1.js → 3u1v2wpzthilq.js} +1 -1
  839. package/server/drizzle-selfhost/0011_reports.sql +56 -0
  840. package/server/drizzle-selfhost/0012_report_send_rule.sql +2 -0
  841. package/server/drizzle-selfhost/meta/_journal.json +14 -0
  842. package/server/server.js +1 -1
  843. package/server/src/lib/report/fonts/Geist-Regular.ttf +0 -0
  844. package/server/src/lib/report/fonts/Geist-SemiBold.ttf +0 -0
  845. package/server/src/lib/report/fonts/GeistMono-Regular.ttf +0 -0
  846. package/server/src/lib/report/fonts/OFL.txt +92 -0
  847. package/tools/reset-login.mjs +2 -0
  848. package/server/.next/server/chunks/[root-of-the-server]__00oxbw3nfl_kd._.js +0 -3
  849. package/server/.next/server/chunks/[root-of-the-server]__04q-9779vl4kn._.js +0 -3
  850. package/server/.next/server/chunks/[root-of-the-server]__04u9e45_g1jdi._.js +0 -3
  851. package/server/.next/server/chunks/[root-of-the-server]__05b18nw2k-7-4._.js +0 -3
  852. package/server/.next/server/chunks/[root-of-the-server]__06nrq_1pbp3z-._.js +0 -3
  853. package/server/.next/server/chunks/[root-of-the-server]__06uaa_2zbg57p._.js +0 -3
  854. package/server/.next/server/chunks/[root-of-the-server]__081hh3_un4awi._.js +0 -3
  855. package/server/.next/server/chunks/[root-of-the-server]__09gla7jgbw2bs._.js +0 -3
  856. package/server/.next/server/chunks/[root-of-the-server]__0a0st8-rftztn._.js +0 -3
  857. package/server/.next/server/chunks/[root-of-the-server]__0at6fxe9efr-x._.js +0 -3
  858. package/server/.next/server/chunks/[root-of-the-server]__0dfx2psnngcys._.js +0 -3
  859. package/server/.next/server/chunks/[root-of-the-server]__0di45l_tnq1pm._.js +0 -3
  860. package/server/.next/server/chunks/[root-of-the-server]__0ej4hdoyogtji._.js +0 -3
  861. package/server/.next/server/chunks/[root-of-the-server]__0eqrtvr3uqlqf._.js +0 -3
  862. package/server/.next/server/chunks/[root-of-the-server]__0g81f_2ecmg8a._.js +0 -3
  863. package/server/.next/server/chunks/[root-of-the-server]__0glhrm7zmrvi2._.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]__0jpktq0f88rvz._.js +0 -3
  866. package/server/.next/server/chunks/[root-of-the-server]__0myf9g_uv3bia._.js +0 -3
  867. package/server/.next/server/chunks/[root-of-the-server]__0puji-hw0xtk7._.js +0 -3
  868. package/server/.next/server/chunks/[root-of-the-server]__0ruici82tzf0w._.js +0 -3
  869. package/server/.next/server/chunks/[root-of-the-server]__0t0dd5t5rch1i._.js +0 -3
  870. package/server/.next/server/chunks/[root-of-the-server]__0ty2qkszfdr5t._.js +0 -3
  871. package/server/.next/server/chunks/[root-of-the-server]__0ugx1i8km15fl._.js +0 -3
  872. package/server/.next/server/chunks/[root-of-the-server]__0ux1hi2fgqxu7._.js +0 -3
  873. package/server/.next/server/chunks/[root-of-the-server]__12tmfv427e9cb._.js +0 -3
  874. package/server/.next/server/chunks/[root-of-the-server]__1481y3utu_a_o._.js +0 -3
  875. package/server/.next/server/chunks/[root-of-the-server]__14e0j38785glf._.js +0 -3
  876. package/server/.next/server/chunks/[root-of-the-server]__14yq_wf4xemgd._.js +0 -3
  877. package/server/.next/server/chunks/[root-of-the-server]__1_0vd5-tvmsg8._.js +0 -3
  878. package/server/.next/server/chunks/[root-of-the-server]__1_goy0uhapvk9._.js +0 -3
  879. package/server/.next/server/chunks/[root-of-the-server]__1ac-dzt5bffr2._.js +0 -3
  880. package/server/.next/server/chunks/[root-of-the-server]__1ajyr5xvo1-x5._.js +0 -3
  881. package/server/.next/server/chunks/[root-of-the-server]__1ey2qia7rofoc._.js +0 -3
  882. package/server/.next/server/chunks/[root-of-the-server]__1hlvqq0azku2x._.js +0 -3
  883. package/server/.next/server/chunks/[root-of-the-server]__1hrviq7s700td._.js +0 -3
  884. package/server/.next/server/chunks/[root-of-the-server]__1ifov-udw6__d._.js +0 -3
  885. package/server/.next/server/chunks/[root-of-the-server]__1ig0p-frprcbm._.js +0 -3
  886. package/server/.next/server/chunks/[root-of-the-server]__1ksyvvsf32jfg._.js +0 -3
  887. package/server/.next/server/chunks/[root-of-the-server]__1kzi1du1sliqb._.js +0 -3
  888. package/server/.next/server/chunks/[root-of-the-server]__1mvibnqor6lx_._.js +0 -3
  889. package/server/.next/server/chunks/[root-of-the-server]__1o-zo4qebuqwy._.js +0 -3
  890. package/server/.next/server/chunks/[root-of-the-server]__1po33h2u2o4e_._.js +0 -3
  891. package/server/.next/server/chunks/[root-of-the-server]__1qps9ushddgwe._.js +0 -3
  892. package/server/.next/server/chunks/[root-of-the-server]__1qrj37m-5y-56._.js +0 -3
  893. package/server/.next/server/chunks/[root-of-the-server]__1qyz1wi13rxxb._.js +0 -3
  894. package/server/.next/server/chunks/[root-of-the-server]__1r8mzvf7_9d2k._.js +0 -3
  895. package/server/.next/server/chunks/[root-of-the-server]__1rxke2_vpd7np._.js +0 -3
  896. package/server/.next/server/chunks/[root-of-the-server]__1sjp750034q4j._.js +0 -3
  897. package/server/.next/server/chunks/[root-of-the-server]__1wbnule0tzwdu._.js +0 -3
  898. package/server/.next/server/chunks/[root-of-the-server]__1wcnj2xtesyd9._.js +0 -3
  899. package/server/.next/server/chunks/[root-of-the-server]__1won_frdj9jms._.js +0 -3
  900. package/server/.next/server/chunks/[root-of-the-server]__1wvp6wau5ueb9._.js +0 -3
  901. package/server/.next/server/chunks/[root-of-the-server]__1yxudc_keazqo._.js +0 -3
  902. package/server/.next/server/chunks/[root-of-the-server]__1z_l9mj3s_6tu._.js +0 -3
  903. package/server/.next/server/chunks/[root-of-the-server]__1zvy7u_y3fzbz._.js +0 -3
  904. package/server/.next/server/chunks/[root-of-the-server]__208znvanagmpr._.js +0 -3
  905. package/server/.next/server/chunks/[root-of-the-server]__20qdu-env7wgt._.js +0 -3
  906. package/server/.next/server/chunks/[root-of-the-server]__212-4r-w6a9sm._.js +0 -3
  907. package/server/.next/server/chunks/_0-5pjvqu672_v._.js +0 -49
  908. package/server/.next/server/chunks/_02qrz1g8sdvhe._.js +0 -49
  909. package/server/.next/server/chunks/_03qlijpos6a21._.js +0 -3
  910. package/server/.next/server/chunks/_06gv0srpbf_lk._.js +0 -3
  911. package/server/.next/server/chunks/_06lf75x-xhl7v._.js +0 -3
  912. package/server/.next/server/chunks/_0cbxgnkxr1uj8._.js +0 -3
  913. package/server/.next/server/chunks/_0sy878k2ywjbq._.js +0 -3
  914. package/server/.next/server/chunks/_0vjggb8yo5b9f._.js +0 -3
  915. package/server/.next/server/chunks/_0wval7co8z-pk._.js +0 -3
  916. package/server/.next/server/chunks/_103ai6ybnpq1k._.js +0 -3
  917. package/server/.next/server/chunks/_108e86rhye0o1._.js +0 -3
  918. package/server/.next/server/chunks/_12g2m3a5e94_5._.js +0 -3
  919. package/server/.next/server/chunks/_1_son1yzo5xvl._.js +0 -3
  920. package/server/.next/server/chunks/_1ap0upnvy5i_1._.js +0 -49
  921. package/server/.next/server/chunks/_1b-88djuoexz1._.js +0 -49
  922. package/server/.next/server/chunks/_1ctwjh8q__6_g._.js +0 -3
  923. package/server/.next/server/chunks/_1f14qy3kb8iac._.js +0 -3
  924. package/server/.next/server/chunks/_1fj4vzjpusyn8._.js +0 -5
  925. package/server/.next/server/chunks/_1i8u10u8nrzy2._.js +0 -3
  926. package/server/.next/server/chunks/_1k3v1-vgvzm_o._.js +0 -3
  927. package/server/.next/server/chunks/_1kcmwgs544mo-._.js +0 -3
  928. package/server/.next/server/chunks/_1ptcxyn1tzm9r._.js +0 -3
  929. package/server/.next/server/chunks/_1rskctyr7yt-b._.js +0 -3
  930. package/server/.next/server/chunks/node_modules_drizzle-orm_1oeq7sl_gbxs5._.js +0 -4
  931. package/server/.next/server/chunks/node_modules_drizzle-orm_1tmqw7vk5a4ik._.js +0 -4
  932. package/server/.next/server/chunks/src_063xvouojxyoa._.js +0 -3
  933. package/server/.next/server/chunks/src_088gmyaew7ds0._.js +0 -3
  934. package/server/.next/server/chunks/src_08fq45_-8xq5o._.js +0 -3
  935. package/server/.next/server/chunks/src_0hx0sol2clocu._.js +0 -3
  936. package/server/.next/server/chunks/src_0j84o_hkkaeg-._.js +0 -3
  937. package/server/.next/server/chunks/src_0y_4gogmeu-2k._.js +0 -3
  938. package/server/.next/server/chunks/src_1-6a00bmwlymu._.js +0 -3
  939. package/server/.next/server/chunks/src_13n1vi7uew4iu._.js +0 -3
  940. package/server/.next/server/chunks/src_1_fnzi0em_6er._.js +0 -3
  941. package/server/.next/server/chunks/src_1bqzr81r3wkvi._.js +0 -3
  942. package/server/.next/server/chunks/src_1wduh0eckiwl1._.js +0 -3
  943. package/server/.next/server/chunks/src_lib_0-fln6xaazo-9._.js +0 -12
  944. package/server/.next/server/chunks/src_lib_0ma36vqcze7a9._.js +0 -7
  945. package/server/.next/server/chunks/src_lib_0ps7mu81f-6s1._.js +0 -7
  946. package/server/.next/server/chunks/src_lib_14grv5a5_n9o0._.js +0 -7
  947. package/server/.next/server/chunks/src_lib_1en6omqx66g9d._.js +0 -23
  948. package/server/.next/server/chunks/src_lib_1jlvdx5ho171c._.js +0 -12
  949. package/server/.next/server/chunks/src_lib_1znb-e7g8dkgc._.js +0 -7
  950. package/server/.next/server/chunks/src_lib_collector_runners_ts_12z4gtgikss74._.js +0 -21
  951. package/server/.next/server/chunks/src_lib_data_metrics-db_ts_0zp7x6l28a2ep._.js +0 -3
  952. package/server/.next/server/chunks/src_lib_demo_11p30f_ci6ie2._.js +0 -3
  953. package/server/.next/server/chunks/ssr/[root-of-the-server]__03xevz8n-mc20._.js +0 -4
  954. package/server/.next/server/chunks/ssr/[root-of-the-server]__0de1senl_kfo5._.js +0 -3
  955. package/server/.next/server/chunks/ssr/[root-of-the-server]__0y6psx1_d7fkt._.js +0 -3
  956. package/server/.next/server/chunks/ssr/[root-of-the-server]__19twn3g5nv5q1._.js +0 -3
  957. package/server/.next/server/chunks/ssr/[root-of-the-server]__19wvac83zh5-9._.js +0 -3
  958. package/server/.next/server/chunks/ssr/[root-of-the-server]__1m38od9tgaroe._.js +0 -3
  959. package/server/.next/server/chunks/ssr/[root-of-the-server]__1mxpszbk1aup8._.js +0 -4
  960. package/server/.next/server/chunks/ssr/[root-of-the-server]__1tj-iwvrxfd1a._.js +0 -3
  961. package/server/.next/server/chunks/ssr/[root-of-the-server]__1zmuaump_n9c1._.js +0 -3
  962. package/server/.next/server/chunks/ssr/_01n29sxn-py3x._.js +0 -3
  963. package/server/.next/server/chunks/ssr/_03d3sxmob-gr7._.js +0 -3
  964. package/server/.next/server/chunks/ssr/_0c8kew3jsb-yb._.js +0 -3
  965. package/server/.next/server/chunks/ssr/_0qhvl_fw4qetx._.js +0 -4
  966. package/server/.next/server/chunks/ssr/_0rw2pberdmaa5._.js +0 -3
  967. package/server/.next/server/chunks/ssr/_0zkmkbrbc96-h._.js +0 -3
  968. package/server/.next/server/chunks/ssr/_16vvfyez78u5k._.js +0 -3
  969. package/server/.next/server/chunks/ssr/_1d0anr0hjs5k5._.js +0 -3
  970. package/server/.next/server/chunks/ssr/_1fj4vzjpusyn8._.js +0 -5
  971. package/server/.next/server/chunks/ssr/_1rskctyr7yt-b._.js +0 -3
  972. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_settings_page_actions_12wgjpd0lbh12.js +0 -3
  973. package/server/.next/server/chunks/ssr/src_1emolu5lrse98._.js +0 -6
  974. package/server/.next/server/chunks/ssr/src_1sdwdnblbiq_g._.js +0 -3
  975. package/server/.next/server/chunks/ssr/src_app_signin_12a3ifphkkcs7._.js +0 -3
  976. package/server/.next/server/chunks/ssr/src_lib_0nbad7vu413-f._.js +0 -23
  977. package/server/.next/server/chunks/ssr/src_lib_data_metrics-db_ts_0zp7x6l28a2ep._.js +0 -3
  978. package/server/.next/static/chunks/028g933xfv8jn.js +0 -1
  979. package/server/.next/static/chunks/0utjdzwgd7zw2.js +0 -1
  980. package/server/.next/static/chunks/1sa-1lde5_ikt.js +0 -1
  981. package/server/.next/static/chunks/1uk98c6r9i2bn.js +0 -1
  982. package/server/.next/static/chunks/2zzk4wxiacgja.css +0 -3
  983. package/server/.next/static/chunks/33avmrae70_xs.js +0 -1
  984. package/server/.next/static/chunks/363mcu9nd9znh.js +0 -1
  985. package/server/.next/static/chunks/3bwwwv3sp7uyn.js +0 -1
  986. package/server/.next/static/chunks/3lvz18snt6489.js +0 -1
  987. package/server/.next/static/chunks/3qv9klayap1tz.js +0 -1
  988. package/server/.next/static/chunks/3xkvsl4vbpm41.js +0 -1
  989. package/server/.next/static/chunks/3yu0azvye6wr_.js +0 -1
  990. /package/server/.next/static/{fogXXBSOhoHV3eIf8_j28 → NUZVcU60U-vXVedu_GB0w}/_buildManifest.js +0 -0
  991. /package/server/.next/static/{fogXXBSOhoHV3eIf8_j28 → NUZVcU60U-vXVedu_GB0w}/_clientMiddlewareManifest.js +0 -0
  992. /package/server/.next/static/{fogXXBSOhoHV3eIf8_j28 → NUZVcU60U-vXVedu_GB0w}/_ssgManifest.js +0 -0
@@ -1,7 +1,7 @@
1
1
  (()=>{"use strict";module.exports=[825895,e=>{var t=e.i(875225),r=e.i(924924),a=e.i(618916),n=e.i(620511),i=e.i(267841);let o="deps.lockfileDispatched";async function s(){let[e]=await (0,r.f)().select({value:a.settings.value}).from(a.settings).where((0,t.u)(a.settings.key,n.h)).limit(1);return(0,n.g)(e?.value).repo}async function l(e,u,d=new Date){try{let l=await s();if(!l)return{sent:!1,why:"no actions repository"};let c=(0,n.C)(u);if(!c)return{sent:!1,why:"invalid"};let p=await (0,i.B)(e,l,c);if(!p.ok)return{sent:!1,why:p.error};let[f]=await (0,r.f)().select({value:a.settings.value}).from(a.settings).where((0,t.u)(a.settings.key,o)).limit(1),m=f?.value&&"object"==typeof f.value?f.value:{},g={...Object.fromEntries(Object.entries(m).filter(([,e])=>d.getTime()-Date.parse(e)<864e5)),[`${u.repo}#${u.branch}`]:d.toISOString()};return await (0,r.f)().insert(a.settings).values({key:o,value:g}).onConflictDoUpdate({target:a.settings.key,set:{value:g,updatedAt:d}}),{sent:!0}}catch(e){return console.warn("deps: lockfile dispatch failed:",e instanceof Error?e.name:"error"),{sent:!1,why:"error"}}}async function u(e,i,s=new Date){try{let[l]=await (0,r.f)().select({value:a.settings.value}).from(a.settings).where((0,t.u)(a.settings.key,o)).limit(1),u=l?.value?.[`${e}#${i}`];return!!u&&s.getTime()-Date.parse(u)<n.w}catch{return!1}}e.s(["W",0,u,"U",0,l])},582931,e=>{var t=e.i(875225),r=e.i(349129),a=e.i(924924),n=e.i(618916),i=e.i(921991),o=e.i(90801),s=e.i(975912),l=e.i(618127),u=e.i(581321),d=e.i(32391),c=e.i(256662),p=e.i(413230),f=e.i(547499),m=e.i(479301),g=e.i(502240),h=e.i(267841),k=e.i(628448),y=e.i(472832),w=e.i(825895);let b=e=>({done:!1,message:e});async function v(){let[e]=await (0,a.f)().select().from(n.accounts).where((0,t.u)(n.accounts.provider,"github_write")).orderBy((0,r.M)(n.accounts.createdAt)).limit(1);if(!e)return null;let o=(0,i.V)({ciphertext:e.credentialCiphertext,iv:e.credentialIv},(0,f.f)().OPS_ENCRYPTION_KEY);return o?{id:e.id,token:o}:"unreadable"}let $={severity:"no package at the selected severity",major:"an update jumps a major version",nothing:"nothing can be updated"};async function I(e){let[r]=await (0,a.f)().select({version:n.appSecurity.version,status:n.appSecurity.status,findings:n.appSecurity.findings}).from(n.appSecurity).where((0,t.u)(n.appSecurity.resourceId,e)).limit(1);return r?(0,l.p)({version:r.version,status:r.status,findings:Array.isArray(r.findings)?r.findings:[]}):null}async function A(e){let r=await (0,a.f)().select({package:n.dependencyVulns.package,installedVersion:n.dependencyVulns.installedVersion,fixedVersion:n.dependencyVulns.fixedVersion,vulnId:n.dependencyVulns.vulnId,aliases:n.dependencyVulns.aliases,severity:n.dependencyVulns.severity,direct:n.dependencyVulns.direct,dev:n.dependencyVulns.dev}).from(n.dependencyVulns).where((0,t.b)((0,t.u)(n.dependencyVulns.repoId,e),(0,t.M)(n.dependencyVulns.resolvedAt))).limit(2e3);return{upgrades:(0,p.B)(r),installed:(0,o.D)(r)}}async function R(e,t,r,a,n){for(let i of(0,g.a)(a,r)){if(i===r)break;let a=await (0,h.M)(e,t,i,n);if(!a.ok)return a;if(a.data)return{ok:!0,data:{base:i,head:a}}}return{ok:!0,data:{base:r,head:await (0,h.M)(e,t,r,n)}}}async function x(r,i,p,f=y.W,j={}){let S;if(!(0,m.f)(i)||!(0,m.f)(p))return f(b("Something in that request wasn't valid."),r,"");let _=await (0,y.q)(r.id,"github_bump_pr",i);if(_)return f(b(_),r,"");let T=await v();if(null===T)return f(b('A GitHub PR-write token is needed: connect "GitHub (PR write)" on Connections (fine-grained, this repository only, Contents and Pull requests: Read and write; Commit statuses: Read for automatic merges), then ask again.'),r,"");if("unreadable"===T)return f(b("Can't read the stored GitHub PR-write credential. Replace it on Connections."),r,"");let[O]=await (0,a.f)().select({app:n.resources.name,meta:n.resources.meta,fullName:n.githubRepos.fullName,owner:n.githubRepos.owner,goneAt:n.githubRepos.goneAt,lockfilePath:n.dependencyScans.lockfilePath,lockfileSha:n.dependencyScans.lockfileSha}).from(n.appRepos).innerJoin(n.githubRepos,(0,t.u)(n.githubRepos.id,n.appRepos.repoId)).innerJoin(n.resources,(0,t.u)(n.resources.id,n.appRepos.appId)).leftJoin(n.dependencyScans,(0,t.u)(n.dependencyScans.repoId,n.appRepos.repoId)).where((0,t.b)((0,t.u)(n.appRepos.appId,i),(0,t.u)(n.appRepos.repoId,p))).limit(1);if(!O||O.goneAt)return f(b(k.G),r,T.id);let P=O.meta??{},M=(0,u.l)(P.rootDirectoryUnsupported);if(M)return f(b(`The Vercel Root Directory "${M}" of ${O.app} couldn't be used (Watchbell reads plain folder names, at most 4 deep). Update its package.json yourself.`),r,T.id);let N=(0,u.Q)(P.rootDirectory),D=(0,u.H)(N,"package.json"),z=N?`in ${N}`:"at the repository root";if(j.framework){let e=await I(i);if(!e)return f(b(`Nothing to update in ${O.app}: its Next.js check shows no advisory with a fixed version.`),r,T.id);S=e}else if(!(S=await A(p)).upgrades.length)return f(b(`Nothing to update in ${O.app}: no direct package has a fixed version for its open advisories.`),r,T.id);let C=S.upgrades;if(j.auto){let e=(0,o.a)(C,S.installed,j.auto.severities);if(!e.ok)return f(b(`Automatic PR not opened: ${$[e.why]}. The proposal waits for your approval.`),r,T.id);C=e.upgrades}C=(0,l.F)(C);let{auto:E,proposalId:K,framework:H,...B}=j,L={timeoutMs:8e3,...B},V=await (0,h.H)(T.token,O.fullName,L);if(!V.ok)return f({done:!1,failed:V,audit:{message:`Package update PR failed \xb7 ${O.app}`,resourceId:i}},r,T.id);let W=await R(T.token,O.fullName,V.data.defaultBranch,P,L);if(!W.ok)return f({done:!1,failed:W,audit:{message:`Package update PR failed \xb7 ${O.app}`,resourceId:i}},r,T.id);let U=W.data.base,G=(0,g.B)(P.productionSource,U,new Date);if(G&&E)return f(b(`Automatic PR not opened: ${G} The proposal waits for your approval.`),r,T.id);let q=H?null:(0,g.y)(O.lockfileSha,V.data.defaultBranch,N);if(q&&q!==U)return f(b(`The dependency scan of ${O.app} read ${q}, but this pull request would go to ${U}. Scan again (Dependencies › Scan now on the app page), then ask again.`),r,T.id);let F=W.data.head;if(!F.ok)return f({done:!1,failed:F,audit:{message:`Package update PR failed \xb7 ${O.app}`,resourceId:i}},r,T.id);if(!F.data)return f(b(`The default branch ${U} wasn't found.`),r,T.id);let J=await (0,h.E)(T.token,O.fullName,F.data,L,D);if(!J.ok)return f({done:!1,failed:J,audit:{message:`Package update PR failed \xb7 ${O.app}`,resourceId:i}},r,T.id);if(!J.data)return f(b(`There is no package.json ${z}.`),r,T.id);let X=(0,s.k)(J.data.text,C);if(!X?.length||H&&!X.some(e=>"next"===e.package))return f(b(`${D} in ${O.app} already allows the fixed versions (or its ranges can't be rewritten). Run npm install there.`),r,T.id);if(E){let e=X.find(e=>{let t=(0,d.Y)(e.from);return!t||!(0,o.J)(t,e.fixed)});if(e)return f(b(`Automatic PR not opened: ${e.package} ${e.from} → ${e.to} jumps a major version. The proposal waits for your approval.`),r,T.id)}let Z=(0,s.M)(J.data.text,X);if(!Z)return f(b("package.json couldn't be edited safely."),r,T.id);let Y=(0,s.U)(X,N);if(!(0,s.c)(Y,U))return f(b("Refused: the PR branch would be the default branch."),r,T.id);let Q=await (0,h.x)(T.token,O.fullName,O.owner,Y,U,L);if(Q.ok&&Q.data)return{ok:!0,message:`Pull request #${Q.data.number} for these updates is already open.`};let ee=await (0,h.e)(T.token,O.fullName,L);if(!ee.ok)return f({done:!1,failed:ee,audit:{message:`Package update PR failed \xb7 ${O.app}`,resourceId:i}},r,T.id);if(ee.data.length){let e=new Map((await (0,a.f)().select({number:n.dependencyPrs.number,packages:n.dependencyPrs.packages}).from(n.dependencyPrs).where((0,t.b)((0,t.u)(n.dependencyPrs.repoId,p),(0,t.y)(n.dependencyPrs.number,ee.data.map(e=>e.number))))).map(e=>[e.number,e.packages])),i=(0,o.U)(X.map(e=>e.package),ee.data.map(t=>({number:t.number,branch:t.branch,title:t.title,packages:e.get(t.number)??null})),N);if(i)return f(b(`Pull request #${i.number} for the same package is already open in ${O.app}. Merge or close it first.`),r,T.id)}let et=await (0,h.M)(T.token,O.fullName,Y,L);if(et.ok&&et.data)return f(b(`Branch ${Y} already exists without an open pull request. Delete it on GitHub, then ask again.`),r,T.id);let er=O.lockfilePath??(N?(0,u.H)(N,"package-lock.json"):null),ea=d.a.find(e=>e.path===er?.split("/").pop())?.kind??null,en=e=>f({done:!1,failed:e,audit:{message:`Package update PR failed \xb7 ${O.app} \xb7 ${Y}`,resourceId:i}},r,T.id),ei=await (0,h.k)(T.token,O.fullName,Y,F.data,U,L);if(!ei.ok)return en(ei);let eo=await (0,h.D)(T.token,O.fullName,Y,U,Z,J.data.sha,(0,s.G)(X),L,D);if(!eo.ok)return en(eo);let es=(0,s.f)(X,N),el=(G?`> [!WARNING]
2
2
  > ${G} Check where production is built from before you merge; Watchbell won't merge this pull request itself.
3
3
 
4
- `:"")+(0,s.y)(X,ea,!!E,N),eu=await (0,h.y)(T.token,O.fullName,Y,U,es,el,L,{draft:!!G}),ed=!!G;if(G&&!eu.ok&&422===eu.status&&(eu=await (0,h.y)(T.token,O.fullName,Y,U,es,el,L),ed=!1),!eu.ok)return en(eu);let ec=G?ed?` Opened as a draft: ${G}`:` Opened as a normal pull request (this repository can't have drafts), with the warning on top: ${G}`:"",ep=X.map(e=>`${e.package} ${e.from} → ${e.to}`).join(", "),ef=await (0,h.M)(T.token,O.fullName,Y,L).catch(()=>null),em=!1;if(ef?.ok&&ef.data){await (0,a.f)().insert(n.dependencyPrs).values({repoId:p,appId:i,proposalId:K??null,number:eu.data.number,branch:Y,baseBranch:U,headSha:ef.data,title:es.slice(0,200),packages:X.map(e=>e.package),auto:!!E,stage:"checks",stageText:(0,c.m)(eu.data.number,"checks")}).onConflictDoNothing().catch(()=>console.warn("deps: recording the PR failed"));let{extensions:t}=await e.A(774810),r=await t.runner?.queueLockfileJob({repoId:p,branch:Y,headSha:ef.data,prNumber:eu.data.number,lockfilePath:er,targets:X.map(e=>({name:e.package,version:e.fixed}))}).catch(()=>(console.warn("deps: queueing the lockfile job failed"),null)),o=await (0,w.U)(T.token,{repo:O.fullName,branch:Y,lockfilePath:er,prNumber:eu.data.number});em=r?.queued===!0||o.sent}return f({done:!0,message:`Pull request #${eu.data.number} opened for ${O.app}: ${ep}.${em?"":` Run npm install${N?` in ${N}`:""} on the branch before merging.`}${ec}`,audit:{message:`Package update PR opened \xb7 ${O.app} \xb7 #${eu.data.number}`,resourceId:i,detail:ep}},r,T.id)}async function j(e,t,r){if(!(0,m.f)(e)||r&&!(0,m.f)(r.appId))return{ok:!1,why:"target"};let a=await v();if(!a||"unreadable"===a)return{ok:!1,why:"no write token"};let n=r?await I(r.appId):await A(e);if(!n)return{ok:!1,why:"nothing"};let i=(0,o.a)(n.upgrades,n.installed,t);return i.ok?{ok:!0}:{ok:!1,why:i.why}}async function S(e,r){let i=e.filter(e=>(0,m.f)(e.appId)&&(0,m.f)(e.repoId)),o=new Map;if(!i.length)return o;let s=await (0,a.f)().select({appId:n.appRepos.appId,repoId:n.appRepos.repoId,meta:n.resources.meta,defaultBranch:n.githubRepos.defaultBranch}).from(n.appRepos).innerJoin(n.resources,(0,t.u)(n.resources.id,n.appRepos.appId)).innerJoin(n.githubRepos,(0,t.u)(n.githubRepos.id,n.appRepos.repoId)).where((0,t.y)(n.appRepos.appId,[...new Set(i.map(e=>e.appId))])).limit(4*i.length);for(let e of i){let t=s.find(t=>t.appId===e.appId&&t.repoId===e.repoId),a=t?.meta??{},n=t?(0,g.B)(a.productionSource,(0,g.q)(a,t.defaultBranch??null),r):null;n&&o.set(e.appId,n)}return o}async function _(e,r=[]){let i=e.filter(m.f),o=new Map;if(!i.length)return o;let s=await (0,a.f)().select({appId:n.appRepos.appId,repoId:n.appRepos.repoId,version:n.appSecurity.version,status:n.appSecurity.status,findings:n.appSecurity.findings}).from(n.appRepos).innerJoin(n.githubRepos,(0,t.u)(n.githubRepos.id,n.appRepos.repoId)).innerJoin(n.appSecurity,(0,t.u)(n.appSecurity.resourceId,n.appRepos.appId)).where((0,t.b)((0,t.y)(n.appRepos.appId,i),(0,t.M)(n.githubRepos.goneAt),(0,t.u)(n.appSecurity.status,"vulnerable"))).limit(i.length),u=new Set(r),d=s.filter(e=>u.has(e.appId)),c=d.length?new Set((await (0,a.f)().selectDistinct({repoId:n.dependencyVulns.repoId}).from(n.dependencyVulns).where((0,t.b)((0,t.y)(n.dependencyVulns.repoId,[...new Set(d.map(e=>e.repoId))]),(0,t.M)(n.dependencyVulns.resolvedAt),(0,t.u)(n.dependencyVulns.package,"next"),(0,t.u)(n.dependencyVulns.direct,!0),(0,t.E)(n.dependencyVulns.fixedVersion))).limit(d.length)).map(e=>e.repoId)):new Set;for(let e of s){if(u.has(e.appId)&&c.has(e.repoId))continue;let t=(0,l.p)({version:e.version,status:e.status,findings:Array.isArray(e.findings)?e.findings:[]});t&&o.set(e.appId,{repoId:e.repoId,from:t.from,to:t.to})}return o}e.s(["J",0,j,"W",0,x,"h",0,_,"H",0,S,"G",0,v])},983128,860320,e=>{var t=e.i(875225),r=e.i(924924),a=e.i(618916),n=e.i(921991),i=e.i(547499),o=e.i(666680),s=e.i(140561),l=e.i(206033),u=e.i(105954),d=e.i(971724),c=e.i(180473),p=e.i(76012);let f={inline_keyboard:[]},m=0,g=e=>(0,o.createHash)("sha256").update(`watchpost:telegram-link:${e.trim().toUpperCase()}`,"utf8").digest("hex"),h=s.z.union([l.z.number().int(),u.z.string().regex(/^-?\d{1,20}$/)]).transform(e=>String(e)),k=d.z.object({id:h,type:u.z.string().max(32).optional(),title:u.z.string().max(256).optional(),first_name:u.z.string().max(256).optional(),username:u.z.string().max(64).optional()}),y=d.z.object({id:h,is_bot:c.z.boolean().optional()}),w=d.z.object({message_id:l.z.number().int(),chat:k,from:y.optional(),text:u.z.string().max(4096).optional()}),b=d.z.object({update_id:l.z.number().int(),message:w.optional(),callback_query:d.z.object({id:u.z.string().min(1).max(128),from:y,message:w.optional(),data:u.z.string().max(64).optional()}).optional()});e.s(["i",0,8,"y",0,function(e,t={}){let r=t.fetch??fetch,a=async(t,a)=>{let n=await (0,p.z)(e,t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)},r);n.ok||/not modified/i.test(n.description)||console.warn(`telegram ${t} failed (${n.code??"network"})`)};return{answer:(e,t)=>a("answerCallbackQuery",{callback_query_id:e,text:t.slice(0,200)}),editText:(e,t,r,n)=>a("editMessageText",{chat_id:e,message_id:t,text:r,parse_mode:"HTML",link_preview_options:{is_disabled:!0},reply_markup:n??f}),editKeyboard:(e,t,r)=>a("editMessageReplyMarkup",{chat_id:e,message_id:t,reply_markup:r}),send:(e,t)=>a("sendMessage",{chat_id:e,text:t,parse_mode:"HTML",link_preview_options:{is_disabled:!0}})}},"v",0,e=>`${(e.title??e.first_name??e.username??"Chat").slice(0,50)} (${e.type??"chat"})`,"F",0,g,"z",0,()=>{m++},"j",0,function(e){let t=/^\/link(?:@[A-Za-z0-9_]{3,64})?\s+([A-Za-z0-9]{4,16})\s*$/.exec(e??"");return t?t[1].toUpperCase():null},"c",0,function(e){let t=b.safeParse(e);return t.success?t.data:null},"p",0,function(e,t){if("string"!=typeof e||"string"!=typeof t||!e||!t)return!1;let r=(0,o.createHash)("sha256").update(e,"utf8").digest(),a=(0,o.createHash)("sha256").update(t,"utf8").digest();return(0,o.timingSafeEqual)(r,a)}],860320);let v="telegram.owner",$="telegram.linkCode",I="telegram.seenChats",A=()=>(0,i.f)().OPS_ENCRYPTION_KEY;async function R(e){let[n]=await (0,r.f)().select({value:a.settings.value}).from(a.settings).where((0,t.u)(a.settings.key,e)).limit(1);return n?.value??null}async function x(e,t){await (0,r.f)().insert(a.settings).values({key:e,value:t}).onConflictDoUpdate({target:a.settings.key,set:{value:t,updatedAt:new Date}})}async function j(e){await (0,r.f)().delete(a.settings).where((0,t.u)(a.settings.key,e))}function S(e){let t=e?.sealed;if(!t||"string"!=typeof t.ciphertext||"string"!=typeof t.iv)return null;try{return(0,n.K)(t,A())}catch{return null}}let _=(e,t)=>({sealed:(0,n.l)(e,A()),at:t.toISOString()}),T=null;async function O(e=Date.now()){if(T&&T.until>e)return T.secret;let t=S(await R("telegram.webhook"));return T={secret:t,until:e+3e4},t}let P=async()=>await O()!==null;async function M(){let e,n=S(await R(v));if(!n)return null;try{e=JSON.parse(n)}catch{return null}if("string"!=typeof e.tg||"string"!=typeof e.member)return null;let[i]=await (0,r.f)().select({id:a.members.id,userId:a.members.userId}).from(a.members).where((0,t.b)((0,t.u)(a.members.id,e.member),(0,t.u)(a.members.role,"owner"))).limit(1);return i?{telegramUserId:e.tg,memberId:i.id,userId:i.userId}:null}let N=async()=>await M()!==null;async function D(e,n,i){let o=await R($);if(!o||"string"!=typeof o.hash||"string"!=typeof o.member||"string"!=typeof o.expiresAt)return"expired";if(Date.parse(o.expiresAt)<=i.getTime())return await j($),"expired";let s="number"==typeof o.tries?o.tries:0;if(!function(e,t){if(e.length!==t.length||!e)return!1;let r=0;for(let a=0;a<e.length;a++)r|=e.charCodeAt(a)^t.charCodeAt(a);return 0===r}(8===e.length?g(e):"",o.hash))return s+1>=5?await j($):await x($,{...o,tries:s+1}),"wrong";let[l]=await (0,r.f)().select({id:a.members.id}).from(a.members).where((0,t.b)((0,t.u)(a.members.id,o.member),(0,t.u)(a.members.role,"owner"))).limit(1);return(await j($),l)?(await x(v,_(JSON.stringify({tg:n,member:l.id}),i)),"linked"):"expired"}async function z(){let e=S(await R(I));if(!e)return[];try{let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>!!e&&"string"==typeof e.id&&"string"==typeof e.label&&"string"==typeof e.at).slice(0,10):[]}catch{return[]}}async function C(e,t){var r;let a,n=(r=await z(),(a=r.find(t=>t.id===e.id))&&a.label===e.label&&t.getTime()-Date.parse(a.at)<36e5&&r[0]?.id===e.id?null:[{id:e.id,label:e.label,at:t.toISOString()},...r.filter(t=>t.id!==e.id)].slice(0,10));n&&await x(I,_(JSON.stringify(n),t))}e.s(["E",0,M,"I",0,N,"P",0,C,"f",0,D,"v",0,P,"g",0,O],983128)},620511,e=>{let t=/^[A-Za-z0-9-]{1,39}\/[A-Za-z0-9._-]{1,100}$/,r=/^watchpost\/deps-[0-9a-f]{8}$/,a=/^(?:[A-Za-z0-9._-]+\/){0,4}package-lock\.json$/,n=e=>"string"==typeof e&&t.test(e)&&!e.includes("..");e.s(["h",0,"deps.lockfileActions","w",0,6e5,"C",0,function(e){let t=e.lockfilePath??"package-lock.json";return!n(e.repo)||!r.test(e.branch)||!a.test(t)||t.includes("..")||!Number.isInteger(e.prNumber)||e.prNumber<1?null:{repo:e.repo,branch:e.branch,lockfile:t,pr:e.prNumber}},"g",0,function(e){let t=e&&"object"==typeof e&&!Array.isArray(e)?e.repo:null;return{repo:n(t)?t:null}}])},975912,e=>{var t=e.i(250474),r=e.i(32391),a=e.i(313931);let n=["dependencies","devDependencies","optionalDependencies"],i="watchpost/deps-",o=e=>"object"==typeof e&&null!==e&&!Array.isArray(e),s=e=>{let t=e.filter(e=>!e.companionOf);return t.length?t:e},l={npm:"npm install",pnpm:"pnpm install",yarn:"yarn install",bun:"bun install","package-json":"npm install"};e.s(["M",0,function(e,t){let r;try{r=JSON.parse(e)}catch{return null}if(!o(r))return null;for(let e of t){let t=r[e.group];if(!o(t)||t[e.package]!==e.from)return null;t[e.package]=e.to}let a=/^[{[]\r?\n([ \t]+)\S/.exec(e),n=a?a[1]:" ",i=e.includes("\r\n")?"\r\n":"\n",s=JSON.stringify(r,null,n);return"\r\n"===i&&(s=s.replace(/\n/g,"\r\n")),/\r?\n$/.test(e)?s+i:s},"U",0,function(e,t=null){let r=e.map(e=>`${e.package}@${e.to}`).sort().join(",");return`${i}${function(e){let t=0x811c9dc5;for(let r=0;r<e.length;r++)t^=e.charCodeAt(r),t=Math.imul(t,0x1000193)>>>0;return t.toString(16).padStart(8,"0")}(t?`${t}|${r}`:r)}`},"G",0,function(e){let t=s(e);return 1===t.length?`chore(deps): update ${t[0].package} to ${t[0].fixed} (security fix)`:`chore(deps): update ${t.length} packages for security fixes`},"c",0,(e,t)=>e.startsWith(i)&&/^watchpost\/deps-[0-9a-f]{8}$/.test(e)&&e!==t,"k",0,function(e,a){let i;try{i=JSON.parse(e)}catch{return null}if(!o(i))return null;let s=[];for(let e of a)if((0,r.L)(e.package)&&(0,r.C)(e.to))for(let a of n){let n=i[a];if(!o(n)||"string"!=typeof n[e.package])continue;let l=n[e.package],u=(0,r.Y)(l),d=function(e,t){let a=/^\s*(\^|~|>=|=)?\s*v?\d+(?:\.(?:\d+|x|\*))?(?:\.(?:\d+|x|\*))?(?:-[0-9A-Za-z.-]+)?\s*$/.exec(e);return a&&(0,r.C)(t)?`${a[1]??""}${t}`:null}(l,e.to);!u||!d||(0,t.f)(u,e.to)>=0||s.push({package:e.package,group:a,from:l,to:d,fixed:e.to,vulnIds:e.vulnIds,cves:e.cves,...e.companionOf?{companionOf:e.companionOf}:{}})}return s},"y",0,function(e,t,r=!1,n=null){let i=l[t??"npm"]??"npm install",o=`run \`${i}\`${n?` in \`${n}\``:""}`,s=e.filter(e=>!e.companionOf),u=e.filter(e=>e.companionOf),d=s.map(e=>{let t=[...e.cves,...e.vulnIds.filter(t=>!e.cves.includes(t))].slice(0,4).map(e=>`[${e}](https://osv.dev/vulnerability/${encodeURIComponent(e)})`).join(", ");return`| \`${e.package}\` | \`${e.from}\` | \`${e.to}\` | ${t||"-"} |`});return[r?"This PR was opened **automatically** by Watchbell (Automatic security fixes). Watchbell merges it itself when CI is green, the Vercel preview is READY and passes the smoke test, and auto-rollback is on; if anything fails, the PR stays open for you to check.":a.J.prApproved,"","These packages have known vulnerabilities (source: OSV.dev / GitHub Advisory) and a fixed version exists:","","| Package | Current version | New version | Advisory |","| --- | --- | --- | --- |",...d,"",...u.map(e=>`Updated to match ${e.companionOf} (no advisory of its own): \`${e.package}\` \`${e.from}\` → \`${e.to}\`.`),...u.length?[""]:[],"### Important: the lockfile is not updated","",r?`Watchbell only changes \`package.json\`; it can't regenerate the lockfile on the server. Vercel installs the new version at build time, so production is safe after the merge. Afterwards ${o} on the main branch and commit the lockfile to bring it up to date.`:`Watchbell only changes \`package.json\`; it can't regenerate the lockfile on the server. Before merging, check out this branch, ${o}, then commit the changed lockfile. Then make sure the build and tests still pass.`,"","Vulnerable packages that are only installed through other packages (transitive) are not changed here; check with `npm audit` after installing.","","_Nothing is pushed to the main branch: all changes are on this PR branch._"].join("\n")},"f",0,function(e,t=null){let r=s(e),a=t?` in ${t}`:"",n=1===r.length?`Watchbell: update ${r[0].package} to ${r[0].fixed}${a} (security fix)`:`Watchbell: update ${r.length} vulnerable packages${a} (${r.slice(0,2).map(e=>e.package).join(", ")}${r.length>2?", …":""})`;return n.length>200?`${n.slice(0,199)}…`:n}])},256662,e=>{let t={checks:"waiting for CI",preview:"waiting for preview",smoke:"smoke test",merging:"merging…",merged:"merged ✅","ready-manual":"ready to merge (manual)",failed:"needs a look ⚠️",timeout:"needs a look ⚠️",closed:"closed"},r=new Set(["success","neutral","skipped"]),a=e=>"completed"!==e.status?"pending":r.has(e.conclusion??"")?"success":"failure",n={name:"watchbell[bot]",email:"watchbell-bot@users.noreply.github.com",message:"chore(deps): update package-lock.json (Watchbell)"},i={name:"watchpost[bot]",email:"watchpost-bot@users.noreply.github.com",message:"chore(deps): update package-lock.json (Watchpost)"},o=e=>[n,i].some(t=>e.name===t.name&&e.email.toLowerCase()===t.email&&e.message.trim()===t.message),s=/^[\^~]?[0-9][0-9A-Za-z.+-]*$/,l=e=>Array.isArray(e)?e.map(l):e&&"object"==typeof e?Object.fromEntries(Object.keys(e).sort().map(t=>[t,l(e[t])])):e,u=/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/,d=/^sha512-[A-Za-z0-9+/]{86}==$/,c="(?:@[a-z0-9][a-z0-9._~-]*/)?[a-z0-9][a-z0-9._~-]*",p=RegExp(`^(?:[A-Za-z0-9_-][A-Za-z0-9._-]*/)*?node_modules/${c}(?:/node_modules/${c})*$`,"i"),f=new Set(["dev","optional","devOptional","peer"]),m=e=>!!e&&"object"==typeof e&&!Array.isArray(e),g=e=>e.slice(e.lastIndexOf("node_modules/")+13),h=(e,t,r)=>`${e}/${t}/-/${t.split("/").pop()}-${r}.tgz`,k=(e,t)=>JSON.stringify(l(e))===JSON.stringify(l(t)),y=e=>Object.fromEntries(Object.entries(e).filter(([e])=>!f.has(e))),w=e=>{try{let t=JSON.parse(e);return m(t)&&m(t.packages)?t:null}catch{return null}};e.s(["y",0,20,"X",0,["checks","preview","smoke","merging"],"w",0,15e3,"R",0,27e5,"j",0,function(e){let t=(e.checkRuns??e.actionRuns??[]).map(a);return(e.combined&&e.combined.total>0&&t.push("success"===e.combined.state?"success":"pending"===e.combined.state?"pending":"failure"),t.includes("failure"))?"failure":t.includes("pending")?"pending":"success"},"L",0,function(e){if(!e.length||e.some(e=>e.authWall))return null;let t=e.find(e=>null===e.status||e.status<200||e.status>399);return t?{mode:"http",result:"fail",reason:null===t.status?`${t.path} didn't answer within 15 seconds`:`${t.path} answered ${t.status}`}:{mode:"http",result:"pass",reason:null}},"S",0,function(e,t,r){return(401===e||403===e)&&(/vercel\.com\/(sso|login)|Authentication Required|_vercel_sso|vercel-authentication/i.test(t)||/_vercel_sso/i.test(r.get("set-cookie")??"")||"vercel"===(r.get("server")??"").toLowerCase())},"T",0,function(e,t,r){if([e,t].some(e=>null!==e&&(e=>{if(e.length>0x1900000)return!0;if(3*e.length<=0x1900000)return!1;let t=0;for(let r=0;r<e.length;r++){let a=e.charCodeAt(r);a<128?t+=1:a<2048?t+=2:a>=55296&&a<56320&&(64512&e.charCodeAt(r+1))==56320?(t+=4,r++):t+=3}return t>0x1900000})(e)))return`lockfile too large to check (over 25 MB): ${r}`.slice(0,150);try{return function(e,t,r){let a=e=>`unexpected lockfile change ${e}`.slice(0,150),n=null===t?null:w(t),i=null===e?{packages:{}}:w(e);if(!n||!i)return a(r);if(2!==n.lockfileVersion&&3!==n.lockfileVersion||null!==e&&n.lockfileVersion!==i.lockfileVersion)return a("lockfileVersion");let o=new Set;for(let[e,t]of Object.entries(i.packages)){if(!p.test(e)||!m(t)||"string"!=typeof t.resolved||"string"!=typeof t.version)continue;let r=h("","string"==typeof t.name?t.name:g(e),t.version);t.resolved.startsWith("https://")&&t.resolved.endsWith(r)&&o.add(t.resolved.slice(0,-r.length))}for(let[e,t]of(o.size||o.add("https://registry.npmjs.org"),Object.entries(n.packages))){let n=Object.hasOwn(i.packages,e)?i.packages[e]:void 0;if(void 0!==n&&k(n,t))continue;let s=m(n)?n:null;if(""===e||!e.includes("node_modules/")){let n=""===e?m(t)&&"string"==typeof t.name?t.name:r:e;if(!m(t)||""!==e&&!s||"resolved"in t||"link"in t)return a(n);continue}if(!p.test(e)||!m(t))return a(p.test(e)?g(e):e);let l=g(e);if(void 0!==t.name&&t.name!==l&&(!s||s.name!==t.name))return a(l);let c="string"==typeof t.name?t.name:l,f=t.version;if(void 0!==t.link||"string"!=typeof f||!u.test(f)||"string"!=typeof t.integrity||!d.test(t.integrity)||"string"!=typeof t.resolved||![...o].some(e=>t.resolved===h(e,c,f))||s&&s.version===f&&!k(y(s),y(t)))return a(l)}return null}(e,t,r)}catch{return`unexpected lockfile change ${r} (couldn't be checked)`.slice(0,150)}},"H",0,e=>!!e.lockfileRequired&&!!e.lockfile&&!e.files.some(t=>t.filename===e.lockfile),"n",0,function(e,t,r){return null!==r&&r>0?{mode:"logs",result:"fail",reason:`${r} errors in the preview logs`}:t.getTime()-e.getTime()<18e4||null===r?{mode:"logs",result:"wait",reason:null}:{mode:"logs",result:"pass",reason:null}},"C",0,function(e,t,r){let a,n;try{a=JSON.parse(e),n=JSON.parse(t)}catch{return"unexpected change: package.json isn't valid JSON"}if(!a||!n||"object"!=typeof a||"object"!=typeof n)return"unexpected change: package.json isn't an object";let i=e=>{let t=structuredClone(e);for(let e of["dependencies","devDependencies"]){let a=t[e];if(a&&"object"==typeof a)for(let e of r)delete a[e]}return t};if(JSON.stringify(l(i(a)))!==JSON.stringify(l(i(n))))return"unexpected change in package.json beyond the bumped versions";for(let e of["dependencies","devDependencies"]){let t=a[e]??{},i=n[e]??{};for(let e of r){if(e in t!=e in i)return`unexpected change in package.json: ${e} added or removed`;if(e in i&&i[e]!==t[e]&&("string"!=typeof i[e]||!s.test(i[e])))return`unexpected change in package.json: ${e} isn't a plain version`}}return null},"E",0,function(e){let t=["/"];for(let r of e){let e;try{e=new URL(r).pathname||"/"}catch{continue}!t.includes(e)&&t.length<4&&t.push(e)}return t},"m",0,(e,r,a)=>{let n=`PR #${e}: ${t[r]}${a?` — ${a}`:""}`;return n.length>200?`${n.slice(0,199)}…`:n},"k",0,function(e){let t=new Set([e.manifest,...e.lockfile?[e.lockfile]:[]]);for(let r of e.files)for(let e of[r.filename,r.previous])if(e&&!t.has(e))return`unexpected change in ${e}`.slice(0,150);if(!e.files.some(t=>t.filename===e.manifest))return`unexpected change: ${e.manifest} isn't changed`.slice(0,150);if(e.manifestProblem)return e.manifestProblem.slice(0,150);if(e.lockfileProblem)return e.lockfileProblem.slice(0,150);if(!e.tokenLogin||!e.commits.length||e.commits.length>20)return"couldn't confirm who wrote the PR's commits";if(e.headSha&&e.commits[e.commits.length-1].sha!==e.headSha)return"the PR's head moved while it was checked";for(let t of e.commits){if(null!==t.login&&t.login.toLowerCase()===e.tokenLogin.toLowerCase())continue;let r=t.sha.slice(0,7);if(!o(t)||!t.files||!e.lockfile)return`unexpected commit ${r} by ${t.login??t.name}`.slice(0,150);let a=t.files.find(t=>t!==e.lockfile);if(a)return`unexpected change in ${a} by commit ${r}`.slice(0,150)}return null},"f",0,function(e,t){let r=e.getTime();return(null===t||!(r-t<1e5))&&(Math.floor(r/6e4)%2==0||null!==t&&r-t>=24e4)},"M",0,function(e){if(e.pr.merged)return{kind:"done",stage:"merged"};if("closed"===e.pr.state)return{kind:"done",stage:"closed"};if(void 0!==e.pr.base&&void 0!==e.recordedBase&&e.pr.base!==e.recordedBase)return{kind:"stop",stage:"failed",reason:`the PR's base changed to ${e.pr.base}`};if(e.pr.headSha!==e.recordedSha)return{kind:"wait",stage:"checks",reason:"new commit on the PR branch, checking again",resetSha:e.pr.headSha};let t=e.now.getTime()-e.openedAt.getTime()>27e5;return"failure"===e.checks?{kind:"stop",stage:"failed",reason:"CI failed"}:!1===e.pr.mergeable?{kind:"stop",stage:"failed",reason:"conflicts with the main branch"}:"error"===e.preview.state?{kind:"stop",stage:"failed",reason:"Vercel preview failed"}:"canceled"===e.preview.state?{kind:"stop",stage:"failed",reason:"Vercel canceled the preview (an Ignored Build Step that skips previews does this), so the update wasn't smoke-tested; check it and merge by hand"}:"pending"===e.checks||null===e.pr.mergeable?t?{kind:"stop",stage:"timeout",reason:"CI not finished within 45 minutes"}:{kind:"wait",stage:"checks",reason:null}:"ready"!==e.preview.state?t?{kind:"stop",stage:"timeout",reason:"preview not ready within 45 minutes"}:{kind:"wait",stage:"preview",reason:null}:e.smoke&&"wait"!==e.smoke.result?"fail"===e.smoke.result?{kind:"stop",stage:"failed",reason:`preview smoke test failed: ${e.smoke.reason??"?"}`}:e.autoRollbackOn?{kind:"merge"}:{kind:"stop",stage:"ready-manual",reason:"PR is ready to merge, but auto-rollback is off; merge it manually"}:t?{kind:"stop",stage:"timeout",reason:"preview smoke test not finished within 45 minutes"}:{kind:"wait",stage:"smoke",reason:null}}])},267841,e=>{var t=e.i(971724),r=e.i(105954),a=e.i(180473),n=e.i(600205),i=e.i(455744),o=e.i(206033),s=e.i(604147),l=e.i(975912),u=e.i(455037);async function d(e,t,r,a,n,i=!1){let o,s=n.timeoutMs??8e3;try{o=await (n.fetch??fetch)(`https://api.github.com${t}`,{method:e,headers:{Authorization:`Bearer ${r}`,Accept:i?"application/vnd.github.raw+json":"application/vnd.github+json","X-GitHub-Api-Version":"2022-11-28","User-Agent":"Watchbell",...void 0!==a?{"Content-Type":"application/json"}:{}},body:void 0!==a?JSON.stringify(a):void 0,signal:AbortSignal.timeout(s),cache:"no-store",redirect:"error"})}catch(e){return{ok:!1,kind:"transient",error:e instanceof DOMException&&("TimeoutError"===e.name||"AbortError"===e.name)?`GitHub didn't answer within ${Math.round(s/1e3)} seconds.`:"Couldn't reach GitHub."}}let l=await o.text().catch(()=>"");if(i&&o.ok)return{ok:!0,status:o.status,data:l};let u=null;try{u=l?JSON.parse(l):null}catch{u=null}if(o.ok)return{ok:!0,status:o.status,data:u};let c=o.status;return 401===c?{ok:!1,kind:"auth",status:c,error:"GitHub rejected the PR-write token (401). It may have expired or been revoked."}:429===c||403===c&&"0"===o.headers.get("x-ratelimit-remaining")?{ok:!1,kind:"transient",status:c,error:"GitHub's rate limit is used up for now. Try again later."}:403===c?{ok:!1,kind:"scope",status:c,error:"The GitHub PR-write token can't do this (403). It needs Contents and Pull requests: Read and write on this repository."}:404===c?{ok:!1,kind:"missing",status:c,error:"The PR-write token doesn't see this repository (404). Give it access to the repository."}:409===c||422===c?{ok:!1,kind:"format",status:c,error:`GitHub refused the change (${c}).`}:{ok:!1,kind:"transient",status:c,error:`GitHub returned an error (${c}).`}}let c=e=>({ok:!1,kind:"format",error:`GitHub answered ${e} in a format the console doesn't recognise.`}),p={ok:!1,kind:"format",error:"That isn't a repository or branch the console may write."};async function f(e,n,i={}){if(!(0,u.M)(n))return p;let o=await d("GET",`/repos/${(0,u.f)(n)}`,e,void 0,i);if(!o.ok)return o;let s=t.z.object({default_branch:r.z.string(),permissions:t.z.object({push:a.z.boolean()}).partial().optional()}).safeParse(o.data);return s.success&&(0,u.c)(s.data.default_branch)?{ok:!0,data:{defaultBranch:s.data.default_branch,canPush:s.data.permissions?.push??null}}:c("the repository")}async function m(e,a,n,i={}){if(!(0,u.M)(a)||!(0,u.c)(n))return p;let o=await d("GET",`/repos/${(0,u.f)(a)}/git/ref/heads/${n.split("/").map(encodeURIComponent).join("/")}`,e,void 0,i);if(!o.ok)return"missing"===o.kind?{ok:!0,data:null}:o;let s=t.z.object({object:t.z.object({sha:r.z.string().regex(/^[0-9a-f]{40}$/)})}).safeParse(o.data);return s.success?{ok:!0,data:s.data.object.sha}:c("the branch")}let g=/^(?:[A-Za-z0-9._-]{1,100}\/){0,6}package\.json$/,h=e=>g.test(e)&&!e.split("/").some(e=>"."===e||".."===e),k=(e,t)=>`/repos/${(0,u.f)(e)}/contents/${t.split("/").map(encodeURIComponent).join("/")}`;async function y(e,a,i,o={},s="package.json"){if(!(0,u.M)(a)||!(0,u.c)(i)||!h(s))return p;let l=await d("GET",`${k(a,s)}?ref=${encodeURIComponent(i)}`,e,void 0,o);if(!l.ok)return"missing"===l.kind?{ok:!0,data:null}:l;let f=t.z.object({sha:r.z.string(),encoding:n.z.literal("base64"),content:r.z.string()}).safeParse(l.data);return f.success?{ok:!0,data:{sha:f.data.sha,text:Buffer.from(f.data.content.replace(/\s/g,""),"base64").toString("utf8")}}:c("package.json")}let w=/^(?:[A-Za-z0-9._-]{1,100}\/){0,6}(?:package-lock|npm-shrinkwrap)\.json$/,b=e=>w.test(e)&&!e.split("/").some(e=>"."===e||".."===e);async function v(e,t,r,a,n={}){if(!(0,u.M)(t)||!(0,u.c)(r)||!b(a))return p;let i=await d("GET",`${k(t,a)}?ref=${encodeURIComponent(r)}`,e,void 0,{timeoutMs:2e4,...n},!0);return i.ok?"string"==typeof i.data?{ok:!0,data:i.data}:c("the lockfile"):"missing"===i.kind?{ok:!0,data:null}:i}let $=/^watchbell\/build-files-[0-9a-f]{8}$/,I=(e,t)=>(0,l.c)(e,t)||$.test(e)&&e!==t;async function A(e,t,r,a,n,i={}){if(!(0,u.M)(t)||!I(r,n)||!/^[0-9a-f]{40}$/.test(a))return p;let o=await d("POST",`/repos/${(0,u.f)(t)}/git/refs`,e,{ref:`refs/heads/${r}`,sha:a},i);return o.ok?{ok:!0,data:!0}:o}async function R(e,t,r,a,n,i,o,s={},c="package.json"){if(!(0,u.M)(t)||!(0,l.c)(r,a)||!h(c))return p;let f=await d("PUT",k(t,c),e,{message:o,content:Buffer.from(n,"utf8").toString("base64"),sha:i,branch:r},s);return f.ok?{ok:!0,data:!0}:f}let x=t.z.object({number:o.z.number(),html_url:r.z.string().startsWith("https://github.com/")});async function j(e,t,r,a,n,o={}){if(!(0,u.M)(t)||!(0,l.c)(a,n))return p;let s=new URLSearchParams({state:"open",head:`${r}:${a}`,per_page:"1"}),f=await d("GET",`/repos/${(0,u.f)(t)}/pulls?${s}`,e,void 0,o);if(!f.ok)return f;let m=i.z.array(x).safeParse(f.data);if(!m.success)return c("the pull requests");let g=m.data[0];return{ok:!0,data:g?{number:g.number,url:g.html_url}:null}}async function S(e,t,r,a,n,i,o={},s={}){if(!(0,u.M)(t)||!I(r,a)||!(0,u.c)(a))return p;let l=await d("POST",`/repos/${(0,u.f)(t)}/pulls`,e,{title:n,head:r,base:a,body:i,maintainer_can_modify:!0,...s.draft?{draft:!0}:{}},o);if(!l.ok)return l;let f=x.safeParse(l.data);return f.success?{ok:!0,data:{number:f.data.number,url:f.data.html_url}}:c("the new pull request")}let _=i.z.array(t.z.object({number:o.z.number(),title:r.z.string(),head:t.z.object({ref:r.z.string(),sha:r.z.string(),repo:t.z.object({full_name:r.z.string()}).nullable()}),base:t.z.object({ref:r.z.string()})}));async function T(e,t,r={}){if(!(0,u.M)(t))return p;let a=await d("GET",`/repos/${(0,u.f)(t)}/pulls?state=open&per_page=100`,e,void 0,r);if(!a.ok)return a;let n=_.safeParse(a.data);return n.success?{ok:!0,data:n.data.filter(e=>/^watchpost\/deps-[0-9a-f]{8}$/.test(e.head.ref)&&e.head.repo?.full_name===t).map(e=>({number:e.number,branch:e.head.ref,title:e.title,headSha:e.head.sha,base:e.base.ref}))}:c("the pull requests")}async function O(e,n,i,o={}){if(!(0,u.M)(n)||!Number.isInteger(i)||i<=0)return p;let l=await d("GET",`/repos/${(0,u.f)(n)}/pulls/${i}`,e,void 0,o);if(!l.ok)return l;let f=t.z.object({state:s.z.enum(["open","closed"]),merged:a.z.boolean().optional(),mergeable:a.z.boolean().nullable().optional(),head:t.z.object({ref:r.z.string(),sha:r.z.string().regex(/^[0-9a-f]{40}$/)}),base:t.z.object({ref:r.z.string()})}).safeParse(l.data);return f.success?{ok:!0,data:{state:f.data.state,merged:!0===f.data.merged,mergeable:f.data.mergeable??null,headSha:f.data.head.sha,branch:f.data.head.ref,base:f.data.base.ref}}:c("the pull request")}async function P(e,a,n,s={}){if(!(0,u.M)(a)||!/^[0-9a-f]{40}$/.test(n))return p;let[l,c]=await Promise.all([d("GET",`/repos/${(0,u.f)(a)}/commits/${n}/check-runs?per_page=100`,e,void 0,s),d("GET",`/repos/${(0,u.f)(a)}/commits/${n}/status`,e,void 0,s)]),f=e=>!e.ok&&("scope"===e.kind||"missing"===e.kind);if(!l.ok&&!f(l))return l;if(!c.ok&&!f(c))return c;let m=l.ok?t.z.object({check_runs:i.z.array(t.z.object({status:r.z.string(),conclusion:r.z.string().nullable()}))}).safeParse(l.data):null,g=c.ok?t.z.object({state:r.z.string(),total_count:o.z.number()}).safeParse(c.data):null;return{ok:!0,data:{checkRuns:m?.success?m.data.check_runs.map(e=>({status:e.status,conclusion:e.conclusion})):null,combined:g?.success?{state:g.data.state,total:g.data.total_count}:null}}}async function M(e,n,i,o,s,f,m,g={}){if(!(0,u.M)(n)||!(0,l.c)(o,s)||!/^[0-9a-f]{40}$/.test(f)||!Number.isInteger(i)||i<=0)return p;let h=await d("PUT",`/repos/${(0,u.f)(n)}/pulls/${i}/merge`,e,{merge_method:"squash",sha:f,commit_title:`Watchbell: ${m.replace(/^Watch(?:bell|post):\s*/,"")}`.slice(0,250)},g);if(!h.ok)return 405===h.status?{ok:!1,kind:"format",status:405,error:"GitHub says the PR can't be merged now (405)."}:409===h.status?{ok:!1,kind:"format",status:409,error:"The PR's head moved since the checks were read (409)."}:h;let k=t.z.object({merged:a.z.boolean(),sha:r.z.string()}).safeParse(h.data);return k.success&&k.data.merged?{ok:!0,data:{sha:k.data.sha}}:c("the merge")}async function N(e,a,n,o={}){if(!(0,u.M)(a)||!Number.isInteger(n)||n<=0)return p;let s=await d("GET",`/repos/${(0,u.f)(a)}/pulls/${n}/files?per_page=100`,e,void 0,o);if(!s.ok)return s;let l=i.z.array(t.z.object({filename:r.z.string(),previous_filename:r.z.string().optional()})).safeParse(s.data);return l.success?{ok:!0,data:l.data.map(e=>({filename:e.filename,previous:e.previous_filename??null}))}:c("the PR's files")}let D=t.z.object({name:r.z.string().optional(),email:r.z.string().optional()}).nullable().optional();async function z(e,a,n,o={}){if(!(0,u.M)(a)||!Number.isInteger(n)||n<=0)return p;let s=await d("GET",`/repos/${(0,u.f)(a)}/pulls/${n}/commits?per_page=100`,e,void 0,o);if(!s.ok)return s;let l=i.z.array(t.z.object({sha:r.z.string().regex(/^[0-9a-f]{40}$/),author:t.z.object({login:r.z.string()}).nullable().optional(),commit:t.z.object({message:r.z.string(),author:D})})).safeParse(s.data);return l.success?{ok:!0,data:l.data.map(e=>({sha:e.sha,login:e.author?.login??null,name:e.commit.author?.name??"",email:e.commit.author?.email??"",message:e.commit.message}))}:c("the PR's commits")}async function C(e,a,n,o={}){if(!(0,u.M)(a)||!/^[0-9a-f]{40}$/.test(n))return p;let s=await d("GET",`/repos/${(0,u.f)(a)}/commits/${n}`,e,void 0,o);if(!s.ok)return s;let l=t.z.object({files:i.z.array(t.z.object({filename:r.z.string(),previous_filename:r.z.string().optional()}))}).safeParse(s.data);return l.success?{ok:!0,data:l.data.files.flatMap(e=>[e.filename,...e.previous_filename?[e.previous_filename]:[]])}:c("the commit")}async function E(e,a={}){let n=await d("GET","/user",e,void 0,a);if(!n.ok)return n;let i=t.z.object({login:r.z.string().min(1)}).safeParse(n.data);return i.success?{ok:!0,data:i.data.login}:c("the token's user")}async function K(e,t,r,a={}){if(!/^[A-Za-z0-9-]{1,39}\/[A-Za-z0-9._-]{1,100}$/.test(t))return p;let n=await d("POST",`/repos/${t}/dispatches`,e,{event_type:"watchpost-lockfile",client_payload:r},a);return n.ok?{ok:!0,data:!0}:n}e.s(["M",0,m,"s",0,P,"h",0,C,"k",0,A,"y",0,S,"B",0,K,"$",0,b,"l",0,v,"E",0,y,"C",0,M,"x",0,j,"e",0,T,"P",0,z,"O",0,N,"b",0,O,"D",0,R,"H",0,f,"z",0,E])},154586,e=>{var t=e.i(278619),r=e.i(313931);let a={workloads:"Workloads",databases:"Databases",network:"Network",observe:"Observe",ai:"AI & API",admin:"Administration"},n={MonitorDown:"workloads",HighLatency:"workloads",DeploymentFailed:"workloads",DatabasePaused:"databases",StorageAlmostFull:"databases",NeonComputeHigh:"databases",FirestoreQuotaHigh:"databases",AutoPauseRisk:"databases",ComputeHigh:"databases",DbQuotaHigh:"databases",CertExpiringSoon:"network",DomainExpiringSoon:"network",DnsProxiedToVercel:"network",CollectorStale:"observe",CredentialExpiring:"admin",VulnerableDependency:"workloads",FrameworkVulnerable:"workloads",MonitorDomainMoved:"workloads",CiFailing:"workloads",OsSecurityUpdate:"observe"},i=new Set(["MonitorDown","HighLatency","DeploymentFailed","VulnerableDependency","FrameworkVulnerable","MonitorDomainMoved","CiFailing"]);e.s(["p",0,function(e){if((0,t.h)(e.ruleKey))return i.has(e.ruleKey)&&null!==e.resourceKind&&"app"!==e.resourceKind?"observe":n[e.ruleKey];let r=new Set(e.ruleKey.replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/([A-Z]+)([A-Z][a-z])/g,"$1 $2").toLowerCase().split(/[^a-z0-9]+/).filter(Boolean)),a=(...e)=>e.some(e=>r.has(e));return a("ai","router","gateway","model","models","provider","quota","llm","gemini")?"ai":a("key","keys","member","members","security","audit","credential","credentials","mfa","token")?"admin":a("database","db","storage","compute","neon","supabase","firestore","firebase")?"databases":a("domain","domains","dns","cert","certificate","tls","zone")?"network":"app"===e.resourceKind?"workloads":"observe"},"y",0,e=>r.X.proposedBy(a[e])])},549419,143926,e=>{var t=e.i(635982),r=e.i(377489),a=e.i(154586),n=e.i(365156),i=e.i(588492);let o=["LogErrorSpike","LogErrors","LogDbErrors"],s="timeout|ECONNREFUSED|too many connections|terminating connection|connection terminated|endpoint is disabled|compute.*suspend";RegExp(s,"i");let l=/^dpl_[A-Za-z0-9]{8,40}$/,u=/^ep-[a-z0-9-]{3,60}$/,d=/^[a-z0-9]{8,40}$/;function c(e,a,n){let i=a?(0,t.g)(a,n,120):"";return(0,r.l)((0,t.g)(i?`${e}. Most common: ${i}`:e,n,r.j)||e,r.j)}let p=e=>`${e.ruleKey}:${e.resourceId??""}:${e.action}`,f=new Set(["pending","approved","running"]);e.s(["s",0,864e5,"b",0,72e5,"V",0,3,"N",0,s,"G",0,20,"T",0,o,"v",0,72e5,"H",0,18e5,"w",0,10,"I",0,72e5,"x",0,function(e,t,r){let a=new Set(t.filter(e=>f.has(e.status)||null!==e.closedAt&&r.getTime()-e.closedAt.getTime()<72e5).map(p)),n=new Set;return e.filter(e=>{let t=p(e);return!(a.has(t)||n.has(t))&&(n.add(t),!0)})},"t",0,function(e,t,o){return(function(e,t,a){let n=[],o=a.getTime(),s=null!==e.liveAt&&o-e.liveAt.getTime()<72e5&&e.liveAt.getTime()<=o,p=e.previousNext?.status??"unknown";if(s&&e.errorsSinceLive>=Math.max(10,Math.ceil(5*e.baselineErrors/24))&&e.currentId&&e.previousId&&l.test(e.previousId)&&e.previousId!==e.currentId&&"vulnerable"!==p){let a=c(`${e.errorsSinceLive} errors since the deploy went live ${Math.max(1,Math.round((o-e.liveAt.getTime())/6e4))} min ago (${e.baselineErrors} in the 24 h before)`,e.topSinceLive,t);n.push({ruleKey:"LogErrorSpike",room:"workloads",action:"vercel_rollback",resourceKind:"app",resourceId:e.appId,targetRef:e.previousId,reason:"ok"===p?a:(0,r.l)(`${i.B} ${a}`)})}let f=null!==e.lastDeployAt&&o-e.lastDeployAt.getTime()<72e5;if(e.errors30>=20&&!f&&e.httpMonitorId&&n.push({ruleKey:"LogErrors",room:"workloads",action:"recheck",resourceKind:"app",resourceId:e.appId,targetRef:e.httpMonitorId,reason:c(`${e.errors30} errors in the last 30 min`,e.top30,t)}),e.dbErrors30>=3&&e.db){let r=c(`${e.dbErrors30} database connection errors in the last 30 min`,e.topDb,t),a=e.db;("neon_project"===a.kind||"neon_branch"===a.kind)&&a.wakeEndpoint&&u.test(a.wakeEndpoint)?n.push({ruleKey:"LogDbErrors",room:"databases",action:"neon_wake",resourceKind:a.kind,resourceId:a.resourceId,targetRef:a.wakeEndpoint,reason:r}):"supabase_project"===a.kind&&a.supabasePaused&&a.supabaseRef&&d.test(a.supabaseRef)&&n.push({ruleKey:"LogDbErrors",room:"databases",action:"supabase_restore",resourceKind:a.kind,resourceId:a.resourceId,targetRef:a.supabaseRef,reason:r})}return n})(e,t,o).map(i=>{let s="app"===i.resourceKind?(0,r.J)("app",e.appId,e.appName,t):(0,r.J)(i.resourceKind,i.resourceId,null,t);return{alertId:null,ruleKey:i.ruleKey,room:i.room,action:i.action,risk:n.H[i.action].risk,title:(0,r.M)(i.action,s),reason:i.reason,resourceKind:i.resourceKind,resourceId:i.resourceId,resourceName:s,targetRef:i.targetRef,proposedBy:(0,a.y)(i.room),expiresAt:new Date(o.getTime()+n.V)}})},"D",0,function(e,t){let r=e.getTime();return(null===t||!(r-t<27e4))&&(Math.floor(r/6e4)%5==0||null!==t&&r-t>=6e5)},"W",0,function(e,t){let r=new Set(t.map(p));return e.filter(e=>{let t;return"pending"===e.status&&(t=e.ruleKey,o.includes(t))&&!r.has(p(e))}).map(e=>e.id)}],549419);let m=new Set(["MonitorDown","LogErrorSpike"]);e.s(["r",0,72e5,"M",0,m,"s",0,function(e,t){let r=e=>({ok:!1,why:e});if(!e.setting.enabled)return r("off");if(!e.ruleKey||!m.has(e.ruleKey))return r("rule");let a=e.deploy;if(!a||!a.liveAt)return r("no live deploy");let n=t.getTime()-a.liveAt.getTime();return n<0||n>6e4*e.setting.windowMin?r("outside the window"):a.previousId&&e.targetRef===a.previousId&&a.previousId!==a.currentId?a.newestProdCreatedAt&&a.currentCreatedAt.getTime()<a.newestProdCreatedAt.getTime()?r("live deploy is a rollback"):e.rolledOrPromotedLately?r("live deploy came from a rollback or promote"):"ready"!==(a.previousState??"").toLowerCase()?r("previous not ready"):!a.previousCreatedAt||t.getTime()-a.previousCreatedAt.getTime()>2592e6?r("previous too old"):"vulnerable"===e.previousNext?r("previous Next.js has advisories"):"ok"!==e.previousNext?r("previous Next.js unknown"):e.autoLately?r("auto-rollback within 2 h"):e.sameDeployBefore?r("already rolled back once"):e.inFlight?r("another auto-rollback is running"):{ok:!0}:r("target changed")},"u",0,(e,t,a)=>(0,r.l)(`Automatic: the new deploy ${e} errored in the first ${t} minutes. ${a}`),"E",0,e=>e.currentSha&&/^[0-9a-f]{7,40}$/i.test(e.currentSha)?e.currentSha.slice(0,7):e.currentId.slice(0,16)],143926)},447933,e=>{let t;var r,a=e.i(875225),n=e.i(349129),i=e.i(518899),o=e.i(924924),s=e.i(313931),l=e.i(618916),u=e.i(209576),d=e.i(532148),c=e.i(433609),p=e.i(111970),f=e.i(154491),m=e.i(125160),g=e.i(984125),h=e.i(764766),k=e.i(326003),y=e.i(298397),w=e.i(291029),b=e.i(377489),v=e.i(549419),$=e.i(143926),I=e.i(442565),A=e.i(895625),R=e.i(547499),x=e.i(407602),j=e.i(582931),S=e.i(629955),_=e.i(309055),T=e.i(195191);async function O(e,t=_.q){let r,[n]=await (0,o.f)().select({m:l.monitors,appName:l.resources.name,appMeta:l.resources.meta}).from(l.monitors).innerJoin(l.resources,(0,a.u)(l.resources.id,l.monitors.resourceId)).where((0,a.u)(l.monitors.id,e)).limit(1);if(!n)return{ok:!1,error:"That monitor no longer exists."};if("heartbeat"===n.m.kind)return{ok:!1,error:"That monitor is a heartbeat; it has no address to update."};let i=await (0,o.f)().select({id:l.resources.id,name:l.resources.name,meta:l.resources.meta}).from(l.resources).where((0,a.b)((0,a.u)(l.resources.kind,"app"),(0,a.u)(l.resources.monitored,!0),(0,a.M)(l.resources.goneAt),(0,a.c)(l.resources.id,n.m.resourceId))).limit(500),s=(0,h.u)(n.m.url,{name:n.appName,meta:n.appMeta},i,{lastError:n.m.lastError});if(!s)return{ok:!1,error:"Nothing shows this monitor's domain moved (it is still the app's, or never was), so there is nothing to update."};try{r=(0,h.w)(n.m.url,s.to)}catch{return{ok:!1,error:"The app's domain isn't a valid host name, so the monitor was left as it is."}}let u=await t(e,{url:r,expectedStatus:n.m.expectedStatus,timeoutMs:n.m.timeoutMs,bodyContains:n.m.bodyContains,jsonPath:n.m.jsonPath,jsonEquals:n.m.jsonEquals});return u.ok?{ok:!0,message:`Monitor now checks ${r}.`,audit:{message:`Monitor moved to the app's new domain: ${(0,T.F)(r)}`,detail:`was ${(0,T.F)(n.m.url)}`,resourceId:n.m.resourceId}}:u}var P=e.i(145647),M=e.i(479301);async function N(e){if(!(0,M.f)(e))return null;let[t]=await (0,o.f)().select({id:l.resources.id,kind:l.resources.kind,externalId:l.resources.externalId,parentId:l.resources.parentId}).from(l.resources).where((0,a.b)((0,a.u)(l.resources.id,e),(0,a.y)(l.resources.kind,["neon_project","neon_branch"]),(0,a.M)(l.resources.goneAt))).limit(1);if(!t)return null;let r="neon_branch"===t.kind?t.parentId:t.id;if(!r)return null;let[n]=await (0,o.f)().select({data:l.snapshots.data}).from(l.snapshots).where((0,a.u)(l.snapshots.resourceId,r)).limit(1),i=(0,k.k)(k.s,n?.data);return{projectResourceId:r,branchExternalId:"neon_branch"===t.kind?t.externalId:null,computeSeconds:i.computeSeconds??null,periodEnd:i.periodEnd??null}}var D=e.i(472832),z=e.i(800366),C=e.i(628448),E=e.i(443917);let K=`This project used its ${z.a.cuHours} CU-hours; the compute won't start until the quota resets.`;async function H(e,t,r){var a;if(a=new Date,!((t.computeSeconds??0)<3600*z.a.cuHours)&&(!t.periodEnd||new Date(t.periodEnd).getTime()>a.getTime()))return{done:!1,message:K};let n=e.resource.externalId,i=await (0,E.c)(e.token,n,r);if(!i.ok)return{done:!1,message:"missing"===i.kind?C.G:i.error};if(i.data.id!==r||t.branchExternalId&&i.data.branchId!==t.branchExternalId)return{done:!1,message:C.G};if(i.data.disabled)return{done:!1,message:"Neon has disabled this compute, so it can't be started from here."};if("active"===i.data.state)return{done:!1,message:"Already running."};if("init"===i.data.state||"active"===i.data.pendingState)return{done:!1,message:"Already starting."};let o=await (0,E.d)(e.token,n,r);if(o.ok)return{done:!0,message:`Waking ${r}. Ready in a few seconds.`,audit:{message:`Wake requested \xb7 ${r}`,resourceId:e.resource.id}};let s="scope"===o.kind?(0,C.b)("neon",{project:e.resource.name}):"missing"===o.kind?C.G:o.error;return{done:!1,failed:{ok:!1,kind:o.kind,error:s,...o.status?{status:o.status}:{}},audit:{message:`Wake failed \xb7 ${r}`,resourceId:e.resource.id}}}async function B(e,t){let r=t.resource.name;if(e.ok||r.trim().length<2||!e.error.includes(r))return e;let a=await (0,u.f)().catch(()=>null);return{...e,error:a?(0,y.J)(e.error,a,t.resource.id):e.error.split(r).join("db-?")}}async function L(e,t,r,a=D.W){let n=await (0,D.q)(e.id,"wake",r);if(n)return{ok:!1,error:n};let i=await N(t),o=i?await (0,D.p)(i.projectResourceId,"neon_project"):null;return i&&o?B(await a(await H(o,i,r),e,o.account.id),o):{ok:!1,error:C.G}}var V=e.i(11827),W=e.i(843448),U=e.i(342833);let G=e=>`Supabase is busy with this project (${(0,W.P)(e).label.toLowerCase()}). Try again in a few minutes.`,q=(e,t,r)=>({done:!1,failed:{ok:!1,kind:e.kind,error:"scope"===e.kind?(0,C.b)("supabase",{}):e.error,...e.status?{status:e.status}:{}},audit:{message:t,resourceId:r}});async function F(e,t,r,a,n=D.W){let i,o=await (0,D.q)(t.id,e,r);if(o)return{ok:!1,error:o};let s=await (0,D.p)(r,"supabase_project");if(!s)return{ok:!1,error:"This project isn't watched any more, or its credential can't be read."};if(s.resource.externalId!==a)return{ok:!1,error:C.G};let l=s.resource.externalId,u=s.resource.name,d=await (0,U.e)(s.token,l);if(!d.ok)return n({done:!1,message:"scope"===d.kind||"auth"===d.kind?d.error:`Couldn't read this project's status at Supabase: ${d.error}`},t,s.account.id);let c=d.data.status;if("pause"===e){if("INACTIVE"===c||"PAUSING"===c||"GOING_DOWN"===c)return n({done:!1,message:"Already paused."},t,s.account.id);if(!c.startsWith("ACTIVE_"))return n({done:!1,message:G(c)},t,s.account.id);let e=await (0,U.c)(s.token,l);i=e.ok?{done:!0,message:`Pausing ${u}. It takes about 2 minutes.`,audit:{message:`${V.B}${u}`,resourceId:r}}:"transient"===e.kind&&void 0===e.status?{done:!1,failed:{ok:!1,kind:"transient",error:`${e.error} The pause may still have happened; check the project in a few minutes before restoring it.`},audit:{message:`${V.B}${u}`,resourceId:r}}:q(e,`Pause failed \xb7 ${u}`,r)}else{if(c.startsWith("ACTIVE_")||"RESTORING"===c||"COMING_UP"===c)return n({done:!1,message:"Already active or restoring."},t,s.account.id);if("INACTIVE"!==c)return n({done:!1,message:G(c)},t,s.account.id);let e=await (0,U.W)(s.token);if(!e.ok)return n({done:!1,message:`Couldn't count this account's free slots just now: ${e.error}`},t,s.account.id);let a=await (0,S.m)(s.account.id);if(0>=(0,S.G)(e.data,a,d.data.orgSlug))return n({done:!1,message:"This account already uses both free slots. Pause one of its active projects first; Restore stays blocked until it shows Paused."},t,s.account.id);let o=await (0,U.G)(s.token,l);i=o.ok?{done:!0,message:`Restoring ${u}. It takes about 2 minutes.`,audit:{message:`Restore requested \xb7 ${u}`,resourceId:r}}:q(o,`Restore failed \xb7 ${u}`,r)}return n(i,t,s.account.id)}var J=e.i(177706);function X(e,t,r){if("building"===e.state)return"building";if(null!==t&&e.id===t)return"current";if("error"===e.state)return"failed";if("preview"===e.target)return"ready"===e.state?"preview":"other";if("ready"!==e.state||null===t)return"other";let a=r.find(e=>e.id===t);if(!a)return"other";if(e.createdAt.getTime()>a.createdAt.getTime())return"staged";let n=r.filter(e=>"ready"===e.state&&e.id!==t&&e.createdAt.getTime()<a.createdAt.getTime()).sort((e,t)=>t.createdAt.getTime()-e.createdAt.getTime())[0];return n?.id===e.id?"previous":"other"}let Z=e=>({done:!1,message:e}),Y=(e,t)=>e?.sha?e.sha.slice(0,7):t;async function Q(e,t,r){let a=await (0,D.q)(e.id,t,r);if(a)return a;let n=await (0,D.p)(r,"app"),i=n?.resource.meta.teamId;if(!n||"string"!=typeof i||!i||!n.resource.externalId)return"This app or its Vercel credential isn't available any more. Reload the page.";let o=n.resource.meta.teamSlug;return{member:e,t:n,appId:r,app:n.resource.name,teamId:i,teamSlug:"string"==typeof o?o:"",projectId:n.resource.externalId}}async function ee(e){let[t,r]=await Promise.all([(0,J.c)(e.t.token,e.teamId,e.projectId),(0,J.r)(e.t.token,e.teamId,e.projectId)]);return t.ok?r.ok?{ok:!0,data:{name:t.data.name,currentId:t.data.currentId??r.data[0]?.id??null,production:r.data}}:r:t}async function et(e,t,r,a,n=D.W){return n(t.ok?{done:!0,message:r.message,audit:{message:r.audit,resourceId:e.appId}}:{done:!1,failed:"scope"===t.kind?{ok:!1,kind:"scope",status:t.status,error:(0,C.b)("vercel",{team:e.teamSlug})}:404===t.status?{ok:!1,kind:"missing",status:404,error:"Vercel can't find that deployment any more. Reload and try again."}:{ok:!1,kind:"auth"===t.kind?"auth":"format"===t.kind?"format":"transient",...t.status?{status:t.status}:{},error:t.error},audit:{message:a,resourceId:e.appId}},e.member,e.t.account.id)}async function er(e,t,r,a=D.W){{let n=await Q(e,"redeploy",t);if("string"==typeof n)return a(Z(n),e,"");let i=await ee(n);if(!i.ok)return a(Z(i.error),e,n.t.account.id);if(i.data.currentId!==r)return a(Z(C.G),e,n.t.account.id);if(i.data.production.some(e=>"staged"===X(e,i.data.currentId,i.data.production)))return a(Z("Rolled back: promote a deployment first. A redeploy would stay staged and not go live."),e,n.t.account.id);let o=await (0,J.N)(n.t.token,n.teamId,n.projectId);if(!o.ok)return a(Z(o.error),e,n.t.account.id);if(o.data)return a(Z(`A production build of ${n.app} is already running.`),e,n.t.account.id);let s=Y(i.data.production.find(e=>e.id===r),r),l=await (0,J.L)(n.t.token,n.teamId,{projectId:n.projectId,name:i.data.name,deploymentId:r});return et(n,l,{message:`Redeploy requested. Vercel is building ${n.app} again.`,audit:`Redeploy requested \xb7 ${n.app} \xb7 ${s}`},`Redeploy failed \xb7 ${n.app} \xb7 ${s}`,a)}}async function ea(e,t,r,a=D.W){{let n=await Q(e,"rollback",t);if("string"==typeof n)return a(Z(n),e,"");let i=await ee(n);if(!i.ok)return a(Z(i.error),e,n.t.account.id);if(i.data.currentId===r)return a(Z("Already live."),e,n.t.account.id);let o=i.data.production.find(e=>e.id===r);if(!o||"previous"!==X(o,i.data.currentId,i.data.production))return a(Z("Hobby can only roll back to the previous production deployment."),e,n.t.account.id);let s=Y(o,r),l=await (0,J.E)(n.t.token,n.teamId,n.projectId,r);return et(n,l,{message:`Rolled back ${n.app} to ${s}. New pushes don't go live until you promote one.`,audit:`Rolled back \xb7 ${n.app} → ${s}`},`Roll back failed \xb7 ${n.app} → ${s}`,a)}}var en=e.i(189104),ei=e.i(593111),eo=e.i(425498),es=e.i(77193),el=e.i(570191),eu=e.i(365156);let ed={checkMonitorNow:_.X,keepAliveNow:S.v,wakeAs:L,supabaseAct:F,redeployAs:er,rollbackAs:ea,finish:D.W,recordAction:x.f,limit:ei.f,bumpPrAs:j.W,autoSecurity:()=>(0,el.X)(),recheckDomain:P._,moveMonitorToDomain:O};async function ec(){let[e]=await (0,o.f)().select({at:l.collectorRuns.startedAt}).from(l.collectorRuns).where(i.B`(${l.collectorRuns.trigger} = 'vercel_cron' or (${l.collectorRuns.trigger} = 'manual' and ${l.collectorRuns.tasks} ? 'rollups'))`).orderBy((0,n.A)(l.collectorRuns.startedAt)).limit(1);return e?.at??null}async function ep(e){let t=await (e.lastDailyRunAt??ec)(),r=(e.now??(()=>new Date))();if(t&&r.getTime()-t.getTime()<216e5)return{ok:!1,error:"The daily job ran less than 6 hours ago."};let a=(e.dailyTarget??function(){let e=(0,A.f)();return e?{url:`${(0,R.f)().SITE_URL.replace(/\/+$/,"")}/api/daily`,secret:e.CRON_SECRET}:null})();if(!a)return{ok:!1,error:"The scheduler settings are missing, so the daily job can't be started."};try{let t=await (e.fetch??fetch)(a.url,{headers:{Authorization:`Bearer ${a.secret}`},signal:AbortSignal.timeout(4e4),redirect:"manual"});if(!t.ok||t.status>=300)return{ok:!1,error:`The daily job route answered ${t.status}.`};return{ok:!0,message:`Daily job ran again (${t.status}).`}}catch(e){if(e instanceof Error&&("TimeoutError"===e.name||"AbortError"===e.name))return{ok:!0,message:"Daily job started; it's still running — the heartbeat turns Up when it finishes."};throw e}}let ef="The proposal's target is missing, so it can't run.";async function em(e,t,r=ed){let a="auto"===t,n=a?{id:b.e,userId:null}:{id:t.id,userId:t.userId},i=(e,t,n)=>r.finish(e,t,n,{refresh:!1,...a?{auditPrefix:b.v}:{}});try{if(!e.resourceId||!e.targetRef)return{ok:!1,error:ef};if((0,es.W)()&&"recheck"!==e.action)return await r.recordAction({kind:"ok",message:`${a?b.v:""}${eu.H[e.action].label} (simulated)`,detail:"Simulated in the demo",resourceId:e.resourceId,actorUserId:n.userId}).catch(()=>console.warn("audit event failed")),{ok:!0,message:eo.r};switch(e.action){case"recheck":{let t=await r.limit(en.t.check,n.id);if(!t.allowed)return{ok:!1,error:`Too many checks. Try again in ${(0,en.H)(t.retryAfter)}.`};let i=await r.checkMonitorNow(e.targetRef);if(!i.ok)return{ok:!1,error:i.error};if(i.audit)try{await r.recordAction({kind:!1===i.passed?"err":"ok",...i.audit,message:`${a?b.v:""}${i.audit.message}`,actorUserId:n.userId})}catch{console.warn("audit event failed")}return{ok:!0,message:i.message}}case"domain_recheck":{let t=await r.limit(en.t.domainCheck,n.id);if(!t.allowed)return{ok:!1,error:`Too many checks. Try again in ${(0,en.H)(t.retryAfter)}.`};let i=await (r.recheckDomain??P._)(e.targetRef);if(!i.ok)return i;return await r.recordAction({kind:"ok",...i.audit,message:`${a?b.v:""}${i.audit.message}`,actorUserId:n.userId}).catch(()=>console.warn("audit event failed")),{ok:!0,message:i.message}}case"monitor_update_url":{let t=await r.limit(en.t.monitorWrite,n.id);if(!t.allowed)return{ok:!1,error:`Too many changes. Try again in ${(0,en.H)(t.retryAfter)}.`};let i=await (r.moveMonitorToDomain??O)(e.targetRef);if(!i.ok)return i;return i.audit&&await r.recordAction({kind:"ok",...i.audit,message:`${a?b.v:""}${i.audit.message}`,actorUserId:n.userId}).catch(()=>console.warn("audit event failed")),{ok:!0,message:i.message}}case"daily_rerun":return await ep(r);case"neon_wake":return await r.wakeAs(n,e.resourceId,e.targetRef,i);case"supabase_keepalive":return await r.keepAliveNow(n,e.resourceId,i);case"supabase_restore":return await r.supabaseAct("restore",n,e.resourceId,e.targetRef,i);case"vercel_redeploy":return await r.redeployAs(n,e.resourceId,e.targetRef,i);case"vercel_rollback":return await r.rollbackAs(n,e.resourceId,e.targetRef,i);case"github_bump_pr":{let t=a?await (r.autoSecurity??el.X)():null;if(a&&!t?.enabled)return{ok:!1,error:"Automatic security fixes is off."};return await (r.bumpPrAs??j.W)(n,e.resourceId,e.targetRef,i,{proposalId:e.proposalId??null,...t?{auto:{severities:t.severities}}:{},..."FrameworkVulnerable"===e.ruleKey?{framework:!0}:{}})}default:return{ok:!1,error:ef}}}catch(e){return console.warn(`${s.X.logTag}/proposals run failed:`,e instanceof Error?e.name:"error"),{ok:!1,error:"Something went wrong while running it. Check the console page before trying again."}}}var eg=e.i(588492);let eh={id:w.O.id,room:w.O.room,action:w.O.action,risk:w.O.risk,title:w.O.title,reason:w.O.reason,resourceName:w.O.resourceName,proposedBy:w.O.proposedBy,status:w.O.status,auto:w.O.auto,result:w.O.result,createdAt:w.O.createdAt,decidedAt:w.O.decidedAt,expiresAt:w.O.expiresAt},ek={...eh,resourceId:w.O.resourceId,targetRef:w.O.targetRef,ruleKey:w.O.ruleKey,alertId:w.O.alertId};async function ey(e,t,r){let n=(0,b.z)(e,t),s=new Set(n.deployApps),u=e.filter(e=>("MonitorDown"===e.ruleKey||"HighLatency"===e.ruleKey)&&e.resourceId&&s.has(e.resourceId)&&e.startedAt),[d,p,f,m,g,k,y,w,v]=await Promise.all([n.monitorIds.length?(0,o.f)().select({id:l.monitors.id,kind:l.monitors.kind,url:l.monitors.url,lastError:l.monitors.lastError,appId:l.monitors.resourceId,appName:l.resources.name,appMeta:l.resources.meta}).from(l.monitors).innerJoin(l.resources,(0,a.u)(l.resources.id,l.monitors.resourceId)).where((0,a.y)(l.monitors.id,n.monitorIds)):[],n.deployApps.length?(0,o.f)().select({app:l.deployments.resourceId,id:l.deployments.externalId,isCurrent:l.deployments.isCurrent,isPrevious:l.deployments.isPreviousProduction,readyAt:l.deployments.readyAt,createdAt:l.deployments.createdAtProvider}).from(l.deployments).where((0,a.b)((0,a.y)(l.deployments.resourceId,n.deployApps),(0,a.F)((0,a.u)(l.deployments.isCurrent,!0),(0,a.u)(l.deployments.isPreviousProduction,!0)))):[],n.supabaseIds.length?(0,o.f)().select({id:l.resources.id,ref:l.resources.externalId}).from(l.resources).where((0,a.b)((0,a.y)(l.resources.id,n.supabaseIds),(0,a.u)(l.resources.kind,"supabase_project"),i.B`${l.resources.goneAt} is null`)):[],n.monitorApps.length?eA(n.monitorApps):new Map,n.depApps.length?e$(e,n.depApps).catch(()=>new Set).then(e=>(0,c.C)(n.depApps,e)).catch(()=>new Map):new Map,n.monitorIds.length?eI(n.monitorIds):null,n.frameworkApps.length?(0,j.h)(n.frameworkApps,n.depApps).catch(()=>new Map):new Map,u.length?ew(u.map(e=>e.subject),t).catch(()=>[]):[],eb(n.deployApps)]),$=d.some(e=>null!==(0,h.Y)(e.appMeta)),I=$?await (0,o.f)().select({id:l.resources.id,name:l.resources.name,meta:l.resources.meta}).from(l.resources).where((0,a.b)((0,a.u)(l.resources.kind,"app"),(0,a.u)(l.resources.monitored,!0),(0,a.M)(l.resources.goneAt))).limit(500):[],A=$?(0,h.P)(d,I):new Map,R=[...[...g].map(([e,t])=>({appId:e,repoId:t})),...[...y].map(([e,t])=>({appId:e,repoId:t.repoId}))],x=R.length?await Promise.resolve().then(()=>(0,j.H)(R,t)).catch(()=>new Map):new Map,S=new Map,_=new Map;for(let e of p){let t=S.get(e.app)??{currentId:null,previousId:null,liveAt:null};e.isCurrent?(t.currentId=e.id,t.liveAt=e.readyAt??e.createdAt??null):e.isPrevious&&(t.previousId=e.id,_.set(e.app,e.readyAt??e.createdAt??null)),S.set(e.app,t)}let T=new Map;for(let[e,t]of S)t.previousId&&T.set(e,ev(v,e,t.liveAt,_.get(e)??null));let O=new Map(u.map(e=>[e.id,(0,eg.g)(e.startedAt,w.filter(t=>t.ruleKey===e.ruleKey&&t.subject===e.subject),{ruleKey:e.ruleKey,liveAt:S.get(e.resourceId)?.liveAt??null})]));return{monitorKinds:new Map(d.map(e=>[e.id,String(e.kind)])),deploys:S,...void 0!==r?{rollbackWindowMs:r}:{},supabaseRefs:new Map(f.map(e=>[e.id,e.ref])),neonSuspended:m,fixableRepos:g,dailyHeartbeatId:k,frameworkFixes:y,monitorMoves:A,problemSince:O,previousNext:T,...x.size?{productionMismatch:x}:{}}}async function ew(e,t){return(0,o.f)().select({ruleKey:l.alerts.ruleKey,subject:l.alerts.subject,startedAt:l.alerts.startedAt,resolvedAt:l.alerts.resolvedAt}).from(l.alerts).where((0,a.b)((0,a.y)(l.alerts.ruleKey,["MonitorDown","HighLatency"]),(0,a.y)(l.alerts.subject,[...new Set(e)]),(0,a.E)(l.alerts.resolvedAt),(0,a.B)(l.alerts.resolvedAt,new Date(t.getTime()-eg.A)))).orderBy((0,n.A)(l.alerts.startedAt)).limit(500)}async function eb(e){let t={checks:new Map,events:new Map,frameworks:new Map};if(!e.length)return t;try{let[r,i,s]=await Promise.all([(0,o.f)().select({app:l.appSecurity.resourceId,version:l.appSecurity.version,status:l.appSecurity.status,findings:l.appSecurity.findings,checkedAt:l.appSecurity.checkedAt,reason:l.appSecurity.reason}).from(l.appSecurity).where((0,a.y)(l.appSecurity.resourceId,e)).limit(e.length),(0,o.f)().select({app:l.events.resourceId,at:l.events.at,reason:l.events.reason,message:l.events.message}).from(l.events).where((0,a.b)((0,a.y)(l.events.reason,[...eg.Y]),(0,a.y)(l.events.resourceId,e))).orderBy((0,n.A)(l.events.at)).limit(Math.min(500,50*e.length)),(0,o.f)().select({app:l.resources.id,meta:l.resources.meta}).from(l.resources).where((0,a.y)(l.resources.id,e)).limit(e.length)]);for(let e of r)t.checks.set(e.app,{version:e.version,status:e.status,findings:Array.isArray(e.findings)?e.findings:[],checkedAt:e.checkedAt,reason:e.reason});for(let e of i)e.app&&t.events.set(e.app,[...t.events.get(e.app)??[],{at:e.at,reason:e.reason,message:e.message}]);for(let e of s){let r=e.meta&&"object"==typeof e.meta?e.meta.framework:null;t.frameworks.set(e.app,"string"==typeof r?r:null)}}catch{return{checks:new Map,events:new Map,frameworks:new Map}}return t}let ev=(e,t,r,a)=>(0,eg.Q)({currentLiveAt:r,previousLiveAt:a,check:e.checks.get(t)??null,events:e.events.get(t)??[],framework:e.frameworks.get(t)??null});async function e$(e,t){let r=new Set(t),n=e.filter(e=>"FrameworkVulnerable"===e.ruleKey&&"app"===e.resourceKind&&e.resourceId&&r.has(e.resourceId)).map(e=>e.id);return n.length?new Set((await (0,o.f)().selectDistinct({resourceId:w.O.resourceId}).from(w.O).where((0,a.b)((0,a.u)(w.O.ruleKey,"FrameworkVulnerable"),(0,a.u)(w.O.action,"github_bump_pr"),(0,a.y)(w.O.status,["pending","approved","running","done"]),(0,a.y)(w.O.alertId,n),(0,a.y)(w.O.resourceId,[...r]))).limit(n.length)).flatMap(e=>e.resourceId?[e.resourceId]:[])):new Set}async function eI(e){let t=(0,m.i)(process.env.DAILY_HEARTBEAT_TOKEN);if(!t)return null;let[r]=await (0,o.f)().select({id:l.monitors.id}).from(l.monitors).where((0,a.b)((0,a.y)(l.monitors.id,e),(0,a.u)(l.monitors.kind,"heartbeat"),(0,a.u)(l.monitors.tokenHash,(0,g.f)(t)))).limit(1).catch(()=>[]);return r?.id??null}async function eA(e){let t=await (0,o.f)().select({app:l.links.fromResourceId,id:l.resources.id,kind:l.resources.kind,externalId:l.resources.externalId,parentId:l.resources.parentId}).from(l.links).innerJoin(l.resources,(0,a.u)(l.resources.id,l.links.toResourceId)).where((0,a.b)((0,a.y)(l.links.fromResourceId,e),(0,a.u)(l.links.kind,"uses_db"),(0,a.y)(l.resources.kind,["neon_project","neon_branch"]),i.B`${l.resources.goneAt} is null`)),r=new Map;if(!t.length)return r;let n=e=>"neon_branch"===e.kind?e.parentId:e.id,s=[...new Set(t.map(n).filter(e=>!!e))];if(!s.length)return r;let u=new Map((await (0,o.f)().select({id:l.snapshots.resourceId,data:l.snapshots.data}).from(l.snapshots).where((0,a.y)(l.snapshots.resourceId,s))).map(e=>[e.id,(0,k.k)(k.s,e.data)]));for(let e of t){let t=n(e),a=t?u.get(t):void 0,i=a?(0,b.Z)(a.endpoints,a.branches,"neon_branch"===e.kind?e.externalId:null):null;i&&r.set(e.app,{resourceId:e.id,resourceKind:e.kind,endpointId:i})}return r}async function eR(e){if(!e.length)return[];let t=new Set((await (0,o.f)().select({alertId:w.O.alertId,action:w.O.action}).from(w.O).where((0,a.y)(w.O.alertId,[...new Set(e.map(e=>e.alertId))]))).map(e=>`${e.alertId}:${e.action}`)),r=e.filter(e=>!t.has(`${e.alertId}:${e.action}`));return r.length?(0,o.f)().insert(w.O).values(r.map(e=>({...e,status:"pending"}))).onConflictDoNothing().returning(ek):[]}async function ex(e,t,r,n){let[s]=await (0,o.f)().update(w.O).set({status:"approve"===t?"approved":"rejected",decidedBy:r,decidedAt:n}).where((0,a.b)((0,a.u)(w.O.id,e),(0,a.u)(w.O.status,"pending"),i.B`${w.O.expiresAt} > ${n.toISOString()}::timestamptz`)).returning(ek);if(s)return{status:"ok",proposal:(0,b.E)(s),row:s};let[l]=await (0,o.f)().select(eh).from(w.O).where((0,a.u)(w.O.id,e)).limit(1);return l?{status:"conflict",proposal:(0,b.E)(l)}:{status:"missing"}}async function ej(e,t){let[r]=await (0,o.f)().update(w.O).set({status:"running",claimedAt:t}).where((0,a.b)((0,a.u)(w.O.id,e),(0,a.u)(w.O.status,"approved"))).returning(ek);return r??null}async function eS(e,t,r,n){let[i]=await (0,o.f)().update(w.O).set({status:t?"done":"failed",result:r,finishedAt:n}).where((0,a.b)((0,a.u)(w.O.id,e),(0,a.u)(w.O.status,"running"))).returning(ek);return i??null}let e_={run:(e,t)=>em(e,t),book:()=>(0,u.f)()};async function eT(e,t,r,a=e_){let n=await ej(e,r);if(!n)return null;let i=await a.run({action:n.action,resourceId:n.resourceId,targetRef:n.targetRef,proposalId:n.id,ruleKey:n.ruleKey??null},t),o=await a.book().catch(()=>y.a),s=await eS(e,i.ok,(0,b.x)(i,o),new Date);return s?(0,b.E)(s):null}async function eO(e,t){let r=await (0,o.f)().update(w.O).set({status:"expired",result:"Expired: nobody decided in time, or the alert stopped firing."}).where((0,a.b)((0,a.u)(w.O.status,"pending"),(0,a.F)((0,a.S)(w.O.expiresAt,new Date(t.getTime()+1)),(0,a.b)((0,a.E)(w.O.alertId),e.length?(0,a.$)(w.O.alertId,e):i.B`true`)))).returning({id:w.O.id});return await (0,o.f)().update(w.O).set({status:"failed",result:"The run was interrupted. Check the console page before trying again.",finishedAt:t}).where((0,a.b)((0,a.u)(w.O.status,"running"),(0,a.S)(w.O.claimedAt,new Date(t.getTime()-b.L)))),r.length}async function eP(e){await (0,o.f)().delete(w.O).where((0,a.b)((0,a.S)(w.O.createdAt,new Date(e.getTime()-2592e6)),(0,a.$)(w.O.status,["pending","approved","running"])))}let eM=i.B`(${l.storedLogs.level} in ('error', 'fatal') or coalesce(${l.storedLogs.statusCode}, 0) >= 500)`,eN=i.B`coalesce(${l.deployments.readyAt}, ${l.deployments.createdAtProvider})`;async function eD(e){let t=await (0,o.f)().select({app:l.links.fromResourceId,id:l.resources.id,kind:l.resources.kind,externalId:l.resources.externalId,parentId:l.resources.parentId}).from(l.links).innerJoin(l.resources,(0,a.u)(l.resources.id,l.links.toResourceId)).where((0,a.b)((0,a.y)(l.links.fromResourceId,e),(0,a.u)(l.links.kind,"uses_db"),(0,a.y)(l.resources.kind,["neon_project","neon_branch","supabase_project"]),(0,a.M)(l.resources.goneAt))),r=new Map;if(!t.length)return r;let n=e=>"neon_branch"===e.kind?e.parentId:e.id,i=[...new Set(t.map(n).filter(e=>!!e))],s=new Map((i.length?await (0,o.f)().select({id:l.snapshots.resourceId,data:l.snapshots.data}).from(l.snapshots).where((0,a.y)(l.snapshots.resourceId,i)):[]).map(e=>[e.id,e.data]));for(let e of t){let t=s.get(n(e)??"");if("supabase_project"===e.kind){let a=(0,k.k)(k.B,t);r.set(e.app,{resourceId:e.id,kind:e.kind,wakeEndpoint:null,supabaseRef:e.externalId,supabasePaused:"INACTIVE"===a.status})}else{let a=(0,k.k)(k.s,t);r.set(e.app,{resourceId:e.id,kind:e.kind,wakeEndpoint:(0,b.Z)(a.endpoints,a.branches,"neon_branch"===e.kind?e.externalId:null),supabaseRef:null,supabasePaused:!1})}}return r}let ez={apps:async function(e){let t=new Date(e.getTime()-v.I-v.s),r=i.B`${l.storedLogs.at} >= ${new Date(e.getTime()-v.H).toISOString()}::timestamptz`,n=i.B`${l.storedLogs.message} ~* ${v.N}`,s=i.B`left(${l.storedLogs.message}, 200)`,u=(await (0,o.f)().select({appId:l.storedLogs.resourceId,appName:i.B`max(${l.resources.name})`,liveAt:i.B`max(${eN})`.mapWith(l.deployments.readyAt),currentId:i.B`max(${l.deployments.externalId})`,errorsSinceLive:i.B`count(*) filter (where ${eM} and ${l.storedLogs.at} >= ${eN})`.mapWith(Number),baselineErrors:i.B`count(*) filter (where ${eM} and ${l.storedLogs.at} >= ${eN} - interval '24 hours' and ${l.storedLogs.at} < ${eN})`.mapWith(Number),topSinceLive:i.B`mode() within group (order by ${s}) filter (where ${eM} and ${l.storedLogs.at} >= ${eN})`,errors30:i.B`count(*) filter (where ${eM} and ${r})`.mapWith(Number),top30:i.B`mode() within group (order by ${s}) filter (where ${eM} and ${r})`,dbErrors30:i.B`count(*) filter (where ${r} and ${n})`.mapWith(Number),topDb:i.B`mode() within group (order by ${s}) filter (where ${r} and ${n})`}).from(l.storedLogs).innerJoin(l.resources,(0,a.u)(l.resources.id,l.storedLogs.resourceId)).leftJoin(l.deployments,(0,a.b)((0,a.u)(l.deployments.resourceId,l.storedLogs.resourceId),(0,a.u)(l.deployments.isCurrent,!0))).where((0,a.b)((0,a.B)(l.storedLogs.at,t),(0,a.u)(l.resources.kind,"app"),(0,a.M)(l.resources.goneAt))).groupBy(l.storedLogs.resourceId)).filter(e=>e.errorsSinceLive>=v.w||e.errors30>=v.G||e.dbErrors30>=v.V);if(!u.length)return[];let d=u.map(e=>e.appId),[c,p,f]=await Promise.all([(0,o.f)().select({app:l.deployments.resourceId,previousId:i.B`max(${l.deployments.externalId}) filter (where ${l.deployments.isPreviousProduction})`,previousLiveAt:i.B`max(${eN}) filter (where ${l.deployments.isPreviousProduction})`.mapWith(l.deployments.readyAt),lastDeployAt:i.B`max(${l.deployments.createdAtProvider}) filter (where ${l.deployments.target} = 'production')`.mapWith(l.deployments.createdAtProvider)}).from(l.deployments).where((0,a.b)((0,a.y)(l.deployments.resourceId,d),(0,a.F)((0,a.u)(l.deployments.isPreviousProduction,!0),(0,a.B)(l.deployments.createdAtProvider,new Date(e.getTime()-v.v))))).groupBy(l.deployments.resourceId),(0,o.f)().select({app:l.monitors.resourceId,id:l.monitors.id}).from(l.monitors).where((0,a.b)((0,a.y)(l.monitors.resourceId,d),(0,a.u)(l.monitors.kind,"http"),(0,a.u)(l.monitors.paused,!1),(0,a.u)(l.monitors.ownerPaused,!1))).orderBy(l.monitors.createdAt),eD(d)]),m=new Map(c.map(e=>[e.app,e])),g=new Map;for(let e of p)g.has(e.app)||g.set(e.app,e.id);let h=u.filter(e=>e.errorsSinceLive>=v.w&&e.liveAt&&m.get(e.appId)?.previousId).map(e=>e.appId),k=h.length?await eb(h):null;return u.map(e=>({...e,appName:e.appName??"",previousId:m.get(e.appId)?.previousId??null,lastDeployAt:m.get(e.appId)?.lastDeployAt??null,httpMonitorId:g.get(e.appId)??null,db:f.get(e.appId)??null,...k&&h.includes(e.appId)?{previousNext:ev(k,e.appId,e.liveAt,m.get(e.appId)?.previousLiveAt??null)}:{}}))},rows:async function(e){let t=i.B`coalesce(${w.O.finishedAt}, ${w.O.decidedAt}, ${w.O.expiresAt})`;return(0,o.f)().select({id:w.O.id,ruleKey:w.O.ruleKey,resourceId:w.O.resourceId,action:w.O.action,status:w.O.status,closedAt:t.mapWith(w.O.finishedAt)}).from(w.O).where((0,a.b)((0,a.M)(w.O.alertId),(0,a.y)(w.O.ruleKey,[...v.T]),(0,a.F)((0,a.y)(w.O.status,["pending","approved","running"]),i.B`${t} > ${new Date(e.getTime()-v.b).toISOString()}::timestamptz`)))}};async function eC(e,t,r=ez){let[n,i]=await Promise.all([r.apps(e),r.rows(e)]),s=n.flatMap(r=>(0,v.t)(r,t,e)),l=(0,v.W)(i,s),u=0;l.length&&(u=(await (0,o.f)().update(w.O).set({status:"expired",result:"Expired: the logs no longer show it.",finishedAt:e}).where((0,a.b)((0,a.y)(w.O.id,l),(0,a.u)(w.O.status,"pending"))).returning({id:w.O.id})).length);let d=(0,v.x)(s,i,e);return d.length?{created:await (0,o.f)().insert(w.O).values(d.map(e=>({...e,status:"pending"}))).onConflictDoNothing().returning(ek),expired:u}:{created:[],expired:u}}let eE=null;async function eK(e,t){return(0,v.D)(e,eE)?(eE=e.getTime(),eC(e,await t())):{created:[],expired:0}}async function eH(e,t){return(await (0,o.f)().update(w.O).set({status:"approved",auto:!0,decidedAt:t}).where((0,a.b)((0,a.u)(w.O.id,e),(0,a.u)(w.O.status,"pending"),(0,a.u)(w.O.risk,"safe"))).returning({id:w.O.id})).length>0}async function eB(e,t){let r=new Date(t.getTime()-$.r),[n,s,u,d,c]=await Promise.all([(0,o.f)().select({app:l.deployments.resourceId,id:l.deployments.externalId,sha:l.deployments.commitSha,state:l.deployments.state,isCurrent:l.deployments.isCurrent,isPrevious:l.deployments.isPreviousProduction,readyAt:l.deployments.readyAt,createdAt:l.deployments.createdAtProvider}).from(l.deployments).where((0,a.b)((0,a.y)(l.deployments.resourceId,e),(0,a.F)((0,a.u)(l.deployments.isCurrent,!0),(0,a.u)(l.deployments.isPreviousProduction,!0)))),(0,o.f)().select({app:l.deployments.resourceId,at:i.B`max(${l.deployments.createdAtProvider})`.mapWith(l.deployments.createdAtProvider)}).from(l.deployments).where((0,a.b)((0,a.y)(l.deployments.resourceId,e),(0,a.u)(l.deployments.target,"production"),(0,a.u)(l.deployments.state,"ready"))).groupBy(l.deployments.resourceId),(0,o.f)().select({app:l.events.resourceId}).from(l.events).where((0,a.b)((0,a.u)(l.events.type,"action"),(0,a.y)(l.events.resourceId,e),(0,a.B)(l.events.at,r),i.B`${l.events.message} ~ ${eL}`)),(0,o.f)().select({app:w.O.resourceId,targetRef:w.O.targetRef,status:w.O.status,decidedAt:w.O.decidedAt}).from(w.O).where((0,a.b)((0,a.u)(w.O.action,"vercel_rollback"),(0,a.u)(w.O.auto,!0),(0,a.B)(w.O.createdAt,new Date(t.getTime()-26784e5)))),eb(e)]),p=new Map;for(let t of e){let e=n.find(e=>e.app===t&&e.isCurrent),a=n.find(e=>e.app===t&&e.isPrevious&&!e.isCurrent),i=d.filter(e=>e.app===t);p.set(t,{deploy:e?{currentId:e.id,currentSha:e.sha,liveAt:e.readyAt??e.createdAt,currentCreatedAt:e.createdAt,newestProdCreatedAt:s.find(e=>e.app===t)?.at??null,previousId:a?.id??null,previousState:a?.state??null,previousCreatedAt:a?.createdAt??null}:null,rolledOrPromotedLately:u.some(e=>e.app===t),autoLately:i.some(e=>null!==e.decidedAt&&e.decidedAt.getTime()>=r.getTime()),sameDeployBefore:!!a&&i.some(e=>e.targetRef===a.id),previousNext:e&&a?ev(c,t,e.readyAt??e.createdAt,a.readyAt??a.createdAt).status:"unknown"})}return{apps:p,inFlight:d.some(e=>"approved"===e.status||"running"===e.status)}}let eL="(Rolled back|Promoted|Preview promoted) ·";async function eV(e,t,r){return(await (0,o.f)().update(w.O).set({status:"approved",auto:!0,decidedAt:r,reason:t}).where((0,a.b)((0,a.u)(w.O.id,e),(0,a.u)(w.O.status,"pending"),(0,a.u)(w.O.action,"vercel_rollback"),i.B`not exists (select 1 from ops.action_proposals x where x.action = 'vercel_rollback' and x.auto and x.status in ('approved', 'running'))`)).returning({id:w.O.id})).length>0}async function eW(e,t,r,a){let n=e.filter(e=>"vercel_rollback"===e.action&&e.ruleKey&&$.M.has(e.ruleKey)&&e.resourceId);if(!n.length||!a.autoRollback||!a.rollbackContext||!a.approveAutoRollback)return[];let i=await a.autoRollback().catch(()=>null);if(!i?.enabled||15e3>r())return[];let o=[];try{let e=await a.rollbackContext([...new Set(n.map(e=>e.resourceId))],t),l=e.inFlight;for(let u of n){let n=e.apps.get(u.resourceId);if(!n||12e3>r())continue;let d=(0,$.s)({setting:i,ruleKey:u.ruleKey??null,targetRef:u.targetRef,inFlight:l,...n},t);if(!d.ok){console.log(`${s.X.logTag}/auto-rollback: skipped (${d.why})`);continue}let c=(0,$.E)(n.deploy);if(!await a.approveAutoRollback(u.id,(0,$.u)(c,i.windowMin,u.reason),new Date))continue;l=!0;let p=await a.execute(u.id,new Date);if(p){o.push(p),await (a.notifyRollback??I.q)(p,{reason:u.reason,newRef:c},{},{alertId:u.alertId??null}).catch(()=>void 0);break}}}catch(e){console.warn(`${s.X.logTag}/auto-rollback failed:`,e instanceof Error?e.name:"error")}return o}async function eU(e,t){return(await (0,o.f)().update(w.O).set({status:"approved",auto:!0,decidedAt:t}).where((0,a.b)((0,a.u)(w.O.id,e),(0,a.u)(w.O.status,"pending"),(0,a.u)(w.O.action,"github_bump_pr"))).returning({id:w.O.id})).length>0}async function eG(e,t,r){let a=e.filter(e=>"github_bump_pr"===e.action&&e.targetRef);if(!a.length||!r.autoSecurity||!r.bumpReady||!r.approveAutoBump)return[];let n=await r.autoSecurity().catch(()=>null);if(!n?.enabled||!n.severities.length)return[];let i=[];for(let e of a){if(15e3>t())break;try{if(e.resourceId&&r.prodMismatch?await r.prodMismatch(e.resourceId,e.targetRef).catch(()=>"unknown"):null){console.log(`${s.X.logTag}/auto-security: waits for the owner (production source)`);continue}let t="FrameworkVulnerable"===e.ruleKey&&e.resourceId?await r.bumpReady(e.targetRef,n.severities,{appId:e.resourceId}):await r.bumpReady(e.targetRef,n.severities);if(!t.ok){console.log(`${s.X.logTag}/auto-security: waits for the owner (${t.why})`);continue}if(!await r.approveAutoBump(e.id,new Date))continue;let a=await r.execute(e.id,new Date);a&&i.push(a)}catch(e){console.warn(`${s.X.logTag}/auto-security failed:`,e instanceof Error?e.name:"error")}}return i}async function eq(e,t){return(await (0,j.H)([{appId:e,repoId:t}],new Date)).get(e)??null}async function eF(e){return new Map((await (0,o.f)().select({id:l.accounts.id,provider:l.accounts.provider}).from(l.accounts).where((0,a.y)(l.accounts.id,e))).map(e=>[e.id,e.provider]))}let eJ={firing:()=>(0,d.q)(),book:()=>(0,u.f)(),facts:ey,create:eR,expire:eO,autoRun:el.I,approveAuto:eH,execute:(e,t)=>eT(e,"auto",t),notifyNew:I.i,notifyResult:I.b,logs:eK,autoRollback:()=>(0,el.K)(),rollbackContext:eB,approveAutoRollback:eV,notifyRollback:I.q,autoSecurity:()=>(0,el.X)(),bumpReady:j.J,approveAutoBump:eU,paused:p.I,providers:eF,prodMismatch:eq};async function eX(e,t={},r=eJ){let a={created:0,expired:0,autoRan:0},n=()=>(t.deadline??1/0)-Date.now(),i=await r.firing();a.expired=await r.expire(i.map(e=>e.id),e);let o=r.paused?await r.paused().catch(()=>new Set):new Set,l=[...new Set(i.flatMap(e=>e.accountId?[e.accountId]:[]))],u=o.size&&l.length&&r.providers?await r.providers(l).catch(()=>new Map):new Map,d=i.filter(e=>!(0,f.O)(o,e.ruleKey,e.accountId?u.get(e.accountId):null)),c=null,p=()=>c??=r.book().catch(()=>y.a),m=[],g=(0,b.z)(d,e);if(Object.values(g).some(e=>e.length>0)){let t=g.deployApps.length&&r.autoRollback?await r.autoRollback().catch(()=>null):null,a=await r.facts(d,e,t?6e4*t.windowMin:void 0),n=await p(),i=d.flatMap(t=>(0,b.t)(t,a,n,e)).filter(e=>!("github_bump_pr"===e.action&&o.has("devops")));m.push(...await r.create(i))}if(n()>1e4&&!o.has("hosting"))try{let t=await r.logs(e,p);m.push(...t.created),a.expired+=t.expired}catch(e){console.warn(`${s.X.logTag}/proposals logs failed:`,e instanceof Error?e.name:"error")}if(a.created=m.length,!m.length)return a;let h=await r.autoRun().catch(()=>null),k=await eW(m,e,n,r);a.autoRan+=k.length;let w=await eG(m.filter(e=>!k.some(t=>t.id===e.id)),n,r),v=new Set(k.map(e=>e.id)),$=[...w];for(let e of(a.autoRan+=w.length,w))v.add(e.id);for(let e of m){if(v.has(e.id)||!h||!(0,b.I)(e.action,h)||8e3>n()||!await r.approveAuto(e.id,new Date))continue;let t=await r.execute(e.id,new Date);t&&($.push(t),a.autoRan++)}let I=new Set([...$.map(e=>e.id),...v]),A=m.filter(e=>"LogErrorSpike"===e.ruleKey&&e.resourceId).map(e=>({proposalId:e.id,appId:e.resourceId})),R=A.length&&r.queueDev?await r.queueDev(A,e).catch(()=>new Set):new Set,x=new Map(m.map(e=>[e.id,e.alertId??null]));for(let e of(await r.notifyNew(m.filter(e=>!I.has(e.id)).map(b.E),{},{devQueued:R,alertIds:x}).catch(()=>void 0),$))await r.notifyResult(e,{},{alertId:x.get(e.id)??null}).catch(()=>void 0);return a}let eZ=(r={},t={...eJ,queueDev:r.queueDev},async(e,r)=>{try{let a=await eX(e,r??{},t);(a.created||a.expired||a.autoRan)&&console.log(`${s.X.logTag}/proposals: ${a.created} new, ${a.expired} expired, ${a.autoRan} auto-ran`)}catch(e){console.warn(`${s.X.logTag}/proposals failed:`,e instanceof Error?e.name:"error")}});e.s(["V",0,ex,"N",0,eT,"Z",0,eZ,"t",0,eP],447933)},442565,e=>{var t=e.i(313931),r=e.i(872281),a=e.i(483100),n=e.i(224382),i=e.i(220642),o=e.i(547499),s=e.i(695811),l=e.i(76012),u=e.i(298397),d=e.i(635982),c=e.i(570191),p=e.i(365156);let f={target:a.Q,book:()=>(0,r.f)(),siteUrl:()=>(0,o.f)().SITE_URL,autoRun:()=>(0,c.I)(),send:(e,t,r,a,n)=>(0,l.I)(e,t,r,{...a?{replyMarkup:a}:{},...n?{replyTo:n}:{}}),record:(e,t)=>(0,a.P)("telegram",e,t),lang:()=>(0,s.H)("telegram"),discord:()=>(0,a.G)(),sendDiscord:(e,t)=>(0,n.f)(e,t,{timeoutMs:$}),recordDiscord:(e,t)=>(0,a.P)("discord",e,t),discordLang:()=>(0,s.H)("discord"),buttons:()=>e.A(106025).then(e=>e.approvalButtons()),thread:e=>(0,a.M)(e)},m={en:{pending:"Status: ⏳ waiting",dev:"🧑‍💻 Dev is checking the code",proposer:t.X.notifyFallback.en,app:"app",safe:"safe",risky:"needs care",proposes:"proposes",why:"Why",risk:"Risk",open:"Open in Auto-actions",waitingN:"new proposals waiting for approval:",moreN:"more proposals",automatic:"Automatic",rollbackWhy:"the app errored after the new deploy",succeeded:"Succeeded",failed:"Failed",stopFallback:"something failed"},id:{pending:"Status: ⏳ menunggu",dev:"🧑‍💻 Dev lagi cek kodenya",proposer:t.X.notifyFallback.id,app:"aplikasi",safe:"aman",risky:"perlu hati-hati",proposes:"usul",why:"Kenapa",risk:"Risiko",open:"Buka di Auto-actions",waitingN:"usulan baru menunggu persetujuan:",moreN:"usulan lagi",automatic:"Otomatis",rollbackWhy:"app-nya error setelah deploy baru",succeeded:"Berhasil",failed:"Gagal",stopFallback:"ada yang gagal"}},g={recheck:"Cek ulang sekarang",neon_wake:"Bangunin Neon",supabase_keepalive:"Kirim keep-alive Supabase",supabase_restore:"Restore project Supabase",vercel_redeploy:"Redeploy production",vercel_rollback:"Rollback ke deploy sebelumnya",github_bump_pr:"Bikin PR update paket",domain_recheck:"Cek ulang sertifikat domain",daily_rerun:"Jalanin ulang daily job",monitor_update_url:"Arahin monitor ke domain baru"},h=(e="en")=>(0,s.t)(m,e,"dev"),k=(e,t)=>("id"===t?g[e.action]:void 0)??p.H[e.action]?.label??e.actionLabel,y=(e,t)=>(0,s.t)(m,t,"risky"===e.risk||p.H[e.action]?.risk==="risky"?"risky":"safe"),w=(e,t)=>`${e.replace(/\/+$/,"")}/auto-actions${t?`?proposal=${encodeURIComponent(t)}`:""}`;function b(e,t,r,a=!1,n="en"){let o=e=>(0,s.t)(m,n,e),l=(0,d.R)(e.proposedBy,t,60)||o("proposer"),u=(0,d.R)(e.title,t,120),c=(0,d.R)(e.reason,t,200)||"-";return[`🧑‍✈️ ${(0,i.H)(l)} ${o("proposes")}: ${(0,i.H)(k(e,n))} — ${(0,i.H)(u)}`,`${o("why")}: ${(0,i.H)(c)}`,`${o("risk")}: ${y(e,n)}`,...a?[h(n)]:[],`${o("open")}: ${(0,i.H)(w(r,e.id))}`].join("\n")}let v=new Set(["recheck","domain_recheck"]),$=3e3,I={en:{proposed:"📝 Proposed",approved:"✅ Approved by the owner",rejected:"🚫 Rejected by the owner",done:"⚙️ Ran",failed:"❌ Failed",waiting:"waiting for approval on Telegram.",newN:"new proposals"},id:{proposed:"📝 Usulan",approved:"✅ Disetujui owner",rejected:"🚫 Ditolak owner",done:"⚙️ Dijalankan",failed:"❌ Gagal",waiting:"nunggu persetujuan di Telegram.",newN:"usulan baru"}};function A(e,t,r,a="en"){let n=e=>(0,s.t)(I,a,e);if(Array.isArray(t))return`📝 ${t.length} ${n("newN")} — ${n("waiting")}`;let i=((0,d.g)(t.title,r,120)||k(t,a)).replace(/[*_`~|\[\]<>]/g,"");if("proposed"===e)return`${n("proposed")}: ${i} — ${n("waiting")}`;if("approved"===e||"rejected"===e)return`${n(e)}: ${i}`;let o=t.result?(0,d.g)(t.result,r,200).replace(/[*_`~|\[\]<>]/g,""):"";return`${n(e)}: ${i}${o?` — ${o}`:""}`}async function R(e,r,a){try{let n,i=await r.discord();if(!i)return;let o=await r.book().catch(()=>u.a),s=await r.discordLang().catch(()=>"en"),l=e(o,s);if(!l.length)return;try{n=await r.sendDiscord(i.url,l.join("\n"))}catch{n={ok:!1,kind:"transient",error:"Discord didn't answer."}}await r.recordDiscord(n,a).catch(()=>console.warn(`${t.X.logTag}/discord: recording the result failed`))}catch{console.warn(`${t.X.logTag}/discord: sending the action history failed`)}}async function x(e,t,r={},a={}){let n={...f,...r};await S(()=>R((r,a)=>[A(e,t,r,a)],n,a.now??new Date),a.timeoutMs??$)}async function j(e,r,a){let n=await r.target();if(!n)return;let i=await r.book().catch(()=>u.a),o=await r.lang().catch(()=>"en");for(let s of(await e(i,o))){let e;try{e="string"==typeof s?await r.send(n.token,n.chatId,s):await r.send(n.token,n.chatId,s.text,s.keyboard,s.replyTo??void 0)}catch{e={ok:!1,kind:"transient",error:"Telegram didn't answer."}}await r.record(e,a).catch(()=>console.warn(`${t.X.logTag}/telegram: recording the result failed`))}}async function S(e,r){try{var a;let t;await (a=e(),Promise.race([a,new Promise((e,a)=>{t=setTimeout(()=>a(Object.assign(Error("timeout"),{name:"TimeoutError"})),r)})]).finally(()=>clearTimeout(t)))}catch(e){console.warn(`${t.X.logTag}/telegram: sending the proposal notice failed:`,e instanceof Error?e.name:"error")}}let _=async(e,t)=>t&&e.thread?e.thread(t).catch(()=>null):null;async function T(e,t={},r={}){if(!e.length)return;let a={...f,...t};await S(async()=>{let t=await a.autoRun().catch(()=>null),n=e.filter(e=>{var r;return r=t??{},"pending"===e.status&&!e.auto&&(p.H[e.action]?.risk!=="safe"||"risky"===e.risk||!r[e.action])});if(!n.length)return;let o=n.length>3||!a.buttons?null:await a.buttons().catch(()=>null),l=r.now??new Date;await Promise.all([j(async(e,t)=>n.length>3?[function(e,t,r,a=new Set,n="en"){let o=e=>(0,s.t)(m,n,e),l=e.slice(0,10).map(e=>{let s=(0,d.R)(e.proposedBy,t,60)||o("proposer");return`• ${(0,i.H)(s)}: ${(0,i.H)(k(e,n))} — ${(0,i.H)((0,d.R)(e.title,t,120))} (${y(e,n)})${a.has(e.id)?` \xb7 ${h(n)}`:""}
4
+ `:"")+(0,s.y)(X,ea,!!E,N),eu=await (0,h.y)(T.token,O.fullName,Y,U,es,el,L,{draft:!!G}),ed=!!G;if(G&&!eu.ok&&422===eu.status&&(eu=await (0,h.y)(T.token,O.fullName,Y,U,es,el,L),ed=!1),!eu.ok)return en(eu);let ec=G?ed?` Opened as a draft: ${G}`:` Opened as a normal pull request (this repository can't have drafts), with the warning on top: ${G}`:"",ep=X.map(e=>`${e.package} ${e.from} → ${e.to}`).join(", "),ef=await (0,h.M)(T.token,O.fullName,Y,L).catch(()=>null),em=!1;if(ef?.ok&&ef.data){await (0,a.f)().insert(n.dependencyPrs).values({repoId:p,appId:i,proposalId:K??null,number:eu.data.number,branch:Y,baseBranch:U,headSha:ef.data,title:es.slice(0,200),packages:X.map(e=>e.package),auto:!!E,stage:"checks",stageText:(0,c.m)(eu.data.number,"checks")}).onConflictDoNothing().catch(()=>console.warn("deps: recording the PR failed"));let{extensions:t}=await e.A(774810),r=await t.runner?.queueLockfileJob({repoId:p,branch:Y,headSha:ef.data,prNumber:eu.data.number,lockfilePath:er,targets:X.map(e=>({name:e.package,version:e.fixed}))}).catch(()=>(console.warn("deps: queueing the lockfile job failed"),null)),o=await (0,w.U)(T.token,{repo:O.fullName,branch:Y,lockfilePath:er,prNumber:eu.data.number});em=r?.queued===!0||o.sent}return f({done:!0,message:`Pull request #${eu.data.number} opened for ${O.app}: ${ep}.${em?"":` Run npm install${N?` in ${N}`:""} on the branch before merging.`}${ec}`,audit:{message:`Package update PR opened \xb7 ${O.app} \xb7 #${eu.data.number}`,resourceId:i,detail:ep}},r,T.id)}async function j(e,t,r){if(!(0,m.f)(e)||r&&!(0,m.f)(r.appId))return{ok:!1,why:"target"};let a=await v();if(!a||"unreadable"===a)return{ok:!1,why:"no write token"};let n=r?await I(r.appId):await A(e);if(!n)return{ok:!1,why:"nothing"};let i=(0,o.a)(n.upgrades,n.installed,t);return i.ok?{ok:!0}:{ok:!1,why:i.why}}async function S(e,r){let i=e.filter(e=>(0,m.f)(e.appId)&&(0,m.f)(e.repoId)),o=new Map;if(!i.length)return o;let s=await (0,a.f)().select({appId:n.appRepos.appId,repoId:n.appRepos.repoId,meta:n.resources.meta,defaultBranch:n.githubRepos.defaultBranch}).from(n.appRepos).innerJoin(n.resources,(0,t.u)(n.resources.id,n.appRepos.appId)).innerJoin(n.githubRepos,(0,t.u)(n.githubRepos.id,n.appRepos.repoId)).where((0,t.y)(n.appRepos.appId,[...new Set(i.map(e=>e.appId))])).limit(4*i.length);for(let e of i){let t=s.find(t=>t.appId===e.appId&&t.repoId===e.repoId),a=t?.meta??{},n=t?(0,g.B)(a.productionSource,(0,g.q)(a,t.defaultBranch??null),r):null;n&&o.set(e.appId,n)}return o}async function _(e,r=[]){let i=e.filter(m.f),o=new Map;if(!i.length)return o;let s=await (0,a.f)().select({appId:n.appRepos.appId,repoId:n.appRepos.repoId,version:n.appSecurity.version,status:n.appSecurity.status,findings:n.appSecurity.findings}).from(n.appRepos).innerJoin(n.githubRepos,(0,t.u)(n.githubRepos.id,n.appRepos.repoId)).innerJoin(n.appSecurity,(0,t.u)(n.appSecurity.resourceId,n.appRepos.appId)).where((0,t.b)((0,t.y)(n.appRepos.appId,i),(0,t.M)(n.githubRepos.goneAt),(0,t.u)(n.appSecurity.status,"vulnerable"))).limit(i.length),u=new Set(r),d=s.filter(e=>u.has(e.appId)),c=d.length?new Set((await (0,a.f)().selectDistinct({repoId:n.dependencyVulns.repoId}).from(n.dependencyVulns).where((0,t.b)((0,t.y)(n.dependencyVulns.repoId,[...new Set(d.map(e=>e.repoId))]),(0,t.M)(n.dependencyVulns.resolvedAt),(0,t.u)(n.dependencyVulns.package,"next"),(0,t.u)(n.dependencyVulns.direct,!0),(0,t.E)(n.dependencyVulns.fixedVersion))).limit(d.length)).map(e=>e.repoId)):new Set;for(let e of s){if(u.has(e.appId)&&c.has(e.repoId))continue;let t=(0,l.p)({version:e.version,status:e.status,findings:Array.isArray(e.findings)?e.findings:[]});t&&o.set(e.appId,{repoId:e.repoId,from:t.from,to:t.to})}return o}e.s(["J",0,j,"W",0,x,"h",0,_,"H",0,S,"G",0,v])},983128,860320,e=>{var t=e.i(875225),r=e.i(924924),a=e.i(618916),n=e.i(921991),i=e.i(547499),o=e.i(666680),s=e.i(140561),l=e.i(206033),u=e.i(105954),d=e.i(971724),c=e.i(180473),p=e.i(76012);let f={inline_keyboard:[]},m=0,g=e=>(0,o.createHash)("sha256").update(`watchpost:telegram-link:${e.trim().toUpperCase()}`,"utf8").digest("hex"),h=s.z.union([l.z.number().int(),u.z.string().regex(/^-?\d{1,20}$/)]).transform(e=>String(e)),k=d.z.object({id:h,type:u.z.string().max(32).optional(),title:u.z.string().max(256).optional(),first_name:u.z.string().max(256).optional(),username:u.z.string().max(64).optional()}),y=d.z.object({id:h,is_bot:c.z.boolean().optional()}),w=d.z.object({message_id:l.z.number().int(),chat:k,from:y.optional(),text:u.z.string().max(4096).optional()}),b=d.z.object({update_id:l.z.number().int(),message:w.optional(),callback_query:d.z.object({id:u.z.string().min(1).max(128),from:y,message:w.optional(),data:u.z.string().max(64).optional()}).optional()});e.s(["i",0,8,"y",0,function(e,t={}){let r=t.fetch??fetch,a=async(t,a)=>{let n=await (0,p.z)(e,t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)},r);n.ok||/not modified/i.test(n.description)||console.warn(`telegram ${t} failed (${n.code??"network"})`)};return{answer:(e,t)=>a("answerCallbackQuery",{callback_query_id:e,text:t.slice(0,200)}),editText:(e,t,r,n)=>a("editMessageText",{chat_id:e,message_id:t,text:r,parse_mode:"HTML",link_preview_options:{is_disabled:!0},reply_markup:n??f}),editKeyboard:(e,t,r)=>a("editMessageReplyMarkup",{chat_id:e,message_id:t,reply_markup:r}),send:(e,t)=>a("sendMessage",{chat_id:e,text:t,parse_mode:"HTML",link_preview_options:{is_disabled:!0}})}},"v",0,e=>`${(e.title??e.first_name??e.username??"Chat").slice(0,50)} (${e.type??"chat"})`,"F",0,g,"z",0,()=>{m++},"j",0,function(e){let t=/^\/link(?:@[A-Za-z0-9_]{3,64})?\s+([A-Za-z0-9]{4,16})\s*$/.exec(e??"");return t?t[1].toUpperCase():null},"c",0,function(e){let t=b.safeParse(e);return t.success?t.data:null},"p",0,function(e,t){if("string"!=typeof e||"string"!=typeof t||!e||!t)return!1;let r=(0,o.createHash)("sha256").update(e,"utf8").digest(),a=(0,o.createHash)("sha256").update(t,"utf8").digest();return(0,o.timingSafeEqual)(r,a)}],860320);let v="telegram.owner",$="telegram.linkCode",I="telegram.seenChats",A=()=>(0,i.f)().OPS_ENCRYPTION_KEY;async function R(e){let[n]=await (0,r.f)().select({value:a.settings.value}).from(a.settings).where((0,t.u)(a.settings.key,e)).limit(1);return n?.value??null}async function x(e,t){await (0,r.f)().insert(a.settings).values({key:e,value:t}).onConflictDoUpdate({target:a.settings.key,set:{value:t,updatedAt:new Date}})}async function j(e){await (0,r.f)().delete(a.settings).where((0,t.u)(a.settings.key,e))}function S(e){let t=e?.sealed;if(!t||"string"!=typeof t.ciphertext||"string"!=typeof t.iv)return null;try{return(0,n.K)(t,A())}catch{return null}}let _=(e,t)=>({sealed:(0,n.l)(e,A()),at:t.toISOString()}),T=null;async function O(e=Date.now()){if(T&&T.until>e)return T.secret;let t=S(await R("telegram.webhook"));return T={secret:t,until:e+3e4},t}let P=async()=>await O()!==null;async function M(){let e,n=S(await R(v));if(!n)return null;try{e=JSON.parse(n)}catch{return null}if("string"!=typeof e.tg||"string"!=typeof e.member)return null;let[i]=await (0,r.f)().select({id:a.members.id,userId:a.members.userId}).from(a.members).where((0,t.b)((0,t.u)(a.members.id,e.member),(0,t.u)(a.members.role,"owner"))).limit(1);return i?{telegramUserId:e.tg,memberId:i.id,userId:i.userId}:null}let N=async()=>await M()!==null;async function D(e,n,i){let o=await R($);if(!o||"string"!=typeof o.hash||"string"!=typeof o.member||"string"!=typeof o.expiresAt)return"expired";if(Date.parse(o.expiresAt)<=i.getTime())return await j($),"expired";let s="number"==typeof o.tries?o.tries:0;if(!function(e,t){if(e.length!==t.length||!e)return!1;let r=0;for(let a=0;a<e.length;a++)r|=e.charCodeAt(a)^t.charCodeAt(a);return 0===r}(8===e.length?g(e):"",o.hash))return s+1>=5?await j($):await x($,{...o,tries:s+1}),"wrong";let[l]=await (0,r.f)().select({id:a.members.id}).from(a.members).where((0,t.b)((0,t.u)(a.members.id,o.member),(0,t.u)(a.members.role,"owner"))).limit(1);return(await j($),l)?(await x(v,_(JSON.stringify({tg:n,member:l.id}),i)),"linked"):"expired"}async function z(){let e=S(await R(I));if(!e)return[];try{let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>!!e&&"string"==typeof e.id&&"string"==typeof e.label&&"string"==typeof e.at).slice(0,10):[]}catch{return[]}}async function C(e,t){var r;let a,n=(r=await z(),(a=r.find(t=>t.id===e.id))&&a.label===e.label&&t.getTime()-Date.parse(a.at)<36e5&&r[0]?.id===e.id?null:[{id:e.id,label:e.label,at:t.toISOString()},...r.filter(t=>t.id!==e.id)].slice(0,10));n&&await x(I,_(JSON.stringify(n),t))}e.s(["E",0,M,"I",0,N,"P",0,C,"f",0,D,"v",0,P,"g",0,O],983128)},620511,e=>{let t=/^[A-Za-z0-9-]{1,39}\/[A-Za-z0-9._-]{1,100}$/,r=/^watchpost\/deps-[0-9a-f]{8}$/,a=/^(?:[A-Za-z0-9._-]+\/){0,4}package-lock\.json$/,n=e=>"string"==typeof e&&t.test(e)&&!e.includes("..");e.s(["h",0,"deps.lockfileActions","w",0,6e5,"C",0,function(e){let t=e.lockfilePath??"package-lock.json";return!n(e.repo)||!r.test(e.branch)||!a.test(t)||t.includes("..")||!Number.isInteger(e.prNumber)||e.prNumber<1?null:{repo:e.repo,branch:e.branch,lockfile:t,pr:e.prNumber}},"g",0,function(e){let t=e&&"object"==typeof e&&!Array.isArray(e)?e.repo:null;return{repo:n(t)?t:null}}])},975912,e=>{var t=e.i(250474),r=e.i(32391),a=e.i(313931);let n=["dependencies","devDependencies","optionalDependencies"],i="watchpost/deps-",o=e=>"object"==typeof e&&null!==e&&!Array.isArray(e),s=e=>{let t=e.filter(e=>!e.companionOf);return t.length?t:e},l={npm:"npm install",pnpm:"pnpm install",yarn:"yarn install",bun:"bun install","package-json":"npm install"};e.s(["M",0,function(e,t){let r;try{r=JSON.parse(e)}catch{return null}if(!o(r))return null;for(let e of t){let t=r[e.group];if(!o(t)||t[e.package]!==e.from)return null;t[e.package]=e.to}let a=/^[{[]\r?\n([ \t]+)\S/.exec(e),n=a?a[1]:" ",i=e.includes("\r\n")?"\r\n":"\n",s=JSON.stringify(r,null,n);return"\r\n"===i&&(s=s.replace(/\n/g,"\r\n")),/\r?\n$/.test(e)?s+i:s},"U",0,function(e,t=null){let r=e.map(e=>`${e.package}@${e.to}`).sort().join(",");return`${i}${function(e){let t=0x811c9dc5;for(let r=0;r<e.length;r++)t^=e.charCodeAt(r),t=Math.imul(t,0x1000193)>>>0;return t.toString(16).padStart(8,"0")}(t?`${t}|${r}`:r)}`},"G",0,function(e){let t=s(e);return 1===t.length?`chore(deps): update ${t[0].package} to ${t[0].fixed} (security fix)`:`chore(deps): update ${t.length} packages for security fixes`},"c",0,(e,t)=>e.startsWith(i)&&/^watchpost\/deps-[0-9a-f]{8}$/.test(e)&&e!==t,"k",0,function(e,a){let i;try{i=JSON.parse(e)}catch{return null}if(!o(i))return null;let s=[];for(let e of a)if((0,r.L)(e.package)&&(0,r.C)(e.to))for(let a of n){let n=i[a];if(!o(n)||"string"!=typeof n[e.package])continue;let l=n[e.package],u=(0,r.Y)(l),d=function(e,t){let a=/^\s*(\^|~|>=|=)?\s*v?\d+(?:\.(?:\d+|x|\*))?(?:\.(?:\d+|x|\*))?(?:-[0-9A-Za-z.-]+)?\s*$/.exec(e);return a&&(0,r.C)(t)?`${a[1]??""}${t}`:null}(l,e.to);!u||!d||(0,t.f)(u,e.to)>=0||s.push({package:e.package,group:a,from:l,to:d,fixed:e.to,vulnIds:e.vulnIds,cves:e.cves,...e.companionOf?{companionOf:e.companionOf}:{}})}return s},"y",0,function(e,t,r=!1,n=null){let i=l[t??"npm"]??"npm install",o=`run \`${i}\`${n?` in \`${n}\``:""}`,s=e.filter(e=>!e.companionOf),u=e.filter(e=>e.companionOf),d=s.map(e=>{let t=[...e.cves,...e.vulnIds.filter(t=>!e.cves.includes(t))].slice(0,4).map(e=>`[${e}](https://osv.dev/vulnerability/${encodeURIComponent(e)})`).join(", ");return`| \`${e.package}\` | \`${e.from}\` | \`${e.to}\` | ${t||"-"} |`});return[r?"This PR was opened **automatically** by Watchbell (Automatic security fixes). Watchbell merges it itself when CI is green, the Vercel preview is READY and passes the smoke test, and auto-rollback is on; if anything fails, the PR stays open for you to check.":a.J.prApproved,"","These packages have known vulnerabilities (source: OSV.dev / GitHub Advisory) and a fixed version exists:","","| Package | Current version | New version | Advisory |","| --- | --- | --- | --- |",...d,"",...u.map(e=>`Updated to match ${e.companionOf} (no advisory of its own): \`${e.package}\` \`${e.from}\` → \`${e.to}\`.`),...u.length?[""]:[],"### Important: the lockfile is not updated","",r?`Watchbell only changes \`package.json\`; it can't regenerate the lockfile on the server. Vercel installs the new version at build time, so production is safe after the merge. Afterwards ${o} on the main branch and commit the lockfile to bring it up to date.`:`Watchbell only changes \`package.json\`; it can't regenerate the lockfile on the server. Before merging, check out this branch, ${o}, then commit the changed lockfile. Then make sure the build and tests still pass.`,"","Vulnerable packages that are only installed through other packages (transitive) are not changed here; check with `npm audit` after installing.","","_Nothing is pushed to the main branch: all changes are on this PR branch._"].join("\n")},"f",0,function(e,t=null){let r=s(e),a=t?` in ${t}`:"",n=1===r.length?`Watchbell: update ${r[0].package} to ${r[0].fixed}${a} (security fix)`:`Watchbell: update ${r.length} vulnerable packages${a} (${r.slice(0,2).map(e=>e.package).join(", ")}${r.length>2?", …":""})`;return n.length>200?`${n.slice(0,199)}…`:n}])},256662,e=>{let t={checks:"waiting for CI",preview:"waiting for preview",smoke:"smoke test",merging:"merging…",merged:"merged ✅","ready-manual":"ready to merge (manual)",failed:"needs a look ⚠️",timeout:"needs a look ⚠️",closed:"closed"},r=new Set(["success","neutral","skipped"]),a=e=>"completed"!==e.status?"pending":r.has(e.conclusion??"")?"success":"failure",n={name:"watchbell[bot]",email:"watchbell-bot@users.noreply.github.com",message:"chore(deps): update package-lock.json (Watchbell)"},i={name:"watchpost[bot]",email:"watchpost-bot@users.noreply.github.com",message:"chore(deps): update package-lock.json (Watchpost)"},o=e=>[n,i].some(t=>e.name===t.name&&e.email.toLowerCase()===t.email&&e.message.trim()===t.message),s=/^[\^~]?[0-9][0-9A-Za-z.+-]*$/,l=e=>Array.isArray(e)?e.map(l):e&&"object"==typeof e?Object.fromEntries(Object.keys(e).sort().map(t=>[t,l(e[t])])):e,u=/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/,d=/^sha512-[A-Za-z0-9+/]{86}==$/,c="(?:@[a-z0-9][a-z0-9._~-]*/)?[a-z0-9][a-z0-9._~-]*",p=RegExp(`^(?:[A-Za-z0-9_-][A-Za-z0-9._-]*/)*?node_modules/${c}(?:/node_modules/${c})*$`,"i"),f=new Set(["dev","optional","devOptional","peer"]),m=e=>!!e&&"object"==typeof e&&!Array.isArray(e),g=e=>e.slice(e.lastIndexOf("node_modules/")+13),h=(e,t,r)=>`${e}/${t}/-/${t.split("/").pop()}-${r}.tgz`,k=(e,t)=>JSON.stringify(l(e))===JSON.stringify(l(t)),y=e=>Object.fromEntries(Object.entries(e).filter(([e])=>!f.has(e))),w=e=>{try{let t=JSON.parse(e);return m(t)&&m(t.packages)?t:null}catch{return null}};e.s(["y",0,20,"X",0,["checks","preview","smoke","merging"],"w",0,15e3,"R",0,27e5,"j",0,function(e){let t=(e.checkRuns??e.actionRuns??[]).map(a);return(e.combined&&e.combined.total>0&&t.push("success"===e.combined.state?"success":"pending"===e.combined.state?"pending":"failure"),t.includes("failure"))?"failure":t.includes("pending")?"pending":"success"},"L",0,function(e){if(!e.length||e.some(e=>e.authWall))return null;let t=e.find(e=>null===e.status||e.status<200||e.status>399);return t?{mode:"http",result:"fail",reason:null===t.status?`${t.path} didn't answer within 15 seconds`:`${t.path} answered ${t.status}`}:{mode:"http",result:"pass",reason:null}},"S",0,function(e,t,r){return(401===e||403===e)&&(/vercel\.com\/(sso|login)|Authentication Required|_vercel_sso|vercel-authentication/i.test(t)||/_vercel_sso/i.test(r.get("set-cookie")??"")||"vercel"===(r.get("server")??"").toLowerCase())},"T",0,function(e,t,r){if([e,t].some(e=>null!==e&&(e=>{if(e.length>0x1900000)return!0;if(3*e.length<=0x1900000)return!1;let t=0;for(let r=0;r<e.length;r++){let a=e.charCodeAt(r);a<128?t+=1:a<2048?t+=2:a>=55296&&a<56320&&(64512&e.charCodeAt(r+1))==56320?(t+=4,r++):t+=3}return t>0x1900000})(e)))return`lockfile too large to check (over 25 MB): ${r}`.slice(0,150);try{return function(e,t,r){let a=e=>`unexpected lockfile change ${e}`.slice(0,150),n=null===t?null:w(t),i=null===e?{packages:{}}:w(e);if(!n||!i)return a(r);if(2!==n.lockfileVersion&&3!==n.lockfileVersion||null!==e&&n.lockfileVersion!==i.lockfileVersion)return a("lockfileVersion");let o=new Set;for(let[e,t]of Object.entries(i.packages)){if(!p.test(e)||!m(t)||"string"!=typeof t.resolved||"string"!=typeof t.version)continue;let r=h("","string"==typeof t.name?t.name:g(e),t.version);t.resolved.startsWith("https://")&&t.resolved.endsWith(r)&&o.add(t.resolved.slice(0,-r.length))}for(let[e,t]of(o.size||o.add("https://registry.npmjs.org"),Object.entries(n.packages))){let n=Object.hasOwn(i.packages,e)?i.packages[e]:void 0;if(void 0!==n&&k(n,t))continue;let s=m(n)?n:null;if(""===e||!e.includes("node_modules/")){let n=""===e?m(t)&&"string"==typeof t.name?t.name:r:e;if(!m(t)||""!==e&&!s||"resolved"in t||"link"in t)return a(n);continue}if(!p.test(e)||!m(t))return a(p.test(e)?g(e):e);let l=g(e);if(void 0!==t.name&&t.name!==l&&(!s||s.name!==t.name))return a(l);let c="string"==typeof t.name?t.name:l,f=t.version;if(void 0!==t.link||"string"!=typeof f||!u.test(f)||"string"!=typeof t.integrity||!d.test(t.integrity)||"string"!=typeof t.resolved||![...o].some(e=>t.resolved===h(e,c,f))||s&&s.version===f&&!k(y(s),y(t)))return a(l)}return null}(e,t,r)}catch{return`unexpected lockfile change ${r} (couldn't be checked)`.slice(0,150)}},"H",0,e=>!!e.lockfileRequired&&!!e.lockfile&&!e.files.some(t=>t.filename===e.lockfile),"n",0,function(e,t,r){return null!==r&&r>0?{mode:"logs",result:"fail",reason:`${r} errors in the preview logs`}:t.getTime()-e.getTime()<18e4||null===r?{mode:"logs",result:"wait",reason:null}:{mode:"logs",result:"pass",reason:null}},"C",0,function(e,t,r){let a,n;try{a=JSON.parse(e),n=JSON.parse(t)}catch{return"unexpected change: package.json isn't valid JSON"}if(!a||!n||"object"!=typeof a||"object"!=typeof n)return"unexpected change: package.json isn't an object";let i=e=>{let t=structuredClone(e);for(let e of["dependencies","devDependencies"]){let a=t[e];if(a&&"object"==typeof a)for(let e of r)delete a[e]}return t};if(JSON.stringify(l(i(a)))!==JSON.stringify(l(i(n))))return"unexpected change in package.json beyond the bumped versions";for(let e of["dependencies","devDependencies"]){let t=a[e]??{},i=n[e]??{};for(let e of r){if(e in t!=e in i)return`unexpected change in package.json: ${e} added or removed`;if(e in i&&i[e]!==t[e]&&("string"!=typeof i[e]||!s.test(i[e])))return`unexpected change in package.json: ${e} isn't a plain version`}}return null},"E",0,function(e){let t=["/"];for(let r of e){let e;try{e=new URL(r).pathname||"/"}catch{continue}!t.includes(e)&&t.length<4&&t.push(e)}return t},"m",0,(e,r,a)=>{let n=`PR #${e}: ${t[r]}${a?` — ${a}`:""}`;return n.length>200?`${n.slice(0,199)}…`:n},"k",0,function(e){let t=new Set([e.manifest,...e.lockfile?[e.lockfile]:[]]);for(let r of e.files)for(let e of[r.filename,r.previous])if(e&&!t.has(e))return`unexpected change in ${e}`.slice(0,150);if(!e.files.some(t=>t.filename===e.manifest))return`unexpected change: ${e.manifest} isn't changed`.slice(0,150);if(e.manifestProblem)return e.manifestProblem.slice(0,150);if(e.lockfileProblem)return e.lockfileProblem.slice(0,150);if(!e.tokenLogin||!e.commits.length||e.commits.length>20)return"couldn't confirm who wrote the PR's commits";if(e.headSha&&e.commits[e.commits.length-1].sha!==e.headSha)return"the PR's head moved while it was checked";for(let t of e.commits){if(null!==t.login&&t.login.toLowerCase()===e.tokenLogin.toLowerCase())continue;let r=t.sha.slice(0,7);if(!o(t)||!t.files||!e.lockfile)return`unexpected commit ${r} by ${t.login??t.name}`.slice(0,150);let a=t.files.find(t=>t!==e.lockfile);if(a)return`unexpected change in ${a} by commit ${r}`.slice(0,150)}return null},"f",0,function(e,t){let r=e.getTime();return(null===t||!(r-t<1e5))&&(Math.floor(r/6e4)%2==0||null!==t&&r-t>=24e4)},"M",0,function(e){if(e.pr.merged)return{kind:"done",stage:"merged"};if("closed"===e.pr.state)return{kind:"done",stage:"closed"};if(void 0!==e.pr.base&&void 0!==e.recordedBase&&e.pr.base!==e.recordedBase)return{kind:"stop",stage:"failed",reason:`the PR's base changed to ${e.pr.base}`};if(e.pr.headSha!==e.recordedSha)return{kind:"wait",stage:"checks",reason:"new commit on the PR branch, checking again",resetSha:e.pr.headSha};let t=e.now.getTime()-e.openedAt.getTime()>27e5;return"failure"===e.checks?{kind:"stop",stage:"failed",reason:"CI failed"}:!1===e.pr.mergeable?{kind:"stop",stage:"failed",reason:"conflicts with the main branch"}:"error"===e.preview.state?{kind:"stop",stage:"failed",reason:"Vercel preview failed"}:"canceled"===e.preview.state?{kind:"stop",stage:"failed",reason:"Vercel canceled the preview (an Ignored Build Step that skips previews does this), so the update wasn't smoke-tested; check it and merge by hand"}:"pending"===e.checks||null===e.pr.mergeable?t?{kind:"stop",stage:"timeout",reason:"CI not finished within 45 minutes"}:{kind:"wait",stage:"checks",reason:null}:"ready"!==e.preview.state?t?{kind:"stop",stage:"timeout",reason:"preview not ready within 45 minutes"}:{kind:"wait",stage:"preview",reason:null}:e.smoke&&"wait"!==e.smoke.result?"fail"===e.smoke.result?{kind:"stop",stage:"failed",reason:`preview smoke test failed: ${e.smoke.reason??"?"}`}:e.autoRollbackOn?{kind:"merge"}:{kind:"stop",stage:"ready-manual",reason:"PR is ready to merge, but auto-rollback is off; merge it manually"}:t?{kind:"stop",stage:"timeout",reason:"preview smoke test not finished within 45 minutes"}:{kind:"wait",stage:"smoke",reason:null}}])},267841,e=>{var t=e.i(971724),r=e.i(105954),a=e.i(180473),n=e.i(600205),i=e.i(455744),o=e.i(206033),s=e.i(604147),l=e.i(975912),u=e.i(455037);async function d(e,t,r,a,n,i=!1){let o,s=n.timeoutMs??8e3;try{o=await (n.fetch??fetch)(`https://api.github.com${t}`,{method:e,headers:{Authorization:`Bearer ${r}`,Accept:i?"application/vnd.github.raw+json":"application/vnd.github+json","X-GitHub-Api-Version":"2022-11-28","User-Agent":"Watchbell",...void 0!==a?{"Content-Type":"application/json"}:{}},body:void 0!==a?JSON.stringify(a):void 0,signal:AbortSignal.timeout(s),cache:"no-store",redirect:"error"})}catch(e){return{ok:!1,kind:"transient",error:e instanceof DOMException&&("TimeoutError"===e.name||"AbortError"===e.name)?`GitHub didn't answer within ${Math.round(s/1e3)} seconds.`:"Couldn't reach GitHub."}}let l=await o.text().catch(()=>"");if(i&&o.ok)return{ok:!0,status:o.status,data:l};let u=null;try{u=l?JSON.parse(l):null}catch{u=null}if(o.ok)return{ok:!0,status:o.status,data:u};let c=o.status;return 401===c?{ok:!1,kind:"auth",status:c,error:"GitHub rejected the PR-write token (401). It may have expired or been revoked."}:429===c||403===c&&"0"===o.headers.get("x-ratelimit-remaining")?{ok:!1,kind:"transient",status:c,error:"GitHub's rate limit is used up for now. Try again later."}:403===c?{ok:!1,kind:"scope",status:c,error:"The GitHub PR-write token can't do this (403). It needs Contents and Pull requests: Read and write on this repository."}:404===c?{ok:!1,kind:"missing",status:c,error:"The PR-write token doesn't see this repository (404). Give it access to the repository."}:409===c||422===c?{ok:!1,kind:"format",status:c,error:`GitHub refused the change (${c}).`}:{ok:!1,kind:"transient",status:c,error:`GitHub returned an error (${c}).`}}let c=e=>({ok:!1,kind:"format",error:`GitHub answered ${e} in a format the console doesn't recognise.`}),p={ok:!1,kind:"format",error:"That isn't a repository or branch the console may write."};async function f(e,n,i={}){if(!(0,u.M)(n))return p;let o=await d("GET",`/repos/${(0,u.f)(n)}`,e,void 0,i);if(!o.ok)return o;let s=t.z.object({default_branch:r.z.string(),permissions:t.z.object({push:a.z.boolean()}).partial().optional()}).safeParse(o.data);return s.success&&(0,u.c)(s.data.default_branch)?{ok:!0,data:{defaultBranch:s.data.default_branch,canPush:s.data.permissions?.push??null}}:c("the repository")}async function m(e,a,n,i={}){if(!(0,u.M)(a)||!(0,u.c)(n))return p;let o=await d("GET",`/repos/${(0,u.f)(a)}/git/ref/heads/${n.split("/").map(encodeURIComponent).join("/")}`,e,void 0,i);if(!o.ok)return"missing"===o.kind?{ok:!0,data:null}:o;let s=t.z.object({object:t.z.object({sha:r.z.string().regex(/^[0-9a-f]{40}$/)})}).safeParse(o.data);return s.success?{ok:!0,data:s.data.object.sha}:c("the branch")}let g=/^(?:[A-Za-z0-9._-]{1,100}\/){0,6}package\.json$/,h=e=>g.test(e)&&!e.split("/").some(e=>"."===e||".."===e),k=(e,t)=>`/repos/${(0,u.f)(e)}/contents/${t.split("/").map(encodeURIComponent).join("/")}`;async function y(e,a,i,o={},s="package.json"){if(!(0,u.M)(a)||!(0,u.c)(i)||!h(s))return p;let l=await d("GET",`${k(a,s)}?ref=${encodeURIComponent(i)}`,e,void 0,o);if(!l.ok)return"missing"===l.kind?{ok:!0,data:null}:l;let f=t.z.object({sha:r.z.string(),encoding:n.z.literal("base64"),content:r.z.string()}).safeParse(l.data);return f.success?{ok:!0,data:{sha:f.data.sha,text:Buffer.from(f.data.content.replace(/\s/g,""),"base64").toString("utf8")}}:c("package.json")}let w=/^(?:[A-Za-z0-9._-]{1,100}\/){0,6}(?:package-lock|npm-shrinkwrap)\.json$/,b=e=>w.test(e)&&!e.split("/").some(e=>"."===e||".."===e);async function v(e,t,r,a,n={}){if(!(0,u.M)(t)||!(0,u.c)(r)||!b(a))return p;let i=await d("GET",`${k(t,a)}?ref=${encodeURIComponent(r)}`,e,void 0,{timeoutMs:2e4,...n},!0);return i.ok?"string"==typeof i.data?{ok:!0,data:i.data}:c("the lockfile"):"missing"===i.kind?{ok:!0,data:null}:i}let $=/^watchbell\/build-files-[0-9a-f]{8}$/,I=(e,t)=>(0,l.c)(e,t)||$.test(e)&&e!==t;async function A(e,t,r,a,n,i={}){if(!(0,u.M)(t)||!I(r,n)||!/^[0-9a-f]{40}$/.test(a))return p;let o=await d("POST",`/repos/${(0,u.f)(t)}/git/refs`,e,{ref:`refs/heads/${r}`,sha:a},i);return o.ok?{ok:!0,data:!0}:o}async function R(e,t,r,a,n,i,o,s={},c="package.json"){if(!(0,u.M)(t)||!(0,l.c)(r,a)||!h(c))return p;let f=await d("PUT",k(t,c),e,{message:o,content:Buffer.from(n,"utf8").toString("base64"),sha:i,branch:r},s);return f.ok?{ok:!0,data:!0}:f}let x=t.z.object({number:o.z.number(),html_url:r.z.string().startsWith("https://github.com/")});async function j(e,t,r,a,n,o={}){if(!(0,u.M)(t)||!(0,l.c)(a,n))return p;let s=new URLSearchParams({state:"open",head:`${r}:${a}`,per_page:"1"}),f=await d("GET",`/repos/${(0,u.f)(t)}/pulls?${s}`,e,void 0,o);if(!f.ok)return f;let m=i.z.array(x).safeParse(f.data);if(!m.success)return c("the pull requests");let g=m.data[0];return{ok:!0,data:g?{number:g.number,url:g.html_url}:null}}async function S(e,t,r,a,n,i,o={},s={}){if(!(0,u.M)(t)||!I(r,a)||!(0,u.c)(a))return p;let l=await d("POST",`/repos/${(0,u.f)(t)}/pulls`,e,{title:n,head:r,base:a,body:i,maintainer_can_modify:!0,...s.draft?{draft:!0}:{}},o);if(!l.ok)return l;let f=x.safeParse(l.data);return f.success?{ok:!0,data:{number:f.data.number,url:f.data.html_url}}:c("the new pull request")}let _=i.z.array(t.z.object({number:o.z.number(),title:r.z.string(),head:t.z.object({ref:r.z.string(),sha:r.z.string(),repo:t.z.object({full_name:r.z.string()}).nullable()}),base:t.z.object({ref:r.z.string()})}));async function T(e,t,r={}){if(!(0,u.M)(t))return p;let a=await d("GET",`/repos/${(0,u.f)(t)}/pulls?state=open&per_page=100`,e,void 0,r);if(!a.ok)return a;let n=_.safeParse(a.data);return n.success?{ok:!0,data:n.data.filter(e=>/^watchpost\/deps-[0-9a-f]{8}$/.test(e.head.ref)&&e.head.repo?.full_name===t).map(e=>({number:e.number,branch:e.head.ref,title:e.title,headSha:e.head.sha,base:e.base.ref}))}:c("the pull requests")}async function O(e,n,i,o={}){if(!(0,u.M)(n)||!Number.isInteger(i)||i<=0)return p;let l=await d("GET",`/repos/${(0,u.f)(n)}/pulls/${i}`,e,void 0,o);if(!l.ok)return l;let f=t.z.object({state:s.z.enum(["open","closed"]),merged:a.z.boolean().optional(),mergeable:a.z.boolean().nullable().optional(),head:t.z.object({ref:r.z.string(),sha:r.z.string().regex(/^[0-9a-f]{40}$/)}),base:t.z.object({ref:r.z.string()})}).safeParse(l.data);return f.success?{ok:!0,data:{state:f.data.state,merged:!0===f.data.merged,mergeable:f.data.mergeable??null,headSha:f.data.head.sha,branch:f.data.head.ref,base:f.data.base.ref}}:c("the pull request")}async function P(e,a,n,s={}){if(!(0,u.M)(a)||!/^[0-9a-f]{40}$/.test(n))return p;let[l,c]=await Promise.all([d("GET",`/repos/${(0,u.f)(a)}/commits/${n}/check-runs?per_page=100`,e,void 0,s),d("GET",`/repos/${(0,u.f)(a)}/commits/${n}/status`,e,void 0,s)]),f=e=>!e.ok&&("scope"===e.kind||"missing"===e.kind);if(!l.ok&&!f(l))return l;if(!c.ok&&!f(c))return c;let m=l.ok?t.z.object({check_runs:i.z.array(t.z.object({status:r.z.string(),conclusion:r.z.string().nullable()}))}).safeParse(l.data):null,g=c.ok?t.z.object({state:r.z.string(),total_count:o.z.number()}).safeParse(c.data):null;return{ok:!0,data:{checkRuns:m?.success?m.data.check_runs.map(e=>({status:e.status,conclusion:e.conclusion})):null,combined:g?.success?{state:g.data.state,total:g.data.total_count}:null}}}async function M(e,n,i,o,s,f,m,g={}){if(!(0,u.M)(n)||!(0,l.c)(o,s)||!/^[0-9a-f]{40}$/.test(f)||!Number.isInteger(i)||i<=0)return p;let h=await d("PUT",`/repos/${(0,u.f)(n)}/pulls/${i}/merge`,e,{merge_method:"squash",sha:f,commit_title:`Watchbell: ${m.replace(/^Watch(?:bell|post):\s*/,"")}`.slice(0,250)},g);if(!h.ok)return 405===h.status?{ok:!1,kind:"format",status:405,error:"GitHub says the PR can't be merged now (405)."}:409===h.status?{ok:!1,kind:"format",status:409,error:"The PR's head moved since the checks were read (409)."}:h;let k=t.z.object({merged:a.z.boolean(),sha:r.z.string()}).safeParse(h.data);return k.success&&k.data.merged?{ok:!0,data:{sha:k.data.sha}}:c("the merge")}async function N(e,a,n,o={}){if(!(0,u.M)(a)||!Number.isInteger(n)||n<=0)return p;let s=await d("GET",`/repos/${(0,u.f)(a)}/pulls/${n}/files?per_page=100`,e,void 0,o);if(!s.ok)return s;let l=i.z.array(t.z.object({filename:r.z.string(),previous_filename:r.z.string().optional()})).safeParse(s.data);return l.success?{ok:!0,data:l.data.map(e=>({filename:e.filename,previous:e.previous_filename??null}))}:c("the PR's files")}let D=t.z.object({name:r.z.string().optional(),email:r.z.string().optional()}).nullable().optional();async function z(e,a,n,o={}){if(!(0,u.M)(a)||!Number.isInteger(n)||n<=0)return p;let s=await d("GET",`/repos/${(0,u.f)(a)}/pulls/${n}/commits?per_page=100`,e,void 0,o);if(!s.ok)return s;let l=i.z.array(t.z.object({sha:r.z.string().regex(/^[0-9a-f]{40}$/),author:t.z.object({login:r.z.string()}).nullable().optional(),commit:t.z.object({message:r.z.string(),author:D})})).safeParse(s.data);return l.success?{ok:!0,data:l.data.map(e=>({sha:e.sha,login:e.author?.login??null,name:e.commit.author?.name??"",email:e.commit.author?.email??"",message:e.commit.message}))}:c("the PR's commits")}async function C(e,a,n,o={}){if(!(0,u.M)(a)||!/^[0-9a-f]{40}$/.test(n))return p;let s=await d("GET",`/repos/${(0,u.f)(a)}/commits/${n}`,e,void 0,o);if(!s.ok)return s;let l=t.z.object({files:i.z.array(t.z.object({filename:r.z.string(),previous_filename:r.z.string().optional()}))}).safeParse(s.data);return l.success?{ok:!0,data:l.data.files.flatMap(e=>[e.filename,...e.previous_filename?[e.previous_filename]:[]])}:c("the commit")}async function E(e,a={}){let n=await d("GET","/user",e,void 0,a);if(!n.ok)return n;let i=t.z.object({login:r.z.string().min(1)}).safeParse(n.data);return i.success?{ok:!0,data:i.data.login}:c("the token's user")}async function K(e,t,r,a={}){if(!/^[A-Za-z0-9-]{1,39}\/[A-Za-z0-9._-]{1,100}$/.test(t))return p;let n=await d("POST",`/repos/${t}/dispatches`,e,{event_type:"watchpost-lockfile",client_payload:r},a);return n.ok?{ok:!0,data:!0}:n}e.s(["M",0,m,"s",0,P,"h",0,C,"k",0,A,"y",0,S,"B",0,K,"$",0,b,"l",0,v,"E",0,y,"C",0,M,"x",0,j,"e",0,T,"P",0,z,"O",0,N,"b",0,O,"D",0,R,"H",0,f,"z",0,E])},154586,e=>{var t=e.i(278619),r=e.i(313931);let a={workloads:"Workloads",databases:"Databases",network:"Network",observe:"Observe",ai:"AI & API",admin:"Administration"},n={MonitorDown:"workloads",HighLatency:"workloads",DeploymentFailed:"workloads",DatabasePaused:"databases",StorageAlmostFull:"databases",NeonComputeHigh:"databases",FirestoreQuotaHigh:"databases",AutoPauseRisk:"databases",ComputeHigh:"databases",DbQuotaHigh:"databases",CertExpiringSoon:"network",DomainExpiringSoon:"network",DnsProxiedToVercel:"network",CollectorStale:"observe",CredentialExpiring:"admin",VulnerableDependency:"workloads",FrameworkVulnerable:"workloads",MonitorDomainMoved:"workloads",CiFailing:"workloads",OsSecurityUpdate:"observe",ReportSendFailed:"observe"},i=new Set(["MonitorDown","HighLatency","DeploymentFailed","VulnerableDependency","FrameworkVulnerable","MonitorDomainMoved","CiFailing"]);e.s(["p",0,function(e){if((0,t.h)(e.ruleKey))return i.has(e.ruleKey)&&null!==e.resourceKind&&"app"!==e.resourceKind?"observe":n[e.ruleKey];let r=new Set(e.ruleKey.replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/([A-Z]+)([A-Z][a-z])/g,"$1 $2").toLowerCase().split(/[^a-z0-9]+/).filter(Boolean)),a=(...e)=>e.some(e=>r.has(e));return a("ai","router","gateway","model","models","provider","quota","llm","gemini")?"ai":a("key","keys","member","members","security","audit","credential","credentials","mfa","token")?"admin":a("database","db","storage","compute","neon","supabase","firestore","firebase")?"databases":a("domain","domains","dns","cert","certificate","tls","zone")?"network":"app"===e.resourceKind?"workloads":"observe"},"y",0,e=>r.X.proposedBy(a[e])])},549419,143926,e=>{var t=e.i(635982),r=e.i(377489),a=e.i(154586),n=e.i(365156),i=e.i(588492);let o=["LogErrorSpike","LogErrors","LogDbErrors"],s="timeout|ECONNREFUSED|too many connections|terminating connection|connection terminated|endpoint is disabled|compute.*suspend";RegExp(s,"i");let l=/^dpl_[A-Za-z0-9]{8,40}$/,u=/^ep-[a-z0-9-]{3,60}$/,d=/^[a-z0-9]{8,40}$/;function c(e,a,n){let i=a?(0,t.g)(a,n,120):"";return(0,r.l)((0,t.g)(i?`${e}. Most common: ${i}`:e,n,r.j)||e,r.j)}let p=e=>`${e.ruleKey}:${e.resourceId??""}:${e.action}`,f=new Set(["pending","approved","running"]);e.s(["s",0,864e5,"b",0,72e5,"V",0,3,"N",0,s,"G",0,20,"T",0,o,"v",0,72e5,"H",0,18e5,"w",0,10,"I",0,72e5,"x",0,function(e,t,r){let a=new Set(t.filter(e=>f.has(e.status)||null!==e.closedAt&&r.getTime()-e.closedAt.getTime()<72e5).map(p)),n=new Set;return e.filter(e=>{let t=p(e);return!(a.has(t)||n.has(t))&&(n.add(t),!0)})},"t",0,function(e,t,o){return(function(e,t,a){let n=[],o=a.getTime(),s=null!==e.liveAt&&o-e.liveAt.getTime()<72e5&&e.liveAt.getTime()<=o,p=e.previousNext?.status??"unknown";if(s&&e.errorsSinceLive>=Math.max(10,Math.ceil(5*e.baselineErrors/24))&&e.currentId&&e.previousId&&l.test(e.previousId)&&e.previousId!==e.currentId&&"vulnerable"!==p){let a=c(`${e.errorsSinceLive} errors since the deploy went live ${Math.max(1,Math.round((o-e.liveAt.getTime())/6e4))} min ago (${e.baselineErrors} in the 24 h before)`,e.topSinceLive,t);n.push({ruleKey:"LogErrorSpike",room:"workloads",action:"vercel_rollback",resourceKind:"app",resourceId:e.appId,targetRef:e.previousId,reason:"ok"===p?a:(0,r.l)(`${i.B} ${a}`)})}let f=null!==e.lastDeployAt&&o-e.lastDeployAt.getTime()<72e5;if(e.errors30>=20&&!f&&e.httpMonitorId&&n.push({ruleKey:"LogErrors",room:"workloads",action:"recheck",resourceKind:"app",resourceId:e.appId,targetRef:e.httpMonitorId,reason:c(`${e.errors30} errors in the last 30 min`,e.top30,t)}),e.dbErrors30>=3&&e.db){let r=c(`${e.dbErrors30} database connection errors in the last 30 min`,e.topDb,t),a=e.db;("neon_project"===a.kind||"neon_branch"===a.kind)&&a.wakeEndpoint&&u.test(a.wakeEndpoint)?n.push({ruleKey:"LogDbErrors",room:"databases",action:"neon_wake",resourceKind:a.kind,resourceId:a.resourceId,targetRef:a.wakeEndpoint,reason:r}):"supabase_project"===a.kind&&a.supabasePaused&&a.supabaseRef&&d.test(a.supabaseRef)&&n.push({ruleKey:"LogDbErrors",room:"databases",action:"supabase_restore",resourceKind:a.kind,resourceId:a.resourceId,targetRef:a.supabaseRef,reason:r})}return n})(e,t,o).map(i=>{let s="app"===i.resourceKind?(0,r.J)("app",e.appId,e.appName,t):(0,r.J)(i.resourceKind,i.resourceId,null,t);return{alertId:null,ruleKey:i.ruleKey,room:i.room,action:i.action,risk:n.H[i.action].risk,title:(0,r.M)(i.action,s),reason:i.reason,resourceKind:i.resourceKind,resourceId:i.resourceId,resourceName:s,targetRef:i.targetRef,proposedBy:(0,a.y)(i.room),expiresAt:new Date(o.getTime()+n.V)}})},"D",0,function(e,t){let r=e.getTime();return(null===t||!(r-t<27e4))&&(Math.floor(r/6e4)%5==0||null!==t&&r-t>=6e5)},"W",0,function(e,t){let r=new Set(t.map(p));return e.filter(e=>{let t;return"pending"===e.status&&(t=e.ruleKey,o.includes(t))&&!r.has(p(e))}).map(e=>e.id)}],549419);let m=new Set(["MonitorDown","LogErrorSpike"]);e.s(["r",0,72e5,"M",0,m,"s",0,function(e,t){let r=e=>({ok:!1,why:e});if(!e.setting.enabled)return r("off");if(!e.ruleKey||!m.has(e.ruleKey))return r("rule");let a=e.deploy;if(!a||!a.liveAt)return r("no live deploy");let n=t.getTime()-a.liveAt.getTime();return n<0||n>6e4*e.setting.windowMin?r("outside the window"):a.previousId&&e.targetRef===a.previousId&&a.previousId!==a.currentId?a.newestProdCreatedAt&&a.currentCreatedAt.getTime()<a.newestProdCreatedAt.getTime()?r("live deploy is a rollback"):e.rolledOrPromotedLately?r("live deploy came from a rollback or promote"):"ready"!==(a.previousState??"").toLowerCase()?r("previous not ready"):!a.previousCreatedAt||t.getTime()-a.previousCreatedAt.getTime()>2592e6?r("previous too old"):"vulnerable"===e.previousNext?r("previous Next.js has advisories"):"ok"!==e.previousNext?r("previous Next.js unknown"):e.autoLately?r("auto-rollback within 2 h"):e.sameDeployBefore?r("already rolled back once"):e.inFlight?r("another auto-rollback is running"):{ok:!0}:r("target changed")},"u",0,(e,t,a)=>(0,r.l)(`Automatic: the new deploy ${e} errored in the first ${t} minutes. ${a}`),"E",0,e=>e.currentSha&&/^[0-9a-f]{7,40}$/i.test(e.currentSha)?e.currentSha.slice(0,7):e.currentId.slice(0,16)],143926)},447933,e=>{let t;var r,a=e.i(875225),n=e.i(349129),i=e.i(518899),o=e.i(924924),s=e.i(313931),l=e.i(618916),u=e.i(209576),d=e.i(532148),c=e.i(433609),p=e.i(111970),f=e.i(154491),m=e.i(125160),g=e.i(984125),h=e.i(764766),k=e.i(326003),y=e.i(298397),w=e.i(291029),b=e.i(377489),v=e.i(549419),$=e.i(143926),I=e.i(442565),A=e.i(895625),R=e.i(547499),x=e.i(407602),j=e.i(582931),S=e.i(629955),_=e.i(309055),T=e.i(195191);async function O(e,t=_.q){let r,[n]=await (0,o.f)().select({m:l.monitors,appName:l.resources.name,appMeta:l.resources.meta}).from(l.monitors).innerJoin(l.resources,(0,a.u)(l.resources.id,l.monitors.resourceId)).where((0,a.u)(l.monitors.id,e)).limit(1);if(!n)return{ok:!1,error:"That monitor no longer exists."};if("heartbeat"===n.m.kind)return{ok:!1,error:"That monitor is a heartbeat; it has no address to update."};let i=await (0,o.f)().select({id:l.resources.id,name:l.resources.name,meta:l.resources.meta}).from(l.resources).where((0,a.b)((0,a.u)(l.resources.kind,"app"),(0,a.u)(l.resources.monitored,!0),(0,a.M)(l.resources.goneAt),(0,a.c)(l.resources.id,n.m.resourceId))).limit(500),s=(0,h.u)(n.m.url,{name:n.appName,meta:n.appMeta},i,{lastError:n.m.lastError});if(!s)return{ok:!1,error:"Nothing shows this monitor's domain moved (it is still the app's, or never was), so there is nothing to update."};try{r=(0,h.w)(n.m.url,s.to)}catch{return{ok:!1,error:"The app's domain isn't a valid host name, so the monitor was left as it is."}}let u=await t(e,{url:r,expectedStatus:n.m.expectedStatus,timeoutMs:n.m.timeoutMs,bodyContains:n.m.bodyContains,jsonPath:n.m.jsonPath,jsonEquals:n.m.jsonEquals});return u.ok?{ok:!0,message:`Monitor now checks ${r}.`,audit:{message:`Monitor moved to the app's new domain: ${(0,T.F)(r)}`,detail:`was ${(0,T.F)(n.m.url)}`,resourceId:n.m.resourceId}}:u}var P=e.i(145647),M=e.i(479301);async function N(e){if(!(0,M.f)(e))return null;let[t]=await (0,o.f)().select({id:l.resources.id,kind:l.resources.kind,externalId:l.resources.externalId,parentId:l.resources.parentId}).from(l.resources).where((0,a.b)((0,a.u)(l.resources.id,e),(0,a.y)(l.resources.kind,["neon_project","neon_branch"]),(0,a.M)(l.resources.goneAt))).limit(1);if(!t)return null;let r="neon_branch"===t.kind?t.parentId:t.id;if(!r)return null;let[n]=await (0,o.f)().select({data:l.snapshots.data}).from(l.snapshots).where((0,a.u)(l.snapshots.resourceId,r)).limit(1),i=(0,k.k)(k.s,n?.data);return{projectResourceId:r,branchExternalId:"neon_branch"===t.kind?t.externalId:null,computeSeconds:i.computeSeconds??null,periodEnd:i.periodEnd??null}}var D=e.i(472832),z=e.i(800366),C=e.i(628448),E=e.i(443917);let K=`This project used its ${z.a.cuHours} CU-hours; the compute won't start until the quota resets.`;async function H(e,t,r){var a;if(a=new Date,!((t.computeSeconds??0)<3600*z.a.cuHours)&&(!t.periodEnd||new Date(t.periodEnd).getTime()>a.getTime()))return{done:!1,message:K};let n=e.resource.externalId,i=await (0,E.c)(e.token,n,r);if(!i.ok)return{done:!1,message:"missing"===i.kind?C.G:i.error};if(i.data.id!==r||t.branchExternalId&&i.data.branchId!==t.branchExternalId)return{done:!1,message:C.G};if(i.data.disabled)return{done:!1,message:"Neon has disabled this compute, so it can't be started from here."};if("active"===i.data.state)return{done:!1,message:"Already running."};if("init"===i.data.state||"active"===i.data.pendingState)return{done:!1,message:"Already starting."};let o=await (0,E.d)(e.token,n,r);if(o.ok)return{done:!0,message:`Waking ${r}. Ready in a few seconds.`,audit:{message:`Wake requested \xb7 ${r}`,resourceId:e.resource.id}};let s="scope"===o.kind?(0,C.b)("neon",{project:e.resource.name}):"missing"===o.kind?C.G:o.error;return{done:!1,failed:{ok:!1,kind:o.kind,error:s,...o.status?{status:o.status}:{}},audit:{message:`Wake failed \xb7 ${r}`,resourceId:e.resource.id}}}async function B(e,t){let r=t.resource.name;if(e.ok||r.trim().length<2||!e.error.includes(r))return e;let a=await (0,u.f)().catch(()=>null);return{...e,error:a?(0,y.J)(e.error,a,t.resource.id):e.error.split(r).join("db-?")}}async function L(e,t,r,a=D.W){let n=await (0,D.q)(e.id,"wake",r);if(n)return{ok:!1,error:n};let i=await N(t),o=i?await (0,D.p)(i.projectResourceId,"neon_project"):null;return i&&o?B(await a(await H(o,i,r),e,o.account.id),o):{ok:!1,error:C.G}}var V=e.i(11827),W=e.i(843448),U=e.i(342833);let G=e=>`Supabase is busy with this project (${(0,W.P)(e).label.toLowerCase()}). Try again in a few minutes.`,q=(e,t,r)=>({done:!1,failed:{ok:!1,kind:e.kind,error:"scope"===e.kind?(0,C.b)("supabase",{}):e.error,...e.status?{status:e.status}:{}},audit:{message:t,resourceId:r}});async function F(e,t,r,a,n=D.W){let i,o=await (0,D.q)(t.id,e,r);if(o)return{ok:!1,error:o};let s=await (0,D.p)(r,"supabase_project");if(!s)return{ok:!1,error:"This project isn't watched any more, or its credential can't be read."};if(s.resource.externalId!==a)return{ok:!1,error:C.G};let l=s.resource.externalId,u=s.resource.name,d=await (0,U.e)(s.token,l);if(!d.ok)return n({done:!1,message:"scope"===d.kind||"auth"===d.kind?d.error:`Couldn't read this project's status at Supabase: ${d.error}`},t,s.account.id);let c=d.data.status;if("pause"===e){if("INACTIVE"===c||"PAUSING"===c||"GOING_DOWN"===c)return n({done:!1,message:"Already paused."},t,s.account.id);if(!c.startsWith("ACTIVE_"))return n({done:!1,message:G(c)},t,s.account.id);let e=await (0,U.c)(s.token,l);i=e.ok?{done:!0,message:`Pausing ${u}. It takes about 2 minutes.`,audit:{message:`${V.B}${u}`,resourceId:r}}:"transient"===e.kind&&void 0===e.status?{done:!1,failed:{ok:!1,kind:"transient",error:`${e.error} The pause may still have happened; check the project in a few minutes before restoring it.`},audit:{message:`${V.B}${u}`,resourceId:r}}:q(e,`Pause failed \xb7 ${u}`,r)}else{if(c.startsWith("ACTIVE_")||"RESTORING"===c||"COMING_UP"===c)return n({done:!1,message:"Already active or restoring."},t,s.account.id);if("INACTIVE"!==c)return n({done:!1,message:G(c)},t,s.account.id);let e=await (0,U.W)(s.token);if(!e.ok)return n({done:!1,message:`Couldn't count this account's free slots just now: ${e.error}`},t,s.account.id);let a=await (0,S.m)(s.account.id);if(0>=(0,S.G)(e.data,a,d.data.orgSlug))return n({done:!1,message:"This account already uses both free slots. Pause one of its active projects first; Restore stays blocked until it shows Paused."},t,s.account.id);let o=await (0,U.G)(s.token,l);i=o.ok?{done:!0,message:`Restoring ${u}. It takes about 2 minutes.`,audit:{message:`Restore requested \xb7 ${u}`,resourceId:r}}:q(o,`Restore failed \xb7 ${u}`,r)}return n(i,t,s.account.id)}var J=e.i(177706);function X(e,t,r){if("building"===e.state)return"building";if(null!==t&&e.id===t)return"current";if("error"===e.state)return"failed";if("preview"===e.target)return"ready"===e.state?"preview":"other";if("ready"!==e.state||null===t)return"other";let a=r.find(e=>e.id===t);if(!a)return"other";if(e.createdAt.getTime()>a.createdAt.getTime())return"staged";let n=r.filter(e=>"ready"===e.state&&e.id!==t&&e.createdAt.getTime()<a.createdAt.getTime()).sort((e,t)=>t.createdAt.getTime()-e.createdAt.getTime())[0];return n?.id===e.id?"previous":"other"}let Z=e=>({done:!1,message:e}),Y=(e,t)=>e?.sha?e.sha.slice(0,7):t;async function Q(e,t,r){let a=await (0,D.q)(e.id,t,r);if(a)return a;let n=await (0,D.p)(r,"app"),i=n?.resource.meta.teamId;if(!n||"string"!=typeof i||!i||!n.resource.externalId)return"This app or its Vercel credential isn't available any more. Reload the page.";let o=n.resource.meta.teamSlug;return{member:e,t:n,appId:r,app:n.resource.name,teamId:i,teamSlug:"string"==typeof o?o:"",projectId:n.resource.externalId}}async function ee(e){let[t,r]=await Promise.all([(0,J.c)(e.t.token,e.teamId,e.projectId),(0,J.r)(e.t.token,e.teamId,e.projectId)]);return t.ok?r.ok?{ok:!0,data:{name:t.data.name,currentId:t.data.currentId??r.data[0]?.id??null,production:r.data}}:r:t}async function et(e,t,r,a,n=D.W){return n(t.ok?{done:!0,message:r.message,audit:{message:r.audit,resourceId:e.appId}}:{done:!1,failed:"scope"===t.kind?{ok:!1,kind:"scope",status:t.status,error:(0,C.b)("vercel",{team:e.teamSlug})}:404===t.status?{ok:!1,kind:"missing",status:404,error:"Vercel can't find that deployment any more. Reload and try again."}:{ok:!1,kind:"auth"===t.kind?"auth":"format"===t.kind?"format":"transient",...t.status?{status:t.status}:{},error:t.error},audit:{message:a,resourceId:e.appId}},e.member,e.t.account.id)}async function er(e,t,r,a=D.W){{let n=await Q(e,"redeploy",t);if("string"==typeof n)return a(Z(n),e,"");let i=await ee(n);if(!i.ok)return a(Z(i.error),e,n.t.account.id);if(i.data.currentId!==r)return a(Z(C.G),e,n.t.account.id);if(i.data.production.some(e=>"staged"===X(e,i.data.currentId,i.data.production)))return a(Z("Rolled back: promote a deployment first. A redeploy would stay staged and not go live."),e,n.t.account.id);let o=await (0,J.N)(n.t.token,n.teamId,n.projectId);if(!o.ok)return a(Z(o.error),e,n.t.account.id);if(o.data)return a(Z(`A production build of ${n.app} is already running.`),e,n.t.account.id);let s=Y(i.data.production.find(e=>e.id===r),r),l=await (0,J.L)(n.t.token,n.teamId,{projectId:n.projectId,name:i.data.name,deploymentId:r});return et(n,l,{message:`Redeploy requested. Vercel is building ${n.app} again.`,audit:`Redeploy requested \xb7 ${n.app} \xb7 ${s}`},`Redeploy failed \xb7 ${n.app} \xb7 ${s}`,a)}}async function ea(e,t,r,a=D.W){{let n=await Q(e,"rollback",t);if("string"==typeof n)return a(Z(n),e,"");let i=await ee(n);if(!i.ok)return a(Z(i.error),e,n.t.account.id);if(i.data.currentId===r)return a(Z("Already live."),e,n.t.account.id);let o=i.data.production.find(e=>e.id===r);if(!o||"previous"!==X(o,i.data.currentId,i.data.production))return a(Z("Hobby can only roll back to the previous production deployment."),e,n.t.account.id);let s=Y(o,r),l=await (0,J.E)(n.t.token,n.teamId,n.projectId,r);return et(n,l,{message:`Rolled back ${n.app} to ${s}. New pushes don't go live until you promote one.`,audit:`Rolled back \xb7 ${n.app} → ${s}`},`Roll back failed \xb7 ${n.app} → ${s}`,a)}}var en=e.i(189104),ei=e.i(593111),eo=e.i(425498),es=e.i(77193),el=e.i(570191),eu=e.i(365156);let ed={checkMonitorNow:_.X,keepAliveNow:S.v,wakeAs:L,supabaseAct:F,redeployAs:er,rollbackAs:ea,finish:D.W,recordAction:x.f,limit:ei.f,bumpPrAs:j.W,autoSecurity:()=>(0,el.X)(),recheckDomain:P._,moveMonitorToDomain:O};async function ec(){let[e]=await (0,o.f)().select({at:l.collectorRuns.startedAt}).from(l.collectorRuns).where(i.B`(${l.collectorRuns.trigger} = 'vercel_cron' or (${l.collectorRuns.trigger} = 'manual' and ${l.collectorRuns.tasks} ? 'rollups'))`).orderBy((0,n.A)(l.collectorRuns.startedAt)).limit(1);return e?.at??null}async function ep(e){let t=await (e.lastDailyRunAt??ec)(),r=(e.now??(()=>new Date))();if(t&&r.getTime()-t.getTime()<216e5)return{ok:!1,error:"The daily job ran less than 6 hours ago."};let a=(e.dailyTarget??function(){let e=(0,A.f)();return e?{url:`${(0,R.f)().SITE_URL.replace(/\/+$/,"")}/api/daily`,secret:e.CRON_SECRET}:null})();if(!a)return{ok:!1,error:"The scheduler settings are missing, so the daily job can't be started."};try{let t=await (e.fetch??fetch)(a.url,{headers:{Authorization:`Bearer ${a.secret}`},signal:AbortSignal.timeout(4e4),redirect:"manual"});if(!t.ok||t.status>=300)return{ok:!1,error:`The daily job route answered ${t.status}.`};return{ok:!0,message:`Daily job ran again (${t.status}).`}}catch(e){if(e instanceof Error&&("TimeoutError"===e.name||"AbortError"===e.name))return{ok:!0,message:"Daily job started; it's still running — the heartbeat turns Up when it finishes."};throw e}}let ef="The proposal's target is missing, so it can't run.";async function em(e,t,r=ed){let a="auto"===t,n=a?{id:b.e,userId:null}:{id:t.id,userId:t.userId},i=(e,t,n)=>r.finish(e,t,n,{refresh:!1,...a?{auditPrefix:b.v}:{}});try{if(!e.resourceId||!e.targetRef)return{ok:!1,error:ef};if((0,es.W)()&&"recheck"!==e.action)return await r.recordAction({kind:"ok",message:`${a?b.v:""}${eu.H[e.action].label} (simulated)`,detail:"Simulated in the demo",resourceId:e.resourceId,actorUserId:n.userId}).catch(()=>console.warn("audit event failed")),{ok:!0,message:eo.r};switch(e.action){case"recheck":{let t=await r.limit(en.t.check,n.id);if(!t.allowed)return{ok:!1,error:`Too many checks. Try again in ${(0,en.H)(t.retryAfter)}.`};let i=await r.checkMonitorNow(e.targetRef);if(!i.ok)return{ok:!1,error:i.error};if(i.audit)try{await r.recordAction({kind:!1===i.passed?"err":"ok",...i.audit,message:`${a?b.v:""}${i.audit.message}`,actorUserId:n.userId})}catch{console.warn("audit event failed")}return{ok:!0,message:i.message}}case"domain_recheck":{let t=await r.limit(en.t.domainCheck,n.id);if(!t.allowed)return{ok:!1,error:`Too many checks. Try again in ${(0,en.H)(t.retryAfter)}.`};let i=await (r.recheckDomain??P._)(e.targetRef);if(!i.ok)return i;return await r.recordAction({kind:"ok",...i.audit,message:`${a?b.v:""}${i.audit.message}`,actorUserId:n.userId}).catch(()=>console.warn("audit event failed")),{ok:!0,message:i.message}}case"monitor_update_url":{let t=await r.limit(en.t.monitorWrite,n.id);if(!t.allowed)return{ok:!1,error:`Too many changes. Try again in ${(0,en.H)(t.retryAfter)}.`};let i=await (r.moveMonitorToDomain??O)(e.targetRef);if(!i.ok)return i;return i.audit&&await r.recordAction({kind:"ok",...i.audit,message:`${a?b.v:""}${i.audit.message}`,actorUserId:n.userId}).catch(()=>console.warn("audit event failed")),{ok:!0,message:i.message}}case"daily_rerun":return await ep(r);case"neon_wake":return await r.wakeAs(n,e.resourceId,e.targetRef,i);case"supabase_keepalive":return await r.keepAliveNow(n,e.resourceId,i);case"supabase_restore":return await r.supabaseAct("restore",n,e.resourceId,e.targetRef,i);case"vercel_redeploy":return await r.redeployAs(n,e.resourceId,e.targetRef,i);case"vercel_rollback":return await r.rollbackAs(n,e.resourceId,e.targetRef,i);case"github_bump_pr":{let t=a?await (r.autoSecurity??el.X)():null;if(a&&!t?.enabled)return{ok:!1,error:"Automatic security fixes is off."};return await (r.bumpPrAs??j.W)(n,e.resourceId,e.targetRef,i,{proposalId:e.proposalId??null,...t?{auto:{severities:t.severities}}:{},..."FrameworkVulnerable"===e.ruleKey?{framework:!0}:{}})}default:return{ok:!1,error:ef}}}catch(e){return console.warn(`${s.X.logTag}/proposals run failed:`,e instanceof Error?e.name:"error"),{ok:!1,error:"Something went wrong while running it. Check the console page before trying again."}}}var eg=e.i(588492);let eh={id:w.O.id,room:w.O.room,action:w.O.action,risk:w.O.risk,title:w.O.title,reason:w.O.reason,resourceName:w.O.resourceName,proposedBy:w.O.proposedBy,status:w.O.status,auto:w.O.auto,result:w.O.result,createdAt:w.O.createdAt,decidedAt:w.O.decidedAt,expiresAt:w.O.expiresAt},ek={...eh,resourceId:w.O.resourceId,targetRef:w.O.targetRef,ruleKey:w.O.ruleKey,alertId:w.O.alertId};async function ey(e,t,r){let n=(0,b.z)(e,t),s=new Set(n.deployApps),u=e.filter(e=>("MonitorDown"===e.ruleKey||"HighLatency"===e.ruleKey)&&e.resourceId&&s.has(e.resourceId)&&e.startedAt),[d,p,f,m,g,k,y,w,v]=await Promise.all([n.monitorIds.length?(0,o.f)().select({id:l.monitors.id,kind:l.monitors.kind,url:l.monitors.url,lastError:l.monitors.lastError,appId:l.monitors.resourceId,appName:l.resources.name,appMeta:l.resources.meta}).from(l.monitors).innerJoin(l.resources,(0,a.u)(l.resources.id,l.monitors.resourceId)).where((0,a.y)(l.monitors.id,n.monitorIds)):[],n.deployApps.length?(0,o.f)().select({app:l.deployments.resourceId,id:l.deployments.externalId,isCurrent:l.deployments.isCurrent,isPrevious:l.deployments.isPreviousProduction,readyAt:l.deployments.readyAt,createdAt:l.deployments.createdAtProvider}).from(l.deployments).where((0,a.b)((0,a.y)(l.deployments.resourceId,n.deployApps),(0,a.F)((0,a.u)(l.deployments.isCurrent,!0),(0,a.u)(l.deployments.isPreviousProduction,!0)))):[],n.supabaseIds.length?(0,o.f)().select({id:l.resources.id,ref:l.resources.externalId}).from(l.resources).where((0,a.b)((0,a.y)(l.resources.id,n.supabaseIds),(0,a.u)(l.resources.kind,"supabase_project"),i.B`${l.resources.goneAt} is null`)):[],n.monitorApps.length?eA(n.monitorApps):new Map,n.depApps.length?e$(e,n.depApps).catch(()=>new Set).then(e=>(0,c.C)(n.depApps,e)).catch(()=>new Map):new Map,n.monitorIds.length?eI(n.monitorIds):null,n.frameworkApps.length?(0,j.h)(n.frameworkApps,n.depApps).catch(()=>new Map):new Map,u.length?ew(u.map(e=>e.subject),t).catch(()=>[]):[],eb(n.deployApps)]),$=d.some(e=>null!==(0,h.Y)(e.appMeta)),I=$?await (0,o.f)().select({id:l.resources.id,name:l.resources.name,meta:l.resources.meta}).from(l.resources).where((0,a.b)((0,a.u)(l.resources.kind,"app"),(0,a.u)(l.resources.monitored,!0),(0,a.M)(l.resources.goneAt))).limit(500):[],A=$?(0,h.P)(d,I):new Map,R=[...[...g].map(([e,t])=>({appId:e,repoId:t})),...[...y].map(([e,t])=>({appId:e,repoId:t.repoId}))],x=R.length?await Promise.resolve().then(()=>(0,j.H)(R,t)).catch(()=>new Map):new Map,S=new Map,_=new Map;for(let e of p){let t=S.get(e.app)??{currentId:null,previousId:null,liveAt:null};e.isCurrent?(t.currentId=e.id,t.liveAt=e.readyAt??e.createdAt??null):e.isPrevious&&(t.previousId=e.id,_.set(e.app,e.readyAt??e.createdAt??null)),S.set(e.app,t)}let T=new Map;for(let[e,t]of S)t.previousId&&T.set(e,ev(v,e,t.liveAt,_.get(e)??null));let O=new Map(u.map(e=>[e.id,(0,eg.g)(e.startedAt,w.filter(t=>t.ruleKey===e.ruleKey&&t.subject===e.subject),{ruleKey:e.ruleKey,liveAt:S.get(e.resourceId)?.liveAt??null})]));return{monitorKinds:new Map(d.map(e=>[e.id,String(e.kind)])),deploys:S,...void 0!==r?{rollbackWindowMs:r}:{},supabaseRefs:new Map(f.map(e=>[e.id,e.ref])),neonSuspended:m,fixableRepos:g,dailyHeartbeatId:k,frameworkFixes:y,monitorMoves:A,problemSince:O,previousNext:T,...x.size?{productionMismatch:x}:{}}}async function ew(e,t){return(0,o.f)().select({ruleKey:l.alerts.ruleKey,subject:l.alerts.subject,startedAt:l.alerts.startedAt,resolvedAt:l.alerts.resolvedAt}).from(l.alerts).where((0,a.b)((0,a.y)(l.alerts.ruleKey,["MonitorDown","HighLatency"]),(0,a.y)(l.alerts.subject,[...new Set(e)]),(0,a.E)(l.alerts.resolvedAt),(0,a.B)(l.alerts.resolvedAt,new Date(t.getTime()-eg.A)))).orderBy((0,n.A)(l.alerts.startedAt)).limit(500)}async function eb(e){let t={checks:new Map,events:new Map,frameworks:new Map};if(!e.length)return t;try{let[r,i,s]=await Promise.all([(0,o.f)().select({app:l.appSecurity.resourceId,version:l.appSecurity.version,status:l.appSecurity.status,findings:l.appSecurity.findings,checkedAt:l.appSecurity.checkedAt,reason:l.appSecurity.reason}).from(l.appSecurity).where((0,a.y)(l.appSecurity.resourceId,e)).limit(e.length),(0,o.f)().select({app:l.events.resourceId,at:l.events.at,reason:l.events.reason,message:l.events.message}).from(l.events).where((0,a.b)((0,a.y)(l.events.reason,[...eg.Y]),(0,a.y)(l.events.resourceId,e))).orderBy((0,n.A)(l.events.at)).limit(Math.min(500,50*e.length)),(0,o.f)().select({app:l.resources.id,meta:l.resources.meta}).from(l.resources).where((0,a.y)(l.resources.id,e)).limit(e.length)]);for(let e of r)t.checks.set(e.app,{version:e.version,status:e.status,findings:Array.isArray(e.findings)?e.findings:[],checkedAt:e.checkedAt,reason:e.reason});for(let e of i)e.app&&t.events.set(e.app,[...t.events.get(e.app)??[],{at:e.at,reason:e.reason,message:e.message}]);for(let e of s){let r=e.meta&&"object"==typeof e.meta?e.meta.framework:null;t.frameworks.set(e.app,"string"==typeof r?r:null)}}catch{return{checks:new Map,events:new Map,frameworks:new Map}}return t}let ev=(e,t,r,a)=>(0,eg.Q)({currentLiveAt:r,previousLiveAt:a,check:e.checks.get(t)??null,events:e.events.get(t)??[],framework:e.frameworks.get(t)??null});async function e$(e,t){let r=new Set(t),n=e.filter(e=>"FrameworkVulnerable"===e.ruleKey&&"app"===e.resourceKind&&e.resourceId&&r.has(e.resourceId)).map(e=>e.id);return n.length?new Set((await (0,o.f)().selectDistinct({resourceId:w.O.resourceId}).from(w.O).where((0,a.b)((0,a.u)(w.O.ruleKey,"FrameworkVulnerable"),(0,a.u)(w.O.action,"github_bump_pr"),(0,a.y)(w.O.status,["pending","approved","running","done"]),(0,a.y)(w.O.alertId,n),(0,a.y)(w.O.resourceId,[...r]))).limit(n.length)).flatMap(e=>e.resourceId?[e.resourceId]:[])):new Set}async function eI(e){let t=(0,m.i)(process.env.DAILY_HEARTBEAT_TOKEN);if(!t)return null;let[r]=await (0,o.f)().select({id:l.monitors.id}).from(l.monitors).where((0,a.b)((0,a.y)(l.monitors.id,e),(0,a.u)(l.monitors.kind,"heartbeat"),(0,a.u)(l.monitors.tokenHash,(0,g.f)(t)))).limit(1).catch(()=>[]);return r?.id??null}async function eA(e){let t=await (0,o.f)().select({app:l.links.fromResourceId,id:l.resources.id,kind:l.resources.kind,externalId:l.resources.externalId,parentId:l.resources.parentId}).from(l.links).innerJoin(l.resources,(0,a.u)(l.resources.id,l.links.toResourceId)).where((0,a.b)((0,a.y)(l.links.fromResourceId,e),(0,a.u)(l.links.kind,"uses_db"),(0,a.y)(l.resources.kind,["neon_project","neon_branch"]),i.B`${l.resources.goneAt} is null`)),r=new Map;if(!t.length)return r;let n=e=>"neon_branch"===e.kind?e.parentId:e.id,s=[...new Set(t.map(n).filter(e=>!!e))];if(!s.length)return r;let u=new Map((await (0,o.f)().select({id:l.snapshots.resourceId,data:l.snapshots.data}).from(l.snapshots).where((0,a.y)(l.snapshots.resourceId,s))).map(e=>[e.id,(0,k.k)(k.s,e.data)]));for(let e of t){let t=n(e),a=t?u.get(t):void 0,i=a?(0,b.Z)(a.endpoints,a.branches,"neon_branch"===e.kind?e.externalId:null):null;i&&r.set(e.app,{resourceId:e.id,resourceKind:e.kind,endpointId:i})}return r}async function eR(e){if(!e.length)return[];let t=new Set((await (0,o.f)().select({alertId:w.O.alertId,action:w.O.action}).from(w.O).where((0,a.y)(w.O.alertId,[...new Set(e.map(e=>e.alertId))]))).map(e=>`${e.alertId}:${e.action}`)),r=e.filter(e=>!t.has(`${e.alertId}:${e.action}`));return r.length?(0,o.f)().insert(w.O).values(r.map(e=>({...e,status:"pending"}))).onConflictDoNothing().returning(ek):[]}async function ex(e,t,r,n){let[s]=await (0,o.f)().update(w.O).set({status:"approve"===t?"approved":"rejected",decidedBy:r,decidedAt:n}).where((0,a.b)((0,a.u)(w.O.id,e),(0,a.u)(w.O.status,"pending"),i.B`${w.O.expiresAt} > ${n.toISOString()}::timestamptz`)).returning(ek);if(s)return{status:"ok",proposal:(0,b.E)(s),row:s};let[l]=await (0,o.f)().select(eh).from(w.O).where((0,a.u)(w.O.id,e)).limit(1);return l?{status:"conflict",proposal:(0,b.E)(l)}:{status:"missing"}}async function ej(e,t){let[r]=await (0,o.f)().update(w.O).set({status:"running",claimedAt:t}).where((0,a.b)((0,a.u)(w.O.id,e),(0,a.u)(w.O.status,"approved"))).returning(ek);return r??null}async function eS(e,t,r,n){let[i]=await (0,o.f)().update(w.O).set({status:t?"done":"failed",result:r,finishedAt:n}).where((0,a.b)((0,a.u)(w.O.id,e),(0,a.u)(w.O.status,"running"))).returning(ek);return i??null}let e_={run:(e,t)=>em(e,t),book:()=>(0,u.f)()};async function eT(e,t,r,a=e_){let n=await ej(e,r);if(!n)return null;let i=await a.run({action:n.action,resourceId:n.resourceId,targetRef:n.targetRef,proposalId:n.id,ruleKey:n.ruleKey??null},t),o=await a.book().catch(()=>y.a),s=await eS(e,i.ok,(0,b.x)(i,o),new Date);return s?(0,b.E)(s):null}async function eO(e,t){let r=await (0,o.f)().update(w.O).set({status:"expired",result:"Expired: nobody decided in time, or the alert stopped firing."}).where((0,a.b)((0,a.u)(w.O.status,"pending"),(0,a.F)((0,a.S)(w.O.expiresAt,new Date(t.getTime()+1)),(0,a.b)((0,a.E)(w.O.alertId),e.length?(0,a.$)(w.O.alertId,e):i.B`true`)))).returning({id:w.O.id});return await (0,o.f)().update(w.O).set({status:"failed",result:"The run was interrupted. Check the console page before trying again.",finishedAt:t}).where((0,a.b)((0,a.u)(w.O.status,"running"),(0,a.S)(w.O.claimedAt,new Date(t.getTime()-b.L)))),r.length}async function eP(e){await (0,o.f)().delete(w.O).where((0,a.b)((0,a.S)(w.O.createdAt,new Date(e.getTime()-2592e6)),(0,a.$)(w.O.status,["pending","approved","running"])))}let eM=i.B`(${l.storedLogs.level} in ('error', 'fatal') or coalesce(${l.storedLogs.statusCode}, 0) >= 500)`,eN=i.B`coalesce(${l.deployments.readyAt}, ${l.deployments.createdAtProvider})`;async function eD(e){let t=await (0,o.f)().select({app:l.links.fromResourceId,id:l.resources.id,kind:l.resources.kind,externalId:l.resources.externalId,parentId:l.resources.parentId}).from(l.links).innerJoin(l.resources,(0,a.u)(l.resources.id,l.links.toResourceId)).where((0,a.b)((0,a.y)(l.links.fromResourceId,e),(0,a.u)(l.links.kind,"uses_db"),(0,a.y)(l.resources.kind,["neon_project","neon_branch","supabase_project"]),(0,a.M)(l.resources.goneAt))),r=new Map;if(!t.length)return r;let n=e=>"neon_branch"===e.kind?e.parentId:e.id,i=[...new Set(t.map(n).filter(e=>!!e))],s=new Map((i.length?await (0,o.f)().select({id:l.snapshots.resourceId,data:l.snapshots.data}).from(l.snapshots).where((0,a.y)(l.snapshots.resourceId,i)):[]).map(e=>[e.id,e.data]));for(let e of t){let t=s.get(n(e)??"");if("supabase_project"===e.kind){let a=(0,k.k)(k.B,t);r.set(e.app,{resourceId:e.id,kind:e.kind,wakeEndpoint:null,supabaseRef:e.externalId,supabasePaused:"INACTIVE"===a.status})}else{let a=(0,k.k)(k.s,t);r.set(e.app,{resourceId:e.id,kind:e.kind,wakeEndpoint:(0,b.Z)(a.endpoints,a.branches,"neon_branch"===e.kind?e.externalId:null),supabaseRef:null,supabasePaused:!1})}}return r}let ez={apps:async function(e){let t=new Date(e.getTime()-v.I-v.s),r=i.B`${l.storedLogs.at} >= ${new Date(e.getTime()-v.H).toISOString()}::timestamptz`,n=i.B`${l.storedLogs.message} ~* ${v.N}`,s=i.B`left(${l.storedLogs.message}, 200)`,u=(await (0,o.f)().select({appId:l.storedLogs.resourceId,appName:i.B`max(${l.resources.name})`,liveAt:i.B`max(${eN})`.mapWith(l.deployments.readyAt),currentId:i.B`max(${l.deployments.externalId})`,errorsSinceLive:i.B`count(*) filter (where ${eM} and ${l.storedLogs.at} >= ${eN})`.mapWith(Number),baselineErrors:i.B`count(*) filter (where ${eM} and ${l.storedLogs.at} >= ${eN} - interval '24 hours' and ${l.storedLogs.at} < ${eN})`.mapWith(Number),topSinceLive:i.B`mode() within group (order by ${s}) filter (where ${eM} and ${l.storedLogs.at} >= ${eN})`,errors30:i.B`count(*) filter (where ${eM} and ${r})`.mapWith(Number),top30:i.B`mode() within group (order by ${s}) filter (where ${eM} and ${r})`,dbErrors30:i.B`count(*) filter (where ${r} and ${n})`.mapWith(Number),topDb:i.B`mode() within group (order by ${s}) filter (where ${r} and ${n})`}).from(l.storedLogs).innerJoin(l.resources,(0,a.u)(l.resources.id,l.storedLogs.resourceId)).leftJoin(l.deployments,(0,a.b)((0,a.u)(l.deployments.resourceId,l.storedLogs.resourceId),(0,a.u)(l.deployments.isCurrent,!0))).where((0,a.b)((0,a.B)(l.storedLogs.at,t),(0,a.u)(l.resources.kind,"app"),(0,a.M)(l.resources.goneAt))).groupBy(l.storedLogs.resourceId)).filter(e=>e.errorsSinceLive>=v.w||e.errors30>=v.G||e.dbErrors30>=v.V);if(!u.length)return[];let d=u.map(e=>e.appId),[c,p,f]=await Promise.all([(0,o.f)().select({app:l.deployments.resourceId,previousId:i.B`max(${l.deployments.externalId}) filter (where ${l.deployments.isPreviousProduction})`,previousLiveAt:i.B`max(${eN}) filter (where ${l.deployments.isPreviousProduction})`.mapWith(l.deployments.readyAt),lastDeployAt:i.B`max(${l.deployments.createdAtProvider}) filter (where ${l.deployments.target} = 'production')`.mapWith(l.deployments.createdAtProvider)}).from(l.deployments).where((0,a.b)((0,a.y)(l.deployments.resourceId,d),(0,a.F)((0,a.u)(l.deployments.isPreviousProduction,!0),(0,a.B)(l.deployments.createdAtProvider,new Date(e.getTime()-v.v))))).groupBy(l.deployments.resourceId),(0,o.f)().select({app:l.monitors.resourceId,id:l.monitors.id}).from(l.monitors).where((0,a.b)((0,a.y)(l.monitors.resourceId,d),(0,a.u)(l.monitors.kind,"http"),(0,a.u)(l.monitors.paused,!1),(0,a.u)(l.monitors.ownerPaused,!1))).orderBy(l.monitors.createdAt),eD(d)]),m=new Map(c.map(e=>[e.app,e])),g=new Map;for(let e of p)g.has(e.app)||g.set(e.app,e.id);let h=u.filter(e=>e.errorsSinceLive>=v.w&&e.liveAt&&m.get(e.appId)?.previousId).map(e=>e.appId),k=h.length?await eb(h):null;return u.map(e=>({...e,appName:e.appName??"",previousId:m.get(e.appId)?.previousId??null,lastDeployAt:m.get(e.appId)?.lastDeployAt??null,httpMonitorId:g.get(e.appId)??null,db:f.get(e.appId)??null,...k&&h.includes(e.appId)?{previousNext:ev(k,e.appId,e.liveAt,m.get(e.appId)?.previousLiveAt??null)}:{}}))},rows:async function(e){let t=i.B`coalesce(${w.O.finishedAt}, ${w.O.decidedAt}, ${w.O.expiresAt})`;return(0,o.f)().select({id:w.O.id,ruleKey:w.O.ruleKey,resourceId:w.O.resourceId,action:w.O.action,status:w.O.status,closedAt:t.mapWith(w.O.finishedAt)}).from(w.O).where((0,a.b)((0,a.M)(w.O.alertId),(0,a.y)(w.O.ruleKey,[...v.T]),(0,a.F)((0,a.y)(w.O.status,["pending","approved","running"]),i.B`${t} > ${new Date(e.getTime()-v.b).toISOString()}::timestamptz`)))}};async function eC(e,t,r=ez){let[n,i]=await Promise.all([r.apps(e),r.rows(e)]),s=n.flatMap(r=>(0,v.t)(r,t,e)),l=(0,v.W)(i,s),u=0;l.length&&(u=(await (0,o.f)().update(w.O).set({status:"expired",result:"Expired: the logs no longer show it.",finishedAt:e}).where((0,a.b)((0,a.y)(w.O.id,l),(0,a.u)(w.O.status,"pending"))).returning({id:w.O.id})).length);let d=(0,v.x)(s,i,e);return d.length?{created:await (0,o.f)().insert(w.O).values(d.map(e=>({...e,status:"pending"}))).onConflictDoNothing().returning(ek),expired:u}:{created:[],expired:u}}let eE=null;async function eK(e,t){return(0,v.D)(e,eE)?(eE=e.getTime(),eC(e,await t())):{created:[],expired:0}}async function eH(e,t){return(await (0,o.f)().update(w.O).set({status:"approved",auto:!0,decidedAt:t}).where((0,a.b)((0,a.u)(w.O.id,e),(0,a.u)(w.O.status,"pending"),(0,a.u)(w.O.risk,"safe"))).returning({id:w.O.id})).length>0}async function eB(e,t){let r=new Date(t.getTime()-$.r),[n,s,u,d,c]=await Promise.all([(0,o.f)().select({app:l.deployments.resourceId,id:l.deployments.externalId,sha:l.deployments.commitSha,state:l.deployments.state,isCurrent:l.deployments.isCurrent,isPrevious:l.deployments.isPreviousProduction,readyAt:l.deployments.readyAt,createdAt:l.deployments.createdAtProvider}).from(l.deployments).where((0,a.b)((0,a.y)(l.deployments.resourceId,e),(0,a.F)((0,a.u)(l.deployments.isCurrent,!0),(0,a.u)(l.deployments.isPreviousProduction,!0)))),(0,o.f)().select({app:l.deployments.resourceId,at:i.B`max(${l.deployments.createdAtProvider})`.mapWith(l.deployments.createdAtProvider)}).from(l.deployments).where((0,a.b)((0,a.y)(l.deployments.resourceId,e),(0,a.u)(l.deployments.target,"production"),(0,a.u)(l.deployments.state,"ready"))).groupBy(l.deployments.resourceId),(0,o.f)().select({app:l.events.resourceId}).from(l.events).where((0,a.b)((0,a.u)(l.events.type,"action"),(0,a.y)(l.events.resourceId,e),(0,a.B)(l.events.at,r),i.B`${l.events.message} ~ ${eL}`)),(0,o.f)().select({app:w.O.resourceId,targetRef:w.O.targetRef,status:w.O.status,decidedAt:w.O.decidedAt}).from(w.O).where((0,a.b)((0,a.u)(w.O.action,"vercel_rollback"),(0,a.u)(w.O.auto,!0),(0,a.B)(w.O.createdAt,new Date(t.getTime()-26784e5)))),eb(e)]),p=new Map;for(let t of e){let e=n.find(e=>e.app===t&&e.isCurrent),a=n.find(e=>e.app===t&&e.isPrevious&&!e.isCurrent),i=d.filter(e=>e.app===t);p.set(t,{deploy:e?{currentId:e.id,currentSha:e.sha,liveAt:e.readyAt??e.createdAt,currentCreatedAt:e.createdAt,newestProdCreatedAt:s.find(e=>e.app===t)?.at??null,previousId:a?.id??null,previousState:a?.state??null,previousCreatedAt:a?.createdAt??null}:null,rolledOrPromotedLately:u.some(e=>e.app===t),autoLately:i.some(e=>null!==e.decidedAt&&e.decidedAt.getTime()>=r.getTime()),sameDeployBefore:!!a&&i.some(e=>e.targetRef===a.id),previousNext:e&&a?ev(c,t,e.readyAt??e.createdAt,a.readyAt??a.createdAt).status:"unknown"})}return{apps:p,inFlight:d.some(e=>"approved"===e.status||"running"===e.status)}}let eL="(Rolled back|Promoted|Preview promoted) ·";async function eV(e,t,r){return(await (0,o.f)().update(w.O).set({status:"approved",auto:!0,decidedAt:r,reason:t}).where((0,a.b)((0,a.u)(w.O.id,e),(0,a.u)(w.O.status,"pending"),(0,a.u)(w.O.action,"vercel_rollback"),i.B`not exists (select 1 from ops.action_proposals x where x.action = 'vercel_rollback' and x.auto and x.status in ('approved', 'running'))`)).returning({id:w.O.id})).length>0}async function eW(e,t,r,a){let n=e.filter(e=>"vercel_rollback"===e.action&&e.ruleKey&&$.M.has(e.ruleKey)&&e.resourceId);if(!n.length||!a.autoRollback||!a.rollbackContext||!a.approveAutoRollback)return[];let i=await a.autoRollback().catch(()=>null);if(!i?.enabled||15e3>r())return[];let o=[];try{let e=await a.rollbackContext([...new Set(n.map(e=>e.resourceId))],t),l=e.inFlight;for(let u of n){let n=e.apps.get(u.resourceId);if(!n||12e3>r())continue;let d=(0,$.s)({setting:i,ruleKey:u.ruleKey??null,targetRef:u.targetRef,inFlight:l,...n},t);if(!d.ok){console.log(`${s.X.logTag}/auto-rollback: skipped (${d.why})`);continue}let c=(0,$.E)(n.deploy);if(!await a.approveAutoRollback(u.id,(0,$.u)(c,i.windowMin,u.reason),new Date))continue;l=!0;let p=await a.execute(u.id,new Date);if(p){o.push(p),await (a.notifyRollback??I.q)(p,{reason:u.reason,newRef:c},{},{alertId:u.alertId??null}).catch(()=>void 0);break}}}catch(e){console.warn(`${s.X.logTag}/auto-rollback failed:`,e instanceof Error?e.name:"error")}return o}async function eU(e,t){return(await (0,o.f)().update(w.O).set({status:"approved",auto:!0,decidedAt:t}).where((0,a.b)((0,a.u)(w.O.id,e),(0,a.u)(w.O.status,"pending"),(0,a.u)(w.O.action,"github_bump_pr"))).returning({id:w.O.id})).length>0}async function eG(e,t,r){let a=e.filter(e=>"github_bump_pr"===e.action&&e.targetRef);if(!a.length||!r.autoSecurity||!r.bumpReady||!r.approveAutoBump)return[];let n=await r.autoSecurity().catch(()=>null);if(!n?.enabled||!n.severities.length)return[];let i=[];for(let e of a){if(15e3>t())break;try{if(e.resourceId&&r.prodMismatch?await r.prodMismatch(e.resourceId,e.targetRef).catch(()=>"unknown"):null){console.log(`${s.X.logTag}/auto-security: waits for the owner (production source)`);continue}let t="FrameworkVulnerable"===e.ruleKey&&e.resourceId?await r.bumpReady(e.targetRef,n.severities,{appId:e.resourceId}):await r.bumpReady(e.targetRef,n.severities);if(!t.ok){console.log(`${s.X.logTag}/auto-security: waits for the owner (${t.why})`);continue}if(!await r.approveAutoBump(e.id,new Date))continue;let a=await r.execute(e.id,new Date);a&&i.push(a)}catch(e){console.warn(`${s.X.logTag}/auto-security failed:`,e instanceof Error?e.name:"error")}}return i}async function eq(e,t){return(await (0,j.H)([{appId:e,repoId:t}],new Date)).get(e)??null}async function eF(e){return new Map((await (0,o.f)().select({id:l.accounts.id,provider:l.accounts.provider}).from(l.accounts).where((0,a.y)(l.accounts.id,e))).map(e=>[e.id,e.provider]))}let eJ={firing:()=>(0,d.q)(),book:()=>(0,u.f)(),facts:ey,create:eR,expire:eO,autoRun:el.I,approveAuto:eH,execute:(e,t)=>eT(e,"auto",t),notifyNew:I.i,notifyResult:I.b,logs:eK,autoRollback:()=>(0,el.K)(),rollbackContext:eB,approveAutoRollback:eV,notifyRollback:I.q,autoSecurity:()=>(0,el.X)(),bumpReady:j.J,approveAutoBump:eU,paused:p.I,providers:eF,prodMismatch:eq};async function eX(e,t={},r=eJ){let a={created:0,expired:0,autoRan:0},n=()=>(t.deadline??1/0)-Date.now(),i=await r.firing();a.expired=await r.expire(i.map(e=>e.id),e);let o=r.paused?await r.paused().catch(()=>new Set):new Set,l=[...new Set(i.flatMap(e=>e.accountId?[e.accountId]:[]))],u=o.size&&l.length&&r.providers?await r.providers(l).catch(()=>new Map):new Map,d=i.filter(e=>!(0,f.O)(o,e.ruleKey,e.accountId?u.get(e.accountId):null)),c=null,p=()=>c??=r.book().catch(()=>y.a),m=[],g=(0,b.z)(d,e);if(Object.values(g).some(e=>e.length>0)){let t=g.deployApps.length&&r.autoRollback?await r.autoRollback().catch(()=>null):null,a=await r.facts(d,e,t?6e4*t.windowMin:void 0),n=await p(),i=d.flatMap(t=>(0,b.t)(t,a,n,e)).filter(e=>!("github_bump_pr"===e.action&&o.has("devops")));m.push(...await r.create(i))}if(n()>1e4&&!o.has("hosting"))try{let t=await r.logs(e,p);m.push(...t.created),a.expired+=t.expired}catch(e){console.warn(`${s.X.logTag}/proposals logs failed:`,e instanceof Error?e.name:"error")}if(a.created=m.length,!m.length)return a;let h=await r.autoRun().catch(()=>null),k=await eW(m,e,n,r);a.autoRan+=k.length;let w=await eG(m.filter(e=>!k.some(t=>t.id===e.id)),n,r),v=new Set(k.map(e=>e.id)),$=[...w];for(let e of(a.autoRan+=w.length,w))v.add(e.id);for(let e of m){if(v.has(e.id)||!h||!(0,b.I)(e.action,h)||8e3>n()||!await r.approveAuto(e.id,new Date))continue;let t=await r.execute(e.id,new Date);t&&($.push(t),a.autoRan++)}let I=new Set([...$.map(e=>e.id),...v]),A=m.filter(e=>"LogErrorSpike"===e.ruleKey&&e.resourceId).map(e=>({proposalId:e.id,appId:e.resourceId})),R=A.length&&r.queueDev?await r.queueDev(A,e).catch(()=>new Set):new Set,x=new Map(m.map(e=>[e.id,e.alertId??null]));for(let e of(await r.notifyNew(m.filter(e=>!I.has(e.id)).map(b.E),{},{devQueued:R,alertIds:x}).catch(()=>void 0),$))await r.notifyResult(e,{},{alertId:x.get(e.id)??null}).catch(()=>void 0);return a}let eZ=(r={},t={...eJ,queueDev:r.queueDev},async(e,r)=>{try{let a=await eX(e,r??{},t);(a.created||a.expired||a.autoRan)&&console.log(`${s.X.logTag}/proposals: ${a.created} new, ${a.expired} expired, ${a.autoRan} auto-ran`)}catch(e){console.warn(`${s.X.logTag}/proposals failed:`,e instanceof Error?e.name:"error")}});e.s(["V",0,ex,"N",0,eT,"Z",0,eZ,"t",0,eP],447933)},442565,e=>{var t=e.i(313931),r=e.i(872281),a=e.i(483100),n=e.i(224382),i=e.i(220642),o=e.i(547499),s=e.i(695811),l=e.i(76012),u=e.i(298397),d=e.i(635982),c=e.i(570191),p=e.i(365156);let f={target:a.Q,book:()=>(0,r.f)(),siteUrl:()=>(0,o.f)().SITE_URL,autoRun:()=>(0,c.I)(),send:(e,t,r,a,n)=>(0,l.I)(e,t,r,{...a?{replyMarkup:a}:{},...n?{replyTo:n}:{}}),record:(e,t)=>(0,a.P)("telegram",e,t),lang:()=>(0,s.H)("telegram"),discord:()=>(0,a.G)(),sendDiscord:(e,t)=>(0,n.f)(e,t,{timeoutMs:$}),recordDiscord:(e,t)=>(0,a.P)("discord",e,t),discordLang:()=>(0,s.H)("discord"),buttons:()=>e.A(106025).then(e=>e.approvalButtons()),thread:e=>(0,a.M)(e)},m={en:{pending:"Status: ⏳ waiting",dev:"🧑‍💻 Dev is checking the code",proposer:t.X.notifyFallback.en,app:"app",safe:"safe",risky:"needs care",proposes:"proposes",why:"Why",risk:"Risk",open:"Open in Auto-actions",waitingN:"new proposals waiting for approval:",moreN:"more proposals",automatic:"Automatic",rollbackWhy:"the app errored after the new deploy",succeeded:"Succeeded",failed:"Failed",stopFallback:"something failed"},id:{pending:"Status: ⏳ menunggu",dev:"🧑‍💻 Dev lagi cek kodenya",proposer:t.X.notifyFallback.id,app:"aplikasi",safe:"aman",risky:"perlu hati-hati",proposes:"usul",why:"Kenapa",risk:"Risiko",open:"Buka di Auto-actions",waitingN:"usulan baru menunggu persetujuan:",moreN:"usulan lagi",automatic:"Otomatis",rollbackWhy:"app-nya error setelah deploy baru",succeeded:"Berhasil",failed:"Gagal",stopFallback:"ada yang gagal"}},g={recheck:"Cek ulang sekarang",neon_wake:"Bangunin Neon",supabase_keepalive:"Kirim keep-alive Supabase",supabase_restore:"Restore project Supabase",vercel_redeploy:"Redeploy production",vercel_rollback:"Rollback ke deploy sebelumnya",github_bump_pr:"Bikin PR update paket",domain_recheck:"Cek ulang sertifikat domain",daily_rerun:"Jalanin ulang daily job",monitor_update_url:"Arahin monitor ke domain baru"},h=(e="en")=>(0,s.t)(m,e,"dev"),k=(e,t)=>("id"===t?g[e.action]:void 0)??p.H[e.action]?.label??e.actionLabel,y=(e,t)=>(0,s.t)(m,t,"risky"===e.risk||p.H[e.action]?.risk==="risky"?"risky":"safe"),w=(e,t)=>`${e.replace(/\/+$/,"")}/auto-actions${t?`?proposal=${encodeURIComponent(t)}`:""}`;function b(e,t,r,a=!1,n="en"){let o=e=>(0,s.t)(m,n,e),l=(0,d.R)(e.proposedBy,t,60)||o("proposer"),u=(0,d.R)(e.title,t,120),c=(0,d.R)(e.reason,t,200)||"-";return[`🧑‍✈️ ${(0,i.H)(l)} ${o("proposes")}: ${(0,i.H)(k(e,n))} — ${(0,i.H)(u)}`,`${o("why")}: ${(0,i.H)(c)}`,`${o("risk")}: ${y(e,n)}`,...a?[h(n)]:[],`${o("open")}: ${(0,i.H)(w(r,e.id))}`].join("\n")}let v=new Set(["recheck","domain_recheck"]),$=3e3,I={en:{proposed:"📝 Proposed",approved:"✅ Approved by the owner",rejected:"🚫 Rejected by the owner",done:"⚙️ Ran",failed:"❌ Failed",waiting:"waiting for approval on Telegram.",newN:"new proposals"},id:{proposed:"📝 Usulan",approved:"✅ Disetujui owner",rejected:"🚫 Ditolak owner",done:"⚙️ Dijalankan",failed:"❌ Gagal",waiting:"nunggu persetujuan di Telegram.",newN:"usulan baru"}};function A(e,t,r,a="en"){let n=e=>(0,s.t)(I,a,e);if(Array.isArray(t))return`📝 ${t.length} ${n("newN")} — ${n("waiting")}`;let i=((0,d.g)(t.title,r,120)||k(t,a)).replace(/[*_`~|\[\]<>]/g,"");if("proposed"===e)return`${n("proposed")}: ${i} — ${n("waiting")}`;if("approved"===e||"rejected"===e)return`${n(e)}: ${i}`;let o=t.result?(0,d.g)(t.result,r,200).replace(/[*_`~|\[\]<>]/g,""):"";return`${n(e)}: ${i}${o?` — ${o}`:""}`}async function R(e,r,a){try{let n,i=await r.discord();if(!i)return;let o=await r.book().catch(()=>u.a),s=await r.discordLang().catch(()=>"en"),l=e(o,s);if(!l.length)return;try{n=await r.sendDiscord(i.url,l.join("\n"))}catch{n={ok:!1,kind:"transient",error:"Discord didn't answer."}}await r.recordDiscord(n,a).catch(()=>console.warn(`${t.X.logTag}/discord: recording the result failed`))}catch{console.warn(`${t.X.logTag}/discord: sending the action history failed`)}}async function x(e,t,r={},a={}){let n={...f,...r};await S(()=>R((r,a)=>[A(e,t,r,a)],n,a.now??new Date),a.timeoutMs??$)}async function j(e,r,a){let n=await r.target();if(!n)return;let i=await r.book().catch(()=>u.a),o=await r.lang().catch(()=>"en");for(let s of(await e(i,o))){let e;try{e="string"==typeof s?await r.send(n.token,n.chatId,s):await r.send(n.token,n.chatId,s.text,s.keyboard,s.replyTo??void 0)}catch{e={ok:!1,kind:"transient",error:"Telegram didn't answer."}}await r.record(e,a).catch(()=>console.warn(`${t.X.logTag}/telegram: recording the result failed`))}}async function S(e,r){try{var a;let t;await (a=e(),Promise.race([a,new Promise((e,a)=>{t=setTimeout(()=>a(Object.assign(Error("timeout"),{name:"TimeoutError"})),r)})]).finally(()=>clearTimeout(t)))}catch(e){console.warn(`${t.X.logTag}/telegram: sending the proposal notice failed:`,e instanceof Error?e.name:"error")}}let _=async(e,t)=>t&&e.thread?e.thread(t).catch(()=>null):null;async function T(e,t={},r={}){if(!e.length)return;let a={...f,...t};await S(async()=>{let t=await a.autoRun().catch(()=>null),n=e.filter(e=>{var r;return r=t??{},"pending"===e.status&&!e.auto&&(p.H[e.action]?.risk!=="safe"||"risky"===e.risk||!r[e.action])});if(!n.length)return;let o=n.length>3||!a.buttons?null:await a.buttons().catch(()=>null),l=r.now??new Date;await Promise.all([j(async(e,t)=>n.length>3?[function(e,t,r,a=new Set,n="en"){let o=e=>(0,s.t)(m,n,e),l=e.slice(0,10).map(e=>{let s=(0,d.R)(e.proposedBy,t,60)||o("proposer");return`• ${(0,i.H)(s)}: ${(0,i.H)(k(e,n))} — ${(0,i.H)((0,d.R)(e.title,t,120))} (${y(e,n)})${a.has(e.id)?` \xb7 ${h(n)}`:""}
5
5
  ${(0,i.H)(w(r,e.id))}`}),u=e.length>10?[`+${e.length-10} ${o("moreN")}`]:[];return[`🧑‍✈️ ${e.length} ${o("waitingN")}`,...l,...u,`${o("open")}: ${(0,i.H)(w(r))}`].join("\n")}(n,e,a.siteUrl(),r.devQueued,t)]:Promise.all(n.map(async n=>{let i=b(n,e,a.siteUrl(),r.devQueued?.has(n.id)??!1,t),l=await _(a,r.alertIds?.get(n.id));return o?{text:`${i}
6
6
  ${((e="en")=>(0,s.t)(m,e,"pending"))(t)}`,keyboard:o(n),replyTo:l}:{text:i,replyTo:l}})),a,l),R((e,t)=>n.length>3?[A("proposed",n,e,t)]:n.map(r=>A("proposed",r,e,t)),a,l)])},r.timeoutMs??8e3)}async function O(e,t={},r={}){if(!e.auto||"done"!==e.status&&"failed"!==e.status)return;let a={...f,...t},n=r.now??new Date;await S(()=>Promise.all([j(async(t,n)=>{let o=function(e,t,r="en"){if(!e.auto||"done"!==e.status&&"failed"!==e.status||e.auto&&"done"===e.status&&v.has(e.action))return null;let a="done"===e.status?"✅":"❌",n=e.result?(0,d.R)(e.result,t,200):"";return`${a} ${(0,s.t)(m,r,"automatic")}: ${(0,i.H)(k(e,r))} — ${(0,i.H)((0,d.R)(e.title,t,120))}${n?`: ${(0,i.H)(n)}`:""}`}(e,t,n);return o?[{text:o,replyTo:await _(a,r.alertId)}]:[]},a,n),R((t,r)=>[A("done"===e.status?"done":"failed",e,t,r)],a,n)]).then(()=>void 0),r.timeoutMs??8e3)}async function P(e,t,r={},a={}){if("done"!==e.status&&"failed"!==e.status)return;let n={...f,...r},o=a.now??new Date;await S(()=>Promise.all([j(async(r,o)=>[{text:function(e,t,r,a="en"){let n=e=>(0,s.t)(m,a,e),o=(0,d.R)(e.resourceName??n("app"),r,60)||n("app"),l=(0,d.R)(t.reason,r,200).replace(/[.!?…]+$/,"")||n("rollbackWhy"),u=e.result?(0,d.R)(e.result,r,200):"";return["id"===a?`⏪ Otomatis rollback ${(0,i.H)(o)}: ${(0,i.H)(l)}. Deploy baru ${(0,i.H)((0,d.R)(t.newRef,r,40))} dibalikin ke deploy sebelumnya. Benerin dulu, terus deploy ulang.`:`⏪ Automatic rollback of ${(0,i.H)(o)}: ${(0,i.H)(l)}. The new deploy ${(0,i.H)((0,d.R)(t.newRef,r,40))} was rolled back to the previous one. Fix it first, then deploy again.`,`${"done"===e.status?"✅":"❌"} ${n("done"===e.status?"succeeded":"failed")}${u?`: ${(0,i.H)(u)}`:""}`].join("\n")}(e,t,r,o),replyTo:await _(n,a.alertId)}],n,o),R((t,r)=>[A("done"===e.status?"done":"failed",e,t,r)],n,o)]).then(()=>void 0),a.timeoutMs??8e3)}async function M(e,t={},r={}){let a={...f,...t};await S(()=>j((t,r)=>[function(e,t,r="en"){let a="id"===r,n=(0,d.R)(e.app,t,60)||(0,s.t)(m,r,"app"),o=e.packages.slice(0,4).join(", ")+(e.packages.length>4?`, +${e.packages.length-4}`:"");if("merged"===e.kind)return a?`✅ PR #${e.number} di ${(0,i.H)(n)} di-merge otomatis (${(0,i.H)(o)}). Deploy production jalan lewat Vercel; auto-rollback jaga ${e.windowMin??30} menit pertama.`:`✅ PR #${e.number} in ${(0,i.H)(n)} was merged automatically (${(0,i.H)(o)}). The production deploy runs through Vercel; auto-rollback watches the first ${e.windowMin??30} minutes.`;if("ready-manual"===e.kind)return a?`🔐 PR #${e.number} di ${(0,i.H)(n)} siap di-merge, tapi auto-rollback mati — merge manual ya.`:`🔐 PR #${e.number} in ${(0,i.H)(n)} is ready to merge, but auto-rollback is off — please merge it manually.`;let l=(0,d.R)(e.reason??"",t,200)||(0,s.t)(m,r,"stopFallback");return a?`⚠️ PR #${e.number} di ${(0,i.H)(n)} butuh dicek: ${(0,i.H)(l)}. PR-nya dibiarin terbuka.`:`⚠️ PR #${e.number} in ${(0,i.H)(n)} needs a look: ${(0,i.H)(l)}. The PR was left open.`}(e,t,r)],a,r.now??new Date),r.timeoutMs??8e3)}e.s(["h",0,$,"q",0,P,"y",0,M,"v",0,x,"i",0,T,"b",0,O,"a",0,b])},570191,e=>{var t=e.i(875225),r=e.i(924924),a=e.i(618916),n=e.i(407602),i=e.i(365156);let o="office.autoRun",s=Object.keys(i.H);s.filter(e=>"safe"===i.H[e].risk),Object.fromEntries(s.map(e=>[e,!1]));let l={read:async()=>{let[e]=await (0,r.f)().select({value:a.settings.value}).from(a.settings).where((0,t.u)(a.settings.key,o)).limit(1);return e?.value??null},write:async e=>{await (0,r.f)().insert(a.settings).values({key:o,value:e}).onConflictDoUpdate({target:a.settings.key,set:{value:e,updatedAt:new Date}})},audit:e=>(0,n.f)({kind:"ok",message:e.message,detail:e.detail.slice(0,500),resourceId:null,actorUserId:e.actorUserId})};async function u(e={}){var t;let r;return r=(t=await ({...l,...e}).read())&&"object"==typeof t&&!Array.isArray(t)?t:{},Object.fromEntries(s.map(e=>[e,"safe"===i.H[e].risk&&!0===r[e]]))}let d="office.autoRollback",c={...l,read:async()=>{let[e]=await (0,r.f)().select({value:a.settings.value}).from(a.settings).where((0,t.u)(a.settings.key,d)).limit(1);return e?.value??null},write:async e=>{await (0,r.f)().insert(a.settings).values({key:d,value:e}).onConflictDoUpdate({target:a.settings.key,set:{value:e,updatedAt:new Date}})}};async function p(e={}){var t;let r,a;return{enabled:!0===(r=(t=await ({...c,...e}).read())&&"object"==typeof t&&!Array.isArray(t)?t:{}).enabled,windowMin:"number"==typeof(a=r.windowMin)&&Number.isInteger(a)&&a>=10&&a<=120?r.windowMin:30}}let f="office.autoSecurity",m=["critical","high","moderate"],g={enabled:!0,severities:["critical","high","moderate"],sameMajorOnly:!0},h={...l,read:async()=>{let[e]=await (0,r.f)().select({value:a.settings.value}).from(a.settings).where((0,t.u)(a.settings.key,f)).limit(1);return e?.value??null},write:async e=>{await (0,r.f)().insert(a.settings).values({key:f,value:e}).onConflictDoUpdate({target:a.settings.key,set:{value:e,updatedAt:new Date}})}};async function k(e={}){return function(e){let t;if(null==e)return{...g,severities:[...g.severities]};let r="object"!=typeof e||Array.isArray(e)?{}:e,a=(Array.isArray(t=r.severities)&&t.every(e=>m.includes(e))?m.filter(e=>t.includes(e)):null)??["critical","high"],n="boolean"==typeof r.moderate?r.moderate:a.includes("high");return{enabled:!0===r.enabled,severities:m.filter(e=>"moderate"===e?n:a.includes(e)),sameMajorOnly:!0}}(await ({...h,...e}).read())}e.s(["r",0,s,"n",0,120,"l",0,10,"K",0,p,"I",0,u,"X",0,k])},365156,e=>{e.s(["H",0,{recheck:{risk:"safe",label:"Check again now",uses:"monitor-actions checkNow"},neon_wake:{risk:"safe",label:"Wake Neon",uses:"Stage 6 Neon wake"},supabase_keepalive:{risk:"safe",label:"Send Supabase keep-alive",uses:"Stage 6 Keep active"},supabase_restore:{risk:"risky",label:"Restore Supabase project",uses:"Stage 6 Supabase restore"},vercel_redeploy:{risk:"risky",label:"Redeploy production",uses:"vercel-actions redeployAction"},vercel_rollback:{risk:"risky",label:"Roll back to previous deployment",uses:"vercel-actions rollbackAction"},github_bump_pr:{risk:"risky",label:"Open package update PR",uses:"lib/data/deps-pr.ts bumpPrAs (GitHub PR-write token)"},domain_recheck:{risk:"safe",label:"Re-check domain certificate",uses:"domains actions recheck (network-db recheckDomain)"},daily_rerun:{risk:"risky",label:"Rerun daily job",uses:"GET /api/daily with the cron secret (collector runDailyAll)"},monitor_update_url:{risk:"safe",label:"Update monitor",uses:"Uptime Update monitor (monitor-move-db moveMonitorToDomain)"}},"V",0,72e5])},377489,588492,e=>{var t=e.i(298397),r=e.i(154586),a=e.i(313931),n=e.i(635982),i=e.i(365156),o=e.i(32391),s=e.i(250474),l=e.i(218331);let u=new Set(["nextjs","blitzjs"]),d={status:"unknown",version:null},c={status:"ok",version:null},p=/(?:Next\.js|\(now) (\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?)/,f=e=>!!e&&!u.has(e),m=(e,t)=>null===e.version&&!e.findings.length&&"vulnerable"!==e.status&&("not a Next.js site"===e.reason||f(t));function g(e,t){return"vulnerable"===e.status||e.findings.length?{status:"vulnerable",version:e.version}:"ok"===e.status||e.version?{status:"ok",version:e.version}:m(e,t)?c:d}let h=e=>`${(0,l.L)(e)} ${(0,l.U)(e)} ${(0,l.J)(e)}`,k=e=>"HighLatency"===e?"Slow":"Down",y=(e,t,r,a=!1)=>{let n;if(!r||t.getTime()<r.getTime())return`${k(e)} since ${h(t)}, not tied to a deploy${r?` (live since ${h(r)})`:""}: check the app.`;let i=(n=Math.max(1,Math.round((t.getTime()-r.getTime())/6e4)))<120?`${n} min`:n<2880?`${Math.round(n/60)} h`:`${Math.round(n/1440)} days`;return a?`${k(e)} since ${h(t)}, ${i} after the deploy went live, outside the rollback window: check the app or roll back by hand.`:`${k(e)} since ${h(t)}, started ${i} after the deploy went live: check the app.`},w=e=>e?`No rollback: the previous deployment runs Next.js ${e}, which has known advisories.`:"No rollback: the previous deployment's Next.js has known advisories.",b="Previous deployment's Next.js version is unknown: check it has no known advisories before approving.";e.s(["A",0,6048e5,"Y",0,["NextVulnerable","NextClean"],"B",0,b,"D",0,y,"Q",0,function(e){let t,r=e.currentLiveAt?.getTime(),a=e.previousLiveAt?.getTime(),n=e.check;if(!n)return f(e.framework)?c:d;if(m(n,e.framework))return c;if(void 0===r||void 0===a||a>=r)return d;let i=n.checkedAt.getTime();if(i>=a&&i<r)return g(n,e.framework);if(i<a||r-a<36e5)return d;let l=e.events.filter(e=>"NextVulnerable"===e.reason||"NextClean"===e.reason),u=l.filter(e=>e.at.getTime()<r).sort((e,t)=>t.at.getTime()-e.at.getTime())[0],h=l.filter(e=>e.at.getTime()>=r).sort((e,t)=>e.at.getTime()-t.at.getTime())[0];if(u){var k;let e;t={status:"NextVulnerable"===u.reason?"vulnerable":"ok",version:u.at.getTime()>=a?(k=u.message,(e=p.exec(k)?.[1]??null)&&(0,o.C)(e)?e:null):null}}else t=h?"NextClean"===h.reason?{status:"vulnerable",version:null}:d:{status:g(n,e.framework).status,version:null};if("ok"===t.status&&"ok"!==n.status&&n.findings.length){let e;if(!t.version)return d;if(e=t.version,n.findings.some(t=>!!t.fixed&&(0,o.C)(t.fixed)&&0>(0,s.f)(e,t.fixed)))return{status:"vulnerable",version:t.version}}return t},"g",0,function(e,t,r={}){let a=e.getTime(),n="MonitorDown"===r.ruleKey;if(n&&!r.liveAt)return e;let i=r.liveAt?r.liveAt.getTime()-9e5:0,o=r.gapMs??864e5;for(let e of[...t].sort((e,t)=>t.startedAt.getTime()-e.startedAt.getTime()))!(e.startedAt.getTime()>=a)&&(n?null===e.resolvedAt||e.resolvedAt.getTime()>=i:null===e.resolvedAt||e.resolvedAt.getTime()>=a-o)&&(a=e.startedAt.getTime());return new Date(a)},"e",0,w],588492);let v=200,$=a.X.auditPrefix,I=/^dpl_[A-Za-z0-9]{8,40}$/,A=/^ep-[a-z0-9-]{3,60}$/,R=/^[a-z0-9]{8,40}$/,x=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,j=(e,t=v)=>e.length>t?`${e.slice(0,t-1).trimEnd()}…`:e,S=e=>/[.!?…]$/.test(e)?e:`${e}.`;function _(e,r,a,i){return"app"===e&&a?(0,t.r)(i,a):("supabase_project"===e||"neon_project"===e||"neon_branch"===e||"firestore"===e)&&r?(0,t.X)(i,r):a&&(0,n.g)(a,i,120)||null}let T={recheck:e=>`Check ${e} again now`,neon_wake:e=>`Wake the Neon compute of ${e}`,supabase_keepalive:e=>`Send a keep-alive to ${e}`,supabase_restore:e=>`Restore Supabase project ${e}`,vercel_redeploy:e=>`Redeploy production ${e}`,vercel_rollback:e=>`Roll ${e} back to the previous deployment`,github_bump_pr:e=>`Open a PR updating vulnerable packages in ${e}`,domain_recheck:e=>`Re-check the certificate of ${e}`,daily_rerun:()=>"Rerun the daily job",monitor_update_url:e=>`Point the ${e} monitor at its new domain`},O=(e,t)=>j(T[e](t??"this resource")),P=(e,t)=>e.silencedUntilResolved||null!==e.silencedUntil&&e.silencedUntil.getTime()>t.getTime(),M={status:"unknown",version:null};e.s(["e",0,"office-auto","v",0,$,"L",0,6e5,"j",0,v,"I",0,(e,t)=>"safe"===i.H[e].risk&&!0===t[e],"l",0,j,"z",0,function(e,t){let r=e.filter(e=>!P(e,t)),a=e=>[...new Set(e.filter(e=>!!e&&x.test(e)))],n=r.filter(e=>("MonitorDown"===e.ruleKey||"HighLatency"===e.ruleKey)&&"app"===e.resourceKind);return{monitorIds:a([...n,...r.filter(e=>"MonitorDomainMoved"===e.ruleKey&&"app"===e.resourceKind)].map(e=>e.subject)),monitorApps:a(n.map(e=>e.resourceId)),deployApps:a(r.filter(e=>("DeploymentFailed"===e.ruleKey||"MonitorDown"===e.ruleKey||"HighLatency"===e.ruleKey)&&"app"===e.resourceKind).map(e=>e.resourceId)),supabaseIds:a(r.filter(e=>("DatabasePaused"===e.ruleKey||"AutoPauseRisk"===e.ruleKey)&&"supabase_project"===e.resourceKind).map(e=>e.resourceId)),depApps:a(r.filter(e=>"VulnerableDependency"===e.ruleKey&&"app"===e.resourceKind).map(e=>e.resourceId)),frameworkApps:a(r.filter(e=>"FrameworkVulnerable"===e.ruleKey&&"app"===e.resourceKind).map(e=>e.resourceId))}},"M",0,O,"t",0,function(e,a,o,s){let l,u,d;if(P(e,s))return[];let c=(l=(0,t.o)(e,o),u=(0,n.g)(l.title,o,80),d=(0,n.g)(l.message,o,v),j([u&&S(u),d&&S(d)].filter(Boolean).join(" ")||`${e.ruleKey}.`));return(function(e,t,r){let a="app"===e.resourceKind&&e.resourceId?e.resourceId:null;switch(e.ruleKey){case"DeploymentFailed":{let e=a?t.deploys.get(a):void 0;if(!a||!e?.currentId||!I.test(e.currentId))return[];let r=[{action:"vercel_redeploy",resourceKind:"app",resourceId:a,targetRef:e.currentId}],n=t.previousNext?.get(a)??M;return e.previousId&&I.test(e.previousId)&&e.previousId!==e.currentId&&("vulnerable"===n.status?r[0].note=w(n.version):r.push({action:"vercel_rollback",resourceKind:"app",resourceId:a,targetRef:e.previousId,..."unknown"===n.status?{note:b}:{}})),r}case"DatabasePaused":case"AutoPauseRisk":{if("supabase_project"!==e.resourceKind||!e.resourceId)return[];let r=t.supabaseRefs.get(e.resourceId);if(!r||!R.test(r))return[];return[{action:"DatabasePaused"===e.ruleKey?"supabase_restore":"supabase_keepalive",resourceKind:"supabase_project",resourceId:e.resourceId,targetRef:r}]}case"VulnerableDependency":{let e=a?t.fixableRepos?.get(a):void 0;return a&&e&&x.test(e)?[{action:"github_bump_pr",resourceKind:"app",resourceId:a,targetRef:e}]:[]}case"FrameworkVulnerable":{let e=a?t.frameworkFixes?.get(a):void 0;return a&&e&&x.test(e.repoId)?[{action:"github_bump_pr",resourceKind:"app",resourceId:a,targetRef:e.repoId}]:[]}case"MonitorDomainMoved":return a&&x.test(e.subject)&&t.monitorMoves?.has(e.subject)?[{action:"monitor_update_url",resourceKind:"app",resourceId:a,targetRef:e.subject}]:[];case"MonitorDown":case"HighLatency":{let n=[];a&&x.test(e.subject)&&"http"===t.monitorKinds.get(e.subject)&&n.push({action:"recheck",resourceKind:"app",resourceId:a,targetRef:e.subject}),"MonitorDown"===e.ruleKey&&e.resourceId&&x.test(e.subject)&&t.dailyHeartbeatId===e.subject&&n.push({action:"daily_rerun",room:"observe",resourceKind:e.resourceKind,resourceId:e.resourceId,targetRef:e.subject});let i=a?t.neonSuspended.get(a):void 0;if(i&&A.test(i.endpointId)&&n.push({action:"neon_wake",room:"databases",resourceKind:i.resourceKind,resourceId:i.resourceId,targetRef:i.endpointId}),t.monitorMoves?.has(e.subject))return n;let o=a?t.deploys.get(a):void 0,s=t.problemSince?.get(e.id)??e.startedAt??null,l=o?.liveAt??null,u=s&&l?s.getTime()>=l.getTime():null,d=a&&t.previousNext?.get(a)||M,c=t.rollbackWindowMs??18e5,p=!!a&&!0===u&&function(e,t,r){if(!e?.currentId||!e.previousId||!e.liveAt||!I.test(e.previousId)||e.previousId===e.currentId)return!1;let a=r.getTime()-e.liveAt.getTime();return a>=0&&a<=t}(o,c,r);if(p&&"vulnerable"!==d.status)return n.push({action:"vercel_rollback",resourceKind:"app",resourceId:a,targetRef:o.previousId,..."unknown"===d.status?{note:b}:{}}),n;let f=p?w(d.version):void 0;if("MonitorDown"===e.ruleKey&&a&&o?.currentId&&I.test(o.currentId)&&"http"===t.monitorKinds.get(e.subject)&&!1!==u)return n.push({action:"vercel_redeploy",resourceKind:"app",resourceId:a,targetRef:o.currentId,...f?{note:f}:{}}),n;let m=!!l&&r.getTime()-l.getTime()>c,g=f??(s&&l&&o?.currentId?y(e.ruleKey,s,l,m):void 0),h=n.find(e=>"recheck"===e.action);return h&&g&&(h.note=g),n}case"CertExpiringSoon":return"domain"===e.resourceKind&&e.resourceId&&x.test(e.resourceId)?[{action:"domain_recheck",resourceKind:"domain",resourceId:e.resourceId,targetRef:e.resourceId}]:[];default:return[]}})(e,a,s).map(l=>{var u;let d,p,f,m,g=l.room??(0,r.p)(e),h="neon_wake"===l.action?_(l.resourceKind,l.resourceId,null,o):_(e.resourceKind,e.resourceId,e.resourceName,o),k="FrameworkVulnerable"===e.ruleKey&&"github_bump_pr"===l.action,y="monitor_update_url"===l.action?a.monitorMoves?.get(l.targetRef):void 0,w=k?(u=l.resourceId?a.frameworkFixes?.get(l.resourceId):void 0,d=h??"this app",j(u?`Next.js ${u.from} in ${d} has known vulnerabilities: the PR updates next (and eslint-config-next when listed) to ${u.to}.`:`Next.js in ${d} has known vulnerabilities with a fixed version.`)):"github_bump_pr"===l.action?(f=(p=(0,n.g)((0,t.o)(e,o).message,o,v)).includes(": ")?p.slice(p.indexOf(": ")+2):"",m=`Vulnerable packages in ${h??"this app"} have a fix`,j(f?`${m}: ${f}`:`${m}.`)):l.note?j(`${l.note} ${c}`):c,b="github_bump_pr"===l.action&&l.resourceId?a.productionMismatch?.get(l.resourceId):void 0;return{alertId:e.id,ruleKey:e.ruleKey,room:g,action:l.action,risk:i.H[l.action].risk,title:k?j(`Open a PR updating Next.js in ${h??"this app"}`):y?j(`Point the ${h??"app's"} monitor at ${y.to}`):O(l.action,h),reason:b?j(`${(0,n.g)(b,o,v)} ${w}`):w,resourceKind:l.resourceKind,resourceId:l.resourceId,resourceName:h,targetRef:l.targetRef,proposedBy:(0,r.y)(g),expiresAt:new Date(s.getTime()+i.V)}})},"x",0,function(e,t){let r=e.ok?e.message||"Done.":e.error||"It didn't run.";return j((0,n.g)(r,t,v)||(e.ok?"Done.":"It didn't run."))},"J",0,_,"E",0,function(e){return{id:e.id,room:e.room,action:e.action,actionLabel:i.H[e.action].label,risk:i.H[e.action].risk,title:e.title,reason:e.reason,resourceName:e.resourceName,proposedBy:e.proposedBy,status:e.status,auto:e.auto,result:e.result,createdAt:e.createdAt.toISOString(),decidedAt:e.decidedAt?e.decidedAt.toISOString():null,expiresAt:e.expiresAt.toISOString()}},"Z",0,function(e,t,r){let a=r??t?.find(e=>e.isDefault)?.id??null,n=(e??[]).find(e=>!a||e.branchId===a);return n&&!n.disabled&&"idle"===n.state&&"active"!==n.pendingState&&A.test(n.id)?n.id:null}],377489)},610514,e=>{var t=e.i(666680),r=e.i(875225),a=e.i(924924),n=e.i(220642),i=e.i(313931),o=e.i(407602),s=e.i(209576),l=e.i(983128),u=e.i(547499),d=e.i(695811),c=e.i(298397),p=e.i(291029),f=e.i(635982),m=e.i(377489),g=e.i(447933),h=e.i(442565);let k={decide:g.V,execute:(e,t,r)=>(0,g.N)(e,t,r),history:(e,t)=>(0,h.v)(e,t)};async function y(e,t,r,a,n={},i=k){let o=await i.decide(e,t,r.id,a);if("ok"!==o.status)return"missing"===o.status?{status:"missing"}:{status:"conflict",proposal:o.proposal};let s=[],l=async()=>{let e,t=i.history;if(!t||!s.length)return;let r=s.splice(0),a=new Promise(t=>{e=setTimeout(t,h.h)}),n=(async()=>{for(let[e,a]of r)await t(e,a).catch(()=>void 0)})();await Promise.race([n,a]).finally(()=>clearTimeout(e))};if("reject"===t)return s.push(["rejected",o.proposal]),{status:"ok",proposal:o.proposal,flushHistory:l};s.push(["approved",o.proposal]),n.onApproved&&await n.onApproved(o.proposal).catch(()=>void 0);let u=await i.execute(e,{id:r.id,userId:r.userId},new Date);return u&&("done"===u.status||"failed"===u.status)&&s.push([u.status,u]),{status:"ok",proposal:u??o.proposal,flushHistory:l}}var w=e.i(365156);let b=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,v={en:{approve:"✅ Approve",reject:"❌ Reject",sure:"⚠️ Sure? Approve",cancel:"Cancel",invalid:"This button is not valid.",gone:"This proposal is already decided / expired",confirmFirst:"This action is risky. Tap ⚠️ Sure? Approve within 2 minutes.",confirmLate:"The confirmation expired. Tap ✅ Approve again.",cancelled:"Cancelled. The proposal is still waiting.",running:"Approved. Running…",rejected:"Rejected.",failed:"Could not process it. Try again from Auto-actions."},id:{approve:"✅ Setujui",reject:"❌ Tolak",sure:"⚠️ Yakin? Setujui",cancel:"Batal",invalid:"Tombol ini nggak valid.",gone:"Usulan ini udah diputuskan / kedaluwarsa",confirmFirst:"Aksi ini berisiko. Tap ⚠️ Yakin? Setujui dalam 2 menit.",confirmLate:"Konfirmasinya kedaluwarsa. Tap ✅ Setujui lagi.",cancelled:"Dibatalkan. Usulannya masih menunggu.",running:"Disetujui. Lagi jalan…",rejected:"Ditolak.",failed:"Gagal memproses. Coba lagi dari Auto-actions."}},$=e=>(0,t.createHmac)("sha256",Buffer.from(e,"base64")).update("watchpost:telegram-callback:v1").digest(),I=(e,r)=>(0,t.createHmac)("sha256",e).update(r,"utf8").digest("base64url").slice(0,16);function A(e,t,r,a=null){let n=`p:${t}:${r}${"c"===r?`:${(a??0).toString(36)}`:""}`;return`${n}:${I(e,n)}`}function R(e,r){if("string"!=typeof r||r.length>64)return null;let a=r.lastIndexOf(":");if(a<0)return null;let n=r.slice(0,a),i=Buffer.from(r.slice(a+1),"utf8"),o=Buffer.from(I(e,n),"utf8");if(i.length!==o.length||!(0,t.timingSafeEqual)(i,o))return null;let s=n.split(":");if("p"!==s[0]||!b.test(s[1]??""))return null;let l=s[2];return"c"===l?4===s.length&&/^[0-9a-z]{1,10}$/.test(s[3])?{id:s[1],op:l,exp:parseInt(s[3],36)}:null:3===s.length&&["a","r","x"].includes(l)?{id:s[1],op:l,exp:null}:null}let x=(e,t,r="en")=>({inline_keyboard:[[{text:v[r].approve,callback_data:A(e,t,"a")},{text:v[r].reject,callback_data:A(e,t,"r")}]]}),j=(e,t,r,a="en")=>({inline_keyboard:[[{text:v[a].sure,callback_data:A(e,t,"c",r)},{text:v[a].cancel,callback_data:A(e,t,"x")}]]}),S={en:{pending:"⏳ waiting",approved:"⚙️ running",running:"⚙️ running",done:"✅ done",failed:"❌ failed",rejected:"🚫 rejected",expired:"⌛ expired"},id:{pending:"⏳ menunggu",approved:"⚙️ jalan",running:"⚙️ jalan",done:"✅ selesai",failed:"❌ gagal",rejected:"🚫 ditolak",expired:"⌛ kedaluwarsa"}};function _(e,t,r="en"){let a=e.result&&("done"===e.status||"failed"===e.status||"expired"===e.status)?(0,f.R)(e.result,t,200):"";return`Status: ${S[r][e.status]}${a?` — ${(0,n.H)(a)}`:""}`}let T=(e,t,r,a="en")=>`${(0,h.a)(e,t,r,!1,a)}
7
7
  ${_(e,t,a)}`,O={key:()=>$((0,u.f)().OPS_ENCRYPTION_KEY),get:async function(e){let[t]=await (0,a.f)().select({id:p.O.id,room:p.O.room,action:p.O.action,risk:p.O.risk,title:p.O.title,reason:p.O.reason,resourceName:p.O.resourceName,proposedBy:p.O.proposedBy,status:p.O.status,auto:p.O.auto,result:p.O.result,createdAt:p.O.createdAt,decidedAt:p.O.decidedAt,expiresAt:p.O.expiresAt}).from(p.O).where((0,r.u)(p.O.id,e)).limit(1);return t?(0,m.E)(t):null},decide:y,book:()=>(0,s.f)(),siteUrl:()=>(0,u.f)().SITE_URL,lang:()=>(0,d.H)("telegram"),audit:e=>(0,o.f)({...e,resourceId:null})};async function P(e,t,r=O){let{client:a,owner:n,now:o}=t,s=r.key(),l=await r.lang().catch(()=>"en"),u=v[l],d=R(s,e.data);if(!d)return void await a.answer(e.queryId,u.invalid);let p=null,f=async(t,n)=>a.editText(e.chatId,e.messageId,T(t,await (p??=r.book().catch(()=>c.a)),r.siteUrl(),l),n),m=async t=>{await a.answer(e.queryId,u.gone),t?await f(t,null):await a.editKeyboard(e.chatId,e.messageId,{inline_keyboard:[]})},g=await r.get(d.id);if(!g||!("pending"===g.status&&Date.parse(g.expiresAt)>o.getTime()))return m(g);if("x"===d.op){await a.editKeyboard(e.chatId,e.messageId,x(s,g.id,l)),await a.answer(e.queryId,u.cancelled);return}if("a"===d.op&&("risky"===g.risk||w.H[g.action]?.risk==="risky")){await a.editKeyboard(e.chatId,e.messageId,j(s,g.id,Math.floor((o.getTime()+12e4)/1e3),l)),await a.answer(e.queryId,u.confirmFirst);return}if("c"===d.op&&(d.exp??0)*1e3<o.getTime()){await a.editKeyboard(e.chatId,e.messageId,x(s,g.id,l)),await a.answer(e.queryId,u.confirmLate);return}let h="r"===d.op?"reject":"approve",k=!1;try{let t=await r.decide(g.id,h,{id:n.memberId,userId:n.userId},o,{onApproved:async t=>{k=!0,await a.answer(e.queryId,u.running),await f(t,null)}});if("missing"===t.status)return m(null);if("conflict"===t.status)return m(t.proposal);await r.audit({kind:"ok",message:i.X.telegramDecided("approve"===h?"approved":"rejected",t.proposal.title.slice(0,120)),actorUserId:n.userId}).catch(()=>console.warn("audit event failed")),k||await a.answer(e.queryId,"reject"===h?u.rejected:u.running),await f(t.proposal,null),await t.flushHistory?.()}catch(t){console.warn("telegram approvals: deciding failed:",t instanceof Error?t.name:"error"),k||await a.answer(e.queryId,u.failed)}}async function M(){if(!await (0,l.v)()||!await (0,l.I)())return null;let e=$((0,u.f)().OPS_ENCRYPTION_KEY),t=await (0,d.H)("telegram");return r=>x(e,r.id,t)}e.s(["CONFIRM_MS",0,12e4,"TEXT",0,v,"approvalButtons",0,M,"approvalKeyboard",0,x,"callbackKey",0,$,"confirmKeyboard",0,j,"noticeText",0,T,"proposalCallback",0,P,"signCallback",0,A,"statusLine",0,_,"verifyCallback",0,R],610514)},635982,e=>{var t=e.i(298397),r=e.i(76067),a=e.i(753783);let n="[\\p{L}\\p{N}_./-]",i=e=>e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),o=/(?<![\p{L}\p{N}_.@-])(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z]{2,24}(?![\p{L}\p{N}_-]|\.[\p{L}\p{N}])/giu,s=new WeakMap;function l(e,l){return String(e??"").replace(/\r\n?/g,"\n").split("\n").map(e=>{var u;let d,c=(0,a.F)((0,r.F)(e,l),l);return c=c.replace(o,e=>/\.example$/i.test(e)?e:"site.example"),(0,t.G)((u=c,(d=function(e){if(s.has(e))return s.get(e);let t=new Map(e.app.filter(e=>e.name.trim().length>=2).map(e=>[e.name.toLowerCase(),e.alias])),r=[...t.keys()].sort((e,t)=>t.length-e.length),a=r.length?{re:RegExp(`(?<!${n})(?:${r.map(i).join("|")})(?!${n})`,"giu"),alias:t}:null;return s.set(e,a),a}(l))?u.replace(d.re,e=>d.alias.get(e.toLowerCase())??e):u))}).join("\n")}let u=(e,t)=>e.length>t?`${e.slice(0,t-1).trimEnd()}…`:e;e.s(["g",0,(e,t,r)=>u(l(String(e??"").replace(/\s+/g," "),t).replace(/\s+/g," ").trim(),r),"R",0,(e,r,a)=>{let n;return u((n=String(e??"").replace(/\s+/g," "),(0,t.q)(l(n,r),r)).replace(/\s+/g," ").trim(),a)}])}]})();
@@ -0,0 +1,3 @@
1
+ (()=>{"use strict";module.exports=[221994,e=>{var t=e.i(802847),o=e.i(870988),n=e.i(438257),l=e.i(144902),a=e.i(484259),r=e.i(303090),i=e.i(467751),d=e.i(618916);let s={createdAt:(0,r._)("created_at",{withTimezone:!0}).notNull().defaultNow(),updatedAt:(0,r._)("updated_at",{withTimezone:!0}).notNull().defaultNow()},u=d.ops.table("reports",{id:(0,i.q)("id").primaryKey().defaultRandom(),clientName:(0,a.f)("client_name").notNull(),title:(0,a.f)("title"),lang:(0,a.f)("lang").$type().notNull().default("en"),note:(0,a.f)("note"),emailOpening:(0,a.f)("email_opening"),recipients:(0,n.y)("recipients").$type().notNull().default([]),autoSend:(0,t.f)("auto_send").notNull().default(!1),sender:(0,a.f)("sender").$type(),...s}),m=d.ops.table("report_sites",{reportId:(0,i.q)("report_id").notNull().references(()=>u.id,{onDelete:"cascade"}),monitorId:(0,i.q)("monitor_id").notNull().references(()=>d.monitors.id,{onDelete:"cascade"}),displayName:(0,a.f)("display_name").notNull(),position:(0,o.f)("position").notNull().default(0)},e=>[(0,l._)({columns:[e.reportId,e.monitorId]})]),c=d.ops.table("report_sends",{reportId:(0,i.q)("report_id").notNull().references(()=>u.id,{onDelete:"cascade"}),month:(0,a.f)("month").notNull(),status:(0,a.f)("status").$type().notNull(),attempts:(0,o.f)("attempts").notNull().default(0),lastError:(0,a.f)("last_error"),claimedAt:(0,r._)("claimed_at",{withTimezone:!0}),sentAt:(0,r._)("sent_at",{withTimezone:!0})},e=>[(0,l._)({columns:[e.reportId,e.month]})]),p=d.ops.table("deploy_days",{resourceId:(0,i.q)("resource_id").notNull().references(()=>d.resources.id,{onDelete:"cascade"}),day:(0,a.f)("day").notNull(),ok:(0,o.f)("ok").notNull(),failed:(0,o.f)("failed").notNull()},e=>[(0,l._)({columns:[e.resourceId,e.day]})]);e.s(["p",0,p,"q",0,c,"Z",0,m,"I",0,u])},273083,e=>{e.s(["f",0,{checks:7,rollupsHourly:90,deployments:30,events:90,alerts:90,collectorRuns:14,storedLogs:7,recommendationDismissals:90}])},196514,e=>{e.s(["e",0,function(e){let[t,o]=e.split("-").map(Number);return Array.from({length:new Date(Date.UTC(t,o,0)).getUTCDate()},(t,o)=>`${e}-${String(o+1).padStart(2,"0")}`)},"C",0,function(e,t){let o=new Intl.DateTimeFormat("en-CA",{timeZone:t,year:"numeric",month:"2-digit",day:"2-digit"}).formatToParts(e),n=e=>o.find(t=>t.type===e)?.value??"";return`${n("year")}-${n("month")}-${n("day")}`},"K",0,function(e,t){let o=Date.parse(`${e}T00:00:00Z`),n=new Intl.DateTimeFormat("en-CA",{timeZone:t,hourCycle:"h23",year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}).formatToParts(new Date(o)),l=e=>Number(n.find(t=>t.type===e)?.value);return new Date(o-(Date.UTC(l("year"),l("month")-1,l("day"),l("hour"),l("minute"),l("second"))-o))}])}]})();
2
+
3
+ //# sourceMappingURL=src_20xyhmuf0y6_v._.js.map