watchbell 1.6.1 → 1.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (981) hide show
  1. package/package.json +1 -1
  2. package/server/.next/BUILD_ID +1 -1
  3. package/server/.next/app-path-routes-manifest.json +3 -0
  4. package/server/.next/build-manifest.json +14 -3
  5. package/server/.next/prerender-manifest.json +3 -3
  6. package/server/.next/required-server-files.json +1 -1
  7. package/server/.next/routes-manifest.json +20 -0
  8. package/server/.next/server/app/(console)/(private)/ai/agents/page/server-reference-manifest.json +13 -13
  9. package/server/.next/server/app/(console)/(private)/ai/agents/page.js +71 -69
  10. package/server/.next/server/app/(console)/(private)/ai/agents/page.js.nft.json +1 -1
  11. package/server/.next/server/app/(console)/(private)/ai/agents/page_client-reference-manifest.js +1 -1
  12. package/server/.next/server/app/(console)/(private)/ai/ask/page/server-reference-manifest.json +12 -12
  13. package/server/.next/server/app/(console)/(private)/ai/ask/page.js +71 -69
  14. package/server/.next/server/app/(console)/(private)/ai/ask/page.js.nft.json +1 -1
  15. package/server/.next/server/app/(console)/(private)/ai/ask/page_client-reference-manifest.js +1 -1
  16. package/server/.next/server/app/(console)/(private)/ai/connect/page/server-reference-manifest.json +11 -11
  17. package/server/.next/server/app/(console)/(private)/ai/connect/page.js +71 -69
  18. package/server/.next/server/app/(console)/(private)/ai/connect/page.js.nft.json +1 -1
  19. package/server/.next/server/app/(console)/(private)/ai/connect/page_client-reference-manifest.js +1 -1
  20. package/server/.next/server/app/(console)/(private)/ai/keys/page/server-reference-manifest.json +14 -14
  21. package/server/.next/server/app/(console)/(private)/ai/keys/page.js +71 -69
  22. package/server/.next/server/app/(console)/(private)/ai/keys/page.js.nft.json +1 -1
  23. package/server/.next/server/app/(console)/(private)/ai/keys/page_client-reference-manifest.js +1 -1
  24. package/server/.next/server/app/(console)/(private)/ai/logs/page/server-reference-manifest.json +12 -12
  25. package/server/.next/server/app/(console)/(private)/ai/logs/page.js +71 -69
  26. package/server/.next/server/app/(console)/(private)/ai/logs/page.js.nft.json +1 -1
  27. package/server/.next/server/app/(console)/(private)/ai/logs/page_client-reference-manifest.js +1 -1
  28. package/server/.next/server/app/(console)/(private)/ai/models/page/server-reference-manifest.json +21 -21
  29. package/server/.next/server/app/(console)/(private)/ai/models/page.js +71 -69
  30. package/server/.next/server/app/(console)/(private)/ai/models/page.js.nft.json +1 -1
  31. package/server/.next/server/app/(console)/(private)/ai/models/page_client-reference-manifest.js +1 -1
  32. package/server/.next/server/app/(console)/(private)/ai/page/server-reference-manifest.json +11 -11
  33. package/server/.next/server/app/(console)/(private)/ai/page.js +71 -69
  34. package/server/.next/server/app/(console)/(private)/ai/page.js.nft.json +1 -1
  35. package/server/.next/server/app/(console)/(private)/ai/page_client-reference-manifest.js +1 -1
  36. package/server/.next/server/app/(console)/(private)/ai/playground/page/server-reference-manifest.json +14 -14
  37. package/server/.next/server/app/(console)/(private)/ai/playground/page.js +71 -69
  38. package/server/.next/server/app/(console)/(private)/ai/playground/page.js.nft.json +1 -1
  39. package/server/.next/server/app/(console)/(private)/ai/playground/page_client-reference-manifest.js +1 -1
  40. package/server/.next/server/app/(console)/(private)/ai/providers/page/server-reference-manifest.json +17 -17
  41. package/server/.next/server/app/(console)/(private)/ai/providers/page.js +71 -69
  42. package/server/.next/server/app/(console)/(private)/ai/providers/page.js.nft.json +1 -1
  43. package/server/.next/server/app/(console)/(private)/ai/providers/page_client-reference-manifest.js +1 -1
  44. package/server/.next/server/app/(console)/(private)/ai/quota/page/server-reference-manifest.json +12 -12
  45. package/server/.next/server/app/(console)/(private)/ai/quota/page.js +71 -69
  46. package/server/.next/server/app/(console)/(private)/ai/quota/page.js.nft.json +1 -1
  47. package/server/.next/server/app/(console)/(private)/ai/quota/page_client-reference-manifest.js +1 -1
  48. package/server/.next/server/app/(console)/(private)/ai/usage/page/server-reference-manifest.json +12 -12
  49. package/server/.next/server/app/(console)/(private)/ai/usage/page.js +71 -69
  50. package/server/.next/server/app/(console)/(private)/ai/usage/page.js.nft.json +1 -1
  51. package/server/.next/server/app/(console)/(private)/ai/usage/page_client-reference-manifest.js +1 -1
  52. package/server/.next/server/app/(console)/(private)/api-docs/[[...op]]/page/server-reference-manifest.json +11 -11
  53. package/server/.next/server/app/(console)/(private)/api-docs/[[...op]]/page.js +71 -69
  54. package/server/.next/server/app/(console)/(private)/api-docs/[[...op]]/page.js.nft.json +1 -1
  55. package/server/.next/server/app/(console)/(private)/api-docs/[[...op]]/page_client-reference-manifest.js +1 -1
  56. package/server/.next/server/app/(console)/(private)/auto-actions/page/server-reference-manifest.json +12 -12
  57. package/server/.next/server/app/(console)/(private)/auto-actions/page.js +71 -69
  58. package/server/.next/server/app/(console)/(private)/auto-actions/page.js.nft.json +1 -1
  59. package/server/.next/server/app/(console)/(private)/auto-actions/page_client-reference-manifest.js +1 -1
  60. package/server/.next/server/app/(console)/alerts/page/server-reference-manifest.json +27 -27
  61. package/server/.next/server/app/(console)/alerts/page.js +71 -69
  62. package/server/.next/server/app/(console)/alerts/page.js.nft.json +1 -1
  63. package/server/.next/server/app/(console)/alerts/page_client-reference-manifest.js +1 -1
  64. package/server/.next/server/app/(console)/apps/[id]/page/server-reference-manifest.json +34 -34
  65. package/server/.next/server/app/(console)/apps/[id]/page.js +71 -69
  66. package/server/.next/server/app/(console)/apps/[id]/page.js.nft.json +1 -1
  67. package/server/.next/server/app/(console)/apps/[id]/page_client-reference-manifest.js +1 -1
  68. package/server/.next/server/app/(console)/apps/page/server-reference-manifest.json +14 -14
  69. package/server/.next/server/app/(console)/apps/page.js +71 -69
  70. package/server/.next/server/app/(console)/apps/page.js.nft.json +1 -1
  71. package/server/.next/server/app/(console)/apps/page_client-reference-manifest.js +1 -1
  72. package/server/.next/server/app/(console)/backups/page/server-reference-manifest.json +14 -14
  73. package/server/.next/server/app/(console)/backups/page.js +71 -69
  74. package/server/.next/server/app/(console)/backups/page.js.nft.json +1 -1
  75. package/server/.next/server/app/(console)/backups/page_client-reference-manifest.js +1 -1
  76. package/server/.next/server/app/(console)/catalog/page/server-reference-manifest.json +11 -11
  77. package/server/.next/server/app/(console)/catalog/page.js +71 -69
  78. package/server/.next/server/app/(console)/catalog/page.js.nft.json +1 -1
  79. package/server/.next/server/app/(console)/catalog/page_client-reference-manifest.js +1 -1
  80. package/server/.next/server/app/(console)/connections/page/server-reference-manifest.json +22 -22
  81. package/server/.next/server/app/(console)/connections/page.js +71 -69
  82. package/server/.next/server/app/(console)/connections/page.js.nft.json +1 -1
  83. package/server/.next/server/app/(console)/connections/page_client-reference-manifest.js +1 -1
  84. package/server/.next/server/app/(console)/containers/page/server-reference-manifest.json +14 -14
  85. package/server/.next/server/app/(console)/containers/page.js +71 -69
  86. package/server/.next/server/app/(console)/containers/page.js.nft.json +1 -1
  87. package/server/.next/server/app/(console)/containers/page_client-reference-manifest.js +1 -1
  88. package/server/.next/server/app/(console)/d1/page/server-reference-manifest.json +11 -11
  89. package/server/.next/server/app/(console)/d1/page.js +71 -69
  90. package/server/.next/server/app/(console)/d1/page.js.nft.json +1 -1
  91. package/server/.next/server/app/(console)/d1/page_client-reference-manifest.js +1 -1
  92. package/server/.next/server/app/(console)/deploy/page/server-reference-manifest.json +11 -11
  93. package/server/.next/server/app/(console)/deploy/page.js +71 -69
  94. package/server/.next/server/app/(console)/deploy/page.js.nft.json +1 -1
  95. package/server/.next/server/app/(console)/deploy/page_client-reference-manifest.js +1 -1
  96. package/server/.next/server/app/(console)/deployments/page/server-reference-manifest.json +19 -19
  97. package/server/.next/server/app/(console)/deployments/page.js +71 -69
  98. package/server/.next/server/app/(console)/deployments/page.js.nft.json +1 -1
  99. package/server/.next/server/app/(console)/deployments/page_client-reference-manifest.js +1 -1
  100. package/server/.next/server/app/(console)/dns/page/server-reference-manifest.json +18 -18
  101. package/server/.next/server/app/(console)/dns/page.js +71 -69
  102. package/server/.next/server/app/(console)/dns/page.js.nft.json +1 -1
  103. package/server/.next/server/app/(console)/dns/page_client-reference-manifest.js +1 -1
  104. package/server/.next/server/app/(console)/domains/page/server-reference-manifest.json +13 -13
  105. package/server/.next/server/app/(console)/domains/page.js +71 -69
  106. package/server/.next/server/app/(console)/domains/page.js.nft.json +1 -1
  107. package/server/.next/server/app/(console)/domains/page_client-reference-manifest.js +1 -1
  108. package/server/.next/server/app/(console)/events/page/server-reference-manifest.json +11 -11
  109. package/server/.next/server/app/(console)/events/page.js +71 -69
  110. package/server/.next/server/app/(console)/events/page.js.nft.json +1 -1
  111. package/server/.next/server/app/(console)/events/page_client-reference-manifest.js +1 -1
  112. package/server/.next/server/app/(console)/firebase/page/server-reference-manifest.json +18 -18
  113. package/server/.next/server/app/(console)/firebase/page.js +71 -69
  114. package/server/.next/server/app/(console)/firebase/page.js.nft.json +1 -1
  115. package/server/.next/server/app/(console)/firebase/page_client-reference-manifest.js +1 -1
  116. package/server/.next/server/app/(console)/logs/page/server-reference-manifest.json +12 -12
  117. package/server/.next/server/app/(console)/logs/page.js +71 -69
  118. package/server/.next/server/app/(console)/logs/page.js.nft.json +1 -1
  119. package/server/.next/server/app/(console)/logs/page_client-reference-manifest.js +1 -1
  120. package/server/.next/server/app/(console)/manage/sections/page/server-reference-manifest.json +12 -12
  121. package/server/.next/server/app/(console)/manage/sections/page.js +71 -69
  122. package/server/.next/server/app/(console)/manage/sections/page.js.nft.json +1 -1
  123. package/server/.next/server/app/(console)/manage/sections/page_client-reference-manifest.js +1 -1
  124. package/server/.next/server/app/(console)/neon/page/server-reference-manifest.json +22 -22
  125. package/server/.next/server/app/(console)/neon/page.js +71 -69
  126. package/server/.next/server/app/(console)/neon/page.js.nft.json +1 -1
  127. package/server/.next/server/app/(console)/neon/page_client-reference-manifest.js +1 -1
  128. package/server/.next/server/app/(console)/os/page/server-reference-manifest.json +12 -12
  129. package/server/.next/server/app/(console)/os/page.js +71 -69
  130. package/server/.next/server/app/(console)/os/page.js.nft.json +1 -1
  131. package/server/.next/server/app/(console)/os/page_client-reference-manifest.js +1 -1
  132. package/server/.next/server/app/(console)/overview/page/server-reference-manifest.json +21 -21
  133. package/server/.next/server/app/(console)/overview/page.js +71 -69
  134. package/server/.next/server/app/(console)/overview/page.js.nft.json +1 -1
  135. package/server/.next/server/app/(console)/overview/page_client-reference-manifest.js +1 -1
  136. package/server/.next/server/app/(console)/reports/[id]/pdf/route/app-paths-manifest.json +3 -0
  137. package/server/.next/server/app/(console)/reports/[id]/pdf/route/build-manifest.json +12 -0
  138. package/server/.next/server/app/(console)/reports/[id]/pdf/route/server-reference-manifest.json +4 -0
  139. package/server/.next/server/app/(console)/reports/[id]/pdf/route.js +26 -0
  140. package/server/.next/server/app/(console)/reports/[id]/pdf/route.js.nft.json +1 -0
  141. package/server/.next/server/app/(console)/reports/[id]/pdf/route_client-reference-manifest.js +3 -0
  142. package/server/.next/server/app/(console)/reports/page/app-paths-manifest.json +3 -0
  143. package/server/.next/server/app/(console)/reports/page/build-manifest.json +22 -0
  144. package/server/.next/server/app/(console)/reports/page/next-font-manifest.json +11 -0
  145. package/server/.next/server/app/(console)/reports/page/react-loadable-manifest.json +1 -0
  146. package/server/.next/server/app/(console)/reports/page/server-reference-manifest.json +175 -0
  147. package/server/.next/server/app/(console)/reports/page.js +122 -0
  148. package/server/.next/server/app/(console)/reports/page.js.nft.json +1 -0
  149. package/server/.next/server/app/(console)/reports/page_client-reference-manifest.js +3 -0
  150. package/server/.next/server/app/(console)/repos/[id]/page/server-reference-manifest.json +12 -12
  151. package/server/.next/server/app/(console)/repos/[id]/page.js +71 -69
  152. package/server/.next/server/app/(console)/repos/[id]/page.js.nft.json +1 -1
  153. package/server/.next/server/app/(console)/repos/[id]/page_client-reference-manifest.js +1 -1
  154. package/server/.next/server/app/(console)/repos/page/server-reference-manifest.json +11 -11
  155. package/server/.next/server/app/(console)/repos/page.js +71 -69
  156. package/server/.next/server/app/(console)/repos/page.js.nft.json +1 -1
  157. package/server/.next/server/app/(console)/repos/page_client-reference-manifest.js +1 -1
  158. package/server/.next/server/app/(console)/settings/page/server-reference-manifest.json +62 -42
  159. package/server/.next/server/app/(console)/settings/page.js +74 -72
  160. package/server/.next/server/app/(console)/settings/page.js.nft.json +1 -1
  161. package/server/.next/server/app/(console)/settings/page_client-reference-manifest.js +1 -1
  162. package/server/.next/server/app/(console)/sql/page/server-reference-manifest.json +18 -18
  163. package/server/.next/server/app/(console)/sql/page.js +71 -69
  164. package/server/.next/server/app/(console)/sql/page.js.nft.json +1 -1
  165. package/server/.next/server/app/(console)/sql/page_client-reference-manifest.js +1 -1
  166. package/server/.next/server/app/(console)/status/page/server-reference-manifest.json +11 -11
  167. package/server/.next/server/app/(console)/status/page.js +71 -69
  168. package/server/.next/server/app/(console)/status/page.js.nft.json +1 -1
  169. package/server/.next/server/app/(console)/status/page_client-reference-manifest.js +1 -1
  170. package/server/.next/server/app/(console)/supabase/page/server-reference-manifest.json +32 -32
  171. package/server/.next/server/app/(console)/supabase/page.js +71 -69
  172. package/server/.next/server/app/(console)/supabase/page.js.nft.json +1 -1
  173. package/server/.next/server/app/(console)/supabase/page_client-reference-manifest.js +1 -1
  174. package/server/.next/server/app/(console)/topology/page/server-reference-manifest.json +11 -11
  175. package/server/.next/server/app/(console)/topology/page.js +71 -69
  176. package/server/.next/server/app/(console)/topology/page.js.nft.json +1 -1
  177. package/server/.next/server/app/(console)/topology/page_client-reference-manifest.js +1 -1
  178. package/server/.next/server/app/(console)/turso/page/server-reference-manifest.json +11 -11
  179. package/server/.next/server/app/(console)/turso/page.js +71 -69
  180. package/server/.next/server/app/(console)/turso/page.js.nft.json +1 -1
  181. package/server/.next/server/app/(console)/turso/page_client-reference-manifest.js +1 -1
  182. package/server/.next/server/app/(console)/upstash/page/server-reference-manifest.json +11 -11
  183. package/server/.next/server/app/(console)/upstash/page.js +71 -69
  184. package/server/.next/server/app/(console)/upstash/page.js.nft.json +1 -1
  185. package/server/.next/server/app/(console)/upstash/page_client-reference-manifest.js +1 -1
  186. package/server/.next/server/app/(console)/uptime/page/server-reference-manifest.json +25 -25
  187. package/server/.next/server/app/(console)/uptime/page.js +71 -69
  188. package/server/.next/server/app/(console)/uptime/page.js.nft.json +1 -1
  189. package/server/.next/server/app/(console)/uptime/page_client-reference-manifest.js +1 -1
  190. package/server/.next/server/app/(console)/welcome/page/server-reference-manifest.json +16 -16
  191. package/server/.next/server/app/(console)/welcome/page.js +71 -69
  192. package/server/.next/server/app/(console)/welcome/page.js.nft.json +1 -1
  193. package/server/.next/server/app/(console)/welcome/page_client-reference-manifest.js +1 -1
  194. package/server/.next/server/app/_global-error/page/server-reference-manifest.json +1 -1
  195. package/server/.next/server/app/_global-error/page.js +1 -1
  196. package/server/.next/server/app/_global-error/page.js.nft.json +1 -1
  197. package/server/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  198. package/server/.next/server/app/_global-error.html +1 -1
  199. package/server/.next/server/app/_global-error.rsc +3 -3
  200. package/server/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +2 -2
  201. package/server/.next/server/app/_global-error.segments/_full.segment.rsc +3 -3
  202. package/server/.next/server/app/_global-error.segments/_tree.segment.rsc +2 -2
  203. package/server/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  204. package/server/.next/server/app/_not-found/page.js.nft.json +1 -1
  205. package/server/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  206. package/server/.next/server/app/_not-found.html +1 -1
  207. package/server/.next/server/app/_not-found.rsc +4 -4
  208. package/server/.next/server/app/_not-found.segments/_full.segment.rsc +4 -4
  209. package/server/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +3 -3
  210. package/server/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  211. package/server/.next/server/app/account/password/page/server-reference-manifest.json +2 -2
  212. package/server/.next/server/app/account/password/page.js.nft.json +1 -1
  213. package/server/.next/server/app/account/password/page_client-reference-manifest.js +1 -1
  214. package/server/.next/server/app/api/collect/route/server-reference-manifest.json +8 -8
  215. package/server/.next/server/app/api/collect/route.js +91 -85
  216. package/server/.next/server/app/api/collect/route.js.nft.json +1 -1
  217. package/server/.next/server/app/api/daily/route/server-reference-manifest.json +8 -8
  218. package/server/.next/server/app/api/daily/route.js +92 -86
  219. package/server/.next/server/app/api/daily/route.js.nft.json +1 -1
  220. package/server/.next/server/app/api/health/route.js.nft.json +1 -1
  221. package/server/.next/server/app/api/ping/[...parts]/route.js +8 -7
  222. package/server/.next/server/app/api/ping/[...parts]/route.js.nft.json +1 -1
  223. package/server/.next/server/app/api/status/route.js +1 -1
  224. package/server/.next/server/app/api/status/route.js.nft.json +1 -1
  225. package/server/.next/server/app/api/telegram/webhook/route/server-reference-manifest.json +8 -8
  226. package/server/.next/server/app/api/telegram/webhook/route.js +84 -78
  227. package/server/.next/server/app/api/telegram/webhook/route.js.nft.json +1 -1
  228. package/server/.next/server/app/api/v1/[[...rest]]/route.js.nft.json +1 -1
  229. package/server/.next/server/app/api/v1/advice/route.js +26 -22
  230. package/server/.next/server/app/api/v1/advice/route.js.nft.json +1 -1
  231. package/server/.next/server/app/api/v1/ai/chat/completions/route.js +1 -1
  232. package/server/.next/server/app/api/v1/ai/chat/completions/route.js.nft.json +1 -1
  233. package/server/.next/server/app/api/v1/ai/models/route.js +1 -1
  234. package/server/.next/server/app/api/v1/ai/models/route.js.nft.json +1 -1
  235. package/server/.next/server/app/api/v1/ai/questions/[id]/route.js +1 -1
  236. package/server/.next/server/app/api/v1/ai/questions/[id]/route.js.nft.json +1 -1
  237. package/server/.next/server/app/api/v1/ai/questions/route.js +30 -26
  238. package/server/.next/server/app/api/v1/ai/questions/route.js.nft.json +1 -1
  239. package/server/.next/server/app/api/v1/mcp/route.js +28 -24
  240. package/server/.next/server/app/api/v1/mcp/route.js.nft.json +1 -1
  241. package/server/.next/server/app/api/v1/me/route.js +1 -1
  242. package/server/.next/server/app/api/v1/me/route.js.nft.json +1 -1
  243. package/server/.next/server/app/api/v1/openapi.json/route.js +1 -1
  244. package/server/.next/server/app/api/v1/openapi.json/route.js.nft.json +1 -1
  245. package/server/.next/server/app/api/v1/status/apps/[app]/route.js +29 -25
  246. package/server/.next/server/app/api/v1/status/apps/[app]/route.js.nft.json +1 -1
  247. package/server/.next/server/app/api/v1/status/route.js +29 -25
  248. package/server/.next/server/app/api/v1/status/route.js.nft.json +1 -1
  249. package/server/.next/server/app/api/watchdog/route.js +27 -21
  250. package/server/.next/server/app/api/watchdog/route.js.nft.json +1 -1
  251. package/server/.next/server/app/auth/confirm/route.js +1 -1
  252. package/server/.next/server/app/auth/confirm/route.js.nft.json +1 -1
  253. package/server/.next/server/app/auth/google/callback/route.js +16 -15
  254. package/server/.next/server/app/auth/google/callback/route.js.nft.json +1 -1
  255. package/server/.next/server/app/auth/google/create/callback/route.js +1 -1
  256. package/server/.next/server/app/auth/google/create/callback/route.js.nft.json +1 -1
  257. package/server/.next/server/app/auth/not-member/route.js +1 -1
  258. package/server/.next/server/app/auth/not-member/route.js.nft.json +1 -1
  259. package/server/.next/server/app/auth/session-ended/route.js +1 -1
  260. package/server/.next/server/app/auth/session-ended/route.js.nft.json +1 -1
  261. package/server/.next/server/app/brand-icon/route/app-paths-manifest.json +3 -0
  262. package/server/.next/server/app/brand-icon/route/build-manifest.json +12 -0
  263. package/server/.next/server/app/brand-icon/route/server-reference-manifest.json +4 -0
  264. package/server/.next/server/app/brand-icon/route.js +15 -0
  265. package/server/.next/server/app/brand-icon/route.js.nft.json +1 -0
  266. package/server/.next/server/app/brand-icon/route_client-reference-manifest.js +3 -0
  267. package/server/.next/server/app/icon.svg/route.js.nft.json +1 -1
  268. package/server/.next/server/app/invite/page/server-reference-manifest.json +2 -2
  269. package/server/.next/server/app/invite/page.js.nft.json +1 -1
  270. package/server/.next/server/app/invite/page_client-reference-manifest.js +1 -1
  271. package/server/.next/server/app/mfa/page/server-reference-manifest.json +2 -2
  272. package/server/.next/server/app/mfa/page.js +34 -31
  273. package/server/.next/server/app/mfa/page.js.nft.json +1 -1
  274. package/server/.next/server/app/mfa/page_client-reference-manifest.js +1 -1
  275. package/server/.next/server/app/mfa/setup/page/server-reference-manifest.json +3 -3
  276. package/server/.next/server/app/mfa/setup/page.js +34 -31
  277. package/server/.next/server/app/mfa/setup/page.js.nft.json +1 -1
  278. package/server/.next/server/app/mfa/setup/page_client-reference-manifest.js +1 -1
  279. package/server/.next/server/app/page/server-reference-manifest.json +1 -1
  280. package/server/.next/server/app/page.js.nft.json +1 -1
  281. package/server/.next/server/app/page_client-reference-manifest.js +1 -1
  282. package/server/.next/server/app/s/[slug]/badge/[file]/route.js +10 -8
  283. package/server/.next/server/app/s/[slug]/badge/[file]/route.js.nft.json +1 -1
  284. package/server/.next/server/app/s/[slug]/page/server-reference-manifest.json +1 -1
  285. package/server/.next/server/app/s/[slug]/page.js +10 -10
  286. package/server/.next/server/app/s/[slug]/page.js.nft.json +1 -1
  287. package/server/.next/server/app/s/[slug]/page_client-reference-manifest.js +1 -1
  288. package/server/.next/server/app/setup/page/server-reference-manifest.json +2 -2
  289. package/server/.next/server/app/setup/page.js +1 -1
  290. package/server/.next/server/app/setup/page.js.nft.json +1 -1
  291. package/server/.next/server/app/setup/page_client-reference-manifest.js +1 -1
  292. package/server/.next/server/app/signin/page/server-reference-manifest.json +3 -3
  293. package/server/.next/server/app/signin/page.js +40 -37
  294. package/server/.next/server/app/signin/page.js.nft.json +1 -1
  295. package/server/.next/server/app/signin/page_client-reference-manifest.js +1 -1
  296. package/server/.next/server/app-paths-manifest.json +3 -0
  297. package/server/.next/server/chunks/{[externals]__0n4j2emxdv20_._.js → [externals]__0ws552tlu2170._.js} +1 -1
  298. package/server/.next/server/chunks/{[externals]__1hwo1oo04do39._.js → [externals]__14rgrk9t-kxa1._.js} +1 -1
  299. package/server/.next/server/chunks/{[externals]__1k12utcf9tvqg._.js → [externals]__1pdwh-htbnox8._.js} +1 -1
  300. package/server/.next/server/chunks/[root-of-the-server]__0-amtx67pqi56._.js +3 -0
  301. package/server/.next/server/chunks/{[root-of-the-server]__1avuwg9wmyh48._.js → [root-of-the-server]__0-ytbad9hn7uc._.js} +1 -1
  302. package/server/.next/server/chunks/[root-of-the-server]__01dj-ln12bcmb._.js +1 -1
  303. package/server/.next/server/chunks/[root-of-the-server]__01nlh4ps9u-65._.js +3 -0
  304. package/server/.next/server/chunks/{[root-of-the-server]__09l9icaspfmoh._.js → [root-of-the-server]__01ur0kf75ampv._.js} +2 -2
  305. package/server/.next/server/chunks/{[root-of-the-server]__1tlivd99uri0t._.js → [root-of-the-server]__028m_6oqyqmyy._.js} +2 -2
  306. package/server/.next/server/chunks/[root-of-the-server]__02v25dn1cwxz6._.js +1 -1
  307. package/server/.next/server/chunks/{[root-of-the-server]__0vclan952l_ty._.js → [root-of-the-server]__02wzui3ksepqf._.js} +2 -2
  308. package/server/.next/server/chunks/[root-of-the-server]__0326wv5xmnp48._.js +3 -0
  309. package/server/.next/server/chunks/[root-of-the-server]__03276vwi4jgvk._.js +1 -1
  310. package/server/.next/server/chunks/{[root-of-the-server]__06kp2_zqpttyd._.js → [root-of-the-server]__03537tx7cun49._.js} +2 -2
  311. package/server/.next/server/chunks/{[root-of-the-server]__03589rgm1a3ks._.js → [root-of-the-server]__0400g-0wvq3uf._.js} +2 -2
  312. package/server/.next/server/chunks/{[root-of-the-server]__0at6fxe9efr-x._.js → [root-of-the-server]__04htuwoulmp21._.js} +1 -1
  313. package/server/.next/server/chunks/{[root-of-the-server]__06l038ifglbqy._.js → [root-of-the-server]__04ogdmf82__0g._.js} +1 -1
  314. package/server/.next/server/chunks/[root-of-the-server]__05qcc-0e8z1u8._.js +1 -1
  315. package/server/.next/server/chunks/{[root-of-the-server]__1xdi98xyay6bn._.js → [root-of-the-server]__05vm5cxqq2-pg._.js} +1 -1
  316. package/server/.next/server/chunks/{[root-of-the-server]__0a7moaa91ctod._.js → [root-of-the-server]__06bn4cfh-g8-d._.js} +2 -2
  317. package/server/.next/server/chunks/{[root-of-the-server]__0uz_r72zdnwdd._.js → [root-of-the-server]__06rlokvpk450w._.js} +2 -2
  318. package/server/.next/server/chunks/{[root-of-the-server]__0x5vp_8n6xvpw._.js → [root-of-the-server]__06ty1ktg427pm._.js} +2 -2
  319. package/server/.next/server/chunks/{[root-of-the-server]__20qirklw1sgj0._.js → [root-of-the-server]__076yrld-lo25r._.js} +2 -2
  320. package/server/.next/server/chunks/[root-of-the-server]__07eo--c90cju2._.js +1 -1
  321. package/server/.next/server/chunks/[root-of-the-server]__07u2g5ccvst94._.js +3 -0
  322. package/server/.next/server/chunks/{[root-of-the-server]__09yvavo991rdd._.js → [root-of-the-server]__081k4lp976vd7._.js} +2 -2
  323. package/server/.next/server/chunks/{[root-of-the-server]__00oxbw3nfl_kd._.js → [root-of-the-server]__08i6b8tzxads4._.js} +1 -1
  324. package/server/.next/server/chunks/{[root-of-the-server]__205cmd-k6g2kc._.js → [root-of-the-server]__096q5ufradttx._.js} +1 -1
  325. package/server/.next/server/chunks/{[root-of-the-server]__0myf9g_uv3bia._.js → [root-of-the-server]__09oipjf2ew_pn._.js} +2 -2
  326. package/server/.next/server/chunks/[root-of-the-server]__0_c_c1bv7sopk._.js +3 -0
  327. package/server/.next/server/chunks/{[root-of-the-server]__0ww7a-9fnx2rv._.js → [root-of-the-server]__0a34twsor45ml._.js} +1 -1
  328. package/server/.next/server/chunks/{[root-of-the-server]__09msxcjw3tlue._.js → [root-of-the-server]__0bjh2kw90a-m_._.js} +1 -1
  329. package/server/.next/server/chunks/[root-of-the-server]__0bxqqjjy9ckvm._.js +3 -0
  330. package/server/.next/server/chunks/{[root-of-the-server]__0ebkmgcs7v0c8._.js → [root-of-the-server]__0dahxh87cvyn2._.js} +2 -2
  331. package/server/.next/server/chunks/[root-of-the-server]__0dd4hulw1w-4i._.js +3 -0
  332. package/server/.next/server/chunks/{[root-of-the-server]__0uyc9w7f_r10u._.js → [root-of-the-server]__0dfkxg4ax2hqz._.js} +1 -1
  333. package/server/.next/server/chunks/[root-of-the-server]__0e3hcgbyb09-p._.js +3 -0
  334. package/server/.next/server/chunks/{[root-of-the-server]__0c_mpay_m5kbm._.js → [root-of-the-server]__0erdelc9_06nk._.js} +1 -1
  335. package/server/.next/server/chunks/{[root-of-the-server]__0s3b61ttgb9if._.js → [root-of-the-server]__0fk1609_5zg7g._.js} +2 -2
  336. package/server/.next/server/chunks/[root-of-the-server]__0fl1uspuemkzr._.js +3 -0
  337. package/server/.next/server/chunks/[root-of-the-server]__0gb4uz-gv3va0._.js +1 -1
  338. package/server/.next/server/chunks/[root-of-the-server]__0gqye-fi-f3zk._.js +1 -1
  339. package/server/.next/server/chunks/{[root-of-the-server]__1mbm_bvk1oat7._.js → [root-of-the-server]__0hm5-0_rh9r6m._.js} +2 -2
  340. package/server/.next/server/chunks/{[root-of-the-server]__10-v22hv1sxrv._.js → [root-of-the-server]__0hwm4j4o2v8nc._.js} +2 -2
  341. package/server/.next/server/chunks/{[root-of-the-server]__0vdm37x30hr6p._.js → [root-of-the-server]__0ieq7-dtcg06b._.js} +1 -1
  342. package/server/.next/server/chunks/{[root-of-the-server]__0r0zrp3s_n614._.js → [root-of-the-server]__0iicsi0n7tfa5._.js} +1 -1
  343. package/server/.next/server/chunks/[root-of-the-server]__0k73a-s2lcpoz._.js +3 -0
  344. package/server/.next/server/chunks/[root-of-the-server]__0kk-m8_ul4f4k._.js +1 -1
  345. package/server/.next/server/chunks/{[root-of-the-server]__1z1fgf8k8icw8._.js → [root-of-the-server]__0kzgu06ee59vd._.js} +2 -2
  346. package/server/.next/server/chunks/{[root-of-the-server]__0puji-hw0xtk7._.js → [root-of-the-server]__0mrbo2p5fy4ji._.js} +1 -1
  347. package/server/.next/server/chunks/{[root-of-the-server]__1r2ei065xk141._.js → [root-of-the-server]__0nkfi6x2c4c5p._.js} +1 -1
  348. package/server/.next/server/chunks/{[root-of-the-server]__0ruici82tzf0w._.js → [root-of-the-server]__0nw8jgr3bsi8b._.js} +2 -2
  349. package/server/.next/server/chunks/{[root-of-the-server]__10d4a34z0js-f._.js → [root-of-the-server]__0o4e39mvq8_el._.js} +1 -1
  350. package/server/.next/server/chunks/[root-of-the-server]__0o6q27cnw6-77._.js +1 -1
  351. package/server/.next/server/chunks/[root-of-the-server]__0opds07bp1fnb._.js +3 -0
  352. package/server/.next/server/chunks/{[root-of-the-server]__1tefe1f5835t_._.js → [root-of-the-server]__0pammm8f5qxtv._.js} +2 -2
  353. package/server/.next/server/chunks/{[root-of-the-server]__0ao4b2jjkcvo1._.js → [root-of-the-server]__0pfcnbr0br6li._.js} +1 -1
  354. package/server/.next/server/chunks/{[root-of-the-server]__04v42ls1mfjd2._.js → [root-of-the-server]__0pi9id-ywuq6g._.js} +2 -2
  355. package/server/.next/server/chunks/{[root-of-the-server]__0g0rd65zoitrb._.js → [root-of-the-server]__0s3zxs-_ayd-6._.js} +1 -1
  356. package/server/.next/server/chunks/{[root-of-the-server]__192br5y94wzhx._.js → [root-of-the-server]__0sgy49rgsxyvy._.js} +1 -1
  357. package/server/.next/server/chunks/{[root-of-the-server]__05b18nw2k-7-4._.js → [root-of-the-server]__0sp5xoed3-994._.js} +1 -1
  358. package/server/.next/server/chunks/[root-of-the-server]__0swji6flwxtbv._.js +3 -0
  359. package/server/.next/server/chunks/{[root-of-the-server]__0fii83nfm0bsk._.js → [root-of-the-server]__0tyilr06jn8nb._.js} +1 -1
  360. package/server/.next/server/chunks/[root-of-the-server]__0uss50b85q1j1._.js +3 -0
  361. package/server/.next/server/chunks/{[root-of-the-server]__0g3v-ty9-xstp._.js → [root-of-the-server]__0vco1v37du1ez._.js} +1 -1
  362. package/server/.next/server/chunks/[root-of-the-server]__0vg5zp6z094qr._.js +3 -0
  363. package/server/.next/server/chunks/{[root-of-the-server]__1ji_xmb_m6fam._.js → [root-of-the-server]__0vhq-__j8umfu._.js} +1 -1
  364. package/server/.next/server/chunks/[root-of-the-server]__0vp-x4ifpr3p9._.js +1 -1
  365. package/server/.next/server/chunks/{[root-of-the-server]__06zmu7jjyw1qw._.js → [root-of-the-server]__0w_hiz5nrm8-4._.js} +1 -1
  366. package/server/.next/server/chunks/{[root-of-the-server]__20056vw370xom._.js → [root-of-the-server]__0xd_bgjy5_tr5._.js} +1 -1
  367. package/server/.next/server/chunks/[root-of-the-server]__0xzl28izr2tiq._.js +3 -0
  368. package/server/.next/server/chunks/[root-of-the-server]__0xzreqng-t2g8._.js +3 -0
  369. package/server/.next/server/chunks/[root-of-the-server]__0yhki59n8zyjb._.js +1 -1
  370. package/server/.next/server/chunks/{[root-of-the-server]__0glhrm7zmrvi2._.js → [root-of-the-server]__0z9of310ruzug._.js} +2 -2
  371. package/server/.next/server/chunks/[root-of-the-server]__0zpo6n_av-p7a._.js +3 -0
  372. package/server/.next/server/chunks/{[root-of-the-server]__1hrcyozojb6ot._.js → [root-of-the-server]__0zs-wkvv1cs0i._.js} +1 -1
  373. package/server/.next/server/chunks/{[root-of-the-server]__1wcnj2xtesyd9._.js → [root-of-the-server]__0zu1odpvrptrt._.js} +1 -1
  374. package/server/.next/server/chunks/[root-of-the-server]__1-3u16rnk101p._.js +3 -0
  375. package/server/.next/server/chunks/[root-of-the-server]__1-pe9ipc3y6rn._.js +3 -0
  376. package/server/.next/server/chunks/[root-of-the-server]__1-tqm3jzny4zd._.js +3 -0
  377. package/server/.next/server/chunks/[root-of-the-server]__108g59p2fl8tw._.js +3 -0
  378. package/server/.next/server/chunks/{[root-of-the-server]__0tshehtsx7229._.js → [root-of-the-server]__11a8fxlpahjy2._.js} +1 -1
  379. package/server/.next/server/chunks/[root-of-the-server]__12_wmn5mkj9v7._.js +3 -0
  380. package/server/.next/server/chunks/{[root-of-the-server]__10ts7p_9fu3ge._.js → [root-of-the-server]__12bo9op0qkw9d._.js} +2 -2
  381. package/server/.next/server/chunks/[root-of-the-server]__12tontjm90s-j._.js +3 -0
  382. package/server/.next/server/chunks/[root-of-the-server]__13-qqkdecmwba._.js +3 -0
  383. package/server/.next/server/chunks/{[root-of-the-server]__19jalyhtntk8p._.js → [root-of-the-server]__135cn1pmljq9j._.js} +1 -1
  384. package/server/.next/server/chunks/{[root-of-the-server]__1iruoalu93dg7._.js → [root-of-the-server]__140ixflf83vxj._.js} +2 -2
  385. package/server/.next/server/chunks/[root-of-the-server]__1412kx9qb_j46._.js +3 -0
  386. package/server/.next/server/chunks/[root-of-the-server]__1426to_m4prqh._.js +1 -1
  387. package/server/.next/server/chunks/{[root-of-the-server]__1a563imf6ya2l._.js → [root-of-the-server]__14bynsn7eae8y._.js} +1 -1
  388. package/server/.next/server/chunks/[root-of-the-server]__152e1b97gc8hw._.js +3 -0
  389. package/server/.next/server/chunks/[root-of-the-server]__153lxhkj8-_vf._.js +3 -0
  390. package/server/.next/server/chunks/[root-of-the-server]__15tr3yx8k9lyt._.js +3 -0
  391. package/server/.next/server/chunks/[root-of-the-server]__16-0nul8mfe2m._.js +3 -0
  392. package/server/.next/server/chunks/{[root-of-the-server]__1ons16gam6qb7._.js → [root-of-the-server]__172vz80sdr5ny._.js} +2 -2
  393. package/server/.next/server/chunks/[root-of-the-server]__177l2p7kcj-16._.js +1 -1
  394. package/server/.next/server/chunks/{[root-of-the-server]__0vb1_m_h5hi0z._.js → [root-of-the-server]__17bz0jxsns742._.js} +2 -2
  395. package/server/.next/server/chunks/{[root-of-the-server]__14yq_wf4xemgd._.js → [root-of-the-server]__17jjm80vttqmq._.js} +2 -2
  396. package/server/.next/server/chunks/[root-of-the-server]__18eqxi2vwpdjm._.js +3 -0
  397. package/server/.next/server/chunks/[root-of-the-server]__194y_mcnn0zs3._.js +3 -0
  398. package/server/.next/server/chunks/[root-of-the-server]__1_iy7tzpesarf._.js +3 -0
  399. package/server/.next/server/chunks/[root-of-the-server]__1_vfu21n1zq17._.js +3 -0
  400. package/server/.next/server/chunks/[root-of-the-server]__1akvpmbiap6nf._.js +2 -2
  401. package/server/.next/server/chunks/[root-of-the-server]__1c78cu7kb9vkl._.js +1 -1
  402. package/server/.next/server/chunks/[root-of-the-server]__1cy1k8jbwoull._.js +3 -0
  403. package/server/.next/server/chunks/[root-of-the-server]__1d1zkp1q80t6q._.js +3 -0
  404. package/server/.next/server/chunks/{[root-of-the-server]__1z_l9mj3s_6tu._.js → [root-of-the-server]__1d4wmw2wohveb._.js} +1 -1
  405. package/server/.next/server/chunks/[root-of-the-server]__1dp_mz2p02ze6._.js +3 -0
  406. package/server/.next/server/chunks/{[root-of-the-server]__1ghx3ayy7tm73._.js → [root-of-the-server]__1eng6c6q52y-6._.js} +2 -2
  407. package/server/.next/server/chunks/{[root-of-the-server]__0eqrtvr3uqlqf._.js → [root-of-the-server]__1etg41llk7f09._.js} +1 -1
  408. package/server/.next/server/chunks/[root-of-the-server]__1f-rkijnm8me7._.js +3 -0
  409. package/server/.next/server/chunks/[root-of-the-server]__1fteaav9qn2kq._.js +3 -0
  410. package/server/.next/server/chunks/{[root-of-the-server]__0016p4j5uh74t._.js → [root-of-the-server]__1gfuhug61s-qy._.js} +2 -2
  411. package/server/.next/server/chunks/{[root-of-the-server]__19o-a03uklyrw._.js → [root-of-the-server]__1git7o20yf9nn._.js} +2 -2
  412. package/server/.next/server/chunks/[root-of-the-server]__1h496oc8wu4s6._.js +3 -0
  413. package/server/.next/server/chunks/[root-of-the-server]__1hertcbqi_w97._.js +3 -0
  414. package/server/.next/server/chunks/[root-of-the-server]__1io5zo7iam532._.js +1 -1
  415. package/server/.next/server/chunks/[root-of-the-server]__1j-nkcwy3w6sy._.js +3 -0
  416. package/server/.next/server/chunks/[root-of-the-server]__1jcr8cc_tlvfc._.js +3 -0
  417. package/server/.next/server/chunks/{[root-of-the-server]__0qlf-so9k6401._.js → [root-of-the-server]__1kr6f03r82mk6._.js} +1 -1
  418. package/server/.next/server/chunks/[root-of-the-server]__1l3uz57-1a35s._.js +3 -0
  419. package/server/.next/server/chunks/{[root-of-the-server]__0jpktq0f88rvz._.js → [root-of-the-server]__1l9pn8y-o6xyp._.js} +2 -2
  420. package/server/.next/server/chunks/[root-of-the-server]__1lp_rypkkdjp9._.js +3 -0
  421. package/server/.next/server/chunks/[root-of-the-server]__1m-z1ne4p7pi5._.js +3 -0
  422. package/server/.next/server/chunks/[root-of-the-server]__1ma2tpf6wh9p6._.js +3 -0
  423. package/server/.next/server/chunks/[root-of-the-server]__1nohrxjajgm5c._.js +3 -0
  424. package/server/.next/server/chunks/[root-of-the-server]__1o2km61kftkj1._.js +3 -0
  425. package/server/.next/server/chunks/[root-of-the-server]__1ozfk4_3lx1o7._.js +1 -1
  426. package/server/.next/server/chunks/[root-of-the-server]__1pn773t93gvn-._.js +3 -0
  427. package/server/.next/server/chunks/{[root-of-the-server]__0_vtp19_2frgj._.js → [root-of-the-server]__1pyc-ezfujjcp._.js} +1 -1
  428. package/server/.next/server/chunks/{[root-of-the-server]__1yxxfmyk3649a._.js → [root-of-the-server]__1pyhos8be90-4._.js} +1 -1
  429. package/server/.next/server/chunks/[root-of-the-server]__1q0h-x-7ob6cu._.js +3 -0
  430. package/server/.next/server/chunks/[root-of-the-server]__1q2e13halne9s._.js +3 -0
  431. package/server/.next/server/chunks/[root-of-the-server]__1q7xy_u4inf4h._.js +3 -0
  432. package/server/.next/server/chunks/[root-of-the-server]__1qtorf4s2dfeg._.js +3 -0
  433. package/server/.next/server/chunks/{[root-of-the-server]__20qdu-env7wgt._.js → [root-of-the-server]__1sm4p209f_yie._.js} +1 -1
  434. package/server/.next/server/chunks/{[root-of-the-server]__1cdt67d022uf1._.js → [root-of-the-server]__1ugnox9gcdhvm._.js} +2 -2
  435. package/server/.next/server/chunks/{[root-of-the-server]__1wbnule0tzwdu._.js → [root-of-the-server]__1uhgqik99k1y6._.js} +2 -2
  436. package/server/.next/server/chunks/[root-of-the-server]__1uq4f0bdphqs2._.js +3 -0
  437. package/server/.next/server/chunks/{[root-of-the-server]__02y9yjf7lp37-._.js → [root-of-the-server]__1usilhckla3wj._.js} +1 -1
  438. package/server/.next/server/chunks/[root-of-the-server]__1v_8mu8mt1n5i._.js +3 -0
  439. package/server/.next/server/chunks/[root-of-the-server]__1vtlx_63lj4tg._.js +3 -0
  440. package/server/.next/server/chunks/{[root-of-the-server]__090n04cg_br7j._.js → [root-of-the-server]__1vvg0ur3_7o0p._.js} +1 -1
  441. package/server/.next/server/chunks/{[root-of-the-server]__0vsafetdvsfhj._.js → [root-of-the-server]__1wjsjh-1i-sn6._.js} +1 -1
  442. package/server/.next/server/chunks/[root-of-the-server]__1wxj0f-l93gkh._.js +3 -0
  443. package/server/.next/server/chunks/[root-of-the-server]__1x4u0cdsl_81t._.js +3 -0
  444. package/server/.next/server/chunks/{[root-of-the-server]__0exruft64u1hg._.js → [root-of-the-server]__1x7en4waq21dd._.js} +1 -1
  445. package/server/.next/server/chunks/[root-of-the-server]__1xku6cma1a_kb._.js +3 -0
  446. package/server/.next/server/chunks/{[root-of-the-server]__0pi_camvun8ak._.js → [root-of-the-server]__1xnqsy7nud--q._.js} +2 -2
  447. package/server/.next/server/chunks/[root-of-the-server]__1xzg_370-w-6t._.js +3 -0
  448. package/server/.next/server/chunks/[root-of-the-server]__20dehd8e5-v9y._.js +1 -1
  449. package/server/.next/server/chunks/{[root-of-the-server]__1i841w7a3057h._.js → [root-of-the-server]__212_l7y-180xi._.js} +1 -1
  450. package/server/.next/server/chunks/{[root-of-the-server]__1vfvw1pmssxww._.js → [root-of-the-server]__217jp1b3psyq_._.js} +1 -1
  451. package/server/.next/server/chunks/_0-sqv2nbaba7h._.js +3 -0
  452. package/server/.next/server/chunks/_00t02v1a9nfr1._.js +3 -0
  453. package/server/.next/server/chunks/_01epotkqa90nv._.js +3 -0
  454. package/server/.next/server/chunks/_03wces6vk33l0._.js +3 -0
  455. package/server/.next/server/chunks/_05kxcc393c_0z._.js +3 -0
  456. package/server/.next/server/chunks/_08q7x7rdbiaql._.js +49 -0
  457. package/server/.next/server/chunks/_09iin0yvuppj0._.js +3 -0
  458. package/server/.next/server/chunks/_0apakqacgawy4._.js +3 -0
  459. package/server/.next/server/chunks/{_1t46m15axa4b4._.js → _0buibatfr6-k_._.js} +3 -3
  460. package/server/.next/server/chunks/_0d29nzne5jrwy._.js +49 -0
  461. package/server/.next/server/chunks/_0dq_vw-kky70h._.js +3 -0
  462. package/server/.next/server/chunks/{_0jiq3ns7681pv._.js → _0hekve2tk2eyv._.js} +3 -3
  463. package/server/.next/server/chunks/_0huryxihjw6tl._.js +49 -0
  464. package/server/.next/server/chunks/_0n-wbmmvp4omq._.js +1 -1
  465. package/server/.next/server/chunks/_0ou2tylxx1ltw._.js +10 -0
  466. package/server/.next/server/chunks/_0rqil_klxfz3j._.js +3 -0
  467. package/server/.next/server/chunks/{_0ehqx1pkh20px._.js → _0s_2fgaxby9fy._.js} +3 -3
  468. package/server/.next/server/chunks/_0z4b07-oa6ms9._.js +3 -0
  469. package/server/.next/server/chunks/_10mj3f1wis1ld._.js +3 -0
  470. package/server/.next/server/chunks/_139_9h76gakgh._.js +3 -0
  471. package/server/.next/server/chunks/_14jiq00zwwqdl._.js +3 -0
  472. package/server/.next/server/chunks/_15f0c7f46zkh3._.js +3 -0
  473. package/server/.next/server/chunks/_17u84tg9ibxp9._.js +3 -0
  474. package/server/.next/server/chunks/_1e4rch26scbhq._.js +49 -0
  475. package/server/.next/server/chunks/_1g-4oov0uynv-._.js +3 -0
  476. package/server/.next/server/chunks/_1iugpfonxri3e._.js +3 -0
  477. package/server/.next/server/chunks/_1iunyzyr-tfdj._.js +31 -0
  478. package/server/.next/server/chunks/_1jor4_sz1x8mt._.js +3 -0
  479. package/server/.next/server/chunks/_1m3zrm9-rc926._.js +3 -0
  480. package/server/.next/server/chunks/_1mwwg18ni-phb._.js +3 -0
  481. package/server/.next/server/chunks/{_0zj8nj1f2phf5._.js → _1n4labwyv5msc._.js} +1 -1
  482. package/server/.next/server/chunks/_1ohb_bmawpjlz._.js +10 -0
  483. package/server/.next/server/chunks/_1qcal07c71omr._.js +3 -0
  484. package/server/.next/server/chunks/_20ounk93z_b6h._.js +3 -0
  485. package/server/.next/server/chunks/_next-internal_server_app_(console)_reports_[id]_pdf_route_actions_1z8w14-7mvvj9.js +3 -0
  486. package/server/.next/server/chunks/_next-internal_server_app_brand-icon_route_actions_1d7gd59j_572y.js +3 -0
  487. package/server/.next/server/chunks/{node_modules_drizzle-orm_0p2-_xghnn-0j._.js → node_modules_drizzle-orm_0ac-0bknpndrl._.js} +2 -2
  488. package/server/.next/server/chunks/{node_modules_drizzle-orm_0pxdj1u-i8py9._.js → node_modules_drizzle-orm_0k-yqdh9heao6._.js} +2 -2
  489. package/server/.next/server/chunks/{node_modules_drizzle-orm_15o96osca_ezd._.js → node_modules_drizzle-orm_0k7__h1lfq5ug._.js} +2 -2
  490. package/server/.next/server/chunks/{node_modules_drizzle-orm_1hvomr2ymp14o._.js → node_modules_drizzle-orm_0pv-kejmwhhk-._.js} +2 -2
  491. package/server/.next/server/chunks/node_modules_drizzle-orm_1emqi6ca48q0m._.js +4 -0
  492. package/server/.next/server/chunks/node_modules_drizzle-orm_entity_1-0q2stnw2ab8.js +3 -3
  493. package/server/.next/server/chunks/src_0--qn984h6czu._.js +1 -1
  494. package/server/.next/server/chunks/src_0-s0huszb29pj._.js +3 -0
  495. package/server/.next/server/chunks/src_0071b0w5aco6_._.js +3 -0
  496. package/server/.next/server/chunks/src_05jrvcsgaq5ek._.js +1 -1
  497. package/server/.next/server/chunks/src_06tyytf_c_hlu._.js +1 -1
  498. package/server/.next/server/chunks/src_0_9n02bmhtk4z._.js +1 -1
  499. package/server/.next/server/chunks/src_0c-owt8q0lyj3._.js +1 -1
  500. package/server/.next/server/chunks/src_0dxbyz8iemj_5._.js +1 -1
  501. package/server/.next/server/chunks/src_0qnh_ndxnflja._.js +3 -0
  502. package/server/.next/server/chunks/src_0r3j66vbc5g4f._.js +3 -0
  503. package/server/.next/server/chunks/src_0u2zbz77uh__q._.js +1 -1
  504. package/server/.next/server/chunks/src_0ud2mqnh4emxz._.js +1 -1
  505. package/server/.next/server/chunks/src_1-dy6ie3_ezvm._.js +3 -0
  506. package/server/.next/server/chunks/src_10vyvp9vy_69h._.js +1 -1
  507. package/server/.next/server/chunks/src_13ij0feyzy7me._.js +3 -0
  508. package/server/.next/server/chunks/{src_05be6wzefzaky._.js → src_14vh1kj98t0xu._.js} +2 -2
  509. package/server/.next/server/chunks/src_1_s_jyur8tzy3._.js +3 -0
  510. package/server/.next/server/chunks/src_1a5yibsjcy1ga._.js +1 -1
  511. package/server/.next/server/chunks/src_1cvp6ubs-3z6l._.js +1 -1
  512. package/server/.next/server/chunks/src_1d-0nhc193soh._.js +3 -0
  513. package/server/.next/server/chunks/src_1d1ewqrujfp03._.js +3 -0
  514. package/server/.next/server/chunks/src_1dio7z4_so000._.js +3 -0
  515. package/server/.next/server/chunks/src_1hpbxjbqlnuob._.js +3 -0
  516. package/server/.next/server/chunks/src_1il7wg_qjxny7._.js +1 -1
  517. package/server/.next/server/chunks/src_1tux0n9_5b1kr._.js +1 -1
  518. package/server/.next/server/chunks/src_1u-olt84z63rx._.js +1 -1
  519. package/server/.next/server/chunks/src_1wmb2yl3tn-dd._.js +1 -1
  520. package/server/.next/server/chunks/src_1wzm081p6qyre._.js +1 -1
  521. package/server/.next/server/chunks/{src_0cdn5fuk8f_x2._.js → src_20eae99bkrgpt._.js} +2 -2
  522. package/server/.next/server/chunks/src_db_client_ts_0vckux1-linlc._.js +23 -0
  523. package/server/.next/server/chunks/src_lib_02-wqy78_rn85._.js +3 -0
  524. package/server/.next/server/chunks/src_lib_0ds7lhpop_adf._.js +1 -1
  525. package/server/.next/server/chunks/src_lib_0eqv8l-v8d5ze._.js +1 -1
  526. package/server/.next/server/chunks/src_lib_0glcfed-uogyd._.js +1 -1
  527. package/server/.next/server/chunks/src_lib_0iqdlrya6vfc_._.js +3 -0
  528. package/server/.next/server/chunks/src_lib_0kjik9nmtqlf5._.js +7 -0
  529. package/server/.next/server/chunks/src_lib_0krbxej8kykyp._.js +7 -0
  530. package/server/.next/server/chunks/src_lib_0o9m8m1sm5759._.js +5 -0
  531. package/server/.next/server/chunks/src_lib_0pyyxm3m1rttg._.js +1 -1
  532. package/server/.next/server/chunks/src_lib_0sd9c_cjgc4ro._.js +3 -0
  533. package/server/.next/server/chunks/src_lib_0ta8sd9jeuw50._.js +17 -17
  534. package/server/.next/server/chunks/src_lib_0xfwnbkxb4z5s._.js +7 -0
  535. package/server/.next/server/chunks/src_lib_11ky6rv8zte7m._.js +7 -0
  536. package/server/.next/server/chunks/src_lib_13irheo9qqhgx._.js +1 -1
  537. package/server/.next/server/chunks/src_lib_1550ey8j96v9n._.js +1 -1
  538. package/server/.next/server/chunks/src_lib_1n_d25awwz8ga._.js +3 -0
  539. package/server/.next/server/chunks/src_lib_1onr7b4_kglpt._.js +1 -1
  540. package/server/.next/server/chunks/src_lib_1qo6t00wwitz6._.js +17 -17
  541. package/server/.next/server/chunks/src_lib_1sz77jjn7xl7o._.js +1 -1
  542. package/server/.next/server/chunks/src_lib_alerts_catalog_ts_1ndg28acul64q._.js +1 -1
  543. package/server/.next/server/chunks/src_lib_branding_ts_03ns4y_8z0-6e._.js +3 -0
  544. package/server/.next/server/chunks/src_lib_branding_ts_0jfv9nur5alvy._.js +3 -0
  545. package/server/.next/server/chunks/src_lib_collector_auth_ts_0lqx92__e4zij._.js +6 -3
  546. package/server/.next/server/chunks/src_lib_data_report-db_ts_0b5f4dpxn08gk._.js +3 -0
  547. package/server/.next/server/chunks/src_lib_data_sections-db_ts_1ky6-o4z1mimq._.js +4 -4
  548. package/server/.next/server/chunks/src_lib_data_settings-db_ts_1to3jtggxlaz4._.js +3 -0
  549. package/server/.next/server/chunks/src_lib_data_settings-db_ts_2060-w9nbvitr._.js +3 -0
  550. package/server/.next/server/chunks/src_lib_demo_pool_ts_0fpn8acsdk64i._.js +9 -9
  551. package/server/.next/server/chunks/src_lib_demo_pool_ts_14rjvkgozh1d4._.js +11 -11
  552. package/server/.next/server/chunks/src_lib_demo_pool_ts_17xz9bk-d5uic._.js +11 -11
  553. package/server/.next/server/chunks/src_lib_demo_pool_ts_210g_on8zx_-n._.js +11 -11
  554. package/server/.next/server/chunks/src_lib_local-auth_proxy_ts_1g9krhdh2rnt2._.js +1 -21
  555. package/server/.next/server/chunks/src_lib_maintenance_ts_0voja6l8yogbf._.js +3 -0
  556. package/server/.next/server/chunks/src_lib_rate-limit_ts_09dzyftcadggh._.js +1 -1
  557. package/server/.next/server/chunks/src_lib_rate-limit_ts_0r-eu6to05vyx._.js +1 -1
  558. package/server/.next/server/chunks/src_lib_rate-limit_ts_1ahtm4quu2rri._.js +1 -1
  559. package/server/.next/server/chunks/src_lib_sections_ts_0r8u4nvlpdkgq._.js +1 -1
  560. package/server/.next/server/chunks/src_private_notes_notes-actions_ts_1g63g8u965fhc._.js +1 -1
  561. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_agents_page_actions_21atz5tidps07.js +1 -1
  562. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_models_page_actions_0rvlzfa8rjyz_.js +1 -1
  563. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_playground_page_actions_01ejc1xilpuh4.js +1 -1
  564. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_quota_page_actions_0iki29gyi8cwa.js +1 -1
  565. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_usage_page_actions_1c99h-kwdnep7.js +1 -1
  566. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_auto-actions_page_actions_1kw4ce6-efkr1.js +1 -1
  567. package/server/.next/server/chunks/ssr/{[externals]__1q1drb4oske-9._.js → [externals]__1299yq-rye4ww._.js} +1 -1
  568. package/server/.next/server/chunks/ssr/{[externals]__0summv9f9jkob._.js → [externals]__134px-n77ygse._.js} +1 -1
  569. package/server/.next/server/chunks/ssr/{[externals]__1jdljyrzmqoz0._.js → [externals]__1s9zy_6f7xfd5._.js} +1 -1
  570. package/server/.next/server/chunks/ssr/{[externals]__00hge8tjqv73a._.js → [externals]__1t5grpj1lrsbr._.js} +1 -1
  571. package/server/.next/server/chunks/ssr/[root-of-the-server]__001mglelq4wpc._.js +1 -1
  572. package/server/.next/server/chunks/ssr/{[root-of-the-server]__12t9_ndr9z-2d._.js → [root-of-the-server]__004q78ed0nf0_._.js} +1 -1
  573. package/server/.next/server/chunks/ssr/{[root-of-the-server]__1a5760tg4iits._.js → [root-of-the-server]__03iw2anbe7pxg._.js} +2 -2
  574. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0n4bkq-45z4aa._.js → [root-of-the-server]__04_prmhm_cts4._.js} +1 -1
  575. package/server/.next/server/chunks/ssr/{[root-of-the-server]__183_36tj3p645._.js → [root-of-the-server]__059q8f4tia03z._.js} +2 -2
  576. package/server/.next/server/chunks/ssr/{[root-of-the-server]__1mah0p09qrkpu._.js → [root-of-the-server]__05ot6j41b9i8j._.js} +2 -2
  577. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0423qjo9c2t9-._.js → [root-of-the-server]__077-acap7g4ck._.js} +1 -1
  578. package/server/.next/server/chunks/ssr/[root-of-the-server]__09blzlbsxqvy9._.js +1 -1
  579. package/server/.next/server/chunks/ssr/[root-of-the-server]__0_wsm-adqpmgy._.js +3 -0
  580. package/server/.next/server/chunks/ssr/[root-of-the-server]__0buxkrf7nrji8._.js +3 -0
  581. package/server/.next/server/chunks/ssr/{[root-of-the-server]__05s2n35zn4go-._.js → [root-of-the-server]__0ct4apye0sfmc._.js} +1 -1
  582. package/server/.next/server/chunks/ssr/{[root-of-the-server]__157kjredkf1pa._.js → [root-of-the-server]__0f6ao2fs70kab._.js} +1 -1
  583. package/server/.next/server/chunks/ssr/{[root-of-the-server]__02lkybw6gg3ln._.js → [root-of-the-server]__0f8ibnqfh_mp0._.js} +2 -2
  584. package/server/.next/server/chunks/ssr/[root-of-the-server]__0h8-rlmhjyebb._.js +3 -0
  585. package/server/.next/server/chunks/ssr/{[root-of-the-server]__139ya3ejh6htx._.js → [root-of-the-server]__0hgf7si8htevx._.js} +1 -1
  586. package/server/.next/server/chunks/ssr/[root-of-the-server]__0jgapr1cnvhi6._.js +1 -1
  587. package/server/.next/server/chunks/ssr/[root-of-the-server]__0kejvdc7h-pgz._.js +3 -0
  588. package/server/.next/server/chunks/ssr/[root-of-the-server]__0keo0-hwsnkw9._.js +1 -1
  589. package/server/.next/server/chunks/ssr/[root-of-the-server]__0kjdpn_g9gvwr._.js +3 -0
  590. package/server/.next/server/chunks/ssr/[root-of-the-server]__0l50vsk8enxzj._.js +1 -1
  591. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0z5ucbis8ik32._.js → [root-of-the-server]__0msczl_qf2eml._.js} +2 -2
  592. package/server/.next/server/chunks/ssr/[root-of-the-server]__0mvauw9r_4qss._.js +1 -1
  593. package/server/.next/server/chunks/ssr/[root-of-the-server]__0rdf04ziqasfz._.js +1 -1
  594. package/server/.next/server/chunks/ssr/[root-of-the-server]__0rrdzb9wowemv._.js +1 -1
  595. package/server/.next/server/chunks/ssr/{[root-of-the-server]__1d1ksu1dlha3r._.js → [root-of-the-server]__0s9z1kusbxvae._.js} +2 -2
  596. package/server/.next/server/chunks/ssr/[root-of-the-server]__0u-o_v_v6y58o._.js +3 -0
  597. package/server/.next/server/chunks/ssr/{[root-of-the-server]__10r0u-q18z71i._.js → [root-of-the-server]__0uxychcp_pldy._.js} +1 -1
  598. package/server/.next/server/chunks/ssr/{[root-of-the-server]__1iqedr7nfvayk._.js → [root-of-the-server]__0wlctoz_-yuyh._.js} +1 -1
  599. package/server/.next/server/chunks/ssr/{[root-of-the-server]__092gsphy4oz6k._.js → [root-of-the-server]__0yr0heg1b0y5t._.js} +2 -2
  600. package/server/.next/server/chunks/ssr/[root-of-the-server]__0yvm5q_auexh3._.js +3 -0
  601. package/server/.next/server/chunks/ssr/{[root-of-the-server]__13phmsw9wsyrs._.js → [root-of-the-server]__0zgo5h9mstjc8._.js} +1 -1
  602. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0no6c0whevi73._.js → [root-of-the-server]__107qfgl2c58q0._.js} +1 -1
  603. package/server/.next/server/chunks/ssr/[root-of-the-server]__10ahcnczmy5hx._.js +3 -0
  604. package/server/.next/server/chunks/ssr/{[root-of-the-server]__1nk87bg9lne35._.js → [root-of-the-server]__10y2ig7dg3f-k._.js} +1 -1
  605. package/server/.next/server/chunks/ssr/{[root-of-the-server]__1knbzqo0nba_q._.js → [root-of-the-server]__12cdcpj45tu6j._.js} +2 -2
  606. package/server/.next/server/chunks/ssr/[root-of-the-server]__18dcfrlpoapw9._.js +3 -0
  607. package/server/.next/server/chunks/ssr/[root-of-the-server]__1_f7nip9age3d._.js +1 -1
  608. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0gyvfp6c-_edw._.js → [root-of-the-server]__1a3_aiqflmt4f._.js} +2 -2
  609. package/server/.next/server/chunks/ssr/{[root-of-the-server]__16jfs8j29r4b5._.js → [root-of-the-server]__1brzt_134_2iy._.js} +2 -2
  610. package/server/.next/server/chunks/ssr/[root-of-the-server]__1g6kynby65m0v._.js +3 -0
  611. package/server/.next/server/chunks/ssr/{[root-of-the-server]__07_efq7yhxfj-._.js → [root-of-the-server]__1itgt83qo1e77._.js} +1 -1
  612. package/server/.next/server/chunks/ssr/[root-of-the-server]__1pafj7m_b8m14._.js +3 -0
  613. package/server/.next/server/chunks/ssr/[root-of-the-server]__1rzolbt5ior_s._.js +3 -0
  614. package/server/.next/server/chunks/ssr/{[root-of-the-server]__18gw74mr2vto3._.js → [root-of-the-server]__1sw2q1p1t59y8._.js} +2 -2
  615. package/server/.next/server/chunks/ssr/[root-of-the-server]__1t9_ue4abugtn._.js +3 -0
  616. package/server/.next/server/chunks/ssr/[root-of-the-server]__1u_13nhw3kuz3._.js +1 -1
  617. package/server/.next/server/chunks/ssr/[root-of-the-server]__1vgliw2256_6l._.js +4 -0
  618. package/server/.next/server/chunks/ssr/{[root-of-the-server]__06bgklzuef-ya._.js → [root-of-the-server]__1zki66ic3cluq._.js} +2 -2
  619. package/server/.next/server/chunks/ssr/_008i8a0_8skrp._.js +1 -1
  620. package/server/.next/server/chunks/ssr/_02eudwc8ieb2r._.js +2 -2
  621. package/server/.next/server/chunks/ssr/_08xqk3eibu5aw._.js +1 -1
  622. package/server/.next/server/chunks/ssr/_09s2unlb4r6yf._.js +3 -0
  623. package/server/.next/server/chunks/ssr/_0_oc9q0vqkynd._.js +1 -1
  624. package/server/.next/server/chunks/ssr/_0a22b7zsckifp._.js +1 -1
  625. package/server/.next/server/chunks/ssr/_0bd4cxnpnnq2u._.js +1 -1
  626. package/server/.next/server/chunks/ssr/_0cbbks0ms7i_u._.js +2 -2
  627. package/server/.next/server/chunks/ssr/_0cw4kz3d6kmb1._.js +1 -1
  628. package/server/.next/server/chunks/ssr/_0d2d527wcx-lf._.js +2 -2
  629. package/server/.next/server/chunks/ssr/_0d702k82llasi._.js +1 -1
  630. package/server/.next/server/chunks/ssr/_0gl-ewvbhb677._.js +2 -2
  631. package/server/.next/server/chunks/ssr/_0gmw45sb1llld._.js +1 -1
  632. package/server/.next/server/chunks/ssr/_0hqya_yuov5jw._.js +3 -0
  633. package/server/.next/server/chunks/ssr/_0i04zoixa2iup._.js +2 -2
  634. package/server/.next/server/chunks/ssr/_0idbg-ok0so2h._.js +2 -2
  635. package/server/.next/server/chunks/ssr/_0iy27gi4y9-fe._.js +1 -1
  636. package/server/.next/server/chunks/ssr/{_18sg0ilz439y6._.js → _0k6kbi721s28p._.js} +2 -2
  637. package/server/.next/server/chunks/ssr/_0kdn56_ow-x_s._.js +1 -1
  638. package/server/.next/server/chunks/ssr/_0kk0of-t4vhyh._.js +4 -0
  639. package/server/.next/server/chunks/ssr/{_0c9_fa5ejth12._.js → _0l0eho21fo-8l._.js} +2 -2
  640. package/server/.next/server/chunks/ssr/_0oovfx_t_-u0k._.js +1 -1
  641. package/server/.next/server/chunks/ssr/_0oub-njkja8gu._.js +2 -2
  642. package/server/.next/server/chunks/ssr/_0pqkexxo7rts_._.js +2 -2
  643. package/server/.next/server/chunks/ssr/_0r7_a5m55a1jy._.js +3 -0
  644. package/server/.next/server/chunks/ssr/_0rqil_klxfz3j._.js +3 -0
  645. package/server/.next/server/chunks/ssr/_0tnd528j0i1i4._.js +2 -2
  646. package/server/.next/server/chunks/ssr/_0uwkwcgucqgcf._.js +2 -2
  647. package/server/.next/server/chunks/ssr/_0uz60lk-7e_cj._.js +2 -2
  648. package/server/.next/server/chunks/ssr/_0wo-lpqf7hr1y._.js +2 -2
  649. package/server/.next/server/chunks/ssr/{_19q2vj_ppgsu4._.js → _0x4ybc829r3ta._.js} +2 -2
  650. package/server/.next/server/chunks/ssr/_0xmud7u5hdnqu._.js +2 -2
  651. package/server/.next/server/chunks/ssr/_1-4401bfn50mf._.js +1 -1
  652. package/server/.next/server/chunks/ssr/_1-6d1tm3r_qwg._.js +1 -1
  653. package/server/.next/server/chunks/ssr/_10bven6gb1vj0._.js +1 -1
  654. package/server/.next/server/chunks/ssr/_118h21qua_4o3._.js +1 -1
  655. package/server/.next/server/chunks/ssr/_12makqwatfke-._.js +2 -2
  656. package/server/.next/server/chunks/ssr/_19-3vzkc6rk97._.js +1 -1
  657. package/server/.next/server/chunks/ssr/_19dldpcnzhkuw._.js +1 -1
  658. package/server/.next/server/chunks/ssr/_1_-o2s48aj4i7._.js +1 -1
  659. package/server/.next/server/chunks/ssr/_1bijvrgqfyij6._.js +5 -0
  660. package/server/.next/server/chunks/ssr/_1c7jkkvkvzj_u._.js +2 -2
  661. package/server/.next/server/chunks/ssr/{_1vlm9990gr64r._.js → _1cdlzhw6tkrhd._.js} +2 -2
  662. package/server/.next/server/chunks/ssr/_1cl55h_h3q-b_._.js +1 -1
  663. package/server/.next/server/chunks/ssr/_1dlo17ba9g-f9._.js +2 -2
  664. package/server/.next/server/chunks/ssr/_1dp5bgqob29-f._.js +1 -1
  665. package/server/.next/server/chunks/ssr/_1fc8k_0p8l00c._.js +2 -2
  666. package/server/.next/server/chunks/ssr/_1fuywfexex2s8._.js +2 -2
  667. package/server/.next/server/chunks/ssr/_1g2zbl_-4z_hg._.js +1 -1
  668. package/server/.next/server/chunks/ssr/_1he21-bt45k8z._.js +2 -2
  669. package/server/.next/server/chunks/ssr/_1ioq9f389jnco._.js +3 -0
  670. package/server/.next/server/chunks/ssr/_1iugpfonxri3e._.js +3 -0
  671. package/server/.next/server/chunks/ssr/_1j9cka-44jd65._.js +1 -1
  672. package/server/.next/server/chunks/ssr/_1jh_o2i8hj2g5._.js +1 -1
  673. package/server/.next/server/chunks/ssr/_1ln6o3a9quwxo._.js +2 -2
  674. package/server/.next/server/chunks/ssr/_1m4km_w39x5e9._.js +1 -1
  675. package/server/.next/server/chunks/ssr/_1ong0a252wcvc._.js +13 -0
  676. package/server/.next/server/chunks/ssr/_1pp1o361lgpwu._.js +2 -2
  677. package/server/.next/server/chunks/ssr/_1q0i7-4d4iyye._.js +3 -0
  678. package/server/.next/server/chunks/ssr/_1q3fi6a4gklq6._.js +1 -1
  679. package/server/.next/server/chunks/ssr/_1qcal07c71omr._.js +3 -0
  680. package/server/.next/server/chunks/ssr/_1r2516zqb3e67._.js +3 -0
  681. package/server/.next/server/chunks/ssr/_1ul3og9l7vp32._.js +2 -2
  682. package/server/.next/server/chunks/ssr/_1yh3k88t_kh4h._.js +2 -2
  683. package/server/.next/server/chunks/ssr/_1z6dy1k48mskn._.js +1 -1
  684. package/server/.next/server/chunks/ssr/{_0fl2-fao_ye7t._.js → _1zsfeuyrhcwmh._.js} +2 -2
  685. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_(private)_ai_keys_page_actions_181-3r4e_0yb5.js +1 -1
  686. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_(private)_ai_logs_page_actions_1ryb93n6khky3.js +1 -1
  687. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_alerts_page_actions_06_3gmyq3jtvi.js +1 -1
  688. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_apps_[id]_page_actions_1myo_rodrlg3a.js +2 -2
  689. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_apps_page_actions_0ksau5eicvycc.js +1 -1
  690. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_connections_page_actions_1fgolmmpxrouc.js +1 -1
  691. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_containers_page_actions_1ainjsbrnl360.js +1 -1
  692. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_dns_page_actions_17d_lvhl-u_4w.js +1 -1
  693. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_domains_page_actions_1yv3fj_fh-n-5.js +1 -1
  694. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_firebase_page_actions_00wuues_v_j3r.js +1 -1
  695. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_logs_page_actions_0oqh51t2rx6q0.js +1 -1
  696. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_manage_sections_page_actions_1sb2ldu57uj32.js +1 -1
  697. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_settings_page_actions_1363m-cfkgyvr.js +3 -0
  698. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_supabase_page_actions_1f3a_tpkwjo8z.js +1 -1
  699. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_uptime_page_actions_1ylbdz0-ykfh6.js +1 -1
  700. package/server/.next/server/chunks/ssr/_next-internal_server_app_account_password_page_actions_1v4e71_oifbx9.js +1 -1
  701. package/server/.next/server/chunks/ssr/_next-internal_server_app_signin_page_actions_11wzk446p6_zi.js +1 -1
  702. package/server/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1kr0-100zz257.js +3 -0
  703. package/server/.next/server/chunks/ssr/{[root-of-the-server]__14e0j38785glf._.js → src_000iv6actp3t_._.js} +2 -2
  704. package/server/.next/server/chunks/ssr/src_0330uf9pdfco9._.js +1 -1
  705. package/server/.next/server/chunks/ssr/src_06tjy8wljego8._.js +1 -1
  706. package/server/.next/server/chunks/ssr/src_084tdkx3c_yqi._.js +1 -1
  707. package/server/.next/server/chunks/ssr/src_0abts6wp5ucc0._.js +1 -1
  708. package/server/.next/server/chunks/ssr/src_0etvjdinp5urq._.js +1 -1
  709. package/server/.next/server/chunks/ssr/src_0kls100c13ocf._.js +3 -0
  710. package/server/.next/server/chunks/ssr/src_0ovx2ogvlz2eh._.js +1 -1
  711. package/server/.next/server/chunks/ssr/src_0ph020gy78gi9._.js +1 -1
  712. package/server/.next/server/chunks/ssr/{src_1_9q6-wstn038._.js → src_0torilf0s7p-e._.js} +2 -2
  713. package/server/.next/server/chunks/ssr/src_10zavgy86u3us._.js +1 -1
  714. package/server/.next/server/chunks/ssr/src_18m06fg8u7_73._.js +3 -0
  715. package/server/.next/server/chunks/ssr/{src_0632mrev4i__u._.js → src_1_b884ul0envr._.js} +2 -2
  716. package/server/.next/server/chunks/ssr/src_1maoe8g5gnv0u._.js +1 -1
  717. package/server/.next/server/chunks/ssr/src_1q-jgpnd3lbcu._.js +1 -1
  718. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_agents_1fyhh1ldgm23z._.js +1 -1
  719. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_ask_ask-form_tsx_18ttm9nna_9y6._.js +1 -1
  720. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_logs_export-button_tsx_1k-crb88n1za_._.js +1 -1
  721. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_models_0ayzqn062pnv5._.js +1 -1
  722. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_playground_playground-view_tsx_18ua5zn_a0mar._.js +1 -1
  723. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_providers_1ru-30x6-uwu4._.js +1 -1
  724. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_quota_limits-form_tsx_1vouaaf560z_x._.js +1 -1
  725. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_usage_limits-form_tsx_0sfk3ver58rqw._.js +1 -1
  726. package/server/.next/server/chunks/ssr/{src_app_(console)_0krr6t05xs2tn._.js → src_app_(console)_0e1l3e9r_60s4._.js} +2 -2
  727. package/server/.next/server/chunks/ssr/{src_app_(console)_0ohoun7l5f2tb._.js → src_app_(console)_124kgxvmqm7j4._.js} +2 -2
  728. package/server/.next/server/chunks/ssr/src_app_(console)_alerts_0j5xlt68kwg8x._.js +2 -2
  729. package/server/.next/server/chunks/ssr/src_app_(console)_apps_[id]_08in-j3xp5mbn._.js +1 -1
  730. package/server/.next/server/chunks/ssr/src_app_(console)_backups_actions_ts_1vpytsdh0wc1f._.js +1 -1
  731. package/server/.next/server/chunks/ssr/src_app_(console)_backups_drive-buttons_tsx_00cku5r_z3jkg._.js +1 -1
  732. package/server/.next/server/chunks/ssr/src_app_(console)_connections_1fahc65-97qla._.js +1 -1
  733. package/server/.next/server/chunks/ssr/src_app_(console)_connections_1fmp_anbkapur._.js +1 -1
  734. package/server/.next/server/chunks/ssr/src_app_(console)_connections_actions_ts_103blv4gzq76z._.js +1 -1
  735. package/server/.next/server/chunks/ssr/src_app_(console)_containers_containers-view_tsx_1xkcrw5gx53xo._.js +1 -1
  736. package/server/.next/server/chunks/ssr/src_app_(console)_create_actions_ts_05-86qr6kfjey._.js +1 -1
  737. package/server/.next/server/chunks/ssr/src_app_(console)_dns_actions_ts_1jzn58xzwbukz._.js +1 -1
  738. package/server/.next/server/chunks/ssr/src_app_(console)_dns_record-actions_tsx_0cqmz51zcuebv._.js +1 -1
  739. package/server/.next/server/chunks/ssr/src_app_(console)_firebase_row-menu_tsx_0hssoq3pqjl-n._.js +1 -1
  740. package/server/.next/server/chunks/ssr/src_app_(console)_logs_log-viewer_tsx_0v3e4cflfk14w._.js +1 -1
  741. package/server/.next/server/chunks/ssr/src_app_(console)_manage_sections_section-switch_tsx_1mfs-o_357i22._.js +1 -1
  742. package/server/.next/server/chunks/ssr/src_app_(console)_monitor-actions_ts_10w3h7myk2ppi._.js +1 -1
  743. package/server/.next/server/chunks/ssr/src_app_(console)_os_os-view_tsx_0xr69f5vtstls._.js +1 -1
  744. package/server/.next/server/chunks/ssr/src_app_(console)_palette-action_ts_0zyw9a9imev6p._.js +1 -1
  745. package/server/.next/server/chunks/ssr/src_app_(console)_reports_reports-view_tsx_1l0apba6g810q._.js +3 -0
  746. package/server/.next/server/chunks/ssr/src_app_(console)_sql_1icfsti04djqe._.js +2 -2
  747. package/server/.next/server/chunks/ssr/src_app_(console)_sql_actions_ts_1oqco02hw-3vp._.js +1 -1
  748. package/server/.next/server/chunks/ssr/src_app_(console)_supabase_0ib3m2ch9gu-4._.js +1 -1
  749. package/server/.next/server/chunks/ssr/src_app_(console)_supabase_1ofufib3-zzt-._.js +1 -1
  750. package/server/.next/server/chunks/ssr/src_app_(console)_supabase_pool-actions_ts_0nzd4vwy_9zzx._.js +1 -1
  751. package/server/.next/server/chunks/ssr/src_app_(console)_uptime_148phfjye0539._.js +1 -1
  752. package/server/.next/server/chunks/ssr/src_app_(console)_uptime_1mnnkfi-2zv-k._.js +1 -1
  753. package/server/.next/server/chunks/ssr/src_app_(console)_vercel-actions_ts_0wpk1yo9v632d._.js +1 -1
  754. package/server/.next/server/chunks/ssr/src_app_mfa_setup_setup-flow_tsx_1fpwygr2vdgnh._.js +1 -1
  755. package/server/.next/server/chunks/ssr/src_app_s_[slug]_page_tsx_0jjqe6py82mpb._.js +1 -1
  756. package/server/.next/server/chunks/ssr/src_app_setup_setup-form_tsx_0izoagdur96e1._.js +1 -1
  757. package/server/.next/server/chunks/ssr/src_app_signin_1_sp0qx8_z7c9._.js +1 -1
  758. package/server/.next/server/chunks/ssr/src_app_signin_1qq0_77_vdutm._.js +3 -0
  759. package/server/.next/server/chunks/ssr/src_components_create_create-dialog_tsx_1s_9clly_m1ru._.js +1 -1
  760. package/server/.next/server/chunks/ssr/src_lib_0eqv8l-v8d5ze._.js +1 -1
  761. package/server/.next/server/chunks/ssr/src_lib_0etkz1wbvfw-k._.js +3 -0
  762. package/server/.next/server/chunks/ssr/src_lib_0jnv54-8idu07._.js +3 -0
  763. package/server/.next/server/chunks/ssr/{src_lib_1zgor_vrwl5kt._.js → src_lib_0o9m8m1sm5759._.js} +2 -2
  764. package/server/.next/server/chunks/ssr/src_lib_1eioo4oodq-8h._.js +1 -1
  765. package/server/.next/server/chunks/ssr/src_lib_1myex-iv3tu5w._.js +23 -0
  766. package/server/.next/server/chunks/ssr/src_lib_1x__dvajr3xvs._.js +3 -0
  767. package/server/.next/server/chunks/ssr/src_lib_alerts_catalog_ts_1ndg28acul64q._.js +1 -1
  768. package/server/.next/server/chunks/ssr/src_lib_branding_ts_03ns4y_8z0-6e._.js +3 -0
  769. package/server/.next/server/chunks/ssr/src_lib_branding_ts_1p22ju9pii41w._.js +3 -0
  770. package/server/.next/server/chunks/ssr/src_lib_collector_self-update_ts_18m5vmptpjhtg._.js +1 -1
  771. package/server/.next/server/chunks/ssr/src_lib_data_sections-db_ts_1ky6-o4z1mimq._.js +2 -2
  772. package/server/.next/server/chunks/ssr/src_lib_data_settings-db_ts_1to3jtggxlaz4._.js +3 -0
  773. package/server/.next/server/chunks/ssr/{src_lib_demo_15e3gnqzod0tj._.js → src_lib_demo_03sepqqjq9usk._.js} +2 -2
  774. package/server/.next/server/chunks/ssr/src_lib_demo_pool_ts_0fpn8acsdk64i._.js +9 -9
  775. package/server/.next/server/chunks/ssr/src_lib_network_dns-edit_ts_0xtxlbd-uwncx._.js +1 -1
  776. package/server/.next/server/chunks/ssr/src_lib_rate-limit_ts_0r-eu6to05vyx._.js +1 -1
  777. package/server/.next/server/chunks/ssr/src_lib_sections_ts_0r8u4nvlpdkgq._.js +1 -1
  778. package/server/.next/server/chunks/ssr/src_lib_view_usage_ts_1h1tj0m3n2vul._.js +1 -1
  779. package/server/.next/server/chunks/ssr/src_private_0iy_wyg2p1jkn._.js +1 -1
  780. package/server/.next/server/chunks/ssr/src_private_1yzfhupl3rlpx._.js +6 -0
  781. package/server/.next/server/chunks/ssr/src_private_actions_decide-form_tsx_1hngtxpyle3v8._.js +1 -1
  782. package/server/.next/server/chunks/ssr/src_private_ai_providers_actions_ts_0wxa36ai6s5nn._.js +1 -1
  783. package/server/.next/server/chunks/ssr/src_private_notes_notes-actions_ts_1g63g8u965fhc._.js +1 -1
  784. package/server/.next/server/middleware-build-manifest.js +14 -3
  785. package/server/.next/server/middleware.js +1 -1
  786. package/server/.next/server/next-font-manifest.js +1 -1
  787. package/server/.next/server/next-font-manifest.json +4 -0
  788. package/server/.next/server/pages/404.html +1 -1
  789. package/server/.next/server/pages/500.html +1 -1
  790. package/server/.next/server/preview-props.json +3 -3
  791. package/server/.next/server/server-reference-manifest.js +1 -1
  792. package/server/.next/server/server-reference-manifest.json +299 -175
  793. package/server/.next/static/chunks/0-v128fmc05bf.js +1 -0
  794. package/server/.next/static/chunks/{2-xolk9x48-v1.js → 02db293pqegsb.js} +1 -1
  795. package/server/.next/static/chunks/{1935vuszybg7i.js → 03t36gu4t__cw.js} +1 -1
  796. package/server/.next/static/chunks/{0ge2nkna7o16p.js → 07p13q6tuqr2r.js} +1 -1
  797. package/server/.next/static/chunks/{1pogexbz36ij8.js → 09qtiybhnydd3.js} +1 -1
  798. package/server/.next/static/chunks/{02kly5fiyvt77.js → 0_5leiwhgv7d6.js} +1 -1
  799. package/server/.next/static/chunks/{3aou6xwhz8z6a.js → 0_ebioh9utve_.js} +1 -1
  800. package/server/.next/static/chunks/{0l61-etojd65n.js → 0_hd-kx6h59a8.js} +1 -1
  801. package/server/.next/static/chunks/{2fvh4wg2kp4c2.js → 0if7r4ximmzwb.js} +1 -1
  802. package/server/.next/static/chunks/{01euc4zjlprz5.js → 0ohm_qoe5thrr.js} +1 -1
  803. package/server/.next/static/chunks/0ssmmtio659vh.js +1 -0
  804. package/server/.next/static/chunks/{2-uaya1_uxlg8.js → 0t0igs6uqhbf0.js} +1 -1
  805. package/server/.next/static/chunks/{0matuoy08desx.js → 0ut06v9sng9g4.js} +1 -1
  806. package/server/.next/static/chunks/0w--mj7tf-9f-.js +1 -0
  807. package/server/.next/static/chunks/131egbz-4xsjl.js +1 -0
  808. package/server/.next/static/chunks/{3ursfc8kxp2ak.js → 14dbn6_jif37v.js} +2 -2
  809. package/server/.next/static/chunks/{2yc4qzglai5fq.js → 15l58okvbrc4_.js} +1 -1
  810. package/server/.next/static/chunks/{22ygzud_kp29f.js → 1_nuygyg_kes5.js} +2 -2
  811. package/server/.next/static/chunks/1bsq3x1wh49bp.js +1 -0
  812. package/server/.next/static/chunks/{1u8mo8jflotrt.js → 1esunqtpnjwkw.js} +1 -1
  813. package/server/.next/static/chunks/{33_2mbxu9wufm.js → 1gizey8idqrkt.js} +1 -1
  814. package/server/.next/static/chunks/{0dq-2wtk0h5u7.js → 1itgjll79qm1l.js} +1 -1
  815. package/server/.next/static/chunks/{0xlfzxnboj4f1.js → 1o27sfcuph25w.js} +1 -1
  816. package/server/.next/static/chunks/{2szchf79vnxgd.js → 1pz19kzjaj8uw.js} +1 -1
  817. package/server/.next/static/chunks/{1truzt17f0fce.js → 1qzun1-bna-sy.js} +1 -1
  818. package/server/.next/static/chunks/1ugo5ye01racz.js +1 -0
  819. package/server/.next/static/chunks/{0v97o46v-74gw.js → 1z5s55o29xqyu.js} +1 -1
  820. package/server/.next/static/chunks/{1uk98c6r9i2bn.js → 21gu7xcv8ix3_.js} +1 -1
  821. package/server/.next/static/chunks/{0xz55932e19r8.js → 21p4xz6ysy8mv.js} +1 -1
  822. package/server/.next/static/chunks/{2ze-y3he5_bb0.js → 22bdke6t-doqh.js} +1 -1
  823. package/server/.next/static/chunks/{1r99dm6-o5qw2.js → 28ljlwfuuz5a1.js} +1 -1
  824. package/server/.next/static/chunks/{363mcu9nd9znh.js → 29lr_ae0uli9o.js} +1 -1
  825. package/server/.next/static/chunks/{2am77mhkx46hz.js → 2jkqfajf-i0r6.js} +2 -2
  826. package/server/.next/static/chunks/{3gkm-ynu4fq5u.js → 2mhli3hpy5vr9.js} +1 -1
  827. package/server/.next/static/chunks/{2p8bv7d7t08z1.js → 2ns8p-8ngmi9h.js} +1 -1
  828. package/server/.next/static/chunks/{3m3vl3n5xs039.js → 2vdwhg5fnxmu-.js} +2 -2
  829. package/server/.next/static/chunks/{3gmm9g54vx4w0.js → 2xgya43mybqsr.js} +1 -1
  830. package/server/.next/static/chunks/{3e-0ejqqa7jwn.js → 2yv02i0h6tppe.js} +1 -1
  831. package/server/.next/static/chunks/{2m8-ctreu-y-r.js → 31gsdl-_t96jr.js} +1 -1
  832. package/server/.next/static/chunks/36ykgce0otv4r.css +3 -0
  833. package/server/.next/static/chunks/{0ey7akdab5tu8.js → 3_lq_n61v4j3r.js} +1 -1
  834. package/server/.next/static/chunks/{1c9eb592ho0-l.js → 3a11wypkvc5ey.js} +1 -1
  835. package/server/.next/static/chunks/{0mbt6eam4qr2f.js → 3g0p8ugqre9ft.js} +1 -1
  836. package/server/.next/static/chunks/{0y99dm8mesqe9.js → 3jq1ae0_9wu-o.js} +1 -1
  837. package/server/.next/static/chunks/3o358k-0653gr.js +1 -0
  838. package/server/.next/static/chunks/3pnzdk7snuzti.js +1 -0
  839. package/server/.next/static/chunks/{3bwwwv3sp7uyn.js → 4114b2ynqr24j.js} +1 -1
  840. package/server/.next/static/chunks/{0-o-4ilzkrd38.js → 41r6z31pmixbr.js} +1 -1
  841. package/server/.next/static/chunks/{3dk6a5gl9glxo.js → 43wc7pgukn2dp.js} +1 -1
  842. package/server/.next/static/chunks/{3jqmm62dbykt1.js → 4451kr05p691g.js} +1 -1
  843. package/server/.next/static/chunks/44t_7rpq23-bz.js +1 -0
  844. package/server/drizzle-selfhost/0011_reports.sql +56 -0
  845. package/server/drizzle-selfhost/0012_report_send_rule.sql +2 -0
  846. package/server/drizzle-selfhost/meta/_journal.json +14 -0
  847. package/server/server.js +1 -1
  848. package/server/src/lib/report/fonts/Geist-Regular.ttf +0 -0
  849. package/server/src/lib/report/fonts/Geist-SemiBold.ttf +0 -0
  850. package/server/src/lib/report/fonts/GeistMono-Regular.ttf +0 -0
  851. package/server/src/lib/report/fonts/OFL.txt +92 -0
  852. package/tools/reset-login.mjs +2 -0
  853. package/server/.next/server/chunks/[root-of-the-server]__04q-9779vl4kn._.js +0 -3
  854. package/server/.next/server/chunks/[root-of-the-server]__04u9e45_g1jdi._.js +0 -3
  855. package/server/.next/server/chunks/[root-of-the-server]__06nrq_1pbp3z-._.js +0 -3
  856. package/server/.next/server/chunks/[root-of-the-server]__06uaa_2zbg57p._.js +0 -3
  857. package/server/.next/server/chunks/[root-of-the-server]__081hh3_un4awi._.js +0 -3
  858. package/server/.next/server/chunks/[root-of-the-server]__09gla7jgbw2bs._.js +0 -3
  859. package/server/.next/server/chunks/[root-of-the-server]__0a0st8-rftztn._.js +0 -3
  860. package/server/.next/server/chunks/[root-of-the-server]__0dfx2psnngcys._.js +0 -3
  861. package/server/.next/server/chunks/[root-of-the-server]__0di45l_tnq1pm._.js +0 -3
  862. package/server/.next/server/chunks/[root-of-the-server]__0ej4hdoyogtji._.js +0 -3
  863. package/server/.next/server/chunks/[root-of-the-server]__0g81f_2ecmg8a._.js +0 -3
  864. package/server/.next/server/chunks/[root-of-the-server]__0jma907r441wi._.js +0 -3
  865. package/server/.next/server/chunks/[root-of-the-server]__0t0dd5t5rch1i._.js +0 -3
  866. package/server/.next/server/chunks/[root-of-the-server]__0ty2qkszfdr5t._.js +0 -3
  867. package/server/.next/server/chunks/[root-of-the-server]__0ugx1i8km15fl._.js +0 -3
  868. package/server/.next/server/chunks/[root-of-the-server]__0ux1hi2fgqxu7._.js +0 -3
  869. package/server/.next/server/chunks/[root-of-the-server]__12tmfv427e9cb._.js +0 -3
  870. package/server/.next/server/chunks/[root-of-the-server]__1481y3utu_a_o._.js +0 -3
  871. package/server/.next/server/chunks/[root-of-the-server]__14e0j38785glf._.js +0 -3
  872. package/server/.next/server/chunks/[root-of-the-server]__1_0vd5-tvmsg8._.js +0 -3
  873. package/server/.next/server/chunks/[root-of-the-server]__1_goy0uhapvk9._.js +0 -3
  874. package/server/.next/server/chunks/[root-of-the-server]__1ac-dzt5bffr2._.js +0 -3
  875. package/server/.next/server/chunks/[root-of-the-server]__1ajyr5xvo1-x5._.js +0 -3
  876. package/server/.next/server/chunks/[root-of-the-server]__1ey2qia7rofoc._.js +0 -3
  877. package/server/.next/server/chunks/[root-of-the-server]__1hlvqq0azku2x._.js +0 -3
  878. package/server/.next/server/chunks/[root-of-the-server]__1hrviq7s700td._.js +0 -3
  879. package/server/.next/server/chunks/[root-of-the-server]__1ifov-udw6__d._.js +0 -3
  880. package/server/.next/server/chunks/[root-of-the-server]__1ig0p-frprcbm._.js +0 -3
  881. package/server/.next/server/chunks/[root-of-the-server]__1ksyvvsf32jfg._.js +0 -3
  882. package/server/.next/server/chunks/[root-of-the-server]__1kzi1du1sliqb._.js +0 -3
  883. package/server/.next/server/chunks/[root-of-the-server]__1mvibnqor6lx_._.js +0 -3
  884. package/server/.next/server/chunks/[root-of-the-server]__1o-zo4qebuqwy._.js +0 -3
  885. package/server/.next/server/chunks/[root-of-the-server]__1po33h2u2o4e_._.js +0 -3
  886. package/server/.next/server/chunks/[root-of-the-server]__1qps9ushddgwe._.js +0 -3
  887. package/server/.next/server/chunks/[root-of-the-server]__1qrj37m-5y-56._.js +0 -3
  888. package/server/.next/server/chunks/[root-of-the-server]__1qyz1wi13rxxb._.js +0 -3
  889. package/server/.next/server/chunks/[root-of-the-server]__1r8mzvf7_9d2k._.js +0 -3
  890. package/server/.next/server/chunks/[root-of-the-server]__1rxke2_vpd7np._.js +0 -3
  891. package/server/.next/server/chunks/[root-of-the-server]__1sjp750034q4j._.js +0 -3
  892. package/server/.next/server/chunks/[root-of-the-server]__1won_frdj9jms._.js +0 -3
  893. package/server/.next/server/chunks/[root-of-the-server]__1wvp6wau5ueb9._.js +0 -3
  894. package/server/.next/server/chunks/[root-of-the-server]__1y9gsf61fh1fv._.js +0 -3
  895. package/server/.next/server/chunks/[root-of-the-server]__1yxudc_keazqo._.js +0 -3
  896. package/server/.next/server/chunks/[root-of-the-server]__1zvy7u_y3fzbz._.js +0 -3
  897. package/server/.next/server/chunks/[root-of-the-server]__208znvanagmpr._.js +0 -3
  898. package/server/.next/server/chunks/[root-of-the-server]__212-4r-w6a9sm._.js +0 -3
  899. package/server/.next/server/chunks/_0-5pjvqu672_v._.js +0 -49
  900. package/server/.next/server/chunks/_02qrz1g8sdvhe._.js +0 -49
  901. package/server/.next/server/chunks/_03qlijpos6a21._.js +0 -3
  902. package/server/.next/server/chunks/_06gv0srpbf_lk._.js +0 -3
  903. package/server/.next/server/chunks/_06lf75x-xhl7v._.js +0 -3
  904. package/server/.next/server/chunks/_0cbxgnkxr1uj8._.js +0 -3
  905. package/server/.next/server/chunks/_0sy878k2ywjbq._.js +0 -3
  906. package/server/.next/server/chunks/_0vjggb8yo5b9f._.js +0 -3
  907. package/server/.next/server/chunks/_0wval7co8z-pk._.js +0 -3
  908. package/server/.next/server/chunks/_103ai6ybnpq1k._.js +0 -3
  909. package/server/.next/server/chunks/_108e86rhye0o1._.js +0 -3
  910. package/server/.next/server/chunks/_12g2m3a5e94_5._.js +0 -3
  911. package/server/.next/server/chunks/_1_son1yzo5xvl._.js +0 -3
  912. package/server/.next/server/chunks/_1ap0upnvy5i_1._.js +0 -49
  913. package/server/.next/server/chunks/_1b-88djuoexz1._.js +0 -49
  914. package/server/.next/server/chunks/_1ctwjh8q__6_g._.js +0 -3
  915. package/server/.next/server/chunks/_1f14qy3kb8iac._.js +0 -3
  916. package/server/.next/server/chunks/_1fj4vzjpusyn8._.js +0 -5
  917. package/server/.next/server/chunks/_1i8u10u8nrzy2._.js +0 -3
  918. package/server/.next/server/chunks/_1k3v1-vgvzm_o._.js +0 -3
  919. package/server/.next/server/chunks/_1kcmwgs544mo-._.js +0 -3
  920. package/server/.next/server/chunks/_1ptcxyn1tzm9r._.js +0 -3
  921. package/server/.next/server/chunks/_1rskctyr7yt-b._.js +0 -3
  922. package/server/.next/server/chunks/node_modules_drizzle-orm_1oeq7sl_gbxs5._.js +0 -4
  923. package/server/.next/server/chunks/node_modules_drizzle-orm_1tmqw7vk5a4ik._.js +0 -4
  924. package/server/.next/server/chunks/src_063xvouojxyoa._.js +0 -3
  925. package/server/.next/server/chunks/src_088gmyaew7ds0._.js +0 -3
  926. package/server/.next/server/chunks/src_08fq45_-8xq5o._.js +0 -3
  927. package/server/.next/server/chunks/src_0hx0sol2clocu._.js +0 -3
  928. package/server/.next/server/chunks/src_0j84o_hkkaeg-._.js +0 -3
  929. package/server/.next/server/chunks/src_0y_4gogmeu-2k._.js +0 -3
  930. package/server/.next/server/chunks/src_13n1vi7uew4iu._.js +0 -3
  931. package/server/.next/server/chunks/src_1_fnzi0em_6er._.js +0 -3
  932. package/server/.next/server/chunks/src_1bqzr81r3wkvi._.js +0 -3
  933. package/server/.next/server/chunks/src_1wduh0eckiwl1._.js +0 -3
  934. package/server/.next/server/chunks/src_lib_0ma36vqcze7a9._.js +0 -7
  935. package/server/.next/server/chunks/src_lib_0ps7mu81f-6s1._.js +0 -7
  936. package/server/.next/server/chunks/src_lib_14grv5a5_n9o0._.js +0 -7
  937. package/server/.next/server/chunks/src_lib_1en6omqx66g9d._.js +0 -23
  938. package/server/.next/server/chunks/src_lib_1znb-e7g8dkgc._.js +0 -7
  939. package/server/.next/server/chunks/src_lib_collector_runners_ts_12z4gtgikss74._.js +0 -21
  940. package/server/.next/server/chunks/src_lib_data_metrics-db_ts_0zp7x6l28a2ep._.js +0 -3
  941. package/server/.next/server/chunks/src_lib_demo_11p30f_ci6ie2._.js +0 -3
  942. package/server/.next/server/chunks/src_lib_notify_lang_ts_1r2w02ctaky7e._.js +0 -3
  943. package/server/.next/server/chunks/ssr/[root-of-the-server]__03xevz8n-mc20._.js +0 -4
  944. package/server/.next/server/chunks/ssr/[root-of-the-server]__07zuxj3veqm14._.js +0 -3
  945. package/server/.next/server/chunks/ssr/[root-of-the-server]__0de1senl_kfo5._.js +0 -3
  946. package/server/.next/server/chunks/ssr/[root-of-the-server]__19twn3g5nv5q1._.js +0 -3
  947. package/server/.next/server/chunks/ssr/[root-of-the-server]__19wvac83zh5-9._.js +0 -3
  948. package/server/.next/server/chunks/ssr/[root-of-the-server]__1m38od9tgaroe._.js +0 -3
  949. package/server/.next/server/chunks/ssr/[root-of-the-server]__1mxpszbk1aup8._.js +0 -4
  950. package/server/.next/server/chunks/ssr/[root-of-the-server]__1tj-iwvrxfd1a._.js +0 -3
  951. package/server/.next/server/chunks/ssr/[root-of-the-server]__1zmuaump_n9c1._.js +0 -3
  952. package/server/.next/server/chunks/ssr/_01n29sxn-py3x._.js +0 -3
  953. package/server/.next/server/chunks/ssr/_03d3sxmob-gr7._.js +0 -3
  954. package/server/.next/server/chunks/ssr/_0c8kew3jsb-yb._.js +0 -3
  955. package/server/.next/server/chunks/ssr/_0qhvl_fw4qetx._.js +0 -4
  956. package/server/.next/server/chunks/ssr/_0rsh9v4b3yj0b._.js +0 -3
  957. package/server/.next/server/chunks/ssr/_0rw2pberdmaa5._.js +0 -3
  958. package/server/.next/server/chunks/ssr/_0zkmkbrbc96-h._.js +0 -3
  959. package/server/.next/server/chunks/ssr/_16vvfyez78u5k._.js +0 -3
  960. package/server/.next/server/chunks/ssr/_1d0anr0hjs5k5._.js +0 -3
  961. package/server/.next/server/chunks/ssr/_1fj4vzjpusyn8._.js +0 -5
  962. package/server/.next/server/chunks/ssr/_1rskctyr7yt-b._.js +0 -3
  963. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_settings_page_actions_12wgjpd0lbh12.js +0 -3
  964. package/server/.next/server/chunks/ssr/src_0jxjbvkvg0bjg._.js +0 -3
  965. package/server/.next/server/chunks/ssr/src_1emolu5lrse98._.js +0 -6
  966. package/server/.next/server/chunks/ssr/src_1sdwdnblbiq_g._.js +0 -3
  967. package/server/.next/server/chunks/ssr/src_app_signin_12a3ifphkkcs7._.js +0 -3
  968. package/server/.next/server/chunks/ssr/src_lib_0nbad7vu413-f._.js +0 -23
  969. package/server/.next/server/chunks/ssr/src_lib_data_metrics-db_ts_0zp7x6l28a2ep._.js +0 -3
  970. package/server/.next/static/chunks/028g933xfv8jn.js +0 -1
  971. package/server/.next/static/chunks/0utjdzwgd7zw2.js +0 -1
  972. package/server/.next/static/chunks/1sa-1lde5_ikt.js +0 -1
  973. package/server/.next/static/chunks/2zzk4wxiacgja.css +0 -3
  974. package/server/.next/static/chunks/33avmrae70_xs.js +0 -1
  975. package/server/.next/static/chunks/3lvz18snt6489.js +0 -1
  976. package/server/.next/static/chunks/3qv9klayap1tz.js +0 -1
  977. package/server/.next/static/chunks/3xkvsl4vbpm41.js +0 -1
  978. package/server/.next/static/chunks/3yu0azvye6wr_.js +0 -1
  979. /package/server/.next/static/{fogXXBSOhoHV3eIf8_j28 → GBOxoOLq1PhjMCzrjHGdg}/_buildManifest.js +0 -0
  980. /package/server/.next/static/{fogXXBSOhoHV3eIf8_j28 → GBOxoOLq1PhjMCzrjHGdg}/_clientMiddlewareManifest.js +0 -0
  981. /package/server/.next/static/{fogXXBSOhoHV3eIf8_j28 → GBOxoOLq1PhjMCzrjHGdg}/_ssgManifest.js +0 -0
