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
- (()=>{"use strict";module.exports=[260338,e=>{var t=e.i(156325),n=e.i(844988),r=e.i(518899);e.s(["f",0,function(e){return r.B`max(${e})`.mapWith((0,n.f)(e,t.f)?e:String)}])},739886,e=>{var t,n=e.i(349129),r=e.i(518899),o=e.i(5672),i=e.i(924924),a=e.i(618916);e.i(61926);var s=e.i(275426);s.J;let l=e=>({id:e.id,scope:e.scope,appId:e.resourceId,monitorId:e.monitorId,startsAt:e.startsAt,durationMin:e.durationMin,weekly:e.weekly,note:e.note}),c=r.B`(${a.maintenanceWindows.weekly} or ${a.maintenanceWindows.startsAt} + ${a.maintenanceWindows.durationMin} * interval '1 minute' > now())`;async function u(){return(await (0,i.f)().select().from(a.maintenanceWindows).where(c).orderBy((0,n.M)(a.maintenanceWindows.startsAt),(0,n.M)(a.maintenanceWindows.id)).limit(s.J)).map(l)}t=a.resources,new Proxy(t,new o.e("mon_app",!1)),e.s(["f",0,u],739886)},890948,e=>{var t=e.i(875225),n=e.i(260338),r=e.i(518899),o=e.i(924924),i=e.i(618916),a=e.i(46574),s=e.i(146394);let l=e=>r.B`to_char(${e} at time zone 'Asia/Jakarta', 'YYYY-MM-DD')`,c=r.B`percentile_cont(0.95) within group (order by ${i.checks.latencyMs})`,u=r.B`percentile_cont(0.5) within group (order by ${i.checks.latencyMs})`;r.B`(count(*) filter (where not ${i.checks.ok}))::int`;let d=(0,t.u)(i.checks.inMaintenance,!1);async function m(){let[e]=await (0,o.f)().select({h:(0,n.f)(i.rollupsHourly.hour)}).from(i.rollupsHourly);return e?.h?new Date(e.h.getTime()+36e5):null}async function f(e,n){if(!e.length)return new Map;let c=(0,a.q)((0,a.W)(n,a.F)[0]),u=await m(),d=new Date(Math.max(c.getTime(),u?.getTime()??0,n.getTime()-s.A.rawChecksMs)),f=l(i.rollupsHourly.hour),p=l(i.checks.at),[h,w]=await Promise.all([u?(0,o.f)().select({monitorId:i.rollupsHourly.monitorId,day:f,checks:r.B`sum(${i.rollupsHourly.checks})::int`,failures:r.B`sum(${i.rollupsHourly.failures})::int`,maint:r.B`sum(${i.rollupsHourly.maintenance})::int`}).from(i.rollupsHourly).where((0,t.b)((0,t.y)(i.rollupsHourly.monitorId,e),(0,t.B)(i.rollupsHourly.hour,c),(0,t.S)(i.rollupsHourly.hour,u))).groupBy(i.rollupsHourly.monitorId,f):Promise.resolve([]),(0,o.f)().select({monitorId:i.checks.monitorId,day:p,checks:r.B`(count(*) filter (where not ${i.checks.inMaintenance}))::int`,failures:r.B`(count(*) filter (where not ${i.checks.ok} and not ${i.checks.inMaintenance}))::int`,maint:r.B`(count(*) filter (where ${i.checks.inMaintenance}))::int`}).from(i.checks).where((0,t.b)((0,t.y)(i.checks.monitorId,e),(0,t.B)(i.checks.at,d))).groupBy(i.checks.monitorId,p)]);return(0,a.C)([...h,...w])}async function p(e,n){let l;if(!e.length)return new Map;let m=s.A.responseHours,f=(0,a.D)(n,36e5,m),p=(l=i.checks.at,r.B`(extract(epoch from date_bin(${r.B.raw("'1 hour'")}::interval, ${l}, timestamptz '2000-01-01 00:00:00+00')) * 1000)::float8`),h=(0,t.b)((0,t.y)(i.monitors.resourceId,e),(0,t.B)(i.checks.at,new Date(f)),d),[w,y]=await Promise.all([(0,o.f)().select({appId:i.monitors.resourceId,t:p,v:c}).from(i.checks).innerJoin(i.monitors,(0,t.u)(i.monitors.id,i.checks.monitorId)).where(h).groupBy(i.monitors.resourceId,p),(0,o.f)().select({appId:i.monitors.resourceId,v:c,m:u}).from(i.checks).innerJoin(i.monitors,(0,t.u)(i.monitors.id,i.checks.monitorId)).where(h).groupBy(i.monitors.resourceId)]);return new Map(e.map(e=>[e,{hourly:(0,a.f)(w.filter(t=>t.appId===e),f,36e5,m),p95:y.find(t=>t.appId===e)?.v??null,p50:y.find(t=>t.appId===e)?.m??null}]))}r.B`(count(*) filter (where ${i.checks.statusCode} >= 500))::int`,r.B`count(*)::int`,e.s(["P",0,p,"_",0,f])},275426,e=>{let t=(e,t)=>({start:new Date(e),end:new Date(e+6e4*t.durationMin)});function n(e,n){let r=n.getTime(),o=e.startsAt.getTime();if(r<o)return null;let i=t(e.weekly?o+6048e5*Math.floor((r-o)/6048e5):o,e);return r<i.end.getTime()?i:null}function r(e,t){return"all"===e.scope||"app"===e.scope&&e.appId===t.appId||"monitor"===e.scope&&e.monitorId===t.monitorId}e.s(["J",0,20,"x",0,function(e,t,o){let i=null;for(let a of e){let e=r(a,t)?n(a,o):null;e&&(!i||e.end>i.end)&&(i={window:a,end:e.end})}return i},"X",0,r,"u",0,function(e,t,o,i=[]){let a=new Set,s=e.filter(e=>null!==n(e,o));for(let e of s)if("app"===e.scope&&e.appId&&a.add(e.appId),"all"===e.scope)for(let e of i)a.add(e);for(let e of t)for(let t of s)r(t,{monitorId:e.id,appId:e.appId})&&(a.add(e.id),"monitor"!==t.scope&&a.add(e.appId));return a},"S",0,function(e,r){let o=n(e,r);if(o)return o;let i=r.getTime(),a=e.startsAt.getTime();return i<a?t(a,e):e.weekly?t(a+6048e5*Math.ceil((i-a)/6048e5),e):null}])},46574,e=>{var t=e.i(218331);function n(e){return e.toLocaleDateString("en-CA",{timeZone:t.h})}function r(e,t){let[r,o,i]=n(e).split("-").map(Number);return Array.from({length:t},(e,n)=>new Date(Date.UTC(r,o-1,i-(t-1-n))).toISOString().slice(0,10))}let o=Date.UTC(2e3,0,1);e.s(["F",0,90,"I",0,30,"W",0,r,"D",0,function(e,t,n){return o+Math.floor((e.getTime()-o)/t)*t-(n-1)*t},"w",0,function(e,t,n){return r(t,n).map(t=>e?.get(t))},"C",0,function(e){let t=new Map;for(let n of e){let e=t.get(n.monitorId);e||(e=new Map,t.set(n.monitorId,e));let r=e.get(n.day);e.set(n.day,{day:n.day,checks:(r?.checks??0)+n.checks,failures:(r?.failures??0)+n.failures,maint:(r?.maint??0)+(n.maint??0)})}return t},"f",0,function(e,t,n,r,o=null){let i=Array.from({length:r},()=>o);for(let o of e){let e=Math.round((o.t-t)/n);e>=0&&e<r&&(i[e]=o.v)}return i},"h",0,function(e,t,n=90,o){return r(t,n).map((t,r)=>{let i,a=e?.get(t),s=a&&(0!==a.checks||a.maint)?0===a.checks?"maint":0===a.failures?"ok":a.failures<3?"warn":"err":"none",l=0==(i=n-1-r)?"Today":1===i?"1 day ago":`${i} days ago`,c=o?.get(t),u=a&&"none"!==s?"maint"===s?`${l} \xb7 maintenance, not counted`:`${l} \xb7 ${a.failures} failed of ${a.checks}`:`${l} \xb7 no data`;return{day:t,tone:s,title:c?`${u} \xb7 deployed ${c}`:u,deploy:c}})},"Y",0,function(e){let t=0,n=0;for(let r of e)r&&(t+=r.checks,n+=r.failures);return t?(t-n)/t*100:null},"m",0,n,"q",0,function(e){return new Date(`${e}T00:00:00+07:00`)}])},146394,e=>{e.s(["O",0,{events:200,deployments:200,apps:200,monitors:200,domains:200,databases:200,recentEvents:5,ongoingBuilds:5},"A",0,{rawChecksMs:6048e5,healthBuckets:30,metricBuckets:48,responseHours:24}])}]})();
1
+ (()=>{"use strict";module.exports=[260338,e=>{var t=e.i(156325),n=e.i(844988),r=e.i(518899);e.s(["f",0,function(e){return r.B`max(${e})`.mapWith((0,n.f)(e,t.f)?e:String)}])},739886,e=>{var t,n=e.i(349129),r=e.i(518899),o=e.i(5672),i=e.i(924924),a=e.i(618916);e.i(61926);var s=e.i(275426);s.J;let l=e=>({id:e.id,scope:e.scope,appId:e.resourceId,monitorId:e.monitorId,startsAt:e.startsAt,durationMin:e.durationMin,weekly:e.weekly,note:e.note}),c=r.B`(${a.maintenanceWindows.weekly} or ${a.maintenanceWindows.startsAt} + ${a.maintenanceWindows.durationMin} * interval '1 minute' > now())`;async function u(){return(await (0,i.f)().select().from(a.maintenanceWindows).where(c).orderBy((0,n.M)(a.maintenanceWindows.startsAt),(0,n.M)(a.maintenanceWindows.id)).limit(s.J)).map(l)}t=a.resources,new Proxy(t,new o.e("mon_app",!1)),e.s(["f",0,u],739886)},890948,e=>{var t=e.i(875225),n=e.i(260338),r=e.i(518899),o=e.i(924924),i=e.i(618916),a=e.i(218331),s=e.i(46574),l=e.i(146394);let c=(e,t)=>"string"==typeof t?r.B`to_char(${e} at time zone ${t}, 'YYYY-MM-DD')`:r.B`to_char((${e} at time zone 'UTC') + ${r.B.raw(`interval '${Math.trunc(t.offsetMinutes)} minutes'`)}, 'YYYY-MM-DD')`,u=r.B.raw("2"),d=r.B`percentile_cont(0.95) within group (order by ${i.checks.latencyMs})`,f=r.B`percentile_cont(0.5) within group (order by ${i.checks.latencyMs})`;r.B`(count(*) filter (where not ${i.checks.ok}))::int`;let m=(0,t.u)(i.checks.inMaintenance,!1);async function p(){let[e]=await (0,o.f)().select({h:(0,n.f)(i.rollupsHourly.hour)}).from(i.rollupsHourly);return e?.h?new Date(e.h.getTime()+36e5):null}async function h(e,t,n=(0,a.C)()){if(!e.length)return new Map;try{return await w(e,t,n)}catch(o){if(!function(e){let t=e;for(let e=0;e<4&&t&&"object"==typeof t;e++,t=t.cause){let{code:e,message:n}=t;if("22023"===e&&"string"==typeof n&&/time zone .* not recognized/i.test(n))return!0}return!1}(o))throw o;let r=globalThis;return r.__watchbellPgZoneWarned||(r.__watchbellPgZoneWarned=!0,console.warn(`Watchbell: the database doesn't know the time zone ${n}; uptime days use its current UTC offset instead.`)),w(e,t,{offsetMinutes:(0,a.c)(t)})}}async function w(e,n,d){let f=(0,a.y)((0,s.W)(n,s.F)[0]),m=await p(),h=new Date(Math.max(f.getTime(),m?.getTime()??0,n.getTime()-l.A.rawChecksMs)),w=c(i.rollupsHourly.hour,d),y=c(i.checks.at,d),[k,g]=await Promise.all([m?(0,o.f)().select({monitorId:i.rollupsHourly.monitorId,day:w,checks:r.B`sum(${i.rollupsHourly.checks})::int`,failures:r.B`sum(${i.rollupsHourly.failures})::int`,maint:r.B`sum(${i.rollupsHourly.maintenance})::int`}).from(i.rollupsHourly).where((0,t.b)((0,t.y)(i.rollupsHourly.monitorId,e),(0,t.B)(i.rollupsHourly.hour,f),(0,t.S)(i.rollupsHourly.hour,m))).groupBy(i.rollupsHourly.monitorId,u):Promise.resolve([]),(0,o.f)().select({monitorId:i.checks.monitorId,day:y,checks:r.B`(count(*) filter (where not ${i.checks.inMaintenance}))::int`,failures:r.B`(count(*) filter (where not ${i.checks.ok} and not ${i.checks.inMaintenance}))::int`,maint:r.B`(count(*) filter (where ${i.checks.inMaintenance}))::int`}).from(i.checks).where((0,t.b)((0,t.y)(i.checks.monitorId,e),(0,t.B)(i.checks.at,h))).groupBy(i.checks.monitorId,u)]);return(0,s.C)([...k,...g])}async function y(e,n){let a;if(!e.length)return new Map;let c=l.A.responseHours,u=(0,s.D)(n,36e5,c),p=(a=i.checks.at,r.B`(extract(epoch from date_bin(${r.B.raw("'1 hour'")}::interval, ${a}, timestamptz '2000-01-01 00:00:00+00')) * 1000)::float8`),h=(0,t.b)((0,t.y)(i.monitors.resourceId,e),(0,t.B)(i.checks.at,new Date(u)),m),[w,y]=await Promise.all([(0,o.f)().select({appId:i.monitors.resourceId,t:p,v:d}).from(i.checks).innerJoin(i.monitors,(0,t.u)(i.monitors.id,i.checks.monitorId)).where(h).groupBy(i.monitors.resourceId,p),(0,o.f)().select({appId:i.monitors.resourceId,v:d,m:f}).from(i.checks).innerJoin(i.monitors,(0,t.u)(i.monitors.id,i.checks.monitorId)).where(h).groupBy(i.monitors.resourceId)]);return new Map(e.map(e=>[e,{hourly:(0,s.f)(w.filter(t=>t.appId===e),u,36e5,c),p95:y.find(t=>t.appId===e)?.v??null,p50:y.find(t=>t.appId===e)?.m??null}]))}r.B`(count(*) filter (where ${i.checks.statusCode} >= 500))::int`,r.B`count(*)::int`,e.s(["P",0,y,"_",0,h])},275426,e=>{var t=e.i(218331);let n=(e,t)=>({start:new Date(e),end:new Date(e+6e4*t.durationMin)}),r=(e,n)=>0===n?e.startsAt.getTime():(0,t._)(e.startsAt,7*n).getTime();function o(e,t){let n=Math.floor((t-e.startsAt.getTime())/6048e5),o=r(e,n);for(;n>0&&o>t;)o=r(e,--n);for(let i=r(e,n+1);i<=t;i=r(e,n+1))n++,o=i;return{k:n,start:o}}function i(e,t){let r=t.getTime(),i=e.startsAt.getTime();if(r<i)return null;let a=n(e.weekly?o(e,r).start:i,e);return r<a.end.getTime()?a:null}function a(e,t){return"all"===e.scope||"app"===e.scope&&e.appId===t.appId||"monitor"===e.scope&&e.monitorId===t.monitorId}e.s(["J",0,20,"x",0,function(e,t,n){let r=null;for(let o of e){let e=a(o,t)?i(o,n):null;e&&(!r||e.end>r.end)&&(r={window:o,end:e.end})}return r},"X",0,a,"u",0,function(e,t,n,r=[]){let o=new Set,s=e.filter(e=>null!==i(e,n));for(let e of s)if("app"===e.scope&&e.appId&&o.add(e.appId),"all"===e.scope)for(let e of r)o.add(e);for(let e of t)for(let t of s)a(t,{monitorId:e.id,appId:e.appId})&&(o.add(e.id),"monitor"!==t.scope&&o.add(e.appId));return o},"S",0,function(e,t){let a=i(e,t);if(a)return a;let s=t.getTime(),l=e.startsAt.getTime();if(s<l)return n(l,e);if(!e.weekly)return null;let c=o(e,s);return n(c.start===s?c.start:r(e,c.k+1),e)}])},46574,e=>{var t=e.i(218331);function n(e,n){let[r,o,i]=(0,t.x)(e).split("-").map(Number);return Array.from({length:n},(e,t)=>new Date(Date.UTC(r,o-1,i-(n-1-t))).toISOString().slice(0,10))}let r=Date.UTC(2e3,0,1);e.s(["F",0,90,"I",0,30,"W",0,n,"D",0,function(e,t,n){return r+Math.floor((e.getTime()-r)/t)*t-(n-1)*t},"w",0,function(e,t,r){return n(t,r).map(t=>e?.get(t))},"C",0,function(e){let t=new Map;for(let n of e){let e=t.get(n.monitorId);e||(e=new Map,t.set(n.monitorId,e));let r=e.get(n.day);e.set(n.day,{day:n.day,checks:(r?.checks??0)+n.checks,failures:(r?.failures??0)+n.failures,maint:(r?.maint??0)+(n.maint??0)})}return t},"f",0,function(e,t,n,r,o=null){let i=Array.from({length:r},()=>o);for(let o of e){let e=Math.round((o.t-t)/n);e>=0&&e<r&&(i[e]=o.v)}return i},"h",0,function(e,t,r=90,o){return n(t,r).map((t,n)=>{let i,a=e?.get(t),s=a&&(0!==a.checks||a.maint)?0===a.checks?"maint":0===a.failures?"ok":a.failures<3?"warn":"err":"none",l=0==(i=r-1-n)?"Today":1===i?"1 day ago":`${i} days ago`,c=o?.get(t),u=a&&"none"!==s?"maint"===s?`${l} \xb7 maintenance, not counted`:`${l} \xb7 ${a.failures} failed of ${a.checks}`:`${l} \xb7 no data`;return{day:t,tone:s,title:c?`${u} \xb7 deployed ${c}`:u,deploy:c}})},"Y",0,function(e){let t=0,n=0;for(let r of e)r&&(t+=r.checks,n+=r.failures);return t?(t-n)/t*100:null}])},146394,e=>{e.s(["O",0,{events:200,deployments:200,apps:200,monitors:200,domains:200,databases:200,recentEvents:5,ongoingBuilds:5},"A",0,{rawChecksMs:6048e5,healthBuckets:30,metricBuckets:48,responseHours:24}])}]})();
2
2
 
