watchbell 1.2.1 → 1.2.2

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 (649) hide show
  1. package/README.md +34 -11
  2. package/bin/watchbell.mjs +731 -44
  3. package/package.json +1 -1
  4. package/scripts/node-runtime.mjs +166 -0
  5. package/scripts/selfhost-log.mjs +116 -0
  6. package/server/.next/BUILD_ID +1 -1
  7. package/server/.next/build-manifest.json +3 -3
  8. package/server/.next/prerender-manifest.json +3 -3
  9. package/server/.next/server/app/(console)/(private)/ai/agents/page/server-reference-manifest.json +11 -11
  10. package/server/.next/server/app/(console)/(private)/ai/agents/page.js +47 -46
  11. package/server/.next/server/app/(console)/(private)/ai/agents/page.js.nft.json +1 -1
  12. package/server/.next/server/app/(console)/(private)/ai/agents/page_client-reference-manifest.js +1 -1
  13. package/server/.next/server/app/(console)/(private)/ai/ask/page/server-reference-manifest.json +10 -10
  14. package/server/.next/server/app/(console)/(private)/ai/ask/page.js +47 -46
  15. package/server/.next/server/app/(console)/(private)/ai/ask/page.js.nft.json +1 -1
  16. package/server/.next/server/app/(console)/(private)/ai/ask/page_client-reference-manifest.js +1 -1
  17. package/server/.next/server/app/(console)/(private)/ai/connect/page/server-reference-manifest.json +9 -9
  18. package/server/.next/server/app/(console)/(private)/ai/connect/page.js +47 -46
  19. package/server/.next/server/app/(console)/(private)/ai/connect/page.js.nft.json +1 -1
  20. package/server/.next/server/app/(console)/(private)/ai/connect/page_client-reference-manifest.js +1 -1
  21. package/server/.next/server/app/(console)/(private)/ai/keys/page/server-reference-manifest.json +12 -12
  22. package/server/.next/server/app/(console)/(private)/ai/keys/page.js +47 -46
  23. package/server/.next/server/app/(console)/(private)/ai/keys/page.js.nft.json +1 -1
  24. package/server/.next/server/app/(console)/(private)/ai/keys/page_client-reference-manifest.js +1 -1
  25. package/server/.next/server/app/(console)/(private)/ai/logs/page/server-reference-manifest.json +10 -10
  26. package/server/.next/server/app/(console)/(private)/ai/logs/page.js +47 -46
  27. package/server/.next/server/app/(console)/(private)/ai/logs/page.js.nft.json +1 -1
  28. package/server/.next/server/app/(console)/(private)/ai/logs/page_client-reference-manifest.js +1 -1
  29. package/server/.next/server/app/(console)/(private)/ai/models/page/server-reference-manifest.json +19 -19
  30. package/server/.next/server/app/(console)/(private)/ai/models/page.js +47 -46
  31. package/server/.next/server/app/(console)/(private)/ai/models/page.js.nft.json +1 -1
  32. package/server/.next/server/app/(console)/(private)/ai/models/page_client-reference-manifest.js +1 -1
  33. package/server/.next/server/app/(console)/(private)/ai/page/server-reference-manifest.json +9 -9
  34. package/server/.next/server/app/(console)/(private)/ai/page.js +47 -46
  35. package/server/.next/server/app/(console)/(private)/ai/page.js.nft.json +1 -1
  36. package/server/.next/server/app/(console)/(private)/ai/page_client-reference-manifest.js +1 -1
  37. package/server/.next/server/app/(console)/(private)/ai/playground/page/server-reference-manifest.json +12 -12
  38. package/server/.next/server/app/(console)/(private)/ai/playground/page.js +47 -46
  39. package/server/.next/server/app/(console)/(private)/ai/playground/page.js.nft.json +1 -1
  40. package/server/.next/server/app/(console)/(private)/ai/playground/page_client-reference-manifest.js +1 -1
  41. package/server/.next/server/app/(console)/(private)/ai/providers/page/server-reference-manifest.json +15 -15
  42. package/server/.next/server/app/(console)/(private)/ai/providers/page.js +47 -46
  43. package/server/.next/server/app/(console)/(private)/ai/providers/page.js.nft.json +1 -1
  44. package/server/.next/server/app/(console)/(private)/ai/providers/page_client-reference-manifest.js +1 -1
  45. package/server/.next/server/app/(console)/(private)/ai/quota/page/server-reference-manifest.json +10 -10
  46. package/server/.next/server/app/(console)/(private)/ai/quota/page.js +47 -46
  47. package/server/.next/server/app/(console)/(private)/ai/quota/page.js.nft.json +1 -1
  48. package/server/.next/server/app/(console)/(private)/ai/quota/page_client-reference-manifest.js +1 -1
  49. package/server/.next/server/app/(console)/(private)/ai/usage/page/server-reference-manifest.json +10 -10
  50. package/server/.next/server/app/(console)/(private)/ai/usage/page.js +47 -46
  51. package/server/.next/server/app/(console)/(private)/ai/usage/page.js.nft.json +1 -1
  52. package/server/.next/server/app/(console)/(private)/ai/usage/page_client-reference-manifest.js +1 -1
  53. package/server/.next/server/app/(console)/(private)/api-docs/[[...op]]/page/server-reference-manifest.json +9 -9
  54. package/server/.next/server/app/(console)/(private)/api-docs/[[...op]]/page.js +47 -46
  55. package/server/.next/server/app/(console)/(private)/api-docs/[[...op]]/page.js.nft.json +1 -1
  56. package/server/.next/server/app/(console)/(private)/api-docs/[[...op]]/page_client-reference-manifest.js +1 -1
  57. package/server/.next/server/app/(console)/(private)/auto-actions/page/server-reference-manifest.json +10 -10
  58. package/server/.next/server/app/(console)/(private)/auto-actions/page.js +47 -46
  59. package/server/.next/server/app/(console)/(private)/auto-actions/page.js.nft.json +1 -1
  60. package/server/.next/server/app/(console)/(private)/auto-actions/page_client-reference-manifest.js +1 -1
  61. package/server/.next/server/app/(console)/alerts/page/server-reference-manifest.json +22 -22
  62. package/server/.next/server/app/(console)/alerts/page.js +47 -46
  63. package/server/.next/server/app/(console)/alerts/page.js.nft.json +1 -1
  64. package/server/.next/server/app/(console)/alerts/page_client-reference-manifest.js +1 -1
  65. package/server/.next/server/app/(console)/apps/[id]/page/server-reference-manifest.json +26 -26
  66. package/server/.next/server/app/(console)/apps/[id]/page.js +47 -46
  67. package/server/.next/server/app/(console)/apps/[id]/page.js.nft.json +1 -1
  68. package/server/.next/server/app/(console)/apps/[id]/page_client-reference-manifest.js +1 -1
  69. package/server/.next/server/app/(console)/apps/page/server-reference-manifest.json +12 -12
  70. package/server/.next/server/app/(console)/apps/page.js +47 -46
  71. package/server/.next/server/app/(console)/apps/page.js.nft.json +1 -1
  72. package/server/.next/server/app/(console)/apps/page_client-reference-manifest.js +1 -1
  73. package/server/.next/server/app/(console)/backups/page/server-reference-manifest.json +12 -12
  74. package/server/.next/server/app/(console)/backups/page.js +47 -46
  75. package/server/.next/server/app/(console)/backups/page.js.nft.json +1 -1
  76. package/server/.next/server/app/(console)/backups/page_client-reference-manifest.js +1 -1
  77. package/server/.next/server/app/(console)/catalog/page/server-reference-manifest.json +9 -9
  78. package/server/.next/server/app/(console)/catalog/page.js +47 -46
  79. package/server/.next/server/app/(console)/catalog/page.js.nft.json +1 -1
  80. package/server/.next/server/app/(console)/catalog/page_client-reference-manifest.js +1 -1
  81. package/server/.next/server/app/(console)/connections/page/server-reference-manifest.json +20 -20
  82. package/server/.next/server/app/(console)/connections/page.js +47 -46
  83. package/server/.next/server/app/(console)/connections/page.js.nft.json +1 -1
  84. package/server/.next/server/app/(console)/connections/page_client-reference-manifest.js +1 -1
  85. package/server/.next/server/app/(console)/d1/page/server-reference-manifest.json +9 -9
  86. package/server/.next/server/app/(console)/d1/page.js +47 -46
  87. package/server/.next/server/app/(console)/d1/page.js.nft.json +1 -1
  88. package/server/.next/server/app/(console)/d1/page_client-reference-manifest.js +1 -1
  89. package/server/.next/server/app/(console)/deployments/page/server-reference-manifest.json +15 -15
  90. package/server/.next/server/app/(console)/deployments/page.js +47 -46
  91. package/server/.next/server/app/(console)/deployments/page.js.nft.json +1 -1
  92. package/server/.next/server/app/(console)/deployments/page_client-reference-manifest.js +1 -1
  93. package/server/.next/server/app/(console)/dns/page/server-reference-manifest.json +16 -16
  94. package/server/.next/server/app/(console)/dns/page.js +47 -46
  95. package/server/.next/server/app/(console)/dns/page.js.nft.json +1 -1
  96. package/server/.next/server/app/(console)/dns/page_client-reference-manifest.js +1 -1
  97. package/server/.next/server/app/(console)/domains/page/server-reference-manifest.json +11 -11
  98. package/server/.next/server/app/(console)/domains/page.js +47 -46
  99. package/server/.next/server/app/(console)/domains/page.js.nft.json +1 -1
  100. package/server/.next/server/app/(console)/domains/page_client-reference-manifest.js +1 -1
  101. package/server/.next/server/app/(console)/events/page/server-reference-manifest.json +9 -9
  102. package/server/.next/server/app/(console)/events/page.js +47 -46
  103. package/server/.next/server/app/(console)/events/page.js.nft.json +1 -1
  104. package/server/.next/server/app/(console)/events/page_client-reference-manifest.js +1 -1
  105. package/server/.next/server/app/(console)/firebase/page/server-reference-manifest.json +16 -16
  106. package/server/.next/server/app/(console)/firebase/page.js +47 -46
  107. package/server/.next/server/app/(console)/firebase/page.js.nft.json +1 -1
  108. package/server/.next/server/app/(console)/firebase/page_client-reference-manifest.js +1 -1
  109. package/server/.next/server/app/(console)/logs/page/server-reference-manifest.json +10 -10
  110. package/server/.next/server/app/(console)/logs/page.js +47 -46
  111. package/server/.next/server/app/(console)/logs/page.js.nft.json +1 -1
  112. package/server/.next/server/app/(console)/logs/page_client-reference-manifest.js +1 -1
  113. package/server/.next/server/app/(console)/manage/sections/page/server-reference-manifest.json +10 -10
  114. package/server/.next/server/app/(console)/manage/sections/page.js +47 -46
  115. package/server/.next/server/app/(console)/manage/sections/page.js.nft.json +1 -1
  116. package/server/.next/server/app/(console)/manage/sections/page_client-reference-manifest.js +1 -1
  117. package/server/.next/server/app/(console)/neon/page/server-reference-manifest.json +20 -20
  118. package/server/.next/server/app/(console)/neon/page.js +47 -46
  119. package/server/.next/server/app/(console)/neon/page.js.nft.json +1 -1
  120. package/server/.next/server/app/(console)/neon/page_client-reference-manifest.js +1 -1
  121. package/server/.next/server/app/(console)/overview/page/server-reference-manifest.json +19 -19
  122. package/server/.next/server/app/(console)/overview/page.js +47 -46
  123. package/server/.next/server/app/(console)/overview/page.js.nft.json +1 -1
  124. package/server/.next/server/app/(console)/overview/page_client-reference-manifest.js +1 -1
  125. package/server/.next/server/app/(console)/repos/[id]/page/server-reference-manifest.json +10 -10
  126. package/server/.next/server/app/(console)/repos/[id]/page.js +47 -46
  127. package/server/.next/server/app/(console)/repos/[id]/page.js.nft.json +1 -1
  128. package/server/.next/server/app/(console)/repos/[id]/page_client-reference-manifest.js +1 -1
  129. package/server/.next/server/app/(console)/repos/page/server-reference-manifest.json +9 -9
  130. package/server/.next/server/app/(console)/repos/page.js +47 -46
  131. package/server/.next/server/app/(console)/repos/page.js.nft.json +1 -1
  132. package/server/.next/server/app/(console)/repos/page_client-reference-manifest.js +1 -1
  133. package/server/.next/server/app/(console)/settings/page/server-reference-manifest.json +19 -19
  134. package/server/.next/server/app/(console)/settings/page.js +47 -46
  135. package/server/.next/server/app/(console)/settings/page.js.nft.json +1 -1
  136. package/server/.next/server/app/(console)/settings/page_client-reference-manifest.js +1 -1
  137. package/server/.next/server/app/(console)/sql/page/server-reference-manifest.json +16 -16
  138. package/server/.next/server/app/(console)/sql/page.js +47 -46
  139. package/server/.next/server/app/(console)/sql/page.js.nft.json +1 -1
  140. package/server/.next/server/app/(console)/sql/page_client-reference-manifest.js +1 -1
  141. package/server/.next/server/app/(console)/status/page/server-reference-manifest.json +9 -9
  142. package/server/.next/server/app/(console)/status/page.js +47 -46
  143. package/server/.next/server/app/(console)/status/page.js.nft.json +1 -1
  144. package/server/.next/server/app/(console)/status/page_client-reference-manifest.js +1 -1
  145. package/server/.next/server/app/(console)/supabase/page/server-reference-manifest.json +30 -30
  146. package/server/.next/server/app/(console)/supabase/page.js +47 -46
  147. package/server/.next/server/app/(console)/supabase/page.js.nft.json +1 -1
  148. package/server/.next/server/app/(console)/supabase/page_client-reference-manifest.js +1 -1
  149. package/server/.next/server/app/(console)/topology/page/server-reference-manifest.json +9 -9
  150. package/server/.next/server/app/(console)/topology/page.js +47 -46
  151. package/server/.next/server/app/(console)/topology/page.js.nft.json +1 -1
  152. package/server/.next/server/app/(console)/topology/page_client-reference-manifest.js +1 -1
  153. package/server/.next/server/app/(console)/turso/page/server-reference-manifest.json +9 -9
  154. package/server/.next/server/app/(console)/turso/page.js +47 -46
  155. package/server/.next/server/app/(console)/turso/page.js.nft.json +1 -1
  156. package/server/.next/server/app/(console)/turso/page_client-reference-manifest.js +1 -1
  157. package/server/.next/server/app/(console)/upstash/page/server-reference-manifest.json +9 -9
  158. package/server/.next/server/app/(console)/upstash/page.js +47 -46
  159. package/server/.next/server/app/(console)/upstash/page.js.nft.json +1 -1
  160. package/server/.next/server/app/(console)/upstash/page_client-reference-manifest.js +1 -1
  161. package/server/.next/server/app/(console)/uptime/page/server-reference-manifest.json +23 -23
  162. package/server/.next/server/app/(console)/uptime/page.js +47 -46
  163. package/server/.next/server/app/(console)/uptime/page.js.nft.json +1 -1
  164. package/server/.next/server/app/(console)/uptime/page_client-reference-manifest.js +1 -1
  165. package/server/.next/server/app/(console)/welcome/page/server-reference-manifest.json +14 -14
  166. package/server/.next/server/app/(console)/welcome/page.js +47 -46
  167. package/server/.next/server/app/(console)/welcome/page.js.nft.json +1 -1
  168. package/server/.next/server/app/(console)/welcome/page_client-reference-manifest.js +1 -1
  169. package/server/.next/server/app/_global-error/page/server-reference-manifest.json +1 -1
  170. package/server/.next/server/app/_global-error/page.js.nft.json +1 -1
  171. package/server/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  172. package/server/.next/server/app/_global-error.html +1 -1
  173. package/server/.next/server/app/_global-error.rsc +4 -4
  174. package/server/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +3 -3
  175. package/server/.next/server/app/_global-error.segments/_full.segment.rsc +4 -4
  176. package/server/.next/server/app/_global-error.segments/_tree.segment.rsc +2 -2
  177. package/server/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  178. package/server/.next/server/app/_not-found/page.js.nft.json +1 -1
  179. package/server/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  180. package/server/.next/server/app/_not-found.html +1 -1
  181. package/server/.next/server/app/_not-found.rsc +5 -5
  182. package/server/.next/server/app/_not-found.segments/_full.segment.rsc +5 -5
  183. package/server/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +4 -4
  184. package/server/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  185. package/server/.next/server/app/account/password/page/server-reference-manifest.json +2 -2
  186. package/server/.next/server/app/account/password/page.js.nft.json +1 -1
  187. package/server/.next/server/app/account/password/page_client-reference-manifest.js +1 -1
  188. package/server/.next/server/app/api/collect/route/server-reference-manifest.json +7 -7
  189. package/server/.next/server/app/api/collect/route.js +24 -24
  190. package/server/.next/server/app/api/collect/route.js.nft.json +1 -1
  191. package/server/.next/server/app/api/daily/route/server-reference-manifest.json +7 -7
  192. package/server/.next/server/app/api/daily/route.js +24 -24
  193. package/server/.next/server/app/api/daily/route.js.nft.json +1 -1
  194. package/server/.next/server/app/api/ping/[...parts]/route.js.nft.json +1 -1
  195. package/server/.next/server/app/api/status/route.js.nft.json +1 -1
  196. package/server/.next/server/app/api/telegram/webhook/route/server-reference-manifest.json +7 -7
  197. package/server/.next/server/app/api/telegram/webhook/route.js +23 -23
  198. package/server/.next/server/app/api/telegram/webhook/route.js.nft.json +1 -1
  199. package/server/.next/server/app/api/v1/advice/route.js +3 -3
  200. package/server/.next/server/app/api/v1/advice/route.js.nft.json +1 -1
  201. package/server/.next/server/app/api/v1/ai/chat/completions/route.js +1 -1
  202. package/server/.next/server/app/api/v1/ai/chat/completions/route.js.nft.json +1 -1
  203. package/server/.next/server/app/api/v1/ai/models/route.js +1 -1
  204. package/server/.next/server/app/api/v1/ai/models/route.js.nft.json +1 -1
  205. package/server/.next/server/app/api/v1/ai/questions/[id]/route.js.nft.json +1 -1
  206. package/server/.next/server/app/api/v1/ai/questions/route.js +3 -3
  207. package/server/.next/server/app/api/v1/ai/questions/route.js.nft.json +1 -1
  208. package/server/.next/server/app/api/v1/mcp/route.js +2 -2
  209. package/server/.next/server/app/api/v1/mcp/route.js.nft.json +1 -1
  210. package/server/.next/server/app/api/v1/me/route.js.nft.json +1 -1
  211. package/server/.next/server/app/api/v1/openapi.json/route.js.nft.json +1 -1
  212. package/server/.next/server/app/api/v1/status/apps/[app]/route.js +3 -3
  213. package/server/.next/server/app/api/v1/status/apps/[app]/route.js.nft.json +1 -1
  214. package/server/.next/server/app/api/v1/status/route.js +3 -3
  215. package/server/.next/server/app/api/v1/status/route.js.nft.json +1 -1
  216. package/server/.next/server/app/api/watchdog/route.js +4 -4
  217. package/server/.next/server/app/api/watchdog/route.js.nft.json +1 -1
  218. package/server/.next/server/app/auth/confirm/route.js.nft.json +1 -1
  219. package/server/.next/server/app/auth/google/callback/route.js +2 -2
  220. package/server/.next/server/app/auth/google/callback/route.js.nft.json +1 -1
  221. package/server/.next/server/app/auth/google/create/callback/route.js.nft.json +1 -1
  222. package/server/.next/server/app/auth/not-member/route.js.nft.json +1 -1
  223. package/server/.next/server/app/auth/session-ended/route.js.nft.json +1 -1
  224. package/server/.next/server/app/invite/page/server-reference-manifest.json +2 -2
  225. package/server/.next/server/app/invite/page.js.nft.json +1 -1
  226. package/server/.next/server/app/invite/page_client-reference-manifest.js +1 -1
  227. package/server/.next/server/app/mfa/page/server-reference-manifest.json +2 -2
  228. package/server/.next/server/app/mfa/page.js.nft.json +1 -1
  229. package/server/.next/server/app/mfa/page_client-reference-manifest.js +1 -1
  230. package/server/.next/server/app/mfa/setup/page/server-reference-manifest.json +3 -3
  231. package/server/.next/server/app/mfa/setup/page.js.nft.json +1 -1
  232. package/server/.next/server/app/mfa/setup/page_client-reference-manifest.js +1 -1
  233. package/server/.next/server/app/page/server-reference-manifest.json +1 -1
  234. package/server/.next/server/app/page.js.nft.json +1 -1
  235. package/server/.next/server/app/page_client-reference-manifest.js +1 -1
  236. package/server/.next/server/app/s/[slug]/badge/[file]/route.js.nft.json +1 -1
  237. package/server/.next/server/app/s/[slug]/page/server-reference-manifest.json +1 -1
  238. package/server/.next/server/app/s/[slug]/page.js.nft.json +1 -1
  239. package/server/.next/server/app/s/[slug]/page_client-reference-manifest.js +1 -1
  240. package/server/.next/server/app/setup/page/server-reference-manifest.json +2 -2
  241. package/server/.next/server/app/setup/page.js.nft.json +1 -1
  242. package/server/.next/server/app/setup/page_client-reference-manifest.js +1 -1
  243. package/server/.next/server/app/signin/page/server-reference-manifest.json +3 -3
  244. package/server/.next/server/app/signin/page.js.nft.json +1 -1
  245. package/server/.next/server/app/signin/page_client-reference-manifest.js +1 -1
  246. package/server/.next/server/chunks/{[externals]__0dolpidprtypa._.js → [externals]__0y_x27mdj85p4._.js} +1 -1
  247. package/server/.next/server/chunks/{[externals]__0pfohce9kbhcc._.js → [externals]__1fzfzd0ia0sk6._.js} +1 -1
  248. package/server/.next/server/chunks/{[externals]__1ou2ofma806s1._.js → [externals]__1qqyrxnupegg3._.js} +1 -1
  249. package/server/.next/server/chunks/{[root-of-the-server]__0wbhuhlkn_ueu._.js → [root-of-the-server]__0-ytbad9hn7uc._.js} +2 -2
  250. package/server/.next/server/chunks/{[root-of-the-server]__1cbg6fvn16har._.js → [root-of-the-server]__0032rbj2s87zo._.js} +2 -2
  251. package/server/.next/server/chunks/{[root-of-the-server]__163-eo1vkbzx1._.js → [root-of-the-server]__03i6yscmtbhhg._.js} +2 -2
  252. package/server/.next/server/chunks/{[root-of-the-server]__1x9u88f9545aa._.js → [root-of-the-server]__05qcc-0e8z1u8._.js} +2 -2
  253. package/server/.next/server/chunks/{[root-of-the-server]__1p1k8nq50cwfy._.js → [root-of-the-server]__07bw6o0jc31yr._.js} +2 -2
  254. package/server/.next/server/chunks/{[root-of-the-server]__14pgqdfdkuopi._.js → [root-of-the-server]__07eo--c90cju2._.js} +2 -2
  255. package/server/.next/server/chunks/{[root-of-the-server]__0iysztx_xio84._.js → [root-of-the-server]__07mzeijv31avl._.js} +2 -2
  256. package/server/.next/server/chunks/{[root-of-the-server]__05ht00n_eiksb._.js → [root-of-the-server]__090in165mp6av._.js} +1 -1
  257. package/server/.next/server/chunks/{[root-of-the-server]__0403hy52a1qcu._.js → [root-of-the-server]__0_nljmqhjcept._.js} +1 -1
  258. package/server/.next/server/chunks/{[root-of-the-server]__08k886n7y6f_3._.js → [root-of-the-server]__0awtaloe4_8am._.js} +1 -1
  259. package/server/.next/server/chunks/{[root-of-the-server]__0b136ghrklbbn._.js → [root-of-the-server]__0dsy-9ts8s-pn._.js} +1 -1
  260. package/server/.next/server/chunks/{[root-of-the-server]__0hvejly8-nlkq._.js → [root-of-the-server]__0g1cifa7hd790._.js} +1 -1
  261. package/server/.next/server/chunks/{[root-of-the-server]__0pwn8go30dm_3._.js → [root-of-the-server]__0hblpf7wqke-j._.js} +2 -2
  262. package/server/.next/server/chunks/[root-of-the-server]__0hedtycoyydoc._.js +3 -0
  263. package/server/.next/server/chunks/{[root-of-the-server]__0kgmy-sltdtb_._.js → [root-of-the-server]__0hlyn_aj72sn5._.js} +2 -2
  264. package/server/.next/server/chunks/{[root-of-the-server]__0w8qhgmo5c23i._.js → [root-of-the-server]__0hnljrh9qi9t-._.js} +2 -2
  265. package/server/.next/server/chunks/{[root-of-the-server]__0xgl1cg3z00iz._.js → [root-of-the-server]__0hrtz5c_46jkw._.js} +1 -1
  266. package/server/.next/server/chunks/{[root-of-the-server]__0cskq__p3tja8._.js → [root-of-the-server]__0ihedjvt-l2-u._.js} +2 -2
  267. package/server/.next/server/chunks/[root-of-the-server]__0iicsi0n7tfa5._.js +3 -0
  268. package/server/.next/server/chunks/{[root-of-the-server]__0dc0pz57q73va._.js → [root-of-the-server]__0kp0yx909wtab._.js} +1 -1
  269. package/server/.next/server/chunks/{[root-of-the-server]__1w-yk3b07wcf1._.js → [root-of-the-server]__0l6_iao04u72h._.js} +2 -2
  270. package/server/.next/server/chunks/{[root-of-the-server]__1yzaj148hs9a1._.js → [root-of-the-server]__0l9ja3579qrju._.js} +2 -2
  271. package/server/.next/server/chunks/{[root-of-the-server]__1r9j5o80kocvz._.js → [root-of-the-server]__0lu91s5izfu0p._.js} +2 -2
  272. package/server/.next/server/chunks/{[root-of-the-server]__0_64c807n6q9e._.js → [root-of-the-server]__0noc6l63d3l9w._.js} +2 -2
  273. package/server/.next/server/chunks/{[root-of-the-server]__04zuzs7oruu3o._.js → [root-of-the-server]__0nrg8zzqizk69._.js} +2 -2
  274. package/server/.next/server/chunks/{[root-of-the-server]__1lbmzw1j9jufm._.js → [root-of-the-server]__0oy0hcm48kl-q._.js} +2 -2
  275. package/server/.next/server/chunks/{[root-of-the-server]__0l5v9itfv9nhr._.js → [root-of-the-server]__0q-x05ekhpohj._.js} +1 -1
  276. package/server/.next/server/chunks/[root-of-the-server]__0r1men25anfgb._.js +3 -0
  277. package/server/.next/server/chunks/{[root-of-the-server]__01estsu5k8l4t._.js → [root-of-the-server]__0s8vjz6urzn76._.js} +1 -1
  278. package/server/.next/server/chunks/{[root-of-the-server]__04ruh9diphqtp._.js → [root-of-the-server]__0u3un538__ca5._.js} +2 -2
  279. package/server/.next/server/chunks/{[root-of-the-server]__1ry92m8xlcebk._.js → [root-of-the-server]__0v-gc-c_e8pwl._.js} +2 -2
  280. package/server/.next/server/chunks/{[root-of-the-server]__0t9o5ca5bzg0p._.js → [root-of-the-server]__0x487cn6dsn12._.js} +2 -2
  281. package/server/.next/server/chunks/{[root-of-the-server]__11qvos_7nf8z8._.js → [root-of-the-server]__0yuyew8m9dc6-._.js} +1 -1
  282. package/server/.next/server/chunks/[root-of-the-server]__0zmvf4j8e2gno._.js +3 -0
  283. package/server/.next/server/chunks/{[root-of-the-server]__1w9hei9xe1odr._.js → [root-of-the-server]__0zni_2pv2fdgb._.js} +2 -2
  284. package/server/.next/server/chunks/[root-of-the-server]__10wbld2tja51-._.js +3 -0
  285. package/server/.next/server/chunks/{[root-of-the-server]__10mob-6xfy8b0._.js → [root-of-the-server]__125fkw52kl2ty._.js} +2 -2
  286. package/server/.next/server/chunks/[root-of-the-server]__13hrm9c61i7uk._.js +3 -0
  287. package/server/.next/server/chunks/[root-of-the-server]__14ou3bydfm0ms._.js +3 -0
  288. package/server/.next/server/chunks/{[root-of-the-server]__1xrt934xl5wbd._.js → [root-of-the-server]__15dhjj384tuw_._.js} +2 -2
  289. package/server/.next/server/chunks/{[root-of-the-server]__1vmls0bkau925._.js → [root-of-the-server]__16waq6rapvngp._.js} +2 -2
  290. package/server/.next/server/chunks/[root-of-the-server]__18eg-mk5loj_8._.js +3 -0
  291. package/server/.next/server/chunks/[root-of-the-server]__19ylbgd65iej4._.js +3 -0
  292. package/server/.next/server/chunks/{[root-of-the-server]__1vutb2z9gw8el._.js → [root-of-the-server]__1adw_bv2u89kc._.js} +1 -1
  293. package/server/.next/server/chunks/[root-of-the-server]__1brl5otpkvgd3._.js +3 -0
  294. package/server/.next/server/chunks/{[root-of-the-server]__00wz8qo4hgq2i._.js → [root-of-the-server]__1c78cu7kb9vkl._.js} +2 -2
  295. package/server/.next/server/chunks/[root-of-the-server]__1d5y0cc5mg_07._.js +3 -0
  296. package/server/.next/server/chunks/{[root-of-the-server]__1zcp6yrat15t5._.js → [root-of-the-server]__1dbz126yujh44._.js} +2 -2
  297. package/server/.next/server/chunks/{[root-of-the-server]__0m9648az7bkus._.js → [root-of-the-server]__1dh4di29mjq9y._.js} +2 -2
  298. package/server/.next/server/chunks/[root-of-the-server]__1e1l75cf48ph2._.js +3 -0
  299. package/server/.next/server/chunks/[root-of-the-server]__1eu2_f44as742._.js +3 -0
  300. package/server/.next/server/chunks/{[root-of-the-server]__1-bvfylgbkjso._.js → [root-of-the-server]__1jsf0jf_ljpsm._.js} +2 -2
  301. package/server/.next/server/chunks/{[root-of-the-server]__1fj8d0drhw1yx._.js → [root-of-the-server]__1lerees-l5-6c._.js} +2 -2
  302. package/server/.next/server/chunks/{[root-of-the-server]__1sb8d4e5b5pdl._.js → [root-of-the-server]__1lj1f2w2-w8nw._.js} +2 -2
  303. package/server/.next/server/chunks/[root-of-the-server]__1mim39ea6-dm1._.js +3 -0
  304. package/server/.next/server/chunks/{[root-of-the-server]__0sfnhgc5reef1._.js → [root-of-the-server]__1ooxluowhatjt._.js} +2 -2
  305. package/server/.next/server/chunks/[root-of-the-server]__1p0zd1rtbkj9r._.js +3 -0
  306. package/server/.next/server/chunks/[root-of-the-server]__1pvx0izh1m_0_._.js +3 -0
  307. package/server/.next/server/chunks/{[root-of-the-server]__05jzukkrp2pvu._.js → [root-of-the-server]__1rpgddeg42i-q._.js} +2 -2
  308. package/server/.next/server/chunks/[root-of-the-server]__1v4i7ytwadml8._.js +3 -0
  309. package/server/.next/server/chunks/[root-of-the-server]__1vvg0ur3_7o0p._.js +3 -0
  310. package/server/.next/server/chunks/[root-of-the-server]__1vwz2r58cojht._.js +3 -0
  311. package/server/.next/server/chunks/{[root-of-the-server]__02s57amypj_ye._.js → [root-of-the-server]__1w7dv8zm-k_oa._.js} +2 -2
  312. package/server/.next/server/chunks/[root-of-the-server]__1x7en4waq21dd._.js +3 -0
  313. package/server/.next/server/chunks/[root-of-the-server]__1x813cg-b9rls._.js +3 -0
  314. package/server/.next/server/chunks/{[root-of-the-server]__1147qf6sf3ru4._.js → [root-of-the-server]__1xl6_spngp6k3._.js} +2 -2
  315. package/server/.next/server/chunks/{[root-of-the-server]__1cwr95yi8preu._.js → [root-of-the-server]__1xxmlb3soqzom._.js} +2 -2
  316. package/server/.next/server/chunks/[root-of-the-server]__1zg653esm3__p._.js +3 -0
  317. package/server/.next/server/chunks/{[root-of-the-server]__1w_wtn9h9eu93._.js → [root-of-the-server]__1zvoez8iapsem._.js} +2 -2
  318. package/server/.next/server/chunks/[root-of-the-server]__209g3_0l-y67u._.js +3 -0
  319. package/server/.next/server/chunks/[root-of-the-server]__20pu-tixzpeev._.js +3 -0
  320. package/server/.next/server/chunks/_004c7-39glldb._.js +4 -4
  321. package/server/.next/server/chunks/_09l75j3ey14tc._.js +1 -1
  322. package/server/.next/server/chunks/_0duxuj4kmjibl._.js +41 -0
  323. package/server/.next/server/chunks/_0gz8ldqeokdtn._.js +1 -1
  324. package/server/.next/server/chunks/{_1msi9fy888xna._.js → _0if5sw58tii_3._.js} +2 -2
  325. package/server/.next/server/chunks/_0kmhvts35imzs._.js +4 -4
  326. package/server/.next/server/chunks/_0l_hz-8cj94r7._.js +3 -0
  327. package/server/.next/server/chunks/_0n-wbmmvp4omq._.js +1 -1
  328. package/server/.next/server/chunks/_0ofzzim090ezo._.js +1 -1
  329. package/server/.next/server/chunks/_0q3ygdztfvqq6._.js +3 -0
  330. package/server/.next/server/chunks/_0qmi54vmnlwdv._.js +7 -7
  331. package/server/.next/server/chunks/_0qyupoc7u5hr7._.js +3 -0
  332. package/server/.next/server/chunks/_0rwuppwyvemfj._.js +4 -4
  333. package/server/.next/server/chunks/{_060yqv0qyo-lp._.js → _0ry4553j-m5fp._.js} +3 -3
  334. package/server/.next/server/chunks/_0tz4o-qufnu3l._.js +4 -4
  335. package/server/.next/server/chunks/_0voowig3y32v1._.js +4 -4
  336. package/server/.next/server/chunks/_0wtlf0x_depae._.js +3 -0
  337. package/server/.next/server/chunks/_0zj10_al6r59j._.js +26 -26
  338. package/server/.next/server/chunks/_1-pcsy2hkg0il._.js +3 -0
  339. package/server/.next/server/chunks/_10vh_l3hht4_3._.js +4 -4
  340. package/server/.next/server/chunks/_113ebzq_9i756._.js +41 -0
  341. package/server/.next/server/chunks/{_1z8__gxixw-z-._.js → _16urxazbgm48y._.js} +3 -3
  342. package/server/.next/server/chunks/_1a5vma58w9ytn._.js +4 -4
  343. package/server/.next/server/chunks/_1e_rbkrukj0x9._.js +26 -26
  344. package/server/.next/server/chunks/{_219klbycazlx_._.js → _1g8r-7wcf8sy3._.js} +3 -3
  345. package/server/.next/server/chunks/_1g_prqb_u33e3._.js +7 -7
  346. package/server/.next/server/chunks/_1ihndlef8r00f._.js +41 -0
  347. package/server/.next/server/chunks/_1mwb214-ablfo._.js +41 -0
  348. package/server/.next/server/chunks/_1ngkjn56qmi2x._.js +3 -0
  349. package/server/.next/server/chunks/_1v7q0xdxbqawm._.js +4 -4
  350. package/server/.next/server/chunks/_1xs2ya_n7kb04._.js +4 -4
  351. package/server/.next/server/chunks/node_modules_zod_v4_classic_external_01k1rek7hgd0j.js +4 -4
  352. package/server/.next/server/chunks/src_0--qn984h6czu._.js +1 -1
  353. package/server/.next/server/chunks/src_063xvouojxyoa._.js +1 -1
  354. package/server/.next/server/chunks/{src_0lcm1yhnzhn2d._.js → src_09cgjvch02173._.js} +2 -2
  355. package/server/.next/server/chunks/{src_0v67kw2p2wd_c._.js → src_0c7qu5adpm3gv._.js} +2 -2
  356. package/server/.next/server/chunks/src_1-xw4hea2lvb3._.js +1 -1
  357. package/server/.next/server/chunks/{src_0390zcofy42lg._.js → src_10vyvp9vy_69h._.js} +2 -2
  358. package/server/.next/server/chunks/{src_1v3tf1ye2jzyk._.js → src_13n1vi7uew4iu._.js} +2 -2
  359. package/server/.next/server/chunks/src_1a5yibsjcy1ga._.js +1 -1
  360. package/server/.next/server/chunks/{src_07vqa8fdgu9ah._.js → src_1il7wg_qjxny7._.js} +2 -2
  361. package/server/.next/server/chunks/src_1tux0n9_5b1kr._.js +7 -4
  362. package/server/.next/server/chunks/src_1u-olt84z63rx._.js +1 -1
  363. package/server/.next/server/chunks/src_1wzm081p6qyre._.js +7 -4
  364. package/server/.next/server/chunks/src_20ilndq84j3b3._.js +3 -0
  365. package/server/.next/server/chunks/src_lib_0ayxuk4ftzf2f._.js +6 -0
  366. package/server/.next/server/chunks/src_lib_0ds7lhpop_adf._.js +1 -1
  367. package/server/.next/server/chunks/src_lib_0glcfed-uogyd._.js +1 -1
  368. package/server/.next/server/chunks/src_lib_0krdzz8eu9xh3._.js +6 -0
  369. package/server/.next/server/chunks/src_lib_0ta8sd9jeuw50._.js +10 -9
  370. package/server/.next/server/chunks/src_lib_1-u7dbsavbtb0._.js +6 -0
  371. package/server/.next/server/chunks/src_lib_103kimc1xvc_0._.js +9 -0
  372. package/server/.next/server/chunks/src_lib_1en6omqx66g9d._.js +10 -9
  373. package/server/.next/server/chunks/src_lib_1qo6t00wwitz6._.js +10 -9
  374. package/server/.next/server/chunks/src_lib_1sdusf16f07x-._.js +9 -0
  375. package/server/.next/server/chunks/src_lib_1sz77jjn7xl7o._.js +1 -1
  376. package/server/.next/server/chunks/src_lib_1xwavi_m_li7p._.js +1 -1
  377. package/server/.next/server/chunks/src_lib_206j7lyff31-g._.js +6 -0
  378. package/server/.next/server/chunks/src_lib_collector_runners_ts_12z4gtgikss74._.js +5 -5
  379. package/server/.next/server/chunks/src_lib_data_advisor-db_ts_0rl1ug3iana24._.js +1 -1
  380. package/server/.next/server/chunks/src_lib_data_apps-db_ts_02ovqtci8e7o6._.js +1 -1
  381. package/server/.next/server/chunks/src_lib_domain-move_ts_04stiet1-xpe2._.js +1 -1
  382. package/server/.next/server/chunks/src_lib_notify_telegram-bot_ts_18y40dkchmcqd._.js +1 -1
  383. package/server/.next/server/chunks/src_lib_view_databases_ts_1ovdbo8spjhf9._.js +1 -1
  384. package/server/.next/server/chunks/src_lib_view_display-name_ts_0xoimm6j7bwnf._.js +1 -1
  385. package/server/.next/server/chunks/src_private_1_nggk_wre7qf._.js +2 -2
  386. package/server/.next/server/chunks/src_private_ai_gateway_ts_04_5ao9914d0p._.js +1 -1
  387. package/server/.next/server/chunks/src_private_ai_gateway_ts_1qtr4nyb8kgnd._.js +2 -2
  388. package/server/.next/server/chunks/src_private_assist_provider-answer_ts_10qv42t-5046y._.js +1 -1
  389. package/server/.next/server/chunks/src_private_notes_notes-actions_ts_1g63g8u965fhc._.js +1 -1
  390. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_agents_page_actions_1q6nc5chwn5k4.js +1 -1
  391. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_models_page_actions_0n_anax2l1jpu.js +1 -1
  392. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_playground_page_actions_1kyng_xuojdtb.js +1 -1
  393. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_quota_page_actions_04r4ro6x7-p7p.js +1 -1
  394. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_usage_page_actions_1fq9uugdpqa_l.js +1 -1
  395. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_auto-actions_page_actions_0mhtiq_5szpe0.js +1 -1
  396. package/server/.next/server/chunks/ssr/{[externals]__1thdbok76xtof._.js → [externals]__1d_fn156y1kzg._.js} +1 -1
  397. package/server/.next/server/chunks/ssr/[root-of-the-server]__0llh-w4ta1qbp._.js +1 -1
  398. package/server/.next/server/chunks/ssr/[root-of-the-server]__0nlfip3wc3l2z._.js +2 -2
  399. package/server/.next/server/chunks/ssr/{[root-of-the-server]__04tkts7c9ylma._.js → [root-of-the-server]__0p5znbfo0wgsu._.js} +2 -2
  400. package/server/.next/server/chunks/ssr/{[root-of-the-server]__12ymdwm8dphvu._.js → [root-of-the-server]__0ua-p_wz8epv9._.js} +2 -2
  401. package/server/.next/server/chunks/ssr/[root-of-the-server]__0wcnxr_g-bd3r._.js +1 -1
  402. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0ojywxj06986-._.js → [root-of-the-server]__0y84mqfn13ss4._.js} +1 -1
  403. package/server/.next/server/chunks/ssr/[root-of-the-server]__1_f7nip9age3d._.js +1 -1
  404. package/server/.next/server/chunks/ssr/[root-of-the-server]__1fj33_xkainxk._.js +2 -2
  405. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0oayb8dm0iu8k._.js → [root-of-the-server]__1rvdnoxnu0ddf._.js} +2 -2
  406. package/server/.next/server/chunks/ssr/_0-uwh2rwm_dic._.js +2 -2
  407. package/server/.next/server/chunks/ssr/_026w_ig6vy9bt._.js +1 -1
  408. package/server/.next/server/chunks/ssr/_04ltmruop4rt3._.js +2 -2
  409. package/server/.next/server/chunks/ssr/_06kwu83_fmex9._.js +2 -2
  410. package/server/.next/server/chunks/ssr/_090fib2x989oc._.js +1 -1
  411. package/server/.next/server/chunks/ssr/_0_oc9q0vqkynd._.js +1 -1
  412. package/server/.next/server/chunks/ssr/_0_rtyc4t9xcdo._.js +1 -1
  413. package/server/.next/server/chunks/ssr/_0a22b7zsckifp._.js +1 -1
  414. package/server/.next/server/chunks/ssr/_0azq3ml4gbn1d._.js +1 -1
  415. package/server/.next/server/chunks/ssr/_0bd4cxnpnnq2u._.js +1 -1
  416. package/server/.next/server/chunks/ssr/_0cw4kz3d6kmb1._.js +1 -1
  417. package/server/.next/server/chunks/ssr/_0d702k82llasi._.js +1 -1
  418. package/server/.next/server/chunks/ssr/_0hmxyfx7su4uk._.js +1 -1
  419. package/server/.next/server/chunks/ssr/_0i-e824vtomvg._.js +2 -2
  420. package/server/.next/server/chunks/ssr/_0jjoot3rhbde3._.js +2 -2
  421. package/server/.next/server/chunks/ssr/_0kn710rrv_o2t._.js +2 -2
  422. package/server/.next/server/chunks/ssr/_0lmcrl8r9dg49._.js +1 -1
  423. package/server/.next/server/chunks/ssr/_0mgclon6_oh87._.js +2 -2
  424. package/server/.next/server/chunks/ssr/_0ns_087lx5abm._.js +1 -1
  425. package/server/.next/server/chunks/ssr/_0oovfx_t_-u0k._.js +1 -1
  426. package/server/.next/server/chunks/ssr/_0qcvpnwa1u3vr._.js +1 -1
  427. package/server/.next/server/chunks/ssr/_0qhvl_fw4qetx._.js +1 -1
  428. package/server/.next/server/chunks/ssr/_0qyupoc7u5hr7._.js +3 -0
  429. package/server/.next/server/chunks/ssr/_0sotiqakj-6ci._.js +1 -1
  430. package/server/.next/server/chunks/ssr/_0uogspz6zrvwk._.js +2 -2
  431. package/server/.next/server/chunks/ssr/_0v6v5w16qxwke._.js +1 -1
  432. package/server/.next/server/chunks/ssr/_0wo-lpqf7hr1y._.js +2 -2
  433. package/server/.next/server/chunks/ssr/{_0i2a_ziqzhyq-._.js → _0wzg8e30al7bu._.js} +2 -2
  434. package/server/.next/server/chunks/ssr/_1-6d1tm3r_qwg._.js +1 -1
  435. package/server/.next/server/chunks/ssr/_10bven6gb1vj0._.js +5 -5
  436. package/server/.next/server/chunks/ssr/_10pz3ggun9s5i._.js +2 -2
  437. package/server/.next/server/chunks/ssr/_118h21qua_4o3._.js +1 -1
  438. package/server/.next/server/chunks/ssr/_12ddramfkd6o1._.js +2 -2
  439. package/server/.next/server/chunks/ssr/_15ft896zgt02e._.js +2 -2
  440. package/server/.next/server/chunks/ssr/_18lgd6o04ugow._.js +2 -2
  441. package/server/.next/server/chunks/ssr/_19-3vzkc6rk97._.js +1 -1
  442. package/server/.next/server/chunks/ssr/_1_-o2s48aj4i7._.js +1 -1
  443. package/server/.next/server/chunks/ssr/{_022u_nnwo1yb4._.js → _1_gydx19bikgo._.js} +2 -2
  444. package/server/.next/server/chunks/ssr/_1ag8axv14phju._.js +2 -2
  445. package/server/.next/server/chunks/ssr/_1b1ano88ar-gi._.js +2 -2
  446. package/server/.next/server/chunks/ssr/_1boia2p3_0nsz._.js +2 -2
  447. package/server/.next/server/chunks/ssr/_1cl55h_h3q-b_._.js +1 -1
  448. package/server/.next/server/chunks/ssr/_1dqf3jmb24s37._.js +1 -1
  449. package/server/.next/server/chunks/ssr/_1e24cpw3g7njr._.js +2 -2
  450. package/server/.next/server/chunks/ssr/_1g2zbl_-4z_hg._.js +1 -1
  451. package/server/.next/server/chunks/ssr/{_14n2368190qms._.js → _1gk334l49puy-._.js} +2 -2
  452. package/server/.next/server/chunks/ssr/{_1wssvwkmxcdn5._.js → _1gvbcfoah__sl._.js} +2 -2
  453. package/server/.next/server/chunks/ssr/_1i77n2n-wb98v._.js +2 -2
  454. package/server/.next/server/chunks/ssr/_1j9cka-44jd65._.js +1 -1
  455. package/server/.next/server/chunks/ssr/_1jh_o2i8hj2g5._.js +1 -1
  456. package/server/.next/server/chunks/ssr/_1r7o1vx4875hu._.js +1 -1
  457. package/server/.next/server/chunks/ssr/{_20gx4od4pnj8d._.js → _1rf_mwfkk_9oa._.js} +2 -2
  458. package/server/.next/server/chunks/ssr/_1w_rq6clcs0ft._.js +2 -2
  459. package/server/.next/server/chunks/ssr/_1ybhu25y38395._.js +2 -2
  460. package/server/.next/server/chunks/ssr/_1z6dy1k48mskn._.js +1 -1
  461. package/server/.next/server/chunks/ssr/_210edglbxmcb3._.js +2 -2
  462. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_(private)_ai_keys_page_actions_1910ocjt__nlh.js +1 -1
  463. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_(private)_ai_logs_page_actions_136-s4sxl6nra.js +1 -1
  464. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_alerts_page_actions_0f7cxitw-svnl.js +1 -1
  465. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_apps_[id]_page_actions_14l8--w36mywn.js +1 -1
  466. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_apps_page_actions_1zw_mdh2ep6vs.js +1 -1
  467. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_connections_page_actions_06a1fnrawxlh1.js +1 -1
  468. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_dns_page_actions_1p2deebbgom7b.js +1 -1
  469. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_domains_page_actions_0-wg58qcvu_rv.js +1 -1
  470. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_firebase_page_actions_217-u-dmlzx6a.js +1 -1
  471. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_logs_page_actions_11-8xinblaop_.js +1 -1
  472. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_manage_sections_page_actions_0ven9q46d3d7s.js +1 -1
  473. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_settings_page_actions_1z3l1p4keed3m.js +1 -1
  474. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_supabase_page_actions_1evatil08dntl.js +1 -1
  475. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_uptime_page_actions_0k1237d-q3oc4.js +1 -1
  476. package/server/.next/server/chunks/ssr/_next-internal_server_app_account_password_page_actions_1v4e71_oifbx9.js +1 -1
  477. package/server/.next/server/chunks/ssr/_next-internal_server_app_signin_page_actions_11wzk446p6_zi.js +1 -1
  478. package/server/.next/server/chunks/ssr/node_modules_zod_v4_classic_external_01k1rek7hgd0j.js +4 -4
  479. package/server/.next/server/chunks/ssr/src_06tjy8wljego8._.js +1 -1
  480. package/server/.next/server/chunks/ssr/src_084tdkx3c_yqi._.js +1 -1
  481. package/server/.next/server/chunks/ssr/src_0_5_wl0sww-x7._.js +6 -3
  482. package/server/.next/server/chunks/ssr/src_0abts6wp5ucc0._.js +1 -1
  483. package/server/.next/server/chunks/ssr/{src_0vi30frvjgri2._.js → src_0jdurlhzhcg5x._.js} +2 -2
  484. package/server/.next/server/chunks/ssr/src_0p0fk07bj9gpq._.js +1 -1
  485. package/server/.next/server/chunks/ssr/src_0ph020gy78gi9._.js +1 -1
  486. package/server/.next/server/chunks/ssr/src_0uitfl3c1mdqb._.js +1 -1
  487. package/server/.next/server/chunks/ssr/src_1-xw4hea2lvb3._.js +1 -1
  488. package/server/.next/server/chunks/ssr/src_10zavgy86u3us._.js +1 -1
  489. package/server/.next/server/chunks/ssr/src_1koc8y1nfdlw3._.js +1 -1
  490. package/server/.next/server/chunks/ssr/src_1q-jgpnd3lbcu._.js +1 -1
  491. package/server/.next/server/chunks/ssr/src_1sdwdnblbiq_g._.js +1 -1
  492. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_agents_1fyhh1ldgm23z._.js +1 -1
  493. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_ask_ask-form_tsx_18ttm9nna_9y6._.js +1 -1
  494. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_logs_export-button_tsx_1k-crb88n1za_._.js +1 -1
  495. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_models_0ayzqn062pnv5._.js +1 -1
  496. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_playground_playground-view_tsx_18ua5zn_a0mar._.js +1 -1
  497. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_providers_1ru-30x6-uwu4._.js +1 -1
  498. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_quota_limits-form_tsx_1vouaaf560z_x._.js +1 -1
  499. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_usage_limits-form_tsx_0sfk3ver58rqw._.js +1 -1
  500. package/server/.next/server/chunks/ssr/{src_app_(console)_05mlxmavgli8_._.js → src_app_(console)_08pmfte22v8vg._.js} +2 -2
  501. package/server/.next/server/chunks/ssr/{src_app_(console)_0u1ec16rmzze6._.js → src_app_(console)_1rx84pcbevbbk._.js} +2 -2
  502. package/server/.next/server/chunks/ssr/src_app_(console)_alerts_0j5xlt68kwg8x._.js +1 -1
  503. package/server/.next/server/chunks/ssr/src_app_(console)_apps_[id]_1sfvku9ui1le-._.js +1 -1
  504. package/server/.next/server/chunks/ssr/src_app_(console)_backups_actions_ts_1vpytsdh0wc1f._.js +1 -1
  505. package/server/.next/server/chunks/ssr/src_app_(console)_backups_drive-buttons_tsx_00cku5r_z3jkg._.js +1 -1
  506. package/server/.next/server/chunks/ssr/src_app_(console)_connections_1fahc65-97qla._.js +1 -1
  507. package/server/.next/server/chunks/ssr/src_app_(console)_connections_1fmp_anbkapur._.js +1 -1
  508. package/server/.next/server/chunks/ssr/src_app_(console)_connections_actions_ts_103blv4gzq76z._.js +1 -1
  509. package/server/.next/server/chunks/ssr/src_app_(console)_create_actions_ts_05-86qr6kfjey._.js +1 -1
  510. package/server/.next/server/chunks/ssr/src_app_(console)_dns_actions_ts_1jzn58xzwbukz._.js +1 -1
  511. package/server/.next/server/chunks/ssr/src_app_(console)_dns_record-actions_tsx_0cqmz51zcuebv._.js +1 -1
  512. package/server/.next/server/chunks/ssr/src_app_(console)_firebase_row-menu_tsx_0hssoq3pqjl-n._.js +1 -1
  513. package/server/.next/server/chunks/ssr/src_app_(console)_logs_log-viewer_tsx_0v3e4cflfk14w._.js +1 -1
  514. package/server/.next/server/chunks/ssr/src_app_(console)_manage_sections_section-switch_tsx_1mfs-o_357i22._.js +1 -1
  515. package/server/.next/server/chunks/ssr/src_app_(console)_monitor-actions_ts_10w3h7myk2ppi._.js +1 -1
  516. package/server/.next/server/chunks/ssr/src_app_(console)_overview_page_tsx_0se3f3ln9q-42._.js +1 -1
  517. package/server/.next/server/chunks/ssr/src_app_(console)_palette-action_ts_0zyw9a9imev6p._.js +1 -1
  518. package/server/.next/server/chunks/ssr/src_app_(console)_repos_[id]_page_tsx_1nkxthc4ethrj._.js +1 -1
  519. package/server/.next/server/chunks/ssr/src_app_(console)_sql_1icfsti04djqe._.js +2 -2
  520. package/server/.next/server/chunks/ssr/src_app_(console)_sql_actions_ts_1oqco02hw-3vp._.js +1 -1
  521. package/server/.next/server/chunks/ssr/src_app_(console)_supabase_0ib3m2ch9gu-4._.js +1 -1
  522. package/server/.next/server/chunks/ssr/src_app_(console)_supabase_pool-actions_ts_0nzd4vwy_9zzx._.js +1 -1
  523. package/server/.next/server/chunks/ssr/src_app_(console)_uptime_1mnnkfi-2zv-k._.js +1 -1
  524. package/server/.next/server/chunks/ssr/src_app_(console)_vercel-actions_ts_0wpk1yo9v632d._.js +1 -1
  525. package/server/.next/server/chunks/ssr/src_app_mfa_setup_setup-flow_tsx_1fpwygr2vdgnh._.js +1 -1
  526. package/server/.next/server/chunks/ssr/src_app_setup_setup-form_tsx_0izoagdur96e1._.js +1 -1
  527. package/server/.next/server/chunks/ssr/{src_app_signin_06v-xlrxfp079._.js → src_app_signin_0hb58isfg-2yx._.js} +2 -2
  528. package/server/.next/server/chunks/ssr/src_components_08d78uqnnmrrh._.js +1 -1
  529. package/server/.next/server/chunks/ssr/src_components_11x625pqq9ovs._.js +1 -1
  530. package/server/.next/server/chunks/ssr/src_components_create_create-dialog_tsx_1s_9clly_m1ru._.js +1 -1
  531. package/server/.next/server/chunks/ssr/src_lib_005l0kcpyu43o._.js +2 -1
  532. package/server/.next/server/chunks/ssr/src_lib_0f_4mvf4-xxst._.js +1 -1
  533. package/server/.next/server/chunks/ssr/src_lib_1xwavi_m_li7p._.js +1 -1
  534. package/server/.next/server/chunks/ssr/src_lib_collector_node-runtime_ts_0778fef3fi3zj._.js +3 -0
  535. package/server/.next/server/chunks/ssr/src_lib_collector_run_ts_0-q8is8s0y9cq._.js +3 -3
  536. package/server/.next/server/chunks/ssr/src_lib_data_apps-db_ts_02ovqtci8e7o6._.js +1 -1
  537. package/server/.next/server/chunks/ssr/{src_lib_demo_15okweo0amos4._.js → src_lib_demo_1wu-a6lubzph6._.js} +2 -2
  538. package/server/.next/server/chunks/ssr/src_lib_domain-move_ts_04stiet1-xpe2._.js +1 -1
  539. package/server/.next/server/chunks/ssr/src_lib_view_databases_ts_1ovdbo8spjhf9._.js +1 -1
  540. package/server/.next/server/chunks/ssr/src_lib_view_display-name_ts_0xoimm6j7bwnf._.js +1 -1
  541. package/server/.next/server/chunks/ssr/src_private_04omlb_sgy-_r._.js +1 -1
  542. package/server/.next/server/chunks/ssr/src_private_0iy_wyg2p1jkn._.js +1 -1
  543. package/server/.next/server/chunks/ssr/src_private_actions_decide-form_tsx_1hngtxpyle3v8._.js +1 -1
  544. package/server/.next/server/chunks/ssr/src_private_actions_telegram-approvals_ts_14gvz6qi_j4aa._.js +1 -1
  545. package/server/.next/server/chunks/ssr/src_private_ai_gateway_ts_04_5ao9914d0p._.js +1 -1
  546. package/server/.next/server/chunks/ssr/src_private_ai_providers_actions_ts_0wxa36ai6s5nn._.js +1 -1
  547. package/server/.next/server/chunks/ssr/src_private_assist_advisor-notes_ts_0qkpm5c3la7fo._.js +6 -6
  548. package/server/.next/server/chunks/ssr/src_private_notes_notes-actions_ts_1g63g8u965fhc._.js +1 -1
  549. package/server/.next/server/middleware-build-manifest.js +3 -3
  550. package/server/.next/server/pages/404.html +1 -1
  551. package/server/.next/server/pages/500.html +1 -1
  552. package/server/.next/server/preview-props.json +3 -3
  553. package/server/.next/server/server-reference-manifest.js +1 -1
  554. package/server/.next/server/server-reference-manifest.json +139 -139
  555. package/server/.next/static/chunks/{22ierqxhqtwn6.js → 0-_zjfssid86w.js} +2 -2
  556. package/server/.next/static/chunks/02-edmd1oolf2.css +3 -0
  557. package/server/.next/static/chunks/05p62k_8g05pm.js +76 -0
  558. package/server/.next/static/chunks/{02byu0sw5d0g9.js → 073u0a0mfexc8.js} +1 -1
  559. package/server/.next/static/chunks/{38c9rnljzl6iw.js → 09fx7h5vm68up.js} +1 -1
  560. package/server/.next/static/chunks/{177dd6kiifsoi.js → 0a5vchcarwyam.js} +1 -1
  561. package/server/.next/static/chunks/{42z3imsp11da1.js → 0ao7_ov9mlvqp.js} +1 -1
  562. package/server/.next/static/chunks/{3qbk8r6jm8udo.js → 0cvmbpyjages7.js} +2 -2
  563. package/server/.next/static/chunks/{04yl9t4cn6zwm.js → 0hnhf3barhk90.js} +1 -1
  564. package/server/.next/static/chunks/{2aerfowxsf234.js → 0i8-ofb4wfcch.js} +1 -1
  565. package/server/.next/static/chunks/{3tl9dgour-h9l.js → 0id261ol_gl6f.js} +1 -1
  566. package/server/.next/static/chunks/0iyozrryj1w49.js +1 -0
  567. package/server/.next/static/chunks/{1zyyqxguxs96l.js → 0q2ogu5cn9q9p.js} +1 -1
  568. package/server/.next/static/chunks/{37f1rjolzxbiv.js → 0z_fqwq62_95p.js} +1 -1
  569. package/server/.next/static/chunks/{11gctw6uutyd7.js → 12fo0pcbpv7lw.js} +1 -1
  570. package/server/.next/static/chunks/{0d556cjlmwiq4.js → 16d1ws92me6_q.js} +1 -1
  571. package/server/.next/static/chunks/{3vbz762vgy3dx.js → 1__8cm_-lydee.js} +1 -1
  572. package/server/.next/static/chunks/{0xwz6ps1581qa.js → 1hmur12m0hx3z.js} +1 -1
  573. package/server/.next/static/chunks/{22h4lj0gp_6n5.js → 1o1lidcbrrh92.js} +1 -1
  574. package/server/.next/static/chunks/{25r6-t40ok5s9.js → 1pre7l9hmk-b6.js} +1 -1
  575. package/server/.next/static/chunks/{04lzxilmq17f_.js → 1qxc6cck2xkbs.js} +1 -1
  576. package/server/.next/static/chunks/{160mk2sltxl3e.js → 205s3z3_jvp5m.js} +1 -1
  577. package/server/.next/static/chunks/{0qciunoy58a03.js → 20cpkauaj8e6x.js} +2 -2
  578. package/server/.next/static/chunks/{3_erdlvi2tz19.js → 25meucm7i1e7b.js} +1 -1
  579. package/server/.next/static/chunks/{2pn16qmann41d.js → 2oy7awlquezq_.js} +1 -1
  580. package/server/.next/static/chunks/{2xhx4rma6gx5o.js → 2pj8subq20y-_.js} +1 -1
  581. package/server/.next/static/chunks/{2szlo15y09085.js → 2qcurt9u9shwc.js} +1 -1
  582. package/server/.next/static/chunks/{01mhc6kz81iwf.js → 2scf40c-_g_q1.js} +1 -1
  583. package/server/.next/static/chunks/{1bn-7bluoi2vi.js → 2tnx5isef9ryw.js} +1 -1
  584. package/server/.next/static/chunks/{3wi43ltm1e5iy.js → 2whojv56qi3ke.js} +1 -1
  585. package/server/.next/static/chunks/{0lcmy-_tdtrqk.js → 2wlen-jacsbqv.js} +1 -1
  586. package/server/.next/static/chunks/{0foc_dy1j2x52.js → 319s97ka6eaex.js} +1 -1
  587. package/server/.next/static/chunks/{1d0mukiro5klq.js → 36bqhxadlfbfn.js} +1 -1
  588. package/server/.next/static/chunks/{16lnw4itnfhw-.js → 36js6cf9c-53b.js} +1 -1
  589. package/server/.next/static/chunks/372gugw4ldy47.js +1 -0
  590. package/server/.next/static/chunks/{2onhuya5-n3-e.js → 39n_1gky-xh0a.js} +1 -1
  591. package/server/.next/static/chunks/{1x8bgprfjtt59.js → 3fv862m8cvcoe.js} +1 -1
  592. package/server/.next/static/chunks/{2lfa16b0tlnvj.js → 3g73nar6-7bqk.js} +1 -1
  593. package/server/.next/static/chunks/{2wd8yh_ni0lqj.js → 3orhi-m-n-ra4.js} +1 -1
  594. package/server/.next/static/chunks/{3zaeh5nbkqpyj.js → 3u3h2mlon2qu7.js} +1 -1
  595. package/server/.next/static/chunks/{0ld0vtd027il_.js → 3vacue9vhoqag.js} +1 -1
  596. package/server/.next/static/chunks/{0jm8a63677590.js → 3x8-w_p0n-gsd.js} +1 -1
  597. package/server/.next/static/chunks/{0r2z8zg4n43pd.js → 3xo5igjfumqip.js} +1 -1
  598. package/server/.next/static/chunks/{1yctclvh0qaxz.js → 415ijq-anmr2o.js} +1 -1
  599. package/server/.next/static/chunks/{1nfofl7nhy6fx.js → 43wm4_0-0-eej.js} +1 -1
  600. package/server/.next/static/chunks/{08oksl0raetg5.js → 44bizq7fli9cp.js} +1 -1
  601. package/server/.next/server/chunks/[root-of-the-server]__0i3bs_98vlttu._.js +0 -3
  602. package/server/.next/server/chunks/[root-of-the-server]__0ych1y0j6e38k._.js +0 -3
  603. package/server/.next/server/chunks/[root-of-the-server]__0zhzy29i2vylk._.js +0 -3
  604. package/server/.next/server/chunks/[root-of-the-server]__0zwe7i-isx08p._.js +0 -3
  605. package/server/.next/server/chunks/[root-of-the-server]__10ee5dhzx78ne._.js +0 -3
  606. package/server/.next/server/chunks/[root-of-the-server]__10q3dc485yp4l._.js +0 -3
  607. package/server/.next/server/chunks/[root-of-the-server]__10u93zgn0-c5a._.js +0 -3
  608. package/server/.next/server/chunks/[root-of-the-server]__115yxhfn37r-k._.js +0 -3
  609. package/server/.next/server/chunks/[root-of-the-server]__14mz6mbk2m_e0._.js +0 -3
  610. package/server/.next/server/chunks/[root-of-the-server]__15y82djobfhof._.js +0 -3
  611. package/server/.next/server/chunks/[root-of-the-server]__165qlmqwvxmzr._.js +0 -3
  612. package/server/.next/server/chunks/[root-of-the-server]__1acps2oi9s0i7._.js +0 -3
  613. package/server/.next/server/chunks/[root-of-the-server]__1erq9v_t5jwp5._.js +0 -3
  614. package/server/.next/server/chunks/[root-of-the-server]__1ip0gr1i080kn._.js +0 -3
  615. package/server/.next/server/chunks/[root-of-the-server]__1lfidps4tcfkg._.js +0 -3
  616. package/server/.next/server/chunks/[root-of-the-server]__1mrpvwofqktnv._.js +0 -3
  617. package/server/.next/server/chunks/[root-of-the-server]__1ppnnpydkrs93._.js +0 -3
  618. package/server/.next/server/chunks/[root-of-the-server]__1qdo_hgivrawk._.js +0 -3
  619. package/server/.next/server/chunks/[root-of-the-server]__1qp_dvfy4vvsm._.js +0 -3
  620. package/server/.next/server/chunks/[root-of-the-server]__1rk6wb8qem46d._.js +0 -3
  621. package/server/.next/server/chunks/[root-of-the-server]__1s20vd1etiird._.js +0 -3
  622. package/server/.next/server/chunks/[root-of-the-server]__1s9_nmhp7chvj._.js +0 -3
  623. package/server/.next/server/chunks/[root-of-the-server]__1yc_xjjam78sg._.js +0 -3
  624. package/server/.next/server/chunks/[root-of-the-server]__2067x8gf07f-i._.js +0 -3
  625. package/server/.next/server/chunks/_0beox3lp9z58-._.js +0 -3
  626. package/server/.next/server/chunks/_0gobsd0_oxj5v._.js +0 -3
  627. package/server/.next/server/chunks/_0vwctvzwde-sz._.js +0 -37
  628. package/server/.next/server/chunks/_0yzmfi6iwa_sk._.js +0 -3
  629. package/server/.next/server/chunks/_1c3ksp22eq0rw._.js +0 -37
  630. package/server/.next/server/chunks/_1cjfskikk32wj._.js +0 -37
  631. package/server/.next/server/chunks/_1d9mf39gz0bv4._.js +0 -3
  632. package/server/.next/server/chunks/_1dlvqnaceqr-_._.js +0 -3
  633. package/server/.next/server/chunks/_1jveb9aojczvg._.js +0 -3
  634. package/server/.next/server/chunks/_1qw43v448l9e7._.js +0 -37
  635. package/server/.next/server/chunks/src_0yve3gn52i_mn._.js +0 -3
  636. package/server/.next/server/chunks/src_lib_0cbh80jxsdx3n._.js +0 -6
  637. package/server/.next/server/chunks/src_lib_0s_txig7jm3ty._.js +0 -9
  638. package/server/.next/server/chunks/src_lib_15wd7ab4u5nrn._.js +0 -9
  639. package/server/.next/server/chunks/src_lib_15y0kwcot_7u0._.js +0 -6
  640. package/server/.next/server/chunks/src_lib_16y1secb8t9fj._.js +0 -6
  641. package/server/.next/server/chunks/src_lib_1iwyh213u9xts._.js +0 -6
  642. package/server/.next/server/chunks/ssr/_1dlvqnaceqr-_._.js +0 -3
  643. package/server/.next/static/chunks/0r-2mywc7qkb_.js +0 -1
  644. package/server/.next/static/chunks/1-zyqj42cr9hy.css +0 -3
  645. package/server/.next/static/chunks/1jc8ghvf721gg.js +0 -76
  646. package/server/.next/static/chunks/1rt5heq1xn_az.js +0 -1
  647. /package/server/.next/static/{ZGhdfWFNBWLdWW4UhJrAO → 90CuiGzddaxNn9lvRkGlH}/_buildManifest.js +0 -0
  648. /package/server/.next/static/{ZGhdfWFNBWLdWW4UhJrAO → 90CuiGzddaxNn9lvRkGlH}/_clientMiddlewareManifest.js +0 -0
  649. /package/server/.next/static/{ZGhdfWFNBWLdWW4UhJrAO → 90CuiGzddaxNn9lvRkGlH}/_ssgManifest.js +0 -0