@@ -1,2 +1,2 @@
1
- (()=>{"use strict";(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,239647,e=>{var t=e.i(843476),a=e.i(271645),s=e.i(846696),n=e.i(177106),r=e.i(95187);let i=(0,r.createServerReference)("60a8ab808862ce49915cac0a3330ea801e810e46b5",r.callServer,void 0,r.findSourceMapURL,"silence");e.s(["AlertMenu",0,function({id:e,label:r,silenced:l,resourceHref:o}){let[,d]=(0,a.useTransition)(),c=(0,a.useRef)(!1),h=t=>{c.current||(c.current=!0,d(async()=>{try{let a=await i(e,t);a.ok?s.c.success(a.message??""):s.c.error(a.error)}catch{s.c.error("Watchbell didn't answer. Check that it's still running, then try again.")}finally{c.current=!1}}))},u=o?[{label:"View resource",href:o}]:[];return(0,t.jsx)(n.RowMenu,{label:`Actions for ${r}`,items:l?[{label:"Unsilence",onSelect:()=>h("off")},...u]:[{label:"Silence 1 hour",onSelect:()=>h("1h")},{label:"Silence until resolved",onSelect:()=>h("resolved")},...u]})}],239647)},108608,e=>{var t=e.i(843476),a=e.i(33550);let s=(0,a.f)("outline","brand-discord","BrandDiscord",[["path",{d:"M8 12a1 1 0 1 0 2 0a1 1 0 0 0 -2 0",key:"svg-0"}],["path",{d:"M14 12a1 1 0 1 0 2 0a1 1 0 0 0 -2 0",key:"svg-1"}],["path",{d:"M15.5 17c0 1 1.5 3 2 3c1.5 0 2.833 -1.667 3.5 -3c.667 -1.667 .5 -5.833 -1.5 -11.5c-1.457 -1.015 -3 -1.34 -4.5 -1.5l-.972 1.923a11.913 11.913 0 0 0 -4.053 0l-.975 -1.923c-1.5 .16 -3.043 .485 -4.5 1.5c-2 5.667 -2.167 9.833 -1.5 11.5c.667 1.333 2 3 3.5 3c.5 0 2 -2 2 -3",key:"svg-2"}],["path",{d:"M7 16.5c3.5 1 6.5 1 10 0",key:"svg-3"}]]),n=(0,a.f)("outline","brand-telegram","BrandTelegram",[["path",{d:"M15 10l-4 4l6 6l4 -16l-18 7l4 2l2 6l3 -4",key:"svg-0"}]]),r=(0,a.f)("outline","mail","Mail",[["path",{d:"M3 7a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v10a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2v-10",key:"svg-0"}],["path",{d:"M3 7l9 6l9 -6",key:"svg-1"}]]),i=(0,a.f)("outline","webhook","Webhook",[["path",{d:"M4.876 13.61a4 4 0 1 0 6.124 3.39h6",key:"svg-0"}],["path",{d:"M15.066 20.502a4 4 0 1 0 1.934 -7.502c-.706 0 -1.424 .179 -2 .5l-3 -5.5",key:"svg-1"}],["path",{d:"M16 8a4 4 0 1 0 -8 0c0 1.506 .77 2.818 2 3.5l-3 5.5",key:"svg-2"}]]);var l=e.i(944971),o=e.i(271645),d=e.i(846696),c=e.i(428325),h=e.i(500443),u=e.i(776639),p=e.i(357772);function m({id:e,onChange:a}){let[s,n]=(0,o.useState)([]),[r,i]=(0,o.useState)(""),l=(e,t)=>{n(e),i(t),a([...e,t.trim()].filter(Boolean).join(", "))},d=e=>{var t;let a;return l((t=[...s,e].join(","),a=new Set,t.split(/[\s,;]+/).filter(e=>e&&!a.has(e.toLowerCase())&&a.add(e.toLowerCase()))),"")};return(0,t.jsxs)("div",{className:"flex min-h-[34px] flex-wrap items-center gap-1.5 rounded-md border border-line-strong bg-surface px-1.5 py-1 focus-within:border-brand focus-within:ring-2 focus-within:ring-brand/40",children:[s.map((e,a)=>(0,t.jsxs)("span",{className:"inline-flex items-center gap-1 rounded-full border border-line bg-sunken py-0.5 pl-2.5 pr-1 text-[12.5px]",children:[e,(0,t.jsx)("button",{type:"button",className:"grid size-4 place-items-center rounded-full text-ink-soft hover:text-ink","aria-label":`Remove ${e}`,onClick:()=>l(s.filter((e,t)=>t!==a),r),children:(0,t.jsx)(p.f,{size:12,"aria-hidden":!0})})]},e)),(0,t.jsx)("input",{id:e,className:"min-w-[160px] flex-1 bg-transparent px-1 py-0.5 text-ink outline-none",type:"text",inputMode:"email",autoComplete:"off",placeholder:s.length?s.length<10?"Add another":"":"you@example.com",value:r,onChange:e=>/[\s,;]/.test(e.target.value)?d(e.target.value):l(s,e.target.value),onKeyDown:e=>{"Enter"===e.key&&r.trim()?(e.preventDefault(),d(r)):"Backspace"===e.key&&!r&&s.length&&l(s.slice(0,-1),s.at(-1))},onBlur:()=>{r.trim()&&d(r)}})]})}var x=e.i(95187);let b=(0,x.createServerReference)("403d9e8d73c65cb0b8889ac242b2d159baf391dedc",x.callServer,void 0,x.findSourceMapURL,"saveDigest"),g=(0,x.createServerReference)("408b1aa4d8906c65e39ae45ede59d2c74707eecfe4",x.callServer,void 0,x.findSourceMapURL,"saveDiscord"),f=(0,x.createServerReference)("4050bfcd8849be68504cba28173b7ea130110c043c",x.callServer,void 0,x.findSourceMapURL,"saveSmtp"),v=(0,x.createServerReference)("60ab9b90c64d3ec3d2bd56861da456ad6c3c29c8d2",x.callServer,void 0,x.findSourceMapURL,"saveTelegram"),y=(0,x.createServerReference)("6004ef9ecd16198ec924f458f07d6910e8ae400ec1",x.callServer,void 0,x.findSourceMapURL,"saveWebhook"),k=(0,x.createServerReference)("40eb29379f394ebc724a9a33e29187c0f6625f41d8",x.callServer,void 0,x.findSourceMapURL,"sendTest"),S=(0,x.createServerReference)("6048cff6328812981eb48ffb09ed15ccbadb844cbd",x.callServer,void 0,x.findSourceMapURL,"setChannelEnabled"),w=(0,x.createServerReference)("0084e973b1d2ae850311b5831e7ee1e9678cbcdda2",x.callServer,void 0,x.findSourceMapURL,"telegramChats"),j={telegram:{icon:n,title:"Connect Telegram",name:"Telegram",about:`The bot token is ${l.n.setting} (TELEGRAM_BOT_TOKEN). Here you only choose the chat.`},discord:{icon:s,title:"Connect Discord",name:"Discord",about:"Discord → Channel settings → Integrations → Webhooks → New webhook → Copy URL."},webhook:{icon:i,title:"Connect a webhook",name:"Webhook",about:"Watchbell POSTs JSON to this address for every alert message. It must be https on a public host (port 443); Watchbell doesn't post into private networks or follow redirects."},smtp:{icon:r,title:"Email through your mail server",name:"Email (SMTP)",about:"Port 587 or 2525 with STARTTLS, or 465 with TLS; the password only ever goes over TLS. The server must be on the public internet. Office 365: smtp.office365.com, 587, and an app password if your account has MFA."},email_digest:{icon:r,title:"Daily email digest",name:"Daily email digest",about:`Sent through Resend from the address in DIGEST_FROM. The API key is ${l.n.setting} (RESEND_API_KEY).`}},C={telegram:"Telegram",discord:"Discord",webhook:"Webhook",smtp:"Email (SMTP)",email_digest:"Daily email digest"};e.s(["ChannelControls",0,function({kind:e,connected:a,enabled:s,envMissing:n}){let[r,i]=(0,o.useState)(!1),[l,p]=(0,o.useState)([]),[x,N]=(0,o.useState)(""),[R,T]=(0,o.useState)(""),[M,L]=(0,o.useState)(""),[D,E]=(0,o.useState)(""),[$,A]=(0,o.useState)({host:"",port:"587",user:"",pass:"",from:"",to:""}),[O,U]=(0,o.useState)({}),[W,P]=(0,o.useTransition)(),[F,z]=(0,o.useTransition)(),[K,H]=(0,o.useTransition)();(0,h.useHoldRefresh)(r);let I=j[e],_=I.icon;function B(e){e&&(p([]),N(""),T(""),L(""),E(""),A({host:"",port:"587",user:"",pass:"",from:"",to:""}),U({})),i(e)}function V(e,t){H(async()=>{try{let a=await e();a.ok?d.c.success(t,{description:a.message}):d.c.error(a.error)}catch{d.c.error("Watchbell didn't answer. Check that it's still running, then try again.")}})}return(0,t.jsxs)("span",{className:"inline-flex flex-wrap items-center gap-2",children:[(0,t.jsxs)(u.N,{open:r,onOpenChange:e=>{W||B(e)},children:[(0,t.jsx)(u.a,{render:(0,t.jsx)(c.K,{size:"sm",disabled:null!==n,children:a?"Change":"Connect"})}),(0,t.jsxs)(u.d,{className:"max-h-[92vh] gap-0 overflow-y-auto p-0 sm:max-w-[560px]",showCloseButton:!1,children:[(0,t.jsxs)("div",{className:"flex items-start gap-3 px-[18px] pb-2 pt-4",children:[(0,t.jsx)("span",{className:"grid size-9 shrink-0 place-items-center rounded-lg bg-sunken text-ink-soft",children:(0,t.jsx)(_,{size:19})}),(0,t.jsxs)("div",{children:[(0,t.jsx)(u.F,{className:"text-base",children:I.title}),(0,t.jsx)(u.C,{className:"mt-0.5 text-[13px] text-ink-soft",children:I.about})]})]}),(0,t.jsxs)("form",{onSubmit:t=>{let a;t.preventDefault(),a={},"telegram"!==e||x||(a.chat="Press Find chats, then pick one."),"discord"!==e||R.trim()||(a.url="Paste the whole webhook URL from Discord."),"webhook"!==e||R.trim()||(a.url="Paste the whole address, starting with https://."),"smtp"!==e||$.host.trim()||(a.host="Enter the server name, for example smtp.office365.com."),"smtp"!==e||$.to.trim()||(a.to="Enter the address that gets the alerts."),"email_digest"!==e||M.trim()||(a.to="Enter a valid email address."),U(a),Object.keys(a).length||P(async()=>{try{let t=l.find(e=>e.id===x)?.label??"",a="telegram"===e?await v(x,t):"discord"===e?await g(R):"webhook"===e?await y(R,D):"smtp"===e?await f({...$,port:Number($.port)}):await b(M);if(!a.ok){U(a.fieldErrors??{}),a.fieldErrors||d.c.error(a.error);return}d.c.success("Channel saved",{description:a.message}),i(!1)}catch{d.c.error("Watchbell didn't answer. Check that it's still running, then try again.")}})},children:[(0,t.jsxs)("div",{className:"px-[18px] pt-2",children:["telegram"===e&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(c.O,{id:"ch-chat",label:"Chat",help:"Send /start to your bot in Telegram first.",error:O.chat,children:(0,t.jsxs)("select",{id:"ch-chat",className:c.S,value:x,onChange:e=>N(e.target.value),children:[0===l.length&&(0,t.jsx)("option",{value:"",children:"Press Find chats after you message the bot"}),l.map(e=>(0,t.jsx)("option",{value:e.id,children:e.label},e.id))]})}),(0,t.jsx)("p",{className:"mb-3",children:(0,t.jsx)(c.K,{size:"sm",onClick:function(){z(async()=>{try{let e=await w();if(!e.ok)return void d.c.error(e.error);let t=e.data?.chats??[];p(t),N(t[0]?.id??""),U({}),t.length?d.c.success(`Found ${t.length} chat${1===t.length?"":"s"}: ${t.map(e=>e.label).join(", ")}.`):d.c.info("No chats yet",{description:e.message??"Send /start to your bot in Telegram, then try again."})}catch{d.c.error("Watchbell didn't answer. Check that it's still running, then try again.")}})},disabled:F,children:F?"Looking…":"Find chats"})})]}),"discord"===e&&(0,t.jsx)(c.O,{id:"ch-hook",label:"Webhook URL",help:"Encrypted before it's saved and never shown again.",error:O.url,children:(0,t.jsx)("input",{id:"ch-hook",className:c.S,type:"password",autoComplete:"off",placeholder:"https://discord.com/api/webhooks/…",value:R,onChange:e=>T(e.target.value)})}),"webhook"===e&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(c.O,{id:"ch-wh",label:"Address",help:"Encrypted before it's saved and never shown again; the console shows only its host.",error:O.url,children:(0,t.jsx)("input",{id:"ch-wh",className:c.S,type:"url",autoComplete:"off",placeholder:"https://n8n.example.com/webhook/…",value:R,onChange:e=>T(e.target.value)})}),(0,t.jsx)(c.O,{id:"ch-wh-secret",label:"Secret (optional)",help:"16 to 200 characters. Each body is signed with it: header X-Watchbell-Signature = sha256 HMAC of the timestamp, a dot and the body.",error:O.secret,children:(0,t.jsx)("input",{id:"ch-wh-secret",className:c.S,type:"password",autoComplete:"off",value:D,onChange:e=>E(e.target.value)})})]}),"smtp"===e&&(0,t.jsxs)("div",{className:"grid grid-cols-2 gap-x-3 max-[520px]:grid-cols-1",children:[(0,t.jsx)(c.O,{id:"ch-sm-host",label:"Server",error:O.host,children:(0,t.jsx)("input",{id:"ch-sm-host",className:c.S,autoComplete:"off",placeholder:"smtp.office365.com",value:$.host,onChange:e=>A({...$,host:e.target.value})})}),(0,t.jsx)(c.O,{id:"ch-sm-port",label:"Port",error:O.port,children:(0,t.jsxs)("select",{id:"ch-sm-port",className:c.S,value:$.port,onChange:e=>A({...$,port:e.target.value}),children:[(0,t.jsx)("option",{value:"587",children:"587 · STARTTLS"}),(0,t.jsx)("option",{value:"465",children:"465 · TLS"}),(0,t.jsx)("option",{value:"2525",children:"2525 · STARTTLS"})]})}),(0,t.jsx)(c.O,{id:"ch-sm-user",label:"User name",error:O.user,children:(0,t.jsx)("input",{id:"ch-sm-user",className:c.S,autoComplete:"off",value:$.user,onChange:e=>A({...$,user:e.target.value})})}),(0,t.jsx)(c.O,{id:"ch-sm-pass",label:"Password",help:a?"Leave empty to keep the saved one.":"Encrypted before it's saved and never shown again.",error:O.pass,children:(0,t.jsx)("input",{id:"ch-sm-pass",className:c.S,type:"password",autoComplete:"off",value:$.pass,onChange:e=>A({...$,pass:e.target.value})})}),(0,t.jsx)(c.O,{id:"ch-sm-from",label:"From",error:O.from,children:(0,t.jsx)("input",{id:"ch-sm-from",className:c.S,type:"email",autoComplete:"off",placeholder:"alerts@example.com",value:$.from,onChange:e=>A({...$,from:e.target.value})})}),(0,t.jsxs)("div",{className:"col-span-2 max-[520px]:col-span-1",children:[(0,t.jsx)(c.O,{id:"ch-sm-to",label:"Send to",help:"Up to 10 addresses; each one gets the same email. Press Enter or a comma after each.",error:O.to,children:(0,t.jsx)(m,{id:"ch-sm-to",onChange:e=>A(t=>({...t,to:e}))})}),"onboarding@resend.dev"===$.from.trim().toLowerCase()&&$.to.includes(",")&&(0,t.jsx)("p",{className:"-mt-2 mb-3.5 rounded-md border border-warn/40 bg-warn-soft px-2.5 py-2 text-[12.5px]",children:"Resend's test sender (onboarding@resend.dev) only delivers to your own Resend account address. Verify a domain in Resend and send from it to reach other people."})]})]}),"email_digest"===e&&(0,t.jsx)(c.O,{id:"ch-to",label:"Send to",error:O.to,children:(0,t.jsx)("input",{id:"ch-to",className:c.S,type:"email",autoComplete:"off",placeholder:"name@example.com",value:M,onChange:e=>L(e.target.value)})})]}),(0,t.jsxs)("div",{className:"flex flex-wrap items-center justify-end gap-2 border-t border-line px-[18px] py-3",children:[(0,t.jsx)(c.K,{onClick:()=>B(!1),disabled:W,children:"Cancel"}),(0,t.jsx)(c.K,{type:"submit",variant:"primary",disabled:W,children:W?"Saving…":"Save"})]})]})]})]}),a&&s&&null===n&&(0,t.jsx)(c.K,{size:"sm",disabled:K,onClick:()=>V(()=>k(e),`${C[e]} test`),children:K?"Sending…":"Send test"}),a&&(0,t.jsx)(c.K,{size:"sm",variant:"ghost",disabled:K,onClick:()=>V(()=>S(e,!s),C[e]),children:s?"Turn off":"Turn on"})]})}],108608)},274224,e=>{var t=e.i(843476),a=e.i(271645),s=e.i(846696),n=e.i(428325),r=e.i(95187);let i=(0,r.createServerReference)("606ce6c4a10f11f377bbec5d6a30a27ab11f75b0e5",r.callServer,void 0,r.findSourceMapURL,"setNotifyLanguage");e.s(["LanguageSelect",0,function({channel:e,label:r,saved:l}){let[o,d]=(0,a.useState)(l),[c,h]=(0,a.useTransition)();return(0,t.jsxs)("select",{"aria-label":`${r} language`,className:`${n.S} w-auto min-w-[160px]`,value:o,disabled:c,onChange:t=>{var a;d(a="id"===t.target.value?"id":"en"),h(async()=>{try{let t=await i(e,a);t.ok?s.c.success(`${r} language saved`,{description:t.message}):(d(o),s.c.error(t.error))}catch{d(o),s.c.error("Watchbell didn't answer. Check that it's still running, then try again.")}})},children:[(0,t.jsx)("option",{value:"en",children:"English"}),(0,t.jsx)("option",{value:"id",children:"Bahasa Indonesia"})]})}],274224)},689721,e=>{var t=e.i(843476),a=e.i(668029),s=e.i(271645),n=e.i(846696),r=e.i(428325),i=e.i(500443),l=e.i(776639);let o=e=>(e??0).toLocaleString("en-US"),d={MonitorDown:{key:"MonitorDown",severity:"critical",threshold:3,bounds:[1,10],source:"own",needs:null,sampled:!0,condition:e=>`${o(e)} failed checks in a row`},CollectorStale:{key:"CollectorStale",severity:"critical",threshold:5,bounds:[3,60],source:"own",needs:null,sampled:!1,condition:e=>`No collector run for ${o(e)} min`},HighLatency:{key:"HighLatency",severity:"warning",threshold:1500,bounds:[100,3e4],source:"own",needs:null,sampled:!0,condition:e=>`Slowest 5% of checks over ${o(e)} ms for 10 min`},DeploymentFailed:{key:"DeploymentFailed",severity:"warning",threshold:null,bounds:null,source:"api",needs:null,sampled:!1,condition:()=>"A production deploy fails"},DatabasePaused:{key:"DatabasePaused",severity:"warning",threshold:null,bounds:null,source:"api",needs:"databases",sampled:!1,condition:()=>"Supabase pauses the project"},CertExpiringSoon:{key:"CertExpiringSoon",severity:"warning",threshold:14,bounds:[1,90],source:"own",needs:"domains",sampled:!1,condition:e=>`TLS certificate expires in < ${o(e)} days`},DomainExpiringSoon:{key:"DomainExpiringSoon",severity:"warning",threshold:30,bounds:[1,180],source:"api",needs:"domains",sampled:!1,condition:e=>`Domain expires in < ${o(e)} days`},StorageAlmostFull:{key:"StorageAlmostFull",severity:"warning",threshold:80,bounds:[10,100],source:"api",needs:"databases",sampled:!1,condition:e=>`Database size > ${o(e)}% of free limit`},NeonComputeHigh:{key:"NeonComputeHigh",severity:"warning",threshold:80,bounds:[1,100],source:"api",needs:"databases",sampled:!1,condition:e=>`> ${o(e)} of 100 CU-hours this month`},FirestoreQuotaHigh:{key:"FirestoreQuotaHigh",severity:"warning",threshold:80,bounds:[10,100],source:"test",needs:"databases",sampled:!1,condition:e=>`Daily reads > ${o(e)}% of 50k`},AutoPauseRisk:{key:"AutoPauseRisk",severity:"info",threshold:4,bounds:[1,6],source:"api",needs:"databases",sampled:!1,condition:e=>`Supabase project without API traffic for ${o(e)}+ days`},DnsProxiedToVercel:{key:"DnsProxiedToVercel",severity:"info",threshold:null,bounds:null,source:"api",needs:"dns",sampled:!1,condition:()=>"Cloudflare record proxied in front of Vercel"},ComputeHigh:{key:"ComputeHigh",severity:"warning",threshold:80,bounds:[50,95],source:"api",needs:"databases",sampled:!1,condition:e=>`Supabase CPU > ${o(e)}% for 15 min, RAM > ${o(Math.min(99,(e??80)+10))}%, disk > ${o(e)}% or connections > ${o(e)}% of max`},DbQuotaHigh:{key:"DbQuotaHigh",severity:"warning",threshold:80,bounds:[10,100],source:"api",needs:"databases",sampled:!1,condition:e=>`Turso, Upstash or D1 usage > ${o(e)}% of a free-plan quota`},CredentialExpiring:{key:"CredentialExpiring",severity:"warning",threshold:14,bounds:[1,60],source:"api",needs:null,sampled:!1,condition:e=>`Account credential expires in < ${o(e)} days`},VulnerableDependency:{key:"VulnerableDependency",severity:"warning",threshold:null,bounds:null,source:"api",needs:null,sampled:!1,condition:()=>"A dependency has a critical or high advisory, or a moderate one on a direct dependency (OSV.dev)"},FrameworkVulnerable:{key:"FrameworkVulnerable",severity:"warning",threshold:null,bounds:null,source:"own",needs:null,sampled:!1,condition:()=>"The app's Next.js version has a known advisory (OSV.dev)"},CiFailing:{key:"CiFailing",severity:"warning",threshold:null,bounds:null,source:"api",needs:null,sampled:!1,condition:()=>"The latest GitHub Actions run on the default branch failed"},OsSecurityUpdate:{key:"OsSecurityUpdate",severity:"warning",threshold:7,bounds:[0,10],source:"own",needs:null,sampled:!1,condition:e=>`A waiting security update fixes a CVE scored ${(e??7).toFixed(1)}+ (CVSS), or a new kernel waits for a reboot`},MonitorDomainMoved:{key:"MonitorDomainMoved",severity:"warning",threshold:null,bounds:null,source:"own",needs:null,sampled:!1,condition:()=>"The monitor's domain is no longer one of the app's domains"}};Object.keys(d),e.i(684496);let c=[["critical","Critical"],["warning","Warning"],["info","Info"]];var h=e.i(95187);let u=(0,h.createServerReference)("60f3c3029279219d908e4964347ace788c2a073de1",h.callServer,void 0,h.findSourceMapURL,"editRule"),p=(0,h.createServerReference)("607dba40591fba6589aa4c7c851d1d4e2eb17c3de2",h.callServer,void 0,h.findSourceMapURL,"testRule"),m=["status","severity","rule","target","detail","cause","step","since","threshold"],x=["id","en"],b={status:"FIRING, REPEAT or RESOLVED (MUNCUL, ULANG, PULIH in Indonesian)",severity:"critical, warning or info",rule:"the rule's key, like MonitorDown",target:"what the alert is about: an app, a database, a domain",detail:"Watchbell's sentence about what it saw",cause:"the alert that caused this one, or a provider incident",step:"Watchbell's next step for rules that have one",since:"when the alert started: the time and the time zone",threshold:"the rule's number from Threshold"},g={en:"{status} · {severity} · {rule} · {target}\n{detail}\n{cause}\nNext step: {step}\nsince {since}",id:"{status} · {severity} · {rule} · {target}\n{detail}\n{cause}\nYang perlu kamu lakukan: {step}\nsejak {since}"},f={en:"Test message: Watchbell's sentence about what it saw goes here.",id:"Pesan tes: di sini nanti kalimat Watchbell soal apa yang dilihatnya."},v=/\{([a-zA-Z_]+)\}/g,y=e=>e.replace(/\r\n?/g,"\n").replace(/[ \t]+$/gm,"").trim();function k(e,t){let a="string"==typeof e?y(e):"";return a&&a!==g[t]?a:null}let S={id:"Bahasa Indonesia",en:"English"},w={en:"FIRING",id:"MUNCUL"},j={en:{critical:"critical",warning:"warning",info:"info"},id:{critical:"kritis",warning:"peringatan",info:"info"}},C={en:"1 firing",id:"1 aktif"},N={en:"Open alerts",id:"Buka Alerts"},R=e=>({id:e.id??g.id,en:e.en??g.en});function T({ruleKey:e,severity:a,threshold:n,sample:i,texts:l,onChange:o,errors:d}){let[c,h]=(0,s.useState)("id"),u=(0,s.useRef)(null),p=l[c],R=null!==k(p,c),M={status:w[c],severity:j[c][a]??a,rule:e,target:"my-app",detail:f[c],cause:"",step:i.step[c]??"",since:i.since,threshold:n},[L="",...D]=y(p).split("\n").flatMap(e=>{let t=[...e.matchAll(v)].map(e=>e[1]).filter(e=>Object.hasOwn(M,e));return t.length&&t.every(e=>!M[e].trim())?[]:[e.replace(v,(e,t)=>Object.hasOwn(M,t)?M[t]:e)]}).join("\n").replace(/\n{3,}/g,"\n\n").trim().split("\n");return(0,t.jsxs)("fieldset",{className:"mb-3.5 flex flex-col gap-[5px] border-t border-line pt-3.5",children:[(0,t.jsxs)("div",{className:"flex items-baseline justify-between gap-2",children:[(0,t.jsx)("legend",{className:"text-[13px] font-medium",children:"Message"}),(0,t.jsx)("span",{className:`rounded-full border px-2 py-px text-[11.5px] ${R?"border-brand/40 text-brand":"border-line text-ink-soft"}`,children:R?"Changed":"Watchbell's wording"})]}),(0,t.jsx)("span",{className:"text-[12.5px] text-ink-soft",children:"Word the notification yourself. Left as it is, the rule keeps Watchbell's wording, including later fixes to it."}),(0,t.jsx)("div",{role:"tablist",className:"mt-1 flex gap-1 border-b border-line",children:x.map(e=>(0,t.jsxs)("button",{type:"button",role:"tab","aria-selected":e===c,onClick:()=>h(e),className:`-mb-px border-b-2 px-2.5 py-1.5 text-[13px] ${e===c?"border-brand font-medium text-ink":"border-transparent text-ink-soft hover:text-ink"}`,children:[S[e],null!==k(l[e],e)?" · changed":""]},e))}),(0,t.jsx)("textarea",{ref:u,id:`rule-msg-${c}`,"aria-label":`Message in ${S[c]}`,className:`${r.S} min-h-[124px] resize-y font-mono text-[12.5px] leading-relaxed`,maxLength:1200,value:p,onChange:e=>o({...l,[c]:e.target.value})}),(0,t.jsx)("div",{className:"flex flex-wrap gap-1.5",children:m.map(e=>(0,t.jsx)("button",{type:"button",title:b[e],onClick:()=>{let t,a,s,n;return t=u.current,a=t?.selectionStart??p.length,s=t?.selectionEnd??a,n=`{${e}}`,void(o({...l,[c]:p.slice(0,a)+n+p.slice(s)}),requestAnimationFrame(()=>{t?.focus(),t?.setSelectionRange(a+n.length,a+n.length)}))},className:"rounded border border-line-strong bg-sunken px-1.5 py-px font-mono text-[12px] text-ink hover:border-brand",children:`{${e}}`},e))}),d[`template_${c}`]&&(0,t.jsx)("span",{className:"text-[12.5px] text-err",role:"alert",children:d[`template_${c}`]}),x.filter(e=>e!==c&&d[`template_${e}`]).map(e=>(0,t.jsxs)("span",{className:"text-[12.5px] text-err",role:"alert",children:[S[e],": ",d[`template_${e}`]]},e)),(0,t.jsxs)("div",{className:"flex flex-wrap items-center justify-between gap-2",children:[(0,t.jsx)("span",{className:"text-[12.5px] text-ink-soft",children:"A line whose fields are all empty is left out."}),(0,t.jsx)("button",{type:"button",className:"text-[12.5px] text-link underline disabled:opacity-50 disabled:no-underline",disabled:!R,onClick:()=>o({...l,[c]:g[c]}),children:"Back to Watchbell's wording"})]}),(0,t.jsxs)("div",{className:"mt-1 rounded-md border border-line bg-sunken px-3 py-2.5 text-[13px] leading-relaxed",children:[(0,t.jsx)("div",{className:"mb-1 text-[11.5px] uppercase tracking-wide text-ink-faint",children:"Preview, with sample values"}),(0,t.jsxs)("div",{className:"whitespace-pre-wrap break-words",children:[(0,t.jsx)("b",{children:"Watchbell"}),": ",C[c]," · ",i.since,"\n\n",(0,t.jsx)("b",{children:L}),D.length?`
2
- ${D.join("\n")}`:"","\n",(0,t.jsx)("span",{className:"text-link",children:N[c]})]})]})]})}let M=[["telegram","Telegram"],["discord","Discord"],["webhook","Webhook"],["smtp","Email (SMTP)"],["email_digest","Daily email digest"]],L=e=>({severity:e.severity,threshold:null===e.threshold?"":e.threshold.toLocaleString("en-US"),channels:[...e.channels],enabled:e.enabled});e.s(["RuleActions",0,function({rule:e,condition:o,templates:h,sample:m}){let[x,b]=(0,s.useState)(!1),[g,f]=(0,s.useState)(()=>L(e)),[v,y]=(0,s.useState)(()=>R(h)),[k,S]=(0,s.useState)({}),[w,j]=(0,s.useTransition)(),[C,N]=(0,s.useTransition)();(0,i.useHoldRefresh)(x);let D=d[e.key].bounds;function E(t){t&&(f(L(e)),y(R(h)),S({})),b(t)}function $(t,a){j(async()=>{try{let s=await u(e.key,t);if(!s.ok){S(s.fieldErrors??{}),n.c.error(s.error);return}a(s.message??""),b(!1)}catch{n.c.error("Watchbell didn't answer. Check that it's still running, then try again.")}})}return(0,t.jsxs)("span",{className:"inline-flex gap-1.5",children:[(0,t.jsxs)(l.N,{open:x,onOpenChange:e=>{w||E(e)},children:[(0,t.jsx)(l.a,{render:(0,t.jsx)(r.K,{size:"sm",children:"Edit"})}),(0,t.jsxs)(l.d,{className:"max-h-[92vh] gap-0 overflow-y-auto p-0 sm:max-w-[620px]",showCloseButton:!1,children:[(0,t.jsxs)("div",{className:"flex items-start gap-3 px-[18px] pb-2 pt-4",children:[(0,t.jsx)("span",{className:"grid size-9 shrink-0 place-items-center rounded-lg bg-sunken text-ink-soft",children:(0,t.jsx)(a.f,{size:19})}),(0,t.jsxs)("div",{children:[(0,t.jsxs)(l.F,{className:"text-base",children:["Edit ",e.key]}),(0,t.jsx)(l.C,{className:"mt-0.5 text-[13px] text-ink-soft",children:o})]})]}),(0,t.jsxs)("form",{onSubmit:e=>{e.preventDefault(),$({...g,templates:v},e=>n.c.success("Rule saved",{description:e}))},children:[(0,t.jsxs)("div",{className:"px-[18px] pt-2",children:[(0,t.jsxs)("div",{className:"grid grid-cols-1 gap-3 sm:grid-cols-2",children:[(0,t.jsx)(r.O,{id:"rule-sev",label:"Severity",error:k.severity,children:(0,t.jsx)("select",{id:"rule-sev",className:r.S,value:g.severity,onChange:e=>f({...g,severity:e.target.value}),children:c.map(([e,a])=>(0,t.jsx)("option",{value:e,children:a},e))})}),D&&(0,t.jsx)(r.O,{id:"rule-num",label:"Threshold",help:`Replaces ${e.threshold?.toLocaleString("en-US")??"the number"} in the condition.`,error:k.threshold,children:(0,t.jsx)("input",{id:"rule-num",className:r.S,inputMode:"numeric",autoComplete:"off",value:g.threshold,onChange:e=>f({...g,threshold:e.target.value})})})]}),(0,t.jsxs)("fieldset",{className:"mb-3.5 flex flex-col gap-[5px]",children:[(0,t.jsx)("legend",{className:"mb-[5px] text-[13px] font-medium",children:"Send to"}),(0,t.jsx)("div",{className:"flex flex-wrap gap-x-4 gap-y-1.5",children:M.map(([e,a])=>(0,t.jsxs)("label",{className:"flex items-center gap-1.5 text-[13px]",children:[(0,t.jsx)("input",{type:"checkbox",className:"size-4 accent-brand",checked:g.channels.includes(e),onChange:t=>{let a;return a=t.target.checked,f({...g,channels:a?[...g.channels,e]:g.channels.filter(t=>t!==e)})}}),a]},e))}),(0,t.jsx)("span",{className:"text-[12.5px] text-ink-soft",children:"Opens and resolves are sent once; a still-firing alert repeats every 6 hours unless silenced."}),k.channels&&(0,t.jsx)("span",{className:"text-[12.5px] text-err",role:"alert",children:k.channels})]}),(0,t.jsxs)("label",{className:"mb-3.5 flex items-center gap-1.5 text-[13px]",children:[(0,t.jsx)("input",{type:"checkbox",className:"size-4 accent-brand",checked:g.enabled,onChange:e=>f({...g,enabled:e.target.checked})}),"Rule is on"]}),(0,t.jsx)(T,{ruleKey:e.key,severity:g.severity,threshold:g.threshold,sample:m,texts:v,onChange:y,errors:k})]}),(0,t.jsxs)("div",{className:"flex flex-wrap items-center justify-end gap-2 border-t border-line px-[18px] py-3",children:[(0,t.jsx)(r.K,{className:"mr-auto",disabled:w||C||!g.channels.some(e=>"email_digest"!==e),onClick:function(){N(async()=>{try{let t=await p(e.key,{...g,templates:v});S(t.ok?{}:t.fieldErrors??{}),t.ok?n.c.success("Test sent",{description:t.message}):n.c.error(t.error)}catch{n.c.error("Watchbell didn't answer. Check that it's still running, then try again.")}})},title:"Sends this message, as a made-up alert, to the ticked channels (not the daily digest)",children:C?"Sending…":"Send test"}),(0,t.jsx)(r.K,{onClick:()=>E(!1),disabled:w,children:"Cancel"}),(0,t.jsx)(r.K,{type:"submit",variant:"primary",disabled:w,children:w?"Saving…":"Save rule"})]})]})]})]}),(0,t.jsx)(r.K,{size:"sm",disabled:w,onClick:()=>$({...L(e),enabled:!e.enabled},t=>e.enabled?n.c.success(`${e.key} disabled. It won't fire until you enable it again.`):n.c.success(`${e.key} enabled.`,{description:t})),children:e.enabled?"Disable":"Enable"})]})}],689721)},582429,e=>{var t=e.i(843476),a=e.i(271645),s=e.i(846696),n=e.i(428325),r=e.i(684496),i=e.i(95187);let l=(0,i.createServerReference)("00e0de83cc18ec8156d86a1654a38d4036b4a490af",i.callServer,void 0,i.findSourceMapURL,"approvalsStatus"),o=(0,i.createServerReference)("0045a72950083821e1e2374c5248fa4f22a6d2fd74",i.callServer,void 0,i.findSourceMapURL,"disableApprovals"),d=(0,i.createServerReference)("00958f9dc6d453492285a10eb43db391b7949ad3a0",i.callServer,void 0,i.findSourceMapURL,"enableApprovals"),c=(0,i.createServerReference)("000dd3e25ca3857b707990511976433abebd06bb8f",i.callServer,void 0,i.findSourceMapURL,"telegramLinkCode");e.s(["TelegramApprovals",0,function(){let[e,i]=(0,a.useState)(null),[h,u]=(0,a.useState)(null),[p,m]=(0,a.useState)(null),[x,b]=(0,a.useTransition)();function g(e,t){b(async()=>{try{let a=await e();if(!a.ok)return void s.c.error(a.error??"Watchbell didn't answer. Check that it's still running, then try again.");a.data&&i(a.data),t?.(),a.message&&s.c.success("Approval buttons",{description:a.message})}catch{s.c.error("Watchbell didn't answer. Check that it's still running, then try again.")}})}(0,a.useEffect)(()=>{let e=!0;return l().then(t=>{e&&(t.ok&&t.data?i(t.data):u(t.ok?null:t.error))}).catch(()=>e&&u("Couldn't read the status.")),()=>{e=!1}},[]);let f=e?e.on?e.linked?"On · linked to your Telegram account":"On · not linked yet":"Off":h??"Checking…",v=p?(0,r.U)(new Date(p.expiresAt)):"";return(0,t.jsxs)("div",{className:"mt-1 basis-full rounded-md border border-line px-3 py-2 text-[13px]",children:[(0,t.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,t.jsx)("span",{className:"font-medium",children:"Approval buttons"}),(0,t.jsx)("span",{className:"text-ink-soft",children:f}),(0,t.jsxs)("span",{className:"ml-auto inline-flex flex-wrap gap-2",children:[e&&!e.on&&(0,t.jsx)(n.K,{size:"sm",disabled:x,onClick:()=>g(d),children:x?"Working…":"Turn on"}),e?.on&&(0,t.jsx)(n.K,{size:"sm",disabled:x,onClick:function(){b(async()=>{try{let e=await c();e.ok&&e.data?m(e.data):s.c.error(e.ok?"Watchbell didn't answer. Check that it's still running, then try again.":e.error)}catch{s.c.error("Watchbell didn't answer. Check that it's still running, then try again.")}})},children:e.linked?"Link again":"Show link code"}),e?.on&&(0,t.jsx)(n.K,{size:"sm",variant:"ghost",disabled:x,onClick:()=>g(o,()=>m(null)),children:"Turn off"})]})]}),(0,t.jsx)("p",{className:"mt-1 text-[12.5px] text-ink-soft",children:"Proposal notices get ✅ Approve / ❌ Reject buttons that only your linked Telegram account can use; risky actions ask twice. While this is on, Telegram sends updates to the console instead of holding them, so Find chats lists the chats the bot has seen since then."}),e?.problem&&(0,t.jsx)("p",{className:"mt-1 text-[12.5px] text-err",children:e.problem}),p&&(0,t.jsxs)("p",{className:"mt-1 text-[12.5px]",children:["Send ",(0,t.jsxs)("code",{className:"rounded bg-sunken px-1 font-mono",children:["/link ",p.code]})," in the connected chat before ",v,". The code works once."]})]})}],582429)}])})();
1
+ (()=>{"use strict";(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,239647,e=>{var t=e.i(843476),a=e.i(271645),s=e.i(846696),n=e.i(177106),r=e.i(95187);let i=(0,r.createServerReference)("608d4682bdbce2365987d61aa940e376528bdd2cf8",r.callServer,void 0,r.findSourceMapURL,"silence");e.s(["AlertMenu",0,function({id:e,label:r,silenced:l,resourceHref:o}){let[,d]=(0,a.useTransition)(),c=(0,a.useRef)(!1),h=t=>{c.current||(c.current=!0,d(async()=>{try{let a=await i(e,t);a.ok?s.c.success(a.message??""):s.c.error(a.error)}catch{s.c.error("Watchbell didn't answer. Check that it's still running, then try again.")}finally{c.current=!1}}))},u=o?[{label:"View resource",href:o}]:[];return(0,t.jsx)(n.RowMenu,{label:`Actions for ${r}`,items:l?[{label:"Unsilence",onSelect:()=>h("off")},...u]:[{label:"Silence 1 hour",onSelect:()=>h("1h")},{label:"Silence until resolved",onSelect:()=>h("resolved")},...u]})}],239647)},108608,e=>{var t=e.i(843476),a=e.i(33550);let s=(0,a.f)("outline","brand-discord","BrandDiscord",[["path",{d:"M8 12a1 1 0 1 0 2 0a1 1 0 0 0 -2 0",key:"svg-0"}],["path",{d:"M14 12a1 1 0 1 0 2 0a1 1 0 0 0 -2 0",key:"svg-1"}],["path",{d:"M15.5 17c0 1 1.5 3 2 3c1.5 0 2.833 -1.667 3.5 -3c.667 -1.667 .5 -5.833 -1.5 -11.5c-1.457 -1.015 -3 -1.34 -4.5 -1.5l-.972 1.923a11.913 11.913 0 0 0 -4.053 0l-.975 -1.923c-1.5 .16 -3.043 .485 -4.5 1.5c-2 5.667 -2.167 9.833 -1.5 11.5c.667 1.333 2 3 3.5 3c.5 0 2 -2 2 -3",key:"svg-2"}],["path",{d:"M7 16.5c3.5 1 6.5 1 10 0",key:"svg-3"}]]),n=(0,a.f)("outline","brand-telegram","BrandTelegram",[["path",{d:"M15 10l-4 4l6 6l4 -16l-18 7l4 2l2 6l3 -4",key:"svg-0"}]]),r=(0,a.f)("outline","mail","Mail",[["path",{d:"M3 7a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v10a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2v-10",key:"svg-0"}],["path",{d:"M3 7l9 6l9 -6",key:"svg-1"}]]),i=(0,a.f)("outline","webhook","Webhook",[["path",{d:"M4.876 13.61a4 4 0 1 0 6.124 3.39h6",key:"svg-0"}],["path",{d:"M15.066 20.502a4 4 0 1 0 1.934 -7.502c-.706 0 -1.424 .179 -2 .5l-3 -5.5",key:"svg-1"}],["path",{d:"M16 8a4 4 0 1 0 -8 0c0 1.506 .77 2.818 2 3.5l-3 5.5",key:"svg-2"}]]);var l=e.i(944971),o=e.i(271645),d=e.i(846696),c=e.i(428325),h=e.i(500443),u=e.i(776639),p=e.i(357772);function m({id:e,onChange:a}){let[s,n]=(0,o.useState)([]),[r,i]=(0,o.useState)(""),l=(e,t)=>{n(e),i(t),a([...e,t.trim()].filter(Boolean).join(", "))},d=e=>{var t;let a;return l((t=[...s,e].join(","),a=new Set,t.split(/[\s,;]+/).filter(e=>e&&!a.has(e.toLowerCase())&&a.add(e.toLowerCase()))),"")};return(0,t.jsxs)("div",{className:"flex min-h-[34px] flex-wrap items-center gap-1.5 rounded-md border border-line-strong bg-surface px-1.5 py-1 focus-within:border-brand focus-within:ring-2 focus-within:ring-brand/40",children:[s.map((e,a)=>(0,t.jsxs)("span",{className:"inline-flex items-center gap-1 rounded-full border border-line bg-sunken py-0.5 pl-2.5 pr-1 text-[12.5px]",children:[e,(0,t.jsx)("button",{type:"button",className:"grid size-4 place-items-center rounded-full text-ink-soft hover:text-ink","aria-label":`Remove ${e}`,onClick:()=>l(s.filter((e,t)=>t!==a),r),children:(0,t.jsx)(p.f,{size:12,"aria-hidden":!0})})]},e)),(0,t.jsx)("input",{id:e,className:"min-w-[160px] flex-1 bg-transparent px-1 py-0.5 text-ink outline-none",type:"text",inputMode:"email",autoComplete:"off",placeholder:s.length?s.length<10?"Add another":"":"you@example.com",value:r,onChange:e=>/[\s,;]/.test(e.target.value)?d(e.target.value):l(s,e.target.value),onKeyDown:e=>{"Enter"===e.key&&r.trim()?(e.preventDefault(),d(r)):"Backspace"===e.key&&!r&&s.length&&l(s.slice(0,-1),s.at(-1))},onBlur:()=>{r.trim()&&d(r)}})]})}var b=e.i(95187);let x=(0,b.createServerReference)("40a4fb3ec04f122f810c7675e4fb740b4758efaa38",b.callServer,void 0,b.findSourceMapURL,"saveDigest"),f=(0,b.createServerReference)("40ced88210be7cf768af7228923fc098731f5e6e44",b.callServer,void 0,b.findSourceMapURL,"saveDiscord"),g=(0,b.createServerReference)("406b4ff4392f1793bf4c3c485a253bb3bc343eb727",b.callServer,void 0,b.findSourceMapURL,"saveSmtp"),v=(0,b.createServerReference)("60bfbda3253990a3eb126f5024ce50aade85e582f9",b.callServer,void 0,b.findSourceMapURL,"saveTelegram"),y=(0,b.createServerReference)("6044cefdc5ff2d305c6fb9d407066493c9cb0c5ed5",b.callServer,void 0,b.findSourceMapURL,"saveWebhook"),k=(0,b.createServerReference)("404ec4c0b56114459c888213350ecd92de37737437",b.callServer,void 0,b.findSourceMapURL,"sendTest"),S=(0,b.createServerReference)("60a0b6cf29d7eddadb887abbbca2cb7d4932481379",b.callServer,void 0,b.findSourceMapURL,"setChannelEnabled"),w=(0,b.createServerReference)("0021b04799b656b611379fb07c5a6fec113930cc43",b.callServer,void 0,b.findSourceMapURL,"telegramChats"),j={telegram:{icon:n,title:"Connect Telegram",name:"Telegram",about:`The bot token is ${l.n.setting} (TELEGRAM_BOT_TOKEN). Here you only choose the chat.`},discord:{icon:s,title:"Connect Discord",name:"Discord",about:"Discord → Channel settings → Integrations → Webhooks → New webhook → Copy URL."},webhook:{icon:i,title:"Connect a webhook",name:"Webhook",about:"Watchbell POSTs JSON to this address for every alert message. It must be https on a public host (port 443); Watchbell doesn't post into private networks or follow redirects."},smtp:{icon:r,title:"Email through your mail server",name:"Email (SMTP)",about:"Port 587 or 2525 with STARTTLS, or 465 with TLS; the password only ever goes over TLS. The server must be on the public internet. Office 365: smtp.office365.com, 587, and an app password if your account has MFA."},email_digest:{icon:r,title:"Daily email digest",name:"Daily email digest",about:`Sent through Resend from the address in DIGEST_FROM. The API key is ${l.n.setting} (RESEND_API_KEY).`}},C={telegram:"Telegram",discord:"Discord",webhook:"Webhook",smtp:"Email (SMTP)",email_digest:"Daily email digest"};e.s(["ChannelControls",0,function({kind:e,connected:a,enabled:s,envMissing:n}){let[r,i]=(0,o.useState)(!1),[l,p]=(0,o.useState)([]),[b,N]=(0,o.useState)(""),[R,T]=(0,o.useState)(""),[M,L]=(0,o.useState)(""),[D,E]=(0,o.useState)(""),[$,A]=(0,o.useState)({host:"",port:"587",user:"",pass:"",from:"",to:""}),[O,U]=(0,o.useState)({}),[W,P]=(0,o.useTransition)(),[F,z]=(0,o.useTransition)(),[K,H]=(0,o.useTransition)();(0,h.useHoldRefresh)(r);let I=j[e],_=I.icon;function B(e){e&&(p([]),N(""),T(""),L(""),E(""),A({host:"",port:"587",user:"",pass:"",from:"",to:""}),U({})),i(e)}function V(e,t){H(async()=>{try{let a=await e();a.ok?d.c.success(t,{description:a.message}):d.c.error(a.error)}catch{d.c.error("Watchbell didn't answer. Check that it's still running, then try again.")}})}return(0,t.jsxs)("span",{className:"inline-flex flex-wrap items-center gap-2",children:[(0,t.jsxs)(u.N,{open:r,onOpenChange:e=>{W||B(e)},children:[(0,t.jsx)(u.a,{render:(0,t.jsx)(c.K,{size:"sm",disabled:null!==n,children:a?"Change":"Connect"})}),(0,t.jsxs)(u.d,{className:"max-h-[92vh] gap-0 overflow-y-auto p-0 sm:max-w-[560px]",showCloseButton:!1,children:[(0,t.jsxs)("div",{className:"flex items-start gap-3 px-[18px] pb-2 pt-4",children:[(0,t.jsx)("span",{className:"grid size-9 shrink-0 place-items-center rounded-lg bg-sunken text-ink-soft",children:(0,t.jsx)(_,{size:19})}),(0,t.jsxs)("div",{children:[(0,t.jsx)(u.F,{className:"text-base",children:I.title}),(0,t.jsx)(u.C,{className:"mt-0.5 text-[13px] text-ink-soft",children:I.about})]})]}),(0,t.jsxs)("form",{onSubmit:t=>{let a;t.preventDefault(),a={},"telegram"!==e||b||(a.chat="Press Find chats, then pick one."),"discord"!==e||R.trim()||(a.url="Paste the whole webhook URL from Discord."),"webhook"!==e||R.trim()||(a.url="Paste the whole address, starting with https://."),"smtp"!==e||$.host.trim()||(a.host="Enter the server name, for example smtp.office365.com."),"smtp"!==e||$.to.trim()||(a.to="Enter the address that gets the alerts."),"email_digest"!==e||M.trim()||(a.to="Enter a valid email address."),U(a),Object.keys(a).length||P(async()=>{try{let t=l.find(e=>e.id===b)?.label??"",a="telegram"===e?await v(b,t):"discord"===e?await f(R):"webhook"===e?await y(R,D):"smtp"===e?await g({...$,port:Number($.port)}):await x(M);if(!a.ok){U(a.fieldErrors??{}),a.fieldErrors||d.c.error(a.error);return}d.c.success("Channel saved",{description:a.message}),i(!1)}catch{d.c.error("Watchbell didn't answer. Check that it's still running, then try again.")}})},children:[(0,t.jsxs)("div",{className:"px-[18px] pt-2",children:["telegram"===e&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(c.O,{id:"ch-chat",label:"Chat",help:"Send /start to your bot in Telegram first.",error:O.chat,children:(0,t.jsxs)("select",{id:"ch-chat",className:c.S,value:b,onChange:e=>N(e.target.value),children:[0===l.length&&(0,t.jsx)("option",{value:"",children:"Press Find chats after you message the bot"}),l.map(e=>(0,t.jsx)("option",{value:e.id,children:e.label},e.id))]})}),(0,t.jsx)("p",{className:"mb-3",children:(0,t.jsx)(c.K,{size:"sm",onClick:function(){z(async()=>{try{let e=await w();if(!e.ok)return void d.c.error(e.error);let t=e.data?.chats??[];p(t),N(t[0]?.id??""),U({}),t.length?d.c.success(`Found ${t.length} chat${1===t.length?"":"s"}: ${t.map(e=>e.label).join(", ")}.`):d.c.info("No chats yet",{description:e.message??"Send /start to your bot in Telegram, then try again."})}catch{d.c.error("Watchbell didn't answer. Check that it's still running, then try again.")}})},disabled:F,children:F?"Looking…":"Find chats"})})]}),"discord"===e&&(0,t.jsx)(c.O,{id:"ch-hook",label:"Webhook URL",help:"Encrypted before it's saved and never shown again.",error:O.url,children:(0,t.jsx)("input",{id:"ch-hook",className:c.S,type:"password",autoComplete:"off",placeholder:"https://discord.com/api/webhooks/…",value:R,onChange:e=>T(e.target.value)})}),"webhook"===e&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(c.O,{id:"ch-wh",label:"Address",help:"Encrypted before it's saved and never shown again; the console shows only its host.",error:O.url,children:(0,t.jsx)("input",{id:"ch-wh",className:c.S,type:"url",autoComplete:"off",placeholder:"https://n8n.example.com/webhook/…",value:R,onChange:e=>T(e.target.value)})}),(0,t.jsx)(c.O,{id:"ch-wh-secret",label:"Secret (optional)",help:"16 to 200 characters. Each body is signed with it: header X-Watchbell-Signature = sha256 HMAC of the timestamp, a dot and the body.",error:O.secret,children:(0,t.jsx)("input",{id:"ch-wh-secret",className:c.S,type:"password",autoComplete:"off",value:D,onChange:e=>E(e.target.value)})})]}),"smtp"===e&&(0,t.jsxs)("div",{className:"grid grid-cols-2 gap-x-3 max-[520px]:grid-cols-1",children:[(0,t.jsx)(c.O,{id:"ch-sm-host",label:"Server",error:O.host,children:(0,t.jsx)("input",{id:"ch-sm-host",className:c.S,autoComplete:"off",placeholder:"smtp.office365.com",value:$.host,onChange:e=>A({...$,host:e.target.value})})}),(0,t.jsx)(c.O,{id:"ch-sm-port",label:"Port",error:O.port,children:(0,t.jsxs)("select",{id:"ch-sm-port",className:c.S,value:$.port,onChange:e=>A({...$,port:e.target.value}),children:[(0,t.jsx)("option",{value:"587",children:"587 · STARTTLS"}),(0,t.jsx)("option",{value:"465",children:"465 · TLS"}),(0,t.jsx)("option",{value:"2525",children:"2525 · STARTTLS"})]})}),(0,t.jsx)(c.O,{id:"ch-sm-user",label:"User name",error:O.user,children:(0,t.jsx)("input",{id:"ch-sm-user",className:c.S,autoComplete:"off",value:$.user,onChange:e=>A({...$,user:e.target.value})})}),(0,t.jsx)(c.O,{id:"ch-sm-pass",label:"Password",help:a?"Leave empty to keep the saved one.":"Encrypted before it's saved and never shown again.",error:O.pass,children:(0,t.jsx)("input",{id:"ch-sm-pass",className:c.S,type:"password",autoComplete:"off",value:$.pass,onChange:e=>A({...$,pass:e.target.value})})}),(0,t.jsx)(c.O,{id:"ch-sm-from",label:"From",error:O.from,children:(0,t.jsx)("input",{id:"ch-sm-from",className:c.S,type:"email",autoComplete:"off",placeholder:"alerts@example.com",value:$.from,onChange:e=>A({...$,from:e.target.value})})}),(0,t.jsxs)("div",{className:"col-span-2 max-[520px]:col-span-1",children:[(0,t.jsx)(c.O,{id:"ch-sm-to",label:"Send to",help:"Up to 10 addresses; each one gets the same email. Press Enter or a comma after each.",error:O.to,children:(0,t.jsx)(m,{id:"ch-sm-to",onChange:e=>A(t=>({...t,to:e}))})}),"onboarding@resend.dev"===$.from.trim().toLowerCase()&&$.to.includes(",")&&(0,t.jsx)("p",{className:"-mt-2 mb-3.5 rounded-md border border-warn/40 bg-warn-soft px-2.5 py-2 text-[12.5px]",children:"Resend's test sender (onboarding@resend.dev) only delivers to your own Resend account address. Verify a domain in Resend and send from it to reach other people."})]})]}),"email_digest"===e&&(0,t.jsx)(c.O,{id:"ch-to",label:"Send to",error:O.to,children:(0,t.jsx)("input",{id:"ch-to",className:c.S,type:"email",autoComplete:"off",placeholder:"name@example.com",value:M,onChange:e=>L(e.target.value)})})]}),(0,t.jsxs)("div",{className:"flex flex-wrap items-center justify-end gap-2 border-t border-line px-[18px] py-3",children:[(0,t.jsx)(c.K,{onClick:()=>B(!1),disabled:W,children:"Cancel"}),(0,t.jsx)(c.K,{type:"submit",variant:"primary",disabled:W,children:W?"Saving…":"Save"})]})]})]})]}),a&&s&&null===n&&(0,t.jsx)(c.K,{size:"sm",disabled:K,onClick:()=>V(()=>k(e),`${C[e]} test`),children:K?"Sending…":"Send test"}),a&&(0,t.jsx)(c.K,{size:"sm",variant:"ghost",disabled:K,onClick:()=>V(()=>S(e,!s),C[e]),children:s?"Turn off":"Turn on"})]})}],108608)},274224,e=>{var t=e.i(843476),a=e.i(271645),s=e.i(846696),n=e.i(428325),r=e.i(95187);let i=(0,r.createServerReference)("6081cb5db0411f7432737091f2bc2608e879d583e9",r.callServer,void 0,r.findSourceMapURL,"setNotifyLanguage");e.s(["LanguageSelect",0,function({channel:e,label:r,saved:l}){let[o,d]=(0,a.useState)(l),[c,h]=(0,a.useTransition)();return(0,t.jsxs)("select",{"aria-label":`${r} language`,className:`${n.S} w-auto min-w-[160px]`,value:o,disabled:c,onChange:t=>{var a;d(a="id"===t.target.value?"id":"en"),h(async()=>{try{let t=await i(e,a);t.ok?s.c.success(`${r} language saved`,{description:t.message}):(d(o),s.c.error(t.error))}catch{d(o),s.c.error("Watchbell didn't answer. Check that it's still running, then try again.")}})},children:[(0,t.jsx)("option",{value:"en",children:"English"}),(0,t.jsx)("option",{value:"id",children:"Bahasa Indonesia"})]})}],274224)},689721,e=>{var t=e.i(843476),a=e.i(668029),s=e.i(271645),n=e.i(846696),r=e.i(428325),i=e.i(500443),l=e.i(776639);let o=e=>(e??0).toLocaleString("en-US"),d={MonitorDown:{key:"MonitorDown",severity:"critical",threshold:3,bounds:[1,10],source:"own",needs:null,sampled:!0,condition:e=>`${o(e)} failed checks in a row`},CollectorStale:{key:"CollectorStale",severity:"critical",threshold:5,bounds:[3,60],source:"own",needs:null,sampled:!1,condition:e=>`No collector run for ${o(e)} min`},HighLatency:{key:"HighLatency",severity:"warning",threshold:1500,bounds:[100,3e4],source:"own",needs:null,sampled:!0,condition:e=>`Slowest 5% of checks over ${o(e)} ms for 10 min`},DeploymentFailed:{key:"DeploymentFailed",severity:"warning",threshold:null,bounds:null,source:"api",needs:null,sampled:!1,condition:()=>"A production deploy fails"},DatabasePaused:{key:"DatabasePaused",severity:"warning",threshold:null,bounds:null,source:"api",needs:"databases",sampled:!1,condition:()=>"Supabase pauses the project"},CertExpiringSoon:{key:"CertExpiringSoon",severity:"warning",threshold:14,bounds:[1,90],source:"own",needs:"domains",sampled:!1,condition:e=>`TLS certificate expires in < ${o(e)} days`},DomainExpiringSoon:{key:"DomainExpiringSoon",severity:"warning",threshold:30,bounds:[1,180],source:"api",needs:"domains",sampled:!1,condition:e=>`Domain expires in < ${o(e)} days`},StorageAlmostFull:{key:"StorageAlmostFull",severity:"warning",threshold:80,bounds:[10,100],source:"api",needs:"databases",sampled:!1,condition:e=>`Database size > ${o(e)}% of free limit`},NeonComputeHigh:{key:"NeonComputeHigh",severity:"warning",threshold:80,bounds:[1,100],source:"api",needs:"databases",sampled:!1,condition:e=>`> ${o(e)} of 100 CU-hours this month`},FirestoreQuotaHigh:{key:"FirestoreQuotaHigh",severity:"warning",threshold:80,bounds:[10,100],source:"test",needs:"databases",sampled:!1,condition:e=>`Daily reads > ${o(e)}% of 50k`},AutoPauseRisk:{key:"AutoPauseRisk",severity:"info",threshold:4,bounds:[1,6],source:"api",needs:"databases",sampled:!1,condition:e=>`Supabase project without API traffic for ${o(e)}+ days`},DnsProxiedToVercel:{key:"DnsProxiedToVercel",severity:"info",threshold:null,bounds:null,source:"api",needs:"dns",sampled:!1,condition:()=>"Cloudflare record proxied in front of Vercel"},ComputeHigh:{key:"ComputeHigh",severity:"warning",threshold:80,bounds:[50,95],source:"api",needs:"databases",sampled:!1,condition:e=>`Supabase CPU > ${o(e)}% for 15 min, RAM > ${o(Math.min(99,(e??80)+10))}%, disk > ${o(e)}% or connections > ${o(e)}% of max`},DbQuotaHigh:{key:"DbQuotaHigh",severity:"warning",threshold:80,bounds:[10,100],source:"api",needs:"databases",sampled:!1,condition:e=>`Turso, Upstash or D1 usage > ${o(e)}% of a free-plan quota`},CredentialExpiring:{key:"CredentialExpiring",severity:"warning",threshold:14,bounds:[1,60],source:"api",needs:null,sampled:!1,condition:e=>`Account credential expires in < ${o(e)} days`},VulnerableDependency:{key:"VulnerableDependency",severity:"warning",threshold:null,bounds:null,source:"api",needs:null,sampled:!1,condition:()=>"A dependency has a critical or high advisory, or a moderate one on a direct dependency (OSV.dev)"},FrameworkVulnerable:{key:"FrameworkVulnerable",severity:"warning",threshold:null,bounds:null,source:"own",needs:null,sampled:!1,condition:()=>"The app's Next.js version has a known advisory (OSV.dev)"},CiFailing:{key:"CiFailing",severity:"warning",threshold:null,bounds:null,source:"api",needs:null,sampled:!1,condition:()=>"The latest GitHub Actions run on the default branch failed"},OsSecurityUpdate:{key:"OsSecurityUpdate",severity:"warning",threshold:7,bounds:[0,10],source:"own",needs:null,sampled:!1,condition:e=>`A waiting security update fixes a CVE scored ${(e??7).toFixed(1)}+ (CVSS), or a new kernel waits for a reboot`},ReportSendFailed:{key:"ReportSendFailed",severity:"warning",threshold:null,bounds:null,source:"own",needs:null,sampled:!1,condition:()=>"A monthly client report couldn't be emailed after 3 tries"},MonitorDomainMoved:{key:"MonitorDomainMoved",severity:"warning",threshold:null,bounds:null,source:"own",needs:null,sampled:!1,condition:()=>"The monitor's domain is no longer one of the app's domains"}};Object.keys(d),e.i(684496);let c=[["critical","Critical"],["warning","Warning"],["info","Info"]];var h=e.i(95187);let u=(0,h.createServerReference)("6085fd6ec6a9f73abd8ea468caa88cd8fe0be40a53",h.callServer,void 0,h.findSourceMapURL,"editRule"),p=(0,h.createServerReference)("60731502a44ce2146d4c7ee7cfbcf49901f3d0035f",h.callServer,void 0,h.findSourceMapURL,"testRule"),m=["status","severity","rule","target","detail","cause","step","since","threshold"],b=["id","en"],x={status:"FIRING, REPEAT or RESOLVED (MUNCUL, ULANG, PULIH in Indonesian)",severity:"critical, warning or info",rule:"the rule's key, like MonitorDown",target:"what the alert is about: an app, a database, a domain",detail:"Watchbell's sentence about what it saw",cause:"the alert that caused this one, or a provider incident",step:"Watchbell's next step for rules that have one",since:"when the alert started: the time and the time zone",threshold:"the rule's number from Threshold"},f={en:"{status} · {severity} · {rule} · {target}\n{detail}\n{cause}\nNext step: {step}\nsince {since}",id:"{status} · {severity} · {rule} · {target}\n{detail}\n{cause}\nYang perlu kamu lakukan: {step}\nsejak {since}"},g={en:"Test message: Watchbell's sentence about what it saw goes here.",id:"Pesan tes: di sini nanti kalimat Watchbell soal apa yang dilihatnya."},v=/\{([a-zA-Z_]+)\}/g,y=e=>e.replace(/\r\n?/g,"\n").replace(/[ \t]+$/gm,"").trim();function k(e,t){let a="string"==typeof e?y(e):"";return a&&a!==f[t]?a:null}let S={id:"Bahasa Indonesia",en:"English"},w={en:"FIRING",id:"MUNCUL"},j={en:{critical:"critical",warning:"warning",info:"info"},id:{critical:"kritis",warning:"peringatan",info:"info"}},C={en:"1 firing",id:"1 aktif"},N={en:"Open alerts",id:"Buka Alerts"},R=e=>({id:e.id??f.id,en:e.en??f.en});function T({ruleKey:e,severity:a,threshold:n,sample:i,texts:l,onChange:o,errors:d}){let[c,h]=(0,s.useState)("id"),u=(0,s.useRef)(null),p=l[c],R=null!==k(p,c),M={status:w[c],severity:j[c][a]??a,rule:e,target:"my-app",detail:g[c],cause:"",step:i.step[c]??"",since:i.since,threshold:n},[L="",...D]=y(p).split("\n").flatMap(e=>{let t=[...e.matchAll(v)].map(e=>e[1]).filter(e=>Object.hasOwn(M,e));return t.length&&t.every(e=>!M[e].trim())?[]:[e.replace(v,(e,t)=>Object.hasOwn(M,t)?M[t]:e)]}).join("\n").replace(/\n{3,}/g,"\n\n").trim().split("\n");return(0,t.jsxs)("fieldset",{className:"mb-3.5 flex flex-col gap-[5px] border-t border-line pt-3.5",children:[(0,t.jsxs)("div",{className:"flex items-baseline justify-between gap-2",children:[(0,t.jsx)("legend",{className:"text-[13px] font-medium",children:"Message"}),(0,t.jsx)("span",{className:`rounded-full border px-2 py-px text-[11.5px] ${R?"border-brand/40 text-brand":"border-line text-ink-soft"}`,children:R?"Changed":"Watchbell's wording"})]}),(0,t.jsx)("span",{className:"text-[12.5px] text-ink-soft",children:"Word the notification yourself. Left as it is, the rule keeps Watchbell's wording, including later fixes to it."}),(0,t.jsx)("div",{role:"tablist",className:"mt-1 flex gap-1 border-b border-line",children:b.map(e=>(0,t.jsxs)("button",{type:"button",role:"tab","aria-selected":e===c,onClick:()=>h(e),className:`-mb-px border-b-2 px-2.5 py-1.5 text-[13px] ${e===c?"border-brand font-medium text-ink":"border-transparent text-ink-soft hover:text-ink"}`,children:[S[e],null!==k(l[e],e)?" · changed":""]},e))}),(0,t.jsx)("textarea",{ref:u,id:`rule-msg-${c}`,"aria-label":`Message in ${S[c]}`,className:`${r.S} min-h-[124px] resize-y font-mono text-[12.5px] leading-relaxed`,maxLength:1200,value:p,onChange:e=>o({...l,[c]:e.target.value})}),(0,t.jsx)("div",{className:"flex flex-wrap gap-1.5",children:m.map(e=>(0,t.jsx)("button",{type:"button",title:x[e],onClick:()=>{let t,a,s,n;return t=u.current,a=t?.selectionStart??p.length,s=t?.selectionEnd??a,n=`{${e}}`,void(o({...l,[c]:p.slice(0,a)+n+p.slice(s)}),requestAnimationFrame(()=>{t?.focus(),t?.setSelectionRange(a+n.length,a+n.length)}))},className:"rounded border border-line-strong bg-sunken px-1.5 py-px font-mono text-[12px] text-ink hover:border-brand",children:`{${e}}`},e))}),d[`template_${c}`]&&(0,t.jsx)("span",{className:"text-[12.5px] text-err",role:"alert",children:d[`template_${c}`]}),b.filter(e=>e!==c&&d[`template_${e}`]).map(e=>(0,t.jsxs)("span",{className:"text-[12.5px] text-err",role:"alert",children:[S[e],": ",d[`template_${e}`]]},e)),(0,t.jsxs)("div",{className:"flex flex-wrap items-center justify-between gap-2",children:[(0,t.jsx)("span",{className:"text-[12.5px] text-ink-soft",children:"A line whose fields are all empty is left out."}),(0,t.jsx)("button",{type:"button",className:"text-[12.5px] text-link underline disabled:opacity-50 disabled:no-underline",disabled:!R,onClick:()=>o({...l,[c]:f[c]}),children:"Back to Watchbell's wording"})]}),(0,t.jsxs)("div",{className:"mt-1 rounded-md border border-line bg-sunken px-3 py-2.5 text-[13px] leading-relaxed",children:[(0,t.jsx)("div",{className:"mb-1 text-[11.5px] uppercase tracking-wide text-ink-faint",children:"Preview, with sample values"}),(0,t.jsxs)("div",{className:"whitespace-pre-wrap break-words",children:[(0,t.jsx)("b",{children:"Watchbell"}),": ",C[c]," · ",i.since,"\n\n",(0,t.jsx)("b",{children:L}),D.length?`
2
+ ${D.join("\n")}`:"","\n",(0,t.jsx)("span",{className:"text-link",children:N[c]})]})]})]})}let M=[["telegram","Telegram"],["discord","Discord"],["webhook","Webhook"],["smtp","Email (SMTP)"],["email_digest","Daily email digest"]],L=e=>({severity:e.severity,threshold:null===e.threshold?"":e.threshold.toLocaleString("en-US"),channels:[...e.channels],enabled:e.enabled});e.s(["RuleActions",0,function({rule:e,condition:o,templates:h,sample:m}){let[b,x]=(0,s.useState)(!1),[f,g]=(0,s.useState)(()=>L(e)),[v,y]=(0,s.useState)(()=>R(h)),[k,S]=(0,s.useState)({}),[w,j]=(0,s.useTransition)(),[C,N]=(0,s.useTransition)();(0,i.useHoldRefresh)(b);let D=d[e.key].bounds;function E(t){t&&(g(L(e)),y(R(h)),S({})),x(t)}function $(t,a){j(async()=>{try{let s=await u(e.key,t);if(!s.ok){S(s.fieldErrors??{}),n.c.error(s.error);return}a(s.message??""),x(!1)}catch{n.c.error("Watchbell didn't answer. Check that it's still running, then try again.")}})}return(0,t.jsxs)("span",{className:"inline-flex gap-1.5",children:[(0,t.jsxs)(l.N,{open:b,onOpenChange:e=>{w||E(e)},children:[(0,t.jsx)(l.a,{render:(0,t.jsx)(r.K,{size:"sm",children:"Edit"})}),(0,t.jsxs)(l.d,{className:"max-h-[92vh] gap-0 overflow-y-auto p-0 sm:max-w-[620px]",showCloseButton:!1,children:[(0,t.jsxs)("div",{className:"flex items-start gap-3 px-[18px] pb-2 pt-4",children:[(0,t.jsx)("span",{className:"grid size-9 shrink-0 place-items-center rounded-lg bg-sunken text-ink-soft",children:(0,t.jsx)(a.f,{size:19})}),(0,t.jsxs)("div",{children:[(0,t.jsxs)(l.F,{className:"text-base",children:["Edit ",e.key]}),(0,t.jsx)(l.C,{className:"mt-0.5 text-[13px] text-ink-soft",children:o})]})]}),(0,t.jsxs)("form",{onSubmit:e=>{e.preventDefault(),$({...f,templates:v},e=>n.c.success("Rule saved",{description:e}))},children:[(0,t.jsxs)("div",{className:"px-[18px] pt-2",children:[(0,t.jsxs)("div",{className:"grid grid-cols-1 gap-3 sm:grid-cols-2",children:[(0,t.jsx)(r.O,{id:"rule-sev",label:"Severity",error:k.severity,children:(0,t.jsx)("select",{id:"rule-sev",className:r.S,value:f.severity,onChange:e=>g({...f,severity:e.target.value}),children:c.map(([e,a])=>(0,t.jsx)("option",{value:e,children:a},e))})}),D&&(0,t.jsx)(r.O,{id:"rule-num",label:"Threshold",help:`Replaces ${e.threshold?.toLocaleString("en-US")??"the number"} in the condition.`,error:k.threshold,children:(0,t.jsx)("input",{id:"rule-num",className:r.S,inputMode:"numeric",autoComplete:"off",value:f.threshold,onChange:e=>g({...f,threshold:e.target.value})})})]}),(0,t.jsxs)("fieldset",{className:"mb-3.5 flex flex-col gap-[5px]",children:[(0,t.jsx)("legend",{className:"mb-[5px] text-[13px] font-medium",children:"Send to"}),(0,t.jsx)("div",{className:"flex flex-wrap gap-x-4 gap-y-1.5",children:M.map(([e,a])=>(0,t.jsxs)("label",{className:"flex items-center gap-1.5 text-[13px]",children:[(0,t.jsx)("input",{type:"checkbox",className:"size-4 accent-brand",checked:f.channels.includes(e),onChange:t=>{let a;return a=t.target.checked,g({...f,channels:a?[...f.channels,e]:f.channels.filter(t=>t!==e)})}}),a]},e))}),(0,t.jsx)("span",{className:"text-[12.5px] text-ink-soft",children:"Opens and resolves are sent once; a still-firing alert repeats every 6 hours unless silenced."}),k.channels&&(0,t.jsx)("span",{className:"text-[12.5px] text-err",role:"alert",children:k.channels})]}),(0,t.jsxs)("label",{className:"mb-3.5 flex items-center gap-1.5 text-[13px]",children:[(0,t.jsx)("input",{type:"checkbox",className:"size-4 accent-brand",checked:f.enabled,onChange:e=>g({...f,enabled:e.target.checked})}),"Rule is on"]}),(0,t.jsx)(T,{ruleKey:e.key,severity:f.severity,threshold:f.threshold,sample:m,texts:v,onChange:y,errors:k})]}),(0,t.jsxs)("div",{className:"flex flex-wrap items-center justify-end gap-2 border-t border-line px-[18px] py-3",children:[(0,t.jsx)(r.K,{className:"mr-auto",disabled:w||C||!f.channels.some(e=>"email_digest"!==e),onClick:function(){N(async()=>{try{let t=await p(e.key,{...f,templates:v});S(t.ok?{}:t.fieldErrors??{}),t.ok?n.c.success("Test sent",{description:t.message}):n.c.error(t.error)}catch{n.c.error("Watchbell didn't answer. Check that it's still running, then try again.")}})},title:"Sends this message, as a made-up alert, to the ticked channels (not the daily digest)",children:C?"Sending…":"Send test"}),(0,t.jsx)(r.K,{onClick:()=>E(!1),disabled:w,children:"Cancel"}),(0,t.jsx)(r.K,{type:"submit",variant:"primary",disabled:w,children:w?"Saving…":"Save rule"})]})]})]})]}),(0,t.jsx)(r.K,{size:"sm",disabled:w,onClick:()=>$({...L(e),enabled:!e.enabled},t=>e.enabled?n.c.success(`${e.key} disabled. It won't fire until you enable it again.`):n.c.success(`${e.key} enabled.`,{description:t})),children:e.enabled?"Disable":"Enable"})]})}],689721)},582429,e=>{var t=e.i(843476),a=e.i(271645),s=e.i(846696),n=e.i(428325),r=e.i(684496),i=e.i(95187);let l=(0,i.createServerReference)("00092402514136908b0d61da2f98990e2a9f083cd6",i.callServer,void 0,i.findSourceMapURL,"approvalsStatus"),o=(0,i.createServerReference)("0016a8bae1dc07c65b59f3342bb3005412035d6137",i.callServer,void 0,i.findSourceMapURL,"disableApprovals"),d=(0,i.createServerReference)("009095c2cd201507c296f4ddb557eef929c6dc434f",i.callServer,void 0,i.findSourceMapURL,"enableApprovals"),c=(0,i.createServerReference)("007a1b95fc36056b0a7e5208cfeff15c3460993e11",i.callServer,void 0,i.findSourceMapURL,"telegramLinkCode");e.s(["TelegramApprovals",0,function(){let[e,i]=(0,a.useState)(null),[h,u]=(0,a.useState)(null),[p,m]=(0,a.useState)(null),[b,x]=(0,a.useTransition)();function f(e,t){x(async()=>{try{let a=await e();if(!a.ok)return void s.c.error(a.error??"Watchbell didn't answer. Check that it's still running, then try again.");a.data&&i(a.data),t?.(),a.message&&s.c.success("Approval buttons",{description:a.message})}catch{s.c.error("Watchbell didn't answer. Check that it's still running, then try again.")}})}(0,a.useEffect)(()=>{let e=!0;return l().then(t=>{e&&(t.ok&&t.data?i(t.data):u(t.ok?null:t.error))}).catch(()=>e&&u("Couldn't read the status.")),()=>{e=!1}},[]);let g=e?e.on?e.linked?"On · linked to your Telegram account":"On · not linked yet":"Off":h??"Checking…",v=p?(0,r.U)(new Date(p.expiresAt)):"";return(0,t.jsxs)("div",{className:"mt-1 basis-full rounded-md border border-line px-3 py-2 text-[13px]",children:[(0,t.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,t.jsx)("span",{className:"font-medium",children:"Approval buttons"}),(0,t.jsx)("span",{className:"text-ink-soft",children:g}),(0,t.jsxs)("span",{className:"ml-auto inline-flex flex-wrap gap-2",children:[e&&!e.on&&(0,t.jsx)(n.K,{size:"sm",disabled:b,onClick:()=>f(d),children:b?"Working…":"Turn on"}),e?.on&&(0,t.jsx)(n.K,{size:"sm",disabled:b,onClick:function(){x(async()=>{try{let e=await c();e.ok&&e.data?m(e.data):s.c.error(e.ok?"Watchbell didn't answer. Check that it's still running, then try again.":e.error)}catch{s.c.error("Watchbell didn't answer. Check that it's still running, then try again.")}})},children:e.linked?"Link again":"Show link code"}),e?.on&&(0,t.jsx)(n.K,{size:"sm",variant:"ghost",disabled:b,onClick:()=>f(o,()=>m(null)),children:"Turn off"})]})]}),(0,t.jsx)("p",{className:"mt-1 text-[12.5px] text-ink-soft",children:"Proposal notices get ✅ Approve / ❌ Reject buttons that only your linked Telegram account can use; risky actions ask twice. While this is on, Telegram sends updates to the console instead of holding them, so Find chats lists the chats the bot has seen since then."}),e?.problem&&(0,t.jsx)("p",{className:"mt-1 text-[12.5px] text-err",children:e.problem}),p&&(0,t.jsxs)("p",{className:"mt-1 text-[12.5px]",children:["Send ",(0,t.jsxs)("code",{className:"rounded bg-sunken px-1 font-mono",children:["/link ",p.code]})," in the connected chat before ",v,". The code works once."]})]})}],582429)}])})();
@@ -64,7 +64,7 @@ begin
64
64
  execute format('create policy ${c}_read on public.%I for select to ${c} using (true)', t.relname);
