watchbell 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (678) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +123 -84
  3. package/bin/watchbell.mjs +593 -23
  4. package/package.json +1 -1
  5. package/server/.next/BUILD_ID +1 -1
  6. package/server/.next/build-manifest.json +3 -3
  7. package/server/.next/prerender-manifest.json +3 -3
  8. package/server/.next/server/app/(console)/(private)/ai/agents/page/server-reference-manifest.json +11 -11
  9. package/server/.next/server/app/(console)/(private)/ai/agents/page.js +38 -37
  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 +10 -10
  13. package/server/.next/server/app/(console)/(private)/ai/ask/page.js +38 -37
  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 +9 -9
  17. package/server/.next/server/app/(console)/(private)/ai/connect/page.js +38 -37
  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 +12 -12
  21. package/server/.next/server/app/(console)/(private)/ai/keys/page.js +38 -37
  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 +10 -10
  25. package/server/.next/server/app/(console)/(private)/ai/logs/page.js +38 -37
  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 +19 -19
  29. package/server/.next/server/app/(console)/(private)/ai/models/page.js +38 -37
  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 +9 -9
  33. package/server/.next/server/app/(console)/(private)/ai/page.js +38 -37
  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 +12 -12
  37. package/server/.next/server/app/(console)/(private)/ai/playground/page.js +38 -37
  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 +15 -15
  41. package/server/.next/server/app/(console)/(private)/ai/providers/page.js +38 -37
  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 +10 -10
  45. package/server/.next/server/app/(console)/(private)/ai/quota/page.js +38 -37
  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 +10 -10
  49. package/server/.next/server/app/(console)/(private)/ai/usage/page.js +38 -37
  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 +9 -9
  53. package/server/.next/server/app/(console)/(private)/api-docs/[[...op]]/page.js +38 -37
  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 +10 -10
  57. package/server/.next/server/app/(console)/(private)/auto-actions/page.js +38 -37
  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)/[...slug]/page/server-reference-manifest.json +9 -9
  61. package/server/.next/server/app/(console)/[...slug]/page.js +38 -37
  62. package/server/.next/server/app/(console)/[...slug]/page.js.nft.json +1 -1
  63. package/server/.next/server/app/(console)/[...slug]/page_client-reference-manifest.js +1 -1
  64. package/server/.next/server/app/(console)/alerts/page/server-reference-manifest.json +22 -22
  65. package/server/.next/server/app/(console)/alerts/page.js +38 -37
  66. package/server/.next/server/app/(console)/alerts/page.js.nft.json +1 -1
  67. package/server/.next/server/app/(console)/alerts/page_client-reference-manifest.js +1 -1
  68. package/server/.next/server/app/(console)/apps/[id]/page/server-reference-manifest.json +23 -23
  69. package/server/.next/server/app/(console)/apps/[id]/page.js +38 -37
  70. package/server/.next/server/app/(console)/apps/[id]/page.js.nft.json +1 -1
  71. package/server/.next/server/app/(console)/apps/[id]/page_client-reference-manifest.js +1 -1
  72. package/server/.next/server/app/(console)/apps/page/server-reference-manifest.json +11 -11
  73. package/server/.next/server/app/(console)/apps/page.js +38 -37
  74. package/server/.next/server/app/(console)/apps/page.js.nft.json +1 -1
  75. package/server/.next/server/app/(console)/apps/page_client-reference-manifest.js +1 -1
  76. package/server/.next/server/app/(console)/backups/page/server-reference-manifest.json +12 -12
  77. package/server/.next/server/app/(console)/backups/page.js +38 -37
  78. package/server/.next/server/app/(console)/backups/page.js.nft.json +1 -1
  79. package/server/.next/server/app/(console)/backups/page_client-reference-manifest.js +1 -1
  80. package/server/.next/server/app/(console)/catalog/page/server-reference-manifest.json +9 -9
  81. package/server/.next/server/app/(console)/catalog/page.js +38 -37
  82. package/server/.next/server/app/(console)/catalog/page.js.nft.json +1 -1
  83. package/server/.next/server/app/(console)/catalog/page_client-reference-manifest.js +1 -1
  84. package/server/.next/server/app/(console)/connections/page/server-reference-manifest.json +20 -20
  85. package/server/.next/server/app/(console)/connections/page.js +38 -37
  86. package/server/.next/server/app/(console)/connections/page.js.nft.json +1 -1
  87. package/server/.next/server/app/(console)/connections/page_client-reference-manifest.js +1 -1
  88. package/server/.next/server/app/(console)/d1/page/server-reference-manifest.json +9 -9
  89. package/server/.next/server/app/(console)/d1/page.js +38 -37
  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)/deployments/page/server-reference-manifest.json +14 -14
  93. package/server/.next/server/app/(console)/deployments/page.js +38 -37
  94. package/server/.next/server/app/(console)/deployments/page.js.nft.json +1 -1
  95. package/server/.next/server/app/(console)/deployments/page_client-reference-manifest.js +1 -1
  96. package/server/.next/server/app/(console)/dns/page/server-reference-manifest.json +16 -16
  97. package/server/.next/server/app/(console)/dns/page.js +38 -37
  98. package/server/.next/server/app/(console)/dns/page.js.nft.json +1 -1
  99. package/server/.next/server/app/(console)/dns/page_client-reference-manifest.js +1 -1
  100. package/server/.next/server/app/(console)/domains/page/server-reference-manifest.json +11 -11
  101. package/server/.next/server/app/(console)/domains/page.js +38 -37
  102. package/server/.next/server/app/(console)/domains/page.js.nft.json +1 -1
  103. package/server/.next/server/app/(console)/domains/page_client-reference-manifest.js +1 -1
  104. package/server/.next/server/app/(console)/events/page/server-reference-manifest.json +9 -9
  105. package/server/.next/server/app/(console)/events/page.js +38 -37
  106. package/server/.next/server/app/(console)/events/page.js.nft.json +1 -1
  107. package/server/.next/server/app/(console)/events/page_client-reference-manifest.js +1 -1
  108. package/server/.next/server/app/(console)/firebase/page/server-reference-manifest.json +15 -15
  109. package/server/.next/server/app/(console)/firebase/page.js +38 -37
  110. package/server/.next/server/app/(console)/firebase/page.js.nft.json +1 -1
  111. package/server/.next/server/app/(console)/firebase/page_client-reference-manifest.js +1 -1
  112. package/server/.next/server/app/(console)/logs/page/server-reference-manifest.json +10 -10
  113. package/server/.next/server/app/(console)/logs/page.js +38 -37
  114. package/server/.next/server/app/(console)/logs/page.js.nft.json +1 -1
  115. package/server/.next/server/app/(console)/logs/page_client-reference-manifest.js +1 -1
  116. package/server/.next/server/app/(console)/neon/page/server-reference-manifest.json +20 -20
  117. package/server/.next/server/app/(console)/neon/page.js +38 -37
  118. package/server/.next/server/app/(console)/neon/page.js.nft.json +1 -1
  119. package/server/.next/server/app/(console)/neon/page_client-reference-manifest.js +1 -1
  120. package/server/.next/server/app/(console)/overview/page/server-reference-manifest.json +18 -18
  121. package/server/.next/server/app/(console)/overview/page.js +38 -37
  122. package/server/.next/server/app/(console)/overview/page.js.nft.json +1 -1
  123. package/server/.next/server/app/(console)/overview/page_client-reference-manifest.js +1 -1
  124. package/server/.next/server/app/(console)/repos/[id]/page/server-reference-manifest.json +10 -10
  125. package/server/.next/server/app/(console)/repos/[id]/page.js +38 -37
  126. package/server/.next/server/app/(console)/repos/[id]/page.js.nft.json +1 -1
  127. package/server/.next/server/app/(console)/repos/[id]/page_client-reference-manifest.js +1 -1
  128. package/server/.next/server/app/(console)/repos/page/server-reference-manifest.json +9 -9
  129. package/server/.next/server/app/(console)/repos/page.js +38 -37
  130. package/server/.next/server/app/(console)/repos/page.js.nft.json +1 -1
  131. package/server/.next/server/app/(console)/repos/page_client-reference-manifest.js +1 -1
  132. package/server/.next/server/app/(console)/settings/page/server-reference-manifest.json +19 -19
  133. package/server/.next/server/app/(console)/settings/page.js +38 -37
  134. package/server/.next/server/app/(console)/settings/page.js.nft.json +1 -1
  135. package/server/.next/server/app/(console)/settings/page_client-reference-manifest.js +1 -1
  136. package/server/.next/server/app/(console)/sql/page/server-reference-manifest.json +16 -16
  137. package/server/.next/server/app/(console)/sql/page.js +38 -37
  138. package/server/.next/server/app/(console)/sql/page.js.nft.json +1 -1
  139. package/server/.next/server/app/(console)/sql/page_client-reference-manifest.js +1 -1
  140. package/server/.next/server/app/(console)/status/page/server-reference-manifest.json +9 -9
  141. package/server/.next/server/app/(console)/status/page.js +38 -37
  142. package/server/.next/server/app/(console)/status/page.js.nft.json +1 -1
  143. package/server/.next/server/app/(console)/status/page_client-reference-manifest.js +1 -1
  144. package/server/.next/server/app/(console)/supabase/page/server-reference-manifest.json +29 -29
  145. package/server/.next/server/app/(console)/supabase/page.js +38 -37
  146. package/server/.next/server/app/(console)/supabase/page.js.nft.json +1 -1
  147. package/server/.next/server/app/(console)/supabase/page_client-reference-manifest.js +1 -1
  148. package/server/.next/server/app/(console)/topology/page/server-reference-manifest.json +9 -9
  149. package/server/.next/server/app/(console)/topology/page.js +38 -37
  150. package/server/.next/server/app/(console)/topology/page.js.nft.json +1 -1
  151. package/server/.next/server/app/(console)/topology/page_client-reference-manifest.js +1 -1
  152. package/server/.next/server/app/(console)/turso/page/server-reference-manifest.json +9 -9
  153. package/server/.next/server/app/(console)/turso/page.js +38 -37
  154. package/server/.next/server/app/(console)/turso/page.js.nft.json +1 -1
  155. package/server/.next/server/app/(console)/turso/page_client-reference-manifest.js +1 -1
  156. package/server/.next/server/app/(console)/upstash/page/server-reference-manifest.json +9 -9
  157. package/server/.next/server/app/(console)/upstash/page.js +38 -37
  158. package/server/.next/server/app/(console)/upstash/page.js.nft.json +1 -1
  159. package/server/.next/server/app/(console)/upstash/page_client-reference-manifest.js +1 -1
  160. package/server/.next/server/app/(console)/uptime/page/server-reference-manifest.json +22 -22
  161. package/server/.next/server/app/(console)/uptime/page.js +38 -37
  162. package/server/.next/server/app/(console)/uptime/page.js.nft.json +1 -1
  163. package/server/.next/server/app/(console)/uptime/page_client-reference-manifest.js +1 -1
  164. package/server/.next/server/app/(console)/welcome/page/server-reference-manifest.json +14 -14
  165. package/server/.next/server/app/(console)/welcome/page.js +38 -37
  166. package/server/.next/server/app/(console)/welcome/page.js.nft.json +1 -1
  167. package/server/.next/server/app/(console)/welcome/page_client-reference-manifest.js +1 -1
  168. package/server/.next/server/app/_global-error/page/server-reference-manifest.json +1 -1
  169. package/server/.next/server/app/_global-error/page.js.nft.json +1 -1
  170. package/server/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  171. package/server/.next/server/app/_global-error.html +1 -1
  172. package/server/.next/server/app/_global-error.rsc +2 -2
  173. package/server/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +2 -2
  174. package/server/.next/server/app/_global-error.segments/_full.segment.rsc +2 -2
  175. package/server/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  176. package/server/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  177. package/server/.next/server/app/_not-found/page.js.nft.json +1 -1
  178. package/server/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  179. package/server/.next/server/app/_not-found.html +1 -1
  180. package/server/.next/server/app/_not-found.rsc +3 -3
  181. package/server/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
  182. package/server/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  183. package/server/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  184. package/server/.next/server/app/account/password/page/server-reference-manifest.json +2 -2
  185. package/server/.next/server/app/account/password/page.js.nft.json +1 -1
  186. package/server/.next/server/app/account/password/page_client-reference-manifest.js +1 -1
  187. package/server/.next/server/app/api/collect/route/server-reference-manifest.json +7 -7
  188. package/server/.next/server/app/api/collect/route.js +48 -46
  189. package/server/.next/server/app/api/collect/route.js.nft.json +1 -1
  190. package/server/.next/server/app/api/daily/route/server-reference-manifest.json +7 -7
  191. package/server/.next/server/app/api/daily/route.js +52 -50
  192. package/server/.next/server/app/api/daily/route.js.nft.json +1 -1
  193. package/server/.next/server/app/api/ping/[...parts]/route.js.nft.json +1 -1
  194. package/server/.next/server/app/api/status/route.js.nft.json +1 -1
  195. package/server/.next/server/app/api/telegram/webhook/route/server-reference-manifest.json +7 -7
  196. package/server/.next/server/app/api/telegram/webhook/route.js +48 -46
  197. package/server/.next/server/app/api/telegram/webhook/route.js.nft.json +1 -1
  198. package/server/.next/server/app/api/v1/advice/route.js +19 -18
  199. package/server/.next/server/app/api/v1/advice/route.js.nft.json +1 -1
  200. package/server/.next/server/app/api/v1/ai/chat/completions/route.js.nft.json +1 -1
  201. package/server/.next/server/app/api/v1/ai/models/route.js.nft.json +1 -1
  202. package/server/.next/server/app/api/v1/ai/questions/[id]/route.js.nft.json +1 -1
  203. package/server/.next/server/app/api/v1/ai/questions/route.js +22 -21
  204. package/server/.next/server/app/api/v1/ai/questions/route.js.nft.json +1 -1
  205. package/server/.next/server/app/api/v1/mcp/route.js +20 -19
  206. package/server/.next/server/app/api/v1/mcp/route.js.nft.json +1 -1
  207. package/server/.next/server/app/api/v1/me/route.js.nft.json +1 -1
  208. package/server/.next/server/app/api/v1/openapi.json/route.js +9 -8
  209. package/server/.next/server/app/api/v1/openapi.json/route.js.nft.json +1 -1
  210. package/server/.next/server/app/api/v1/status/apps/[app]/route.js +18 -17
  211. package/server/.next/server/app/api/v1/status/apps/[app]/route.js.nft.json +1 -1
  212. package/server/.next/server/app/api/v1/status/route.js +18 -17
  213. package/server/.next/server/app/api/v1/status/route.js.nft.json +1 -1
  214. package/server/.next/server/app/api/watchdog/route.js +19 -18
  215. package/server/.next/server/app/api/watchdog/route.js.nft.json +1 -1
  216. package/server/.next/server/app/auth/confirm/route.js.nft.json +1 -1
  217. package/server/.next/server/app/auth/google/callback/route.js +18 -17
  218. package/server/.next/server/app/auth/google/callback/route.js.nft.json +1 -1
  219. package/server/.next/server/app/auth/google/create/callback/route.js.nft.json +1 -1
  220. package/server/.next/server/app/auth/not-member/route.js.nft.json +1 -1
  221. package/server/.next/server/app/auth/session-ended/route.js.nft.json +1 -1
  222. package/server/.next/server/app/invite/page/server-reference-manifest.json +2 -2
  223. package/server/.next/server/app/invite/page.js +4 -3
  224. package/server/.next/server/app/invite/page.js.nft.json +1 -1
  225. package/server/.next/server/app/invite/page_client-reference-manifest.js +1 -1
  226. package/server/.next/server/app/mfa/page/server-reference-manifest.json +2 -2
  227. package/server/.next/server/app/mfa/page.js.nft.json +1 -1
  228. package/server/.next/server/app/mfa/page_client-reference-manifest.js +1 -1
  229. package/server/.next/server/app/mfa/setup/page/server-reference-manifest.json +3 -3
  230. package/server/.next/server/app/mfa/setup/page.js.nft.json +1 -1
  231. package/server/.next/server/app/mfa/setup/page_client-reference-manifest.js +1 -1
  232. package/server/.next/server/app/page/server-reference-manifest.json +1 -1
  233. package/server/.next/server/app/page.js.nft.json +1 -1
  234. package/server/.next/server/app/page_client-reference-manifest.js +1 -1
  235. package/server/.next/server/app/s/[slug]/badge/[file]/route.js +9 -8
  236. package/server/.next/server/app/s/[slug]/badge/[file]/route.js.nft.json +1 -1
  237. package/server/.next/server/app/s/[slug]/page/server-reference-manifest.json +1 -1
  238. package/server/.next/server/app/s/[slug]/page.js +8 -8
  239. package/server/.next/server/app/s/[slug]/page.js.nft.json +1 -1
  240. package/server/.next/server/app/s/[slug]/page_client-reference-manifest.js +1 -1
  241. package/server/.next/server/app/setup/page/server-reference-manifest.json +2 -2
  242. package/server/.next/server/app/setup/page.js.nft.json +1 -1
  243. package/server/.next/server/app/setup/page_client-reference-manifest.js +1 -1
  244. package/server/.next/server/app/signin/page/server-reference-manifest.json +3 -3
  245. package/server/.next/server/app/signin/page.js.nft.json +1 -1
  246. package/server/.next/server/app/signin/page_client-reference-manifest.js +1 -1
  247. package/server/.next/server/chunks/{[root-of-the-server]__09qqv-zsz9qhr._.js → [root-of-the-server]__00hb7hqa7qktx._.js} +1 -1
  248. package/server/.next/server/chunks/[root-of-the-server]__03276vwi4jgvk._.js +1 -1
  249. package/server/.next/server/chunks/[root-of-the-server]__049ykc067tlsv._.js +1 -1
  250. package/server/.next/server/chunks/[root-of-the-server]__06f9e4kpi0mw8._.js +1 -1
  251. package/server/.next/server/chunks/[root-of-the-server]__0_rfeg3389imx._.js +1 -1
  252. package/server/.next/server/chunks/{[root-of-the-server]__1n32c8l_j8jt4._.js → [root-of-the-server]__0abdjgj-muln9._.js} +2 -2
  253. package/server/.next/server/chunks/{[root-of-the-server]__1jrqehmo6kq8x._.js → [root-of-the-server]__0alnp_0qkhzze._.js} +2 -2
  254. package/server/.next/server/chunks/[root-of-the-server]__0b2hzo6nez0we._.js +1 -1
  255. package/server/.next/server/chunks/[root-of-the-server]__0c5w5y-db0jkb._.js +3 -0
  256. package/server/.next/server/chunks/{[root-of-the-server]__0znb_m_wygjdc._.js → [root-of-the-server]__0erdelc9_06nk._.js} +2 -2
  257. package/server/.next/server/chunks/{[root-of-the-server]__0u66-8g4ql645._.js → [root-of-the-server]__0grtjjr51j6xe._.js} +1 -1
  258. package/server/.next/server/chunks/{[root-of-the-server]__0-ok-3r9xtz0y._.js → [root-of-the-server]__0hpdrg-m0n6ty._.js} +2 -2
  259. package/server/.next/server/chunks/{[root-of-the-server]__1z3-s7wc9-uc6._.js → [root-of-the-server]__0m7_0rarf_x86._.js} +2 -2
  260. package/server/.next/server/chunks/[root-of-the-server]__0m7i0l3nkbdfm._.js +1 -1
  261. package/server/.next/server/chunks/[root-of-the-server]__0mwiq4mkf8pc5._.js +1 -1
  262. package/server/.next/server/chunks/[root-of-the-server]__0p3lnkpxf2-xz._.js +1 -1
  263. package/server/.next/server/chunks/{[root-of-the-server]__08n3x1x850wqc._.js → [root-of-the-server]__0qmkpydmx3ljf._.js} +2 -2
  264. package/server/.next/server/chunks/{[root-of-the-server]__0_6eq1806attx._.js → [root-of-the-server]__0r-zdzq6ki5gr._.js} +1 -1
  265. package/server/.next/server/chunks/{[root-of-the-server]__157yb_wl7w4ly._.js → [root-of-the-server]__0rak0ce6prxwp._.js} +1 -1
  266. package/server/.next/server/chunks/{[root-of-the-server]__081ywec7cjq3d._.js → [root-of-the-server]__0rxrv00e5e6fj._.js} +2 -2
  267. package/server/.next/server/chunks/{[root-of-the-server]__1_5q9zgl6p5_3._.js → [root-of-the-server]__0sivlmcvkc1uq._.js} +1 -1
  268. package/server/.next/server/chunks/{[root-of-the-server]__1x9tt_2yhozwe._.js → [root-of-the-server]__0vp-x4ifpr3p9._.js} +2 -2
  269. package/server/.next/server/chunks/{[root-of-the-server]__0j0medewrv95l._.js → [root-of-the-server]__0z-41cwvkliev._.js} +2 -2
  270. package/server/.next/server/chunks/{[root-of-the-server]__06iz-tlpv7pqm._.js → [root-of-the-server]__0zd61mh-juh2i._.js} +1 -1
  271. package/server/.next/server/chunks/{[root-of-the-server]__0mtlynfv-vklo._.js → [root-of-the-server]__1-q6_msattgcu._.js} +1 -1
  272. package/server/.next/server/chunks/{[root-of-the-server]__018ux7xja83l6._.js → [root-of-the-server]__1-rqermjb77se._.js} +2 -2
  273. package/server/.next/server/chunks/[root-of-the-server]__110c-t3wz3nzm._.js +1 -1
  274. package/server/.next/server/chunks/[root-of-the-server]__11k46kam6tbia._.js +1 -1
  275. package/server/.next/server/chunks/{[root-of-the-server]__0mhtnnebbepzx._.js → [root-of-the-server]__11kfkk5yxz4ge._.js} +2 -2
  276. package/server/.next/server/chunks/{[root-of-the-server]__0ymon9r-17xe_._.js → [root-of-the-server]__13be7gbo81td4._.js} +1 -1
  277. package/server/.next/server/chunks/{[root-of-the-server]__0uyagcs61c0t_._.js → [root-of-the-server]__13scfgchwlitx._.js} +2 -2
  278. package/server/.next/server/chunks/[root-of-the-server]__14zpwd7xntffk._.js +3 -0
  279. package/server/.next/server/chunks/[root-of-the-server]__15tt645jfx-br._.js +3 -0
  280. package/server/.next/server/chunks/{[root-of-the-server]__08801yoxfe_os._.js → [root-of-the-server]__15zbj_ehkvv-n._.js} +2 -2
  281. package/server/.next/server/chunks/[root-of-the-server]__16sp8qurcwsnf._.js +3 -0
  282. package/server/.next/server/chunks/[root-of-the-server]__19kwj690b37xf._.js +1 -1
  283. package/server/.next/server/chunks/[root-of-the-server]__1_1-jgxiadvs0._.js +3 -0
  284. package/server/.next/server/chunks/[root-of-the-server]__1_2akhn6c9eqq._.js +3 -0
  285. package/server/.next/server/chunks/[root-of-the-server]__1c2u-bg524-_w._.js +3 -0
  286. package/server/.next/server/chunks/[root-of-the-server]__1c8_e0jqh_8na._.js +3 -0
  287. package/server/.next/server/chunks/{[root-of-the-server]__0qpf0qusq792k._.js → [root-of-the-server]__1flvcyht5uk7h._.js} +2 -2
  288. package/server/.next/server/chunks/[root-of-the-server]__1g-be2zoiz2tf._.js +3 -0
  289. package/server/.next/server/chunks/[root-of-the-server]__1h96ebyza_vlh._.js +3 -0
  290. package/server/.next/server/chunks/{[root-of-the-server]__02ihdvnmhshoe._.js → [root-of-the-server]__1hw6s0e7p2-6g._.js} +2 -2
  291. package/server/.next/server/chunks/[root-of-the-server]__1j26i51ankv-z._.js +3 -0
  292. package/server/.next/server/chunks/[root-of-the-server]__1ldcwvd42rpuz._.js +3 -0
  293. package/server/.next/server/chunks/{[root-of-the-server]__0q691wec2busx._.js → [root-of-the-server]__1objhlwwrjfjk._.js} +2 -2
  294. package/server/.next/server/chunks/{[root-of-the-server]__0wt74rsaz-308._.js → [root-of-the-server]__1qzor1nqajuyp._.js} +2 -2
  295. package/server/.next/server/chunks/{[root-of-the-server]__18mztbxkzaxjs._.js → [root-of-the-server]__1rf3slum5swk2._.js} +2 -2
  296. package/server/.next/server/chunks/[root-of-the-server]__1sj7uwyq1gpet._.js +3 -0
  297. package/server/.next/server/chunks/{[root-of-the-server]__0tb-63ts77gqd._.js → [root-of-the-server]__1tefe1f5835t_._.js} +2 -2
  298. package/server/.next/server/chunks/[root-of-the-server]__1u1b3a58anm3f._.js +3 -0
  299. package/server/.next/server/chunks/{[root-of-the-server]__132wlw6sbwt1d._.js → [root-of-the-server]__1vi0u2vkv3tk0._.js} +2 -2
  300. package/server/.next/server/chunks/[root-of-the-server]__1w_73psnce1dd._.js +3 -0
  301. package/server/.next/server/chunks/[root-of-the-server]__202r0hxhr5bnu._.js +3 -0
  302. package/server/.next/server/chunks/[root-of-the-server]__2196hxm-s7u6e._.js +3 -0
  303. package/server/.next/server/chunks/{_076dwl7r_5vcl._.js → _061mqfu1rkl7g._.js} +4 -4
  304. package/server/.next/server/chunks/{_0594j_bb0l80e._.js → _0c_vrxu6rin-k._.js} +2 -2
  305. package/server/.next/server/chunks/_0ejcrge5k4quv._.js +9 -9
  306. package/server/.next/server/chunks/_0n-wbmmvp4omq._.js +3 -0
  307. package/server/.next/server/chunks/_0qawxzcf--lyq._.js +2 -2
  308. package/server/.next/server/chunks/_0qmi54vmnlwdv._.js +3 -3
  309. package/server/.next/server/chunks/{_0m49djgc1t4wg._.js → _0qrn1v02iivm8._.js} +2 -2
  310. package/server/.next/server/chunks/_0vgojnnkcf1vu._.js +2 -2
  311. package/server/.next/server/chunks/_0vz0de4gz70-e._.js +1 -1
  312. package/server/.next/server/chunks/_103ai6ybnpq1k._.js +1 -1
  313. package/server/.next/server/chunks/_108e86rhye0o1._.js +1 -1
  314. package/server/.next/server/chunks/_1476vtrt9101m._.js +1 -1
  315. package/server/.next/server/chunks/{_0r4am1mgz4dg_._.js → _1b63jfweu0o04._.js} +2 -2
  316. package/server/.next/server/chunks/_1b7pc6ohhqxs3._.js +9 -9
  317. package/server/.next/server/chunks/_1g_prqb_u33e3._.js +3 -3
  318. package/server/.next/server/chunks/{_08tppw9ujlpke._.js → _1i57ar6zvd7yb._.js} +4 -4
  319. package/server/.next/server/chunks/{_11p2ejgai2a78._.js → _1k2cwp1_wt6qm._.js} +2 -2
  320. package/server/.next/server/chunks/_1kcmwgs544mo-._.js +1 -1
  321. package/server/.next/server/chunks/{_0n5m3o7at0adm._.js → _1kj2yv4-wk2kp._.js} +4 -4
  322. package/server/.next/server/chunks/_1lq5m27p-ilrw._.js +1 -1
  323. package/server/.next/server/chunks/_1mnwzh3z9y4th._.js +3 -0
  324. package/server/.next/server/chunks/_1nuf-l7izvfl_._.js +1 -1
  325. package/server/.next/server/chunks/{_1rw6_0nf-3sxs._.js → _1ozrnl_on86u7._.js} +4 -4
  326. package/server/.next/server/chunks/_1ptcxyn1tzm9r._.js +1 -1
  327. package/server/.next/server/chunks/_1xeuk6g48m3_1._.js +3 -0
  328. package/server/.next/server/chunks/{src_0uxqs7150nhx2._.js → src_014zbodp4djeb._.js} +2 -2
  329. package/server/.next/server/chunks/{src_0n42os1q41rha._.js → src_04pgj--n_d4w5._.js} +2 -2
  330. package/server/.next/server/chunks/src_063xvouojxyoa._.js +1 -1
  331. package/server/.next/server/chunks/{src_01wdnb4skk1wz._.js → src_08bzavsfds295._.js} +2 -2
  332. package/server/.next/server/chunks/src_0c-owt8q0lyj3._.js +3 -0
  333. package/server/.next/server/chunks/{src_1-r51arho90p7._.js → src_0k78ifotuztod._.js} +2 -2
  334. package/server/.next/server/chunks/src_0o4-snj7wkaav._.js +1 -1
  335. package/server/.next/server/chunks/{src_0d-zi077mzm6v._.js → src_0xqorb3-ef3ub._.js} +2 -2
  336. package/server/.next/server/chunks/src_1a5yibsjcy1ga._.js +1 -1
  337. package/server/.next/server/chunks/src_1zo6so07lgcdj._.js +1 -1
  338. package/server/.next/server/chunks/src_db_rows_ts_15b286wn1kn1e._.js +1 -1
  339. package/server/.next/server/chunks/src_instrumentation-node_ts_1c--sr1k7_8k2._.js +3 -0
  340. package/server/.next/server/chunks/src_lib_0485hz-c7h7dr._.js +6 -6
  341. package/server/.next/server/chunks/src_lib_08u7n7-yunfvd._.js +2 -2
  342. package/server/.next/server/chunks/src_lib_0cbs2jlrw1qbh._.js +3 -0
  343. package/server/.next/server/chunks/src_lib_0glcfed-uogyd._.js +1 -1
  344. package/server/.next/server/chunks/src_lib_0qcyomi01xvf1._.js +6 -6
  345. package/server/.next/server/chunks/src_lib_0vl2-zp4wzw7n._.js +3 -0
  346. package/server/.next/server/chunks/src_lib_0x4n8swwa3zn7._.js +1 -1
  347. package/server/.next/server/chunks/src_lib_10vqn6q0h8kls._.js +2 -2
  348. package/server/.next/server/chunks/src_lib_13g9xjx8ci00z._.js +3 -0
  349. package/server/.next/server/chunks/src_lib_1ryt-36ohhnm6._.js +6 -6
  350. package/server/.next/server/chunks/src_lib_1tzoqx44yogsk._.js +2 -2
  351. package/server/.next/server/chunks/src_lib_1yd94hta5y1hx._.js +3 -0
  352. package/server/.next/server/chunks/src_lib_brand-env_ts_1wcm1bjuismq_._.js +3 -0
  353. package/server/.next/server/chunks/src_lib_collector_runners_ts_12z4gtgikss74._.js +6 -6
  354. package/server/.next/server/chunks/src_lib_data_0ask_rbmgwlf3._.js +1 -1
  355. package/server/.next/server/chunks/src_lib_data_0e155tkqeoojm._.js +1 -1
  356. package/server/.next/server/chunks/src_lib_data_backup-db_ts_19rtzbv84xz_h._.js +2 -2
  357. package/server/.next/server/chunks/src_lib_data_logs-db_ts_1ddw07do12mmk._.js +2 -2
  358. package/server/.next/server/chunks/src_lib_demo_pool_ts_0fpn8acsdk64i._.js +9 -9
  359. package/server/.next/server/chunks/src_lib_demo_pool_ts_14rjvkgozh1d4._.js +9 -9
  360. package/server/.next/server/chunks/src_lib_demo_pool_ts_17xz9bk-d5uic._.js +13 -13
  361. package/server/.next/server/chunks/src_lib_demo_pool_ts_210g_on8zx_-n._.js +9 -9
  362. package/server/.next/server/chunks/src_lib_time_ts_1__07rt8x18k-._.js +3 -0
  363. package/server/.next/server/chunks/src_lib_time_ts_1a27wp71yhgti._.js +3 -0
  364. package/server/.next/server/chunks/src_lib_time_ts_1qlwgp7nprvbi._.js +3 -0
  365. package/server/.next/server/chunks/src_private_ai_gateway_ts_04_5ao9914d0p._.js +1 -1
  366. package/server/.next/server/chunks/src_private_notes_notes-actions_ts_1g63g8u965fhc._.js +1 -1
  367. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_agents_page_actions_1q6nc5chwn5k4.js +1 -1
  368. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_models_page_actions_0n_anax2l1jpu.js +1 -1
  369. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_playground_page_actions_1kyng_xuojdtb.js +1 -1
  370. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_quota_page_actions_04r4ro6x7-p7p.js +1 -1
  371. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_usage_page_actions_1fq9uugdpqa_l.js +1 -1
  372. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_auto-actions_page_actions_0mhtiq_5szpe0.js +1 -1
  373. package/server/.next/server/chunks/ssr/{[externals]__1u-jgivpw0_oh._.js → [externals]__0vbbz7arebnub._.js} +1 -1
  374. package/server/.next/server/chunks/ssr/[root-of-the-server]__02cq5r26w4itc._.js +1 -1
  375. package/server/.next/server/chunks/ssr/[root-of-the-server]__02qyxz9eh8_eh._.js +1 -1
  376. package/server/.next/server/chunks/ssr/[root-of-the-server]__04a21b9fkrqs3._.js +3 -0
  377. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0ijk9z1ot_xi4._.js → [root-of-the-server]__07n1hb3mk44lt._.js} +2 -2
  378. package/server/.next/server/chunks/ssr/[root-of-the-server]__09-0oydof-7uw._.js +1 -1
  379. package/server/.next/server/chunks/ssr/[root-of-the-server]__0ct71emqfru3b._.js +1 -1
  380. package/server/.next/server/chunks/ssr/{[root-of-the-server]__1fdzriy6yyu5d._.js → [root-of-the-server]__0hbk3gqja86zp._.js} +1 -1
  381. package/server/.next/server/chunks/ssr/[root-of-the-server]__0ksvf4x4zcbpb._.js +1 -1
  382. package/server/.next/server/chunks/ssr/[root-of-the-server]__0n7cj-oti5wct._.js +2 -2
  383. package/server/.next/server/chunks/ssr/[root-of-the-server]__0op0kqh43wd-a._.js +3 -0
  384. package/server/.next/server/chunks/ssr/{[root-of-the-server]__1tkmutq84zkeh._.js → [root-of-the-server]__0ryl_hnreck66._.js} +2 -2
  385. package/server/.next/server/chunks/ssr/[root-of-the-server]__0wcnxr_g-bd3r._.js +1 -1
  386. package/server/.next/server/chunks/ssr/[root-of-the-server]__0wf8q7-o-4n8y._.js +3 -0
  387. package/server/.next/server/chunks/ssr/[root-of-the-server]__10bkg3o65q6r4._.js +1 -1
  388. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0ryb947ux5cq7._.js → [root-of-the-server]__11y6b96ofb-c5._.js} +2 -2
  389. package/server/.next/server/chunks/ssr/[root-of-the-server]__13oi70jo-u731._.js +2 -2
  390. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0aahjz4fnt4c_._.js → [root-of-the-server]__13rgl1h4g39l-._.js} +2 -2
  391. package/server/.next/server/chunks/ssr/{[root-of-the-server]__1csz822qejxk-._.js → [root-of-the-server]__168ahi_n-kf90._.js} +2 -2
  392. package/server/.next/server/chunks/ssr/[root-of-the-server]__17kocbnwlcw6d._.js +1 -1
  393. package/server/.next/server/chunks/ssr/{[root-of-the-server]__11-ssp_43878t._.js → [root-of-the-server]__18b1wk6-2gq4x._.js} +2 -2
  394. package/server/.next/server/chunks/ssr/[root-of-the-server]__1_f7nip9age3d._.js +1 -1
  395. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0lks-6wz-rmk5._.js → [root-of-the-server]__1drr27jyyhw7p._.js} +2 -2
  396. package/server/.next/server/chunks/ssr/[root-of-the-server]__1e-xqsuqsd4ub._.js +3 -0
  397. package/server/.next/server/chunks/ssr/[root-of-the-server]__1gw6334w8y2my._.js +1 -1
  398. package/server/.next/server/chunks/ssr/[root-of-the-server]__1i69oli51is1u._.js +1 -1
  399. package/server/.next/server/chunks/ssr/[root-of-the-server]__1lx2k37wgre3d._.js +1 -1
  400. package/server/.next/server/chunks/ssr/[root-of-the-server]__1n1pq5j5p4_qn._.js +3 -0
  401. package/server/.next/server/chunks/ssr/[root-of-the-server]__1qltiqn0htqnx._.js +1 -1
  402. package/server/.next/server/chunks/ssr/[root-of-the-server]__1w1472ukyh58r._.js +1 -1
  403. package/server/.next/server/chunks/ssr/[root-of-the-server]__1xa91qls2i3j4._.js +3 -0
  404. package/server/.next/server/chunks/ssr/[root-of-the-server]__204_t7bzma353._.js +3 -0
  405. package/server/.next/server/chunks/ssr/[root-of-the-server]__20ht054m5-_d6._.js +1 -1
  406. package/server/.next/server/chunks/ssr/_0-uwh2rwm_dic._.js +2 -2
  407. package/server/.next/server/chunks/ssr/_026w_ig6vy9bt._.js +1 -1
  408. package/server/.next/server/chunks/ssr/_06kwu83_fmex9._.js +2 -2
  409. package/server/.next/server/chunks/ssr/{_14bz_443syxhi._.js → _06sp8cllu_ljh._.js} +2 -2
  410. package/server/.next/server/chunks/ssr/{_18t7ov64ycb-w._.js → _08u2qnetu4ghm._.js} +2 -2
  411. package/server/.next/server/chunks/ssr/_0_oc9q0vqkynd._.js +1 -1
  412. package/server/.next/server/chunks/ssr/_0_tr9fol2yq33._.js +1 -1
  413. package/server/.next/server/chunks/ssr/_0_ul4mlc_pj5i._.js +2 -2
  414. package/server/.next/server/chunks/ssr/_0a22b7zsckifp._.js +1 -1
  415. package/server/.next/server/chunks/ssr/_0azq3ml4gbn1d._.js +1 -1
  416. package/server/.next/server/chunks/ssr/_0cukja7zcxh7e._.js +1 -1
  417. package/server/.next/server/chunks/ssr/_0cw4kz3d6kmb1._.js +1 -1
  418. package/server/.next/server/chunks/ssr/_0d702k82llasi._.js +1 -1
  419. package/server/.next/server/chunks/ssr/_0fnl7z-saj7nc._.js +1 -1
  420. package/server/.next/server/chunks/ssr/_0hykblvnwc2ar._.js +1 -1
  421. package/server/.next/server/chunks/ssr/_0i-e824vtomvg._.js +2 -2
  422. package/server/.next/server/chunks/ssr/_0jjoot3rhbde3._.js +2 -2
  423. package/server/.next/server/chunks/ssr/_0kn710rrv_o2t._.js +2 -2
  424. package/server/.next/server/chunks/ssr/_0mgclon6_oh87._.js +2 -2
  425. package/server/.next/server/chunks/ssr/_0oovfx_t_-u0k._.js +1 -1
  426. package/server/.next/server/chunks/ssr/_0qnv1uc1_yv28._.js +2 -2
  427. package/server/.next/server/chunks/ssr/_0sotiqakj-6ci._.js +1 -1
  428. package/server/.next/server/chunks/ssr/_0tcmsw8hszixv._.js +1 -1
  429. package/server/.next/server/chunks/ssr/_0uogspz6zrvwk._.js +2 -2
  430. package/server/.next/server/chunks/ssr/_1-6d1tm3r_qwg._.js +1 -1
  431. package/server/.next/server/chunks/ssr/_10bven6gb1vj0._.js +1 -1
  432. package/server/.next/server/chunks/ssr/_10pz3ggun9s5i._.js +2 -2
  433. package/server/.next/server/chunks/ssr/_11o43qq2eyx_r._.js +3 -0
  434. package/server/.next/server/chunks/ssr/{_06_f735j-1i20._.js → _12348a3ug1-wo._.js} +2 -2
  435. package/server/.next/server/chunks/ssr/_12ddramfkd6o1._.js +2 -2
  436. package/server/.next/server/chunks/ssr/_1476vtrt9101m._.js +1 -1
  437. package/server/.next/server/chunks/ssr/_15ft896zgt02e._.js +2 -2
  438. package/server/.next/server/chunks/ssr/_16t9k9e5cjvas._.js +1 -1
  439. package/server/.next/server/chunks/ssr/_18lgd6o04ugow._.js +2 -2
  440. package/server/.next/server/chunks/ssr/_19-3vzkc6rk97._.js +1 -1
  441. package/server/.next/server/chunks/ssr/_1_-o2s48aj4i7._.js +1 -1
  442. package/server/.next/server/chunks/ssr/{_08y82qdosn7ga._.js → _1_ojvke28lw3y._.js} +2 -2
  443. package/server/.next/server/chunks/ssr/_1b1ano88ar-gi._.js +2 -2
  444. package/server/.next/server/chunks/ssr/_1boia2p3_0nsz._.js +2 -2
  445. package/server/.next/server/chunks/ssr/_1c28jitsyufnt._.js +1 -1
  446. package/server/.next/server/chunks/ssr/_1cl55h_h3q-b_._.js +1 -1
  447. package/server/.next/server/chunks/ssr/_1dx207la592b7._.js +2 -2
  448. package/server/.next/server/chunks/ssr/_1e24cpw3g7njr._.js +2 -2
  449. package/server/.next/server/chunks/ssr/{_0o0-2ela2_qqd._.js → _1exwj9ou5yh71._.js} +2 -2
  450. package/server/.next/server/chunks/ssr/_1flla16o7o9ba._.js +1 -1
  451. package/server/.next/server/chunks/ssr/_1g2zbl_-4z_hg._.js +1 -1
  452. package/server/.next/server/chunks/ssr/_1i77n2n-wb98v._.js +2 -2
  453. package/server/.next/server/chunks/ssr/_1ibagew7zj8y6._.js +3 -0
  454. package/server/.next/server/chunks/ssr/_1j9cka-44jd65._.js +1 -1
  455. package/server/.next/server/chunks/ssr/_1jh_o2i8hj2g5._.js +1 -1
  456. package/server/.next/server/chunks/ssr/_1nir32qtr99-r._.js +1 -1
  457. package/server/.next/server/chunks/ssr/_1qt1czw3w8dww._.js +3 -0
  458. package/server/.next/server/chunks/ssr/_1sq12-1_02tzt._.js +2 -2
  459. package/server/.next/server/chunks/ssr/_1ybhu25y38395._.js +2 -2
  460. package/server/.next/server/chunks/ssr/_1ykxf4mi60jog._.js +2 -2
  461. package/server/.next/server/chunks/ssr/_1z6dy1k48mskn._.js +1 -1
  462. package/server/.next/server/chunks/ssr/_20ln-4gu85-yt._.js +3 -0
  463. package/server/.next/server/chunks/ssr/_210edglbxmcb3._.js +2 -2
  464. package/server/.next/server/chunks/ssr/{_0i6y4bkm-0cm3._.js → _216rrmkts392q._.js} +2 -2
  465. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_(private)_ai_keys_page_actions_1910ocjt__nlh.js +1 -1
  466. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_(private)_ai_logs_page_actions_136-s4sxl6nra.js +1 -1
  467. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_alerts_page_actions_0f7cxitw-svnl.js +1 -1
  468. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_apps_[id]_page_actions_14l8--w36mywn.js +1 -1
  469. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_apps_page_actions_1uaicj0j8stji.js +1 -1
  470. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_connections_page_actions_03amng1-xhfd1.js +1 -1
  471. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_dns_page_actions_1p2deebbgom7b.js +1 -1
  472. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_domains_page_actions_0-wg58qcvu_rv.js +1 -1
  473. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_firebase_page_actions_215m-kkv06r4z.js +1 -1
  474. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_logs_page_actions_11-8xinblaop_.js +1 -1
  475. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_settings_page_actions_1z3l1p4keed3m.js +1 -1
  476. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_supabase_page_actions_1evatil08dntl.js +1 -1
  477. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_uptime_page_actions_0k1237d-q3oc4.js +1 -1
  478. package/server/.next/server/chunks/ssr/_next-internal_server_app_account_password_page_actions_1v4e71_oifbx9.js +1 -1
  479. package/server/.next/server/chunks/ssr/_next-internal_server_app_signin_page_actions_11wzk446p6_zi.js +1 -1
  480. package/server/.next/server/chunks/ssr/src_00ze92e3aolj8._.js +1 -1
  481. package/server/.next/server/chunks/ssr/src_06tjy8wljego8._.js +1 -1
  482. package/server/.next/server/chunks/ssr/src_084tdkx3c_yqi._.js +1 -1
  483. package/server/.next/server/chunks/ssr/src_0abts6wp5ucc0._.js +1 -1
  484. package/server/.next/server/chunks/ssr/src_0f_ip1ke7i9r7._.js +3 -0
  485. package/server/.next/server/chunks/ssr/src_0iefnjvaszvw_._.js +1 -1
  486. package/server/.next/server/chunks/ssr/src_0ph020gy78gi9._.js +1 -1
  487. package/server/.next/server/chunks/ssr/src_0qu78tivj78-x._.js +3 -0
  488. package/server/.next/server/chunks/ssr/src_0t6-d5hmzrbp1._.js +1 -1
  489. package/server/.next/server/chunks/ssr/src_0xh3xicmff6ws._.js +1 -1
  490. package/server/.next/server/chunks/ssr/src_10zavgy86u3us._.js +1 -1
  491. package/server/.next/server/chunks/ssr/{src_1eermasnm2cgy._.js → src_11_hakxhnybdd._.js} +2 -2
  492. package/server/.next/server/chunks/ssr/src_1sdwdnblbiq_g._.js +1 -1
  493. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_agents_1fyhh1ldgm23z._.js +1 -1
  494. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_ask_06n-9cjmbb-vu._.js +1 -1
  495. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_ask_ask-form_tsx_18ttm9nna_9y6._.js +1 -1
  496. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_connect_connect-view_tsx_04abz05n7hdsd._.js +15 -15
  497. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_logs_export-button_tsx_1k-crb88n1za_._.js +1 -1
  498. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_models_0ayzqn062pnv5._.js +1 -1
  499. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_models_0hla-5y3iresx._.js +1 -1
  500. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_playground_playground-view_tsx_18ua5zn_a0mar._.js +1 -1
  501. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_providers_0jamu-nm6x-dh._.js +1 -1
  502. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_providers_1ru-30x6-uwu4._.js +1 -1
  503. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_quota_1kor9sy67qpiw._.js +1 -1
  504. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_quota_limits-form_tsx_1vouaaf560z_x._.js +1 -1
  505. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_usage_1v003vrkwk19w._.js +1 -1
  506. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_usage_limits-form_tsx_0sfk3ver58rqw._.js +1 -1
  507. package/server/.next/server/chunks/ssr/{src_app_(console)_1ppp9j5e2rtqf._.js → src_app_(console)_1olpa0osy74mq._.js} +2 -2
  508. package/server/.next/server/chunks/ssr/src_app_(console)_alerts_0j5xlt68kwg8x._.js +1 -1
  509. package/server/.next/server/chunks/ssr/src_app_(console)_alerts_1t61z2wktki-v._.js +1 -1
  510. package/server/.next/server/chunks/ssr/src_app_(console)_apps_[id]_088bs149wsgca._.js +1 -1
  511. package/server/.next/server/chunks/ssr/src_app_(console)_apps_[id]_1sfvku9ui1le-._.js +1 -1
  512. package/server/.next/server/chunks/ssr/src_app_(console)_backups_actions_ts_1vpytsdh0wc1f._.js +1 -1
  513. package/server/.next/server/chunks/ssr/src_app_(console)_backups_drive-buttons_tsx_00cku5r_z3jkg._.js +1 -1
  514. package/server/.next/server/chunks/ssr/src_app_(console)_backups_page_tsx_0o082iagq_14b._.js +1 -1
  515. package/server/.next/server/chunks/ssr/src_app_(console)_connections_1fahc65-97qla._.js +1 -1
  516. package/server/.next/server/chunks/ssr/src_app_(console)_connections_1qigx20w8bk53._.js +1 -1
  517. package/server/.next/server/chunks/ssr/src_app_(console)_connections_actions_ts_103blv4gzq76z._.js +1 -1
  518. package/server/.next/server/chunks/ssr/src_app_(console)_create_actions_ts_05-86qr6kfjey._.js +1 -1
  519. package/server/.next/server/chunks/ssr/src_app_(console)_dns_actions_ts_1jzn58xzwbukz._.js +1 -1
  520. package/server/.next/server/chunks/ssr/src_app_(console)_dns_record-actions_tsx_0cqmz51zcuebv._.js +1 -1
  521. package/server/.next/server/chunks/ssr/src_app_(console)_logs_log-viewer_tsx_0v3e4cflfk14w._.js +1 -1
  522. package/server/.next/server/chunks/ssr/src_app_(console)_monitor-actions_ts_10w3h7myk2ppi._.js +1 -1
  523. package/server/.next/server/chunks/ssr/src_app_(console)_palette-action_ts_0zyw9a9imev6p._.js +1 -1
  524. package/server/.next/server/chunks/ssr/src_app_(console)_repos_repo-list_tsx_1n1gcm4qfrfdt._.js +1 -1
  525. package/server/.next/server/chunks/ssr/src_app_(console)_sql_1icfsti04djqe._.js +2 -2
  526. package/server/.next/server/chunks/ssr/src_app_(console)_sql_actions_ts_1oqco02hw-3vp._.js +1 -1
  527. package/server/.next/server/chunks/ssr/src_app_(console)_supabase_0ib3m2ch9gu-4._.js +1 -1
  528. package/server/.next/server/chunks/ssr/src_app_(console)_supabase_pool-actions_ts_0nzd4vwy_9zzx._.js +1 -1
  529. package/server/.next/server/chunks/ssr/src_app_(console)_uptime_148phfjye0539._.js +1 -1
  530. package/server/.next/server/chunks/ssr/src_app_(console)_uptime_1mnnkfi-2zv-k._.js +1 -1
  531. package/server/.next/server/chunks/ssr/src_app_(console)_vercel-actions_ts_0wpk1yo9v632d._.js +1 -1
  532. package/server/.next/server/chunks/ssr/src_app_mfa_setup_setup-flow_tsx_1fpwygr2vdgnh._.js +1 -1
  533. package/server/.next/server/chunks/ssr/src_app_s_[slug]_page_tsx_0jjqe6py82mpb._.js +1 -1
  534. package/server/.next/server/chunks/ssr/src_app_setup_setup-form_tsx_0izoagdur96e1._.js +1 -1
  535. package/server/.next/server/chunks/ssr/{src_app_signin_124xn9wb2fasu._.js → src_app_signin_1y1xla7bcc5a1._.js} +2 -2
  536. package/server/.next/server/chunks/ssr/src_components_11x625pqq9ovs._.js +3 -0
  537. package/server/.next/server/chunks/ssr/src_components_create_create-dialog_tsx_1s_9clly_m1ru._.js +1 -1
  538. package/server/.next/server/chunks/ssr/src_lib_005l0kcpyu43o._.js +3 -3
  539. package/server/.next/server/chunks/ssr/src_lib_05ai1oj91p9w2._.js +2 -2
  540. package/server/.next/server/chunks/ssr/{src_lib_1l8ej-zoyyegd._.js → src_lib_0vl2-zp4wzw7n._.js} +2 -2
  541. package/server/.next/server/chunks/ssr/src_lib_0x4n8swwa3zn7._.js +1 -1
  542. package/server/.next/server/chunks/ssr/src_lib_1nkahiclbn55q._.js +1 -1
  543. package/server/.next/server/chunks/ssr/src_lib_collector_run_ts_0-q8is8s0y9cq._.js +1 -1
  544. package/server/.next/server/chunks/ssr/src_lib_data_logs-db_ts_1ddw07do12mmk._.js +2 -2
  545. package/server/.next/server/chunks/ssr/{src_lib_demo_20hj85e_64pp1._.js → src_lib_demo_20zjotuzm1lm8._.js} +2 -2
  546. package/server/.next/server/chunks/ssr/src_lib_demo_pool_ts_0fpn8acsdk64i._.js +9 -9
  547. package/server/.next/server/chunks/ssr/src_lib_time_ts_1qlwgp7nprvbi._.js +3 -0
  548. package/server/.next/server/chunks/ssr/src_lib_time_ts_1ualgyi3irm1z._.js +3 -0
  549. package/server/.next/server/chunks/ssr/src_private_0iy_wyg2p1jkn._.js +1 -1
  550. package/server/.next/server/chunks/ssr/src_private_actions_decide-form_tsx_1hngtxpyle3v8._.js +1 -1
  551. package/server/.next/server/chunks/ssr/src_private_ai_gateway_ts_04_5ao9914d0p._.js +1 -1
  552. package/server/.next/server/chunks/ssr/src_private_ai_providers_actions_ts_0wxa36ai6s5nn._.js +1 -1
  553. package/server/.next/server/chunks/ssr/src_private_ai_usage-analytics_ts_1bxba3xarzol0._.js +1 -1
  554. package/server/.next/server/chunks/ssr/src_private_ai_views-db_ts_1jbnr41mskha2._.js +1 -1
  555. package/server/.next/server/chunks/ssr/src_private_assist_advisor-notes_ts_0qkpm5c3la7fo._.js +4 -4
  556. package/server/.next/server/chunks/ssr/src_private_explorer_explorer_tsx_04m_tdottspjs._.js +1 -1
  557. package/server/.next/server/chunks/ssr/src_private_notes_notes-actions_ts_1g63g8u965fhc._.js +1 -1
  558. package/server/.next/server/middleware-build-manifest.js +3 -3
  559. package/server/.next/server/pages/404.html +1 -1
  560. package/server/.next/server/pages/500.html +1 -1
  561. package/server/.next/server/preview-props.json +3 -3
  562. package/server/.next/server/server-reference-manifest.js +1 -1
  563. package/server/.next/server/server-reference-manifest.json +133 -133
  564. package/server/.next/static/chunks/0-7by9f00qb4d.js +1 -0
  565. package/server/.next/static/chunks/{2k9ytb8jmg14_.js → 010bc8dzhxd_0.js} +1 -1
  566. package/server/.next/static/chunks/01oee9tptcjdb.js +1 -0
  567. package/server/.next/static/chunks/02uvde7i-78p5.js +1 -0
  568. package/server/.next/static/chunks/{2rdmebof0d_c4.js → 03fjh6klyhqv4.js} +1 -1
  569. package/server/.next/static/chunks/{1o_q7_4ulcq9x.js → 06lmwdlx-fkr8.js} +1 -1
  570. package/server/.next/static/chunks/{1ieazx9t3vl5p.js → 08w0t5q93_9mu.js} +1 -1
  571. package/server/.next/static/chunks/{1mlvn70-zqjvi.js → 0anet8wttkax1.js} +1 -1
  572. package/server/.next/static/chunks/0ao7kjrp6bp3l.js +1 -0
  573. package/server/.next/static/chunks/0b0rwd99q942r.js +1 -0
  574. package/server/.next/static/chunks/{1ts_fd_r1kcrv.js → 0dhgqjjm0zj6_.js} +1 -1
  575. package/server/.next/static/chunks/{2jlv5ekbb0wu2.js → 0dnjs3de2e_d1.js} +1 -1
  576. package/server/.next/static/chunks/{29p15vj15jcsb.js → 0ilml-p3iktnr.js} +1 -1
  577. package/server/.next/static/chunks/{43_va15lk2zc1.js → 0j_5norjm-kef.js} +1 -1
  578. package/server/.next/static/chunks/0nx0h-723nd_u.js +7 -0
  579. package/server/.next/static/chunks/0unx038_2rfsp.js +1 -0
  580. package/server/.next/static/chunks/0y_0w1ek5fakj.js +1 -0
  581. package/server/.next/static/chunks/1483hxa9hair1.js +1 -0
  582. package/server/.next/static/chunks/{1gmof0n5nswkk.js → 18gwem_5y9wnt.js} +1 -1
  583. package/server/.next/static/chunks/1aoqsoecu-fy_.js +1 -0
  584. package/server/.next/static/chunks/1endj3d7bewa1.js +1 -0
  585. package/server/.next/static/chunks/1j18pg23fzwv_.js +1 -0
  586. package/server/.next/static/chunks/{0wlc502815llk.js → 1k01h6men2hvb.js} +1 -1
  587. package/server/.next/static/chunks/{158-i6phe17yl.js → 1mdaf7mwcfafr.js} +1 -1
  588. package/server/.next/static/chunks/{0li9-xjc40g51.js → 1o4mdgq5lu1g_.js} +1 -1
  589. package/server/.next/static/chunks/{3dokgd9nungcr.js → 1t2iu6ufyxecz.js} +1 -1
  590. package/server/.next/static/chunks/{0wtboeftyamyk.js → 1vi8tyc1ou2o3.js} +1 -1
  591. package/server/.next/static/chunks/1xy80z39ducub.js +1 -0
  592. package/server/.next/static/chunks/1yb4_s_96v9tf.js +1 -0
  593. package/server/.next/static/chunks/{2v14aqfx8wv9o.js → 2-8ra6gmaw_pb.js} +1 -1
  594. package/server/.next/static/chunks/{1-1hfgat2l_o9.js → 2cmw27buw9oce.js} +1 -1
  595. package/server/.next/static/chunks/{3f5sxz8awpdog.js → 2lv5qmgi8nm4h.js} +1 -1
  596. package/server/.next/static/chunks/2mj8z5a9dz7bh.js +1 -0
  597. package/server/.next/static/chunks/{1gb8jvw-g7fr7.js → 2n-h6_0i3mpxo.js} +1 -1
  598. package/server/.next/static/chunks/{2cjfogw85k3h-.js → 2pbnh717ldzfl.js} +1 -1
  599. package/server/.next/static/chunks/2qltilq3pn4ia.js +1 -0
  600. package/server/.next/static/chunks/{30fczssqw6xys.js → 2ufr23d_eyosj.js} +1 -1
  601. package/server/.next/static/chunks/2wqgz94tksucm.js +1 -0
  602. package/server/.next/static/chunks/{3tqh7fwtd_k_l.js → 2z6a725ntvlr6.js} +2 -2
  603. package/server/.next/static/chunks/{2fo6iuxb0ec7f.js → 2zdjxqgm-44u1.js} +1 -1
  604. package/server/.next/static/chunks/{026asl66kuq3f.js → 340ecjh1jzqjd.js} +15 -15
  605. package/server/.next/static/chunks/{2z1xy8l4s3usi.js → 3alfhqlczff2s.js} +1 -1
  606. package/server/.next/static/chunks/{36ureqoyz5e06.js → 3col9buetdxvh.js} +2 -2
  607. package/server/.next/static/chunks/{1zi37go-xtasg.js → 3o45i7xbzm0w-.js} +1 -1
  608. package/server/.next/static/chunks/{0cannaigw8lhi.js → 3o7se0ypyiqmz.js} +1 -1
  609. package/server/.next/static/chunks/{1c4fx4kipvnqz.js → 3oe302ug_esoe.js} +1 -1
  610. package/server/.next/static/chunks/3s7hj7g12rmuh.js +1 -0
  611. package/server/.next/static/chunks/{2fj4o7-stsvht.js → 3uujo4bht1tqo.js} +1 -1
  612. package/server/.next/static/chunks/3w445wy3mpp2f.js +1 -0
  613. package/server/.next/static/chunks/{2kmerzslng988.js → 3ypdfkwyovory.js} +1 -1
  614. package/server/.next/server/chunks/[root-of-the-server]__0grnl7ncqcjft._.js +0 -3
  615. package/server/.next/server/chunks/[root-of-the-server]__0m8w2-7618scn._.js +0 -3
  616. package/server/.next/server/chunks/[root-of-the-server]__0p_b0m2cstlrl._.js +0 -3
  617. package/server/.next/server/chunks/[root-of-the-server]__0zxjft8y2r575._.js +0 -3
  618. package/server/.next/server/chunks/[root-of-the-server]__114vjjaqb2wyv._.js +0 -3
  619. package/server/.next/server/chunks/[root-of-the-server]__12uyws-qe6wxs._.js +0 -3
  620. package/server/.next/server/chunks/[root-of-the-server]__139pgc0wpc7kg._.js +0 -3
  621. package/server/.next/server/chunks/[root-of-the-server]__1bwgi7nn5-hc3._.js +0 -3
  622. package/server/.next/server/chunks/[root-of-the-server]__1k8s02gwythps._.js +0 -3
  623. package/server/.next/server/chunks/[root-of-the-server]__1lf_lo1wqcbcg._.js +0 -3
  624. package/server/.next/server/chunks/[root-of-the-server]__1niiijc82bgoj._.js +0 -3
  625. package/server/.next/server/chunks/[root-of-the-server]__1on_3p53yn6fs._.js +0 -3
  626. package/server/.next/server/chunks/[root-of-the-server]__1q90luznbe9-l._.js +0 -3
  627. package/server/.next/server/chunks/[root-of-the-server]__1r15vmrh2r06l._.js +0 -3
  628. package/server/.next/server/chunks/[root-of-the-server]__1woerg3tb4ls3._.js +0 -3
  629. package/server/.next/server/chunks/[root-of-the-server]__1zaomh_4901_f._.js +0 -3
  630. package/server/.next/server/chunks/[root-of-the-server]__20lwsd6a4wnpe._.js +0 -3
  631. package/server/.next/server/chunks/_03bua_9n4apok._.js +0 -3
  632. package/server/.next/server/chunks/_08y82qdosn7ga._.js +0 -3
  633. package/server/.next/server/chunks/_1bcsmpznxhk9h._.js +0 -3
  634. package/server/.next/server/chunks/_1he3nioua8ee5._.js +0 -3
  635. package/server/.next/server/chunks/_1lpcbqj4uzrsh._.js +0 -3
  636. package/server/.next/server/chunks/src_0l-no1yc1_izn._.js +0 -3
  637. package/server/.next/server/chunks/src_156ewlek-4a4z._.js +0 -3
  638. package/server/.next/server/chunks/src_lib_0-ylqsh7whlj2._.js +0 -3
  639. package/server/.next/server/chunks/src_lib_0f0p6-l5vvduu._.js +0 -3
  640. package/server/.next/server/chunks/src_lib_15a3m-j_urkkp._.js +0 -3
  641. package/server/.next/server/chunks/ssr/[root-of-the-server]__06s-dfcfuperv._.js +0 -3
  642. package/server/.next/server/chunks/ssr/[root-of-the-server]__07or1m2vwon1m._.js +0 -3
  643. package/server/.next/server/chunks/ssr/[root-of-the-server]__0d9lwldljqtvx._.js +0 -3
  644. package/server/.next/server/chunks/ssr/[root-of-the-server]__0uklr553mp86_._.js +0 -3
  645. package/server/.next/server/chunks/ssr/[root-of-the-server]__1cykncw1_xcno._.js +0 -3
  646. package/server/.next/server/chunks/ssr/[root-of-the-server]__1ih2a_fbqu7ko._.js +0 -3
  647. package/server/.next/server/chunks/ssr/[root-of-the-server]__1j7_a902k_8es._.js +0 -3
  648. package/server/.next/server/chunks/ssr/[root-of-the-server]__1ofzjllv-b0o0._.js +0 -3
  649. package/server/.next/server/chunks/ssr/_040ixxsgfs0vi._.js +0 -3
  650. package/server/.next/server/chunks/ssr/_0ux6eo_w1x155._.js +0 -3
  651. package/server/.next/server/chunks/ssr/_12o9qqjoik4q4._.js +0 -3
  652. package/server/.next/server/chunks/ssr/_1k2q3yt1h6cfs._.js +0 -3
  653. package/server/.next/server/chunks/ssr/_1zhtvg8t3jtxe._.js +0 -3
  654. package/server/.next/server/chunks/ssr/_200p6me5_kp2j._.js +0 -3
  655. package/server/.next/server/chunks/ssr/src_00s82lfm2ga7-._.js +0 -3
  656. package/server/.next/server/chunks/ssr/src_13hsrg6rdvh-d._.js +0 -3
  657. package/server/.next/server/chunks/ssr/src_1xgsz_do2xpr2._.js +0 -3
  658. package/server/.next/server/chunks/ssr/src_components_shell_shell_tsx_1cpq-hbch_dvj._.js +0 -3
  659. package/server/.next/server/chunks/ssr/src_lib_0y40wht-o-oc2._.js +0 -3
  660. package/server/.next/static/chunks/03qto0oyf2r1n.js +0 -1
  661. package/server/.next/static/chunks/0c7pskzfstcdh.js +0 -1
  662. package/server/.next/static/chunks/0n_l4a3za5-q8.js +0 -1
  663. package/server/.next/static/chunks/0t96fqp1vsmrp.js +0 -1
  664. package/server/.next/static/chunks/1sm8wxvlpowwg.js +0 -1
  665. package/server/.next/static/chunks/1teh52nh5dujq.js +0 -1
  666. package/server/.next/static/chunks/1v4hl1z0y1npd.js +0 -1
  667. package/server/.next/static/chunks/1vh2psoqw3ddc.js +0 -1
  668. package/server/.next/static/chunks/1xau8pf40_upi.js +0 -7
  669. package/server/.next/static/chunks/1z2rcngn3-7i5.js +0 -1
  670. package/server/.next/static/chunks/210qrsqvmgaet.js +0 -1
  671. package/server/.next/static/chunks/2llric-1orr3y.js +0 -1
  672. package/server/.next/static/chunks/2wb9a1xth0yhf.js +0 -1
  673. package/server/.next/static/chunks/34gs6c2dsgtqy.js +0 -1
  674. package/server/.next/static/chunks/3ag6t3ta58rih.js +0 -1
  675. package/server/.next/static/chunks/3gkta99h3_5i2.js +0 -1
  676. /package/server/.next/static/{xCga6YpZus71dK3aq8Q4H → n3Kt7dFNHr9KDw7DgGz0m}/_buildManifest.js +0 -0
  677. /package/server/.next/static/{xCga6YpZus71dK3aq8Q4H → n3Kt7dFNHr9KDw7DgGz0m}/_clientMiddlewareManifest.js +0 -0
  678. /package/server/.next/static/{xCga6YpZus71dK3aq8Q4H → n3Kt7dFNHr9KDw7DgGz0m}/_ssgManifest.js +0 -0