@@ -1,3 +1,3 @@
1
- (()=>{"use strict";module.exports=[534908,a=>{let b;var c,d,e=a.i(462820),f=a.i(411350),g=a.i(61017),h=a.i(330863),i=a.i(779704);async function j(a){await (0,i.E)(a,{force:!1})}var k=a.i(907997),l=a.i(109307),m=a.i(920274);let n=(0,a.i(377269).f)("outline","notes","Notes",[["path",{d:"M5 5a2 2 0 0 1 2 -2h10a2 2 0 0 1 2 2v14a2 2 0 0 1 -2 2h-10a2 2 0 0 1 -2 -2l0 -14",key:"svg-0"}],["path",{d:"M9 7l6 0",key:"svg-1"}],["path",{d:"M9 11l6 0",key:"svg-2"}],["path",{d:"M9 15l4 0",key:"svg-3"}]]);var o=a.i(701702),p=a.i(245710),q=a.i(668495),r=a.i(191397),s=a.i(791450);let t={crit:"err",warn:"warn",info:"brand"};function u({note:a,now:b,showApp:c}){let d=["AI note",`from ${a.from}`,a.model,(0,p.$)(a.at,b),c&&a.appName?a.appName:null,"written by an agent, can be wrong"].filter(Boolean).join(" · ");return(0,k.jsxs)(r.f,{icon:(0,k.jsx)(n,{size:18,"aria-hidden":!0}),tone:t[a.severity]??"brand",meta:d,action:(0,k.jsx)(s.DismissNoteButton,{id:a.id}),children:[(0,k.jsx)("b",{className:"font-medium",children:(0,k.jsx)(o.MaskedText,{text:a.title})}),(0,k.jsx)(q.f,{source:a.body})]})}async function v({appId:a}){let{ok:b}=await (0,l.B)("owner");if(!b)return null;let c=new Date,d=await (0,m.N)(a,c).catch(()=>[]);return d.length?(0,k.jsx)("div",{className:"mb-3 flex flex-col gap-2.5",children:d.map(b=>(0,k.jsx)(u,{note:b,now:c,showApp:void 0===a},b.id))}):null}var w=a.i(694874),x=a.i(395936),y=a.i(86657),z=a.i(185538);async function A({count:a}){let{ok:b}=await (0,l.B)("owner");if(!b)return null;if(!await y.f.provider().catch(()=>null))return(await (0,m.N)(void 0,new Date).catch(()=>[])).length?null:(0,k.jsxs)("p",{className:"mb-3 flex items-center gap-1.5 text-[13px] text-ink-soft",children:[(0,k.jsx)(n,{size:16,"aria-hidden":!0,className:"text-ink-faint"}),(0,k.jsx)(x.default,{href:"/ai/connect",children:e.v.recConnect})]});if(0===a)return null;let c=await (0,i.h)().catch(()=>null);if(!c)return(0,k.jsxs)("p",{className:"mb-3 flex items-center gap-1.5 text-[13px] text-ink-soft",children:[(0,k.jsx)(w.f,{size:16,"aria-hidden":!0,className:"text-ink-faint"}),"No AI summary yet. ",(0,k.jsx)(z.RegenerateButton,{label:"Summarise"})]});let d=new Date;return(0,k.jsxs)(r.f,{className:"mb-3",icon:(0,k.jsx)(w.f,{size:18,"aria-hidden":!0}),meta:(0,k.jsxs)(k.Fragment,{children:[`AI \xb7 ${c.model} \xb7 ${(0,p.$)(new Date(c.at),d)} \xb7 from ${c.count} items, names aliased \xb7 can be wrong, check the items below \xb7 `,(0,k.jsx)(z.RegenerateButton,{label:"Regenerate"})]}),children:[(0,k.jsx)("b",{className:"font-medium",children:"Summary"}),(0,k.jsx)(q.f,{source:c.text})]})}var B=a.i(918962),C=a.i(962230),D=a.i(976517);async function E({appId:a}){let{ok:b}=await (0,l.B)("owner");if(!b)return null;let c=new Date,[d,e,f]=await Promise.all([y.f.provider().catch(()=>null),(0,C.N)("app",a,c).catch(()=>null),(0,B.c)(c).catch(()=>null)]),g=e?{...e,createdAt:e.createdAt.toISOString(),answeredAt:e.answeredAt?.toISOString()??null}:null;return(0,k.jsx)(D.WhyAi,{appId:a,provider:d?{model:d.model}:null,question:g,nowMs:c.getTime(),agConnected:f?.agConnected??!1})}var F=a.i(243446),G=a.i(803681),H=a.i(581156),I=a.i(411642),J=a.i(65932),K=a.i(94473),L=a.i(188282);let M={recheck:"Runs the monitor's check once, like Check now on the monitor.",neon_wake:"Wakes a suspended Neon compute, like Wake on the database page.",supabase_keepalive:"Sends one keep-alive query to a Supabase project close to auto-pause, like Keep active.",supabase_restore:"Restores a paused Supabase project.",vercel_redeploy:"Redeploys the current production deployment.",vercel_rollback:"Rolls production back to the previous ready deployment.",github_bump_pr:"Opens a pull request on a new branch that raises vulnerable packages to their fixed versions (needs the GitHub PR-write token).",daily_rerun:"Calls the console's daily job again when its heartbeat is down. Always asks for approval.",domain_recheck:"Re-reads a domain's TLS certificate and expiry when its certificate looks close to expiry, like Re-check on Domains.",monitor_update_url:"Points an uptime monitor at its app's new domain when the app moved, keeping the path, like Update monitor on Uptime."};async function N(){let[a,b,c]=await Promise.all([(0,K.I)(),(0,K.K)(),(0,K.X)()]),d=[10,15,20,30,45,60,90,120].filter(a=>a>=K.l&&a<=K.n),e=K.r.map(a=>({kind:a,label:L.H[a].label,risky:"risky"===L.H[a].risk,what:M[a]}));return(0,k.jsxs)(G.N,{title:"Auto-actions",flush:!0,meta:"All off by default",children:[(0,k.jsxs)("p",{className:"px-[18px] pb-3 text-ink-soft",children:["When a firing alert brings a proposal for one of these actions, a switched-on kind runs without asking and you get a short Telegram line afterwards. Everything else waits for you on ",(0,k.jsx)(x.default,{href:"/auto-actions",children:"Auto-actions"}),". Auto-run only does what the console button does, through the same checks, and every run is in the audit log (Events)."]}),(0,k.jsx)(H.AutoRunForm,{saved:a,rows:e}),(0,k.jsxs)("div",{className:"border-t border-line px-[18px] pb-4 pt-3.5",children:[(0,k.jsx)("h3",{className:"mb-1.5 text-[14px]",children:"Auto-rollback after a bad deploy"}),(0,k.jsxs)("p",{className:"mb-2.5 text-ink-soft",children:["Off by default. When on, a new production deploy that breaks the app is rolled back to the previous one without asking. Only ",(0,k.jsx)("span",{className:"font-mono text-[12.5px]",children:"vercel_rollback"}),", only within the first N minutes after a new production deploy goes live, only when a monitor is down or the logs show an error spike, at most once per deployment (and never twice for one app within 2 hours), and every run is reported on Telegram and in Events. Failed builds never go live on Vercel, so this is for builds that succeed but break at runtime."]}),(0,k.jsx)(I.AutoRollbackForm,{saved:b,choices:d})]}),(0,k.jsxs)("div",{className:"border-t border-line px-[18px] pb-4 pt-3.5",children:[(0,k.jsx)("h3",{className:"mb-1.5 text-[14px]",children:"Automatic security fixes"}),(0,k.jsx)("p",{className:"mb-2 text-ink-soft",children:"On by default. When a dependency scan finds a critical, high or moderate advisory with a fix, Watchbell fixes it end to end (the scan and the Next.js check run every 6 hours and right after each production deploy):"}),(0,k.jsxs)("ol",{className:"mb-2.5 list-decimal pl-5 text-ink-soft [&_li]:mt-0.5",children:[(0,k.jsx)("li",{children:"opens the update PR itself (package.json only, on a new watchpost/deps-… branch), only for direct packages that stay in their major version, never twice for the same package while a PR is open;"}),(0,k.jsx)("li",{children:"waits for GitHub's checks (all green), then Vercel's preview of the PR (READY);"}),(0,k.jsx)("li",{children:'tests the preview: "/" and up to 3 monitor paths must answer 200–399 within 15 s (behind Vercel Authentication: 3 minutes without error lines in the preview\'s logs);'}),(0,k.jsx)("li",{children:"squash-merges it, only while auto-rollback is on: the production deploy then runs on Vercel and auto-rollback guards its first minutes."})]}),(0,k.jsx)("p",{className:"mb-2.5 text-ink-soft",children:'Anything failing, or not done within 45 minutes, leaves the PR open marked "needs a look". A major update, a transitive package or a severity you switched off waits for your approval on Auto-actions, as before. Every PR opened and every merge or stop is sent to Telegram and logged in Events. Needs the GitHub PR-write token on Connections.'}),(0,k.jsx)(J.AutoSecurityForm,{saved:c,rollbackOn:b.enabled})]})]})}var O=a.i(93321),P=a.i(530385),Q=a.i(548734),R=a.i(837137),S=a.i(247730),T=a.i(221084),U=a.i(396667),V=a.i(976937),W=a.i(736780),X=a.i(944571),Y=a.i(322145),Z=a.i(664892),$=a.i(521050),_=a.i(760417),aa=a.i(812092),ab=a.i(572134),ac=a.i(658739),ad=a.i(556987),ae=a.i(142754),af=a.i(342634),ag=a.i(381544);async function ah(a){let b=Date.now();try{let c=await fetch(a,{redirect:"manual",signal:AbortSignal.timeout(Z.w),cache:"no-store",headers:{"User-Agent":"Watchbell smoke test"}}),d=401===c.status||403===c.status?(await c.text().catch(()=>"")).slice(0,8192):"";return{status:c.status,ms:Date.now()-b,authWall:(0,Z.S)(c.status,d,c.headers)}}catch{return{status:null,ms:Date.now()-b,authWall:!1}}}async function ai(b,c){let{extensions:d}=await a.A(414785);return await d.runner?.lockfileJobActive(b,c).catch(()=>!1)??!1}let aj=null;async function ak(a,b){let c=(0,$.Q)(b.meta?.rootDirectory),d=(0,$.H)(c,"package.json"),e=b.lockfilePath??(0,$.H)(c,"package-lock.json");if(aj?.token!==a){let b=await (0,aa.z)(a);if(!b.ok)return null;aj={token:a,login:b.data}}let f=aj.login,[g,h]=await Promise.all([(0,aa.O)(a,b.fullName,b.number),(0,aa.P)(a,b.fullName,b.number)]);if(!g.ok||!h.ok)return null;let i=[];for(let c of h.data.slice(0,Z.y+1)){let d=null!==c.login&&c.login.toLowerCase()===f.toLowerCase()?null:await (0,aa.h)(a,b.fullName,c.sha);if(d&&!d.ok)return null;i.push({...c,files:d?d.data:null})}let[j,k]=await Promise.all([(0,aa.E)(a,b.fullName,b.baseBranch,{},d),(0,aa.E)(a,b.fullName,b.headSha,{},d)]);if(!j.ok||!k.ok)return null;let l=j.data&&k.data?(0,Z.C)(j.data.text,k.data.text,b.packages):"unexpected change: package.json is missing",m=null;if(e!==d&&g.data.some(a=>a.filename===e||a.previous===e))if((0,aa.$)(e)){let[c,d]=await Promise.all([(0,aa.l)(a,b.fullName,b.baseBranch,e),(0,aa.l)(a,b.fullName,b.headSha,e)]);if(!c.ok||!d.ok)return null;m=(0,Z.T)(c.data,d.data,e)}else m=`unexpected lockfile change ${e} (only package-lock.json can be checked)`;return{manifest:d,lockfile:e,lockfileRequired:!!b.lockfilePath,manifestProblem:l,lockfileProblem:m,headSha:b.headSha,tokenLogin:f,files:g.data,commits:i}}let al={rows:async()=>await (0,Q.f)().select({id:R.dependencyPrs.id,repoId:R.dependencyPrs.repoId,appId:R.dependencyPrs.appId,proposalId:R.dependencyPrs.proposalId,number:R.dependencyPrs.number,branch:R.dependencyPrs.branch,baseBranch:R.dependencyPrs.baseBranch,headSha:R.dependencyPrs.headSha,title:R.dependencyPrs.title,packages:R.dependencyPrs.packages,auto:R.dependencyPrs.auto,stage:R.dependencyPrs.stage,smokeMode:R.dependencyPrs.smokeMode,previewReadyAt:R.dependencyPrs.previewReadyAt,openedAt:R.dependencyPrs.openedAt,fullName:R.githubRepos.fullName,appName:R.resources.name,meta:R.resources.meta,lockfilePath:R.dependencyScans.lockfilePath}).from(R.dependencyPrs).innerJoin(R.githubRepos,(0,O.u)(R.githubRepos.id,R.dependencyPrs.repoId)).leftJoin(R.resources,(0,O.u)(R.resources.id,R.dependencyPrs.appId)).leftJoin(R.dependencyScans,(0,O.u)(R.dependencyScans.repoId,R.dependencyPrs.repoId)).where((0,O.y)(R.dependencyPrs.stage,[...Z.X])).orderBy((0,P.M)(R.dependencyPrs.openedAt)).limit(10),security:K.X,rollback:K.K,writeToken:async()=>{let a=await (0,W.G)();return a&&"unreadable"!==a?a.token:null},readToken:async a=>{let b=await (0,X.l)(a);return b.ok?b.token:null},vercel:async a=>{let b=await (0,Y.p)(a,"app"),c=b?.resource.meta.teamId;return b&&"string"==typeof c&&b.resource.externalId?{token:b.token,teamId:c,projectId:b.resource.externalId}:null},monitorUrls:async a=>(await (0,Q.f)().select({url:R.monitors.url}).from(R.monitors).where((0,O.b)((0,O.u)(R.monitors.resourceId,a),(0,O.u)(R.monitors.kind,"http"))).limit(10)).map(a=>a.url),pull:aa.b,checks:aa.s,runs:_.L,previews:ab.C,probe:ah,errorLogs:async(a,b,c,d)=>{let e=await (0,ac.f)(a.token,a.teamId,a.projectId,{since:c,until:d,now:d,deploymentId:b,levels:["error","fatal"],maxRows:20,timeoutMs:8e3});return e.ok?e.lines.length:null},merge:aa.C,review:ak,save:async(a,b,c,d)=>{await (0,Q.f)().update(R.dependencyPrs).set({...b,stageText:d,checkedAt:new Date}).where((0,O.u)(R.dependencyPrs.id,a)),c&&await (0,Q.f)().update(ae.O).set({result:d}).where((0,O.u)(ae.O.id,c)).catch(()=>void 0)},notify:a=>(0,ag.y)(a),lockfileBusy:async(a,b,c)=>await ai(a,b)||await (0,V.W)(c,b),audit:(a,b)=>(0,T.f)({kind:"ok",message:a,resourceId:b,actorUserId:null}),book:()=>(0,S.f)()};async function am(a,b,c=al){let d={watched:0,merged:0,stopped:0},e=()=>b-Date.now(),f=await c.rows();if(!f.length)return d;let[g,h,i]=await Promise.all([c.security().catch(()=>null),c.rollback().catch(()=>null),c.writeToken().catch(()=>null)]);if(!i)return d;let j=await c.book().catch(()=>ad.a);for(let b of f){if(15e3>e())break;if(b.auto||g?.enabled)try{let e=await an(b,a,i,h?.enabled===!0,c);if(!e)continue;d.watched++;let f=b.appName?(0,ad.r)(j,b.appName):"app";await ao(b,e,f,h?.windowMin??30,a,i,c,d)}catch(a){console.warn("deps/watch failed:",a instanceof Error?a.name:"error")}}return d}async function an(a,b,c,d,e){let f=await e.pull(c,a.fullName,a.number);if(!f.ok)return null;let g=await e.checks(c,a.fullName,f.data.headSha),h=null;if(g.ok&&null===g.data.checkRuns&&a.appId){let b=await e.readToken(a.appId),c=b?await e.runs(b,a.fullName,f.data.headSha):null;h=c?.ok?c.data:null}g.ok||(g={ok:!0,data:{checkRuns:[{status:"queued",conclusion:null}],combined:null}});let i=(0,Z.j)({...g.data,actionRuns:h}),j={state:null,readyAt:null},k=null,l=a.appId?await e.vercel(a.appId):null;if(l&&"success"===i&&f.data.headSha===a.headSha){let c=await e.previews(l.token,l.teamId,l.projectId,f.data.headSha),d=c.ok?c.data.find(a=>"preview"===a.target)??c.data[0]??null:null;if(d&&(j={state:d.state,readyAt:d.readyAt??("ready"===d.state?b:null)},"ready"===d.state&&d.url)){let c=a.previewReadyAt??j.readyAt??b;if("logs"!==a.smokeMode){let b=(0,Z.E)(a.appId?await e.monitorUrls(a.appId):[]),c=await Promise.all(b.map(async a=>({path:a,...await e.probe(`https://${d.url}${a}`)})));k=(0,Z.L)(c)}k||(k=(0,Z.n)(c,b,await e.errorLogs(l,d.id,c,b).catch(()=>null))),j.readyAt=c}}return{step:(0,Z.M)({now:b,openedAt:a.openedAt,pr:{state:f.data.state,merged:f.data.merged,mergeable:f.data.mergeable,headSha:f.data.headSha,base:f.data.base},recordedSha:a.headSha,recordedBase:a.baseBranch,checks:i,preview:j,smoke:k,autoRollbackOn:d}),smoke:k,previewReadyAt:j.readyAt,headSha:f.data.headSha}}async function ao(a,b,c,d,e,f,g,h){let{step:i}=b,j=b.smoke?{smokeMode:b.smoke.mode}:{},k=b.previewReadyAt?{previewReadyAt:b.previewReadyAt}:{},l={app:c,number:a.number,packages:a.packages};if("wait"===i.kind)return void await g.save(a.id,{stage:i.stage,...j,...k,...i.resetSha?{headSha:i.resetSha,previewReadyAt:null,smokeMode:null}:{}},a.proposalId,(0,Z.m)(a.number,i.stage,i.reason));if("done"===i.kind)return void await g.save(a.id,{stage:i.stage,finishedAt:e},a.proposalId,(0,Z.m)(a.number,i.stage));if("stop"===i.kind&&("CI gagal"===i.reason||"CI failed"===i.reason)&&await g.lockfileBusy?.(a.repoId,a.branch,a.fullName).catch(()=>!1))return void await g.save(a.id,{stage:"checks"},a.proposalId,(0,Z.m)(a.number,"checks","waiting for the lockfile from the runner"));if("stop"===i.kind){await g.save(a.id,{stage:i.stage,finishedAt:e,...j},a.proposalId,(0,Z.m)(a.number,i.stage,"ready-manual"===i.stage?null:i.reason)),h.stopped++,await g.notify({...l,kind:"ready-manual"===i.stage?"ready-manual":"stopped",reason:i.reason}).catch(()=>void 0);return}let m=await g.review(f,a).catch(()=>null);if(!m)return;let n=(0,Z.k)(m);if(!n&&(0,Z.H)(m)&&e.getTime()-a.openedAt.getTime()>Z.R){let b="the lockfile wasn't added within 45 minutes";await g.save(a.id,{stage:"timeout",finishedAt:e,...j},a.proposalId,(0,Z.m)(a.number,"timeout",b)),h.stopped++,await g.notify({...l,kind:"stopped",reason:b}).catch(()=>void 0);return}if(!n&&(0,Z.H)(m))return void await g.save(a.id,{stage:"checks"},a.proposalId,(0,Z.m)(a.number,"checks","waiting for the lockfile"));if(n){await g.save(a.id,{stage:"failed",finishedAt:e,...j},a.proposalId,(0,Z.m)(a.number,"failed",n)),h.stopped++,await g.notify({...l,kind:"stopped",reason:n}).catch(()=>void 0);return}await g.save(a.id,{stage:"merging",...j,...k},a.proposalId,(0,Z.m)(a.number,"merging"));let o=await g.merge(f,a.fullName,a.number,a.branch,a.baseBranch,a.headSha,a.title);if(o.ok){await g.save(a.id,{stage:"merged",mergedSha:o.data.sha,finishedAt:e},a.proposalId,(0,Z.m)(a.number,"merged")),h.merged++,await g.audit(`${af.v}PR #${a.number} merged \xb7 ${a.packages.join(", ")}`.slice(0,200),a.appId).catch(()=>void 0),await g.notify({...l,kind:"merged",windowMin:d}).catch(()=>void 0);return}if(409===o.status)return void await g.save(a.id,{stage:"checks"},a.proposalId,(0,Z.m)(a.number,"checks","new commit on the PR branch, checking again"));let p=405===o.status?"GitHub refused the merge (cannot be merged)":`merge failed: ${o.error}`.slice(0,150);await g.save(a.id,{stage:"failed",finishedAt:e},a.proposalId,(0,Z.m)(a.number,"failed",p)),h.stopped++,await g.notify({...l,kind:"stopped",reason:p}).catch(()=>void 0)}let ap=null;async function aq(a,b,c=U.I){if((0,Z.f)(a,ap)&&!(await c()).has("devops")){ap=a.getTime();try{let c=await am(a,b?.deadline??a.getTime()+5e4);c.watched&&console.log(`deps/watch: ${c.watched} PR, ${c.merged} merged, ${c.stopped} stopped`)}catch(a){console.warn("deps/watch failed:",a instanceof Error?a.name:"error")}}}var ar=a.i(691100),as=a.i(624065);let at={nav:[{section:"manage",after:"settings",items:[{key:"ai",label:"AI Gateway",href:"/ai",icon:"route",stage:5,ownerOnly:!0},{key:"api-docs",label:"API explorer",href:"/api-docs",icon:"api",stage:5,ownerOnly:!0}]}],palette:[{label:"AI Gateway",href:"/ai",keywords:["ai","gateway","overview"]},{label:"API keys",href:"/ai/keys",keywords:["key","token","wb_","wp_"]},{label:"Agents",href:"/ai/agents",keywords:["agent","client","mcp"]},{label:"Connect an agent",href:"/ai/connect",keywords:["mcp",...e.I.palette.connectKeywords,"gemini cli","quick start"]},{label:"Bring your own key",href:"/ai/providers",keywords:["provider","byok","cloudflare","groq","openrouter","gemini"]},{label:"Quota",href:"/ai/quota",keywords:["limit","usage","rate"]},{label:"AI logs",href:"/ai/logs",keywords:["logs","requests","usage"]},{label:"Models",href:"/ai/models",keywords:["model","llm"]},{label:"Playground",href:"/ai/playground",keywords:["chat","try","prompt"]},{label:"API explorer",href:"/api-docs",keywords:["openapi","swagger","api","v1"]}]},au={dailySteps:[{name:"ai-usage-retention",run:g.$}]},av={WhyAiSlot:E,RecSummarySlot:A,AiNotesSlot:v,dailySteps:[{name:"advisor-summary",run:j}],minuteSteps:[{name:"advisor-notes",run:h.I}]},aw={dailySteps:[{name:"ai-notes-retention",run:F.v}]},ax={nav:[{section:"manage",after:"alerts",items:[{key:"auto-actions",label:"Auto-actions",href:"/auto-actions",icon:"bolt",stage:9,ownerOnly:!0}]}],palette:[{label:"Auto-actions",href:"/auto-actions",keywords:["proposal","approve","reject","auto-run","rollback"]}],dailySteps:[{name:"auto-actions-retention",run:ar.t}],minuteSteps:[{name:"auto-actions",run:ar.Z},{name:"deps-pr-watch",run:aq}],settingsTabs:[{key:"office-auto-run",label:"Auto-actions",Tab:N}]},ay={telegramCallback:as.proposalCallback},az=function(...a){let b={nav:[],palette:[]};for(let c of a){for(let a of c.nav??[]){let c=b.nav.find(b=>b.section===a.section&&b.after===a.after);c?c.items=[...c.items,...a.items]:b.nav.push({...a,items:[...a.items]})}b.palette.push(...c.palette??[]),c.dailySteps?.length&&(b.dailySteps=[...b.dailySteps??[],...c.dailySteps]),c.minuteSteps?.length&&(b.minuteSteps=[...b.minuteSteps??[],...c.minuteSteps]),c.WhyAiSlot&&(b.WhyAiSlot=c.WhyAiSlot),c.RecSummarySlot&&(b.RecSummarySlot=c.RecSummarySlot),c.AiNotesSlot&&(b.AiNotesSlot=c.AiNotesSlot),c.DevNotesSlot&&(b.DevNotesSlot=c.DevNotesSlot),c.office&&(b.office=c.office),c.settingsTabs?.length&&(b.settingsTabs=[...b.settingsTabs??[],...c.settingsTabs]),c.telegramCallback&&(b.telegramCallback=c.telegramCallback),c.runner&&(b.runner=c.runner),c.RepoPreviewSlot&&(b.RepoPreviewSlot=c.RepoPreviewSlot)}return b}({...at,palette:(c=at.palette??[],d={label:"Ask AI",href:"/ai/ask",keywords:["ask","question","answer"]},(b=c.findIndex(a=>"/ai"===a.href))<0?[...c,d]:[...c.slice(0,b+1),d,...c.slice(b+1)])},{dailySteps:[{name:"ai-agents-prune",run:()=>(0,f.w)()}]},au,{},{},aw,ax,av,ay);a.s(["extensions",0,az],534908)},285138,a=>{let b=(0,a.i(211857).registerClientReference)(function(){throw Error("Attempted to call AutoRollbackForm() from the server but AutoRollbackForm 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/private/actions/auto-rollback-form.tsx","AutoRollbackForm");a.s(["AutoRollbackForm",0,b])},411642,a=>{var b=a.i(285138);a.n(b)},305093,a=>{let b=(0,a.i(211857).registerClientReference)(function(){throw Error("Attempted to call AutoRunForm() from the server but AutoRunForm 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/private/actions/auto-run-form.tsx","AutoRunForm");a.s(["AutoRunForm",0,b])},581156,a=>{var b=a.i(305093);a.n(b)},173666,a=>{let b=(0,a.i(211857).registerClientReference)(function(){throw Error("Attempted to call AutoSecurityForm() from the server but AutoSecurityForm 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/private/actions/auto-security-form.tsx","AutoSecurityForm");a.s(["AutoSecurityForm",0,b])},65932,a=>{var b=a.i(173666);a.n(b)},140025,a=>{let b=(0,a.i(211857).registerClientReference)(function(){throw Error("Attempted to call DismissNoteButton() from the server but DismissNoteButton 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/private/slots/dismiss-note-button.tsx","DismissNoteButton");a.s(["DismissNoteButton",0,b])},791450,a=>{var b=a.i(140025);a.n(b)},581542,a=>{let b=(0,a.i(211857).registerClientReference)(function(){throw Error("Attempted to call RegenerateButton() from the server but RegenerateButton 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/private/slots/regenerate-button.tsx","RegenerateButton");a.s(["RegenerateButton",0,b])},185538,a=>{var b=a.i(581542);a.n(b)},402242,a=>{let b=(0,a.i(211857).registerClientReference)(function(){throw Error("Attempted to call WhyAi() from the server but WhyAi 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/private/slots/why-ai.tsx","WhyAi");a.s(["WhyAi",0,b])},976517,a=>{var b=a.i(402242);a.n(b)}]})();
1
+ (()=>{"use strict";module.exports=[534908,a=>{let b;var c,d,e=a.i(462820),f=a.i(411350),g=a.i(61017),h=a.i(330863),i=a.i(779704);async function j(a){await (0,i.E)(a,{force:!1})}var k=a.i(907997),l=a.i(109307),m=a.i(920274);let n=(0,a.i(377269).f)("outline","notes","Notes",[["path",{d:"M5 5a2 2 0 0 1 2 -2h10a2 2 0 0 1 2 2v14a2 2 0 0 1 -2 2h-10a2 2 0 0 1 -2 -2l0 -14",key:"svg-0"}],["path",{d:"M9 7l6 0",key:"svg-1"}],["path",{d:"M9 11l6 0",key:"svg-2"}],["path",{d:"M9 15l4 0",key:"svg-3"}]]);var o=a.i(701702),p=a.i(245710),q=a.i(668495),r=a.i(191397),s=a.i(791450);let t={crit:"err",warn:"warn",info:"brand"};function u({note:a,now:b,showApp:c}){let d=["AI note",`from ${a.from}`,a.model,(0,p.$)(a.at,b),c&&a.appName?a.appName:null,"written by an agent, can be wrong"].filter(Boolean).join(" · ");return(0,k.jsxs)(r.f,{icon:(0,k.jsx)(n,{size:18,"aria-hidden":!0}),tone:t[a.severity]??"brand",meta:d,action:(0,k.jsx)(s.DismissNoteButton,{id:a.id}),children:[(0,k.jsx)("b",{className:"font-medium",children:(0,k.jsx)(o.MaskedText,{text:a.title})}),(0,k.jsx)(q.f,{source:a.body})]})}async function v({appId:a}){let{ok:b}=await (0,l.B)("owner");if(!b)return null;let c=new Date,d=await (0,m.N)(a,c).catch(()=>[]);return d.length?(0,k.jsx)("div",{className:"mb-3 flex flex-col gap-2.5",children:d.map(b=>(0,k.jsx)(u,{note:b,now:c,showApp:void 0===a},b.id))}):null}var w=a.i(694874),x=a.i(395936),y=a.i(86657),z=a.i(185538);async function A({count:a}){let{ok:b}=await (0,l.B)("owner");if(!b)return null;if(!await y.f.provider().catch(()=>null))return(await (0,m.N)(void 0,new Date).catch(()=>[])).length?null:(0,k.jsxs)("p",{className:"mb-3 flex items-center gap-1.5 text-[13px] text-ink-soft",children:[(0,k.jsx)(n,{size:16,"aria-hidden":!0,className:"text-ink-faint"}),(0,k.jsx)(x.default,{href:"/ai/connect",children:e.v.recConnect})]});if(0===a)return null;let c=await (0,i.h)().catch(()=>null);if(!c)return(0,k.jsxs)("p",{className:"mb-3 flex items-center gap-1.5 text-[13px] text-ink-soft",children:[(0,k.jsx)(w.f,{size:16,"aria-hidden":!0,className:"text-ink-faint"}),"No AI summary yet. ",(0,k.jsx)(z.RegenerateButton,{label:"Summarise"})]});let d=new Date;return(0,k.jsxs)(r.f,{className:"mb-3",icon:(0,k.jsx)(w.f,{size:18,"aria-hidden":!0}),meta:(0,k.jsxs)(k.Fragment,{children:[`AI \xb7 ${c.model} \xb7 ${(0,p.$)(new Date(c.at),d)} \xb7 from ${c.count} items, names aliased \xb7 can be wrong, check the items below \xb7 `,(0,k.jsx)(z.RegenerateButton,{label:"Regenerate"})]}),children:[(0,k.jsx)("b",{className:"font-medium",children:"Summary"}),(0,k.jsx)(q.f,{source:c.text})]})}var B=a.i(918962),C=a.i(962230),D=a.i(976517);async function E({appId:a}){let{ok:b}=await (0,l.B)("owner");if(!b)return null;let c=new Date,[d,e,f]=await Promise.all([y.f.provider().catch(()=>null),(0,C.N)("app",a,c).catch(()=>null),(0,B.c)(c).catch(()=>null)]),g=e?{...e,createdAt:e.createdAt.toISOString(),answeredAt:e.answeredAt?.toISOString()??null}:null;return(0,k.jsx)(D.WhyAi,{appId:a,provider:d?{model:d.model}:null,question:g,nowMs:c.getTime(),agConnected:f?.agConnected??!1})}var F=a.i(243446),G=a.i(803681),H=a.i(581156),I=a.i(411642),J=a.i(65932),K=a.i(94473),L=a.i(188282);let M={recheck:"Runs the monitor's check once, like Check now on the monitor.",neon_wake:"Wakes a suspended Neon compute, like Wake on the database page.",supabase_keepalive:"Sends one keep-alive query to a Supabase project close to auto-pause, like Keep active.",supabase_restore:"Restores a paused Supabase project.",vercel_redeploy:"Redeploys the current production deployment.",vercel_rollback:"Rolls production back to the previous ready deployment.",github_bump_pr:"Opens a pull request on a new branch that raises vulnerable packages to their fixed versions (needs the GitHub PR-write token).",daily_rerun:"Calls the console's daily job again when its heartbeat is down. Always asks for approval.",domain_recheck:"Re-reads a domain's TLS certificate and expiry when its certificate looks close to expiry, like Re-check on Domains.",monitor_update_url:"Points an uptime monitor at its app's new domain when the app moved, keeping the path, like Update monitor on Uptime."};async function N(){let[a,b,c]=await Promise.all([(0,K.I)(),(0,K.K)(),(0,K.X)()]),d=[10,15,20,30,45,60,90,120].filter(a=>a>=K.l&&a<=K.n),e=K.r.map(a=>({kind:a,label:L.H[a].label,risky:"risky"===L.H[a].risk,what:M[a]}));return(0,k.jsxs)(G.N,{title:"Auto-actions",flush:!0,meta:"All off by default",children:[(0,k.jsxs)("p",{className:"px-[18px] pb-3 text-ink-soft",children:["When a firing alert brings a proposal for one of these actions, a switched-on kind runs without asking and you get a short Telegram line afterwards. Everything else waits for you on ",(0,k.jsx)(x.default,{href:"/auto-actions",children:"Auto-actions"}),". Auto-run only does what the console button does, through the same checks, and every run is in the audit log (Events)."]}),(0,k.jsx)(H.AutoRunForm,{saved:a,rows:e}),(0,k.jsxs)("div",{className:"border-t border-line px-[18px] pb-4 pt-3.5",children:[(0,k.jsx)("h3",{className:"mb-1.5 text-[14px]",children:"Auto-rollback after a bad deploy"}),(0,k.jsxs)("p",{className:"mb-2.5 text-ink-soft",children:["Off by default. When on, a new production deploy that breaks the app is rolled back to the previous one without asking. Only ",(0,k.jsx)("span",{className:"font-mono text-[12.5px]",children:"vercel_rollback"}),", only within the first N minutes after a new production deploy goes live, only when a monitor is down or the logs show an error spike, at most once per deployment (and never twice for one app within 2 hours), and every run is reported on Telegram and in Events. Failed builds never go live on Vercel, so this is for builds that succeed but break at runtime."]}),(0,k.jsx)(I.AutoRollbackForm,{saved:b,choices:d})]}),(0,k.jsxs)("div",{className:"border-t border-line px-[18px] pb-4 pt-3.5",children:[(0,k.jsx)("h3",{className:"mb-1.5 text-[14px]",children:"Automatic security fixes"}),(0,k.jsx)("p",{className:"mb-2 text-ink-soft",children:"On by default. When a dependency scan finds a critical, high or moderate advisory with a fix, Watchbell fixes it end to end (the scan and the Next.js check run every 6 hours and right after each production deploy):"}),(0,k.jsxs)("ol",{className:"mb-2.5 list-decimal pl-5 text-ink-soft [&_li]:mt-0.5",children:[(0,k.jsx)("li",{children:"opens the update PR itself (package.json only, on a new watchpost/deps-… branch), only for direct packages that stay in their major version, never twice for the same package while a PR is open;"}),(0,k.jsx)("li",{children:"waits for GitHub's checks (all green), then Vercel's preview of the PR (READY);"}),(0,k.jsx)("li",{children:'tests the preview: "/" and up to 3 monitor paths must answer 200–399 within 15 s (behind Vercel Authentication: 3 minutes without error lines in the preview\'s logs);'}),(0,k.jsx)("li",{children:"squash-merges it, only while auto-rollback is on: the production deploy then runs on Vercel and auto-rollback guards its first minutes."})]}),(0,k.jsx)("p",{className:"mb-2.5 text-ink-soft",children:'Anything failing, or not done within 45 minutes, leaves the PR open marked "needs a look". A major update, a transitive package or a severity you switched off waits for your approval on Auto-actions, as before. Every PR opened and every merge or stop is sent to Telegram and logged in Events. Needs the GitHub PR-write token on Connections.'}),(0,k.jsx)(J.AutoSecurityForm,{saved:c,rollbackOn:b.enabled})]})]})}var O=a.i(93321),P=a.i(530385),Q=a.i(548734),R=a.i(837137),S=a.i(247730),T=a.i(221084),U=a.i(396667),V=a.i(976937),W=a.i(736780),X=a.i(944571),Y=a.i(322145),Z=a.i(664892),$=a.i(751263),_=a.i(521050),aa=a.i(760417),ab=a.i(812092),ac=a.i(572134),ad=a.i(658739),ae=a.i(556987),af=a.i(142754),ag=a.i(342634),ah=a.i(381544);let ai="waiting: Vercel didn't say which deployment is live";async function aj(a){let b=Date.now();try{let c=await fetch(a,{redirect:"manual",signal:AbortSignal.timeout(Z.w),cache:"no-store",headers:{"User-Agent":"Watchbell smoke test"}}),d=401===c.status||403===c.status?(await c.text().catch(()=>"")).slice(0,8192):"";return{status:c.status,ms:Date.now()-b,authWall:(0,Z.S)(c.status,d,c.headers)}}catch{return{status:null,ms:Date.now()-b,authWall:!1}}}async function ak(b,c){let{extensions:d}=await a.A(414785);return await d.runner?.lockfileJobActive(b,c).catch(()=>!1)??!1}let al=null;async function am(a,b){let c=(0,_.Q)(b.meta?.rootDirectory),d=(0,_.H)(c,"package.json"),e=b.lockfilePath??(0,_.H)(c,"package-lock.json");if(al?.token!==a){let b=await (0,ab.z)(a);if(!b.ok)return null;al={token:a,login:b.data}}let f=al.login,[g,h]=await Promise.all([(0,ab.O)(a,b.fullName,b.number),(0,ab.P)(a,b.fullName,b.number)]);if(!g.ok||!h.ok)return null;let i=[];for(let c of h.data.slice(0,Z.y+1)){let d=null!==c.login&&c.login.toLowerCase()===f.toLowerCase()?null:await (0,ab.h)(a,b.fullName,c.sha);if(d&&!d.ok)return null;i.push({...c,files:d?d.data:null})}let[j,k]=await Promise.all([(0,ab.E)(a,b.fullName,b.baseBranch,{},d),(0,ab.E)(a,b.fullName,b.headSha,{},d)]);if(!j.ok||!k.ok)return null;let l=j.data&&k.data?(0,Z.C)(j.data.text,k.data.text,b.packages):"unexpected change: package.json is missing",m=null;if(e!==d&&g.data.some(a=>a.filename===e||a.previous===e))if((0,ab.$)(e)){let[c,d]=await Promise.all([(0,ab.l)(a,b.fullName,b.baseBranch,e),(0,ab.l)(a,b.fullName,b.headSha,e)]);if(!c.ok||!d.ok)return null;m=(0,Z.T)(c.data,d.data,e)}else m=`unexpected lockfile change ${e} (only package-lock.json can be checked)`;return{manifest:d,lockfile:e,lockfileRequired:!!b.lockfilePath,manifestProblem:l,lockfileProblem:m,headSha:b.headSha,tokenLogin:f,files:g.data,commits:i}}async function an(a,b={}){let c=await (b.vercel??ao.vercel)(a);if(!c)return null;let d=await (b.serving??ac.k)(c.token,c.teamId,c.projectId);if(!d.ok)return null;let e=d.data.currentId,f=null;if(!e){let a=d.data.latest?.readyState??null;if("ERROR"!==a&&"CANCELED"!==a)return null;let g=await (b.running??ac.N)(c.token,c.teamId,c.projectId);if(!g.ok||g.data)return null;let h=await (b.ready??ac.r)(c.token,c.teamId,c.projectId);if(!h.ok)return null;let i=[...h.data].sort((a,b)=>b.createdAt.getTime()-a.createdAt.getTime()),j=d.data.promote;j?(f=i.find(a=>a.createdAt.getTime()>j.requestedAt)??null)||(e=j.toDeploymentId):f=i[0]??null}if(!f&&e){let a=await (b.deployment??ac.S)(c.token,{id:c.teamId,slug:c.teamId,name:c.teamId},e);if(!a.ok)return null;f=a.data}return f?{source:(0,$.s)({source:f.source,branch:f.branch,sha:f.sha,branchFrom:f.branchFrom??null,gitDirty:!0===f.gitDirty})}:null}let ao={rows:async()=>await (0,Q.f)().select({id:R.dependencyPrs.id,repoId:R.dependencyPrs.repoId,appId:R.dependencyPrs.appId,proposalId:R.dependencyPrs.proposalId,number:R.dependencyPrs.number,branch:R.dependencyPrs.branch,baseBranch:R.dependencyPrs.baseBranch,headSha:R.dependencyPrs.headSha,title:R.dependencyPrs.title,packages:R.dependencyPrs.packages,auto:R.dependencyPrs.auto,stage:R.dependencyPrs.stage,smokeMode:R.dependencyPrs.smokeMode,previewReadyAt:R.dependencyPrs.previewReadyAt,openedAt:R.dependencyPrs.openedAt,fullName:R.githubRepos.fullName,appName:R.resources.name,meta:R.resources.meta,lockfilePath:R.dependencyScans.lockfilePath,appMonitored:R.resources.monitored,appGone:R.resources.goneAt,stageText:R.dependencyPrs.stageText}).from(R.dependencyPrs).innerJoin(R.githubRepos,(0,O.u)(R.githubRepos.id,R.dependencyPrs.repoId)).leftJoin(R.resources,(0,O.u)(R.resources.id,R.dependencyPrs.appId)).leftJoin(R.dependencyScans,(0,O.u)(R.dependencyScans.repoId,R.dependencyPrs.repoId)).where((0,O.y)(R.dependencyPrs.stage,[...Z.X])).orderBy((0,P.M)(R.dependencyPrs.openedAt)).limit(10),security:K.X,rollback:K.K,writeToken:async()=>{let a=await (0,W.G)();return a&&"unreadable"!==a?a.token:null},readToken:async a=>{let b=await (0,X.l)(a);return b.ok?b.token:null},vercel:async a=>{let b=await (0,Y.p)(a,"app"),c=b?.resource.meta.teamId;return b&&"string"==typeof c&&b.resource.externalId?{token:b.token,teamId:c,projectId:b.resource.externalId}:null},monitorUrls:async a=>(await (0,Q.f)().select({url:R.monitors.url}).from(R.monitors).where((0,O.b)((0,O.u)(R.monitors.resourceId,a),(0,O.u)(R.monitors.kind,"http"))).limit(10)).map(a=>a.url),pull:ab.b,checks:ab.s,runs:aa.L,previews:ac.C,probe:aj,errorLogs:async(a,b,c,d)=>{let e=await (0,ad.f)(a.token,a.teamId,a.projectId,{since:c,until:d,now:d,deploymentId:b,levels:["error","fatal"],maxRows:20,timeoutMs:8e3});return e.ok?e.lines.length:null},merge:ab.C,review:am,save:async(a,b,c,d)=>{await (0,Q.f)().update(R.dependencyPrs).set({...b,stageText:d,checkedAt:new Date}).where((0,O.u)(R.dependencyPrs.id,a)),c&&await (0,Q.f)().update(af.O).set({result:d}).where((0,O.u)(af.O.id,c)).catch(()=>void 0)},notify:a=>(0,ah.y)(a),liveSource:a=>an(a),lockfileBusy:async(a,b,c)=>await ak(a,b)||await (0,V.W)(c,b),audit:(a,b)=>(0,T.f)({kind:"ok",message:a,resourceId:b,actorUserId:null}),book:()=>(0,S.f)()};async function ap(a,b,c=ao){let d={watched:0,merged:0,stopped:0},e=()=>b-Date.now(),f=await c.rows();if(!f.length)return d;let[g,h,i]=await Promise.all([c.security().catch(()=>null),c.rollback().catch(()=>null),c.writeToken().catch(()=>null)]);if(!i)return d;let j=await c.book().catch(()=>ae.a);for(let b of f){if(15e3>e())break;if(b.auto||g?.enabled)try{let e=await aq(b,a,i,h?.enabled===!0,c);if(!e)continue;d.watched++;let f=b.appName?(0,ae.r)(j,b.appName):"app";await as(b,e,f,h?.windowMin??30,a,i,c,d)}catch(a){console.warn("deps/watch failed:",a instanceof Error?a.name:"error")}}return d}async function aq(a,b,c,d,e){let f=await e.pull(c,a.fullName,a.number);if(!f.ok)return null;let g=await e.checks(c,a.fullName,f.data.headSha),h=null;if(g.ok&&null===g.data.checkRuns&&a.appId){let b=await e.readToken(a.appId),c=b?await e.runs(b,a.fullName,f.data.headSha):null;h=c?.ok?c.data:null}g.ok||(g={ok:!0,data:{checkRuns:[{status:"queued",conclusion:null}],combined:null}});let i=(0,Z.j)({...g.data,actionRuns:h}),j={state:null,readyAt:null},k=null,l=a.appId?await e.vercel(a.appId):null;if(l&&"success"===i&&f.data.headSha===a.headSha){let c=await e.previews(l.token,l.teamId,l.projectId,f.data.headSha),d=c.ok?c.data.find(a=>"preview"===a.target)??c.data[0]??null:null;if(d&&(j={state:d.state,readyAt:d.readyAt??("ready"===d.state?b:null)},"ready"===d.state&&d.url)){let c=a.previewReadyAt??j.readyAt??b;if("logs"!==a.smokeMode){let b=(0,Z.E)(a.appId?await e.monitorUrls(a.appId):[]),c=await Promise.all(b.map(async a=>({path:a,...await e.probe(`https://${d.url}${a}`)})));k=(0,Z.L)(c)}k||(k=(0,Z.n)(c,b,await e.errorLogs(l,d.id,c,b).catch(()=>null))),j.readyAt=c}}return{step:(0,Z.M)({now:b,openedAt:a.openedAt,pr:{state:f.data.state,merged:f.data.merged,mergeable:f.data.mergeable,headSha:f.data.headSha,base:f.data.base},recordedSha:a.headSha,recordedBase:a.baseBranch,checks:i,preview:j,smoke:k,autoRollbackOn:d}),smoke:k,previewReadyAt:j.readyAt,headSha:f.data.headSha}}function ar(a,b){if(!a.appId||!1===a.appMonitored||a.appGone)return"the app is gone or no longer watched, so Watchbell can't confirm what production is built from. Merging this PR could replace what is live";let c=(0,$.B)(a.meta?.productionSource,a.baseBranch,b);if(c)return c;let d=(0,$.O)(a.meta?.productionSource),e=a.meta?.productionBranch;return d?.kind==="git"&&d.ref===a.baseBranch&&"string"==typeof e&&e!==a.baseBranch?`Merging into ${a.baseBranch} won't deploy to production by itself: production was promoted from a ${a.baseBranch} preview. Merge, then promote the new preview.`:null}async function as(a,b,c,d,e,f,g,h){let{step:i}=b,j=b.smoke?{smokeMode:b.smoke.mode}:{},k=b.previewReadyAt?{previewReadyAt:b.previewReadyAt}:{},l={app:c,number:a.number,packages:a.packages};if("wait"===i.kind)return void await g.save(a.id,{stage:i.stage,...j,...k,...i.resetSha?{headSha:i.resetSha,previewReadyAt:null,smokeMode:null}:{}},a.proposalId,(0,Z.m)(a.number,i.stage,i.reason));if("done"===i.kind)return void await g.save(a.id,{stage:i.stage,finishedAt:e},a.proposalId,(0,Z.m)(a.number,i.stage));if("stop"===i.kind&&("CI gagal"===i.reason||"CI failed"===i.reason)&&await g.lockfileBusy?.(a.repoId,a.branch,a.fullName).catch(()=>!1))return void await g.save(a.id,{stage:"checks"},a.proposalId,(0,Z.m)(a.number,"checks","waiting for the lockfile from the runner"));let m=async b=>{await g.save(a.id,{stage:"failed",finishedAt:e,...j},a.proposalId,(0,Z.m)(a.number,"failed",b)),h.stopped++,await g.notify({...l,kind:"stopped",reason:b.replace(/\.$/,"")}).catch(()=>void 0)},n="merge"===i.kind||"stop"===i.kind&&"ready-manual"===i.stage?ar(a,e):null;if(n)return m(n);let o=async()=>{let c=a.appId?await g.liveSource(a.appId).catch(()=>null):null;if(!c){let c=b.previewReadyAt??a.previewReadyAt??a.openedAt;if((a.stageText??"").includes(ai)&&e.getTime()-c.getTime()>Z.R)return await m("Vercel didn't say which deployment is live for 45 minutes, so Watchbell can't confirm what production is built from. Check it, then merge yourself"),!0;let d="checks"===a.stage||"preview"===a.stage||"smoke"===a.stage?a.stage:"smoke";return await g.save(a.id,{stage:d,...j,...k},a.proposalId,(0,Z.m)(a.number,d,ai)),!0}let d=c.source?ar({...a,meta:{...a.meta??{},productionSource:{...c.source,at:e.toISOString()}}},e):`Watchbell can't confirm what production is built from (Vercel names no branch for it). Merging this PR could deploy ${a.baseBranch} to production and replace what is live.`;return!!d&&(await m(d),!0)};if("stop"===i.kind&&"ready-manual"===i.stage&&await o())return;if("stop"===i.kind){await g.save(a.id,{stage:i.stage,finishedAt:e,...j},a.proposalId,(0,Z.m)(a.number,i.stage,"ready-manual"===i.stage?null:i.reason)),h.stopped++,await g.notify({...l,kind:"ready-manual"===i.stage?"ready-manual":"stopped",reason:i.reason}).catch(()=>void 0);return}let p=await g.review(f,a).catch(()=>null);if(!p)return;let q=(0,Z.k)(p);if(!q&&(0,Z.H)(p)&&e.getTime()-a.openedAt.getTime()>Z.R){let b="the lockfile wasn't added within 45 minutes";await g.save(a.id,{stage:"timeout",finishedAt:e,...j},a.proposalId,(0,Z.m)(a.number,"timeout",b)),h.stopped++,await g.notify({...l,kind:"stopped",reason:b}).catch(()=>void 0);return}if(!q&&(0,Z.H)(p))return void await g.save(a.id,{stage:"checks"},a.proposalId,(0,Z.m)(a.number,"checks","waiting for the lockfile"));if(q){await g.save(a.id,{stage:"failed",finishedAt:e,...j},a.proposalId,(0,Z.m)(a.number,"failed",q)),h.stopped++,await g.notify({...l,kind:"stopped",reason:q}).catch(()=>void 0);return}if(await o())return;await g.save(a.id,{stage:"merging",...j,...k},a.proposalId,(0,Z.m)(a.number,"merging"));let r=await g.merge(f,a.fullName,a.number,a.branch,a.baseBranch,a.headSha,a.title);if(r.ok){await g.save(a.id,{stage:"merged",mergedSha:r.data.sha,finishedAt:e},a.proposalId,(0,Z.m)(a.number,"merged")),h.merged++,await g.audit(`${ag.v}PR #${a.number} merged \xb7 ${a.packages.join(", ")}`.slice(0,200),a.appId).catch(()=>void 0),await g.notify({...l,kind:"merged",windowMin:d}).catch(()=>void 0);return}if(409===r.status)return void await g.save(a.id,{stage:"checks"},a.proposalId,(0,Z.m)(a.number,"checks","new commit on the PR branch, checking again"));let s=405===r.status?"GitHub refused the merge (cannot be merged)":`merge failed: ${r.error}`.slice(0,150);await g.save(a.id,{stage:"failed",finishedAt:e},a.proposalId,(0,Z.m)(a.number,"failed",s)),h.stopped++,await g.notify({...l,kind:"stopped",reason:s}).catch(()=>void 0)}let at=null;async function au(a,b,c=U.I){if((0,Z.f)(a,at)&&!(await c()).has("devops")){at=a.getTime();try{let c=await ap(a,b?.deadline??a.getTime()+5e4);c.watched&&console.log(`deps/watch: ${c.watched} PR, ${c.merged} merged, ${c.stopped} stopped`)}catch(a){console.warn("deps/watch failed:",a instanceof Error?a.name:"error")}}}var av=a.i(691100),aw=a.i(624065);let ax={nav:[{section:"manage",after:"settings",items:[{key:"ai",label:"AI Gateway",href:"/ai",icon:"route",stage:5,ownerOnly:!0},{key:"api-docs",label:"API explorer",href:"/api-docs",icon:"api",stage:5,ownerOnly:!0}]}],palette:[{label:"AI Gateway",href:"/ai",keywords:["ai","gateway","overview"]},{label:"API keys",href:"/ai/keys",keywords:["key","token","wb_","wp_"]},{label:"Agents",href:"/ai/agents",keywords:["agent","client","mcp"]},{label:"Connect an agent",href:"/ai/connect",keywords:["mcp",...e.I.palette.connectKeywords,"gemini cli","quick start"]},{label:"Bring your own key",href:"/ai/providers",keywords:["provider","byok","cloudflare","groq","openrouter","gemini"]},{label:"Quota",href:"/ai/quota",keywords:["limit","usage","rate"]},{label:"AI logs",href:"/ai/logs",keywords:["logs","requests","usage"]},{label:"Models",href:"/ai/models",keywords:["model","llm"]},{label:"Playground",href:"/ai/playground",keywords:["chat","try","prompt"]},{label:"API explorer",href:"/api-docs",keywords:["openapi","swagger","api","v1"]}]},ay={dailySteps:[{name:"ai-usage-retention",run:g.$}]},az={WhyAiSlot:E,RecSummarySlot:A,AiNotesSlot:v,dailySteps:[{name:"advisor-summary",run:j}],minuteSteps:[{name:"advisor-notes",run:h.I}]},aA={dailySteps:[{name:"ai-notes-retention",run:F.v}]},aB={nav:[{section:"manage",after:"alerts",items:[{key:"auto-actions",label:"Auto-actions",href:"/auto-actions",icon:"bolt",stage:9,ownerOnly:!0}]}],palette:[{label:"Auto-actions",href:"/auto-actions",keywords:["proposal","approve","reject","auto-run","rollback"]}],dailySteps:[{name:"auto-actions-retention",run:av.t}],minuteSteps:[{name:"auto-actions",run:av.Z},{name:"deps-pr-watch",run:au}],settingsTabs:[{key:"office-auto-run",label:"Auto-actions",Tab:N}]},aC={telegramCallback:aw.proposalCallback},aD=function(...a){let b={nav:[],palette:[]};for(let c of a){for(let a of c.nav??[]){let c=b.nav.find(b=>b.section===a.section&&b.after===a.after);c?c.items=[...c.items,...a.items]:b.nav.push({...a,items:[...a.items]})}b.palette.push(...c.palette??[]),c.dailySteps?.length&&(b.dailySteps=[...b.dailySteps??[],...c.dailySteps]),c.minuteSteps?.length&&(b.minuteSteps=[...b.minuteSteps??[],...c.minuteSteps]),c.WhyAiSlot&&(b.WhyAiSlot=c.WhyAiSlot),c.RecSummarySlot&&(b.RecSummarySlot=c.RecSummarySlot),c.AiNotesSlot&&(b.AiNotesSlot=c.AiNotesSlot),c.DevNotesSlot&&(b.DevNotesSlot=c.DevNotesSlot),c.office&&(b.office=c.office),c.settingsTabs?.length&&(b.settingsTabs=[...b.settingsTabs??[],...c.settingsTabs]),c.telegramCallback&&(b.telegramCallback=c.telegramCallback),c.runner&&(b.runner=c.runner),c.RepoPreviewSlot&&(b.RepoPreviewSlot=c.RepoPreviewSlot)}return b}({...ax,palette:(c=ax.palette??[],d={label:"Ask AI",href:"/ai/ask",keywords:["ask","question","answer"]},(b=c.findIndex(a=>"/ai"===a.href))<0?[...c,d]:[...c.slice(0,b+1),d,...c.slice(b+1)])},{dailySteps:[{name:"ai-agents-prune",run:()=>(0,f.w)()}]},ay,{},{},aA,aB,az,aC);a.s(["extensions",0,aD],534908)},285138,a=>{let b=(0,a.i(211857).registerClientReference)(function(){throw Error("Attempted to call AutoRollbackForm() from the server but AutoRollbackForm 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/private/actions/auto-rollback-form.tsx","AutoRollbackForm");a.s(["AutoRollbackForm",0,b])},411642,a=>{var b=a.i(285138);a.n(b)},305093,a=>{let b=(0,a.i(211857).registerClientReference)(function(){throw Error("Attempted to call AutoRunForm() from the server but AutoRunForm 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/private/actions/auto-run-form.tsx","AutoRunForm");a.s(["AutoRunForm",0,b])},581156,a=>{var b=a.i(305093);a.n(b)},173666,a=>{let b=(0,a.i(211857).registerClientReference)(function(){throw Error("Attempted to call AutoSecurityForm() from the server but AutoSecurityForm 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/private/actions/auto-security-form.tsx","AutoSecurityForm");a.s(["AutoSecurityForm",0,b])},65932,a=>{var b=a.i(173666);a.n(b)},140025,a=>{let b=(0,a.i(211857).registerClientReference)(function(){throw Error("Attempted to call DismissNoteButton() from the server but DismissNoteButton 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/private/slots/dismiss-note-button.tsx","DismissNoteButton");a.s(["DismissNoteButton",0,b])},791450,a=>{var b=a.i(140025);a.n(b)},581542,a=>{let b=(0,a.i(211857).registerClientReference)(function(){throw Error("Attempted to call RegenerateButton() from the server but RegenerateButton 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/private/slots/regenerate-button.tsx","RegenerateButton");a.s(["RegenerateButton",0,b])},185538,a=>{var b=a.i(581542);a.n(b)},402242,a=>{let b=(0,a.i(211857).registerClientReference)(function(){throw Error("Attempted to call WhyAi() from the server but WhyAi 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/private/slots/why-ai.tsx","WhyAi");a.s(["WhyAi",0,b])},976517,a=>{var b=a.i(402242);a.n(b)}]})();
2
2
 
3
3
  //# sourceMappingURL=src_0uitfl3c1mdqb._.js.map
@@ -1,3 +1,3 @@
1
- (()=>{"use strict";module.exports=[455317,912283,876808,569057,751263,930270,a=>{var b=a.i(93321),c=a.i(530385),d=a.i(351674),e=a.i(548734),f=a.i(837137),g=a.i(927262),h=a.i(201516),i=a.i(273133),j=a.i(120213),k=a.i(84979),l=a.i(84877),m=a.i(679662);let n=/^v?(\d+)\.(\d+)\.(\d+)(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/;function o(a,b){let c=n.exec(a.trim()),d=n.exec(b.trim());return!!c&&!!d&&c[1]===d[1]&&("0"!==c[1]||c[2]===d[2])&&(0,l.f)(b,a)>=0}let p=/^Watch(?:bell|post): update (?:\S+ (?:to|ke) \S+|\d+ vulnerable packages) in ((?:[A-Za-z0-9._-]+\/){0,3}[A-Za-z0-9._-]+) \(/,q=a=>p.exec(a)?.[1]??null;function r(a,b){if(!b)return{deps:a,stale:[]};let c=[...Object.entries(b.dependencies).map(([a,b])=>[a,b,!1]),...Object.entries(b.optionalDependencies).map(([a,b])=>[a,b,!1]),...Object.entries(b.devDependencies).map(([a,b])=>[a,b,!0])],d=[...a],e=[];for(let[a,b,f]of c){let c=(0,m.Y)(b);if(!c||!(0,m.C)(c))continue;let g=d.filter(b=>b.name===a);!g.length||g.some(a=>(0,l.f)(a.version,c)>=0)||((d=d.filter(b=>b.name!==a)).push({name:a,version:c,dev:g.every(a=>a.dev)&&f}),e.push(a))}return{deps:d,stale:e}}let s=a=>`Lockfile tertinggal — jalankan npm install (${a.slice(0,5).join(", ")}${a.length>5?`, +${a.length-5}`:""}).`;a.s(["M",0,s,"a",0,function(a,b,c){if(!a.length)return{ok:!1,why:"nothing"};let d=a.filter(a=>c.includes(a.severity)&&!("moderate"===a.severity&&a.dev));if(!d.length)return{ok:!1,why:"severity"};for(let a of d){let c=b.get(a.package);if(!c||!o(c,a.to))return{ok:!1,why:"major"}}return{ok:!0,upgrades:d}},"m",0,r,"D",0,function(a){let b=new Map;for(let c of a){if(!c.direct)continue;let a=b.get(c.package);(!a||0>(0,l.f)(c.installedVersion,a))&&b.set(c.package,c.installedVersion)}return b},"U",0,function(a,b,c=null){for(let d of b){if(q(d.title)!==c)continue;let b=function(a){if(a.packages?.length)return a.packages;let b=/^Watch(?:bell|post): update (\S+) (?:to|ke) /.exec(a.title);return b?[b[1]]:"all"}(d);if("all"===b||a.some(a=>b.includes(a)))return d}return null},"J",0,o],912283);let t=["next","eslint-config-next"],u={CRITICAL:"critical",HIGH:"high",MODERATE:"moderate",LOW:"low",UNKNOWN:"unknown"};function v(a,b){if(!a||!(0,m.C)(a))return null;let c=b.map(a=>a.fixed).filter(b=>!!b&&(0,m.C)(b)&&(0,l.f)(b,a)>0);if(!c.length)return null;let d=c.filter(b=>o(a,b));return(d.length?d:c).reduce((a,b)=>(0,l.f)(b,a)>0?b:a)}function w(a,b){let c=v(a,b),d=c?b.map(a=>a.fixed).filter(a=>!!a&&(0,m.C)(a)&&(0,l.f)(a,c)>0):[],e=d.reduce((a,b)=>null===a||(0,l.f)(b,a)>0?b:a,null),f=e?` (${1===d.length?"one fix needs":"some fixes need"} Next.js ${e.split(".")[0]})`:"";return`Next.js ${a??"(unknown version)"} has ${(0,k.q)(b.length)} (${(0,k.N)(b).toLowerCase()}), ${c?`fixed in ${c}${f}`:"no fix yet"}.`}a.s(["P",0,w,"p",0,function(a){if(!a||"vulnerable"!==a.status||!a.findings.length||!a.version)return null;let b=v(a.version,a.findings);if(!b)return null;let c=u[(0,k.N)(a.findings)],d=[...new Set(a.findings.map(a=>a.id))],e=[...new Set(a.findings.flatMap(a=>a.cve?[a.cve]:[]))];return{from:a.version,to:b,upgrades:[{package:"next",to:b,vulnIds:d,cves:e,severity:c},{package:"eslint-config-next",to:b,vulnIds:[],cves:[],severity:c,companionOf:"next"}],installed:new Map(t.map(b=>[b,a.version]))}},"F",0,function(a){let b=a.find(a=>"next"===a.package&&!a.companionOf);return!b||a.some(a=>"eslint-config-next"===a.package)?a:[...a,{package:"eslint-config-next",to:b.to,vulnIds:[],cves:[],severity:b.severity,companionOf:"next"}]}],876808);let x=a=>Math.round(a).toLocaleString("en-US"),y=(a,b)=>Math.floor((a.getTime()-b.getTime())/864e5),z=(a,b)=>`${a} ${b}${1===a?"":"s"}`,A=a=>{try{let b=new URL(a);return`${b.host}${b.pathname}`}catch{return a}},B=a=>{try{return new URL(a).host}catch{return a}},C=a=>{try{return new URL(a).pathname}catch{return"/"}},D="Down · ",E=(a,b,c)=>({rule:a,subject:b,status:"unknown",resourceId:null,accountId:null,title:b,message:"",provider:null,sampleAt:null,...c}),F=a=>"firestore"===a.provider?"firebase":"d1"===a.provider?"cloudflare":a.provider,G=new Set(["turso","upstash","d1"]),H={MonitorDown:(a,b)=>a.monitors.map(a=>{let c=E("MonitorDown",a.id,{resourceId:a.appId,title:`${a.appName} ${"heartbeat"===a.kind?a.url:C(a.url)}`,provider:"vercel",sampleAt:a.lastCheckedAt}),d=b??3;if("heartbeat"===a.kind){let b;return{...c,status:"err"===a.state?"firing":"ok"===a.state?"ok":"unknown",message:`${a.appName} \xb7 ${a.url}: ${b=a.lastError,b?.startsWith(D)?b.slice(D.length):"no ping in time"}.`}}return a.movedTo?{...c,status:"ok",message:`${B(a.url)} moved to ${a.movedTo}; MonitorDomainMoved takes over.`}:a.failStreak>=d?{...c,status:"firing",message:(0,h.H)(a)?`${A(a.url)} failed its check (${(0,h.H)(a)}) on ${d} consecutive checks.`:`${A(a.url)} returned ${a.lastStatus?`HTTP ${a.lastStatus}`:"no answer"} on ${d} consecutive checks.`}:{...c,status:0===a.failStreak&&a.lastCheckedAt?"ok":"unknown",message:`${A(a.url)} answers again.`}}),MonitorDomainMoved:a=>a.monitors.filter(a=>"http"===a.kind).map(a=>{let b=E("MonitorDomainMoved",a.id,{resourceId:a.appId,title:`${a.appName} ${C(a.url)}`,provider:"vercel"});return a.movedTo?{...b,status:"firing",message:`${B(a.url)} is no longer a domain of ${a.appName}; production is on ${a.movedTo}.`}:{...b,status:"ok",message:`The monitor checks ${B(a.url)}, a domain of ${a.appName}.`}}),CollectorStale:(a,b)=>{let c=a.lastMinuteRunAt;return[E("CollectorStale","collector",{status:!c||a.now.getTime()-c.getTime()>(b??5)*6e4?"firing":"ok",title:"collector",message:c?`The last minute run finished ${x((a.now.getTime()-c.getTime())/6e4)} min ago.`:"The collector hasn't finished a run yet."})]},HighLatency:(a,b)=>a.monitors.filter(a=>"http"===a.kind).map(a=>{let c=E("HighLatency",a.id,{resourceId:a.appId,title:`${a.appName} ${C(a.url)}`,provider:"vercel",sampleAt:a.lastCheckedAt});if(a.checksLast10<5||null===a.p95Last10)return c;let d=b??1500;return{...c,status:a.p95Last10>d?"firing":"ok",message:`p95 ${x(a.p95Last10)} ms over the last 10 minutes (limit ${x(d)} ms).`}}),DeploymentFailed:a=>a.apps.map(a=>{let b=E("DeploymentFailed",a.id,{resourceId:a.id,title:a.name,provider:"vercel"}),c=a.latestProduction;return c?"error"===c.state?{...b,status:"firing",message:`Production deployment ${c.sha?c.sha.slice(0,7):"(no commit)"} failed.`}:{...b,status:"building"===c.state?"unknown":"ok"}:{...b,status:"ok"}}),DatabasePaused:a=>a.dbs&&a.dbs.filter(a=>"supabase"===a.provider).map(a=>E("DatabasePaused",a.id,{resourceId:a.id,title:a.name,provider:"supabase",status:"unknown"===a.state?"unknown":"paused"===a.state?"firing":"ok",message:`Supabase project ${a.name} is paused.`})),CertExpiringSoon:(a,b)=>a.domains&&a.domains.map(c=>{let d=E("CertExpiringSoon",c.id,{resourceId:c.id,title:c.name,provider:"cloudflare"});if(!c.tlsNotAfter)return d;let e=y(c.tlsNotAfter,a.now);return{...d,status:e<(b??14)?"firing":"ok",message:`The TLS certificate of ${c.name} expires in ${z(e,"day")}.`}}),DomainExpiringSoon:(a,b)=>a.domains&&a.domains.map(c=>{let d=E("DomainExpiringSoon",c.id,{resourceId:c.id,title:c.name,provider:"cloudflare"});if(!c.expiresAt)return d;let e=y(c.expiresAt,a.now);return{...d,status:e<(b??30)?"firing":"ok",message:`${c.name} expires in ${z(e,"day")}.`}}),StorageAlmostFull:(a,b)=>a.dbs&&a.dbs.filter(a=>"firestore"!==a.provider).map(a=>{let c=E("StorageAlmostFull",a.id,{resourceId:a.id,title:a.name,provider:F(a)});if(null===a.sizeBytes||!a.sizeLimitBytes)return c;let d=a.sizeBytes/a.sizeLimitBytes*100;return{...c,status:d>(b??80)?"firing":"ok",message:`${a.name} uses ${x(a.sizeBytes/1e6)} MB of ${x(a.sizeLimitBytes/1e6)} MB (${x(d)}%).`}}),NeonComputeHigh:(a,b)=>a.dbs&&a.dbs.filter(a=>"neon"===a.provider).map(a=>{let c=E("NeonComputeHigh",a.id,{resourceId:a.id,title:a.name,provider:"neon"});return null===a.cuHours?c:{...c,status:a.cuHours>(b??80)?"firing":"ok",message:`${a.name} used ${x(a.cuHours)} of ${x(a.cuLimit??100)} CU-hours this month.`}}),FirestoreQuotaHigh:(a,b)=>a.dbs&&a.dbs.filter(a=>"firestore"===a.provider).map(a=>{let c=E("FirestoreQuotaHigh",a.id,{resourceId:a.id,title:a.name,provider:"firebase"});if(a.quotaExhausted)return{...c,status:"firing",message:`${a.name} hit a Firestore quota (RESOURCE_EXHAUSTED).`};if(null===a.readsToday||!a.readsLimit)return!1===a.quotaExhausted?{...c,status:"ok"}:c;let d=a.readsToday/a.readsLimit*100;return{...c,status:d>(b??80)?"firing":"ok",message:`${a.name} read ${x(a.readsToday)} of ${x(a.readsLimit)} documents today (${x(d)}%).`}}),AutoPauseRisk:(a,b)=>a.dbs&&a.dbs.filter(a=>"supabase"===a.provider).map(c=>{let d=E("AutoPauseRisk",c.id,{resourceId:c.id,title:c.name,provider:"supabase"});if("paused"===c.state)return{...d,status:"ok"};if(!c.lastApiAt)return d;let e=Math.floor((a.now.getTime()-c.lastApiAt.getTime())/864e5);return{...d,status:e>=(b??4)?"firing":"ok",message:`No API traffic for ${z(e,"day")}. Supabase pauses free projects after about 7 days.`}}),DnsProxiedToVercel:a=>a.dns&&a.dns.map(a=>E("DnsProxiedToVercel",a.id,{resourceId:a.resourceId,title:a.name,provider:"cloudflare",status:a.proxied&&a.pointsToVercel?"firing":"ok",message:`${a.name} points to Vercel through the Cloudflare proxy. Vercel recommends DNS only.`})),DbQuotaHigh:(a,b)=>a.dbs&&a.dbs.filter(a=>G.has(a.provider)).map(a=>{let c=E("DbQuotaHigh",a.id,{resourceId:a.id,title:a.name,provider:F(a)});return null==a.quotaPct?c:{...c,status:a.quotaPct>(b??80)?"firing":"ok",message:`${a.name}: ${a.quotaLabel??"usage"} at ${x(a.quotaPct)}% of the free plan.`}}),ComputeHigh:(a,b)=>a.compute?a.compute.map(c=>{let d=E("ComputeHigh",c.id,{resourceId:c.id,title:c.name,provider:"supabase",sampleAt:c.latest?new Date(c.latest.at):null}),e=(0,i.B)(c.latest,(0,i.V)(b),a.now);return null===e?d:{...d,status:e.length?"firing":"ok",message:e.length?`${c.name}: ${e.join(", ")}.`:`${c.name} compute is back under the limits.`}}):null,CredentialExpiring:(a,b)=>a.accounts.map(c=>{let d=E("CredentialExpiring",c.id,{accountId:c.id,title:`${c.provider} \xb7 ${c.label}`,provider:c.provider});if("drive"===c.provider&&"error"===c.status&&c.lastError?.includes("invalid_grant"))return{...d,status:"firing",message:"Google Drive access was removed (invalid_grant). Reconnect it."};if(!c.expiresAt)return{...d,status:"ok"};let e=y(c.expiresAt,a.now);return{...d,status:e<(b??14)?"firing":"ok",message:e<0?`The ${c.provider} credential ${c.label} has expired.`:`The ${c.provider} credential ${c.label} expires in ${z(e,"day")}.`}}),VulnerableDependency:a=>a.deps?a.deps.flatMap(b=>{let c=a.apps.find(a=>a.id===b.appId);if(!c)return[];let d=E("VulnerableDependency",b.appId,{resourceId:b.appId,title:c.name,provider:"github"});if(b.error)return[d];let e=(0,j.g)(b.vulns);return e?[{...d,status:"firing",message:(0,j.L)(b.vulns),..."critical"===e?{severity:"critical"}:{}}]:[{...d,status:"ok",message:`${c.name} has no moderate, high or critical dependency advisories.`}]}):null,FrameworkVulnerable:a=>a.frameworks?a.frameworks.flatMap(b=>{let c=a.apps.find(a=>a.id===b.appId);if(!c)return[];let d=E("FrameworkVulnerable",b.appId,{resourceId:b.appId,title:c.name});return"ok"===b.status?[{...d,status:"ok",message:`${c.name} runs Next.js ${b.version??"(unknown version)"} with no known advisories.`}]:"vulnerable"===b.status&&b.findings.length?[{...d,status:"firing",message:w(b.version,b.findings),..."CRITICAL"===(0,k.N)(b.findings)?{severity:"critical"}:{}}]:[d]}):null},I=["MonitorDown","HighLatency"],J=["telegram","discord"],K=a=>a.channels.some(a=>J.includes(a));function L(a,b){return b.collectorStale&&"CollectorStale"!==a.rule?"CollectorStale":a.resourceId&&I.includes(a.rule)?b.mutedApps.get(a.resourceId)??null:null}let M=(a,b)=>"critical"===b&&"warning"===a?"critical":a,N=(a,b)=>a.silencedUntilResolved||null!==a.silencedUntil&&a.silencedUntil.getTime()>b.getTime(),O=(a,b)=>`${a}|${b}`;var P=a.i(519051),Q=a.i(160147),R=a.i(71575),S=a.i(639271),T=a.i(656298),U=a.i(688275),V=a.i(893893),W=a.i(672319),X=a.i(188546),Y=a.i(233711);async function Z(){let[a]=await (0,e.f)().select({at:f.collectorRuns.finishedAt}).from(f.collectorRuns).where((0,b.b)((0,b.E)(f.collectorRuns.finishedAt),(0,b.y)(f.collectorRuns.trigger,["cron_job_org","qstash","manual"]))).orderBy((0,c.A)(f.collectorRuns.finishedAt)).limit(1);return a?.at??null}async function $(){let[a]=await (0,e.f)().select({at:f.collectorRuns.finishedAt}).from(f.collectorRuns).where((0,b.b)((0,b.E)(f.collectorRuns.finishedAt),(0,b.y)(f.collectorRuns.trigger,["cron_job_org","manual"]))).orderBy((0,c.A)(f.collectorRuns.finishedAt)).limit(1);return a?.at??null}a.s(["D",0,Z,"d",0,$],569057);var _=a.i(367247),aa=a.i(436357),ab=a.i(358179),ac=a.i(492665),ad=a.i(683439),ae=a.i(852539),af=a.i(33135),ag=a.i(533957);let ah="OpsConsole-Deps/1.0 (+https://watchbell.west-solutions.web.id)";async function ai(a,b,c,d){let e=d.deadline-Date.now();if(e<500)return{ok:!1,error:"No time left for OSV.dev"};let f=AbortSignal.timeout(e);return ak(a,{method:"POST",headers:{"content-type":"application/json","user-agent":ah},body:JSON.stringify(b),signal:f},c,f,d)}async function aj(a,b,c){let d=c.deadline-Date.now();if(d<500)return{ok:!1,error:"No time left for OSV.dev"};let e=AbortSignal.timeout(Math.min(d,8e3));return ak(a,{method:"GET",headers:{"user-agent":ah},signal:e},b,e,c)}async function ak(a,b,c,d,e){let f;try{f=await (e.fetch??fetch)(a,{...b,redirect:"error",cache:"no-store"})}catch(a){return{ok:!1,error:(0,ag.t)(a)?"OSV.dev didn't answer in time":"Couldn't reach OSV.dev"}}if(!f.ok)return await f.body?.cancel().catch(()=>void 0),{ok:!1,error:`OSV.dev answered HTTP ${f.status}`};try{let{bytes:a,truncated:b}=await (0,af.z)(f,c,(0,af.X)(d));if(b)return{ok:!1,error:"OSV.dev sent too large an answer"};return{ok:!0,body:JSON.parse(new TextDecoder().decode(a))}}catch(a){return{ok:!1,error:(0,ag.t)(a)?"OSV.dev didn't answer in time":"OSV.dev sent an answer we couldn't read"}}}async function al(a,b){let c=[];for(let d of(0,ae.f)(a)){let a=await ai(ae.n,d,4194304,b);if(!a.ok)return a;let e=(0,ae.j)(a.body,d.queries.length);if(!e)return{ok:!1,error:"OSV.dev sent an answer we couldn't read"};c.push(...e)}return{ok:!0,ids:c}}async function am(a,b){let c=[...new Set(a)].filter(ae.G);if(c.length>300)return{ok:!1,error:`Too many advisories to read in one scan (${c.length})`};let d=new Map,e=null;for(let a=0;a<c.length&&!e;a+=8)await Promise.all(c.slice(a,a+8).map(async a=>{let c=await aj(`${ae.W}${encodeURIComponent(a)}`,1048576,b),f=c.ok?(0,ae.O)(c.body):null;f?d.set(a,f):e??=c.ok?"OSV.dev sent an advisory we couldn't read":c.error}));return e?{ok:!1,error:e}:{ok:!0,map:d}}var an=a.i(521050),ao=a.i(689963),ap=a.i(26972),aq=a.i(427221),ar=a.i(811365),as=a.i(760417);let at=ao.z.array(ap.z.object({name:aq.z.string(),type:aq.z.string(),sha:aq.z.string(),size:ar.z.number().optional()}));async function au(a,b,c,d={},e=null){if(!(0,as.M)(b)||!(0,as.c)(c))return{ok:!1,kind:"format",error:"That isn't a repository name or ref."};if(null!==e&&(0,an.Q)(e)!==e)return{ok:!1,kind:"format",error:"That isn't a folder in a repository."};let f=e?e.split("/").map(encodeURIComponent).join("/"):"",g=await (0,as.j)(`/repos/${(0,as.f)(b)}/contents/${f}?ref=${encodeURIComponent(c)}`,a,d);if(!g.ok)return g;let h=at.safeParse(g.data);return h.success?{ok:!0,data:h.data.filter(a=>"file"===a.type&&/^[0-9a-f]{40}$/.test(a.sha)).map(a=>({name:a.name,sha:a.sha,size:a.size??0}))}:{ok:!1,kind:"format",error:"GitHub answered the file list in a format the console doesn't recognise."}}async function av(a,b,c,d={}){if(!(0,as.M)(b)||!(0,as.c)(c))return{ok:!1,kind:"format",error:"That isn't a repository name or branch."};let e=await (0,as.j)(`/repos/${(0,as.f)(b)}/git/ref/heads/${c.split("/").map(encodeURIComponent).join("/")}`,a,d);return e.ok?{ok:!0,data:!0}:"missing"===e.kind?{ok:!0,data:!1}:e}function aw(a,b,c,d,e,f={}){return(0,as.V)(a,b,c,d,e,f)}async function ax(a,b,c={}){if(!(0,as.M)(b))return{ok:!1,kind:"format",error:"That isn't a repository name."};let d=await (0,as.j)(`/repos/${(0,as.f)(b)}/dependabot/alerts?state=open&ecosystem=npm&per_page=100`,a,c);if(!d.ok)return"scope"===d.kind||"missing"===d.kind?{ok:!0,data:{denied:!0}}:d;let e=(0,j.E)(d.data);return e?{ok:!0,data:{alerts:e}}:{ok:!1,kind:"format",error:"GitHub answered the Dependabot alerts in a format the console doesn't recognise."}}function ay(a,b){return"string"==typeof a&&a!==b&&(0,as.c)(a)?a:null}async function az(){let[a]=await (0,e.f)().select().from(f.accounts).where((0,b.u)(f.accounts.provider,"github")).orderBy((0,c.M)(f.accounts.createdAt)).limit(1);if(!a)return{error:"GitHub isn't connected."};let d=(0,ab.V)({ciphertext:a.credentialCiphertext,iv:a.credentialIv},(0,ac.f)().OPS_ENCRYPTION_KEY);return d?{token:d,accountId:a.id}:{error:"Can't read the stored GitHub credential. Replace it on Connections."}}async function aA(){let[a]=await (0,e.f)().select({value:f.settings.value}).from(f.settings).where((0,b.u)(f.settings.key,"deps.scanAll")).limit(1);return a?.value===!0}a.s(["f",0,ay],751263);let aB=a=>({dir:(0,an.Q)((a??{}).rootDirectory),unsupported:(0,an.l)((a??{}).rootDirectoryUnsupported),branch:ay((a??{}).productionBranch,null)});async function aC(a){let c=[...new Set(a.filter(ad.f))],d=new Map;if(!c.length)return d;let g=await (0,e.f)().select({repoId:f.appRepos.repoId,name:f.resources.name,monitored:f.resources.monitored,meta:f.resources.meta}).from(f.appRepos).innerJoin(f.resources,(0,b.u)(f.resources.id,f.appRepos.appId)).where((0,b.b)((0,b.y)(f.appRepos.repoId,c),(0,b.M)(f.resources.goneAt))).limit(1e3);for(let a of(g.sort((a,b)=>Number(!!b.monitored)-Number(!!a.monitored)||(a.name<b.name?-1:+(a.name>b.name))),g))d.has(a.repoId)||d.set(a.repoId,aB(a.meta));return d}async function aD(){let a={id:f.githubRepos.id,fullName:f.githubRepos.fullName,defaultBranch:f.githubRepos.defaultBranch,scannedAt:f.dependencyScans.scannedAt},c=(0,b.b)((0,b.M)(f.githubRepos.goneAt),(0,b.u)(f.githubRepos.archived,!1)),d=await aA()?await (0,e.f)().select(a).from(f.githubRepos).leftJoin(f.dependencyScans,(0,b.u)(f.dependencyScans.repoId,f.githubRepos.id)).where(c).limit(500):await (0,e.f)().selectDistinct(a).from(f.appRepos).innerJoin(f.githubRepos,(0,b.u)(f.githubRepos.id,f.appRepos.repoId)).leftJoin(f.dependencyScans,(0,b.u)(f.dependencyScans.repoId,f.githubRepos.id)).where(c).limit(500),g=d.length?await aC(d.map(a=>a.id)):new Map;return(0,j.M)(d.map(a=>({...a,rootDir:g.get(a.id)?.dir??null,rootDirUnsupported:g.get(a.id)?.unsupported??null,prodBranch:g.get(a.id)?.branch??null})))}let aE=(a,b)=>a.length>b?`${a.slice(0,b-1)}…`:a;async function aF(a,b){let c=new Date;await (0,e.f)().insert(f.dependencyScans).values({repoId:a,...b,updatedAt:c}).onConflictDoUpdate({target:f.dependencyScans.repoId,set:{...b,updatedAt:c}})}async function aG(a){return(0,e.f)().select({id:f.dependencyVulns.id,package:f.dependencyVulns.package,installedVersion:f.dependencyVulns.installedVersion,vulnId:f.dependencyVulns.vulnId,severity:f.dependencyVulns.severity,fixedVersion:f.dependencyVulns.fixedVersion,summary:f.dependencyVulns.summary,aliases:f.dependencyVulns.aliases,dev:f.dependencyVulns.dev,direct:f.dependencyVulns.direct,source:f.dependencyVulns.source}).from(f.dependencyVulns).where((0,b.b)((0,b.u)(f.dependencyVulns.repoId,a),(0,b.M)(f.dependencyVulns.resolvedAt))).limit(2e3)}function aH(a,b){for(let c of m.a){let d=a.find(a=>a.name===c.path);if(d)return{path:(0,an.H)(b,c.path),kind:c.kind,sha:d.sha}}return null}async function aI(a,c,d,g={}){let h=()=>({...g,timeoutMs:Math.max(1e3,Math.min(d-Date.now(),1e4))}),i=async a=>(await aF(c.id,{error:aE(a,300),scannedAt:new Date}).catch(()=>void 0),{status:"failed",error:a}),k=c.defaultBranch??"HEAD",l=ay(c.prodBranch,c.defaultBranch),n=!1;if(l){let b=await av(a,c.fullName,l,h());if(!b.ok)return i(b.error);b.data&&(k=l,n=!0)}let o=n?`Scanned ${l}, the branch Vercel deploys to production.`:null,p=(0,an.Q)(c.rootDir),q=p?null:(0,an.l)(c.rootDirUnsupported),t=q?`The Vercel Root Directory "${q}" couldn't be used (Watchbell reads plain folder names, at most 4 deep); scanned the repository root.`:null,u=await au(a,c.fullName,k,h(),p);if(!u.ok)return i(p&&"missing"===u.kind?`The folder ${(0,an.x)(p)} isn't in ${c.fullName} on ${k}.`:u.error);let v=aH(u.data,p),w=u.data.find(a=>"package.json"===a.name)??null,x=!1,y=null;if(p&&w&&!v){let b=await au(a,c.fullName,k,h());if(!b.ok)return i(b.error);x=null!==(v=aH(y=b.data,null))}let z=v?v.sha:w?`pkg:${w.sha}`:null,A=z&&p?`${p}:${z}${x&&w?`+${w.sha}`:""}`:z&&q?`odd:${z}`:z,B=A&&n?`br:${l}:${A}`:A,[C]=await (0,e.f)().select().from(f.dependencyScans).where((0,b.u)(f.dependencyScans.repoId,c.id)).limit(1),D=new Date;if(!(0,j.U)(C??null,B,D,g.force))return{status:"unchanged"};if(!B){let a=await aG(c.id);return a.length&&await (0,e.f)().update(f.dependencyVulns).set({resolvedAt:D}).where((0,b.y)(f.dependencyVulns.id,a.map(a=>a.id))),await aF(c.id,{lockfilePath:null,lockfileSha:null,packageCount:0,scannedAt:D,queriedAt:D,error:null,note:aE([o,t,`No package.json or lockfile ${p?"in":"at"} ${(0,an.x)(p)}.`].filter(Boolean).join(" "),300)}),{status:"scanned",vulns:0,packages:0,note:"no package.json"}}let E=(0,an.H)(p,"package.json"),F=w?await aw(a,c.fullName,E,k,as.$,h()):null;if(F&&!F.ok)return i(F.error);let G=F?.ok&&F.data?(0,m.b)(F.data):null,H=null,I="package-json",J=x&&v?`Scanned ${(0,an.x)(p)} with the repository root's ${v.path} (workspaces).`:null;if(v){if(2e3>d-Date.now())return i("Time budget used before the lockfile was read; the next run tries again.");let b=await aw(a,c.fullName,v.path,k,0xf00000,{...g,timeoutMs:Math.max(1e3,Math.min(d-Date.now(),2e4))});if(!b.ok)return i(b.error);let e=!0;if(x&&p&&b.data&&!(0,an.p)(v.kind,b.data,p)){let b=y?.some(a=>"package.json"===a.name)?await aw(a,c.fullName,"package.json",k,as.$,h()):null;if(b&&!b.ok)return i(b.error);e=(0,an.F)(b?.data??null,p)}e?(H=b.data?(0,m.D)(v.kind,b.data):null,I=v.kind,H||(J=[J,`${v.path} couldn't be read; the versions come from package.json ranges (approximate).`].filter(Boolean).join(" "))):(J=`The repository root's ${v.path} isn't a workspace that includes ${p}, so the versions come from ${E} ranges (approximate).`,v=null)}if(H){let a=r(H,G);H=a.deps,a.stale.length&&(J=[J,s(a.stale)].filter(Boolean).join(" "))}else H=G?(0,m.e)(G):[],I="package-json",J??=v?null:"No lockfile: the versions come from package.json ranges (approximate).";let K=await aG(c.id),L=[];if(H.length){let a=await al(H,{fetch:g.fetch,deadline:d});if(!a.ok)return i(a.error);let b=(0,j.A)(K,!0===g.force),c=await am((0,j.z)(H,a.ids,b),{fetch:g.fetch,deadline:d});if(!c.ok)return i(c.error);L=(0,ae.i)(H,a.ids,c.map,b)}if(d-Date.now()>1500){let b=await ax(a,c.fullName,h());b.ok&&"alerts"in b.data?L=(0,j.R)(L,b.data.alerts,H):b.ok&&(J=[J,"Dependabot alerts aren't readable with this token (optional: Dependabot alerts: Read)."].filter(Boolean).join(" "))}let M=(0,j.h)(K,L,(0,m.K)(G));J=[o,t,J].filter(Boolean).join(" ")||null;let N=new Date;return await (0,e.f)().transaction(async a=>{for(let d of(M.insert.length&&await a.insert(f.dependencyVulns).values(M.insert.map(a=>({repoId:c.id,package:a.package,installedVersion:a.installedVersion,vulnId:a.vulnId,aliases:a.aliases,severity:a.severity,fixedVersion:a.fixedVersion,summary:a.summary,direct:a.direct,dev:a.dev,source:a.source,firstSeenAt:N,lastSeenAt:N}))).onConflictDoNothing(),M.update))await a.update(f.dependencyVulns).set({severity:d.severity,fixedVersion:d.fixedVersion,summary:d.summary,aliases:d.aliases,dev:d.dev,direct:d.direct,lastSeenAt:N}).where((0,b.u)(f.dependencyVulns.id,d.id));M.resolve.length&&await a.update(f.dependencyVulns).set({resolvedAt:N}).where((0,b.b)((0,b.y)(f.dependencyVulns.id,M.resolve),(0,b.M)(f.dependencyVulns.resolvedAt))),await a.insert(f.dependencyScans).values({repoId:c.id,lockfilePath:v?.path??(w?E:null),lockfileSha:B,packageCount:H.length,scannedAt:N,queriedAt:N,error:null,note:J?aE(J,300):null,updatedAt:N}).onConflictDoUpdate({target:f.dependencyScans.repoId,set:{lockfilePath:v?.path??(w?E:null),lockfileSha:B,packageCount:H.length,scannedAt:N,queriedAt:N,error:null,note:J?aE(J,300):null,updatedAt:N}})}),{status:"scanned",vulns:M.insert.length+M.update.length,packages:H.length,note:"package-json"===I?J:null}}async function aJ(a,c={}){var d,g;let h,i,j,k,l=await az();if("error"in l)return{error:l.error};let{first:m,only:n,skip:o,...p}=c,q=(d=await aD(),h=(g={first:m,only:n,skip:o}).only?new Set(g.only):null,i=new Set(g.skip??[]),j=(h?d.filter(a=>h.has(a.id)):d).filter(a=>!i.has(a.id)),k=new Set(g.first??[]),[...j.filter(a=>k.has(a.id)),...j.filter(a=>!k.has(a.id))]),r={scanned:0,unchanged:0,failed:[],left:0,done:[],listed:q.map(a=>a.id)};for(let[b,c]of q.entries()){if(a-Date.now()<4e3){r.left=q.length-b;break}r.done.push(c.id);try{let b=await aI(l.token,c,a,p);"scanned"===b.status?r.scanned++:"unchanged"===b.status?r.unchanged++:r.failed.push(`${c.fullName}: ${b.error}`)}catch(a){r.failed.push(`${c.fullName}: ${a instanceof Error?a.name:"error"}`)}}return await (0,e.f)().delete(f.dependencyVulns).where((0,b.b)((0,b.E)(f.dependencyVulns.resolvedAt),(0,b.S)(f.dependencyVulns.resolvedAt,new Date(Date.now()-7776e6)))).catch(()=>void 0),r}let aK=async()=>(await (0,e.f)().select({id:f.accounts.id}).from(f.accounts).where((0,b.u)(f.accounts.provider,"github")).limit(1)).length>0;async function aL(a,c,d={}){let g,h,i,{marked:j,onlyMarked:k}=c;if(!await aK())return{problem:null,settled:[...j],done:[],complete:!0};let l=j.filter(ad.f),m=l.length?await (0,e.f)().select({appId:f.appRepos.appId,repoId:f.appRepos.repoId}).from(f.appRepos).where((0,b.y)(f.appRepos.appId,l)).limit(5*l.length):[],n=[...new Set(m.map(a=>a.repoId))],o=a=>m.filter(b=>b.appId===a).map(a=>a.repoId),p=j.filter(a=>!o(a).length);if(k&&!n.length)return{problem:null,settled:[...j],done:[],complete:!0};if(a-Date.now()<4e3)return{problem:null,settled:p,done:[],complete:!1};let q=(c.skip??[]).filter(a=>!n.includes(a)),r=await aJ(a,{...d,first:n,...k?{only:n}:{skip:q}});if("error"in r){let a;return{problem:(a=r.error,/didn't answer in time|no time left|time budget|rate limit/i.test(a))?null:r.error,settled:[...j],done:[],complete:!0}}let s=new Set([...r.done,...n.filter(a=>!r.listed.includes(a))]);return{problem:(g=r.failed.filter(a=>!/didn't answer in time|no time left|time budget|rate limit/i.test(a)),(h=r.failed.length-g.length+(r.left??0))&&console.info(`deps: ${h} repositor${1===h?"y":"ies"} wait for the next run`),i=g.slice(0,3),g.length>3&&i.push(`+${g.length-3} more`),i.length?i.join("; "):null),settled:j.filter(a=>o(a).every(a=>s.has(a))),done:r.done,complete:0===r.left}}async function aM(a){let d={repo:null,scan:null,vulns:[],writeConnected:!1};if(!(0,ad.f)(a))return d;let[g]=await (0,e.f)().select({id:f.githubRepos.id,fullName:f.githubRepos.fullName}).from(f.appRepos).innerJoin(f.githubRepos,(0,b.u)(f.githubRepos.id,f.appRepos.repoId)).where((0,b.u)(f.appRepos.appId,a)).limit(1);if(!g)return d;let[[h],i,[k]]=await Promise.all([(0,e.f)().select({scannedAt:f.dependencyScans.scannedAt,lockfilePath:f.dependencyScans.lockfilePath,packageCount:f.dependencyScans.packageCount,error:f.dependencyScans.error,note:f.dependencyScans.note}).from(f.dependencyScans).where((0,b.u)(f.dependencyScans.repoId,g.id)).limit(1),(0,e.f)().select({package:f.dependencyVulns.package,installedVersion:f.dependencyVulns.installedVersion,vulnId:f.dependencyVulns.vulnId,severity:f.dependencyVulns.severity,fixedVersion:f.dependencyVulns.fixedVersion,summary:f.dependencyVulns.summary,aliases:f.dependencyVulns.aliases,dev:f.dependencyVulns.dev,direct:f.dependencyVulns.direct,firstSeenAt:f.dependencyVulns.firstSeenAt}).from(f.dependencyVulns).where((0,b.b)((0,b.u)(f.dependencyVulns.repoId,g.id),(0,b.M)(f.dependencyVulns.resolvedAt))).limit(2e3),(0,e.f)().select({id:f.accounts.id}).from(f.accounts).where((0,b.u)(f.accounts.provider,"github_write")).limit(1)]);i.sort((a,b)=>(0,j.t)(a.severity)-(0,j.t)(b.severity)||(a.package<b.package?-1:+(a.package>b.package))||(a.vulnId<b.vulnId?-1:1));let l=await (0,e.f)().select({number:f.dependencyPrs.number,stage:f.dependencyPrs.stage,stageText:f.dependencyPrs.stageText,openedAt:f.dependencyPrs.openedAt}).from(f.dependencyPrs).where((0,b.b)((0,b.u)(f.dependencyPrs.repoId,g.id),(0,b.B)(f.dependencyPrs.openedAt,new Date(Date.now()-12096e5)))).orderBy((0,c.A)(f.dependencyPrs.openedAt)).limit(5).catch(()=>[]);return{repo:g,scan:h??null,vulns:i,writeConnected:!!k,prs:(l??[]).map(a=>({...a,fullName:g.fullName}))}}async function aN(a,c={}){if(!(0,ad.f)(a))return{ok:!1,error:"That app no longer exists."};let[g]=await (0,e.f)().select({app:f.resources.name,id:f.githubRepos.id,fullName:f.githubRepos.fullName,defaultBranch:f.githubRepos.defaultBranch,goneAt:f.githubRepos.goneAt,meta:f.resources.meta}).from(f.appRepos).innerJoin(f.githubRepos,(0,b.u)(f.githubRepos.id,f.appRepos.repoId)).innerJoin(f.resources,(0,b.u)(f.resources.id,f.appRepos.appId)).where((0,b.u)(f.appRepos.appId,a)).limit(1);if(!g)return{ok:!1,error:"Link a repository first."};if(g.goneAt)return{ok:!1,error:"That repository is no longer shared with the GitHub token."};let h=await az();if("error"in h)return{ok:!1,error:h.error};let i=aB(g.meta),j=await aI(h.token,{id:g.id,fullName:g.fullName,defaultBranch:g.defaultBranch,scannedAt:null,rootDir:i.dir,rootDirUnsupported:i.unsupported,prodBranch:i.branch},Date.now()+4e4,{...c,force:!0});if("failed"===j.status)return{ok:!1,error:`The scan failed: ${j.error}`};let[k]=await (0,e.f)().select({n:d.B`count(*)::int`}).from(f.dependencyVulns).where((0,b.b)((0,b.u)(f.dependencyVulns.repoId,g.id),(0,b.M)(f.dependencyVulns.resolvedAt))),l=k?.n??0;return{ok:!0,app:g.app,repo:g.fullName,vulns:l,message:l?`${l} known vulnerabilit${1===l?"y":"ies"} in ${j.packages??0} packages.`:`No known vulnerabilities in ${j.packages??0} packages.`}}async function aO(a){let c=a.filter(ad.f);if(!c.length)return[];let d=await (0,e.f)().select({appId:f.appRepos.appId,repoId:f.appRepos.repoId,error:f.dependencyScans.error}).from(f.appRepos).innerJoin(f.dependencyScans,(0,b.u)(f.dependencyScans.repoId,f.appRepos.repoId)).where((0,b.b)((0,b.y)(f.appRepos.appId,c),(0,b.E)(f.dependencyScans.scannedAt)));if(!d.length)return[];let g=await (0,e.f)().select({repoId:f.dependencyVulns.repoId,package:f.dependencyVulns.package,installedVersion:f.dependencyVulns.installedVersion,fixedVersion:f.dependencyVulns.fixedVersion,severity:f.dependencyVulns.severity,summary:f.dependencyVulns.summary,dev:f.dependencyVulns.dev,direct:f.dependencyVulns.direct}).from(f.dependencyVulns).where((0,b.b)((0,b.y)(f.dependencyVulns.repoId,[...new Set(d.map(a=>a.repoId))]),(0,b.M)(f.dependencyVulns.resolvedAt))).limit(1e4);return d.map(a=>({appId:a.appId,repoId:a.repoId,error:a.error,vulns:g.filter(b=>b.repoId===a.repoId).map(a=>({package:a.package,installedVersion:a.installedVersion,fixedVersion:a.fixedVersion,severity:a.severity,summary:a.summary,dev:a.dev,direct:a.direct}))}))}async function aP(a,c=new Set){let g=a.filter(ad.f),h=new Map;if(!g.length)return h;let i=await (0,e.f)().select({appId:f.appRepos.appId,repoId:f.appRepos.repoId}).from(f.appRepos).where((0,b.y)(f.appRepos.appId,g));if(!i.length)return h;let k=await (0,e.f)().select({repoId:f.dependencyVulns.repoId,package:f.dependencyVulns.package,installedVersion:f.dependencyVulns.installedVersion,fixedVersion:f.dependencyVulns.fixedVersion,vulnId:f.dependencyVulns.vulnId,aliases:f.dependencyVulns.aliases,severity:f.dependencyVulns.severity,direct:f.dependencyVulns.direct}).from(f.dependencyVulns).where((0,b.b)((0,b.y)(f.dependencyVulns.repoId,[...new Set(i.map(a=>a.repoId))]),(0,b.M)(f.dependencyVulns.resolvedAt),(0,b.u)(f.dependencyVulns.direct,!0),(0,b.E)(f.dependencyVulns.fixedVersion))).limit(2e3),l=k.some(a=>"next"===a.package)?new Set((await (0,e.f)().selectDistinct({appId:f.dependencyPrs.appId}).from(f.dependencyPrs).where((0,b.b)((0,b.y)(f.dependencyPrs.appId,g),(0,b.$)(f.dependencyPrs.stage,["merged","closed"]),(0,b.B)(f.dependencyPrs.openedAt,new Date(Date.now()-12096e5)),d.B`${f.dependencyPrs.packages} @> '["next"]'::jsonb`)).limit(g.length)).map(a=>a.appId)):new Set;for(let a of i){let b=c.has(a.appId)||l.has(a.appId);(0,j.B)(k.filter(c=>c.repoId===a.repoId&&!(b&&"next"===c.package))).length&&h.set(a.appId,a.repoId)}return h}a.s(["o",0,12e3,"d",0,4e3,"j",0,aM,"O",0,aL,"C",0,aP,"a",0,aO,"h",0,aN],930270);var aQ=a.i(242605);async function aR(){return(0,e.f)().select({appId:f.links.fromResourceId,dbId:f.links.toResourceId}).from(f.links).where((0,b.u)(f.links.kind,"uses_db")).limit(500)}async function aS(a){let g=(0,b.b)((0,b.u)(f.resources.monitored,!0),(0,b.M)(f.resources.goneAt)),[h,i,j,k,l]=await Promise.all([$(),Z(),(0,e.f)().select({m:f.monitors,appName:f.resources.name,appMeta:f.resources.meta}).from(f.monitors).innerJoin(f.resources,(0,b.u)(f.resources.id,f.monitors.resourceId)).where((0,b.b)(g,(0,b.u)(f.monitors.paused,!1),(0,b.u)(f.monitors.ownerPaused,!1))),(0,e.f)().select({id:f.resources.id,name:f.resources.name,meta:f.resources.meta}).from(f.resources).where((0,b.b)(g,(0,b.u)(f.resources.kind,"app"))),(0,e.f)().select({id:f.accounts.id,provider:f.accounts.provider,label:f.accounts.label,expiresAt:f.accounts.expiresAt,status:f.accounts.status,lastError:f.accounts.lastError}).from(f.accounts)]),m=j.map(a=>a.m.id),n=m.length?await (0,e.f)().select({id:f.checks.monitorId,n:d.B`count(*)::int`,p95:d.B`percentile_cont(0.95) within group (order by ${f.checks.latencyMs})::float8`}).from(f.checks).where((0,b.b)((0,b.y)(f.checks.monitorId,m),(0,b.B)(f.checks.at,new Date(a.getTime()-6e5)),(0,b.u)(f.checks.inMaintenance,!1))).groupBy(f.checks.monitorId):[],o=k.map(a=>a.id),p=o.length?await (0,e.f)().selectDistinctOn([f.deployments.resourceId],{appId:f.deployments.resourceId,state:f.deployments.state,sha:f.deployments.commitSha,createdAt:f.deployments.createdAtProvider}).from(f.deployments).where((0,b.b)((0,b.y)(f.deployments.resourceId,o),(0,b.u)(f.deployments.target,"production"))).orderBy(f.deployments.resourceId,(0,c.A)(f.deployments.createdAtProvider)):[],q=await (0,e.f)().select({id:f.resources.id,name:f.resources.name,kind:f.resources.kind,state:f.snapshots.state,data:f.snapshots.data}).from(f.resources).innerJoin(f.snapshots,(0,b.u)(f.snapshots.resourceId,f.resources.id)).where((0,b.b)(g,(0,b.y)(f.resources.kind,["supabase_project","neon_project","firestore","turso_database","upstash_redis","d1_database","zone","domain"]))),r=a=>q.filter(b=>b.kind===a),s=q.filter(a=>["supabase_project","neon_project","firestore","turso_database","upstash_redis","d1_database"].includes(a.kind)),t=r("zone"),u=r("domain"),v=await aR(),w=await (0,_.Y)().catch(()=>null),x=o.length?await aO(o).catch(()=>null):null,y=o.length?await (0,aQ.F)(o).catch(()=>null):null;return{now:a,lastMinuteRunAt:h,lastAnyRunAt:i,monitors:j.map(({m:a,appName:b,appMeta:c})=>{let d=n.find(b=>b.id===a.id),e="heartbeat"===a.kind;return{id:a.id,appId:a.resourceId,appName:b,url:e?a.name??"heartbeat":a.url,kind:e?"heartbeat":"http",state:a.state,failStreak:a.failStreak,lastStatus:a.lastStatus,lastError:a.lastError,lastCheckedAt:a.lastCheckedAt,p95Last10:d?.p95??null,checksLast10:d?.n??0,movedTo:e?null:(0,aa.u)(a.url,{name:b,meta:c},k.filter(b=>b.id!==a.resourceId),{lastError:a.lastError})?.to??null}}),apps:k.map(a=>{let b=p.find(b=>b.appId===a.id);return{id:a.id,name:a.name,latestProduction:b?{state:b.state,sha:b.sha,createdAt:b.createdAt}:null}}),accounts:l,dbs:s.length?s.map(b=>(function(a,b){let c={id:a.id,name:a.name,state:a.state,sizeBytes:null,sizeLimitBytes:null,lastApiAt:null,cuHours:null,cuLimit:null,readsToday:null,readsLimit:null,quotaExhausted:null};if("supabase_project"===a.kind){let b=(0,V.k)(V.B,a.data),d=(0,Y.Z)(b.lastTrafficAt),e=(0,Y.Z)(b.trafficAt),f=d??(e&&!b.trafficError?new Date(e.getTime()-6048e5):null);return{...c,provider:"supabase",sizeBytes:b.sizeBytes??null,sizeLimitBytes:W.R,lastApiAt:f}}if("neon_project"===a.kind){let b=(0,V.k)(V.s,a.data),d=(b.branches??[]).map(a=>a.logicalSize).filter(a=>"number"==typeof a);return{...c,provider:"neon",cuHours:null==b.computeSeconds?null:b.computeSeconds/3600,cuLimit:U.a.cuHours,sizeBytes:d.length?d.reduce((a,b)=>a+b,0):null,sizeLimitBytes:U.a.storageBytes}}if("firestore"===a.kind){let d=(0,V.k)(V.w,a.data),e=(0,Y.Z)(d.opsAt),f=null!=d.reads&&e&&e.getTime()>=(0,T.a)(b).getTime()?d.reads:null,g=null!=d.latencyMs||null!=d.pingError;return{...c,provider:"firestore",readsToday:f,readsLimit:T.T.reads,quotaExhausted:g?"RESOURCE_EXHAUSTED"===d.pingReason:null}}if("turso_database"===a.kind){let d=(0,V.k)(V.N,a.data),e=(0,S.u)((0,S.G)(d,b));return{...c,provider:"turso",sizeBytes:d.orgStorageBytes??null,sizeLimitBytes:S.g.storageBytes,quotaPct:e?.pct??null,quotaLabel:e?`${e.label} ${e.text}`:null}}if("upstash_redis"===a.kind){let d=(0,V.k)(V.e,a.data),e=(0,S.u)((0,S.$)(d,b));return{...c,provider:"upstash",sizeBytes:d.storageBytes??null,sizeLimitBytes:S.W.storageBytes,quotaPct:e?.pct??null,quotaLabel:e?`${e.label} ${e.text}`:null}}if("d1_database"===a.kind){let d=(0,V.k)(V.x,a.data),e=(0,S.u)((0,S.I)(d,b));return{...c,provider:"d1",sizeBytes:d.sizeBytes??null,sizeLimitBytes:S.M.dbBytes,quotaPct:e?.pct??null,quotaLabel:e?`${e.label} ${e.text}`:null}}return null})(b,a)).filter(a=>null!==a):null,domains:t.length||u.length?[...t.map(a=>({id:a.id,name:a.name,tlsNotAfter:null,expiresAt:(0,Y.Z)((0,X.q)(a.data).rdap?.expiresAt)})),...u.map(a=>({id:a.id,name:a.name,tlsNotAfter:(0,Y.Z)((0,X.q)(a.data).tls?.notAfter),expiresAt:null}))]:null,dns:function(a,b){let c=a.filter(a=>Array.isArray(a.data.records));if(!c.length)return null;let d=a.map(a=>a.name),e=[];for(let a of c){let c=b.filter(b=>(0,Y.J)(b.name,d)===a.name.toLowerCase().replace(/\.$/,"")),f=[...new Set(c.flatMap(a=>(0,X.q)(a.data).vercel?.recommendedIps??[]))];for(let b of(0,X.q)(a.data).records){if(!(0,Y.l)(b,f))continue;let d=b.name.toLowerCase().replace(/\.$/,""),g=c.find(a=>a.name.toLowerCase().replace(/\.$/,"")===d);e.push({id:`${a.id}:${b.id}`,resourceId:g?.id??a.id,name:b.name,proxied:b.proxied,pointsToVercel:!0})}}return e}(t,u),links:v,compute:w,deps:x&&x.length?x:null,frameworks:y&&y.length?y:null}}var aT=a.i(714530),aU=a.i(396667);let aV={vercel:"Vercel",supabase:"Supabase",neon:"Neon",cloudflare:"Cloudflare",firebase:"Firebase",gcp:"Google Cloud"};async function aW(){return(await (0,e.f)().select().from(f.alertRules)).filter(a=>(0,g.h)(a.key)).map(a=>({key:a.key,severity:a.severity,threshold:a.threshold,enabled:a.enabled,channels:a.channels}))}async function aX(a,c={}){let[d,h,i,j,k,l]=await Promise.all([aS(a),aW(),(0,e.f)().select().from(f.alerts).where((0,b.M)(f.alerts.resolvedAt)),(0,e.f)().select({provider:f.providerStatus.provider,state:f.providerStatus.state}).from(f.providerStatus),(0,aT.w)(),(0,aU.I)()]),m=new Map(d.accounts.map(a=>[a.id,a.provider])),n=i.filter(a=>!(0,Q.O)(l,a.ruleKey,a.accountId?m.get(a.accountId):null)),o=function(a,b,c){let d=[],e=new Set;for(let f of b){if(!f.enabled||c&&!c.includes(f.key)||!g._[f.key])continue;let b=H[f.key](a,f.threshold);b&&(e.add(f.key),d.push(...b))}return{observations:d,evaluated:e}}(d,h,c.only),p=o.evaluated,q=o.observations.filter(a=>!(0,Q.O)(l,a.rule,a.provider)),r=h.find(a=>"CollectorStale"===a.key),s=void 0===d.lastAnyRunAt?d.lastMinuteRunAt:d.lastAnyRunAt,t=!!r?.enabled&&(!s||a.getTime()-s.getTime()>(r.threshold??5)*6e4),u=new Map((d.dbs??[]).filter(a=>"paused"===a.state).map(a=>[a.id,a.name])),v=new Map(d.links.filter(a=>u.has(a.dbId)).map(a=>[a.appId,`DatabasePaused \xb7 ${u.get(a.dbId)}`])),w=new Map(j.filter(a=>"warn"===a.state||"err"===a.state).map(a=>["gcp"===a.provider?"firebase":a.provider,aV[a.provider]??a.provider])),x=(0,P.u)(k,d.monitors.map(a=>({id:a.id,appId:a.appId})),a,d.apps.map(a=>a.id)),y=function(a,b,c,d,e){let f={open:[],touch:[],resolve:[]},h=new Map(d.map(a=>[a.key,a])),i=new Map(b.map(a=>[O(a.rule,a.subject),a])),j=new Set(a.map(a=>O(a.ruleKey,a.subject))),k=a=>f.resolve.push({id:a.id,pending:a.notifiedOpen?"resolve":null});for(let b of a){let a=h.get(b.ruleKey),d=i.get(O(b.ruleKey,b.subject));if(!a||!a.enabled){f.resolve.push({id:b.id,pending:null});continue}if(!c.has(b.ruleKey))continue;if(!d){f.resolve.push({id:b.id,pending:null});continue}if("unknown"===d.status)continue;let j=d.provider?e.incidents.get(d.provider)??null:null;if("firing"===d.status){let c=L(d,e),g=b.notifiedOpen&&null!==b.lastNotifiedAt&&e.now.getTime()-b.lastNotifiedAt.getTime()>=216e5,h={id:b.id,okStreak:0,lastSampleAt:d.sampleAt??b.lastSampleAt,lastSeenAt:e.now,message:d.message,causedBy:c,providerIncident:j},i=!b.notifiedOpen&&(!b.pendingSince||e.now.getTime()-b.pendingSince.getTime()>=216e5);(g||i)&&!N(b,e.now)&&!c&&null===b.pending&&K(a)&&(h.pending=g?"repeat":"open"),f.touch.push(h);continue}if(!g._[b.ruleKey].sampled||null===d.sampleAt){k(b);continue}if(!(null===b.lastSampleAt||d.sampleAt.getTime()>b.lastSampleAt.getTime()))continue;let l=b.okStreak+1;l>=2?k(b):f.touch.push({id:b.id,okStreak:l,lastSampleAt:d.sampleAt})}for(let a of b){if("firing"!==a.status||j.has(O(a.rule,a.subject))||e.maintenance.has(a.subject)||a.resourceId&&e.maintenance.has(a.resourceId))continue;let b=h.get(a.rule);if(!b)continue;let c=L(a,e);f.open.push({ruleKey:a.rule,subject:a.subject,resourceId:a.resourceId,accountId:a.accountId,severity:M(b.severity,a.severity),title:a.title,message:a.message,startedAt:e.now,lastSeenAt:e.now,lastSampleAt:a.sampleAt,causedBy:c,providerIncident:a.provider?e.incidents.get(a.provider)??null:null,pending:c||!K(b)?null:"open"})}return f}(n.filter(a=>(0,g.h)(a.ruleKey)).map(a=>({id:a.id,ruleKey:a.ruleKey,subject:a.subject,okStreak:a.okStreak,lastSampleAt:a.lastSampleAt,silencedUntil:a.silencedUntil,silencedUntilResolved:a.silencedUntilResolved,notifiedOpen:a.notifiedOpen,lastNotifiedAt:a.lastNotifiedAt,pending:a.pending,pendingSince:a.pendingSince})),q,p,h,{now:a,collectorStale:t,mutedApps:v,incidents:w,maintenance:x});return y.open.length||y.touch.length||y.resolve.length?(await (0,e.f)().transaction(async c=>{for(let b of y.open)await c.insert(f.alerts).values({...b,pendingSince:b.pending?a:null}).onConflictDoNothing();for(let d of y.touch){let{id:e,pending:g,...h}=d;await c.update(f.alerts).set({...h,...g?{pending:g,pendingSince:a}:{}}).where((0,b.b)((0,b.u)(f.alerts.id,e),(0,b.M)(f.alerts.resolvedAt)))}for(let d of y.resolve)await c.update(f.alerts).set({resolvedAt:a,pending:d.pending,pendingSince:d.pending?a:null}).where((0,b.b)((0,b.u)(f.alerts.id,d.id),(0,b.M)(f.alerts.resolvedAt)))}),{opened:y.open.length,resolved:y.resolve.length}):{opened:0,resolved:0}}async function aY(){let[a,c]=await Promise.all([(0,aU.I)(),(0,e.f)().select({ruleKey:f.alerts.ruleKey,provider:f.accounts.provider,n:d.B`count(*)::int`}).from(f.alerts).leftJoin(f.accounts,(0,b.u)(f.accounts.id,f.alerts.accountId)).where((0,b.b)((0,b.M)(f.alerts.resolvedAt),(0,b.y)(f.alerts.severity,["critical","warning"]))).groupBy(f.alerts.ruleKey,f.accounts.provider)]);return c.reduce((b,c)=>b+((0,Q.O)(a,c.ruleKey,c.provider)?0:Number(c.n)),0)}let aZ=d.B`case ${f.alerts.severity} when 'critical' then 0 when 'warning' then 1 else 2 end`;async function a$(a=new Set){return(await (0,e.f)().select({a:f.alerts,name:f.resources.name,kind:f.resources.kind}).from(f.alerts).leftJoin(f.resources,(0,b.u)(f.resources.id,f.alerts.resourceId)).where((0,b.b)((0,b.M)(f.alerts.resolvedAt),(0,aU.s)(a))).orderBy(aZ,(0,c.A)(f.alerts.startedAt)).limit(200)).map(({a,name:b,kind:c})=>({...a,resourceName:b??null,resourceKind:c??null}))}async function a_(){return a$(await (0,aU.I)())}async function a0(a){return(await (0,e.f)().select({id:f.alerts.id,ruleKey:f.alerts.ruleKey,severity:f.alerts.severity,title:f.alerts.title,resourceId:f.alerts.resourceId,startedAt:f.alerts.startedAt,resolvedAt:f.alerts.resolvedAt}).from(f.alerts).where((0,b.b)((0,b.E)(f.alerts.resolvedAt),(0,b.B)(f.alerts.resolvedAt,new Date(a.getTime()-6048e5)))).orderBy((0,c.A)(f.alerts.resolvedAt)).limit(50)).flatMap(a=>a.resolvedAt?[{...a,resolvedAt:a.resolvedAt}]:[])}async function a1(){let[a,c,h]=await Promise.all([aW(),(0,e.f)().select({key:f.alerts.ruleKey,n:d.B`count(*)::int`}).from(f.alerts).where((0,b.M)(f.alerts.resolvedAt)).groupBy(f.alerts.ruleKey),(0,e.f)().select({kind:f.resources.kind}).from(f.resources).innerJoin(f.snapshots,(0,b.u)(f.snapshots.resourceId,f.resources.id)).where((0,b.b)((0,b.u)(f.resources.monitored,!0),(0,b.M)(f.resources.goneAt))).groupBy(f.resources.kind)]),i=new Set(h.map(a=>a.kind)),j={databases:["supabase_project","neon_project","firestore"].some(a=>i.has(a)),domains:i.has("domain")||i.has("zone"),dns:i.has("zone")};return g.u.flatMap(b=>{let d=a.find(a=>a.key===b);if(!d)return[];let e=g._[b].needs;return[{rule:d,firing:c.find(a=>a.key===b)?.n??0,hasData:null===e||j[e]}]})}async function a2(a,c,d,g){let h="off"===c?{silencedUntil:null,silencedUntilResolved:!1,silencedBy:null}:{...(0,R.A)(c,g),silencedBy:d},[i]=await (0,e.f)().update(f.alerts).set(h).where((0,b.b)((0,b.u)(f.alerts.id,a),(0,b.M)(f.alerts.resolvedAt))).returning({ruleKey:f.alerts.ruleKey,title:f.alerts.title,resourceId:f.alerts.resourceId});return i??null}async function a3(a,c){return(await (0,e.f)().update(f.alertRules).set({...c,updatedAt:new Date}).where((0,b.u)(f.alertRules.key,a)).returning({key:f.alertRules.key})).length>0}a.s(["$",0,aX,"q",0,a$,"I",0,a0,"i",0,a_,"X",0,aY,"y",0,a1,"z",0,a3,"N",0,a2],455317)},425238,a=>{var b=a.i(609007),c=a.i(556987);let d=/(?<![\p{L}\p{N}_])(?:w[bp]_[A-Za-z0-9]{6,}|hb_[0-9a-f]{6,}|sk-[A-Za-z0-9_-]{6,}|gsk_[A-Za-z0-9]{6,}|AIza[0-9A-Za-z_-]{8,}|AQ\.[A-Za-z0-9_-]{8,})/gu,e=/\b[a-z][a-z0-9+.-]*:\/\/[^\s/?#"'<>)]*(\/[^\s?#"'<>)]*)?(?:[?#][^\s"'<>)]*)?/gi,f="[\\p{L}\\p{N}_-]",g=a=>a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),h=new WeakMap,i=[RegExp(d.source,"u"),/\b(?:Bearer|Basic)\s+[A-Za-z0-9._~+/=-]{12,}/i,/\beyJ[\w-]{8,}\.[\w-]{8,}\.[\w-]{8,}/,/\b[a-z][a-z0-9+.-]*:\/\/[^\s/@:]+:[^\s/@]+@/i,/\b[A-Fa-f0-9]{40,}\b/,/\b(?=[A-Za-z0-9_-]*\d)(?=[A-Za-z0-9_-]*[A-Za-z])[A-Za-z0-9_-]{40,}\b/];a.s(["G",0,function(a){return i.some(b=>b.test(a))},"F",0,function(a,i){let j=(0,b.h)(a);j=(0,c.J)(j,i);let k=function(a){if(h.has(a))return h.get(a);let b=new Map((a.account??[]).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(`(?<!${f})(?:${c.map(g).join("|")})(?!${f})`,"giu"),alias:b}:null;return h.set(a,d),d}(i);return k&&(j=j.replace(k.re,a=>k.alias.get(a.toLowerCase())??a)),(j=(j=(j=j.replace(d,"[hidden]")).replace(/hb_\[hidden\]/g,"[hidden]")).replace(e,(a,b)=>b??"[url]")).replace(/@/g,"(at)")}])}]})();
1
+ (()=>{"use strict";module.exports=[455317,912283,876808,569057,930270,a=>{var b=a.i(93321),c=a.i(530385),d=a.i(351674),e=a.i(548734),f=a.i(837137),g=a.i(927262),h=a.i(201516),i=a.i(273133),j=a.i(120213),k=a.i(84979),l=a.i(84877),m=a.i(679662);let n=/^v?(\d+)\.(\d+)\.(\d+)(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/;function o(a,b){let c=n.exec(a.trim()),d=n.exec(b.trim());return!!c&&!!d&&c[1]===d[1]&&("0"!==c[1]||c[2]===d[2])&&(0,l.f)(b,a)>=0}let p=/^Watch(?:bell|post): update (?:\S+ (?:to|ke) \S+|\d+ vulnerable packages) in ((?:[A-Za-z0-9._-]+\/){0,3}[A-Za-z0-9._-]+) \(/,q=a=>p.exec(a)?.[1]??null;function r(a,b){if(!b)return{deps:a,stale:[]};let c=[...Object.entries(b.dependencies).map(([a,b])=>[a,b,!1]),...Object.entries(b.optionalDependencies).map(([a,b])=>[a,b,!1]),...Object.entries(b.devDependencies).map(([a,b])=>[a,b,!0])],d=[...a],e=[];for(let[a,b,f]of c){let c=(0,m.Y)(b);if(!c||!(0,m.C)(c))continue;let g=d.filter(b=>b.name===a);!g.length||g.some(a=>(0,l.f)(a.version,c)>=0)||((d=d.filter(b=>b.name!==a)).push({name:a,version:c,dev:g.every(a=>a.dev)&&f}),e.push(a))}return{deps:d,stale:e}}let s=a=>`Lockfile tertinggal — jalankan npm install (${a.slice(0,5).join(", ")}${a.length>5?`, +${a.length-5}`:""}).`;a.s(["M",0,s,"a",0,function(a,b,c){if(!a.length)return{ok:!1,why:"nothing"};let d=a.filter(a=>c.includes(a.severity)&&!("moderate"===a.severity&&a.dev));if(!d.length)return{ok:!1,why:"severity"};for(let a of d){let c=b.get(a.package);if(!c||!o(c,a.to))return{ok:!1,why:"major"}}return{ok:!0,upgrades:d}},"m",0,r,"D",0,function(a){let b=new Map;for(let c of a){if(!c.direct)continue;let a=b.get(c.package);(!a||0>(0,l.f)(c.installedVersion,a))&&b.set(c.package,c.installedVersion)}return b},"U",0,function(a,b,c=null){for(let d of b){if(q(d.title)!==c)continue;let b=function(a){if(a.packages?.length)return a.packages;let b=/^Watch(?:bell|post): update (\S+) (?:to|ke) /.exec(a.title);return b?[b[1]]:"all"}(d);if("all"===b||a.some(a=>b.includes(a)))return d}return null},"J",0,o],912283);let t=["next","eslint-config-next"],u={CRITICAL:"critical",HIGH:"high",MODERATE:"moderate",LOW:"low",UNKNOWN:"unknown"};function v(a,b){if(!a||!(0,m.C)(a))return null;let c=b.map(a=>a.fixed).filter(b=>!!b&&(0,m.C)(b)&&(0,l.f)(b,a)>0);if(!c.length)return null;let d=c.filter(b=>o(a,b));return(d.length?d:c).reduce((a,b)=>(0,l.f)(b,a)>0?b:a)}function w(a,b){let c=v(a,b),d=c?b.map(a=>a.fixed).filter(a=>!!a&&(0,m.C)(a)&&(0,l.f)(a,c)>0):[],e=d.reduce((a,b)=>null===a||(0,l.f)(b,a)>0?b:a,null),f=e?` (${1===d.length?"one fix needs":"some fixes need"} Next.js ${e.split(".")[0]})`:"";return`Next.js ${a??"(unknown version)"} has ${(0,k.q)(b.length)} (${(0,k.N)(b).toLowerCase()}), ${c?`fixed in ${c}${f}`:"no fix yet"}.`}a.s(["P",0,w,"p",0,function(a){if(!a||"vulnerable"!==a.status||!a.findings.length||!a.version)return null;let b=v(a.version,a.findings);if(!b)return null;let c=u[(0,k.N)(a.findings)],d=[...new Set(a.findings.map(a=>a.id))],e=[...new Set(a.findings.flatMap(a=>a.cve?[a.cve]:[]))];return{from:a.version,to:b,upgrades:[{package:"next",to:b,vulnIds:d,cves:e,severity:c},{package:"eslint-config-next",to:b,vulnIds:[],cves:[],severity:c,companionOf:"next"}],installed:new Map(t.map(b=>[b,a.version]))}},"F",0,function(a){let b=a.find(a=>"next"===a.package&&!a.companionOf);return!b||a.some(a=>"eslint-config-next"===a.package)?a:[...a,{package:"eslint-config-next",to:b.to,vulnIds:[],cves:[],severity:b.severity,companionOf:"next"}]}],876808);let x=a=>Math.round(a).toLocaleString("en-US"),y=(a,b)=>Math.floor((a.getTime()-b.getTime())/864e5),z=(a,b)=>`${a} ${b}${1===a?"":"s"}`,A=a=>{try{let b=new URL(a);return`${b.host}${b.pathname}`}catch{return a}},B=a=>{try{return new URL(a).host}catch{return a}},C=a=>{try{return new URL(a).pathname}catch{return"/"}},D="Down · ",E=(a,b,c)=>({rule:a,subject:b,status:"unknown",resourceId:null,accountId:null,title:b,message:"",provider:null,sampleAt:null,...c}),F=a=>"firestore"===a.provider?"firebase":"d1"===a.provider?"cloudflare":a.provider,G=new Set(["turso","upstash","d1"]),H={MonitorDown:(a,b)=>a.monitors.map(a=>{let c=E("MonitorDown",a.id,{resourceId:a.appId,title:`${a.appName} ${"heartbeat"===a.kind?a.url:C(a.url)}`,provider:"vercel",sampleAt:a.lastCheckedAt}),d=b??3;if("heartbeat"===a.kind){let b;return{...c,status:"err"===a.state?"firing":"ok"===a.state?"ok":"unknown",message:`${a.appName} \xb7 ${a.url}: ${b=a.lastError,b?.startsWith(D)?b.slice(D.length):"no ping in time"}.`}}return a.movedTo?{...c,status:"ok",message:`${B(a.url)} moved to ${a.movedTo}; MonitorDomainMoved takes over.`}:a.failStreak>=d?{...c,status:"firing",message:(0,h.H)(a)?`${A(a.url)} failed its check (${(0,h.H)(a)}) on ${d} consecutive checks.`:`${A(a.url)} returned ${a.lastStatus?`HTTP ${a.lastStatus}`:"no answer"} on ${d} consecutive checks.`}:{...c,status:0===a.failStreak&&a.lastCheckedAt?"ok":"unknown",message:`${A(a.url)} answers again.`}}),MonitorDomainMoved:a=>a.monitors.filter(a=>"http"===a.kind).map(a=>{let b=E("MonitorDomainMoved",a.id,{resourceId:a.appId,title:`${a.appName} ${C(a.url)}`,provider:"vercel"});return a.movedTo?{...b,status:"firing",message:`${B(a.url)} is no longer a domain of ${a.appName}; production is on ${a.movedTo}.`}:{...b,status:"ok",message:`The monitor checks ${B(a.url)}, a domain of ${a.appName}.`}}),CollectorStale:(a,b)=>{let c=a.lastMinuteRunAt;return[E("CollectorStale","collector",{status:!c||a.now.getTime()-c.getTime()>(b??5)*6e4?"firing":"ok",title:"collector",message:c?`The last minute run finished ${x((a.now.getTime()-c.getTime())/6e4)} min ago.`:"The collector hasn't finished a run yet."})]},HighLatency:(a,b)=>a.monitors.filter(a=>"http"===a.kind).map(a=>{let c=E("HighLatency",a.id,{resourceId:a.appId,title:`${a.appName} ${C(a.url)}`,provider:"vercel",sampleAt:a.lastCheckedAt});if(a.checksLast10<5||null===a.p95Last10)return c;let d=b??1500;return{...c,status:a.p95Last10>d?"firing":"ok",message:`p95 ${x(a.p95Last10)} ms over the last 10 minutes (limit ${x(d)} ms).`}}),DeploymentFailed:a=>a.apps.map(a=>{let b=E("DeploymentFailed",a.id,{resourceId:a.id,title:a.name,provider:"vercel"}),c=a.latestProduction;return c?"error"===c.state?{...b,status:"firing",message:`Production deployment ${c.sha?c.sha.slice(0,7):"(no commit)"} failed.`}:{...b,status:"building"===c.state?"unknown":"ok"}:{...b,status:"ok"}}),DatabasePaused:a=>a.dbs&&a.dbs.filter(a=>"supabase"===a.provider).map(a=>E("DatabasePaused",a.id,{resourceId:a.id,title:a.name,provider:"supabase",status:"unknown"===a.state?"unknown":"paused"===a.state?"firing":"ok",message:`Supabase project ${a.name} is paused.`})),CertExpiringSoon:(a,b)=>a.domains&&a.domains.map(c=>{let d=E("CertExpiringSoon",c.id,{resourceId:c.id,title:c.name,provider:"cloudflare"});if(!c.tlsNotAfter)return d;let e=y(c.tlsNotAfter,a.now);return{...d,status:e<(b??14)?"firing":"ok",message:`The TLS certificate of ${c.name} expires in ${z(e,"day")}.`}}),DomainExpiringSoon:(a,b)=>a.domains&&a.domains.map(c=>{let d=E("DomainExpiringSoon",c.id,{resourceId:c.id,title:c.name,provider:"cloudflare"});if(!c.expiresAt)return d;let e=y(c.expiresAt,a.now);return{...d,status:e<(b??30)?"firing":"ok",message:`${c.name} expires in ${z(e,"day")}.`}}),StorageAlmostFull:(a,b)=>a.dbs&&a.dbs.filter(a=>"firestore"!==a.provider).map(a=>{let c=E("StorageAlmostFull",a.id,{resourceId:a.id,title:a.name,provider:F(a)});if(null===a.sizeBytes||!a.sizeLimitBytes)return c;let d=a.sizeBytes/a.sizeLimitBytes*100;return{...c,status:d>(b??80)?"firing":"ok",message:`${a.name} uses ${x(a.sizeBytes/1e6)} MB of ${x(a.sizeLimitBytes/1e6)} MB (${x(d)}%).`}}),NeonComputeHigh:(a,b)=>a.dbs&&a.dbs.filter(a=>"neon"===a.provider).map(a=>{let c=E("NeonComputeHigh",a.id,{resourceId:a.id,title:a.name,provider:"neon"});return null===a.cuHours?c:{...c,status:a.cuHours>(b??80)?"firing":"ok",message:`${a.name} used ${x(a.cuHours)} of ${x(a.cuLimit??100)} CU-hours this month.`}}),FirestoreQuotaHigh:(a,b)=>a.dbs&&a.dbs.filter(a=>"firestore"===a.provider).map(a=>{let c=E("FirestoreQuotaHigh",a.id,{resourceId:a.id,title:a.name,provider:"firebase"});if(a.quotaExhausted)return{...c,status:"firing",message:`${a.name} hit a Firestore quota (RESOURCE_EXHAUSTED).`};if(null===a.readsToday||!a.readsLimit)return!1===a.quotaExhausted?{...c,status:"ok"}:c;let d=a.readsToday/a.readsLimit*100;return{...c,status:d>(b??80)?"firing":"ok",message:`${a.name} read ${x(a.readsToday)} of ${x(a.readsLimit)} documents today (${x(d)}%).`}}),AutoPauseRisk:(a,b)=>a.dbs&&a.dbs.filter(a=>"supabase"===a.provider).map(c=>{let d=E("AutoPauseRisk",c.id,{resourceId:c.id,title:c.name,provider:"supabase"});if("paused"===c.state)return{...d,status:"ok"};if(!c.lastApiAt)return d;let e=Math.floor((a.now.getTime()-c.lastApiAt.getTime())/864e5);return{...d,status:e>=(b??4)?"firing":"ok",message:`No API traffic for ${z(e,"day")}. Supabase pauses free projects after about 7 days.`}}),DnsProxiedToVercel:a=>a.dns&&a.dns.map(a=>E("DnsProxiedToVercel",a.id,{resourceId:a.resourceId,title:a.name,provider:"cloudflare",status:a.proxied&&a.pointsToVercel?"firing":"ok",message:`${a.name} points to Vercel through the Cloudflare proxy. Vercel recommends DNS only.`})),DbQuotaHigh:(a,b)=>a.dbs&&a.dbs.filter(a=>G.has(a.provider)).map(a=>{let c=E("DbQuotaHigh",a.id,{resourceId:a.id,title:a.name,provider:F(a)});return null==a.quotaPct?c:{...c,status:a.quotaPct>(b??80)?"firing":"ok",message:`${a.name}: ${a.quotaLabel??"usage"} at ${x(a.quotaPct)}% of the free plan.`}}),ComputeHigh:(a,b)=>a.compute?a.compute.map(c=>{let d=E("ComputeHigh",c.id,{resourceId:c.id,title:c.name,provider:"supabase",sampleAt:c.latest?new Date(c.latest.at):null}),e=(0,i.B)(c.latest,(0,i.V)(b),a.now);return null===e?d:{...d,status:e.length?"firing":"ok",message:e.length?`${c.name}: ${e.join(", ")}.`:`${c.name} compute is back under the limits.`}}):null,CredentialExpiring:(a,b)=>a.accounts.map(c=>{let d=E("CredentialExpiring",c.id,{accountId:c.id,title:`${c.provider} \xb7 ${c.label}`,provider:c.provider});if("drive"===c.provider&&"error"===c.status&&c.lastError?.includes("invalid_grant"))return{...d,status:"firing",message:"Google Drive access was removed (invalid_grant). Reconnect it."};if(!c.expiresAt)return{...d,status:"ok"};let e=y(c.expiresAt,a.now);return{...d,status:e<(b??14)?"firing":"ok",message:e<0?`The ${c.provider} credential ${c.label} has expired.`:`The ${c.provider} credential ${c.label} expires in ${z(e,"day")}.`}}),VulnerableDependency:a=>a.deps?a.deps.flatMap(b=>{let c=a.apps.find(a=>a.id===b.appId);if(!c)return[];let d=E("VulnerableDependency",b.appId,{resourceId:b.appId,title:c.name,provider:"github"});if(b.error)return[d];let e=(0,j.g)(b.vulns);return e?[{...d,status:"firing",message:(0,j.L)(b.vulns),..."critical"===e?{severity:"critical"}:{}}]:[{...d,status:"ok",message:`${c.name} has no moderate, high or critical dependency advisories.`}]}):null,FrameworkVulnerable:a=>a.frameworks?a.frameworks.flatMap(b=>{let c=a.apps.find(a=>a.id===b.appId);if(!c)return[];let d=E("FrameworkVulnerable",b.appId,{resourceId:b.appId,title:c.name});return"ok"===b.status?[{...d,status:"ok",message:`${c.name} runs Next.js ${b.version??"(unknown version)"} with no known advisories.`}]:"vulnerable"===b.status&&b.findings.length?[{...d,status:"firing",message:w(b.version,b.findings),..."CRITICAL"===(0,k.N)(b.findings)?{severity:"critical"}:{}}]:[d]}):null},I=["MonitorDown","HighLatency"],J=["telegram","discord"],K=a=>a.channels.some(a=>J.includes(a));function L(a,b){return b.collectorStale&&"CollectorStale"!==a.rule?"CollectorStale":a.resourceId&&I.includes(a.rule)?b.mutedApps.get(a.resourceId)??null:null}let M=(a,b)=>"critical"===b&&"warning"===a?"critical":a,N=(a,b)=>a.silencedUntilResolved||null!==a.silencedUntil&&a.silencedUntil.getTime()>b.getTime(),O=(a,b)=>`${a}|${b}`;var P=a.i(519051),Q=a.i(160147),R=a.i(71575),S=a.i(639271),T=a.i(656298),U=a.i(688275),V=a.i(893893),W=a.i(672319),X=a.i(188546),Y=a.i(233711);async function Z(){let[a]=await (0,e.f)().select({at:f.collectorRuns.finishedAt}).from(f.collectorRuns).where((0,b.b)((0,b.E)(f.collectorRuns.finishedAt),(0,b.y)(f.collectorRuns.trigger,["cron_job_org","qstash","manual"]))).orderBy((0,c.A)(f.collectorRuns.finishedAt)).limit(1);return a?.at??null}async function $(){let[a]=await (0,e.f)().select({at:f.collectorRuns.finishedAt}).from(f.collectorRuns).where((0,b.b)((0,b.E)(f.collectorRuns.finishedAt),(0,b.y)(f.collectorRuns.trigger,["cron_job_org","manual"]))).orderBy((0,c.A)(f.collectorRuns.finishedAt)).limit(1);return a?.at??null}a.s(["D",0,Z,"d",0,$],569057);var _=a.i(367247),aa=a.i(436357),ab=a.i(358179),ac=a.i(492665),ad=a.i(683439),ae=a.i(852539),af=a.i(33135),ag=a.i(533957);let ah="OpsConsole-Deps/1.0 (+https://watchbell.west-solutions.web.id)";async function ai(a,b,c,d){let e=d.deadline-Date.now();if(e<500)return{ok:!1,error:"No time left for OSV.dev"};let f=AbortSignal.timeout(e);return ak(a,{method:"POST",headers:{"content-type":"application/json","user-agent":ah},body:JSON.stringify(b),signal:f},c,f,d)}async function aj(a,b,c){let d=c.deadline-Date.now();if(d<500)return{ok:!1,error:"No time left for OSV.dev"};let e=AbortSignal.timeout(Math.min(d,8e3));return ak(a,{method:"GET",headers:{"user-agent":ah},signal:e},b,e,c)}async function ak(a,b,c,d,e){let f;try{f=await (e.fetch??fetch)(a,{...b,redirect:"error",cache:"no-store"})}catch(a){return{ok:!1,error:(0,ag.t)(a)?"OSV.dev didn't answer in time":"Couldn't reach OSV.dev"}}if(!f.ok)return await f.body?.cancel().catch(()=>void 0),{ok:!1,error:`OSV.dev answered HTTP ${f.status}`};try{let{bytes:a,truncated:b}=await (0,af.z)(f,c,(0,af.X)(d));if(b)return{ok:!1,error:"OSV.dev sent too large an answer"};return{ok:!0,body:JSON.parse(new TextDecoder().decode(a))}}catch(a){return{ok:!1,error:(0,ag.t)(a)?"OSV.dev didn't answer in time":"OSV.dev sent an answer we couldn't read"}}}async function al(a,b){let c=[];for(let d of(0,ae.f)(a)){let a=await ai(ae.n,d,4194304,b);if(!a.ok)return a;let e=(0,ae.j)(a.body,d.queries.length);if(!e)return{ok:!1,error:"OSV.dev sent an answer we couldn't read"};c.push(...e)}return{ok:!0,ids:c}}async function am(a,b){let c=[...new Set(a)].filter(ae.G);if(c.length>300)return{ok:!1,error:`Too many advisories to read in one scan (${c.length})`};let d=new Map,e=null;for(let a=0;a<c.length&&!e;a+=8)await Promise.all(c.slice(a,a+8).map(async a=>{let c=await aj(`${ae.W}${encodeURIComponent(a)}`,1048576,b),f=c.ok?(0,ae.O)(c.body):null;f?d.set(a,f):e??=c.ok?"OSV.dev sent an advisory we couldn't read":c.error}));return e?{ok:!1,error:e}:{ok:!0,map:d}}var an=a.i(521050),ao=a.i(689963),ap=a.i(26972),aq=a.i(427221),ar=a.i(811365),as=a.i(760417);let at=ao.z.array(ap.z.object({name:aq.z.string(),type:aq.z.string(),sha:aq.z.string(),size:ar.z.number().optional()}));async function au(a,b,c,d={},e=null){if(!(0,as.M)(b)||!(0,as.c)(c))return{ok:!1,kind:"format",error:"That isn't a repository name or ref."};if(null!==e&&(0,an.Q)(e)!==e)return{ok:!1,kind:"format",error:"That isn't a folder in a repository."};let f=e?e.split("/").map(encodeURIComponent).join("/"):"",g=await (0,as.j)(`/repos/${(0,as.f)(b)}/contents/${f}?ref=${encodeURIComponent(c)}`,a,d);if(!g.ok)return g;let h=at.safeParse(g.data);return h.success?{ok:!0,data:h.data.filter(a=>"file"===a.type&&/^[0-9a-f]{40}$/.test(a.sha)).map(a=>({name:a.name,sha:a.sha,size:a.size??0}))}:{ok:!1,kind:"format",error:"GitHub answered the file list in a format the console doesn't recognise."}}async function av(a,b,c,d={}){if(!(0,as.M)(b)||!(0,as.c)(c))return{ok:!1,kind:"format",error:"That isn't a repository name or branch."};let e=await (0,as.j)(`/repos/${(0,as.f)(b)}/git/ref/heads/${c.split("/").map(encodeURIComponent).join("/")}`,a,d);return e.ok?{ok:!0,data:!0}:"missing"===e.kind?{ok:!0,data:!1}:e}function aw(a,b,c,d,e,f={}){return(0,as.V)(a,b,c,d,e,f)}async function ax(a,b,c={}){if(!(0,as.M)(b))return{ok:!1,kind:"format",error:"That isn't a repository name."};let d=await (0,as.j)(`/repos/${(0,as.f)(b)}/dependabot/alerts?state=open&ecosystem=npm&per_page=100`,a,c);if(!d.ok)return"scope"===d.kind||"missing"===d.kind?{ok:!0,data:{denied:!0}}:d;let e=(0,j.E)(d.data);return e?{ok:!0,data:{alerts:e}}:{ok:!1,kind:"format",error:"GitHub answered the Dependabot alerts in a format the console doesn't recognise."}}var ay=a.i(751263);async function az(){let[a]=await (0,e.f)().select().from(f.accounts).where((0,b.u)(f.accounts.provider,"github")).orderBy((0,c.M)(f.accounts.createdAt)).limit(1);if(!a)return{error:"GitHub isn't connected."};let d=(0,ab.V)({ciphertext:a.credentialCiphertext,iv:a.credentialIv},(0,ac.f)().OPS_ENCRYPTION_KEY);return d?{token:d,accountId:a.id}:{error:"Can't read the stored GitHub credential. Replace it on Connections."}}async function aA(){let[a]=await (0,e.f)().select({value:f.settings.value}).from(f.settings).where((0,b.u)(f.settings.key,"deps.scanAll")).limit(1);return a?.value===!0}let aB=a=>{let b=(0,ay.w)(a);return{dir:(0,an.Q)((a??{}).rootDirectory),unsupported:(0,an.l)((a??{}).rootDirectoryUnsupported),branch:(0,ay.i)((0,ay.V)(a),null),...b?{fallback:b}:{}}};async function aC(a){let c=[...new Set(a.filter(ad.f))],d=new Map;if(!c.length)return d;let g=await (0,e.f)().select({repoId:f.appRepos.repoId,name:f.resources.name,monitored:f.resources.monitored,meta:f.resources.meta}).from(f.appRepos).innerJoin(f.resources,(0,b.u)(f.resources.id,f.appRepos.appId)).where((0,b.b)((0,b.y)(f.appRepos.repoId,c),(0,b.M)(f.resources.goneAt))).limit(1e3);for(let a of(g.sort((a,b)=>Number(!!b.monitored)-Number(!!a.monitored)||(a.name<b.name?-1:+(a.name>b.name))),g))d.has(a.repoId)||d.set(a.repoId,aB(a.meta));return d}async function aD(){let a={id:f.githubRepos.id,fullName:f.githubRepos.fullName,defaultBranch:f.githubRepos.defaultBranch,scannedAt:f.dependencyScans.scannedAt},c=(0,b.b)((0,b.M)(f.githubRepos.goneAt),(0,b.u)(f.githubRepos.archived,!1)),d=await aA()?await (0,e.f)().select(a).from(f.githubRepos).leftJoin(f.dependencyScans,(0,b.u)(f.dependencyScans.repoId,f.githubRepos.id)).where(c).limit(500):await (0,e.f)().selectDistinct(a).from(f.appRepos).innerJoin(f.githubRepos,(0,b.u)(f.githubRepos.id,f.appRepos.repoId)).leftJoin(f.dependencyScans,(0,b.u)(f.dependencyScans.repoId,f.githubRepos.id)).where(c).limit(500),g=d.length?await aC(d.map(a=>a.id)):new Map;return(0,j.M)(d.map(a=>{let b=g.get(a.id);return{...a,rootDir:b?.dir??null,rootDirUnsupported:b?.unsupported??null,prodBranch:b?.branch??null,...b?.fallback?{prodFallback:b.fallback}:{}}}))}let aE=(a,b)=>a.length>b?`${a.slice(0,b-1)}…`:a;async function aF(a,b){let c=new Date;await (0,e.f)().insert(f.dependencyScans).values({repoId:a,...b,updatedAt:c}).onConflictDoUpdate({target:f.dependencyScans.repoId,set:{...b,updatedAt:c}})}async function aG(a){return(0,e.f)().select({id:f.dependencyVulns.id,package:f.dependencyVulns.package,installedVersion:f.dependencyVulns.installedVersion,vulnId:f.dependencyVulns.vulnId,severity:f.dependencyVulns.severity,fixedVersion:f.dependencyVulns.fixedVersion,summary:f.dependencyVulns.summary,aliases:f.dependencyVulns.aliases,dev:f.dependencyVulns.dev,direct:f.dependencyVulns.direct,source:f.dependencyVulns.source}).from(f.dependencyVulns).where((0,b.b)((0,b.u)(f.dependencyVulns.repoId,a),(0,b.M)(f.dependencyVulns.resolvedAt))).limit(2e3)}function aH(a,b){for(let c of m.a){let d=a.find(a=>a.name===c.path);if(d)return{path:(0,an.H)(b,c.path),kind:c.kind,sha:d.sha}}return null}async function aI(a,c,d,g={}){let h=()=>({...g,timeoutMs:Math.max(1e3,Math.min(d-Date.now(),1e4))}),i=async a=>(await aF(c.id,{error:aE(a,300),scannedAt:new Date}).catch(()=>void 0),{status:"failed",error:a}),k=c.defaultBranch??"HEAD",l=null;for(let b of[c.prodBranch,c.prodFallback]){if(b&&b===c.defaultBranch)break;let d=(0,ay.i)(b,c.defaultBranch);if(!d)continue;let e=await av(a,c.fullName,d,h());if(!e.ok)return i(e.error);if(e.data){l=d;break}}let n=null!==l;l&&(k=l);let o=n?`Scanned ${l}, the branch production is built from.`:null,p=(0,an.Q)(c.rootDir),q=p?null:(0,an.l)(c.rootDirUnsupported),t=q?`The Vercel Root Directory "${q}" couldn't be used (Watchbell reads plain folder names, at most 4 deep); scanned the repository root.`:null,u=await au(a,c.fullName,k,h(),p);if(!u.ok)return i(p&&"missing"===u.kind?`The folder ${(0,an.x)(p)} isn't in ${c.fullName} on ${k}.`:u.error);let v=aH(u.data,p),w=u.data.find(a=>"package.json"===a.name)??null,x=!1,y=null;if(p&&w&&!v){let b=await au(a,c.fullName,k,h());if(!b.ok)return i(b.error);x=null!==(v=aH(y=b.data,null))}let z=v?v.sha:w?`pkg:${w.sha}`:null,A=z&&p?`${p}:${z}${x&&w?`+${w.sha}`:""}`:z&&q?`odd:${z}`:z,B=A&&n?`br:${l}:${A}`:A,[C]=await (0,e.f)().select().from(f.dependencyScans).where((0,b.u)(f.dependencyScans.repoId,c.id)).limit(1),D=new Date;if(!(0,j.U)(C??null,B,D,g.force))return{status:"unchanged"};if(!B){let a=await aG(c.id);return a.length&&await (0,e.f)().update(f.dependencyVulns).set({resolvedAt:D}).where((0,b.y)(f.dependencyVulns.id,a.map(a=>a.id))),await aF(c.id,{lockfilePath:null,lockfileSha:null,packageCount:0,scannedAt:D,queriedAt:D,error:null,note:aE([o,t,`No package.json or lockfile ${p?"in":"at"} ${(0,an.x)(p)}.`].filter(Boolean).join(" "),300)}),{status:"scanned",vulns:0,packages:0,note:"no package.json"}}let E=(0,an.H)(p,"package.json"),F=w?await aw(a,c.fullName,E,k,as.$,h()):null;if(F&&!F.ok)return i(F.error);let G=F?.ok&&F.data?(0,m.b)(F.data):null,H=null,I="package-json",J=x&&v?`Scanned ${(0,an.x)(p)} with the repository root's ${v.path} (workspaces).`:null;if(v){if(2e3>d-Date.now())return i("Time budget used before the lockfile was read; the next run tries again.");let b=await aw(a,c.fullName,v.path,k,0xf00000,{...g,timeoutMs:Math.max(1e3,Math.min(d-Date.now(),2e4))});if(!b.ok)return i(b.error);let e=!0;if(x&&p&&b.data&&!(0,an.p)(v.kind,b.data,p)){let b=y?.some(a=>"package.json"===a.name)?await aw(a,c.fullName,"package.json",k,as.$,h()):null;if(b&&!b.ok)return i(b.error);e=(0,an.F)(b?.data??null,p)}e?(H=b.data?(0,m.D)(v.kind,b.data):null,I=v.kind,H||(J=[J,`${v.path} couldn't be read; the versions come from package.json ranges (approximate).`].filter(Boolean).join(" "))):(J=`The repository root's ${v.path} isn't a workspace that includes ${p}, so the versions come from ${E} ranges (approximate).`,v=null)}if(H){let a=r(H,G);H=a.deps,a.stale.length&&(J=[J,s(a.stale)].filter(Boolean).join(" "))}else H=G?(0,m.e)(G):[],I="package-json",J??=v?null:"No lockfile: the versions come from package.json ranges (approximate).";let K=await aG(c.id),L=[];if(H.length){let a=await al(H,{fetch:g.fetch,deadline:d});if(!a.ok)return i(a.error);let b=(0,j.A)(K,!0===g.force),c=await am((0,j.z)(H,a.ids,b),{fetch:g.fetch,deadline:d});if(!c.ok)return i(c.error);L=(0,ae.i)(H,a.ids,c.map,b)}if(d-Date.now()>1500){let b=await ax(a,c.fullName,h());b.ok&&"alerts"in b.data?L=(0,j.R)(L,b.data.alerts,H):b.ok&&(J=[J,"Dependabot alerts aren't readable with this token (optional: Dependabot alerts: Read)."].filter(Boolean).join(" "))}let M=(0,j.h)(K,L,(0,m.K)(G));J=[o,t,J].filter(Boolean).join(" ")||null;let N=new Date;return await (0,e.f)().transaction(async a=>{for(let d of(M.insert.length&&await a.insert(f.dependencyVulns).values(M.insert.map(a=>({repoId:c.id,package:a.package,installedVersion:a.installedVersion,vulnId:a.vulnId,aliases:a.aliases,severity:a.severity,fixedVersion:a.fixedVersion,summary:a.summary,direct:a.direct,dev:a.dev,source:a.source,firstSeenAt:N,lastSeenAt:N}))).onConflictDoNothing(),M.update))await a.update(f.dependencyVulns).set({severity:d.severity,fixedVersion:d.fixedVersion,summary:d.summary,aliases:d.aliases,dev:d.dev,direct:d.direct,lastSeenAt:N}).where((0,b.u)(f.dependencyVulns.id,d.id));M.resolve.length&&await a.update(f.dependencyVulns).set({resolvedAt:N}).where((0,b.b)((0,b.y)(f.dependencyVulns.id,M.resolve),(0,b.M)(f.dependencyVulns.resolvedAt))),await a.insert(f.dependencyScans).values({repoId:c.id,lockfilePath:v?.path??(w?E:null),lockfileSha:B,packageCount:H.length,scannedAt:N,queriedAt:N,error:null,note:J?aE(J,300):null,updatedAt:N}).onConflictDoUpdate({target:f.dependencyScans.repoId,set:{lockfilePath:v?.path??(w?E:null),lockfileSha:B,packageCount:H.length,scannedAt:N,queriedAt:N,error:null,note:J?aE(J,300):null,updatedAt:N}})}),{status:"scanned",vulns:M.insert.length+M.update.length,packages:H.length,note:"package-json"===I?J:null}}async function aJ(a,c={}){var d,g;let h,i,j,k,l=await az();if("error"in l)return{error:l.error};let{first:m,only:n,skip:o,...p}=c,q=(d=await aD(),h=(g={first:m,only:n,skip:o}).only?new Set(g.only):null,i=new Set(g.skip??[]),j=(h?d.filter(a=>h.has(a.id)):d).filter(a=>!i.has(a.id)),k=new Set(g.first??[]),[...j.filter(a=>k.has(a.id)),...j.filter(a=>!k.has(a.id))]),r={scanned:0,unchanged:0,failed:[],left:0,done:[],listed:q.map(a=>a.id)};for(let[b,c]of q.entries()){if(a-Date.now()<4e3){r.left=q.length-b;break}r.done.push(c.id);try{let b=await aI(l.token,c,a,p);"scanned"===b.status?r.scanned++:"unchanged"===b.status?r.unchanged++:r.failed.push(`${c.fullName}: ${b.error}`)}catch(a){r.failed.push(`${c.fullName}: ${a instanceof Error?a.name:"error"}`)}}return await (0,e.f)().delete(f.dependencyVulns).where((0,b.b)((0,b.E)(f.dependencyVulns.resolvedAt),(0,b.S)(f.dependencyVulns.resolvedAt,new Date(Date.now()-7776e6)))).catch(()=>void 0),r}let aK=async()=>(await (0,e.f)().select({id:f.accounts.id}).from(f.accounts).where((0,b.u)(f.accounts.provider,"github")).limit(1)).length>0;async function aL(a,c,d={}){let g,h,i,{marked:j,onlyMarked:k}=c;if(!await aK())return{problem:null,settled:[...j],done:[],complete:!0};let l=j.filter(ad.f),m=l.length?await (0,e.f)().select({appId:f.appRepos.appId,repoId:f.appRepos.repoId}).from(f.appRepos).where((0,b.y)(f.appRepos.appId,l)).limit(5*l.length):[],n=[...new Set(m.map(a=>a.repoId))],o=a=>m.filter(b=>b.appId===a).map(a=>a.repoId),p=j.filter(a=>!o(a).length);if(k&&!n.length)return{problem:null,settled:[...j],done:[],complete:!0};if(a-Date.now()<4e3)return{problem:null,settled:p,done:[],complete:!1};let q=(c.skip??[]).filter(a=>!n.includes(a)),r=await aJ(a,{...d,first:n,...k?{only:n}:{skip:q}});if("error"in r){let a;return{problem:(a=r.error,/didn't answer in time|no time left|time budget|rate limit/i.test(a))?null:r.error,settled:[...j],done:[],complete:!0}}let s=new Set([...r.done,...n.filter(a=>!r.listed.includes(a))]);return{problem:(g=r.failed.filter(a=>!/didn't answer in time|no time left|time budget|rate limit/i.test(a)),(h=r.failed.length-g.length+(r.left??0))&&console.info(`deps: ${h} repositor${1===h?"y":"ies"} wait for the next run`),i=g.slice(0,3),g.length>3&&i.push(`+${g.length-3} more`),i.length?i.join("; "):null),settled:j.filter(a=>o(a).every(a=>s.has(a))),done:r.done,complete:0===r.left}}async function aM(a){let d={repo:null,scan:null,vulns:[],writeConnected:!1};if(!(0,ad.f)(a))return d;let[g]=await (0,e.f)().select({id:f.githubRepos.id,fullName:f.githubRepos.fullName}).from(f.appRepos).innerJoin(f.githubRepos,(0,b.u)(f.githubRepos.id,f.appRepos.repoId)).where((0,b.u)(f.appRepos.appId,a)).limit(1);if(!g)return d;let[[h],i,[k]]=await Promise.all([(0,e.f)().select({scannedAt:f.dependencyScans.scannedAt,lockfilePath:f.dependencyScans.lockfilePath,packageCount:f.dependencyScans.packageCount,error:f.dependencyScans.error,note:f.dependencyScans.note}).from(f.dependencyScans).where((0,b.u)(f.dependencyScans.repoId,g.id)).limit(1),(0,e.f)().select({package:f.dependencyVulns.package,installedVersion:f.dependencyVulns.installedVersion,vulnId:f.dependencyVulns.vulnId,severity:f.dependencyVulns.severity,fixedVersion:f.dependencyVulns.fixedVersion,summary:f.dependencyVulns.summary,aliases:f.dependencyVulns.aliases,dev:f.dependencyVulns.dev,direct:f.dependencyVulns.direct,firstSeenAt:f.dependencyVulns.firstSeenAt}).from(f.dependencyVulns).where((0,b.b)((0,b.u)(f.dependencyVulns.repoId,g.id),(0,b.M)(f.dependencyVulns.resolvedAt))).limit(2e3),(0,e.f)().select({id:f.accounts.id}).from(f.accounts).where((0,b.u)(f.accounts.provider,"github_write")).limit(1)]);i.sort((a,b)=>(0,j.t)(a.severity)-(0,j.t)(b.severity)||(a.package<b.package?-1:+(a.package>b.package))||(a.vulnId<b.vulnId?-1:1));let l=await (0,e.f)().select({number:f.dependencyPrs.number,stage:f.dependencyPrs.stage,stageText:f.dependencyPrs.stageText,openedAt:f.dependencyPrs.openedAt}).from(f.dependencyPrs).where((0,b.b)((0,b.u)(f.dependencyPrs.repoId,g.id),(0,b.B)(f.dependencyPrs.openedAt,new Date(Date.now()-12096e5)))).orderBy((0,c.A)(f.dependencyPrs.openedAt)).limit(5).catch(()=>[]);return{repo:g,scan:h??null,vulns:i,writeConnected:!!k,prs:(l??[]).map(a=>({...a,fullName:g.fullName}))}}async function aN(a,c={}){if(!(0,ad.f)(a))return{ok:!1,error:"That app no longer exists."};let[g]=await (0,e.f)().select({app:f.resources.name,id:f.githubRepos.id,fullName:f.githubRepos.fullName,defaultBranch:f.githubRepos.defaultBranch,goneAt:f.githubRepos.goneAt,meta:f.resources.meta}).from(f.appRepos).innerJoin(f.githubRepos,(0,b.u)(f.githubRepos.id,f.appRepos.repoId)).innerJoin(f.resources,(0,b.u)(f.resources.id,f.appRepos.appId)).where((0,b.u)(f.appRepos.appId,a)).limit(1);if(!g)return{ok:!1,error:"Link a repository first."};if(g.goneAt)return{ok:!1,error:"That repository is no longer shared with the GitHub token."};let h=await az();if("error"in h)return{ok:!1,error:h.error};let i=aB(g.meta),j=await aI(h.token,{id:g.id,fullName:g.fullName,defaultBranch:g.defaultBranch,scannedAt:null,rootDir:i.dir,rootDirUnsupported:i.unsupported,prodBranch:i.branch,prodFallback:i.fallback??null},Date.now()+4e4,{...c,force:!0});if("failed"===j.status)return{ok:!1,error:`The scan failed: ${j.error}`};let[k]=await (0,e.f)().select({n:d.B`count(*)::int`}).from(f.dependencyVulns).where((0,b.b)((0,b.u)(f.dependencyVulns.repoId,g.id),(0,b.M)(f.dependencyVulns.resolvedAt))),l=k?.n??0;return{ok:!0,app:g.app,repo:g.fullName,vulns:l,message:l?`${l} known vulnerabilit${1===l?"y":"ies"} in ${j.packages??0} packages.`:`No known vulnerabilities in ${j.packages??0} packages.`}}async function aO(a){let c=a.filter(ad.f);if(!c.length)return[];let d=await (0,e.f)().select({appId:f.appRepos.appId,repoId:f.appRepos.repoId,error:f.dependencyScans.error}).from(f.appRepos).innerJoin(f.dependencyScans,(0,b.u)(f.dependencyScans.repoId,f.appRepos.repoId)).where((0,b.b)((0,b.y)(f.appRepos.appId,c),(0,b.E)(f.dependencyScans.scannedAt)));if(!d.length)return[];let g=await (0,e.f)().select({repoId:f.dependencyVulns.repoId,package:f.dependencyVulns.package,installedVersion:f.dependencyVulns.installedVersion,fixedVersion:f.dependencyVulns.fixedVersion,severity:f.dependencyVulns.severity,summary:f.dependencyVulns.summary,dev:f.dependencyVulns.dev,direct:f.dependencyVulns.direct}).from(f.dependencyVulns).where((0,b.b)((0,b.y)(f.dependencyVulns.repoId,[...new Set(d.map(a=>a.repoId))]),(0,b.M)(f.dependencyVulns.resolvedAt))).limit(1e4);return d.map(a=>({appId:a.appId,repoId:a.repoId,error:a.error,vulns:g.filter(b=>b.repoId===a.repoId).map(a=>({package:a.package,installedVersion:a.installedVersion,fixedVersion:a.fixedVersion,severity:a.severity,summary:a.summary,dev:a.dev,direct:a.direct}))}))}async function aP(a,c=new Set){let g=a.filter(ad.f),h=new Map;if(!g.length)return h;let i=await (0,e.f)().select({appId:f.appRepos.appId,repoId:f.appRepos.repoId}).from(f.appRepos).where((0,b.y)(f.appRepos.appId,g));if(!i.length)return h;let k=await (0,e.f)().select({repoId:f.dependencyVulns.repoId,package:f.dependencyVulns.package,installedVersion:f.dependencyVulns.installedVersion,fixedVersion:f.dependencyVulns.fixedVersion,vulnId:f.dependencyVulns.vulnId,aliases:f.dependencyVulns.aliases,severity:f.dependencyVulns.severity,direct:f.dependencyVulns.direct}).from(f.dependencyVulns).where((0,b.b)((0,b.y)(f.dependencyVulns.repoId,[...new Set(i.map(a=>a.repoId))]),(0,b.M)(f.dependencyVulns.resolvedAt),(0,b.u)(f.dependencyVulns.direct,!0),(0,b.E)(f.dependencyVulns.fixedVersion))).limit(2e3),l=k.some(a=>"next"===a.package)?new Set((await (0,e.f)().selectDistinct({appId:f.dependencyPrs.appId}).from(f.dependencyPrs).where((0,b.b)((0,b.y)(f.dependencyPrs.appId,g),(0,b.$)(f.dependencyPrs.stage,["merged","closed"]),(0,b.B)(f.dependencyPrs.openedAt,new Date(Date.now()-12096e5)),d.B`${f.dependencyPrs.packages} @> '["next"]'::jsonb`)).limit(g.length)).map(a=>a.appId)):new Set;for(let a of i){let b=c.has(a.appId)||l.has(a.appId);(0,j.B)(k.filter(c=>c.repoId===a.repoId&&!(b&&"next"===c.package))).length&&h.set(a.appId,a.repoId)}return h}a.s(["o",0,12e3,"d",0,4e3,"j",0,aM,"O",0,aL,"C",0,aP,"a",0,aO,"h",0,aN],930270);var aQ=a.i(242605);async function aR(){return(0,e.f)().select({appId:f.links.fromResourceId,dbId:f.links.toResourceId}).from(f.links).where((0,b.u)(f.links.kind,"uses_db")).limit(500)}async function aS(a){let g=(0,b.b)((0,b.u)(f.resources.monitored,!0),(0,b.M)(f.resources.goneAt)),[h,i,j,k,l]=await Promise.all([$(),Z(),(0,e.f)().select({m:f.monitors,appName:f.resources.name,appMeta:f.resources.meta}).from(f.monitors).innerJoin(f.resources,(0,b.u)(f.resources.id,f.monitors.resourceId)).where((0,b.b)(g,(0,b.u)(f.monitors.paused,!1),(0,b.u)(f.monitors.ownerPaused,!1))),(0,e.f)().select({id:f.resources.id,name:f.resources.name,meta:f.resources.meta}).from(f.resources).where((0,b.b)(g,(0,b.u)(f.resources.kind,"app"))),(0,e.f)().select({id:f.accounts.id,provider:f.accounts.provider,label:f.accounts.label,expiresAt:f.accounts.expiresAt,status:f.accounts.status,lastError:f.accounts.lastError}).from(f.accounts)]),m=j.map(a=>a.m.id),n=m.length?await (0,e.f)().select({id:f.checks.monitorId,n:d.B`count(*)::int`,p95:d.B`percentile_cont(0.95) within group (order by ${f.checks.latencyMs})::float8`}).from(f.checks).where((0,b.b)((0,b.y)(f.checks.monitorId,m),(0,b.B)(f.checks.at,new Date(a.getTime()-6e5)),(0,b.u)(f.checks.inMaintenance,!1))).groupBy(f.checks.monitorId):[],o=k.map(a=>a.id),p=o.length?await (0,e.f)().selectDistinctOn([f.deployments.resourceId],{appId:f.deployments.resourceId,state:f.deployments.state,sha:f.deployments.commitSha,createdAt:f.deployments.createdAtProvider}).from(f.deployments).where((0,b.b)((0,b.y)(f.deployments.resourceId,o),(0,b.u)(f.deployments.target,"production"))).orderBy(f.deployments.resourceId,(0,c.A)(f.deployments.createdAtProvider)):[],q=await (0,e.f)().select({id:f.resources.id,name:f.resources.name,kind:f.resources.kind,state:f.snapshots.state,data:f.snapshots.data}).from(f.resources).innerJoin(f.snapshots,(0,b.u)(f.snapshots.resourceId,f.resources.id)).where((0,b.b)(g,(0,b.y)(f.resources.kind,["supabase_project","neon_project","firestore","turso_database","upstash_redis","d1_database","zone","domain"]))),r=a=>q.filter(b=>b.kind===a),s=q.filter(a=>["supabase_project","neon_project","firestore","turso_database","upstash_redis","d1_database"].includes(a.kind)),t=r("zone"),u=r("domain"),v=await aR(),w=await (0,_.Y)().catch(()=>null),x=o.length?await aO(o).catch(()=>null):null,y=o.length?await (0,aQ.F)(o).catch(()=>null):null;return{now:a,lastMinuteRunAt:h,lastAnyRunAt:i,monitors:j.map(({m:a,appName:b,appMeta:c})=>{let d=n.find(b=>b.id===a.id),e="heartbeat"===a.kind;return{id:a.id,appId:a.resourceId,appName:b,url:e?a.name??"heartbeat":a.url,kind:e?"heartbeat":"http",state:a.state,failStreak:a.failStreak,lastStatus:a.lastStatus,lastError:a.lastError,lastCheckedAt:a.lastCheckedAt,p95Last10:d?.p95??null,checksLast10:d?.n??0,movedTo:e?null:(0,aa.u)(a.url,{name:b,meta:c},k.filter(b=>b.id!==a.resourceId),{lastError:a.lastError})?.to??null}}),apps:k.map(a=>{let b=p.find(b=>b.appId===a.id);return{id:a.id,name:a.name,latestProduction:b?{state:b.state,sha:b.sha,createdAt:b.createdAt}:null}}),accounts:l,dbs:s.length?s.map(b=>(function(a,b){let c={id:a.id,name:a.name,state:a.state,sizeBytes:null,sizeLimitBytes:null,lastApiAt:null,cuHours:null,cuLimit:null,readsToday:null,readsLimit:null,quotaExhausted:null};if("supabase_project"===a.kind){let b=(0,V.k)(V.B,a.data),d=(0,Y.Z)(b.lastTrafficAt),e=(0,Y.Z)(b.trafficAt),f=d??(e&&!b.trafficError?new Date(e.getTime()-6048e5):null);return{...c,provider:"supabase",sizeBytes:b.sizeBytes??null,sizeLimitBytes:W.R,lastApiAt:f}}if("neon_project"===a.kind){let b=(0,V.k)(V.s,a.data),d=(b.branches??[]).map(a=>a.logicalSize).filter(a=>"number"==typeof a);return{...c,provider:"neon",cuHours:null==b.computeSeconds?null:b.computeSeconds/3600,cuLimit:U.a.cuHours,sizeBytes:d.length?d.reduce((a,b)=>a+b,0):null,sizeLimitBytes:U.a.storageBytes}}if("firestore"===a.kind){let d=(0,V.k)(V.w,a.data),e=(0,Y.Z)(d.opsAt),f=null!=d.reads&&e&&e.getTime()>=(0,T.a)(b).getTime()?d.reads:null,g=null!=d.latencyMs||null!=d.pingError;return{...c,provider:"firestore",readsToday:f,readsLimit:T.T.reads,quotaExhausted:g?"RESOURCE_EXHAUSTED"===d.pingReason:null}}if("turso_database"===a.kind){let d=(0,V.k)(V.N,a.data),e=(0,S.u)((0,S.G)(d,b));return{...c,provider:"turso",sizeBytes:d.orgStorageBytes??null,sizeLimitBytes:S.g.storageBytes,quotaPct:e?.pct??null,quotaLabel:e?`${e.label} ${e.text}`:null}}if("upstash_redis"===a.kind){let d=(0,V.k)(V.e,a.data),e=(0,S.u)((0,S.$)(d,b));return{...c,provider:"upstash",sizeBytes:d.storageBytes??null,sizeLimitBytes:S.W.storageBytes,quotaPct:e?.pct??null,quotaLabel:e?`${e.label} ${e.text}`:null}}if("d1_database"===a.kind){let d=(0,V.k)(V.x,a.data),e=(0,S.u)((0,S.I)(d,b));return{...c,provider:"d1",sizeBytes:d.sizeBytes??null,sizeLimitBytes:S.M.dbBytes,quotaPct:e?.pct??null,quotaLabel:e?`${e.label} ${e.text}`:null}}return null})(b,a)).filter(a=>null!==a):null,domains:t.length||u.length?[...t.map(a=>({id:a.id,name:a.name,tlsNotAfter:null,expiresAt:(0,Y.Z)((0,X.q)(a.data).rdap?.expiresAt)})),...u.map(a=>({id:a.id,name:a.name,tlsNotAfter:(0,Y.Z)((0,X.q)(a.data).tls?.notAfter),expiresAt:null}))]:null,dns:function(a,b){let c=a.filter(a=>Array.isArray(a.data.records));if(!c.length)return null;let d=a.map(a=>a.name),e=[];for(let a of c){let c=b.filter(b=>(0,Y.J)(b.name,d)===a.name.toLowerCase().replace(/\.$/,"")),f=[...new Set(c.flatMap(a=>(0,X.q)(a.data).vercel?.recommendedIps??[]))];for(let b of(0,X.q)(a.data).records){if(!(0,Y.l)(b,f))continue;let d=b.name.toLowerCase().replace(/\.$/,""),g=c.find(a=>a.name.toLowerCase().replace(/\.$/,"")===d);e.push({id:`${a.id}:${b.id}`,resourceId:g?.id??a.id,name:b.name,proxied:b.proxied,pointsToVercel:!0})}}return e}(t,u),links:v,compute:w,deps:x&&x.length?x:null,frameworks:y&&y.length?y:null}}var aT=a.i(714530),aU=a.i(396667);let aV={vercel:"Vercel",supabase:"Supabase",neon:"Neon",cloudflare:"Cloudflare",firebase:"Firebase",gcp:"Google Cloud"};async function aW(){return(await (0,e.f)().select().from(f.alertRules)).filter(a=>(0,g.h)(a.key)).map(a=>({key:a.key,severity:a.severity,threshold:a.threshold,enabled:a.enabled,channels:a.channels}))}async function aX(a,c={}){let[d,h,i,j,k,l]=await Promise.all([aS(a),aW(),(0,e.f)().select().from(f.alerts).where((0,b.M)(f.alerts.resolvedAt)),(0,e.f)().select({provider:f.providerStatus.provider,state:f.providerStatus.state}).from(f.providerStatus),(0,aT.w)(),(0,aU.I)()]),m=new Map(d.accounts.map(a=>[a.id,a.provider])),n=i.filter(a=>!(0,Q.O)(l,a.ruleKey,a.accountId?m.get(a.accountId):null)),o=function(a,b,c){let d=[],e=new Set;for(let f of b){if(!f.enabled||c&&!c.includes(f.key)||!g._[f.key])continue;let b=H[f.key](a,f.threshold);b&&(e.add(f.key),d.push(...b))}return{observations:d,evaluated:e}}(d,h,c.only),p=o.evaluated,q=o.observations.filter(a=>!(0,Q.O)(l,a.rule,a.provider)),r=h.find(a=>"CollectorStale"===a.key),s=void 0===d.lastAnyRunAt?d.lastMinuteRunAt:d.lastAnyRunAt,t=!!r?.enabled&&(!s||a.getTime()-s.getTime()>(r.threshold??5)*6e4),u=new Map((d.dbs??[]).filter(a=>"paused"===a.state).map(a=>[a.id,a.name])),v=new Map(d.links.filter(a=>u.has(a.dbId)).map(a=>[a.appId,`DatabasePaused \xb7 ${u.get(a.dbId)}`])),w=new Map(j.filter(a=>"warn"===a.state||"err"===a.state).map(a=>["gcp"===a.provider?"firebase":a.provider,aV[a.provider]??a.provider])),x=(0,P.u)(k,d.monitors.map(a=>({id:a.id,appId:a.appId})),a,d.apps.map(a=>a.id)),y=function(a,b,c,d,e){let f={open:[],touch:[],resolve:[]},h=new Map(d.map(a=>[a.key,a])),i=new Map(b.map(a=>[O(a.rule,a.subject),a])),j=new Set(a.map(a=>O(a.ruleKey,a.subject))),k=a=>f.resolve.push({id:a.id,pending:a.notifiedOpen?"resolve":null});for(let b of a){let a=h.get(b.ruleKey),d=i.get(O(b.ruleKey,b.subject));if(!a||!a.enabled){f.resolve.push({id:b.id,pending:null});continue}if(!c.has(b.ruleKey))continue;if(!d){f.resolve.push({id:b.id,pending:null});continue}if("unknown"===d.status)continue;let j=d.provider?e.incidents.get(d.provider)??null:null;if("firing"===d.status){let c=L(d,e),g=b.notifiedOpen&&null!==b.lastNotifiedAt&&e.now.getTime()-b.lastNotifiedAt.getTime()>=216e5,h={id:b.id,okStreak:0,lastSampleAt:d.sampleAt??b.lastSampleAt,lastSeenAt:e.now,message:d.message,causedBy:c,providerIncident:j},i=!b.notifiedOpen&&(!b.pendingSince||e.now.getTime()-b.pendingSince.getTime()>=216e5);(g||i)&&!N(b,e.now)&&!c&&null===b.pending&&K(a)&&(h.pending=g?"repeat":"open"),f.touch.push(h);continue}if(!g._[b.ruleKey].sampled||null===d.sampleAt){k(b);continue}if(!(null===b.lastSampleAt||d.sampleAt.getTime()>b.lastSampleAt.getTime()))continue;let l=b.okStreak+1;l>=2?k(b):f.touch.push({id:b.id,okStreak:l,lastSampleAt:d.sampleAt})}for(let a of b){if("firing"!==a.status||j.has(O(a.rule,a.subject))||e.maintenance.has(a.subject)||a.resourceId&&e.maintenance.has(a.resourceId))continue;let b=h.get(a.rule);if(!b)continue;let c=L(a,e);f.open.push({ruleKey:a.rule,subject:a.subject,resourceId:a.resourceId,accountId:a.accountId,severity:M(b.severity,a.severity),title:a.title,message:a.message,startedAt:e.now,lastSeenAt:e.now,lastSampleAt:a.sampleAt,causedBy:c,providerIncident:a.provider?e.incidents.get(a.provider)??null:null,pending:c||!K(b)?null:"open"})}return f}(n.filter(a=>(0,g.h)(a.ruleKey)).map(a=>({id:a.id,ruleKey:a.ruleKey,subject:a.subject,okStreak:a.okStreak,lastSampleAt:a.lastSampleAt,silencedUntil:a.silencedUntil,silencedUntilResolved:a.silencedUntilResolved,notifiedOpen:a.notifiedOpen,lastNotifiedAt:a.lastNotifiedAt,pending:a.pending,pendingSince:a.pendingSince})),q,p,h,{now:a,collectorStale:t,mutedApps:v,incidents:w,maintenance:x});return y.open.length||y.touch.length||y.resolve.length?(await (0,e.f)().transaction(async c=>{for(let b of y.open)await c.insert(f.alerts).values({...b,pendingSince:b.pending?a:null}).onConflictDoNothing();for(let d of y.touch){let{id:e,pending:g,...h}=d;await c.update(f.alerts).set({...h,...g?{pending:g,pendingSince:a}:{}}).where((0,b.b)((0,b.u)(f.alerts.id,e),(0,b.M)(f.alerts.resolvedAt)))}for(let d of y.resolve)await c.update(f.alerts).set({resolvedAt:a,pending:d.pending,pendingSince:d.pending?a:null}).where((0,b.b)((0,b.u)(f.alerts.id,d.id),(0,b.M)(f.alerts.resolvedAt)))}),{opened:y.open.length,resolved:y.resolve.length}):{opened:0,resolved:0}}async function aY(){let[a,c]=await Promise.all([(0,aU.I)(),(0,e.f)().select({ruleKey:f.alerts.ruleKey,provider:f.accounts.provider,n:d.B`count(*)::int`}).from(f.alerts).leftJoin(f.accounts,(0,b.u)(f.accounts.id,f.alerts.accountId)).where((0,b.b)((0,b.M)(f.alerts.resolvedAt),(0,b.y)(f.alerts.severity,["critical","warning"]))).groupBy(f.alerts.ruleKey,f.accounts.provider)]);return c.reduce((b,c)=>b+((0,Q.O)(a,c.ruleKey,c.provider)?0:Number(c.n)),0)}let aZ=d.B`case ${f.alerts.severity} when 'critical' then 0 when 'warning' then 1 else 2 end`;async function a$(a=new Set){return(await (0,e.f)().select({a:f.alerts,name:f.resources.name,kind:f.resources.kind}).from(f.alerts).leftJoin(f.resources,(0,b.u)(f.resources.id,f.alerts.resourceId)).where((0,b.b)((0,b.M)(f.alerts.resolvedAt),(0,aU.s)(a))).orderBy(aZ,(0,c.A)(f.alerts.startedAt)).limit(200)).map(({a,name:b,kind:c})=>({...a,resourceName:b??null,resourceKind:c??null}))}async function a_(){return a$(await (0,aU.I)())}async function a0(a){return(await (0,e.f)().select({id:f.alerts.id,ruleKey:f.alerts.ruleKey,severity:f.alerts.severity,title:f.alerts.title,resourceId:f.alerts.resourceId,startedAt:f.alerts.startedAt,resolvedAt:f.alerts.resolvedAt}).from(f.alerts).where((0,b.b)((0,b.E)(f.alerts.resolvedAt),(0,b.B)(f.alerts.resolvedAt,new Date(a.getTime()-6048e5)))).orderBy((0,c.A)(f.alerts.resolvedAt)).limit(50)).flatMap(a=>a.resolvedAt?[{...a,resolvedAt:a.resolvedAt}]:[])}async function a1(){let[a,c,h]=await Promise.all([aW(),(0,e.f)().select({key:f.alerts.ruleKey,n:d.B`count(*)::int`}).from(f.alerts).where((0,b.M)(f.alerts.resolvedAt)).groupBy(f.alerts.ruleKey),(0,e.f)().select({kind:f.resources.kind}).from(f.resources).innerJoin(f.snapshots,(0,b.u)(f.snapshots.resourceId,f.resources.id)).where((0,b.b)((0,b.u)(f.resources.monitored,!0),(0,b.M)(f.resources.goneAt))).groupBy(f.resources.kind)]),i=new Set(h.map(a=>a.kind)),j={databases:["supabase_project","neon_project","firestore"].some(a=>i.has(a)),domains:i.has("domain")||i.has("zone"),dns:i.has("zone")};return g.u.flatMap(b=>{let d=a.find(a=>a.key===b);if(!d)return[];let e=g._[b].needs;return[{rule:d,firing:c.find(a=>a.key===b)?.n??0,hasData:null===e||j[e]}]})}async function a2(a,c,d,g){let h="off"===c?{silencedUntil:null,silencedUntilResolved:!1,silencedBy:null}:{...(0,R.A)(c,g),silencedBy:d},[i]=await (0,e.f)().update(f.alerts).set(h).where((0,b.b)((0,b.u)(f.alerts.id,a),(0,b.M)(f.alerts.resolvedAt))).returning({ruleKey:f.alerts.ruleKey,title:f.alerts.title,resourceId:f.alerts.resourceId});return i??null}async function a3(a,c){return(await (0,e.f)().update(f.alertRules).set({...c,updatedAt:new Date}).where((0,b.u)(f.alertRules.key,a)).returning({key:f.alertRules.key})).length>0}a.s(["$",0,aX,"q",0,a$,"I",0,a0,"i",0,a_,"X",0,aY,"y",0,a1,"z",0,a3,"N",0,a2],455317)},425238,a=>{var b=a.i(609007),c=a.i(556987);let d=/(?<![\p{L}\p{N}_])(?:w[bp]_[A-Za-z0-9]{6,}|hb_[0-9a-f]{6,}|sk-[A-Za-z0-9_-]{6,}|gsk_[A-Za-z0-9]{6,}|AIza[0-9A-Za-z_-]{8,}|AQ\.[A-Za-z0-9_-]{8,})/gu,e=/\b[a-z][a-z0-9+.-]*:\/\/[^\s/?#"'<>)]*(\/[^\s?#"'<>)]*)?(?:[?#][^\s"'<>)]*)?/gi,f="[\\p{L}\\p{N}_-]",g=a=>a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),h=new WeakMap,i=[RegExp(d.source,"u"),/\b(?:Bearer|Basic)\s+[A-Za-z0-9._~+/=-]{12,}/i,/\beyJ[\w-]{8,}\.[\w-]{8,}\.[\w-]{8,}/,/\b[a-z][a-z0-9+.-]*:\/\/[^\s/@:]+:[^\s/@]+@/i,/\b[A-Fa-f0-9]{40,}\b/,/\b(?=[A-Za-z0-9_-]*\d)(?=[A-Za-z0-9_-]*[A-Za-z])[A-Za-z0-9_-]{40,}\b/];a.s(["G",0,function(a){return i.some(b=>b.test(a))},"F",0,function(a,i){let j=(0,b.h)(a);j=(0,c.J)(j,i);let k=function(a){if(h.has(a))return h.get(a);let b=new Map((a.account??[]).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(`(?<!${f})(?:${c.map(g).join("|")})(?!${f})`,"giu"),alias:b}:null;return h.set(a,d),d}(i);return k&&(j=j.replace(k.re,a=>k.alias.get(a.toLowerCase())??a)),(j=(j=(j=j.replace(d,"[hidden]")).replace(/hb_\[hidden\]/g,"[hidden]")).replace(e,(a,b)=>b??"[url]")).replace(/@/g,"(at)")}])}]})();
2
2
 
3
3
  //# sourceMappingURL=src_1-xw4hea2lvb3._.js.map
@@ -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)("40948136eed2a922228716c6373be30c67246ea12f",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("Something went wrong. 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)("609faa6c55e28176835c56bcd48c58aaa78c9300fc",j.callServer,void 0,j.findSourceMapURL,"changeKeyAction"),l=(0,j.createServerReference)("403bd0eeb1d1f106eca711a4dc9ec9298aa944e03b",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("Something went wrong. 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)("4091fc76a80eb02c183c63b53babcc5b9460888b38",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("Something went wrong. 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)("609517b31798a0e8000a8f18bc3933aff7300713db",j.callServer,void 0,j.findSourceMapURL,"changeKeyAction"),l=(0,j.createServerReference)("403720f030e61f4dc6f10e9d7054392b4f371a3d17",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("Something went wrong. 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
@@ -1,3 +1,3 @@
1
- module.exports=[[868358,a=>{var b=a.i(211857);let c=(0,b.registerClientReference)(function(){throw Error("Attempted to call AppActions() from the server but AppActions 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)/apps/[id]/app-actions.tsx","AppActions"),d=(0,b.registerClientReference)(function(){throw Error("Attempted to call PromoteStaged() from the server but PromoteStaged 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)/apps/[id]/app-actions.tsx","PromoteStaged");a.s(["AppActions",0,c,"PromoteStaged",0,d])},537728,a=>{var b=a.i(868358);a.n(b)},199364,a=>{let b=(0,a.i(211857).registerClientReference)(function(){throw Error("Attempted to call LinkDialog() from the server but LinkDialog 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)/apps/[id]/link-dialog.tsx","LinkDialog");a.s(["LinkDialog",0,b])},466627,a=>{var b=a.i(199364);a.n(b)},252650,a=>{var b=a.i(907997),c=a.i(906974),d=a.i(395936);a.i(570396);var e=a.i(673727),f=a.i(252302),g=a.i(649247),h=a.i(803681),i=a.i(685865),j=a.i(701702),k=a.i(513553),l=a.i(154756),m=a.i(293167),n=a.i(954296),o=a.i(686251),p=a.i(605826),q=a.i(715513),r=a.i(414280),s=a.i(791444),t=a.i(473083),u=a.i(109307),v=a.i(534908),w=a.i(875016),x=a.i(840784),y=a.i(532620),z=a.i(858806),A=a.i(513701),B=a.i(930270),C=a.i(396667),D=a.i(944571),E=a.i(30184),F=a.i(565255),G=a.i(27522),H=a.i(683439),I=a.i(960186),J=a.i(558418),K=a.i(245710),L=a.i(240387),M=a.i(139138),N=a.i(657582),O=a.i(469762),P=a.i(556987),Q=a.i(631107),R=a.i(505237),S=a.i(570845);function T({data:a,link:d}){return(0,b.jsxs)(b.Fragment,{children:[a.lines.map(a=>(0,b.jsxs)("div",{className:"former"===a.tag?"text-ink-faint":void 0,children:[d&&"former"!==a.tag?(0,b.jsxs)("a",{href:`https://${a.name}`,target:"_blank",rel:"noreferrer",children:[(0,b.jsx)(j.MaskedText,{text:a.name,inLink:!0})," ",(0,b.jsx)(c.f,{size:14,"aria-hidden":!0,className:"inline align-[-2px]"})]}):(0,b.jsx)(j.MaskedText,{text:a.name}),a.tag&&(0,b.jsxs)(b.Fragment,{children:[" ",(0,b.jsx)(h.E,{children:"redirect"===a.tag&&a.target?(0,b.jsxs)(b.Fragment,{children:["→ ",(0,b.jsx)(j.MaskedText,{text:a.target})]}):a.tag})]})]},a.name)),a.more>0&&(0,b.jsxs)("div",{className:"text-ink-faint",children:["+",a.more," more"]})]})}let U={github:"https://github.com/",gitlab:"https://gitlab.com/",bitbucket:"https://bitbucket.org/"},V=encodeURIComponent;function W(a){return"supabase_project"===a.kind?{label:`Supabase \xb7 ${a.name}`,href:`https://supabase.com/dashboard/project/${V(a.externalId)}`}:"neon_project"===a.kind?{label:`Neon \xb7 ${a.name}`,href:`https://console.neon.tech/app/projects/${V(a.externalId)}`}:"firestore"===a.kind?{label:`Firebase \xb7 ${a.name}`,href:`https://console.firebase.google.com/project/${V(a.externalId)}/overview`}:null}var X=a.i(679594),Y=a.i(863858),Z=a.i(182357),$=a.i(968715),_=a.i(228173),aa=a.i(768183),ab=a.i(393260),ac=a.i(537728),ad=a.i(718064),ae=a.i(466627),af=a.i(881868),ag=a.i(991813),ah=a.i(143821);let ai="grid grid-cols-[170px_minmax(0,1fr)] gap-x-4 gap-y-2.5 max-[720px]:grid-cols-1 max-[720px]:gap-y-1 [&_dd]:min-w-0 [&_dd]:[overflow-wrap:anywhere] [&_dt]:text-ink-soft",aj="font-mono text-[12.5px]",ak=["details","metrics","deployments","logs"];async function al({params:a,searchParams:c}){var m,r,G,J,Q,Z;let af,ag,ap,aq,ar,[{id:as},at]=await Promise.all([a,c]),au=await (0,u.I)();(0,H.f)(as)||(0,e.notFound)();let av=new Date,aw=(0,R.z)(au.role),ax=(0,w.T)(av,as).catch(()=>null),[ay,az,aA,aB,aC,aD,aE,aF,aG,aH,aI]=await Promise.all([(0,x.Z)(as,av),(0,A.P)(as,av),(0,z.K)({appId:as}),(0,A.M)(as,new Date(av.getTime()-864e5*$.F)),(0,E.P)(),(0,y.p)(),aw?(0,y.S)():Promise.resolve([]),(0,y.e)(),(0,D.c)(as).catch(()=>null),(0,B.j)(as).catch(()=>null),(0,C.I)()]);ay||(0,e.notFound)();let aJ=await ax,aK=aJ&&aJ.map(a=>(0,P.d)(a,aF)),aL=(0,Y.f)(),aM="viewer"!==au.role&&aL?(0,X.M)(ay.teamSlug,ay.name):null,aN=(0,R.k)(ay),aO=(0,L.f)({...ay,database:ay.database?{id:ay.database.id,kind:ay.database.kind,name:(0,P.X)(aF,ay.database.id)}:null},av),{WhyAiSlot:aP,AiNotesSlot:aQ,DevNotesSlot:aR}=v.extensions,aS="owner"===au.role&&aP?(0,b.jsx)(aP,{appId:ay.id}):null,aT="owner"===au.role&&aQ?(0,b.jsx)(aQ,{appId:ay.id}):null,aU=ay.monitors.length>0&&ay.monitors.every(a=>a.ownerPaused),aV=aL?`https://${ay.domain}`:null,aW=(0,N.h)(aA),aX=a=>{let b=a?aA.find(b=>b.externalId===a):void 0;return b?{id:b.externalId,sha:(0,O._)(b.commitSha).replace("—","")}:null},aY=aX(aW.stagedId),aZ=ak.find(a=>a===at.tab)??"details",a$="logs"===aZ&&"viewer"===au.role?"details":aZ,a_=aD.find(a=>a.appId===ay.id&&a.zoneName),a0=aV?(m={teamSlug:ay.teamSlug,projectName:ay.name,repo:ay.repo,repoType:ay.repoType,siteUrl:aV,dbs:ay.database?[{...ay.database,name:(0,P.X)(aF,ay.database.id)}]:[],zone:a_?{accountId:a_.cfAccountId,name:a_.zoneName}:null},ag=[],m.teamSlug&&ag.push({label:"Vercel project",href:`https://vercel.com/${V(m.teamSlug)}/${V(m.projectName)}`}),(ap=m.repoType?U[m.repoType]:void 0)&&m.repo&&ag.push({label:"Git repository",href:`${ap}${m.repo.split("/").map(V).join("/")}`}),ag.push({label:"Live site",href:m.siteUrl}),(aq=[...m.dbs.map(W).filter(a=>null!==a),...m.zone?.accountId?[{label:`Cloudflare \xb7 ${m.zone.name}`,href:`https://dash.cloudflare.com/${V(m.zone.accountId)}/${V(m.zone.name)}`}]:[]]).length?[...ag,"---",...aq]:ag):[];return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(i.AutoRefresh,{at:av.getTime()}),(0,b.jsx)(h.L,{crumbs:[{label:"Applications",href:"/apps"},{label:ay.name}],badge:(0,b.jsx)(l.g,{kind:"app"}),title:ay.name,actions:(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(ah.WhyStatus,{state:aN.state,label:aN.label,problems:aO,nowMs:av.getTime(),aiSlot:aS}),a0.length>0&&(0,b.jsx)(q.RowMenu,{button:!0,label:"Open in",items:a0.map(a=>"---"===a?a:{label:a.label,href:a.href})}),aw&&(0,b.jsx)(ac.AppActions,{app:{id:ay.id,name:ay.name,siteUrl:aV,paused:aU,monitorCount:ay.monitors.length},owner:"owner"===au.role,current:aX(aW.currentId),previous:aX(aW.previousId),rolledBack:null!==aY})]})}),aY&&(0,b.jsx)("div",{className:"mb-4",children:(0,b.jsx)(h.M,{tone:"warning",title:"Rolled back: new pushes don't go live until you promote one.",action:aw?(0,b.jsx)(ac.PromoteStaged,{app:{id:ay.id,name:ay.name},staged:aY}):void 0})}),(0,b.jsxs)(t.Tabs,{defaultValue:a$,className:"gap-4",children:[(0,b.jsxs)(t.TabsList,{variant:"line",children:[(0,b.jsx)(t.TabsTrigger,{value:"details",children:"Details"}),(0,b.jsx)(t.TabsTrigger,{value:"metrics",children:"Metrics"}),(0,b.jsx)(t.TabsTrigger,{value:"deployments",children:"Deployments"}),"viewer"!==au.role&&(0,b.jsx)(t.TabsTrigger,{value:"logs",children:"Logs"})]}),(0,b.jsxs)(t.TabsContent,{value:"details",children:[(0,b.jsxs)("div",{className:"grid grid-cols-1 gap-4 min-[1001px]:grid-cols-2",children:[(0,b.jsx)(h.N,{title:"Details",meta:(0,b.jsx)(n.Src,{kind:"api"}),children:(0,b.jsxs)("dl",{className:ai,children:[(0,b.jsx)("dt",{children:"Name"}),(0,b.jsx)("dd",{children:(0,b.jsx)(j.Masked,{kind:"app",real:ay.name})}),(0,b.jsx)("dt",{children:"Domains"}),(0,b.jsx)("dd",{children:(0,b.jsx)(T,{data:ay.domainLines,link:aL})}),(0,b.jsx)("dt",{children:"Framework"}),(0,b.jsx)("dd",{children:ay.framework??"—"}),(0,b.jsx)("dt",{children:"Function region"}),(0,b.jsx)("dd",{className:(0,M.f)(aj,!ay.functionRegions.length&&"text-ink-faint"),children:ay.functionRegions.join(", ")||"—"}),(0,b.jsx)("dt",{children:"Production branch"}),(0,b.jsx)("dd",{className:aj,children:ay.productionBranch??"—"}),(0,b.jsx)("dt",{children:"Repository"}),(0,b.jsx)("dd",{className:(0,M.f)(aj,!ay.repo&&"text-ink-faint"),children:ay.repo?(0,b.jsx)(j.Masked,{kind:"repo",real:ay.repo}):"—"}),(0,b.jsx)("dt",{children:"Created"}),(0,b.jsx)("dd",{children:ay.createdAt?(0,O.H)(ay.createdAt):"—"})]})}),(0,b.jsx)(h.N,{title:"Status",children:(0,b.jsxs)("dl",{className:ai,children:[(0,b.jsx)("dt",{children:"Status"}),(0,b.jsx)("dd",{children:(0,b.jsx)(ah.WhyStatus,{state:aN.state,label:aN.label,problems:aO,nowMs:av.getTime(),aiSlot:aS})}),(0,b.jsx)("dt",{children:"Database"}),(0,b.jsxs)("dd",{children:[ay.database?(0,b.jsx)(_.y,{db:ay.database}):(0,b.jsx)("span",{className:"text-ink-faint",children:"None"}),aw&&(0,b.jsxs)(b.Fragment,{children:[" ",(0,b.jsx)(ae.LinkDialog,{app:{id:ay.id,name:ay.name},options:aE,current:ay.database?.id??null,suggested:(0,I.U)(ay.name,aE)})]})]}),(0,b.jsx)("dt",{children:"Uptime 30 days"}),(0,b.jsx)("dd",{className:aj,children:(0,O.C)(ay.uptime30)}),(0,b.jsx)("dt",{children:"Response 24 h"}),(0,b.jsxs)("dd",{className:aj,children:["p50 ",(0,O.p)(ay.response.p50)," · p95 ",(0,O.p)(ay.response.p95)]}),(0,b.jsx)("dt",{children:"Last deploy"}),(0,b.jsx)("dd",{children:ay.lastDeploy?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{className:aj,children:(0,O._)(ay.lastDeploy.commitSha)})," · ",(0,O.$)(ay.lastDeploy,av)]}):"—"}),(0,b.jsx)("dt",{children:"Monitors"}),(0,b.jsxs)("dd",{children:[0===ay.monitors.length?(0,b.jsx)("span",{className:"text-ink-faint",children:"None"}):ay.monitors.map(a=>{let c=(0,R.M)({...a,appGone:ay.gone}),e=("err"===c.state||"warn"===c.state)&&!a.maintUntil,f=(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(o.Z,{state:c.state}),(0,b.jsxs)("span",{className:"sr-only",children:[c.label,": "]}),(0,b.jsx)("span",{className:aj,children:a.path})]});return e?(0,b.jsx)(d.default,{href:"/uptime",title:`${c.label}. See why on Uptime`,className:"mr-2.5 inline-flex items-center gap-1.5",children:f},a.id):(0,b.jsx)("span",{title:c.label,className:"mr-2.5 inline-flex items-center gap-1.5",children:f},a.id)}),ay.monitors.filter(a=>a.move&&!ay.gone).map(a=>(0,b.jsx)("div",{className:"mt-1",children:(0,b.jsx)(S.DomainMoved,{monitorId:a.id,from:a.move.from,to:a.move.to,canAct:aw})},`move-${a.id}`))]})]})})]}),(0,b.jsx)("div",{className:"mt-4",children:(0,b.jsx)(an,{app:{id:ay.id,name:ay.name},security:ay.security,canAct:aw&&!ay.gone,now:av,eol:aC})}),aH&&aG&&(aG.connected||aG.link)&&(0,b.jsx)("div",{className:"mt-4",children:(0,b.jsx)(ad.f,{app:{id:ay.id,name:ay.name},view:aH,canAct:aw&&!ay.gone,owner:"owner"===au.role,now:av,devopsOff:aI.has("devops")})}),aG&&(aG.connected||aG.link)&&(0,b.jsx)("div",{className:"mt-4",children:(0,b.jsx)(ao,{app:{id:ay.id,name:ay.name},view:aG,suggestion:aG.link?null:(Q=ay.name,Z=aG,(af=(0,F.J)(Q,Z.repos))?{...af,fullName:Z.repos.find(a=>a.id===af.repoId).fullName}:null),owner:"owner"===au.role,canAct:aw,now:av})}),"owner"===au.role&&aR&&(0,b.jsx)("div",{className:"mt-4",children:(0,b.jsx)(aR,{appId:ay.id})}),aK&&(aK.length>0||aT)&&(0,b.jsx)("div",{className:"mt-4",children:(0,b.jsx)(k.f,{items:aK,canDismiss:aw,showSubject:!1,hideWhenEmpty:!0,notes:aT})})]}),(0,b.jsx)(t.TabsContent,{value:"metrics",keepMounted:!0,children:(0,b.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,b.jsxs)("div",{className:"grid grid-cols-1 gap-4 min-[1001px]:grid-cols-3",children:[(0,b.jsx)(h.N,{title:"Response time",meta:(0,b.jsxs)(b.Fragment,{children:["24 h · ms",(0,b.jsx)(n.Src,{kind:"own"})]}),children:(0,b.jsx)(f.t,{values:az.response,second:az.median,ticks:(r=az.first,G=az.sizeMs,ar=r+(J=az.response.length)*G,aB.filter(a=>a.at.getTime()>=r&&a.at.getTime()<ar).map(a=>{let b;return{x:Math.round(Math.min((a.at.getTime()-r)/G,J-1)/Math.max(1,J-1)*4e3)/10,title:`${"error"===(b=a.state)?"Deploy failed":"building"===b?"Deploying":"Deployed"} ${(0,O._)(a.sha)} \xb7 ${(0,K.U)(a.at)}`}})),width:400,height:120,fluid:!0,tone:"err"===aN.state?"err":"accent",label:"Response time p95 and p50 in 30-minute steps, last 24 hours, with production deploys"})}),(0,b.jsx)(h.N,{title:"Page views",meta:(0,b.jsxs)(b.Fragment,{children:["24 h",(0,b.jsx)(n.Src,{kind:"api"})]}),children:(0,b.jsx)(am,{pv:ay.pageViews,note:ay.pageViewsNote,now:av})}),(0,b.jsx)(h.N,{title:"5xx responses",meta:(0,b.jsxs)(b.Fragment,{children:["24 h",(0,b.jsx)(n.Src,{kind:"own"})]}),children:(0,b.jsx)(f.t,{values:az.errors,width:400,height:120,fluid:!0,tone:"err",label:"5xx responses in 30-minute steps, last 24 hours"})})]}),(0,b.jsx)("p",{className:"text-[12.5px] text-ink-soft",children:"Vercel's request and error metrics need a paid plan, so response time and 5xx come from our own checks and stored logs. Page views come from Vercel Web Analytics (free on Hobby up to 50k events a month), read every 30 minutes."}),(0,b.jsx)(h.N,{title:"Uptime",flush:!0,meta:(0,b.jsx)("span",{className:"text-ink-faint",children:"A dark notch marks a day with a production deploy"}),children:0===ay.monitors.length?(0,b.jsx)(g.x,{}):(0,b.jsx)(p.PlainTable,{head:["Monitor","Last 90 days","Uptime"],rows:ay.monitors.map(a=>({key:a.id,state:a.state,text:a.path,row:(0,b.jsxs)("tr",{className:s.C,children:[(0,b.jsx)("td",{className:(0,M.f)(s.z,aj),children:a.path}),(0,b.jsx)("td",{className:s.z,children:(0,b.jsx)(f.n,{bars:(0,$.h)(ay.days.get(a.id),av,$.F,function(a){let b=new Map;for(let c of[...a].sort((a,b)=>a.at.getTime()-b.at.getTime())){let a=(0,K.x)(c.at),d=`${(0,O._)(c.sha)}${"error"===c.state?" (failed)":""}`;b.set(a,[...b.get(a)??[],d])}return new Map([...b].map(([a,b])=>[a,b.join(", ")]))}(aB))})}),(0,b.jsx)("td",{className:(0,M.f)(s.z,aj),children:(0,O.C)((0,$.Y)((0,$.w)(ay.days.get(a.id),av,$.I)))})]})}))})})]})}),(0,b.jsx)(t.TabsContent,{value:"deployments",keepMounted:!0,children:(0,b.jsx)(h.N,{flush:!0,children:0===aA.length?(0,b.jsx)(g.y,{}):(0,b.jsx)(p.PlainTable,{head:aa.G,rows:(0,aa.C)(aA,{canAct:aw,now:av})})})}),"viewer"!==au.role&&(0,b.jsx)(t.TabsContent,{value:"logs",children:(0,b.jsx)(h.N,{flush:!0,children:(0,b.jsx)(ab.LogViewer,{mode:"live",apps:[],appId:ay.id,initial:[],vercelUrl:aM})})})]})]})}function am({pv:a,note:c,now:d}){return a?a.enabled?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("p",{className:"mb-2 flex flex-wrap items-baseline gap-x-2 gap-y-0.5",children:[(0,b.jsx)("span",{className:"text-[22px] font-semibold tracking-[-0.02em]",children:a.total.toLocaleString("en-US")}),(0,b.jsxs)("span",{className:"text-[12.5px] text-ink-soft",children:[1===a.total?"view":"views"," · ",null===a.visitors?"—":a.visitors.toLocaleString("en-US")," ",1===a.visitors?"visitor":"visitors"]}),(0,Q.Z)(a.readAt,d)&&(0,b.jsxs)("span",{className:"ml-auto text-[12px] text-ink-faint",children:["Read ",(0,K.$)(a.readAt,d)]})]}),(0,b.jsx)(f.k,{hours:a.hours,height:80,label:`Page views per hour, last 24 hours: ${a.total} views from ${a.visitors??"an unknown number of"} visitors`})]}):(0,b.jsxs)("div",{className:"flex min-h-[120px] flex-col gap-1.5 text-[12.5px] text-ink-soft",children:[(0,b.jsx)("p",{className:"text-[13px] text-ink",children:"Web Analytics is off for this project."}),(0,b.jsxs)("ol",{className:"list-decimal space-y-1 pl-4",children:[(0,b.jsx)("li",{children:"Enable Web Analytics in the Vercel project (Analytics tab)."}),(0,b.jsxs)("li",{children:["Add ",(0,b.jsx)("code",{className:"font-mono text-[12px] text-ink",children:"<Analytics />"})," from ",(0,b.jsx)("code",{className:"font-mono text-[12px] text-ink",children:"@vercel/analytics"})," to the app's root layout and redeploy."]})]}),(0,b.jsx)("p",{className:"mt-auto text-ink-faint",children:"Free on Hobby up to 50k events a month."})]}):(0,b.jsx)("p",{className:"grid h-[120px] place-items-center text-center text-[12.5px] text-ink-soft",children:c??"Reading page views…"})}function an({app:a,security:c,canAct:d,now:e,eol:f}){let g=(0,Z.g)(c);return(0,b.jsxs)(h.N,{title:"Security",meta:(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(n.Src,{kind:"own"}),d&&(0,b.jsx)(ag.SecurityCheckButton,{appId:a.id,appName:a.name})]}),flush:!0,children:[(0,b.jsxs)("div",{className:"px-[18px] pb-4 pt-2",children:[(0,b.jsxs)("dl",{className:ai,children:[(0,b.jsx)("dt",{children:"Next.js"}),(0,b.jsx)("dd",{children:c?.version?(0,b.jsx)("span",{className:aj,children:c.version}):c?.status==="unknown"?(0,b.jsxs)(b.Fragment,{children:["— ",(0,b.jsx)("span",{className:"text-ink-faint",children:c.reason})]}):"—"}),(0,b.jsxs)("dt",{children:["End of life ",(0,b.jsx)(n.Src,{kind:"api",children:"endoflife.date"})]}),(0,b.jsx)("dd",{children:(0,b.jsx)(ap,{version:c?.version??null,eol:f,now:e})}),(0,b.jsx)("dt",{children:"Checked"}),(0,b.jsx)("dd",{children:c?(0,K.$)(c.checkedAt,e):"—"})]}),g&&(0,b.jsxs)("p",{className:(0,M.f)("mt-3 flex items-start gap-1.5","ok"!==g.state&&"text-ink-soft"),children:[("ok"===g.state||"warn"===g.state)&&(0,b.jsx)(o.Z,{state:g.state}),(0,b.jsx)("span",{children:g.text})]})]}),(0,Z.X)(c)&&(0,b.jsx)(p.PlainTable,{head:["ID","Severity","Summary","Fix"],rows:c.findings.map(a=>({key:a.id,state:a.severity,text:[a.id,a.cve,a.summary].join(" "),row:(0,b.jsxs)("tr",{className:s.C,children:[(0,b.jsxs)("td",{className:s.z,children:[(0,b.jsx)("a",{href:`https://osv.dev/vulnerability/${encodeURIComponent(a.id)}`,target:"_blank",rel:"noopener",className:aj,children:a.id}),a.cve&&(0,b.jsx)("div",{className:(0,M.f)(aj,"mt-0.5 text-xs text-ink-faint"),children:a.cve})]}),(0,b.jsx)("td",{className:s.z,children:(0,b.jsx)(m.s,{severity:a.severity})}),(0,b.jsx)("td",{className:(0,M.f)(s.z,s.M),children:a.summary||(0,b.jsx)("span",{className:"text-ink-faint",children:"No summary"})}),(0,b.jsx)("td",{className:(0,M.f)(s.z,aj),children:a.fixed?`Fixed in ${a.fixed}`:(0,b.jsx)("span",{className:"text-ink-faint",children:"No fix yet"})})]})}))})]})}function ao({app:a,view:d,suggestion:e,owner:f,canAct:g,now:i}){let k=d.link?.repo??null,l=k?(0,G.N)(k.actions,k.defaultBranch):null,m=!k?.actions||"none"in k.actions?null:k.actions;return(0,b.jsx)(h.N,{title:"Repository",meta:(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(n.Src,{kind:"api",children:"GitHub"}),k&&g&&d.connected&&(0,b.jsx)(af.RefreshActionsButton,{appId:a.id})]}),children:k?(0,b.jsxs)("dl",{className:ai,children:[(0,b.jsx)("dt",{children:"Repository"}),(0,b.jsxs)("dd",{children:[(0,b.jsx)(r.f,{href:k.htmlUrl??`https://github.com/${k.fullName}`,target:"_blank",rel:"noopener",className:aj,children:(0,b.jsx)(j.Masked,{kind:"repo",real:k.fullName})}),(0,b.jsxs)("span",{className:"text-ink-faint",children:[" · ",k.private?"private":"public",k.archived?" · archived":"",k.goneAt?" · no longer shared with the token":""]}),f&&d.connected&&(0,b.jsxs)(b.Fragment,{children:[" ",(0,b.jsx)(af.RepoDialog,{app:a,options:d.options,current:k.id,suggested:null,label:"Change"})]})]}),(0,b.jsx)("dt",{children:"Linked"}),(0,b.jsx)("dd",{className:"text-ink-soft",children:(0,G.z)(d.link.source)}),(0,b.jsx)("dt",{children:"Default branch"}),(0,b.jsx)("dd",{className:aj,children:k.defaultBranch??"—"}),(0,b.jsx)("dt",{children:"Last push"}),(0,b.jsx)("dd",{children:k.pushedAt?(0,K.$)(k.pushedAt,i):"—"}),(0,b.jsx)("dt",{children:"GitHub Actions"}),(0,b.jsxs)("dd",{children:[(0,b.jsx)(o.F,{state:l.state,children:l.label}),m&&(0,b.jsxs)("span",{className:"text-ink-soft",children:[" · ",m.name??"workflow",m.runNumber?` #${m.runNumber}`:"",m.sha?(0,b.jsxs)(b.Fragment,{children:[" · ",(0,b.jsx)("span",{className:aj,children:(0,O._)(m.sha)})]}):null,m.at?` \xb7 ${(0,K.$)(new Date(m.at),i)}`:""]}),m?.url&&(0,Y.f)()&&(0,b.jsxs)(b.Fragment,{children:[" · ",(0,b.jsxs)("a",{href:m.url,target:"_blank",rel:"noopener",children:["Open run ",(0,b.jsx)(c.f,{size:13,"aria-hidden":!0,className:"inline align-[-2px]"})]})]}),k.actionsCheckedAt&&(0,b.jsxs)("span",{className:"block text-[12px] text-ink-faint",children:["Read ",(0,K.$)(k.actionsCheckedAt,i)]})]})]}):(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2 text-ink-soft",children:[e?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("span",{children:["Suggested: ",(0,b.jsx)("span",{className:aj,children:(0,b.jsx)(j.Masked,{kind:"repo",real:e.fullName})})," (",(0,G._)(e.why),")."]}),f&&(0,b.jsx)(af.ConfirmRepo,{appId:a.id,repoId:e.repoId,fullName:e.fullName})]}):(0,b.jsxs)("span",{children:["No repository linked. ",d.options.length?"None matches the app's name.":"Sync GitHub on Connections to list your repositories."]}),f&&d.options.length>0&&(0,b.jsx)(af.RepoDialog,{app:a,options:d.options,current:null,suggested:e?.repoId??null,label:"Choose…"})]})})}function ap({version:a,eol:c,now:d}){let e=(0,J.e)(a,c,d);return"unknown"===e.state?(0,b.jsx)("span",{className:"text-ink-faint",children:e.text}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(o.F,{state:e.state,children:e.text}),e.note&&(0,b.jsxs)("span",{className:"text-ink-faint",children:[" · ",e.note]})]})}a.s(["default",0,al,"maxDuration",0,60],252650)},228056,a=>{var b=a.i(211857);let c=(0,b.registerClientReference)(function(){throw Error("Attempted to call ConfirmRepo() from the server but ConfirmRepo 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)/apps/[id]/repo-dialog.tsx","ConfirmRepo"),d=(0,b.registerClientReference)(function(){throw Error("Attempted to call RefreshActionsButton() from the server but RefreshActionsButton 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)/apps/[id]/repo-dialog.tsx","RefreshActionsButton"),e=(0,b.registerClientReference)(function(){throw Error("Attempted to call RepoDialog() from the server but RepoDialog 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)/apps/[id]/repo-dialog.tsx","RepoDialog");a.s(["ConfirmRepo",0,c,"RefreshActionsButton",0,d,"RepoDialog",0,e])},881868,a=>{var b=a.i(228056);a.n(b)},300400,a=>{let b=(0,a.i(211857).registerClientReference)(function(){throw Error("Attempted to call SecurityCheckButton() from the server but SecurityCheckButton 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)/apps/[id]/security-check-button.tsx","SecurityCheckButton");a.s(["SecurityCheckButton",0,b])},991813,a=>{var b=a.i(300400);a.n(b)},340514,a=>{let b=(0,a.i(211857).registerClientReference)(function(){throw Error("Attempted to call WhyStatus() from the server but WhyStatus 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)/apps/[id]/why-status.tsx","WhyStatus");a.s(["WhyStatus",0,b])},143821,a=>{var b=a.i(340514);a.n(b)},492324,a=>{let b=(0,a.i(211857).registerClientReference)(function(){throw Error("Attempted to call RowMenu() from the server but RowMenu 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/row-menu.tsx","RowMenu");a.s(["RowMenu",0,b])},715513,a=>{var b=a.i(492324);a.n(b)}],102158,function(a){a.n(a.i(252650))}];
1
+ module.exports=[[868358,a=>{var b=a.i(211857);let c=(0,b.registerClientReference)(function(){throw Error("Attempted to call AppActions() from the server but AppActions 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)/apps/[id]/app-actions.tsx","AppActions"),d=(0,b.registerClientReference)(function(){throw Error("Attempted to call PromoteStaged() from the server but PromoteStaged 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)/apps/[id]/app-actions.tsx","PromoteStaged");a.s(["AppActions",0,c,"PromoteStaged",0,d])},537728,a=>{var b=a.i(868358);a.n(b)},199364,a=>{let b=(0,a.i(211857).registerClientReference)(function(){throw Error("Attempted to call LinkDialog() from the server but LinkDialog 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)/apps/[id]/link-dialog.tsx","LinkDialog");a.s(["LinkDialog",0,b])},466627,a=>{var b=a.i(199364);a.n(b)},252650,a=>{var b=a.i(907997),c=a.i(906974),d=a.i(395936);a.i(570396);var e=a.i(673727),f=a.i(252302),g=a.i(649247),h=a.i(803681),i=a.i(685865),j=a.i(701702),k=a.i(513553),l=a.i(154756),m=a.i(293167),n=a.i(954296),o=a.i(686251),p=a.i(605826),q=a.i(715513),r=a.i(751993),s=a.i(791444),t=a.i(473083),u=a.i(109307),v=a.i(534908),w=a.i(875016),x=a.i(840784),y=a.i(532620),z=a.i(858806),A=a.i(513701),B=a.i(930270),C=a.i(396667),D=a.i(944571),E=a.i(30184),F=a.i(565255),G=a.i(751263),H=a.i(27522),I=a.i(683439),J=a.i(960186),K=a.i(558418),L=a.i(245710),M=a.i(240387),N=a.i(139138),O=a.i(657582),P=a.i(469762),Q=a.i(556987),R=a.i(631107),S=a.i(505237),T=a.i(570845);function U({data:a,link:d}){return(0,b.jsxs)(b.Fragment,{children:[a.lines.map(a=>(0,b.jsxs)("div",{className:"former"===a.tag?"text-ink-faint":void 0,children:[d&&"former"!==a.tag?(0,b.jsxs)("a",{href:`https://${a.name}`,target:"_blank",rel:"noreferrer",children:[(0,b.jsx)(j.MaskedText,{text:a.name,inLink:!0})," ",(0,b.jsx)(c.f,{size:14,"aria-hidden":!0,className:"inline align-[-2px]"})]}):(0,b.jsx)(j.MaskedText,{text:a.name}),a.tag&&(0,b.jsxs)(b.Fragment,{children:[" ",(0,b.jsx)(h.E,{children:"redirect"===a.tag&&a.target?(0,b.jsxs)(b.Fragment,{children:["→ ",(0,b.jsx)(j.MaskedText,{text:a.target})]}):a.tag})]})]},a.name)),a.more>0&&(0,b.jsxs)("div",{className:"text-ink-faint",children:["+",a.more," more"]})]})}let V={github:"https://github.com/",gitlab:"https://gitlab.com/",bitbucket:"https://bitbucket.org/"},W=encodeURIComponent;function X(a){return"supabase_project"===a.kind?{label:`Supabase \xb7 ${a.name}`,href:`https://supabase.com/dashboard/project/${W(a.externalId)}`}:"neon_project"===a.kind?{label:`Neon \xb7 ${a.name}`,href:`https://console.neon.tech/app/projects/${W(a.externalId)}`}:"firestore"===a.kind?{label:`Firebase \xb7 ${a.name}`,href:`https://console.firebase.google.com/project/${W(a.externalId)}/overview`}:null}var Y=a.i(679594),Z=a.i(863858),$=a.i(182357),_=a.i(968715),aa=a.i(228173),ab=a.i(768183),ac=a.i(393260),ad=a.i(537728),ae=a.i(718064),af=a.i(466627),ag=a.i(881868),ah=a.i(991813),ai=a.i(143821);let aj="grid grid-cols-[170px_minmax(0,1fr)] gap-x-4 gap-y-2.5 max-[720px]:grid-cols-1 max-[720px]:gap-y-1 [&_dd]:min-w-0 [&_dd]:[overflow-wrap:anywhere] [&_dt]:text-ink-soft",ak="font-mono text-[12.5px]",al=["details","metrics","deployments","logs"];async function am({params:a,searchParams:c}){var m,r,H,K,R,$;let ag,ah,aq,ar,as,[{id:at},au]=await Promise.all([a,c]),av=await (0,u.I)();(0,I.f)(at)||(0,e.notFound)();let aw=new Date,ax=(0,S.z)(av.role),ay=(0,w.T)(aw,at).catch(()=>null),[az,aA,aB,aC,aD,aE,aF,aG,aH,aI,aJ]=await Promise.all([(0,x.Z)(at,aw),(0,A.P)(at,aw),(0,z.K)({appId:at}),(0,A.M)(at,new Date(aw.getTime()-864e5*_.F)),(0,E.P)(),(0,y.p)(),ax?(0,y.S)():Promise.resolve([]),(0,y.e)(),(0,D.c)(at).catch(()=>null),(0,B.j)(at).catch(()=>null),(0,C.I)()]);az||(0,e.notFound)();let aK=await ay,aL=aK&&aK.map(a=>(0,Q.d)(a,aG)),aM=(0,Z.f)(),aN="viewer"!==av.role&&aM?(0,Y.M)(az.teamSlug,az.name):null,aO=(0,S.k)(az),aP=(0,M.f)({...az,database:az.database?{id:az.database.id,kind:az.database.kind,name:(0,Q.X)(aG,az.database.id)}:null},aw),{WhyAiSlot:aQ,AiNotesSlot:aR,DevNotesSlot:aS}=v.extensions,aT="owner"===av.role&&aQ?(0,b.jsx)(aQ,{appId:az.id}):null,aU="owner"===av.role&&aR?(0,b.jsx)(aR,{appId:az.id}):null,aV=az.monitors.length>0&&az.monitors.every(a=>a.ownerPaused),aW=aM?`https://${az.domain}`:null,aX=(0,O.h)(aB),aY=a=>{let b=a?aB.find(b=>b.externalId===a):void 0;return b?{id:b.externalId,sha:(0,P._)(b.commitSha).replace("—","")}:null},aZ=aY(aX.stagedId),a$=(0,G.g)(az.productionSource,az.productionBranch,aw),a_=al.find(a=>a===au.tab)??"details",a0="logs"===a_&&"viewer"===av.role?"details":a_,a1=aE.find(a=>a.appId===az.id&&a.zoneName),a2=aW?(m={teamSlug:az.teamSlug,projectName:az.name,repo:az.repo,repoType:az.repoType,siteUrl:aW,dbs:az.database?[{...az.database,name:(0,Q.X)(aG,az.database.id)}]:[],zone:a1?{accountId:a1.cfAccountId,name:a1.zoneName}:null},ah=[],m.teamSlug&&ah.push({label:"Vercel project",href:`https://vercel.com/${W(m.teamSlug)}/${W(m.projectName)}`}),(aq=m.repoType?V[m.repoType]:void 0)&&m.repo&&ah.push({label:"Git repository",href:`${aq}${m.repo.split("/").map(W).join("/")}`}),ah.push({label:"Live site",href:m.siteUrl}),(ar=[...m.dbs.map(X).filter(a=>null!==a),...m.zone?.accountId?[{label:`Cloudflare \xb7 ${m.zone.name}`,href:`https://dash.cloudflare.com/${W(m.zone.accountId)}/${W(m.zone.name)}`}]:[]]).length?[...ah,"---",...ar]:ah):[];return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(i.AutoRefresh,{at:aw.getTime()}),(0,b.jsx)(h.L,{crumbs:[{label:"Applications",href:"/apps"},{label:az.name}],badge:(0,b.jsx)(l.g,{kind:"app"}),title:az.name,actions:(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(ai.WhyStatus,{state:aO.state,label:aO.label,problems:aP,nowMs:aw.getTime(),aiSlot:aT}),a2.length>0&&(0,b.jsx)(q.RowMenu,{button:!0,label:"Open in",items:a2.map(a=>"---"===a?a:{label:a.label,href:a.href})}),ax&&(0,b.jsx)(ad.AppActions,{app:{id:az.id,name:az.name,siteUrl:aW,paused:aV,monitorCount:az.monitors.length},owner:"owner"===av.role,current:aY(aX.currentId),previous:aY(aX.previousId),rolledBack:null!==aZ})]})}),aZ&&(0,b.jsx)("div",{className:"mb-4",children:(0,b.jsx)(h.M,{tone:"warning",title:"Rolled back: new pushes don't go live until you promote one.",action:ax?(0,b.jsx)(ad.PromoteStaged,{app:{id:az.id,name:az.name},staged:aZ}):void 0})}),(0,b.jsxs)(t.Tabs,{defaultValue:a0,className:"gap-4",children:[(0,b.jsxs)(t.TabsList,{variant:"line",children:[(0,b.jsx)(t.TabsTrigger,{value:"details",children:"Details"}),(0,b.jsx)(t.TabsTrigger,{value:"metrics",children:"Metrics"}),(0,b.jsx)(t.TabsTrigger,{value:"deployments",children:"Deployments"}),"viewer"!==av.role&&(0,b.jsx)(t.TabsTrigger,{value:"logs",children:"Logs"})]}),(0,b.jsxs)(t.TabsContent,{value:"details",children:[(0,b.jsxs)("div",{className:"grid grid-cols-1 gap-4 min-[1001px]:grid-cols-2",children:[(0,b.jsx)(h.N,{title:"Details",meta:(0,b.jsx)(n.Src,{kind:"api"}),children:(0,b.jsxs)("dl",{className:aj,children:[(0,b.jsx)("dt",{children:"Name"}),(0,b.jsx)("dd",{children:(0,b.jsx)(j.Masked,{kind:"app",real:az.name})}),(0,b.jsx)("dt",{children:"Domains"}),(0,b.jsx)("dd",{children:(0,b.jsx)(U,{data:az.domainLines,link:aM})}),(0,b.jsx)("dt",{children:"Framework"}),(0,b.jsx)("dd",{children:az.framework??"—"}),(0,b.jsx)("dt",{children:"Function region"}),(0,b.jsx)("dd",{className:(0,N.f)(ak,!az.functionRegions.length&&"text-ink-faint"),children:az.functionRegions.join(", ")||"—"}),(0,b.jsx)("dt",{children:"Production branch"}),(0,b.jsx)("dd",{className:ak,children:az.productionBranch??"—"}),a$&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("dt",{children:"Production built from"}),(0,b.jsxs)("dd",{children:[(0,b.jsx)("span",{className:ak,children:a$.text}),a$.warning&&(0,b.jsx)("span",{className:"ml-2 rounded border border-warn-icon/40 bg-warn-soft px-1.5 py-px text-[11.5px] text-warn",title:a$.warning,children:"Update PRs need your approval"})]})]}),(0,b.jsx)("dt",{children:"Repository"}),(0,b.jsx)("dd",{className:(0,N.f)(ak,!az.repo&&"text-ink-faint"),children:az.repo?(0,b.jsx)(j.Masked,{kind:"repo",real:az.repo}):"—"}),(0,b.jsx)("dt",{children:"Created"}),(0,b.jsx)("dd",{children:az.createdAt?(0,P.H)(az.createdAt):"—"})]})}),(0,b.jsx)(h.N,{title:"Status",children:(0,b.jsxs)("dl",{className:aj,children:[(0,b.jsx)("dt",{children:"Status"}),(0,b.jsx)("dd",{children:(0,b.jsx)(ai.WhyStatus,{state:aO.state,label:aO.label,problems:aP,nowMs:aw.getTime(),aiSlot:aT})}),(0,b.jsx)("dt",{children:"Database"}),(0,b.jsxs)("dd",{children:[az.database?(0,b.jsx)(aa.y,{db:az.database}):(0,b.jsx)("span",{className:"text-ink-faint",children:"None"}),ax&&(0,b.jsxs)(b.Fragment,{children:[" ",(0,b.jsx)(af.LinkDialog,{app:{id:az.id,name:az.name},options:aF,current:az.database?.id??null,suggested:(0,J.U)(az.name,aF)})]})]}),(0,b.jsx)("dt",{children:"Uptime 30 days"}),(0,b.jsx)("dd",{className:ak,children:(0,P.C)(az.uptime30)}),(0,b.jsx)("dt",{children:"Response 24 h"}),(0,b.jsxs)("dd",{className:ak,children:["p50 ",(0,P.p)(az.response.p50)," · p95 ",(0,P.p)(az.response.p95)]}),(0,b.jsx)("dt",{children:"Last deploy"}),(0,b.jsx)("dd",{children:az.lastDeploy?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{className:ak,children:(0,P._)(az.lastDeploy.commitSha)})," · ",(0,P.$)(az.lastDeploy,aw)]}):"—"}),(0,b.jsx)("dt",{children:"Monitors"}),(0,b.jsxs)("dd",{children:[0===az.monitors.length?(0,b.jsx)("span",{className:"text-ink-faint",children:"None"}):az.monitors.map(a=>{let c=(0,S.M)({...a,appGone:az.gone}),e=("err"===c.state||"warn"===c.state)&&!a.maintUntil,f=(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(o.Z,{state:c.state}),(0,b.jsxs)("span",{className:"sr-only",children:[c.label,": "]}),(0,b.jsx)("span",{className:ak,children:a.path})]});return e?(0,b.jsx)(d.default,{href:"/uptime",title:`${c.label}. See why on Uptime`,className:"mr-2.5 inline-flex items-center gap-1.5",children:f},a.id):(0,b.jsx)("span",{title:c.label,className:"mr-2.5 inline-flex items-center gap-1.5",children:f},a.id)}),az.monitors.filter(a=>a.move&&!az.gone).map(a=>(0,b.jsx)("div",{className:"mt-1",children:(0,b.jsx)(T.DomainMoved,{monitorId:a.id,from:a.move.from,to:a.move.to,canAct:ax})},`move-${a.id}`))]})]})})]}),(0,b.jsx)("div",{className:"mt-4",children:(0,b.jsx)(ao,{app:{id:az.id,name:az.name},security:az.security,canAct:ax&&!az.gone,now:aw,eol:aD})}),aI&&aH&&(aH.connected||aH.link)&&(0,b.jsx)("div",{className:"mt-4",children:(0,b.jsx)(ae.f,{app:{id:az.id,name:az.name},view:aI,canAct:ax&&!az.gone,owner:"owner"===av.role,now:aw,devopsOff:aJ.has("devops")})}),aH&&(aH.connected||aH.link)&&(0,b.jsx)("div",{className:"mt-4",children:(0,b.jsx)(ap,{app:{id:az.id,name:az.name},view:aH,suggestion:aH.link?null:(R=az.name,$=aH,(ag=(0,F.J)(R,$.repos))?{...ag,fullName:$.repos.find(a=>a.id===ag.repoId).fullName}:null),owner:"owner"===av.role,canAct:ax,now:aw})}),"owner"===av.role&&aS&&(0,b.jsx)("div",{className:"mt-4",children:(0,b.jsx)(aS,{appId:az.id})}),aL&&(aL.length>0||aU)&&(0,b.jsx)("div",{className:"mt-4",children:(0,b.jsx)(k.f,{items:aL,canDismiss:ax,showSubject:!1,hideWhenEmpty:!0,notes:aU})})]}),(0,b.jsx)(t.TabsContent,{value:"metrics",keepMounted:!0,children:(0,b.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,b.jsxs)("div",{className:"grid grid-cols-1 gap-4 min-[1001px]:grid-cols-3",children:[(0,b.jsx)(h.N,{title:"Response time",meta:(0,b.jsxs)(b.Fragment,{children:["24 h · ms",(0,b.jsx)(n.Src,{kind:"own"})]}),children:(0,b.jsx)(f.t,{values:aA.response,second:aA.median,ticks:(r=aA.first,H=aA.sizeMs,as=r+(K=aA.response.length)*H,aC.filter(a=>a.at.getTime()>=r&&a.at.getTime()<as).map(a=>{let b;return{x:Math.round(Math.min((a.at.getTime()-r)/H,K-1)/Math.max(1,K-1)*4e3)/10,title:`${"error"===(b=a.state)?"Deploy failed":"building"===b?"Deploying":"Deployed"} ${(0,P._)(a.sha)} \xb7 ${(0,L.U)(a.at)}`}})),width:400,height:120,fluid:!0,tone:"err"===aO.state?"err":"accent",label:"Response time p95 and p50 in 30-minute steps, last 24 hours, with production deploys"})}),(0,b.jsx)(h.N,{title:"Page views",meta:(0,b.jsxs)(b.Fragment,{children:["24 h",(0,b.jsx)(n.Src,{kind:"api"})]}),children:(0,b.jsx)(an,{pv:az.pageViews,note:az.pageViewsNote,now:aw})}),(0,b.jsx)(h.N,{title:"5xx responses",meta:(0,b.jsxs)(b.Fragment,{children:["24 h",(0,b.jsx)(n.Src,{kind:"own"})]}),children:(0,b.jsx)(f.t,{values:aA.errors,width:400,height:120,fluid:!0,tone:"err",label:"5xx responses in 30-minute steps, last 24 hours"})})]}),(0,b.jsx)("p",{className:"text-[12.5px] text-ink-soft",children:"Vercel's request and error metrics need a paid plan, so response time and 5xx come from our own checks and stored logs. Page views come from Vercel Web Analytics (free on Hobby up to 50k events a month), read every 30 minutes."}),(0,b.jsx)(h.N,{title:"Uptime",flush:!0,meta:(0,b.jsx)("span",{className:"text-ink-faint",children:"A dark notch marks a day with a production deploy"}),children:0===az.monitors.length?(0,b.jsx)(g.x,{}):(0,b.jsx)(p.PlainTable,{head:["Monitor","Last 90 days","Uptime"],rows:az.monitors.map(a=>({key:a.id,state:a.state,text:a.path,row:(0,b.jsxs)("tr",{className:s.C,children:[(0,b.jsx)("td",{className:(0,N.f)(s.z,ak),children:a.path}),(0,b.jsx)("td",{className:s.z,children:(0,b.jsx)(f.n,{bars:(0,_.h)(az.days.get(a.id),aw,_.F,function(a){let b=new Map;for(let c of[...a].sort((a,b)=>a.at.getTime()-b.at.getTime())){let a=(0,L.x)(c.at),d=`${(0,P._)(c.sha)}${"error"===c.state?" (failed)":""}`;b.set(a,[...b.get(a)??[],d])}return new Map([...b].map(([a,b])=>[a,b.join(", ")]))}(aC))})}),(0,b.jsx)("td",{className:(0,N.f)(s.z,ak),children:(0,P.C)((0,_.Y)((0,_.w)(az.days.get(a.id),aw,_.I)))})]})}))})})]})}),(0,b.jsx)(t.TabsContent,{value:"deployments",keepMounted:!0,children:(0,b.jsx)(h.N,{flush:!0,children:0===aB.length?(0,b.jsx)(g.y,{}):(0,b.jsx)(p.PlainTable,{head:ab.G,rows:(0,ab.C)(aB,{canAct:ax,now:aw})})})}),"viewer"!==av.role&&(0,b.jsx)(t.TabsContent,{value:"logs",children:(0,b.jsx)(h.N,{flush:!0,children:(0,b.jsx)(ac.LogViewer,{mode:"live",apps:[],appId:az.id,initial:[],vercelUrl:aN})})})]})]})}function an({pv:a,note:c,now:d}){return a?a.enabled?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("p",{className:"mb-2 flex flex-wrap items-baseline gap-x-2 gap-y-0.5",children:[(0,b.jsx)("span",{className:"text-[22px] font-semibold tracking-[-0.02em]",children:a.total.toLocaleString("en-US")}),(0,b.jsxs)("span",{className:"text-[12.5px] text-ink-soft",children:[1===a.total?"view":"views"," · ",null===a.visitors?"—":a.visitors.toLocaleString("en-US")," ",1===a.visitors?"visitor":"visitors"]}),(0,R.Z)(a.readAt,d)&&(0,b.jsxs)("span",{className:"ml-auto text-[12px] text-ink-faint",children:["Read ",(0,L.$)(a.readAt,d)]})]}),(0,b.jsx)(f.k,{hours:a.hours,height:80,label:`Page views per hour, last 24 hours: ${a.total} views from ${a.visitors??"an unknown number of"} visitors`})]}):(0,b.jsxs)("div",{className:"flex min-h-[120px] flex-col gap-1.5 text-[12.5px] text-ink-soft",children:[(0,b.jsx)("p",{className:"text-[13px] text-ink",children:"Web Analytics is off for this project."}),(0,b.jsxs)("ol",{className:"list-decimal space-y-1 pl-4",children:[(0,b.jsx)("li",{children:"Enable Web Analytics in the Vercel project (Analytics tab)."}),(0,b.jsxs)("li",{children:["Add ",(0,b.jsx)("code",{className:"font-mono text-[12px] text-ink",children:"<Analytics />"})," from ",(0,b.jsx)("code",{className:"font-mono text-[12px] text-ink",children:"@vercel/analytics"})," to the app's root layout and redeploy."]})]}),(0,b.jsx)("p",{className:"mt-auto text-ink-faint",children:"Free on Hobby up to 50k events a month."})]}):(0,b.jsx)("p",{className:"grid h-[120px] place-items-center text-center text-[12.5px] text-ink-soft",children:c??"Reading page views…"})}function ao({app:a,security:c,canAct:d,now:e,eol:f}){let g=(0,$.g)(c);return(0,b.jsxs)(h.N,{title:"Security",meta:(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(n.Src,{kind:"own"}),d&&(0,b.jsx)(ah.SecurityCheckButton,{appId:a.id,appName:a.name})]}),flush:!0,children:[(0,b.jsxs)("div",{className:"px-[18px] pb-4 pt-2",children:[(0,b.jsxs)("dl",{className:aj,children:[(0,b.jsx)("dt",{children:"Next.js"}),(0,b.jsx)("dd",{children:c?.version?(0,b.jsx)("span",{className:ak,children:c.version}):c?.status==="unknown"?(0,b.jsxs)(b.Fragment,{children:["— ",(0,b.jsx)("span",{className:"text-ink-faint",children:c.reason})]}):"—"}),(0,b.jsxs)("dt",{children:["End of life ",(0,b.jsx)(n.Src,{kind:"api",children:"endoflife.date"})]}),(0,b.jsx)("dd",{children:(0,b.jsx)(aq,{version:c?.version??null,eol:f,now:e})}),(0,b.jsx)("dt",{children:"Checked"}),(0,b.jsx)("dd",{children:c?(0,L.$)(c.checkedAt,e):"—"})]}),g&&(0,b.jsxs)("p",{className:(0,N.f)("mt-3 flex items-start gap-1.5","ok"!==g.state&&"text-ink-soft"),children:[("ok"===g.state||"warn"===g.state)&&(0,b.jsx)(o.Z,{state:g.state}),(0,b.jsx)("span",{children:g.text})]})]}),(0,$.X)(c)&&(0,b.jsx)(p.PlainTable,{head:["ID","Severity","Summary","Fix"],rows:c.findings.map(a=>({key:a.id,state:a.severity,text:[a.id,a.cve,a.summary].join(" "),row:(0,b.jsxs)("tr",{className:s.C,children:[(0,b.jsxs)("td",{className:s.z,children:[(0,b.jsx)("a",{href:`https://osv.dev/vulnerability/${encodeURIComponent(a.id)}`,target:"_blank",rel:"noopener",className:ak,children:a.id}),a.cve&&(0,b.jsx)("div",{className:(0,N.f)(ak,"mt-0.5 text-xs text-ink-faint"),children:a.cve})]}),(0,b.jsx)("td",{className:s.z,children:(0,b.jsx)(m.s,{severity:a.severity})}),(0,b.jsx)("td",{className:(0,N.f)(s.z,s.M),children:a.summary||(0,b.jsx)("span",{className:"text-ink-faint",children:"No summary"})}),(0,b.jsx)("td",{className:(0,N.f)(s.z,ak),children:a.fixed?`Fixed in ${a.fixed}`:(0,b.jsx)("span",{className:"text-ink-faint",children:"No fix yet"})})]})}))})]})}function ap({app:a,view:d,suggestion:e,owner:f,canAct:g,now:i}){let k=d.link?.repo??null,l=k?(0,H.N)(k.actions,k.defaultBranch):null,m=!k?.actions||"none"in k.actions?null:k.actions;return(0,b.jsx)(h.N,{title:"Repository",meta:(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(n.Src,{kind:"api",children:"GitHub"}),k&&g&&d.connected&&(0,b.jsx)(ag.RefreshActionsButton,{appId:a.id})]}),children:k?(0,b.jsxs)("dl",{className:aj,children:[(0,b.jsx)("dt",{children:"Repository"}),(0,b.jsxs)("dd",{children:[(0,b.jsx)(r.f,{href:k.htmlUrl??`https://github.com/${k.fullName}`,target:"_blank",rel:"noopener",className:ak,children:(0,b.jsx)(j.Masked,{kind:"repo",real:k.fullName})}),(0,b.jsxs)("span",{className:"text-ink-faint",children:[" · ",k.private?"private":"public",k.archived?" · archived":"",k.goneAt?" · no longer shared with the token":""]}),f&&d.connected&&(0,b.jsxs)(b.Fragment,{children:[" ",(0,b.jsx)(ag.RepoDialog,{app:a,options:d.options,current:k.id,suggested:null,label:"Change"})]})]}),(0,b.jsx)("dt",{children:"Linked"}),(0,b.jsx)("dd",{className:"text-ink-soft",children:(0,H.z)(d.link.source)}),(0,b.jsx)("dt",{children:"Default branch"}),(0,b.jsx)("dd",{className:ak,children:k.defaultBranch??"—"}),(0,b.jsx)("dt",{children:"Last push"}),(0,b.jsx)("dd",{children:k.pushedAt?(0,L.$)(k.pushedAt,i):"—"}),(0,b.jsx)("dt",{children:"GitHub Actions"}),(0,b.jsxs)("dd",{children:[(0,b.jsx)(o.F,{state:l.state,children:l.label}),m&&(0,b.jsxs)("span",{className:"text-ink-soft",children:[" · ",m.name??"workflow",m.runNumber?` #${m.runNumber}`:"",m.sha?(0,b.jsxs)(b.Fragment,{children:[" · ",(0,b.jsx)("span",{className:ak,children:(0,P._)(m.sha)})]}):null,m.at?` \xb7 ${(0,L.$)(new Date(m.at),i)}`:""]}),m?.url&&(0,Z.f)()&&(0,b.jsxs)(b.Fragment,{children:[" · ",(0,b.jsxs)("a",{href:m.url,target:"_blank",rel:"noopener",children:["Open run ",(0,b.jsx)(c.f,{size:13,"aria-hidden":!0,className:"inline align-[-2px]"})]})]}),k.actionsCheckedAt&&(0,b.jsxs)("span",{className:"block text-[12px] text-ink-faint",children:["Read ",(0,L.$)(k.actionsCheckedAt,i)]})]})]}):(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2 text-ink-soft",children:[e?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("span",{children:["Suggested: ",(0,b.jsx)("span",{className:ak,children:(0,b.jsx)(j.Masked,{kind:"repo",real:e.fullName})})," (",(0,H._)(e.why),")."]}),f&&(0,b.jsx)(ag.ConfirmRepo,{appId:a.id,repoId:e.repoId,fullName:e.fullName})]}):(0,b.jsxs)("span",{children:["No repository linked. ",d.options.length?"None matches the app's name.":"Sync GitHub on Connections to list your repositories."]}),f&&d.options.length>0&&(0,b.jsx)(ag.RepoDialog,{app:a,options:d.options,current:null,suggested:e?.repoId??null,label:"Choose…"})]})})}function aq({version:a,eol:c,now:d}){let e=(0,K.e)(a,c,d);return"unknown"===e.state?(0,b.jsx)("span",{className:"text-ink-faint",children:e.text}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(o.F,{state:e.state,children:e.text}),e.note&&(0,b.jsxs)("span",{className:"text-ink-faint",children:[" · ",e.note]})]})}a.s(["default",0,am,"maxDuration",0,60],252650)},228056,a=>{var b=a.i(211857);let c=(0,b.registerClientReference)(function(){throw Error("Attempted to call ConfirmRepo() from the server but ConfirmRepo 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)/apps/[id]/repo-dialog.tsx","ConfirmRepo"),d=(0,b.registerClientReference)(function(){throw Error("Attempted to call RefreshActionsButton() from the server but RefreshActionsButton 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)/apps/[id]/repo-dialog.tsx","RefreshActionsButton"),e=(0,b.registerClientReference)(function(){throw Error("Attempted to call RepoDialog() from the server but RepoDialog 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)/apps/[id]/repo-dialog.tsx","RepoDialog");a.s(["ConfirmRepo",0,c,"RefreshActionsButton",0,d,"RepoDialog",0,e])},881868,a=>{var b=a.i(228056);a.n(b)},300400,a=>{let b=(0,a.i(211857).registerClientReference)(function(){throw Error("Attempted to call SecurityCheckButton() from the server but SecurityCheckButton 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)/apps/[id]/security-check-button.tsx","SecurityCheckButton");a.s(["SecurityCheckButton",0,b])},991813,a=>{var b=a.i(300400);a.n(b)},340514,a=>{let b=(0,a.i(211857).registerClientReference)(function(){throw Error("Attempted to call WhyStatus() from the server but WhyStatus 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)/apps/[id]/why-status.tsx","WhyStatus");a.s(["WhyStatus",0,b])},143821,a=>{var b=a.i(340514);a.n(b)},492324,a=>{let b=(0,a.i(211857).registerClientReference)(function(){throw Error("Attempted to call RowMenu() from the server but RowMenu 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/row-menu.tsx","RowMenu");a.s(["RowMenu",0,b])},715513,a=>{var b=a.i(492324);a.n(b)}],102158,function(a){a.n(a.i(252650))}];
2
2
 
3
3
  //# sourceMappingURL=src_1koc8y1nfdlw3._.js.map