65
65
  end loop;
66
66
  end
67
- $$;`;var p=e.i(758575),f=e.i(95187);let h=(0,f.createServerReference)("40e9cf6395ddead9b2d36f52c71e4019712b2aebd0",f.callServer,void 0,f.findSourceMapURL,"createSqlAccessAutoAction"),m=(0,f.createServerReference)("406d5c382f7e6dc39cb9d897bae624ad2d0570e3d5",f.callServer,void 0,f.findSourceMapURL,"deleteSqlAccess"),g=(0,f.createServerReference)("708b3acc8bbda8781bb3dbc8236b0d3afe318e56a7",f.callServer,void 0,f.findSourceMapURL,"setSqlAccess"),y=(0,f.createServerReference)("407d7e2cfab73dae9f7c397e7d83a489f221ced5fd",f.callServer,void 0,f.findSourceMapURL,"sqlAutoStatusAction");function v({text:e}){return(0,t.jsxs)("div",{className:"relative",children:[(0,t.jsx)("pre",{className:"max-h-56 overflow-auto whitespace-pre-wrap break-words rounded-md border border-line bg-sunken py-2 pl-3 pr-20 font-mono text-[12px] leading-relaxed text-ink",children:e}),(0,t.jsxs)(a.K,{size:"sm",variant:"ghost",className:"absolute right-1.5 top-1.5","aria-label":"Copy SQL",onClick:()=>navigator.clipboard.writeText(e).then(()=>o.c.success("Copied"),()=>o.c.error("Couldn't copy")),children:[(0,t.jsx)(n.f,{size:14})," Copy"]})]})}function _({id:e,alias:n,provider:s,connected:f}){let m,b,[z,w]=(0,i.useState)(!1),[k,$]=(0,i.useState)(""),[x,S]=(0,i.useState)(),[O,A]=(0,i.useState)(!1),[j,P]=(0,i.useTransition)(),[E,T]=(0,i.useState)({phase:"idle"}),[Z,N]=(0,i.useState)();(0,l.useHoldRefresh)(z);let R=(0,i.useRef)(0);function I(t){if(!j){let n;$(""),S(void 0),A(!1),N(void 0),R.current++,T({phase:"idle"}),w(t),t&&"supabase"===s&&(n=++R.current,T({phase:"checking"}),y(e).then(e=>{R.current===n&&T(e.ok&&e.data?{phase:"done",access:e.data}:{phase:"error",error:e.ok?"No answer.":e.error})},()=>{R.current===n&&T({phase:"error",error:"Couldn't check this project's token."})}))}}function D(t){P(async()=>{try{let r=await g(e,k,t);if(!r.ok){if(r.data?.needsWake){A(!0),S(void 0);return}S(r.fieldErrors?.dsn??r.error);return}o.c.success(`SQL access saved for ${n}`,{description:"Open Databases → SQL console to run a query."}),$(""),w(!1)}catch{o.c.error("Watchbell didn't answer. Check that it's still running, then try again.")}})}return(0,t.jsxs)(u.N,{open:z,onOpenChange:I,children:[(0,t.jsx)(u.a,{render:(0,t.jsx)(a.K,{size:"sm",children:f?"Replace SQL access":"Add SQL access"})}),(0,t.jsxs)(u.d,{className:"gap-0 p-0 sm:max-w-[640px]",showCloseButton:!1,children:[(0,t.jsxs)("div",{className:"flex items-start gap-3 px-[18px] pb-2 pt-4",children:[(0,t.jsx)("span",{className:"grid size-9 shrink-0 place-items-center rounded-lg bg-sunken text-ink-soft",children:(0,t.jsx)(r,{size:19})}),(0,t.jsxs)("div",{children:[(0,t.jsxs)(u.F,{className:"text-base",children:[f?"Replace":"Add"," SQL access for ",n]}),(0,t.jsx)(u.C,{className:"mt-0.5 text-[13px] text-ink-soft",children:"The SQL console connects with a read-only Postgres role you create. Watchbell never reads your app's own secrets."})]})]}),(0,t.jsxs)("form",{onSubmit:e=>{e.preventDefault(),D(!1)},children:[(0,t.jsxs)("div",{className:"max-h-[65vh] overflow-y-auto px-[18px] pt-2 text-[13px] text-ink-soft",children:["supabase"===s&&(0,t.jsx)("div",{className:"mb-3 rounded-md border border-line px-3 py-2.5",children:"done"===E.phase&&E.access.can?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("p",{className:"text-ink",children:["Watchbell can set this up for you: it creates (or resets) the role ",(0,t.jsx)("span",{className:"font-mono",children:c})," with SELECT only, checks that it can't write, and saves the pooler string encrypted. The password is generated on the server and never shown."]}),(0,t.jsxs)("div",{className:"mt-2 flex items-center gap-2",children:[(0,t.jsx)(a.K,{type:"button",variant:"primary",size:"sm",disabled:j,onClick:function(){N(void 0),P(async()=>{try{let t=await h(e);if(!t.ok)return void N(t.error);o.c.success(`SQL access created for ${n}`,{description:`Read-only role ${c}, checked and saved. Open Databases → SQL console to run a query.`}),w(!1)}catch{o.c.error("Watchbell didn't answer. Check that it's still running, then try again.")}})},children:j?"Setting up…":"Set up automatically (read-only)"}),(0,t.jsx)("span",{className:"text-[12px] text-ink-faint",children:"Or do it by hand below."})]}),Z&&(0,t.jsx)("p",{className:"mt-2 text-[12.5px] text-err",role:"alert",children:Z})]}):"done"!==E.phase||E.access.can?"error"===E.phase?(0,t.jsxs)("p",{children:["Automatic setup couldn't be checked: ",E.error," Follow the steps below."]}):(0,t.jsx)("p",{className:"text-ink-faint",children:"Checking whether this project's token can set the role up…"}):(0,t.jsx)("p",{children:"scope"===(m=E.access).reason?`This project's token can't create the role (missing ${m.missing.join(", ")}). Automatic setup needs a token with Database: Read-write and Connection pooling: Read; replace it on Connections, or follow the steps below.`:`Automatic setup isn't available right now: ${m.error} Follow the steps below.`})}),"neon"===s&&(0,t.jsx)("p",{className:"mb-2 text-[12.5px]",children:"Neon: API can't grant SELECT; run the SQL once."}),(0,t.jsxs)("ol",{className:"mb-3 list-decimal space-y-2 pl-5",children:[(0,t.jsxs)("li",{children:["Create the role. Replace the password first.",(0,t.jsx)("div",{className:"mt-1.5",children:(0,t.jsx)(v,{text:(b="supabase"===s?"postgres":"neondb_owner",`-- Run as ${b} in the ${"supabase"===s?"Supabase SQL Editor":"Neon SQL Editor"}. Use a long random password.
67
+ $$;`;var p=e.i(758575),f=e.i(95187);let h=(0,f.createServerReference)("401f9f587ff420e4e3bf14a75d64072caee00a946b",f.callServer,void 0,f.findSourceMapURL,"createSqlAccessAutoAction"),m=(0,f.createServerReference)("402552ed7de502a456f0f5251db6cd192ef96a1929",f.callServer,void 0,f.findSourceMapURL,"deleteSqlAccess"),g=(0,f.createServerReference)("70283f53c4e0066535528036521e1198244c5d75a6",f.callServer,void 0,f.findSourceMapURL,"setSqlAccess"),y=(0,f.createServerReference)("402c2b9b5dc67b0a320e86a40a4360f34c83a66c1f",f.callServer,void 0,f.findSourceMapURL,"sqlAutoStatusAction");function v({text:e}){return(0,t.jsxs)("div",{className:"relative",children:[(0,t.jsx)("pre",{className:"max-h-56 overflow-auto whitespace-pre-wrap break-words rounded-md border border-line bg-sunken py-2 pl-3 pr-20 font-mono text-[12px] leading-relaxed text-ink",children:e}),(0,t.jsxs)(a.K,{size:"sm",variant:"ghost",className:"absolute right-1.5 top-1.5","aria-label":"Copy SQL",onClick:()=>navigator.clipboard.writeText(e).then(()=>o.c.success("Copied"),()=>o.c.error("Couldn't copy")),children:[(0,t.jsx)(n.f,{size:14})," Copy"]})]})}function _({id:e,alias:n,provider:s,connected:f}){let m,b,[z,w]=(0,i.useState)(!1),[k,$]=(0,i.useState)(""),[x,S]=(0,i.useState)(),[O,A]=(0,i.useState)(!1),[j,P]=(0,i.useTransition)(),[E,T]=(0,i.useState)({phase:"idle"}),[Z,N]=(0,i.useState)();(0,l.useHoldRefresh)(z);let R=(0,i.useRef)(0);function I(t){if(!j){let n;$(""),S(void 0),A(!1),N(void 0),R.current++,T({phase:"idle"}),w(t),t&&"supabase"===s&&(n=++R.current,T({phase:"checking"}),y(e).then(e=>{R.current===n&&T(e.ok&&e.data?{phase:"done",access:e.data}:{phase:"error",error:e.ok?"No answer.":e.error})},()=>{R.current===n&&T({phase:"error",error:"Couldn't check this project's token."})}))}}function D(t){P(async()=>{try{let r=await g(e,k,t);if(!r.ok){if(r.data?.needsWake){A(!0),S(void 0);return}S(r.fieldErrors?.dsn??r.error);return}o.c.success(`SQL access saved for ${n}`,{description:"Open Databases → SQL console to run a query."}),$(""),w(!1)}catch{o.c.error("Watchbell didn't answer. Check that it's still running, then try again.")}})}return(0,t.jsxs)(u.N,{open:z,onOpenChange:I,children:[(0,t.jsx)(u.a,{render:(0,t.jsx)(a.K,{size:"sm",children:f?"Replace SQL access":"Add SQL access"})}),(0,t.jsxs)(u.d,{className:"gap-0 p-0 sm:max-w-[640px]",showCloseButton:!1,children:[(0,t.jsxs)("div",{className:"flex items-start gap-3 px-[18px] pb-2 pt-4",children:[(0,t.jsx)("span",{className:"grid size-9 shrink-0 place-items-center rounded-lg bg-sunken text-ink-soft",children:(0,t.jsx)(r,{size:19})}),(0,t.jsxs)("div",{children:[(0,t.jsxs)(u.F,{className:"text-base",children:[f?"Replace":"Add"," SQL access for ",n]}),(0,t.jsx)(u.C,{className:"mt-0.5 text-[13px] text-ink-soft",children:"The SQL console connects with a read-only Postgres role you create. Watchbell never reads your app's own secrets."})]})]}),(0,t.jsxs)("form",{onSubmit:e=>{e.preventDefault(),D(!1)},children:[(0,t.jsxs)("div",{className:"max-h-[65vh] overflow-y-auto px-[18px] pt-2 text-[13px] text-ink-soft",children:["supabase"===s&&(0,t.jsx)("div",{className:"mb-3 rounded-md border border-line px-3 py-2.5",children:"done"===E.phase&&E.access.can?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("p",{className:"text-ink",children:["Watchbell can set this up for you: it creates (or resets) the role ",(0,t.jsx)("span",{className:"font-mono",children:c})," with SELECT only, checks that it can't write, and saves the pooler string encrypted. The password is generated on the server and never shown."]}),(0,t.jsxs)("div",{className:"mt-2 flex items-center gap-2",children:[(0,t.jsx)(a.K,{type:"button",variant:"primary",size:"sm",disabled:j,onClick:function(){N(void 0),P(async()=>{try{let t=await h(e);if(!t.ok)return void N(t.error);o.c.success(`SQL access created for ${n}`,{description:`Read-only role ${c}, checked and saved. Open Databases → SQL console to run a query.`}),w(!1)}catch{o.c.error("Watchbell didn't answer. Check that it's still running, then try again.")}})},children:j?"Setting up…":"Set up automatically (read-only)"}),(0,t.jsx)("span",{className:"text-[12px] text-ink-faint",children:"Or do it by hand below."})]}),Z&&(0,t.jsx)("p",{className:"mt-2 text-[12.5px] text-err",role:"alert",children:Z})]}):"done"!==E.phase||E.access.can?"error"===E.phase?(0,t.jsxs)("p",{children:["Automatic setup couldn't be checked: ",E.error," Follow the steps below."]}):(0,t.jsx)("p",{className:"text-ink-faint",children:"Checking whether this project's token can set the role up…"}):(0,t.jsx)("p",{children:"scope"===(m=E.access).reason?`This project's token can't create the role (missing ${m.missing.join(", ")}). Automatic setup needs a token with Database: Read-write and Connection pooling: Read; replace it on Connections, or follow the steps below.`:`Automatic setup isn't available right now: ${m.error} Follow the steps below.`})}),"neon"===s&&(0,t.jsx)("p",{className:"mb-2 text-[12.5px]",children:"Neon: API can't grant SELECT; run the SQL once."}),(0,t.jsxs)("ol",{className:"mb-3 list-decimal space-y-2 pl-5",children:[(0,t.jsxs)("li",{children:["Create the role. Replace the password first.",(0,t.jsx)("div",{className:"mt-1.5",children:(0,t.jsx)(v,{text:(b="supabase"===s?"postgres":"neondb_owner",`-- Run as ${b} in the ${"supabase"===s?"Supabase SQL Editor":"Neon SQL Editor"}. Use a long random password.
68
68
  create role ${c} login password 'REPLACE-with-a-long-random-password';
