watchbell 1.6.1 β†’ 1.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (981) hide show
  1. package/package.json +1 -1
  2. package/server/.next/BUILD_ID +1 -1
  3. package/server/.next/app-path-routes-manifest.json +3 -0
  4. package/server/.next/build-manifest.json +14 -3
  5. package/server/.next/prerender-manifest.json +3 -3
  6. package/server/.next/required-server-files.json +1 -1
  7. package/server/.next/routes-manifest.json +20 -0
  8. package/server/.next/server/app/(console)/(private)/ai/agents/page/server-reference-manifest.json +13 -13
  9. package/server/.next/server/app/(console)/(private)/ai/agents/page.js +71 -69
  10. package/server/.next/server/app/(console)/(private)/ai/agents/page.js.nft.json +1 -1
  11. package/server/.next/server/app/(console)/(private)/ai/agents/page_client-reference-manifest.js +1 -1
  12. package/server/.next/server/app/(console)/(private)/ai/ask/page/server-reference-manifest.json +12 -12
  13. package/server/.next/server/app/(console)/(private)/ai/ask/page.js +71 -69
  14. package/server/.next/server/app/(console)/(private)/ai/ask/page.js.nft.json +1 -1
  15. package/server/.next/server/app/(console)/(private)/ai/ask/page_client-reference-manifest.js +1 -1
  16. package/server/.next/server/app/(console)/(private)/ai/connect/page/server-reference-manifest.json +11 -11
  17. package/server/.next/server/app/(console)/(private)/ai/connect/page.js +71 -69
  18. package/server/.next/server/app/(console)/(private)/ai/connect/page.js.nft.json +1 -1
  19. package/server/.next/server/app/(console)/(private)/ai/connect/page_client-reference-manifest.js +1 -1
  20. package/server/.next/server/app/(console)/(private)/ai/keys/page/server-reference-manifest.json +14 -14
  21. package/server/.next/server/app/(console)/(private)/ai/keys/page.js +71 -69
  22. package/server/.next/server/app/(console)/(private)/ai/keys/page.js.nft.json +1 -1
  23. package/server/.next/server/app/(console)/(private)/ai/keys/page_client-reference-manifest.js +1 -1
  24. package/server/.next/server/app/(console)/(private)/ai/logs/page/server-reference-manifest.json +12 -12
  25. package/server/.next/server/app/(console)/(private)/ai/logs/page.js +71 -69
  26. package/server/.next/server/app/(console)/(private)/ai/logs/page.js.nft.json +1 -1
  27. package/server/.next/server/app/(console)/(private)/ai/logs/page_client-reference-manifest.js +1 -1
  28. package/server/.next/server/app/(console)/(private)/ai/models/page/server-reference-manifest.json +21 -21
  29. package/server/.next/server/app/(console)/(private)/ai/models/page.js +71 -69
  30. package/server/.next/server/app/(console)/(private)/ai/models/page.js.nft.json +1 -1
  31. package/server/.next/server/app/(console)/(private)/ai/models/page_client-reference-manifest.js +1 -1
  32. package/server/.next/server/app/(console)/(private)/ai/page/server-reference-manifest.json +11 -11
  33. package/server/.next/server/app/(console)/(private)/ai/page.js +71 -69
  34. package/server/.next/server/app/(console)/(private)/ai/page.js.nft.json +1 -1
  35. package/server/.next/server/app/(console)/(private)/ai/page_client-reference-manifest.js +1 -1
  36. package/server/.next/server/app/(console)/(private)/ai/playground/page/server-reference-manifest.json +14 -14
  37. package/server/.next/server/app/(console)/(private)/ai/playground/page.js +71 -69
  38. package/server/.next/server/app/(console)/(private)/ai/playground/page.js.nft.json +1 -1
  39. package/server/.next/server/app/(console)/(private)/ai/playground/page_client-reference-manifest.js +1 -1
  40. package/server/.next/server/app/(console)/(private)/ai/providers/page/server-reference-manifest.json +17 -17
  41. package/server/.next/server/app/(console)/(private)/ai/providers/page.js +71 -69
  42. package/server/.next/server/app/(console)/(private)/ai/providers/page.js.nft.json +1 -1
  43. package/server/.next/server/app/(console)/(private)/ai/providers/page_client-reference-manifest.js +1 -1
  44. package/server/.next/server/app/(console)/(private)/ai/quota/page/server-reference-manifest.json +12 -12
  45. package/server/.next/server/app/(console)/(private)/ai/quota/page.js +71 -69
  46. package/server/.next/server/app/(console)/(private)/ai/quota/page.js.nft.json +1 -1
  47. package/server/.next/server/app/(console)/(private)/ai/quota/page_client-reference-manifest.js +1 -1
  48. package/server/.next/server/app/(console)/(private)/ai/usage/page/server-reference-manifest.json +12 -12
  49. package/server/.next/server/app/(console)/(private)/ai/usage/page.js +71 -69
  50. package/server/.next/server/app/(console)/(private)/ai/usage/page.js.nft.json +1 -1
  51. package/server/.next/server/app/(console)/(private)/ai/usage/page_client-reference-manifest.js +1 -1
  52. package/server/.next/server/app/(console)/(private)/api-docs/[[...op]]/page/server-reference-manifest.json +11 -11
  53. package/server/.next/server/app/(console)/(private)/api-docs/[[...op]]/page.js +71 -69
  54. package/server/.next/server/app/(console)/(private)/api-docs/[[...op]]/page.js.nft.json +1 -1
  55. package/server/.next/server/app/(console)/(private)/api-docs/[[...op]]/page_client-reference-manifest.js +1 -1
  56. package/server/.next/server/app/(console)/(private)/auto-actions/page/server-reference-manifest.json +12 -12
  57. package/server/.next/server/app/(console)/(private)/auto-actions/page.js +71 -69
  58. package/server/.next/server/app/(console)/(private)/auto-actions/page.js.nft.json +1 -1
  59. package/server/.next/server/app/(console)/(private)/auto-actions/page_client-reference-manifest.js +1 -1
  60. package/server/.next/server/app/(console)/alerts/page/server-reference-manifest.json +27 -27
  61. package/server/.next/server/app/(console)/alerts/page.js +71 -69
  62. package/server/.next/server/app/(console)/alerts/page.js.nft.json +1 -1
  63. package/server/.next/server/app/(console)/alerts/page_client-reference-manifest.js +1 -1
  64. package/server/.next/server/app/(console)/apps/[id]/page/server-reference-manifest.json +34 -34
  65. package/server/.next/server/app/(console)/apps/[id]/page.js +71 -69
  66. package/server/.next/server/app/(console)/apps/[id]/page.js.nft.json +1 -1
  67. package/server/.next/server/app/(console)/apps/[id]/page_client-reference-manifest.js +1 -1
  68. package/server/.next/server/app/(console)/apps/page/server-reference-manifest.json +14 -14
  69. package/server/.next/server/app/(console)/apps/page.js +71 -69
  70. package/server/.next/server/app/(console)/apps/page.js.nft.json +1 -1
  71. package/server/.next/server/app/(console)/apps/page_client-reference-manifest.js +1 -1
  72. package/server/.next/server/app/(console)/backups/page/server-reference-manifest.json +14 -14
  73. package/server/.next/server/app/(console)/backups/page.js +71 -69
  74. package/server/.next/server/app/(console)/backups/page.js.nft.json +1 -1
  75. package/server/.next/server/app/(console)/backups/page_client-reference-manifest.js +1 -1
  76. package/server/.next/server/app/(console)/catalog/page/server-reference-manifest.json +11 -11
  77. package/server/.next/server/app/(console)/catalog/page.js +71 -69
  78. package/server/.next/server/app/(console)/catalog/page.js.nft.json +1 -1
  79. package/server/.next/server/app/(console)/catalog/page_client-reference-manifest.js +1 -1
  80. package/server/.next/server/app/(console)/connections/page/server-reference-manifest.json +22 -22
  81. package/server/.next/server/app/(console)/connections/page.js +71 -69
  82. package/server/.next/server/app/(console)/connections/page.js.nft.json +1 -1
  83. package/server/.next/server/app/(console)/connections/page_client-reference-manifest.js +1 -1
  84. package/server/.next/server/app/(console)/containers/page/server-reference-manifest.json +14 -14
  85. package/server/.next/server/app/(console)/containers/page.js +71 -69
  86. package/server/.next/server/app/(console)/containers/page.js.nft.json +1 -1
  87. package/server/.next/server/app/(console)/containers/page_client-reference-manifest.js +1 -1
  88. package/server/.next/server/app/(console)/d1/page/server-reference-manifest.json +11 -11
  89. package/server/.next/server/app/(console)/d1/page.js +71 -69
  90. package/server/.next/server/app/(console)/d1/page.js.nft.json +1 -1
  91. package/server/.next/server/app/(console)/d1/page_client-reference-manifest.js +1 -1
  92. package/server/.next/server/app/(console)/deploy/page/server-reference-manifest.json +11 -11
  93. package/server/.next/server/app/(console)/deploy/page.js +71 -69
  94. package/server/.next/server/app/(console)/deploy/page.js.nft.json +1 -1
  95. package/server/.next/server/app/(console)/deploy/page_client-reference-manifest.js +1 -1
  96. package/server/.next/server/app/(console)/deployments/page/server-reference-manifest.json +19 -19
  97. package/server/.next/server/app/(console)/deployments/page.js +71 -69
  98. package/server/.next/server/app/(console)/deployments/page.js.nft.json +1 -1
  99. package/server/.next/server/app/(console)/deployments/page_client-reference-manifest.js +1 -1
  100. package/server/.next/server/app/(console)/dns/page/server-reference-manifest.json +18 -18
  101. package/server/.next/server/app/(console)/dns/page.js +71 -69
  102. package/server/.next/server/app/(console)/dns/page.js.nft.json +1 -1
  103. package/server/.next/server/app/(console)/dns/page_client-reference-manifest.js +1 -1
  104. package/server/.next/server/app/(console)/domains/page/server-reference-manifest.json +13 -13
  105. package/server/.next/server/app/(console)/domains/page.js +71 -69
  106. package/server/.next/server/app/(console)/domains/page.js.nft.json +1 -1
  107. package/server/.next/server/app/(console)/domains/page_client-reference-manifest.js +1 -1
  108. package/server/.next/server/app/(console)/events/page/server-reference-manifest.json +11 -11
  109. package/server/.next/server/app/(console)/events/page.js +71 -69
  110. package/server/.next/server/app/(console)/events/page.js.nft.json +1 -1
  111. package/server/.next/server/app/(console)/events/page_client-reference-manifest.js +1 -1
  112. package/server/.next/server/app/(console)/firebase/page/server-reference-manifest.json +18 -18
  113. package/server/.next/server/app/(console)/firebase/page.js +71 -69
  114. package/server/.next/server/app/(console)/firebase/page.js.nft.json +1 -1
  115. package/server/.next/server/app/(console)/firebase/page_client-reference-manifest.js +1 -1
  116. package/server/.next/server/app/(console)/logs/page/server-reference-manifest.json +12 -12
  117. package/server/.next/server/app/(console)/logs/page.js +71 -69
  118. package/server/.next/server/app/(console)/logs/page.js.nft.json +1 -1
  119. package/server/.next/server/app/(console)/logs/page_client-reference-manifest.js +1 -1
  120. package/server/.next/server/app/(console)/manage/sections/page/server-reference-manifest.json +12 -12
  121. package/server/.next/server/app/(console)/manage/sections/page.js +71 -69
  122. package/server/.next/server/app/(console)/manage/sections/page.js.nft.json +1 -1
  123. package/server/.next/server/app/(console)/manage/sections/page_client-reference-manifest.js +1 -1
  124. package/server/.next/server/app/(console)/neon/page/server-reference-manifest.json +22 -22
  125. package/server/.next/server/app/(console)/neon/page.js +71 -69
  126. package/server/.next/server/app/(console)/neon/page.js.nft.json +1 -1
  127. package/server/.next/server/app/(console)/neon/page_client-reference-manifest.js +1 -1
  128. package/server/.next/server/app/(console)/os/page/server-reference-manifest.json +12 -12
  129. package/server/.next/server/app/(console)/os/page.js +71 -69
  130. package/server/.next/server/app/(console)/os/page.js.nft.json +1 -1
  131. package/server/.next/server/app/(console)/os/page_client-reference-manifest.js +1 -1
  132. package/server/.next/server/app/(console)/overview/page/server-reference-manifest.json +21 -21
  133. package/server/.next/server/app/(console)/overview/page.js +71 -69
  134. package/server/.next/server/app/(console)/overview/page.js.nft.json +1 -1
  135. package/server/.next/server/app/(console)/overview/page_client-reference-manifest.js +1 -1
  136. package/server/.next/server/app/(console)/reports/[id]/pdf/route/app-paths-manifest.json +3 -0
  137. package/server/.next/server/app/(console)/reports/[id]/pdf/route/build-manifest.json +12 -0
  138. package/server/.next/server/app/(console)/reports/[id]/pdf/route/server-reference-manifest.json +4 -0
  139. package/server/.next/server/app/(console)/reports/[id]/pdf/route.js +26 -0
  140. package/server/.next/server/app/(console)/reports/[id]/pdf/route.js.nft.json +1 -0
  141. package/server/.next/server/app/(console)/reports/[id]/pdf/route_client-reference-manifest.js +3 -0
  142. package/server/.next/server/app/(console)/reports/page/app-paths-manifest.json +3 -0
  143. package/server/.next/server/app/(console)/reports/page/build-manifest.json +22 -0
  144. package/server/.next/server/app/(console)/reports/page/next-font-manifest.json +11 -0
  145. package/server/.next/server/app/(console)/reports/page/react-loadable-manifest.json +1 -0
  146. package/server/.next/server/app/(console)/reports/page/server-reference-manifest.json +175 -0
  147. package/server/.next/server/app/(console)/reports/page.js +122 -0
  148. package/server/.next/server/app/(console)/reports/page.js.nft.json +1 -0
  149. package/server/.next/server/app/(console)/reports/page_client-reference-manifest.js +3 -0
  150. package/server/.next/server/app/(console)/repos/[id]/page/server-reference-manifest.json +12 -12
  151. package/server/.next/server/app/(console)/repos/[id]/page.js +71 -69
  152. package/server/.next/server/app/(console)/repos/[id]/page.js.nft.json +1 -1
  153. package/server/.next/server/app/(console)/repos/[id]/page_client-reference-manifest.js +1 -1
  154. package/server/.next/server/app/(console)/repos/page/server-reference-manifest.json +11 -11
  155. package/server/.next/server/app/(console)/repos/page.js +71 -69
  156. package/server/.next/server/app/(console)/repos/page.js.nft.json +1 -1
  157. package/server/.next/server/app/(console)/repos/page_client-reference-manifest.js +1 -1
  158. package/server/.next/server/app/(console)/settings/page/server-reference-manifest.json +62 -42
  159. package/server/.next/server/app/(console)/settings/page.js +74 -72
  160. package/server/.next/server/app/(console)/settings/page.js.nft.json +1 -1
  161. package/server/.next/server/app/(console)/settings/page_client-reference-manifest.js +1 -1
  162. package/server/.next/server/app/(console)/sql/page/server-reference-manifest.json +18 -18
  163. package/server/.next/server/app/(console)/sql/page.js +71 -69
  164. package/server/.next/server/app/(console)/sql/page.js.nft.json +1 -1
  165. package/server/.next/server/app/(console)/sql/page_client-reference-manifest.js +1 -1
  166. package/server/.next/server/app/(console)/status/page/server-reference-manifest.json +11 -11
  167. package/server/.next/server/app/(console)/status/page.js +71 -69
  168. package/server/.next/server/app/(console)/status/page.js.nft.json +1 -1
  169. package/server/.next/server/app/(console)/status/page_client-reference-manifest.js +1 -1
  170. package/server/.next/server/app/(console)/supabase/page/server-reference-manifest.json +32 -32
  171. package/server/.next/server/app/(console)/supabase/page.js +71 -69
  172. package/server/.next/server/app/(console)/supabase/page.js.nft.json +1 -1
  173. package/server/.next/server/app/(console)/supabase/page_client-reference-manifest.js +1 -1
  174. package/server/.next/server/app/(console)/topology/page/server-reference-manifest.json +11 -11
  175. package/server/.next/server/app/(console)/topology/page.js +71 -69
  176. package/server/.next/server/app/(console)/topology/page.js.nft.json +1 -1
  177. package/server/.next/server/app/(console)/topology/page_client-reference-manifest.js +1 -1
  178. package/server/.next/server/app/(console)/turso/page/server-reference-manifest.json +11 -11
  179. package/server/.next/server/app/(console)/turso/page.js +71 -69
  180. package/server/.next/server/app/(console)/turso/page.js.nft.json +1 -1
  181. package/server/.next/server/app/(console)/turso/page_client-reference-manifest.js +1 -1
  182. package/server/.next/server/app/(console)/upstash/page/server-reference-manifest.json +11 -11
  183. package/server/.next/server/app/(console)/upstash/page.js +71 -69
  184. package/server/.next/server/app/(console)/upstash/page.js.nft.json +1 -1
  185. package/server/.next/server/app/(console)/upstash/page_client-reference-manifest.js +1 -1
  186. package/server/.next/server/app/(console)/uptime/page/server-reference-manifest.json +25 -25
  187. package/server/.next/server/app/(console)/uptime/page.js +71 -69
  188. package/server/.next/server/app/(console)/uptime/page.js.nft.json +1 -1
  189. package/server/.next/server/app/(console)/uptime/page_client-reference-manifest.js +1 -1
  190. package/server/.next/server/app/(console)/welcome/page/server-reference-manifest.json +16 -16
  191. package/server/.next/server/app/(console)/welcome/page.js +71 -69
  192. package/server/.next/server/app/(console)/welcome/page.js.nft.json +1 -1
  193. package/server/.next/server/app/(console)/welcome/page_client-reference-manifest.js +1 -1
  194. package/server/.next/server/app/_global-error/page/server-reference-manifest.json +1 -1
  195. package/server/.next/server/app/_global-error/page.js +1 -1
  196. package/server/.next/server/app/_global-error/page.js.nft.json +1 -1
  197. package/server/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  198. package/server/.next/server/app/_global-error.html +1 -1
  199. package/server/.next/server/app/_global-error.rsc +3 -3
  200. package/server/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +2 -2
  201. package/server/.next/server/app/_global-error.segments/_full.segment.rsc +3 -3
  202. package/server/.next/server/app/_global-error.segments/_tree.segment.rsc +2 -2
  203. package/server/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  204. package/server/.next/server/app/_not-found/page.js.nft.json +1 -1
  205. package/server/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  206. package/server/.next/server/app/_not-found.html +1 -1
  207. package/server/.next/server/app/_not-found.rsc +4 -4
  208. package/server/.next/server/app/_not-found.segments/_full.segment.rsc +4 -4
  209. package/server/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +3 -3
  210. package/server/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  211. package/server/.next/server/app/account/password/page/server-reference-manifest.json +2 -2
  212. package/server/.next/server/app/account/password/page.js.nft.json +1 -1
  213. package/server/.next/server/app/account/password/page_client-reference-manifest.js +1 -1
  214. package/server/.next/server/app/api/collect/route/server-reference-manifest.json +8 -8
  215. package/server/.next/server/app/api/collect/route.js +91 -85
  216. package/server/.next/server/app/api/collect/route.js.nft.json +1 -1
  217. package/server/.next/server/app/api/daily/route/server-reference-manifest.json +8 -8
  218. package/server/.next/server/app/api/daily/route.js +92 -86
  219. package/server/.next/server/app/api/daily/route.js.nft.json +1 -1
  220. package/server/.next/server/app/api/health/route.js.nft.json +1 -1
  221. package/server/.next/server/app/api/ping/[...parts]/route.js +8 -7
  222. package/server/.next/server/app/api/ping/[...parts]/route.js.nft.json +1 -1
  223. package/server/.next/server/app/api/status/route.js +1 -1
  224. package/server/.next/server/app/api/status/route.js.nft.json +1 -1
  225. package/server/.next/server/app/api/telegram/webhook/route/server-reference-manifest.json +8 -8
  226. package/server/.next/server/app/api/telegram/webhook/route.js +84 -78
  227. package/server/.next/server/app/api/telegram/webhook/route.js.nft.json +1 -1
  228. package/server/.next/server/app/api/v1/[[...rest]]/route.js.nft.json +1 -1
  229. package/server/.next/server/app/api/v1/advice/route.js +26 -22
  230. package/server/.next/server/app/api/v1/advice/route.js.nft.json +1 -1
  231. package/server/.next/server/app/api/v1/ai/chat/completions/route.js +1 -1
  232. package/server/.next/server/app/api/v1/ai/chat/completions/route.js.nft.json +1 -1
  233. package/server/.next/server/app/api/v1/ai/models/route.js +1 -1
  234. package/server/.next/server/app/api/v1/ai/models/route.js.nft.json +1 -1
  235. package/server/.next/server/app/api/v1/ai/questions/[id]/route.js +1 -1
  236. package/server/.next/server/app/api/v1/ai/questions/[id]/route.js.nft.json +1 -1
  237. package/server/.next/server/app/api/v1/ai/questions/route.js +30 -26
  238. package/server/.next/server/app/api/v1/ai/questions/route.js.nft.json +1 -1
  239. package/server/.next/server/app/api/v1/mcp/route.js +28 -24
  240. package/server/.next/server/app/api/v1/mcp/route.js.nft.json +1 -1
  241. package/server/.next/server/app/api/v1/me/route.js +1 -1
  242. package/server/.next/server/app/api/v1/me/route.js.nft.json +1 -1
  243. package/server/.next/server/app/api/v1/openapi.json/route.js +1 -1
  244. package/server/.next/server/app/api/v1/openapi.json/route.js.nft.json +1 -1
  245. package/server/.next/server/app/api/v1/status/apps/[app]/route.js +29 -25
  246. package/server/.next/server/app/api/v1/status/apps/[app]/route.js.nft.json +1 -1
  247. package/server/.next/server/app/api/v1/status/route.js +29 -25
  248. package/server/.next/server/app/api/v1/status/route.js.nft.json +1 -1
  249. package/server/.next/server/app/api/watchdog/route.js +27 -21
  250. package/server/.next/server/app/api/watchdog/route.js.nft.json +1 -1
  251. package/server/.next/server/app/auth/confirm/route.js +1 -1
  252. package/server/.next/server/app/auth/confirm/route.js.nft.json +1 -1
  253. package/server/.next/server/app/auth/google/callback/route.js +16 -15
  254. package/server/.next/server/app/auth/google/callback/route.js.nft.json +1 -1
  255. package/server/.next/server/app/auth/google/create/callback/route.js +1 -1
  256. package/server/.next/server/app/auth/google/create/callback/route.js.nft.json +1 -1
  257. package/server/.next/server/app/auth/not-member/route.js +1 -1
  258. package/server/.next/server/app/auth/not-member/route.js.nft.json +1 -1
  259. package/server/.next/server/app/auth/session-ended/route.js +1 -1
  260. package/server/.next/server/app/auth/session-ended/route.js.nft.json +1 -1
  261. package/server/.next/server/app/brand-icon/route/app-paths-manifest.json +3 -0
  262. package/server/.next/server/app/brand-icon/route/build-manifest.json +12 -0
  263. package/server/.next/server/app/brand-icon/route/server-reference-manifest.json +4 -0
  264. package/server/.next/server/app/brand-icon/route.js +15 -0
  265. package/server/.next/server/app/brand-icon/route.js.nft.json +1 -0
  266. package/server/.next/server/app/brand-icon/route_client-reference-manifest.js +3 -0
  267. package/server/.next/server/app/icon.svg/route.js.nft.json +1 -1
  268. package/server/.next/server/app/invite/page/server-reference-manifest.json +2 -2
  269. package/server/.next/server/app/invite/page.js.nft.json +1 -1
  270. package/server/.next/server/app/invite/page_client-reference-manifest.js +1 -1
  271. package/server/.next/server/app/mfa/page/server-reference-manifest.json +2 -2
  272. package/server/.next/server/app/mfa/page.js +34 -31
  273. package/server/.next/server/app/mfa/page.js.nft.json +1 -1
  274. package/server/.next/server/app/mfa/page_client-reference-manifest.js +1 -1
  275. package/server/.next/server/app/mfa/setup/page/server-reference-manifest.json +3 -3
  276. package/server/.next/server/app/mfa/setup/page.js +34 -31
  277. package/server/.next/server/app/mfa/setup/page.js.nft.json +1 -1
  278. package/server/.next/server/app/mfa/setup/page_client-reference-manifest.js +1 -1
  279. package/server/.next/server/app/page/server-reference-manifest.json +1 -1
  280. package/server/.next/server/app/page.js.nft.json +1 -1
  281. package/server/.next/server/app/page_client-reference-manifest.js +1 -1
  282. package/server/.next/server/app/s/[slug]/badge/[file]/route.js +10 -8
  283. package/server/.next/server/app/s/[slug]/badge/[file]/route.js.nft.json +1 -1
  284. package/server/.next/server/app/s/[slug]/page/server-reference-manifest.json +1 -1
  285. package/server/.next/server/app/s/[slug]/page.js +10 -10
  286. package/server/.next/server/app/s/[slug]/page.js.nft.json +1 -1
  287. package/server/.next/server/app/s/[slug]/page_client-reference-manifest.js +1 -1
  288. package/server/.next/server/app/setup/page/server-reference-manifest.json +2 -2
  289. package/server/.next/server/app/setup/page.js +1 -1
  290. package/server/.next/server/app/setup/page.js.nft.json +1 -1
  291. package/server/.next/server/app/setup/page_client-reference-manifest.js +1 -1
  292. package/server/.next/server/app/signin/page/server-reference-manifest.json +3 -3
  293. package/server/.next/server/app/signin/page.js +40 -37
  294. package/server/.next/server/app/signin/page.js.nft.json +1 -1
  295. package/server/.next/server/app/signin/page_client-reference-manifest.js +1 -1
  296. package/server/.next/server/app-paths-manifest.json +3 -0
  297. package/server/.next/server/chunks/{[externals]__0n4j2emxdv20_._.js β†’ [externals]__0ws552tlu2170._.js} +1 -1
  298. package/server/.next/server/chunks/{[externals]__1hwo1oo04do39._.js β†’ [externals]__14rgrk9t-kxa1._.js} +1 -1
  299. package/server/.next/server/chunks/{[externals]__1k12utcf9tvqg._.js β†’ [externals]__1pdwh-htbnox8._.js} +1 -1
  300. package/server/.next/server/chunks/[root-of-the-server]__0-amtx67pqi56._.js +3 -0
  301. package/server/.next/server/chunks/{[root-of-the-server]__1avuwg9wmyh48._.js β†’ [root-of-the-server]__0-ytbad9hn7uc._.js} +1 -1
  302. package/server/.next/server/chunks/[root-of-the-server]__01dj-ln12bcmb._.js +1 -1
  303. package/server/.next/server/chunks/[root-of-the-server]__01nlh4ps9u-65._.js +3 -0
  304. package/server/.next/server/chunks/{[root-of-the-server]__09l9icaspfmoh._.js β†’ [root-of-the-server]__01ur0kf75ampv._.js} +2 -2
  305. package/server/.next/server/chunks/{[root-of-the-server]__1tlivd99uri0t._.js β†’ [root-of-the-server]__028m_6oqyqmyy._.js} +2 -2
  306. package/server/.next/server/chunks/[root-of-the-server]__02v25dn1cwxz6._.js +1 -1
  307. package/server/.next/server/chunks/{[root-of-the-server]__0vclan952l_ty._.js β†’ [root-of-the-server]__02wzui3ksepqf._.js} +2 -2
  308. package/server/.next/server/chunks/[root-of-the-server]__0326wv5xmnp48._.js +3 -0
  309. package/server/.next/server/chunks/[root-of-the-server]__03276vwi4jgvk._.js +1 -1
  310. package/server/.next/server/chunks/{[root-of-the-server]__06kp2_zqpttyd._.js β†’ [root-of-the-server]__03537tx7cun49._.js} +2 -2
  311. package/server/.next/server/chunks/{[root-of-the-server]__03589rgm1a3ks._.js β†’ [root-of-the-server]__0400g-0wvq3uf._.js} +2 -2
  312. package/server/.next/server/chunks/{[root-of-the-server]__0at6fxe9efr-x._.js β†’ [root-of-the-server]__04htuwoulmp21._.js} +1 -1
  313. package/server/.next/server/chunks/{[root-of-the-server]__06l038ifglbqy._.js β†’ [root-of-the-server]__04ogdmf82__0g._.js} +1 -1
  314. package/server/.next/server/chunks/[root-of-the-server]__05qcc-0e8z1u8._.js +1 -1
  315. package/server/.next/server/chunks/{[root-of-the-server]__1xdi98xyay6bn._.js β†’ [root-of-the-server]__05vm5cxqq2-pg._.js} +1 -1
  316. package/server/.next/server/chunks/{[root-of-the-server]__0a7moaa91ctod._.js β†’ [root-of-the-server]__06bn4cfh-g8-d._.js} +2 -2
  317. package/server/.next/server/chunks/{[root-of-the-server]__0uz_r72zdnwdd._.js β†’ [root-of-the-server]__06rlokvpk450w._.js} +2 -2
  318. package/server/.next/server/chunks/{[root-of-the-server]__0x5vp_8n6xvpw._.js β†’ [root-of-the-server]__06ty1ktg427pm._.js} +2 -2
  319. package/server/.next/server/chunks/{[root-of-the-server]__20qirklw1sgj0._.js β†’ [root-of-the-server]__076yrld-lo25r._.js} +2 -2
  320. package/server/.next/server/chunks/[root-of-the-server]__07eo--c90cju2._.js +1 -1
  321. package/server/.next/server/chunks/[root-of-the-server]__07u2g5ccvst94._.js +3 -0
  322. package/server/.next/server/chunks/{[root-of-the-server]__09yvavo991rdd._.js β†’ [root-of-the-server]__081k4lp976vd7._.js} +2 -2
  323. package/server/.next/server/chunks/{[root-of-the-server]__00oxbw3nfl_kd._.js β†’ [root-of-the-server]__08i6b8tzxads4._.js} +1 -1
  324. package/server/.next/server/chunks/{[root-of-the-server]__205cmd-k6g2kc._.js β†’ [root-of-the-server]__096q5ufradttx._.js} +1 -1
  325. package/server/.next/server/chunks/{[root-of-the-server]__0myf9g_uv3bia._.js β†’ [root-of-the-server]__09oipjf2ew_pn._.js} +2 -2
  326. package/server/.next/server/chunks/[root-of-the-server]__0_c_c1bv7sopk._.js +3 -0
  327. package/server/.next/server/chunks/{[root-of-the-server]__0ww7a-9fnx2rv._.js β†’ [root-of-the-server]__0a34twsor45ml._.js} +1 -1
  328. package/server/.next/server/chunks/{[root-of-the-server]__09msxcjw3tlue._.js β†’ [root-of-the-server]__0bjh2kw90a-m_._.js} +1 -1
  329. package/server/.next/server/chunks/[root-of-the-server]__0bxqqjjy9ckvm._.js +3 -0
  330. package/server/.next/server/chunks/{[root-of-the-server]__0ebkmgcs7v0c8._.js β†’ [root-of-the-server]__0dahxh87cvyn2._.js} +2 -2
  331. package/server/.next/server/chunks/[root-of-the-server]__0dd4hulw1w-4i._.js +3 -0
  332. package/server/.next/server/chunks/{[root-of-the-server]__0uyc9w7f_r10u._.js β†’ [root-of-the-server]__0dfkxg4ax2hqz._.js} +1 -1
  333. package/server/.next/server/chunks/[root-of-the-server]__0e3hcgbyb09-p._.js +3 -0
  334. package/server/.next/server/chunks/{[root-of-the-server]__0c_mpay_m5kbm._.js β†’ [root-of-the-server]__0erdelc9_06nk._.js} +1 -1
  335. package/server/.next/server/chunks/{[root-of-the-server]__0s3b61ttgb9if._.js β†’ [root-of-the-server]__0fk1609_5zg7g._.js} +2 -2
  336. package/server/.next/server/chunks/[root-of-the-server]__0fl1uspuemkzr._.js +3 -0
  337. package/server/.next/server/chunks/[root-of-the-server]__0gb4uz-gv3va0._.js +1 -1
  338. package/server/.next/server/chunks/[root-of-the-server]__0gqye-fi-f3zk._.js +1 -1
  339. package/server/.next/server/chunks/{[root-of-the-server]__1mbm_bvk1oat7._.js β†’ [root-of-the-server]__0hm5-0_rh9r6m._.js} +2 -2
  340. package/server/.next/server/chunks/{[root-of-the-server]__10-v22hv1sxrv._.js β†’ [root-of-the-server]__0hwm4j4o2v8nc._.js} +2 -2
  341. package/server/.next/server/chunks/{[root-of-the-server]__0vdm37x30hr6p._.js β†’ [root-of-the-server]__0ieq7-dtcg06b._.js} +1 -1
  342. package/server/.next/server/chunks/{[root-of-the-server]__0r0zrp3s_n614._.js β†’ [root-of-the-server]__0iicsi0n7tfa5._.js} +1 -1
  343. package/server/.next/server/chunks/[root-of-the-server]__0k73a-s2lcpoz._.js +3 -0
  344. package/server/.next/server/chunks/[root-of-the-server]__0kk-m8_ul4f4k._.js +1 -1
  345. package/server/.next/server/chunks/{[root-of-the-server]__1z1fgf8k8icw8._.js β†’ [root-of-the-server]__0kzgu06ee59vd._.js} +2 -2
  346. package/server/.next/server/chunks/{[root-of-the-server]__0puji-hw0xtk7._.js β†’ [root-of-the-server]__0mrbo2p5fy4ji._.js} +1 -1
  347. package/server/.next/server/chunks/{[root-of-the-server]__1r2ei065xk141._.js β†’ [root-of-the-server]__0nkfi6x2c4c5p._.js} +1 -1
  348. package/server/.next/server/chunks/{[root-of-the-server]__0ruici82tzf0w._.js β†’ [root-of-the-server]__0nw8jgr3bsi8b._.js} +2 -2
  349. package/server/.next/server/chunks/{[root-of-the-server]__10d4a34z0js-f._.js β†’ [root-of-the-server]__0o4e39mvq8_el._.js} +1 -1
  350. package/server/.next/server/chunks/[root-of-the-server]__0o6q27cnw6-77._.js +1 -1
  351. package/server/.next/server/chunks/[root-of-the-server]__0opds07bp1fnb._.js +3 -0
  352. package/server/.next/server/chunks/{[root-of-the-server]__1tefe1f5835t_._.js β†’ [root-of-the-server]__0pammm8f5qxtv._.js} +2 -2
  353. package/server/.next/server/chunks/{[root-of-the-server]__0ao4b2jjkcvo1._.js β†’ [root-of-the-server]__0pfcnbr0br6li._.js} +1 -1
  354. package/server/.next/server/chunks/{[root-of-the-server]__04v42ls1mfjd2._.js β†’ [root-of-the-server]__0pi9id-ywuq6g._.js} +2 -2
  355. package/server/.next/server/chunks/{[root-of-the-server]__0g0rd65zoitrb._.js β†’ [root-of-the-server]__0s3zxs-_ayd-6._.js} +1 -1
  356. package/server/.next/server/chunks/{[root-of-the-server]__192br5y94wzhx._.js β†’ [root-of-the-server]__0sgy49rgsxyvy._.js} +1 -1
  357. package/server/.next/server/chunks/{[root-of-the-server]__05b18nw2k-7-4._.js β†’ [root-of-the-server]__0sp5xoed3-994._.js} +1 -1
  358. package/server/.next/server/chunks/[root-of-the-server]__0swji6flwxtbv._.js +3 -0
  359. package/server/.next/server/chunks/{[root-of-the-server]__0fii83nfm0bsk._.js β†’ [root-of-the-server]__0tyilr06jn8nb._.js} +1 -1
  360. package/server/.next/server/chunks/[root-of-the-server]__0uss50b85q1j1._.js +3 -0
  361. package/server/.next/server/chunks/{[root-of-the-server]__0g3v-ty9-xstp._.js β†’ [root-of-the-server]__0vco1v37du1ez._.js} +1 -1
  362. package/server/.next/server/chunks/[root-of-the-server]__0vg5zp6z094qr._.js +3 -0
  363. package/server/.next/server/chunks/{[root-of-the-server]__1ji_xmb_m6fam._.js β†’ [root-of-the-server]__0vhq-__j8umfu._.js} +1 -1
  364. package/server/.next/server/chunks/[root-of-the-server]__0vp-x4ifpr3p9._.js +1 -1
  365. package/server/.next/server/chunks/{[root-of-the-server]__06zmu7jjyw1qw._.js β†’ [root-of-the-server]__0w_hiz5nrm8-4._.js} +1 -1
  366. package/server/.next/server/chunks/{[root-of-the-server]__20056vw370xom._.js β†’ [root-of-the-server]__0xd_bgjy5_tr5._.js} +1 -1
  367. package/server/.next/server/chunks/[root-of-the-server]__0xzl28izr2tiq._.js +3 -0
  368. package/server/.next/server/chunks/[root-of-the-server]__0xzreqng-t2g8._.js +3 -0
  369. package/server/.next/server/chunks/[root-of-the-server]__0yhki59n8zyjb._.js +1 -1
  370. package/server/.next/server/chunks/{[root-of-the-server]__0glhrm7zmrvi2._.js β†’ [root-of-the-server]__0z9of310ruzug._.js} +2 -2
  371. package/server/.next/server/chunks/[root-of-the-server]__0zpo6n_av-p7a._.js +3 -0
  372. package/server/.next/server/chunks/{[root-of-the-server]__1hrcyozojb6ot._.js β†’ [root-of-the-server]__0zs-wkvv1cs0i._.js} +1 -1
  373. package/server/.next/server/chunks/{[root-of-the-server]__1wcnj2xtesyd9._.js β†’ [root-of-the-server]__0zu1odpvrptrt._.js} +1 -1
  374. package/server/.next/server/chunks/[root-of-the-server]__1-3u16rnk101p._.js +3 -0
  375. package/server/.next/server/chunks/[root-of-the-server]__1-pe9ipc3y6rn._.js +3 -0
  376. package/server/.next/server/chunks/[root-of-the-server]__1-tqm3jzny4zd._.js +3 -0
  377. package/server/.next/server/chunks/[root-of-the-server]__108g59p2fl8tw._.js +3 -0
  378. package/server/.next/server/chunks/{[root-of-the-server]__0tshehtsx7229._.js β†’ [root-of-the-server]__11a8fxlpahjy2._.js} +1 -1
  379. package/server/.next/server/chunks/[root-of-the-server]__12_wmn5mkj9v7._.js +3 -0
  380. package/server/.next/server/chunks/{[root-of-the-server]__10ts7p_9fu3ge._.js β†’ [root-of-the-server]__12bo9op0qkw9d._.js} +2 -2
  381. package/server/.next/server/chunks/[root-of-the-server]__12tontjm90s-j._.js +3 -0
  382. package/server/.next/server/chunks/[root-of-the-server]__13-qqkdecmwba._.js +3 -0
  383. package/server/.next/server/chunks/{[root-of-the-server]__19jalyhtntk8p._.js β†’ [root-of-the-server]__135cn1pmljq9j._.js} +1 -1
  384. package/server/.next/server/chunks/{[root-of-the-server]__1iruoalu93dg7._.js β†’ [root-of-the-server]__140ixflf83vxj._.js} +2 -2
  385. package/server/.next/server/chunks/[root-of-the-server]__1412kx9qb_j46._.js +3 -0
  386. package/server/.next/server/chunks/[root-of-the-server]__1426to_m4prqh._.js +1 -1
  387. package/server/.next/server/chunks/{[root-of-the-server]__1a563imf6ya2l._.js β†’ [root-of-the-server]__14bynsn7eae8y._.js} +1 -1
  388. package/server/.next/server/chunks/[root-of-the-server]__152e1b97gc8hw._.js +3 -0
  389. package/server/.next/server/chunks/[root-of-the-server]__153lxhkj8-_vf._.js +3 -0
  390. package/server/.next/server/chunks/[root-of-the-server]__15tr3yx8k9lyt._.js +3 -0
  391. package/server/.next/server/chunks/[root-of-the-server]__16-0nul8mfe2m._.js +3 -0
  392. package/server/.next/server/chunks/{[root-of-the-server]__1ons16gam6qb7._.js β†’ [root-of-the-server]__172vz80sdr5ny._.js} +2 -2
  393. package/server/.next/server/chunks/[root-of-the-server]__177l2p7kcj-16._.js +1 -1
  394. package/server/.next/server/chunks/{[root-of-the-server]__0vb1_m_h5hi0z._.js β†’ [root-of-the-server]__17bz0jxsns742._.js} +2 -2
  395. package/server/.next/server/chunks/{[root-of-the-server]__14yq_wf4xemgd._.js β†’ [root-of-the-server]__17jjm80vttqmq._.js} +2 -2
  396. package/server/.next/server/chunks/[root-of-the-server]__18eqxi2vwpdjm._.js +3 -0
  397. package/server/.next/server/chunks/[root-of-the-server]__194y_mcnn0zs3._.js +3 -0
  398. package/server/.next/server/chunks/[root-of-the-server]__1_iy7tzpesarf._.js +3 -0
  399. package/server/.next/server/chunks/[root-of-the-server]__1_vfu21n1zq17._.js +3 -0
  400. package/server/.next/server/chunks/[root-of-the-server]__1akvpmbiap6nf._.js +2 -2
  401. package/server/.next/server/chunks/[root-of-the-server]__1c78cu7kb9vkl._.js +1 -1
  402. package/server/.next/server/chunks/[root-of-the-server]__1cy1k8jbwoull._.js +3 -0
  403. package/server/.next/server/chunks/[root-of-the-server]__1d1zkp1q80t6q._.js +3 -0
  404. package/server/.next/server/chunks/{[root-of-the-server]__1z_l9mj3s_6tu._.js β†’ [root-of-the-server]__1d4wmw2wohveb._.js} +1 -1
  405. package/server/.next/server/chunks/[root-of-the-server]__1dp_mz2p02ze6._.js +3 -0
  406. package/server/.next/server/chunks/{[root-of-the-server]__1ghx3ayy7tm73._.js β†’ [root-of-the-server]__1eng6c6q52y-6._.js} +2 -2
  407. package/server/.next/server/chunks/{[root-of-the-server]__0eqrtvr3uqlqf._.js β†’ [root-of-the-server]__1etg41llk7f09._.js} +1 -1
  408. package/server/.next/server/chunks/[root-of-the-server]__1f-rkijnm8me7._.js +3 -0
  409. package/server/.next/server/chunks/[root-of-the-server]__1fteaav9qn2kq._.js +3 -0
  410. package/server/.next/server/chunks/{[root-of-the-server]__0016p4j5uh74t._.js β†’ [root-of-the-server]__1gfuhug61s-qy._.js} +2 -2
  411. package/server/.next/server/chunks/{[root-of-the-server]__19o-a03uklyrw._.js β†’ [root-of-the-server]__1git7o20yf9nn._.js} +2 -2
  412. package/server/.next/server/chunks/[root-of-the-server]__1h496oc8wu4s6._.js +3 -0
  413. package/server/.next/server/chunks/[root-of-the-server]__1hertcbqi_w97._.js +3 -0
  414. package/server/.next/server/chunks/[root-of-the-server]__1io5zo7iam532._.js +1 -1
  415. package/server/.next/server/chunks/[root-of-the-server]__1j-nkcwy3w6sy._.js +3 -0
  416. package/server/.next/server/chunks/[root-of-the-server]__1jcr8cc_tlvfc._.js +3 -0
  417. package/server/.next/server/chunks/{[root-of-the-server]__0qlf-so9k6401._.js β†’ [root-of-the-server]__1kr6f03r82mk6._.js} +1 -1
  418. package/server/.next/server/chunks/[root-of-the-server]__1l3uz57-1a35s._.js +3 -0
  419. package/server/.next/server/chunks/{[root-of-the-server]__0jpktq0f88rvz._.js β†’ [root-of-the-server]__1l9pn8y-o6xyp._.js} +2 -2
  420. package/server/.next/server/chunks/[root-of-the-server]__1lp_rypkkdjp9._.js +3 -0
  421. package/server/.next/server/chunks/[root-of-the-server]__1m-z1ne4p7pi5._.js +3 -0
  422. package/server/.next/server/chunks/[root-of-the-server]__1ma2tpf6wh9p6._.js +3 -0
  423. package/server/.next/server/chunks/[root-of-the-server]__1nohrxjajgm5c._.js +3 -0
  424. package/server/.next/server/chunks/[root-of-the-server]__1o2km61kftkj1._.js +3 -0
  425. package/server/.next/server/chunks/[root-of-the-server]__1ozfk4_3lx1o7._.js +1 -1
  426. package/server/.next/server/chunks/[root-of-the-server]__1pn773t93gvn-._.js +3 -0
  427. package/server/.next/server/chunks/{[root-of-the-server]__0_vtp19_2frgj._.js β†’ [root-of-the-server]__1pyc-ezfujjcp._.js} +1 -1
  428. package/server/.next/server/chunks/{[root-of-the-server]__1yxxfmyk3649a._.js β†’ [root-of-the-server]__1pyhos8be90-4._.js} +1 -1
  429. package/server/.next/server/chunks/[root-of-the-server]__1q0h-x-7ob6cu._.js +3 -0
  430. package/server/.next/server/chunks/[root-of-the-server]__1q2e13halne9s._.js +3 -0
  431. package/server/.next/server/chunks/[root-of-the-server]__1q7xy_u4inf4h._.js +3 -0
  432. package/server/.next/server/chunks/[root-of-the-server]__1qtorf4s2dfeg._.js +3 -0
  433. package/server/.next/server/chunks/{[root-of-the-server]__20qdu-env7wgt._.js β†’ [root-of-the-server]__1sm4p209f_yie._.js} +1 -1
  434. package/server/.next/server/chunks/{[root-of-the-server]__1cdt67d022uf1._.js β†’ [root-of-the-server]__1ugnox9gcdhvm._.js} +2 -2
  435. package/server/.next/server/chunks/{[root-of-the-server]__1wbnule0tzwdu._.js β†’ [root-of-the-server]__1uhgqik99k1y6._.js} +2 -2
  436. package/server/.next/server/chunks/[root-of-the-server]__1uq4f0bdphqs2._.js +3 -0
  437. package/server/.next/server/chunks/{[root-of-the-server]__02y9yjf7lp37-._.js β†’ [root-of-the-server]__1usilhckla3wj._.js} +1 -1
  438. package/server/.next/server/chunks/[root-of-the-server]__1v_8mu8mt1n5i._.js +3 -0
  439. package/server/.next/server/chunks/[root-of-the-server]__1vtlx_63lj4tg._.js +3 -0
  440. package/server/.next/server/chunks/{[root-of-the-server]__090n04cg_br7j._.js β†’ [root-of-the-server]__1vvg0ur3_7o0p._.js} +1 -1
  441. package/server/.next/server/chunks/{[root-of-the-server]__0vsafetdvsfhj._.js β†’ [root-of-the-server]__1wjsjh-1i-sn6._.js} +1 -1
  442. package/server/.next/server/chunks/[root-of-the-server]__1wxj0f-l93gkh._.js +3 -0
  443. package/server/.next/server/chunks/[root-of-the-server]__1x4u0cdsl_81t._.js +3 -0
  444. package/server/.next/server/chunks/{[root-of-the-server]__0exruft64u1hg._.js β†’ [root-of-the-server]__1x7en4waq21dd._.js} +1 -1
  445. package/server/.next/server/chunks/[root-of-the-server]__1xku6cma1a_kb._.js +3 -0
  446. package/server/.next/server/chunks/{[root-of-the-server]__0pi_camvun8ak._.js β†’ [root-of-the-server]__1xnqsy7nud--q._.js} +2 -2
  447. package/server/.next/server/chunks/[root-of-the-server]__1xzg_370-w-6t._.js +3 -0
  448. package/server/.next/server/chunks/[root-of-the-server]__20dehd8e5-v9y._.js +1 -1
  449. package/server/.next/server/chunks/{[root-of-the-server]__1i841w7a3057h._.js β†’ [root-of-the-server]__212_l7y-180xi._.js} +1 -1
  450. package/server/.next/server/chunks/{[root-of-the-server]__1vfvw1pmssxww._.js β†’ [root-of-the-server]__217jp1b3psyq_._.js} +1 -1
  451. package/server/.next/server/chunks/_0-sqv2nbaba7h._.js +3 -0
  452. package/server/.next/server/chunks/_00t02v1a9nfr1._.js +3 -0
  453. package/server/.next/server/chunks/_01epotkqa90nv._.js +3 -0
  454. package/server/.next/server/chunks/_03wces6vk33l0._.js +3 -0
  455. package/server/.next/server/chunks/_05kxcc393c_0z._.js +3 -0
  456. package/server/.next/server/chunks/_08q7x7rdbiaql._.js +49 -0
  457. package/server/.next/server/chunks/_09iin0yvuppj0._.js +3 -0
  458. package/server/.next/server/chunks/_0apakqacgawy4._.js +3 -0
  459. package/server/.next/server/chunks/{_1t46m15axa4b4._.js β†’ _0buibatfr6-k_._.js} +3 -3
  460. package/server/.next/server/chunks/_0d29nzne5jrwy._.js +49 -0
  461. package/server/.next/server/chunks/_0dq_vw-kky70h._.js +3 -0
  462. package/server/.next/server/chunks/{_0jiq3ns7681pv._.js β†’ _0hekve2tk2eyv._.js} +3 -3
  463. package/server/.next/server/chunks/_0huryxihjw6tl._.js +49 -0
  464. package/server/.next/server/chunks/_0n-wbmmvp4omq._.js +1 -1
  465. package/server/.next/server/chunks/_0ou2tylxx1ltw._.js +10 -0
  466. package/server/.next/server/chunks/_0rqil_klxfz3j._.js +3 -0
  467. package/server/.next/server/chunks/{_0ehqx1pkh20px._.js β†’ _0s_2fgaxby9fy._.js} +3 -3
  468. package/server/.next/server/chunks/_0z4b07-oa6ms9._.js +3 -0
  469. package/server/.next/server/chunks/_10mj3f1wis1ld._.js +3 -0
  470. package/server/.next/server/chunks/_139_9h76gakgh._.js +3 -0
  471. package/server/.next/server/chunks/_14jiq00zwwqdl._.js +3 -0
  472. package/server/.next/server/chunks/_15f0c7f46zkh3._.js +3 -0
  473. package/server/.next/server/chunks/_17u84tg9ibxp9._.js +3 -0
  474. package/server/.next/server/chunks/_1e4rch26scbhq._.js +49 -0
  475. package/server/.next/server/chunks/_1g-4oov0uynv-._.js +3 -0
  476. package/server/.next/server/chunks/_1iugpfonxri3e._.js +3 -0
  477. package/server/.next/server/chunks/_1iunyzyr-tfdj._.js +31 -0
  478. package/server/.next/server/chunks/_1jor4_sz1x8mt._.js +3 -0
  479. package/server/.next/server/chunks/_1m3zrm9-rc926._.js +3 -0
  480. package/server/.next/server/chunks/_1mwwg18ni-phb._.js +3 -0
  481. package/server/.next/server/chunks/{_0zj8nj1f2phf5._.js β†’ _1n4labwyv5msc._.js} +1 -1
  482. package/server/.next/server/chunks/_1ohb_bmawpjlz._.js +10 -0
  483. package/server/.next/server/chunks/_1qcal07c71omr._.js +3 -0
  484. package/server/.next/server/chunks/_20ounk93z_b6h._.js +3 -0
  485. package/server/.next/server/chunks/_next-internal_server_app_(console)_reports_[id]_pdf_route_actions_1z8w14-7mvvj9.js +3 -0
  486. package/server/.next/server/chunks/_next-internal_server_app_brand-icon_route_actions_1d7gd59j_572y.js +3 -0
  487. package/server/.next/server/chunks/{node_modules_drizzle-orm_0p2-_xghnn-0j._.js β†’ node_modules_drizzle-orm_0ac-0bknpndrl._.js} +2 -2
  488. package/server/.next/server/chunks/{node_modules_drizzle-orm_0pxdj1u-i8py9._.js β†’ node_modules_drizzle-orm_0k-yqdh9heao6._.js} +2 -2
  489. package/server/.next/server/chunks/{node_modules_drizzle-orm_15o96osca_ezd._.js β†’ node_modules_drizzle-orm_0k7__h1lfq5ug._.js} +2 -2
  490. package/server/.next/server/chunks/{node_modules_drizzle-orm_1hvomr2ymp14o._.js β†’ node_modules_drizzle-orm_0pv-kejmwhhk-._.js} +2 -2
  491. package/server/.next/server/chunks/node_modules_drizzle-orm_1emqi6ca48q0m._.js +4 -0
  492. package/server/.next/server/chunks/node_modules_drizzle-orm_entity_1-0q2stnw2ab8.js +3 -3
  493. package/server/.next/server/chunks/src_0--qn984h6czu._.js +1 -1
  494. package/server/.next/server/chunks/src_0-s0huszb29pj._.js +3 -0
  495. package/server/.next/server/chunks/src_0071b0w5aco6_._.js +3 -0
  496. package/server/.next/server/chunks/src_05jrvcsgaq5ek._.js +1 -1
  497. package/server/.next/server/chunks/src_06tyytf_c_hlu._.js +1 -1
  498. package/server/.next/server/chunks/src_0_9n02bmhtk4z._.js +1 -1
  499. package/server/.next/server/chunks/src_0c-owt8q0lyj3._.js +1 -1
  500. package/server/.next/server/chunks/src_0dxbyz8iemj_5._.js +1 -1
  501. package/server/.next/server/chunks/src_0qnh_ndxnflja._.js +3 -0
  502. package/server/.next/server/chunks/src_0r3j66vbc5g4f._.js +3 -0
  503. package/server/.next/server/chunks/src_0u2zbz77uh__q._.js +1 -1
  504. package/server/.next/server/chunks/src_0ud2mqnh4emxz._.js +1 -1
  505. package/server/.next/server/chunks/src_1-dy6ie3_ezvm._.js +3 -0
  506. package/server/.next/server/chunks/src_10vyvp9vy_69h._.js +1 -1
  507. package/server/.next/server/chunks/src_13ij0feyzy7me._.js +3 -0
  508. package/server/.next/server/chunks/{src_05be6wzefzaky._.js β†’ src_14vh1kj98t0xu._.js} +2 -2
  509. package/server/.next/server/chunks/src_1_s_jyur8tzy3._.js +3 -0
  510. package/server/.next/server/chunks/src_1a5yibsjcy1ga._.js +1 -1
  511. package/server/.next/server/chunks/src_1cvp6ubs-3z6l._.js +1 -1
  512. package/server/.next/server/chunks/src_1d-0nhc193soh._.js +3 -0
  513. package/server/.next/server/chunks/src_1d1ewqrujfp03._.js +3 -0
  514. package/server/.next/server/chunks/src_1dio7z4_so000._.js +3 -0
  515. package/server/.next/server/chunks/src_1hpbxjbqlnuob._.js +3 -0
  516. package/server/.next/server/chunks/src_1il7wg_qjxny7._.js +1 -1
  517. package/server/.next/server/chunks/src_1tux0n9_5b1kr._.js +1 -1
  518. package/server/.next/server/chunks/src_1u-olt84z63rx._.js +1 -1
  519. package/server/.next/server/chunks/src_1wmb2yl3tn-dd._.js +1 -1
  520. package/server/.next/server/chunks/src_1wzm081p6qyre._.js +1 -1
  521. package/server/.next/server/chunks/{src_0cdn5fuk8f_x2._.js β†’ src_20eae99bkrgpt._.js} +2 -2
  522. package/server/.next/server/chunks/src_db_client_ts_0vckux1-linlc._.js +23 -0
  523. package/server/.next/server/chunks/src_lib_02-wqy78_rn85._.js +3 -0
  524. package/server/.next/server/chunks/src_lib_0ds7lhpop_adf._.js +1 -1
  525. package/server/.next/server/chunks/src_lib_0eqv8l-v8d5ze._.js +1 -1
  526. package/server/.next/server/chunks/src_lib_0glcfed-uogyd._.js +1 -1
  527. package/server/.next/server/chunks/src_lib_0iqdlrya6vfc_._.js +3 -0
  528. package/server/.next/server/chunks/src_lib_0kjik9nmtqlf5._.js +7 -0
  529. package/server/.next/server/chunks/src_lib_0krbxej8kykyp._.js +7 -0
  530. package/server/.next/server/chunks/src_lib_0o9m8m1sm5759._.js +5 -0
  531. package/server/.next/server/chunks/src_lib_0pyyxm3m1rttg._.js +1 -1
  532. package/server/.next/server/chunks/src_lib_0sd9c_cjgc4ro._.js +3 -0
  533. package/server/.next/server/chunks/src_lib_0ta8sd9jeuw50._.js +17 -17
  534. package/server/.next/server/chunks/src_lib_0xfwnbkxb4z5s._.js +7 -0
  535. package/server/.next/server/chunks/src_lib_11ky6rv8zte7m._.js +7 -0
  536. package/server/.next/server/chunks/src_lib_13irheo9qqhgx._.js +1 -1
  537. package/server/.next/server/chunks/src_lib_1550ey8j96v9n._.js +1 -1
  538. package/server/.next/server/chunks/src_lib_1n_d25awwz8ga._.js +3 -0
  539. package/server/.next/server/chunks/src_lib_1onr7b4_kglpt._.js +1 -1
  540. package/server/.next/server/chunks/src_lib_1qo6t00wwitz6._.js +17 -17
  541. package/server/.next/server/chunks/src_lib_1sz77jjn7xl7o._.js +1 -1
  542. package/server/.next/server/chunks/src_lib_alerts_catalog_ts_1ndg28acul64q._.js +1 -1
  543. package/server/.next/server/chunks/src_lib_branding_ts_03ns4y_8z0-6e._.js +3 -0
  544. package/server/.next/server/chunks/src_lib_branding_ts_0jfv9nur5alvy._.js +3 -0
  545. package/server/.next/server/chunks/src_lib_collector_auth_ts_0lqx92__e4zij._.js +6 -3
  546. package/server/.next/server/chunks/src_lib_data_report-db_ts_0b5f4dpxn08gk._.js +3 -0
  547. package/server/.next/server/chunks/src_lib_data_sections-db_ts_1ky6-o4z1mimq._.js +4 -4
  548. package/server/.next/server/chunks/src_lib_data_settings-db_ts_1to3jtggxlaz4._.js +3 -0
  549. package/server/.next/server/chunks/src_lib_data_settings-db_ts_2060-w9nbvitr._.js +3 -0
  550. package/server/.next/server/chunks/src_lib_demo_pool_ts_0fpn8acsdk64i._.js +9 -9
  551. package/server/.next/server/chunks/src_lib_demo_pool_ts_14rjvkgozh1d4._.js +11 -11
  552. package/server/.next/server/chunks/src_lib_demo_pool_ts_17xz9bk-d5uic._.js +11 -11
  553. package/server/.next/server/chunks/src_lib_demo_pool_ts_210g_on8zx_-n._.js +11 -11
  554. package/server/.next/server/chunks/src_lib_local-auth_proxy_ts_1g9krhdh2rnt2._.js +1 -21
  555. package/server/.next/server/chunks/src_lib_maintenance_ts_0voja6l8yogbf._.js +3 -0
  556. package/server/.next/server/chunks/src_lib_rate-limit_ts_09dzyftcadggh._.js +1 -1
  557. package/server/.next/server/chunks/src_lib_rate-limit_ts_0r-eu6to05vyx._.js +1 -1
  558. package/server/.next/server/chunks/src_lib_rate-limit_ts_1ahtm4quu2rri._.js +1 -1
  559. package/server/.next/server/chunks/src_lib_sections_ts_0r8u4nvlpdkgq._.js +1 -1
  560. package/server/.next/server/chunks/src_private_notes_notes-actions_ts_1g63g8u965fhc._.js +1 -1
  561. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_agents_page_actions_21atz5tidps07.js +1 -1
  562. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_models_page_actions_0rvlzfa8rjyz_.js +1 -1
  563. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_playground_page_actions_01ejc1xilpuh4.js +1 -1
  564. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_quota_page_actions_0iki29gyi8cwa.js +1 -1
  565. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_usage_page_actions_1c99h-kwdnep7.js +1 -1
  566. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_auto-actions_page_actions_1kw4ce6-efkr1.js +1 -1
  567. package/server/.next/server/chunks/ssr/{[externals]__1q1drb4oske-9._.js β†’ [externals]__1299yq-rye4ww._.js} +1 -1
  568. package/server/.next/server/chunks/ssr/{[externals]__0summv9f9jkob._.js β†’ [externals]__134px-n77ygse._.js} +1 -1
  569. package/server/.next/server/chunks/ssr/{[externals]__1jdljyrzmqoz0._.js β†’ [externals]__1s9zy_6f7xfd5._.js} +1 -1
  570. package/server/.next/server/chunks/ssr/{[externals]__00hge8tjqv73a._.js β†’ [externals]__1t5grpj1lrsbr._.js} +1 -1
  571. package/server/.next/server/chunks/ssr/[root-of-the-server]__001mglelq4wpc._.js +1 -1
  572. package/server/.next/server/chunks/ssr/{[root-of-the-server]__12t9_ndr9z-2d._.js β†’ [root-of-the-server]__004q78ed0nf0_._.js} +1 -1
  573. package/server/.next/server/chunks/ssr/{[root-of-the-server]__1a5760tg4iits._.js β†’ [root-of-the-server]__03iw2anbe7pxg._.js} +2 -2
  574. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0n4bkq-45z4aa._.js β†’ [root-of-the-server]__04_prmhm_cts4._.js} +1 -1
  575. package/server/.next/server/chunks/ssr/{[root-of-the-server]__183_36tj3p645._.js β†’ [root-of-the-server]__059q8f4tia03z._.js} +2 -2
  576. package/server/.next/server/chunks/ssr/{[root-of-the-server]__1mah0p09qrkpu._.js β†’ [root-of-the-server]__05ot6j41b9i8j._.js} +2 -2
  577. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0423qjo9c2t9-._.js β†’ [root-of-the-server]__077-acap7g4ck._.js} +1 -1
  578. package/server/.next/server/chunks/ssr/[root-of-the-server]__09blzlbsxqvy9._.js +1 -1
  579. package/server/.next/server/chunks/ssr/[root-of-the-server]__0_wsm-adqpmgy._.js +3 -0
  580. package/server/.next/server/chunks/ssr/[root-of-the-server]__0buxkrf7nrji8._.js +3 -0
  581. package/server/.next/server/chunks/ssr/{[root-of-the-server]__05s2n35zn4go-._.js β†’ [root-of-the-server]__0ct4apye0sfmc._.js} +1 -1
  582. package/server/.next/server/chunks/ssr/{[root-of-the-server]__157kjredkf1pa._.js β†’ [root-of-the-server]__0f6ao2fs70kab._.js} +1 -1
  583. package/server/.next/server/chunks/ssr/{[root-of-the-server]__02lkybw6gg3ln._.js β†’ [root-of-the-server]__0f8ibnqfh_mp0._.js} +2 -2
  584. package/server/.next/server/chunks/ssr/[root-of-the-server]__0h8-rlmhjyebb._.js +3 -0
  585. package/server/.next/server/chunks/ssr/{[root-of-the-server]__139ya3ejh6htx._.js β†’ [root-of-the-server]__0hgf7si8htevx._.js} +1 -1
  586. package/server/.next/server/chunks/ssr/[root-of-the-server]__0jgapr1cnvhi6._.js +1 -1
  587. package/server/.next/server/chunks/ssr/[root-of-the-server]__0kejvdc7h-pgz._.js +3 -0
  588. package/server/.next/server/chunks/ssr/[root-of-the-server]__0keo0-hwsnkw9._.js +1 -1
  589. package/server/.next/server/chunks/ssr/[root-of-the-server]__0kjdpn_g9gvwr._.js +3 -0
  590. package/server/.next/server/chunks/ssr/[root-of-the-server]__0l50vsk8enxzj._.js +1 -1
  591. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0z5ucbis8ik32._.js β†’ [root-of-the-server]__0msczl_qf2eml._.js} +2 -2
  592. package/server/.next/server/chunks/ssr/[root-of-the-server]__0mvauw9r_4qss._.js +1 -1
  593. package/server/.next/server/chunks/ssr/[root-of-the-server]__0rdf04ziqasfz._.js +1 -1
  594. package/server/.next/server/chunks/ssr/[root-of-the-server]__0rrdzb9wowemv._.js +1 -1
  595. package/server/.next/server/chunks/ssr/{[root-of-the-server]__1d1ksu1dlha3r._.js β†’ [root-of-the-server]__0s9z1kusbxvae._.js} +2 -2
  596. package/server/.next/server/chunks/ssr/[root-of-the-server]__0u-o_v_v6y58o._.js +3 -0
  597. package/server/.next/server/chunks/ssr/{[root-of-the-server]__10r0u-q18z71i._.js β†’ [root-of-the-server]__0uxychcp_pldy._.js} +1 -1
  598. package/server/.next/server/chunks/ssr/{[root-of-the-server]__1iqedr7nfvayk._.js β†’ [root-of-the-server]__0wlctoz_-yuyh._.js} +1 -1
  599. package/server/.next/server/chunks/ssr/{[root-of-the-server]__092gsphy4oz6k._.js β†’ [root-of-the-server]__0yr0heg1b0y5t._.js} +2 -2
  600. package/server/.next/server/chunks/ssr/[root-of-the-server]__0yvm5q_auexh3._.js +3 -0
  601. package/server/.next/server/chunks/ssr/{[root-of-the-server]__13phmsw9wsyrs._.js β†’ [root-of-the-server]__0zgo5h9mstjc8._.js} +1 -1
  602. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0no6c0whevi73._.js β†’ [root-of-the-server]__107qfgl2c58q0._.js} +1 -1
  603. package/server/.next/server/chunks/ssr/[root-of-the-server]__10ahcnczmy5hx._.js +3 -0
  604. package/server/.next/server/chunks/ssr/{[root-of-the-server]__1nk87bg9lne35._.js β†’ [root-of-the-server]__10y2ig7dg3f-k._.js} +1 -1
  605. package/server/.next/server/chunks/ssr/{[root-of-the-server]__1knbzqo0nba_q._.js β†’ [root-of-the-server]__12cdcpj45tu6j._.js} +2 -2
  606. package/server/.next/server/chunks/ssr/[root-of-the-server]__18dcfrlpoapw9._.js +3 -0
  607. package/server/.next/server/chunks/ssr/[root-of-the-server]__1_f7nip9age3d._.js +1 -1
  608. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0gyvfp6c-_edw._.js β†’ [root-of-the-server]__1a3_aiqflmt4f._.js} +2 -2
  609. package/server/.next/server/chunks/ssr/{[root-of-the-server]__16jfs8j29r4b5._.js β†’ [root-of-the-server]__1brzt_134_2iy._.js} +2 -2
  610. package/server/.next/server/chunks/ssr/[root-of-the-server]__1g6kynby65m0v._.js +3 -0
  611. package/server/.next/server/chunks/ssr/{[root-of-the-server]__07_efq7yhxfj-._.js β†’ [root-of-the-server]__1itgt83qo1e77._.js} +1 -1
  612. package/server/.next/server/chunks/ssr/[root-of-the-server]__1pafj7m_b8m14._.js +3 -0
  613. package/server/.next/server/chunks/ssr/[root-of-the-server]__1rzolbt5ior_s._.js +3 -0
  614. package/server/.next/server/chunks/ssr/{[root-of-the-server]__18gw74mr2vto3._.js β†’ [root-of-the-server]__1sw2q1p1t59y8._.js} +2 -2
  615. package/server/.next/server/chunks/ssr/[root-of-the-server]__1t9_ue4abugtn._.js +3 -0
  616. package/server/.next/server/chunks/ssr/[root-of-the-server]__1u_13nhw3kuz3._.js +1 -1
  617. package/server/.next/server/chunks/ssr/[root-of-the-server]__1vgliw2256_6l._.js +4 -0
  618. package/server/.next/server/chunks/ssr/{[root-of-the-server]__06bgklzuef-ya._.js β†’ [root-of-the-server]__1zki66ic3cluq._.js} +2 -2
  619. package/server/.next/server/chunks/ssr/_008i8a0_8skrp._.js +1 -1
  620. package/server/.next/server/chunks/ssr/_02eudwc8ieb2r._.js +2 -2
  621. package/server/.next/server/chunks/ssr/_08xqk3eibu5aw._.js +1 -1
  622. package/server/.next/server/chunks/ssr/_09s2unlb4r6yf._.js +3 -0
  623. package/server/.next/server/chunks/ssr/_0_oc9q0vqkynd._.js +1 -1
  624. package/server/.next/server/chunks/ssr/_0a22b7zsckifp._.js +1 -1
  625. package/server/.next/server/chunks/ssr/_0bd4cxnpnnq2u._.js +1 -1
  626. package/server/.next/server/chunks/ssr/_0cbbks0ms7i_u._.js +2 -2
  627. package/server/.next/server/chunks/ssr/_0cw4kz3d6kmb1._.js +1 -1
  628. package/server/.next/server/chunks/ssr/_0d2d527wcx-lf._.js +2 -2
  629. package/server/.next/server/chunks/ssr/_0d702k82llasi._.js +1 -1
  630. package/server/.next/server/chunks/ssr/_0gl-ewvbhb677._.js +2 -2
  631. package/server/.next/server/chunks/ssr/_0gmw45sb1llld._.js +1 -1
  632. package/server/.next/server/chunks/ssr/_0hqya_yuov5jw._.js +3 -0
  633. package/server/.next/server/chunks/ssr/_0i04zoixa2iup._.js +2 -2
  634. package/server/.next/server/chunks/ssr/_0idbg-ok0so2h._.js +2 -2
  635. package/server/.next/server/chunks/ssr/_0iy27gi4y9-fe._.js +1 -1
  636. package/server/.next/server/chunks/ssr/{_18sg0ilz439y6._.js β†’ _0k6kbi721s28p._.js} +2 -2
  637. package/server/.next/server/chunks/ssr/_0kdn56_ow-x_s._.js +1 -1
  638. package/server/.next/server/chunks/ssr/_0kk0of-t4vhyh._.js +4 -0
  639. package/server/.next/server/chunks/ssr/{_0c9_fa5ejth12._.js β†’ _0l0eho21fo-8l._.js} +2 -2
  640. package/server/.next/server/chunks/ssr/_0oovfx_t_-u0k._.js +1 -1
  641. package/server/.next/server/chunks/ssr/_0oub-njkja8gu._.js +2 -2
  642. package/server/.next/server/chunks/ssr/_0pqkexxo7rts_._.js +2 -2
  643. package/server/.next/server/chunks/ssr/_0r7_a5m55a1jy._.js +3 -0
  644. package/server/.next/server/chunks/ssr/_0rqil_klxfz3j._.js +3 -0
  645. package/server/.next/server/chunks/ssr/_0tnd528j0i1i4._.js +2 -2
  646. package/server/.next/server/chunks/ssr/_0uwkwcgucqgcf._.js +2 -2
  647. package/server/.next/server/chunks/ssr/_0uz60lk-7e_cj._.js +2 -2
  648. package/server/.next/server/chunks/ssr/_0wo-lpqf7hr1y._.js +2 -2
  649. package/server/.next/server/chunks/ssr/{_19q2vj_ppgsu4._.js β†’ _0x4ybc829r3ta._.js} +2 -2
  650. package/server/.next/server/chunks/ssr/_0xmud7u5hdnqu._.js +2 -2
  651. package/server/.next/server/chunks/ssr/_1-4401bfn50mf._.js +1 -1
  652. package/server/.next/server/chunks/ssr/_1-6d1tm3r_qwg._.js +1 -1
  653. package/server/.next/server/chunks/ssr/_10bven6gb1vj0._.js +1 -1
  654. package/server/.next/server/chunks/ssr/_118h21qua_4o3._.js +1 -1
  655. package/server/.next/server/chunks/ssr/_12makqwatfke-._.js +2 -2
  656. package/server/.next/server/chunks/ssr/_19-3vzkc6rk97._.js +1 -1
  657. package/server/.next/server/chunks/ssr/_19dldpcnzhkuw._.js +1 -1
  658. package/server/.next/server/chunks/ssr/_1_-o2s48aj4i7._.js +1 -1
  659. package/server/.next/server/chunks/ssr/_1bijvrgqfyij6._.js +5 -0
  660. package/server/.next/server/chunks/ssr/_1c7jkkvkvzj_u._.js +2 -2
  661. package/server/.next/server/chunks/ssr/{_1vlm9990gr64r._.js β†’ _1cdlzhw6tkrhd._.js} +2 -2
  662. package/server/.next/server/chunks/ssr/_1cl55h_h3q-b_._.js +1 -1
  663. package/server/.next/server/chunks/ssr/_1dlo17ba9g-f9._.js +2 -2
  664. package/server/.next/server/chunks/ssr/_1dp5bgqob29-f._.js +1 -1
  665. package/server/.next/server/chunks/ssr/_1fc8k_0p8l00c._.js +2 -2
  666. package/server/.next/server/chunks/ssr/_1fuywfexex2s8._.js +2 -2
  667. package/server/.next/server/chunks/ssr/_1g2zbl_-4z_hg._.js +1 -1
  668. package/server/.next/server/chunks/ssr/_1he21-bt45k8z._.js +2 -2
  669. package/server/.next/server/chunks/ssr/_1ioq9f389jnco._.js +3 -0
  670. package/server/.next/server/chunks/ssr/_1iugpfonxri3e._.js +3 -0
  671. package/server/.next/server/chunks/ssr/_1j9cka-44jd65._.js +1 -1
  672. package/server/.next/server/chunks/ssr/_1jh_o2i8hj2g5._.js +1 -1
  673. package/server/.next/server/chunks/ssr/_1ln6o3a9quwxo._.js +2 -2
  674. package/server/.next/server/chunks/ssr/_1m4km_w39x5e9._.js +1 -1
  675. package/server/.next/server/chunks/ssr/_1ong0a252wcvc._.js +13 -0
  676. package/server/.next/server/chunks/ssr/_1pp1o361lgpwu._.js +2 -2
  677. package/server/.next/server/chunks/ssr/_1q0i7-4d4iyye._.js +3 -0
  678. package/server/.next/server/chunks/ssr/_1q3fi6a4gklq6._.js +1 -1
  679. package/server/.next/server/chunks/ssr/_1qcal07c71omr._.js +3 -0
  680. package/server/.next/server/chunks/ssr/_1r2516zqb3e67._.js +3 -0
  681. package/server/.next/server/chunks/ssr/_1ul3og9l7vp32._.js +2 -2
  682. package/server/.next/server/chunks/ssr/_1yh3k88t_kh4h._.js +2 -2
  683. package/server/.next/server/chunks/ssr/_1z6dy1k48mskn._.js +1 -1
  684. package/server/.next/server/chunks/ssr/{_0fl2-fao_ye7t._.js β†’ _1zsfeuyrhcwmh._.js} +2 -2
  685. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_(private)_ai_keys_page_actions_181-3r4e_0yb5.js +1 -1
  686. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_(private)_ai_logs_page_actions_1ryb93n6khky3.js +1 -1
  687. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_alerts_page_actions_06_3gmyq3jtvi.js +1 -1
  688. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_apps_[id]_page_actions_1myo_rodrlg3a.js +2 -2
  689. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_apps_page_actions_0ksau5eicvycc.js +1 -1
  690. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_connections_page_actions_1fgolmmpxrouc.js +1 -1
  691. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_containers_page_actions_1ainjsbrnl360.js +1 -1
  692. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_dns_page_actions_17d_lvhl-u_4w.js +1 -1
  693. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_domains_page_actions_1yv3fj_fh-n-5.js +1 -1
  694. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_firebase_page_actions_00wuues_v_j3r.js +1 -1
  695. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_logs_page_actions_0oqh51t2rx6q0.js +1 -1
  696. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_manage_sections_page_actions_1sb2ldu57uj32.js +1 -1
  697. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_settings_page_actions_1363m-cfkgyvr.js +3 -0
  698. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_supabase_page_actions_1f3a_tpkwjo8z.js +1 -1
  699. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_uptime_page_actions_1ylbdz0-ykfh6.js +1 -1
  700. package/server/.next/server/chunks/ssr/_next-internal_server_app_account_password_page_actions_1v4e71_oifbx9.js +1 -1
  701. package/server/.next/server/chunks/ssr/_next-internal_server_app_signin_page_actions_11wzk446p6_zi.js +1 -1
  702. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1kr0-100zz257.js +3 -0
  703. package/server/.next/server/chunks/ssr/{[root-of-the-server]__14e0j38785glf._.js β†’ src_000iv6actp3t_._.js} +2 -2
  704. package/server/.next/server/chunks/ssr/src_0330uf9pdfco9._.js +1 -1
  705. package/server/.next/server/chunks/ssr/src_06tjy8wljego8._.js +1 -1
  706. package/server/.next/server/chunks/ssr/src_084tdkx3c_yqi._.js +1 -1
  707. package/server/.next/server/chunks/ssr/src_0abts6wp5ucc0._.js +1 -1
  708. package/server/.next/server/chunks/ssr/src_0etvjdinp5urq._.js +1 -1
  709. package/server/.next/server/chunks/ssr/src_0kls100c13ocf._.js +3 -0
  710. package/server/.next/server/chunks/ssr/src_0ovx2ogvlz2eh._.js +1 -1
  711. package/server/.next/server/chunks/ssr/src_0ph020gy78gi9._.js +1 -1
  712. package/server/.next/server/chunks/ssr/{src_1_9q6-wstn038._.js β†’ src_0torilf0s7p-e._.js} +2 -2
  713. package/server/.next/server/chunks/ssr/src_10zavgy86u3us._.js +1 -1
  714. package/server/.next/server/chunks/ssr/src_18m06fg8u7_73._.js +3 -0
  715. package/server/.next/server/chunks/ssr/{src_0632mrev4i__u._.js β†’ src_1_b884ul0envr._.js} +2 -2
  716. package/server/.next/server/chunks/ssr/src_1maoe8g5gnv0u._.js +1 -1
  717. package/server/.next/server/chunks/ssr/src_1q-jgpnd3lbcu._.js +1 -1
  718. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_agents_1fyhh1ldgm23z._.js +1 -1
  719. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_ask_ask-form_tsx_18ttm9nna_9y6._.js +1 -1
  720. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_logs_export-button_tsx_1k-crb88n1za_._.js +1 -1
  721. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_models_0ayzqn062pnv5._.js +1 -1
  722. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_playground_playground-view_tsx_18ua5zn_a0mar._.js +1 -1
  723. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_providers_1ru-30x6-uwu4._.js +1 -1
  724. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_quota_limits-form_tsx_1vouaaf560z_x._.js +1 -1
  725. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_usage_limits-form_tsx_0sfk3ver58rqw._.js +1 -1
  726. package/server/.next/server/chunks/ssr/{src_app_(console)_0krr6t05xs2tn._.js β†’ src_app_(console)_0e1l3e9r_60s4._.js} +2 -2
  727. package/server/.next/server/chunks/ssr/{src_app_(console)_0ohoun7l5f2tb._.js β†’ src_app_(console)_124kgxvmqm7j4._.js} +2 -2
  728. package/server/.next/server/chunks/ssr/src_app_(console)_alerts_0j5xlt68kwg8x._.js +2 -2
  729. package/server/.next/server/chunks/ssr/src_app_(console)_apps_[id]_08in-j3xp5mbn._.js +1 -1
  730. package/server/.next/server/chunks/ssr/src_app_(console)_backups_actions_ts_1vpytsdh0wc1f._.js +1 -1
  731. package/server/.next/server/chunks/ssr/src_app_(console)_backups_drive-buttons_tsx_00cku5r_z3jkg._.js +1 -1
  732. package/server/.next/server/chunks/ssr/src_app_(console)_connections_1fahc65-97qla._.js +1 -1
  733. package/server/.next/server/chunks/ssr/src_app_(console)_connections_1fmp_anbkapur._.js +1 -1
  734. package/server/.next/server/chunks/ssr/src_app_(console)_connections_actions_ts_103blv4gzq76z._.js +1 -1
  735. package/server/.next/server/chunks/ssr/src_app_(console)_containers_containers-view_tsx_1xkcrw5gx53xo._.js +1 -1
  736. package/server/.next/server/chunks/ssr/src_app_(console)_create_actions_ts_05-86qr6kfjey._.js +1 -1
  737. package/server/.next/server/chunks/ssr/src_app_(console)_dns_actions_ts_1jzn58xzwbukz._.js +1 -1
  738. package/server/.next/server/chunks/ssr/src_app_(console)_dns_record-actions_tsx_0cqmz51zcuebv._.js +1 -1
  739. package/server/.next/server/chunks/ssr/src_app_(console)_firebase_row-menu_tsx_0hssoq3pqjl-n._.js +1 -1
  740. package/server/.next/server/chunks/ssr/src_app_(console)_logs_log-viewer_tsx_0v3e4cflfk14w._.js +1 -1
  741. package/server/.next/server/chunks/ssr/src_app_(console)_manage_sections_section-switch_tsx_1mfs-o_357i22._.js +1 -1
  742. package/server/.next/server/chunks/ssr/src_app_(console)_monitor-actions_ts_10w3h7myk2ppi._.js +1 -1
  743. package/server/.next/server/chunks/ssr/src_app_(console)_os_os-view_tsx_0xr69f5vtstls._.js +1 -1
  744. package/server/.next/server/chunks/ssr/src_app_(console)_palette-action_ts_0zyw9a9imev6p._.js +1 -1
  745. package/server/.next/server/chunks/ssr/src_app_(console)_reports_reports-view_tsx_1l0apba6g810q._.js +3 -0
  746. package/server/.next/server/chunks/ssr/src_app_(console)_sql_1icfsti04djqe._.js +2 -2
  747. package/server/.next/server/chunks/ssr/src_app_(console)_sql_actions_ts_1oqco02hw-3vp._.js +1 -1
  748. package/server/.next/server/chunks/ssr/src_app_(console)_supabase_0ib3m2ch9gu-4._.js +1 -1
  749. package/server/.next/server/chunks/ssr/src_app_(console)_supabase_1ofufib3-zzt-._.js +1 -1
  750. package/server/.next/server/chunks/ssr/src_app_(console)_supabase_pool-actions_ts_0nzd4vwy_9zzx._.js +1 -1
  751. package/server/.next/server/chunks/ssr/src_app_(console)_uptime_148phfjye0539._.js +1 -1
  752. package/server/.next/server/chunks/ssr/src_app_(console)_uptime_1mnnkfi-2zv-k._.js +1 -1
  753. package/server/.next/server/chunks/ssr/src_app_(console)_vercel-actions_ts_0wpk1yo9v632d._.js +1 -1
  754. package/server/.next/server/chunks/ssr/src_app_mfa_setup_setup-flow_tsx_1fpwygr2vdgnh._.js +1 -1
  755. package/server/.next/server/chunks/ssr/src_app_s_[slug]_page_tsx_0jjqe6py82mpb._.js +1 -1
  756. package/server/.next/server/chunks/ssr/src_app_setup_setup-form_tsx_0izoagdur96e1._.js +1 -1
  757. package/server/.next/server/chunks/ssr/src_app_signin_1_sp0qx8_z7c9._.js +1 -1
  758. package/server/.next/server/chunks/ssr/src_app_signin_1qq0_77_vdutm._.js +3 -0
  759. package/server/.next/server/chunks/ssr/src_components_create_create-dialog_tsx_1s_9clly_m1ru._.js +1 -1
  760. package/server/.next/server/chunks/ssr/src_lib_0eqv8l-v8d5ze._.js +1 -1
  761. package/server/.next/server/chunks/ssr/src_lib_0etkz1wbvfw-k._.js +3 -0
  762. package/server/.next/server/chunks/ssr/src_lib_0jnv54-8idu07._.js +3 -0
  763. package/server/.next/server/chunks/ssr/{src_lib_1zgor_vrwl5kt._.js β†’ src_lib_0o9m8m1sm5759._.js} +2 -2
  764. package/server/.next/server/chunks/ssr/src_lib_1eioo4oodq-8h._.js +1 -1
  765. package/server/.next/server/chunks/ssr/src_lib_1myex-iv3tu5w._.js +23 -0
  766. package/server/.next/server/chunks/ssr/src_lib_1x__dvajr3xvs._.js +3 -0
  767. package/server/.next/server/chunks/ssr/src_lib_alerts_catalog_ts_1ndg28acul64q._.js +1 -1
  768. package/server/.next/server/chunks/ssr/src_lib_branding_ts_03ns4y_8z0-6e._.js +3 -0
  769. package/server/.next/server/chunks/ssr/src_lib_branding_ts_1p22ju9pii41w._.js +3 -0
  770. package/server/.next/server/chunks/ssr/src_lib_collector_self-update_ts_18m5vmptpjhtg._.js +1 -1
  771. package/server/.next/server/chunks/ssr/src_lib_data_sections-db_ts_1ky6-o4z1mimq._.js +2 -2
  772. package/server/.next/server/chunks/ssr/src_lib_data_settings-db_ts_1to3jtggxlaz4._.js +3 -0
  773. package/server/.next/server/chunks/ssr/{src_lib_demo_15e3gnqzod0tj._.js β†’ src_lib_demo_03sepqqjq9usk._.js} +2 -2
  774. package/server/.next/server/chunks/ssr/src_lib_demo_pool_ts_0fpn8acsdk64i._.js +9 -9
  775. package/server/.next/server/chunks/ssr/src_lib_network_dns-edit_ts_0xtxlbd-uwncx._.js +1 -1
  776. package/server/.next/server/chunks/ssr/src_lib_rate-limit_ts_0r-eu6to05vyx._.js +1 -1
  777. package/server/.next/server/chunks/ssr/src_lib_sections_ts_0r8u4nvlpdkgq._.js +1 -1
  778. package/server/.next/server/chunks/ssr/src_lib_view_usage_ts_1h1tj0m3n2vul._.js +1 -1
  779. package/server/.next/server/chunks/ssr/src_private_0iy_wyg2p1jkn._.js +1 -1
  780. package/server/.next/server/chunks/ssr/src_private_1yzfhupl3rlpx._.js +6 -0
  781. package/server/.next/server/chunks/ssr/src_private_actions_decide-form_tsx_1hngtxpyle3v8._.js +1 -1
  782. package/server/.next/server/chunks/ssr/src_private_ai_providers_actions_ts_0wxa36ai6s5nn._.js +1 -1
  783. package/server/.next/server/chunks/ssr/src_private_notes_notes-actions_ts_1g63g8u965fhc._.js +1 -1
  784. package/server/.next/server/middleware-build-manifest.js +14 -3
  785. package/server/.next/server/middleware.js +1 -1
  786. package/server/.next/server/next-font-manifest.js +1 -1
  787. package/server/.next/server/next-font-manifest.json +4 -0
  788. package/server/.next/server/pages/404.html +1 -1
  789. package/server/.next/server/pages/500.html +1 -1
  790. package/server/.next/server/preview-props.json +3 -3
  791. package/server/.next/server/server-reference-manifest.js +1 -1
  792. package/server/.next/server/server-reference-manifest.json +299 -175
  793. package/server/.next/static/chunks/0-v128fmc05bf.js +1 -0
  794. package/server/.next/static/chunks/{2-xolk9x48-v1.js β†’ 02db293pqegsb.js} +1 -1
  795. package/server/.next/static/chunks/{1935vuszybg7i.js β†’ 03t36gu4t__cw.js} +1 -1
  796. package/server/.next/static/chunks/{0ge2nkna7o16p.js β†’ 07p13q6tuqr2r.js} +1 -1
  797. package/server/.next/static/chunks/{1pogexbz36ij8.js β†’ 09qtiybhnydd3.js} +1 -1
  798. package/server/.next/static/chunks/{02kly5fiyvt77.js β†’ 0_5leiwhgv7d6.js} +1 -1
  799. package/server/.next/static/chunks/{3aou6xwhz8z6a.js β†’ 0_ebioh9utve_.js} +1 -1
  800. package/server/.next/static/chunks/{0l61-etojd65n.js β†’ 0_hd-kx6h59a8.js} +1 -1
  801. package/server/.next/static/chunks/{2fvh4wg2kp4c2.js β†’ 0if7r4ximmzwb.js} +1 -1
  802. package/server/.next/static/chunks/{01euc4zjlprz5.js β†’ 0ohm_qoe5thrr.js} +1 -1
  803. package/server/.next/static/chunks/0ssmmtio659vh.js +1 -0
  804. package/server/.next/static/chunks/{2-uaya1_uxlg8.js β†’ 0t0igs6uqhbf0.js} +1 -1
  805. package/server/.next/static/chunks/{0matuoy08desx.js β†’ 0ut06v9sng9g4.js} +1 -1
  806. package/server/.next/static/chunks/0w--mj7tf-9f-.js +1 -0
  807. package/server/.next/static/chunks/131egbz-4xsjl.js +1 -0
  808. package/server/.next/static/chunks/{3ursfc8kxp2ak.js β†’ 14dbn6_jif37v.js} +2 -2
  809. package/server/.next/static/chunks/{2yc4qzglai5fq.js β†’ 15l58okvbrc4_.js} +1 -1
  810. package/server/.next/static/chunks/{22ygzud_kp29f.js β†’ 1_nuygyg_kes5.js} +2 -2
  811. package/server/.next/static/chunks/1bsq3x1wh49bp.js +1 -0
  812. package/server/.next/static/chunks/{1u8mo8jflotrt.js β†’ 1esunqtpnjwkw.js} +1 -1
  813. package/server/.next/static/chunks/{33_2mbxu9wufm.js β†’ 1gizey8idqrkt.js} +1 -1
  814. package/server/.next/static/chunks/{0dq-2wtk0h5u7.js β†’ 1itgjll79qm1l.js} +1 -1
  815. package/server/.next/static/chunks/{0xlfzxnboj4f1.js β†’ 1o27sfcuph25w.js} +1 -1
  816. package/server/.next/static/chunks/{2szchf79vnxgd.js β†’ 1pz19kzjaj8uw.js} +1 -1
  817. package/server/.next/static/chunks/{1truzt17f0fce.js β†’ 1qzun1-bna-sy.js} +1 -1
  818. package/server/.next/static/chunks/1ugo5ye01racz.js +1 -0
  819. package/server/.next/static/chunks/{0v97o46v-74gw.js β†’ 1z5s55o29xqyu.js} +1 -1
  820. package/server/.next/static/chunks/{1uk98c6r9i2bn.js β†’ 21gu7xcv8ix3_.js} +1 -1
  821. package/server/.next/static/chunks/{0xz55932e19r8.js β†’ 21p4xz6ysy8mv.js} +1 -1
  822. package/server/.next/static/chunks/{2ze-y3he5_bb0.js β†’ 22bdke6t-doqh.js} +1 -1
  823. package/server/.next/static/chunks/{1r99dm6-o5qw2.js β†’ 28ljlwfuuz5a1.js} +1 -1
  824. package/server/.next/static/chunks/{363mcu9nd9znh.js β†’ 29lr_ae0uli9o.js} +1 -1
  825. package/server/.next/static/chunks/{2am77mhkx46hz.js β†’ 2jkqfajf-i0r6.js} +2 -2
  826. package/server/.next/static/chunks/{3gkm-ynu4fq5u.js β†’ 2mhli3hpy5vr9.js} +1 -1
  827. package/server/.next/static/chunks/{2p8bv7d7t08z1.js β†’ 2ns8p-8ngmi9h.js} +1 -1
  828. package/server/.next/static/chunks/{3m3vl3n5xs039.js β†’ 2vdwhg5fnxmu-.js} +2 -2
  829. package/server/.next/static/chunks/{3gmm9g54vx4w0.js β†’ 2xgya43mybqsr.js} +1 -1
  830. package/server/.next/static/chunks/{3e-0ejqqa7jwn.js β†’ 2yv02i0h6tppe.js} +1 -1
  831. package/server/.next/static/chunks/{2m8-ctreu-y-r.js β†’ 31gsdl-_t96jr.js} +1 -1
  832. package/server/.next/static/chunks/36ykgce0otv4r.css +3 -0
  833. package/server/.next/static/chunks/{0ey7akdab5tu8.js β†’ 3_lq_n61v4j3r.js} +1 -1
  834. package/server/.next/static/chunks/{1c9eb592ho0-l.js β†’ 3a11wypkvc5ey.js} +1 -1
  835. package/server/.next/static/chunks/{0mbt6eam4qr2f.js β†’ 3g0p8ugqre9ft.js} +1 -1
  836. package/server/.next/static/chunks/{0y99dm8mesqe9.js β†’ 3jq1ae0_9wu-o.js} +1 -1
  837. package/server/.next/static/chunks/3o358k-0653gr.js +1 -0
  838. package/server/.next/static/chunks/3pnzdk7snuzti.js +1 -0
  839. package/server/.next/static/chunks/{3bwwwv3sp7uyn.js β†’ 4114b2ynqr24j.js} +1 -1
  840. package/server/.next/static/chunks/{0-o-4ilzkrd38.js β†’ 41r6z31pmixbr.js} +1 -1
  841. package/server/.next/static/chunks/{3dk6a5gl9glxo.js β†’ 43wc7pgukn2dp.js} +1 -1
  842. package/server/.next/static/chunks/{3jqmm62dbykt1.js β†’ 4451kr05p691g.js} +1 -1
  843. package/server/.next/static/chunks/44t_7rpq23-bz.js +1 -0
  844. package/server/drizzle-selfhost/0011_reports.sql +56 -0
  845. package/server/drizzle-selfhost/0012_report_send_rule.sql +2 -0
  846. package/server/drizzle-selfhost/meta/_journal.json +14 -0
  847. package/server/server.js +1 -1
  848. package/server/src/lib/report/fonts/Geist-Regular.ttf +0 -0
  849. package/server/src/lib/report/fonts/Geist-SemiBold.ttf +0 -0
  850. package/server/src/lib/report/fonts/GeistMono-Regular.ttf +0 -0
  851. package/server/src/lib/report/fonts/OFL.txt +92 -0
  852. package/tools/reset-login.mjs +2 -0
  853. package/server/.next/server/chunks/[root-of-the-server]__04q-9779vl4kn._.js +0 -3
  854. package/server/.next/server/chunks/[root-of-the-server]__04u9e45_g1jdi._.js +0 -3
  855. package/server/.next/server/chunks/[root-of-the-server]__06nrq_1pbp3z-._.js +0 -3
  856. package/server/.next/server/chunks/[root-of-the-server]__06uaa_2zbg57p._.js +0 -3
  857. package/server/.next/server/chunks/[root-of-the-server]__081hh3_un4awi._.js +0 -3
  858. package/server/.next/server/chunks/[root-of-the-server]__09gla7jgbw2bs._.js +0 -3
  859. package/server/.next/server/chunks/[root-of-the-server]__0a0st8-rftztn._.js +0 -3
  860. package/server/.next/server/chunks/[root-of-the-server]__0dfx2psnngcys._.js +0 -3
  861. package/server/.next/server/chunks/[root-of-the-server]__0di45l_tnq1pm._.js +0 -3
  862. package/server/.next/server/chunks/[root-of-the-server]__0ej4hdoyogtji._.js +0 -3
  863. package/server/.next/server/chunks/[root-of-the-server]__0g81f_2ecmg8a._.js +0 -3
  864. package/server/.next/server/chunks/[root-of-the-server]__0jma907r441wi._.js +0 -3
  865. package/server/.next/server/chunks/[root-of-the-server]__0t0dd5t5rch1i._.js +0 -3
  866. package/server/.next/server/chunks/[root-of-the-server]__0ty2qkszfdr5t._.js +0 -3
  867. package/server/.next/server/chunks/[root-of-the-server]__0ugx1i8km15fl._.js +0 -3
  868. package/server/.next/server/chunks/[root-of-the-server]__0ux1hi2fgqxu7._.js +0 -3
  869. package/server/.next/server/chunks/[root-of-the-server]__12tmfv427e9cb._.js +0 -3
  870. package/server/.next/server/chunks/[root-of-the-server]__1481y3utu_a_o._.js +0 -3
  871. package/server/.next/server/chunks/[root-of-the-server]__14e0j38785glf._.js +0 -3
  872. package/server/.next/server/chunks/[root-of-the-server]__1_0vd5-tvmsg8._.js +0 -3
  873. package/server/.next/server/chunks/[root-of-the-server]__1_goy0uhapvk9._.js +0 -3
  874. package/server/.next/server/chunks/[root-of-the-server]__1ac-dzt5bffr2._.js +0 -3
  875. package/server/.next/server/chunks/[root-of-the-server]__1ajyr5xvo1-x5._.js +0 -3
  876. package/server/.next/server/chunks/[root-of-the-server]__1ey2qia7rofoc._.js +0 -3
  877. package/server/.next/server/chunks/[root-of-the-server]__1hlvqq0azku2x._.js +0 -3
  878. package/server/.next/server/chunks/[root-of-the-server]__1hrviq7s700td._.js +0 -3
  879. package/server/.next/server/chunks/[root-of-the-server]__1ifov-udw6__d._.js +0 -3
  880. package/server/.next/server/chunks/[root-of-the-server]__1ig0p-frprcbm._.js +0 -3
  881. package/server/.next/server/chunks/[root-of-the-server]__1ksyvvsf32jfg._.js +0 -3
  882. package/server/.next/server/chunks/[root-of-the-server]__1kzi1du1sliqb._.js +0 -3
  883. package/server/.next/server/chunks/[root-of-the-server]__1mvibnqor6lx_._.js +0 -3
  884. package/server/.next/server/chunks/[root-of-the-server]__1o-zo4qebuqwy._.js +0 -3
  885. package/server/.next/server/chunks/[root-of-the-server]__1po33h2u2o4e_._.js +0 -3
  886. package/server/.next/server/chunks/[root-of-the-server]__1qps9ushddgwe._.js +0 -3
  887. package/server/.next/server/chunks/[root-of-the-server]__1qrj37m-5y-56._.js +0 -3
  888. package/server/.next/server/chunks/[root-of-the-server]__1qyz1wi13rxxb._.js +0 -3
  889. package/server/.next/server/chunks/[root-of-the-server]__1r8mzvf7_9d2k._.js +0 -3
  890. package/server/.next/server/chunks/[root-of-the-server]__1rxke2_vpd7np._.js +0 -3
  891. package/server/.next/server/chunks/[root-of-the-server]__1sjp750034q4j._.js +0 -3
  892. package/server/.next/server/chunks/[root-of-the-server]__1won_frdj9jms._.js +0 -3
  893. package/server/.next/server/chunks/[root-of-the-server]__1wvp6wau5ueb9._.js +0 -3
  894. package/server/.next/server/chunks/[root-of-the-server]__1y9gsf61fh1fv._.js +0 -3
  895. package/server/.next/server/chunks/[root-of-the-server]__1yxudc_keazqo._.js +0 -3
  896. package/server/.next/server/chunks/[root-of-the-server]__1zvy7u_y3fzbz._.js +0 -3
  897. package/server/.next/server/chunks/[root-of-the-server]__208znvanagmpr._.js +0 -3
  898. package/server/.next/server/chunks/[root-of-the-server]__212-4r-w6a9sm._.js +0 -3
  899. package/server/.next/server/chunks/_0-5pjvqu672_v._.js +0 -49
  900. package/server/.next/server/chunks/_02qrz1g8sdvhe._.js +0 -49
  901. package/server/.next/server/chunks/_03qlijpos6a21._.js +0 -3
  902. package/server/.next/server/chunks/_06gv0srpbf_lk._.js +0 -3
  903. package/server/.next/server/chunks/_06lf75x-xhl7v._.js +0 -3
  904. package/server/.next/server/chunks/_0cbxgnkxr1uj8._.js +0 -3
  905. package/server/.next/server/chunks/_0sy878k2ywjbq._.js +0 -3
  906. package/server/.next/server/chunks/_0vjggb8yo5b9f._.js +0 -3
  907. package/server/.next/server/chunks/_0wval7co8z-pk._.js +0 -3
  908. package/server/.next/server/chunks/_103ai6ybnpq1k._.js +0 -3
  909. package/server/.next/server/chunks/_108e86rhye0o1._.js +0 -3
  910. package/server/.next/server/chunks/_12g2m3a5e94_5._.js +0 -3
  911. package/server/.next/server/chunks/_1_son1yzo5xvl._.js +0 -3
  912. package/server/.next/server/chunks/_1ap0upnvy5i_1._.js +0 -49
  913. package/server/.next/server/chunks/_1b-88djuoexz1._.js +0 -49
  914. package/server/.next/server/chunks/_1ctwjh8q__6_g._.js +0 -3
  915. package/server/.next/server/chunks/_1f14qy3kb8iac._.js +0 -3
  916. package/server/.next/server/chunks/_1fj4vzjpusyn8._.js +0 -5
  917. package/server/.next/server/chunks/_1i8u10u8nrzy2._.js +0 -3
  918. package/server/.next/server/chunks/_1k3v1-vgvzm_o._.js +0 -3
  919. package/server/.next/server/chunks/_1kcmwgs544mo-._.js +0 -3
  920. package/server/.next/server/chunks/_1ptcxyn1tzm9r._.js +0 -3
  921. package/server/.next/server/chunks/_1rskctyr7yt-b._.js +0 -3
  922. package/server/.next/server/chunks/node_modules_drizzle-orm_1oeq7sl_gbxs5._.js +0 -4
  923. package/server/.next/server/chunks/node_modules_drizzle-orm_1tmqw7vk5a4ik._.js +0 -4
  924. package/server/.next/server/chunks/src_063xvouojxyoa._.js +0 -3
  925. package/server/.next/server/chunks/src_088gmyaew7ds0._.js +0 -3
  926. package/server/.next/server/chunks/src_08fq45_-8xq5o._.js +0 -3
  927. package/server/.next/server/chunks/src_0hx0sol2clocu._.js +0 -3
  928. package/server/.next/server/chunks/src_0j84o_hkkaeg-._.js +0 -3
  929. package/server/.next/server/chunks/src_0y_4gogmeu-2k._.js +0 -3
  930. package/server/.next/server/chunks/src_13n1vi7uew4iu._.js +0 -3
  931. package/server/.next/server/chunks/src_1_fnzi0em_6er._.js +0 -3
  932. package/server/.next/server/chunks/src_1bqzr81r3wkvi._.js +0 -3
  933. package/server/.next/server/chunks/src_1wduh0eckiwl1._.js +0 -3
  934. package/server/.next/server/chunks/src_lib_0ma36vqcze7a9._.js +0 -7
  935. package/server/.next/server/chunks/src_lib_0ps7mu81f-6s1._.js +0 -7
  936. package/server/.next/server/chunks/src_lib_14grv5a5_n9o0._.js +0 -7
  937. package/server/.next/server/chunks/src_lib_1en6omqx66g9d._.js +0 -23
  938. package/server/.next/server/chunks/src_lib_1znb-e7g8dkgc._.js +0 -7
  939. package/server/.next/server/chunks/src_lib_collector_runners_ts_12z4gtgikss74._.js +0 -21
  940. package/server/.next/server/chunks/src_lib_data_metrics-db_ts_0zp7x6l28a2ep._.js +0 -3
  941. package/server/.next/server/chunks/src_lib_demo_11p30f_ci6ie2._.js +0 -3
  942. package/server/.next/server/chunks/src_lib_notify_lang_ts_1r2w02ctaky7e._.js +0 -3
  943. package/server/.next/server/chunks/ssr/[root-of-the-server]__03xevz8n-mc20._.js +0 -4
  944. package/server/.next/server/chunks/ssr/[root-of-the-server]__07zuxj3veqm14._.js +0 -3
  945. package/server/.next/server/chunks/ssr/[root-of-the-server]__0de1senl_kfo5._.js +0 -3
  946. package/server/.next/server/chunks/ssr/[root-of-the-server]__19twn3g5nv5q1._.js +0 -3
  947. package/server/.next/server/chunks/ssr/[root-of-the-server]__19wvac83zh5-9._.js +0 -3
  948. package/server/.next/server/chunks/ssr/[root-of-the-server]__1m38od9tgaroe._.js +0 -3
  949. package/server/.next/server/chunks/ssr/[root-of-the-server]__1mxpszbk1aup8._.js +0 -4
  950. package/server/.next/server/chunks/ssr/[root-of-the-server]__1tj-iwvrxfd1a._.js +0 -3
  951. package/server/.next/server/chunks/ssr/[root-of-the-server]__1zmuaump_n9c1._.js +0 -3
  952. package/server/.next/server/chunks/ssr/_01n29sxn-py3x._.js +0 -3
  953. package/server/.next/server/chunks/ssr/_03d3sxmob-gr7._.js +0 -3
  954. package/server/.next/server/chunks/ssr/_0c8kew3jsb-yb._.js +0 -3
  955. package/server/.next/server/chunks/ssr/_0qhvl_fw4qetx._.js +0 -4
  956. package/server/.next/server/chunks/ssr/_0rsh9v4b3yj0b._.js +0 -3
  957. package/server/.next/server/chunks/ssr/_0rw2pberdmaa5._.js +0 -3
  958. package/server/.next/server/chunks/ssr/_0zkmkbrbc96-h._.js +0 -3
  959. package/server/.next/server/chunks/ssr/_16vvfyez78u5k._.js +0 -3
  960. package/server/.next/server/chunks/ssr/_1d0anr0hjs5k5._.js +0 -3
  961. package/server/.next/server/chunks/ssr/_1fj4vzjpusyn8._.js +0 -5
  962. package/server/.next/server/chunks/ssr/_1rskctyr7yt-b._.js +0 -3
  963. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_settings_page_actions_12wgjpd0lbh12.js +0 -3
  964. package/server/.next/server/chunks/ssr/src_0jxjbvkvg0bjg._.js +0 -3
  965. package/server/.next/server/chunks/ssr/src_1emolu5lrse98._.js +0 -6
  966. package/server/.next/server/chunks/ssr/src_1sdwdnblbiq_g._.js +0 -3
  967. package/server/.next/server/chunks/ssr/src_app_signin_12a3ifphkkcs7._.js +0 -3
  968. package/server/.next/server/chunks/ssr/src_lib_0nbad7vu413-f._.js +0 -23
  969. package/server/.next/server/chunks/ssr/src_lib_data_metrics-db_ts_0zp7x6l28a2ep._.js +0 -3
  970. package/server/.next/static/chunks/028g933xfv8jn.js +0 -1
  971. package/server/.next/static/chunks/0utjdzwgd7zw2.js +0 -1
  972. package/server/.next/static/chunks/1sa-1lde5_ikt.js +0 -1
  973. package/server/.next/static/chunks/2zzk4wxiacgja.css +0 -3
  974. package/server/.next/static/chunks/33avmrae70_xs.js +0 -1
  975. package/server/.next/static/chunks/3lvz18snt6489.js +0 -1
  976. package/server/.next/static/chunks/3qv9klayap1tz.js +0 -1
  977. package/server/.next/static/chunks/3xkvsl4vbpm41.js +0 -1
  978. package/server/.next/static/chunks/3yu0azvye6wr_.js +0 -1
  979. /package/server/.next/static/{fogXXBSOhoHV3eIf8_j28 β†’ GBOxoOLq1PhjMCzrjHGdg}/_buildManifest.js +0 -0
  980. /package/server/.next/static/{fogXXBSOhoHV3eIf8_j28 β†’ GBOxoOLq1PhjMCzrjHGdg}/_clientMiddlewareManifest.js +0 -0
  981. /package/server/.next/static/{fogXXBSOhoHV3eIf8_j28 β†’ GBOxoOLq1PhjMCzrjHGdg}/_ssgManifest.js +0 -0
@@ -1,3 +1,3 @@
1
- (()=>{"use strict";module.exports=[992861,a=>{var b=a.i(187924),c=a.i(101169),d=a.i(218024),e=a.i(196790),f=a.i(817748),g=a.i(901615),h=a.i(238246),i=a.i(572131),j=a.i(823292),k=a.i(619089),l=a.i(507504),m=a.i(814574),n=a.i(405050);let o=(0,n.createServerReference)("400ed1a3e37ecebcb7ca0e01f05a6367c46923f467",n.callServer,void 0,n.findSourceMapURL,"createKeyAction");function p({scopes:a}){return(0,b.jsx)(b.Fragment,{children:a.map(a=>(0,b.jsx)("span",{className:"mr-1 inline-block whitespace-nowrap rounded-[4px] border border-line bg-surface-2 px-[5px] font-mono text-xs text-ink-soft",children:a},a))})}var q=a.i(136476);function r({icon:a,title:c,sub:d}){return(0,b.jsxs)("div",{className:"flex items-start gap-3 px-[18px] pb-2 pt-4",children:[(0,b.jsx)("span",{className:"grid size-9 shrink-0 place-items-center rounded-lg bg-sunken text-ink-soft",children:a}),(0,b.jsxs)("div",{children:[(0,b.jsx)(m.F,{className:"text-base",children:c}),(0,b.jsx)(m.C,{className:"mt-0.5 text-[13px] text-ink-soft",children:d})]})]})}function s({onCreated:a,onCancel:c}){let[d,f]=(0,i.useState)(""),[h,l]=(0,i.useState)(q.J),[m,n]=(0,i.useState)(q.j),[t,u]=(0,i.useState)(String(q.D)),[v,w]=(0,i.useState)({}),[x,y]=(0,i.useState)(""),[z,A]=(0,i.useTransition)();return(0,b.jsxs)("form",{onSubmit:function(b){b.preventDefault(),A(async()=>{w({}),y("");try{let b=await o({name:d.trim(),scopes:q.B.filter(a=>h.includes(a)),expiry:m,ratePerMin:t.trim()});b.ok&&b.data?(j.c.success(b.message??"Key created."),a(b.data)):b.ok||(b.fieldErrors?w(b.fieldErrors):y(b.error))}catch{y("Watchbell didn't answer. Check that it's still running, then try again.")}})},noValidate:!0,children:[(0,b.jsx)(r,{icon:(0,b.jsx)(e.f,{size:19}),title:"Create API key",sub:"For one app or agent. Shown once."}),(0,b.jsxs)("div",{className:"px-[18px] pt-1.5",children:[(0,b.jsx)(k.O,{id:"key-name",label:"Name",help:"Lowercase letters, digits and dashes. Agents and Logs show it.",error:v.name,children:(0,b.jsx)("input",{id:"key-name",value:d,onChange:a=>f(a.target.value),placeholder:g.C.namePlaceholder,autoComplete:"off",autoCapitalize:"none",spellCheck:!1,className:k.S})}),(0,b.jsxs)("fieldset",{className:"mb-3.5",children:[(0,b.jsx)("legend",{className:"mb-[5px] text-[13px] font-medium",children:"Scopes"}),(0,b.jsx)("div",{className:"flex flex-col gap-1.5",children:q.B.map(a=>(0,b.jsxs)("label",{className:"flex cursor-pointer items-start gap-2",children:[(0,b.jsx)("input",{type:"checkbox",checked:h.includes(a),onChange:()=>l(b=>b.includes(a)?b.filter(b=>b!==a):[...b,a]),className:"mt-[3px] accent-brand"}),(0,b.jsxs)("span",{children:[(0,b.jsx)(p,{scopes:[a]})," ",(0,b.jsx)("span",{className:"text-[13px] text-ink-soft",children:q.h[a].short})]})]},a))}),v.scopes&&(0,b.jsx)("span",{className:"text-[12.5px] text-err",role:"alert",children:v.scopes})]}),(0,b.jsxs)("div",{className:"grid grid-cols-2 gap-3 max-[560px]:grid-cols-1",children:[(0,b.jsx)(k.O,{id:"key-expiry",label:"Expires",error:v.expiry,children:(0,b.jsx)("select",{id:"key-expiry",value:m,onChange:a=>n(a.target.value),className:k.S,children:q.W.map(a=>(0,b.jsx)("option",{value:a,children:q.o[a]},a))})}),(0,b.jsx)(k.O,{id:"key-rate",label:"Rate limit",help:"Requests per minute, 1–600. Applies before the provider's own limits.",error:v.ratePerMin,children:(0,b.jsx)("input",{id:"key-rate",inputMode:"numeric",value:t,onChange:a=>u(a.target.value),className:`${k.S} font-mono`})})]}),x&&(0,b.jsx)("p",{className:"mb-3 text-[13px] text-err",role:"alert",children:x})]}),(0,b.jsxs)("div",{className:"flex justify-end gap-2 border-t border-line px-[18px] py-3",children:[(0,b.jsx)(k.K,{onClick:c,disabled:z,children:"Cancel"}),(0,b.jsx)(k.K,{type:"submit",variant:"primary",disabled:z,children:z?"Creating…":"Create key"})]})]})}function t({created:a,onDone:e}){async function f(){try{await navigator.clipboard.writeText(a.key),j.c.success("Copied.")}catch{j.c.error("Couldn't copy. Select the key and copy it by hand.")}}return(0,b.jsxs)("div",{children:[(0,b.jsx)(r,{icon:(0,b.jsx)(c.f,{size:19}),title:`Key ${a.name} created`,sub:"Copy it now."}),(0,b.jsxs)("div",{className:"px-[18px] pb-3 pt-1.5",children:[(0,b.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,b.jsx)("code",{className:"min-w-0 flex-1 overflow-x-auto whitespace-nowrap rounded-md border border-line bg-sunken px-2 py-1.5 font-mono text-[12.5px]","data-testid":"new-key",children:a.key}),(0,b.jsxs)(k.K,{size:"sm",onClick:f,children:[(0,b.jsx)(d.f,{size:15,"aria-hidden":!0}),"Copy"]})]}),(0,b.jsx)("p",{className:"mt-2.5 rounded-md border border-warn-icon bg-warn-soft px-2.5 py-2 text-[13px] text-warn",children:"Watchbell keeps only a SHA-256 hash of this key, so it can't show it again. Lost it? Revoke it and create a new one."}),(0,b.jsxs)("p",{className:"mb-0 mt-3 text-[13px] text-ink-soft",children:["Next: put it in the app's environment as ",(0,b.jsx)("span",{className:"font-mono",children:"WATCHBELL_API_KEY"}),", then follow ",(0,b.jsx)(h.default,{href:"/ai",className:"text-brand",children:"Quick start"})," or ",(0,b.jsx)(h.default,{href:"/ai/connect",className:"text-brand",children:"Connect an agent"}),"."]})]}),(0,b.jsx)("div",{className:"flex justify-end gap-2 border-t border-line px-[18px] py-3",children:(0,b.jsx)(k.K,{variant:"primary",onClick:e,children:"Done"})})]})}a.s(["CreateKeyDialog",0,function(){let[a,c]=(0,i.useState)(!1),[d,e]=(0,i.useState)(null);function g(a){c(a),a||e(null)}return(0,l.useHoldRefresh)(a),(0,b.jsxs)(m.N,{open:a,onOpenChange:g,children:[(0,b.jsxs)(m.a,{render:(0,b.jsx)(k.K,{variant:"primary"}),children:[(0,b.jsx)(f.f,{size:16,"aria-hidden":!0}),"Create key"]}),(0,b.jsx)(m.d,{className:"gap-0 p-0 sm:max-w-[640px]",showCloseButton:!1,children:d?(0,b.jsx)(t,{created:d,onDone:()=>g(!1)}):(0,b.jsx)(s,{onCreated:e,onCancel:()=>g(!1)})})]})}],992861)},659526,a=>{var b=a.i(187924),c=a.i(572131),d=a.i(823292),e=a.i(611619),f=a.i(619089),g=a.i(507504),h=a.i(188406),i=a.i(814574),j=a.i(405050);let k=(0,j.createServerReference)("60e434ebf173979c4c461854676e44f121757a7f52",j.callServer,void 0,j.findSourceMapURL,"changeKeyAction"),l=(0,j.createServerReference)("40cc28378322c5996e8f9bf27c3a93607aa44ba5ea",j.callServer,void 0,j.findSourceMapURL,"revokeKeyAction");var m=a.i(136476);let n={rename:{title:a=>`Rename ${a}`,sub:"Agents and Logs show the name. Lowercase letters, digits and dashes.",cta:"Save name"},rate:{title:()=>"Change rate limit",sub:"Requests per minute, 1–600. Applies before the provider's own limits, within a minute.",cta:"Save limit"},expiry:{title:()=>"Change expiry",sub:"Counted from today. The key stops working at that date.",cta:"Save expiry"},routing:{title:()=>"Change routing",sub:"Pin this key to one provider and, if you like, one model. Without a pin it uses the default provider.",cta:"Save routing"}};function o({mode:a,k:e,providers:g,onDone:h}){let[j,l]=(0,c.useState)(e.name),[p,q]=(0,c.useState)(String(e.ratePerMin)),[r,s]=(0,c.useState)(e.expiresAt?"90d":"never"),[t,u]=(0,c.useState)(e.providerId??""),[v,w]=(0,c.useState)(e.model??""),[x,y]=(0,c.useState)({}),[z,A]=(0,c.useState)(""),[B,C]=(0,c.useTransition)(),D=n[a];return(0,b.jsxs)("form",{onSubmit:function(b){b.preventDefault(),C(async()=>{y({}),A("");try{let b=await k(e.id,"rename"===a?{kind:"rename",name:j.trim()}:"rate"===a?{kind:"rate",ratePerMin:p.trim()}:"expiry"===a?{kind:"expiry",expiry:r}:{kind:"routing",providerId:t||null,model:t?v.trim():null});b.ok?(d.c.success(b.message??"Key updated."),h()):b.fieldErrors?y(b.fieldErrors):A(b.error)}catch{A("Watchbell didn't answer. Check that it's still running, then try again.")}})},noValidate:!0,children:[(0,b.jsxs)("div",{className:"px-[18px] pb-2 pt-4",children:[(0,b.jsx)(i.F,{className:"text-base",children:D.title(e.name)}),(0,b.jsx)(i.C,{className:"mt-0.5 text-[13px] text-ink-soft",children:D.sub})]}),(0,b.jsxs)("div",{className:"px-[18px] pt-1.5",children:["rename"===a&&(0,b.jsx)(f.O,{id:"edit-name",label:"Name",error:x.name,children:(0,b.jsx)("input",{id:"edit-name",value:j,onChange:a=>l(a.target.value),autoComplete:"off",autoCapitalize:"none",spellCheck:!1,className:f.S})}),"rate"===a&&(0,b.jsx)(f.O,{id:"edit-rate",label:"Rate limit",help:"Requests per minute.",error:x.ratePerMin,children:(0,b.jsx)("input",{id:"edit-rate",inputMode:"numeric",value:p,onChange:a=>q(a.target.value),className:`${f.S} font-mono`})}),"expiry"===a&&(0,b.jsx)(f.O,{id:"edit-expiry",label:"Expires",error:x.expiry,children:(0,b.jsx)("select",{id:"edit-expiry",value:r,onChange:a=>s(a.target.value),className:f.S,children:m.W.map(a=>(0,b.jsx)("option",{value:a,children:m.o[a]},a))})}),"routing"===a&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(f.O,{id:"edit-provider",label:"Provider",help:g.length?void 0:"No provider is connected yet. Until one is, this key has nothing to pin to.",error:x.providerId,children:(0,b.jsxs)("select",{id:"edit-provider",value:t,onChange:a=>u(a.target.value),className:f.S,children:[(0,b.jsx)("option",{value:"",children:"No pin (default provider)"}),g.map(a=>(0,b.jsxs)("option",{value:a.id,children:[a.name,a.enabled?"":" (off)"]},a.id))]})}),(0,b.jsx)(f.O,{id:"edit-model",label:"Model",help:"Optional. A Gemini model id, for example gemini-3.8-flash. Empty uses the provider's default.",error:x.model,children:(0,b.jsx)("input",{id:"edit-model",value:v,onChange:a=>w(a.target.value),disabled:!t,placeholder:"gemini-3.8-flash",autoComplete:"off",autoCapitalize:"none",spellCheck:!1,className:`${f.S} font-mono`})})]}),z&&(0,b.jsx)("p",{className:"mb-3 text-[13px] text-err",role:"alert",children:z})]}),(0,b.jsxs)("div",{className:"flex justify-end gap-2 border-t border-line px-[18px] py-3",children:[(0,b.jsx)(f.K,{onClick:h,disabled:B,children:"Cancel"}),(0,b.jsx)(f.K,{type:"submit",variant:"primary",disabled:B,children:B?"Saving…":D.cta})]})]})}a.s(["KeyActions",0,function({k:a,providers:d}){let[j,k]=(0,c.useState)(null);return(0,g.useHoldRefresh)(null!==j),(0,b.jsxs)("span",{className:"inline-flex items-center gap-1",children:[(0,b.jsx)(e.f,{trigger:(0,b.jsx)(f.K,{size:"sm",children:"Revoke"}),title:`Revoke ${a.name}?`,body:`Calls with ${a.prefix}… answer 401 within a minute. Agents using it show "Key revoked". This can't be undone; create a new key instead.`,cta:"Revoke key",danger:!0,onConfirm:async()=>{let b=await l(a.id);return{ok:b.ok,message:(b.ok?b.message:b.error)??""}}}),(0,b.jsx)(h.RowMenu,{label:`Actions for ${a.name}`,items:[{label:"Rename",onSelect:()=>k("rename")},{label:"Change rate limit",onSelect:()=>k("rate")},{label:"Change expiry",onSelect:()=>k("expiry")},{label:"Change routing",onSelect:()=>k("routing")}]}),(0,b.jsx)(i.N,{open:null!==j,onOpenChange:a=>{a||k(null)},children:(0,b.jsx)(i.d,{className:"gap-0 p-0 sm:max-w-[520px]",showCloseButton:!1,children:j&&(0,b.jsx)(o,{mode:j,k:a,providers:d,onDone:()=>k(null)})})})]})}],659526)},136476,a=>{let b={"ai:invoke":{short:"models",long:"Chat completions and the model list through your provider connections."},"read:status":{short:"console data, MCP",long:"Read-only console data: GET /api/v1/status and the MCP server. Database names are aliases; no URLs, emails or secrets."},"write:notes":{short:"post AI notes",long:a.i(901615).C.writeNotesLong}};a.s(["j",0,"90d","D",0,20,"J",0,["ai:invoke"],"W",0,["7d","30d","90d","1y","never"],"o",0,{"7d":"In 7 days","30d":"In 30 days","90d":"In 90 days","1y":"In 1 year",never:"Never"},"B",0,["ai:invoke","read:status","write:notes"],"h",0,b])}]})();
1
+ (()=>{"use strict";module.exports=[992861,a=>{var b=a.i(187924),c=a.i(101169),d=a.i(218024),e=a.i(196790),f=a.i(817748),g=a.i(901615),h=a.i(238246),i=a.i(572131),j=a.i(823292),k=a.i(619089),l=a.i(507504),m=a.i(814574),n=a.i(405050);let o=(0,n.createServerReference)("40f21df6dafbabab52a881bf477028c5d9ca7ed4ad",n.callServer,void 0,n.findSourceMapURL,"createKeyAction");function p({scopes:a}){return(0,b.jsx)(b.Fragment,{children:a.map(a=>(0,b.jsx)("span",{className:"mr-1 inline-block whitespace-nowrap rounded-[4px] border border-line bg-surface-2 px-[5px] font-mono text-xs text-ink-soft",children:a},a))})}var q=a.i(136476);function r({icon:a,title:c,sub:d}){return(0,b.jsxs)("div",{className:"flex items-start gap-3 px-[18px] pb-2 pt-4",children:[(0,b.jsx)("span",{className:"grid size-9 shrink-0 place-items-center rounded-lg bg-sunken text-ink-soft",children:a}),(0,b.jsxs)("div",{children:[(0,b.jsx)(m.F,{className:"text-base",children:c}),(0,b.jsx)(m.C,{className:"mt-0.5 text-[13px] text-ink-soft",children:d})]})]})}function s({onCreated:a,onCancel:c}){let[d,f]=(0,i.useState)(""),[h,l]=(0,i.useState)(q.J),[m,n]=(0,i.useState)(q.j),[t,u]=(0,i.useState)(String(q.D)),[v,w]=(0,i.useState)({}),[x,y]=(0,i.useState)(""),[z,A]=(0,i.useTransition)();return(0,b.jsxs)("form",{onSubmit:function(b){b.preventDefault(),A(async()=>{w({}),y("");try{let b=await o({name:d.trim(),scopes:q.B.filter(a=>h.includes(a)),expiry:m,ratePerMin:t.trim()});b.ok&&b.data?(j.c.success(b.message??"Key created."),a(b.data)):b.ok||(b.fieldErrors?w(b.fieldErrors):y(b.error))}catch{y("Watchbell didn't answer. Check that it's still running, then try again.")}})},noValidate:!0,children:[(0,b.jsx)(r,{icon:(0,b.jsx)(e.f,{size:19}),title:"Create API key",sub:"For one app or agent. Shown once."}),(0,b.jsxs)("div",{className:"px-[18px] pt-1.5",children:[(0,b.jsx)(k.O,{id:"key-name",label:"Name",help:"Lowercase letters, digits and dashes. Agents and Logs show it.",error:v.name,children:(0,b.jsx)("input",{id:"key-name",value:d,onChange:a=>f(a.target.value),placeholder:g.C.namePlaceholder,autoComplete:"off",autoCapitalize:"none",spellCheck:!1,className:k.S})}),(0,b.jsxs)("fieldset",{className:"mb-3.5",children:[(0,b.jsx)("legend",{className:"mb-[5px] text-[13px] font-medium",children:"Scopes"}),(0,b.jsx)("div",{className:"flex flex-col gap-1.5",children:q.B.map(a=>(0,b.jsxs)("label",{className:"flex cursor-pointer items-start gap-2",children:[(0,b.jsx)("input",{type:"checkbox",checked:h.includes(a),onChange:()=>l(b=>b.includes(a)?b.filter(b=>b!==a):[...b,a]),className:"mt-[3px] accent-brand"}),(0,b.jsxs)("span",{children:[(0,b.jsx)(p,{scopes:[a]})," ",(0,b.jsx)("span",{className:"text-[13px] text-ink-soft",children:q.h[a].short})]})]},a))}),v.scopes&&(0,b.jsx)("span",{className:"text-[12.5px] text-err",role:"alert",children:v.scopes})]}),(0,b.jsxs)("div",{className:"grid grid-cols-2 gap-3 max-[560px]:grid-cols-1",children:[(0,b.jsx)(k.O,{id:"key-expiry",label:"Expires",error:v.expiry,children:(0,b.jsx)("select",{id:"key-expiry",value:m,onChange:a=>n(a.target.value),className:k.S,children:q.W.map(a=>(0,b.jsx)("option",{value:a,children:q.o[a]},a))})}),(0,b.jsx)(k.O,{id:"key-rate",label:"Rate limit",help:"Requests per minute, 1–600. Applies before the provider's own limits.",error:v.ratePerMin,children:(0,b.jsx)("input",{id:"key-rate",inputMode:"numeric",value:t,onChange:a=>u(a.target.value),className:`${k.S} font-mono`})})]}),x&&(0,b.jsx)("p",{className:"mb-3 text-[13px] text-err",role:"alert",children:x})]}),(0,b.jsxs)("div",{className:"flex justify-end gap-2 border-t border-line px-[18px] py-3",children:[(0,b.jsx)(k.K,{onClick:c,disabled:z,children:"Cancel"}),(0,b.jsx)(k.K,{type:"submit",variant:"primary",disabled:z,children:z?"Creating…":"Create key"})]})]})}function t({created:a,onDone:e}){async function f(){try{await navigator.clipboard.writeText(a.key),j.c.success("Copied.")}catch{j.c.error("Couldn't copy. Select the key and copy it by hand.")}}return(0,b.jsxs)("div",{children:[(0,b.jsx)(r,{icon:(0,b.jsx)(c.f,{size:19}),title:`Key ${a.name} created`,sub:"Copy it now."}),(0,b.jsxs)("div",{className:"px-[18px] pb-3 pt-1.5",children:[(0,b.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,b.jsx)("code",{className:"min-w-0 flex-1 overflow-x-auto whitespace-nowrap rounded-md border border-line bg-sunken px-2 py-1.5 font-mono text-[12.5px]","data-testid":"new-key",children:a.key}),(0,b.jsxs)(k.K,{size:"sm",onClick:f,children:[(0,b.jsx)(d.f,{size:15,"aria-hidden":!0}),"Copy"]})]}),(0,b.jsx)("p",{className:"mt-2.5 rounded-md border border-warn-icon bg-warn-soft px-2.5 py-2 text-[13px] text-warn",children:"Watchbell keeps only a SHA-256 hash of this key, so it can't show it again. Lost it? Revoke it and create a new one."}),(0,b.jsxs)("p",{className:"mb-0 mt-3 text-[13px] text-ink-soft",children:["Next: put it in the app's environment as ",(0,b.jsx)("span",{className:"font-mono",children:"WATCHBELL_API_KEY"}),", then follow ",(0,b.jsx)(h.default,{href:"/ai",className:"text-brand",children:"Quick start"})," or ",(0,b.jsx)(h.default,{href:"/ai/connect",className:"text-brand",children:"Connect an agent"}),"."]})]}),(0,b.jsx)("div",{className:"flex justify-end gap-2 border-t border-line px-[18px] py-3",children:(0,b.jsx)(k.K,{variant:"primary",onClick:e,children:"Done"})})]})}a.s(["CreateKeyDialog",0,function(){let[a,c]=(0,i.useState)(!1),[d,e]=(0,i.useState)(null);function g(a){c(a),a||e(null)}return(0,l.useHoldRefresh)(a),(0,b.jsxs)(m.N,{open:a,onOpenChange:g,children:[(0,b.jsxs)(m.a,{render:(0,b.jsx)(k.K,{variant:"primary"}),children:[(0,b.jsx)(f.f,{size:16,"aria-hidden":!0}),"Create key"]}),(0,b.jsx)(m.d,{className:"gap-0 p-0 sm:max-w-[640px]",showCloseButton:!1,children:d?(0,b.jsx)(t,{created:d,onDone:()=>g(!1)}):(0,b.jsx)(s,{onCreated:e,onCancel:()=>g(!1)})})]})}],992861)},659526,a=>{var b=a.i(187924),c=a.i(572131),d=a.i(823292),e=a.i(611619),f=a.i(619089),g=a.i(507504),h=a.i(188406),i=a.i(814574),j=a.i(405050);let k=(0,j.createServerReference)("607652a454c471076feb753b0260df4e738dbaa23c",j.callServer,void 0,j.findSourceMapURL,"changeKeyAction"),l=(0,j.createServerReference)("40e9750b90e1c558db1a0ee034d383a1d7388e1113",j.callServer,void 0,j.findSourceMapURL,"revokeKeyAction");var m=a.i(136476);let n={rename:{title:a=>`Rename ${a}`,sub:"Agents and Logs show the name. Lowercase letters, digits and dashes.",cta:"Save name"},rate:{title:()=>"Change rate limit",sub:"Requests per minute, 1–600. Applies before the provider's own limits, within a minute.",cta:"Save limit"},expiry:{title:()=>"Change expiry",sub:"Counted from today. The key stops working at that date.",cta:"Save expiry"},routing:{title:()=>"Change routing",sub:"Pin this key to one provider and, if you like, one model. Without a pin it uses the default provider.",cta:"Save routing"}};function o({mode:a,k:e,providers:g,onDone:h}){let[j,l]=(0,c.useState)(e.name),[p,q]=(0,c.useState)(String(e.ratePerMin)),[r,s]=(0,c.useState)(e.expiresAt?"90d":"never"),[t,u]=(0,c.useState)(e.providerId??""),[v,w]=(0,c.useState)(e.model??""),[x,y]=(0,c.useState)({}),[z,A]=(0,c.useState)(""),[B,C]=(0,c.useTransition)(),D=n[a];return(0,b.jsxs)("form",{onSubmit:function(b){b.preventDefault(),C(async()=>{y({}),A("");try{let b=await k(e.id,"rename"===a?{kind:"rename",name:j.trim()}:"rate"===a?{kind:"rate",ratePerMin:p.trim()}:"expiry"===a?{kind:"expiry",expiry:r}:{kind:"routing",providerId:t||null,model:t?v.trim():null});b.ok?(d.c.success(b.message??"Key updated."),h()):b.fieldErrors?y(b.fieldErrors):A(b.error)}catch{A("Watchbell didn't answer. Check that it's still running, then try again.")}})},noValidate:!0,children:[(0,b.jsxs)("div",{className:"px-[18px] pb-2 pt-4",children:[(0,b.jsx)(i.F,{className:"text-base",children:D.title(e.name)}),(0,b.jsx)(i.C,{className:"mt-0.5 text-[13px] text-ink-soft",children:D.sub})]}),(0,b.jsxs)("div",{className:"px-[18px] pt-1.5",children:["rename"===a&&(0,b.jsx)(f.O,{id:"edit-name",label:"Name",error:x.name,children:(0,b.jsx)("input",{id:"edit-name",value:j,onChange:a=>l(a.target.value),autoComplete:"off",autoCapitalize:"none",spellCheck:!1,className:f.S})}),"rate"===a&&(0,b.jsx)(f.O,{id:"edit-rate",label:"Rate limit",help:"Requests per minute.",error:x.ratePerMin,children:(0,b.jsx)("input",{id:"edit-rate",inputMode:"numeric",value:p,onChange:a=>q(a.target.value),className:`${f.S} font-mono`})}),"expiry"===a&&(0,b.jsx)(f.O,{id:"edit-expiry",label:"Expires",error:x.expiry,children:(0,b.jsx)("select",{id:"edit-expiry",value:r,onChange:a=>s(a.target.value),className:f.S,children:m.W.map(a=>(0,b.jsx)("option",{value:a,children:m.o[a]},a))})}),"routing"===a&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(f.O,{id:"edit-provider",label:"Provider",help:g.length?void 0:"No provider is connected yet. Until one is, this key has nothing to pin to.",error:x.providerId,children:(0,b.jsxs)("select",{id:"edit-provider",value:t,onChange:a=>u(a.target.value),className:f.S,children:[(0,b.jsx)("option",{value:"",children:"No pin (default provider)"}),g.map(a=>(0,b.jsxs)("option",{value:a.id,children:[a.name,a.enabled?"":" (off)"]},a.id))]})}),(0,b.jsx)(f.O,{id:"edit-model",label:"Model",help:"Optional. A Gemini model id, for example gemini-3.8-flash. Empty uses the provider's default.",error:x.model,children:(0,b.jsx)("input",{id:"edit-model",value:v,onChange:a=>w(a.target.value),disabled:!t,placeholder:"gemini-3.8-flash",autoComplete:"off",autoCapitalize:"none",spellCheck:!1,className:`${f.S} font-mono`})})]}),z&&(0,b.jsx)("p",{className:"mb-3 text-[13px] text-err",role:"alert",children:z})]}),(0,b.jsxs)("div",{className:"flex justify-end gap-2 border-t border-line px-[18px] py-3",children:[(0,b.jsx)(f.K,{onClick:h,disabled:B,children:"Cancel"}),(0,b.jsx)(f.K,{type:"submit",variant:"primary",disabled:B,children:B?"Saving…":D.cta})]})]})}a.s(["KeyActions",0,function({k:a,providers:d}){let[j,k]=(0,c.useState)(null);return(0,g.useHoldRefresh)(null!==j),(0,b.jsxs)("span",{className:"inline-flex items-center gap-1",children:[(0,b.jsx)(e.f,{trigger:(0,b.jsx)(f.K,{size:"sm",children:"Revoke"}),title:`Revoke ${a.name}?`,body:`Calls with ${a.prefix}… answer 401 within a minute. Agents using it show "Key revoked". This can't be undone; create a new key instead.`,cta:"Revoke key",danger:!0,onConfirm:async()=>{let b=await l(a.id);return{ok:b.ok,message:(b.ok?b.message:b.error)??""}}}),(0,b.jsx)(h.RowMenu,{label:`Actions for ${a.name}`,items:[{label:"Rename",onSelect:()=>k("rename")},{label:"Change rate limit",onSelect:()=>k("rate")},{label:"Change expiry",onSelect:()=>k("expiry")},{label:"Change routing",onSelect:()=>k("routing")}]}),(0,b.jsx)(i.N,{open:null!==j,onOpenChange:a=>{a||k(null)},children:(0,b.jsx)(i.d,{className:"gap-0 p-0 sm:max-w-[520px]",showCloseButton:!1,children:j&&(0,b.jsx)(o,{mode:j,k:a,providers:d,onDone:()=>k(null)})})})]})}],659526)},136476,a=>{let b={"ai:invoke":{short:"models",long:"Chat completions and the model list through your provider connections."},"read:status":{short:"console data, MCP",long:"Read-only console data: GET /api/v1/status and the MCP server. Database names are aliases; no URLs, emails or secrets."},"write:notes":{short:"post AI notes",long:a.i(901615).C.writeNotesLong}};a.s(["j",0,"90d","D",0,20,"J",0,["ai:invoke"],"W",0,["7d","30d","90d","1y","never"],"o",0,{"7d":"In 7 days","30d":"In 30 days","90d":"In 90 days","1y":"In 1 year",never:"Never"},"B",0,["ai:invoke","read:status","write:notes"],"h",0,b])}]})();
2
2
 
3
3
  //# sourceMappingURL=src_10zavgy86u3us._.js.map
@@ -0,0 +1,3 @@
1
+ module.exports=[[829534,a=>{let b=(0,a.i(211857).registerClientReference)(function(){throw Error("Attempted to call ActionsRepoForm() from the server but ActionsRepoForm is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/app/(console)/settings/actions-repo-form.tsx","ActionsRepoForm");a.s(["ActionsRepoForm",0,b])},386180,a=>{var b=a.i(829534);a.n(b)},541088,a=>{let b=(0,a.i(211857).registerClientReference)(function(){throw Error("Attempted to call AddMemberDialog() from the server but AddMemberDialog is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/app/(console)/settings/add-member-dialog.tsx","AddMemberDialog");a.s(["AddMemberDialog",0,b])},120396,a=>{var b=a.i(541088);a.n(b)},683348,a=>{let b=(0,a.i(211857).registerClientReference)(function(){throw Error("Attempted to call BrandingTab() from the server but BrandingTab is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/app/(console)/settings/branding-tab.tsx","BrandingTab");a.s(["BrandingTab",0,b])},507095,a=>{var b=a.i(683348);a.n(b)},933292,a=>{let b=(0,a.i(211857).registerClientReference)(function(){throw Error("Attempted to call BudgetForm() from the server but BudgetForm is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/app/(console)/settings/budget-form.tsx","BudgetForm");a.s(["BudgetForm",0,b])},285100,a=>{var b=a.i(933292);a.n(b)},915832,a=>{let b=(0,a.i(211857).registerClientReference)(function(){throw Error("Attempted to call InviteDialog() from the server but InviteDialog is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/app/(console)/settings/invite-dialog.tsx","InviteDialog");a.s(["InviteDialog",0,b])},173616,a=>{var b=a.i(915832);a.n(b)},7109,a=>{var b=a.i(211857);let c=(0,b.registerClientReference)(function(){throw Error("Attempted to call RemoveMember() from the server but RemoveMember is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/app/(console)/settings/member-actions.tsx","RemoveMember"),d=(0,b.registerClientReference)(function(){throw Error("Attempted to call RevokeInvite() from the server but RevokeInvite is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/app/(console)/settings/member-actions.tsx","RevokeInvite"),e=(0,b.registerClientReference)(function(){throw Error("Attempted to call RoleSelect() from the server but RoleSelect is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/app/(console)/settings/member-actions.tsx","RoleSelect");a.s(["RemoveMember",0,c,"RevokeInvite",0,d,"RoleSelect",0,e])},564326,a=>{var b=a.i(7109);a.n(b)},976739,a=>{var b=a.i(907997),c=a.i(196081),d=a.i(507095),e=a.i(803681),f=a.i(75148),g=a.i(473083),h=a.i(109307),i=a.i(534908),j=a.i(149396),k=a.i(492665),l=a.i(529960),m=a.i(686251),n=a.i(462820),o=a.i(976937),p=a.i(972123),q=a.i(386180);async function r(){let a=await (0,o.c)().catch(()=>null);return(0,b.jsxs)(e.N,{title:"Lockfile via GitHub Actions",meta:a?(0,b.jsx)(m.F,{state:"ok",children:"On"}):(0,b.jsx)(m.F,{state:"off",children:"Off"}),children:[(0,b.jsx)("p",{className:"text-[13px] text-ink-soft",children:n.K.lockfileIntro}),(0,b.jsxs)("ol",{className:"mt-2 flex list-decimal flex-col gap-3 pl-5 text-[13px]",children:[(0,b.jsxs)("li",{children:["Create a repository on GitHub, for example ",(0,b.jsx)("span",{className:"font-mono",children:"watchbell-actions"})," (private is fine)."]}),(0,b.jsxs)("li",{children:["Add the file ",(0,b.jsx)("span",{className:"font-mono",children:".github/workflows/watchbell-lockfile.yml"})," ",(0,b.jsx)(l.CopyButton,{text:".github/workflows/watchbell-lockfile.yml",label:"Copy path"})," with this content:",(0,b.jsx)("div",{className:"mt-1 flex justify-end",children:(0,b.jsx)(l.CopyButton,{text:p.G,label:"Copy workflow"})}),(0,b.jsx)("code",{className:"block overflow-x-auto rounded-md border border-line bg-surface-2 px-3 py-2 font-mono text-[12.5px] whitespace-pre mt-1 max-h-72",children:p.G})]}),(0,b.jsxs)("li",{children:["In that repository: Settings β€Ί Secrets and variables β€Ί Actions β€Ί New repository secret, name ",(0,b.jsx)("span",{className:"font-mono",children:"WATCHBELL_PR_TOKEN"})," ",(0,b.jsx)(l.CopyButton,{text:"WATCHBELL_PR_TOKEN",label:"Copy name"}),", value: your GitHub PR-write token (the same one on Connections)."]}),(0,b.jsx)("li",{children:"Give the PR-write token access to this new repository too (GitHub β€Ί Settings β€Ί Developer settings β€Ί your token β€Ί Repository access), with Contents: Read and write."}),(0,b.jsx)("li",{children:"Save the repository name here:"})]}),(0,b.jsx)("div",{className:"mt-2",children:(0,b.jsx)(q.ActionsRepoForm,{current:a})})]})}var s=a.i(791444),t=a.i(840784),u=a.i(186133),v=a.i(532620),w=a.i(655206),x=a.i(634418),y=a.i(688275),z=a.i(672319),A=a.i(711251),B=a.i(371289),C=a.i(245710);function D(a){return a>=86400&&a%86400==0?`every ${a/86400} day${86400===a?"":"s"}`:a>=3600&&a%3600==0?`every ${a/3600} h`:a>=60&&a%60==0?`every ${a/60} min`:`every ${a} s`}let E={heartbeats:"Heartbeat monitors: recompute from the last ping",checks:"HTTP uptime checks",vercel:"Vercel projects and deployments",supabase:"Supabase project status",supabaseUsage:"Supabase service health and traffic",neon:"Neon status and usage",firebase:"Firestore health read",firebaseUsage:"Firestore usage",extraDbs:"Turso, Upstash Redis and Cloudflare D1 status and usage",cloudflare:"Cloudflare zones and DNS",domains:"Vercel domain settings",tls:"TLS certificate expiry",rdap:"Domain expiry (RDAP)",eol:"Next.js end-of-life data",node:"Node.js security releases and end of life, for Watchbell's own runtime",status:"Provider status feeds",logs:"Copy of Vercel warning and error logs",pageviews:"Web Analytics page views",security:"Security check: Next.js versions and dependency advisories (also right after a production deploy)",alerts:"Alert rules and notices",digest:"Digest due check"},F={cron_job_org:"cron-job.org",qstash:"QStash",vercel_cron:"Vercel Cron",manual:"Refresh now"},G=x.t.checks,H="not read yet",I="not read",J=a=>Math.round(10*a)/10,K=a=>`${a} days`;var L=a.i(715208),M=a.i(285100);async function N(){let a=new Date,[c,d,f,g,h]=await Promise.all([(0,v.V)(),(0,v.R)("neon_project"),(0,v.e)(),(0,t.G)(a),(0,u.j)()]),i=g.filter(a=>!a.gone),j=function(a,b=A.o){let c,d=[],e=a=>null===a?"none":a>=b.errPct?"err":a>=b.warnPct?"warn":"ok";for(let b of(a.slots.length||d.push({key:"supabase",item:"Supabase free projects",limit:`${z.V} active projects per account`,use:"no Supabase account connected",pct:null,tone:"none"}),a.slots)){let a=J(b.used/b.total*100);d.push({key:`supabase-${b.account}`,item:`Supabase free projects \xb7 ${b.account}`,limit:`${b.total} active per account`,use:`${b.used} of ${b.total} used${b.planUnknown?" (plan not read for every org)":""}`,pct:a,tone:e(a)})}for(let b of(a.neon.length||d.push({key:"neon",item:"Neon CU-hours",limit:`${y.a.cuHours} CU-hours / month per project`,use:"no Neon project watched",pct:null,tone:"none"}),a.neon))d.push({key:`neon-${b.id}`,item:`Neon CU-hours \xb7 ${b.alias}`,limit:`${y.a.cuHours} CU-hours / month per project`,use:b.cu?`${b.cu.value} CU-hours`:H,pct:b.cu?.pct??null,tone:e(b.cu?.pct??null)});let f=J(288/b.qstashPerDay*100);return d.push({key:"qstash",item:"Upstash QStash messages",limit:`${b.qstashPerDay.toLocaleString("en-US")} / day`,use:`288 / day (watchdog ${D(300)})`,pct:f,tone:e(f)}),d.push({key:"cron",item:"cron-job.org runs",limit:"1 run / min (shortest free interval)",use:`1 run / min (${(86400/G).toLocaleString("en-US")} / day)`,pct:null,tone:"none"}),d.push({key:"vercel",item:"Vercel Hobby",limit:`${(c=b.vercelInvocations)>=1e6&&c%1e6==0?`${c/1e6}M`:c.toLocaleString("en-US")} invocations, ${b.vercelCpuHours} h CPU, ${b.vercelMemoryGbH} GB-h memory / month`,use:`${I} (Vercel dashboard β†’ Usage)`,pct:null,tone:"none"}),d.push({key:"analytics",item:"Vercel Web Analytics",limit:`${b.webAnalyticsEvents.toLocaleString("en-US")} events / month`,use:0===a.apps.total?"no apps watched":0===a.apps.read?`${H} \xb7 events ${I}`:`${a.apps.enabled} of ${a.apps.total} app${1===a.apps.total?"":"s"} enabled \xb7 events ${I}`,pct:null,tone:"none"}),d}({slots:(0,L.d)(c),neon:(0,L.D)(d,a,f).map(a=>({id:a.id,alias:a.alias,cu:a.cu})),apps:{total:i.length,read:i.filter(a=>null!==a.pageViews).length,enabled:i.filter(a=>a.pageViews?.enabled===!0).length}},h);return(0,b.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,b.jsx)(e.N,{title:"Free tier budget",flush:!0,meta:"Everything stays on free plans",children:(0,b.jsx)("div",{className:"overflow-x-auto",children:(0,b.jsxs)("table",{className:s.o,children:[(0,b.jsx)(s.U,{head:["Item","Free limit","Current use"]}),(0,b.jsx)("tbody",{children:j.map(a=>(0,b.jsxs)("tr",{children:[(0,b.jsx)("td",{className:s.z,children:a.item}),(0,b.jsx)("td",{className:`${s.z} text-ink-soft`,children:a.limit}),(0,b.jsxs)("td",{className:s.z,children:[(0,b.jsx)("span",{className:a.use.includes("not read")?"text-ink-soft":"font-mono text-[12.5px]",children:a.use}),null!==a.pct&&(0,b.jsx)(e.e,{pct:a.pct,tone:"warn"===a.tone||"err"===a.tone?a.tone:void 0})]})]},a.key))})]})})}),(0,b.jsx)(e.N,{title:"Free tier limits",meta:"Correct them here when a provider changes its free plan",children:(0,b.jsx)(M.BudgetForm,{saved:h})})]})}var O=a.i(530385),P=a.i(395936),Q=a.i(701702),R=a.i(548734),S=a.i(837137),T=a.i(50908),U=a.i(20060),V=a.i(556987),W=a.i(103493);async function X(){let a=await (0,R.f)().select({id:S.collectorRuns.id,startedAt:S.collectorRuns.startedAt,trigger:S.collectorRuns.trigger,tasks:S.collectorRuns.tasks,ok:S.collectorRuns.ok,errorSummary:S.collectorRuns.errorSummary,durationMs:S.collectorRuns.durationMs}).from(S.collectorRuns).orderBy((0,O.A)(S.collectorRuns.startedAt)).limit(20),c=await (0,v.e)().catch(()=>V.a),d=function(a,b=a=>a){return a.map(a=>{var c;let d;return{id:a.id,at:`${(0,C.L)(a.startedAt)} ${(0,C.U)(a.startedAt)}`,trigger:F[a.trigger]??a.trigger,tasks:a.tasks.length?`${a.tasks.length} task${1===a.tasks.length?"":"s"}`:"none",duration:null===(c=a.durationMs)?"β€”":c<1e3?`${c} ms`:`${(c/1e3).toFixed(1)} s`,ok:a.ok,summary:null===a.ok?"Not finished":a.ok?"OK":(d=b(a.errorSummary?.trim()||"Finished with problems")).length<=80?d:`${d.slice(0,79).trimEnd()}…`}})}(a,a=>(0,V.J)(a,c)),f=function(a=(()=>{try{return"cloud"===(0,B.c)()}catch{return!1}})()){let b=(0,C.C)(),c=(0,C.J)(),d=a?"as a Vercel environment variable and redeploy":"in .env",e=(0,C.R)(),f=e?`${e} isn't a time zone; using ${b} (${c}). Set an IANA name such as Europe/Berlin ${d}.`:`Time zone: ${b} (${c}). To change it, set WATCHBELL_TIMEZONE ${d}.`;return{zone:b,label:c,text:f,follows:a?`Times and the digest (07:00) follow it. The daily job is Vercel Cron at 20:00 UTC (${(0,C.G)()}).`:"Times, the daily job (03:00) and the digest (07:00) follow it."}}(),g=await (0,T.i)().catch(()=>null),h=new Date,i=(0,U.s)(),j=(0,U.E)(process.version,g,h,i),k=i.off?`Not read: ${i.name} is set.`:g?.indexCheckedAt?`Read ${(0,C.$)(new Date(g.indexCheckedAt),h)}.`:"Not read yet.";return(0,b.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,b.jsx)(W.f,{}),(0,b.jsxs)(e.N,{title:"What runs when",flush:!0,meta:"Per run, a task starts only when its interval has passed",children:[(0,b.jsx)("div",{className:"overflow-x-auto",children:(0,b.jsxs)("table",{className:s.o,children:[(0,b.jsx)(s.U,{head:["Task","Runs"]}),(0,b.jsx)("tbody",{children:(function(a=x.t){return Object.keys(a).map(b=>({task:b,label:E[b],every:D(a[b])}))})().map(a=>(0,b.jsxs)("tr",{children:[(0,b.jsxs)("td",{className:s.z,children:[a.label," ",(0,b.jsx)("span",{className:"ml-1 font-mono text-xs text-ink-soft",children:a.task})]}),(0,b.jsx)("td",{className:`${s.z} text-ink-soft`,children:a.every})]},a.task))})]})}),(0,b.jsxs)("div",{className:"grid grid-cols-[260px_minmax(0,1fr)] items-center gap-4 border-t border-line px-[18px] py-3 max-[720px]:grid-cols-1 max-[720px]:gap-1",children:[(0,b.jsxs)("div",{className:"font-medium",children:["Keep Supabase projects awake",(0,b.jsx)("span",{className:"mt-0.5 block text-[12.5px] font-normal text-ink-soft",children:"Off by default. Set per project on the Supabase page (Keep active, Auto-restore; owner only). Not offered for Neon, because staying awake would use up its CU-hours."})]}),(0,b.jsx)("span",{children:(0,b.jsx)(P.default,{href:"/supabase",className:(0,e.R)({size:"sm"}),children:"Open Supabase"})})]}),(0,b.jsxs)("div",{className:"grid grid-cols-[260px_minmax(0,1fr)] items-center gap-4 border-t border-line px-[18px] py-3 max-[720px]:grid-cols-1 max-[720px]:gap-1",children:[(0,b.jsxs)("div",{className:"font-medium",children:["Time zone",(0,b.jsx)("span",{className:"mt-0.5 block text-[12.5px] font-normal text-ink-soft",children:f.follows})]}),(0,b.jsx)("span",{className:"text-ink-soft",children:f.text})]}),(0,b.jsxs)("div",{className:"grid grid-cols-[260px_minmax(0,1fr)] items-center gap-4 border-t border-line px-[18px] py-3 max-[720px]:grid-cols-1 max-[720px]:gap-1",children:[(0,b.jsxs)("div",{className:"font-medium",children:["Watchbell runtime",(0,b.jsxs)("span",{className:"mt-0.5 block text-[12.5px] font-normal text-ink-soft",children:[(0,B.r)()?"The Node.js of Vercel's functions that run this console":"The Node.js of this machine",", against the security releases on nodejs.org and the end-of-life dates on endoflife.date, every 12 h. ",k]})]}),(0,b.jsxs)("span",{children:["unknown"===j.state||"off"===j.state?(0,b.jsx)("span",{className:"text-ink-faint",children:j.text}):(0,b.jsx)(m.F,{state:j.state,children:j.text}),j.note&&(0,b.jsx)("span",{className:"block text-[12px] text-ink-faint",children:j.note})]})]})]}),(0,b.jsx)(e.N,{title:"Last 20 runs",flush:!0,meta:`Times in ${(0,C.D)()}`,children:0===d.length?(0,b.jsx)("p",{className:"px-[18px] pb-4 text-ink-soft",children:"The collector hasn't run yet."}):(0,b.jsx)("div",{className:"overflow-x-auto",children:(0,b.jsxs)("table",{className:s.o,children:[(0,b.jsx)(s.U,{head:["Started","Trigger","Tasks","Duration","Result"]}),(0,b.jsx)("tbody",{children:d.map(a=>(0,b.jsxs)("tr",{children:[(0,b.jsx)("td",{className:`${s.z} font-mono text-[12.5px]`,children:a.at}),(0,b.jsx)("td",{className:s.z,children:a.trigger}),(0,b.jsx)("td",{className:s.z,children:a.tasks}),(0,b.jsx)("td",{className:`${s.z} font-mono text-[12.5px]`,children:a.duration}),(0,b.jsx)("td",{className:s.z,children:(0,b.jsx)(m.F,{state:null===a.ok?"build":a.ok?"ok":"warn",children:(0,b.jsx)(Q.MaskedText,{text:a.summary})})})]},a.id))})]})})})]})}var Y=a.i(532971),Z=a.i(104195);async function $(){let a=await (0,u.J)(),c=function(a=w.f){return[{kind:"Raw checks",keeps:K(a.checks),note:"Every HTTP check result; the hourly rollups below keep the history."},{kind:"Hourly rollups",keeps:K(a.rollupsHourly),note:"Uptime and response numbers per monitor and hour."},{kind:"Stored logs",keeps:K(a.storedLogs),note:"The copy of Vercel warning and error logs."},{kind:"Deployments",keeps:K(a.deployments),note:"Older ones only; the current and the previous production deployment are always kept."},{kind:"Events",keeps:K(a.events),note:"The activity feed."},{kind:"Alerts",keeps:K(a.alerts),note:"Resolved alerts only, counted from when they resolved; open alerts stay."},{kind:"Collector runs",keeps:K(a.collectorRuns),note:"The run history shown in the Collector tab."},{kind:"Advisor dismissals",keeps:K(a.recommendationDismissals),note:"A dismissal only matters for 30 days."}]}(a),d=Y.L.map(a=>({key:a,kind:Y.I[a],note:c.find(b=>b.kind===Y.I[a])?.note??""}));return(0,b.jsxs)(e.N,{title:"Retention",flush:!0,meta:`Cleaned daily at ${(0,C.G)()}`,children:[(0,b.jsx)("p",{className:"px-[18px] pb-3 text-ink-soft",children:"Only the console's own history is deleted. Nothing is ever deleted at a provider. The monthly backup runs on the 1st, before the clean-up, and reads hourly rollups, events and alerts, which keep at least 60 days."}),(0,b.jsx)(Z.RetentionForm,{saved:a,rows:d})]})}var _=a.i(525826),aa=a.i(93321),ab=a.i(154756),ac=a.i(267767),ad=a.i(120396),ae=a.i(173616),af=a.i(564326);async function ag({actorId:a}){let c=(0,B.F)(),d=await (0,R.f)().select().from(S.members).orderBy((0,O.A)(S.members.createdAt)),f=c?[]:await (0,R.f)().select().from(S.invites).where((0,aa.M)(S.invites.acceptedAt)).orderBy((0,O.A)(S.invites.createdAt)),g=new Date,h="border-y border-line bg-surface-2 px-3 py-2 text-left text-[12.5px] font-medium text-ink-soft first:pl-[18px]",i="border-b border-line px-3 py-[9px] whitespace-nowrap first:pl-[18px]";return(0,b.jsxs)(e.N,{flush:!0,children:[(0,b.jsx)("div",{className:"flex flex-wrap items-center gap-2 px-[18px] pb-3 pt-3.5",children:c?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{className:"text-ink-soft",children:(0,B.W)()?"In the demo you are the only member. On a real install an owner adds people here.":"Members sign in with email and password. A new member gets a temporary password and picks their own at their first sign-in."}),!(0,B.W)()&&(0,b.jsx)(ad.AddMemberDialog,{})]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{className:"text-ink-soft",children:"Invite-only: people sign in with an email link, and only invited emails get in. Preview deployments stay behind Vercel Authentication."}),(0,b.jsx)(ae.InviteDialog,{})]})}),(0,b.jsx)("div",{className:"overflow-x-auto",children:(0,b.jsxs)("table",{className:"w-full border-collapse",children:[(0,b.jsx)("thead",{children:(0,b.jsxs)("tr",{children:[(0,b.jsx)("th",{className:h,children:"User"}),(0,b.jsx)("th",{className:h,children:"Role"}),(0,b.jsx)("th",{className:h,children:"Last seen"}),(0,b.jsx)("th",{className:h,children:"Status"}),(0,b.jsx)("th",{className:h})]})}),(0,b.jsxs)("tbody",{children:[d.map(c=>(0,b.jsxs)("tr",{className:"hover:bg-hover",children:[(0,b.jsx)("td",{className:i,children:(0,b.jsx)(ab.F,{kind:"usr",name:c.email})}),(0,b.jsx)("td",{className:i,children:c.id===a?(0,b.jsx)("span",{className:"rounded-[5px] border border-line bg-surface-2 px-1.5 text-xs text-ink-soft",children:"Owner (you)"}):(0,b.jsx)(af.RoleSelect,{memberId:c.id,email:c.email,role:c.role})}),(0,b.jsx)("td",{className:`${i} text-ink-soft`,children:(a=>{if(!a)return"never";let b=Math.round((Date.now()-a.getTime())/6e4);if(b<2)return"now";if(b<60)return`${b} min ago`;let c=Math.round(b/60);return c<48?`${c} h ago`:`${Math.round(c/24)} days ago`})(c.lastSeenAt)}),(0,b.jsx)("td",{className:i,children:(0,b.jsx)(m.F,{state:"ok",children:"Active"})}),(0,b.jsx)("td",{className:i,children:c.id!==a&&(0,b.jsx)(af.RemoveMember,{memberId:c.id,email:c.email,deletesAccount:"selfhost"===(0,B.c)()})})]},c.id)),f.map(a=>{let c=(0,ac.R)(a,g);return(0,b.jsxs)("tr",{className:"hover:bg-hover",children:[(0,b.jsx)("td",{className:i,children:(0,b.jsx)(ab.F,{kind:"usr",name:a.email})}),(0,b.jsx)("td",{className:i,children:(0,b.jsx)("span",{className:"rounded-[5px] border border-line bg-surface-2 px-1.5 text-xs text-ink-soft",children:a.role[0].toUpperCase()+a.role.slice(1)})}),(0,b.jsx)("td",{className:`${i} text-ink-soft`,children:"invited"}),(0,b.jsx)("td",{className:i,children:"open"===c?(0,b.jsx)(m.F,{state:"off",children:"Invited"}):(0,b.jsx)(m.F,{state:"warn",children:"Invite expired"})}),(0,b.jsx)("td",{className:i,children:(0,b.jsx)(af.RevokeInvite,{inviteId:a.id,email:a.email})})]},a.id)})]})]})})]})}let ah=["collector","budget","users","retention","status-page","branding"];async function ai({searchParams:a}){let l=await (0,h.B)("owner");if(!l.ok)return(0,b.jsx)(f.f,{role:l.member.role});let[{tab:m},n,o]=await Promise.all([a,(0,j.a)(),(0,c.X)()]),p=i.extensions.settingsTabs??[],q=!i.extensions.runner,s=[...ah,...q?["lockfile"]:[],...p.map(a=>a.key)];return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(e.L,{crumbs:[{label:"Manage"},{label:"Settings"}],title:"Settings"}),(0,b.jsxs)(g.Tabs,{defaultValue:m&&s.includes(m)?m:"users",className:"mt-3.5",children:[(0,b.jsxs)(g.TabsList,{variant:"line",children:[(0,b.jsx)(g.TabsTrigger,{value:"collector",children:"Collector"}),(0,b.jsx)(g.TabsTrigger,{value:"budget",children:"Free tier budget"}),(0,b.jsx)(g.TabsTrigger,{value:"users",children:"Users"}),(0,b.jsx)(g.TabsTrigger,{value:"retention",children:"Retention"}),(0,b.jsx)(g.TabsTrigger,{value:"status-page",children:"Status page"}),(0,b.jsx)(g.TabsTrigger,{value:"branding",children:"Branding"}),q&&(0,b.jsx)(g.TabsTrigger,{value:"lockfile",children:"Lockfile"}),p.map(a=>(0,b.jsx)(g.TabsTrigger,{value:a.key,children:a.label},a.key))]}),(0,b.jsx)(g.TabsContent,{value:"collector",className:"mt-4",children:(0,b.jsx)(X,{})}),(0,b.jsx)(g.TabsContent,{value:"budget",className:"mt-4",children:(0,b.jsx)(N,{})}),(0,b.jsx)(g.TabsContent,{value:"users",className:"mt-4",children:(0,b.jsx)(ag,{actorId:l.member.id})}),(0,b.jsx)(g.TabsContent,{value:"retention",className:"mt-4",children:(0,b.jsx)($,{})}),(0,b.jsx)(g.TabsContent,{value:"status-page",className:"mt-4",children:(0,b.jsx)(_.StatusPageTab,{settings:n,siteUrl:(0,k.f)().SITE_URL})}),(0,b.jsx)(g.TabsContent,{value:"branding",className:"mt-4",children:(0,b.jsx)(d.BrandingTab,{brand:o})}),q&&(0,b.jsx)(g.TabsContent,{value:"lockfile",className:"mt-4",children:(0,b.jsx)(r,{})}),p.map(({key:a,Tab:c})=>(0,b.jsx)(g.TabsContent,{value:a,className:"mt-4",children:(0,b.jsx)(c,{})},a))]},m??"")]})}a.s(["default",0,ai],976739)},718121,a=>{let b=(0,a.i(211857).registerClientReference)(function(){throw Error("Attempted to call RetentionForm() from the server but RetentionForm is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/app/(console)/settings/retention-form.tsx","RetentionForm");a.s(["RetentionForm",0,b])},104195,a=>{var b=a.i(718121);a.n(b)},391022,a=>{let b=(0,a.i(211857).registerClientReference)(function(){throw Error("Attempted to call StatusPageTab() from the server but StatusPageTab is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/app/(console)/settings/status-page-tab.tsx","StatusPageTab");a.s(["StatusPageTab",0,b])},525826,a=>{var b=a.i(391022);a.n(b)},736935,a=>{let b=(0,a.i(211857).registerClientReference)(function(){throw Error("Attempted to call CopyButton() from the server but CopyButton is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/components/copy-button.tsx","CopyButton");a.s(["CopyButton",0,b])},529960,a=>{var b=a.i(736935);a.n(b)}],814659,function(a){a.n(a.i(976739))}];
2
+
3
+ //# sourceMappingURL=src_18m06fg8u7_73._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[461750,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[root-of-the-server]__02lkybw6gg3ln._.js","server/chunks/ssr/src_db_pglite_ts_0r1r9wqxilnam._.js","server/chunks/ssr/node_modules_0vppy-p56c35f._.js","server/chunks/ssr/node_modules_@electric-sql_pglite_dist_0j1fzsq3ed7ph._.js"].map(b=>a.l(b))).then(()=>b(614755)))},73710,a=>{a.v(b=>Promise.all(["server/chunks/ssr/src_lib_demo_cookie_ts_0a12-0n1novgh._.js"].map(b=>a.l(b))).then(()=>b(716983)))},871289,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[root-of-the-server]__183_36tj3p645._.js","server/chunks/ssr/node_modules_0vppy-p56c35f._.js","server/chunks/ssr/node_modules_@electric-sql_pglite_dist_0j1fzsq3ed7ph._.js"].map(b=>a.l(b))).then(()=>b(204048)))},734864,a=>{a.v(b=>Promise.all(["server/chunks/ssr/src_lib_demo_15e3gnqzod0tj._.js"].map(b=>a.l(b))).then(()=>b(579739)))},522169,a=>{a.v(b=>Promise.all(["server/chunks/ssr/src_lib_demo_seed_members_ts_0pz2fa9295pvm._.js"].map(b=>a.l(b))).then(()=>b(615089)))},372153,a=>{a.v(b=>Promise.all(["server/chunks/ssr/src_lib_demo_session_ts_0rwvb3aun41zx._.js","server/chunks/ssr/src_lib_demo_0a5wqvhuj5hjh._.js"].map(b=>a.l(b))).then(()=>b(765161)))},414785,a=>{a.v(a=>Promise.resolve().then(()=>a(534908)))},801116,a=>{a.v(a=>Promise.resolve().then(()=>a(624065)))}];
1
+ module.exports=[461750,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[root-of-the-server]__0yvm5q_auexh3._.js","server/chunks/ssr/src_db_pglite_ts_0r1r9wqxilnam._.js","server/chunks/ssr/node_modules_0vppy-p56c35f._.js","server/chunks/ssr/node_modules_@electric-sql_pglite_dist_0j1fzsq3ed7ph._.js"].map(b=>a.l(b))).then(()=>b(614755)))},73710,a=>{a.v(b=>Promise.all(["server/chunks/ssr/src_lib_demo_cookie_ts_0a12-0n1novgh._.js"].map(b=>a.l(b))).then(()=>b(716983)))},871289,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[root-of-the-server]__059q8f4tia03z._.js","server/chunks/ssr/node_modules_0vppy-p56c35f._.js","server/chunks/ssr/node_modules_@electric-sql_pglite_dist_0j1fzsq3ed7ph._.js"].map(b=>a.l(b))).then(()=>b(204048)))},734864,a=>{a.v(b=>Promise.all(["server/chunks/ssr/src_lib_demo_03sepqqjq9usk._.js"].map(b=>a.l(b))).then(()=>b(579739)))},522169,a=>{a.v(b=>Promise.all(["server/chunks/ssr/src_lib_demo_seed_members_ts_0pz2fa9295pvm._.js"].map(b=>a.l(b))).then(()=>b(615089)))},372153,a=>{a.v(b=>Promise.all(["server/chunks/ssr/src_lib_demo_session_ts_0rwvb3aun41zx._.js","server/chunks/ssr/src_lib_demo_0a5wqvhuj5hjh._.js"].map(b=>a.l(b))).then(()=>b(765161)))},414785,a=>{a.v(a=>Promise.resolve().then(()=>a(534908)))},801116,a=>{a.v(a=>Promise.resolve().then(()=>a(624065)))}];
2
2
 
3
- //# sourceMappingURL=src_0632mrev4i__u._.js.map
3
+ //# sourceMappingURL=src_1_b884ul0envr._.js.map
@@ -1,7 +1,7 @@
1
1
  (()=>{"use strict";module.exports=[138984,a=>{var b=a.i(26972),c=a.i(427221),d=a.i(827857),e=a.i(899370),f=a.i(371289);let g=b.z.object({COLLECTOR_SECRET:c.z.string().min(32),CRON_SECRET:c.z.string().min(16),QSTASH_CURRENT_SIGNING_KEY:c.z.string().min(10),QSTASH_NEXT_SIGNING_KEY:c.z.string().min(10)}),h=g.extend({QSTASH_CURRENT_SIGNING_KEY:d.z.union([e.z.literal(""),c.z.string().min(10)]).default(""),QSTASH_NEXT_SIGNING_KEY:d.z.union([e.z.literal(""),c.z.string().min(10)]).default("")}),i=!1;a.s(["f",0,function(){try{var a=process.env;let b=("selfhost"===(0,f.c)(a)?h:g).safeParse(a);if(!b.success)throw Error(`Missing or invalid scheduler settings: ${b.error.issues.map(a=>a.path.join(".")).join(", ")}`);return b.data}catch(a){return i||(i=!0,console.warn(a instanceof Error?a.message:"Missing or invalid scheduler settings")),null}}])},736780,664892,a=>{var b=a.i(93321),c=a.i(530385),d=a.i(548734),e=a.i(837137),f=a.i(358179),g=a.i(912283),h=a.i(117859),i=a.i(876808),j=a.i(521050),k=a.i(679662);let l={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"},m=(a,b,c)=>{let d=`PR #${a}: ${l[b]}${c?` β€” ${c}`:""}`;return d.length>200?`${d.slice(0,199)}…`:d},n=new Set(["success","neutral","skipped"]),o=a=>"completed"!==a.status?"pending":n.has(a.conclusion??"")?"success":"failure",p={name:"watchbell[bot]",email:"watchbell-bot@users.noreply.github.com",message:"chore(deps): update package-lock.json (Watchbell)"},q={name:"watchpost[bot]",email:"watchpost-bot@users.noreply.github.com",message:"chore(deps): update package-lock.json (Watchpost)"},r=a=>[p,q].some(b=>a.name===b.name&&a.email.toLowerCase()===b.email&&a.message.trim()===b.message),s=/^[\^~]?[0-9][0-9A-Za-z.+-]*$/,t=a=>Array.isArray(a)?a.map(t):a&&"object"==typeof a?Object.fromEntries(Object.keys(a).sort().map(b=>[b,t(a[b])])):a,u=/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/,v=/^sha512-[A-Za-z0-9+/]{86}==$/,w="(?:@[a-z0-9][a-z0-9._~-]*/)?[a-z0-9][a-z0-9._~-]*",x=RegExp(`^(?:[A-Za-z0-9_-][A-Za-z0-9._-]*/)*?node_modules/${w}(?:/node_modules/${w})*$`,"i"),y=new Set(["dev","optional","devOptional","peer"]),z=a=>!!a&&"object"==typeof a&&!Array.isArray(a),A=a=>a.slice(a.lastIndexOf("node_modules/")+13),B=(a,b,c)=>`${a}/${b}/-/${b.split("/").pop()}-${c}.tgz`,C=(a,b)=>JSON.stringify(t(a))===JSON.stringify(t(b)),D=a=>Object.fromEntries(Object.entries(a).filter(([a])=>!y.has(a))),E=a=>{try{let b=JSON.parse(a);return z(b)&&z(b.packages)?b:null}catch{return null}};a.s(["y",0,20,"X",0,["checks","preview","smoke","merging"],"w",0,15e3,"R",0,27e5,"j",0,function(a){let b=(a.checkRuns??a.actionRuns??[]).map(o);return(a.combined&&a.combined.total>0&&b.push("success"===a.combined.state?"success":"pending"===a.combined.state?"pending":"failure"),b.includes("failure"))?"failure":b.includes("pending")?"pending":"success"},"L",0,function(a){if(!a.length||a.some(a=>a.authWall))return null;let b=a.find(a=>null===a.status||a.status<200||a.status>399);return b?{mode:"http",result:"fail",reason:null===b.status?`${b.path} didn't answer within 15 seconds`:`${b.path} answered ${b.status}`}:{mode:"http",result:"pass",reason:null}},"S",0,function(a,b,c){return(401===a||403===a)&&(/vercel\.com\/(sso|login)|Authentication Required|_vercel_sso|vercel-authentication/i.test(b)||/_vercel_sso/i.test(c.get("set-cookie")??"")||"vercel"===(c.get("server")??"").toLowerCase())},"T",0,function(a,b,c){if([a,b].some(a=>null!==a&&(a=>{if(a.length>0x1900000)return!0;if(3*a.length<=0x1900000)return!1;let b=0;for(let c=0;c<a.length;c++){let d=a.charCodeAt(c);d<128?b+=1:d<2048?b+=2:d>=55296&&d<56320&&(64512&a.charCodeAt(c+1))==56320?(b+=4,c++):b+=3}return b>0x1900000})(a)))return`lockfile too large to check (over 25 MB): ${c}`.slice(0,150);try{return function(a,b,c){let d=a=>`unexpected lockfile change ${a}`.slice(0,150),e=null===b?null:E(b),f=null===a?{packages:{}}:E(a);if(!e||!f)return d(c);if(2!==e.lockfileVersion&&3!==e.lockfileVersion||null!==a&&e.lockfileVersion!==f.lockfileVersion)return d("lockfileVersion");let g=new Set;for(let[a,b]of Object.entries(f.packages)){if(!x.test(a)||!z(b)||"string"!=typeof b.resolved||"string"!=typeof b.version)continue;let c=B("","string"==typeof b.name?b.name:A(a),b.version);b.resolved.startsWith("https://")&&b.resolved.endsWith(c)&&g.add(b.resolved.slice(0,-c.length))}for(let[a,b]of(g.size||g.add("https://registry.npmjs.org"),Object.entries(e.packages))){let e=Object.hasOwn(f.packages,a)?f.packages[a]:void 0;if(void 0!==e&&C(e,b))continue;let h=z(e)?e:null;if(""===a||!a.includes("node_modules/")){let e=""===a?z(b)&&"string"==typeof b.name?b.name:c:a;if(!z(b)||""!==a&&!h||"resolved"in b||"link"in b)return d(e);continue}if(!x.test(a)||!z(b))return d(x.test(a)?A(a):a);let i=A(a);if(void 0!==b.name&&b.name!==i&&(!h||h.name!==b.name))return d(i);let j="string"==typeof b.name?b.name:i,k=b.version;if(void 0!==b.link||"string"!=typeof k||!u.test(k)||"string"!=typeof b.integrity||!v.test(b.integrity)||"string"!=typeof b.resolved||![...g].some(a=>b.resolved===B(a,j,k))||h&&h.version===k&&!C(D(h),D(b)))return d(i)}return null}(a,b,c)}catch{return`unexpected lockfile change ${c} (couldn't be checked)`.slice(0,150)}},"H",0,a=>!!a.lockfileRequired&&!!a.lockfile&&!a.files.some(b=>b.filename===a.lockfile),"n",0,function(a,b,c){return null!==c&&c>0?{mode:"logs",result:"fail",reason:`${c} errors in the preview logs`}:b.getTime()-a.getTime()<18e4||null===c?{mode:"logs",result:"wait",reason:null}:{mode:"logs",result:"pass",reason:null}},"C",0,function(a,b,c){let d,e;try{d=JSON.parse(a),e=JSON.parse(b)}catch{return"unexpected change: package.json isn't valid JSON"}if(!d||!e||"object"!=typeof d||"object"!=typeof e)return"unexpected change: package.json isn't an object";let f=a=>{let b=structuredClone(a);for(let a of["dependencies","devDependencies"]){let d=b[a];if(d&&"object"==typeof d)for(let a of c)delete d[a]}return b};if(JSON.stringify(t(f(d)))!==JSON.stringify(t(f(e))))return"unexpected change in package.json beyond the bumped versions";for(let a of["dependencies","devDependencies"]){let b=d[a]??{},f=e[a]??{};for(let a of c){if(a in b!=a in f)return`unexpected change in package.json: ${a} added or removed`;if(a in f&&f[a]!==b[a]&&("string"!=typeof f[a]||!s.test(f[a])))return`unexpected change in package.json: ${a} isn't a plain version`}}return null},"E",0,function(a){let b=["/"];for(let c of a){let a;try{a=new URL(c).pathname||"/"}catch{continue}!b.includes(a)&&b.length<4&&b.push(a)}return b},"m",0,m,"k",0,function(a){let b=new Set([a.manifest,...a.lockfile?[a.lockfile]:[]]);for(let c of a.files)for(let a of[c.filename,c.previous])if(a&&!b.has(a))return`unexpected change in ${a}`.slice(0,150);if(!a.files.some(b=>b.filename===a.manifest))return`unexpected change: ${a.manifest} isn't changed`.slice(0,150);if(a.manifestProblem)return a.manifestProblem.slice(0,150);if(a.lockfileProblem)return a.lockfileProblem.slice(0,150);if(!a.tokenLogin||!a.commits.length||a.commits.length>20)return"couldn't confirm who wrote the PR's commits";if(a.headSha&&a.commits[a.commits.length-1].sha!==a.headSha)return"the PR's head moved while it was checked";for(let b of a.commits){if(null!==b.login&&b.login.toLowerCase()===a.tokenLogin.toLowerCase())continue;let c=b.sha.slice(0,7);if(!r(b)||!b.files||!a.lockfile)return`unexpected commit ${c} by ${b.login??b.name}`.slice(0,150);let d=b.files.find(b=>b!==a.lockfile);if(d)return`unexpected change in ${d} by commit ${c}`.slice(0,150)}return null},"f",0,function(a,b){let c=a.getTime();return(null===b||!(c-b<1e5))&&(Math.floor(c/6e4)%2==0||null!==b&&c-b>=24e4)},"M",0,function(a){if(a.pr.merged)return{kind:"done",stage:"merged"};if("closed"===a.pr.state)return{kind:"done",stage:"closed"};if(void 0!==a.pr.base&&void 0!==a.recordedBase&&a.pr.base!==a.recordedBase)return{kind:"stop",stage:"failed",reason:`the PR's base changed to ${a.pr.base}`};if(a.pr.headSha!==a.recordedSha)return{kind:"wait",stage:"checks",reason:"new commit on the PR branch, checking again",resetSha:a.pr.headSha};let b=a.now.getTime()-a.openedAt.getTime()>27e5;return"failure"===a.checks?{kind:"stop",stage:"failed",reason:"CI failed"}:!1===a.pr.mergeable?{kind:"stop",stage:"failed",reason:"conflicts with the main branch"}:"error"===a.preview.state?{kind:"stop",stage:"failed",reason:"Vercel preview failed"}:"canceled"===a.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"===a.checks||null===a.pr.mergeable?b?{kind:"stop",stage:"timeout",reason:"CI not finished within 45 minutes"}:{kind:"wait",stage:"checks",reason:null}:"ready"!==a.preview.state?b?{kind:"stop",stage:"timeout",reason:"preview not ready within 45 minutes"}:{kind:"wait",stage:"preview",reason:null}:a.smoke&&"wait"!==a.smoke.result?"fail"===a.smoke.result?{kind:"stop",stage:"failed",reason:`preview smoke test failed: ${a.smoke.reason??"?"}`}:a.autoRollbackOn?{kind:"merge"}:{kind:"stop",stage:"ready-manual",reason:"PR is ready to merge, but auto-rollback is off; merge it manually"}:b?{kind:"stop",stage:"timeout",reason:"preview smoke test not finished within 45 minutes"}:{kind:"wait",stage:"smoke",reason:null}}],664892);var F=a.i(120213),G=a.i(492665),H=a.i(683439),I=a.i(751263),J=a.i(812092),K=a.i(75105),L=a.i(322145),M=a.i(976937);let N='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.',O=a=>({done:!1,message:a});async function P(){let[a]=await (0,d.f)().select().from(e.accounts).where((0,b.u)(e.accounts.provider,"github_write")).orderBy((0,c.M)(e.accounts.createdAt)).limit(1);if(!a)return null;let g=(0,f.V)({ciphertext:a.credentialCiphertext,iv:a.credentialIv},(0,G.f)().OPS_ENCRYPTION_KEY);return g?{id:a.id,token:g}:"unreadable"}let Q={severity:"no package at the selected severity",major:"an update jumps a major version",nothing:"nothing can be updated"};async function R(a){let[c]=await (0,d.f)().select({version:e.appSecurity.version,status:e.appSecurity.status,findings:e.appSecurity.findings}).from(e.appSecurity).where((0,b.u)(e.appSecurity.resourceId,a)).limit(1);return c?(0,i.p)({version:c.version,status:c.status,findings:Array.isArray(c.findings)?c.findings:[]}):null}async function S(a){let c=await (0,d.f)().select({package:e.dependencyVulns.package,installedVersion:e.dependencyVulns.installedVersion,fixedVersion:e.dependencyVulns.fixedVersion,vulnId:e.dependencyVulns.vulnId,aliases:e.dependencyVulns.aliases,severity:e.dependencyVulns.severity,direct:e.dependencyVulns.direct,dev:e.dependencyVulns.dev}).from(e.dependencyVulns).where((0,b.b)((0,b.u)(e.dependencyVulns.repoId,a),(0,b.M)(e.dependencyVulns.resolvedAt))).limit(2e3);return{upgrades:(0,F.B)(c),installed:(0,g.D)(c)}}async function T(a,b,c,d,e){for(let f of(0,I.a)(d,c)){if(f===c)break;let d=await (0,J.M)(a,b,f,e);if(!d.ok)return d;if(d.data)return{ok:!0,data:{base:f,head:d}}}return{ok:!0,data:{base:c,head:await (0,J.M)(a,b,c,e)}}}async function U(c,f,l,n=L.W,o={}){let p;if(!(0,H.f)(f)||!(0,H.f)(l))return n(O("Something in that request wasn't valid."),c,"");let q=await (0,L.q)(c.id,"github_bump_pr",f);if(q)return n(O(q),c,"");let r=await P();if(null===r)return n(O(N),c,"");if("unreadable"===r)return n(O("Can't read the stored GitHub PR-write credential. Replace it on Connections."),c,"");let[s]=await (0,d.f)().select({app:e.resources.name,meta:e.resources.meta,fullName:e.githubRepos.fullName,owner:e.githubRepos.owner,goneAt:e.githubRepos.goneAt,lockfilePath:e.dependencyScans.lockfilePath,lockfileSha:e.dependencyScans.lockfileSha}).from(e.appRepos).innerJoin(e.githubRepos,(0,b.u)(e.githubRepos.id,e.appRepos.repoId)).innerJoin(e.resources,(0,b.u)(e.resources.id,e.appRepos.appId)).leftJoin(e.dependencyScans,(0,b.u)(e.dependencyScans.repoId,e.appRepos.repoId)).where((0,b.b)((0,b.u)(e.appRepos.appId,f),(0,b.u)(e.appRepos.repoId,l))).limit(1);if(!s||s.goneAt)return n(O(K.G),c,r.id);let t=s.meta??{},u=(0,j.l)(t.rootDirectoryUnsupported);if(u)return n(O(`The Vercel Root Directory "${u}" of ${s.app} couldn't be used (Watchbell reads plain folder names, at most 4 deep). Update its package.json yourself.`),c,r.id);let v=(0,j.Q)(t.rootDirectory),w=(0,j.H)(v,"package.json"),x=v?`in ${v}`:"at the repository root";if(o.framework){let a=await R(f);if(!a)return n(O(`Nothing to update in ${s.app}: its Next.js check shows no advisory with a fixed version.`),c,r.id);p=a}else if(!(p=await S(l)).upgrades.length)return n(O(`Nothing to update in ${s.app}: no direct package has a fixed version for its open advisories.`),c,r.id);let y=p.upgrades;if(o.auto){let a=(0,g.a)(y,p.installed,o.auto.severities);if(!a.ok)return n(O(`Automatic PR not opened: ${Q[a.why]}. The proposal waits for your approval.`),c,r.id);y=a.upgrades}y=(0,i.F)(y);let{auto:z,proposalId:A,framework:B,...C}=o,D={timeoutMs:8e3,...C},E=await (0,J.H)(r.token,s.fullName,D);if(!E.ok)return n({done:!1,failed:E,audit:{message:`Package update PR failed \xb7 ${s.app}`,resourceId:f}},c,r.id);let F=await T(r.token,s.fullName,E.data.defaultBranch,t,D);if(!F.ok)return n({done:!1,failed:F,audit:{message:`Package update PR failed \xb7 ${s.app}`,resourceId:f}},c,r.id);let G=F.data.base,V=(0,I.B)(t.productionSource,G,new Date);if(V&&z)return n(O(`Automatic PR not opened: ${V} The proposal waits for your approval.`),c,r.id);let W=B?null:(0,I.y)(s.lockfileSha,E.data.defaultBranch,v);if(W&&W!==G)return n(O(`The dependency scan of ${s.app} read ${W}, but this pull request would go to ${G}. Scan again (Dependencies β€Ί Scan now on the app page), then ask again.`),c,r.id);let X=F.data.head;if(!X.ok)return n({done:!1,failed:X,audit:{message:`Package update PR failed \xb7 ${s.app}`,resourceId:f}},c,r.id);if(!X.data)return n(O(`The default branch ${G} wasn't found.`),c,r.id);let Y=await (0,J.E)(r.token,s.fullName,X.data,D,w);if(!Y.ok)return n({done:!1,failed:Y,audit:{message:`Package update PR failed \xb7 ${s.app}`,resourceId:f}},c,r.id);if(!Y.data)return n(O(`There is no package.json ${x}.`),c,r.id);let Z=(0,h.k)(Y.data.text,y);if(!Z?.length||B&&!Z.some(a=>"next"===a.package))return n(O(`${w} in ${s.app} already allows the fixed versions (or its ranges can't be rewritten). Run npm install there.`),c,r.id);if(z){let a=Z.find(a=>{let b=(0,k.Y)(a.from);return!b||!(0,g.J)(b,a.fixed)});if(a)return n(O(`Automatic PR not opened: ${a.package} ${a.from} β†’ ${a.to} jumps a major version. The proposal waits for your approval.`),c,r.id)}let $=(0,h.M)(Y.data.text,Z);if(!$)return n(O("package.json couldn't be edited safely."),c,r.id);let _=(0,h.U)(Z,v);if(!(0,h.c)(_,G))return n(O("Refused: the PR branch would be the default branch."),c,r.id);let aa=await (0,J.x)(r.token,s.fullName,s.owner,_,G,D);if(aa.ok&&aa.data)return{ok:!0,message:`Pull request #${aa.data.number} for these updates is already open.`};let ab=await (0,J.e)(r.token,s.fullName,D);if(!ab.ok)return n({done:!1,failed:ab,audit:{message:`Package update PR failed \xb7 ${s.app}`,resourceId:f}},c,r.id);if(ab.data.length){let a=new Map((await (0,d.f)().select({number:e.dependencyPrs.number,packages:e.dependencyPrs.packages}).from(e.dependencyPrs).where((0,b.b)((0,b.u)(e.dependencyPrs.repoId,l),(0,b.y)(e.dependencyPrs.number,ab.data.map(a=>a.number))))).map(a=>[a.number,a.packages])),f=(0,g.U)(Z.map(a=>a.package),ab.data.map(b=>({number:b.number,branch:b.branch,title:b.title,packages:a.get(b.number)??null})),v);if(f)return n(O(`Pull request #${f.number} for the same package is already open in ${s.app}. Merge or close it first.`),c,r.id)}let ac=await (0,J.M)(r.token,s.fullName,_,D);if(ac.ok&&ac.data)return n(O(`Branch ${_} already exists without an open pull request. Delete it on GitHub, then ask again.`),c,r.id);let ad=s.lockfilePath??(v?(0,j.H)(v,"package-lock.json"):null),ae=k.a.find(a=>a.path===ad?.split("/").pop())?.kind??null,af=a=>n({done:!1,failed:a,audit:{message:`Package update PR failed \xb7 ${s.app} \xb7 ${_}`,resourceId:f}},c,r.id),ag=await (0,J.k)(r.token,s.fullName,_,X.data,G,D);if(!ag.ok)return af(ag);let ah=await (0,J.D)(r.token,s.fullName,_,G,$,Y.data.sha,(0,h.G)(Z),D,w);if(!ah.ok)return af(ah);let ai=(0,h.f)(Z,v),aj=(V?`> [!WARNING]
2
2
  > ${V} Check where production is built from before you merge; Watchbell won't merge this pull request itself.
3
3
 
4
- `:"")+(0,h.y)(Z,ae,!!z,v),ak=await (0,J.y)(r.token,s.fullName,_,G,ai,aj,D,{draft:!!V}),al=!!V;if(V&&!ak.ok&&422===ak.status&&(ak=await (0,J.y)(r.token,s.fullName,_,G,ai,aj,D),al=!1),!ak.ok)return af(ak);let am=V?al?` Opened as a draft: ${V}`:` Opened as a normal pull request (this repository can't have drafts), with the warning on top: ${V}`:"",an=Z.map(a=>`${a.package} ${a.from} β†’ ${a.to}`).join(", "),ao=await (0,J.M)(r.token,s.fullName,_,D).catch(()=>null),ap=!1;if(ao?.ok&&ao.data){await (0,d.f)().insert(e.dependencyPrs).values({repoId:l,appId:f,proposalId:A??null,number:ak.data.number,branch:_,baseBranch:G,headSha:ao.data,title:ai.slice(0,200),packages:Z.map(a=>a.package),auto:!!z,stage:"checks",stageText:m(ak.data.number,"checks")}).onConflictDoNothing().catch(()=>console.warn("deps: recording the PR failed"));let{extensions:b}=await a.A(414785),c=await b.runner?.queueLockfileJob({repoId:l,branch:_,headSha:ao.data,prNumber:ak.data.number,lockfilePath:ad,targets:Z.map(a=>({name:a.package,version:a.fixed}))}).catch(()=>(console.warn("deps: queueing the lockfile job failed"),null)),g=await (0,M.U)(r.token,{repo:s.fullName,branch:_,lockfilePath:ad,prNumber:ak.data.number});ap=c?.queued===!0||g.sent}return n({done:!0,message:`Pull request #${ak.data.number} opened for ${s.app}: ${an}.${ap?"":` Run npm install${v?` in ${v}`:""} on the branch before merging.`}${am}`,audit:{message:`Package update PR opened \xb7 ${s.app} \xb7 #${ak.data.number}`,resourceId:f,detail:an}},c,r.id)}async function V(a,b,c){if(!(0,H.f)(a)||c&&!(0,H.f)(c.appId))return{ok:!1,why:"target"};let d=await P();if(!d||"unreadable"===d)return{ok:!1,why:"no write token"};let e=c?await R(c.appId):await S(a);if(!e)return{ok:!1,why:"nothing"};let f=(0,g.a)(e.upgrades,e.installed,b);return f.ok?{ok:!0}:{ok:!1,why:f.why}}async function W(a,c){let f=a.filter(a=>(0,H.f)(a.appId)&&(0,H.f)(a.repoId)),g=new Map;if(!f.length)return g;let h=await (0,d.f)().select({appId:e.appRepos.appId,repoId:e.appRepos.repoId,meta:e.resources.meta,defaultBranch:e.githubRepos.defaultBranch}).from(e.appRepos).innerJoin(e.resources,(0,b.u)(e.resources.id,e.appRepos.appId)).innerJoin(e.githubRepos,(0,b.u)(e.githubRepos.id,e.appRepos.repoId)).where((0,b.y)(e.appRepos.appId,[...new Set(f.map(a=>a.appId))])).limit(4*f.length);for(let a of f){let b=h.find(b=>b.appId===a.appId&&b.repoId===a.repoId),d=b?.meta??{},e=b?(0,I.B)(d.productionSource,(0,I.q)(d,b.defaultBranch??null),c):null;e&&g.set(a.appId,e)}return g}async function X(a,c=[]){let f=a.filter(H.f),g=new Map;if(!f.length)return g;let h=await (0,d.f)().select({appId:e.appRepos.appId,repoId:e.appRepos.repoId,version:e.appSecurity.version,status:e.appSecurity.status,findings:e.appSecurity.findings}).from(e.appRepos).innerJoin(e.githubRepos,(0,b.u)(e.githubRepos.id,e.appRepos.repoId)).innerJoin(e.appSecurity,(0,b.u)(e.appSecurity.resourceId,e.appRepos.appId)).where((0,b.b)((0,b.y)(e.appRepos.appId,f),(0,b.M)(e.githubRepos.goneAt),(0,b.u)(e.appSecurity.status,"vulnerable"))).limit(f.length),j=new Set(c),k=h.filter(a=>j.has(a.appId)),l=k.length?new Set((await (0,d.f)().selectDistinct({repoId:e.dependencyVulns.repoId}).from(e.dependencyVulns).where((0,b.b)((0,b.y)(e.dependencyVulns.repoId,[...new Set(k.map(a=>a.repoId))]),(0,b.M)(e.dependencyVulns.resolvedAt),(0,b.u)(e.dependencyVulns.package,"next"),(0,b.u)(e.dependencyVulns.direct,!0),(0,b.E)(e.dependencyVulns.fixedVersion))).limit(k.length)).map(a=>a.repoId)):new Set;for(let a of h){if(j.has(a.appId)&&l.has(a.repoId))continue;let b=(0,i.p)({version:a.version,status:a.status,findings:Array.isArray(a.findings)?a.findings:[]});b&&g.set(a.appId,{repoId:a.repoId,from:b.from,to:b.to})}return g}a.s(["u",0,N,"J",0,V,"W",0,U,"h",0,X,"H",0,W,"G",0,P],736780)},915598,657582,a=>{var b=a.i(322145),c=a.i(75105),d=a.i(572134);function e(a,b,c){if("building"===a.state)return"building";if(null!==b&&a.id===b)return"current";if("error"===a.state)return"failed";if("preview"===a.target)return"ready"===a.state?"preview":"other";if("ready"!==a.state||null===b)return"other";let d=c.find(a=>a.id===b);if(!d)return"other";if(a.createdAt.getTime()>d.createdAt.getTime())return"staged";let e=c.filter(a=>"ready"===a.state&&a.id!==b&&a.createdAt.getTime()<d.createdAt.getTime()).sort((a,b)=>b.createdAt.getTime()-a.createdAt.getTime())[0];return e?.id===a.id?"previous":"other"}let f=a=>{let b;return{id:a.externalId,state:"ready"===(b=a.state)||"building"===b||"error"===b||"canceled"===b?b:"building",target:"production"===a.target?"production":"preview",createdAt:a.createdAt}};function g(a){let b=new Map;for(let c of(function(a){let b=new Map;for(let c of a)b.set(c.appId,[...b.get(c.appId)??[],c]);return b})(a).values()){let a=c.find(a=>a.isCurrent)?.externalId??null,d=c.filter(a=>"production"===a.target).map(f);for(let g of c)b.set(g.externalId,e(f(g),a,d))}return b}a.s(["g",0,function(a,b=!1){switch(a){case"building":return["Cancel"];case"current":return b?[]:["Redeploy"];case"previous":return["Roll back to this"];case"staged":return["Promote"];case"preview":return b?[]:["Promote to production"];default:return[]}},"h",0,function(a){let b=g(a),c=[...a].sort((a,b)=>b.createdAt.getTime()-a.createdAt.getTime()),d=a=>c.find(c=>b.get(c.externalId)===a)?.externalId??null;return{currentId:d("current"),previousId:d("previous"),stagedId:d("staged")}},"U",0,e,"S",0,g],657582);let h="This app or its Vercel credential isn't available any more. Reload the page.",i="Already live.",j=new Set(["QUEUED","INITIALIZING","BUILDING"]),k=a=>({done:!1,message:a}),l=(a,b)=>a?.sha?a.sha.slice(0,7):b;async function m(a,c,d){let e=await (0,b.q)(a.id,c,d);if(e)return e;let f=await (0,b.p)(d,"app"),g=f?.resource.meta.teamId;if(!f||"string"!=typeof g||!g||!f.resource.externalId)return h;let i=f.resource.meta.teamSlug;return{member:a,t:f,appId:d,app:f.resource.name,teamId:g,teamSlug:"string"==typeof i?i:"",projectId:f.resource.externalId}}async function n(a){let[b,c]=await Promise.all([(0,d.c)(a.t.token,a.teamId,a.projectId),(0,d.r)(a.t.token,a.teamId,a.projectId)]);return b.ok?c.ok?{ok:!0,data:{name:b.data.name,currentId:b.data.currentId??c.data[0]?.id??null,production:c.data}}:c:b}async function o(a,d,e,f,g=b.W){return g(d.ok?{done:!0,message:e.message,audit:{message:e.audit,resourceId:a.appId}}:{done:!1,failed:"scope"===d.kind?{ok:!1,kind:"scope",status:d.status,error:(0,c.b)("vercel",{team:a.teamSlug})}:404===d.status?{ok:!1,kind:"missing",status:404,error:"Vercel can't find that deployment any more. Reload and try again."}:{ok:!1,kind:"auth"===d.kind?"auth":"format"===d.kind?"format":"transient",...d.status?{status:d.status}:{},error:d.error},audit:{message:f,resourceId:a.appId}},a.member,a.t.account.id)}async function p(a,f,g,h=b.W){{let b=await m(a,"redeploy",f);if("string"==typeof b)return h(k(b),a,"");let i=await n(b);if(!i.ok)return h(k(i.error),a,b.t.account.id);if(i.data.currentId!==g)return h(k(c.G),a,b.t.account.id);if(i.data.production.some(a=>"staged"===e(a,i.data.currentId,i.data.production)))return h(k("Rolled back: promote a deployment first. A redeploy would stay staged and not go live."),a,b.t.account.id);let j=await (0,d.N)(b.t.token,b.teamId,b.projectId);if(!j.ok)return h(k(j.error),a,b.t.account.id);if(j.data)return h(k(`A production build of ${b.app} is already running.`),a,b.t.account.id);let p=l(i.data.production.find(a=>a.id===g),g),q=await (0,d.L)(b.t.token,b.teamId,{projectId:b.projectId,name:i.data.name,deploymentId:g});return o(b,q,{message:`Redeploy requested. Vercel is building ${b.app} again.`,audit:`Redeploy requested \xb7 ${b.app} \xb7 ${p}`},`Redeploy failed \xb7 ${b.app} \xb7 ${p}`,h)}}async function q(a,c,f,g=b.W){{let b=await m(a,"rollback",c);if("string"==typeof b)return g(k(b),a,"");let h=await n(b);if(!h.ok)return g(k(h.error),a,b.t.account.id);if(h.data.currentId===f)return g(k(i),a,b.t.account.id);let j=h.data.production.find(a=>a.id===f);if(!j||"previous"!==e(j,h.data.currentId,h.data.production))return g(k("Hobby can only roll back to the previous production deployment."),a,b.t.account.id);let p=l(j,f),q=await (0,d.E)(b.t.token,b.teamId,b.projectId,f);return o(b,q,{message:`Rolled back ${b.app} to ${p}. New pushes don't go live until you promote one.`,audit:`Rolled back \xb7 ${b.app} β†’ ${p}`},`Roll back failed \xb7 ${b.app} β†’ ${p}`,g)}}a.s(["T",0,/^dpl_[A-Za-z0-9]{8,40}$/,"u",0,h,"G",0,"Vercel can't find that deployment any more. Reload and try again.","f",0,i,"l",0,"Only a ready preview of this app can be promoted to production.","v",0,"Only a ready production deployment newer than the live one can be promoted.","S",0,"Rolled back: promote a production deployment first. A promoted preview would stay staged and not go live.","o",0,j,"X",0,n,"p",0,m,"B",0,p,"C",0,l,"O",0,k,"U",0,q,"J",0,o],915598)},313235,a=>{var b=a.i(927262),c=a.i(462820);let d={workloads:"Workloads",databases:"Databases",network:"Network",observe:"Observe",ai:"AI & API",admin:"Administration"},e={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"},f=new Set(["MonitorDown","HighLatency","DeploymentFailed","VulnerableDependency","FrameworkVulnerable","MonitorDomainMoved","CiFailing"]);a.s(["H",0,d,"p",0,function(a){if((0,b.h)(a.ruleKey))return f.has(a.ruleKey)&&null!==a.resourceKind&&"app"!==a.resourceKind?"observe":e[a.ruleKey];let c=new Set(a.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)),d=(...a)=>a.some(a=>c.has(a));return d("ai","router","gateway","model","models","provider","quota","llm","gemini")?"ai":d("key","keys","member","members","security","audit","credential","credentials","mfa","token")?"admin":d("database","db","storage","compute","neon","supabase","firestore","firebase")?"databases":d("domain","domains","dns","cert","certificate","tls","zone")?"network":"app"===a.resourceKind?"workloads":"observe"},"y",0,a=>c.X.proposedBy(d[a])])},247881,649031,a=>{var b=a.i(488345),c=a.i(342634),d=a.i(313235),e=a.i(188282),f=a.i(416454);let g=["LogErrorSpike","LogErrors","LogDbErrors"],h="timeout|ECONNREFUSED|too many connections|terminating connection|connection terminated|endpoint is disabled|compute.*suspend";RegExp(h,"i");let i=/^dpl_[A-Za-z0-9]{8,40}$/,j=/^ep-[a-z0-9-]{3,60}$/,k=/^[a-z0-9]{8,40}$/;function l(a,d,e){let f=d?(0,b.g)(d,e,120):"";return(0,c.l)((0,b.g)(f?`${a}. Most common: ${f}`:a,e,c.j)||a,c.j)}let m=a=>`${a.ruleKey}:${a.resourceId??""}:${a.action}`,n=new Set(["pending","approved","running"]);a.s(["s",0,864e5,"b",0,72e5,"V",0,3,"N",0,h,"G",0,20,"T",0,g,"v",0,72e5,"H",0,18e5,"w",0,10,"I",0,72e5,"x",0,function(a,b,c){let d=new Set(b.filter(a=>n.has(a.status)||null!==a.closedAt&&c.getTime()-a.closedAt.getTime()<72e5).map(m)),e=new Set;return a.filter(a=>{let b=m(a);return!(d.has(b)||e.has(b))&&(e.add(b),!0)})},"t",0,function(a,b,g){return(function(a,b,d){let e=[],g=d.getTime(),h=null!==a.liveAt&&g-a.liveAt.getTime()<72e5&&a.liveAt.getTime()<=g,m=a.previousNext?.status??"unknown";if(h&&a.errorsSinceLive>=Math.max(10,Math.ceil(5*a.baselineErrors/24))&&a.currentId&&a.previousId&&i.test(a.previousId)&&a.previousId!==a.currentId&&"vulnerable"!==m){let d=l(`${a.errorsSinceLive} errors since the deploy went live ${Math.max(1,Math.round((g-a.liveAt.getTime())/6e4))} min ago (${a.baselineErrors} in the 24 h before)`,a.topSinceLive,b);e.push({ruleKey:"LogErrorSpike",room:"workloads",action:"vercel_rollback",resourceKind:"app",resourceId:a.appId,targetRef:a.previousId,reason:"ok"===m?d:(0,c.l)(`${f.B} ${d}`)})}let n=null!==a.lastDeployAt&&g-a.lastDeployAt.getTime()<72e5;if(a.errors30>=20&&!n&&a.httpMonitorId&&e.push({ruleKey:"LogErrors",room:"workloads",action:"recheck",resourceKind:"app",resourceId:a.appId,targetRef:a.httpMonitorId,reason:l(`${a.errors30} errors in the last 30 min`,a.top30,b)}),a.dbErrors30>=3&&a.db){let c=l(`${a.dbErrors30} database connection errors in the last 30 min`,a.topDb,b),d=a.db;("neon_project"===d.kind||"neon_branch"===d.kind)&&d.wakeEndpoint&&j.test(d.wakeEndpoint)?e.push({ruleKey:"LogDbErrors",room:"databases",action:"neon_wake",resourceKind:d.kind,resourceId:d.resourceId,targetRef:d.wakeEndpoint,reason:c}):"supabase_project"===d.kind&&d.supabasePaused&&d.supabaseRef&&k.test(d.supabaseRef)&&e.push({ruleKey:"LogDbErrors",room:"databases",action:"supabase_restore",resourceKind:d.kind,resourceId:d.resourceId,targetRef:d.supabaseRef,reason:c})}return e})(a,b,g).map(f=>{let h="app"===f.resourceKind?(0,c.J)("app",a.appId,a.appName,b):(0,c.J)(f.resourceKind,f.resourceId,null,b);return{alertId:null,ruleKey:f.ruleKey,room:f.room,action:f.action,risk:e.H[f.action].risk,title:(0,c.M)(f.action,h),reason:f.reason,resourceKind:f.resourceKind,resourceId:f.resourceId,resourceName:h,targetRef:f.targetRef,proposedBy:(0,d.y)(f.room),expiresAt:new Date(g.getTime()+e.V)}})},"D",0,function(a,b){let c=a.getTime();return(null===b||!(c-b<27e4))&&(Math.floor(c/6e4)%5==0||null!==b&&c-b>=6e5)},"W",0,function(a,b){let c=new Set(b.map(m));return a.filter(a=>{let b;return"pending"===a.status&&(b=a.ruleKey,g.includes(b))&&!c.has(m(a))}).map(a=>a.id)}],247881);let o=new Set(["MonitorDown","LogErrorSpike"]);a.s(["r",0,72e5,"M",0,o,"s",0,function(a,b){let c=a=>({ok:!1,why:a});if(!a.setting.enabled)return c("off");if(!a.ruleKey||!o.has(a.ruleKey))return c("rule");let d=a.deploy;if(!d||!d.liveAt)return c("no live deploy");let e=b.getTime()-d.liveAt.getTime();return e<0||e>6e4*a.setting.windowMin?c("outside the window"):d.previousId&&a.targetRef===d.previousId&&d.previousId!==d.currentId?d.newestProdCreatedAt&&d.currentCreatedAt.getTime()<d.newestProdCreatedAt.getTime()?c("live deploy is a rollback"):a.rolledOrPromotedLately?c("live deploy came from a rollback or promote"):"ready"!==(d.previousState??"").toLowerCase()?c("previous not ready"):!d.previousCreatedAt||b.getTime()-d.previousCreatedAt.getTime()>2592e6?c("previous too old"):"vulnerable"===a.previousNext?c("previous Next.js has advisories"):"ok"!==a.previousNext?c("previous Next.js unknown"):a.autoLately?c("auto-rollback within 2 h"):a.sameDeployBefore?c("already rolled back once"):a.inFlight?c("another auto-rollback is running"):{ok:!0}:c("target changed")},"u",0,(a,b,d)=>(0,c.l)(`Automatic: the new deploy ${a} errored in the first ${b} minutes. ${d}`),"E",0,a=>a.currentSha&&/^[0-9a-f]{7,40}$/i.test(a.currentSha)?a.currentSha.slice(0,7):a.currentId.slice(0,16)],649031)},691100,a=>{let b;var c,d=a.i(93321),e=a.i(530385),f=a.i(351674),g=a.i(548734),h=a.i(462820),i=a.i(837137),j=a.i(247730),k=a.i(455317),l=a.i(930270),m=a.i(396667),n=a.i(160147),o=a.i(767163),p=a.i(757902),q=a.i(436357),r=a.i(893893),s=a.i(556987),t=a.i(142754),u=a.i(342634),v=a.i(247881),w=a.i(649031),x=a.i(381544),y=a.i(138984),z=a.i(492665),A=a.i(221084),B=a.i(736780),C=a.i(560954),D=a.i(895176),E=a.i(305731),F=a.i(30184),G=a.i(721170),H=a.i(322145),I=a.i(248358),J=a.i(915598),K=a.i(312573),L=a.i(323878),M=a.i(19809),N=a.i(371289),O=a.i(94473),P=a.i(188282);let Q={checkMonitorNow:D.X,keepAliveNow:C.v,wakeAs:G.v,supabaseAct:I.Q,redeployAs:J.B,rollbackAs:J.U,finish:H.W,recordAction:A.f,limit:L.C,bumpPrAs:B.W,autoSecurity:()=>(0,O.X)(),recheckDomain:F._,moveMonitorToDomain:E.f};async function R(){let[a]=await (0,g.f)().select({at:i.collectorRuns.startedAt}).from(i.collectorRuns).where(f.B`(${i.collectorRuns.trigger} = 'vercel_cron' or (${i.collectorRuns.trigger} = 'manual' and ${i.collectorRuns.tasks} ? 'rollups'))`).orderBy((0,e.A)(i.collectorRuns.startedAt)).limit(1);return a?.at??null}async function S(a){let b=await (a.lastDailyRunAt??R)(),c=(a.now??(()=>new Date))();if(b&&c.getTime()-b.getTime()<216e5)return{ok:!1,error:"The daily job ran less than 6 hours ago."};let d=(a.dailyTarget??function(){let a=(0,y.f)();return a?{url:`${(0,z.f)().SITE_URL.replace(/\/+$/,"")}/api/daily`,secret:a.CRON_SECRET}:null})();if(!d)return{ok:!1,error:"The scheduler settings are missing, so the daily job can't be started."};try{let b=await (a.fetch??fetch)(d.url,{headers:{Authorization:`Bearer ${d.secret}`},signal:AbortSignal.timeout(4e4),redirect:"manual"});if(!b.ok||b.status>=300)return{ok:!1,error:`The daily job route answered ${b.status}.`};return{ok:!0,message:`Daily job ran again (${b.status}).`}}catch(a){if(a instanceof Error&&("TimeoutError"===a.name||"AbortError"===a.name))return{ok:!0,message:"Daily job started; it's still running β€” the heartbeat turns Up when it finishes."};throw a}}let T="The proposal's target is missing, so it can't run.";async function U(a,b,c=Q){let d="auto"===b,e=d?{id:u.e,userId:null}:{id:b.id,userId:b.userId},f=(a,b,e)=>c.finish(a,b,e,{refresh:!1,...d?{auditPrefix:u.v}:{}});try{if(!a.resourceId||!a.targetRef)return{ok:!1,error:T};if((0,N.W)()&&"recheck"!==a.action)return await c.recordAction({kind:"ok",message:`${d?u.v:""}${P.H[a.action].label} (simulated)`,detail:"Simulated in the demo",resourceId:a.resourceId,actorUserId:e.userId}).catch(()=>console.warn("audit event failed")),{ok:!0,message:M.r};switch(a.action){case"recheck":{let b=await c.limit(K.t.check,e.id);if(!b.allowed)return{ok:!1,error:`Too many checks. Try again in ${(0,K.H)(b.retryAfter)}.`};let f=await c.checkMonitorNow(a.targetRef);if(!f.ok)return{ok:!1,error:f.error};if(f.audit)try{await c.recordAction({kind:!1===f.passed?"err":"ok",...f.audit,message:`${d?u.v:""}${f.audit.message}`,actorUserId:e.userId})}catch{console.warn("audit event failed")}return{ok:!0,message:f.message}}case"domain_recheck":{let b=await c.limit(K.t.domainCheck,e.id);if(!b.allowed)return{ok:!1,error:`Too many checks. Try again in ${(0,K.H)(b.retryAfter)}.`};let f=await (c.recheckDomain??F._)(a.targetRef);if(!f.ok)return f;return await c.recordAction({kind:"ok",...f.audit,message:`${d?u.v:""}${f.audit.message}`,actorUserId:e.userId}).catch(()=>console.warn("audit event failed")),{ok:!0,message:f.message}}case"monitor_update_url":{let b=await c.limit(K.t.monitorWrite,e.id);if(!b.allowed)return{ok:!1,error:`Too many changes. Try again in ${(0,K.H)(b.retryAfter)}.`};let f=await (c.moveMonitorToDomain??E.f)(a.targetRef);if(!f.ok)return f;return f.audit&&await c.recordAction({kind:"ok",...f.audit,message:`${d?u.v:""}${f.audit.message}`,actorUserId:e.userId}).catch(()=>console.warn("audit event failed")),{ok:!0,message:f.message}}case"daily_rerun":return await S(c);case"neon_wake":return await c.wakeAs(e,a.resourceId,a.targetRef,f);case"supabase_keepalive":return await c.keepAliveNow(e,a.resourceId,f);case"supabase_restore":return await c.supabaseAct("restore",e,a.resourceId,a.targetRef,f);case"vercel_redeploy":return await c.redeployAs(e,a.resourceId,a.targetRef,f);case"vercel_rollback":return await c.rollbackAs(e,a.resourceId,a.targetRef,f);case"github_bump_pr":{let b=d?await (c.autoSecurity??O.X)():null;if(d&&!b?.enabled)return{ok:!1,error:"Automatic security fixes is off."};return await (c.bumpPrAs??B.W)(e,a.resourceId,a.targetRef,f,{proposalId:a.proposalId??null,...b?{auto:{severities:b.severities}}:{},..."FrameworkVulnerable"===a.ruleKey?{framework:!0}:{}})}default:return{ok:!1,error:T}}}catch(a){return console.warn(`${h.X.logTag}/proposals run failed:`,a instanceof Error?a.name:"error"),{ok:!1,error:"Something went wrong while running it. Check the console page before trying again."}}}var V=a.i(416454);let W={id:t.O.id,room:t.O.room,action:t.O.action,risk:t.O.risk,title:t.O.title,reason:t.O.reason,resourceName:t.O.resourceName,proposedBy:t.O.proposedBy,status:t.O.status,auto:t.O.auto,result:t.O.result,createdAt:t.O.createdAt,decidedAt:t.O.decidedAt,expiresAt:t.O.expiresAt},X={...W,resourceId:t.O.resourceId,targetRef:t.O.targetRef,ruleKey:t.O.ruleKey,alertId:t.O.alertId};async function Y(a,b,c){let e=(0,u.z)(a,b),h=new Set(e.deployApps),j=a.filter(a=>("MonitorDown"===a.ruleKey||"HighLatency"===a.ruleKey)&&a.resourceId&&h.has(a.resourceId)&&a.startedAt),[k,m,n,o,p,r,s,t,v]=await Promise.all([e.monitorIds.length?(0,g.f)().select({id:i.monitors.id,kind:i.monitors.kind,url:i.monitors.url,lastError:i.monitors.lastError,appId:i.monitors.resourceId,appName:i.resources.name,appMeta:i.resources.meta}).from(i.monitors).innerJoin(i.resources,(0,d.u)(i.resources.id,i.monitors.resourceId)).where((0,d.y)(i.monitors.id,e.monitorIds)):[],e.deployApps.length?(0,g.f)().select({app:i.deployments.resourceId,id:i.deployments.externalId,isCurrent:i.deployments.isCurrent,isPrevious:i.deployments.isPreviousProduction,readyAt:i.deployments.readyAt,createdAt:i.deployments.createdAtProvider}).from(i.deployments).where((0,d.b)((0,d.y)(i.deployments.resourceId,e.deployApps),(0,d.F)((0,d.u)(i.deployments.isCurrent,!0),(0,d.u)(i.deployments.isPreviousProduction,!0)))):[],e.supabaseIds.length?(0,g.f)().select({id:i.resources.id,ref:i.resources.externalId}).from(i.resources).where((0,d.b)((0,d.y)(i.resources.id,e.supabaseIds),(0,d.u)(i.resources.kind,"supabase_project"),f.B`${i.resources.goneAt} is null`)):[],e.monitorApps.length?ac(e.monitorApps):new Map,e.depApps.length?aa(a,e.depApps).catch(()=>new Set).then(a=>(0,l.C)(e.depApps,a)).catch(()=>new Map):new Map,e.monitorIds.length?ab(e.monitorIds):null,e.frameworkApps.length?(0,B.h)(e.frameworkApps,e.depApps).catch(()=>new Map):new Map,j.length?Z(j.map(a=>a.subject),b).catch(()=>[]):[],$(e.deployApps)]),w=k.some(a=>null!==(0,q.Y)(a.appMeta)),x=w?await (0,g.f)().select({id:i.resources.id,name:i.resources.name,meta:i.resources.meta}).from(i.resources).where((0,d.b)((0,d.u)(i.resources.kind,"app"),(0,d.u)(i.resources.monitored,!0),(0,d.M)(i.resources.goneAt))).limit(500):[],y=w?(0,q.P)(k,x):new Map,z=[...[...p].map(([a,b])=>({appId:a,repoId:b})),...[...s].map(([a,b])=>({appId:a,repoId:b.repoId}))],A=z.length?await Promise.resolve().then(()=>(0,B.H)(z,b)).catch(()=>new Map):new Map,C=new Map,D=new Map;for(let a of m){let b=C.get(a.app)??{currentId:null,previousId:null,liveAt:null};a.isCurrent?(b.currentId=a.id,b.liveAt=a.readyAt??a.createdAt??null):a.isPrevious&&(b.previousId=a.id,D.set(a.app,a.readyAt??a.createdAt??null)),C.set(a.app,b)}let E=new Map;for(let[a,b]of C)b.previousId&&E.set(a,_(v,a,b.liveAt,D.get(a)??null));let F=new Map(j.map(a=>[a.id,(0,V.g)(a.startedAt,t.filter(b=>b.ruleKey===a.ruleKey&&b.subject===a.subject),{ruleKey:a.ruleKey,liveAt:C.get(a.resourceId)?.liveAt??null})]));return{monitorKinds:new Map(k.map(a=>[a.id,String(a.kind)])),deploys:C,...void 0!==c?{rollbackWindowMs:c}:{},supabaseRefs:new Map(n.map(a=>[a.id,a.ref])),neonSuspended:o,fixableRepos:p,dailyHeartbeatId:r,frameworkFixes:s,monitorMoves:y,problemSince:F,previousNext:E,...A.size?{productionMismatch:A}:{}}}async function Z(a,b){return(0,g.f)().select({ruleKey:i.alerts.ruleKey,subject:i.alerts.subject,startedAt:i.alerts.startedAt,resolvedAt:i.alerts.resolvedAt}).from(i.alerts).where((0,d.b)((0,d.y)(i.alerts.ruleKey,["MonitorDown","HighLatency"]),(0,d.y)(i.alerts.subject,[...new Set(a)]),(0,d.E)(i.alerts.resolvedAt),(0,d.B)(i.alerts.resolvedAt,new Date(b.getTime()-V.A)))).orderBy((0,e.A)(i.alerts.startedAt)).limit(500)}async function $(a){let b={checks:new Map,events:new Map,frameworks:new Map};if(!a.length)return b;try{let[c,f,h]=await Promise.all([(0,g.f)().select({app:i.appSecurity.resourceId,version:i.appSecurity.version,status:i.appSecurity.status,findings:i.appSecurity.findings,checkedAt:i.appSecurity.checkedAt,reason:i.appSecurity.reason}).from(i.appSecurity).where((0,d.y)(i.appSecurity.resourceId,a)).limit(a.length),(0,g.f)().select({app:i.events.resourceId,at:i.events.at,reason:i.events.reason,message:i.events.message}).from(i.events).where((0,d.b)((0,d.y)(i.events.reason,[...V.Y]),(0,d.y)(i.events.resourceId,a))).orderBy((0,e.A)(i.events.at)).limit(Math.min(500,50*a.length)),(0,g.f)().select({app:i.resources.id,meta:i.resources.meta}).from(i.resources).where((0,d.y)(i.resources.id,a)).limit(a.length)]);for(let a of c)b.checks.set(a.app,{version:a.version,status:a.status,findings:Array.isArray(a.findings)?a.findings:[],checkedAt:a.checkedAt,reason:a.reason});for(let a of f)a.app&&b.events.set(a.app,[...b.events.get(a.app)??[],{at:a.at,reason:a.reason,message:a.message}]);for(let a of h){let c=a.meta&&"object"==typeof a.meta?a.meta.framework:null;b.frameworks.set(a.app,"string"==typeof c?c:null)}}catch{return{checks:new Map,events:new Map,frameworks:new Map}}return b}let _=(a,b,c,d)=>(0,V.Q)({currentLiveAt:c,previousLiveAt:d,check:a.checks.get(b)??null,events:a.events.get(b)??[],framework:a.frameworks.get(b)??null});async function aa(a,b){let c=new Set(b),e=a.filter(a=>"FrameworkVulnerable"===a.ruleKey&&"app"===a.resourceKind&&a.resourceId&&c.has(a.resourceId)).map(a=>a.id);return e.length?new Set((await (0,g.f)().selectDistinct({resourceId:t.O.resourceId}).from(t.O).where((0,d.b)((0,d.u)(t.O.ruleKey,"FrameworkVulnerable"),(0,d.u)(t.O.action,"github_bump_pr"),(0,d.y)(t.O.status,["pending","approved","running","done"]),(0,d.y)(t.O.alertId,e),(0,d.y)(t.O.resourceId,[...c]))).limit(e.length)).flatMap(a=>a.resourceId?[a.resourceId]:[])):new Set}async function ab(a){let b=(0,o.i)(process.env.DAILY_HEARTBEAT_TOKEN);if(!b)return null;let[c]=await (0,g.f)().select({id:i.monitors.id}).from(i.monitors).where((0,d.b)((0,d.y)(i.monitors.id,a),(0,d.u)(i.monitors.kind,"heartbeat"),(0,d.u)(i.monitors.tokenHash,(0,p.C)(b)))).limit(1).catch(()=>[]);return c?.id??null}async function ac(a){let b=await (0,g.f)().select({app:i.links.fromResourceId,id:i.resources.id,kind:i.resources.kind,externalId:i.resources.externalId,parentId:i.resources.parentId}).from(i.links).innerJoin(i.resources,(0,d.u)(i.resources.id,i.links.toResourceId)).where((0,d.b)((0,d.y)(i.links.fromResourceId,a),(0,d.u)(i.links.kind,"uses_db"),(0,d.y)(i.resources.kind,["neon_project","neon_branch"]),f.B`${i.resources.goneAt} is null`)),c=new Map;if(!b.length)return c;let e=a=>"neon_branch"===a.kind?a.parentId:a.id,h=[...new Set(b.map(e).filter(a=>!!a))];if(!h.length)return c;let j=new Map((await (0,g.f)().select({id:i.snapshots.resourceId,data:i.snapshots.data}).from(i.snapshots).where((0,d.y)(i.snapshots.resourceId,h))).map(a=>[a.id,(0,r.k)(r.s,a.data)]));for(let a of b){let b=e(a),d=b?j.get(b):void 0,f=d?(0,u.Z)(d.endpoints,d.branches,"neon_branch"===a.kind?a.externalId:null):null;f&&c.set(a.app,{resourceId:a.id,resourceKind:a.kind,endpointId:f})}return c}async function ad(a){if(!a.length)return[];let b=new Set((await (0,g.f)().select({alertId:t.O.alertId,action:t.O.action}).from(t.O).where((0,d.y)(t.O.alertId,[...new Set(a.map(a=>a.alertId))]))).map(a=>`${a.alertId}:${a.action}`)),c=a.filter(a=>!b.has(`${a.alertId}:${a.action}`));return c.length?(0,g.f)().insert(t.O).values(c.map(a=>({...a,status:"pending"}))).onConflictDoNothing().returning(X):[]}async function ae(a,b){return(await (0,g.f)().select(W).from(t.O).where(f.B`${t.O.createdAt} >= ${new Date(a.getTime()-6048e5).toISOString()}::timestamptz`).orderBy(f.B`case when ${t.O.status} = 'pending' then 0 else 1 end`,(0,e.A)(t.O.createdAt),(0,e.A)(t.O.id)).limit(b)).map(u.E)}async function af(a){let[b]=await (0,g.f)().select(W).from(t.O).where((0,d.u)(t.O.id,a)).limit(1);return b?(0,u.E)(b):null}async function ag(a,b,c,e){let[h]=await (0,g.f)().update(t.O).set({status:"approve"===b?"approved":"rejected",decidedBy:c,decidedAt:e}).where((0,d.b)((0,d.u)(t.O.id,a),(0,d.u)(t.O.status,"pending"),f.B`${t.O.expiresAt} > ${e.toISOString()}::timestamptz`)).returning(X);if(h)return{status:"ok",proposal:(0,u.E)(h),row:h};let[i]=await (0,g.f)().select(W).from(t.O).where((0,d.u)(t.O.id,a)).limit(1);return i?{status:"conflict",proposal:(0,u.E)(i)}:{status:"missing"}}async function ah(a,b){let[c]=await (0,g.f)().update(t.O).set({status:"running",claimedAt:b}).where((0,d.b)((0,d.u)(t.O.id,a),(0,d.u)(t.O.status,"approved"))).returning(X);return c??null}async function ai(a,b,c,e){let[f]=await (0,g.f)().update(t.O).set({status:b?"done":"failed",result:c,finishedAt:e}).where((0,d.b)((0,d.u)(t.O.id,a),(0,d.u)(t.O.status,"running"))).returning(X);return f??null}let aj={run:(a,b)=>U(a,b),book:()=>(0,j.f)()};async function ak(a,b,c,d=aj){let e=await ah(a,c);if(!e)return null;let f=await d.run({action:e.action,resourceId:e.resourceId,targetRef:e.targetRef,proposalId:e.id,ruleKey:e.ruleKey??null},b),g=await d.book().catch(()=>s.a),h=await ai(a,f.ok,(0,u.x)(f,g),new Date);return h?(0,u.E)(h):null}async function al(a,b){let c=await (0,g.f)().update(t.O).set({status:"expired",result:"Expired: nobody decided in time, or the alert stopped firing."}).where((0,d.b)((0,d.u)(t.O.status,"pending"),(0,d.F)((0,d.S)(t.O.expiresAt,new Date(b.getTime()+1)),(0,d.b)((0,d.E)(t.O.alertId),a.length?(0,d.$)(t.O.alertId,a):f.B`true`)))).returning({id:t.O.id});return await (0,g.f)().update(t.O).set({status:"failed",result:"The run was interrupted. Check the console page before trying again.",finishedAt:b}).where((0,d.b)((0,d.u)(t.O.status,"running"),(0,d.S)(t.O.claimedAt,new Date(b.getTime()-u.L)))),c.length}async function am(a){await (0,g.f)().delete(t.O).where((0,d.b)((0,d.S)(t.O.createdAt,new Date(a.getTime()-2592e6)),(0,d.$)(t.O.status,["pending","approved","running"])))}let an=f.B`(${i.storedLogs.level} in ('error', 'fatal') or coalesce(${i.storedLogs.statusCode}, 0) >= 500)`,ao=f.B`coalesce(${i.deployments.readyAt}, ${i.deployments.createdAtProvider})`;async function ap(a){let b=await (0,g.f)().select({app:i.links.fromResourceId,id:i.resources.id,kind:i.resources.kind,externalId:i.resources.externalId,parentId:i.resources.parentId}).from(i.links).innerJoin(i.resources,(0,d.u)(i.resources.id,i.links.toResourceId)).where((0,d.b)((0,d.y)(i.links.fromResourceId,a),(0,d.u)(i.links.kind,"uses_db"),(0,d.y)(i.resources.kind,["neon_project","neon_branch","supabase_project"]),(0,d.M)(i.resources.goneAt))),c=new Map;if(!b.length)return c;let e=a=>"neon_branch"===a.kind?a.parentId:a.id,f=[...new Set(b.map(e).filter(a=>!!a))],h=new Map((f.length?await (0,g.f)().select({id:i.snapshots.resourceId,data:i.snapshots.data}).from(i.snapshots).where((0,d.y)(i.snapshots.resourceId,f)):[]).map(a=>[a.id,a.data]));for(let a of b){let b=h.get(e(a)??"");if("supabase_project"===a.kind){let d=(0,r.k)(r.B,b);c.set(a.app,{resourceId:a.id,kind:a.kind,wakeEndpoint:null,supabaseRef:a.externalId,supabasePaused:"INACTIVE"===d.status})}else{let d=(0,r.k)(r.s,b);c.set(a.app,{resourceId:a.id,kind:a.kind,wakeEndpoint:(0,u.Z)(d.endpoints,d.branches,"neon_branch"===a.kind?a.externalId:null),supabaseRef:null,supabasePaused:!1})}}return c}let aq={apps:async function(a){let b=new Date(a.getTime()-v.I-v.s),c=f.B`${i.storedLogs.at} >= ${new Date(a.getTime()-v.H).toISOString()}::timestamptz`,e=f.B`${i.storedLogs.message} ~* ${v.N}`,h=f.B`left(${i.storedLogs.message}, 200)`,j=(await (0,g.f)().select({appId:i.storedLogs.resourceId,appName:f.B`max(${i.resources.name})`,liveAt:f.B`max(${ao})`.mapWith(i.deployments.readyAt),currentId:f.B`max(${i.deployments.externalId})`,errorsSinceLive:f.B`count(*) filter (where ${an} and ${i.storedLogs.at} >= ${ao})`.mapWith(Number),baselineErrors:f.B`count(*) filter (where ${an} and ${i.storedLogs.at} >= ${ao} - interval '24 hours' and ${i.storedLogs.at} < ${ao})`.mapWith(Number),topSinceLive:f.B`mode() within group (order by ${h}) filter (where ${an} and ${i.storedLogs.at} >= ${ao})`,errors30:f.B`count(*) filter (where ${an} and ${c})`.mapWith(Number),top30:f.B`mode() within group (order by ${h}) filter (where ${an} and ${c})`,dbErrors30:f.B`count(*) filter (where ${c} and ${e})`.mapWith(Number),topDb:f.B`mode() within group (order by ${h}) filter (where ${c} and ${e})`}).from(i.storedLogs).innerJoin(i.resources,(0,d.u)(i.resources.id,i.storedLogs.resourceId)).leftJoin(i.deployments,(0,d.b)((0,d.u)(i.deployments.resourceId,i.storedLogs.resourceId),(0,d.u)(i.deployments.isCurrent,!0))).where((0,d.b)((0,d.B)(i.storedLogs.at,b),(0,d.u)(i.resources.kind,"app"),(0,d.M)(i.resources.goneAt))).groupBy(i.storedLogs.resourceId)).filter(a=>a.errorsSinceLive>=v.w||a.errors30>=v.G||a.dbErrors30>=v.V);if(!j.length)return[];let k=j.map(a=>a.appId),[l,m,n]=await Promise.all([(0,g.f)().select({app:i.deployments.resourceId,previousId:f.B`max(${i.deployments.externalId}) filter (where ${i.deployments.isPreviousProduction})`,previousLiveAt:f.B`max(${ao}) filter (where ${i.deployments.isPreviousProduction})`.mapWith(i.deployments.readyAt),lastDeployAt:f.B`max(${i.deployments.createdAtProvider}) filter (where ${i.deployments.target} = 'production')`.mapWith(i.deployments.createdAtProvider)}).from(i.deployments).where((0,d.b)((0,d.y)(i.deployments.resourceId,k),(0,d.F)((0,d.u)(i.deployments.isPreviousProduction,!0),(0,d.B)(i.deployments.createdAtProvider,new Date(a.getTime()-v.v))))).groupBy(i.deployments.resourceId),(0,g.f)().select({app:i.monitors.resourceId,id:i.monitors.id}).from(i.monitors).where((0,d.b)((0,d.y)(i.monitors.resourceId,k),(0,d.u)(i.monitors.kind,"http"),(0,d.u)(i.monitors.paused,!1),(0,d.u)(i.monitors.ownerPaused,!1))).orderBy(i.monitors.createdAt),ap(k)]),o=new Map(l.map(a=>[a.app,a])),p=new Map;for(let a of m)p.has(a.app)||p.set(a.app,a.id);let q=j.filter(a=>a.errorsSinceLive>=v.w&&a.liveAt&&o.get(a.appId)?.previousId).map(a=>a.appId),r=q.length?await $(q):null;return j.map(a=>({...a,appName:a.appName??"",previousId:o.get(a.appId)?.previousId??null,lastDeployAt:o.get(a.appId)?.lastDeployAt??null,httpMonitorId:p.get(a.appId)??null,db:n.get(a.appId)??null,...r&&q.includes(a.appId)?{previousNext:_(r,a.appId,a.liveAt,o.get(a.appId)?.previousLiveAt??null)}:{}}))},rows:async function(a){let b=f.B`coalesce(${t.O.finishedAt}, ${t.O.decidedAt}, ${t.O.expiresAt})`;return(0,g.f)().select({id:t.O.id,ruleKey:t.O.ruleKey,resourceId:t.O.resourceId,action:t.O.action,status:t.O.status,closedAt:b.mapWith(t.O.finishedAt)}).from(t.O).where((0,d.b)((0,d.M)(t.O.alertId),(0,d.y)(t.O.ruleKey,[...v.T]),(0,d.F)((0,d.y)(t.O.status,["pending","approved","running"]),f.B`${b} > ${new Date(a.getTime()-v.b).toISOString()}::timestamptz`)))}};async function ar(a,b,c=aq){let[e,f]=await Promise.all([c.apps(a),c.rows(a)]),h=e.flatMap(c=>(0,v.t)(c,b,a)),i=(0,v.W)(f,h),j=0;i.length&&(j=(await (0,g.f)().update(t.O).set({status:"expired",result:"Expired: the logs no longer show it.",finishedAt:a}).where((0,d.b)((0,d.y)(t.O.id,i),(0,d.u)(t.O.status,"pending"))).returning({id:t.O.id})).length);let k=(0,v.x)(h,f,a);return k.length?{created:await (0,g.f)().insert(t.O).values(k.map(a=>({...a,status:"pending"}))).onConflictDoNothing().returning(X),expired:j}:{created:[],expired:j}}let as=null;async function at(a,b){return(0,v.D)(a,as)?(as=a.getTime(),ar(a,await b())):{created:[],expired:0}}async function au(a,b){return(await (0,g.f)().update(t.O).set({status:"approved",auto:!0,decidedAt:b}).where((0,d.b)((0,d.u)(t.O.id,a),(0,d.u)(t.O.status,"pending"),(0,d.u)(t.O.risk,"safe"))).returning({id:t.O.id})).length>0}async function av(a,b){let c=new Date(b.getTime()-w.r),[e,h,j,k,l]=await Promise.all([(0,g.f)().select({app:i.deployments.resourceId,id:i.deployments.externalId,sha:i.deployments.commitSha,state:i.deployments.state,isCurrent:i.deployments.isCurrent,isPrevious:i.deployments.isPreviousProduction,readyAt:i.deployments.readyAt,createdAt:i.deployments.createdAtProvider}).from(i.deployments).where((0,d.b)((0,d.y)(i.deployments.resourceId,a),(0,d.F)((0,d.u)(i.deployments.isCurrent,!0),(0,d.u)(i.deployments.isPreviousProduction,!0)))),(0,g.f)().select({app:i.deployments.resourceId,at:f.B`max(${i.deployments.createdAtProvider})`.mapWith(i.deployments.createdAtProvider)}).from(i.deployments).where((0,d.b)((0,d.y)(i.deployments.resourceId,a),(0,d.u)(i.deployments.target,"production"),(0,d.u)(i.deployments.state,"ready"))).groupBy(i.deployments.resourceId),(0,g.f)().select({app:i.events.resourceId}).from(i.events).where((0,d.b)((0,d.u)(i.events.type,"action"),(0,d.y)(i.events.resourceId,a),(0,d.B)(i.events.at,c),f.B`${i.events.message} ~ ${aw}`)),(0,g.f)().select({app:t.O.resourceId,targetRef:t.O.targetRef,status:t.O.status,decidedAt:t.O.decidedAt}).from(t.O).where((0,d.b)((0,d.u)(t.O.action,"vercel_rollback"),(0,d.u)(t.O.auto,!0),(0,d.B)(t.O.createdAt,new Date(b.getTime()-26784e5)))),$(a)]),m=new Map;for(let b of a){let a=e.find(a=>a.app===b&&a.isCurrent),d=e.find(a=>a.app===b&&a.isPrevious&&!a.isCurrent),f=k.filter(a=>a.app===b);m.set(b,{deploy:a?{currentId:a.id,currentSha:a.sha,liveAt:a.readyAt??a.createdAt,currentCreatedAt:a.createdAt,newestProdCreatedAt:h.find(a=>a.app===b)?.at??null,previousId:d?.id??null,previousState:d?.state??null,previousCreatedAt:d?.createdAt??null}:null,rolledOrPromotedLately:j.some(a=>a.app===b),autoLately:f.some(a=>null!==a.decidedAt&&a.decidedAt.getTime()>=c.getTime()),sameDeployBefore:!!d&&f.some(a=>a.targetRef===d.id),previousNext:a&&d?_(l,b,a.readyAt??a.createdAt,d.readyAt??d.createdAt).status:"unknown"})}return{apps:m,inFlight:k.some(a=>"approved"===a.status||"running"===a.status)}}let aw="(Rolled back|Promoted|Preview promoted) Β·";async function ax(a,b,c){return(await (0,g.f)().update(t.O).set({status:"approved",auto:!0,decidedAt:c,reason:b}).where((0,d.b)((0,d.u)(t.O.id,a),(0,d.u)(t.O.status,"pending"),(0,d.u)(t.O.action,"vercel_rollback"),f.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:t.O.id})).length>0}async function ay(a,b,c,d){let e=a.filter(a=>"vercel_rollback"===a.action&&a.ruleKey&&w.M.has(a.ruleKey)&&a.resourceId);if(!e.length||!d.autoRollback||!d.rollbackContext||!d.approveAutoRollback)return[];let f=await d.autoRollback().catch(()=>null);if(!f?.enabled||15e3>c())return[];let g=[];try{let a=await d.rollbackContext([...new Set(e.map(a=>a.resourceId))],b),i=a.inFlight;for(let j of e){let e=a.apps.get(j.resourceId);if(!e||12e3>c())continue;let k=(0,w.s)({setting:f,ruleKey:j.ruleKey??null,targetRef:j.targetRef,inFlight:i,...e},b);if(!k.ok){console.log(`${h.X.logTag}/auto-rollback: skipped (${k.why})`);continue}let l=(0,w.E)(e.deploy);if(!await d.approveAutoRollback(j.id,(0,w.u)(l,f.windowMin,j.reason),new Date))continue;i=!0;let m=await d.execute(j.id,new Date);if(m){g.push(m),await (d.notifyRollback??x.q)(m,{reason:j.reason,newRef:l},{},{alertId:j.alertId??null}).catch(()=>void 0);break}}}catch(a){console.warn(`${h.X.logTag}/auto-rollback failed:`,a instanceof Error?a.name:"error")}return g}async function az(a,b){return(await (0,g.f)().update(t.O).set({status:"approved",auto:!0,decidedAt:b}).where((0,d.b)((0,d.u)(t.O.id,a),(0,d.u)(t.O.status,"pending"),(0,d.u)(t.O.action,"github_bump_pr"))).returning({id:t.O.id})).length>0}async function aA(a,b,c){let d=a.filter(a=>"github_bump_pr"===a.action&&a.targetRef);if(!d.length||!c.autoSecurity||!c.bumpReady||!c.approveAutoBump)return[];let e=await c.autoSecurity().catch(()=>null);if(!e?.enabled||!e.severities.length)return[];let f=[];for(let a of d){if(15e3>b())break;try{if(a.resourceId&&c.prodMismatch?await c.prodMismatch(a.resourceId,a.targetRef).catch(()=>"unknown"):null){console.log(`${h.X.logTag}/auto-security: waits for the owner (production source)`);continue}let b="FrameworkVulnerable"===a.ruleKey&&a.resourceId?await c.bumpReady(a.targetRef,e.severities,{appId:a.resourceId}):await c.bumpReady(a.targetRef,e.severities);if(!b.ok){console.log(`${h.X.logTag}/auto-security: waits for the owner (${b.why})`);continue}if(!await c.approveAutoBump(a.id,new Date))continue;let d=await c.execute(a.id,new Date);d&&f.push(d)}catch(a){console.warn(`${h.X.logTag}/auto-security failed:`,a instanceof Error?a.name:"error")}}return f}async function aB(a,b){return(await (0,B.H)([{appId:a,repoId:b}],new Date)).get(a)??null}async function aC(a){return new Map((await (0,g.f)().select({id:i.accounts.id,provider:i.accounts.provider}).from(i.accounts).where((0,d.y)(i.accounts.id,a))).map(a=>[a.id,a.provider]))}let aD={firing:()=>(0,k.q)(),book:()=>(0,j.f)(),facts:Y,create:ad,expire:al,autoRun:O.I,approveAuto:au,execute:(a,b)=>ak(a,"auto",b),notifyNew:x.i,notifyResult:x.b,logs:at,autoRollback:()=>(0,O.K)(),rollbackContext:av,approveAutoRollback:ax,notifyRollback:x.q,autoSecurity:()=>(0,O.X)(),bumpReady:B.J,approveAutoBump:az,paused:m.I,providers:aC,prodMismatch:aB};async function aE(a,b={},c=aD){let d={created:0,expired:0,autoRan:0},e=()=>(b.deadline??1/0)-Date.now(),f=await c.firing();d.expired=await c.expire(f.map(a=>a.id),a);let g=c.paused?await c.paused().catch(()=>new Set):new Set,i=[...new Set(f.flatMap(a=>a.accountId?[a.accountId]:[]))],j=g.size&&i.length&&c.providers?await c.providers(i).catch(()=>new Map):new Map,k=f.filter(a=>!(0,n.O)(g,a.ruleKey,a.accountId?j.get(a.accountId):null)),l=null,m=()=>l??=c.book().catch(()=>s.a),o=[],p=(0,u.z)(k,a);if(Object.values(p).some(a=>a.length>0)){let b=p.deployApps.length&&c.autoRollback?await c.autoRollback().catch(()=>null):null,d=await c.facts(k,a,b?6e4*b.windowMin:void 0),e=await m(),f=k.flatMap(b=>(0,u.t)(b,d,e,a)).filter(a=>!("github_bump_pr"===a.action&&g.has("devops")));o.push(...await c.create(f))}if(e()>1e4&&!g.has("hosting"))try{let b=await c.logs(a,m);o.push(...b.created),d.expired+=b.expired}catch(a){console.warn(`${h.X.logTag}/proposals logs failed:`,a instanceof Error?a.name:"error")}if(d.created=o.length,!o.length)return d;let q=await c.autoRun().catch(()=>null),r=await ay(o,a,e,c);d.autoRan+=r.length;let t=await aA(o.filter(a=>!r.some(b=>b.id===a.id)),e,c),v=new Set(r.map(a=>a.id)),w=[...t];for(let a of(d.autoRan+=t.length,t))v.add(a.id);for(let a of o){if(v.has(a.id)||!q||!(0,u.I)(a.action,q)||8e3>e()||!await c.approveAuto(a.id,new Date))continue;let b=await c.execute(a.id,new Date);b&&(w.push(b),d.autoRan++)}let x=new Set([...w.map(a=>a.id),...v]),y=o.filter(a=>"LogErrorSpike"===a.ruleKey&&a.resourceId).map(a=>({proposalId:a.id,appId:a.resourceId})),z=y.length&&c.queueDev?await c.queueDev(y,a).catch(()=>new Set):new Set,A=new Map(o.map(a=>[a.id,a.alertId??null]));for(let a of(await c.notifyNew(o.filter(a=>!x.has(a.id)).map(u.E),{},{devQueued:z,alertIds:A}).catch(()=>void 0),w))await c.notifyResult(a,{},{alertId:A.get(a.id)??null}).catch(()=>void 0);return d}let aF=(c={},b={...aD,queueDev:c.queueDev},async(a,c)=>{try{let d=await aE(a,c??{},b);(d.created||d.expired||d.autoRan)&&console.log(`${h.X.logTag}/proposals: ${d.created} new, ${d.expired} expired, ${d.autoRan} auto-ran`)}catch(a){console.warn(`${h.X.logTag}/proposals failed:`,a instanceof Error?a.name:"error")}});a.s(["V",0,ag,"N",0,ak,"Q",0,ae,"Z",0,aF,"t",0,am,"K",0,af],691100)},381544,a=>{var b=a.i(462820),c=a.i(532620),d=a.i(49146),e=a.i(390626),f=a.i(192738),g=a.i(492665),h=a.i(552543),i=a.i(446914),j=a.i(556987),k=a.i(488345),l=a.i(94473),m=a.i(188282);let n={target:d.Q,book:()=>(0,c.e)(),siteUrl:()=>(0,g.f)().SITE_URL,autoRun:()=>(0,l.I)(),send:(a,b,c,d,e)=>(0,i.I)(a,b,c,{...d?{replyMarkup:d}:{},...e?{replyTo:e}:{}}),record:(a,b)=>(0,d.P)("telegram",a,b),lang:()=>(0,h.I)("telegram"),discord:()=>(0,d.G)(),sendDiscord:(a,b)=>(0,e.$)(a,b,{timeoutMs:w}),recordDiscord:(a,b)=>(0,d.P)("discord",a,b),discordLang:()=>(0,h.I)("discord"),buttons:()=>a.A(801116).then(a=>a.approvalButtons()),thread:a=>(0,d.M)(a)},o={en:{pending:"Status: ⏳ waiting",dev:"πŸ§‘β€πŸ’» Dev is checking the code",proposer:b.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:b.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"}},p={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"},q=(a="en")=>(0,h.t)(o,a,"dev"),r=(a,b)=>("id"===b?p[a.action]:void 0)??m.H[a.action]?.label??a.actionLabel,s=(a,b)=>(0,h.t)(o,b,"risky"===a.risk||m.H[a.action]?.risk==="risky"?"risky":"safe"),t=(a,b)=>`${a.replace(/\/+$/,"")}/auto-actions${b?`?proposal=${encodeURIComponent(b)}`:""}`;function u(a,b,c,d=!1,e="en"){let g=a=>(0,h.t)(o,e,a),i=(0,k.R)(a.proposedBy,b,60)||g("proposer"),j=(0,k.R)(a.title,b,120),l=(0,k.R)(a.reason,b,200)||"-";return[`πŸ§‘β€βœˆοΈ ${(0,f.H)(i)} ${g("proposes")}: ${(0,f.H)(r(a,e))} β€” ${(0,f.H)(j)}`,`${g("why")}: ${(0,f.H)(l)}`,`${g("risk")}: ${s(a,e)}`,...d?[q(e)]:[],`${g("open")}: ${(0,f.H)(t(c,a.id))}`].join("\n")}let v=new Set(["recheck","domain_recheck"]),w=3e3,x={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 y(a,b,c,d="en"){let e=a=>(0,h.t)(x,d,a);if(Array.isArray(b))return`πŸ“ ${b.length} ${e("newN")} β€” ${e("waiting")}`;let f=((0,k.g)(b.title,c,120)||r(b,d)).replace(/[*_`~|\[\]<>]/g,"");if("proposed"===a)return`${e("proposed")}: ${f} β€” ${e("waiting")}`;if("approved"===a||"rejected"===a)return`${e(a)}: ${f}`;let g=b.result?(0,k.g)(b.result,c,200).replace(/[*_`~|\[\]<>]/g,""):"";return`${e(a)}: ${f}${g?` β€” ${g}`:""}`}async function z(a,c,d){try{let e,f=await c.discord();if(!f)return;let g=await c.book().catch(()=>j.a),h=await c.discordLang().catch(()=>"en"),i=a(g,h);if(!i.length)return;try{e=await c.sendDiscord(f.url,i.join("\n"))}catch{e={ok:!1,kind:"transient",error:"Discord didn't answer."}}await c.recordDiscord(e,d).catch(()=>console.warn(`${b.X.logTag}/discord: recording the result failed`))}catch{console.warn(`${b.X.logTag}/discord: sending the action history failed`)}}async function A(a,b,c={},d={}){let e={...n,...c};await C(()=>z((c,d)=>[y(a,b,c,d)],e,d.now??new Date),d.timeoutMs??w)}async function B(a,c,d){let e=await c.target();if(!e)return;let f=await c.book().catch(()=>j.a),g=await c.lang().catch(()=>"en");for(let h of(await a(f,g))){let a;try{a="string"==typeof h?await c.send(e.token,e.chatId,h):await c.send(e.token,e.chatId,h.text,h.keyboard,h.replyTo??void 0)}catch{a={ok:!1,kind:"transient",error:"Telegram didn't answer."}}await c.record(a,d).catch(()=>console.warn(`${b.X.logTag}/telegram: recording the result failed`))}}async function C(a,c){try{var d;let b;await (d=a(),Promise.race([d,new Promise((a,d)=>{b=setTimeout(()=>d(Object.assign(Error("timeout"),{name:"TimeoutError"})),c)})]).finally(()=>clearTimeout(b)))}catch(a){console.warn(`${b.X.logTag}/telegram: sending the proposal notice failed:`,a instanceof Error?a.name:"error")}}let D=async(a,b)=>b&&a.thread?a.thread(b).catch(()=>null):null;async function E(a,b={},c={}){if(!a.length)return;let d={...n,...b};await C(async()=>{let b=await d.autoRun().catch(()=>null),e=a.filter(a=>{var c;return c=b??{},"pending"===a.status&&!a.auto&&(m.H[a.action]?.risk!=="safe"||"risky"===a.risk||!c[a.action])});if(!e.length)return;let g=e.length>3||!d.buttons?null:await d.buttons().catch(()=>null),i=c.now??new Date;await Promise.all([B(async(a,b)=>e.length>3?[function(a,b,c,d=new Set,e="en"){let g=a=>(0,h.t)(o,e,a),i=a.slice(0,10).map(a=>{let h=(0,k.R)(a.proposedBy,b,60)||g("proposer");return`β€’ ${(0,f.H)(h)}: ${(0,f.H)(r(a,e))} β€” ${(0,f.H)((0,k.R)(a.title,b,120))} (${s(a,e)})${d.has(a.id)?` \xb7 ${q(e)}`:""}
4
+ `:"")+(0,h.y)(Z,ae,!!z,v),ak=await (0,J.y)(r.token,s.fullName,_,G,ai,aj,D,{draft:!!V}),al=!!V;if(V&&!ak.ok&&422===ak.status&&(ak=await (0,J.y)(r.token,s.fullName,_,G,ai,aj,D),al=!1),!ak.ok)return af(ak);let am=V?al?` Opened as a draft: ${V}`:` Opened as a normal pull request (this repository can't have drafts), with the warning on top: ${V}`:"",an=Z.map(a=>`${a.package} ${a.from} β†’ ${a.to}`).join(", "),ao=await (0,J.M)(r.token,s.fullName,_,D).catch(()=>null),ap=!1;if(ao?.ok&&ao.data){await (0,d.f)().insert(e.dependencyPrs).values({repoId:l,appId:f,proposalId:A??null,number:ak.data.number,branch:_,baseBranch:G,headSha:ao.data,title:ai.slice(0,200),packages:Z.map(a=>a.package),auto:!!z,stage:"checks",stageText:m(ak.data.number,"checks")}).onConflictDoNothing().catch(()=>console.warn("deps: recording the PR failed"));let{extensions:b}=await a.A(414785),c=await b.runner?.queueLockfileJob({repoId:l,branch:_,headSha:ao.data,prNumber:ak.data.number,lockfilePath:ad,targets:Z.map(a=>({name:a.package,version:a.fixed}))}).catch(()=>(console.warn("deps: queueing the lockfile job failed"),null)),g=await (0,M.U)(r.token,{repo:s.fullName,branch:_,lockfilePath:ad,prNumber:ak.data.number});ap=c?.queued===!0||g.sent}return n({done:!0,message:`Pull request #${ak.data.number} opened for ${s.app}: ${an}.${ap?"":` Run npm install${v?` in ${v}`:""} on the branch before merging.`}${am}`,audit:{message:`Package update PR opened \xb7 ${s.app} \xb7 #${ak.data.number}`,resourceId:f,detail:an}},c,r.id)}async function V(a,b,c){if(!(0,H.f)(a)||c&&!(0,H.f)(c.appId))return{ok:!1,why:"target"};let d=await P();if(!d||"unreadable"===d)return{ok:!1,why:"no write token"};let e=c?await R(c.appId):await S(a);if(!e)return{ok:!1,why:"nothing"};let f=(0,g.a)(e.upgrades,e.installed,b);return f.ok?{ok:!0}:{ok:!1,why:f.why}}async function W(a,c){let f=a.filter(a=>(0,H.f)(a.appId)&&(0,H.f)(a.repoId)),g=new Map;if(!f.length)return g;let h=await (0,d.f)().select({appId:e.appRepos.appId,repoId:e.appRepos.repoId,meta:e.resources.meta,defaultBranch:e.githubRepos.defaultBranch}).from(e.appRepos).innerJoin(e.resources,(0,b.u)(e.resources.id,e.appRepos.appId)).innerJoin(e.githubRepos,(0,b.u)(e.githubRepos.id,e.appRepos.repoId)).where((0,b.y)(e.appRepos.appId,[...new Set(f.map(a=>a.appId))])).limit(4*f.length);for(let a of f){let b=h.find(b=>b.appId===a.appId&&b.repoId===a.repoId),d=b?.meta??{},e=b?(0,I.B)(d.productionSource,(0,I.q)(d,b.defaultBranch??null),c):null;e&&g.set(a.appId,e)}return g}async function X(a,c=[]){let f=a.filter(H.f),g=new Map;if(!f.length)return g;let h=await (0,d.f)().select({appId:e.appRepos.appId,repoId:e.appRepos.repoId,version:e.appSecurity.version,status:e.appSecurity.status,findings:e.appSecurity.findings}).from(e.appRepos).innerJoin(e.githubRepos,(0,b.u)(e.githubRepos.id,e.appRepos.repoId)).innerJoin(e.appSecurity,(0,b.u)(e.appSecurity.resourceId,e.appRepos.appId)).where((0,b.b)((0,b.y)(e.appRepos.appId,f),(0,b.M)(e.githubRepos.goneAt),(0,b.u)(e.appSecurity.status,"vulnerable"))).limit(f.length),j=new Set(c),k=h.filter(a=>j.has(a.appId)),l=k.length?new Set((await (0,d.f)().selectDistinct({repoId:e.dependencyVulns.repoId}).from(e.dependencyVulns).where((0,b.b)((0,b.y)(e.dependencyVulns.repoId,[...new Set(k.map(a=>a.repoId))]),(0,b.M)(e.dependencyVulns.resolvedAt),(0,b.u)(e.dependencyVulns.package,"next"),(0,b.u)(e.dependencyVulns.direct,!0),(0,b.E)(e.dependencyVulns.fixedVersion))).limit(k.length)).map(a=>a.repoId)):new Set;for(let a of h){if(j.has(a.appId)&&l.has(a.repoId))continue;let b=(0,i.p)({version:a.version,status:a.status,findings:Array.isArray(a.findings)?a.findings:[]});b&&g.set(a.appId,{repoId:a.repoId,from:b.from,to:b.to})}return g}a.s(["u",0,N,"J",0,V,"W",0,U,"h",0,X,"H",0,W,"G",0,P],736780)},915598,657582,a=>{var b=a.i(322145),c=a.i(75105),d=a.i(572134);function e(a,b,c){if("building"===a.state)return"building";if(null!==b&&a.id===b)return"current";if("error"===a.state)return"failed";if("preview"===a.target)return"ready"===a.state?"preview":"other";if("ready"!==a.state||null===b)return"other";let d=c.find(a=>a.id===b);if(!d)return"other";if(a.createdAt.getTime()>d.createdAt.getTime())return"staged";let e=c.filter(a=>"ready"===a.state&&a.id!==b&&a.createdAt.getTime()<d.createdAt.getTime()).sort((a,b)=>b.createdAt.getTime()-a.createdAt.getTime())[0];return e?.id===a.id?"previous":"other"}let f=a=>{let b;return{id:a.externalId,state:"ready"===(b=a.state)||"building"===b||"error"===b||"canceled"===b?b:"building",target:"production"===a.target?"production":"preview",createdAt:a.createdAt}};function g(a){let b=new Map;for(let c of(function(a){let b=new Map;for(let c of a)b.set(c.appId,[...b.get(c.appId)??[],c]);return b})(a).values()){let a=c.find(a=>a.isCurrent)?.externalId??null,d=c.filter(a=>"production"===a.target).map(f);for(let g of c)b.set(g.externalId,e(f(g),a,d))}return b}a.s(["g",0,function(a,b=!1){switch(a){case"building":return["Cancel"];case"current":return b?[]:["Redeploy"];case"previous":return["Roll back to this"];case"staged":return["Promote"];case"preview":return b?[]:["Promote to production"];default:return[]}},"h",0,function(a){let b=g(a),c=[...a].sort((a,b)=>b.createdAt.getTime()-a.createdAt.getTime()),d=a=>c.find(c=>b.get(c.externalId)===a)?.externalId??null;return{currentId:d("current"),previousId:d("previous"),stagedId:d("staged")}},"U",0,e,"S",0,g],657582);let h="This app or its Vercel credential isn't available any more. Reload the page.",i="Already live.",j=new Set(["QUEUED","INITIALIZING","BUILDING"]),k=a=>({done:!1,message:a}),l=(a,b)=>a?.sha?a.sha.slice(0,7):b;async function m(a,c,d){let e=await (0,b.q)(a.id,c,d);if(e)return e;let f=await (0,b.p)(d,"app"),g=f?.resource.meta.teamId;if(!f||"string"!=typeof g||!g||!f.resource.externalId)return h;let i=f.resource.meta.teamSlug;return{member:a,t:f,appId:d,app:f.resource.name,teamId:g,teamSlug:"string"==typeof i?i:"",projectId:f.resource.externalId}}async function n(a){let[b,c]=await Promise.all([(0,d.c)(a.t.token,a.teamId,a.projectId),(0,d.r)(a.t.token,a.teamId,a.projectId)]);return b.ok?c.ok?{ok:!0,data:{name:b.data.name,currentId:b.data.currentId??c.data[0]?.id??null,production:c.data}}:c:b}async function o(a,d,e,f,g=b.W){return g(d.ok?{done:!0,message:e.message,audit:{message:e.audit,resourceId:a.appId}}:{done:!1,failed:"scope"===d.kind?{ok:!1,kind:"scope",status:d.status,error:(0,c.b)("vercel",{team:a.teamSlug})}:404===d.status?{ok:!1,kind:"missing",status:404,error:"Vercel can't find that deployment any more. Reload and try again."}:{ok:!1,kind:"auth"===d.kind?"auth":"format"===d.kind?"format":"transient",...d.status?{status:d.status}:{},error:d.error},audit:{message:f,resourceId:a.appId}},a.member,a.t.account.id)}async function p(a,f,g,h=b.W){{let b=await m(a,"redeploy",f);if("string"==typeof b)return h(k(b),a,"");let i=await n(b);if(!i.ok)return h(k(i.error),a,b.t.account.id);if(i.data.currentId!==g)return h(k(c.G),a,b.t.account.id);if(i.data.production.some(a=>"staged"===e(a,i.data.currentId,i.data.production)))return h(k("Rolled back: promote a deployment first. A redeploy would stay staged and not go live."),a,b.t.account.id);let j=await (0,d.N)(b.t.token,b.teamId,b.projectId);if(!j.ok)return h(k(j.error),a,b.t.account.id);if(j.data)return h(k(`A production build of ${b.app} is already running.`),a,b.t.account.id);let p=l(i.data.production.find(a=>a.id===g),g),q=await (0,d.L)(b.t.token,b.teamId,{projectId:b.projectId,name:i.data.name,deploymentId:g});return o(b,q,{message:`Redeploy requested. Vercel is building ${b.app} again.`,audit:`Redeploy requested \xb7 ${b.app} \xb7 ${p}`},`Redeploy failed \xb7 ${b.app} \xb7 ${p}`,h)}}async function q(a,c,f,g=b.W){{let b=await m(a,"rollback",c);if("string"==typeof b)return g(k(b),a,"");let h=await n(b);if(!h.ok)return g(k(h.error),a,b.t.account.id);if(h.data.currentId===f)return g(k(i),a,b.t.account.id);let j=h.data.production.find(a=>a.id===f);if(!j||"previous"!==e(j,h.data.currentId,h.data.production))return g(k("Hobby can only roll back to the previous production deployment."),a,b.t.account.id);let p=l(j,f),q=await (0,d.E)(b.t.token,b.teamId,b.projectId,f);return o(b,q,{message:`Rolled back ${b.app} to ${p}. New pushes don't go live until you promote one.`,audit:`Rolled back \xb7 ${b.app} β†’ ${p}`},`Roll back failed \xb7 ${b.app} β†’ ${p}`,g)}}a.s(["T",0,/^dpl_[A-Za-z0-9]{8,40}$/,"u",0,h,"G",0,"Vercel can't find that deployment any more. Reload and try again.","f",0,i,"l",0,"Only a ready preview of this app can be promoted to production.","v",0,"Only a ready production deployment newer than the live one can be promoted.","S",0,"Rolled back: promote a production deployment first. A promoted preview would stay staged and not go live.","o",0,j,"X",0,n,"p",0,m,"B",0,p,"C",0,l,"O",0,k,"U",0,q,"J",0,o],915598)},313235,a=>{var b=a.i(927262),c=a.i(462820);let d={workloads:"Workloads",databases:"Databases",network:"Network",observe:"Observe",ai:"AI & API",admin:"Administration"},e={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"},f=new Set(["MonitorDown","HighLatency","DeploymentFailed","VulnerableDependency","FrameworkVulnerable","MonitorDomainMoved","CiFailing"]);a.s(["H",0,d,"p",0,function(a){if((0,b.h)(a.ruleKey))return f.has(a.ruleKey)&&null!==a.resourceKind&&"app"!==a.resourceKind?"observe":e[a.ruleKey];let c=new Set(a.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)),d=(...a)=>a.some(a=>c.has(a));return d("ai","router","gateway","model","models","provider","quota","llm","gemini")?"ai":d("key","keys","member","members","security","audit","credential","credentials","mfa","token")?"admin":d("database","db","storage","compute","neon","supabase","firestore","firebase")?"databases":d("domain","domains","dns","cert","certificate","tls","zone")?"network":"app"===a.resourceKind?"workloads":"observe"},"y",0,a=>c.X.proposedBy(d[a])])},247881,649031,a=>{var b=a.i(488345),c=a.i(342634),d=a.i(313235),e=a.i(188282),f=a.i(416454);let g=["LogErrorSpike","LogErrors","LogDbErrors"],h="timeout|ECONNREFUSED|too many connections|terminating connection|connection terminated|endpoint is disabled|compute.*suspend";RegExp(h,"i");let i=/^dpl_[A-Za-z0-9]{8,40}$/,j=/^ep-[a-z0-9-]{3,60}$/,k=/^[a-z0-9]{8,40}$/;function l(a,d,e){let f=d?(0,b.g)(d,e,120):"";return(0,c.l)((0,b.g)(f?`${a}. Most common: ${f}`:a,e,c.j)||a,c.j)}let m=a=>`${a.ruleKey}:${a.resourceId??""}:${a.action}`,n=new Set(["pending","approved","running"]);a.s(["s",0,864e5,"b",0,72e5,"V",0,3,"N",0,h,"G",0,20,"T",0,g,"v",0,72e5,"H",0,18e5,"w",0,10,"I",0,72e5,"x",0,function(a,b,c){let d=new Set(b.filter(a=>n.has(a.status)||null!==a.closedAt&&c.getTime()-a.closedAt.getTime()<72e5).map(m)),e=new Set;return a.filter(a=>{let b=m(a);return!(d.has(b)||e.has(b))&&(e.add(b),!0)})},"t",0,function(a,b,g){return(function(a,b,d){let e=[],g=d.getTime(),h=null!==a.liveAt&&g-a.liveAt.getTime()<72e5&&a.liveAt.getTime()<=g,m=a.previousNext?.status??"unknown";if(h&&a.errorsSinceLive>=Math.max(10,Math.ceil(5*a.baselineErrors/24))&&a.currentId&&a.previousId&&i.test(a.previousId)&&a.previousId!==a.currentId&&"vulnerable"!==m){let d=l(`${a.errorsSinceLive} errors since the deploy went live ${Math.max(1,Math.round((g-a.liveAt.getTime())/6e4))} min ago (${a.baselineErrors} in the 24 h before)`,a.topSinceLive,b);e.push({ruleKey:"LogErrorSpike",room:"workloads",action:"vercel_rollback",resourceKind:"app",resourceId:a.appId,targetRef:a.previousId,reason:"ok"===m?d:(0,c.l)(`${f.B} ${d}`)})}let n=null!==a.lastDeployAt&&g-a.lastDeployAt.getTime()<72e5;if(a.errors30>=20&&!n&&a.httpMonitorId&&e.push({ruleKey:"LogErrors",room:"workloads",action:"recheck",resourceKind:"app",resourceId:a.appId,targetRef:a.httpMonitorId,reason:l(`${a.errors30} errors in the last 30 min`,a.top30,b)}),a.dbErrors30>=3&&a.db){let c=l(`${a.dbErrors30} database connection errors in the last 30 min`,a.topDb,b),d=a.db;("neon_project"===d.kind||"neon_branch"===d.kind)&&d.wakeEndpoint&&j.test(d.wakeEndpoint)?e.push({ruleKey:"LogDbErrors",room:"databases",action:"neon_wake",resourceKind:d.kind,resourceId:d.resourceId,targetRef:d.wakeEndpoint,reason:c}):"supabase_project"===d.kind&&d.supabasePaused&&d.supabaseRef&&k.test(d.supabaseRef)&&e.push({ruleKey:"LogDbErrors",room:"databases",action:"supabase_restore",resourceKind:d.kind,resourceId:d.resourceId,targetRef:d.supabaseRef,reason:c})}return e})(a,b,g).map(f=>{let h="app"===f.resourceKind?(0,c.J)("app",a.appId,a.appName,b):(0,c.J)(f.resourceKind,f.resourceId,null,b);return{alertId:null,ruleKey:f.ruleKey,room:f.room,action:f.action,risk:e.H[f.action].risk,title:(0,c.M)(f.action,h),reason:f.reason,resourceKind:f.resourceKind,resourceId:f.resourceId,resourceName:h,targetRef:f.targetRef,proposedBy:(0,d.y)(f.room),expiresAt:new Date(g.getTime()+e.V)}})},"D",0,function(a,b){let c=a.getTime();return(null===b||!(c-b<27e4))&&(Math.floor(c/6e4)%5==0||null!==b&&c-b>=6e5)},"W",0,function(a,b){let c=new Set(b.map(m));return a.filter(a=>{let b;return"pending"===a.status&&(b=a.ruleKey,g.includes(b))&&!c.has(m(a))}).map(a=>a.id)}],247881);let o=new Set(["MonitorDown","LogErrorSpike"]);a.s(["r",0,72e5,"M",0,o,"s",0,function(a,b){let c=a=>({ok:!1,why:a});if(!a.setting.enabled)return c("off");if(!a.ruleKey||!o.has(a.ruleKey))return c("rule");let d=a.deploy;if(!d||!d.liveAt)return c("no live deploy");let e=b.getTime()-d.liveAt.getTime();return e<0||e>6e4*a.setting.windowMin?c("outside the window"):d.previousId&&a.targetRef===d.previousId&&d.previousId!==d.currentId?d.newestProdCreatedAt&&d.currentCreatedAt.getTime()<d.newestProdCreatedAt.getTime()?c("live deploy is a rollback"):a.rolledOrPromotedLately?c("live deploy came from a rollback or promote"):"ready"!==(d.previousState??"").toLowerCase()?c("previous not ready"):!d.previousCreatedAt||b.getTime()-d.previousCreatedAt.getTime()>2592e6?c("previous too old"):"vulnerable"===a.previousNext?c("previous Next.js has advisories"):"ok"!==a.previousNext?c("previous Next.js unknown"):a.autoLately?c("auto-rollback within 2 h"):a.sameDeployBefore?c("already rolled back once"):a.inFlight?c("another auto-rollback is running"):{ok:!0}:c("target changed")},"u",0,(a,b,d)=>(0,c.l)(`Automatic: the new deploy ${a} errored in the first ${b} minutes. ${d}`),"E",0,a=>a.currentSha&&/^[0-9a-f]{7,40}$/i.test(a.currentSha)?a.currentSha.slice(0,7):a.currentId.slice(0,16)],649031)},691100,a=>{let b;var c,d=a.i(93321),e=a.i(530385),f=a.i(351674),g=a.i(548734),h=a.i(462820),i=a.i(837137),j=a.i(247730),k=a.i(455317),l=a.i(930270),m=a.i(396667),n=a.i(160147),o=a.i(767163),p=a.i(757902),q=a.i(436357),r=a.i(893893),s=a.i(556987),t=a.i(142754),u=a.i(342634),v=a.i(247881),w=a.i(649031),x=a.i(381544),y=a.i(138984),z=a.i(492665),A=a.i(221084),B=a.i(736780),C=a.i(560954),D=a.i(895176),E=a.i(305731),F=a.i(30184),G=a.i(721170),H=a.i(322145),I=a.i(248358),J=a.i(915598),K=a.i(312573),L=a.i(323878),M=a.i(19809),N=a.i(371289),O=a.i(94473),P=a.i(188282);let Q={checkMonitorNow:D.X,keepAliveNow:C.v,wakeAs:G.v,supabaseAct:I.Q,redeployAs:J.B,rollbackAs:J.U,finish:H.W,recordAction:A.f,limit:L.C,bumpPrAs:B.W,autoSecurity:()=>(0,O.X)(),recheckDomain:F._,moveMonitorToDomain:E.f};async function R(){let[a]=await (0,g.f)().select({at:i.collectorRuns.startedAt}).from(i.collectorRuns).where(f.B`(${i.collectorRuns.trigger} = 'vercel_cron' or (${i.collectorRuns.trigger} = 'manual' and ${i.collectorRuns.tasks} ? 'rollups'))`).orderBy((0,e.A)(i.collectorRuns.startedAt)).limit(1);return a?.at??null}async function S(a){let b=await (a.lastDailyRunAt??R)(),c=(a.now??(()=>new Date))();if(b&&c.getTime()-b.getTime()<216e5)return{ok:!1,error:"The daily job ran less than 6 hours ago."};let d=(a.dailyTarget??function(){let a=(0,y.f)();return a?{url:`${(0,z.f)().SITE_URL.replace(/\/+$/,"")}/api/daily`,secret:a.CRON_SECRET}:null})();if(!d)return{ok:!1,error:"The scheduler settings are missing, so the daily job can't be started."};try{let b=await (a.fetch??fetch)(d.url,{headers:{Authorization:`Bearer ${d.secret}`},signal:AbortSignal.timeout(4e4),redirect:"manual"});if(!b.ok||b.status>=300)return{ok:!1,error:`The daily job route answered ${b.status}.`};return{ok:!0,message:`Daily job ran again (${b.status}).`}}catch(a){if(a instanceof Error&&("TimeoutError"===a.name||"AbortError"===a.name))return{ok:!0,message:"Daily job started; it's still running β€” the heartbeat turns Up when it finishes."};throw a}}let T="The proposal's target is missing, so it can't run.";async function U(a,b,c=Q){let d="auto"===b,e=d?{id:u.e,userId:null}:{id:b.id,userId:b.userId},f=(a,b,e)=>c.finish(a,b,e,{refresh:!1,...d?{auditPrefix:u.v}:{}});try{if(!a.resourceId||!a.targetRef)return{ok:!1,error:T};if((0,N.W)()&&"recheck"!==a.action)return await c.recordAction({kind:"ok",message:`${d?u.v:""}${P.H[a.action].label} (simulated)`,detail:"Simulated in the demo",resourceId:a.resourceId,actorUserId:e.userId}).catch(()=>console.warn("audit event failed")),{ok:!0,message:M.r};switch(a.action){case"recheck":{let b=await c.limit(K.t.check,e.id);if(!b.allowed)return{ok:!1,error:`Too many checks. Try again in ${(0,K.H)(b.retryAfter)}.`};let f=await c.checkMonitorNow(a.targetRef);if(!f.ok)return{ok:!1,error:f.error};if(f.audit)try{await c.recordAction({kind:!1===f.passed?"err":"ok",...f.audit,message:`${d?u.v:""}${f.audit.message}`,actorUserId:e.userId})}catch{console.warn("audit event failed")}return{ok:!0,message:f.message}}case"domain_recheck":{let b=await c.limit(K.t.domainCheck,e.id);if(!b.allowed)return{ok:!1,error:`Too many checks. Try again in ${(0,K.H)(b.retryAfter)}.`};let f=await (c.recheckDomain??F._)(a.targetRef);if(!f.ok)return f;return await c.recordAction({kind:"ok",...f.audit,message:`${d?u.v:""}${f.audit.message}`,actorUserId:e.userId}).catch(()=>console.warn("audit event failed")),{ok:!0,message:f.message}}case"monitor_update_url":{let b=await c.limit(K.t.monitorWrite,e.id);if(!b.allowed)return{ok:!1,error:`Too many changes. Try again in ${(0,K.H)(b.retryAfter)}.`};let f=await (c.moveMonitorToDomain??E.f)(a.targetRef);if(!f.ok)return f;return f.audit&&await c.recordAction({kind:"ok",...f.audit,message:`${d?u.v:""}${f.audit.message}`,actorUserId:e.userId}).catch(()=>console.warn("audit event failed")),{ok:!0,message:f.message}}case"daily_rerun":return await S(c);case"neon_wake":return await c.wakeAs(e,a.resourceId,a.targetRef,f);case"supabase_keepalive":return await c.keepAliveNow(e,a.resourceId,f);case"supabase_restore":return await c.supabaseAct("restore",e,a.resourceId,a.targetRef,f);case"vercel_redeploy":return await c.redeployAs(e,a.resourceId,a.targetRef,f);case"vercel_rollback":return await c.rollbackAs(e,a.resourceId,a.targetRef,f);case"github_bump_pr":{let b=d?await (c.autoSecurity??O.X)():null;if(d&&!b?.enabled)return{ok:!1,error:"Automatic security fixes is off."};return await (c.bumpPrAs??B.W)(e,a.resourceId,a.targetRef,f,{proposalId:a.proposalId??null,...b?{auto:{severities:b.severities}}:{},..."FrameworkVulnerable"===a.ruleKey?{framework:!0}:{}})}default:return{ok:!1,error:T}}}catch(a){return console.warn(`${h.X.logTag}/proposals run failed:`,a instanceof Error?a.name:"error"),{ok:!1,error:"Something went wrong while running it. Check the console page before trying again."}}}var V=a.i(416454);let W={id:t.O.id,room:t.O.room,action:t.O.action,risk:t.O.risk,title:t.O.title,reason:t.O.reason,resourceName:t.O.resourceName,proposedBy:t.O.proposedBy,status:t.O.status,auto:t.O.auto,result:t.O.result,createdAt:t.O.createdAt,decidedAt:t.O.decidedAt,expiresAt:t.O.expiresAt},X={...W,resourceId:t.O.resourceId,targetRef:t.O.targetRef,ruleKey:t.O.ruleKey,alertId:t.O.alertId};async function Y(a,b,c){let e=(0,u.z)(a,b),h=new Set(e.deployApps),j=a.filter(a=>("MonitorDown"===a.ruleKey||"HighLatency"===a.ruleKey)&&a.resourceId&&h.has(a.resourceId)&&a.startedAt),[k,m,n,o,p,r,s,t,v]=await Promise.all([e.monitorIds.length?(0,g.f)().select({id:i.monitors.id,kind:i.monitors.kind,url:i.monitors.url,lastError:i.monitors.lastError,appId:i.monitors.resourceId,appName:i.resources.name,appMeta:i.resources.meta}).from(i.monitors).innerJoin(i.resources,(0,d.u)(i.resources.id,i.monitors.resourceId)).where((0,d.y)(i.monitors.id,e.monitorIds)):[],e.deployApps.length?(0,g.f)().select({app:i.deployments.resourceId,id:i.deployments.externalId,isCurrent:i.deployments.isCurrent,isPrevious:i.deployments.isPreviousProduction,readyAt:i.deployments.readyAt,createdAt:i.deployments.createdAtProvider}).from(i.deployments).where((0,d.b)((0,d.y)(i.deployments.resourceId,e.deployApps),(0,d.F)((0,d.u)(i.deployments.isCurrent,!0),(0,d.u)(i.deployments.isPreviousProduction,!0)))):[],e.supabaseIds.length?(0,g.f)().select({id:i.resources.id,ref:i.resources.externalId}).from(i.resources).where((0,d.b)((0,d.y)(i.resources.id,e.supabaseIds),(0,d.u)(i.resources.kind,"supabase_project"),f.B`${i.resources.goneAt} is null`)):[],e.monitorApps.length?ac(e.monitorApps):new Map,e.depApps.length?aa(a,e.depApps).catch(()=>new Set).then(a=>(0,l.C)(e.depApps,a)).catch(()=>new Map):new Map,e.monitorIds.length?ab(e.monitorIds):null,e.frameworkApps.length?(0,B.h)(e.frameworkApps,e.depApps).catch(()=>new Map):new Map,j.length?Z(j.map(a=>a.subject),b).catch(()=>[]):[],$(e.deployApps)]),w=k.some(a=>null!==(0,q.Y)(a.appMeta)),x=w?await (0,g.f)().select({id:i.resources.id,name:i.resources.name,meta:i.resources.meta}).from(i.resources).where((0,d.b)((0,d.u)(i.resources.kind,"app"),(0,d.u)(i.resources.monitored,!0),(0,d.M)(i.resources.goneAt))).limit(500):[],y=w?(0,q.P)(k,x):new Map,z=[...[...p].map(([a,b])=>({appId:a,repoId:b})),...[...s].map(([a,b])=>({appId:a,repoId:b.repoId}))],A=z.length?await Promise.resolve().then(()=>(0,B.H)(z,b)).catch(()=>new Map):new Map,C=new Map,D=new Map;for(let a of m){let b=C.get(a.app)??{currentId:null,previousId:null,liveAt:null};a.isCurrent?(b.currentId=a.id,b.liveAt=a.readyAt??a.createdAt??null):a.isPrevious&&(b.previousId=a.id,D.set(a.app,a.readyAt??a.createdAt??null)),C.set(a.app,b)}let E=new Map;for(let[a,b]of C)b.previousId&&E.set(a,_(v,a,b.liveAt,D.get(a)??null));let F=new Map(j.map(a=>[a.id,(0,V.g)(a.startedAt,t.filter(b=>b.ruleKey===a.ruleKey&&b.subject===a.subject),{ruleKey:a.ruleKey,liveAt:C.get(a.resourceId)?.liveAt??null})]));return{monitorKinds:new Map(k.map(a=>[a.id,String(a.kind)])),deploys:C,...void 0!==c?{rollbackWindowMs:c}:{},supabaseRefs:new Map(n.map(a=>[a.id,a.ref])),neonSuspended:o,fixableRepos:p,dailyHeartbeatId:r,frameworkFixes:s,monitorMoves:y,problemSince:F,previousNext:E,...A.size?{productionMismatch:A}:{}}}async function Z(a,b){return(0,g.f)().select({ruleKey:i.alerts.ruleKey,subject:i.alerts.subject,startedAt:i.alerts.startedAt,resolvedAt:i.alerts.resolvedAt}).from(i.alerts).where((0,d.b)((0,d.y)(i.alerts.ruleKey,["MonitorDown","HighLatency"]),(0,d.y)(i.alerts.subject,[...new Set(a)]),(0,d.E)(i.alerts.resolvedAt),(0,d.B)(i.alerts.resolvedAt,new Date(b.getTime()-V.A)))).orderBy((0,e.A)(i.alerts.startedAt)).limit(500)}async function $(a){let b={checks:new Map,events:new Map,frameworks:new Map};if(!a.length)return b;try{let[c,f,h]=await Promise.all([(0,g.f)().select({app:i.appSecurity.resourceId,version:i.appSecurity.version,status:i.appSecurity.status,findings:i.appSecurity.findings,checkedAt:i.appSecurity.checkedAt,reason:i.appSecurity.reason}).from(i.appSecurity).where((0,d.y)(i.appSecurity.resourceId,a)).limit(a.length),(0,g.f)().select({app:i.events.resourceId,at:i.events.at,reason:i.events.reason,message:i.events.message}).from(i.events).where((0,d.b)((0,d.y)(i.events.reason,[...V.Y]),(0,d.y)(i.events.resourceId,a))).orderBy((0,e.A)(i.events.at)).limit(Math.min(500,50*a.length)),(0,g.f)().select({app:i.resources.id,meta:i.resources.meta}).from(i.resources).where((0,d.y)(i.resources.id,a)).limit(a.length)]);for(let a of c)b.checks.set(a.app,{version:a.version,status:a.status,findings:Array.isArray(a.findings)?a.findings:[],checkedAt:a.checkedAt,reason:a.reason});for(let a of f)a.app&&b.events.set(a.app,[...b.events.get(a.app)??[],{at:a.at,reason:a.reason,message:a.message}]);for(let a of h){let c=a.meta&&"object"==typeof a.meta?a.meta.framework:null;b.frameworks.set(a.app,"string"==typeof c?c:null)}}catch{return{checks:new Map,events:new Map,frameworks:new Map}}return b}let _=(a,b,c,d)=>(0,V.Q)({currentLiveAt:c,previousLiveAt:d,check:a.checks.get(b)??null,events:a.events.get(b)??[],framework:a.frameworks.get(b)??null});async function aa(a,b){let c=new Set(b),e=a.filter(a=>"FrameworkVulnerable"===a.ruleKey&&"app"===a.resourceKind&&a.resourceId&&c.has(a.resourceId)).map(a=>a.id);return e.length?new Set((await (0,g.f)().selectDistinct({resourceId:t.O.resourceId}).from(t.O).where((0,d.b)((0,d.u)(t.O.ruleKey,"FrameworkVulnerable"),(0,d.u)(t.O.action,"github_bump_pr"),(0,d.y)(t.O.status,["pending","approved","running","done"]),(0,d.y)(t.O.alertId,e),(0,d.y)(t.O.resourceId,[...c]))).limit(e.length)).flatMap(a=>a.resourceId?[a.resourceId]:[])):new Set}async function ab(a){let b=(0,o.i)(process.env.DAILY_HEARTBEAT_TOKEN);if(!b)return null;let[c]=await (0,g.f)().select({id:i.monitors.id}).from(i.monitors).where((0,d.b)((0,d.y)(i.monitors.id,a),(0,d.u)(i.monitors.kind,"heartbeat"),(0,d.u)(i.monitors.tokenHash,(0,p.C)(b)))).limit(1).catch(()=>[]);return c?.id??null}async function ac(a){let b=await (0,g.f)().select({app:i.links.fromResourceId,id:i.resources.id,kind:i.resources.kind,externalId:i.resources.externalId,parentId:i.resources.parentId}).from(i.links).innerJoin(i.resources,(0,d.u)(i.resources.id,i.links.toResourceId)).where((0,d.b)((0,d.y)(i.links.fromResourceId,a),(0,d.u)(i.links.kind,"uses_db"),(0,d.y)(i.resources.kind,["neon_project","neon_branch"]),f.B`${i.resources.goneAt} is null`)),c=new Map;if(!b.length)return c;let e=a=>"neon_branch"===a.kind?a.parentId:a.id,h=[...new Set(b.map(e).filter(a=>!!a))];if(!h.length)return c;let j=new Map((await (0,g.f)().select({id:i.snapshots.resourceId,data:i.snapshots.data}).from(i.snapshots).where((0,d.y)(i.snapshots.resourceId,h))).map(a=>[a.id,(0,r.k)(r.s,a.data)]));for(let a of b){let b=e(a),d=b?j.get(b):void 0,f=d?(0,u.Z)(d.endpoints,d.branches,"neon_branch"===a.kind?a.externalId:null):null;f&&c.set(a.app,{resourceId:a.id,resourceKind:a.kind,endpointId:f})}return c}async function ad(a){if(!a.length)return[];let b=new Set((await (0,g.f)().select({alertId:t.O.alertId,action:t.O.action}).from(t.O).where((0,d.y)(t.O.alertId,[...new Set(a.map(a=>a.alertId))]))).map(a=>`${a.alertId}:${a.action}`)),c=a.filter(a=>!b.has(`${a.alertId}:${a.action}`));return c.length?(0,g.f)().insert(t.O).values(c.map(a=>({...a,status:"pending"}))).onConflictDoNothing().returning(X):[]}async function ae(a,b){return(await (0,g.f)().select(W).from(t.O).where(f.B`${t.O.createdAt} >= ${new Date(a.getTime()-6048e5).toISOString()}::timestamptz`).orderBy(f.B`case when ${t.O.status} = 'pending' then 0 else 1 end`,(0,e.A)(t.O.createdAt),(0,e.A)(t.O.id)).limit(b)).map(u.E)}async function af(a){let[b]=await (0,g.f)().select(W).from(t.O).where((0,d.u)(t.O.id,a)).limit(1);return b?(0,u.E)(b):null}async function ag(a,b,c,e){let[h]=await (0,g.f)().update(t.O).set({status:"approve"===b?"approved":"rejected",decidedBy:c,decidedAt:e}).where((0,d.b)((0,d.u)(t.O.id,a),(0,d.u)(t.O.status,"pending"),f.B`${t.O.expiresAt} > ${e.toISOString()}::timestamptz`)).returning(X);if(h)return{status:"ok",proposal:(0,u.E)(h),row:h};let[i]=await (0,g.f)().select(W).from(t.O).where((0,d.u)(t.O.id,a)).limit(1);return i?{status:"conflict",proposal:(0,u.E)(i)}:{status:"missing"}}async function ah(a,b){let[c]=await (0,g.f)().update(t.O).set({status:"running",claimedAt:b}).where((0,d.b)((0,d.u)(t.O.id,a),(0,d.u)(t.O.status,"approved"))).returning(X);return c??null}async function ai(a,b,c,e){let[f]=await (0,g.f)().update(t.O).set({status:b?"done":"failed",result:c,finishedAt:e}).where((0,d.b)((0,d.u)(t.O.id,a),(0,d.u)(t.O.status,"running"))).returning(X);return f??null}let aj={run:(a,b)=>U(a,b),book:()=>(0,j.f)()};async function ak(a,b,c,d=aj){let e=await ah(a,c);if(!e)return null;let f=await d.run({action:e.action,resourceId:e.resourceId,targetRef:e.targetRef,proposalId:e.id,ruleKey:e.ruleKey??null},b),g=await d.book().catch(()=>s.a),h=await ai(a,f.ok,(0,u.x)(f,g),new Date);return h?(0,u.E)(h):null}async function al(a,b){let c=await (0,g.f)().update(t.O).set({status:"expired",result:"Expired: nobody decided in time, or the alert stopped firing."}).where((0,d.b)((0,d.u)(t.O.status,"pending"),(0,d.F)((0,d.S)(t.O.expiresAt,new Date(b.getTime()+1)),(0,d.b)((0,d.E)(t.O.alertId),a.length?(0,d.$)(t.O.alertId,a):f.B`true`)))).returning({id:t.O.id});return await (0,g.f)().update(t.O).set({status:"failed",result:"The run was interrupted. Check the console page before trying again.",finishedAt:b}).where((0,d.b)((0,d.u)(t.O.status,"running"),(0,d.S)(t.O.claimedAt,new Date(b.getTime()-u.L)))),c.length}async function am(a){await (0,g.f)().delete(t.O).where((0,d.b)((0,d.S)(t.O.createdAt,new Date(a.getTime()-2592e6)),(0,d.$)(t.O.status,["pending","approved","running"])))}let an=f.B`(${i.storedLogs.level} in ('error', 'fatal') or coalesce(${i.storedLogs.statusCode}, 0) >= 500)`,ao=f.B`coalesce(${i.deployments.readyAt}, ${i.deployments.createdAtProvider})`;async function ap(a){let b=await (0,g.f)().select({app:i.links.fromResourceId,id:i.resources.id,kind:i.resources.kind,externalId:i.resources.externalId,parentId:i.resources.parentId}).from(i.links).innerJoin(i.resources,(0,d.u)(i.resources.id,i.links.toResourceId)).where((0,d.b)((0,d.y)(i.links.fromResourceId,a),(0,d.u)(i.links.kind,"uses_db"),(0,d.y)(i.resources.kind,["neon_project","neon_branch","supabase_project"]),(0,d.M)(i.resources.goneAt))),c=new Map;if(!b.length)return c;let e=a=>"neon_branch"===a.kind?a.parentId:a.id,f=[...new Set(b.map(e).filter(a=>!!a))],h=new Map((f.length?await (0,g.f)().select({id:i.snapshots.resourceId,data:i.snapshots.data}).from(i.snapshots).where((0,d.y)(i.snapshots.resourceId,f)):[]).map(a=>[a.id,a.data]));for(let a of b){let b=h.get(e(a)??"");if("supabase_project"===a.kind){let d=(0,r.k)(r.B,b);c.set(a.app,{resourceId:a.id,kind:a.kind,wakeEndpoint:null,supabaseRef:a.externalId,supabasePaused:"INACTIVE"===d.status})}else{let d=(0,r.k)(r.s,b);c.set(a.app,{resourceId:a.id,kind:a.kind,wakeEndpoint:(0,u.Z)(d.endpoints,d.branches,"neon_branch"===a.kind?a.externalId:null),supabaseRef:null,supabasePaused:!1})}}return c}let aq={apps:async function(a){let b=new Date(a.getTime()-v.I-v.s),c=f.B`${i.storedLogs.at} >= ${new Date(a.getTime()-v.H).toISOString()}::timestamptz`,e=f.B`${i.storedLogs.message} ~* ${v.N}`,h=f.B`left(${i.storedLogs.message}, 200)`,j=(await (0,g.f)().select({appId:i.storedLogs.resourceId,appName:f.B`max(${i.resources.name})`,liveAt:f.B`max(${ao})`.mapWith(i.deployments.readyAt),currentId:f.B`max(${i.deployments.externalId})`,errorsSinceLive:f.B`count(*) filter (where ${an} and ${i.storedLogs.at} >= ${ao})`.mapWith(Number),baselineErrors:f.B`count(*) filter (where ${an} and ${i.storedLogs.at} >= ${ao} - interval '24 hours' and ${i.storedLogs.at} < ${ao})`.mapWith(Number),topSinceLive:f.B`mode() within group (order by ${h}) filter (where ${an} and ${i.storedLogs.at} >= ${ao})`,errors30:f.B`count(*) filter (where ${an} and ${c})`.mapWith(Number),top30:f.B`mode() within group (order by ${h}) filter (where ${an} and ${c})`,dbErrors30:f.B`count(*) filter (where ${c} and ${e})`.mapWith(Number),topDb:f.B`mode() within group (order by ${h}) filter (where ${c} and ${e})`}).from(i.storedLogs).innerJoin(i.resources,(0,d.u)(i.resources.id,i.storedLogs.resourceId)).leftJoin(i.deployments,(0,d.b)((0,d.u)(i.deployments.resourceId,i.storedLogs.resourceId),(0,d.u)(i.deployments.isCurrent,!0))).where((0,d.b)((0,d.B)(i.storedLogs.at,b),(0,d.u)(i.resources.kind,"app"),(0,d.M)(i.resources.goneAt))).groupBy(i.storedLogs.resourceId)).filter(a=>a.errorsSinceLive>=v.w||a.errors30>=v.G||a.dbErrors30>=v.V);if(!j.length)return[];let k=j.map(a=>a.appId),[l,m,n]=await Promise.all([(0,g.f)().select({app:i.deployments.resourceId,previousId:f.B`max(${i.deployments.externalId}) filter (where ${i.deployments.isPreviousProduction})`,previousLiveAt:f.B`max(${ao}) filter (where ${i.deployments.isPreviousProduction})`.mapWith(i.deployments.readyAt),lastDeployAt:f.B`max(${i.deployments.createdAtProvider}) filter (where ${i.deployments.target} = 'production')`.mapWith(i.deployments.createdAtProvider)}).from(i.deployments).where((0,d.b)((0,d.y)(i.deployments.resourceId,k),(0,d.F)((0,d.u)(i.deployments.isPreviousProduction,!0),(0,d.B)(i.deployments.createdAtProvider,new Date(a.getTime()-v.v))))).groupBy(i.deployments.resourceId),(0,g.f)().select({app:i.monitors.resourceId,id:i.monitors.id}).from(i.monitors).where((0,d.b)((0,d.y)(i.monitors.resourceId,k),(0,d.u)(i.monitors.kind,"http"),(0,d.u)(i.monitors.paused,!1),(0,d.u)(i.monitors.ownerPaused,!1))).orderBy(i.monitors.createdAt),ap(k)]),o=new Map(l.map(a=>[a.app,a])),p=new Map;for(let a of m)p.has(a.app)||p.set(a.app,a.id);let q=j.filter(a=>a.errorsSinceLive>=v.w&&a.liveAt&&o.get(a.appId)?.previousId).map(a=>a.appId),r=q.length?await $(q):null;return j.map(a=>({...a,appName:a.appName??"",previousId:o.get(a.appId)?.previousId??null,lastDeployAt:o.get(a.appId)?.lastDeployAt??null,httpMonitorId:p.get(a.appId)??null,db:n.get(a.appId)??null,...r&&q.includes(a.appId)?{previousNext:_(r,a.appId,a.liveAt,o.get(a.appId)?.previousLiveAt??null)}:{}}))},rows:async function(a){let b=f.B`coalesce(${t.O.finishedAt}, ${t.O.decidedAt}, ${t.O.expiresAt})`;return(0,g.f)().select({id:t.O.id,ruleKey:t.O.ruleKey,resourceId:t.O.resourceId,action:t.O.action,status:t.O.status,closedAt:b.mapWith(t.O.finishedAt)}).from(t.O).where((0,d.b)((0,d.M)(t.O.alertId),(0,d.y)(t.O.ruleKey,[...v.T]),(0,d.F)((0,d.y)(t.O.status,["pending","approved","running"]),f.B`${b} > ${new Date(a.getTime()-v.b).toISOString()}::timestamptz`)))}};async function ar(a,b,c=aq){let[e,f]=await Promise.all([c.apps(a),c.rows(a)]),h=e.flatMap(c=>(0,v.t)(c,b,a)),i=(0,v.W)(f,h),j=0;i.length&&(j=(await (0,g.f)().update(t.O).set({status:"expired",result:"Expired: the logs no longer show it.",finishedAt:a}).where((0,d.b)((0,d.y)(t.O.id,i),(0,d.u)(t.O.status,"pending"))).returning({id:t.O.id})).length);let k=(0,v.x)(h,f,a);return k.length?{created:await (0,g.f)().insert(t.O).values(k.map(a=>({...a,status:"pending"}))).onConflictDoNothing().returning(X),expired:j}:{created:[],expired:j}}let as=null;async function at(a,b){return(0,v.D)(a,as)?(as=a.getTime(),ar(a,await b())):{created:[],expired:0}}async function au(a,b){return(await (0,g.f)().update(t.O).set({status:"approved",auto:!0,decidedAt:b}).where((0,d.b)((0,d.u)(t.O.id,a),(0,d.u)(t.O.status,"pending"),(0,d.u)(t.O.risk,"safe"))).returning({id:t.O.id})).length>0}async function av(a,b){let c=new Date(b.getTime()-w.r),[e,h,j,k,l]=await Promise.all([(0,g.f)().select({app:i.deployments.resourceId,id:i.deployments.externalId,sha:i.deployments.commitSha,state:i.deployments.state,isCurrent:i.deployments.isCurrent,isPrevious:i.deployments.isPreviousProduction,readyAt:i.deployments.readyAt,createdAt:i.deployments.createdAtProvider}).from(i.deployments).where((0,d.b)((0,d.y)(i.deployments.resourceId,a),(0,d.F)((0,d.u)(i.deployments.isCurrent,!0),(0,d.u)(i.deployments.isPreviousProduction,!0)))),(0,g.f)().select({app:i.deployments.resourceId,at:f.B`max(${i.deployments.createdAtProvider})`.mapWith(i.deployments.createdAtProvider)}).from(i.deployments).where((0,d.b)((0,d.y)(i.deployments.resourceId,a),(0,d.u)(i.deployments.target,"production"),(0,d.u)(i.deployments.state,"ready"))).groupBy(i.deployments.resourceId),(0,g.f)().select({app:i.events.resourceId}).from(i.events).where((0,d.b)((0,d.u)(i.events.type,"action"),(0,d.y)(i.events.resourceId,a),(0,d.B)(i.events.at,c),f.B`${i.events.message} ~ ${aw}`)),(0,g.f)().select({app:t.O.resourceId,targetRef:t.O.targetRef,status:t.O.status,decidedAt:t.O.decidedAt}).from(t.O).where((0,d.b)((0,d.u)(t.O.action,"vercel_rollback"),(0,d.u)(t.O.auto,!0),(0,d.B)(t.O.createdAt,new Date(b.getTime()-26784e5)))),$(a)]),m=new Map;for(let b of a){let a=e.find(a=>a.app===b&&a.isCurrent),d=e.find(a=>a.app===b&&a.isPrevious&&!a.isCurrent),f=k.filter(a=>a.app===b);m.set(b,{deploy:a?{currentId:a.id,currentSha:a.sha,liveAt:a.readyAt??a.createdAt,currentCreatedAt:a.createdAt,newestProdCreatedAt:h.find(a=>a.app===b)?.at??null,previousId:d?.id??null,previousState:d?.state??null,previousCreatedAt:d?.createdAt??null}:null,rolledOrPromotedLately:j.some(a=>a.app===b),autoLately:f.some(a=>null!==a.decidedAt&&a.decidedAt.getTime()>=c.getTime()),sameDeployBefore:!!d&&f.some(a=>a.targetRef===d.id),previousNext:a&&d?_(l,b,a.readyAt??a.createdAt,d.readyAt??d.createdAt).status:"unknown"})}return{apps:m,inFlight:k.some(a=>"approved"===a.status||"running"===a.status)}}let aw="(Rolled back|Promoted|Preview promoted) Β·";async function ax(a,b,c){return(await (0,g.f)().update(t.O).set({status:"approved",auto:!0,decidedAt:c,reason:b}).where((0,d.b)((0,d.u)(t.O.id,a),(0,d.u)(t.O.status,"pending"),(0,d.u)(t.O.action,"vercel_rollback"),f.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:t.O.id})).length>0}async function ay(a,b,c,d){let e=a.filter(a=>"vercel_rollback"===a.action&&a.ruleKey&&w.M.has(a.ruleKey)&&a.resourceId);if(!e.length||!d.autoRollback||!d.rollbackContext||!d.approveAutoRollback)return[];let f=await d.autoRollback().catch(()=>null);if(!f?.enabled||15e3>c())return[];let g=[];try{let a=await d.rollbackContext([...new Set(e.map(a=>a.resourceId))],b),i=a.inFlight;for(let j of e){let e=a.apps.get(j.resourceId);if(!e||12e3>c())continue;let k=(0,w.s)({setting:f,ruleKey:j.ruleKey??null,targetRef:j.targetRef,inFlight:i,...e},b);if(!k.ok){console.log(`${h.X.logTag}/auto-rollback: skipped (${k.why})`);continue}let l=(0,w.E)(e.deploy);if(!await d.approveAutoRollback(j.id,(0,w.u)(l,f.windowMin,j.reason),new Date))continue;i=!0;let m=await d.execute(j.id,new Date);if(m){g.push(m),await (d.notifyRollback??x.q)(m,{reason:j.reason,newRef:l},{},{alertId:j.alertId??null}).catch(()=>void 0);break}}}catch(a){console.warn(`${h.X.logTag}/auto-rollback failed:`,a instanceof Error?a.name:"error")}return g}async function az(a,b){return(await (0,g.f)().update(t.O).set({status:"approved",auto:!0,decidedAt:b}).where((0,d.b)((0,d.u)(t.O.id,a),(0,d.u)(t.O.status,"pending"),(0,d.u)(t.O.action,"github_bump_pr"))).returning({id:t.O.id})).length>0}async function aA(a,b,c){let d=a.filter(a=>"github_bump_pr"===a.action&&a.targetRef);if(!d.length||!c.autoSecurity||!c.bumpReady||!c.approveAutoBump)return[];let e=await c.autoSecurity().catch(()=>null);if(!e?.enabled||!e.severities.length)return[];let f=[];for(let a of d){if(15e3>b())break;try{if(a.resourceId&&c.prodMismatch?await c.prodMismatch(a.resourceId,a.targetRef).catch(()=>"unknown"):null){console.log(`${h.X.logTag}/auto-security: waits for the owner (production source)`);continue}let b="FrameworkVulnerable"===a.ruleKey&&a.resourceId?await c.bumpReady(a.targetRef,e.severities,{appId:a.resourceId}):await c.bumpReady(a.targetRef,e.severities);if(!b.ok){console.log(`${h.X.logTag}/auto-security: waits for the owner (${b.why})`);continue}if(!await c.approveAutoBump(a.id,new Date))continue;let d=await c.execute(a.id,new Date);d&&f.push(d)}catch(a){console.warn(`${h.X.logTag}/auto-security failed:`,a instanceof Error?a.name:"error")}}return f}async function aB(a,b){return(await (0,B.H)([{appId:a,repoId:b}],new Date)).get(a)??null}async function aC(a){return new Map((await (0,g.f)().select({id:i.accounts.id,provider:i.accounts.provider}).from(i.accounts).where((0,d.y)(i.accounts.id,a))).map(a=>[a.id,a.provider]))}let aD={firing:()=>(0,k.q)(),book:()=>(0,j.f)(),facts:Y,create:ad,expire:al,autoRun:O.I,approveAuto:au,execute:(a,b)=>ak(a,"auto",b),notifyNew:x.i,notifyResult:x.b,logs:at,autoRollback:()=>(0,O.K)(),rollbackContext:av,approveAutoRollback:ax,notifyRollback:x.q,autoSecurity:()=>(0,O.X)(),bumpReady:B.J,approveAutoBump:az,paused:m.I,providers:aC,prodMismatch:aB};async function aE(a,b={},c=aD){let d={created:0,expired:0,autoRan:0},e=()=>(b.deadline??1/0)-Date.now(),f=await c.firing();d.expired=await c.expire(f.map(a=>a.id),a);let g=c.paused?await c.paused().catch(()=>new Set):new Set,i=[...new Set(f.flatMap(a=>a.accountId?[a.accountId]:[]))],j=g.size&&i.length&&c.providers?await c.providers(i).catch(()=>new Map):new Map,k=f.filter(a=>!(0,n.O)(g,a.ruleKey,a.accountId?j.get(a.accountId):null)),l=null,m=()=>l??=c.book().catch(()=>s.a),o=[],p=(0,u.z)(k,a);if(Object.values(p).some(a=>a.length>0)){let b=p.deployApps.length&&c.autoRollback?await c.autoRollback().catch(()=>null):null,d=await c.facts(k,a,b?6e4*b.windowMin:void 0),e=await m(),f=k.flatMap(b=>(0,u.t)(b,d,e,a)).filter(a=>!("github_bump_pr"===a.action&&g.has("devops")));o.push(...await c.create(f))}if(e()>1e4&&!g.has("hosting"))try{let b=await c.logs(a,m);o.push(...b.created),d.expired+=b.expired}catch(a){console.warn(`${h.X.logTag}/proposals logs failed:`,a instanceof Error?a.name:"error")}if(d.created=o.length,!o.length)return d;let q=await c.autoRun().catch(()=>null),r=await ay(o,a,e,c);d.autoRan+=r.length;let t=await aA(o.filter(a=>!r.some(b=>b.id===a.id)),e,c),v=new Set(r.map(a=>a.id)),w=[...t];for(let a of(d.autoRan+=t.length,t))v.add(a.id);for(let a of o){if(v.has(a.id)||!q||!(0,u.I)(a.action,q)||8e3>e()||!await c.approveAuto(a.id,new Date))continue;let b=await c.execute(a.id,new Date);b&&(w.push(b),d.autoRan++)}let x=new Set([...w.map(a=>a.id),...v]),y=o.filter(a=>"LogErrorSpike"===a.ruleKey&&a.resourceId).map(a=>({proposalId:a.id,appId:a.resourceId})),z=y.length&&c.queueDev?await c.queueDev(y,a).catch(()=>new Set):new Set,A=new Map(o.map(a=>[a.id,a.alertId??null]));for(let a of(await c.notifyNew(o.filter(a=>!x.has(a.id)).map(u.E),{},{devQueued:z,alertIds:A}).catch(()=>void 0),w))await c.notifyResult(a,{},{alertId:A.get(a.id)??null}).catch(()=>void 0);return d}let aF=(c={},b={...aD,queueDev:c.queueDev},async(a,c)=>{try{let d=await aE(a,c??{},b);(d.created||d.expired||d.autoRan)&&console.log(`${h.X.logTag}/proposals: ${d.created} new, ${d.expired} expired, ${d.autoRan} auto-ran`)}catch(a){console.warn(`${h.X.logTag}/proposals failed:`,a instanceof Error?a.name:"error")}});a.s(["V",0,ag,"N",0,ak,"Q",0,ae,"Z",0,aF,"t",0,am,"K",0,af],691100)},381544,a=>{var b=a.i(462820),c=a.i(532620),d=a.i(49146),e=a.i(390626),f=a.i(192738),g=a.i(492665),h=a.i(552543),i=a.i(446914),j=a.i(556987),k=a.i(488345),l=a.i(94473),m=a.i(188282);let n={target:d.Q,book:()=>(0,c.e)(),siteUrl:()=>(0,g.f)().SITE_URL,autoRun:()=>(0,l.I)(),send:(a,b,c,d,e)=>(0,i.I)(a,b,c,{...d?{replyMarkup:d}:{},...e?{replyTo:e}:{}}),record:(a,b)=>(0,d.P)("telegram",a,b),lang:()=>(0,h.I)("telegram"),discord:()=>(0,d.G)(),sendDiscord:(a,b)=>(0,e.$)(a,b,{timeoutMs:w}),recordDiscord:(a,b)=>(0,d.P)("discord",a,b),discordLang:()=>(0,h.I)("discord"),buttons:()=>a.A(801116).then(a=>a.approvalButtons()),thread:a=>(0,d.M)(a)},o={en:{pending:"Status: ⏳ waiting",dev:"πŸ§‘β€πŸ’» Dev is checking the code",proposer:b.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:b.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"}},p={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"},q=(a="en")=>(0,h.t)(o,a,"dev"),r=(a,b)=>("id"===b?p[a.action]:void 0)??m.H[a.action]?.label??a.actionLabel,s=(a,b)=>(0,h.t)(o,b,"risky"===a.risk||m.H[a.action]?.risk==="risky"?"risky":"safe"),t=(a,b)=>`${a.replace(/\/+$/,"")}/auto-actions${b?`?proposal=${encodeURIComponent(b)}`:""}`;function u(a,b,c,d=!1,e="en"){let g=a=>(0,h.t)(o,e,a),i=(0,k.R)(a.proposedBy,b,60)||g("proposer"),j=(0,k.R)(a.title,b,120),l=(0,k.R)(a.reason,b,200)||"-";return[`πŸ§‘β€βœˆοΈ ${(0,f.H)(i)} ${g("proposes")}: ${(0,f.H)(r(a,e))} β€” ${(0,f.H)(j)}`,`${g("why")}: ${(0,f.H)(l)}`,`${g("risk")}: ${s(a,e)}`,...d?[q(e)]:[],`${g("open")}: ${(0,f.H)(t(c,a.id))}`].join("\n")}let v=new Set(["recheck","domain_recheck"]),w=3e3,x={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 y(a,b,c,d="en"){let e=a=>(0,h.t)(x,d,a);if(Array.isArray(b))return`πŸ“ ${b.length} ${e("newN")} β€” ${e("waiting")}`;let f=((0,k.g)(b.title,c,120)||r(b,d)).replace(/[*_`~|\[\]<>]/g,"");if("proposed"===a)return`${e("proposed")}: ${f} β€” ${e("waiting")}`;if("approved"===a||"rejected"===a)return`${e(a)}: ${f}`;let g=b.result?(0,k.g)(b.result,c,200).replace(/[*_`~|\[\]<>]/g,""):"";return`${e(a)}: ${f}${g?` β€” ${g}`:""}`}async function z(a,c,d){try{let e,f=await c.discord();if(!f)return;let g=await c.book().catch(()=>j.a),h=await c.discordLang().catch(()=>"en"),i=a(g,h);if(!i.length)return;try{e=await c.sendDiscord(f.url,i.join("\n"))}catch{e={ok:!1,kind:"transient",error:"Discord didn't answer."}}await c.recordDiscord(e,d).catch(()=>console.warn(`${b.X.logTag}/discord: recording the result failed`))}catch{console.warn(`${b.X.logTag}/discord: sending the action history failed`)}}async function A(a,b,c={},d={}){let e={...n,...c};await C(()=>z((c,d)=>[y(a,b,c,d)],e,d.now??new Date),d.timeoutMs??w)}async function B(a,c,d){let e=await c.target();if(!e)return;let f=await c.book().catch(()=>j.a),g=await c.lang().catch(()=>"en");for(let h of(await a(f,g))){let a;try{a="string"==typeof h?await c.send(e.token,e.chatId,h):await c.send(e.token,e.chatId,h.text,h.keyboard,h.replyTo??void 0)}catch{a={ok:!1,kind:"transient",error:"Telegram didn't answer."}}await c.record(a,d).catch(()=>console.warn(`${b.X.logTag}/telegram: recording the result failed`))}}async function C(a,c){try{var d;let b;await (d=a(),Promise.race([d,new Promise((a,d)=>{b=setTimeout(()=>d(Object.assign(Error("timeout"),{name:"TimeoutError"})),c)})]).finally(()=>clearTimeout(b)))}catch(a){console.warn(`${b.X.logTag}/telegram: sending the proposal notice failed:`,a instanceof Error?a.name:"error")}}let D=async(a,b)=>b&&a.thread?a.thread(b).catch(()=>null):null;async function E(a,b={},c={}){if(!a.length)return;let d={...n,...b};await C(async()=>{let b=await d.autoRun().catch(()=>null),e=a.filter(a=>{var c;return c=b??{},"pending"===a.status&&!a.auto&&(m.H[a.action]?.risk!=="safe"||"risky"===a.risk||!c[a.action])});if(!e.length)return;let g=e.length>3||!d.buttons?null:await d.buttons().catch(()=>null),i=c.now??new Date;await Promise.all([B(async(a,b)=>e.length>3?[function(a,b,c,d=new Set,e="en"){let g=a=>(0,h.t)(o,e,a),i=a.slice(0,10).map(a=>{let h=(0,k.R)(a.proposedBy,b,60)||g("proposer");return`β€’ ${(0,f.H)(h)}: ${(0,f.H)(r(a,e))} β€” ${(0,f.H)((0,k.R)(a.title,b,120))} (${s(a,e)})${d.has(a.id)?` \xb7 ${q(e)}`:""}
5
5
  ${(0,f.H)(t(c,a.id))}`}),j=a.length>10?[`+${a.length-10} ${g("moreN")}`]:[];return[`πŸ§‘β€βœˆοΈ ${a.length} ${g("waitingN")}`,...i,...j,`${g("open")}: ${(0,f.H)(t(c))}`].join("\n")}(e,a,d.siteUrl(),c.devQueued,b)]:Promise.all(e.map(async e=>{let f=u(e,a,d.siteUrl(),c.devQueued?.has(e.id)??!1,b),i=await D(d,c.alertIds?.get(e.id));return g?{text:`${f}
6
6
  ${((a="en")=>(0,h.t)(o,a,"pending"))(b)}`,keyboard:g(e),replyTo:i}:{text:f,replyTo:i}})),d,i),z((a,b)=>e.length>3?[y("proposed",e,a,b)]:e.map(c=>y("proposed",c,a,b)),d,i)])},c.timeoutMs??8e3)}async function F(a,b={},c={}){if(!a.auto||"done"!==a.status&&"failed"!==a.status)return;let d={...n,...b},e=c.now??new Date;await C(()=>Promise.all([B(async(b,e)=>{let g=function(a,b,c="en"){if(!a.auto||"done"!==a.status&&"failed"!==a.status||a.auto&&"done"===a.status&&v.has(a.action))return null;let d="done"===a.status?"βœ…":"❌",e=a.result?(0,k.R)(a.result,b,200):"";return`${d} ${(0,h.t)(o,c,"automatic")}: ${(0,f.H)(r(a,c))} β€” ${(0,f.H)((0,k.R)(a.title,b,120))}${e?`: ${(0,f.H)(e)}`:""}`}(a,b,e);return g?[{text:g,replyTo:await D(d,c.alertId)}]:[]},d,e),z((b,c)=>[y("done"===a.status?"done":"failed",a,b,c)],d,e)]).then(()=>void 0),c.timeoutMs??8e3)}async function G(a,b,c={},d={}){if("done"!==a.status&&"failed"!==a.status)return;let e={...n,...c},g=d.now??new Date;await C(()=>Promise.all([B(async(c,g)=>[{text:function(a,b,c,d="en"){let e=a=>(0,h.t)(o,d,a),g=(0,k.R)(a.resourceName??e("app"),c,60)||e("app"),i=(0,k.R)(b.reason,c,200).replace(/[.!?…]+$/,"")||e("rollbackWhy"),j=a.result?(0,k.R)(a.result,c,200):"";return["id"===d?`βͺ Otomatis rollback ${(0,f.H)(g)}: ${(0,f.H)(i)}. Deploy baru ${(0,f.H)((0,k.R)(b.newRef,c,40))} dibalikin ke deploy sebelumnya. Benerin dulu, terus deploy ulang.`:`βͺ Automatic rollback of ${(0,f.H)(g)}: ${(0,f.H)(i)}. The new deploy ${(0,f.H)((0,k.R)(b.newRef,c,40))} was rolled back to the previous one. Fix it first, then deploy again.`,`${"done"===a.status?"βœ…":"❌"} ${e("done"===a.status?"succeeded":"failed")}${j?`: ${(0,f.H)(j)}`:""}`].join("\n")}(a,b,c,g),replyTo:await D(e,d.alertId)}],e,g),z((b,c)=>[y("done"===a.status?"done":"failed",a,b,c)],e,g)]).then(()=>void 0),d.timeoutMs??8e3)}async function H(a,b={},c={}){let d={...n,...b};await C(()=>B((b,c)=>[function(a,b,c="en"){let d="id"===c,e=(0,k.R)(a.app,b,60)||(0,h.t)(o,c,"app"),g=a.packages.slice(0,4).join(", ")+(a.packages.length>4?`, +${a.packages.length-4}`:"");if("merged"===a.kind)return d?`βœ… PR #${a.number} di ${(0,f.H)(e)} di-merge otomatis (${(0,f.H)(g)}). Deploy production jalan lewat Vercel; auto-rollback jaga ${a.windowMin??30} menit pertama.`:`βœ… PR #${a.number} in ${(0,f.H)(e)} was merged automatically (${(0,f.H)(g)}). The production deploy runs through Vercel; auto-rollback watches the first ${a.windowMin??30} minutes.`;if("ready-manual"===a.kind)return d?`πŸ” PR #${a.number} di ${(0,f.H)(e)} siap di-merge, tapi auto-rollback mati β€” merge manual ya.`:`πŸ” PR #${a.number} in ${(0,f.H)(e)} is ready to merge, but auto-rollback is off β€” please merge it manually.`;let i=(0,k.R)(a.reason??"",b,200)||(0,h.t)(o,c,"stopFallback");return d?`⚠️ PR #${a.number} di ${(0,f.H)(e)} butuh dicek: ${(0,f.H)(i)}. PR-nya dibiarin terbuka.`:`⚠️ PR #${a.number} in ${(0,f.H)(e)} needs a look: ${(0,f.H)(i)}. The PR was left open.`}(a,b,c)],d,c.now??new Date),c.timeoutMs??8e3)}a.s(["h",0,w,"q",0,G,"y",0,H,"v",0,A,"i",0,E,"b",0,F,"a",0,u])},342634,416454,a=>{var b=a.i(556987),c=a.i(313235),d=a.i(462820),e=a.i(488345),f=a.i(188282),g=a.i(679662),h=a.i(84877),i=a.i(245710);let j=new Set(["nextjs","blitzjs"]),k={status:"unknown",version:null},l={status:"ok",version:null},m=/(?:Next\.js|\(now) (\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?)/,n=a=>!!a&&!j.has(a),o=(a,b)=>null===a.version&&!a.findings.length&&"vulnerable"!==a.status&&("not a Next.js site"===a.reason||n(b));function p(a,b){return"vulnerable"===a.status||a.findings.length?{status:"vulnerable",version:a.version}:"ok"===a.status||a.version?{status:"ok",version:a.version}:o(a,b)?l:k}let q=a=>`${(0,i.L)(a)} ${(0,i.U)(a)} ${(0,i.J)(a)}`,r=a=>"HighLatency"===a?"Slow":"Down",s=(a,b,c,d=!1)=>{let e;if(!c||b.getTime()<c.getTime())return`${r(a)} since ${q(b)}, not tied to a deploy${c?` (live since ${q(c)})`:""}: check the app.`;let f=(e=Math.max(1,Math.round((b.getTime()-c.getTime())/6e4)))<120?`${e} min`:e<2880?`${Math.round(e/60)} h`:`${Math.round(e/1440)} days`;return d?`${r(a)} since ${q(b)}, ${f} after the deploy went live, outside the rollback window: check the app or roll back by hand.`:`${r(a)} since ${q(b)}, started ${f} after the deploy went live: check the app.`},t=a=>a?`No rollback: the previous deployment runs Next.js ${a}, which has known advisories.`:"No rollback: the previous deployment's Next.js has known advisories.",u="Previous deployment's Next.js version is unknown: check it has no known advisories before approving.";a.s(["A",0,6048e5,"Y",0,["NextVulnerable","NextClean"],"B",0,u,"D",0,s,"Q",0,function(a){let b,c=a.currentLiveAt?.getTime(),d=a.previousLiveAt?.getTime(),e=a.check;if(!e)return n(a.framework)?l:k;if(o(e,a.framework))return l;if(void 0===c||void 0===d||d>=c)return k;let f=e.checkedAt.getTime();if(f>=d&&f<c)return p(e,a.framework);if(f<d||c-d<36e5)return k;let i=a.events.filter(a=>"NextVulnerable"===a.reason||"NextClean"===a.reason),j=i.filter(a=>a.at.getTime()<c).sort((a,b)=>b.at.getTime()-a.at.getTime())[0],q=i.filter(a=>a.at.getTime()>=c).sort((a,b)=>a.at.getTime()-b.at.getTime())[0];if(j){var r;let a;b={status:"NextVulnerable"===j.reason?"vulnerable":"ok",version:j.at.getTime()>=d?(r=j.message,(a=m.exec(r)?.[1]??null)&&(0,g.C)(a)?a:null):null}}else b=q?"NextClean"===q.reason?{status:"vulnerable",version:null}:k:{status:p(e,a.framework).status,version:null};if("ok"===b.status&&"ok"!==e.status&&e.findings.length){let a;if(!b.version)return k;if(a=b.version,e.findings.some(b=>!!b.fixed&&(0,g.C)(b.fixed)&&0>(0,h.f)(a,b.fixed)))return{status:"vulnerable",version:b.version}}return b},"g",0,function(a,b,c={}){let d=a.getTime(),e="MonitorDown"===c.ruleKey;if(e&&!c.liveAt)return a;let f=c.liveAt?c.liveAt.getTime()-9e5:0,g=c.gapMs??864e5;for(let a of[...b].sort((a,b)=>b.startedAt.getTime()-a.startedAt.getTime()))!(a.startedAt.getTime()>=d)&&(e?null===a.resolvedAt||a.resolvedAt.getTime()>=f:null===a.resolvedAt||a.resolvedAt.getTime()>=d-g)&&(d=a.startedAt.getTime());return new Date(d)},"e",0,t],416454);let v=200,w=d.X.auditPrefix,x=/^dpl_[A-Za-z0-9]{8,40}$/,y=/^ep-[a-z0-9-]{3,60}$/,z=/^[a-z0-9]{8,40}$/,A=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,B=(a,b=v)=>a.length>b?`${a.slice(0,b-1).trimEnd()}…`:a,C=a=>/[.!?…]$/.test(a)?a:`${a}.`;function D(a,c,d,f){return"app"===a&&d?(0,b.r)(f,d):("supabase_project"===a||"neon_project"===a||"neon_branch"===a||"firestore"===a)&&c?(0,b.X)(f,c):d&&(0,e.g)(d,f,120)||null}let E={recheck:a=>`Check ${a} again now`,neon_wake:a=>`Wake the Neon compute of ${a}`,supabase_keepalive:a=>`Send a keep-alive to ${a}`,supabase_restore:a=>`Restore Supabase project ${a}`,vercel_redeploy:a=>`Redeploy production ${a}`,vercel_rollback:a=>`Roll ${a} back to the previous deployment`,github_bump_pr:a=>`Open a PR updating vulnerable packages in ${a}`,domain_recheck:a=>`Re-check the certificate of ${a}`,daily_rerun:()=>"Rerun the daily job",monitor_update_url:a=>`Point the ${a} monitor at its new domain`},F=(a,b)=>B(E[a](b??"this resource")),G=(a,b)=>a.silencedUntilResolved||null!==a.silencedUntil&&a.silencedUntil.getTime()>b.getTime(),H={status:"unknown",version:null};a.s(["e",0,"office-auto","v",0,w,"L",0,6e5,"j",0,v,"I",0,(a,b)=>"safe"===f.H[a].risk&&!0===b[a],"l",0,B,"z",0,function(a,b){let c=a.filter(a=>!G(a,b)),d=a=>[...new Set(a.filter(a=>!!a&&A.test(a)))],e=c.filter(a=>("MonitorDown"===a.ruleKey||"HighLatency"===a.ruleKey)&&"app"===a.resourceKind);return{monitorIds:d([...e,...c.filter(a=>"MonitorDomainMoved"===a.ruleKey&&"app"===a.resourceKind)].map(a=>a.subject)),monitorApps:d(e.map(a=>a.resourceId)),deployApps:d(c.filter(a=>("DeploymentFailed"===a.ruleKey||"MonitorDown"===a.ruleKey||"HighLatency"===a.ruleKey)&&"app"===a.resourceKind).map(a=>a.resourceId)),supabaseIds:d(c.filter(a=>("DatabasePaused"===a.ruleKey||"AutoPauseRisk"===a.ruleKey)&&"supabase_project"===a.resourceKind).map(a=>a.resourceId)),depApps:d(c.filter(a=>"VulnerableDependency"===a.ruleKey&&"app"===a.resourceKind).map(a=>a.resourceId)),frameworkApps:d(c.filter(a=>"FrameworkVulnerable"===a.ruleKey&&"app"===a.resourceKind).map(a=>a.resourceId))}},"b",0,a=>"string"==typeof a&&A.test(a),"M",0,F,"t",0,function(a,d,g,h){let i,j,k;if(G(a,h))return[];let l=(i=(0,b.o)(a,g),j=(0,e.g)(i.title,g,80),k=(0,e.g)(i.message,g,v),B([j&&C(j),k&&C(k)].filter(Boolean).join(" ")||`${a.ruleKey}.`));return(function(a,b,c){let d="app"===a.resourceKind&&a.resourceId?a.resourceId:null;switch(a.ruleKey){case"DeploymentFailed":{let a=d?b.deploys.get(d):void 0;if(!d||!a?.currentId||!x.test(a.currentId))return[];let c=[{action:"vercel_redeploy",resourceKind:"app",resourceId:d,targetRef:a.currentId}],e=b.previousNext?.get(d)??H;return a.previousId&&x.test(a.previousId)&&a.previousId!==a.currentId&&("vulnerable"===e.status?c[0].note=t(e.version):c.push({action:"vercel_rollback",resourceKind:"app",resourceId:d,targetRef:a.previousId,..."unknown"===e.status?{note:u}:{}})),c}case"DatabasePaused":case"AutoPauseRisk":{if("supabase_project"!==a.resourceKind||!a.resourceId)return[];let c=b.supabaseRefs.get(a.resourceId);if(!c||!z.test(c))return[];return[{action:"DatabasePaused"===a.ruleKey?"supabase_restore":"supabase_keepalive",resourceKind:"supabase_project",resourceId:a.resourceId,targetRef:c}]}case"VulnerableDependency":{let a=d?b.fixableRepos?.get(d):void 0;return d&&a&&A.test(a)?[{action:"github_bump_pr",resourceKind:"app",resourceId:d,targetRef:a}]:[]}case"FrameworkVulnerable":{let a=d?b.frameworkFixes?.get(d):void 0;return d&&a&&A.test(a.repoId)?[{action:"github_bump_pr",resourceKind:"app",resourceId:d,targetRef:a.repoId}]:[]}case"MonitorDomainMoved":return d&&A.test(a.subject)&&b.monitorMoves?.has(a.subject)?[{action:"monitor_update_url",resourceKind:"app",resourceId:d,targetRef:a.subject}]:[];case"MonitorDown":case"HighLatency":{let e=[];d&&A.test(a.subject)&&"http"===b.monitorKinds.get(a.subject)&&e.push({action:"recheck",resourceKind:"app",resourceId:d,targetRef:a.subject}),"MonitorDown"===a.ruleKey&&a.resourceId&&A.test(a.subject)&&b.dailyHeartbeatId===a.subject&&e.push({action:"daily_rerun",room:"observe",resourceKind:a.resourceKind,resourceId:a.resourceId,targetRef:a.subject});let f=d?b.neonSuspended.get(d):void 0;if(f&&y.test(f.endpointId)&&e.push({action:"neon_wake",room:"databases",resourceKind:f.resourceKind,resourceId:f.resourceId,targetRef:f.endpointId}),b.monitorMoves?.has(a.subject))return e;let g=d?b.deploys.get(d):void 0,h=b.problemSince?.get(a.id)??a.startedAt??null,i=g?.liveAt??null,j=h&&i?h.getTime()>=i.getTime():null,k=d&&b.previousNext?.get(d)||H,l=b.rollbackWindowMs??18e5,m=!!d&&!0===j&&function(a,b,c){if(!a?.currentId||!a.previousId||!a.liveAt||!x.test(a.previousId)||a.previousId===a.currentId)return!1;let d=c.getTime()-a.liveAt.getTime();return d>=0&&d<=b}(g,l,c);if(m&&"vulnerable"!==k.status)return e.push({action:"vercel_rollback",resourceKind:"app",resourceId:d,targetRef:g.previousId,..."unknown"===k.status?{note:u}:{}}),e;let n=m?t(k.version):void 0;if("MonitorDown"===a.ruleKey&&d&&g?.currentId&&x.test(g.currentId)&&"http"===b.monitorKinds.get(a.subject)&&!1!==j)return e.push({action:"vercel_redeploy",resourceKind:"app",resourceId:d,targetRef:g.currentId,...n?{note:n}:{}}),e;let o=!!i&&c.getTime()-i.getTime()>l,p=n??(h&&i&&g?.currentId?s(a.ruleKey,h,i,o):void 0),q=e.find(a=>"recheck"===a.action);return q&&p&&(q.note=p),e}case"CertExpiringSoon":return"domain"===a.resourceKind&&a.resourceId&&A.test(a.resourceId)?[{action:"domain_recheck",resourceKind:"domain",resourceId:a.resourceId,targetRef:a.resourceId}]:[];default:return[]}})(a,d,h).map(i=>{var j;let k,m,n,o,p=i.room??(0,c.p)(a),q="neon_wake"===i.action?D(i.resourceKind,i.resourceId,null,g):D(a.resourceKind,a.resourceId,a.resourceName,g),r="FrameworkVulnerable"===a.ruleKey&&"github_bump_pr"===i.action,s="monitor_update_url"===i.action?d.monitorMoves?.get(i.targetRef):void 0,t=r?(j=i.resourceId?d.frameworkFixes?.get(i.resourceId):void 0,k=q??"this app",B(j?`Next.js ${j.from} in ${k} has known vulnerabilities: the PR updates next (and eslint-config-next when listed) to ${j.to}.`:`Next.js in ${k} has known vulnerabilities with a fixed version.`)):"github_bump_pr"===i.action?(n=(m=(0,e.g)((0,b.o)(a,g).message,g,v)).includes(": ")?m.slice(m.indexOf(": ")+2):"",o=`Vulnerable packages in ${q??"this app"} have a fix`,B(n?`${o}: ${n}`:`${o}.`)):i.note?B(`${i.note} ${l}`):l,u="github_bump_pr"===i.action&&i.resourceId?d.productionMismatch?.get(i.resourceId):void 0;return{alertId:a.id,ruleKey:a.ruleKey,room:p,action:i.action,risk:f.H[i.action].risk,title:r?B(`Open a PR updating Next.js in ${q??"this app"}`):s?B(`Point the ${q??"app's"} monitor at ${s.to}`):F(i.action,q),reason:u?B(`${(0,e.g)(u,g,v)} ${t}`):t,resourceKind:i.resourceKind,resourceId:i.resourceId,resourceName:q,targetRef:i.targetRef,proposedBy:(0,c.y)(p),expiresAt:new Date(h.getTime()+f.V)}})},"x",0,function(a,b){let c=a.ok?a.message||"Done.":a.error||"It didn't run.";return B((0,e.g)(c,b,v)||(a.ok?"Done.":"It didn't run."))},"J",0,D,"E",0,function(a){return{id:a.id,room:a.room,action:a.action,actionLabel:f.H[a.action].label,risk:f.H[a.action].risk,title:a.title,reason:a.reason,resourceName:a.resourceName,proposedBy:a.proposedBy,status:a.status,auto:a.auto,result:a.result,createdAt:a.createdAt.toISOString(),decidedAt:a.decidedAt?a.decidedAt.toISOString():null,expiresAt:a.expiresAt.toISOString()}},"Z",0,function(a,b,c){let d=c??b?.find(a=>a.isDefault)?.id??null,e=(a??[]).find(a=>!d||a.branchId===d);return e&&!e.disabled&&"idle"===e.state&&"active"!==e.pendingState&&y.test(e.id)?e.id:null}],342634)},488345,a=>{var b=a.i(556987),c=a.i(425238),d=a.i(609007),e=a.i(434711);let f=/\b([a-z][a-z0-9+.-]{1,20}):\/\/[^\s"'<>`]*/gi,g=/\b(?:\d{1,3}\.){3}\d{1,3}\b/g,h=/\b(?:w[bp]_[A-Za-z0-9]{6,}|hb_[A-Za-z0-9[\]]{2,}|sk-[A-Za-z0-9_-]{6,}|gsk_[A-Za-z0-9]{6,}|AIza[0-9A-Za-z_-]{10,}|AQ\.[A-Za-z0-9_-]{10,})/g,i=/(?<![\p{L}\p{N}_.-])[a-z0-9-]+\.vercel\.app(?![\p{L}\p{N}_-])/giu,j=/@/g,k=new WeakMap;function l(a,b){return/^https?$/i.test(b)?"[link]":"[hidden]"}e._;let m="[\\p{L}\\p{N}_./-]",n=a=>a.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,p=new WeakMap;function q(a,e){return String(a??"").replace(/\r\n?/g,"\n").split("\n").map(a=>{var q,r;let s,t,u,v=(q=(0,c.F)(a,e),s=q.replace(f,l),s=(0,b.J)(s,e),s=(s=(0,d.h)(s)).replace(h,"[hidden]"),(t=function(a){if(k.has(a))return k.get(a);let b=[...a.host??[]].filter(a=>a.name.includes(".")).sort((a,b)=>b.name.length-a.name.length),c=b.length?{re:RegExp(`(?<![\\p{L}\\p{N}_-])((?:[a-z0-9-]+\\.)*?)(${b.map(a=>a.name.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join("|")})(?![\\p{L}\\p{N}_-]|\\.[\\p{L}\\p{N}])`,"giu"),alias:new Map(b.map(a=>[a.name.toLowerCase(),a.alias]))}:null;return k.set(a,c),c}(e))&&(s=s.replace(t.re,(a,b,c)=>`${b}${t.alias.get(c.toLowerCase())??"site.example"}`)),s=s.replace(i,"preview.example").replace(g,"[ip]").replace(j," at "));return v=v.replace(o,a=>/\.example$/i.test(a)?a:"site.example"),(0,b.G)((r=v,(u=function(a){if(p.has(a))return p.get(a);let b=new Map(a.app.filter(a=>a.name.trim().length>=2).map(a=>[a.name.toLowerCase(),a.alias])),c=[...b.keys()].sort((a,b)=>b.length-a.length),d=c.length?{re:RegExp(`(?<!${m})(?:${c.map(n).join("|")})(?!${m})`,"giu"),alias:b}:null;return p.set(a,d),d}(e))?r.replace(u.re,a=>u.alias.get(a.toLowerCase())??a):r))}).join("\n")}let r=(a,b)=>a.length>b?`${a.slice(0,b-1).trimEnd()}…`:a;a.s(["g",0,(a,b,c)=>r(q(String(a??"").replace(/\s+/g," "),b).replace(/\s+/g," ").trim(),c),"R",0,(a,c,d)=>{let e;return r((e=String(a??"").replace(/\s+/g," "),(0,b.q)(q(e,c),c)).replace(/\s+/g," ").trim(),d)}],488345)}]})();
7
7
 
@@ -1,3 +1,3 @@
1
- (()=>{"use strict";module.exports=[390124,a=>{var b=a.i(187924),c=a.i(572131),d=a.i(823292),e=a.i(771378),f=a.i(619089),g=a.i(405050);let h=(0,g.createServerReference)("400175f96c361c59cb232cd1f6eabb803dcdd01732",g.callServer,void 0,g.findSourceMapURL,"updateMonitorDomain");a.s(["DomainMoved",0,function({monitorId:a,from:g,to:i,canAct:j}){let[k,l]=(0,c.useTransition)();return(0,b.jsxs)("span",{className:"inline-flex flex-wrap items-center gap-2 text-[13px] text-warn",children:[(0,b.jsxs)("span",{children:["Domain changed: ",(0,b.jsx)(e.MaskedText,{text:g})," β†’ ",(0,b.jsx)(e.MaskedText,{text:i}),j?", update monitor?":""]}),j&&(0,b.jsx)(f.K,{size:"sm",disabled:k,onClick:()=>l(async()=>{try{let b=await h(a);b.ok?d.c.success(b.message??"Monitor updated."):d.c.error(b.error)}catch{d.c.error("Watchbell didn't answer. Check that it's still running, then try again.")}}),children:k?"Updating…":"Update monitor"})]})}],390124)},585709,a=>{var b=a.i(187924),c=a.i(572131),d=a.i(486747),e=a.i(462007),f=a.i(427110);a.s(["PlainTable",0,function({head:a,rows:g}){let[h,i]=(0,c.useState)(1),j=(0,f.$)(g,h);return j.page!==h&&i(j.page),(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("div",{className:"overflow-x-auto",children:(0,b.jsxs)("table",{className:e.o,children:[(0,b.jsx)(e.U,{head:a}),(0,b.jsx)("tbody",{children:j.rows.map(a=>(0,b.jsx)(c.Fragment,{children:a.row},a.key))})]})}),(0,b.jsx)(d.f,{page:j.page,pages:j.pages,text:(0,f.z)(j),onPage:i})]})}])},941881,a=>{let b=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;a.s(["f",0,a=>"string"==typeof a&&b.test(a)])}]})();
1
+ (()=>{"use strict";module.exports=[390124,a=>{var b=a.i(187924),c=a.i(572131),d=a.i(823292),e=a.i(771378),f=a.i(619089),g=a.i(405050);let h=(0,g.createServerReference)("40106b2083ff5a0a9600063dd6c24d26972779d88c",g.callServer,void 0,g.findSourceMapURL,"updateMonitorDomain");a.s(["DomainMoved",0,function({monitorId:a,from:g,to:i,canAct:j}){let[k,l]=(0,c.useTransition)();return(0,b.jsxs)("span",{className:"inline-flex flex-wrap items-center gap-2 text-[13px] text-warn",children:[(0,b.jsxs)("span",{children:["Domain changed: ",(0,b.jsx)(e.MaskedText,{text:g})," β†’ ",(0,b.jsx)(e.MaskedText,{text:i}),j?", update monitor?":""]}),j&&(0,b.jsx)(f.K,{size:"sm",disabled:k,onClick:()=>l(async()=>{try{let b=await h(a);b.ok?d.c.success(b.message??"Monitor updated."):d.c.error(b.error)}catch{d.c.error("Watchbell didn't answer. Check that it's still running, then try again.")}}),children:k?"Updating…":"Update monitor"})]})}],390124)},585709,a=>{var b=a.i(187924),c=a.i(572131),d=a.i(486747),e=a.i(462007),f=a.i(427110);a.s(["PlainTable",0,function({head:a,rows:g}){let[h,i]=(0,c.useState)(1),j=(0,f.$)(g,h);return j.page!==h&&i(j.page),(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("div",{className:"overflow-x-auto",children:(0,b.jsxs)("table",{className:e.o,children:[(0,b.jsx)(e.U,{head:a}),(0,b.jsx)("tbody",{children:j.rows.map(a=>(0,b.jsx)(c.Fragment,{children:a.row},a.key))})]})}),(0,b.jsx)(d.f,{page:j.page,pages:j.pages,text:(0,f.z)(j),onPage:i})]})}])},941881,a=>{let b=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;a.s(["f",0,a=>"string"==typeof a&&b.test(a)])}]})();
2
2
 
3
3
  //# sourceMappingURL=src_1q-jgpnd3lbcu._.js.map
@@ -1,3 +1,3 @@
1
- (()=>{"use strict";module.exports=[749348,a=>{var b=a.i(187924),c=a.i(50944),d=a.i(572131),e=a.i(823292),f=a.i(611619),g=a.i(619089),h=a.i(507504),i=a.i(188406),j=a.i(814574),k=a.i(405050);let l=(0,k.createServerReference)("40ad1a616d1abebc96d8ad24bd0fc6b869aebc4ca8",k.callServer,void 0,k.findSourceMapURL,"forgetAgentAction"),m=(0,k.createServerReference)("60d07486b20a41a26312cc1233f2dfac9b87abbc94",k.callServer,void 0,k.findSourceMapURL,"renameAgentAction");function n({id:a,current:c,detected:f,onDone:h}){let[i,k]=(0,d.useState)(c===f?"":c),[l,o]=(0,d.useState)(""),[p,q]=(0,d.useTransition)();return(0,b.jsxs)("form",{onSubmit:function(b){b.preventDefault(),q(async()=>{o("");try{let b=await m(a,i);b.ok?(e.c.success(b.message??"Agent renamed."),h()):o(b.fieldErrors?.name??b.error)}catch{o("Watchbell didn't answer. Check that it's still running, then try again.")}})},noValidate:!0,children:[(0,b.jsxs)("div",{className:"px-[18px] pb-2 pt-4",children:[(0,b.jsxs)(j.F,{className:"text-base",children:["Rename ",f]}),(0,b.jsx)(j.C,{className:"mt-0.5 text-[13px] text-ink-soft",children:"Only changes what this page shows. Leave it empty to use the detected name again."})]}),(0,b.jsx)("div",{className:"px-[18px] pt-1.5",children:(0,b.jsx)(g.O,{id:"agent-name",label:"Name",error:l,children:(0,b.jsx)("input",{id:"agent-name",value:i,onChange:a=>k(a.target.value),placeholder:f,autoComplete:"off",spellCheck:!1,className:g.S})})}),(0,b.jsxs)("div",{className:"flex justify-end gap-2 border-t border-line px-[18px] py-3",children:[(0,b.jsx)(g.K,{onClick:h,disabled:p,children:"Cancel"}),(0,b.jsx)(g.K,{type:"submit",variant:"primary",disabled:p,children:p?"Saving…":"Save name"})]})]})}a.s(["AgentActions",0,function({id:a,name:e,clientName:g,keyRevoked:k}){let m=(0,c.useRouter)(),[o,p]=(0,d.useState)(!1),[q,r]=(0,d.useState)(!1);return(0,h.useHoldRefresh)(o),(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(i.RowMenu,{label:`Actions for ${e}`,items:[...k?[]:[{label:"Rename",onSelect:()=>p(!0)}],{label:"Show logs",onSelect:()=>m.push(`/ai/logs?agent=${encodeURIComponent(a)}`)},"---",{label:"Forget",danger:!0,onSelect:()=>r(!0)}]}),(0,b.jsx)(j.N,{open:o,onOpenChange:p,children:(0,b.jsx)(j.d,{className:"gap-0 p-0 sm:max-w-[520px]",showCloseButton:!1,children:o&&(0,b.jsx)(n,{id:a,current:e,detected:g,onDone:()=>p(!1)})})}),(0,b.jsx)(f.f,{open:q,onOpenChange:r,title:`Forget ${e}?`,body:"Removes it from this list. Its calls stay in the logs for 30 days. It appears again with its next request.",cta:"Forget agent",danger:!0,onConfirm:async()=>{let b=await l(a);return{ok:b.ok,message:(b.ok?b.message:b.error)??""}}})]})}],749348)},107778,a=>{var b=a.i(50944),c=a.i(572131),d=a.i(507504);a.s(["AgentsRefresh",0,function(){let a=(0,b.useRouter)(),[e,f]=(0,c.useTransition)(),g=(0,c.useRef)(!1);return(0,c.useEffect)(()=>{g.current=e},[e]),(0,c.useEffect)(()=>{let b=()=>{if(!g.current){var b;(b={visible:"visible"===document.visibilityState,online:!1!==navigator.onLine,held:(0,d.holdCount)()>0}).visible&&b.online&&!b.held&&f(()=>a.refresh())}},c=setInterval(b,15e3);return document.addEventListener("visibilitychange",b),()=>{clearInterval(c),document.removeEventListener("visibilitychange",b)}},[a]),null}],107778)}]})();
1
+ (()=>{"use strict";module.exports=[749348,a=>{var b=a.i(187924),c=a.i(50944),d=a.i(572131),e=a.i(823292),f=a.i(611619),g=a.i(619089),h=a.i(507504),i=a.i(188406),j=a.i(814574),k=a.i(405050);let l=(0,k.createServerReference)("4064e5070c88b8e289b20e89ecdcf1099ad2a42286",k.callServer,void 0,k.findSourceMapURL,"forgetAgentAction"),m=(0,k.createServerReference)("605c5cfb27dd48174a42f3d6b852b8e43970d82aaa",k.callServer,void 0,k.findSourceMapURL,"renameAgentAction");function n({id:a,current:c,detected:f,onDone:h}){let[i,k]=(0,d.useState)(c===f?"":c),[l,o]=(0,d.useState)(""),[p,q]=(0,d.useTransition)();return(0,b.jsxs)("form",{onSubmit:function(b){b.preventDefault(),q(async()=>{o("");try{let b=await m(a,i);b.ok?(e.c.success(b.message??"Agent renamed."),h()):o(b.fieldErrors?.name??b.error)}catch{o("Watchbell didn't answer. Check that it's still running, then try again.")}})},noValidate:!0,children:[(0,b.jsxs)("div",{className:"px-[18px] pb-2 pt-4",children:[(0,b.jsxs)(j.F,{className:"text-base",children:["Rename ",f]}),(0,b.jsx)(j.C,{className:"mt-0.5 text-[13px] text-ink-soft",children:"Only changes what this page shows. Leave it empty to use the detected name again."})]}),(0,b.jsx)("div",{className:"px-[18px] pt-1.5",children:(0,b.jsx)(g.O,{id:"agent-name",label:"Name",error:l,children:(0,b.jsx)("input",{id:"agent-name",value:i,onChange:a=>k(a.target.value),placeholder:f,autoComplete:"off",spellCheck:!1,className:g.S})})}),(0,b.jsxs)("div",{className:"flex justify-end gap-2 border-t border-line px-[18px] py-3",children:[(0,b.jsx)(g.K,{onClick:h,disabled:p,children:"Cancel"}),(0,b.jsx)(g.K,{type:"submit",variant:"primary",disabled:p,children:p?"Saving…":"Save name"})]})]})}a.s(["AgentActions",0,function({id:a,name:e,clientName:g,keyRevoked:k}){let m=(0,c.useRouter)(),[o,p]=(0,d.useState)(!1),[q,r]=(0,d.useState)(!1);return(0,h.useHoldRefresh)(o),(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(i.RowMenu,{label:`Actions for ${e}`,items:[...k?[]:[{label:"Rename",onSelect:()=>p(!0)}],{label:"Show logs",onSelect:()=>m.push(`/ai/logs?agent=${encodeURIComponent(a)}`)},"---",{label:"Forget",danger:!0,onSelect:()=>r(!0)}]}),(0,b.jsx)(j.N,{open:o,onOpenChange:p,children:(0,b.jsx)(j.d,{className:"gap-0 p-0 sm:max-w-[520px]",showCloseButton:!1,children:o&&(0,b.jsx)(n,{id:a,current:e,detected:g,onDone:()=>p(!1)})})}),(0,b.jsx)(f.f,{open:q,onOpenChange:r,title:`Forget ${e}?`,body:"Removes it from this list. Its calls stay in the logs for 30 days. It appears again with its next request.",cta:"Forget agent",danger:!0,onConfirm:async()=>{let b=await l(a);return{ok:b.ok,message:(b.ok?b.message:b.error)??""}}})]})}],749348)},107778,a=>{var b=a.i(50944),c=a.i(572131),d=a.i(507504);a.s(["AgentsRefresh",0,function(){let a=(0,b.useRouter)(),[e,f]=(0,c.useTransition)(),g=(0,c.useRef)(!1);return(0,c.useEffect)(()=>{g.current=e},[e]),(0,c.useEffect)(()=>{let b=()=>{if(!g.current){var b;(b={visible:"visible"===document.visibilityState,online:!1!==navigator.onLine,held:(0,d.holdCount)()>0}).visible&&b.online&&!b.held&&f(()=>a.refresh())}},c=setInterval(b,15e3);return document.addEventListener("visibilitychange",b),()=>{clearInterval(c),document.removeEventListener("visibilitychange",b)}},[a]),null}],107778)}]})();
2
2
 
3
3
  //# sourceMappingURL=src_app_%28console%29_%28private%29_ai_agents_1fyhh1ldgm23z._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[352771,a=>{"use strict";var b=a.i(187924),c=a.i(282269),d=a.i(572131),e=a.i(823292),f=a.i(619089),g=a.i(901615),h=a.i(368114),i=a.i(701018),j=a.i(700629);a.s(["AskForm",0,function({models:a=[],defaultLabel:k="your provider"}){let[l,m]=(0,d.useState)(""),[n,o]=(0,d.useState)(""),[p,q]=(0,d.useState)(null),[r,s]=(0,d.useTransition)(),t=()=>{l.trim()&&!r&&(q(null),s(async()=>{try{let a=await (0,i.f)(l,n||null);a.ok?(m(""),e.c.success(a.message??"Sent.")):q(a.error)}catch{q("Watchbell didn't answer. Check that it's still running, then try again.")}}))};return(0,b.jsxs)("form",{onSubmit:a=>{a.preventDefault(),t()},children:[(0,b.jsx)("label",{htmlFor:"ask-in",className:"mb-1.5 block font-medium",children:"Ask about your apps, alerts, deployments or databases"}),(0,b.jsx)("textarea",{id:"ask-in",className:(0,h.f)(f.S,"min-h-22 w-full"),placeholder:"For example: which apps need attention before the weekend?",value:l,maxLength:2e3,"aria-describedby":"ask-hint ask-count","aria-invalid":!!p||void 0,onChange:a=>m(a.target.value),onKeyDown:a=>{"Enter"===a.key&&(a.ctrlKey||a.metaKey)&&(a.preventDefault(),t())}}),p&&(0,b.jsx)("p",{role:"alert",className:"mt-1.5 text-[13px] text-err",children:p}),(0,b.jsxs)("div",{className:"mt-2 flex flex-wrap items-center gap-3",children:[(0,b.jsx)("span",{id:"ask-hint",className:"min-w-[220px] flex-1 text-[12.5px] text-ink-faint",children:r?(0,b.jsx)(j.f,{}):g.I.hint}),(0,b.jsxs)("span",{id:"ask-count",className:"font-mono text-[12px] text-ink-faint","aria-live":"off",children:[l.length," / ",2e3]}),a.length>0&&(0,b.jsxs)("label",{className:"flex items-center gap-1.5 text-[13px] text-ink-soft",children:[(0,b.jsx)("span",{className:"sr-only",children:"Model"}),(0,b.jsxs)("select",{className:(0,h.f)(f.S,"max-w-[260px] py-1 font-mono text-[12.5px]"),value:n,onChange:a=>o(a.target.value),disabled:r,children:[(0,b.jsxs)("option",{value:"",children:["Default (",k,")"]}),a.map(a=>(0,b.jsx)("option",{value:a.id,children:a.label},a.id))]})]}),(0,b.jsxs)(f.K,{type:"submit",variant:"primary",disabled:r||!l.trim(),children:[(0,b.jsx)(c.f,{size:16,"aria-hidden":!0}),r?"Asking…":"Send"]})]})]})}])}];
1
+ module.exports=[352771,a=>{"use strict";var b=a.i(187924),c=a.i(282269),d=a.i(572131),e=a.i(823292),f=a.i(619089),g=a.i(901615),h=a.i(368114),i=a.i(420594),j=a.i(700629);a.s(["AskForm",0,function({models:a=[],defaultLabel:k="your provider"}){let[l,m]=(0,d.useState)(""),[n,o]=(0,d.useState)(""),[p,q]=(0,d.useState)(null),[r,s]=(0,d.useTransition)(),t=()=>{l.trim()&&!r&&(q(null),s(async()=>{try{let a=await (0,i.f)(l,n||null);a.ok?(m(""),e.c.success(a.message??"Sent.")):q(a.error)}catch{q("Watchbell didn't answer. Check that it's still running, then try again.")}}))};return(0,b.jsxs)("form",{onSubmit:a=>{a.preventDefault(),t()},children:[(0,b.jsx)("label",{htmlFor:"ask-in",className:"mb-1.5 block font-medium",children:"Ask about your apps, alerts, deployments or databases"}),(0,b.jsx)("textarea",{id:"ask-in",className:(0,h.f)(f.S,"min-h-22 w-full"),placeholder:"For example: which apps need attention before the weekend?",value:l,maxLength:2e3,"aria-describedby":"ask-hint ask-count","aria-invalid":!!p||void 0,onChange:a=>m(a.target.value),onKeyDown:a=>{"Enter"===a.key&&(a.ctrlKey||a.metaKey)&&(a.preventDefault(),t())}}),p&&(0,b.jsx)("p",{role:"alert",className:"mt-1.5 text-[13px] text-err",children:p}),(0,b.jsxs)("div",{className:"mt-2 flex flex-wrap items-center gap-3",children:[(0,b.jsx)("span",{id:"ask-hint",className:"min-w-[220px] flex-1 text-[12.5px] text-ink-faint",children:r?(0,b.jsx)(j.f,{}):g.I.hint}),(0,b.jsxs)("span",{id:"ask-count",className:"font-mono text-[12px] text-ink-faint","aria-live":"off",children:[l.length," / ",2e3]}),a.length>0&&(0,b.jsxs)("label",{className:"flex items-center gap-1.5 text-[13px] text-ink-soft",children:[(0,b.jsx)("span",{className:"sr-only",children:"Model"}),(0,b.jsxs)("select",{className:(0,h.f)(f.S,"max-w-[260px] py-1 font-mono text-[12.5px]"),value:n,onChange:a=>o(a.target.value),disabled:r,children:[(0,b.jsxs)("option",{value:"",children:["Default (",k,")"]}),a.map(a=>(0,b.jsx)("option",{value:a.id,children:a.label},a.id))]})]}),(0,b.jsxs)(f.K,{type:"submit",variant:"primary",disabled:r||!l.trim(),children:[(0,b.jsx)(c.f,{size:16,"aria-hidden":!0}),r?"Asking…":"Send"]})]})]})}])}];
2
2
 
3
3
  //# sourceMappingURL=src_app_%28console%29_%28private%29_ai_ask_ask-form_tsx_18ttm9nna_9y6._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[815287,a=>{"use strict";var b=a.i(187924);let c=(0,a.i(449862).f)("outline","download","Download",[["path",{d:"M4 17v2a2 2 0 0 0 2 2h12a2 2 0 0 0 2 -2v-2",key:"svg-0"}],["path",{d:"M7 11l5 5l5 -5",key:"svg-1"}],["path",{d:"M12 4l0 12",key:"svg-2"}]]);var d=a.i(572131),e=a.i(823292),f=a.i(619089),g=a.i(405050);let h=(0,g.createServerReference)("401811e23bf9221ba74b844d62b8cbdd342df95647",g.callServer,void 0,g.findSourceMapURL,"exportLogsCsv");a.s(["ExportButton",0,function({params:a}){let[g,i]=(0,d.useTransition)();return(0,b.jsxs)(f.K,{onClick:()=>i(async()=>{try{let b=await h(a);if(!b.ok||!b.data)return void e.c.error(b.ok?"Nothing to export.":b.error);let c=URL.createObjectURL(new Blob(["\uFEFF",b.data.csv],{type:"text/csv;charset=utf-8"})),d=document.createElement("a");d.href=c,d.download=`watchbell-ai-logs-${new Date().toISOString().slice(0,10)}.csv`,document.body.append(d),d.click(),d.remove(),URL.revokeObjectURL(c),e.c.success(b.message??"Exported.")}catch{e.c.error("Watchbell didn't answer. Check that it's still running, then try again.")}}),disabled:g,children:[(0,b.jsx)(c,{size:16,"aria-hidden":!0}),g?"Exporting...":"Export CSV"]})}],815287)}];
1
+ module.exports=[815287,a=>{"use strict";var b=a.i(187924);let c=(0,a.i(449862).f)("outline","download","Download",[["path",{d:"M4 17v2a2 2 0 0 0 2 2h12a2 2 0 0 0 2 -2v-2",key:"svg-0"}],["path",{d:"M7 11l5 5l5 -5",key:"svg-1"}],["path",{d:"M12 4l0 12",key:"svg-2"}]]);var d=a.i(572131),e=a.i(823292),f=a.i(619089),g=a.i(405050);let h=(0,g.createServerReference)("4099201406f2641554134181a92406c2109c907b4d",g.callServer,void 0,g.findSourceMapURL,"exportLogsCsv");a.s(["ExportButton",0,function({params:a}){let[g,i]=(0,d.useTransition)();return(0,b.jsxs)(f.K,{onClick:()=>i(async()=>{try{let b=await h(a);if(!b.ok||!b.data)return void e.c.error(b.ok?"Nothing to export.":b.error);let c=URL.createObjectURL(new Blob(["\uFEFF",b.data.csv],{type:"text/csv;charset=utf-8"})),d=document.createElement("a");d.href=c,d.download=`watchbell-ai-logs-${new Date().toISOString().slice(0,10)}.csv`,document.body.append(d),d.click(),d.remove(),URL.revokeObjectURL(c),e.c.success(b.message??"Exported.")}catch{e.c.error("Watchbell didn't answer. Check that it's still running, then try again.")}}),disabled:g,children:[(0,b.jsx)(c,{size:16,"aria-hidden":!0}),g?"Exporting...":"Export CSV"]})}],815287)}];
2
2
 
3
3
  //# sourceMappingURL=src_app_%28console%29_%28private%29_ai_logs_export-button_tsx_1k-crb88n1za_._.js.map