@@ -1,3 +1,3 @@
1
- module.exports=[[726947,a=>{var b=a.i(907997),c=a.i(377269);let d=(0,c.f)("outline","download","Download",[["path",{d:"M4 17v2a2 2 0 0 0 2 2h12a2 2 0 0 0 2 -2v-2",key:"svg-0"}],["path",{d:"M7 11l5 5l5 -5",key:"svg-1"}],["path",{d:"M12 4l0 12",key:"svg-2"}]]),e=(0,c.f)("outline","key","Key",[["path",{d:"M16.555 3.843l3.602 3.602a2.877 2.877 0 0 1 0 4.069l-2.643 2.643a2.877 2.877 0 0 1 -4.069 0l-.301 -.301l-6.558 6.558a2 2 0 0 1 -1.239 .578l-.175 .008h-1.172a1 1 0 0 1 -.993 -.883l-.007 -.117v-1.172a2 2 0 0 1 .467 -1.284l.119 -.13l.414 -.414h2v-2h2v-2l2.144 -2.144l-.301 -.301a2.877 2.877 0 0 1 0 -4.069l2.643 -2.643a2.877 2.877 0 0 1 4.069 0",key:"svg-0"}],["path",{d:"M15 9h.01",key:"svg-1"}]]);var f=a.i(905246),g=a.i(395936);a.i(570396);var h=a.i(673727),i=a.i(803681),j=a.i(462820),k=a.i(492665),l=a.i(484458),m=a.i(263972),n=a.i(126357),o=a.i(139138);let p={name:"X-Client",in:"header",type:"string",required:!1,default:"api-explorer",example:"my-agent/1.0",description:"Names the caller as an agent (name/version) when the request doesn't say it otherwise. The API explorer sends api-explorer."},q=JSON.stringify({model:"gemini/gemini-3.8-flash",messages:[{role:"user",content:"Say hello in five words."}],stream:!1},null,2),r=JSON.stringify({generatedAt:"2026-10-13T00:41:12.000Z",apps:[{id:"orbit-blog",state:"down",uptime30d:98.71,database:null,lastDeploy:"abc1234 · failed 19:41",problems:[{kind:"monitor",where:"Monitor /",what:"HTTP 502",fix:"Open Logs (last hour) for errors; Check the latest deployment; roll back if it started after the deploy"}]},{id:"acme-shop",state:"degraded",uptime30d:99.9,database:"db-b",lastDeploy:"9f3c2a1 · 3 days ago",problems:[{kind:"database",where:"Database db-b",what:"Paused",fix:"Restore the database from its provider (Supabase restore)"}]}],monitors:{up:6,degraded:1,down:1,paused:0,items:[{app:"orbit-blog",path:"/",kind:"http",state:"down",lastStatus:502,latencyMs:311,uptime30d:98.71,lastCheckedAt:"2026-10-13T00:41:00.000Z"}]},alerts:{open:5,critical:1,items:[{title:"orbit-blog is down",severity:"critical",app:"orbit-blog",since:"2026-10-13T00:37:00.000Z",message:"HTTP 502 on /."}]},advisor:[{title:"Next.js 15 reaches end of life on 21 Oct 2026",app:"acme-shop",severity:"warning"}]},null,2),s=JSON.stringify({id:"orbit-blog",state:"down",uptime30d:98.71,database:null,lastDeploy:"abc1234 · failed 19:41",problems:[{kind:"monitor",where:"Monitor /",what:"HTTP 502",fix:"Open Logs (last hour) for errors; Check the latest deployment; roll back if it started after the deploy"}],monitors:[{path:"/",kind:"http",state:"down",lastStatus:502,latencyMs:311,uptime30d:98.71}]},null,2),t=JSON.stringify({app:"orbit-blog",notes:[{id:"5b0f8e0c-2f0a-4b53-9d54-6c1f0d6f6a11",severity:"warn",title:"Deploy failed twice today",body:"The last two production deploys failed at the build step. Roll back to the previous deployment, then fix the build and redeploy.",source:j.U.noteSource,model:"gemini-3.8-flash",createdAt:"2026-10-13T01:02:03.000Z"}]},null,2),u=[{id:"ai-chat",operationId:"createChatCompletion",tag:"AI",method:"post",path:"/api/v1/ai/chat/completions",access:"key",scope:"ai:invoke",scopeLabel:"ai:invoke",summary:"Chat completion (OpenAI-compatible)",description:"Forwards to the provider that owns the model (provider/model, or the default provider for a bare id), over its OpenAI-compatible endpoint. stream: true answers text/event-stream. Fields outside the OpenAI chat schema are rejected.",docsOnly:!1,params:[p],body:q,bodyDescription:"An OpenAI chat completion request.",response:{status:200,contentType:"application/json",description:"The provider's answer, with the model id as Watchbell names it.",example:JSON.stringify({id:"chatcmpl-wp-01JA8",object:"chat.completion",created:0x6ad01318,model:"gemini/gemini-3.8-flash",choices:[{index:0,finish_reason:"stop",message:{role:"assistant",content:"Hello there, nice to meet!"}}],usage:{prompt_tokens:9,completion_tokens:7,total_tokens:16}},null,2)},examples:[{name:"Hello in five words",body:q},{name:"Streaming (SSE)",body:JSON.stringify({model:"gemini/gemini-3.8-flash",messages:[{role:"user",content:"Count to five."}],stream:!0},null,2)},{name:j.U.advisorExample.name,body:JSON.stringify({model:"gemini/gemini-3.8-flash",messages:[{role:"system",content:j.U.advisorExample.system},{role:"user",content:j.U.advisorExample.user}],max_tokens:400},null,2)}]},{id:"ai-models",operationId:"listModels",tag:"AI",method:"get",path:"/api/v1/ai/models",access:"key",scope:"ai:invoke",scopeLabel:"ai:invoke",summary:"List enabled models",description:`The models turned on under AI Gateway › Models, in OpenAI's list format. Provider models are provider/model, owned_by watchbell, and work with /api/v1/ai/chat/completions. ${j.U.modelsAgSentence}A key pinned to a provider or model sees only that.`,docsOnly:!1,params:[p],response:{status:200,contentType:"application/json",description:"An OpenAI-style model list.",example:JSON.stringify({object:"list",data:[{id:"gemini/gemini-3.8-flash",object:"model",created:0,owned_by:"watchbell"},...j.U.agModelExamples]},null,2)}},{id:"ai-questions",operationId:"askQuestion",tag:"AI",method:"post",path:"/api/v1/ai/questions",access:"key",scope:"ai:invoke",scopeLabel:"ai:invoke",summary:"Ask a question about the console",description:`Asks a question about the console, answered from scrubbed console data (names aliased, no URLs, emails or keys). 1-2000 characters; text that looks like a key or token is refused with 400. Optional model from GET /api/v1/ai/models. Left out, or a provider model id (provider/model, e.g. test/prrojects): the owner's own provider answers in this request (a router combo can take ~25 s) and you get 201 with the answer; the question and answer are kept 7 days (GET pollUrl reads them back, the owner sees them under AI › Ask). A provider error answers with the gateway's message (400 model_not_enabled, 429, 502 upstream_error, 503 provider_not_connected) and nothing is stored.${j.U.askAgSentence}`,docsOnly:!1,params:[p],body:JSON.stringify({question:"Is anything about to run out this week?"},null,2),bodyDescription:"question: 1-2000 characters, plain text or markdown. model (optional): a provider model id or an ag/<id> from GET /api/v1/ai/models; left out = the default provider's default model.",response:{status:201,contentType:"application/json",description:"Answered now by the owner's provider. pollUrl reads the stored question back.",example:JSON.stringify({id:"8c1f2e0a-5b7d-4f3e-9a21-6d4c0b9e7f12",status:"answered",answer:"Nothing runs out this week. db-a is at 81% of its storage; plan a cleanup within a month.",answeredBy:{client:"watchpost",model:"test/prrojects"},askedAt:"2026-10-14T00:40:00.000Z",answeredAt:"2026-10-14T00:40:24.000Z",pollUrl:"https://ops.example.com/api/v1/ai/questions/8c1f2e0a-5b7d-4f3e-9a21-6d4c0b9e7f12"},null,2)},alsoResponses:[{status:202,contentType:"application/json",description:j.U.queued,example:JSON.stringify({id:"8c1f2e0a-5b7d-4f3e-9a21-6d4c0b9e7f12",status:"pending",askedAt:"2026-10-13T07:40:00.000Z",requestedModel:"ag/gemini-3.8-flash-high",pollUrl:"https://ops.example.com/api/v1/ai/questions/8c1f2e0a-5b7d-4f3e-9a21-6d4c0b9e7f12"},null,2)}]},{id:"ai-question",operationId:"getQuestion",tag:"AI",method:"get",path:"/api/v1/ai/questions/{id}",access:"key",scope:"ai:invoke",scopeLabel:"ai:invoke",summary:"A question and its answer",description:`One question this key asked with POST /api/v1/ai/questions, for 7 days. status is pending, answered or expired (no answer within 7 days). answer is the markdown answer (up to 8000 characters) from the owner's provider (answeredBy.client watchbell) or ${j.U.answeredByAgent}. Another key's or the owner's questions answer 404 like an unknown id. requestedModel is the ag/<id> asked for, or null (default).`,docsOnly:!1,params:[{name:"id",in:"path",type:"string",required:!0,example:"8c1f2e0a-5b7d-4f3e-9a21-6d4c0b9e7f12",description:"The id from POST /api/v1/ai/questions."},p],response:{status:200,contentType:"application/json",description:"The question; answer and answeredBy are null until it is answered.",example:JSON.stringify({id:"8c1f2e0a-5b7d-4f3e-9a21-6d4c0b9e7f12",status:"answered",question:"Is anything about to run out this week?",requestedModel:"ag/gemini-3.8-flash-high",answer:"Two things: the **db-b** Supabase project pauses on Friday without traffic, and the certificate of app-a renews automatically.",answeredBy:{client:j.U.answeredByClient,model:"gemini-3.8-flash-high"},askedAt:"2026-10-13T07:40:00.000Z",answeredAt:"2026-10-13T07:41:12.000Z"},null,2)}},{id:"status",operationId:"getStatus",tag:"Console",method:"get",path:"/api/v1/status",access:"key",scope:"read:status",scopeLabel:"read:status",summary:"Console summary",description:"Apps, monitors, open alerts and the advisor, scrubbed: database aliases, no URLs, emails or secrets.",docsOnly:!1,params:[{name:"include",in:"query",type:"string",required:!1,example:"apps,alerts",description:"Comma-separated sections to return: apps, monitors, alerts, advisor. Default: all four."},p],response:{status:200,contentType:"application/json",description:"The requested sections of the console snapshot.",example:r},examples:[{name:"Everything"},{name:"Only alerts",query:{include:"alerts"}}]},{id:"status-app",operationId:"getAppStatus",tag:"Console",method:"get",path:"/api/v1/status/apps/{app}",access:"key",scope:"read:status",scopeLabel:"read:status",summary:"One app with its Why problems",description:"Same shape as one entry of apps[], plus its monitors and the remedies. The app is its name or console id; 404 not_found when it isn't a watched app.",docsOnly:!1,params:[{name:"app",in:"path",type:"string",required:!0,example:"orbit-blog",description:"The app's name (as in apps[].id) or console id."},p],response:{status:200,contentType:"application/json",description:"One app.",example:s}},{id:"advice",operationId:"getAppAdvice",tag:"Console",method:"get",path:"/api/v1/advice",access:"key",scope:"read:status",scopeLabel:"read:status",summary:"Latest AI notes for one app",description:`The newest AI notes (up to 5, not dismissed) that ${j.U.adviceAgent} wrote about the app, scrubbed like /status. ${j.U.adviceFor} for the app by name or id; 404 not_found when it isn't a watched app.`,docsOnly:!1,params:[{name:"app",in:"query",type:"string",required:!0,example:"orbit-blog",description:"The app's name or console id."},p],response:{status:200,contentType:"application/json",description:"The app and its latest notes, newest first (an empty list when there are none).",example:t}},{id:"me",operationId:"getMe",tag:"Console",method:"get",path:"/api/v1/me",access:"key",scope:"any",scopeLabel:"any key",summary:"The calling key",description:"Name, prefix, scopes, rate limit and expiry of the key you send. Handy to test a key.",docsOnly:!1,params:[p],response:{status:200,contentType:"application/json",description:"The key's public details (never the key or its hash).",example:JSON.stringify({name:"laptop-agents",prefix:"wb_Lm9x",scopes:["ai:invoke","read:status"],rateLimitPerMin:30,expiresAt:null},null,2)}},{id:"openapi",operationId:"getOpenApi",tag:"Console",method:"get",path:"/api/v1/openapi.json",access:"keyOrOwner",scope:"any",scopeLabel:"any key or owner session",summary:"This OpenAPI 3.1 document",description:"The description every endpoint of this page is built from. Needs any valid key, or the owner's signed-in session (so the download button works).",docsOnly:!1,params:[p],response:{status:200,contentType:"application/json",description:"An OpenAPI 3.1 document.",example:JSON.stringify({openapi:"3.1.0",info:{title:"Watchbell API",version:"1.0.0"},paths:{"/api/v1/status":{get:{operationId:"getStatus"}}}},null,2)}},{id:"mcp",operationId:"mcpRpc",tag:"MCP",method:"post",path:"/api/v1/mcp",access:"key",scope:"read:status",scopeLabel:"read:status",summary:"MCP server (Streamable HTTP)",description:`JSON-RPC 2.0 for Model Context Protocol clients (${j.U.mcpClients}). initialize, tools/list and tools/call for the read-only tools; submit_ai_note needs write:notes. Answers JSON (no server-sent stream needed); GET and DELETE answer 405.`,docsOnly:!1,params:[{name:"Accept",in:"header",type:"string",required:!0,default:"application/json, text/event-stream",description:"Both types, as the MCP transport requires."},{name:"MCP-Protocol-Version",in:"header",type:"string",required:!1,default:"2025-06-18",description:"The protocol revision the client speaks."},p],body:JSON.stringify({jsonrpc:"2.0",id:1,method:"tools/list"},null,2),bodyDescription:"One JSON-RPC 2.0 message (batches are rejected).",response:{status:200,contentType:"application/json",description:"The JSON-RPC response.",example:JSON.stringify({jsonrpc:"2.0",id:1,result:{tools:[{name:"list_apps",description:"Every app with its state …"},{name:"get_app",description:"One app with its Why problems …"}]}},null,2)},examples:[{name:"tools/list",body:JSON.stringify({jsonrpc:"2.0",id:1,method:"tools/list"},null,2)},{name:"tools/call get_app",body:JSON.stringify({jsonrpc:"2.0",id:2,method:"tools/call",params:{name:"get_app",arguments:{app:"orbit-blog"}}},null,2)},{name:"initialize",body:JSON.stringify({jsonrpc:"2.0",id:0,method:"initialize",params:{protocolVersion:"2025-06-18",capabilities:{},clientInfo:{name:"api-explorer",version:"1.0"}}},null,2)}]},{id:"health",operationId:"getHealth",tag:"Health",method:"get",path:"/api/health",access:"none",scope:null,scopeLabel:"no key",summary:"Liveness check",description:"Answers 200 while the console is up. Public, no database read; point an uptime checker at it.",docsOnly:!1,params:[],response:{status:200,contentType:"application/json",description:"Always ok while the console answers.",example:JSON.stringify({ok:!0,service:"watchbell"},null,2)}},{id:"ping",operationId:"pingHeartbeat",tag:"Heartbeats",method:"post",path:"/api/ping/{token}",access:"token",scope:null,scopeLabel:"heartbeat token",summary:"Heartbeat ping (GET and HEAD work too)",description:"A job tells Watchbell it ran. The token is shown once when the heartbeat monitor is created; Watchbell keeps only its hash, so this page can't fill it in. Paste it below to try a ping: it is used for this request only and never stored. A real ping changes the monitor's state.",docsOnly:!1,params:[{name:"token",in:"path",type:"string",required:!0,secret:!0,example:"hb_0123456789abcdef0123456789abcdef",description:"The heartbeat token (hb_ and 32 hex characters)."}],response:{status:200,contentType:"text/plain",description:"OK; 404 for an unknown token, 429 when pinged too often.",example:"OK"}},{id:"ping-start",operationId:"pingHeartbeatStart",tag:"Heartbeats",method:"post",path:"/api/ping/{token}/start",access:"token",scope:null,scopeLabel:"heartbeat token",summary:"Heartbeat: the job started",description:"Marks the start of a run. If no OK ping follows within the grace time the monitor is down. Same token rules as /api/ping/{token}.",docsOnly:!1,params:[{name:"token",in:"path",type:"string",required:!0,secret:!0,example:"hb_0123456789abcdef0123456789abcdef",description:"The heartbeat token."}],response:{status:200,contentType:"text/plain",description:"OK.",example:"OK"}},{id:"ping-fail",operationId:"pingHeartbeatFail",tag:"Heartbeats",method:"post",path:"/api/ping/{token}/fail",access:"token",scope:null,scopeLabel:"heartbeat token",summary:"Heartbeat: the job failed",description:"Reports a failure; the monitor goes down at once. Same token rules as /api/ping/{token}.",docsOnly:!1,params:[{name:"token",in:"path",type:"string",required:!0,secret:!0,example:"hb_0123456789abcdef0123456789abcdef",description:"The heartbeat token."}],response:{status:200,contentType:"text/plain",description:"OK.",example:"OK"}},{id:"collect",operationId:"runCollector",tag:"Scheduler",method:"post",path:"/api/collect",access:"secret",scope:null,scopeLabel:"scheduler secret",summary:"Collector run",description:"Called every minute by cron-job.org with Authorization: Bearer <COLLECTOR_SECRET>. Docs only: Try it would need the secret.",docsOnly:!0,bearerEnv:"COLLECTOR_SECRET",params:[],response:{status:200,contentType:"application/json",description:"The run's summary.",example:JSON.stringify({ok:!0,ran:["monitors","deployments"],errors:[]},null,2)}},{id:"watchdog",operationId:"runWatchdog",tag:"Scheduler",method:"post",path:"/api/watchdog",access:"secret",scope:null,scopeLabel:"QStash signature",summary:"Watchdog",description:"Called by Upstash QStash every 5 minutes with an Upstash-Signature header. Docs only.",docsOnly:!0,params:[],response:{status:200,contentType:"application/json",description:"Whether the collector looked stale.",example:JSON.stringify({stale:!1},null,2)}},{id:"daily",operationId:"runDaily",tag:"Scheduler",method:"get",path:"/api/daily",access:"secret",scope:null,scopeLabel:"cron secret",summary:"Daily job",description:"Vercel Cron at 03:00 WIB with Authorization: Bearer <CRON_SECRET>. Docs only.",docsOnly:!0,bearerEnv:"CRON_SECRET",params:[],response:{status:200,contentType:"application/json",description:"The job's summary.",example:JSON.stringify({ok:!0,errors:[]},null,2)}}],v=["AI","Console","MCP","Health","Heartbeats","Scheduler"],w={get:"bg-teal-soft text-teal",post:"bg-brand-soft text-brand",head:"bg-gray-soft text-ink-soft"};function x({method:a,className:c}){return(0,b.jsx)("span",{className:(0,o.f)("inline-block min-w-[46px] rounded-[4px] px-[5px] py-px text-center font-mono text-[11px] font-medium",w[a],c),children:a.toUpperCase()})}function y({activeId:a}){return(0,b.jsx)("nav",{"aria-label":"Endpoints",className:"pb-2 pt-1",children:v.map(c=>{let d=u.filter(a=>a.tag===c);return d.length?(0,b.jsxs)("div",{children:[(0,b.jsx)("div",{className:"px-3 pb-1 pt-2.5 text-[11.5px] uppercase tracking-[.04em] text-ink-faint",children:c}),d.map(c=>(0,b.jsxs)(g.default,{href:`/api-docs/${c.id}`,title:c.summary,"aria-current":c.id===a?"page":void 0,className:(0,o.f)("flex items-center gap-2 px-3 py-[5px] font-mono text-[12.5px] text-ink hover:bg-hover hover:no-underline",c.id===a&&"bg-nav-active text-nav-active-text hover:bg-nav-active"),children:[(0,b.jsx)(x,{method:c.method}),(0,b.jsx)("span",{className:"min-w-0 overflow-hidden text-ellipsis whitespace-nowrap",children:c.path.startsWith("/api/v1")?c.path.slice(7):c.path}),c.docsOnly&&(0,b.jsx)(n.f,{size:14,"aria-label":"Docs only",className:"ml-auto shrink-0 text-ink-faint"})]},c.id))]},c):null})})}var z=a.i(18766);let A={defaultModel:null,options:[]};var B=a.i(208683),C=a.i(75148),D=a.i(109307),E=a.i(68381),F=a.i(214758);async function G(){let a=async()=>{try{let a=new Date,{report:b,prefs:c,allowed:d}=await (0,l.y)(a);return(0,l.U)(b,a)?{connected:!0,ids:(0,l._)(b,c,d)}:{connected:!1,ids:[]}}catch{return console.warn(j.I.modelsReadFailed),{connected:!1,ids:[]}}};try{let[{rows:b,defaultModel:c},d]=await Promise.all([(0,m.Y)(),a()]);return function(a){let b=[...new Set(a.rows.filter(a=>a.enabled&&a.providerEnabled&&(0,B.W)({upstream:a.upstream,manual:a.manual},a.providerKind)).map(a=>a.publicId))],c=a.defaultModel&&b.includes(a.defaultModel)?a.defaultModel:b[0]??null,d=(c?[c,...b.filter(a=>a!==c)]:b).map(a=>({id:a,isDefault:a===c,async:!1}));if(a.ag.connected)for(let b of new Set(a.ag.ids))d.push({id:`${l.T}${b}`,isDefault:!1,async:!0});return{defaultModel:c,options:d}}({rows:b,defaultModel:c,ag:d})}catch{return console.warn("reading the models for the API explorer failed"),A}}async function H({params:a}){let c,j=await (0,D.B)("owner");if(!j.ok)return(0,b.jsx)(C.f,{role:j.member.role});let{op:l}=await a;l&&l.length>1&&(0,h.notFound)();let m=l?.length?(c=l[0])?u.find(a=>a.id===c):void 0:u[0];m||(0,h.notFound)();let[n,o]=await Promise.all([(0,f.headers)().then(a=>(function(a,b,c=!1){let d=(a.get("x-forwarded-host")??a.get("host")??"").split(",")[0].trim();if(!/^[a-z0-9.-]+(:\d{1,5})?$/i.test(d))return b.replace(/\/+$/,"");let e=(a.get("x-forwarded-proto")??"").split(",")[0].trim().toLowerCase(),f="http"===e||"https"===e?e:c&&/^(localhost|127\.0\.0\.1)(:|$)/.test(d)?"http":"https";return`${f}://${d}`})(a,function(){try{return(0,k.f)().SITE_URL}catch{return(0,E.F)()?F.L:F.l}}())),G()]);return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(i.L,{crumbs:[{label:"AI & API"},{label:"API explorer",href:"/api-docs"},{label:m.path}],title:"API explorer",sub:"Every endpoint from one OpenAPI 3.1 file. Try a request with a console API key; it runs against this deployment with that key's scopes and rate limit.",actions:(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("a",{href:"/api/v1/openapi.json",download:"openapi.json",className:(0,i.R)(),children:[(0,b.jsx)(d,{size:16,"aria-hidden":!0}),"openapi.json"]}),(0,b.jsxs)(g.default,{href:"/ai/keys",className:(0,i.R)(),children:[(0,b.jsx)(e,{size:16,"aria-hidden":!0}),"API keys"]})]})}),(0,b.jsxs)("div",{className:"mt-4 grid grid-cols-1 items-start gap-4 min-[960px]:grid-cols-[268px_minmax(0,1fr)]",children:[(0,b.jsx)(i.N,{flush:!0,children:(0,b.jsx)(y,{activeId:m.id})}),(0,b.jsx)(z.Explorer,{opId:m.id,origin:n,models:o},m.id)]})]})}a.s(["default",0,H],726947)},384125,a=>{let b=(0,a.i(211857).registerClientReference)(function(){throw Error("Attempted to call Explorer() from the server but Explorer is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/private/explorer/explorer.tsx","Explorer");a.s(["Explorer",0,b])},18766,a=>{var b=a.i(384125);a.n(b)}],307776,function(a){a.n(a.i(726947))}];
1
+ module.exports=[[726947,a=>{var b=a.i(907997),c=a.i(377269);let d=(0,c.f)("outline","download","Download",[["path",{d:"M4 17v2a2 2 0 0 0 2 2h12a2 2 0 0 0 2 -2v-2",key:"svg-0"}],["path",{d:"M7 11l5 5l5 -5",key:"svg-1"}],["path",{d:"M12 4l0 12",key:"svg-2"}]]),e=(0,c.f)("outline","key","Key",[["path",{d:"M16.555 3.843l3.602 3.602a2.877 2.877 0 0 1 0 4.069l-2.643 2.643a2.877 2.877 0 0 1 -4.069 0l-.301 -.301l-6.558 6.558a2 2 0 0 1 -1.239 .578l-.175 .008h-1.172a1 1 0 0 1 -.993 -.883l-.007 -.117v-1.172a2 2 0 0 1 .467 -1.284l.119 -.13l.414 -.414h2v-2h2v-2l2.144 -2.144l-.301 -.301a2.877 2.877 0 0 1 0 -4.069l2.643 -2.643a2.877 2.877 0 0 1 4.069 0",key:"svg-0"}],["path",{d:"M15 9h.01",key:"svg-1"}]]);var f=a.i(905246),g=a.i(395936);a.i(570396);var h=a.i(673727),i=a.i(803681),j=a.i(462820),k=a.i(492665),l=a.i(484458),m=a.i(263972),n=a.i(126357),o=a.i(139138),p=a.i(245710);let q={name:"X-Client",in:"header",type:"string",required:!1,default:"api-explorer",example:"my-agent/1.0",description:"Names the caller as an agent (name/version) when the request doesn't say it otherwise. The API explorer sends api-explorer."},r=JSON.stringify({model:"gemini/gemini-3.8-flash",messages:[{role:"user",content:"Say hello in five words."}],stream:!1},null,2),s=JSON.stringify({generatedAt:"2026-10-13T00:41:12.000Z",apps:[{id:"orbit-blog",state:"down",uptime30d:98.71,database:null,lastDeploy:"abc1234 · failed 19:41",problems:[{kind:"monitor",where:"Monitor /",what:"HTTP 502",fix:"Open Logs (last hour) for errors; Check the latest deployment; roll back if it started after the deploy"}]},{id:"acme-shop",state:"degraded",uptime30d:99.9,database:"db-b",lastDeploy:"9f3c2a1 · 3 days ago",problems:[{kind:"database",where:"Database db-b",what:"Paused",fix:"Restore the database from its provider (Supabase restore)"}]}],monitors:{up:6,degraded:1,down:1,paused:0,items:[{app:"orbit-blog",path:"/",kind:"http",state:"down",lastStatus:502,latencyMs:311,uptime30d:98.71,lastCheckedAt:"2026-10-13T00:41:00.000Z"}]},alerts:{open:5,critical:1,items:[{title:"orbit-blog is down",severity:"critical",app:"orbit-blog",since:"2026-10-13T00:37:00.000Z",message:"HTTP 502 on /."}]},advisor:[{title:"Next.js 15 reaches end of life on 21 Oct 2026",app:"acme-shop",severity:"warning"}]},null,2),t=JSON.stringify({id:"orbit-blog",state:"down",uptime30d:98.71,database:null,lastDeploy:"abc1234 · failed 19:41",problems:[{kind:"monitor",where:"Monitor /",what:"HTTP 502",fix:"Open Logs (last hour) for errors; Check the latest deployment; roll back if it started after the deploy"}],monitors:[{path:"/",kind:"http",state:"down",lastStatus:502,latencyMs:311,uptime30d:98.71}]},null,2),u=JSON.stringify({app:"orbit-blog",notes:[{id:"5b0f8e0c-2f0a-4b53-9d54-6c1f0d6f6a11",severity:"warn",title:"Deploy failed twice today",body:"The last two production deploys failed at the build step. Roll back to the previous deployment, then fix the build and redeploy.",source:j.U.noteSource,model:"gemini-3.8-flash",createdAt:"2026-10-13T01:02:03.000Z"}]},null,2),v=[{id:"ai-chat",operationId:"createChatCompletion",tag:"AI",method:"post",path:"/api/v1/ai/chat/completions",access:"key",scope:"ai:invoke",scopeLabel:"ai:invoke",summary:"Chat completion (OpenAI-compatible)",description:"Forwards to the provider that owns the model (provider/model, or the default provider for a bare id), over its OpenAI-compatible endpoint. stream: true answers text/event-stream. Fields outside the OpenAI chat schema are rejected.",docsOnly:!1,params:[q],body:r,bodyDescription:"An OpenAI chat completion request.",response:{status:200,contentType:"application/json",description:"The provider's answer, with the model id as Watchbell names it.",example:JSON.stringify({id:"chatcmpl-wp-01JA8",object:"chat.completion",created:0x6ad01318,model:"gemini/gemini-3.8-flash",choices:[{index:0,finish_reason:"stop",message:{role:"assistant",content:"Hello there, nice to meet!"}}],usage:{prompt_tokens:9,completion_tokens:7,total_tokens:16}},null,2)},examples:[{name:"Hello in five words",body:r},{name:"Streaming (SSE)",body:JSON.stringify({model:"gemini/gemini-3.8-flash",messages:[{role:"user",content:"Count to five."}],stream:!0},null,2)},{name:j.U.advisorExample.name,body:JSON.stringify({model:"gemini/gemini-3.8-flash",messages:[{role:"system",content:j.U.advisorExample.system},{role:"user",content:j.U.advisorExample.user}],max_tokens:400},null,2)}]},{id:"ai-models",operationId:"listModels",tag:"AI",method:"get",path:"/api/v1/ai/models",access:"key",scope:"ai:invoke",scopeLabel:"ai:invoke",summary:"List enabled models",description:`The models turned on under AI Gateway › Models, in OpenAI's list format. Provider models are provider/model, owned_by watchbell, and work with /api/v1/ai/chat/completions. ${j.U.modelsAgSentence}A key pinned to a provider or model sees only that.`,docsOnly:!1,params:[q],response:{status:200,contentType:"application/json",description:"An OpenAI-style model list.",example:JSON.stringify({object:"list",data:[{id:"gemini/gemini-3.8-flash",object:"model",created:0,owned_by:"watchbell"},...j.U.agModelExamples]},null,2)}},{id:"ai-questions",operationId:"askQuestion",tag:"AI",method:"post",path:"/api/v1/ai/questions",access:"key",scope:"ai:invoke",scopeLabel:"ai:invoke",summary:"Ask a question about the console",description:`Asks a question about the console, answered from scrubbed console data (names aliased, no URLs, emails or keys). 1-2000 characters; text that looks like a key or token is refused with 400. Optional model from GET /api/v1/ai/models. Left out, or a provider model id (provider/model, e.g. test/prrojects): the owner's own provider answers in this request (a router combo can take ~25 s) and you get 201 with the answer; the question and answer are kept 7 days (GET pollUrl reads them back, the owner sees them under AI › Ask). A provider error answers with the gateway's message (400 model_not_enabled, 429, 502 upstream_error, 503 provider_not_connected) and nothing is stored.${j.U.askAgSentence}`,docsOnly:!1,params:[q],body:JSON.stringify({question:"Is anything about to run out this week?"},null,2),bodyDescription:"question: 1-2000 characters, plain text or markdown. model (optional): a provider model id or an ag/<id> from GET /api/v1/ai/models; left out = the default provider's default model.",response:{status:201,contentType:"application/json",description:"Answered now by the owner's provider. pollUrl reads the stored question back.",example:JSON.stringify({id:"8c1f2e0a-5b7d-4f3e-9a21-6d4c0b9e7f12",status:"answered",answer:"Nothing runs out this week. db-a is at 81% of its storage; plan a cleanup within a month.",answeredBy:{client:"watchpost",model:"test/prrojects"},askedAt:"2026-10-14T00:40:00.000Z",answeredAt:"2026-10-14T00:40:24.000Z",pollUrl:"https://ops.example.com/api/v1/ai/questions/8c1f2e0a-5b7d-4f3e-9a21-6d4c0b9e7f12"},null,2)},alsoResponses:[{status:202,contentType:"application/json",description:j.U.queued,example:JSON.stringify({id:"8c1f2e0a-5b7d-4f3e-9a21-6d4c0b9e7f12",status:"pending",askedAt:"2026-10-13T07:40:00.000Z",requestedModel:"ag/gemini-3.8-flash-high",pollUrl:"https://ops.example.com/api/v1/ai/questions/8c1f2e0a-5b7d-4f3e-9a21-6d4c0b9e7f12"},null,2)}]},{id:"ai-question",operationId:"getQuestion",tag:"AI",method:"get",path:"/api/v1/ai/questions/{id}",access:"key",scope:"ai:invoke",scopeLabel:"ai:invoke",summary:"A question and its answer",description:`One question this key asked with POST /api/v1/ai/questions, for 7 days. status is pending, answered or expired (no answer within 7 days). answer is the markdown answer (up to 8000 characters) from the owner's provider (answeredBy.client watchbell) or ${j.U.answeredByAgent}. Another key's or the owner's questions answer 404 like an unknown id. requestedModel is the ag/<id> asked for, or null (default).`,docsOnly:!1,params:[{name:"id",in:"path",type:"string",required:!0,example:"8c1f2e0a-5b7d-4f3e-9a21-6d4c0b9e7f12",description:"The id from POST /api/v1/ai/questions."},q],response:{status:200,contentType:"application/json",description:"The question; answer and answeredBy are null until it is answered.",example:JSON.stringify({id:"8c1f2e0a-5b7d-4f3e-9a21-6d4c0b9e7f12",status:"answered",question:"Is anything about to run out this week?",requestedModel:"ag/gemini-3.8-flash-high",answer:"Two things: the **db-b** Supabase project pauses on Friday without traffic, and the certificate of app-a renews automatically.",answeredBy:{client:j.U.answeredByClient,model:"gemini-3.8-flash-high"},askedAt:"2026-10-13T07:40:00.000Z",answeredAt:"2026-10-13T07:41:12.000Z"},null,2)}},{id:"status",operationId:"getStatus",tag:"Console",method:"get",path:"/api/v1/status",access:"key",scope:"read:status",scopeLabel:"read:status",summary:"Console summary",description:"Apps, monitors, open alerts and the advisor, scrubbed: database aliases, no URLs, emails or secrets.",docsOnly:!1,params:[{name:"include",in:"query",type:"string",required:!1,example:"apps,alerts",description:"Comma-separated sections to return: apps, monitors, alerts, advisor. Default: all four."},q],response:{status:200,contentType:"application/json",description:"The requested sections of the console snapshot.",example:s},examples:[{name:"Everything"},{name:"Only alerts",query:{include:"alerts"}}]},{id:"status-app",operationId:"getAppStatus",tag:"Console",method:"get",path:"/api/v1/status/apps/{app}",access:"key",scope:"read:status",scopeLabel:"read:status",summary:"One app with its Why problems",description:"Same shape as one entry of apps[], plus its monitors and the remedies. The app is its name or console id; 404 not_found when it isn't a watched app.",docsOnly:!1,params:[{name:"app",in:"path",type:"string",required:!0,example:"orbit-blog",description:"The app's name (as in apps[].id) or console id."},q],response:{status:200,contentType:"application/json",description:"One app.",example:t}},{id:"advice",operationId:"getAppAdvice",tag:"Console",method:"get",path:"/api/v1/advice",access:"key",scope:"read:status",scopeLabel:"read:status",summary:"Latest AI notes for one app",description:`The newest AI notes (up to 5, not dismissed) that ${j.U.adviceAgent} wrote about the app, scrubbed like /status. ${j.U.adviceFor} for the app by name or id; 404 not_found when it isn't a watched app.`,docsOnly:!1,params:[{name:"app",in:"query",type:"string",required:!0,example:"orbit-blog",description:"The app's name or console id."},q],response:{status:200,contentType:"application/json",description:"The app and its latest notes, newest first (an empty list when there are none).",example:u}},{id:"me",operationId:"getMe",tag:"Console",method:"get",path:"/api/v1/me",access:"key",scope:"any",scopeLabel:"any key",summary:"The calling key",description:"Name, prefix, scopes, rate limit and expiry of the key you send. Handy to test a key.",docsOnly:!1,params:[q],response:{status:200,contentType:"application/json",description:"The key's public details (never the key or its hash).",example:JSON.stringify({name:"laptop-agents",prefix:"wb_Lm9x",scopes:["ai:invoke","read:status"],rateLimitPerMin:30,expiresAt:null},null,2)}},{id:"openapi",operationId:"getOpenApi",tag:"Console",method:"get",path:"/api/v1/openapi.json",access:"keyOrOwner",scope:"any",scopeLabel:"any key or owner session",summary:"This OpenAPI 3.1 document",description:"The description every endpoint of this page is built from. Needs any valid key, or the owner's signed-in session (so the download button works).",docsOnly:!1,params:[q],response:{status:200,contentType:"application/json",description:"An OpenAPI 3.1 document.",example:JSON.stringify({openapi:"3.1.0",info:{title:"Watchbell API",version:"1.0.0"},paths:{"/api/v1/status":{get:{operationId:"getStatus"}}}},null,2)}},{id:"mcp",operationId:"mcpRpc",tag:"MCP",method:"post",path:"/api/v1/mcp",access:"key",scope:"read:status",scopeLabel:"read:status",summary:"MCP server (Streamable HTTP)",description:`JSON-RPC 2.0 for Model Context Protocol clients (${j.U.mcpClients}). initialize, tools/list and tools/call for the read-only tools; submit_ai_note needs write:notes. Answers JSON (no server-sent stream needed); GET and DELETE answer 405.`,docsOnly:!1,params:[{name:"Accept",in:"header",type:"string",required:!0,default:"application/json, text/event-stream",description:"Both types, as the MCP transport requires."},{name:"MCP-Protocol-Version",in:"header",type:"string",required:!1,default:"2025-06-18",description:"The protocol revision the client speaks."},q],body:JSON.stringify({jsonrpc:"2.0",id:1,method:"tools/list"},null,2),bodyDescription:"One JSON-RPC 2.0 message (batches are rejected).",response:{status:200,contentType:"application/json",description:"The JSON-RPC response.",example:JSON.stringify({jsonrpc:"2.0",id:1,result:{tools:[{name:"list_apps",description:"Every app with its state …"},{name:"get_app",description:"One app with its Why problems …"}]}},null,2)},examples:[{name:"tools/list",body:JSON.stringify({jsonrpc:"2.0",id:1,method:"tools/list"},null,2)},{name:"tools/call get_app",body:JSON.stringify({jsonrpc:"2.0",id:2,method:"tools/call",params:{name:"get_app",arguments:{app:"orbit-blog"}}},null,2)},{name:"initialize",body:JSON.stringify({jsonrpc:"2.0",id:0,method:"initialize",params:{protocolVersion:"2025-06-18",capabilities:{},clientInfo:{name:"api-explorer",version:"1.0"}}},null,2)}]},{id:"health",operationId:"getHealth",tag:"Health",method:"get",path:"/api/health",access:"none",scope:null,scopeLabel:"no key",summary:"Liveness check",description:"Answers 200 while the console is up. Public, no database read; point an uptime checker at it.",docsOnly:!1,params:[],response:{status:200,contentType:"application/json",description:"Always ok while the console answers.",example:JSON.stringify({ok:!0,service:"watchbell"},null,2)}},{id:"ping",operationId:"pingHeartbeat",tag:"Heartbeats",method:"post",path:"/api/ping/{token}",access:"token",scope:null,scopeLabel:"heartbeat token",summary:"Heartbeat ping (GET and HEAD work too)",description:"A job tells Watchbell it ran. The token is shown once when the heartbeat monitor is created; Watchbell keeps only its hash, so this page can't fill it in. Paste it below to try a ping: it is used for this request only and never stored. A real ping changes the monitor's state.",docsOnly:!1,params:[{name:"token",in:"path",type:"string",required:!0,secret:!0,example:"hb_0123456789abcdef0123456789abcdef",description:"The heartbeat token (hb_ and 32 hex characters)."}],response:{status:200,contentType:"text/plain",description:"OK; 404 for an unknown token, 429 when pinged too often.",example:"OK"}},{id:"ping-start",operationId:"pingHeartbeatStart",tag:"Heartbeats",method:"post",path:"/api/ping/{token}/start",access:"token",scope:null,scopeLabel:"heartbeat token",summary:"Heartbeat: the job started",description:"Marks the start of a run. If no OK ping follows within the grace time the monitor is down. Same token rules as /api/ping/{token}.",docsOnly:!1,params:[{name:"token",in:"path",type:"string",required:!0,secret:!0,example:"hb_0123456789abcdef0123456789abcdef",description:"The heartbeat token."}],response:{status:200,contentType:"text/plain",description:"OK.",example:"OK"}},{id:"ping-fail",operationId:"pingHeartbeatFail",tag:"Heartbeats",method:"post",path:"/api/ping/{token}/fail",access:"token",scope:null,scopeLabel:"heartbeat token",summary:"Heartbeat: the job failed",description:"Reports a failure; the monitor goes down at once. Same token rules as /api/ping/{token}.",docsOnly:!1,params:[{name:"token",in:"path",type:"string",required:!0,secret:!0,example:"hb_0123456789abcdef0123456789abcdef",description:"The heartbeat token."}],response:{status:200,contentType:"text/plain",description:"OK.",example:"OK"}},{id:"collect",operationId:"runCollector",tag:"Scheduler",method:"post",path:"/api/collect",access:"secret",scope:null,scopeLabel:"scheduler secret",summary:"Collector run",description:"Called every minute by cron-job.org with Authorization: Bearer <COLLECTOR_SECRET>. Docs only: Try it would need the secret.",docsOnly:!0,bearerEnv:"COLLECTOR_SECRET",params:[],response:{status:200,contentType:"application/json",description:"The run's summary.",example:JSON.stringify({ok:!0,ran:["monitors","deployments"],errors:[]},null,2)}},{id:"watchdog",operationId:"runWatchdog",tag:"Scheduler",method:"post",path:"/api/watchdog",access:"secret",scope:null,scopeLabel:"QStash signature",summary:"Watchdog",description:"Called by Upstash QStash every 5 minutes with an Upstash-Signature header. Docs only.",docsOnly:!0,params:[],response:{status:200,contentType:"application/json",description:"Whether the collector looked stale.",example:JSON.stringify({stale:!1},null,2)}},{id:"daily",operationId:"runDaily",tag:"Scheduler",method:"get",path:"/api/daily",access:"secret",scope:null,scopeLabel:"cron secret",summary:"Daily job",get description(){return`Vercel Cron at ${(0,p.Q)()} with Authorization: Bearer <CRON_SECRET>. Docs only.`},docsOnly:!0,bearerEnv:"CRON_SECRET",params:[],response:{status:200,contentType:"application/json",description:"The job's summary.",example:JSON.stringify({ok:!0,errors:[]},null,2)}}],w=["AI","Console","MCP","Health","Heartbeats","Scheduler"],x={get:"bg-teal-soft text-teal",post:"bg-brand-soft text-brand",head:"bg-gray-soft text-ink-soft"};function y({method:a,className:c}){return(0,b.jsx)("span",{className:(0,o.f)("inline-block min-w-[46px] rounded-[4px] px-[5px] py-px text-center font-mono text-[11px] font-medium",x[a],c),children:a.toUpperCase()})}function z({activeId:a}){return(0,b.jsx)("nav",{"aria-label":"Endpoints",className:"pb-2 pt-1",children:w.map(c=>{let d=v.filter(a=>a.tag===c);return d.length?(0,b.jsxs)("div",{children:[(0,b.jsx)("div",{className:"px-3 pb-1 pt-2.5 text-[11.5px] uppercase tracking-[.04em] text-ink-faint",children:c}),d.map(c=>(0,b.jsxs)(g.default,{href:`/api-docs/${c.id}`,title:c.summary,"aria-current":c.id===a?"page":void 0,className:(0,o.f)("flex items-center gap-2 px-3 py-[5px] font-mono text-[12.5px] text-ink hover:bg-hover hover:no-underline",c.id===a&&"bg-nav-active text-nav-active-text hover:bg-nav-active"),children:[(0,b.jsx)(y,{method:c.method}),(0,b.jsx)("span",{className:"min-w-0 overflow-hidden text-ellipsis whitespace-nowrap",children:c.path.startsWith("/api/v1")?c.path.slice(7):c.path}),c.docsOnly&&(0,b.jsx)(n.f,{size:14,"aria-label":"Docs only",className:"ml-auto shrink-0 text-ink-faint"})]},c.id))]},c):null})})}var A=a.i(18766);let B={defaultModel:null,options:[]};var C=a.i(208683),D=a.i(75148),E=a.i(109307),F=a.i(68381),G=a.i(214758);async function H(){let a=async()=>{try{let a=new Date,{report:b,prefs:c,allowed:d}=await (0,l.y)(a);return(0,l.U)(b,a)?{connected:!0,ids:(0,l._)(b,c,d)}:{connected:!1,ids:[]}}catch{return console.warn(j.I.modelsReadFailed),{connected:!1,ids:[]}}};try{let[{rows:b,defaultModel:c},d]=await Promise.all([(0,m.Y)(),a()]);return function(a){let b=[...new Set(a.rows.filter(a=>a.enabled&&a.providerEnabled&&(0,C.W)({upstream:a.upstream,manual:a.manual},a.providerKind)).map(a=>a.publicId))],c=a.defaultModel&&b.includes(a.defaultModel)?a.defaultModel:b[0]??null,d=(c?[c,...b.filter(a=>a!==c)]:b).map(a=>({id:a,isDefault:a===c,async:!1}));if(a.ag.connected)for(let b of new Set(a.ag.ids))d.push({id:`${l.T}${b}`,isDefault:!1,async:!0});return{defaultModel:c,options:d}}({rows:b,defaultModel:c,ag:d})}catch{return console.warn("reading the models for the API explorer failed"),B}}async function I({params:a}){let c,j=await (0,E.B)("owner");if(!j.ok)return(0,b.jsx)(D.f,{role:j.member.role});let{op:l}=await a;l&&l.length>1&&(0,h.notFound)();let m=l?.length?(c=l[0])?v.find(a=>a.id===c):void 0:v[0];m||(0,h.notFound)();let[n,o]=await Promise.all([(0,f.headers)().then(a=>(function(a,b,c=!1){let d=(a.get("x-forwarded-host")??a.get("host")??"").split(",")[0].trim();if(!/^[a-z0-9.-]+(:\d{1,5})?$/i.test(d))return b.replace(/\/+$/,"");let e=(a.get("x-forwarded-proto")??"").split(",")[0].trim().toLowerCase(),f="http"===e||"https"===e?e:c&&/^(localhost|127\.0\.0\.1)(:|$)/.test(d)?"http":"https";return`${f}://${d}`})(a,function(){try{return(0,k.f)().SITE_URL}catch{return(0,F.F)()?G.L:G.l}}())),H()]);return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(i.L,{crumbs:[{label:"AI & API"},{label:"API explorer",href:"/api-docs"},{label:m.path}],title:"API explorer",sub:"Every endpoint from one OpenAPI 3.1 file. Try a request with a console API key; it runs against this deployment with that key's scopes and rate limit.",actions:(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("a",{href:"/api/v1/openapi.json",download:"openapi.json",className:(0,i.R)(),children:[(0,b.jsx)(d,{size:16,"aria-hidden":!0}),"openapi.json"]}),(0,b.jsxs)(g.default,{href:"/ai/keys",className:(0,i.R)(),children:[(0,b.jsx)(e,{size:16,"aria-hidden":!0}),"API keys"]})]})}),(0,b.jsxs)("div",{className:"mt-4 grid grid-cols-1 items-start gap-4 min-[960px]:grid-cols-[268px_minmax(0,1fr)]",children:[(0,b.jsx)(i.N,{flush:!0,children:(0,b.jsx)(z,{activeId:m.id})}),(0,b.jsx)(A.Explorer,{opId:m.id,origin:n,models:o},m.id)]})]})}a.s(["default",0,I],726947)},384125,a=>{let b=(0,a.i(211857).registerClientReference)(function(){throw Error("Attempted to call Explorer() from the server but Explorer is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/private/explorer/explorer.tsx","Explorer");a.s(["Explorer",0,b])},18766,a=>{var b=a.i(384125);a.n(b)}],307776,function(a){a.n(a.i(726947))}];
2
2
 