3
3
  //# sourceMappingURL=_1lq5m27p-ilrw._.js.map
@@ -0,0 +1,3 @@
1
+ (()=>{"use strict";module.exports=[260338,e=>{var t=e.i(156325),n=e.i(844988),r=e.i(518899);e.s(["f",0,function(e){return r.B`max(${e})`.mapWith((0,n.f)(e,t.f)?e:String)}])},739886,e=>{var t,n=e.i(349129),r=e.i(518899),o=e.i(5672),i=e.i(924924),a=e.i(618916);e.i(61926);var s=e.i(275426);s.J;let l=e=>({id:e.id,scope:e.scope,appId:e.resourceId,monitorId:e.monitorId,startsAt:e.startsAt,durationMin:e.durationMin,weekly:e.weekly,note:e.note}),c=r.B`(${a.maintenanceWindows.weekly} or ${a.maintenanceWindows.startsAt} + ${a.maintenanceWindows.durationMin} * interval '1 minute' > now())`;async function u(){return(await (0,i.f)().select().from(a.maintenanceWindows).where(c).orderBy((0,n.M)(a.maintenanceWindows.startsAt),(0,n.M)(a.maintenanceWindows.id)).limit(s.J)).map(l)}t=a.resources,new Proxy(t,new o.e("mon_app",!1)),e.s(["f",0,u],739886)},890948,e=>{var t=e.i(875225),n=e.i(260338),r=e.i(518899),o=e.i(924924),i=e.i(618916),a=e.i(218331),s=e.i(46574),l=e.i(146394);let c=(e,t)=>"string"==typeof t?r.B`to_char(${e} at time zone ${t}, 'YYYY-MM-DD')`:r.B`to_char((${e} at time zone 'UTC') + ${r.B.raw(`interval '${Math.trunc(t.offsetMinutes)} minutes'`)}, 'YYYY-MM-DD')`,u=r.B.raw("2"),d=r.B`percentile_cont(0.95) within group (order by ${i.checks.latencyMs})`,f=r.B`percentile_cont(0.5) within group (order by ${i.checks.latencyMs})`;r.B`(count(*) filter (where not ${i.checks.ok}))::int`;let m=(0,t.u)(i.checks.inMaintenance,!1);async function p(){let[e]=await (0,o.f)().select({h:(0,n.f)(i.rollupsHourly.hour)}).from(i.rollupsHourly);return e?.h?new Date(e.h.getTime()+36e5):null}async function h(e,t,n=(0,a.C)()){if(!e.length)return new Map;try{return await w(e,t,n)}catch(o){if(!function(e){let t=e;for(let e=0;e<4&&t&&"object"==typeof t;e++,t=t.cause){let{code:e,message:n}=t;if("22023"===e&&"string"==typeof n&&/time zone .* not recognized/i.test(n))return!0}return!1}(o))throw o;let r=globalThis;return r.__watchbellPgZoneWarned||(r.__watchbellPgZoneWarned=!0,console.warn(`Watchbell: the database doesn't know the time zone ${n}; uptime days use its current UTC offset instead.`)),w(e,t,{offsetMinutes:(0,a.c)(t)})}}async function w(e,n,d){let f=(0,a.y)((0,s.W)(n,s.F)[0]),m=await p(),h=new Date(Math.max(f.getTime(),m?.getTime()??0,n.getTime()-l.A.rawChecksMs)),w=c(i.rollupsHourly.hour,d),y=c(i.checks.at,d),[k,g]=await Promise.all([m?(0,o.f)().select({monitorId:i.rollupsHourly.monitorId,day:w,checks:r.B`sum(${i.rollupsHourly.checks})::int`,failures:r.B`sum(${i.rollupsHourly.failures})::int`,maint:r.B`sum(${i.rollupsHourly.maintenance})::int`}).from(i.rollupsHourly).where((0,t.b)((0,t.y)(i.rollupsHourly.monitorId,e),(0,t.B)(i.rollupsHourly.hour,f),(0,t.S)(i.rollupsHourly.hour,m))).groupBy(i.rollupsHourly.monitorId,u):Promise.resolve([]),(0,o.f)().select({monitorId:i.checks.monitorId,day:y,checks:r.B`(count(*) filter (where not ${i.checks.inMaintenance}))::int`,failures:r.B`(count(*) filter (where not ${i.checks.ok} and not ${i.checks.inMaintenance}))::int`,maint:r.B`(count(*) filter (where ${i.checks.inMaintenance}))::int`}).from(i.checks).where((0,t.b)((0,t.y)(i.checks.monitorId,e),(0,t.B)(i.checks.at,h))).groupBy(i.checks.monitorId,u)]);return(0,s.C)([...k,...g])}async function y(e,n){let a;if(!e.length)return new Map;let c=l.A.responseHours,u=(0,s.D)(n,36e5,c),p=(a=i.checks.at,r.B`(extract(epoch from date_bin(${r.B.raw("'1 hour'")}::interval, ${a}, timestamptz '2000-01-01 00:00:00+00')) * 1000)::float8`),h=(0,t.b)((0,t.y)(i.monitors.resourceId,e),(0,t.B)(i.checks.at,new Date(u)),m),[w,y]=await Promise.all([(0,o.f)().select({appId:i.monitors.resourceId,t:p,v:d}).from(i.checks).innerJoin(i.monitors,(0,t.u)(i.monitors.id,i.checks.monitorId)).where(h).groupBy(i.monitors.resourceId,p),(0,o.f)().select({appId:i.monitors.resourceId,v:d,m:f}).from(i.checks).innerJoin(i.monitors,(0,t.u)(i.monitors.id,i.checks.monitorId)).where(h).groupBy(i.monitors.resourceId)]);return new Map(e.map(e=>[e,{hourly:(0,s.f)(w.filter(t=>t.appId===e),u,36e5,c),p95:y.find(t=>t.appId===e)?.v??null,p50:y.find(t=>t.appId===e)?.m??null}]))}r.B`(count(*) filter (where ${i.checks.statusCode} >= 500))::int`,r.B`count(*)::int`,e.s(["P",0,y,"_",0,h])},275426,e=>{var t=e.i(218331);let n=(e,t)=>({start:new Date(e),end:new Date(e+6e4*t.durationMin)}),r=(e,n)=>0===n?e.startsAt.getTime():(0,t._)(e.startsAt,7*n).getTime();function o(e,t){let n=Math.floor((t-e.startsAt.getTime())/6048e5),o=r(e,n);for(;n>0&&o>t;)o=r(e,--n);for(let i=r(e,n+1);i<=t;i=r(e,n+1))n++,o=i;return{k:n,start:o}}function i(e,t){let r=t.getTime(),i=e.startsAt.getTime();if(r<i)return null;let a=n(e.weekly?o(e,r).start:i,e);return r<a.end.getTime()?a:null}function a(e,t){return"all"===e.scope||"app"===e.scope&&e.appId===t.appId||"monitor"===e.scope&&e.monitorId===t.monitorId}e.s(["J",0,20,"x",0,function(e,t,n){let r=null;for(let o of e){let e=a(o,t)?i(o,n):null;e&&(!r||e.end>r.end)&&(r={window:o,end:e.end})}return r},"X",0,a,"u",0,function(e,t,n,r=[]){let o=new Set,s=e.filter(e=>null!==i(e,n));for(let e of s)if("app"===e.scope&&e.appId&&o.add(e.appId),"all"===e.scope)for(let e of r)o.add(e);for(let e of t)for(let t of s)a(t,{monitorId:e.id,appId:e.appId})&&(o.add(e.id),"monitor"!==t.scope&&o.add(e.appId));return o},"S",0,function(e,t){let a=i(e,t);if(a)return a;let s=t.getTime(),l=e.startsAt.getTime();if(s<l)return n(l,e);if(!e.weekly)return null;let c=o(e,s);return n(c.start===s?c.start:r(e,c.k+1),e)}])},46574,e=>{var t=e.i(218331);function n(e,n){let[r,o,i]=(0,t.x)(e).split("-").map(Number);return Array.from({length:n},(e,t)=>new Date(Date.UTC(r,o-1,i-(n-1-t))).toISOString().slice(0,10))}let r=Date.UTC(2e3,0,1);e.s(["F",0,90,"I",0,30,"W",0,n,"D",0,function(e,t,n){return r+Math.floor((e.getTime()-r)/t)*t-(n-1)*t},"w",0,function(e,t,r){return n(t,r).map(t=>e?.get(t))},"C",0,function(e){let t=new Map;for(let n of e){let e=t.get(n.monitorId);e||(e=new Map,t.set(n.monitorId,e));let r=e.get(n.day);e.set(n.day,{day:n.day,checks:(r?.checks??0)+n.checks,failures:(r?.failures??0)+n.failures,maint:(r?.maint??0)+(n.maint??0)})}return t},"f",0,function(e,t,n,r,o=null){let i=Array.from({length:r},()=>o);for(let o of e){let e=Math.round((o.t-t)/n);e>=0&&e<r&&(i[e]=o.v)}return i},"h",0,function(e,t,r=90,o){return n(t,r).map((t,n)=>{let i,a=e?.get(t),s=a&&(0!==a.checks||a.maint)?0===a.checks?"maint":0===a.failures?"ok":a.failures<3?"warn":"err":"none",l=0==(i=r-1-n)?"Today":1===i?"1 day ago":`${i} days ago`,c=o?.get(t),u=a&&"none"!==s?"maint"===s?`${l} \xb7 maintenance, not counted`:`${l} \xb7 ${a.failures} failed of ${a.checks}`:`${l} \xb7 no data`;return{day:t,tone:s,title:c?`${u} \xb7 deployed ${c}`:u,deploy:c}})},"Y",0,function(e){let t=0,n=0;for(let r of e)r&&(t+=r.checks,n+=r.failures);return t?(t-n)/t*100:null}])},146394,e=>{e.s(["O",0,{events:200,deployments:200,apps:200,monitors:200,domains:200,databases:200,recentEvents:5,ongoingBuilds:5},"A",0,{rawChecksMs:6048e5,healthBuckets:30,metricBuckets:48,responseHours:24}])}]})();
2
+
3
+ //# sourceMappingURL=_1mnwzh3z9y4th._.js.map
@@ -1,3 +1,3 @@
1
- (()=>{"use strict";module.exports=[917907,e=>{var t=e.i(747909),a=e.i(174017),s=e.i(996250),o=e.i(759756),n=e.i(561916),i=e.i(174677),r=e.i(869741),p=e.i(316795),l=e.i(487718),d=e.i(995169),c=e.i(47587),u=e.i(666012),h=e.i(570101),m=e.i(626937),y=e.i(10372),g=e.i(193695),b=e.i(509580);e.i(52474);var f=e.i(600220);let w=new t.AppRouteRouteModule({definition:{kind:a.f.APP_ROUTE,page:"/api/v1/openapi.json/route",pathname:"/api/v1/openapi.json",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/v1/openapi.json/route.ts",nextConfigOutput:"standalone",userland:()=>e.r(903564),...{}}),{workAsyncStorage:v,workUnitAsyncStorage:k,serverHooks:x}=w;async function O(e,t,s){s.requestMeta&&(0,o.R)(e,s.requestMeta),w.isDev&&(0,o.i)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let v="/api/v1/openapi.json/route";v=v.replace(/\/index$/,"")||"/";let k=await w.prepare(e,t,{srcPage:v,multiZoneDraftMode:!1});if(!k)return t.statusCode=400,t.end("Bad Request"),null==s.waitUntil||s.waitUntil.call(s,Promise.resolve()),null;let{buildId:x,deploymentId:O,params:T,nextConfig:A,parsedUrl:S,isDraftMode:C,prerenderManifest:q,routerServerContext:R,isOnDemandRevalidate:I,revalidateOnlyGenerated:_,resolvedPathname:j,clientReferenceManifest:E,serverActionsManifest:P,previewProps:L}=k,N=(0,r.f)(v),U=!!q.routes[j]&&(w.isDev||(0,b.f)(j,w.cacheOwner,q.routes[j])),M=!!(q.dynamicRoutes[N]||U),J=async()=>((null==R?void 0:R.render404)?await R.render404(e,t,S,!1):t.end("This page could not be found"),null);if(M&&!C){let e=q.dynamicRoutes[N];if(e&&!1===e.fallback&&!U){if(A.adapterPath)return await J();throw new g.NoFallbackError}}let H=null;!M||w.isDev||C||(H="/index"===(H=j)?"/":H),P&&E&&(0,i.f)({page:v,clientReferenceManifest:E,serverActionsManifest:P});let D=e.method||"GET",$=(0,n.v)(),B=$.getActiveScopeSpan(),K=!!(null==R?void 0:R.isWrappedByNextServer),G=!!(0,o.w)(e,"minimalMode"),W=(0,o.w)(e,"incrementalCache")||await w.getIncrementalCache(e,A,L,q,G);null==W||W.resetRequestCache(),globalThis.__incrementalCache=W;let z={params:T,previewProps:L,renderOpts:{experimental:{authInterrupts:!!A.experimental.authInterrupts,useCacheTimeout:A.experimental.useCacheTimeout,durableUseCacheEntries:!!A.experimental.durableUseCacheEntries},cacheComponents:!!A.cacheComponents,validationLevel:A.experimental.instantInsights.validationLevel,isDraftMode:C,incrementalCache:W,hmrRefreshHash:(0,o.w)(e,"hmrRefreshHash"),cacheLifeProfiles:A.cacheLife,staticPageGenerationTimeout:A.staticPageGenerationTimeout,waitUntil:s.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0},sharedContext:{buildId:x,deploymentId:O}},F=new p.x(e),Z=new p.e(t),Q=l.k.fromNodeNextRequest(F,(0,l.t)(t)),V=async({previousCacheEntry:a})=>{try{if(!G&&I&&_&&!a)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let o=null===H?await w.handle(Q,z):await w.prerender(Q,z);e.fetchMetrics=z.renderOpts.fetchMetrics;let n=z.renderOpts.pendingWaitUntil;n&&s.waitUntil&&(s.waitUntil(n),n=void 0);let i=z.renderOpts.collectedTags;if(!M)return await (0,u.f)(F,Z,o,n),null;{let e=await o.blob(),t=(0,h.S)(o.headers);i&&(t[y.M]=i),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==z.renderOpts.collectedRevalidate&&!(z.renderOpts.collectedRevalidate>=y.Q)&&z.renderOpts.collectedRevalidate,s=void 0===z.renderOpts.collectedExpire||z.renderOpts.collectedExpire>=y.Q?!1!==a&&a>0?A.expireTime:void 0:z.renderOpts.collectedExpire;return{value:{kind:f.x.APP_ROUTE,status:o.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:s}}}}catch(t){throw(null==a?void 0:a.isStale)&&await w.onRequestError(e,t,{routerKind:"App Router",routePath:v,routeType:"route",revalidateReason:(0,c.f)({isStaticGeneration:null!==H,isOnDemandRevalidate:I})},!1,R),t}},X=async(o,i)=>{try{var r,p;let o=await w.handleResponse({req:e,nextConfig:A,cacheKey:H,routeKind:a.f.APP_ROUTE,isFallback:!1,previewProps:L,prerenderManifest:q,isRoutePPREnabled:!1,isOnDemandRevalidate:I,revalidateOnlyGenerated:_,responseGenerator:V,waitUntil:s.waitUntil,isMinimalMode:G});if(null!==o&&"error"in o)throw o.error;if(!M)return;if((null==o||null==(r=o.value)?void 0:r.kind)!==f.x.APP_ROUTE)throw Error(`Invariant: app-route received invalid cache entry ${null==o||null==(p=o.value)?void 0:p.kind}`);G||t.setHeader("x-nextjs-cache",I?"REVALIDATED":o.isMiss?"MISS":o.isStale?"STALE":"HIT"),C&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let n=(0,h.G)(o.value.headers);G&&M||n.delete(y.M),!o.cacheControl||t.getHeader("Cache-Control")||n.get("Cache-Control")||n.set("Cache-Control",(0,m.f)(o.cacheControl)),await (0,u.f)(F,Z,new Response(o.value.body,{headers:n,status:o.value.status||200}));return}catch(a){if(a instanceof g.NoFallbackError||await w.onRequestError(e,a,{routerKind:"App Router",routePath:N,routeType:"route",revalidateReason:(0,c.f)({isStaticGeneration:null!==H,isOnDemandRevalidate:I})},!1,R),M)throw a;if(t.headersSent){if(o){let e=a instanceof Error?a:Error("Unknown app route error");o.recordException(e),o.setStatus({code:n.J.ERROR,message:e.message}),o.setAttribute("error.type",e.name)}t.writableEnded||t.destroyed||t.end()}else await (0,u.f)(F,Z,new Response(null,{status:500}));return}finally{(()=>{if(!o)return;let e=t.statusCode;o.setAttributes({"http.status_code":e,"next.rsc":!1}),e&&e>=500&&(o.setStatus({code:n.J.ERROR}),o.setAttribute("error.type",e.toString()));let a=$.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==d.q.handleRequest)return console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let s=a.get("next.route")||N,r=`${D} ${s}`;o.setAttributes({"next.route":s,"http.route":s,"next.span_name":r}),o.updateName(r),i&&i!==o&&(i.setAttribute("http.route",s),i.updateName(r))})()}};if(K&&B)await X(B,void 0);else{let t=$.getActiveScopeSpan();await $.withPropagatedContext(e.headers,()=>$.trace(d.q.handleRequest,{spanName:`${D} ${v}`,kind:n.C.SERVER,attributes:{"http.method":D,"http.target":e.url}},e=>X(e,t)),void 0,!K)}}e.s(["handler",0,O,"patchFetch",0,function(){return(0,s.f)({workAsyncStorage:v,workUnitAsyncStorage:k})},"routeModule",0,w,"serverHooks",0,x,"workAsyncStorage",0,v,"workUnitAsyncStorage",0,k])},903564,e=>{var t=e.i(79832),a=e.i(400687),s=e.i(579810),o=e.i(313931);let n={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."},i=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),p=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),l=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:o.U.noteSource,model:"gemini-3.8-flash",createdAt:"2026-10-13T01:02:03.000Z"}]},null,2),d=[{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:[n],body:i,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:i},{name:"Streaming (SSE)",body:JSON.stringify({model:"gemini/gemini-3.8-flash",messages:[{role:"user",content:"Count to five."}],stream:!0},null,2)},{name:o.U.advisorExample.name,body:JSON.stringify({model:"gemini/gemini-3.8-flash",messages:[{role:"system",content:o.U.advisorExample.system},{role:"user",content:o.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. ${o.U.modelsAgSentence}A key pinned to a provider or model sees only that.`,docsOnly:!1,params:[n],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"},...o.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.${o.U.askAgSentence}`,docsOnly:!1,params:[n],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:o.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 ${o.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."},n],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:o.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."},n],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."},n],response:{status:200,contentType:"application/json",description:"One app.",example:p}},{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 ${o.U.adviceAgent} wrote about the app, scrubbed like /status. ${o.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."},n],response:{status:200,contentType:"application/json",description:"The app and its latest notes, newest first (an empty list when there are none).",example:l}},{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:[n],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:[n],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 (${o.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."},n],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)}}],c=["AI","Console","MCP","Health","Heartbeats","Scheduler"],u={AI:"OpenAI-compatible calls through the providers you connected.",Console:"Read-only console data for agents and apps.",MCP:"Model Context Protocol server.",Health:"Liveness.",Heartbeats:"Pings from your own jobs.",Scheduler:"Called by the schedulers, not by you."},h=new Set(["accept","content-type","authorization"]),m={$ref:"#/components/schemas/Error"},y=(e,t)=>({description:e,content:{"application/json":{schema:m,example:{error:{type:t,message:e}}}}}),g={"ai-chat":{type:"object",required:["model","messages"],properties:{model:{type:"string",description:"provider/model (for example gemini/gemini-3.8-flash), or a bare id for the default provider."},messages:{type:"array",maxItems:100,items:{type:"object",required:["role"],properties:{role:{type:"string",enum:["system","user","assistant","tool"]},content:{}}}},stream:{type:"boolean"},stream_options:{type:"object"},temperature:{type:"number"},top_p:{type:"number"},max_tokens:{type:"integer"},max_completion_tokens:{type:"integer"},stop:{},n:{type:"integer",const:1},presence_penalty:{type:"number"},frequency_penalty:{type:"number"},seed:{type:"integer"},response_format:{type:"object"},tools:{type:"array"},tool_choice:{},user:{type:"string"}},additionalProperties:!1},mcp:{type:"object",required:["jsonrpc","method"],properties:{jsonrpc:{const:"2.0"},id:{type:["string","integer","null"]},method:{type:"string"},params:{type:"object"}}},"ai-questions":{type:"object",required:["question"],properties:{question:{type:"string",minLength:1,maxLength:2e3,description:"Plain text or markdown. No keys or tokens: such text is refused."}}}},b={"ai-chat":[400,429,502,503],"ai-questions":[400,413,502,503],"ai-question":[404],status:[400],"status-app":[404],advice:[400,404],mcp:[400],ping:[404,429],"ping-start":[404,429],"ping-fail":[404,429]},f={400:["The request was invalid.","invalid_request"],413:["The request body is too large.","invalid_request"],404:["Not found.","not_found"],429:["Rate limit reached.","key_rate_limit"],502:["The provider failed.","upstream_error"],503:["No provider is connected.","provider_not_connected"]};function w(e){return{name:e.name,in:e.in,required:"path"===e.in||e.required,description:e.description,schema:{type:e.type},...void 0!==e.example?{example:e.example}:{}}}function v(e){let t=e.response;if(!t)return{description:"OK."};let a=t.contentType.includes("json"),s=t.example;if(a)try{s=JSON.parse(t.example)}catch{}return{description:t.description,content:{[t.contentType]:{example:s}}}}async function k(e){if(e.headers.get("authorization")){let t=await (0,s.f)(e,"any");if(!t.ok)return t.response}else if(!await (0,t.g)("owner").then(()=>!0,()=>!1))return(0,a.O)("invalid_api_key","Send a console API key (Authorization: Bearer wb_…), or open this while signed in as the owner.",401);return(0,a.E)(function(e){let t={};for(let e of d)(t[e.path]??={})[e.method]=function(e){let t=e.params.filter(e=>!("header"===e.in&&h.has(e.name.toLowerCase()))).map(w),a={[String(e.response?.status??200)]:v(e)};for(let t of e.alsoResponses??[])a[String(t.status)]=v({response:t});for(let t of(("key"===e.access||"keyOrOwner"===e.access)&&(a["401"]={$ref:"#/components/responses/InvalidKey"},e.scope&&"any"!==e.scope&&(a["403"]={$ref:"#/components/responses/MissingScope"}),a["429"]={$ref:"#/components/responses/RateLimited"}),b[e.id]??[])){let[e,s]=f[t];a[String(t)]??=y(e,s)}let s={operationId:e.operationId,summary:e.summary,description:e.description,tags:[e.tag],...t.length?{parameters:t}:{},responses:a,"x-watchbell-scope":e.scope??e.scopeLabel};if(e.body){let t={schema:g[e.id]??{type:"object"}},a=e.body;try{a=JSON.parse(e.body)}catch{}t.example=a;let o=(e.examples??[]).filter(e=>e.body);o.length&&(t.examples=Object.fromEntries(o.map(e=>{let t=e.body;try{t=JSON.parse(e.body)}catch{}return[e.name,{summary:e.name,value:t}]}))),s.requestBody={required:!0,description:e.bodyDescription,content:{"application/json":t}}}return e.docsOnly?s["x-watchbell-docs-only"]=!0:s.security="key"===e.access||"keyOrOwner"===e.access?[{consoleKey:[]}]:[],s}(e);return{openapi:"3.1.0",info:{title:"Watchbell API",version:"1.0.0",description:"Read-only console data, an OpenAI-compatible AI gateway and an MCP server for agents, plus the endpoints the schedulers and your jobs call. Create a key under AI Gateway › API keys and send it as Authorization: Bearer wb_… . Prompts and completions are never stored; the data returned is scrubbed (database aliases, no URLs, emails or secrets)."},servers:[{url:e.replace(/\/+$/,""),description:"This deployment"}],tags:c.map(e=>({name:e,description:u[e]})),paths:t,components:{securitySchemes:{consoleKey:{type:"http",scheme:"bearer",bearerFormat:"wb_ followed by 40 letters and digits (keys made before the Watchbell rename start with wp_)",description:"A console API key. Its scopes decide which endpoints it may call (see x-watchbell-scope)."}},schemas:{Error:{type:"object",required:["error"],properties:{error:{type:"object",required:["type","message"],properties:{type:{type:"string"},message:{type:"string"}}}}}},responses:{InvalidKey:y("Missing, unknown, revoked or expired key.","invalid_api_key"),MissingScope:y("The key lacks the scope this endpoint needs.","missing_scope"),RateLimited:{...y("The key's per-minute limit was reached.","key_rate_limit"),headers:{"Retry-After":{description:"Seconds to wait.",schema:{type:"integer"}}}}}}}}(function(e,t,a=!1){let s=(e.get("x-forwarded-host")??e.get("host")??"").split(",")[0].trim();if(!/^[a-z0-9.-]+(:\d{1,5})?$/i.test(s))return t.replace(/\/+$/,"");let o=(e.get("x-forwarded-proto")??"").split(",")[0].trim().toLowerCase(),n="http"===o||"https"===o?o:a&&/^(localhost|127\.0\.0\.1)(:|$)/.test(s)?"http":"https";return`${n}://${s}`}(e.headers,new URL(e.url).origin)))}e.s(["GET",0,k,"dynamic",0,"force-dynamic"],903564)}]})();
1
+ (()=>{"use strict";module.exports=[917907,e=>{var t=e.i(747909),a=e.i(174017),s=e.i(996250),o=e.i(759756),n=e.i(561916),i=e.i(174677),r=e.i(869741),p=e.i(316795),l=e.i(487718),d=e.i(995169),c=e.i(47587),u=e.i(666012),h=e.i(570101),m=e.i(626937),y=e.i(10372),g=e.i(193695),b=e.i(509580);e.i(52474);var f=e.i(600220);let w=new t.AppRouteRouteModule({definition:{kind:a.f.APP_ROUTE,page:"/api/v1/openapi.json/route",pathname:"/api/v1/openapi.json",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/v1/openapi.json/route.ts",nextConfigOutput:"standalone",userland:()=>e.r(903564),...{}}),{workAsyncStorage:v,workUnitAsyncStorage:k,serverHooks:x}=w;async function O(e,t,s){s.requestMeta&&(0,o.R)(e,s.requestMeta),w.isDev&&(0,o.i)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let v="/api/v1/openapi.json/route";v=v.replace(/\/index$/,"")||"/";let k=await w.prepare(e,t,{srcPage:v,multiZoneDraftMode:!1});if(!k)return t.statusCode=400,t.end("Bad Request"),null==s.waitUntil||s.waitUntil.call(s,Promise.resolve()),null;let{buildId:x,deploymentId:O,params:T,nextConfig:A,parsedUrl:S,isDraftMode:C,prerenderManifest:q,routerServerContext:R,isOnDemandRevalidate:_,revalidateOnlyGenerated:I,resolvedPathname:j,clientReferenceManifest:E,serverActionsManifest:P,previewProps:L}=k,N=(0,r.f)(v),U=!!q.routes[j]&&(w.isDev||(0,b.f)(j,w.cacheOwner,q.routes[j])),M=!!(q.dynamicRoutes[N]||U),J=async()=>((null==R?void 0:R.render404)?await R.render404(e,t,S,!1):t.end("This page could not be found"),null);if(M&&!C){let e=q.dynamicRoutes[N];if(e&&!1===e.fallback&&!U){if(A.adapterPath)return await J();throw new g.NoFallbackError}}let H=null;!M||w.isDev||C||(H="/index"===(H=j)?"/":H),P&&E&&(0,i.f)({page:v,clientReferenceManifest:E,serverActionsManifest:P});let D=e.method||"GET",$=(0,n.v)(),B=$.getActiveScopeSpan(),K=!!(null==R?void 0:R.isWrappedByNextServer),G=!!(0,o.w)(e,"minimalMode"),W=(0,o.w)(e,"incrementalCache")||await w.getIncrementalCache(e,A,L,q,G);null==W||W.resetRequestCache(),globalThis.__incrementalCache=W;let z={params:T,previewProps:L,renderOpts:{experimental:{authInterrupts:!!A.experimental.authInterrupts,useCacheTimeout:A.experimental.useCacheTimeout,durableUseCacheEntries:!!A.experimental.durableUseCacheEntries},cacheComponents:!!A.cacheComponents,validationLevel:A.experimental.instantInsights.validationLevel,isDraftMode:C,incrementalCache:W,hmrRefreshHash:(0,o.w)(e,"hmrRefreshHash"),cacheLifeProfiles:A.cacheLife,staticPageGenerationTimeout:A.staticPageGenerationTimeout,waitUntil:s.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0},sharedContext:{buildId:x,deploymentId:O}},F=new p.x(e),Z=new p.e(t),Q=l.k.fromNodeNextRequest(F,(0,l.t)(t)),V=async({previousCacheEntry:a})=>{try{if(!G&&_&&I&&!a)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let o=null===H?await w.handle(Q,z):await w.prerender(Q,z);e.fetchMetrics=z.renderOpts.fetchMetrics;let n=z.renderOpts.pendingWaitUntil;n&&s.waitUntil&&(s.waitUntil(n),n=void 0);let i=z.renderOpts.collectedTags;if(!M)return await (0,u.f)(F,Z,o,n),null;{let e=await o.blob(),t=(0,h.S)(o.headers);i&&(t[y.M]=i),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==z.renderOpts.collectedRevalidate&&!(z.renderOpts.collectedRevalidate>=y.Q)&&z.renderOpts.collectedRevalidate,s=void 0===z.renderOpts.collectedExpire||z.renderOpts.collectedExpire>=y.Q?!1!==a&&a>0?A.expireTime:void 0:z.renderOpts.collectedExpire;return{value:{kind:f.x.APP_ROUTE,status:o.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:s}}}}catch(t){throw(null==a?void 0:a.isStale)&&await w.onRequestError(e,t,{routerKind:"App Router",routePath:v,routeType:"route",revalidateReason:(0,c.f)({isStaticGeneration:null!==H,isOnDemandRevalidate:_})},!1,R),t}},X=async(o,i)=>{try{var r,p;let o=await w.handleResponse({req:e,nextConfig:A,cacheKey:H,routeKind:a.f.APP_ROUTE,isFallback:!1,previewProps:L,prerenderManifest:q,isRoutePPREnabled:!1,isOnDemandRevalidate:_,revalidateOnlyGenerated:I,responseGenerator:V,waitUntil:s.waitUntil,isMinimalMode:G});if(null!==o&&"error"in o)throw o.error;if(!M)return;if((null==o||null==(r=o.value)?void 0:r.kind)!==f.x.APP_ROUTE)throw Error(`Invariant: app-route received invalid cache entry ${null==o||null==(p=o.value)?void 0:p.kind}`);G||t.setHeader("x-nextjs-cache",_?"REVALIDATED":o.isMiss?"MISS":o.isStale?"STALE":"HIT"),C&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let n=(0,h.G)(o.value.headers);G&&M||n.delete(y.M),!o.cacheControl||t.getHeader("Cache-Control")||n.get("Cache-Control")||n.set("Cache-Control",(0,m.f)(o.cacheControl)),await (0,u.f)(F,Z,new Response(o.value.body,{headers:n,status:o.value.status||200}));return}catch(a){if(a instanceof g.NoFallbackError||await w.onRequestError(e,a,{routerKind:"App Router",routePath:N,routeType:"route",revalidateReason:(0,c.f)({isStaticGeneration:null!==H,isOnDemandRevalidate:_})},!1,R),M)throw a;if(t.headersSent){if(o){let e=a instanceof Error?a:Error("Unknown app route error");o.recordException(e),o.setStatus({code:n.J.ERROR,message:e.message}),o.setAttribute("error.type",e.name)}t.writableEnded||t.destroyed||t.end()}else await (0,u.f)(F,Z,new Response(null,{status:500}));return}finally{(()=>{if(!o)return;let e=t.statusCode;o.setAttributes({"http.status_code":e,"next.rsc":!1}),e&&e>=500&&(o.setStatus({code:n.J.ERROR}),o.setAttribute("error.type",e.toString()));let a=$.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==d.q.handleRequest)return console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let s=a.get("next.route")||N,r=`${D} ${s}`;o.setAttributes({"next.route":s,"http.route":s,"next.span_name":r}),o.updateName(r),i&&i!==o&&(i.setAttribute("http.route",s),i.updateName(r))})()}};if(K&&B)await X(B,void 0);else{let t=$.getActiveScopeSpan();await $.withPropagatedContext(e.headers,()=>$.trace(d.q.handleRequest,{spanName:`${D} ${v}`,kind:n.C.SERVER,attributes:{"http.method":D,"http.target":e.url}},e=>X(e,t)),void 0,!K)}}e.s(["handler",0,O,"patchFetch",0,function(){return(0,s.f)({workAsyncStorage:v,workUnitAsyncStorage:k})},"routeModule",0,w,"serverHooks",0,x,"workAsyncStorage",0,v,"workUnitAsyncStorage",0,k])},903564,e=>{var t=e.i(79832),a=e.i(400687),s=e.i(579810),o=e.i(313931),n=e.i(218331);let i={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),p=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),l=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),d=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:o.U.noteSource,model:"gemini-3.8-flash",createdAt:"2026-10-13T01:02:03.000Z"}]},null,2),c=[{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:[i],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:o.U.advisorExample.name,body:JSON.stringify({model:"gemini/gemini-3.8-flash",messages:[{role:"system",content:o.U.advisorExample.system},{role:"user",content:o.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. ${o.U.modelsAgSentence}A key pinned to a provider or model sees only that.`,docsOnly:!1,params:[i],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"},...o.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.${o.U.askAgSentence}`,docsOnly:!1,params:[i],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:o.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 ${o.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."},i],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:o.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."},i],response:{status:200,contentType:"application/json",description:"The requested sections of the console snapshot.",example:p},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."},i],response:{status:200,contentType:"application/json",description:"One app.",example:l}},{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 ${o.U.adviceAgent} wrote about the app, scrubbed like /status. ${o.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."},i],response:{status:200,contentType:"application/json",description:"The app and its latest notes, newest first (an empty list when there are none).",example:d}},{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:[i],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:[i],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 (${o.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."},i],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,n.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)}}],u=["AI","Console","MCP","Health","Heartbeats","Scheduler"],h={AI:"OpenAI-compatible calls through the providers you connected.",Console:"Read-only console data for agents and apps.",MCP:"Model Context Protocol server.",Health:"Liveness.",Heartbeats:"Pings from your own jobs.",Scheduler:"Called by the schedulers, not by you."},m=new Set(["accept","content-type","authorization"]),y={$ref:"#/components/schemas/Error"},g=(e,t)=>({description:e,content:{"application/json":{schema:y,example:{error:{type:t,message:e}}}}}),b={"ai-chat":{type:"object",required:["model","messages"],properties:{model:{type:"string",description:"provider/model (for example gemini/gemini-3.8-flash), or a bare id for the default provider."},messages:{type:"array",maxItems:100,items:{type:"object",required:["role"],properties:{role:{type:"string",enum:["system","user","assistant","tool"]},content:{}}}},stream:{type:"boolean"},stream_options:{type:"object"},temperature:{type:"number"},top_p:{type:"number"},max_tokens:{type:"integer"},max_completion_tokens:{type:"integer"},stop:{},n:{type:"integer",const:1},presence_penalty:{type:"number"},frequency_penalty:{type:"number"},seed:{type:"integer"},response_format:{type:"object"},tools:{type:"array"},tool_choice:{},user:{type:"string"}},additionalProperties:!1},mcp:{type:"object",required:["jsonrpc","method"],properties:{jsonrpc:{const:"2.0"},id:{type:["string","integer","null"]},method:{type:"string"},params:{type:"object"}}},"ai-questions":{type:"object",required:["question"],properties:{question:{type:"string",minLength:1,maxLength:2e3,description:"Plain text or markdown. No keys or tokens: such text is refused."}}}},f={"ai-chat":[400,429,502,503],"ai-questions":[400,413,502,503],"ai-question":[404],status:[400],"status-app":[404],advice:[400,404],mcp:[400],ping:[404,429],"ping-start":[404,429],"ping-fail":[404,429]},w={400:["The request was invalid.","invalid_request"],413:["The request body is too large.","invalid_request"],404:["Not found.","not_found"],429:["Rate limit reached.","key_rate_limit"],502:["The provider failed.","upstream_error"],503:["No provider is connected.","provider_not_connected"]};function v(e){return{name:e.name,in:e.in,required:"path"===e.in||e.required,description:e.description,schema:{type:e.type},...void 0!==e.example?{example:e.example}:{}}}function k(e){let t=e.response;if(!t)return{description:"OK."};let a=t.contentType.includes("json"),s=t.example;if(a)try{s=JSON.parse(t.example)}catch{}return{description:t.description,content:{[t.contentType]:{example:s}}}}async function x(e){if(e.headers.get("authorization")){let t=await (0,s.f)(e,"any");if(!t.ok)return t.response}else if(!await (0,t.g)("owner").then(()=>!0,()=>!1))return(0,a.O)("invalid_api_key","Send a console API key (Authorization: Bearer wb_…), or open this while signed in as the owner.",401);return(0,a.E)(function(e){let t={};for(let e of c)(t[e.path]??={})[e.method]=function(e){let t=e.params.filter(e=>!("header"===e.in&&m.has(e.name.toLowerCase()))).map(v),a={[String(e.response?.status??200)]:k(e)};for(let t of e.alsoResponses??[])a[String(t.status)]=k({response:t});for(let t of(("key"===e.access||"keyOrOwner"===e.access)&&(a["401"]={$ref:"#/components/responses/InvalidKey"},e.scope&&"any"!==e.scope&&(a["403"]={$ref:"#/components/responses/MissingScope"}),a["429"]={$ref:"#/components/responses/RateLimited"}),f[e.id]??[])){let[e,s]=w[t];a[String(t)]??=g(e,s)}let s={operationId:e.operationId,summary:e.summary,description:e.description,tags:[e.tag],...t.length?{parameters:t}:{},responses:a,"x-watchbell-scope":e.scope??e.scopeLabel};if(e.body){let t={schema:b[e.id]??{type:"object"}},a=e.body;try{a=JSON.parse(e.body)}catch{}t.example=a;let o=(e.examples??[]).filter(e=>e.body);o.length&&(t.examples=Object.fromEntries(o.map(e=>{let t=e.body;try{t=JSON.parse(e.body)}catch{}return[e.name,{summary:e.name,value:t}]}))),s.requestBody={required:!0,description:e.bodyDescription,content:{"application/json":t}}}return e.docsOnly?s["x-watchbell-docs-only"]=!0:s.security="key"===e.access||"keyOrOwner"===e.access?[{consoleKey:[]}]:[],s}(e);return{openapi:"3.1.0",info:{title:"Watchbell API",version:"1.0.0",description:"Read-only console data, an OpenAI-compatible AI gateway and an MCP server for agents, plus the endpoints the schedulers and your jobs call. Create a key under AI Gateway › API keys and send it as Authorization: Bearer wb_… . Prompts and completions are never stored; the data returned is scrubbed (database aliases, no URLs, emails or secrets)."},servers:[{url:e.replace(/\/+$/,""),description:"This deployment"}],tags:u.map(e=>({name:e,description:h[e]})),paths:t,components:{securitySchemes:{consoleKey:{type:"http",scheme:"bearer",bearerFormat:"wb_ followed by 40 letters and digits (keys made before the Watchbell rename start with wp_)",description:"A console API key. Its scopes decide which endpoints it may call (see x-watchbell-scope)."}},schemas:{Error:{type:"object",required:["error"],properties:{error:{type:"object",required:["type","message"],properties:{type:{type:"string"},message:{type:"string"}}}}}},responses:{InvalidKey:g("Missing, unknown, revoked or expired key.","invalid_api_key"),MissingScope:g("The key lacks the scope this endpoint needs.","missing_scope"),RateLimited:{...g("The key's per-minute limit was reached.","key_rate_limit"),headers:{"Retry-After":{description:"Seconds to wait.",schema:{type:"integer"}}}}}}}}(function(e,t,a=!1){let s=(e.get("x-forwarded-host")??e.get("host")??"").split(",")[0].trim();if(!/^[a-z0-9.-]+(:\d{1,5})?$/i.test(s))return t.replace(/\/+$/,"");let o=(e.get("x-forwarded-proto")??"").split(",")[0].trim().toLowerCase(),n="http"===o||"https"===o?o:a&&/^(localhost|127\.0\.0\.1)(:|$)/.test(s)?"http":"https";return`${n}://${s}`}(e.headers,new URL(e.url).origin)))}e.s(["GET",0,x,"dynamic",0,"force-dynamic"],903564)}]})();
2
2
 
3
3
  //# sourceMappingURL=_1nuf-l7izvfl_._.js.map