69
69
  alter role ${c} set default_transaction_read_only = on;
70
70
  alter role ${c} set statement_timeout = '5s';
@@ -1 +1 @@
1
- (()=>{"use strict";(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,399582,e=>{let t=(0,e.i(33550).f)("outline","copy","Copy",[["path",{d:"M7 9.667a2.667 2.667 0 0 1 2.667 -2.667h8.666a2.667 2.667 0 0 1 2.667 2.667v8.666a2.667 2.667 0 0 1 -2.667 2.667h-8.666a2.667 2.667 0 0 1 -2.667 -2.667l0 -8.666",key:"svg-0"}],["path",{d:"M4.012 16.737a2.005 2.005 0 0 1 -1.012 -1.737v-10c0 -1.1 .9 -2 2 -2h10c.75 0 1.158 .385 1.5 1",key:"svg-1"}]]);e.s(["f",0,t],399582)},531219,e=>{let t=(0,e.i(33550).f)("outline","filter-off","FilterOff",[["path",{d:"M8 4h12v2.172a2 2 0 0 1 -.586 1.414l-3.914 3.914m-.5 3.5v4l-6 2v-8.5l-4.48 -4.928a2 2 0 0 1 -.52 -1.345v-2.227",key:"svg-0"}],["path",{d:"M3 3l18 18",key:"svg-1"}]]);e.s(["f",0,t],531219)},617708,e=>{let t=(0,e.i(33550).f)("outline","plus","Plus",[["path",{d:"M12 5l0 14",key:"svg-0"}],["path",{d:"M5 12l14 0",key:"svg-1"}]]);e.s(["f",0,t],617708)},225913,e=>{var t=e.i(207670);let a=e=>"boolean"==typeof e?`${e}`:0===e?"0":e,n=t.f;e.s(["f",0,(e,t)=>s=>{var i;if((null==t?void 0:t.variants)==null)return n(e,null==s?void 0:s.class,null==s?void 0:s.className);let{variants:r,defaultVariants:l}=t,o=Object.keys(r).map(e=>{let t=null==s?void 0:s[e],n=null==l?void 0:l[e];if(null===t)return null;let i=a(t)||a(n);return r[e][i]}),d=s&&Object.entries(s).reduce((e,t)=>{let[a,n]=t;return void 0===n||(e[a]=n),e},{});return n(e,o,null==t||null==(i=t.compoundVariants)?void 0:i.reduce((e,t)=>{let{class:a,className:n,...s}=t;return Object.entries(s).every(e=>{let[t,a]=e;return Array.isArray(a)?a.includes({...l,...d}[t]):({...l,...d})[t]===a})?[...e,a,n]:e},[]),null==s?void 0:s.class,null==s?void 0:s.className)}])},477691,e=>{var t=e.i(843476),a=e.i(785642),n=e.i(399582),s=e.i(23990),i=e.i(617708),r=e.i(944971),l=e.i(522016),o=e.i(271645),d=e.i(846696),c=e.i(428325),u=e.i(500443),p=e.i(776639),x=e.i(95187);let h=(0,x.createServerReference)("400ed1a3e37ecebcb7ca0e01f05a6367c46923f467",x.callServer,void 0,x.findSourceMapURL,"createKeyAction");function m({scopes:e}){return(0,t.jsx)(t.Fragment,{children:e.map(e=>(0,t.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:e},e))})}var f=e.i(898121);function g({icon:e,title:a,sub:n}){return(0,t.jsxs)("div",{className:"flex items-start gap-3 px-[18px] pb-2 pt-4",children:[(0,t.jsx)("span",{className:"grid size-9 shrink-0 place-items-center rounded-lg bg-sunken text-ink-soft",children:e}),(0,t.jsxs)("div",{children:[(0,t.jsx)(p.F,{className:"text-base",children:a}),(0,t.jsx)(p.C,{className:"mt-0.5 text-[13px] text-ink-soft",children:n})]})]})}function v({onCreated:e,onCancel:a}){let[n,i]=(0,o.useState)(""),[l,u]=(0,o.useState)(f.J),[p,x]=(0,o.useState)(f.j),[b,j]=(0,o.useState)(String(f.D)),[y,k]=(0,o.useState)({}),[N,C]=(0,o.useState)(""),[w,S]=(0,o.useTransition)();return(0,t.jsxs)("form",{onSubmit:function(t){t.preventDefault(),S(async()=>{k({}),C("");try{let t=await h({name:n.trim(),scopes:f.B.filter(e=>l.includes(e)),expiry:p,ratePerMin:b.trim()});t.ok&&t.data?(d.c.success(t.message??"Key created."),e(t.data)):t.ok||(t.fieldErrors?k(t.fieldErrors):C(t.error))}catch{C("Watchbell didn't answer. Check that it's still running, then try again.")}})},noValidate:!0,children:[(0,t.jsx)(g,{icon:(0,t.jsx)(s.f,{size:19}),title:"Create API key",sub:"For one app or agent. Shown once."}),(0,t.jsxs)("div",{className:"px-[18px] pt-1.5",children:[(0,t.jsx)(c.O,{id:"key-name",label:"Name",help:"Lowercase letters, digits and dashes. Agents and Logs show it.",error:y.name,children:(0,t.jsx)("input",{id:"key-name",value:n,onChange:e=>i(e.target.value),placeholder:r.C.namePlaceholder,autoComplete:"off",autoCapitalize:"none",spellCheck:!1,className:c.S})}),(0,t.jsxs)("fieldset",{className:"mb-3.5",children:[(0,t.jsx)("legend",{className:"mb-[5px] text-[13px] font-medium",children:"Scopes"}),(0,t.jsx)("div",{className:"flex flex-col gap-1.5",children:f.B.map(e=>(0,t.jsxs)("label",{className:"flex cursor-pointer items-start gap-2",children:[(0,t.jsx)("input",{type:"checkbox",checked:l.includes(e),onChange:()=>u(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e]),className:"mt-[3px] accent-brand"}),(0,t.jsxs)("span",{children:[(0,t.jsx)(m,{scopes:[e]})," ",(0,t.jsx)("span",{className:"text-[13px] text-ink-soft",children:f.h[e].short})]})]},e))}),y.scopes&&(0,t.jsx)("span",{className:"text-[12.5px] text-err",role:"alert",children:y.scopes})]}),(0,t.jsxs)("div",{className:"grid grid-cols-2 gap-3 max-[560px]:grid-cols-1",children:[(0,t.jsx)(c.O,{id:"key-expiry",label:"Expires",error:y.expiry,children:(0,t.jsx)("select",{id:"key-expiry",value:p,onChange:e=>x(e.target.value),className:c.S,children:f.W.map(e=>(0,t.jsx)("option",{value:e,children:f.o[e]},e))})}),(0,t.jsx)(c.O,{id:"key-rate",label:"Rate limit",help:"Requests per minute, 1–600. Applies before the provider's own limits.",error:y.ratePerMin,children:(0,t.jsx)("input",{id:"key-rate",inputMode:"numeric",value:b,onChange:e=>j(e.target.value),className:`${c.S} font-mono`})})]}),N&&(0,t.jsx)("p",{className:"mb-3 text-[13px] text-err",role:"alert",children:N})]}),(0,t.jsxs)("div",{className:"flex justify-end gap-2 border-t border-line px-[18px] py-3",children:[(0,t.jsx)(c.K,{onClick:a,disabled:w,children:"Cancel"}),(0,t.jsx)(c.K,{type:"submit",variant:"primary",disabled:w,children:w?"Creating…":"Create key"})]})]})}function b({created:e,onDone:s}){async function i(){try{await navigator.clipboard.writeText(e.key),d.c.success("Copied.")}catch{d.c.error("Couldn't copy. Select the key and copy it by hand.")}}return(0,t.jsxs)("div",{children:[(0,t.jsx)(g,{icon:(0,t.jsx)(a.f,{size:19}),title:`Key ${e.name} created`,sub:"Copy it now."}),(0,t.jsxs)("div",{className:"px-[18px] pb-3 pt-1.5",children:[(0,t.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,t.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:e.key}),(0,t.jsxs)(c.K,{size:"sm",onClick:i,children:[(0,t.jsx)(n.f,{size:15,"aria-hidden":!0}),"Copy"]})]}),(0,t.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,t.jsxs)("p",{className:"mb-0 mt-3 text-[13px] text-ink-soft",children:["Next: put it in the app's environment as ",(0,t.jsx)("span",{className:"font-mono",children:"WATCHBELL_API_KEY"}),", then follow ",(0,t.jsx)(l.default,{href:"/ai",className:"text-brand",children:"Quick start"})," or ",(0,t.jsx)(l.default,{href:"/ai/connect",className:"text-brand",children:"Connect an agent"}),"."]})]}),(0,t.jsx)("div",{className:"flex justify-end gap-2 border-t border-line px-[18px] py-3",children:(0,t.jsx)(c.K,{variant:"primary",onClick:s,children:"Done"})})]})}e.s(["CreateKeyDialog",0,function(){let[e,a]=(0,o.useState)(!1),[n,s]=(0,o.useState)(null);function r(e){a(e),e||s(null)}return(0,u.useHoldRefresh)(e),(0,t.jsxs)(p.N,{open:e,onOpenChange:r,children:[(0,t.jsxs)(p.a,{render:(0,t.jsx)(c.K,{variant:"primary"}),children:[(0,t.jsx)(i.f,{size:16,"aria-hidden":!0}),"Create key"]}),(0,t.jsx)(p.d,{className:"gap-0 p-0 sm:max-w-[640px]",showCloseButton:!1,children:n?(0,t.jsx)(b,{created:n,onDone:()=>r(!1)}):(0,t.jsx)(v,{onCreated:s,onCancel:()=>r(!1)})})]})}],477691)},211541,e=>{var t=e.i(843476),a=e.i(271645),n=e.i(846696),s=e.i(46200),i=e.i(428325),r=e.i(500443),l=e.i(177106),o=e.i(776639),d=e.i(95187);let c=(0,d.createServerReference)("60e434ebf173979c4c461854676e44f121757a7f52",d.callServer,void 0,d.findSourceMapURL,"changeKeyAction"),u=(0,d.createServerReference)("40cc28378322c5996e8f9bf27c3a93607aa44ba5ea",d.callServer,void 0,d.findSourceMapURL,"revokeKeyAction");var p=e.i(898121);let x={rename:{title:e=>`Rename ${e}`,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 h({mode:e,k:s,providers:r,onDone:l}){let[d,u]=(0,a.useState)(s.name),[m,f]=(0,a.useState)(String(s.ratePerMin)),[g,v]=(0,a.useState)(s.expiresAt?"90d":"never"),[b,j]=(0,a.useState)(s.providerId??""),[y,k]=(0,a.useState)(s.model??""),[N,C]=(0,a.useState)({}),[w,S]=(0,a.useState)(""),[z,M]=(0,a.useTransition)(),R=x[e];return(0,t.jsxs)("form",{onSubmit:function(t){t.preventDefault(),M(async()=>{C({}),S("");try{let t=await c(s.id,"rename"===e?{kind:"rename",name:d.trim()}:"rate"===e?{kind:"rate",ratePerMin:m.trim()}:"expiry"===e?{kind:"expiry",expiry:g}:{kind:"routing",providerId:b||null,model:b?y.trim():null});t.ok?(n.c.success(t.message??"Key updated."),l()):t.fieldErrors?C(t.fieldErrors):S(t.error)}catch{S("Watchbell didn't answer. Check that it's still running, then try again.")}})},noValidate:!0,children:[(0,t.jsxs)("div",{className:"px-[18px] pb-2 pt-4",children:[(0,t.jsx)(o.F,{className:"text-base",children:R.title(s.name)}),(0,t.jsx)(o.C,{className:"mt-0.5 text-[13px] text-ink-soft",children:R.sub})]}),(0,t.jsxs)("div",{className:"px-[18px] pt-1.5",children:["rename"===e&&(0,t.jsx)(i.O,{id:"edit-name",label:"Name",error:N.name,children:(0,t.jsx)("input",{id:"edit-name",value:d,onChange:e=>u(e.target.value),autoComplete:"off",autoCapitalize:"none",spellCheck:!1,className:i.S})}),"rate"===e&&(0,t.jsx)(i.O,{id:"edit-rate",label:"Rate limit",help:"Requests per minute.",error:N.ratePerMin,children:(0,t.jsx)("input",{id:"edit-rate",inputMode:"numeric",value:m,onChange:e=>f(e.target.value),className:`${i.S} font-mono`})}),"expiry"===e&&(0,t.jsx)(i.O,{id:"edit-expiry",label:"Expires",error:N.expiry,children:(0,t.jsx)("select",{id:"edit-expiry",value:g,onChange:e=>v(e.target.value),className:i.S,children:p.W.map(e=>(0,t.jsx)("option",{value:e,children:p.o[e]},e))})}),"routing"===e&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(i.O,{id:"edit-provider",label:"Provider",help:r.length?void 0:"No provider is connected yet. Until one is, this key has nothing to pin to.",error:N.providerId,children:(0,t.jsxs)("select",{id:"edit-provider",value:b,onChange:e=>j(e.target.value),className:i.S,children:[(0,t.jsx)("option",{value:"",children:"No pin (default provider)"}),r.map(e=>(0,t.jsxs)("option",{value:e.id,children:[e.name,e.enabled?"":" (off)"]},e.id))]})}),(0,t.jsx)(i.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:N.model,children:(0,t.jsx)("input",{id:"edit-model",value:y,onChange:e=>k(e.target.value),disabled:!b,placeholder:"gemini-3.8-flash",autoComplete:"off",autoCapitalize:"none",spellCheck:!1,className:`${i.S} font-mono`})})]}),w&&(0,t.jsx)("p",{className:"mb-3 text-[13px] text-err",role:"alert",children:w})]}),(0,t.jsxs)("div",{className:"flex justify-end gap-2 border-t border-line px-[18px] py-3",children:[(0,t.jsx)(i.K,{onClick:l,disabled:z,children:"Cancel"}),(0,t.jsx)(i.K,{type:"submit",variant:"primary",disabled:z,children:z?"Saving…":R.cta})]})]})}e.s(["KeyActions",0,function({k:e,providers:n}){let[d,c]=(0,a.useState)(null);return(0,r.useHoldRefresh)(null!==d),(0,t.jsxs)("span",{className:"inline-flex items-center gap-1",children:[(0,t.jsx)(s.f,{trigger:(0,t.jsx)(i.K,{size:"sm",children:"Revoke"}),title:`Revoke ${e.name}?`,body:`Calls with ${e.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 t=await u(e.id);return{ok:t.ok,message:(t.ok?t.message:t.error)??""}}}),(0,t.jsx)(l.RowMenu,{label:`Actions for ${e.name}`,items:[{label:"Rename",onSelect:()=>c("rename")},{label:"Change rate limit",onSelect:()=>c("rate")},{label:"Change expiry",onSelect:()=>c("expiry")},{label:"Change routing",onSelect:()=>c("routing")}]}),(0,t.jsx)(o.N,{open:null!==d,onOpenChange:e=>{e||c(null)},children:(0,t.jsx)(o.d,{className:"gap-0 p-0 sm:max-w-[520px]",showCloseButton:!1,children:d&&(0,t.jsx)(h,{mode:d,k:e,providers:n,onDone:()=>c(null)})})})]})}],211541)},46200,e=>{var t=e.i(843476),a=e.i(146874),n=e.i(239692),s=e.i(271645),i=e.i(846696),r=e.i(428325),l=e.i(500443),o=e.i(776639);e.s(["f",0,function({trigger:e,open:d,onOpenChange:c,title:u,body:p,cta:x,danger:h=!1,onConfirm:m}){let[f,g]=(0,s.useState)(!1),v=d??f,[b,j]=(0,s.useTransition)();function y(e){void 0===d&&g(e),c?.(e)}return(0,l.useHoldRefresh)(v),(0,t.jsxs)(o.N,{open:v,onOpenChange:e=>{b||y(e)},children:[void 0!==e&&((0,s.isValidElement)(e)?(0,t.jsx)(o.a,{render:e}):(0,t.jsx)(o.a,{children:e})),(0,t.jsxs)(o.d,{className:"gap-0 p-0 sm:max-w-[640px]",showCloseButton:!1,children:[(0,t.jsxs)("div",{className:"flex items-start gap-3 px-[18px] pb-2 pt-4",children:[(0,t.jsx)("span",{className:`grid size-9 shrink-0 place-items-center rounded-lg bg-sunken ${h?"text-err":"text-ink-soft"}`,children:h?(0,t.jsx)(a.f,{size:19}):(0,t.jsx)(n.f,{size:19})}),(0,t.jsxs)("div",{children:[(0,t.jsx)(o.F,{className:"text-base",children:u}),(0,t.jsx)(o.C,{className:"mt-0.5 text-[13px] text-ink-soft",children:p})]})]}),(0,t.jsxs)("div",{className:"flex flex-wrap items-center justify-end gap-2 border-t border-line px-[18px] py-3",children:[(0,t.jsx)(r.K,{onClick:()=>y(!1),disabled:b,children:"Keep as is"}),(0,t.jsx)(r.K,{variant:h?"danger":"primary",onClick:function(){j(async()=>{try{let e=await m();e.ok?(i.c.success(e.message),y(!1)):i.c.error(e.message)}catch{i.c.error("Watchbell didn't answer. Check that it's still running, then try again.")}})},disabled:b,children:b?"Working…":x})]})]})]})}])},374931,e=>{var t=e.i(843476),a=e.i(531219),n=e.i(357772),s=e.i(271645),i=e.i(54131),r=e.i(428325),l=e.i(541299),o=e.i(691106),d=e.i(975157),c=e.i(322534),u=e.i(495784);e.s(["ListFilter",0,function({placeholder:e,states:p,groups:x,head:h,rows:m,chips:f}){var g,v;let b,[j,y]=(0,s.useState)(""),[k,N]=(0,s.useState)(""),[C,w]=(0,s.useState)(""),[S,z]=(0,s.useState)(""),[M,R]=(0,s.useState)(1),A=(0,i.useMask)(),K=(g=m.map(e=>({...e,text:`${e.text} ${A("text",e.text)}`})),b=(v={text:j,state:k,group:S,tag:C}).text.trim().toLowerCase(),g.filter(e=>(!v.state||e.state===v.state)&&(!v.group||e.group===v.group)&&(!v.tag||(e.tags??[]).includes(v.tag))&&(!b||e.text.toLowerCase().includes(b)))),$=(0,u.$)(K,M),O=$.rows;$.page!==M&&R($.page);let P=p?.find(([e])=>e===k)?.[1];return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"flex flex-wrap items-center gap-2 px-[18px] pb-3 pt-3.5 max-[720px]:px-3.5",children:[(0,t.jsx)("input",{className:(0,d.f)(r.S,"w-[240px] max-[720px]:w-full"),placeholder:e,"aria-label":e,value:j,onChange:e=>{y(e.target.value),R(1)}}),p&&(0,t.jsxs)("select",{className:(0,d.f)(r.S,"w-auto"),"aria-label":"State",value:k,onChange:e=>{N(e.target.value),R(1)},children:[(0,t.jsx)("option",{value:"",children:"All states"}),p.map(([e,a])=>(0,t.jsx)("option",{value:e,children:a},e))]}),x&&x.length>1&&(0,t.jsxs)("select",{className:(0,d.f)(r.S,"w-auto"),"aria-label":"Account",value:S,onChange:e=>{z(e.target.value),R(1)},children:[(0,t.jsx)("option",{value:"",children:"All accounts"}),x.map(e=>(0,t.jsx)("option",{value:e,children:A("account",e)},e))]}),f?.map(([e,a])=>(0,t.jsx)("button",{type:"button","aria-pressed":C===e,onClick:()=>{w(C===e?"":e),R(1)},className:(0,d.f)("rounded-[5px] border px-2 py-0.5 text-[12.5px]",C===e?"border-brand bg-brand-soft text-brand":"border-line text-ink-soft hover:bg-hover"),children:a},e)),P&&(0,t.jsxs)("span",{className:"inline-flex items-center gap-1 rounded-[5px] bg-brand-soft py-px pl-2 pr-1 text-[12.5px] text-brand",children:["State: ",P,(0,t.jsx)("button",{type:"button","aria-label":"Remove filter",className:"px-0.5",onClick:()=>{N(""),R(1)},children:(0,t.jsx)(n.f,{size:13})})]}),S&&(0,t.jsxs)("span",{className:"inline-flex items-center gap-1 rounded-[5px] bg-brand-soft py-px pl-2 pr-1 text-[12.5px] text-brand",children:["Account: ",(0,t.jsx)(i.Masked,{kind:"account",real:S}),(0,t.jsx)("button",{type:"button","aria-label":"Remove account filter",className:"px-0.5",onClick:()=>{z(""),R(1)},children:(0,t.jsx)(n.f,{size:13})})]}),(0,t.jsx)("span",{role:"status",className:"ml-auto text-[12.5px] text-ink-soft",children:(0,c.O)(K.length)})]}),(0,t.jsx)("div",{className:"overflow-x-auto",children:(0,t.jsxs)("table",{className:o.o,children:[(0,t.jsx)(o.U,{head:h}),(0,t.jsx)("tbody",{children:O.map(e=>(0,t.jsx)(s.Fragment,{children:e.row},e.key))})]})}),0===K.length&&m.length>0&&(0,t.jsxs)(r.k,{icon:a.f,title:"No results",children:["Nothing matches these filters."," ",(0,t.jsx)("button",{type:"button",className:"text-brand hover:underline",onClick:()=>{y(""),N(""),z(""),w(""),R(1)},children:"Clear filters"})]}),(0,t.jsx)(l.f,{page:$.page,pages:$.pages,text:(0,u.z)($),onPage:R})]})}],374931)},541299,495784,e=>{var t=e.i(843476),a=e.i(271645),n=e.i(428325),s=e.i(975157);function i(e,t,a=25){let n=e.length,s=Math.max(1,Math.ceil(n/a)),r=Math.min(Math.max(Number.isFinite(t)?Math.floor(t):1,1),s),l=(r-1)*a,o=e.slice(l,l+a);return{rows:o,page:r,pages:s,from:0===n?0:l+1,to:l+o.length,total:n}}e.s(["f",0,function({page:e,pages:i,text:r,onPage:l,bleed:o=!1}){let d=(0,a.useRef)(null),c=(0,a.useRef)(null);if((0,a.useEffect)(()=>{null!==c.current&&(d.current?.querySelectorAll("button")[c.current]?.focus(),c.current=null)},[e]),i<=1)return null;let u=(e,t)=>{(e<=1||e>=i)&&(c.current=t),l(e)};return(0,t.jsxs)("div",{className:(0,s.f)("flex items-center gap-2 border-t border-line px-[18px] py-2.5 text-[12.5px] text-ink-soft",o?"-mx-[18px] -mb-4 mt-2":"max-[720px]:px-3.5"),children:[(0,t.jsx)("span",{role:"status",children:r}),(0,t.jsxs)("span",{ref:d,className:"ml-auto flex gap-1.5",children:[(0,t.jsx)(n.K,{size:"sm",className:"disabled:hover:bg-surface","aria-label":"Previous page",disabled:e<=1,onClick:()=>u(e-1,1),children:"‹ Previous"}),(0,t.jsx)(n.K,{size:"sm",className:"disabled:hover:bg-surface","aria-label":"Next page",disabled:e>=i,onClick:()=>u(e+1,0),children:"Next ›"})]})]})}],541299),e.s(["k",0,function(e,t,a,n){return n<=1?null:t>0&&null!==a?a:e[0]?.id??null},"$",0,i,"f",0,function(e,t,a,n=25){let s=null===a?0:Math.max(0,e.findIndex(e=>e.id===a)),r=i(e.slice(s),t,n);return 0===s||r.page>1?{...r,shift:s}:{...i(e,1,n),shift:0}},"z",0,function(e,t=0,a=e.total){return`${e.from+t}–${e.to+t} of ${a}`}],495784)},177106,e=>{var t=e.i(843476),a=e.i(33550);let n=(0,a.f)("outline","chevron-down","ChevronDown",[["path",{d:"M6 9l6 6l6 -6",key:"svg-0"}]]),s=(0,a.f)("outline","dots-vertical","DotsVertical",[["path",{d:"M11 12a1 1 0 1 0 2 0a1 1 0 1 0 -2 0",key:"svg-0"}],["path",{d:"M11 19a1 1 0 1 0 2 0a1 1 0 1 0 -2 0",key:"svg-1"}],["path",{d:"M11 5a1 1 0 1 0 2 0a1 1 0 1 0 -2 0",key:"svg-2"}]]);var i=e.i(271645),r=e.i(428325),l=e.i(500443),o=e.i(755146);e.s(["RowMenu",0,function({items:e,button:a=!1,label:d="Actions"}){let[c,u]=(0,i.useState)(!1);return(0,l.useHoldRefresh)(c),(0,t.jsxs)(o.G,{open:c,onOpenChange:u,children:[a?(0,t.jsxs)(o.X,{className:(0,r.R)(),children:[d," ",(0,t.jsx)(n,{size:16,"aria-hidden":!0})]}):(0,t.jsx)(o.X,{"aria-label":d,className:"rounded-[5px] px-1.5 py-1 text-ink-faint hover:bg-sunken hover:text-ink focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-brand/40",children:(0,t.jsx)(s,{size:17})}),(0,t.jsx)(o.L,{align:"end",className:"min-w-[200px] rounded-[8px] border border-line-strong bg-surface p-1 shadow-[0_8px_24px_rgba(0,0,0,.14)] ring-0",children:e.map((e,a)=>"---"===e?(0,t.jsx)(o.U,{},`sep-${a}`):(0,t.jsxs)(o.r,{disabled:void 0!==e.disabled,variant:e.danger?"destructive":"default",className:"rounded-[5px] px-2.5 py-[7px]",onClick:()=>{e.href?window.open(e.href,"_blank","noopener,noreferrer"):e.onSelect?.()},children:[e.label,void 0!==e.disabled&&(0,t.jsx)("span",{className:"ml-auto pl-3 text-[11px] text-ink-faint",children:e.disabled})]},e.label))})]})}],177106)},776639,998218,152744,e=>{var t=e.i(843476),a=e.i(526323),n=e.i(828376);e.s(["f",0,n],998218);var n=n,s=e.i(209977),i=e.i(921637),r=e.i(141708),l=e.i(593480),o=e.i(309169),d=n;e.s(["f",0,d],152744);var d=n,c=e.i(975157),u=e.i(271645),p=e.i(540886),x=e.i(552245);let h=u.forwardRef(function(e,t){let{render:a,className:n,disabled:s=!1,focusableWhenDisabled:i=!1,nativeButton:r=!0,style:l,...o}=e,{getButtonProps:d,buttonRef:c}=(0,p.f)({disabled:s,focusableWhenDisabled:i,native:r});return(0,x.a)("button",e,{state:{disabled:s},ref:[t,c],props:[o,d]})}),m=(0,e.i(225913).f)("group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/80",outline:"border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground hover:bg-[color-mix(in_oklch,var(--secondary),var(--foreground)_5%)] aria-expanded:bg-secondary aria-expanded:text-secondary-foreground",ghost:"hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50",destructive:"bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",xs:"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",sm:"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5",lg:"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",icon:"size-8","icon-xs":"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3","icon-sm":"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg","icon-lg":"size-9"}},defaultVariants:{variant:"default",size:"default"}});function f({className:e,variant:a="default",size:n="default",...s}){return(0,t.jsx)(h,{"data-slot":"button",className:(0,c.f)(m({variant:a,size:n,className:e})),...s})}var g=e.i(456420);let v={name:"x",size:24,node:[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]};v.node;let b=(0,g.f)(v);function j({...e}){return(0,t.jsx)(s.f.Portal,{"data-slot":"dialog-portal",...e})}function y({className:e,...a}){return(0,t.jsx)(r.f.Backdrop,{"data-slot":"dialog-overlay",className:(0,c.f)("fixed inset-0 isolate z-50 bg-black/40 duration-100 data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0",e),...a})}e.s(["N",0,function({...e}){return(0,t.jsx)(a.f.Root,{"data-slot":"dialog",...e})},"d",0,function({className:e,children:a,showCloseButton:n=!0,...s}){return(0,t.jsxs)(j,{children:[(0,t.jsx)(y,{}),(0,t.jsxs)(l.f.Popup,{"data-slot":"dialog-content",className:(0,c.f)("fixed top-1/2 left-1/2 z-50 grid w-full grid-cols-[minmax(0,1fr)] max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-popover p-4 text-sm text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0",e),...s,children:[a,n&&(0,t.jsxs)(i.f.Close,{"data-slot":"dialog-close",render:(0,t.jsx)(f,{variant:"ghost",className:"absolute top-2 right-2",size:"icon-sm"}),children:[(0,t.jsx)(b,{}),(0,t.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})},"C",0,function({className:e,...a}){return(0,t.jsx)(d.Description,{"data-slot":"dialog-description",className:(0,c.f)("text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground",e),...a})},"F",0,function({className:e,...a}){return(0,t.jsx)(o.f.Title,{"data-slot":"dialog-title",className:(0,c.f)("font-heading text-base leading-none font-medium",e),...a})},"a",0,function({...e}){return(0,t.jsx)(n.Trigger,{"data-slot":"dialog-trigger",...e})}],776639)},322534,e=>{e.i(684496),e.s(["O",0,e=>`${e} item${1===e?"":"s"}`,"J",0,function(e,t){let a=Math.max(0,t.getTime()-e.getTime());return a<6e4?"now":a<36e5?`${Math.floor(a/6e4)} min ago`:a<864e5?`${Math.floor(a/36e5)} h ago`:`${Math.floor(a/864e5)} d ago`}])},898121,e=>{let t={"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:e.i(944971).C.writeNotesLong}};e.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,t])}])})();
1
+ (()=>{"use strict";(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,399582,e=>{let t=(0,e.i(33550).f)("outline","copy","Copy",[["path",{d:"M7 9.667a2.667 2.667 0 0 1 2.667 -2.667h8.666a2.667 2.667 0 0 1 2.667 2.667v8.666a2.667 2.667 0 0 1 -2.667 2.667h-8.666a2.667 2.667 0 0 1 -2.667 -2.667l0 -8.666",key:"svg-0"}],["path",{d:"M4.012 16.737a2.005 2.005 0 0 1 -1.012 -1.737v-10c0 -1.1 .9 -2 2 -2h10c.75 0 1.158 .385 1.5 1",key:"svg-1"}]]);e.s(["f",0,t],399582)},531219,e=>{let t=(0,e.i(33550).f)("outline","filter-off","FilterOff",[["path",{d:"M8 4h12v2.172a2 2 0 0 1 -.586 1.414l-3.914 3.914m-.5 3.5v4l-6 2v-8.5l-4.48 -4.928a2 2 0 0 1 -.52 -1.345v-2.227",key:"svg-0"}],["path",{d:"M3 3l18 18",key:"svg-1"}]]);e.s(["f",0,t],531219)},617708,e=>{let t=(0,e.i(33550).f)("outline","plus","Plus",[["path",{d:"M12 5l0 14",key:"svg-0"}],["path",{d:"M5 12l14 0",key:"svg-1"}]]);e.s(["f",0,t],617708)},225913,e=>{var t=e.i(207670);let a=e=>"boolean"==typeof e?`${e}`:0===e?"0":e,n=t.f;e.s(["f",0,(e,t)=>s=>{var i;if((null==t?void 0:t.variants)==null)return n(e,null==s?void 0:s.class,null==s?void 0:s.className);let{variants:r,defaultVariants:l}=t,o=Object.keys(r).map(e=>{let t=null==s?void 0:s[e],n=null==l?void 0:l[e];if(null===t)return null;let i=a(t)||a(n);return r[e][i]}),d=s&&Object.entries(s).reduce((e,t)=>{let[a,n]=t;return void 0===n||(e[a]=n),e},{});return n(e,o,null==t||null==(i=t.compoundVariants)?void 0:i.reduce((e,t)=>{let{class:a,className:n,...s}=t;return Object.entries(s).every(e=>{let[t,a]=e;return Array.isArray(a)?a.includes({...l,...d}[t]):({...l,...d})[t]===a})?[...e,a,n]:e},[]),null==s?void 0:s.class,null==s?void 0:s.className)}])},477691,e=>{var t=e.i(843476),a=e.i(785642),n=e.i(399582),s=e.i(23990),i=e.i(617708),r=e.i(944971),l=e.i(522016),o=e.i(271645),d=e.i(846696),c=e.i(428325),u=e.i(500443),p=e.i(776639),x=e.i(95187);let h=(0,x.createServerReference)("40f21df6dafbabab52a881bf477028c5d9ca7ed4ad",x.callServer,void 0,x.findSourceMapURL,"createKeyAction");function m({scopes:e}){return(0,t.jsx)(t.Fragment,{children:e.map(e=>(0,t.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:e},e))})}var f=e.i(898121);function g({icon:e,title:a,sub:n}){return(0,t.jsxs)("div",{className:"flex items-start gap-3 px-[18px] pb-2 pt-4",children:[(0,t.jsx)("span",{className:"grid size-9 shrink-0 place-items-center rounded-lg bg-sunken text-ink-soft",children:e}),(0,t.jsxs)("div",{children:[(0,t.jsx)(p.F,{className:"text-base",children:a}),(0,t.jsx)(p.C,{className:"mt-0.5 text-[13px] text-ink-soft",children:n})]})]})}function v({onCreated:e,onCancel:a}){let[n,i]=(0,o.useState)(""),[l,u]=(0,o.useState)(f.J),[p,x]=(0,o.useState)(f.j),[b,j]=(0,o.useState)(String(f.D)),[y,k]=(0,o.useState)({}),[N,C]=(0,o.useState)(""),[w,S]=(0,o.useTransition)();return(0,t.jsxs)("form",{onSubmit:function(t){t.preventDefault(),S(async()=>{k({}),C("");try{let t=await h({name:n.trim(),scopes:f.B.filter(e=>l.includes(e)),expiry:p,ratePerMin:b.trim()});t.ok&&t.data?(d.c.success(t.message??"Key created."),e(t.data)):t.ok||(t.fieldErrors?k(t.fieldErrors):C(t.error))}catch{C("Watchbell didn't answer. Check that it's still running, then try again.")}})},noValidate:!0,children:[(0,t.jsx)(g,{icon:(0,t.jsx)(s.f,{size:19}),title:"Create API key",sub:"For one app or agent. Shown once."}),(0,t.jsxs)("div",{className:"px-[18px] pt-1.5",children:[(0,t.jsx)(c.O,{id:"key-name",label:"Name",help:"Lowercase letters, digits and dashes. Agents and Logs show it.",error:y.name,children:(0,t.jsx)("input",{id:"key-name",value:n,onChange:e=>i(e.target.value),placeholder:r.C.namePlaceholder,autoComplete:"off",autoCapitalize:"none",spellCheck:!1,className:c.S})}),(0,t.jsxs)("fieldset",{className:"mb-3.5",children:[(0,t.jsx)("legend",{className:"mb-[5px] text-[13px] font-medium",children:"Scopes"}),(0,t.jsx)("div",{className:"flex flex-col gap-1.5",children:f.B.map(e=>(0,t.jsxs)("label",{className:"flex cursor-pointer items-start gap-2",children:[(0,t.jsx)("input",{type:"checkbox",checked:l.includes(e),onChange:()=>u(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e]),className:"mt-[3px] accent-brand"}),(0,t.jsxs)("span",{children:[(0,t.jsx)(m,{scopes:[e]})," ",(0,t.jsx)("span",{className:"text-[13px] text-ink-soft",children:f.h[e].short})]})]},e))}),y.scopes&&(0,t.jsx)("span",{className:"text-[12.5px] text-err",role:"alert",children:y.scopes})]}),(0,t.jsxs)("div",{className:"grid grid-cols-2 gap-3 max-[560px]:grid-cols-1",children:[(0,t.jsx)(c.O,{id:"key-expiry",label:"Expires",error:y.expiry,children:(0,t.jsx)("select",{id:"key-expiry",value:p,onChange:e=>x(e.target.value),className:c.S,children:f.W.map(e=>(0,t.jsx)("option",{value:e,children:f.o[e]},e))})}),(0,t.jsx)(c.O,{id:"key-rate",label:"Rate limit",help:"Requests per minute, 1–600. Applies before the provider's own limits.",error:y.ratePerMin,children:(0,t.jsx)("input",{id:"key-rate",inputMode:"numeric",value:b,onChange:e=>j(e.target.value),className:`${c.S} font-mono`})})]}),N&&(0,t.jsx)("p",{className:"mb-3 text-[13px] text-err",role:"alert",children:N})]}),(0,t.jsxs)("div",{className:"flex justify-end gap-2 border-t border-line px-[18px] py-3",children:[(0,t.jsx)(c.K,{onClick:a,disabled:w,children:"Cancel"}),(0,t.jsx)(c.K,{type:"submit",variant:"primary",disabled:w,children:w?"Creating…":"Create key"})]})]})}function b({created:e,onDone:s}){async function i(){try{await navigator.clipboard.writeText(e.key),d.c.success("Copied.")}catch{d.c.error("Couldn't copy. Select the key and copy it by hand.")}}return(0,t.jsxs)("div",{children:[(0,t.jsx)(g,{icon:(0,t.jsx)(a.f,{size:19}),title:`Key ${e.name} created`,sub:"Copy it now."}),(0,t.jsxs)("div",{className:"px-[18px] pb-3 pt-1.5",children:[(0,t.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,t.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:e.key}),(0,t.jsxs)(c.K,{size:"sm",onClick:i,children:[(0,t.jsx)(n.f,{size:15,"aria-hidden":!0}),"Copy"]})]}),(0,t.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,t.jsxs)("p",{className:"mb-0 mt-3 text-[13px] text-ink-soft",children:["Next: put it in the app's environment as ",(0,t.jsx)("span",{className:"font-mono",children:"WATCHBELL_API_KEY"}),", then follow ",(0,t.jsx)(l.default,{href:"/ai",className:"text-brand",children:"Quick start"})," or ",(0,t.jsx)(l.default,{href:"/ai/connect",className:"text-brand",children:"Connect an agent"}),"."]})]}),(0,t.jsx)("div",{className:"flex justify-end gap-2 border-t border-line px-[18px] py-3",children:(0,t.jsx)(c.K,{variant:"primary",onClick:s,children:"Done"})})]})}e.s(["CreateKeyDialog",0,function(){let[e,a]=(0,o.useState)(!1),[n,s]=(0,o.useState)(null);function r(e){a(e),e||s(null)}return(0,u.useHoldRefresh)(e),(0,t.jsxs)(p.N,{open:e,onOpenChange:r,children:[(0,t.jsxs)(p.a,{render:(0,t.jsx)(c.K,{variant:"primary"}),children:[(0,t.jsx)(i.f,{size:16,"aria-hidden":!0}),"Create key"]}),(0,t.jsx)(p.d,{className:"gap-0 p-0 sm:max-w-[640px]",showCloseButton:!1,children:n?(0,t.jsx)(b,{created:n,onDone:()=>r(!1)}):(0,t.jsx)(v,{onCreated:s,onCancel:()=>r(!1)})})]})}],477691)},211541,e=>{var t=e.i(843476),a=e.i(271645),n=e.i(846696),s=e.i(46200),i=e.i(428325),r=e.i(500443),l=e.i(177106),o=e.i(776639),d=e.i(95187);let c=(0,d.createServerReference)("607652a454c471076feb753b0260df4e738dbaa23c",d.callServer,void 0,d.findSourceMapURL,"changeKeyAction"),u=(0,d.createServerReference)("40e9750b90e1c558db1a0ee034d383a1d7388e1113",d.callServer,void 0,d.findSourceMapURL,"revokeKeyAction");var p=e.i(898121);let x={rename:{title:e=>`Rename ${e}`,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 h({mode:e,k:s,providers:r,onDone:l}){let[d,u]=(0,a.useState)(s.name),[m,f]=(0,a.useState)(String(s.ratePerMin)),[g,v]=(0,a.useState)(s.expiresAt?"90d":"never"),[b,j]=(0,a.useState)(s.providerId??""),[y,k]=(0,a.useState)(s.model??""),[N,C]=(0,a.useState)({}),[w,S]=(0,a.useState)(""),[z,M]=(0,a.useTransition)(),R=x[e];return(0,t.jsxs)("form",{onSubmit:function(t){t.preventDefault(),M(async()=>{C({}),S("");try{let t=await c(s.id,"rename"===e?{kind:"rename",name:d.trim()}:"rate"===e?{kind:"rate",ratePerMin:m.trim()}:"expiry"===e?{kind:"expiry",expiry:g}:{kind:"routing",providerId:b||null,model:b?y.trim():null});t.ok?(n.c.success(t.message??"Key updated."),l()):t.fieldErrors?C(t.fieldErrors):S(t.error)}catch{S("Watchbell didn't answer. Check that it's still running, then try again.")}})},noValidate:!0,children:[(0,t.jsxs)("div",{className:"px-[18px] pb-2 pt-4",children:[(0,t.jsx)(o.F,{className:"text-base",children:R.title(s.name)}),(0,t.jsx)(o.C,{className:"mt-0.5 text-[13px] text-ink-soft",children:R.sub})]}),(0,t.jsxs)("div",{className:"px-[18px] pt-1.5",children:["rename"===e&&(0,t.jsx)(i.O,{id:"edit-name",label:"Name",error:N.name,children:(0,t.jsx)("input",{id:"edit-name",value:d,onChange:e=>u(e.target.value),autoComplete:"off",autoCapitalize:"none",spellCheck:!1,className:i.S})}),"rate"===e&&(0,t.jsx)(i.O,{id:"edit-rate",label:"Rate limit",help:"Requests per minute.",error:N.ratePerMin,children:(0,t.jsx)("input",{id:"edit-rate",inputMode:"numeric",value:m,onChange:e=>f(e.target.value),className:`${i.S} font-mono`})}),"expiry"===e&&(0,t.jsx)(i.O,{id:"edit-expiry",label:"Expires",error:N.expiry,children:(0,t.jsx)("select",{id:"edit-expiry",value:g,onChange:e=>v(e.target.value),className:i.S,children:p.W.map(e=>(0,t.jsx)("option",{value:e,children:p.o[e]},e))})}),"routing"===e&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(i.O,{id:"edit-provider",label:"Provider",help:r.length?void 0:"No provider is connected yet. Until one is, this key has nothing to pin to.",error:N.providerId,children:(0,t.jsxs)("select",{id:"edit-provider",value:b,onChange:e=>j(e.target.value),className:i.S,children:[(0,t.jsx)("option",{value:"",children:"No pin (default provider)"}),r.map(e=>(0,t.jsxs)("option",{value:e.id,children:[e.name,e.enabled?"":" (off)"]},e.id))]})}),(0,t.jsx)(i.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:N.model,children:(0,t.jsx)("input",{id:"edit-model",value:y,onChange:e=>k(e.target.value),disabled:!b,placeholder:"gemini-3.8-flash",autoComplete:"off",autoCapitalize:"none",spellCheck:!1,className:`${i.S} font-mono`})})]}),w&&(0,t.jsx)("p",{className:"mb-3 text-[13px] text-err",role:"alert",children:w})]}),(0,t.jsxs)("div",{className:"flex justify-end gap-2 border-t border-line px-[18px] py-3",children:[(0,t.jsx)(i.K,{onClick:l,disabled:z,children:"Cancel"}),(0,t.jsx)(i.K,{type:"submit",variant:"primary",disabled:z,children:z?"Saving…":R.cta})]})]})}e.s(["KeyActions",0,function({k:e,providers:n}){let[d,c]=(0,a.useState)(null);return(0,r.useHoldRefresh)(null!==d),(0,t.jsxs)("span",{className:"inline-flex items-center gap-1",children:[(0,t.jsx)(s.f,{trigger:(0,t.jsx)(i.K,{size:"sm",children:"Revoke"}),title:`Revoke ${e.name}?`,body:`Calls with ${e.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 t=await u(e.id);return{ok:t.ok,message:(t.ok?t.message:t.error)??""}}}),(0,t.jsx)(l.RowMenu,{label:`Actions for ${e.name}`,items:[{label:"Rename",onSelect:()=>c("rename")},{label:"Change rate limit",onSelect:()=>c("rate")},{label:"Change expiry",onSelect:()=>c("expiry")},{label:"Change routing",onSelect:()=>c("routing")}]}),(0,t.jsx)(o.N,{open:null!==d,onOpenChange:e=>{e||c(null)},children:(0,t.jsx)(o.d,{className:"gap-0 p-0 sm:max-w-[520px]",showCloseButton:!1,children:d&&(0,t.jsx)(h,{mode:d,k:e,providers:n,onDone:()=>c(null)})})})]})}],211541)},46200,e=>{var t=e.i(843476),a=e.i(146874),n=e.i(239692),s=e.i(271645),i=e.i(846696),r=e.i(428325),l=e.i(500443),o=e.i(776639);e.s(["f",0,function({trigger:e,open:d,onOpenChange:c,title:u,body:p,cta:x,danger:h=!1,onConfirm:m}){let[f,g]=(0,s.useState)(!1),v=d??f,[b,j]=(0,s.useTransition)();function y(e){void 0===d&&g(e),c?.(e)}return(0,l.useHoldRefresh)(v),(0,t.jsxs)(o.N,{open:v,onOpenChange:e=>{b||y(e)},children:[void 0!==e&&((0,s.isValidElement)(e)?(0,t.jsx)(o.a,{render:e}):(0,t.jsx)(o.a,{children:e})),(0,t.jsxs)(o.d,{className:"gap-0 p-0 sm:max-w-[640px]",showCloseButton:!1,children:[(0,t.jsxs)("div",{className:"flex items-start gap-3 px-[18px] pb-2 pt-4",children:[(0,t.jsx)("span",{className:`grid size-9 shrink-0 place-items-center rounded-lg bg-sunken ${h?"text-err":"text-ink-soft"}`,children:h?(0,t.jsx)(a.f,{size:19}):(0,t.jsx)(n.f,{size:19})}),(0,t.jsxs)("div",{children:[(0,t.jsx)(o.F,{className:"text-base",children:u}),(0,t.jsx)(o.C,{className:"mt-0.5 text-[13px] text-ink-soft",children:p})]})]}),(0,t.jsxs)("div",{className:"flex flex-wrap items-center justify-end gap-2 border-t border-line px-[18px] py-3",children:[(0,t.jsx)(r.K,{onClick:()=>y(!1),disabled:b,children:"Keep as is"}),(0,t.jsx)(r.K,{variant:h?"danger":"primary",onClick:function(){j(async()=>{try{let e=await m();e.ok?(i.c.success(e.message),y(!1)):i.c.error(e.message)}catch{i.c.error("Watchbell didn't answer. Check that it's still running, then try again.")}})},disabled:b,children:b?"Working…":x})]})]})]})}])},374931,e=>{var t=e.i(843476),a=e.i(531219),n=e.i(357772),s=e.i(271645),i=e.i(54131),r=e.i(428325),l=e.i(541299),o=e.i(691106),d=e.i(975157),c=e.i(322534),u=e.i(495784);e.s(["ListFilter",0,function({placeholder:e,states:p,groups:x,head:h,rows:m,chips:f}){var g,v;let b,[j,y]=(0,s.useState)(""),[k,N]=(0,s.useState)(""),[C,w]=(0,s.useState)(""),[S,z]=(0,s.useState)(""),[M,R]=(0,s.useState)(1),A=(0,i.useMask)(),K=(g=m.map(e=>({...e,text:`${e.text} ${A("text",e.text)}`})),b=(v={text:j,state:k,group:S,tag:C}).text.trim().toLowerCase(),g.filter(e=>(!v.state||e.state===v.state)&&(!v.group||e.group===v.group)&&(!v.tag||(e.tags??[]).includes(v.tag))&&(!b||e.text.toLowerCase().includes(b)))),$=(0,u.$)(K,M),O=$.rows;$.page!==M&&R($.page);let P=p?.find(([e])=>e===k)?.[1];return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"flex flex-wrap items-center gap-2 px-[18px] pb-3 pt-3.5 max-[720px]:px-3.5",children:[(0,t.jsx)("input",{className:(0,d.f)(r.S,"w-[240px] max-[720px]:w-full"),placeholder:e,"aria-label":e,value:j,onChange:e=>{y(e.target.value),R(1)}}),p&&(0,t.jsxs)("select",{className:(0,d.f)(r.S,"w-auto"),"aria-label":"State",value:k,onChange:e=>{N(e.target.value),R(1)},children:[(0,t.jsx)("option",{value:"",children:"All states"}),p.map(([e,a])=>(0,t.jsx)("option",{value:e,children:a},e))]}),x&&x.length>1&&(0,t.jsxs)("select",{className:(0,d.f)(r.S,"w-auto"),"aria-label":"Account",value:S,onChange:e=>{z(e.target.value),R(1)},children:[(0,t.jsx)("option",{value:"",children:"All accounts"}),x.map(e=>(0,t.jsx)("option",{value:e,children:A("account",e)},e))]}),f?.map(([e,a])=>(0,t.jsx)("button",{type:"button","aria-pressed":C===e,onClick:()=>{w(C===e?"":e),R(1)},className:(0,d.f)("rounded-[5px] border px-2 py-0.5 text-[12.5px]",C===e?"border-brand bg-brand-soft text-brand":"border-line text-ink-soft hover:bg-hover"),children:a},e)),P&&(0,t.jsxs)("span",{className:"inline-flex items-center gap-1 rounded-[5px] bg-brand-soft py-px pl-2 pr-1 text-[12.5px] text-brand",children:["State: ",P,(0,t.jsx)("button",{type:"button","aria-label":"Remove filter",className:"px-0.5",onClick:()=>{N(""),R(1)},children:(0,t.jsx)(n.f,{size:13})})]}),S&&(0,t.jsxs)("span",{className:"inline-flex items-center gap-1 rounded-[5px] bg-brand-soft py-px pl-2 pr-1 text-[12.5px] text-brand",children:["Account: ",(0,t.jsx)(i.Masked,{kind:"account",real:S}),(0,t.jsx)("button",{type:"button","aria-label":"Remove account filter",className:"px-0.5",onClick:()=>{z(""),R(1)},children:(0,t.jsx)(n.f,{size:13})})]}),(0,t.jsx)("span",{role:"status",className:"ml-auto text-[12.5px] text-ink-soft",children:(0,c.O)(K.length)})]}),(0,t.jsx)("div",{className:"overflow-x-auto",children:(0,t.jsxs)("table",{className:o.o,children:[(0,t.jsx)(o.U,{head:h}),(0,t.jsx)("tbody",{children:O.map(e=>(0,t.jsx)(s.Fragment,{children:e.row},e.key))})]})}),0===K.length&&m.length>0&&(0,t.jsxs)(r.k,{icon:a.f,title:"No results",children:["Nothing matches these filters."," ",(0,t.jsx)("button",{type:"button",className:"text-brand hover:underline",onClick:()=>{y(""),N(""),z(""),w(""),R(1)},children:"Clear filters"})]}),(0,t.jsx)(l.f,{page:$.page,pages:$.pages,text:(0,u.z)($),onPage:R})]})}],374931)},541299,495784,e=>{var t=e.i(843476),a=e.i(271645),n=e.i(428325),s=e.i(975157);function i(e,t,a=25){let n=e.length,s=Math.max(1,Math.ceil(n/a)),r=Math.min(Math.max(Number.isFinite(t)?Math.floor(t):1,1),s),l=(r-1)*a,o=e.slice(l,l+a);return{rows:o,page:r,pages:s,from:0===n?0:l+1,to:l+o.length,total:n}}e.s(["f",0,function({page:e,pages:i,text:r,onPage:l,bleed:o=!1}){let d=(0,a.useRef)(null),c=(0,a.useRef)(null);if((0,a.useEffect)(()=>{null!==c.current&&(d.current?.querySelectorAll("button")[c.current]?.focus(),c.current=null)},[e]),i<=1)return null;let u=(e,t)=>{(e<=1||e>=i)&&(c.current=t),l(e)};return(0,t.jsxs)("div",{className:(0,s.f)("flex items-center gap-2 border-t border-line px-[18px] py-2.5 text-[12.5px] text-ink-soft",o?"-mx-[18px] -mb-4 mt-2":"max-[720px]:px-3.5"),children:[(0,t.jsx)("span",{role:"status",children:r}),(0,t.jsxs)("span",{ref:d,className:"ml-auto flex gap-1.5",children:[(0,t.jsx)(n.K,{size:"sm",className:"disabled:hover:bg-surface","aria-label":"Previous page",disabled:e<=1,onClick:()=>u(e-1,1),children:"‹ Previous"}),(0,t.jsx)(n.K,{size:"sm",className:"disabled:hover:bg-surface","aria-label":"Next page",disabled:e>=i,onClick:()=>u(e+1,0),children:"Next ›"})]})]})}],541299),e.s(["k",0,function(e,t,a,n){return n<=1?null:t>0&&null!==a?a:e[0]?.id??null},"$",0,i,"f",0,function(e,t,a,n=25){let s=null===a?0:Math.max(0,e.findIndex(e=>e.id===a)),r=i(e.slice(s),t,n);return 0===s||r.page>1?{...r,shift:s}:{...i(e,1,n),shift:0}},"z",0,function(e,t=0,a=e.total){return`${e.from+t}–${e.to+t} of ${a}`}],495784)},177106,e=>{var t=e.i(843476),a=e.i(33550);let n=(0,a.f)("outline","chevron-down","ChevronDown",[["path",{d:"M6 9l6 6l6 -6",key:"svg-0"}]]),s=(0,a.f)("outline","dots-vertical","DotsVertical",[["path",{d:"M11 12a1 1 0 1 0 2 0a1 1 0 1 0 -2 0",key:"svg-0"}],["path",{d:"M11 19a1 1 0 1 0 2 0a1 1 0 1 0 -2 0",key:"svg-1"}],["path",{d:"M11 5a1 1 0 1 0 2 0a1 1 0 1 0 -2 0",key:"svg-2"}]]);var i=e.i(271645),r=e.i(428325),l=e.i(500443),o=e.i(755146);e.s(["RowMenu",0,function({items:e,button:a=!1,label:d="Actions"}){let[c,u]=(0,i.useState)(!1);return(0,l.useHoldRefresh)(c),(0,t.jsxs)(o.G,{open:c,onOpenChange:u,children:[a?(0,t.jsxs)(o.X,{className:(0,r.R)(),children:[d," ",(0,t.jsx)(n,{size:16,"aria-hidden":!0})]}):(0,t.jsx)(o.X,{"aria-label":d,className:"rounded-[5px] px-1.5 py-1 text-ink-faint hover:bg-sunken hover:text-ink focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-brand/40",children:(0,t.jsx)(s,{size:17})}),(0,t.jsx)(o.L,{align:"end",className:"min-w-[200px] rounded-[8px] border border-line-strong bg-surface p-1 shadow-[0_8px_24px_rgba(0,0,0,.14)] ring-0",children:e.map((e,a)=>"---"===e?(0,t.jsx)(o.U,{},`sep-${a}`):(0,t.jsxs)(o.r,{disabled:void 0!==e.disabled,variant:e.danger?"destructive":"default",className:"rounded-[5px] px-2.5 py-[7px]",onClick:()=>{e.href?window.open(e.href,"_blank","noopener,noreferrer"):e.onSelect?.()},children:[e.label,void 0!==e.disabled&&(0,t.jsx)("span",{className:"ml-auto pl-3 text-[11px] text-ink-faint",children:e.disabled})]},e.label))})]})}],177106)},776639,998218,152744,e=>{var t=e.i(843476),a=e.i(526323),n=e.i(828376);e.s(["f",0,n],998218);var n=n,s=e.i(209977),i=e.i(921637),r=e.i(141708),l=e.i(593480),o=e.i(309169),d=n;e.s(["f",0,d],152744);var d=n,c=e.i(975157),u=e.i(271645),p=e.i(540886),x=e.i(552245);let h=u.forwardRef(function(e,t){let{render:a,className:n,disabled:s=!1,focusableWhenDisabled:i=!1,nativeButton:r=!0,style:l,...o}=e,{getButtonProps:d,buttonRef:c}=(0,p.f)({disabled:s,focusableWhenDisabled:i,native:r});return(0,x.a)("button",e,{state:{disabled:s},ref:[t,c],props:[o,d]})}),m=(0,e.i(225913).f)("group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/80",outline:"border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground hover:bg-[color-mix(in_oklch,var(--secondary),var(--foreground)_5%)] aria-expanded:bg-secondary aria-expanded:text-secondary-foreground",ghost:"hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50",destructive:"bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",xs:"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",sm:"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5",lg:"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",icon:"size-8","icon-xs":"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3","icon-sm":"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg","icon-lg":"size-9"}},defaultVariants:{variant:"default",size:"default"}});function f({className:e,variant:a="default",size:n="default",...s}){return(0,t.jsx)(h,{"data-slot":"button",className:(0,c.f)(m({variant:a,size:n,className:e})),...s})}var g=e.i(456420);let v={name:"x",size:24,node:[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]};v.node;let b=(0,g.f)(v);function j({...e}){return(0,t.jsx)(s.f.Portal,{"data-slot":"dialog-portal",...e})}function y({className:e,...a}){return(0,t.jsx)(r.f.Backdrop,{"data-slot":"dialog-overlay",className:(0,c.f)("fixed inset-0 isolate z-50 bg-black/40 duration-100 data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0",e),...a})}e.s(["N",0,function({...e}){return(0,t.jsx)(a.f.Root,{"data-slot":"dialog",...e})},"d",0,function({className:e,children:a,showCloseButton:n=!0,...s}){return(0,t.jsxs)(j,{children:[(0,t.jsx)(y,{}),(0,t.jsxs)(l.f.Popup,{"data-slot":"dialog-content",className:(0,c.f)("fixed top-1/2 left-1/2 z-50 grid w-full grid-cols-[minmax(0,1fr)] max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-popover p-4 text-sm text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0",e),...s,children:[a,n&&(0,t.jsxs)(i.f.Close,{"data-slot":"dialog-close",render:(0,t.jsx)(f,{variant:"ghost",className:"absolute top-2 right-2",size:"icon-sm"}),children:[(0,t.jsx)(b,{}),(0,t.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})},"C",0,function({className:e,...a}){return(0,t.jsx)(d.Description,{"data-slot":"dialog-description",className:(0,c.f)("text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground",e),...a})},"F",0,function({className:e,...a}){return(0,t.jsx)(o.f.Title,{"data-slot":"dialog-title",className:(0,c.f)("font-heading text-base leading-none font-medium",e),...a})},"a",0,function({...e}){return(0,t.jsx)(n.Trigger,{"data-slot":"dialog-trigger",...e})}],776639)},322534,e=>{e.i(684496),e.s(["O",0,e=>`${e} item${1===e?"":"s"}`,"J",0,function(e,t){let a=Math.max(0,t.getTime()-e.getTime());return a<6e4?"now":a<36e5?`${Math.floor(a/6e4)} min ago`:a<864e5?`${Math.floor(a/36e5)} h ago`:`${Math.floor(a/864e5)} d ago`}])},898121,e=>{let t={"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:e.i(944971).C.writeNotesLong}};e.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,t])}])})();
@@ -1 +1 @@
1
- (()=>{"use strict";(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,243075,515234,828892,e=>{var t=e.i(95187);let n=(0,t.createServerReference)("6074319bb2f4cec6f99492452eb563ddb987bea83a",t.callServer,void 0,t.findSourceMapURL,"promoteAction");e.s(["f",0,n],243075);let r=(0,t.createServerReference)("607468008a7fe351958d8d2cb1b714bb4d7fd6c003",t.callServer,void 0,t.findSourceMapURL,"redeployAction");e.s(["f",0,r],515234);let l=(0,t.createServerReference)("6096cafb0ba00a27afa0a24bf2152662ec73674469",t.callServer,void 0,t.findSourceMapURL,"rollbackAction");e.s(["f",0,l],828892)},523135,e=>{var t=e.i(843476),n=e.i(271645),r=e.i(54131),l=e.i(428325),a=e.i(799589),o=e.i(177106),i=e.i(856033),s=e.i(452842),c=e.i(95187);let d=(0,c.createServerReference)("60f6f1e670ecaccf7654b9d2fc3140207f9f2791da",c.callServer,void 0,c.findSourceMapURL,"cancelAction");var u=e.i(243075);let p=(0,c.createServerReference)("60e89da91ed5691fd8d0d52ded557df5ed7e37307f",c.callServer,void 0,c.findSourceMapURL,"promotePreviewAction");var m=e.i(515234),h=e.i(828892),x=e.i(39626),f=e.i(776639),b=e.i(500443);let g=/(\berror(?![-\w])|\bERR!|\bERR_[A-Z_]+|\bfailed\b|exited with (?:code )?[1-9]|Module not found|command not found)/i,k=/^\s*(?:npm |pnpm |yarn )?(?:warn|warning)\b|\b0 (?:errors?|failed)\b/i;function y(e){return"command"!==e.kind&&"delimiter"!==e.kind&&g.test(e.text)&&!k.test(e.text)}var v=e.i(975157);let j=(0,c.createServerReference)("60a8e90d726873e1960102add3968f6d4b8e8182a8",c.callServer,void 0,c.findSourceMapURL,"buildLogsAction"),w=(0,c.createServerReference)("60bc83884e217727fe9254fe46e90ffa0dc0c715a3",c.callServer,void 0,c.findSourceMapURL,"explainBuildAction"),N={stdout:"",stderr:"text-code-warn",command:"text-code-info",delimiter:"text-code-dim"},S=e=>`build-line-${e}`;function $({log:e}){let n=e.lines.findIndex(y),r=e.lines.filter(y).length;return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"flex flex-wrap items-center gap-x-3 gap-y-1 px-[18px] pb-2 text-[12.5px] text-ink-soft",children:[(0,t.jsxs)("span",{children:[e.lines.length," lines",e.truncated?` (the last ${2e3.toLocaleString("en-US")})`:""]}),n>=0?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("span",{className:"text-err",children:[r," error line",1===r?"":"s"]}),(0,t.jsx)("button",{type:"button","data-line":S(n),className:"text-brand hover:underline",onClick:()=>document.getElementById(S(n))?.scrollIntoView({block:"center"}),children:"Jump to first error"})]}):(0,t.jsx)("span",{children:"No error lines"})]}),(0,t.jsx)("div",{tabIndex:0,"aria-label":"Build log lines",className:"min-h-0 flex-1 overflow-auto bg-code-bg px-4 py-3 font-mono text-[12.5px] leading-[1.7] text-code-text",children:0===e.lines.length?(0,t.jsx)("div",{className:"text-code-dim",children:"Vercel returned no build output for this deployment."}):e.lines.map((e,n)=>{let r=y(e);return(0,t.jsx)("div",{id:S(n),"data-error":r?"":void 0,className:(0,v.f)("whitespace-pre-wrap [overflow-wrap:anywhere]",r?"-mx-4 border-l-2 border-err bg-err/15 px-[14px] text-code-err":N[e.kind],"delimiter"===e.kind&&"mt-1.5 font-medium"),children:"command"===e.kind?`$ ${e.text}`:e.text||" "},n)})})]})}function R({answer:e}){return"asking"===e?(0,t.jsx)("p",{className:"px-[18px] pb-3 text-[13px] text-ink-soft",children:"Asking the AI provider…"}):"error"in e?(0,t.jsx)("p",{role:"alert",className:"px-[18px] pb-3 text-[13px] text-err",children:e.error}):(0,t.jsxs)("section",{"aria-label":"Explanation",className:"mx-[18px] mb-3 rounded-lg border border-line px-3.5 py-2.5",children:[(0,t.jsxs)("div",{className:"flex items-baseline gap-2 text-[12.5px]",children:[(0,t.jsx)("b",{className:"font-medium",children:"Explanation"}),(0,t.jsx)("span",{className:"font-mono text-xs text-ink-faint",children:e.model})]}),(0,t.jsx)("p",{className:"mt-1 whitespace-pre-wrap text-[13px] [overflow-wrap:anywhere]",children:e.text}),(0,t.jsx)("p",{className:"mt-1.5 text-xs text-ink-faint",children:"Written by a model from the log below. Check it against the log before you change code."})]})}function C({appId:e,deploymentId:r,title:a,open:o,onOpenChange:i,explain:s=!1,read:c=j,ask:d=w}){let[u,p]=(0,n.useState)(null),[m,h]=(0,n.useState)(null);(0,b.useHoldRefresh)(o),(0,n.useEffect)(()=>{if(!o)return;let t=!0;return c(e,r).then(e=>{t&&p(e.ok&&e.data?{log:e.data}:{error:e.ok?"No build log came back.":e.error})}).catch(()=>{t&&p({error:"Watchbell didn't answer. Check that it's still running, then try again."})}),()=>{t=!1,p(null),h(null)}},[o,e,r,c]);let g=s&&null!==u&&"log"in u&&"asking"!==m;return(0,t.jsx)(f.N,{open:o,onOpenChange:i,children:(0,t.jsxs)(f.d,{className:"top-0 right-0 left-auto flex h-dvh max-w-full translate-x-0 translate-y-0 flex-col gap-0 rounded-none p-0 sm:max-w-[780px]",children:[(0,t.jsxs)("div",{className:"px-[18px] pb-2 pt-4 pr-12",children:[(0,t.jsxs)(f.F,{className:"text-base",children:["Build log · ",a]}),(0,t.jsxs)(f.C,{className:"mt-0.5 text-[12.5px] text-ink-soft",children:["Newest build, read from Vercel now",(0,t.jsx)(x.Src,{kind:"api"})]}),s&&(0,t.jsx)(l.K,{size:"sm",className:"mt-2",disabled:!g,onClick:()=>{h("asking"),d(e,r).then(e=>h(e.ok&&e.data?e.data:{error:e.ok?"No explanation came back.":e.error})).catch(()=>h({error:"Watchbell didn't answer. Check that it's still running, then try again."}))},children:!m||"asking"===m||"error"in m?"Explain with AI":"Explain again"})]}),m&&(0,t.jsx)(R,{answer:m}),null===u?(0,t.jsx)("p",{className:"px-[18px] pb-4 text-[13px] text-ink-soft",children:"Reading the build log…"}):"error"in u?(0,t.jsx)("p",{role:"alert",className:"px-[18px] pb-4 text-[13px] text-err",children:u.error}):(0,t.jsx)($,{log:u.log})]})})}var P=e.i(322534);let A=(0,c.createServerReference)("60da93022770a30030c5c08e1dad6d723ca6ad5e43",c.callServer,void 0,c.findSourceMapURL,"releaseNotesAction"),E=/^(https:\/\/github\.com\/[^/]+\/[^/]+)\/commit\/[0-9a-f]+$/,I="text-brand underline-offset-2 hover:underline";function M({c:e,now:n}){var l;let a,o,i=(l=e.title,(a=/\(#(\d{1,7})\)\s*$/.exec(l)??/^Merge pull request #(\d{1,7})\b/.exec(l))?Number(a[1]):null),s=null===i?null:(o=e.url?E.exec(e.url):null)?`${o[1]}/pull/${i}`:null,c=e.sha.slice(0,7);return(0,t.jsxs)("li",{className:"border-b border-line px-[18px] py-2.5 last:border-b-0",children:[(0,t.jsxs)("div",{className:"text-[13px] [overflow-wrap:anywhere]",children:[(0,t.jsx)(r.MaskedText,{text:e.title}),s&&(0,t.jsxs)(t.Fragment,{children:[" ",(0,t.jsxs)("a",{href:s,target:"_blank",rel:"noreferrer",className:I,children:["#",i]})]})]}),(0,t.jsxs)("div",{className:"mt-0.5 font-mono text-xs text-ink-faint",children:[e.url?(0,t.jsx)("a",{href:e.url,target:"_blank",rel:"noreferrer",className:I,children:c}):c,e.author&&(0,t.jsxs)(t.Fragment,{children:[" · ",(0,t.jsx)(r.MaskedText,{text:e.author})]}),e.at&&(0,t.jsxs)(t.Fragment,{children:[" · ",(0,P.J)(new Date(e.at),n)]})]})]})}function L({notes:e,now:n}){if(e.note)return(0,t.jsx)("p",{className:"px-[18px] pb-4 text-[13px] text-ink-soft",children:e.note});if(0===e.commits.length)return(0,t.jsx)("p",{className:"px-[18px] pb-4 text-[13px] text-ink-soft",children:"GitHub found no commits between these deployments."});let r=e.total-e.commits.length;return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("p",{className:"px-[18px] pb-2 text-[12.5px] text-ink-soft",children:[e.total," commit",1===e.total?"":"s",e.from?(0,t.jsxs)(t.Fragment,{children:[" since ",(0,t.jsx)("span",{className:"font-mono",children:e.from.slice(0,7)})]}):null]}),(0,t.jsxs)("ul",{className:"min-h-0 flex-1 overflow-auto border-t border-line",children:[e.commits.map(e=>(0,t.jsx)(M,{c:e,now:n},e.sha)),e.cut&&r>0&&(0,t.jsxs)("li",{className:"px-[18px] py-2.5 text-[12.5px] text-ink-soft",children:["+",r," more, older, not shown"]})]})]})}function O({appId:e,deploymentId:r,title:l,open:a,onOpenChange:o,read:i=A}){let[s,c]=(0,n.useState)(null);return(0,b.useHoldRefresh)(a),(0,n.useEffect)(()=>{if(!a)return;let t=!0;return i(e,r).then(e=>{t&&c(e.ok&&e.data?{notes:e.data,at:new Date}:{error:e.ok?"Nothing came back.":e.error})}).catch(()=>{t&&c({error:"Watchbell didn't answer. Check that it's still running, then try again."})}),()=>{t=!1,c(null)}},[a,e,r,i]),(0,t.jsx)(f.N,{open:a,onOpenChange:o,children:(0,t.jsxs)(f.d,{className:"top-0 right-0 left-auto flex h-dvh max-w-full translate-x-0 translate-y-0 flex-col gap-0 rounded-none p-0 sm:max-w-[620px]",children:[(0,t.jsxs)("div",{className:"px-[18px] pb-2 pt-4 pr-12",children:[(0,t.jsxs)(f.F,{className:"text-base",children:["What changed · ",l]}),(0,t.jsxs)(f.C,{className:"mt-0.5 text-[12.5px] text-ink-soft",children:["Since the previous production deployment, compared on GitHub now",(0,t.jsx)(x.Src,{kind:"api"})]})]}),null===s?(0,t.jsx)("p",{className:"px-[18px] pb-4 text-[13px] text-ink-soft",children:"Reading the commits…"}):"error"in s?(0,t.jsx)("p",{role:"alert",className:"px-[18px] pb-4 text-[13px] text-err",children:s.error}):(0,t.jsx)(L,{notes:s.notes,now:s.at})]})})}let U={label:"View build logs",kind:"logs"},_={label:"What changed",kind:"changes"};e.s(["DeployRowActions",0,function({d:e,actions:c,logs:x,changes:f=!1,explain:b=!1}){var g;let k,y,v,j=(0,r.useMask)(),{open:w,dialog:N}=(0,a.W)(),[S,$]=(0,n.useState)(!1),[R,P]=(0,n.useState)(!1),A=e.sha?e.sha.slice(0,7):"",{visit:E,deployment:I}=(k=e.url?`https://${e.url}`:null,e.primaryDomain?{visit:`https://${e.primaryDomain}`,deployment:k}:{visit:k??"",deployment:null}),{buttons:M,menu:L}=(y=[...(g={actions:c,logs:x,changes:f,visit:!!E&&e.visit}).visit&&"button"!==g.logs?[{label:"Visit",kind:"visit"}]:[],...g.actions.map(e=>({label:e,kind:"action",action:e})),..."button"===g.logs?[U]:[]],v=[..."menu"===g.logs?[U]:[],...g.changes?[_]:[]],y.length>2?{buttons:[],menu:[...y,...v]}:{buttons:y,menu:v}),T=t=>w({...(0,i.f)(t,j("app",e.appName),A),run:function(e,t,n){switch(e){case"Redeploy":return()=>(0,m.f)(t,n);case"Roll back to this":return()=>(0,h.f)(t,n);case"Promote":return()=>(0,u.f)(t,n);case"Cancel":return()=>d(t,n);case"Promote to production":return()=>p(t,n)}}(t,e.appId,e.externalId)});return(0,t.jsxs)("div",{className:"flex items-center gap-1.5",children:[M.map(e=>"visit"===e.kind?(0,t.jsx)("a",{href:E,target:"_blank",rel:"noreferrer",className:(0,l.R)({size:"sm"}),children:"Visit"},e.label):"logs"===e.kind?(0,t.jsx)(l.K,{size:"sm",onClick:()=>$(!0),children:e.label},e.label):(0,t.jsx)(l.K,{size:"sm",onClick:()=>T(e.action),children:e.label},e.label)),I&&e.visit&&"button"!==x&&(0,t.jsx)("a",{href:I,target:"_blank",rel:"noreferrer",className:"text-xs text-ink-faint underline-offset-2 hover:text-ink hover:underline",children:"Deployment URL"}),L.length>0&&(0,t.jsx)(o.RowMenu,{label:(0,s.J)(j("app",e.appName),A||e.url||e.externalId),items:L.map(e=>"visit"===e.kind?{label:e.label,href:E}:"logs"===e.kind?{label:e.label,onSelect:()=>$(!0)}:"changes"===e.kind?{label:e.label,onSelect:()=>P(!0)}:{label:e.label,onSelect:()=>T(e.action)})}),N,x&&(0,t.jsx)(C,{appId:e.appId,deploymentId:e.externalId,title:`${j("app",e.appName)}${A?` ${A}`:""}`,open:S,onOpenChange:$,explain:b}),f&&(0,t.jsx)(O,{appId:e.appId,deploymentId:e.externalId,title:`${j("app",e.appName)}${A?` ${A}`:""}`,open:R,onOpenChange:P})]})}],523135)},799589,225794,e=>{var t=e.i(843476),n=e.i(271645),r=e.i(54131),l=e.i(46200),a=e.i(428325);function o(e,t=e=>e){return e.ok?{ok:!0,message:t(e.message??"Done.")}:{ok:!1,message:t(e.error)}}function i(){let e=(0,r.useMask)();return t=>o(t,t=>e("text",t))}e.s(["f",0,o],225794),e.s(["p",0,function({label:e,title:n,body:r,cta:o,danger:s=!1,run:c}){let d=i();return(0,t.jsx)(l.f,{trigger:(0,t.jsx)(a.K,{variant:s?"danger":"secondary",children:e}),title:n,body:r,cta:o,danger:s,onConfirm:async()=>d(await c())})},"W",0,function(){let[e,r]=(0,n.useState)(null),a=i(),o=e?(0,t.jsx)(l.f,{open:!0,onOpenChange:e=>{e||r(null)},title:e.title,body:e.body,cta:e.cta,danger:e.danger,onConfirm:async()=>a(await e.run())}):null;return{open:r,dialog:o}}],799589)},70528,876195,e=>{let t=/^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\[\d{1,6}\])*$/,n=new Set(["__proto__","prototype","constructor"]),r=[300,3600,86400,604800],l=[300,3600,21600];e.s(["q",0,l,"Q",0,r,"v",0,function(e){return e%604800==0?604800===e?"1 week":`${e/604800} weeks`:e%86400==0?86400===e?"1 day":`${e/86400} days`:e%3600==0?`${e/3600} h`:`${Math.max(1,Math.round(e/60))} min`}],876195);let a=/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/;function o(e){let t=a.exec(e);if(!t)return null;let n=t.slice(1).map(Number);return n.every(e=>e<=255)?n:null}function i([e,t,n]){return 0===e||10===e||127===e||e>=224||100===e&&t>=64&&t<=127||169===e&&254===t||172===e&&t>=16&&t<=31||192===e&&0===t&&0===n||192===e&&168===t||198===e&&(18===t||19===t)}function s(e){return"https:"!==e.protocol||e.username||e.password?"scheme":""!==e.port&&"443"!==e.port?"blocked":!function(e){let t=e.trim().toLowerCase();if(t.startsWith("[")&&t.endsWith("]")){let e=function(e){let t=e.split("%")[0].toLowerCase();if(!t.includes(":"))return null;if(-1!==t.lastIndexOf(".")){let e=t.lastIndexOf(":"),n=o(t.slice(e+1));if(!n)return null;t=`${t.slice(0,e+1)}${(n[0]<<8|n[1]).toString(16)}:${(n[2]<<8|n[3]).toString(16)}`}let n=t.split("::");if(n.length>2)return null;let r=e=>""===e?[]:e.split(":"),l=r(n[0]),a=2===n.length?r(n[1]):[],i=8-l.length-a.length;if(1===n.length?0!==i:i<1)return null;let s=[...l,...Array(2===n.length?i:0).fill("0"),...a];return 8===s.length&&s.every(e=>/^[0-9a-f]{1,4}$/.test(e))?s.map(e=>parseInt(e,16)):null}(t.slice(1,-1));return!e||function(e){if(e.slice(0,6).every(e=>0===e)||e.slice(0,5).every(e=>0===e)&&65535===e[5]||e.slice(0,4).every(e=>0===e)&&65535===e[4]&&0===e[5]||100===e[0]&&65435===e[1]&&e.slice(2,6).every(e=>0===e)||100===e[0]&&65435===e[1]&&1===e[2])return!0;if(8194===e[0]){let t,n;return i([(t=e[1])>>8,255&t,(n=e[2])>>8,255&n])}return(65024&e[0])==64512||(65472&e[0])==65152||(65472&e[0])==65216||(65280&e[0])==65280}(e)}if(t.endsWith(".")&&(t=t.slice(0,-1)),!t)return!0;let n=o(t);if(n)return i(n);let r=t.slice(t.lastIndexOf(".")+1);return!(!/^(\d+|0x[0-9a-f]*)$/.test(r)&&t.includes("."))||"localhost"===t||/\.(localhost|local|internal)$/.test(t)||t.endsWith(".home.arpa")}(e.hostname)?null:"blocked"}e.i(684496);let c=[3,5,10],d=/[\u0000-\u001f\u007f-\u009f]/,u=/[­؜᠎​-‏‪-‮⁠-⁤⁦-⁩]/;e.s(["L",0,c,"G",0,function(e){return null!==e.lastStatus&&e.lastError&&!/^HTTP \d{3}( · DEPLOYMENT_NOT_FOUND)?$/.test(e.lastError)?e.lastError:null},"a",0,function(e){let t={},n=String(e?.name??""),a=n.trim().replace(/\s+/g," ");!/[\p{L}\p{N}]/u.test(a)||d.test(a)||u.test(n)?t.name="Name the job, like backup job.":a.length>60&&(t.name="Keep the name to 60 characters.");let o=Number(e?.periodS);r.includes(o)||(t.periodS="Pick how often the job runs.");let i=Number(e?.graceS);return(l.includes(i)||(t.graceS="Pick a grace time."),Object.keys(t).length)?{ok:!1,fieldErrors:t}:{ok:!0,value:{name:a,periodS:o,graceS:i}}},"X",0,function(e){let r={},l=String(e?.url??"").trim(),a=null;try{a=new URL(l)}catch{a=null}a&&a.hostname&&!(l.length>2048)&&"scheme"!==s(a)?"blocked"===s(a)&&(r.url="Use a public https address."):r.url="Enter a full https:// address.";let o=String(e?.expectedStatus??"").trim();/^[1-5]\d\d$/.test(o)||(r.expectedStatus="Enter an HTTP status between 100 and 599.");let i=Number(e?.timeoutS);c.includes(i)||(r.timeoutS="Pick a timeout.");let d=String(e?.bodyContains??"").trim(),u=String(e?.jsonPath??"").trim(),p=String(e?.jsonEquals??"").trim();return(d.length>200&&(r.bodyContains="Keep the keyword under 200 characters."),!u&&p&&(r.jsonPath="Add a JSON path for the value."),u&&(u.length>100||!function(e){if(!t.test(e))return null;let r=[];for(let t of e.matchAll(/([A-Za-z_$][\w$]*)|\[(\d+)\]/g))r.push(void 0!==t[1]?t[1]:Number(t[2]));return r.some(e=>"string"==typeof e&&n.has(e))?null:r}(u)?r.jsonPath="Use dots and [0] only, like checks.db or items[0].state.":p?p.length>200&&(r.jsonEquals="Keep the value under 200 characters."):r.jsonEquals="Enter the value it must equal.",d&&!r.bodyContains&&(r.bodyContains="Use either a keyword or a JSON field.")),Object.keys(r).length||!a)?{ok:!1,fieldErrors:r}:(a.hash="",{ok:!0,value:{url:a.toString(),expectedStatus:Number(o),timeoutMs:1e3*i,bodyContains:d||null,jsonPath:u||null,jsonEquals:u?p:null}})}],70528)},856033,e=>{e.s(["f",0,function(e,t,n){switch(e){case"Redeploy":return{title:`Redeploy ${t}?`,cta:"Redeploy",danger:!1,body:"Vercel builds the current production deployment again (same commit, today's environment variables) and makes it live when the build is ready. It counts toward the 100 deployments a day on Hobby."};case"Roll back":return{title:`Roll back ${t}?`,cta:"Roll back",danger:!0,body:"Production goes back to the previous production deployment. Hobby can't go further back. Vercel then stops sending new pushes to production until you promote one again."};case"Roll back to this":return{title:`Roll back ${t} to ${n||"this deployment"}?`,cta:"Roll back",danger:!0,body:"Production goes back to this deployment. Hobby only allows the previous production deployment. Vercel then stops sending new pushes to production until you promote one again."};case"Promote":return{title:`Promote ${t} ${n}?`.replace(" ?","?"),cta:"Promote",danger:!1,body:"Production traffic moves to this production deployment and new pushes go live again (this undoes a roll back). Nothing is rebuilt."};case"Promote to production":return{title:`Promote ${t} ${n} to production?`.replace(" "," "),cta:"Promote to production",danger:!0,body:"Vercel builds this preview's commit again as a production deployment, with the production environment variables (preview-only values aren't used), and makes it live when the build is ready. It counts toward the 100 deployments a day on Hobby."};case"Cancel":return{title:"Cancel this build?",cta:"Cancel build",danger:!0,body:`The running build of ${`${t} ${n}`.trim()} stops. The current production deployment stays live.`}}}])},452842,e=>{e.i(203709),e.i(70528),e.i(684496),e.i(322534),e.s(["p",0,[["deployment","Deployment"],["monitor","Monitor"],["database","Database"],["system","System"],["action","Action"]],"X",0,{ok:"healthy",warn:"degraded",err:"down",idle:"idle",build:"building",paused:"paused",info:"info",fail:"failed",off:"off",unknown:"unknown",maint:"maintenance"},"J",0,(...e)=>`Actions for ${e.filter(Boolean).join(" ")}`],452842)}])})();
1
+ (()=>{"use strict";(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,801001,347271,565215,e=>{var t=e.i(95187);let n=(0,t.createServerReference)("60a58057b2a42eefc03e1c0603094c1306e022a436",t.callServer,void 0,t.findSourceMapURL,"promoteAction");e.s(["f",0,n],801001);let r=(0,t.createServerReference)("60d8252c7bc357fcb0d1cbea8fa8d285598fc34526",t.callServer,void 0,t.findSourceMapURL,"redeployAction");e.s(["f",0,r],347271);let l=(0,t.createServerReference)("60ba1d94aa50f84773a95238d64f62aca68f152f2a",t.callServer,void 0,t.findSourceMapURL,"rollbackAction");e.s(["f",0,l],565215)},523135,e=>{var t=e.i(843476),n=e.i(271645),r=e.i(54131),l=e.i(428325),a=e.i(799589),o=e.i(177106),i=e.i(856033),s=e.i(452842),c=e.i(95187);let d=(0,c.createServerReference)("6051a6f8308ddb6a5d3bf227d295e318dc5b51fd87",c.callServer,void 0,c.findSourceMapURL,"cancelAction");var u=e.i(801001);let p=(0,c.createServerReference)("60009a2992545d28afbeaaff5212bb5a77843a9a5d",c.callServer,void 0,c.findSourceMapURL,"promotePreviewAction");var m=e.i(347271),h=e.i(565215),x=e.i(39626),f=e.i(776639),b=e.i(500443);let g=/(\berror(?![-\w])|\bERR!|\bERR_[A-Z_]+|\bfailed\b|exited with (?:code )?[1-9]|Module not found|command not found)/i,k=/^\s*(?:npm |pnpm |yarn )?(?:warn|warning)\b|\b0 (?:errors?|failed)\b/i;function y(e){return"command"!==e.kind&&"delimiter"!==e.kind&&g.test(e.text)&&!k.test(e.text)}var v=e.i(975157);let j=(0,c.createServerReference)("608b66f45a41c041c04a0fb84a8df27b24fa929b85",c.callServer,void 0,c.findSourceMapURL,"buildLogsAction"),w=(0,c.createServerReference)("60ae39a73d91a8e143b6b8879748d95a20f2d82379",c.callServer,void 0,c.findSourceMapURL,"explainBuildAction"),N={stdout:"",stderr:"text-code-warn",command:"text-code-info",delimiter:"text-code-dim"},S=e=>`build-line-${e}`;function $({log:e}){let n=e.lines.findIndex(y),r=e.lines.filter(y).length;return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"flex flex-wrap items-center gap-x-3 gap-y-1 px-[18px] pb-2 text-[12.5px] text-ink-soft",children:[(0,t.jsxs)("span",{children:[e.lines.length," lines",e.truncated?` (the last ${2e3.toLocaleString("en-US")})`:""]}),n>=0?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("span",{className:"text-err",children:[r," error line",1===r?"":"s"]}),(0,t.jsx)("button",{type:"button","data-line":S(n),className:"text-brand hover:underline",onClick:()=>document.getElementById(S(n))?.scrollIntoView({block:"center"}),children:"Jump to first error"})]}):(0,t.jsx)("span",{children:"No error lines"})]}),(0,t.jsx)("div",{tabIndex:0,"aria-label":"Build log lines",className:"min-h-0 flex-1 overflow-auto bg-code-bg px-4 py-3 font-mono text-[12.5px] leading-[1.7] text-code-text",children:0===e.lines.length?(0,t.jsx)("div",{className:"text-code-dim",children:"Vercel returned no build output for this deployment."}):e.lines.map((e,n)=>{let r=y(e);return(0,t.jsx)("div",{id:S(n),"data-error":r?"":void 0,className:(0,v.f)("whitespace-pre-wrap [overflow-wrap:anywhere]",r?"-mx-4 border-l-2 border-err bg-err/15 px-[14px] text-code-err":N[e.kind],"delimiter"===e.kind&&"mt-1.5 font-medium"),children:"command"===e.kind?`$ ${e.text}`:e.text||" "},n)})})]})}function R({answer:e}){return"asking"===e?(0,t.jsx)("p",{className:"px-[18px] pb-3 text-[13px] text-ink-soft",children:"Asking the AI provider…"}):"error"in e?(0,t.jsx)("p",{role:"alert",className:"px-[18px] pb-3 text-[13px] text-err",children:e.error}):(0,t.jsxs)("section",{"aria-label":"Explanation",className:"mx-[18px] mb-3 rounded-lg border border-line px-3.5 py-2.5",children:[(0,t.jsxs)("div",{className:"flex items-baseline gap-2 text-[12.5px]",children:[(0,t.jsx)("b",{className:"font-medium",children:"Explanation"}),(0,t.jsx)("span",{className:"font-mono text-xs text-ink-faint",children:e.model})]}),(0,t.jsx)("p",{className:"mt-1 whitespace-pre-wrap text-[13px] [overflow-wrap:anywhere]",children:e.text}),(0,t.jsx)("p",{className:"mt-1.5 text-xs text-ink-faint",children:"Written by a model from the log below. Check it against the log before you change code."})]})}function C({appId:e,deploymentId:r,title:a,open:o,onOpenChange:i,explain:s=!1,read:c=j,ask:d=w}){let[u,p]=(0,n.useState)(null),[m,h]=(0,n.useState)(null);(0,b.useHoldRefresh)(o),(0,n.useEffect)(()=>{if(!o)return;let t=!0;return c(e,r).then(e=>{t&&p(e.ok&&e.data?{log:e.data}:{error:e.ok?"No build log came back.":e.error})}).catch(()=>{t&&p({error:"Watchbell didn't answer. Check that it's still running, then try again."})}),()=>{t=!1,p(null),h(null)}},[o,e,r,c]);let g=s&&null!==u&&"log"in u&&"asking"!==m;return(0,t.jsx)(f.N,{open:o,onOpenChange:i,children:(0,t.jsxs)(f.d,{className:"top-0 right-0 left-auto flex h-dvh max-w-full translate-x-0 translate-y-0 flex-col gap-0 rounded-none p-0 sm:max-w-[780px]",children:[(0,t.jsxs)("div",{className:"px-[18px] pb-2 pt-4 pr-12",children:[(0,t.jsxs)(f.F,{className:"text-base",children:["Build log · ",a]}),(0,t.jsxs)(f.C,{className:"mt-0.5 text-[12.5px] text-ink-soft",children:["Newest build, read from Vercel now",(0,t.jsx)(x.Src,{kind:"api"})]}),s&&(0,t.jsx)(l.K,{size:"sm",className:"mt-2",disabled:!g,onClick:()=>{h("asking"),d(e,r).then(e=>h(e.ok&&e.data?e.data:{error:e.ok?"No explanation came back.":e.error})).catch(()=>h({error:"Watchbell didn't answer. Check that it's still running, then try again."}))},children:!m||"asking"===m||"error"in m?"Explain with AI":"Explain again"})]}),m&&(0,t.jsx)(R,{answer:m}),null===u?(0,t.jsx)("p",{className:"px-[18px] pb-4 text-[13px] text-ink-soft",children:"Reading the build log…"}):"error"in u?(0,t.jsx)("p",{role:"alert",className:"px-[18px] pb-4 text-[13px] text-err",children:u.error}):(0,t.jsx)($,{log:u.log})]})})}var P=e.i(322534);let A=(0,c.createServerReference)("60eaea44582a1ddb6f88268d47f83052573c156b4e",c.callServer,void 0,c.findSourceMapURL,"releaseNotesAction"),E=/^(https:\/\/github\.com\/[^/]+\/[^/]+)\/commit\/[0-9a-f]+$/,I="text-brand underline-offset-2 hover:underline";function M({c:e,now:n}){var l;let a,o,i=(l=e.title,(a=/\(#(\d{1,7})\)\s*$/.exec(l)??/^Merge pull request #(\d{1,7})\b/.exec(l))?Number(a[1]):null),s=null===i?null:(o=e.url?E.exec(e.url):null)?`${o[1]}/pull/${i}`:null,c=e.sha.slice(0,7);return(0,t.jsxs)("li",{className:"border-b border-line px-[18px] py-2.5 last:border-b-0",children:[(0,t.jsxs)("div",{className:"text-[13px] [overflow-wrap:anywhere]",children:[(0,t.jsx)(r.MaskedText,{text:e.title}),s&&(0,t.jsxs)(t.Fragment,{children:[" ",(0,t.jsxs)("a",{href:s,target:"_blank",rel:"noreferrer",className:I,children:["#",i]})]})]}),(0,t.jsxs)("div",{className:"mt-0.5 font-mono text-xs text-ink-faint",children:[e.url?(0,t.jsx)("a",{href:e.url,target:"_blank",rel:"noreferrer",className:I,children:c}):c,e.author&&(0,t.jsxs)(t.Fragment,{children:[" · ",(0,t.jsx)(r.MaskedText,{text:e.author})]}),e.at&&(0,t.jsxs)(t.Fragment,{children:[" · ",(0,P.J)(new Date(e.at),n)]})]})]})}function L({notes:e,now:n}){if(e.note)return(0,t.jsx)("p",{className:"px-[18px] pb-4 text-[13px] text-ink-soft",children:e.note});if(0===e.commits.length)return(0,t.jsx)("p",{className:"px-[18px] pb-4 text-[13px] text-ink-soft",children:"GitHub found no commits between these deployments."});let r=e.total-e.commits.length;return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("p",{className:"px-[18px] pb-2 text-[12.5px] text-ink-soft",children:[e.total," commit",1===e.total?"":"s",e.from?(0,t.jsxs)(t.Fragment,{children:[" since ",(0,t.jsx)("span",{className:"font-mono",children:e.from.slice(0,7)})]}):null]}),(0,t.jsxs)("ul",{className:"min-h-0 flex-1 overflow-auto border-t border-line",children:[e.commits.map(e=>(0,t.jsx)(M,{c:e,now:n},e.sha)),e.cut&&r>0&&(0,t.jsxs)("li",{className:"px-[18px] py-2.5 text-[12.5px] text-ink-soft",children:["+",r," more, older, not shown"]})]})]})}function O({appId:e,deploymentId:r,title:l,open:a,onOpenChange:o,read:i=A}){let[s,c]=(0,n.useState)(null);return(0,b.useHoldRefresh)(a),(0,n.useEffect)(()=>{if(!a)return;let t=!0;return i(e,r).then(e=>{t&&c(e.ok&&e.data?{notes:e.data,at:new Date}:{error:e.ok?"Nothing came back.":e.error})}).catch(()=>{t&&c({error:"Watchbell didn't answer. Check that it's still running, then try again."})}),()=>{t=!1,c(null)}},[a,e,r,i]),(0,t.jsx)(f.N,{open:a,onOpenChange:o,children:(0,t.jsxs)(f.d,{className:"top-0 right-0 left-auto flex h-dvh max-w-full translate-x-0 translate-y-0 flex-col gap-0 rounded-none p-0 sm:max-w-[620px]",children:[(0,t.jsxs)("div",{className:"px-[18px] pb-2 pt-4 pr-12",children:[(0,t.jsxs)(f.F,{className:"text-base",children:["What changed · ",l]}),(0,t.jsxs)(f.C,{className:"mt-0.5 text-[12.5px] text-ink-soft",children:["Since the previous production deployment, compared on GitHub now",(0,t.jsx)(x.Src,{kind:"api"})]})]}),null===s?(0,t.jsx)("p",{className:"px-[18px] pb-4 text-[13px] text-ink-soft",children:"Reading the commits…"}):"error"in s?(0,t.jsx)("p",{role:"alert",className:"px-[18px] pb-4 text-[13px] text-err",children:s.error}):(0,t.jsx)(L,{notes:s.notes,now:s.at})]})})}let U={label:"View build logs",kind:"logs"},_={label:"What changed",kind:"changes"};e.s(["DeployRowActions",0,function({d:e,actions:c,logs:x,changes:f=!1,explain:b=!1}){var g;let k,y,v,j=(0,r.useMask)(),{open:w,dialog:N}=(0,a.W)(),[S,$]=(0,n.useState)(!1),[R,P]=(0,n.useState)(!1),A=e.sha?e.sha.slice(0,7):"",{visit:E,deployment:I}=(k=e.url?`https://${e.url}`:null,e.primaryDomain?{visit:`https://${e.primaryDomain}`,deployment:k}:{visit:k??"",deployment:null}),{buttons:M,menu:L}=(y=[...(g={actions:c,logs:x,changes:f,visit:!!E&&e.visit}).visit&&"button"!==g.logs?[{label:"Visit",kind:"visit"}]:[],...g.actions.map(e=>({label:e,kind:"action",action:e})),..."button"===g.logs?[U]:[]],v=[..."menu"===g.logs?[U]:[],...g.changes?[_]:[]],y.length>2?{buttons:[],menu:[...y,...v]}:{buttons:y,menu:v}),T=t=>w({...(0,i.f)(t,j("app",e.appName),A),run:function(e,t,n){switch(e){case"Redeploy":return()=>(0,m.f)(t,n);case"Roll back to this":return()=>(0,h.f)(t,n);case"Promote":return()=>(0,u.f)(t,n);case"Cancel":return()=>d(t,n);case"Promote to production":return()=>p(t,n)}}(t,e.appId,e.externalId)});return(0,t.jsxs)("div",{className:"flex items-center gap-1.5",children:[M.map(e=>"visit"===e.kind?(0,t.jsx)("a",{href:E,target:"_blank",rel:"noreferrer",className:(0,l.R)({size:"sm"}),children:"Visit"},e.label):"logs"===e.kind?(0,t.jsx)(l.K,{size:"sm",onClick:()=>$(!0),children:e.label},e.label):(0,t.jsx)(l.K,{size:"sm",onClick:()=>T(e.action),children:e.label},e.label)),I&&e.visit&&"button"!==x&&(0,t.jsx)("a",{href:I,target:"_blank",rel:"noreferrer",className:"text-xs text-ink-faint underline-offset-2 hover:text-ink hover:underline",children:"Deployment URL"}),L.length>0&&(0,t.jsx)(o.RowMenu,{label:(0,s.J)(j("app",e.appName),A||e.url||e.externalId),items:L.map(e=>"visit"===e.kind?{label:e.label,href:E}:"logs"===e.kind?{label:e.label,onSelect:()=>$(!0)}:"changes"===e.kind?{label:e.label,onSelect:()=>P(!0)}:{label:e.label,onSelect:()=>T(e.action)})}),N,x&&(0,t.jsx)(C,{appId:e.appId,deploymentId:e.externalId,title:`${j("app",e.appName)}${A?` ${A}`:""}`,open:S,onOpenChange:$,explain:b}),f&&(0,t.jsx)(O,{appId:e.appId,deploymentId:e.externalId,title:`${j("app",e.appName)}${A?` ${A}`:""}`,open:R,onOpenChange:P})]})}],523135)},799589,225794,e=>{var t=e.i(843476),n=e.i(271645),r=e.i(54131),l=e.i(46200),a=e.i(428325);function o(e,t=e=>e){return e.ok?{ok:!0,message:t(e.message??"Done.")}:{ok:!1,message:t(e.error)}}function i(){let e=(0,r.useMask)();return t=>o(t,t=>e("text",t))}e.s(["f",0,o],225794),e.s(["p",0,function({label:e,title:n,body:r,cta:o,danger:s=!1,run:c}){let d=i();return(0,t.jsx)(l.f,{trigger:(0,t.jsx)(a.K,{variant:s?"danger":"secondary",children:e}),title:n,body:r,cta:o,danger:s,onConfirm:async()=>d(await c())})},"W",0,function(){let[e,r]=(0,n.useState)(null),a=i(),o=e?(0,t.jsx)(l.f,{open:!0,onOpenChange:e=>{e||r(null)},title:e.title,body:e.body,cta:e.cta,danger:e.danger,onConfirm:async()=>a(await e.run())}):null;return{open:r,dialog:o}}],799589)},70528,876195,e=>{let t=/^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\[\d{1,6}\])*$/,n=new Set(["__proto__","prototype","constructor"]),r=[300,3600,86400,604800],l=[300,3600,21600];e.s(["q",0,l,"Q",0,r,"v",0,function(e){return e%604800==0?604800===e?"1 week":`${e/604800} weeks`:e%86400==0?86400===e?"1 day":`${e/86400} days`:e%3600==0?`${e/3600} h`:`${Math.max(1,Math.round(e/60))} min`}],876195);let a=/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/;function o(e){let t=a.exec(e);if(!t)return null;let n=t.slice(1).map(Number);return n.every(e=>e<=255)?n:null}function i([e,t,n]){return 0===e||10===e||127===e||e>=224||100===e&&t>=64&&t<=127||169===e&&254===t||172===e&&t>=16&&t<=31||192===e&&0===t&&0===n||192===e&&168===t||198===e&&(18===t||19===t)}function s(e){return"https:"!==e.protocol||e.username||e.password?"scheme":""!==e.port&&"443"!==e.port?"blocked":!function(e){let t=e.trim().toLowerCase();if(t.startsWith("[")&&t.endsWith("]")){let e=function(e){let t=e.split("%")[0].toLowerCase();if(!t.includes(":"))return null;if(-1!==t.lastIndexOf(".")){let e=t.lastIndexOf(":"),n=o(t.slice(e+1));if(!n)return null;t=`${t.slice(0,e+1)}${(n[0]<<8|n[1]).toString(16)}:${(n[2]<<8|n[3]).toString(16)}`}let n=t.split("::");if(n.length>2)return null;let r=e=>""===e?[]:e.split(":"),l=r(n[0]),a=2===n.length?r(n[1]):[],i=8-l.length-a.length;if(1===n.length?0!==i:i<1)return null;let s=[...l,...Array(2===n.length?i:0).fill("0"),...a];return 8===s.length&&s.every(e=>/^[0-9a-f]{1,4}$/.test(e))?s.map(e=>parseInt(e,16)):null}(t.slice(1,-1));return!e||function(e){if(e.slice(0,6).every(e=>0===e)||e.slice(0,5).every(e=>0===e)&&65535===e[5]||e.slice(0,4).every(e=>0===e)&&65535===e[4]&&0===e[5]||100===e[0]&&65435===e[1]&&e.slice(2,6).every(e=>0===e)||100===e[0]&&65435===e[1]&&1===e[2])return!0;if(8194===e[0]){let t,n;return i([(t=e[1])>>8,255&t,(n=e[2])>>8,255&n])}return(65024&e[0])==64512||(65472&e[0])==65152||(65472&e[0])==65216||(65280&e[0])==65280}(e)}if(t.endsWith(".")&&(t=t.slice(0,-1)),!t)return!0;let n=o(t);if(n)return i(n);let r=t.slice(t.lastIndexOf(".")+1);return!(!/^(\d+|0x[0-9a-f]*)$/.test(r)&&t.includes("."))||"localhost"===t||/\.(localhost|local|internal)$/.test(t)||t.endsWith(".home.arpa")}(e.hostname)?null:"blocked"}e.i(684496);let c=[3,5,10],d=/[\u0000-\u001f\u007f-\u009f]/,u=/[­؜᠎​-‏‪-‮⁠-⁤⁦-⁩]/;e.s(["L",0,c,"G",0,function(e){return null!==e.lastStatus&&e.lastError&&!/^HTTP \d{3}( · DEPLOYMENT_NOT_FOUND)?$/.test(e.lastError)?e.lastError:null},"a",0,function(e){let t={},n=String(e?.name??""),a=n.trim().replace(/\s+/g," ");!/[\p{L}\p{N}]/u.test(a)||d.test(a)||u.test(n)?t.name="Name the job, like backup job.":a.length>60&&(t.name="Keep the name to 60 characters.");let o=Number(e?.periodS);r.includes(o)||(t.periodS="Pick how often the job runs.");let i=Number(e?.graceS);return(l.includes(i)||(t.graceS="Pick a grace time."),Object.keys(t).length)?{ok:!1,fieldErrors:t}:{ok:!0,value:{name:a,periodS:o,graceS:i}}},"X",0,function(e){let r={},l=String(e?.url??"").trim(),a=null;try{a=new URL(l)}catch{a=null}a&&a.hostname&&!(l.length>2048)&&"scheme"!==s(a)?"blocked"===s(a)&&(r.url="Use a public https address."):r.url="Enter a full https:// address.";let o=String(e?.expectedStatus??"").trim();/^[1-5]\d\d$/.test(o)||(r.expectedStatus="Enter an HTTP status between 100 and 599.");let i=Number(e?.timeoutS);c.includes(i)||(r.timeoutS="Pick a timeout.");let d=String(e?.bodyContains??"").trim(),u=String(e?.jsonPath??"").trim(),p=String(e?.jsonEquals??"").trim();return(d.length>200&&(r.bodyContains="Keep the keyword under 200 characters."),!u&&p&&(r.jsonPath="Add a JSON path for the value."),u&&(u.length>100||!function(e){if(!t.test(e))return null;let r=[];for(let t of e.matchAll(/([A-Za-z_$][\w$]*)|\[(\d+)\]/g))r.push(void 0!==t[1]?t[1]:Number(t[2]));return r.some(e=>"string"==typeof e&&n.has(e))?null:r}(u)?r.jsonPath="Use dots and [0] only, like checks.db or items[0].state.":p?p.length>200&&(r.jsonEquals="Keep the value under 200 characters."):r.jsonEquals="Enter the value it must equal.",d&&!r.bodyContains&&(r.bodyContains="Use either a keyword or a JSON field.")),Object.keys(r).length||!a)?{ok:!1,fieldErrors:r}:(a.hash="",{ok:!0,value:{url:a.toString(),expectedStatus:Number(o),timeoutMs:1e3*i,bodyContains:d||null,jsonPath:u||null,jsonEquals:u?p:null}})}],70528)},856033,e=>{e.s(["f",0,function(e,t,n){switch(e){case"Redeploy":return{title:`Redeploy ${t}?`,cta:"Redeploy",danger:!1,body:"Vercel builds the current production deployment again (same commit, today's environment variables) and makes it live when the build is ready. It counts toward the 100 deployments a day on Hobby."};case"Roll back":return{title:`Roll back ${t}?`,cta:"Roll back",danger:!0,body:"Production goes back to the previous production deployment. Hobby can't go further back. Vercel then stops sending new pushes to production until you promote one again."};case"Roll back to this":return{title:`Roll back ${t} to ${n||"this deployment"}?`,cta:"Roll back",danger:!0,body:"Production goes back to this deployment. Hobby only allows the previous production deployment. Vercel then stops sending new pushes to production until you promote one again."};case"Promote":return{title:`Promote ${t} ${n}?`.replace(" ?","?"),cta:"Promote",danger:!1,body:"Production traffic moves to this production deployment and new pushes go live again (this undoes a roll back). Nothing is rebuilt."};case"Promote to production":return{title:`Promote ${t} ${n} to production?`.replace(" "," "),cta:"Promote to production",danger:!0,body:"Vercel builds this preview's commit again as a production deployment, with the production environment variables (preview-only values aren't used), and makes it live when the build is ready. It counts toward the 100 deployments a day on Hobby."};case"Cancel":return{title:"Cancel this build?",cta:"Cancel build",danger:!0,body:`The running build of ${`${t} ${n}`.trim()} stops. The current production deployment stays live.`}}}])},452842,e=>{e.i(203709),e.i(70528),e.i(684496),e.i(322534),e.s(["p",0,[["deployment","Deployment"],["monitor","Monitor"],["database","Database"],["system","System"],["action","Action"]],"X",0,{ok:"healthy",warn:"degraded",err:"down",idle:"idle",build:"building",paused:"paused",info:"info",fail:"failed",off:"off",unknown:"unknown",maint:"maintenance"},"J",0,(...e)=>`Actions for ${e.filter(Boolean).join(" ")}`],452842)}])})();