3
3
  //# sourceMappingURL=src_0iefnjvaszvw_._.js.map
@@ -1,3 +1,3 @@
1
- (()=>{"use strict";module.exports=[630718,a=>{var b=a.i(187924),c=a.i(218024),d=a.i(572131),e=a.i(823292),f=a.i(405050);let g=(0,f.createServerReference)("6037e6e9846920bfb488a29cfc23c015cc08c69f24",f.callServer,void 0,f.findSourceMapURL,"approveCreateAction"),h=(0,f.createServerReference)("40fc35c4512c9188efff3f097a2a56f59f1c3696f3",f.callServer,void 0,f.findSourceMapURL,"rejectCreateAction");var i=a.i(771378),j=a.i(611619),k=a.i(619089),l=a.i(507504),m=a.i(814574),n=a.i(486583);let o=new Set(["requested","approved","running"]),p=a=>o.has(a.status);var q=a.i(368114);let r={requested:"Waiting for approval",approved:"Approved",running:"Creating…",done:"Created",failed:"Failed",rejected:"Rejected",expired:"Expired"};function s({items:a,owner:c,focus:d,quiet:e}){let f=(0,i.useMask)();return(0,b.jsx)("ul",{className:"divide-y divide-line",children:a.map(a=>(0,b.jsxs)("li",{id:`create-${a.id}`,className:(0,q.f)("flex flex-wrap items-center gap-x-3 gap-y-1.5 px-[18px] py-2.5",e&&"py-2 text-[13px]",d===a.id&&"bg-brand-soft"),children:[(0,b.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,b.jsx)("b",{className:(0,q.f)("font-medium",e&&"text-ink-soft"),children:n.S[a.type]}),(0,b.jsx)(k.E,{children:n.E[a.type]}),(0,b.jsx)("span",{className:(0,q.f)("text-[12.5px]","failed"===a.status?"text-err":"text-ink-soft"),children:r[a.status]})]}),(0,b.jsx)("p",{className:"font-mono text-[12.5px] text-ink-soft [overflow-wrap:anywhere]",children:f("text",a.summary)}),"requested"===a.status&&(0,b.jsxs)("p",{className:"text-[12px] text-ink-faint",children:[a.mine?"You asked":"Another member asked"," · expires ",new Date(a.expiresAt).toLocaleString("en-GB",{dateStyle:"medium",timeStyle:"short"})]}),a.error&&"requested"!==a.status&&(0,b.jsx)("p",{className:"text-[12.5px] text-err",children:f("text",a.error)}),a.result?.id&&"done"===a.status&&(0,b.jsxs)("p",{className:"text-[12px] text-ink-faint",children:["Created: ",(0,b.jsx)("span",{className:"font-mono",children:f("text",a.result.id)}),"firebase-pending"===a.result.note?" · Firebase still needs adding in the Firebase console":""]})]}),c&&"requested"===a.status&&(0,b.jsxs)("div",{className:"flex gap-1.5",children:[(0,b.jsx)(t,{item:a}),(0,b.jsx)(u,{item:a})]})]},a.id))})}function t({item:a}){return(0,b.jsx)(j.f,{trigger:(0,b.jsx)(k.K,{size:"sm",children:"Reject"}),title:`Reject this ${n.S[a.type]}?`,body:"Nothing is created. The person who asked can ask again.",cta:"Reject",onConfirm:async()=>{let b=await h(a.id);return b.ok?{ok:!0,message:b.message??"Rejected."}:{ok:!1,message:b.error}}})}function u({item:a}){let[c,e]=(0,d.useState)(!1);return(0,l.useHoldRefresh)(c),(0,b.jsxs)(m.N,{open:c,onOpenChange:e,children:[(0,b.jsx)(m.a,{render:(0,b.jsx)(k.K,{size:"sm",variant:"primary"}),children:"Approve…"}),(0,b.jsx)(m.d,{className:"gap-0 p-0 sm:max-w-[560px]",showCloseButton:!1,children:c&&(0,b.jsx)(v,{item:a,onDone:()=>e(!1)})})]})}function v({item:a,onDone:c}){let f=(0,i.useMask)(),[h,j]=(0,d.useState)(""),[l,o]=(0,d.useState)(null),[p,q]=(0,d.useState)(null),[r,s]=(0,d.useState)(null),[t,u]=(0,d.useTransition)();return p?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("div",{className:"px-[18px] pb-2 pt-4",children:[(0,b.jsx)(m.F,{className:"text-base",children:"Copy the database password now"}),(0,b.jsxs)(m.C,{className:"mt-0.5 text-[13px] text-ink-soft",children:[r," It is shown only here, only once."]})]}),(0,b.jsxs)("div",{className:"px-[18px] pt-1.5",children:[(0,b.jsx)(w,{value:p}),(0,b.jsx)("div",{className:"mb-3",children:(0,b.jsx)(k.M,{tone:"warning",title:"The console doesn't keep it",children:"Save it in your password manager. If it's lost, reset it in Supabase → Project settings → Database."})})]}),(0,b.jsx)("div",{className:"flex justify-end gap-2 border-t border-line px-[18px] py-3",children:(0,b.jsx)(k.K,{variant:"primary",onClick:()=>{q(null),c()},children:"I've saved it"})})]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("div",{className:"px-[18px] pb-2 pt-4",children:[(0,b.jsx)(m.F,{className:"text-base",children:f("text",`Create ${n.S[a.type]} ${a.confirmName}?`)}),(0,b.jsxs)(m.C,{className:"mt-0.5 text-[13px] text-ink-soft",children:["The console checks the free tier at ",n.E[a.type]," again now, then makes one create call. ",(0,n.d)(a.type)]})]}),(0,b.jsxs)("div",{className:"px-[18px] pt-2",children:[(0,b.jsx)("p",{className:"mb-3 rounded-md border border-line bg-sunken px-3 py-2 font-mono text-[12.5px] [overflow-wrap:anywhere]",children:f("text",a.summary)}),(0,b.jsx)(k.O,{id:`ap-${a.id}`,label:(0,b.jsxs)(b.Fragment,{children:["Type ",(0,b.jsx)("span",{className:"font-mono",children:f("text",a.confirmName)})," to approve"]}),error:l??void 0,children:(0,b.jsx)("input",{id:`ap-${a.id}`,className:k.S,value:h,autoComplete:"off",spellCheck:!1,onChange:a=>j(a.target.value)})})]}),(0,b.jsxs)("div",{className:"flex justify-end gap-2 border-t border-line px-[18px] py-3",children:[(0,b.jsx)(k.K,{onClick:c,disabled:t,children:"Cancel"}),(0,b.jsx)(k.K,{variant:"primary",onClick:function(){u(async()=>{try{let b=await g(a.id,h);if(!b.ok)return o(f("text",b.error));o(null),b.data?.secret?(q(b.data.secret),s(f("text",b.message??"Created."))):(e.c.success(f("text",b.message??"Created.")),c())}catch{o("Something went wrong. Check the provider's dashboard before trying again.")}})},disabled:t||h.trim()!==a.confirmName,children:t?"Checking and creating…":"Approve and create"})]})]})}function w({value:a}){let[f,g]=(0,d.useState)(!1),{shot:h}=(0,i.usePrivacy)(),[j,l]=(0,d.useState)(!1);return(0,b.jsxs)("div",{className:"mb-3 flex items-center gap-2 rounded-md border border-line-strong bg-sunken px-3 py-2",children:[h&&!j?(0,b.jsx)("button",{type:"button",className:"min-w-0 flex-1 text-left text-[13px] text-ink-soft",onClick:()=>l(!0),children:"Hidden in screenshot mode. Click to show it."}):(0,b.jsx)("code",{className:"min-w-0 flex-1 select-all font-mono text-[13px] [overflow-wrap:anywhere]",children:a}),(0,b.jsxs)(k.K,{size:"sm",onClick:()=>{navigator.clipboard.writeText(a).then(()=>g(!0),()=>e.c.error("Copy didn't work; select the text and copy it."))},children:[(0,b.jsx)(c.f,{size:14,"aria-hidden":!0,className:"mr-1 inline"}),f?"Copied":"Copy"]})]})}a.s(["CreateRequestList",0,function({items:a,owner:c,focus:d,title:e="Waiting for approval"}){let{pending:f,finished:g}={pending:a.filter(p),finished:a.filter(a=>!p(a))};if(!f.length&&!g.length)return null;let h=f.filter(a=>"requested"===a.status).length;return(0,b.jsxs)(b.Fragment,{children:[f.length>0&&(0,b.jsx)(k.N,{title:e,meta:h?`${h} waiting`:void 0,flush:!0,children:(0,b.jsx)(s,{items:f,owner:c,focus:d})}),g.length>0&&(0,b.jsx)(k.N,{title:"Recent requests",flush:!0,children:(0,b.jsx)(s,{items:g,owner:!1,focus:d,quiet:!0})})]})}],630718)},486583,a=>{let b={dns_record:"Cloudflare",neon_branch:"Neon",supabase_project:"Supabase",firebase_project:"Firebase"};a.s(["E",0,b,"S",0,{dns_record:"DNS record",neon_branch:"Neon branch",supabase_project:"Supabase project",firebase_project:"Firebase project"},"d",0,a=>`The console can't remove this later; remove it in ${b[a]}'s dashboard.`])}]})();
1
+ (()=>{"use strict";module.exports=[630718,a=>{var b=a.i(187924),c=a.i(218024),d=a.i(572131),e=a.i(823292),f=a.i(405050);let g=(0,f.createServerReference)("608c520693667e7a0f75c7fa8a5b01776ce99d2af3",f.callServer,void 0,f.findSourceMapURL,"approveCreateAction"),h=(0,f.createServerReference)("40ba62992cdd20edac8eed4d34972ad9e70c7ea789",f.callServer,void 0,f.findSourceMapURL,"rejectCreateAction");var i=a.i(771378),j=a.i(611619),k=a.i(619089),l=a.i(507504),m=a.i(814574),n=a.i(486583);let o=new Set(["requested","approved","running"]),p=a=>o.has(a.status);var q=a.i(147474),r=a.i(368114);let s={requested:"Waiting for approval",approved:"Approved",running:"Creating…",done:"Created",failed:"Failed",rejected:"Rejected",expired:"Expired"};function t({items:a,owner:c,focus:d,quiet:e}){let f=(0,i.useMask)();return(0,b.jsx)("ul",{className:"divide-y divide-line",children:a.map(a=>{var g;let h;return(0,b.jsxs)("li",{id:`create-${a.id}`,className:(0,r.f)("flex flex-wrap items-center gap-x-3 gap-y-1.5 px-[18px] py-2.5",e&&"py-2 text-[13px]",d===a.id&&"bg-brand-soft"),children:[(0,b.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,b.jsx)("b",{className:(0,r.f)("font-medium",e&&"text-ink-soft"),children:n.S[a.type]}),(0,b.jsx)(k.E,{children:n.E[a.type]}),(0,b.jsx)("span",{className:(0,r.f)("text-[12.5px]","failed"===a.status?"text-err":"text-ink-soft"),children:s[a.status]})]}),(0,b.jsx)("p",{className:"font-mono text-[12.5px] text-ink-soft [overflow-wrap:anywhere]",children:f("text",a.summary)}),"requested"===a.status&&(0,b.jsxs)("p",{className:"text-[12px] text-ink-faint",children:[a.mine?"You asked":"Another member asked"," · expires ",(g=new Date(a.expiresAt),h=(0,q.e)(g),`${h.day} ${h.month} ${h.year}, ${(0,q.U)(g)}`)]}),a.error&&"requested"!==a.status&&(0,b.jsx)("p",{className:"text-[12.5px] text-err",children:f("text",a.error)}),a.result?.id&&"done"===a.status&&(0,b.jsxs)("p",{className:"text-[12px] text-ink-faint",children:["Created: ",(0,b.jsx)("span",{className:"font-mono",children:f("text",a.result.id)}),"firebase-pending"===a.result.note?" · Firebase still needs adding in the Firebase console":""]})]}),c&&"requested"===a.status&&(0,b.jsxs)("div",{className:"flex gap-1.5",children:[(0,b.jsx)(u,{item:a}),(0,b.jsx)(v,{item:a})]})]},a.id)})})}function u({item:a}){return(0,b.jsx)(j.f,{trigger:(0,b.jsx)(k.K,{size:"sm",children:"Reject"}),title:`Reject this ${n.S[a.type]}?`,body:"Nothing is created. The person who asked can ask again.",cta:"Reject",onConfirm:async()=>{let b=await h(a.id);return b.ok?{ok:!0,message:b.message??"Rejected."}:{ok:!1,message:b.error}}})}function v({item:a}){let[c,e]=(0,d.useState)(!1);return(0,l.useHoldRefresh)(c),(0,b.jsxs)(m.N,{open:c,onOpenChange:e,children:[(0,b.jsx)(m.a,{render:(0,b.jsx)(k.K,{size:"sm",variant:"primary"}),children:"Approve…"}),(0,b.jsx)(m.d,{className:"gap-0 p-0 sm:max-w-[560px]",showCloseButton:!1,children:c&&(0,b.jsx)(w,{item:a,onDone:()=>e(!1)})})]})}function w({item:a,onDone:c}){let f=(0,i.useMask)(),[h,j]=(0,d.useState)(""),[l,o]=(0,d.useState)(null),[p,q]=(0,d.useState)(null),[r,s]=(0,d.useState)(null),[t,u]=(0,d.useTransition)();return p?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("div",{className:"px-[18px] pb-2 pt-4",children:[(0,b.jsx)(m.F,{className:"text-base",children:"Copy the database password now"}),(0,b.jsxs)(m.C,{className:"mt-0.5 text-[13px] text-ink-soft",children:[r," It is shown only here, only once."]})]}),(0,b.jsxs)("div",{className:"px-[18px] pt-1.5",children:[(0,b.jsx)(x,{value:p}),(0,b.jsx)("div",{className:"mb-3",children:(0,b.jsx)(k.M,{tone:"warning",title:"The console doesn't keep it",children:"Save it in your password manager. If it's lost, reset it in Supabase → Project settings → Database."})})]}),(0,b.jsx)("div",{className:"flex justify-end gap-2 border-t border-line px-[18px] py-3",children:(0,b.jsx)(k.K,{variant:"primary",onClick:()=>{q(null),c()},children:"I've saved it"})})]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("div",{className:"px-[18px] pb-2 pt-4",children:[(0,b.jsx)(m.F,{className:"text-base",children:f("text",`Create ${n.S[a.type]} ${a.confirmName}?`)}),(0,b.jsxs)(m.C,{className:"mt-0.5 text-[13px] text-ink-soft",children:["The console checks the free tier at ",n.E[a.type]," again now, then makes one create call. ",(0,n.d)(a.type)]})]}),(0,b.jsxs)("div",{className:"px-[18px] pt-2",children:[(0,b.jsx)("p",{className:"mb-3 rounded-md border border-line bg-sunken px-3 py-2 font-mono text-[12.5px] [overflow-wrap:anywhere]",children:f("text",a.summary)}),(0,b.jsx)(k.O,{id:`ap-${a.id}`,label:(0,b.jsxs)(b.Fragment,{children:["Type ",(0,b.jsx)("span",{className:"font-mono",children:f("text",a.confirmName)})," to approve"]}),error:l??void 0,children:(0,b.jsx)("input",{id:`ap-${a.id}`,className:k.S,value:h,autoComplete:"off",spellCheck:!1,onChange:a=>j(a.target.value)})})]}),(0,b.jsxs)("div",{className:"flex justify-end gap-2 border-t border-line px-[18px] py-3",children:[(0,b.jsx)(k.K,{onClick:c,disabled:t,children:"Cancel"}),(0,b.jsx)(k.K,{variant:"primary",onClick:function(){u(async()=>{try{let b=await g(a.id,h);if(!b.ok)return o(f("text",b.error));o(null),b.data?.secret?(q(b.data.secret),s(f("text",b.message??"Created."))):(e.c.success(f("text",b.message??"Created.")),c())}catch{o("Something went wrong. Check the provider's dashboard before trying again.")}})},disabled:t||h.trim()!==a.confirmName,children:t?"Checking and creating…":"Approve and create"})]})]})}function x({value:a}){let[f,g]=(0,d.useState)(!1),{shot:h}=(0,i.usePrivacy)(),[j,l]=(0,d.useState)(!1);return(0,b.jsxs)("div",{className:"mb-3 flex items-center gap-2 rounded-md border border-line-strong bg-sunken px-3 py-2",children:[h&&!j?(0,b.jsx)("button",{type:"button",className:"min-w-0 flex-1 text-left text-[13px] text-ink-soft",onClick:()=>l(!0),children:"Hidden in screenshot mode. Click to show it."}):(0,b.jsx)("code",{className:"min-w-0 flex-1 select-all font-mono text-[13px] [overflow-wrap:anywhere]",children:a}),(0,b.jsxs)(k.K,{size:"sm",onClick:()=>{navigator.clipboard.writeText(a).then(()=>g(!0),()=>e.c.error("Copy didn't work; select the text and copy it."))},children:[(0,b.jsx)(c.f,{size:14,"aria-hidden":!0,className:"mr-1 inline"}),f?"Copied":"Copy"]})]})}a.s(["CreateRequestList",0,function({items:a,owner:c,focus:d,title:e="Waiting for approval"}){let{pending:f,finished:g}={pending:a.filter(p),finished:a.filter(a=>!p(a))};if(!f.length&&!g.length)return null;let h=f.filter(a=>"requested"===a.status).length;return(0,b.jsxs)(b.Fragment,{children:[f.length>0&&(0,b.jsx)(k.N,{title:e,meta:h?`${h} waiting`:void 0,flush:!0,children:(0,b.jsx)(t,{items:f,owner:c,focus:d})}),g.length>0&&(0,b.jsx)(k.N,{title:"Recent requests",flush:!0,children:(0,b.jsx)(t,{items:g,owner:!1,focus:d,quiet:!0})})]})}],630718)},486583,a=>{let b={dns_record:"Cloudflare",neon_branch:"Neon",supabase_project:"Supabase",firebase_project:"Firebase"};a.s(["E",0,b,"S",0,{dns_record:"DNS record",neon_branch:"Neon branch",supabase_project:"Supabase project",firebase_project:"Firebase project"},"d",0,a=>`The console can't remove this later; remove it in ${b[a]}'s dashboard.`])}]})();
2
2
 
3
3
  //# sourceMappingURL=src_0ph020gy78gi9._.js.map
@@ -0,0 +1,3 @@
1
+ module.exports=[[263251,a=>{a.s(["f",0,function(a){if(Array.isArray(a))return a;let b=a?.rows;return Array.isArray(b)?b:[]}])},678831,a=>{var b=a.i(118558),c=a.i(371289);function d(a,b){if((0,c.r)())for(let c of new Set(a))try{b(c)}catch(a){console.warn(`cache: couldn't expire ${c}: ${a instanceof Error?a.message.slice(0,120):"unknown"}`)}}a.s(["D",0,function(a){d(a,a=>(0,b.revalidateTag)(a,{expire:0}))},"J",0,function(a){d(a,a=>(0,b.updateTag)(a))}])},655206,a=>{a.s(["f",0,{checks:7,rollupsHourly:90,deployments:30,events:90,alerts:90,collectorRuns:14,storedLogs:7,recommendationDismissals:90}])},875034,a=>{var b=a.i(691100),c=a.i(381544);let d={decide:b.V,execute:(a,c,d)=>(0,b.N)(a,c,d),history:(a,b)=>(0,c.v)(a,b)};async function e(a,b,f,g,h={},i=d){let j=await i.decide(a,b,f.id,g);if("ok"!==j.status)return"missing"===j.status?{status:"missing"}:{status:"conflict",proposal:j.proposal};let k=[],l=async()=>{let a,b=i.history;if(!b||!k.length)return;let d=k.splice(0),e=new Promise(b=>{a=setTimeout(b,c.h)}),f=(async()=>{for(let[a,c]of d)await b(a,c).catch(()=>void 0)})();await Promise.race([f,e]).finally(()=>clearTimeout(a))};if("reject"===b)return k.push(["rejected",j.proposal]),{status:"ok",proposal:j.proposal,flushHistory:l};k.push(["approved",j.proposal]),h.onApproved&&await h.onApproved(j.proposal).catch(()=>void 0);let m=await i.execute(a,{id:f.id,userId:f.userId},new Date);return m&&("done"===m.status||"failed"===m.status)&&k.push([m.status,m]),{status:"ok",proposal:m??j.proposal,flushHistory:l}}a.s(["f",0,e])}],461750,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[root-of-the-server]__11y6b96ofb-c5._.js","server/chunks/ssr/src_db_pglite_ts_0r1r9wqxilnam._.js","server/chunks/ssr/node_modules_0vppy-p56c35f._.js","server/chunks/ssr/node_modules_@electric-sql_pglite_dist_0j1fzsq3ed7ph._.js"].map(b=>a.l(b))).then(()=>b(614755)))},73710,a=>{a.v(b=>Promise.all(["server/chunks/ssr/src_lib_demo_cookie_ts_0a12-0n1novgh._.js"].map(b=>a.l(b))).then(()=>b(716983)))},871289,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[root-of-the-server]__0ryl_hnreck66._.js","server/chunks/ssr/node_modules_0vppy-p56c35f._.js","server/chunks/ssr/node_modules_@electric-sql_pglite_dist_0j1fzsq3ed7ph._.js"].map(b=>a.l(b))).then(()=>b(204048)))},734864,a=>{a.v(b=>Promise.all(["server/chunks/ssr/src_lib_demo_20zjotuzm1lm8._.js"].map(b=>a.l(b))).then(()=>b(579739)))},522169,a=>{a.v(b=>Promise.all(["server/chunks/ssr/src_lib_demo_seed_members_ts_0pz2fa9295pvm._.js"].map(b=>a.l(b))).then(()=>b(615089)))},372153,a=>{a.v(b=>Promise.all(["server/chunks/ssr/src_lib_demo_session_ts_0rwvb3aun41zx._.js","server/chunks/ssr/src_lib_demo_1w8p39upm6ea2._.js"].map(b=>a.l(b))).then(()=>b(765161)))},414785,a=>{a.v(a=>Promise.resolve().then(()=>a(534908)))},801116,a=>{a.v(a=>Promise.resolve().then(()=>a(624065)))}];
2
+
3
+ //# sourceMappingURL=src_0qu78tivj78-x._.js.map
@@ -1,3 +1,3 @@
1
- (()=>{"use strict";module.exports=[762253,a=>{var b=a.i(187924),c=a.i(771378),d=a.i(619089),e=a.i(54901),f=a.i(188406),g=a.i(87674),h=a.i(742680),i=a.i(405050);let j=(0,i.createServerReference)("60b1dcf5c2eeac0f5267f01219fcc65ce3765164c3",i.callServer,void 0,i.findSourceMapURL,"cancelAction");var k=a.i(455279);let l=(0,i.createServerReference)("609a1ea0aef73efb807c55587afdf28565697ba9c1",i.callServer,void 0,i.findSourceMapURL,"promotePreviewAction");var m=a.i(817380),n=a.i(144153);a.s(["DeployRowActions",0,function({d:a,actions:i,logs:o}){let p=(0,c.useMask)(),{open:q,dialog:r}=(0,e.W)(),s=a.sha?a.sha.slice(0,7):"",t=a.url?`https://${a.url}`:"",u=[...a.url&&a.visit&&!o?[{label:"Visit",kind:"visit"}]:[],...i.map(a=>({label:a,kind:"action",action:a})),...o?[{label:"View build logs",kind:"logs"}]:[]],v=b=>q({...(0,g.f)(b,p("app",a.appName),s),run:function(a,b,c){switch(a){case"Redeploy":return()=>(0,m.f)(b,c);case"Roll back to this":return()=>(0,n.f)(b,c);case"Promote":return()=>(0,k.f)(b,c);case"Cancel":return()=>j(b,c);case"Promote to production":return()=>l(b,c)}}(b,a.appId,a.externalId)});if(u.length>2){let c=u.map(a=>"visit"===a.kind?{label:a.label,href:t}:"logs"===a.kind?{label:a.label,later:5}:{label:a.label,onSelect:()=>v(a.action)});return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(f.RowMenu,{label:(0,h.J)(p("app",a.appName),s||a.url||a.externalId),items:c}),r]})}return(0,b.jsxs)("div",{className:"flex gap-1.5",children:[u.map(a=>"visit"===a.kind?(0,b.jsx)("a",{href:t,target:"_blank",rel:"noreferrer",className:(0,d.R)({size:"sm"}),children:"Visit"},a.label):"logs"===a.kind?(0,b.jsx)(d.l,{label:a.label,stage:5},a.label):(0,b.jsx)(d.K,{size:"sm",onClick:()=>v(a.action),children:a.label},a.label)),r]})}],762253)},87674,455279,817380,144153,a=>{a.s(["f",0,function(a,b,c){switch(a){case"Redeploy":return{title:`Redeploy ${b}?`,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 ${b}?`,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 ${b} to ${c||"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 ${b} ${c}?`.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 ${b} ${c} 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 ${`${b} ${c}`.trim()} stops. The current production deployment stays live.`}}}],87674);var b=a.i(405050);let c=(0,b.createServerReference)("601fc3830577ef7347cf25c50bd20861ca3ffbcae7",b.callServer,void 0,b.findSourceMapURL,"promoteAction");a.s(["f",0,c],455279);let d=(0,b.createServerReference)("605f87a7ee983c0424d316b67b83bde816db5c156d",b.callServer,void 0,b.findSourceMapURL,"redeployAction");a.s(["f",0,d],817380);let e=(0,b.createServerReference)("602177cf994aa256f856419453870293ae99aa4986",b.callServer,void 0,b.findSourceMapURL,"rollbackAction");a.s(["f",0,e],144153)}]})();
1
+ (()=>{"use strict";module.exports=[762253,a=>{var b=a.i(187924),c=a.i(771378),d=a.i(619089),e=a.i(54901),f=a.i(188406),g=a.i(87674),h=a.i(742680),i=a.i(405050);let j=(0,i.createServerReference)("609b96b36941d0c0b1f097f5c76f20e7f86699fc9c",i.callServer,void 0,i.findSourceMapURL,"cancelAction");var k=a.i(114033);let l=(0,i.createServerReference)("60df4931f0a0816976207881d81c34c8852e770838",i.callServer,void 0,i.findSourceMapURL,"promotePreviewAction");var m=a.i(269197),n=a.i(98291);a.s(["DeployRowActions",0,function({d:a,actions:i,logs:o}){let p=(0,c.useMask)(),{open:q,dialog:r}=(0,e.W)(),s=a.sha?a.sha.slice(0,7):"",t=a.url?`https://${a.url}`:"",u=[...a.url&&a.visit&&!o?[{label:"Visit",kind:"visit"}]:[],...i.map(a=>({label:a,kind:"action",action:a})),...o?[{label:"View build logs",kind:"logs"}]:[]],v=b=>q({...(0,g.f)(b,p("app",a.appName),s),run:function(a,b,c){switch(a){case"Redeploy":return()=>(0,m.f)(b,c);case"Roll back to this":return()=>(0,n.f)(b,c);case"Promote":return()=>(0,k.f)(b,c);case"Cancel":return()=>j(b,c);case"Promote to production":return()=>l(b,c)}}(b,a.appId,a.externalId)});if(u.length>2){let c=u.map(a=>"visit"===a.kind?{label:a.label,href:t}:"logs"===a.kind?{label:a.label,later:5}:{label:a.label,onSelect:()=>v(a.action)});return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(f.RowMenu,{label:(0,h.J)(p("app",a.appName),s||a.url||a.externalId),items:c}),r]})}return(0,b.jsxs)("div",{className:"flex gap-1.5",children:[u.map(a=>"visit"===a.kind?(0,b.jsx)("a",{href:t,target:"_blank",rel:"noreferrer",className:(0,d.R)({size:"sm"}),children:"Visit"},a.label):"logs"===a.kind?(0,b.jsx)(d.l,{label:a.label,stage:5},a.label):(0,b.jsx)(d.K,{size:"sm",onClick:()=>v(a.action),children:a.label},a.label)),r]})}],762253)},87674,114033,269197,98291,a=>{a.s(["f",0,function(a,b,c){switch(a){case"Redeploy":return{title:`Redeploy ${b}?`,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 ${b}?`,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 ${b} to ${c||"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 ${b} ${c}?`.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 ${b} ${c} 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 ${`${b} ${c}`.trim()} stops. The current production deployment stays live.`}}}],87674);var b=a.i(405050);let c=(0,b.createServerReference)("606099ae89a34d41e35ca98354adcc6aff9f40fa75",b.callServer,void 0,b.findSourceMapURL,"promoteAction");a.s(["f",0,c],114033);let d=(0,b.createServerReference)("60bd9f9504135c45447432463c5937b0d0ed02c686",b.callServer,void 0,b.findSourceMapURL,"redeployAction");a.s(["f",0,d],269197);let e=(0,b.createServerReference)("604f882fb43dd09b09effb94531940a216059cba1f",b.callServer,void 0,b.findSourceMapURL,"rollbackAction");a.s(["f",0,e],98291)}]})();
2
2
 
3
3
  //# sourceMappingURL=src_0t6-d5hmzrbp1._.js.map
@@ -1,3 +1,3 @@
1
- (()=>{"use strict";module.exports=[745374,a=>{var b=a.i(211857);let c=(0,b.registerClientReference)(function(){throw Error("Attempted to call AutoRefresh() from the server but AutoRefresh is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/components/live.tsx","AutoRefresh");(0,b.registerClientReference)(function(){throw Error("Attempted to call LiveIndicator() from the server but LiveIndicator is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/components/live.tsx","LiveIndicator"),(0,b.registerClientReference)(function(){throw Error("Attempted to call holdCount() from the server but holdCount is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/components/live.tsx","holdCount"),(0,b.registerClientReference)(function(){throw Error("Attempted to call holdRefresh() from the server but holdRefresh is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/components/live.tsx","holdRefresh"),(0,b.registerClientReference)(function(){throw Error("Attempted to call holdWhile() from the server but holdWhile is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/components/live.tsx","holdWhile"),(0,b.registerClientReference)(function(){throw Error("Attempted to call useHoldRefresh() from the server but useHoldRefresh is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/components/live.tsx","useHoldRefresh"),a.s(["AutoRefresh",0,c])},685865,a=>{var b=a.i(745374);a.n(b)},393746,a=>{let b=a=>a.toLocaleTimeString("en-GB",{timeZone:"Asia/Jakarta",hour12:!1});a.s(["a",0,function(a){return null===a?"—":a>=1e6?`${Math.round(a/1e5)/10}M`.replace(".0M","M"):a>=1e3?`${Math.round(a/1024)}k`:String(a)},"J",0,a=>a<1e3?`${Math.round(a)} ms`:`${(a/1e3).toFixed(1)} s`,"r",0,(a,b)=>null===a&&null===b?"—":`${null===a?"—":a.toLocaleString("en-US")} / ${null===b?"—":b.toLocaleString("en-US")}`,"n",0,function(a,c){let d=a=>a.toLocaleDateString("en-CA",{timeZone:"Asia/Jakarta"});return d(a)===d(c)?b(a):`${d(a).slice(5)} ${b(a)}`},"m",0,function(a){return a<400?"ok":429===a?"warn":"err"},"_",0,function(a){return"mcp"===a.kind?`MCP \xb7 ${a.tool??"initialize"}`:a.model??(a.tool?a.tool:"—")},"s",0,function(a){let b=a.filter(a=>a.enabled);if(0===b.length)return{tone:"off",title:"Not connected",detail:null};let c=b.find(a=>a.isDefault)??b[0],d=a=>null!==a.lastTestStatus&&a.lastTestStatus>=400,e=b.filter(a=>a!==c),f=e.filter(a=>!d(a)),g=[...c.isDefault?["Default"]:[],...f.length?[`${f.map(a=>a.name).join(", ")} also on`]:[],...e.filter(d).map(a=>`${a.name} needs attention`)];return{tone:d(c)?"err":"ok",title:c.name,detail:g.length?g.join(" · "):null}},"P",0,function(a,b=2){let c=a.flatMap(a=>a.rows.map(b=>({group:a.group,...b}))),d=c.filter(a=>/daily/i.test(a.label));return[...d,...c.filter(a=>!d.includes(a))].slice(0,b)},"z",0,a=>`${a.toLocaleDateString("en-CA",{timeZone:"Asia/Jakarta"})} ${b(a)}`])}]})();
1
+ (()=>{"use strict";module.exports=[745374,a=>{var b=a.i(211857);let c=(0,b.registerClientReference)(function(){throw Error("Attempted to call AutoRefresh() from the server but AutoRefresh is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/components/live.tsx","AutoRefresh");(0,b.registerClientReference)(function(){throw Error("Attempted to call LiveIndicator() from the server but LiveIndicator is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/components/live.tsx","LiveIndicator"),(0,b.registerClientReference)(function(){throw Error("Attempted to call holdCount() from the server but holdCount is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/components/live.tsx","holdCount"),(0,b.registerClientReference)(function(){throw Error("Attempted to call holdRefresh() from the server but holdRefresh is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/components/live.tsx","holdRefresh"),(0,b.registerClientReference)(function(){throw Error("Attempted to call holdWhile() from the server but holdWhile is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/components/live.tsx","holdWhile"),(0,b.registerClientReference)(function(){throw Error("Attempted to call useHoldRefresh() from the server but useHoldRefresh is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/components/live.tsx","useHoldRefresh"),a.s(["AutoRefresh",0,c])},685865,a=>{var b=a.i(745374);a.n(b)},393746,a=>{var b=a.i(245710);let c=a=>(0,b.T)(a);a.s(["a",0,function(a){return null===a?"—":a>=1e6?`${Math.round(a/1e5)/10}M`.replace(".0M","M"):a>=1e3?`${Math.round(a/1024)}k`:String(a)},"J",0,a=>a<1e3?`${Math.round(a)} ms`:`${(a/1e3).toFixed(1)} s`,"r",0,(a,b)=>null===a&&null===b?"—":`${null===a?"—":a.toLocaleString("en-US")} / ${null===b?"—":b.toLocaleString("en-US")}`,"n",0,function(a,d){return(0,b.x)(a)===(0,b.x)(d)?c(a):`${(0,b.x)(a).slice(5)} ${c(a)}`},"m",0,function(a){return a<400?"ok":429===a?"warn":"err"},"_",0,function(a){return"mcp"===a.kind?`MCP \xb7 ${a.tool??"initialize"}`:a.model??(a.tool?a.tool:"—")},"s",0,function(a){let b=a.filter(a=>a.enabled);if(0===b.length)return{tone:"off",title:"Not connected",detail:null};let c=b.find(a=>a.isDefault)??b[0],d=a=>null!==a.lastTestStatus&&a.lastTestStatus>=400,e=b.filter(a=>a!==c),f=e.filter(a=>!d(a)),g=[...c.isDefault?["Default"]:[],...f.length?[`${f.map(a=>a.name).join(", ")} also on`]:[],...e.filter(d).map(a=>`${a.name} needs attention`)];return{tone:d(c)?"err":"ok",title:c.name,detail:g.length?g.join(" · "):null}},"P",0,function(a,b=2){let c=a.flatMap(a=>a.rows.map(b=>({group:a.group,...b}))),d=c.filter(a=>/daily/i.test(a.label));return[...d,...c.filter(a=>!d.includes(a))].slice(0,b)},"z",0,a=>`${(0,b.x)(a)} ${c(a)}`])}]})();
2
2
 
3
3
  //# sourceMappingURL=src_0xh3xicmff6ws._.js.map
@@ -1,3 +1,3 @@
1
- (()=>{"use strict";module.exports=[992861,a=>{var b=a.i(187924),c=a.i(101169),d=a.i(218024),e=a.i(196790),f=a.i(817748),g=a.i(901615),h=a.i(238246),i=a.i(572131),j=a.i(823292),k=a.i(619089),l=a.i(507504),m=a.i(814574),n=a.i(405050);let o=(0,n.createServerReference)("40a9156ceb535cbdd39e41daf01b7691041cb232d5",n.callServer,void 0,n.findSourceMapURL,"createKeyAction");function p({scopes:a}){return(0,b.jsx)(b.Fragment,{children:a.map(a=>(0,b.jsx)("span",{className:"mr-1 inline-block whitespace-nowrap rounded-[4px] border border-line bg-surface-2 px-[5px] font-mono text-xs text-ink-soft",children:a},a))})}var q=a.i(136476);function r({icon:a,title:c,sub:d}){return(0,b.jsxs)("div",{className:"flex items-start gap-3 px-[18px] pb-2 pt-4",children:[(0,b.jsx)("span",{className:"grid size-9 shrink-0 place-items-center rounded-lg bg-sunken text-ink-soft",children:a}),(0,b.jsxs)("div",{children:[(0,b.jsx)(m.F,{className:"text-base",children:c}),(0,b.jsx)(m.C,{className:"mt-0.5 text-[13px] text-ink-soft",children:d})]})]})}function s({onCreated:a,onCancel:c}){let[d,f]=(0,i.useState)(""),[h,l]=(0,i.useState)(q.J),[m,n]=(0,i.useState)(q.j),[t,u]=(0,i.useState)(String(q.D)),[v,w]=(0,i.useState)({}),[x,y]=(0,i.useState)(""),[z,A]=(0,i.useTransition)();return(0,b.jsxs)("form",{onSubmit:function(b){b.preventDefault(),A(async()=>{w({}),y("");try{let b=await o({name:d.trim(),scopes:q.B.filter(a=>h.includes(a)),expiry:m,ratePerMin:t.trim()});b.ok&&b.data?(j.c.success(b.message??"Key created."),a(b.data)):b.ok||(b.fieldErrors?w(b.fieldErrors):y(b.error))}catch{y("Something went wrong. Try again.")}})},noValidate:!0,children:[(0,b.jsx)(r,{icon:(0,b.jsx)(e.f,{size:19}),title:"Create API key",sub:"For one app or agent. Shown once."}),(0,b.jsxs)("div",{className:"px-[18px] pt-1.5",children:[(0,b.jsx)(k.O,{id:"key-name",label:"Name",help:"Lowercase letters, digits and dashes. Agents and Logs show it.",error:v.name,children:(0,b.jsx)("input",{id:"key-name",value:d,onChange:a=>f(a.target.value),placeholder:g.C.namePlaceholder,autoComplete:"off",autoCapitalize:"none",spellCheck:!1,className:k.S})}),(0,b.jsxs)("fieldset",{className:"mb-3.5",children:[(0,b.jsx)("legend",{className:"mb-[5px] text-[13px] font-medium",children:"Scopes"}),(0,b.jsx)("div",{className:"flex flex-col gap-1.5",children:q.B.map(a=>(0,b.jsxs)("label",{className:"flex cursor-pointer items-start gap-2",children:[(0,b.jsx)("input",{type:"checkbox",checked:h.includes(a),onChange:()=>l(b=>b.includes(a)?b.filter(b=>b!==a):[...b,a]),className:"mt-[3px] accent-brand"}),(0,b.jsxs)("span",{children:[(0,b.jsx)(p,{scopes:[a]})," ",(0,b.jsx)("span",{className:"text-[13px] text-ink-soft",children:q.h[a].short})]})]},a))}),v.scopes&&(0,b.jsx)("span",{className:"text-[12.5px] text-err",role:"alert",children:v.scopes})]}),(0,b.jsxs)("div",{className:"grid grid-cols-2 gap-3 max-[560px]:grid-cols-1",children:[(0,b.jsx)(k.O,{id:"key-expiry",label:"Expires",error:v.expiry,children:(0,b.jsx)("select",{id:"key-expiry",value:m,onChange:a=>n(a.target.value),className:k.S,children:q.W.map(a=>(0,b.jsx)("option",{value:a,children:q.o[a]},a))})}),(0,b.jsx)(k.O,{id:"key-rate",label:"Rate limit",help:"Requests per minute, 1–600. Applies before the provider's own limits.",error:v.ratePerMin,children:(0,b.jsx)("input",{id:"key-rate",inputMode:"numeric",value:t,onChange:a=>u(a.target.value),className:`${k.S} font-mono`})})]}),x&&(0,b.jsx)("p",{className:"mb-3 text-[13px] text-err",role:"alert",children:x})]}),(0,b.jsxs)("div",{className:"flex justify-end gap-2 border-t border-line px-[18px] py-3",children:[(0,b.jsx)(k.K,{onClick:c,disabled:z,children:"Cancel"}),(0,b.jsx)(k.K,{type:"submit",variant:"primary",disabled:z,children:z?"Creating…":"Create key"})]})]})}function t({created:a,onDone:e}){async function f(){try{await navigator.clipboard.writeText(a.key),j.c.success("Copied.")}catch{j.c.error("Couldn't copy. Select the key and copy it by hand.")}}return(0,b.jsxs)("div",{children:[(0,b.jsx)(r,{icon:(0,b.jsx)(c.f,{size:19}),title:`Key ${a.name} created`,sub:"Copy it now."}),(0,b.jsxs)("div",{className:"px-[18px] pb-3 pt-1.5",children:[(0,b.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,b.jsx)("code",{className:"min-w-0 flex-1 overflow-x-auto whitespace-nowrap rounded-md border border-line bg-sunken px-2 py-1.5 font-mono text-[12.5px]","data-testid":"new-key",children:a.key}),(0,b.jsxs)(k.K,{size:"sm",onClick:f,children:[(0,b.jsx)(d.f,{size:15,"aria-hidden":!0}),"Copy"]})]}),(0,b.jsx)("p",{className:"mt-2.5 rounded-md border border-warn-icon bg-warn-soft px-2.5 py-2 text-[13px] text-warn",children:"Watchbell keeps only a SHA-256 hash of this key, so it can't show it again. Lost it? Revoke it and create a new one."}),(0,b.jsxs)("p",{className:"mb-0 mt-3 text-[13px] text-ink-soft",children:["Next: put it in the app's environment as ",(0,b.jsx)("span",{className:"font-mono",children:"WATCHBELL_API_KEY"}),", then follow ",(0,b.jsx)(h.default,{href:"/ai",className:"text-brand",children:"Quick start"})," or ",(0,b.jsx)(h.default,{href:"/ai/connect",className:"text-brand",children:"Connect an agent"}),"."]})]}),(0,b.jsx)("div",{className:"flex justify-end gap-2 border-t border-line px-[18px] py-3",children:(0,b.jsx)(k.K,{variant:"primary",onClick:e,children:"Done"})})]})}a.s(["CreateKeyDialog",0,function(){let[a,c]=(0,i.useState)(!1),[d,e]=(0,i.useState)(null);function g(a){c(a),a||e(null)}return(0,l.useHoldRefresh)(a),(0,b.jsxs)(m.N,{open:a,onOpenChange:g,children:[(0,b.jsxs)(m.a,{render:(0,b.jsx)(k.K,{variant:"primary"}),children:[(0,b.jsx)(f.f,{size:16,"aria-hidden":!0}),"Create key"]}),(0,b.jsx)(m.d,{className:"gap-0 p-0 sm:max-w-[640px]",showCloseButton:!1,children:d?(0,b.jsx)(t,{created:d,onDone:()=>g(!1)}):(0,b.jsx)(s,{onCreated:e,onCancel:()=>g(!1)})})]})}],992861)},659526,a=>{var b=a.i(187924),c=a.i(572131),d=a.i(823292),e=a.i(611619),f=a.i(619089),g=a.i(507504),h=a.i(188406),i=a.i(814574),j=a.i(405050);let k=(0,j.createServerReference)("6041e308518fce32a63ed2a098d3339be74fbe1a5b",j.callServer,void 0,j.findSourceMapURL,"changeKeyAction"),l=(0,j.createServerReference)("4005a09e10ae253df41b937dcdbebb16ae68f8a975",j.callServer,void 0,j.findSourceMapURL,"revokeKeyAction");var m=a.i(136476);let n={rename:{title:a=>`Rename ${a}`,sub:"Agents and Logs show the name. Lowercase letters, digits and dashes.",cta:"Save name"},rate:{title:()=>"Change rate limit",sub:"Requests per minute, 1–600. Applies before the provider's own limits, within a minute.",cta:"Save limit"},expiry:{title:()=>"Change expiry",sub:"Counted from today. The key stops working at that date.",cta:"Save expiry"},routing:{title:()=>"Change routing",sub:"Pin this key to one provider and, if you like, one model. Without a pin it uses the default provider.",cta:"Save routing"}};function o({mode:a,k:e,providers:g,onDone:h}){let[j,l]=(0,c.useState)(e.name),[p,q]=(0,c.useState)(String(e.ratePerMin)),[r,s]=(0,c.useState)(e.expiresAt?"90d":"never"),[t,u]=(0,c.useState)(e.providerId??""),[v,w]=(0,c.useState)(e.model??""),[x,y]=(0,c.useState)({}),[z,A]=(0,c.useState)(""),[B,C]=(0,c.useTransition)(),D=n[a];return(0,b.jsxs)("form",{onSubmit:function(b){b.preventDefault(),C(async()=>{y({}),A("");try{let b=await k(e.id,"rename"===a?{kind:"rename",name:j.trim()}:"rate"===a?{kind:"rate",ratePerMin:p.trim()}:"expiry"===a?{kind:"expiry",expiry:r}:{kind:"routing",providerId:t||null,model:t?v.trim():null});b.ok?(d.c.success(b.message??"Key updated."),h()):b.fieldErrors?y(b.fieldErrors):A(b.error)}catch{A("Something went wrong. Try again.")}})},noValidate:!0,children:[(0,b.jsxs)("div",{className:"px-[18px] pb-2 pt-4",children:[(0,b.jsx)(i.F,{className:"text-base",children:D.title(e.name)}),(0,b.jsx)(i.C,{className:"mt-0.5 text-[13px] text-ink-soft",children:D.sub})]}),(0,b.jsxs)("div",{className:"px-[18px] pt-1.5",children:["rename"===a&&(0,b.jsx)(f.O,{id:"edit-name",label:"Name",error:x.name,children:(0,b.jsx)("input",{id:"edit-name",value:j,onChange:a=>l(a.target.value),autoComplete:"off",autoCapitalize:"none",spellCheck:!1,className:f.S})}),"rate"===a&&(0,b.jsx)(f.O,{id:"edit-rate",label:"Rate limit",help:"Requests per minute.",error:x.ratePerMin,children:(0,b.jsx)("input",{id:"edit-rate",inputMode:"numeric",value:p,onChange:a=>q(a.target.value),className:`${f.S} font-mono`})}),"expiry"===a&&(0,b.jsx)(f.O,{id:"edit-expiry",label:"Expires",error:x.expiry,children:(0,b.jsx)("select",{id:"edit-expiry",value:r,onChange:a=>s(a.target.value),className:f.S,children:m.W.map(a=>(0,b.jsx)("option",{value:a,children:m.o[a]},a))})}),"routing"===a&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(f.O,{id:"edit-provider",label:"Provider",help:g.length?void 0:"No provider is connected yet. Until one is, this key has nothing to pin to.",error:x.providerId,children:(0,b.jsxs)("select",{id:"edit-provider",value:t,onChange:a=>u(a.target.value),className:f.S,children:[(0,b.jsx)("option",{value:"",children:"No pin (default provider)"}),g.map(a=>(0,b.jsxs)("option",{value:a.id,children:[a.name,a.enabled?"":" (off)"]},a.id))]})}),(0,b.jsx)(f.O,{id:"edit-model",label:"Model",help:"Optional. A Gemini model id, for example gemini-3.8-flash. Empty uses the provider's default.",error:x.model,children:(0,b.jsx)("input",{id:"edit-model",value:v,onChange:a=>w(a.target.value),disabled:!t,placeholder:"gemini-3.8-flash",autoComplete:"off",autoCapitalize:"none",spellCheck:!1,className:`${f.S} font-mono`})})]}),z&&(0,b.jsx)("p",{className:"mb-3 text-[13px] text-err",role:"alert",children:z})]}),(0,b.jsxs)("div",{className:"flex justify-end gap-2 border-t border-line px-[18px] py-3",children:[(0,b.jsx)(f.K,{onClick:h,disabled:B,children:"Cancel"}),(0,b.jsx)(f.K,{type:"submit",variant:"primary",disabled:B,children:B?"Saving…":D.cta})]})]})}a.s(["KeyActions",0,function({k:a,providers:d}){let[j,k]=(0,c.useState)(null);return(0,g.useHoldRefresh)(null!==j),(0,b.jsxs)("span",{className:"inline-flex items-center gap-1",children:[(0,b.jsx)(e.f,{trigger:(0,b.jsx)(f.K,{size:"sm",children:"Revoke"}),title:`Revoke ${a.name}?`,body:`Calls with ${a.prefix}… answer 401 within a minute. Agents using it show "Key revoked". This can't be undone; create a new key instead.`,cta:"Revoke key",danger:!0,onConfirm:async()=>{let b=await l(a.id);return{ok:b.ok,message:(b.ok?b.message:b.error)??""}}}),(0,b.jsx)(h.RowMenu,{label:`Actions for ${a.name}`,items:[{label:"Rename",onSelect:()=>k("rename")},{label:"Change rate limit",onSelect:()=>k("rate")},{label:"Change expiry",onSelect:()=>k("expiry")},{label:"Change routing",onSelect:()=>k("routing")}]}),(0,b.jsx)(i.N,{open:null!==j,onOpenChange:a=>{a||k(null)},children:(0,b.jsx)(i.d,{className:"gap-0 p-0 sm:max-w-[520px]",showCloseButton:!1,children:j&&(0,b.jsx)(o,{mode:j,k:a,providers:d,onDone:()=>k(null)})})})]})}],659526)},136476,a=>{let b={"ai:invoke":{short:"models",long:"Chat completions and the model list through your provider connections."},"read:status":{short:"console data, MCP",long:"Read-only console data: GET /api/v1/status and the MCP server. Database names are aliases; no URLs, emails or secrets."},"write:notes":{short:"post AI notes",long:a.i(901615).C.writeNotesLong}};a.s(["j",0,"90d","D",0,20,"J",0,["ai:invoke"],"W",0,["7d","30d","90d","1y","never"],"o",0,{"7d":"In 7 days","30d":"In 30 days","90d":"In 90 days","1y":"In 1 year",never:"Never"},"B",0,["ai:invoke","read:status","write:notes"],"h",0,b])}]})();
1
+ (()=>{"use strict";module.exports=[992861,a=>{var b=a.i(187924),c=a.i(101169),d=a.i(218024),e=a.i(196790),f=a.i(817748),g=a.i(901615),h=a.i(238246),i=a.i(572131),j=a.i(823292),k=a.i(619089),l=a.i(507504),m=a.i(814574),n=a.i(405050);let o=(0,n.createServerReference)("40bc4a1f6c222bf3161e56d1e5d01067ce1de9a111",n.callServer,void 0,n.findSourceMapURL,"createKeyAction");function p({scopes:a}){return(0,b.jsx)(b.Fragment,{children:a.map(a=>(0,b.jsx)("span",{className:"mr-1 inline-block whitespace-nowrap rounded-[4px] border border-line bg-surface-2 px-[5px] font-mono text-xs text-ink-soft",children:a},a))})}var q=a.i(136476);function r({icon:a,title:c,sub:d}){return(0,b.jsxs)("div",{className:"flex items-start gap-3 px-[18px] pb-2 pt-4",children:[(0,b.jsx)("span",{className:"grid size-9 shrink-0 place-items-center rounded-lg bg-sunken text-ink-soft",children:a}),(0,b.jsxs)("div",{children:[(0,b.jsx)(m.F,{className:"text-base",children:c}),(0,b.jsx)(m.C,{className:"mt-0.5 text-[13px] text-ink-soft",children:d})]})]})}function s({onCreated:a,onCancel:c}){let[d,f]=(0,i.useState)(""),[h,l]=(0,i.useState)(q.J),[m,n]=(0,i.useState)(q.j),[t,u]=(0,i.useState)(String(q.D)),[v,w]=(0,i.useState)({}),[x,y]=(0,i.useState)(""),[z,A]=(0,i.useTransition)();return(0,b.jsxs)("form",{onSubmit:function(b){b.preventDefault(),A(async()=>{w({}),y("");try{let b=await o({name:d.trim(),scopes:q.B.filter(a=>h.includes(a)),expiry:m,ratePerMin:t.trim()});b.ok&&b.data?(j.c.success(b.message??"Key created."),a(b.data)):b.ok||(b.fieldErrors?w(b.fieldErrors):y(b.error))}catch{y("Something went wrong. Try again.")}})},noValidate:!0,children:[(0,b.jsx)(r,{icon:(0,b.jsx)(e.f,{size:19}),title:"Create API key",sub:"For one app or agent. Shown once."}),(0,b.jsxs)("div",{className:"px-[18px] pt-1.5",children:[(0,b.jsx)(k.O,{id:"key-name",label:"Name",help:"Lowercase letters, digits and dashes. Agents and Logs show it.",error:v.name,children:(0,b.jsx)("input",{id:"key-name",value:d,onChange:a=>f(a.target.value),placeholder:g.C.namePlaceholder,autoComplete:"off",autoCapitalize:"none",spellCheck:!1,className:k.S})}),(0,b.jsxs)("fieldset",{className:"mb-3.5",children:[(0,b.jsx)("legend",{className:"mb-[5px] text-[13px] font-medium",children:"Scopes"}),(0,b.jsx)("div",{className:"flex flex-col gap-1.5",children:q.B.map(a=>(0,b.jsxs)("label",{className:"flex cursor-pointer items-start gap-2",children:[(0,b.jsx)("input",{type:"checkbox",checked:h.includes(a),onChange:()=>l(b=>b.includes(a)?b.filter(b=>b!==a):[...b,a]),className:"mt-[3px] accent-brand"}),(0,b.jsxs)("span",{children:[(0,b.jsx)(p,{scopes:[a]})," ",(0,b.jsx)("span",{className:"text-[13px] text-ink-soft",children:q.h[a].short})]})]},a))}),v.scopes&&(0,b.jsx)("span",{className:"text-[12.5px] text-err",role:"alert",children:v.scopes})]}),(0,b.jsxs)("div",{className:"grid grid-cols-2 gap-3 max-[560px]:grid-cols-1",children:[(0,b.jsx)(k.O,{id:"key-expiry",label:"Expires",error:v.expiry,children:(0,b.jsx)("select",{id:"key-expiry",value:m,onChange:a=>n(a.target.value),className:k.S,children:q.W.map(a=>(0,b.jsx)("option",{value:a,children:q.o[a]},a))})}),(0,b.jsx)(k.O,{id:"key-rate",label:"Rate limit",help:"Requests per minute, 1–600. Applies before the provider's own limits.",error:v.ratePerMin,children:(0,b.jsx)("input",{id:"key-rate",inputMode:"numeric",value:t,onChange:a=>u(a.target.value),className:`${k.S} font-mono`})})]}),x&&(0,b.jsx)("p",{className:"mb-3 text-[13px] text-err",role:"alert",children:x})]}),(0,b.jsxs)("div",{className:"flex justify-end gap-2 border-t border-line px-[18px] py-3",children:[(0,b.jsx)(k.K,{onClick:c,disabled:z,children:"Cancel"}),(0,b.jsx)(k.K,{type:"submit",variant:"primary",disabled:z,children:z?"Creating…":"Create key"})]})]})}function t({created:a,onDone:e}){async function f(){try{await navigator.clipboard.writeText(a.key),j.c.success("Copied.")}catch{j.c.error("Couldn't copy. Select the key and copy it by hand.")}}return(0,b.jsxs)("div",{children:[(0,b.jsx)(r,{icon:(0,b.jsx)(c.f,{size:19}),title:`Key ${a.name} created`,sub:"Copy it now."}),(0,b.jsxs)("div",{className:"px-[18px] pb-3 pt-1.5",children:[(0,b.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,b.jsx)("code",{className:"min-w-0 flex-1 overflow-x-auto whitespace-nowrap rounded-md border border-line bg-sunken px-2 py-1.5 font-mono text-[12.5px]","data-testid":"new-key",children:a.key}),(0,b.jsxs)(k.K,{size:"sm",onClick:f,children:[(0,b.jsx)(d.f,{size:15,"aria-hidden":!0}),"Copy"]})]}),(0,b.jsx)("p",{className:"mt-2.5 rounded-md border border-warn-icon bg-warn-soft px-2.5 py-2 text-[13px] text-warn",children:"Watchbell keeps only a SHA-256 hash of this key, so it can't show it again. Lost it? Revoke it and create a new one."}),(0,b.jsxs)("p",{className:"mb-0 mt-3 text-[13px] text-ink-soft",children:["Next: put it in the app's environment as ",(0,b.jsx)("span",{className:"font-mono",children:"WATCHBELL_API_KEY"}),", then follow ",(0,b.jsx)(h.default,{href:"/ai",className:"text-brand",children:"Quick start"})," or ",(0,b.jsx)(h.default,{href:"/ai/connect",className:"text-brand",children:"Connect an agent"}),"."]})]}),(0,b.jsx)("div",{className:"flex justify-end gap-2 border-t border-line px-[18px] py-3",children:(0,b.jsx)(k.K,{variant:"primary",onClick:e,children:"Done"})})]})}a.s(["CreateKeyDialog",0,function(){let[a,c]=(0,i.useState)(!1),[d,e]=(0,i.useState)(null);function g(a){c(a),a||e(null)}return(0,l.useHoldRefresh)(a),(0,b.jsxs)(m.N,{open:a,onOpenChange:g,children:[(0,b.jsxs)(m.a,{render:(0,b.jsx)(k.K,{variant:"primary"}),children:[(0,b.jsx)(f.f,{size:16,"aria-hidden":!0}),"Create key"]}),(0,b.jsx)(m.d,{className:"gap-0 p-0 sm:max-w-[640px]",showCloseButton:!1,children:d?(0,b.jsx)(t,{created:d,onDone:()=>g(!1)}):(0,b.jsx)(s,{onCreated:e,onCancel:()=>g(!1)})})]})}],992861)},659526,a=>{var b=a.i(187924),c=a.i(572131),d=a.i(823292),e=a.i(611619),f=a.i(619089),g=a.i(507504),h=a.i(188406),i=a.i(814574),j=a.i(405050);let k=(0,j.createServerReference)("602698ebfebd6e93ed6e5ed30498a020d07b5782dd",j.callServer,void 0,j.findSourceMapURL,"changeKeyAction"),l=(0,j.createServerReference)("4020c403b74537e60aa0ef7b1c05edd2a90fb87307",j.callServer,void 0,j.findSourceMapURL,"revokeKeyAction");var m=a.i(136476);let n={rename:{title:a=>`Rename ${a}`,sub:"Agents and Logs show the name. Lowercase letters, digits and dashes.",cta:"Save name"},rate:{title:()=>"Change rate limit",sub:"Requests per minute, 1–600. Applies before the provider's own limits, within a minute.",cta:"Save limit"},expiry:{title:()=>"Change expiry",sub:"Counted from today. The key stops working at that date.",cta:"Save expiry"},routing:{title:()=>"Change routing",sub:"Pin this key to one provider and, if you like, one model. Without a pin it uses the default provider.",cta:"Save routing"}};function o({mode:a,k:e,providers:g,onDone:h}){let[j,l]=(0,c.useState)(e.name),[p,q]=(0,c.useState)(String(e.ratePerMin)),[r,s]=(0,c.useState)(e.expiresAt?"90d":"never"),[t,u]=(0,c.useState)(e.providerId??""),[v,w]=(0,c.useState)(e.model??""),[x,y]=(0,c.useState)({}),[z,A]=(0,c.useState)(""),[B,C]=(0,c.useTransition)(),D=n[a];return(0,b.jsxs)("form",{onSubmit:function(b){b.preventDefault(),C(async()=>{y({}),A("");try{let b=await k(e.id,"rename"===a?{kind:"rename",name:j.trim()}:"rate"===a?{kind:"rate",ratePerMin:p.trim()}:"expiry"===a?{kind:"expiry",expiry:r}:{kind:"routing",providerId:t||null,model:t?v.trim():null});b.ok?(d.c.success(b.message??"Key updated."),h()):b.fieldErrors?y(b.fieldErrors):A(b.error)}catch{A("Something went wrong. Try again.")}})},noValidate:!0,children:[(0,b.jsxs)("div",{className:"px-[18px] pb-2 pt-4",children:[(0,b.jsx)(i.F,{className:"text-base",children:D.title(e.name)}),(0,b.jsx)(i.C,{className:"mt-0.5 text-[13px] text-ink-soft",children:D.sub})]}),(0,b.jsxs)("div",{className:"px-[18px] pt-1.5",children:["rename"===a&&(0,b.jsx)(f.O,{id:"edit-name",label:"Name",error:x.name,children:(0,b.jsx)("input",{id:"edit-name",value:j,onChange:a=>l(a.target.value),autoComplete:"off",autoCapitalize:"none",spellCheck:!1,className:f.S})}),"rate"===a&&(0,b.jsx)(f.O,{id:"edit-rate",label:"Rate limit",help:"Requests per minute.",error:x.ratePerMin,children:(0,b.jsx)("input",{id:"edit-rate",inputMode:"numeric",value:p,onChange:a=>q(a.target.value),className:`${f.S} font-mono`})}),"expiry"===a&&(0,b.jsx)(f.O,{id:"edit-expiry",label:"Expires",error:x.expiry,children:(0,b.jsx)("select",{id:"edit-expiry",value:r,onChange:a=>s(a.target.value),className:f.S,children:m.W.map(a=>(0,b.jsx)("option",{value:a,children:m.o[a]},a))})}),"routing"===a&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(f.O,{id:"edit-provider",label:"Provider",help:g.length?void 0:"No provider is connected yet. Until one is, this key has nothing to pin to.",error:x.providerId,children:(0,b.jsxs)("select",{id:"edit-provider",value:t,onChange:a=>u(a.target.value),className:f.S,children:[(0,b.jsx)("option",{value:"",children:"No pin (default provider)"}),g.map(a=>(0,b.jsxs)("option",{value:a.id,children:[a.name,a.enabled?"":" (off)"]},a.id))]})}),(0,b.jsx)(f.O,{id:"edit-model",label:"Model",help:"Optional. A Gemini model id, for example gemini-3.8-flash. Empty uses the provider's default.",error:x.model,children:(0,b.jsx)("input",{id:"edit-model",value:v,onChange:a=>w(a.target.value),disabled:!t,placeholder:"gemini-3.8-flash",autoComplete:"off",autoCapitalize:"none",spellCheck:!1,className:`${f.S} font-mono`})})]}),z&&(0,b.jsx)("p",{className:"mb-3 text-[13px] text-err",role:"alert",children:z})]}),(0,b.jsxs)("div",{className:"flex justify-end gap-2 border-t border-line px-[18px] py-3",children:[(0,b.jsx)(f.K,{onClick:h,disabled:B,children:"Cancel"}),(0,b.jsx)(f.K,{type:"submit",variant:"primary",disabled:B,children:B?"Saving…":D.cta})]})]})}a.s(["KeyActions",0,function({k:a,providers:d}){let[j,k]=(0,c.useState)(null);return(0,g.useHoldRefresh)(null!==j),(0,b.jsxs)("span",{className:"inline-flex items-center gap-1",children:[(0,b.jsx)(e.f,{trigger:(0,b.jsx)(f.K,{size:"sm",children:"Revoke"}),title:`Revoke ${a.name}?`,body:`Calls with ${a.prefix}… answer 401 within a minute. Agents using it show "Key revoked". This can't be undone; create a new key instead.`,cta:"Revoke key",danger:!0,onConfirm:async()=>{let b=await l(a.id);return{ok:b.ok,message:(b.ok?b.message:b.error)??""}}}),(0,b.jsx)(h.RowMenu,{label:`Actions for ${a.name}`,items:[{label:"Rename",onSelect:()=>k("rename")},{label:"Change rate limit",onSelect:()=>k("rate")},{label:"Change expiry",onSelect:()=>k("expiry")},{label:"Change routing",onSelect:()=>k("routing")}]}),(0,b.jsx)(i.N,{open:null!==j,onOpenChange:a=>{a||k(null)},children:(0,b.jsx)(i.d,{className:"gap-0 p-0 sm:max-w-[520px]",showCloseButton:!1,children:j&&(0,b.jsx)(o,{mode:j,k:a,providers:d,onDone:()=>k(null)})})})]})}],659526)},136476,a=>{let b={"ai:invoke":{short:"models",long:"Chat completions and the model list through your provider connections."},"read:status":{short:"console data, MCP",long:"Read-only console data: GET /api/v1/status and the MCP server. Database names are aliases; no URLs, emails or secrets."},"write:notes":{short:"post AI notes",long:a.i(901615).C.writeNotesLong}};a.s(["j",0,"90d","D",0,20,"J",0,["ai:invoke"],"W",0,["7d","30d","90d","1y","never"],"o",0,{"7d":"In 7 days","30d":"In 30 days","90d":"In 90 days","1y":"In 1 year",never:"Never"},"B",0,["ai:invoke","read:status","write:notes"],"h",0,b])}]})();
2
2
 
3
3
  //# sourceMappingURL=src_10zavgy86u3us._.js.map
@@ -1,3 +1,3 @@
1
- (()=>{"use strict";module.exports=[217897,a=>{var b=a.i(187924),c=a.i(572131),d=a.i(823292),e=a.i(188406),f=a.i(742680),g=a.i(293078),h=a.i(752818);a.s(["AppMenu",0,function({app:a}){let[,i]=(0,c.useTransition)(),j=(0,h.f)(),k=[{label:"Redeploy",later:6},...a.siteUrl?[{label:"Open site",href:a.siteUrl}]:[],{label:"View logs",later:5}];return a.monitorCount>0&&k.push({label:a.paused?"Resume monitors":"Pause monitors",onSelect:()=>j(()=>new Promise(b=>i(async()=>{try{let b=await (0,g.f)(a.id,!a.paused);b.ok?d.c.success(b.message??""):d.c.error(b.error)}catch{d.c.error("Something went wrong. Try again.")}finally{b()}})))}),(0,b.jsx)(e.RowMenu,{items:k,label:(0,f.J)(a.name)})}])},293078,752818,a=>{var b=a.i(405050);let c=(0,b.createServerReference)("60366e1f5a6a959733f3b03a61c7a3da273ded3b18",b.callServer,void 0,b.findSourceMapURL,"pauseAppMonitors");a.s(["f",0,c],293078);var d=a.i(572131);a.s(["f",0,function(){let a=(0,d.useRef)(!1);return b=>!a.current&&(a.current=!0,b().catch(()=>void 0).finally(()=>{a.current=!1}),!0)}],752818)},964887,a=>{var b=a.i(187924),c=a.i(572131),d=a.i(823292),e=a.i(405050);let f=(0,e.createServerReference)("40ea28cee9911f74e2ae88ded2ae79b22ba295dddb",e.callServer,void 0,e.findSourceMapURL,"dismissRecommendation");var g=a.i(619089);a.s(["DismissButton",0,function({recKey:a}){let[e,h]=(0,c.useTransition)();return(0,b.jsx)(g.K,{size:"sm",disabled:e,onClick:()=>h(async()=>{try{let b=await f(a);b.ok?d.c.success(b.message??"Dismissed."):d.c.error(b.error)}catch{d.c.error("Something went wrong. Try again.")}}),children:e?"Dismissing…":"Dismiss"})}],964887)},585709,a=>{var b=a.i(187924),c=a.i(572131),d=a.i(486747),e=a.i(462007),f=a.i(427110);a.s(["PlainTable",0,function({head:a,rows:g}){let[h,i]=(0,c.useState)(1),j=(0,f.$)(g,h);return j.page!==h&&i(j.page),(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("div",{className:"overflow-x-auto",children:(0,b.jsxs)("table",{className:e.o,children:[(0,b.jsx)(e.U,{head:a}),(0,b.jsx)("tbody",{children:j.rows.map(a=>(0,b.jsx)(c.Fragment,{children:a.row},a.key))})]})}),(0,b.jsx)(d.f,{page:j.page,pages:j.pages,text:(0,f.z)(j),onPage:i})]})}])}]})();
1
+ (()=>{"use strict";module.exports=[217897,a=>{var b=a.i(187924),c=a.i(572131),d=a.i(823292),e=a.i(188406),f=a.i(742680),g=a.i(405174),h=a.i(752818);a.s(["AppMenu",0,function({app:a}){let[,i]=(0,c.useTransition)(),j=(0,h.f)(),k=[{label:"Redeploy",later:6},...a.siteUrl?[{label:"Open site",href:a.siteUrl}]:[],{label:"View logs",later:5}];return a.monitorCount>0&&k.push({label:a.paused?"Resume monitors":"Pause monitors",onSelect:()=>j(()=>new Promise(b=>i(async()=>{try{let b=await (0,g.f)(a.id,!a.paused);b.ok?d.c.success(b.message??""):d.c.error(b.error)}catch{d.c.error("Something went wrong. Try again.")}finally{b()}})))}),(0,b.jsx)(e.RowMenu,{items:k,label:(0,f.J)(a.name)})}])},405174,752818,a=>{var b=a.i(405050);let c=(0,b.createServerReference)("6078a6727342c4ef6348dcecf887d0ca6d82be3f59",b.callServer,void 0,b.findSourceMapURL,"pauseAppMonitors");a.s(["f",0,c],405174);var d=a.i(572131);a.s(["f",0,function(){let a=(0,d.useRef)(!1);return b=>!a.current&&(a.current=!0,b().catch(()=>void 0).finally(()=>{a.current=!1}),!0)}],752818)},964887,a=>{var b=a.i(187924),c=a.i(572131),d=a.i(823292),e=a.i(405050);let f=(0,e.createServerReference)("403f3dad9b3a14ff3e4f06aa90d294f993a4ac5531",e.callServer,void 0,e.findSourceMapURL,"dismissRecommendation");var g=a.i(619089);a.s(["DismissButton",0,function({recKey:a}){let[e,h]=(0,c.useTransition)();return(0,b.jsx)(g.K,{size:"sm",disabled:e,onClick:()=>h(async()=>{try{let b=await f(a);b.ok?d.c.success(b.message??"Dismissed."):d.c.error(b.error)}catch{d.c.error("Something went wrong. Try again.")}}),children:e?"Dismissing…":"Dismiss"})}],964887)},585709,a=>{var b=a.i(187924),c=a.i(572131),d=a.i(486747),e=a.i(462007),f=a.i(427110);a.s(["PlainTable",0,function({head:a,rows:g}){let[h,i]=(0,c.useState)(1),j=(0,f.$)(g,h);return j.page!==h&&i(j.page),(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("div",{className:"overflow-x-auto",children:(0,b.jsxs)("table",{className:e.o,children:[(0,b.jsx)(e.U,{head:a}),(0,b.jsx)("tbody",{children:j.rows.map(a=>(0,b.jsx)(c.Fragment,{children:a.row},a.key))})]})}),(0,b.jsx)(d.f,{page:j.page,pages:j.pages,text:(0,f.z)(j),onPage:i})]})}])}]})();
2
2
 
3
- //# sourceMappingURL=src_1eermasnm2cgy._.js.map
3
+ //# sourceMappingURL=src_11_hakxhnybdd._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[[829534,a=>{let b=(0,a.i(211857).registerClientReference)(function(){throw Error("Attempted to call ActionsRepoForm() from the server but ActionsRepoForm is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/app/(console)/settings/actions-repo-form.tsx","ActionsRepoForm");a.s(["ActionsRepoForm",0,b])},386180,a=>{var b=a.i(829534);a.n(b)},541088,a=>{let b=(0,a.i(211857).registerClientReference)(function(){throw Error("Attempted to call AddMemberDialog() from the server but AddMemberDialog is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/app/(console)/settings/add-member-dialog.tsx","AddMemberDialog");a.s(["AddMemberDialog",0,b])},120396,a=>{var b=a.i(541088);a.n(b)},933292,a=>{let b=(0,a.i(211857).registerClientReference)(function(){throw Error("Attempted to call BudgetForm() from the server but BudgetForm is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/app/(console)/settings/budget-form.tsx","BudgetForm");a.s(["BudgetForm",0,b])},285100,a=>{var b=a.i(933292);a.n(b)},915832,a=>{let b=(0,a.i(211857).registerClientReference)(function(){throw Error("Attempted to call InviteDialog() from the server but InviteDialog is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/app/(console)/settings/invite-dialog.tsx","InviteDialog");a.s(["InviteDialog",0,b])},173616,a=>{var b=a.i(915832);a.n(b)},7109,a=>{var b=a.i(211857);let c=(0,b.registerClientReference)(function(){throw Error("Attempted to call RemoveMember() from the server but RemoveMember is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/app/(console)/settings/member-actions.tsx","RemoveMember"),d=(0,b.registerClientReference)(function(){throw Error("Attempted to call RevokeInvite() from the server but RevokeInvite is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/app/(console)/settings/member-actions.tsx","RevokeInvite"),e=(0,b.registerClientReference)(function(){throw Error("Attempted to call RoleSelect() from the server but RoleSelect is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/app/(console)/settings/member-actions.tsx","RoleSelect");a.s(["RemoveMember",0,c,"RevokeInvite",0,d,"RoleSelect",0,e])},564326,a=>{var b=a.i(7109);a.n(b)},976739,a=>{var b=a.i(907997),c=a.i(803681),d=a.i(75148),e=a.i(473083),f=a.i(109307),g=a.i(534908),h=a.i(149396),i=a.i(492665),j=a.i(529960),k=a.i(686251),l=a.i(462820),m=a.i(976937),n=a.i(972123),o=a.i(386180);async function p(){let a=await (0,m.c)().catch(()=>null);return(0,b.jsxs)(c.N,{title:"Lockfile via GitHub Actions",meta:a?(0,b.jsx)(k.F,{state:"ok",children:"On"}):(0,b.jsx)(k.F,{state:"off",children:"Off"}),children:[(0,b.jsx)("p",{className:"text-[13px] text-ink-soft",children:l.K.lockfileIntro}),(0,b.jsxs)("ol",{className:"mt-2 flex list-decimal flex-col gap-3 pl-5 text-[13px]",children:[(0,b.jsxs)("li",{children:["Create a repository on GitHub, for example ",(0,b.jsx)("span",{className:"font-mono",children:"watchbell-actions"})," (private is fine)."]}),(0,b.jsxs)("li",{children:["Add the file ",(0,b.jsx)("span",{className:"font-mono",children:".github/workflows/watchbell-lockfile.yml"})," ",(0,b.jsx)(j.CopyButton,{text:".github/workflows/watchbell-lockfile.yml",label:"Copy path"})," with this content:",(0,b.jsx)("div",{className:"mt-1 flex justify-end",children:(0,b.jsx)(j.CopyButton,{text:n.G,label:"Copy workflow"})}),(0,b.jsx)("code",{className:"block overflow-x-auto rounded-md border border-line bg-surface-2 px-3 py-2 font-mono text-[12.5px] whitespace-pre mt-1 max-h-72",children:n.G})]}),(0,b.jsxs)("li",{children:["In that repository: Settings › Secrets and variables › Actions › New repository secret, name ",(0,b.jsx)("span",{className:"font-mono",children:"WATCHBELL_PR_TOKEN"})," ",(0,b.jsx)(j.CopyButton,{text:"WATCHBELL_PR_TOKEN",label:"Copy name"}),", value: your GitHub PR-write token (the same one on Connections)."]}),(0,b.jsx)("li",{children:"Give the PR-write token access to this new repository too (GitHub › Settings › Developer settings › your token › Repository access), with Contents: Read and write."}),(0,b.jsx)("li",{children:"Save the repository name here:"})]}),(0,b.jsx)("div",{className:"mt-2",children:(0,b.jsx)(o.ActionsRepoForm,{current:a})})]})}var q=a.i(791444),r=a.i(840784),s=a.i(186133),t=a.i(532620),u=a.i(655206),v=a.i(634418),w=a.i(688275),x=a.i(672319),y=a.i(711251),z=a.i(245710);function A(a){return a>=86400&&a%86400==0?`every ${a/86400} day${86400===a?"":"s"}`:a>=3600&&a%3600==0?`every ${a/3600} h`:a>=60&&a%60==0?`every ${a/60} min`:`every ${a} s`}let B={heartbeats:"Heartbeat monitors: recompute from the last ping",checks:"HTTP uptime checks",vercel:"Vercel projects and deployments",supabase:"Supabase project status",supabaseUsage:"Supabase service health and traffic",neon:"Neon status and usage",firebase:"Firestore health read",firebaseUsage:"Firestore usage",extraDbs:"Turso, Upstash Redis and Cloudflare D1 status and usage",cloudflare:"Cloudflare zones and DNS",domains:"Vercel domain settings",tls:"TLS certificate expiry",rdap:"Domain expiry (RDAP)",eol:"Next.js end-of-life data",status:"Provider status feeds",logs:"Copy of Vercel warning and error logs",pageviews:"Web Analytics page views",alerts:"Alert rules and notices",digest:"Digest due check"},C={cron_job_org:"cron-job.org",qstash:"QStash",vercel_cron:"Vercel Cron",manual:"Refresh now"},D=v.t.checks,E="not read yet",F=a=>Math.round(10*a)/10,G=a=>`${a} days`;var H=a.i(715208),I=a.i(285100);async function J(){let a=new Date,[d,e,f,g,h]=await Promise.all([(0,t.V)(),(0,t.R)("neon_project"),(0,t.e)(),(0,r.G)(a),(0,s.j)()]),i=g.filter(a=>!a.gone),j=function(a,b=y.o){let c,d=[],e=a=>null===a?"none":a>=b.errPct?"err":a>=b.warnPct?"warn":"ok";for(let b of(a.slots.length||d.push({key:"supabase",item:"Supabase free projects",limit:`${x.V} active projects per account`,use:"no Supabase account connected",pct:null,tone:"none"}),a.slots)){let a=F(b.used/b.total*100);d.push({key:`supabase-${b.account}`,item:`Supabase free projects \xb7 ${b.account}`,limit:`${b.total} active per account`,use:`${b.used} of ${b.total} used${b.planUnknown?" (plan not read for every org)":""}`,pct:a,tone:e(a)})}for(let b of(a.neon.length||d.push({key:"neon",item:"Neon CU-hours",limit:`${w.a.cuHours} CU-hours / month per project`,use:"no Neon project watched",pct:null,tone:"none"}),a.neon))d.push({key:`neon-${b.id}`,item:`Neon CU-hours \xb7 ${b.alias}`,limit:`${w.a.cuHours} CU-hours / month per project`,use:b.cu?`${b.cu.value} CU-hours`:E,pct:b.cu?.pct??null,tone:e(b.cu?.pct??null)});let f=F(288/b.qstashPerDay*100);return d.push({key:"qstash",item:"Upstash QStash messages",limit:`${b.qstashPerDay.toLocaleString("en-US")} / day`,use:`288 / day (watchdog ${A(300)})`,pct:f,tone:e(f)}),d.push({key:"cron",item:"cron-job.org runs",limit:"1 run / min (shortest free interval)",use:`1 run / min (${(86400/D).toLocaleString("en-US")} / day)`,pct:null,tone:"none"}),d.push({key:"vercel",item:"Vercel Hobby",limit:`${(c=b.vercelInvocations)>=1e6&&c%1e6==0?`${c/1e6}M`:c.toLocaleString("en-US")} invocations, ${b.vercelCpuHours} h CPU, ${b.vercelMemoryGbH} GB-h memory / month`,use:E,pct:null,tone:"none"}),d.push({key:"analytics",item:"Vercel Web Analytics",limit:`${b.webAnalyticsEvents.toLocaleString("en-US")} events / month`,use:0===a.apps.total?"no apps watched":0===a.apps.read?`${E} \xb7 events ${E}`:`${a.apps.enabled} of ${a.apps.total} app${1===a.apps.total?"":"s"} enabled \xb7 events ${E}`,pct:null,tone:"none"}),d}({slots:(0,H.d)(d),neon:(0,H.D)(e,a,f).map(a=>({id:a.id,alias:a.alias,cu:a.cu})),apps:{total:i.length,read:i.filter(a=>null!==a.pageViews).length,enabled:i.filter(a=>a.pageViews?.enabled===!0).length}},h);return(0,b.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,b.jsx)(c.N,{title:"Free tier budget",flush:!0,meta:"Everything stays on free plans",children:(0,b.jsx)("div",{className:"overflow-x-auto",children:(0,b.jsxs)("table",{className:q.o,children:[(0,b.jsx)(q.U,{head:["Item","Free limit","Current use"]}),(0,b.jsx)("tbody",{children:j.map(a=>(0,b.jsxs)("tr",{children:[(0,b.jsx)("td",{className:q.z,children:a.item}),(0,b.jsx)("td",{className:`${q.z} text-ink-soft`,children:a.limit}),(0,b.jsxs)("td",{className:q.z,children:[(0,b.jsx)("span",{className:a.use.includes("not read yet")?"text-ink-soft":"font-mono text-[12.5px]",children:a.use}),null!==a.pct&&(0,b.jsx)(c.e,{pct:a.pct,tone:"warn"===a.tone||"err"===a.tone?a.tone:void 0})]})]},a.key))})]})})}),(0,b.jsx)(c.N,{title:"Free tier limits",meta:"Correct them here when a provider changes its free plan",children:(0,b.jsx)(I.BudgetForm,{saved:h})})]})}var K=a.i(530385),L=a.i(395936),M=a.i(701702),N=a.i(548734),O=a.i(837137),P=a.i(556987),Q=a.i(103493);async function R(){let a=await (0,N.f)().select({id:O.collectorRuns.id,startedAt:O.collectorRuns.startedAt,trigger:O.collectorRuns.trigger,tasks:O.collectorRuns.tasks,ok:O.collectorRuns.ok,errorSummary:O.collectorRuns.errorSummary,durationMs:O.collectorRuns.durationMs}).from(O.collectorRuns).orderBy((0,K.A)(O.collectorRuns.startedAt)).limit(20),d=await (0,t.e)().catch(()=>P.a),e=function(a,b=a=>a){return a.map(a=>{var c;let d;return{id:a.id,at:`${(0,z.L)(a.startedAt)} ${(0,z.U)(a.startedAt)}`,trigger:C[a.trigger]??a.trigger,tasks:a.tasks.length?`${a.tasks.length} task${1===a.tasks.length?"":"s"}`:"none",duration:null===(c=a.durationMs)?"—":c<1e3?`${c} ms`:`${(c/1e3).toFixed(1)} s`,ok:a.ok,summary:null===a.ok?"Not finished":a.ok?"OK":(d=b(a.errorSummary?.trim()||"Finished with problems")).length<=80?d:`${d.slice(0,79).trimEnd()}…`}})}(a,a=>(0,P.J)(a,d));return(0,b.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,b.jsx)(Q.f,{}),(0,b.jsxs)(c.N,{title:"What runs when",flush:!0,meta:"Per run, a task starts only when its interval has passed",children:[(0,b.jsx)("div",{className:"overflow-x-auto",children:(0,b.jsxs)("table",{className:q.o,children:[(0,b.jsx)(q.U,{head:["Task","Runs"]}),(0,b.jsx)("tbody",{children:(function(a=v.t){return Object.keys(a).map(b=>({task:b,label:B[b],every:A(a[b])}))})().map(a=>(0,b.jsxs)("tr",{children:[(0,b.jsxs)("td",{className:q.z,children:[a.label," ",(0,b.jsx)("span",{className:"ml-1 font-mono text-xs text-ink-soft",children:a.task})]}),(0,b.jsx)("td",{className:`${q.z} text-ink-soft`,children:a.every})]},a.task))})]})}),(0,b.jsxs)("div",{className:"grid grid-cols-[260px_minmax(0,1fr)] items-center gap-4 border-t border-line px-[18px] py-3 max-[720px]:grid-cols-1 max-[720px]:gap-1",children:[(0,b.jsxs)("div",{className:"font-medium",children:["Keep Supabase projects awake",(0,b.jsx)("span",{className:"mt-0.5 block text-[12.5px] font-normal text-ink-soft",children:"Off by default. Set per project on the Supabase page (Keep active, Auto-restore; owner only). Not offered for Neon, because staying awake would use up its CU-hours."})]}),(0,b.jsx)("span",{children:(0,b.jsx)(L.default,{href:"/supabase",className:(0,c.R)({size:"sm"}),children:"Open Supabase"})})]})]}),(0,b.jsx)(c.N,{title:"Last 20 runs",flush:!0,meta:"Times in WIB",children:0===e.length?(0,b.jsx)("p",{className:"px-[18px] pb-4 text-ink-soft",children:"The collector hasn't run yet."}):(0,b.jsx)("div",{className:"overflow-x-auto",children:(0,b.jsxs)("table",{className:q.o,children:[(0,b.jsx)(q.U,{head:["Started","Trigger","Tasks","Duration","Result"]}),(0,b.jsx)("tbody",{children:e.map(a=>(0,b.jsxs)("tr",{children:[(0,b.jsx)("td",{className:`${q.z} font-mono text-[12.5px]`,children:a.at}),(0,b.jsx)("td",{className:q.z,children:a.trigger}),(0,b.jsx)("td",{className:q.z,children:a.tasks}),(0,b.jsx)("td",{className:`${q.z} font-mono text-[12.5px]`,children:a.duration}),(0,b.jsx)("td",{className:q.z,children:(0,b.jsx)(k.F,{state:null===a.ok?"build":a.ok?"ok":"warn",children:(0,b.jsx)(M.MaskedText,{text:a.summary})})})]},a.id))})]})})})]})}var S=a.i(532971),T=a.i(104195);async function U(){let a=await (0,s.J)(),d=function(a=u.f){return[{kind:"Raw checks",keeps:G(a.checks),note:"Every HTTP check result; the hourly rollups below keep the history."},{kind:"Hourly rollups",keeps:G(a.rollupsHourly),note:"Uptime and response numbers per monitor and hour."},{kind:"Stored logs",keeps:G(a.storedLogs),note:"The copy of Vercel warning and error logs."},{kind:"Deployments",keeps:G(a.deployments),note:"Older ones only; the current and the previous production deployment are always kept."},{kind:"Events",keeps:G(a.events),note:"The activity feed."},{kind:"Alerts",keeps:G(a.alerts),note:"Resolved alerts only, counted from when they resolved; open alerts stay."},{kind:"Collector runs",keeps:G(a.collectorRuns),note:"The run history shown in the Collector tab."},{kind:"Advisor dismissals",keeps:G(a.recommendationDismissals),note:"A dismissal only matters for 30 days."}]}(a),e=S.L.map(a=>({key:a,kind:S.I[a],note:d.find(b=>b.kind===S.I[a])?.note??""}));return(0,b.jsxs)(c.N,{title:"Retention",flush:!0,meta:"Cleaned daily at 03:00 WIB",children:[(0,b.jsx)("p",{className:"px-[18px] pb-3 text-ink-soft",children:"Only the console's own history is deleted. Nothing is ever deleted at a provider. The monthly backup runs on the 1st, before the clean-up, and reads hourly rollups, events and alerts, which keep at least 60 days."}),(0,b.jsx)(T.RetentionForm,{saved:a,rows:e})]})}var V=a.i(525826),W=a.i(93321),X=a.i(154756),Y=a.i(267767),Z=a.i(371289),$=a.i(120396),_=a.i(173616),aa=a.i(564326);async function ab({actorId:a}){let d=(0,Z.F)(),e=await (0,N.f)().select().from(O.members).orderBy((0,K.A)(O.members.createdAt)),f=d?[]:await (0,N.f)().select().from(O.invites).where((0,W.M)(O.invites.acceptedAt)).orderBy((0,K.A)(O.invites.createdAt)),g=new Date,h="border-y border-line bg-surface-2 px-3 py-2 text-left text-[12.5px] font-medium text-ink-soft first:pl-[18px]",i="border-b border-line px-3 py-[9px] whitespace-nowrap first:pl-[18px]";return(0,b.jsxs)(c.N,{flush:!0,children:[(0,b.jsx)("div",{className:"flex flex-wrap items-center gap-2 px-[18px] pb-3 pt-3.5",children:d?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{className:"text-ink-soft",children:(0,Z.W)()?"In the demo you are the only member. On a real install an owner adds people here.":"Members sign in with email and password. A new member gets a temporary password and picks their own at their first sign-in."}),!(0,Z.W)()&&(0,b.jsx)($.AddMemberDialog,{})]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{className:"text-ink-soft",children:"Invite-only: people sign in with an email link, and only invited emails get in. Preview deployments stay behind Vercel Authentication."}),(0,b.jsx)(_.InviteDialog,{})]})}),(0,b.jsx)("div",{className:"overflow-x-auto",children:(0,b.jsxs)("table",{className:"w-full border-collapse",children:[(0,b.jsx)("thead",{children:(0,b.jsxs)("tr",{children:[(0,b.jsx)("th",{className:h,children:"User"}),(0,b.jsx)("th",{className:h,children:"Role"}),(0,b.jsx)("th",{className:h,children:"Last seen"}),(0,b.jsx)("th",{className:h,children:"Status"}),(0,b.jsx)("th",{className:h})]})}),(0,b.jsxs)("tbody",{children:[e.map(c=>(0,b.jsxs)("tr",{className:"hover:bg-hover",children:[(0,b.jsx)("td",{className:i,children:(0,b.jsx)(X.F,{kind:"usr",name:c.email})}),(0,b.jsx)("td",{className:i,children:c.id===a?(0,b.jsx)("span",{className:"rounded-[5px] border border-line bg-surface-2 px-1.5 text-xs text-ink-soft",children:"Owner (you)"}):(0,b.jsx)(aa.RoleSelect,{memberId:c.id,email:c.email,role:c.role})}),(0,b.jsx)("td",{className:`${i} text-ink-soft`,children:(a=>{if(!a)return"never";let b=Math.round((Date.now()-a.getTime())/6e4);if(b<2)return"now";if(b<60)return`${b} min ago`;let c=Math.round(b/60);return c<48?`${c} h ago`:`${Math.round(c/24)} days ago`})(c.lastSeenAt)}),(0,b.jsx)("td",{className:i,children:(0,b.jsx)(k.F,{state:"ok",children:"Active"})}),(0,b.jsx)("td",{className:i,children:c.id!==a&&(0,b.jsx)(aa.RemoveMember,{memberId:c.id,email:c.email,deletesAccount:"selfhost"===(0,Z.c)()})})]},c.id)),f.map(a=>{let c=(0,Y.R)(a,g);return(0,b.jsxs)("tr",{className:"hover:bg-hover",children:[(0,b.jsx)("td",{className:i,children:(0,b.jsx)(X.F,{kind:"usr",name:a.email})}),(0,b.jsx)("td",{className:i,children:(0,b.jsx)("span",{className:"rounded-[5px] border border-line bg-surface-2 px-1.5 text-xs text-ink-soft",children:a.role[0].toUpperCase()+a.role.slice(1)})}),(0,b.jsx)("td",{className:`${i} text-ink-soft`,children:"invited"}),(0,b.jsx)("td",{className:i,children:"open"===c?(0,b.jsx)(k.F,{state:"off",children:"Invited"}):(0,b.jsx)(k.F,{state:"warn",children:"Invite expired"})}),(0,b.jsx)("td",{className:i,children:(0,b.jsx)(aa.RevokeInvite,{inviteId:a.id,email:a.email})})]},a.id)})]})]})})]})}let ac=["collector","budget","users","retention","status-page"];async function ad({searchParams:a}){let j=await (0,f.B)("owner");if(!j.ok)return(0,b.jsx)(d.f,{role:j.member.role});let[{tab:k},l]=await Promise.all([a,(0,h.a)()]),m=g.extensions.settingsTabs??[],n=!g.extensions.runner,o=[...ac,...n?["lockfile"]:[],...m.map(a=>a.key)];return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(c.L,{crumbs:[{label:"Administration"},{label:"Settings"}],title:"Settings"}),(0,b.jsxs)(e.Tabs,{defaultValue:k&&o.includes(k)?k:"users",className:"mt-3.5",children:[(0,b.jsxs)(e.TabsList,{variant:"line",children:[(0,b.jsx)(e.TabsTrigger,{value:"collector",children:"Collector"}),(0,b.jsx)(e.TabsTrigger,{value:"budget",children:"Free tier budget"}),(0,b.jsx)(e.TabsTrigger,{value:"users",children:"Users"}),(0,b.jsx)(e.TabsTrigger,{value:"retention",children:"Retention"}),(0,b.jsx)(e.TabsTrigger,{value:"status-page",children:"Status page"}),n&&(0,b.jsx)(e.TabsTrigger,{value:"lockfile",children:"Lockfile"}),m.map(a=>(0,b.jsx)(e.TabsTrigger,{value:a.key,children:a.label},a.key))]}),(0,b.jsx)(e.TabsContent,{value:"collector",className:"mt-4",children:(0,b.jsx)(R,{})}),(0,b.jsx)(e.TabsContent,{value:"budget",className:"mt-4",children:(0,b.jsx)(J,{})}),(0,b.jsx)(e.TabsContent,{value:"users",className:"mt-4",children:(0,b.jsx)(ab,{actorId:j.member.id})}),(0,b.jsx)(e.TabsContent,{value:"retention",className:"mt-4",children:(0,b.jsx)(U,{})}),(0,b.jsx)(e.TabsContent,{value:"status-page",className:"mt-4",children:(0,b.jsx)(V.StatusPageTab,{settings:l,siteUrl:(0,i.f)().SITE_URL})}),n&&(0,b.jsx)(e.TabsContent,{value:"lockfile",className:"mt-4",children:(0,b.jsx)(p,{})}),m.map(({key:a,Tab:c})=>(0,b.jsx)(e.TabsContent,{value:a,className:"mt-4",children:(0,b.jsx)(c,{})},a))]})]})}a.s(["default",0,ad],976739)},718121,a=>{let b=(0,a.i(211857).registerClientReference)(function(){throw Error("Attempted to call RetentionForm() from the server but RetentionForm is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/app/(console)/settings/retention-form.tsx","RetentionForm");a.s(["RetentionForm",0,b])},104195,a=>{var b=a.i(718121);a.n(b)},391022,a=>{let b=(0,a.i(211857).registerClientReference)(function(){throw Error("Attempted to call StatusPageTab() from the server but StatusPageTab is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/app/(console)/settings/status-page-tab.tsx","StatusPageTab");a.s(["StatusPageTab",0,b])},525826,a=>{var b=a.i(391022);a.n(b)},736935,a=>{let b=(0,a.i(211857).registerClientReference)(function(){throw Error("Attempted to call CopyButton() from the server but CopyButton is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/components/copy-button.tsx","CopyButton");a.s(["CopyButton",0,b])},529960,a=>{var b=a.i(736935);a.n(b)}],814659,function(a){a.n(a.i(976739))}];
1
+ module.exports=[[829534,a=>{let b=(0,a.i(211857).registerClientReference)(function(){throw Error("Attempted to call ActionsRepoForm() from the server but ActionsRepoForm is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/app/(console)/settings/actions-repo-form.tsx","ActionsRepoForm");a.s(["ActionsRepoForm",0,b])},386180,a=>{var b=a.i(829534);a.n(b)},541088,a=>{let b=(0,a.i(211857).registerClientReference)(function(){throw Error("Attempted to call AddMemberDialog() from the server but AddMemberDialog is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/app/(console)/settings/add-member-dialog.tsx","AddMemberDialog");a.s(["AddMemberDialog",0,b])},120396,a=>{var b=a.i(541088);a.n(b)},933292,a=>{let b=(0,a.i(211857).registerClientReference)(function(){throw Error("Attempted to call BudgetForm() from the server but BudgetForm is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/app/(console)/settings/budget-form.tsx","BudgetForm");a.s(["BudgetForm",0,b])},285100,a=>{var b=a.i(933292);a.n(b)},915832,a=>{let b=(0,a.i(211857).registerClientReference)(function(){throw Error("Attempted to call InviteDialog() from the server but InviteDialog is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/app/(console)/settings/invite-dialog.tsx","InviteDialog");a.s(["InviteDialog",0,b])},173616,a=>{var b=a.i(915832);a.n(b)},7109,a=>{var b=a.i(211857);let c=(0,b.registerClientReference)(function(){throw Error("Attempted to call RemoveMember() from the server but RemoveMember is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/app/(console)/settings/member-actions.tsx","RemoveMember"),d=(0,b.registerClientReference)(function(){throw Error("Attempted to call RevokeInvite() from the server but RevokeInvite is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/app/(console)/settings/member-actions.tsx","RevokeInvite"),e=(0,b.registerClientReference)(function(){throw Error("Attempted to call RoleSelect() from the server but RoleSelect is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/app/(console)/settings/member-actions.tsx","RoleSelect");a.s(["RemoveMember",0,c,"RevokeInvite",0,d,"RoleSelect",0,e])},564326,a=>{var b=a.i(7109);a.n(b)},976739,a=>{var b=a.i(907997),c=a.i(803681),d=a.i(75148),e=a.i(473083),f=a.i(109307),g=a.i(534908),h=a.i(149396),i=a.i(492665),j=a.i(529960),k=a.i(686251),l=a.i(462820),m=a.i(976937),n=a.i(972123),o=a.i(386180);async function p(){let a=await (0,m.c)().catch(()=>null);return(0,b.jsxs)(c.N,{title:"Lockfile via GitHub Actions",meta:a?(0,b.jsx)(k.F,{state:"ok",children:"On"}):(0,b.jsx)(k.F,{state:"off",children:"Off"}),children:[(0,b.jsx)("p",{className:"text-[13px] text-ink-soft",children:l.K.lockfileIntro}),(0,b.jsxs)("ol",{className:"mt-2 flex list-decimal flex-col gap-3 pl-5 text-[13px]",children:[(0,b.jsxs)("li",{children:["Create a repository on GitHub, for example ",(0,b.jsx)("span",{className:"font-mono",children:"watchbell-actions"})," (private is fine)."]}),(0,b.jsxs)("li",{children:["Add the file ",(0,b.jsx)("span",{className:"font-mono",children:".github/workflows/watchbell-lockfile.yml"})," ",(0,b.jsx)(j.CopyButton,{text:".github/workflows/watchbell-lockfile.yml",label:"Copy path"})," with this content:",(0,b.jsx)("div",{className:"mt-1 flex justify-end",children:(0,b.jsx)(j.CopyButton,{text:n.G,label:"Copy workflow"})}),(0,b.jsx)("code",{className:"block overflow-x-auto rounded-md border border-line bg-surface-2 px-3 py-2 font-mono text-[12.5px] whitespace-pre mt-1 max-h-72",children:n.G})]}),(0,b.jsxs)("li",{children:["In that repository: Settings › Secrets and variables › Actions › New repository secret, name ",(0,b.jsx)("span",{className:"font-mono",children:"WATCHBELL_PR_TOKEN"})," ",(0,b.jsx)(j.CopyButton,{text:"WATCHBELL_PR_TOKEN",label:"Copy name"}),", value: your GitHub PR-write token (the same one on Connections)."]}),(0,b.jsx)("li",{children:"Give the PR-write token access to this new repository too (GitHub › Settings › Developer settings › your token › Repository access), with Contents: Read and write."}),(0,b.jsx)("li",{children:"Save the repository name here:"})]}),(0,b.jsx)("div",{className:"mt-2",children:(0,b.jsx)(o.ActionsRepoForm,{current:a})})]})}var q=a.i(791444),r=a.i(840784),s=a.i(186133),t=a.i(532620),u=a.i(655206),v=a.i(634418),w=a.i(688275),x=a.i(672319),y=a.i(711251),z=a.i(371289),A=a.i(245710);function B(a){return a>=86400&&a%86400==0?`every ${a/86400} day${86400===a?"":"s"}`:a>=3600&&a%3600==0?`every ${a/3600} h`:a>=60&&a%60==0?`every ${a/60} min`:`every ${a} s`}let C={heartbeats:"Heartbeat monitors: recompute from the last ping",checks:"HTTP uptime checks",vercel:"Vercel projects and deployments",supabase:"Supabase project status",supabaseUsage:"Supabase service health and traffic",neon:"Neon status and usage",firebase:"Firestore health read",firebaseUsage:"Firestore usage",extraDbs:"Turso, Upstash Redis and Cloudflare D1 status and usage",cloudflare:"Cloudflare zones and DNS",domains:"Vercel domain settings",tls:"TLS certificate expiry",rdap:"Domain expiry (RDAP)",eol:"Next.js end-of-life data",status:"Provider status feeds",logs:"Copy of Vercel warning and error logs",pageviews:"Web Analytics page views",alerts:"Alert rules and notices",digest:"Digest due check"},D={cron_job_org:"cron-job.org",qstash:"QStash",vercel_cron:"Vercel Cron",manual:"Refresh now"},E=v.t.checks,F="not read yet",G=a=>Math.round(10*a)/10,H=a=>`${a} days`;var I=a.i(715208),J=a.i(285100);async function K(){let a=new Date,[d,e,f,g,h]=await Promise.all([(0,t.V)(),(0,t.R)("neon_project"),(0,t.e)(),(0,r.G)(a),(0,s.j)()]),i=g.filter(a=>!a.gone),j=function(a,b=y.o){let c,d=[],e=a=>null===a?"none":a>=b.errPct?"err":a>=b.warnPct?"warn":"ok";for(let b of(a.slots.length||d.push({key:"supabase",item:"Supabase free projects",limit:`${x.V} active projects per account`,use:"no Supabase account connected",pct:null,tone:"none"}),a.slots)){let a=G(b.used/b.total*100);d.push({key:`supabase-${b.account}`,item:`Supabase free projects \xb7 ${b.account}`,limit:`${b.total} active per account`,use:`${b.used} of ${b.total} used${b.planUnknown?" (plan not read for every org)":""}`,pct:a,tone:e(a)})}for(let b of(a.neon.length||d.push({key:"neon",item:"Neon CU-hours",limit:`${w.a.cuHours} CU-hours / month per project`,use:"no Neon project watched",pct:null,tone:"none"}),a.neon))d.push({key:`neon-${b.id}`,item:`Neon CU-hours \xb7 ${b.alias}`,limit:`${w.a.cuHours} CU-hours / month per project`,use:b.cu?`${b.cu.value} CU-hours`:F,pct:b.cu?.pct??null,tone:e(b.cu?.pct??null)});let f=G(288/b.qstashPerDay*100);return d.push({key:"qstash",item:"Upstash QStash messages",limit:`${b.qstashPerDay.toLocaleString("en-US")} / day`,use:`288 / day (watchdog ${B(300)})`,pct:f,tone:e(f)}),d.push({key:"cron",item:"cron-job.org runs",limit:"1 run / min (shortest free interval)",use:`1 run / min (${(86400/E).toLocaleString("en-US")} / day)`,pct:null,tone:"none"}),d.push({key:"vercel",item:"Vercel Hobby",limit:`${(c=b.vercelInvocations)>=1e6&&c%1e6==0?`${c/1e6}M`:c.toLocaleString("en-US")} invocations, ${b.vercelCpuHours} h CPU, ${b.vercelMemoryGbH} GB-h memory / month`,use:F,pct:null,tone:"none"}),d.push({key:"analytics",item:"Vercel Web Analytics",limit:`${b.webAnalyticsEvents.toLocaleString("en-US")} events / month`,use:0===a.apps.total?"no apps watched":0===a.apps.read?`${F} \xb7 events ${F}`:`${a.apps.enabled} of ${a.apps.total} app${1===a.apps.total?"":"s"} enabled \xb7 events ${F}`,pct:null,tone:"none"}),d}({slots:(0,I.d)(d),neon:(0,I.D)(e,a,f).map(a=>({id:a.id,alias:a.alias,cu:a.cu})),apps:{total:i.length,read:i.filter(a=>null!==a.pageViews).length,enabled:i.filter(a=>a.pageViews?.enabled===!0).length}},h);return(0,b.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,b.jsx)(c.N,{title:"Free tier budget",flush:!0,meta:"Everything stays on free plans",children:(0,b.jsx)("div",{className:"overflow-x-auto",children:(0,b.jsxs)("table",{className:q.o,children:[(0,b.jsx)(q.U,{head:["Item","Free limit","Current use"]}),(0,b.jsx)("tbody",{children:j.map(a=>(0,b.jsxs)("tr",{children:[(0,b.jsx)("td",{className:q.z,children:a.item}),(0,b.jsx)("td",{className:`${q.z} text-ink-soft`,children:a.limit}),(0,b.jsxs)("td",{className:q.z,children:[(0,b.jsx)("span",{className:a.use.includes("not read yet")?"text-ink-soft":"font-mono text-[12.5px]",children:a.use}),null!==a.pct&&(0,b.jsx)(c.e,{pct:a.pct,tone:"warn"===a.tone||"err"===a.tone?a.tone:void 0})]})]},a.key))})]})})}),(0,b.jsx)(c.N,{title:"Free tier limits",meta:"Correct them here when a provider changes its free plan",children:(0,b.jsx)(J.BudgetForm,{saved:h})})]})}var L=a.i(530385),M=a.i(395936),N=a.i(701702),O=a.i(548734),P=a.i(837137),Q=a.i(556987),R=a.i(103493);async function S(){let a=await (0,O.f)().select({id:P.collectorRuns.id,startedAt:P.collectorRuns.startedAt,trigger:P.collectorRuns.trigger,tasks:P.collectorRuns.tasks,ok:P.collectorRuns.ok,errorSummary:P.collectorRuns.errorSummary,durationMs:P.collectorRuns.durationMs}).from(P.collectorRuns).orderBy((0,L.A)(P.collectorRuns.startedAt)).limit(20),d=await (0,t.e)().catch(()=>Q.a),e=function(a,b=a=>a){return a.map(a=>{var c;let d;return{id:a.id,at:`${(0,A.L)(a.startedAt)} ${(0,A.U)(a.startedAt)}`,trigger:D[a.trigger]??a.trigger,tasks:a.tasks.length?`${a.tasks.length} task${1===a.tasks.length?"":"s"}`:"none",duration:null===(c=a.durationMs)?"—":c<1e3?`${c} ms`:`${(c/1e3).toFixed(1)} s`,ok:a.ok,summary:null===a.ok?"Not finished":a.ok?"OK":(d=b(a.errorSummary?.trim()||"Finished with problems")).length<=80?d:`${d.slice(0,79).trimEnd()}…`}})}(a,a=>(0,Q.J)(a,d)),f=function(a=(()=>{try{return"cloud"===(0,z.c)()}catch{return!1}})()){let b=(0,A.C)(),c=(0,A.J)(),d=a?"as a Vercel environment variable and redeploy":"in .env",e=(0,A.R)(),f=e?`${e} isn't a time zone; using ${b} (${c}). Set an IANA name such as Europe/Berlin ${d}.`:`Time zone: ${b} (${c}). To change it, set WATCHBELL_TIMEZONE ${d}.`;return{zone:b,label:c,text:f,follows:a?`Times and the digest (07:00) follow it. The daily job is Vercel Cron at 20:00 UTC (${(0,A.G)()}).`:"Times, the daily job (03:00) and the digest (07:00) follow it."}}();return(0,b.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,b.jsx)(R.f,{}),(0,b.jsxs)(c.N,{title:"What runs when",flush:!0,meta:"Per run, a task starts only when its interval has passed",children:[(0,b.jsx)("div",{className:"overflow-x-auto",children:(0,b.jsxs)("table",{className:q.o,children:[(0,b.jsx)(q.U,{head:["Task","Runs"]}),(0,b.jsx)("tbody",{children:(function(a=v.t){return Object.keys(a).map(b=>({task:b,label:C[b],every:B(a[b])}))})().map(a=>(0,b.jsxs)("tr",{children:[(0,b.jsxs)("td",{className:q.z,children:[a.label," ",(0,b.jsx)("span",{className:"ml-1 font-mono text-xs text-ink-soft",children:a.task})]}),(0,b.jsx)("td",{className:`${q.z} text-ink-soft`,children:a.every})]},a.task))})]})}),(0,b.jsxs)("div",{className:"grid grid-cols-[260px_minmax(0,1fr)] items-center gap-4 border-t border-line px-[18px] py-3 max-[720px]:grid-cols-1 max-[720px]:gap-1",children:[(0,b.jsxs)("div",{className:"font-medium",children:["Keep Supabase projects awake",(0,b.jsx)("span",{className:"mt-0.5 block text-[12.5px] font-normal text-ink-soft",children:"Off by default. Set per project on the Supabase page (Keep active, Auto-restore; owner only). Not offered for Neon, because staying awake would use up its CU-hours."})]}),(0,b.jsx)("span",{children:(0,b.jsx)(M.default,{href:"/supabase",className:(0,c.R)({size:"sm"}),children:"Open Supabase"})})]}),(0,b.jsxs)("div",{className:"grid grid-cols-[260px_minmax(0,1fr)] items-center gap-4 border-t border-line px-[18px] py-3 max-[720px]:grid-cols-1 max-[720px]:gap-1",children:[(0,b.jsxs)("div",{className:"font-medium",children:["Time zone",(0,b.jsx)("span",{className:"mt-0.5 block text-[12.5px] font-normal text-ink-soft",children:f.follows})]}),(0,b.jsx)("span",{className:"text-ink-soft",children:f.text})]})]}),(0,b.jsx)(c.N,{title:"Last 20 runs",flush:!0,meta:`Times in ${(0,A.D)()}`,children:0===e.length?(0,b.jsx)("p",{className:"px-[18px] pb-4 text-ink-soft",children:"The collector hasn't run yet."}):(0,b.jsx)("div",{className:"overflow-x-auto",children:(0,b.jsxs)("table",{className:q.o,children:[(0,b.jsx)(q.U,{head:["Started","Trigger","Tasks","Duration","Result"]}),(0,b.jsx)("tbody",{children:e.map(a=>(0,b.jsxs)("tr",{children:[(0,b.jsx)("td",{className:`${q.z} font-mono text-[12.5px]`,children:a.at}),(0,b.jsx)("td",{className:q.z,children:a.trigger}),(0,b.jsx)("td",{className:q.z,children:a.tasks}),(0,b.jsx)("td",{className:`${q.z} font-mono text-[12.5px]`,children:a.duration}),(0,b.jsx)("td",{className:q.z,children:(0,b.jsx)(k.F,{state:null===a.ok?"build":a.ok?"ok":"warn",children:(0,b.jsx)(N.MaskedText,{text:a.summary})})})]},a.id))})]})})})]})}var T=a.i(532971),U=a.i(104195);async function V(){let a=await (0,s.J)(),d=function(a=u.f){return[{kind:"Raw checks",keeps:H(a.checks),note:"Every HTTP check result; the hourly rollups below keep the history."},{kind:"Hourly rollups",keeps:H(a.rollupsHourly),note:"Uptime and response numbers per monitor and hour."},{kind:"Stored logs",keeps:H(a.storedLogs),note:"The copy of Vercel warning and error logs."},{kind:"Deployments",keeps:H(a.deployments),note:"Older ones only; the current and the previous production deployment are always kept."},{kind:"Events",keeps:H(a.events),note:"The activity feed."},{kind:"Alerts",keeps:H(a.alerts),note:"Resolved alerts only, counted from when they resolved; open alerts stay."},{kind:"Collector runs",keeps:H(a.collectorRuns),note:"The run history shown in the Collector tab."},{kind:"Advisor dismissals",keeps:H(a.recommendationDismissals),note:"A dismissal only matters for 30 days."}]}(a),e=T.L.map(a=>({key:a,kind:T.I[a],note:d.find(b=>b.kind===T.I[a])?.note??""}));return(0,b.jsxs)(c.N,{title:"Retention",flush:!0,meta:`Cleaned daily at ${(0,A.G)()}`,children:[(0,b.jsx)("p",{className:"px-[18px] pb-3 text-ink-soft",children:"Only the console's own history is deleted. Nothing is ever deleted at a provider. The monthly backup runs on the 1st, before the clean-up, and reads hourly rollups, events and alerts, which keep at least 60 days."}),(0,b.jsx)(U.RetentionForm,{saved:a,rows:e})]})}var W=a.i(525826),X=a.i(93321),Y=a.i(154756),Z=a.i(267767),$=a.i(120396),_=a.i(173616),aa=a.i(564326);async function ab({actorId:a}){let d=(0,z.F)(),e=await (0,O.f)().select().from(P.members).orderBy((0,L.A)(P.members.createdAt)),f=d?[]:await (0,O.f)().select().from(P.invites).where((0,X.M)(P.invites.acceptedAt)).orderBy((0,L.A)(P.invites.createdAt)),g=new Date,h="border-y border-line bg-surface-2 px-3 py-2 text-left text-[12.5px] font-medium text-ink-soft first:pl-[18px]",i="border-b border-line px-3 py-[9px] whitespace-nowrap first:pl-[18px]";return(0,b.jsxs)(c.N,{flush:!0,children:[(0,b.jsx)("div",{className:"flex flex-wrap items-center gap-2 px-[18px] pb-3 pt-3.5",children:d?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{className:"text-ink-soft",children:(0,z.W)()?"In the demo you are the only member. On a real install an owner adds people here.":"Members sign in with email and password. A new member gets a temporary password and picks their own at their first sign-in."}),!(0,z.W)()&&(0,b.jsx)($.AddMemberDialog,{})]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{className:"text-ink-soft",children:"Invite-only: people sign in with an email link, and only invited emails get in. Preview deployments stay behind Vercel Authentication."}),(0,b.jsx)(_.InviteDialog,{})]})}),(0,b.jsx)("div",{className:"overflow-x-auto",children:(0,b.jsxs)("table",{className:"w-full border-collapse",children:[(0,b.jsx)("thead",{children:(0,b.jsxs)("tr",{children:[(0,b.jsx)("th",{className:h,children:"User"}),(0,b.jsx)("th",{className:h,children:"Role"}),(0,b.jsx)("th",{className:h,children:"Last seen"}),(0,b.jsx)("th",{className:h,children:"Status"}),(0,b.jsx)("th",{className:h})]})}),(0,b.jsxs)("tbody",{children:[e.map(c=>(0,b.jsxs)("tr",{className:"hover:bg-hover",children:[(0,b.jsx)("td",{className:i,children:(0,b.jsx)(Y.F,{kind:"usr",name:c.email})}),(0,b.jsx)("td",{className:i,children:c.id===a?(0,b.jsx)("span",{className:"rounded-[5px] border border-line bg-surface-2 px-1.5 text-xs text-ink-soft",children:"Owner (you)"}):(0,b.jsx)(aa.RoleSelect,{memberId:c.id,email:c.email,role:c.role})}),(0,b.jsx)("td",{className:`${i} text-ink-soft`,children:(a=>{if(!a)return"never";let b=Math.round((Date.now()-a.getTime())/6e4);if(b<2)return"now";if(b<60)return`${b} min ago`;let c=Math.round(b/60);return c<48?`${c} h ago`:`${Math.round(c/24)} days ago`})(c.lastSeenAt)}),(0,b.jsx)("td",{className:i,children:(0,b.jsx)(k.F,{state:"ok",children:"Active"})}),(0,b.jsx)("td",{className:i,children:c.id!==a&&(0,b.jsx)(aa.RemoveMember,{memberId:c.id,email:c.email,deletesAccount:"selfhost"===(0,z.c)()})})]},c.id)),f.map(a=>{let c=(0,Z.R)(a,g);return(0,b.jsxs)("tr",{className:"hover:bg-hover",children:[(0,b.jsx)("td",{className:i,children:(0,b.jsx)(Y.F,{kind:"usr",name:a.email})}),(0,b.jsx)("td",{className:i,children:(0,b.jsx)("span",{className:"rounded-[5px] border border-line bg-surface-2 px-1.5 text-xs text-ink-soft",children:a.role[0].toUpperCase()+a.role.slice(1)})}),(0,b.jsx)("td",{className:`${i} text-ink-soft`,children:"invited"}),(0,b.jsx)("td",{className:i,children:"open"===c?(0,b.jsx)(k.F,{state:"off",children:"Invited"}):(0,b.jsx)(k.F,{state:"warn",children:"Invite expired"})}),(0,b.jsx)("td",{className:i,children:(0,b.jsx)(aa.RevokeInvite,{inviteId:a.id,email:a.email})})]},a.id)})]})]})})]})}let ac=["collector","budget","users","retention","status-page"];async function ad({searchParams:a}){let j=await (0,f.B)("owner");if(!j.ok)return(0,b.jsx)(d.f,{role:j.member.role});let[{tab:k},l]=await Promise.all([a,(0,h.a)()]),m=g.extensions.settingsTabs??[],n=!g.extensions.runner,o=[...ac,...n?["lockfile"]:[],...m.map(a=>a.key)];return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(c.L,{crumbs:[{label:"Administration"},{label:"Settings"}],title:"Settings"}),(0,b.jsxs)(e.Tabs,{defaultValue:k&&o.includes(k)?k:"users",className:"mt-3.5",children:[(0,b.jsxs)(e.TabsList,{variant:"line",children:[(0,b.jsx)(e.TabsTrigger,{value:"collector",children:"Collector"}),(0,b.jsx)(e.TabsTrigger,{value:"budget",children:"Free tier budget"}),(0,b.jsx)(e.TabsTrigger,{value:"users",children:"Users"}),(0,b.jsx)(e.TabsTrigger,{value:"retention",children:"Retention"}),(0,b.jsx)(e.TabsTrigger,{value:"status-page",children:"Status page"}),n&&(0,b.jsx)(e.TabsTrigger,{value:"lockfile",children:"Lockfile"}),m.map(a=>(0,b.jsx)(e.TabsTrigger,{value:a.key,children:a.label},a.key))]}),(0,b.jsx)(e.TabsContent,{value:"collector",className:"mt-4",children:(0,b.jsx)(S,{})}),(0,b.jsx)(e.TabsContent,{value:"budget",className:"mt-4",children:(0,b.jsx)(K,{})}),(0,b.jsx)(e.TabsContent,{value:"users",className:"mt-4",children:(0,b.jsx)(ab,{actorId:j.member.id})}),(0,b.jsx)(e.TabsContent,{value:"retention",className:"mt-4",children:(0,b.jsx)(V,{})}),(0,b.jsx)(e.TabsContent,{value:"status-page",className:"mt-4",children:(0,b.jsx)(W.StatusPageTab,{settings:l,siteUrl:(0,i.f)().SITE_URL})}),n&&(0,b.jsx)(e.TabsContent,{value:"lockfile",className:"mt-4",children:(0,b.jsx)(p,{})}),m.map(({key:a,Tab:c})=>(0,b.jsx)(e.TabsContent,{value:a,className:"mt-4",children:(0,b.jsx)(c,{})},a))]})]})}a.s(["default",0,ad],976739)},718121,a=>{let b=(0,a.i(211857).registerClientReference)(function(){throw Error("Attempted to call RetentionForm() from the server but RetentionForm is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/app/(console)/settings/retention-form.tsx","RetentionForm");a.s(["RetentionForm",0,b])},104195,a=>{var b=a.i(718121);a.n(b)},391022,a=>{let b=(0,a.i(211857).registerClientReference)(function(){throw Error("Attempted to call StatusPageTab() from the server but StatusPageTab is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/app/(console)/settings/status-page-tab.tsx","StatusPageTab");a.s(["StatusPageTab",0,b])},525826,a=>{var b=a.i(391022);a.n(b)},736935,a=>{let b=(0,a.i(211857).registerClientReference)(function(){throw Error("Attempted to call CopyButton() from the server but CopyButton is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/components/copy-button.tsx","CopyButton");a.s(["CopyButton",0,b])},529960,a=>{var b=a.i(736935);a.n(b)}],814659,function(a){a.n(a.i(976739))}];
2
2
 
3
3
  //# sourceMappingURL=src_1sdwdnblbiq_g._.js.map
@@ -1,3 +1,3 @@
1
- (()=>{"use strict";module.exports=[749348,a=>{var b=a.i(187924),c=a.i(50944),d=a.i(572131),e=a.i(823292),f=a.i(611619),g=a.i(619089),h=a.i(507504),i=a.i(188406),j=a.i(814574),k=a.i(405050);let l=(0,k.createServerReference)("4048112ab392c97f60bfaa07191f7cacb51417166c",k.callServer,void 0,k.findSourceMapURL,"forgetAgentAction"),m=(0,k.createServerReference)("603201b6de4670a43d6ef5233dea3b3548b2161950",k.callServer,void 0,k.findSourceMapURL,"renameAgentAction");function n({id:a,current:c,detected:f,onDone:h}){let[i,k]=(0,d.useState)(c===f?"":c),[l,o]=(0,d.useState)(""),[p,q]=(0,d.useTransition)();return(0,b.jsxs)("form",{onSubmit:function(b){b.preventDefault(),q(async()=>{o("");try{let b=await m(a,i);b.ok?(e.c.success(b.message??"Agent renamed."),h()):o(b.fieldErrors?.name??b.error)}catch{o("Something went wrong. Try again.")}})},noValidate:!0,children:[(0,b.jsxs)("div",{className:"px-[18px] pb-2 pt-4",children:[(0,b.jsxs)(j.F,{className:"text-base",children:["Rename ",f]}),(0,b.jsx)(j.C,{className:"mt-0.5 text-[13px] text-ink-soft",children:"Only changes what this page shows. Leave it empty to use the detected name again."})]}),(0,b.jsx)("div",{className:"px-[18px] pt-1.5",children:(0,b.jsx)(g.O,{id:"agent-name",label:"Name",error:l,children:(0,b.jsx)("input",{id:"agent-name",value:i,onChange:a=>k(a.target.value),placeholder:f,autoComplete:"off",spellCheck:!1,className:g.S})})}),(0,b.jsxs)("div",{className:"flex justify-end gap-2 border-t border-line px-[18px] py-3",children:[(0,b.jsx)(g.K,{onClick:h,disabled:p,children:"Cancel"}),(0,b.jsx)(g.K,{type:"submit",variant:"primary",disabled:p,children:p?"Saving…":"Save name"})]})]})}a.s(["AgentActions",0,function({id:a,name:e,clientName:g,keyRevoked:k}){let m=(0,c.useRouter)(),[o,p]=(0,d.useState)(!1),[q,r]=(0,d.useState)(!1);return(0,h.useHoldRefresh)(o),(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(i.RowMenu,{label:`Actions for ${e}`,items:[...k?[]:[{label:"Rename",onSelect:()=>p(!0)}],{label:"Show logs",onSelect:()=>m.push(`/ai/logs?agent=${encodeURIComponent(a)}`)},"---",{label:"Forget",danger:!0,onSelect:()=>r(!0)}]}),(0,b.jsx)(j.N,{open:o,onOpenChange:p,children:(0,b.jsx)(j.d,{className:"gap-0 p-0 sm:max-w-[520px]",showCloseButton:!1,children:o&&(0,b.jsx)(n,{id:a,current:e,detected:g,onDone:()=>p(!1)})})}),(0,b.jsx)(f.f,{open:q,onOpenChange:r,title:`Forget ${e}?`,body:"Removes it from this list. Its calls stay in the logs for 30 days. It appears again with its next request.",cta:"Forget agent",danger:!0,onConfirm:async()=>{let b=await l(a);return{ok:b.ok,message:(b.ok?b.message:b.error)??""}}})]})}],749348)},107778,a=>{var b=a.i(50944),c=a.i(572131),d=a.i(507504);a.s(["AgentsRefresh",0,function(){let a=(0,b.useRouter)(),[e,f]=(0,c.useTransition)(),g=(0,c.useRef)(!1);return(0,c.useEffect)(()=>{g.current=e},[e]),(0,c.useEffect)(()=>{let b=()=>{if(!g.current){var b;(b={visible:"visible"===document.visibilityState,online:!1!==navigator.onLine,held:(0,d.holdCount)()>0}).visible&&b.online&&!b.held&&f(()=>a.refresh())}},c=setInterval(b,15e3);return document.addEventListener("visibilitychange",b),()=>{clearInterval(c),document.removeEventListener("visibilitychange",b)}},[a]),null}],107778)}]})();
1
+ (()=>{"use strict";module.exports=[749348,a=>{var b=a.i(187924),c=a.i(50944),d=a.i(572131),e=a.i(823292),f=a.i(611619),g=a.i(619089),h=a.i(507504),i=a.i(188406),j=a.i(814574),k=a.i(405050);let l=(0,k.createServerReference)("40523cf4e889aa840af92f70fa7ac64406af545595",k.callServer,void 0,k.findSourceMapURL,"forgetAgentAction"),m=(0,k.createServerReference)("6038a936dadc11941f9e8873d67cc3572792479da4",k.callServer,void 0,k.findSourceMapURL,"renameAgentAction");function n({id:a,current:c,detected:f,onDone:h}){let[i,k]=(0,d.useState)(c===f?"":c),[l,o]=(0,d.useState)(""),[p,q]=(0,d.useTransition)();return(0,b.jsxs)("form",{onSubmit:function(b){b.preventDefault(),q(async()=>{o("");try{let b=await m(a,i);b.ok?(e.c.success(b.message??"Agent renamed."),h()):o(b.fieldErrors?.name??b.error)}catch{o("Something went wrong. Try again.")}})},noValidate:!0,children:[(0,b.jsxs)("div",{className:"px-[18px] pb-2 pt-4",children:[(0,b.jsxs)(j.F,{className:"text-base",children:["Rename ",f]}),(0,b.jsx)(j.C,{className:"mt-0.5 text-[13px] text-ink-soft",children:"Only changes what this page shows. Leave it empty to use the detected name again."})]}),(0,b.jsx)("div",{className:"px-[18px] pt-1.5",children:(0,b.jsx)(g.O,{id:"agent-name",label:"Name",error:l,children:(0,b.jsx)("input",{id:"agent-name",value:i,onChange:a=>k(a.target.value),placeholder:f,autoComplete:"off",spellCheck:!1,className:g.S})})}),(0,b.jsxs)("div",{className:"flex justify-end gap-2 border-t border-line px-[18px] py-3",children:[(0,b.jsx)(g.K,{onClick:h,disabled:p,children:"Cancel"}),(0,b.jsx)(g.K,{type:"submit",variant:"primary",disabled:p,children:p?"Saving…":"Save name"})]})]})}a.s(["AgentActions",0,function({id:a,name:e,clientName:g,keyRevoked:k}){let m=(0,c.useRouter)(),[o,p]=(0,d.useState)(!1),[q,r]=(0,d.useState)(!1);return(0,h.useHoldRefresh)(o),(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(i.RowMenu,{label:`Actions for ${e}`,items:[...k?[]:[{label:"Rename",onSelect:()=>p(!0)}],{label:"Show logs",onSelect:()=>m.push(`/ai/logs?agent=${encodeURIComponent(a)}`)},"---",{label:"Forget",danger:!0,onSelect:()=>r(!0)}]}),(0,b.jsx)(j.N,{open:o,onOpenChange:p,children:(0,b.jsx)(j.d,{className:"gap-0 p-0 sm:max-w-[520px]",showCloseButton:!1,children:o&&(0,b.jsx)(n,{id:a,current:e,detected:g,onDone:()=>p(!1)})})}),(0,b.jsx)(f.f,{open:q,onOpenChange:r,title:`Forget ${e}?`,body:"Removes it from this list. Its calls stay in the logs for 30 days. It appears again with its next request.",cta:"Forget agent",danger:!0,onConfirm:async()=>{let b=await l(a);return{ok:b.ok,message:(b.ok?b.message:b.error)??""}}})]})}],749348)},107778,a=>{var b=a.i(50944),c=a.i(572131),d=a.i(507504);a.s(["AgentsRefresh",0,function(){let a=(0,b.useRouter)(),[e,f]=(0,c.useTransition)(),g=(0,c.useRef)(!1);return(0,c.useEffect)(()=>{g.current=e},[e]),(0,c.useEffect)(()=>{let b=()=>{if(!g.current){var b;(b={visible:"visible"===document.visibilityState,online:!1!==navigator.onLine,held:(0,d.holdCount)()>0}).visible&&b.online&&!b.held&&f(()=>a.refresh())}},c=setInterval(b,15e3);return document.addEventListener("visibilitychange",b),()=>{clearInterval(c),document.removeEventListener("visibilitychange",b)}},[a]),null}],107778)}]})();
2
2
 
3
3
  //# sourceMappingURL=src_app_%28console%29_%28private%29_ai_agents_1fyhh1ldgm23z._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[[312890,a=>{let b=(0,a.i(211857).registerClientReference)(function(){throw Error("Attempted to call AskForm() from the server but AskForm is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/app/(console)/(private)/ai/ask/ask-form.tsx","AskForm");a.s(["AskForm",0,b])},587666,a=>{var b=a.i(312890);a.n(b)},71225,a=>{var b=a.i(907997),c=a.i(80374),d=a.i(694874);let e=(0,a.i(377269).f)("outline","message-question","MessageQuestion",[["path",{d:"M8 9h8",key:"svg-0"}],["path",{d:"M8 13h6",key:"svg-1"}],["path",{d:"M14 18h-1l-5 3v-3h-2a3 3 0 0 1 -3 -3v-8a3 3 0 0 1 3 -3h12a3 3 0 0 1 3 3v4.5",key:"svg-2"}],["path",{d:"M19 22v.01",key:"svg-3"}],["path",{d:"M19 19a2.003 2.003 0 0 0 .914 -3.782a1.98 1.98 0 0 0 -2.414 .483",key:"svg-4"}]]);var f=a.i(701702),g=a.i(803681),h=a.i(685865),i=a.i(75148),j=a.i(109307),k=a.i(532620),l=a.i(245710),m=a.i(556987),n=a.i(484458),o=a.i(463743),p=a.i(208683),q=a.i(263972),r=a.i(86657),s=a.i(962230),t=a.i(668495),u=a.i(191397),v=a.i(462820),w=a.i(587666);async function x(){let a=await (0,j.B)("owner");if(!a.ok)return(0,b.jsx)(i.f,{role:a.member.role});let c=new Date;(0,o.f)();let d=await (0,k.e)().catch(()=>m.a),[f,l]=await Promise.all([(0,s.y)(c,d),y(c)]),n=f.some(a=>"pending"===a.status);return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(h.AutoRefresh,{at:c.getTime(),everyMs:n?15e3:void 0}),(0,b.jsx)(g.L,{crumbs:[{label:"AI & API"},{label:"AI Gateway",href:"/ai"},{label:"Ask"}],title:"Ask",sub:"Questions about the console, answered by your own provider (Bring your own key) from scrubbed console data. Owner only."}),(0,b.jsx)(g.N,{title:"New question",children:(0,b.jsx)(w.AskForm,{models:l.list,defaultLabel:l.defaultLabel})}),(0,b.jsx)(g.N,{title:"Questions",meta:"Newest first · last 7 days",children:0===f.length?(0,b.jsx)(g.k,{icon:e,title:"No questions yet",children:v.J.empty}):(0,b.jsx)("ul",{className:"m-0 list-none p-0",children:f.map(a=>(0,b.jsx)(C,{q:a,now:c},a.id))})})]})}async function y(a){let[b,c,d]=await Promise.all([(0,q.Y)().then(a=>a.rows).catch(()=>[]),r.f.provider().catch(()=>null),(0,n.y)(a).catch(()=>null)]),e=b.filter(a=>a.enabled&&a.providerEnabled&&(0,p.W)(a,a.providerKind)).map(a=>({id:a.publicId,label:a.publicId}));if(d&&(0,n.U)(d.report,a)){let a=new Set((0,n._)(d.report,d.prefs,d.allowed));for(let b of d.report?.models??[])a.has(b.id)&&e.push({id:`${n.T}${b.id}`,label:`${n.T}${b.id} \xb7 ${b.label}${v.J.agModelSuffix}`})}return{list:e,defaultLabel:c?c.model:"no provider"}}function z(a,b){let c=(0,l.$)(a,b);return/\d:\d\d$/.test(c)?`${c} WIB`:c}let A="inline-block max-w-[280px] truncate rounded border border-line bg-surface-2 px-1.5 text-[12px] text-ink-soft";function B({q:a}){return"app"===a.kind?(0,b.jsx)("span",{className:A,children:a.label?(0,b.jsx)(f.Masked,{kind:"app",real:a.label}):"App"}):"alert"===a.kind?(0,b.jsxs)("span",{className:A,children:["Alert: ",a.label?(0,b.jsx)(f.MaskedText,{text:a.label}):"alert"]}):(0,b.jsx)("span",{className:A,children:"General"})}function C({q:a,now:e}){let g=[a.client,a.model].filter(Boolean).join(" · ")||"AI";return(0,b.jsxs)("li",{className:"border-t border-line py-3 first:border-t-0 first:pt-0 last:pb-0",children:[(0,b.jsx)("p",{className:"m-0 mb-1.5 whitespace-pre-wrap break-words",children:(0,b.jsx)(f.MaskedText,{text:a.question})}),(0,b.jsxs)("div",{className:"mb-2 flex flex-wrap items-center gap-2 text-[12.5px]",children:[(0,b.jsx)(B,{q:a}),a.requestedModel&&(0,b.jsxs)("span",{className:`${A} font-mono`,children:[n.T,a.requestedModel]}),(0,b.jsx)("time",{dateTime:a.createdAt.toISOString(),className:"font-mono text-ink-faint",children:z(a.createdAt,e)}),"pending"===a.status&&(0,b.jsxs)("span",{role:"status",className:"inline-flex items-center gap-1 text-ink-soft",children:[(0,b.jsx)(c.f,{size:14,className:"animate-spin","aria-hidden":!0}),v.J.waiting]}),"answered"===a.status&&(0,b.jsxs)("span",{className:"text-ink-soft",children:["Answered by ",g,a.answeredAt?` \xb7 ${z(a.answeredAt,e)}`:""]}),"expired"===a.status&&(0,b.jsx)("span",{className:"text-ink-faint",children:"Expired · no answer within 7 days"})]}),"answered"===a.status&&a.answer&&(0,b.jsx)(u.f,{icon:(0,b.jsx)(d.f,{size:18,"aria-hidden":!0}),meta:"Written by AI, can be wrong",children:(0,b.jsx)(t.f,{source:a.answer})})]})}a.s(["default",0,x,"maxDuration",0,60],71225)}],102474,function(a){a.n(a.i(71225))}];
1
+ module.exports=[[312890,a=>{let b=(0,a.i(211857).registerClientReference)(function(){throw Error("Attempted to call AskForm() from the server but AskForm is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/app/(console)/(private)/ai/ask/ask-form.tsx","AskForm");a.s(["AskForm",0,b])},587666,a=>{var b=a.i(312890);a.n(b)},71225,a=>{var b=a.i(907997),c=a.i(80374),d=a.i(694874);let e=(0,a.i(377269).f)("outline","message-question","MessageQuestion",[["path",{d:"M8 9h8",key:"svg-0"}],["path",{d:"M8 13h6",key:"svg-1"}],["path",{d:"M14 18h-1l-5 3v-3h-2a3 3 0 0 1 -3 -3v-8a3 3 0 0 1 3 -3h12a3 3 0 0 1 3 3v4.5",key:"svg-2"}],["path",{d:"M19 22v.01",key:"svg-3"}],["path",{d:"M19 19a2.003 2.003 0 0 0 .914 -3.782a1.98 1.98 0 0 0 -2.414 .483",key:"svg-4"}]]);var f=a.i(701702),g=a.i(803681),h=a.i(685865),i=a.i(75148),j=a.i(109307),k=a.i(532620),l=a.i(245710),m=a.i(556987),n=a.i(484458),o=a.i(463743),p=a.i(208683),q=a.i(263972),r=a.i(86657),s=a.i(962230),t=a.i(668495),u=a.i(191397),v=a.i(462820),w=a.i(587666);async function x(){let a=await (0,j.B)("owner");if(!a.ok)return(0,b.jsx)(i.f,{role:a.member.role});let c=new Date;(0,o.f)();let d=await (0,k.e)().catch(()=>m.a),[f,l]=await Promise.all([(0,s.y)(c,d),y(c)]),n=f.some(a=>"pending"===a.status);return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(h.AutoRefresh,{at:c.getTime(),everyMs:n?15e3:void 0}),(0,b.jsx)(g.L,{crumbs:[{label:"AI & API"},{label:"AI Gateway",href:"/ai"},{label:"Ask"}],title:"Ask",sub:"Questions about the console, answered by your own provider (Bring your own key) from scrubbed console data. Owner only."}),(0,b.jsx)(g.N,{title:"New question",children:(0,b.jsx)(w.AskForm,{models:l.list,defaultLabel:l.defaultLabel})}),(0,b.jsx)(g.N,{title:"Questions",meta:"Newest first · last 7 days",children:0===f.length?(0,b.jsx)(g.k,{icon:e,title:"No questions yet",children:v.J.empty}):(0,b.jsx)("ul",{className:"m-0 list-none p-0",children:f.map(a=>(0,b.jsx)(C,{q:a,now:c},a.id))})})]})}async function y(a){let[b,c,d]=await Promise.all([(0,q.Y)().then(a=>a.rows).catch(()=>[]),r.f.provider().catch(()=>null),(0,n.y)(a).catch(()=>null)]),e=b.filter(a=>a.enabled&&a.providerEnabled&&(0,p.W)(a,a.providerKind)).map(a=>({id:a.publicId,label:a.publicId}));if(d&&(0,n.U)(d.report,a)){let a=new Set((0,n._)(d.report,d.prefs,d.allowed));for(let b of d.report?.models??[])a.has(b.id)&&e.push({id:`${n.T}${b.id}`,label:`${n.T}${b.id} \xb7 ${b.label}${v.J.agModelSuffix}`})}return{list:e,defaultLabel:c?c.model:"no provider"}}function z(a,b){let c=(0,l.$)(a,b);return/\d:\d\d$/.test(c)?`${c} ${(0,l.J)(a)}`:c}let A="inline-block max-w-[280px] truncate rounded border border-line bg-surface-2 px-1.5 text-[12px] text-ink-soft";function B({q:a}){return"app"===a.kind?(0,b.jsx)("span",{className:A,children:a.label?(0,b.jsx)(f.Masked,{kind:"app",real:a.label}):"App"}):"alert"===a.kind?(0,b.jsxs)("span",{className:A,children:["Alert: ",a.label?(0,b.jsx)(f.MaskedText,{text:a.label}):"alert"]}):(0,b.jsx)("span",{className:A,children:"General"})}function C({q:a,now:e}){let g=[a.client,a.model].filter(Boolean).join(" · ")||"AI";return(0,b.jsxs)("li",{className:"border-t border-line py-3 first:border-t-0 first:pt-0 last:pb-0",children:[(0,b.jsx)("p",{className:"m-0 mb-1.5 whitespace-pre-wrap break-words",children:(0,b.jsx)(f.MaskedText,{text:a.question})}),(0,b.jsxs)("div",{className:"mb-2 flex flex-wrap items-center gap-2 text-[12.5px]",children:[(0,b.jsx)(B,{q:a}),a.requestedModel&&(0,b.jsxs)("span",{className:`${A} font-mono`,children:[n.T,a.requestedModel]}),(0,b.jsx)("time",{dateTime:a.createdAt.toISOString(),className:"font-mono text-ink-faint",children:z(a.createdAt,e)}),"pending"===a.status&&(0,b.jsxs)("span",{role:"status",className:"inline-flex items-center gap-1 text-ink-soft",children:[(0,b.jsx)(c.f,{size:14,className:"animate-spin","aria-hidden":!0}),v.J.waiting]}),"answered"===a.status&&(0,b.jsxs)("span",{className:"text-ink-soft",children:["Answered by ",g,a.answeredAt?` \xb7 ${z(a.answeredAt,e)}`:""]}),"expired"===a.status&&(0,b.jsx)("span",{className:"text-ink-faint",children:"Expired · no answer within 7 days"})]}),"answered"===a.status&&a.answer&&(0,b.jsx)(u.f,{icon:(0,b.jsx)(d.f,{size:18,"aria-hidden":!0}),meta:"Written by AI, can be wrong",children:(0,b.jsx)(t.f,{source:a.answer})})]})}a.s(["default",0,x,"maxDuration",0,60],71225)}],102474,function(a){a.n(a.i(71225))}];
2
2
 
3
3
  //# sourceMappingURL=src_app_%28console%29_%28private%29_ai_ask_06n-9cjmbb-vu._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[352771,a=>{"use strict";var b=a.i(187924),c=a.i(282269),d=a.i(572131),e=a.i(823292),f=a.i(619089),g=a.i(901615),h=a.i(368114),i=a.i(243881),j=a.i(700629);a.s(["AskForm",0,function({models:a=[],defaultLabel:k="your provider"}){let[l,m]=(0,d.useState)(""),[n,o]=(0,d.useState)(""),[p,q]=(0,d.useState)(null),[r,s]=(0,d.useTransition)(),t=()=>{l.trim()&&!r&&(q(null),s(async()=>{try{let a=await (0,i.f)(l,n||null);a.ok?(m(""),e.c.success(a.message??"Sent.")):q(a.error)}catch{q("Something went wrong. Try again.")}}))};return(0,b.jsxs)("form",{onSubmit:a=>{a.preventDefault(),t()},children:[(0,b.jsx)("label",{htmlFor:"ask-in",className:"mb-1.5 block font-medium",children:"Ask about your apps, alerts, deployments or databases"}),(0,b.jsx)("textarea",{id:"ask-in",className:(0,h.f)(f.S,"min-h-22 w-full"),placeholder:"For example: which apps need attention before the weekend?",value:l,maxLength:2e3,"aria-describedby":"ask-hint ask-count","aria-invalid":!!p||void 0,onChange:a=>m(a.target.value),onKeyDown:a=>{"Enter"===a.key&&(a.ctrlKey||a.metaKey)&&(a.preventDefault(),t())}}),p&&(0,b.jsx)("p",{role:"alert",className:"mt-1.5 text-[13px] text-err",children:p}),(0,b.jsxs)("div",{className:"mt-2 flex flex-wrap items-center gap-3",children:[(0,b.jsx)("span",{id:"ask-hint",className:"min-w-[220px] flex-1 text-[12.5px] text-ink-faint",children:r?(0,b.jsx)(j.f,{}):g.I.hint}),(0,b.jsxs)("span",{id:"ask-count",className:"font-mono text-[12px] text-ink-faint","aria-live":"off",children:[l.length," / ",2e3]}),a.length>0&&(0,b.jsxs)("label",{className:"flex items-center gap-1.5 text-[13px] text-ink-soft",children:[(0,b.jsx)("span",{className:"sr-only",children:"Model"}),(0,b.jsxs)("select",{className:(0,h.f)(f.S,"max-w-[260px] py-1 font-mono text-[12.5px]"),value:n,onChange:a=>o(a.target.value),disabled:r,children:[(0,b.jsxs)("option",{value:"",children:["Default (",k,")"]}),a.map(a=>(0,b.jsx)("option",{value:a.id,children:a.label},a.id))]})]}),(0,b.jsxs)(f.K,{type:"submit",variant:"primary",disabled:r||!l.trim(),children:[(0,b.jsx)(c.f,{size:16,"aria-hidden":!0}),r?"Asking…":"Send"]})]})]})}])}];
1
+ module.exports=[352771,a=>{"use strict";var b=a.i(187924),c=a.i(282269),d=a.i(572131),e=a.i(823292),f=a.i(619089),g=a.i(901615),h=a.i(368114),i=a.i(40878),j=a.i(700629);a.s(["AskForm",0,function({models:a=[],defaultLabel:k="your provider"}){let[l,m]=(0,d.useState)(""),[n,o]=(0,d.useState)(""),[p,q]=(0,d.useState)(null),[r,s]=(0,d.useTransition)(),t=()=>{l.trim()&&!r&&(q(null),s(async()=>{try{let a=await (0,i.f)(l,n||null);a.ok?(m(""),e.c.success(a.message??"Sent.")):q(a.error)}catch{q("Something went wrong. Try again.")}}))};return(0,b.jsxs)("form",{onSubmit:a=>{a.preventDefault(),t()},children:[(0,b.jsx)("label",{htmlFor:"ask-in",className:"mb-1.5 block font-medium",children:"Ask about your apps, alerts, deployments or databases"}),(0,b.jsx)("textarea",{id:"ask-in",className:(0,h.f)(f.S,"min-h-22 w-full"),placeholder:"For example: which apps need attention before the weekend?",value:l,maxLength:2e3,"aria-describedby":"ask-hint ask-count","aria-invalid":!!p||void 0,onChange:a=>m(a.target.value),onKeyDown:a=>{"Enter"===a.key&&(a.ctrlKey||a.metaKey)&&(a.preventDefault(),t())}}),p&&(0,b.jsx)("p",{role:"alert",className:"mt-1.5 text-[13px] text-err",children:p}),(0,b.jsxs)("div",{className:"mt-2 flex flex-wrap items-center gap-3",children:[(0,b.jsx)("span",{id:"ask-hint",className:"min-w-[220px] flex-1 text-[12.5px] text-ink-faint",children:r?(0,b.jsx)(j.f,{}):g.I.hint}),(0,b.jsxs)("span",{id:"ask-count",className:"font-mono text-[12px] text-ink-faint","aria-live":"off",children:[l.length," / ",2e3]}),a.length>0&&(0,b.jsxs)("label",{className:"flex items-center gap-1.5 text-[13px] text-ink-soft",children:[(0,b.jsx)("span",{className:"sr-only",children:"Model"}),(0,b.jsxs)("select",{className:(0,h.f)(f.S,"max-w-[260px] py-1 font-mono text-[12.5px]"),value:n,onChange:a=>o(a.target.value),disabled:r,children:[(0,b.jsxs)("option",{value:"",children:["Default (",k,")"]}),a.map(a=>(0,b.jsx)("option",{value:a.id,children:a.label},a.id))]})]}),(0,b.jsxs)(f.K,{type:"submit",variant:"primary",disabled:r||!l.trim(),children:[(0,b.jsx)(c.f,{size:16,"aria-hidden":!0}),r?"Asking…":"Send"]})]})]})}])}];
2
2
 
3
3
  //# sourceMappingURL=src_app_%28console%29_%28private%29_ai_ask_ask-form_tsx_18ttm9nna_9y6._.js.map