watchbell 1.2.1 → 1.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (649) hide show
  1. package/README.md +34 -11
  2. package/bin/watchbell.mjs +731 -44
  3. package/package.json +1 -1
  4. package/scripts/node-runtime.mjs +166 -0
  5. package/scripts/selfhost-log.mjs +116 -0
  6. package/server/.next/BUILD_ID +1 -1
  7. package/server/.next/build-manifest.json +3 -3
  8. package/server/.next/prerender-manifest.json +3 -3
  9. package/server/.next/server/app/(console)/(private)/ai/agents/page/server-reference-manifest.json +11 -11
  10. package/server/.next/server/app/(console)/(private)/ai/agents/page.js +47 -46
  11. package/server/.next/server/app/(console)/(private)/ai/agents/page.js.nft.json +1 -1
  12. package/server/.next/server/app/(console)/(private)/ai/agents/page_client-reference-manifest.js +1 -1
  13. package/server/.next/server/app/(console)/(private)/ai/ask/page/server-reference-manifest.json +10 -10
  14. package/server/.next/server/app/(console)/(private)/ai/ask/page.js +47 -46
  15. package/server/.next/server/app/(console)/(private)/ai/ask/page.js.nft.json +1 -1
  16. package/server/.next/server/app/(console)/(private)/ai/ask/page_client-reference-manifest.js +1 -1
  17. package/server/.next/server/app/(console)/(private)/ai/connect/page/server-reference-manifest.json +9 -9
  18. package/server/.next/server/app/(console)/(private)/ai/connect/page.js +47 -46
  19. package/server/.next/server/app/(console)/(private)/ai/connect/page.js.nft.json +1 -1
  20. package/server/.next/server/app/(console)/(private)/ai/connect/page_client-reference-manifest.js +1 -1
  21. package/server/.next/server/app/(console)/(private)/ai/keys/page/server-reference-manifest.json +12 -12
  22. package/server/.next/server/app/(console)/(private)/ai/keys/page.js +47 -46
  23. package/server/.next/server/app/(console)/(private)/ai/keys/page.js.nft.json +1 -1
  24. package/server/.next/server/app/(console)/(private)/ai/keys/page_client-reference-manifest.js +1 -1
  25. package/server/.next/server/app/(console)/(private)/ai/logs/page/server-reference-manifest.json +10 -10
  26. package/server/.next/server/app/(console)/(private)/ai/logs/page.js +47 -46
  27. package/server/.next/server/app/(console)/(private)/ai/logs/page.js.nft.json +1 -1
  28. package/server/.next/server/app/(console)/(private)/ai/logs/page_client-reference-manifest.js +1 -1
  29. package/server/.next/server/app/(console)/(private)/ai/models/page/server-reference-manifest.json +19 -19
  30. package/server/.next/server/app/(console)/(private)/ai/models/page.js +47 -46
  31. package/server/.next/server/app/(console)/(private)/ai/models/page.js.nft.json +1 -1
  32. package/server/.next/server/app/(console)/(private)/ai/models/page_client-reference-manifest.js +1 -1
  33. package/server/.next/server/app/(console)/(private)/ai/page/server-reference-manifest.json +9 -9
  34. package/server/.next/server/app/(console)/(private)/ai/page.js +47 -46
  35. package/server/.next/server/app/(console)/(private)/ai/page.js.nft.json +1 -1
  36. package/server/.next/server/app/(console)/(private)/ai/page_client-reference-manifest.js +1 -1
  37. package/server/.next/server/app/(console)/(private)/ai/playground/page/server-reference-manifest.json +12 -12
  38. package/server/.next/server/app/(console)/(private)/ai/playground/page.js +47 -46
  39. package/server/.next/server/app/(console)/(private)/ai/playground/page.js.nft.json +1 -1
  40. package/server/.next/server/app/(console)/(private)/ai/playground/page_client-reference-manifest.js +1 -1
  41. package/server/.next/server/app/(console)/(private)/ai/providers/page/server-reference-manifest.json +15 -15
  42. package/server/.next/server/app/(console)/(private)/ai/providers/page.js +47 -46
  43. package/server/.next/server/app/(console)/(private)/ai/providers/page.js.nft.json +1 -1
  44. package/server/.next/server/app/(console)/(private)/ai/providers/page_client-reference-manifest.js +1 -1
  45. package/server/.next/server/app/(console)/(private)/ai/quota/page/server-reference-manifest.json +10 -10
  46. package/server/.next/server/app/(console)/(private)/ai/quota/page.js +47 -46
  47. package/server/.next/server/app/(console)/(private)/ai/quota/page.js.nft.json +1 -1
  48. package/server/.next/server/app/(console)/(private)/ai/quota/page_client-reference-manifest.js +1 -1
  49. package/server/.next/server/app/(console)/(private)/ai/usage/page/server-reference-manifest.json +10 -10
  50. package/server/.next/server/app/(console)/(private)/ai/usage/page.js +47 -46
  51. package/server/.next/server/app/(console)/(private)/ai/usage/page.js.nft.json +1 -1
  52. package/server/.next/server/app/(console)/(private)/ai/usage/page_client-reference-manifest.js +1 -1
  53. package/server/.next/server/app/(console)/(private)/api-docs/[[...op]]/page/server-reference-manifest.json +9 -9
  54. package/server/.next/server/app/(console)/(private)/api-docs/[[...op]]/page.js +47 -46
  55. package/server/.next/server/app/(console)/(private)/api-docs/[[...op]]/page.js.nft.json +1 -1
  56. package/server/.next/server/app/(console)/(private)/api-docs/[[...op]]/page_client-reference-manifest.js +1 -1
  57. package/server/.next/server/app/(console)/(private)/auto-actions/page/server-reference-manifest.json +10 -10
  58. package/server/.next/server/app/(console)/(private)/auto-actions/page.js +47 -46
  59. package/server/.next/server/app/(console)/(private)/auto-actions/page.js.nft.json +1 -1
  60. package/server/.next/server/app/(console)/(private)/auto-actions/page_client-reference-manifest.js +1 -1
  61. package/server/.next/server/app/(console)/alerts/page/server-reference-manifest.json +22 -22
  62. package/server/.next/server/app/(console)/alerts/page.js +47 -46
  63. package/server/.next/server/app/(console)/alerts/page.js.nft.json +1 -1
  64. package/server/.next/server/app/(console)/alerts/page_client-reference-manifest.js +1 -1
  65. package/server/.next/server/app/(console)/apps/[id]/page/server-reference-manifest.json +26 -26
  66. package/server/.next/server/app/(console)/apps/[id]/page.js +47 -46
  67. package/server/.next/server/app/(console)/apps/[id]/page.js.nft.json +1 -1
  68. package/server/.next/server/app/(console)/apps/[id]/page_client-reference-manifest.js +1 -1
  69. package/server/.next/server/app/(console)/apps/page/server-reference-manifest.json +12 -12
  70. package/server/.next/server/app/(console)/apps/page.js +47 -46
  71. package/server/.next/server/app/(console)/apps/page.js.nft.json +1 -1
  72. package/server/.next/server/app/(console)/apps/page_client-reference-manifest.js +1 -1
  73. package/server/.next/server/app/(console)/backups/page/server-reference-manifest.json +12 -12
  74. package/server/.next/server/app/(console)/backups/page.js +47 -46
  75. package/server/.next/server/app/(console)/backups/page.js.nft.json +1 -1
  76. package/server/.next/server/app/(console)/backups/page_client-reference-manifest.js +1 -1
  77. package/server/.next/server/app/(console)/catalog/page/server-reference-manifest.json +9 -9
  78. package/server/.next/server/app/(console)/catalog/page.js +47 -46
  79. package/server/.next/server/app/(console)/catalog/page.js.nft.json +1 -1
  80. package/server/.next/server/app/(console)/catalog/page_client-reference-manifest.js +1 -1
  81. package/server/.next/server/app/(console)/connections/page/server-reference-manifest.json +20 -20
  82. package/server/.next/server/app/(console)/connections/page.js +47 -46
  83. package/server/.next/server/app/(console)/connections/page.js.nft.json +1 -1
  84. package/server/.next/server/app/(console)/connections/page_client-reference-manifest.js +1 -1
  85. package/server/.next/server/app/(console)/d1/page/server-reference-manifest.json +9 -9
  86. package/server/.next/server/app/(console)/d1/page.js +47 -46
  87. package/server/.next/server/app/(console)/d1/page.js.nft.json +1 -1
  88. package/server/.next/server/app/(console)/d1/page_client-reference-manifest.js +1 -1
  89. package/server/.next/server/app/(console)/deployments/page/server-reference-manifest.json +15 -15
  90. package/server/.next/server/app/(console)/deployments/page.js +47 -46
  91. package/server/.next/server/app/(console)/deployments/page.js.nft.json +1 -1
  92. package/server/.next/server/app/(console)/deployments/page_client-reference-manifest.js +1 -1
  93. package/server/.next/server/app/(console)/dns/page/server-reference-manifest.json +16 -16
  94. package/server/.next/server/app/(console)/dns/page.js +47 -46
  95. package/server/.next/server/app/(console)/dns/page.js.nft.json +1 -1
  96. package/server/.next/server/app/(console)/dns/page_client-reference-manifest.js +1 -1
  97. package/server/.next/server/app/(console)/domains/page/server-reference-manifest.json +11 -11
  98. package/server/.next/server/app/(console)/domains/page.js +47 -46
  99. package/server/.next/server/app/(console)/domains/page.js.nft.json +1 -1
  100. package/server/.next/server/app/(console)/domains/page_client-reference-manifest.js +1 -1
  101. package/server/.next/server/app/(console)/events/page/server-reference-manifest.json +9 -9
  102. package/server/.next/server/app/(console)/events/page.js +47 -46
  103. package/server/.next/server/app/(console)/events/page.js.nft.json +1 -1
  104. package/server/.next/server/app/(console)/events/page_client-reference-manifest.js +1 -1
  105. package/server/.next/server/app/(console)/firebase/page/server-reference-manifest.json +16 -16
  106. package/server/.next/server/app/(console)/firebase/page.js +47 -46
  107. package/server/.next/server/app/(console)/firebase/page.js.nft.json +1 -1
  108. package/server/.next/server/app/(console)/firebase/page_client-reference-manifest.js +1 -1
  109. package/server/.next/server/app/(console)/logs/page/server-reference-manifest.json +10 -10
  110. package/server/.next/server/app/(console)/logs/page.js +47 -46
  111. package/server/.next/server/app/(console)/logs/page.js.nft.json +1 -1
  112. package/server/.next/server/app/(console)/logs/page_client-reference-manifest.js +1 -1
  113. package/server/.next/server/app/(console)/manage/sections/page/server-reference-manifest.json +10 -10
  114. package/server/.next/server/app/(console)/manage/sections/page.js +47 -46
  115. package/server/.next/server/app/(console)/manage/sections/page.js.nft.json +1 -1
  116. package/server/.next/server/app/(console)/manage/sections/page_client-reference-manifest.js +1 -1
  117. package/server/.next/server/app/(console)/neon/page/server-reference-manifest.json +20 -20
  118. package/server/.next/server/app/(console)/neon/page.js +47 -46
  119. package/server/.next/server/app/(console)/neon/page.js.nft.json +1 -1
  120. package/server/.next/server/app/(console)/neon/page_client-reference-manifest.js +1 -1
  121. package/server/.next/server/app/(console)/overview/page/server-reference-manifest.json +19 -19
  122. package/server/.next/server/app/(console)/overview/page.js +47 -46
  123. package/server/.next/server/app/(console)/overview/page.js.nft.json +1 -1
  124. package/server/.next/server/app/(console)/overview/page_client-reference-manifest.js +1 -1
  125. package/server/.next/server/app/(console)/repos/[id]/page/server-reference-manifest.json +10 -10
  126. package/server/.next/server/app/(console)/repos/[id]/page.js +47 -46
  127. package/server/.next/server/app/(console)/repos/[id]/page.js.nft.json +1 -1
  128. package/server/.next/server/app/(console)/repos/[id]/page_client-reference-manifest.js +1 -1
  129. package/server/.next/server/app/(console)/repos/page/server-reference-manifest.json +9 -9
  130. package/server/.next/server/app/(console)/repos/page.js +47 -46
  131. package/server/.next/server/app/(console)/repos/page.js.nft.json +1 -1
  132. package/server/.next/server/app/(console)/repos/page_client-reference-manifest.js +1 -1
  133. package/server/.next/server/app/(console)/settings/page/server-reference-manifest.json +19 -19
  134. package/server/.next/server/app/(console)/settings/page.js +47 -46
  135. package/server/.next/server/app/(console)/settings/page.js.nft.json +1 -1
  136. package/server/.next/server/app/(console)/settings/page_client-reference-manifest.js +1 -1
  137. package/server/.next/server/app/(console)/sql/page/server-reference-manifest.json +16 -16
  138. package/server/.next/server/app/(console)/sql/page.js +47 -46
  139. package/server/.next/server/app/(console)/sql/page.js.nft.json +1 -1
  140. package/server/.next/server/app/(console)/sql/page_client-reference-manifest.js +1 -1
  141. package/server/.next/server/app/(console)/status/page/server-reference-manifest.json +9 -9
  142. package/server/.next/server/app/(console)/status/page.js +47 -46
  143. package/server/.next/server/app/(console)/status/page.js.nft.json +1 -1
  144. package/server/.next/server/app/(console)/status/page_client-reference-manifest.js +1 -1
  145. package/server/.next/server/app/(console)/supabase/page/server-reference-manifest.json +30 -30
  146. package/server/.next/server/app/(console)/supabase/page.js +47 -46
  147. package/server/.next/server/app/(console)/supabase/page.js.nft.json +1 -1
  148. package/server/.next/server/app/(console)/supabase/page_client-reference-manifest.js +1 -1
  149. package/server/.next/server/app/(console)/topology/page/server-reference-manifest.json +9 -9
  150. package/server/.next/server/app/(console)/topology/page.js +47 -46
  151. package/server/.next/server/app/(console)/topology/page.js.nft.json +1 -1
  152. package/server/.next/server/app/(console)/topology/page_client-reference-manifest.js +1 -1
  153. package/server/.next/server/app/(console)/turso/page/server-reference-manifest.json +9 -9
  154. package/server/.next/server/app/(console)/turso/page.js +47 -46
  155. package/server/.next/server/app/(console)/turso/page.js.nft.json +1 -1
  156. package/server/.next/server/app/(console)/turso/page_client-reference-manifest.js +1 -1
  157. package/server/.next/server/app/(console)/upstash/page/server-reference-manifest.json +9 -9
  158. package/server/.next/server/app/(console)/upstash/page.js +47 -46
  159. package/server/.next/server/app/(console)/upstash/page.js.nft.json +1 -1
  160. package/server/.next/server/app/(console)/upstash/page_client-reference-manifest.js +1 -1
  161. package/server/.next/server/app/(console)/uptime/page/server-reference-manifest.json +23 -23
  162. package/server/.next/server/app/(console)/uptime/page.js +47 -46
  163. package/server/.next/server/app/(console)/uptime/page.js.nft.json +1 -1
  164. package/server/.next/server/app/(console)/uptime/page_client-reference-manifest.js +1 -1
  165. package/server/.next/server/app/(console)/welcome/page/server-reference-manifest.json +14 -14
  166. package/server/.next/server/app/(console)/welcome/page.js +47 -46
  167. package/server/.next/server/app/(console)/welcome/page.js.nft.json +1 -1
  168. package/server/.next/server/app/(console)/welcome/page_client-reference-manifest.js +1 -1
  169. package/server/.next/server/app/_global-error/page/server-reference-manifest.json +1 -1
  170. package/server/.next/server/app/_global-error/page.js.nft.json +1 -1
  171. package/server/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  172. package/server/.next/server/app/_global-error.html +1 -1
  173. package/server/.next/server/app/_global-error.rsc +4 -4
  174. package/server/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +3 -3
  175. package/server/.next/server/app/_global-error.segments/_full.segment.rsc +4 -4
  176. package/server/.next/server/app/_global-error.segments/_tree.segment.rsc +2 -2
  177. package/server/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  178. package/server/.next/server/app/_not-found/page.js.nft.json +1 -1
  179. package/server/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  180. package/server/.next/server/app/_not-found.html +1 -1
  181. package/server/.next/server/app/_not-found.rsc +5 -5
  182. package/server/.next/server/app/_not-found.segments/_full.segment.rsc +5 -5
  183. package/server/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +4 -4
  184. package/server/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  185. package/server/.next/server/app/account/password/page/server-reference-manifest.json +2 -2
  186. package/server/.next/server/app/account/password/page.js.nft.json +1 -1
  187. package/server/.next/server/app/account/password/page_client-reference-manifest.js +1 -1
  188. package/server/.next/server/app/api/collect/route/server-reference-manifest.json +7 -7
  189. package/server/.next/server/app/api/collect/route.js +24 -24
  190. package/server/.next/server/app/api/collect/route.js.nft.json +1 -1
  191. package/server/.next/server/app/api/daily/route/server-reference-manifest.json +7 -7
  192. package/server/.next/server/app/api/daily/route.js +24 -24
  193. package/server/.next/server/app/api/daily/route.js.nft.json +1 -1
  194. package/server/.next/server/app/api/ping/[...parts]/route.js.nft.json +1 -1
  195. package/server/.next/server/app/api/status/route.js.nft.json +1 -1
  196. package/server/.next/server/app/api/telegram/webhook/route/server-reference-manifest.json +7 -7
  197. package/server/.next/server/app/api/telegram/webhook/route.js +23 -23
  198. package/server/.next/server/app/api/telegram/webhook/route.js.nft.json +1 -1
  199. package/server/.next/server/app/api/v1/advice/route.js +3 -3
  200. package/server/.next/server/app/api/v1/advice/route.js.nft.json +1 -1
  201. package/server/.next/server/app/api/v1/ai/chat/completions/route.js +1 -1
  202. package/server/.next/server/app/api/v1/ai/chat/completions/route.js.nft.json +1 -1
  203. package/server/.next/server/app/api/v1/ai/models/route.js +1 -1
  204. package/server/.next/server/app/api/v1/ai/models/route.js.nft.json +1 -1
  205. package/server/.next/server/app/api/v1/ai/questions/[id]/route.js.nft.json +1 -1
  206. package/server/.next/server/app/api/v1/ai/questions/route.js +3 -3
  207. package/server/.next/server/app/api/v1/ai/questions/route.js.nft.json +1 -1
  208. package/server/.next/server/app/api/v1/mcp/route.js +2 -2
  209. package/server/.next/server/app/api/v1/mcp/route.js.nft.json +1 -1
  210. package/server/.next/server/app/api/v1/me/route.js.nft.json +1 -1
  211. package/server/.next/server/app/api/v1/openapi.json/route.js.nft.json +1 -1
  212. package/server/.next/server/app/api/v1/status/apps/[app]/route.js +3 -3
  213. package/server/.next/server/app/api/v1/status/apps/[app]/route.js.nft.json +1 -1
  214. package/server/.next/server/app/api/v1/status/route.js +3 -3
  215. package/server/.next/server/app/api/v1/status/route.js.nft.json +1 -1
  216. package/server/.next/server/app/api/watchdog/route.js +4 -4
  217. package/server/.next/server/app/api/watchdog/route.js.nft.json +1 -1
  218. package/server/.next/server/app/auth/confirm/route.js.nft.json +1 -1
  219. package/server/.next/server/app/auth/google/callback/route.js +2 -2
  220. package/server/.next/server/app/auth/google/callback/route.js.nft.json +1 -1
  221. package/server/.next/server/app/auth/google/create/callback/route.js.nft.json +1 -1
  222. package/server/.next/server/app/auth/not-member/route.js.nft.json +1 -1
  223. package/server/.next/server/app/auth/session-ended/route.js.nft.json +1 -1
  224. package/server/.next/server/app/invite/page/server-reference-manifest.json +2 -2
  225. package/server/.next/server/app/invite/page.js.nft.json +1 -1
  226. package/server/.next/server/app/invite/page_client-reference-manifest.js +1 -1
  227. package/server/.next/server/app/mfa/page/server-reference-manifest.json +2 -2
  228. package/server/.next/server/app/mfa/page.js.nft.json +1 -1
  229. package/server/.next/server/app/mfa/page_client-reference-manifest.js +1 -1
  230. package/server/.next/server/app/mfa/setup/page/server-reference-manifest.json +3 -3
  231. package/server/.next/server/app/mfa/setup/page.js.nft.json +1 -1
  232. package/server/.next/server/app/mfa/setup/page_client-reference-manifest.js +1 -1
  233. package/server/.next/server/app/page/server-reference-manifest.json +1 -1
  234. package/server/.next/server/app/page.js.nft.json +1 -1
  235. package/server/.next/server/app/page_client-reference-manifest.js +1 -1
  236. package/server/.next/server/app/s/[slug]/badge/[file]/route.js.nft.json +1 -1
  237. package/server/.next/server/app/s/[slug]/page/server-reference-manifest.json +1 -1
  238. package/server/.next/server/app/s/[slug]/page.js.nft.json +1 -1
  239. package/server/.next/server/app/s/[slug]/page_client-reference-manifest.js +1 -1
  240. package/server/.next/server/app/setup/page/server-reference-manifest.json +2 -2
  241. package/server/.next/server/app/setup/page.js.nft.json +1 -1
  242. package/server/.next/server/app/setup/page_client-reference-manifest.js +1 -1
  243. package/server/.next/server/app/signin/page/server-reference-manifest.json +3 -3
  244. package/server/.next/server/app/signin/page.js.nft.json +1 -1
  245. package/server/.next/server/app/signin/page_client-reference-manifest.js +1 -1
  246. package/server/.next/server/chunks/{[externals]__0dolpidprtypa._.js → [externals]__0y_x27mdj85p4._.js} +1 -1
  247. package/server/.next/server/chunks/{[externals]__0pfohce9kbhcc._.js → [externals]__1fzfzd0ia0sk6._.js} +1 -1
  248. package/server/.next/server/chunks/{[externals]__1ou2ofma806s1._.js → [externals]__1qqyrxnupegg3._.js} +1 -1
  249. package/server/.next/server/chunks/{[root-of-the-server]__0wbhuhlkn_ueu._.js → [root-of-the-server]__0-ytbad9hn7uc._.js} +2 -2
  250. package/server/.next/server/chunks/{[root-of-the-server]__1cbg6fvn16har._.js → [root-of-the-server]__0032rbj2s87zo._.js} +2 -2
  251. package/server/.next/server/chunks/{[root-of-the-server]__163-eo1vkbzx1._.js → [root-of-the-server]__03i6yscmtbhhg._.js} +2 -2
  252. package/server/.next/server/chunks/{[root-of-the-server]__1x9u88f9545aa._.js → [root-of-the-server]__05qcc-0e8z1u8._.js} +2 -2
  253. package/server/.next/server/chunks/{[root-of-the-server]__1p1k8nq50cwfy._.js → [root-of-the-server]__07bw6o0jc31yr._.js} +2 -2
  254. package/server/.next/server/chunks/{[root-of-the-server]__14pgqdfdkuopi._.js → [root-of-the-server]__07eo--c90cju2._.js} +2 -2
  255. package/server/.next/server/chunks/{[root-of-the-server]__0iysztx_xio84._.js → [root-of-the-server]__07mzeijv31avl._.js} +2 -2
  256. package/server/.next/server/chunks/{[root-of-the-server]__05ht00n_eiksb._.js → [root-of-the-server]__090in165mp6av._.js} +1 -1
  257. package/server/.next/server/chunks/{[root-of-the-server]__0403hy52a1qcu._.js → [root-of-the-server]__0_nljmqhjcept._.js} +1 -1
  258. package/server/.next/server/chunks/{[root-of-the-server]__08k886n7y6f_3._.js → [root-of-the-server]__0awtaloe4_8am._.js} +1 -1
  259. package/server/.next/server/chunks/{[root-of-the-server]__0b136ghrklbbn._.js → [root-of-the-server]__0dsy-9ts8s-pn._.js} +1 -1
  260. package/server/.next/server/chunks/{[root-of-the-server]__0hvejly8-nlkq._.js → [root-of-the-server]__0g1cifa7hd790._.js} +1 -1
  261. package/server/.next/server/chunks/{[root-of-the-server]__0pwn8go30dm_3._.js → [root-of-the-server]__0hblpf7wqke-j._.js} +2 -2
  262. package/server/.next/server/chunks/[root-of-the-server]__0hedtycoyydoc._.js +3 -0
  263. package/server/.next/server/chunks/{[root-of-the-server]__0kgmy-sltdtb_._.js → [root-of-the-server]__0hlyn_aj72sn5._.js} +2 -2
  264. package/server/.next/server/chunks/{[root-of-the-server]__0w8qhgmo5c23i._.js → [root-of-the-server]__0hnljrh9qi9t-._.js} +2 -2
  265. package/server/.next/server/chunks/{[root-of-the-server]__0xgl1cg3z00iz._.js → [root-of-the-server]__0hrtz5c_46jkw._.js} +1 -1
  266. package/server/.next/server/chunks/{[root-of-the-server]__0cskq__p3tja8._.js → [root-of-the-server]__0ihedjvt-l2-u._.js} +2 -2
  267. package/server/.next/server/chunks/[root-of-the-server]__0iicsi0n7tfa5._.js +3 -0
  268. package/server/.next/server/chunks/{[root-of-the-server]__0dc0pz57q73va._.js → [root-of-the-server]__0kp0yx909wtab._.js} +1 -1
  269. package/server/.next/server/chunks/{[root-of-the-server]__1w-yk3b07wcf1._.js → [root-of-the-server]__0l6_iao04u72h._.js} +2 -2
  270. package/server/.next/server/chunks/{[root-of-the-server]__1yzaj148hs9a1._.js → [root-of-the-server]__0l9ja3579qrju._.js} +2 -2
  271. package/server/.next/server/chunks/{[root-of-the-server]__1r9j5o80kocvz._.js → [root-of-the-server]__0lu91s5izfu0p._.js} +2 -2
  272. package/server/.next/server/chunks/{[root-of-the-server]__0_64c807n6q9e._.js → [root-of-the-server]__0noc6l63d3l9w._.js} +2 -2
  273. package/server/.next/server/chunks/{[root-of-the-server]__04zuzs7oruu3o._.js → [root-of-the-server]__0nrg8zzqizk69._.js} +2 -2
  274. package/server/.next/server/chunks/{[root-of-the-server]__1lbmzw1j9jufm._.js → [root-of-the-server]__0oy0hcm48kl-q._.js} +2 -2
  275. package/server/.next/server/chunks/{[root-of-the-server]__0l5v9itfv9nhr._.js → [root-of-the-server]__0q-x05ekhpohj._.js} +1 -1
  276. package/server/.next/server/chunks/[root-of-the-server]__0r1men25anfgb._.js +3 -0
  277. package/server/.next/server/chunks/{[root-of-the-server]__01estsu5k8l4t._.js → [root-of-the-server]__0s8vjz6urzn76._.js} +1 -1
  278. package/server/.next/server/chunks/{[root-of-the-server]__04ruh9diphqtp._.js → [root-of-the-server]__0u3un538__ca5._.js} +2 -2
  279. package/server/.next/server/chunks/{[root-of-the-server]__1ry92m8xlcebk._.js → [root-of-the-server]__0v-gc-c_e8pwl._.js} +2 -2
  280. package/server/.next/server/chunks/{[root-of-the-server]__0t9o5ca5bzg0p._.js → [root-of-the-server]__0x487cn6dsn12._.js} +2 -2
  281. package/server/.next/server/chunks/{[root-of-the-server]__11qvos_7nf8z8._.js → [root-of-the-server]__0yuyew8m9dc6-._.js} +1 -1
  282. package/server/.next/server/chunks/[root-of-the-server]__0zmvf4j8e2gno._.js +3 -0
  283. package/server/.next/server/chunks/{[root-of-the-server]__1w9hei9xe1odr._.js → [root-of-the-server]__0zni_2pv2fdgb._.js} +2 -2
  284. package/server/.next/server/chunks/[root-of-the-server]__10wbld2tja51-._.js +3 -0
  285. package/server/.next/server/chunks/{[root-of-the-server]__10mob-6xfy8b0._.js → [root-of-the-server]__125fkw52kl2ty._.js} +2 -2
  286. package/server/.next/server/chunks/[root-of-the-server]__13hrm9c61i7uk._.js +3 -0
  287. package/server/.next/server/chunks/[root-of-the-server]__14ou3bydfm0ms._.js +3 -0
  288. package/server/.next/server/chunks/{[root-of-the-server]__1xrt934xl5wbd._.js → [root-of-the-server]__15dhjj384tuw_._.js} +2 -2
  289. package/server/.next/server/chunks/{[root-of-the-server]__1vmls0bkau925._.js → [root-of-the-server]__16waq6rapvngp._.js} +2 -2
  290. package/server/.next/server/chunks/[root-of-the-server]__18eg-mk5loj_8._.js +3 -0
  291. package/server/.next/server/chunks/[root-of-the-server]__19ylbgd65iej4._.js +3 -0
  292. package/server/.next/server/chunks/{[root-of-the-server]__1vutb2z9gw8el._.js → [root-of-the-server]__1adw_bv2u89kc._.js} +1 -1
  293. package/server/.next/server/chunks/[root-of-the-server]__1brl5otpkvgd3._.js +3 -0
  294. package/server/.next/server/chunks/{[root-of-the-server]__00wz8qo4hgq2i._.js → [root-of-the-server]__1c78cu7kb9vkl._.js} +2 -2
  295. package/server/.next/server/chunks/[root-of-the-server]__1d5y0cc5mg_07._.js +3 -0
  296. package/server/.next/server/chunks/{[root-of-the-server]__1zcp6yrat15t5._.js → [root-of-the-server]__1dbz126yujh44._.js} +2 -2
  297. package/server/.next/server/chunks/{[root-of-the-server]__0m9648az7bkus._.js → [root-of-the-server]__1dh4di29mjq9y._.js} +2 -2
  298. package/server/.next/server/chunks/[root-of-the-server]__1e1l75cf48ph2._.js +3 -0
  299. package/server/.next/server/chunks/[root-of-the-server]__1eu2_f44as742._.js +3 -0
  300. package/server/.next/server/chunks/{[root-of-the-server]__1-bvfylgbkjso._.js → [root-of-the-server]__1jsf0jf_ljpsm._.js} +2 -2
  301. package/server/.next/server/chunks/{[root-of-the-server]__1fj8d0drhw1yx._.js → [root-of-the-server]__1lerees-l5-6c._.js} +2 -2
  302. package/server/.next/server/chunks/{[root-of-the-server]__1sb8d4e5b5pdl._.js → [root-of-the-server]__1lj1f2w2-w8nw._.js} +2 -2
  303. package/server/.next/server/chunks/[root-of-the-server]__1mim39ea6-dm1._.js +3 -0
  304. package/server/.next/server/chunks/{[root-of-the-server]__0sfnhgc5reef1._.js → [root-of-the-server]__1ooxluowhatjt._.js} +2 -2
  305. package/server/.next/server/chunks/[root-of-the-server]__1p0zd1rtbkj9r._.js +3 -0
  306. package/server/.next/server/chunks/[root-of-the-server]__1pvx0izh1m_0_._.js +3 -0
  307. package/server/.next/server/chunks/{[root-of-the-server]__05jzukkrp2pvu._.js → [root-of-the-server]__1rpgddeg42i-q._.js} +2 -2
  308. package/server/.next/server/chunks/[root-of-the-server]__1v4i7ytwadml8._.js +3 -0
  309. package/server/.next/server/chunks/[root-of-the-server]__1vvg0ur3_7o0p._.js +3 -0
  310. package/server/.next/server/chunks/[root-of-the-server]__1vwz2r58cojht._.js +3 -0
  311. package/server/.next/server/chunks/{[root-of-the-server]__02s57amypj_ye._.js → [root-of-the-server]__1w7dv8zm-k_oa._.js} +2 -2
  312. package/server/.next/server/chunks/[root-of-the-server]__1x7en4waq21dd._.js +3 -0
  313. package/server/.next/server/chunks/[root-of-the-server]__1x813cg-b9rls._.js +3 -0
  314. package/server/.next/server/chunks/{[root-of-the-server]__1147qf6sf3ru4._.js → [root-of-the-server]__1xl6_spngp6k3._.js} +2 -2
  315. package/server/.next/server/chunks/{[root-of-the-server]__1cwr95yi8preu._.js → [root-of-the-server]__1xxmlb3soqzom._.js} +2 -2
  316. package/server/.next/server/chunks/[root-of-the-server]__1zg653esm3__p._.js +3 -0
  317. package/server/.next/server/chunks/{[root-of-the-server]__1w_wtn9h9eu93._.js → [root-of-the-server]__1zvoez8iapsem._.js} +2 -2
  318. package/server/.next/server/chunks/[root-of-the-server]__209g3_0l-y67u._.js +3 -0
  319. package/server/.next/server/chunks/[root-of-the-server]__20pu-tixzpeev._.js +3 -0
  320. package/server/.next/server/chunks/_004c7-39glldb._.js +4 -4
  321. package/server/.next/server/chunks/_09l75j3ey14tc._.js +1 -1
  322. package/server/.next/server/chunks/_0duxuj4kmjibl._.js +41 -0
  323. package/server/.next/server/chunks/_0gz8ldqeokdtn._.js +1 -1
  324. package/server/.next/server/chunks/{_1msi9fy888xna._.js → _0if5sw58tii_3._.js} +2 -2
  325. package/server/.next/server/chunks/_0kmhvts35imzs._.js +4 -4
  326. package/server/.next/server/chunks/_0l_hz-8cj94r7._.js +3 -0
  327. package/server/.next/server/chunks/_0n-wbmmvp4omq._.js +1 -1
  328. package/server/.next/server/chunks/_0ofzzim090ezo._.js +1 -1
  329. package/server/.next/server/chunks/_0q3ygdztfvqq6._.js +3 -0
  330. package/server/.next/server/chunks/_0qmi54vmnlwdv._.js +7 -7
  331. package/server/.next/server/chunks/_0qyupoc7u5hr7._.js +3 -0
  332. package/server/.next/server/chunks/_0rwuppwyvemfj._.js +4 -4
  333. package/server/.next/server/chunks/{_060yqv0qyo-lp._.js → _0ry4553j-m5fp._.js} +3 -3
  334. package/server/.next/server/chunks/_0tz4o-qufnu3l._.js +4 -4
  335. package/server/.next/server/chunks/_0voowig3y32v1._.js +4 -4
  336. package/server/.next/server/chunks/_0wtlf0x_depae._.js +3 -0
  337. package/server/.next/server/chunks/_0zj10_al6r59j._.js +26 -26
  338. package/server/.next/server/chunks/_1-pcsy2hkg0il._.js +3 -0
  339. package/server/.next/server/chunks/_10vh_l3hht4_3._.js +4 -4
  340. package/server/.next/server/chunks/_113ebzq_9i756._.js +41 -0
  341. package/server/.next/server/chunks/{_1z8__gxixw-z-._.js → _16urxazbgm48y._.js} +3 -3
  342. package/server/.next/server/chunks/_1a5vma58w9ytn._.js +4 -4
  343. package/server/.next/server/chunks/_1e_rbkrukj0x9._.js +26 -26
  344. package/server/.next/server/chunks/{_219klbycazlx_._.js → _1g8r-7wcf8sy3._.js} +3 -3
  345. package/server/.next/server/chunks/_1g_prqb_u33e3._.js +7 -7
  346. package/server/.next/server/chunks/_1ihndlef8r00f._.js +41 -0
  347. package/server/.next/server/chunks/_1mwb214-ablfo._.js +41 -0
  348. package/server/.next/server/chunks/_1ngkjn56qmi2x._.js +3 -0
  349. package/server/.next/server/chunks/_1v7q0xdxbqawm._.js +4 -4
  350. package/server/.next/server/chunks/_1xs2ya_n7kb04._.js +4 -4
  351. package/server/.next/server/chunks/node_modules_zod_v4_classic_external_01k1rek7hgd0j.js +4 -4
  352. package/server/.next/server/chunks/src_0--qn984h6czu._.js +1 -1
  353. package/server/.next/server/chunks/src_063xvouojxyoa._.js +1 -1
  354. package/server/.next/server/chunks/{src_0lcm1yhnzhn2d._.js → src_09cgjvch02173._.js} +2 -2
  355. package/server/.next/server/chunks/{src_0v67kw2p2wd_c._.js → src_0c7qu5adpm3gv._.js} +2 -2
  356. package/server/.next/server/chunks/src_1-xw4hea2lvb3._.js +1 -1
  357. package/server/.next/server/chunks/{src_0390zcofy42lg._.js → src_10vyvp9vy_69h._.js} +2 -2
  358. package/server/.next/server/chunks/{src_1v3tf1ye2jzyk._.js → src_13n1vi7uew4iu._.js} +2 -2
  359. package/server/.next/server/chunks/src_1a5yibsjcy1ga._.js +1 -1
  360. package/server/.next/server/chunks/{src_07vqa8fdgu9ah._.js → src_1il7wg_qjxny7._.js} +2 -2
  361. package/server/.next/server/chunks/src_1tux0n9_5b1kr._.js +7 -4
  362. package/server/.next/server/chunks/src_1u-olt84z63rx._.js +1 -1
  363. package/server/.next/server/chunks/src_1wzm081p6qyre._.js +7 -4
  364. package/server/.next/server/chunks/src_20ilndq84j3b3._.js +3 -0
  365. package/server/.next/server/chunks/src_lib_0ayxuk4ftzf2f._.js +6 -0
  366. package/server/.next/server/chunks/src_lib_0ds7lhpop_adf._.js +1 -1
  367. package/server/.next/server/chunks/src_lib_0glcfed-uogyd._.js +1 -1
  368. package/server/.next/server/chunks/src_lib_0krdzz8eu9xh3._.js +6 -0
  369. package/server/.next/server/chunks/src_lib_0ta8sd9jeuw50._.js +10 -9
  370. package/server/.next/server/chunks/src_lib_1-u7dbsavbtb0._.js +6 -0
  371. package/server/.next/server/chunks/src_lib_103kimc1xvc_0._.js +9 -0
  372. package/server/.next/server/chunks/src_lib_1en6omqx66g9d._.js +10 -9
  373. package/server/.next/server/chunks/src_lib_1qo6t00wwitz6._.js +10 -9
  374. package/server/.next/server/chunks/src_lib_1sdusf16f07x-._.js +9 -0
  375. package/server/.next/server/chunks/src_lib_1sz77jjn7xl7o._.js +1 -1
  376. package/server/.next/server/chunks/src_lib_1xwavi_m_li7p._.js +1 -1
  377. package/server/.next/server/chunks/src_lib_206j7lyff31-g._.js +6 -0
  378. package/server/.next/server/chunks/src_lib_collector_runners_ts_12z4gtgikss74._.js +5 -5
  379. package/server/.next/server/chunks/src_lib_data_advisor-db_ts_0rl1ug3iana24._.js +1 -1
  380. package/server/.next/server/chunks/src_lib_data_apps-db_ts_02ovqtci8e7o6._.js +1 -1
  381. package/server/.next/server/chunks/src_lib_domain-move_ts_04stiet1-xpe2._.js +1 -1
  382. package/server/.next/server/chunks/src_lib_notify_telegram-bot_ts_18y40dkchmcqd._.js +1 -1
  383. package/server/.next/server/chunks/src_lib_view_databases_ts_1ovdbo8spjhf9._.js +1 -1
  384. package/server/.next/server/chunks/src_lib_view_display-name_ts_0xoimm6j7bwnf._.js +1 -1
  385. package/server/.next/server/chunks/src_private_1_nggk_wre7qf._.js +2 -2
  386. package/server/.next/server/chunks/src_private_ai_gateway_ts_04_5ao9914d0p._.js +1 -1
  387. package/server/.next/server/chunks/src_private_ai_gateway_ts_1qtr4nyb8kgnd._.js +2 -2
  388. package/server/.next/server/chunks/src_private_assist_provider-answer_ts_10qv42t-5046y._.js +1 -1
  389. package/server/.next/server/chunks/src_private_notes_notes-actions_ts_1g63g8u965fhc._.js +1 -1
  390. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_agents_page_actions_1q6nc5chwn5k4.js +1 -1
  391. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_models_page_actions_0n_anax2l1jpu.js +1 -1
  392. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_playground_page_actions_1kyng_xuojdtb.js +1 -1
  393. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_quota_page_actions_04r4ro6x7-p7p.js +1 -1
  394. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_ai_usage_page_actions_1fq9uugdpqa_l.js +1 -1
  395. package/server/.next/server/chunks/ssr/1oeh_server_app_(console)_(private)_auto-actions_page_actions_0mhtiq_5szpe0.js +1 -1
  396. package/server/.next/server/chunks/ssr/{[externals]__1thdbok76xtof._.js → [externals]__1d_fn156y1kzg._.js} +1 -1
  397. package/server/.next/server/chunks/ssr/[root-of-the-server]__0llh-w4ta1qbp._.js +1 -1
  398. package/server/.next/server/chunks/ssr/[root-of-the-server]__0nlfip3wc3l2z._.js +2 -2
  399. package/server/.next/server/chunks/ssr/{[root-of-the-server]__04tkts7c9ylma._.js → [root-of-the-server]__0p5znbfo0wgsu._.js} +2 -2
  400. package/server/.next/server/chunks/ssr/{[root-of-the-server]__12ymdwm8dphvu._.js → [root-of-the-server]__0ua-p_wz8epv9._.js} +2 -2
  401. package/server/.next/server/chunks/ssr/[root-of-the-server]__0wcnxr_g-bd3r._.js +1 -1
  402. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0ojywxj06986-._.js → [root-of-the-server]__0y84mqfn13ss4._.js} +1 -1
  403. package/server/.next/server/chunks/ssr/[root-of-the-server]__1_f7nip9age3d._.js +1 -1
  404. package/server/.next/server/chunks/ssr/[root-of-the-server]__1fj33_xkainxk._.js +2 -2
  405. package/server/.next/server/chunks/ssr/{[root-of-the-server]__0oayb8dm0iu8k._.js → [root-of-the-server]__1rvdnoxnu0ddf._.js} +2 -2
  406. package/server/.next/server/chunks/ssr/_0-uwh2rwm_dic._.js +2 -2
  407. package/server/.next/server/chunks/ssr/_026w_ig6vy9bt._.js +1 -1
  408. package/server/.next/server/chunks/ssr/_04ltmruop4rt3._.js +2 -2
  409. package/server/.next/server/chunks/ssr/_06kwu83_fmex9._.js +2 -2
  410. package/server/.next/server/chunks/ssr/_090fib2x989oc._.js +1 -1
  411. package/server/.next/server/chunks/ssr/_0_oc9q0vqkynd._.js +1 -1
  412. package/server/.next/server/chunks/ssr/_0_rtyc4t9xcdo._.js +1 -1
  413. package/server/.next/server/chunks/ssr/_0a22b7zsckifp._.js +1 -1
  414. package/server/.next/server/chunks/ssr/_0azq3ml4gbn1d._.js +1 -1
  415. package/server/.next/server/chunks/ssr/_0bd4cxnpnnq2u._.js +1 -1
  416. package/server/.next/server/chunks/ssr/_0cw4kz3d6kmb1._.js +1 -1
  417. package/server/.next/server/chunks/ssr/_0d702k82llasi._.js +1 -1
  418. package/server/.next/server/chunks/ssr/_0hmxyfx7su4uk._.js +1 -1
  419. package/server/.next/server/chunks/ssr/_0i-e824vtomvg._.js +2 -2
  420. package/server/.next/server/chunks/ssr/_0jjoot3rhbde3._.js +2 -2
  421. package/server/.next/server/chunks/ssr/_0kn710rrv_o2t._.js +2 -2
  422. package/server/.next/server/chunks/ssr/_0lmcrl8r9dg49._.js +1 -1
  423. package/server/.next/server/chunks/ssr/_0mgclon6_oh87._.js +2 -2
  424. package/server/.next/server/chunks/ssr/_0ns_087lx5abm._.js +1 -1
  425. package/server/.next/server/chunks/ssr/_0oovfx_t_-u0k._.js +1 -1
  426. package/server/.next/server/chunks/ssr/_0qcvpnwa1u3vr._.js +1 -1
  427. package/server/.next/server/chunks/ssr/_0qhvl_fw4qetx._.js +1 -1
  428. package/server/.next/server/chunks/ssr/_0qyupoc7u5hr7._.js +3 -0
  429. package/server/.next/server/chunks/ssr/_0sotiqakj-6ci._.js +1 -1
  430. package/server/.next/server/chunks/ssr/_0uogspz6zrvwk._.js +2 -2
  431. package/server/.next/server/chunks/ssr/_0v6v5w16qxwke._.js +1 -1
  432. package/server/.next/server/chunks/ssr/_0wo-lpqf7hr1y._.js +2 -2
  433. package/server/.next/server/chunks/ssr/{_0i2a_ziqzhyq-._.js → _0wzg8e30al7bu._.js} +2 -2
  434. package/server/.next/server/chunks/ssr/_1-6d1tm3r_qwg._.js +1 -1
  435. package/server/.next/server/chunks/ssr/_10bven6gb1vj0._.js +5 -5
  436. package/server/.next/server/chunks/ssr/_10pz3ggun9s5i._.js +2 -2
  437. package/server/.next/server/chunks/ssr/_118h21qua_4o3._.js +1 -1
  438. package/server/.next/server/chunks/ssr/_12ddramfkd6o1._.js +2 -2
  439. package/server/.next/server/chunks/ssr/_15ft896zgt02e._.js +2 -2
  440. package/server/.next/server/chunks/ssr/_18lgd6o04ugow._.js +2 -2
  441. package/server/.next/server/chunks/ssr/_19-3vzkc6rk97._.js +1 -1
  442. package/server/.next/server/chunks/ssr/_1_-o2s48aj4i7._.js +1 -1
  443. package/server/.next/server/chunks/ssr/{_022u_nnwo1yb4._.js → _1_gydx19bikgo._.js} +2 -2
  444. package/server/.next/server/chunks/ssr/_1ag8axv14phju._.js +2 -2
  445. package/server/.next/server/chunks/ssr/_1b1ano88ar-gi._.js +2 -2
  446. package/server/.next/server/chunks/ssr/_1boia2p3_0nsz._.js +2 -2
  447. package/server/.next/server/chunks/ssr/_1cl55h_h3q-b_._.js +1 -1
  448. package/server/.next/server/chunks/ssr/_1dqf3jmb24s37._.js +1 -1
  449. package/server/.next/server/chunks/ssr/_1e24cpw3g7njr._.js +2 -2
  450. package/server/.next/server/chunks/ssr/_1g2zbl_-4z_hg._.js +1 -1
  451. package/server/.next/server/chunks/ssr/{_14n2368190qms._.js → _1gk334l49puy-._.js} +2 -2
  452. package/server/.next/server/chunks/ssr/{_1wssvwkmxcdn5._.js → _1gvbcfoah__sl._.js} +2 -2
  453. package/server/.next/server/chunks/ssr/_1i77n2n-wb98v._.js +2 -2
  454. package/server/.next/server/chunks/ssr/_1j9cka-44jd65._.js +1 -1
  455. package/server/.next/server/chunks/ssr/_1jh_o2i8hj2g5._.js +1 -1
  456. package/server/.next/server/chunks/ssr/_1r7o1vx4875hu._.js +1 -1
  457. package/server/.next/server/chunks/ssr/{_20gx4od4pnj8d._.js → _1rf_mwfkk_9oa._.js} +2 -2
  458. package/server/.next/server/chunks/ssr/_1w_rq6clcs0ft._.js +2 -2
  459. package/server/.next/server/chunks/ssr/_1ybhu25y38395._.js +2 -2
  460. package/server/.next/server/chunks/ssr/_1z6dy1k48mskn._.js +1 -1
  461. package/server/.next/server/chunks/ssr/_210edglbxmcb3._.js +2 -2
  462. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_(private)_ai_keys_page_actions_1910ocjt__nlh.js +1 -1
  463. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_(private)_ai_logs_page_actions_136-s4sxl6nra.js +1 -1
  464. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_alerts_page_actions_0f7cxitw-svnl.js +1 -1
  465. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_apps_[id]_page_actions_14l8--w36mywn.js +1 -1
  466. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_apps_page_actions_1zw_mdh2ep6vs.js +1 -1
  467. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_connections_page_actions_06a1fnrawxlh1.js +1 -1
  468. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_dns_page_actions_1p2deebbgom7b.js +1 -1
  469. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_domains_page_actions_0-wg58qcvu_rv.js +1 -1
  470. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_firebase_page_actions_217-u-dmlzx6a.js +1 -1
  471. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_logs_page_actions_11-8xinblaop_.js +1 -1
  472. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_manage_sections_page_actions_0ven9q46d3d7s.js +1 -1
  473. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_settings_page_actions_1z3l1p4keed3m.js +1 -1
  474. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_supabase_page_actions_1evatil08dntl.js +1 -1
  475. package/server/.next/server/chunks/ssr/_next-internal_server_app_(console)_uptime_page_actions_0k1237d-q3oc4.js +1 -1
  476. package/server/.next/server/chunks/ssr/_next-internal_server_app_account_password_page_actions_1v4e71_oifbx9.js +1 -1
  477. package/server/.next/server/chunks/ssr/_next-internal_server_app_signin_page_actions_11wzk446p6_zi.js +1 -1
  478. package/server/.next/server/chunks/ssr/node_modules_zod_v4_classic_external_01k1rek7hgd0j.js +4 -4
  479. package/server/.next/server/chunks/ssr/src_06tjy8wljego8._.js +1 -1
  480. package/server/.next/server/chunks/ssr/src_084tdkx3c_yqi._.js +1 -1
  481. package/server/.next/server/chunks/ssr/src_0_5_wl0sww-x7._.js +6 -3
  482. package/server/.next/server/chunks/ssr/src_0abts6wp5ucc0._.js +1 -1
  483. package/server/.next/server/chunks/ssr/{src_0vi30frvjgri2._.js → src_0jdurlhzhcg5x._.js} +2 -2
  484. package/server/.next/server/chunks/ssr/src_0p0fk07bj9gpq._.js +1 -1
  485. package/server/.next/server/chunks/ssr/src_0ph020gy78gi9._.js +1 -1
  486. package/server/.next/server/chunks/ssr/src_0uitfl3c1mdqb._.js +1 -1
  487. package/server/.next/server/chunks/ssr/src_1-xw4hea2lvb3._.js +1 -1
  488. package/server/.next/server/chunks/ssr/src_10zavgy86u3us._.js +1 -1
  489. package/server/.next/server/chunks/ssr/src_1koc8y1nfdlw3._.js +1 -1
  490. package/server/.next/server/chunks/ssr/src_1q-jgpnd3lbcu._.js +1 -1
  491. package/server/.next/server/chunks/ssr/src_1sdwdnblbiq_g._.js +1 -1
  492. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_agents_1fyhh1ldgm23z._.js +1 -1
  493. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_ask_ask-form_tsx_18ttm9nna_9y6._.js +1 -1
  494. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_logs_export-button_tsx_1k-crb88n1za_._.js +1 -1
  495. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_models_0ayzqn062pnv5._.js +1 -1
  496. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_playground_playground-view_tsx_18ua5zn_a0mar._.js +1 -1
  497. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_providers_1ru-30x6-uwu4._.js +1 -1
  498. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_quota_limits-form_tsx_1vouaaf560z_x._.js +1 -1
  499. package/server/.next/server/chunks/ssr/src_app_(console)_(private)_ai_usage_limits-form_tsx_0sfk3ver58rqw._.js +1 -1
  500. package/server/.next/server/chunks/ssr/{src_app_(console)_05mlxmavgli8_._.js → src_app_(console)_08pmfte22v8vg._.js} +2 -2
  501. package/server/.next/server/chunks/ssr/{src_app_(console)_0u1ec16rmzze6._.js → src_app_(console)_1rx84pcbevbbk._.js} +2 -2
  502. package/server/.next/server/chunks/ssr/src_app_(console)_alerts_0j5xlt68kwg8x._.js +1 -1
  503. package/server/.next/server/chunks/ssr/src_app_(console)_apps_[id]_1sfvku9ui1le-._.js +1 -1
  504. package/server/.next/server/chunks/ssr/src_app_(console)_backups_actions_ts_1vpytsdh0wc1f._.js +1 -1
  505. package/server/.next/server/chunks/ssr/src_app_(console)_backups_drive-buttons_tsx_00cku5r_z3jkg._.js +1 -1
  506. package/server/.next/server/chunks/ssr/src_app_(console)_connections_1fahc65-97qla._.js +1 -1
  507. package/server/.next/server/chunks/ssr/src_app_(console)_connections_1fmp_anbkapur._.js +1 -1
  508. package/server/.next/server/chunks/ssr/src_app_(console)_connections_actions_ts_103blv4gzq76z._.js +1 -1
  509. package/server/.next/server/chunks/ssr/src_app_(console)_create_actions_ts_05-86qr6kfjey._.js +1 -1
  510. package/server/.next/server/chunks/ssr/src_app_(console)_dns_actions_ts_1jzn58xzwbukz._.js +1 -1
  511. package/server/.next/server/chunks/ssr/src_app_(console)_dns_record-actions_tsx_0cqmz51zcuebv._.js +1 -1
  512. package/server/.next/server/chunks/ssr/src_app_(console)_firebase_row-menu_tsx_0hssoq3pqjl-n._.js +1 -1
  513. package/server/.next/server/chunks/ssr/src_app_(console)_logs_log-viewer_tsx_0v3e4cflfk14w._.js +1 -1
  514. package/server/.next/server/chunks/ssr/src_app_(console)_manage_sections_section-switch_tsx_1mfs-o_357i22._.js +1 -1
  515. package/server/.next/server/chunks/ssr/src_app_(console)_monitor-actions_ts_10w3h7myk2ppi._.js +1 -1
  516. package/server/.next/server/chunks/ssr/src_app_(console)_overview_page_tsx_0se3f3ln9q-42._.js +1 -1
  517. package/server/.next/server/chunks/ssr/src_app_(console)_palette-action_ts_0zyw9a9imev6p._.js +1 -1
  518. package/server/.next/server/chunks/ssr/src_app_(console)_repos_[id]_page_tsx_1nkxthc4ethrj._.js +1 -1
  519. package/server/.next/server/chunks/ssr/src_app_(console)_sql_1icfsti04djqe._.js +2 -2
  520. package/server/.next/server/chunks/ssr/src_app_(console)_sql_actions_ts_1oqco02hw-3vp._.js +1 -1
  521. package/server/.next/server/chunks/ssr/src_app_(console)_supabase_0ib3m2ch9gu-4._.js +1 -1
  522. package/server/.next/server/chunks/ssr/src_app_(console)_supabase_pool-actions_ts_0nzd4vwy_9zzx._.js +1 -1
  523. package/server/.next/server/chunks/ssr/src_app_(console)_uptime_1mnnkfi-2zv-k._.js +1 -1
  524. package/server/.next/server/chunks/ssr/src_app_(console)_vercel-actions_ts_0wpk1yo9v632d._.js +1 -1
  525. package/server/.next/server/chunks/ssr/src_app_mfa_setup_setup-flow_tsx_1fpwygr2vdgnh._.js +1 -1
  526. package/server/.next/server/chunks/ssr/src_app_setup_setup-form_tsx_0izoagdur96e1._.js +1 -1
  527. package/server/.next/server/chunks/ssr/{src_app_signin_06v-xlrxfp079._.js → src_app_signin_0hb58isfg-2yx._.js} +2 -2
  528. package/server/.next/server/chunks/ssr/src_components_08d78uqnnmrrh._.js +1 -1
  529. package/server/.next/server/chunks/ssr/src_components_11x625pqq9ovs._.js +1 -1
  530. package/server/.next/server/chunks/ssr/src_components_create_create-dialog_tsx_1s_9clly_m1ru._.js +1 -1
  531. package/server/.next/server/chunks/ssr/src_lib_005l0kcpyu43o._.js +2 -1
  532. package/server/.next/server/chunks/ssr/src_lib_0f_4mvf4-xxst._.js +1 -1
  533. package/server/.next/server/chunks/ssr/src_lib_1xwavi_m_li7p._.js +1 -1
  534. package/server/.next/server/chunks/ssr/src_lib_collector_node-runtime_ts_0778fef3fi3zj._.js +3 -0
  535. package/server/.next/server/chunks/ssr/src_lib_collector_run_ts_0-q8is8s0y9cq._.js +3 -3
  536. package/server/.next/server/chunks/ssr/src_lib_data_apps-db_ts_02ovqtci8e7o6._.js +1 -1
  537. package/server/.next/server/chunks/ssr/{src_lib_demo_15okweo0amos4._.js → src_lib_demo_1wu-a6lubzph6._.js} +2 -2
  538. package/server/.next/server/chunks/ssr/src_lib_domain-move_ts_04stiet1-xpe2._.js +1 -1
  539. package/server/.next/server/chunks/ssr/src_lib_view_databases_ts_1ovdbo8spjhf9._.js +1 -1
  540. package/server/.next/server/chunks/ssr/src_lib_view_display-name_ts_0xoimm6j7bwnf._.js +1 -1
  541. package/server/.next/server/chunks/ssr/src_private_04omlb_sgy-_r._.js +1 -1
  542. package/server/.next/server/chunks/ssr/src_private_0iy_wyg2p1jkn._.js +1 -1
  543. package/server/.next/server/chunks/ssr/src_private_actions_decide-form_tsx_1hngtxpyle3v8._.js +1 -1
  544. package/server/.next/server/chunks/ssr/src_private_actions_telegram-approvals_ts_14gvz6qi_j4aa._.js +1 -1
  545. package/server/.next/server/chunks/ssr/src_private_ai_gateway_ts_04_5ao9914d0p._.js +1 -1
  546. package/server/.next/server/chunks/ssr/src_private_ai_providers_actions_ts_0wxa36ai6s5nn._.js +1 -1
  547. package/server/.next/server/chunks/ssr/src_private_assist_advisor-notes_ts_0qkpm5c3la7fo._.js +6 -6
  548. package/server/.next/server/chunks/ssr/src_private_notes_notes-actions_ts_1g63g8u965fhc._.js +1 -1
  549. package/server/.next/server/middleware-build-manifest.js +3 -3
  550. package/server/.next/server/pages/404.html +1 -1
  551. package/server/.next/server/pages/500.html +1 -1
  552. package/server/.next/server/preview-props.json +3 -3
  553. package/server/.next/server/server-reference-manifest.js +1 -1
  554. package/server/.next/server/server-reference-manifest.json +139 -139
  555. package/server/.next/static/chunks/{22ierqxhqtwn6.js → 0-_zjfssid86w.js} +2 -2
  556. package/server/.next/static/chunks/02-edmd1oolf2.css +3 -0
  557. package/server/.next/static/chunks/05p62k_8g05pm.js +76 -0
  558. package/server/.next/static/chunks/{02byu0sw5d0g9.js → 073u0a0mfexc8.js} +1 -1
  559. package/server/.next/static/chunks/{38c9rnljzl6iw.js → 09fx7h5vm68up.js} +1 -1
  560. package/server/.next/static/chunks/{177dd6kiifsoi.js → 0a5vchcarwyam.js} +1 -1
  561. package/server/.next/static/chunks/{42z3imsp11da1.js → 0ao7_ov9mlvqp.js} +1 -1
  562. package/server/.next/static/chunks/{3qbk8r6jm8udo.js → 0cvmbpyjages7.js} +2 -2
  563. package/server/.next/static/chunks/{04yl9t4cn6zwm.js → 0hnhf3barhk90.js} +1 -1
  564. package/server/.next/static/chunks/{2aerfowxsf234.js → 0i8-ofb4wfcch.js} +1 -1
  565. package/server/.next/static/chunks/{3tl9dgour-h9l.js → 0id261ol_gl6f.js} +1 -1
  566. package/server/.next/static/chunks/0iyozrryj1w49.js +1 -0
  567. package/server/.next/static/chunks/{1zyyqxguxs96l.js → 0q2ogu5cn9q9p.js} +1 -1
  568. package/server/.next/static/chunks/{37f1rjolzxbiv.js → 0z_fqwq62_95p.js} +1 -1
  569. package/server/.next/static/chunks/{11gctw6uutyd7.js → 12fo0pcbpv7lw.js} +1 -1
  570. package/server/.next/static/chunks/{0d556cjlmwiq4.js → 16d1ws92me6_q.js} +1 -1
  571. package/server/.next/static/chunks/{3vbz762vgy3dx.js → 1__8cm_-lydee.js} +1 -1
  572. package/server/.next/static/chunks/{0xwz6ps1581qa.js → 1hmur12m0hx3z.js} +1 -1
  573. package/server/.next/static/chunks/{22h4lj0gp_6n5.js → 1o1lidcbrrh92.js} +1 -1
  574. package/server/.next/static/chunks/{25r6-t40ok5s9.js → 1pre7l9hmk-b6.js} +1 -1
  575. package/server/.next/static/chunks/{04lzxilmq17f_.js → 1qxc6cck2xkbs.js} +1 -1
  576. package/server/.next/static/chunks/{160mk2sltxl3e.js → 205s3z3_jvp5m.js} +1 -1
  577. package/server/.next/static/chunks/{0qciunoy58a03.js → 20cpkauaj8e6x.js} +2 -2
  578. package/server/.next/static/chunks/{3_erdlvi2tz19.js → 25meucm7i1e7b.js} +1 -1
  579. package/server/.next/static/chunks/{2pn16qmann41d.js → 2oy7awlquezq_.js} +1 -1
  580. package/server/.next/static/chunks/{2xhx4rma6gx5o.js → 2pj8subq20y-_.js} +1 -1
  581. package/server/.next/static/chunks/{2szlo15y09085.js → 2qcurt9u9shwc.js} +1 -1
  582. package/server/.next/static/chunks/{01mhc6kz81iwf.js → 2scf40c-_g_q1.js} +1 -1
  583. package/server/.next/static/chunks/{1bn-7bluoi2vi.js → 2tnx5isef9ryw.js} +1 -1
  584. package/server/.next/static/chunks/{3wi43ltm1e5iy.js → 2whojv56qi3ke.js} +1 -1
  585. package/server/.next/static/chunks/{0lcmy-_tdtrqk.js → 2wlen-jacsbqv.js} +1 -1
  586. package/server/.next/static/chunks/{0foc_dy1j2x52.js → 319s97ka6eaex.js} +1 -1
  587. package/server/.next/static/chunks/{1d0mukiro5klq.js → 36bqhxadlfbfn.js} +1 -1
  588. package/server/.next/static/chunks/{16lnw4itnfhw-.js → 36js6cf9c-53b.js} +1 -1
  589. package/server/.next/static/chunks/372gugw4ldy47.js +1 -0
  590. package/server/.next/static/chunks/{2onhuya5-n3-e.js → 39n_1gky-xh0a.js} +1 -1
  591. package/server/.next/static/chunks/{1x8bgprfjtt59.js → 3fv862m8cvcoe.js} +1 -1
  592. package/server/.next/static/chunks/{2lfa16b0tlnvj.js → 3g73nar6-7bqk.js} +1 -1
  593. package/server/.next/static/chunks/{2wd8yh_ni0lqj.js → 3orhi-m-n-ra4.js} +1 -1
  594. package/server/.next/static/chunks/{3zaeh5nbkqpyj.js → 3u3h2mlon2qu7.js} +1 -1
  595. package/server/.next/static/chunks/{0ld0vtd027il_.js → 3vacue9vhoqag.js} +1 -1
  596. package/server/.next/static/chunks/{0jm8a63677590.js → 3x8-w_p0n-gsd.js} +1 -1
  597. package/server/.next/static/chunks/{0r2z8zg4n43pd.js → 3xo5igjfumqip.js} +1 -1
  598. package/server/.next/static/chunks/{1yctclvh0qaxz.js → 415ijq-anmr2o.js} +1 -1
  599. package/server/.next/static/chunks/{1nfofl7nhy6fx.js → 43wm4_0-0-eej.js} +1 -1
  600. package/server/.next/static/chunks/{08oksl0raetg5.js → 44bizq7fli9cp.js} +1 -1
  601. package/server/.next/server/chunks/[root-of-the-server]__0i3bs_98vlttu._.js +0 -3
  602. package/server/.next/server/chunks/[root-of-the-server]__0ych1y0j6e38k._.js +0 -3
  603. package/server/.next/server/chunks/[root-of-the-server]__0zhzy29i2vylk._.js +0 -3
  604. package/server/.next/server/chunks/[root-of-the-server]__0zwe7i-isx08p._.js +0 -3
  605. package/server/.next/server/chunks/[root-of-the-server]__10ee5dhzx78ne._.js +0 -3
  606. package/server/.next/server/chunks/[root-of-the-server]__10q3dc485yp4l._.js +0 -3
  607. package/server/.next/server/chunks/[root-of-the-server]__10u93zgn0-c5a._.js +0 -3
  608. package/server/.next/server/chunks/[root-of-the-server]__115yxhfn37r-k._.js +0 -3
  609. package/server/.next/server/chunks/[root-of-the-server]__14mz6mbk2m_e0._.js +0 -3
  610. package/server/.next/server/chunks/[root-of-the-server]__15y82djobfhof._.js +0 -3
  611. package/server/.next/server/chunks/[root-of-the-server]__165qlmqwvxmzr._.js +0 -3
  612. package/server/.next/server/chunks/[root-of-the-server]__1acps2oi9s0i7._.js +0 -3
  613. package/server/.next/server/chunks/[root-of-the-server]__1erq9v_t5jwp5._.js +0 -3
  614. package/server/.next/server/chunks/[root-of-the-server]__1ip0gr1i080kn._.js +0 -3
  615. package/server/.next/server/chunks/[root-of-the-server]__1lfidps4tcfkg._.js +0 -3
  616. package/server/.next/server/chunks/[root-of-the-server]__1mrpvwofqktnv._.js +0 -3
  617. package/server/.next/server/chunks/[root-of-the-server]__1ppnnpydkrs93._.js +0 -3
  618. package/server/.next/server/chunks/[root-of-the-server]__1qdo_hgivrawk._.js +0 -3
  619. package/server/.next/server/chunks/[root-of-the-server]__1qp_dvfy4vvsm._.js +0 -3
  620. package/server/.next/server/chunks/[root-of-the-server]__1rk6wb8qem46d._.js +0 -3
  621. package/server/.next/server/chunks/[root-of-the-server]__1s20vd1etiird._.js +0 -3
  622. package/server/.next/server/chunks/[root-of-the-server]__1s9_nmhp7chvj._.js +0 -3
  623. package/server/.next/server/chunks/[root-of-the-server]__1yc_xjjam78sg._.js +0 -3
  624. package/server/.next/server/chunks/[root-of-the-server]__2067x8gf07f-i._.js +0 -3
  625. package/server/.next/server/chunks/_0beox3lp9z58-._.js +0 -3
  626. package/server/.next/server/chunks/_0gobsd0_oxj5v._.js +0 -3
  627. package/server/.next/server/chunks/_0vwctvzwde-sz._.js +0 -37
  628. package/server/.next/server/chunks/_0yzmfi6iwa_sk._.js +0 -3
  629. package/server/.next/server/chunks/_1c3ksp22eq0rw._.js +0 -37
  630. package/server/.next/server/chunks/_1cjfskikk32wj._.js +0 -37
  631. package/server/.next/server/chunks/_1d9mf39gz0bv4._.js +0 -3
  632. package/server/.next/server/chunks/_1dlvqnaceqr-_._.js +0 -3
  633. package/server/.next/server/chunks/_1jveb9aojczvg._.js +0 -3
  634. package/server/.next/server/chunks/_1qw43v448l9e7._.js +0 -37
  635. package/server/.next/server/chunks/src_0yve3gn52i_mn._.js +0 -3
  636. package/server/.next/server/chunks/src_lib_0cbh80jxsdx3n._.js +0 -6
  637. package/server/.next/server/chunks/src_lib_0s_txig7jm3ty._.js +0 -9
  638. package/server/.next/server/chunks/src_lib_15wd7ab4u5nrn._.js +0 -9
  639. package/server/.next/server/chunks/src_lib_15y0kwcot_7u0._.js +0 -6
  640. package/server/.next/server/chunks/src_lib_16y1secb8t9fj._.js +0 -6
  641. package/server/.next/server/chunks/src_lib_1iwyh213u9xts._.js +0 -6
  642. package/server/.next/server/chunks/ssr/_1dlvqnaceqr-_._.js +0 -3
  643. package/server/.next/static/chunks/0r-2mywc7qkb_.js +0 -1
  644. package/server/.next/static/chunks/1-zyqj42cr9hy.css +0 -3
  645. package/server/.next/static/chunks/1jc8ghvf721gg.js +0 -76
  646. package/server/.next/static/chunks/1rt5heq1xn_az.js +0 -1
  647. /package/server/.next/static/{ZGhdfWFNBWLdWW4UhJrAO → 90CuiGzddaxNn9lvRkGlH}/_buildManifest.js +0 -0
  648. /package/server/.next/static/{ZGhdfWFNBWLdWW4UhJrAO → 90CuiGzddaxNn9lvRkGlH}/_clientMiddlewareManifest.js +0 -0
  649. /package/server/.next/static/{ZGhdfWFNBWLdWW4UhJrAO → 90CuiGzddaxNn9lvRkGlH}/_ssgManifest.js +0 -0
@@ -1,3 +1,3 @@
1
- module.exports=[436357,521050,572134,t=>{"use strict";var e=t.i(26972),r=t.i(427221),n=t.i(689963),a=t.i(811365),o=t.i(913822),i=t.i(191179),s=t.i(83931);let l=/^[A-Za-z0-9._-]{1,100}$/,u=t=>t.trim().replace(/^\.\//,"").split("/").filter(t=>""!==t&&"."!==t);function c(t){if("string"!=typeof t)return null;let e=u(t);if(!e.length||e.length>4||e.some(t=>".."===t||!l.test(t)))return null;let r=e.join("/");return r.length<=150?r:null}function d(t){if("string"!=typeof t||!u(t).length||null!==c(t))return null;let e=t.replace(/[\u0000-\u001f\u007f-\u009f]/g,"").trim();return e?e.length>80?`${e.slice(0,79)}…`:e:null}function p(t){let e=t.trim().replace(/^\.\//,"").replace(/\/+$/,"").split("**").map(t=>t.split("*").map(t=>t.replace(/[.+?^${}()|[\]\\]/g,"\\$&")).join("[^/]*")).join(".*");return RegExp(`^${e}$`)}t.s(["Q",0,c,"x",0,t=>t?`${t} (the Vercel project's Root Directory)`:"the repository root","H",0,(t,e)=>t?`${t}/${e}`:e,"p",0,function(t,e,r){if("npm"===t)try{let t=JSON.parse(e);return!!t.packages&&"object"==typeof t.packages&&Object.hasOwn(t.packages,r)}catch{return!1}if("pnpm"===t){let t=e.search(/^importers:\s*$/m);if(t<0)return!1;let n=e.slice(t).split(/\n(?=\S)/)[0],a=r.replace(/[.+?^${}()|[\]\\]/g,"\\$&");return RegExp(`^ {2}['"]?${a}['"]?:\\s*$`,"m").test(n)}return!1},"l",0,d,"F",0,function(t,e){let r;if(!t)return!1;try{r=JSON.parse(t)}catch{return!1}let n=r&&"object"==typeof r&&!Array.isArray(r)?r.workspaces:void 0,a=(Array.isArray(n)?n:n&&"object"==typeof n&&Array.isArray(n.packages)?n.packages:[]).filter(t=>"string"==typeof t&&""!==t.trim()),o=a.filter(t=>t.trim().startsWith("!")).map(t=>t.trim().slice(1));return a.some(t=>!t.trim().startsWith("!")&&p(t).test(e))&&!o.some(t=>p(t).test(e))}],521050);let m="https://api.vercel.com";async function f(t,e,r){let n;try{n=await (r.fetch??fetch)(`${m}${t}`,{headers:{Authorization:`Bearer ${e}`,Accept:"application/json"},signal:AbortSignal.timeout(r.timeoutMs??5e3),cache:"no-store"})}catch(t){return{ok:!1,kind:"transient",error:t instanceof DOMException&&("TimeoutError"===t.name||"AbortError"===t.name)?"Vercel didn't answer within 5 seconds.":"Couldn't reach Vercel."}}if(401===n.status||403===n.status)return{ok:!1,kind:"auth",status:n.status,error:`Vercel rejected this credential (${n.status}).`};if(429===n.status){let t=Number(n.headers.get("Retry-After"));return{ok:!1,kind:"transient",status:429,retryAfterS:Number.isFinite(t)&&t>0?t:60,error:"Vercel says there were too many requests."}}return n.ok?{ok:!0,data:await n.json().catch(()=>null)}:{ok:!1,kind:"transient",status:n.status,error:`Vercel returned an error (${n.status}).`}}async function h(t,n,a,o,i){let s;try{s=await (i.fetch??fetch)(`${m}${n}`,{method:t,headers:{Authorization:`Bearer ${a}`,Accept:"application/json",...void 0===o?{}:{"Content-Type":"application/json"}},...void 0===o?{}:{body:JSON.stringify(o)},signal:AbortSignal.timeout(i.timeoutMs??5e3),cache:"no-store"})}catch(t){return{ok:!1,kind:"transient",error:t instanceof DOMException&&("TimeoutError"===t.name||"AbortError"===t.name)?"Vercel didn't answer within 5 seconds; the action may still have happened. Check the deployments in a minute.":"Couldn't reach Vercel."}}if(401===s.status)return{ok:!1,kind:"auth",status:401,error:"Vercel rejected this credential (401)."};if(403===s.status)return{ok:!1,kind:"scope",status:403,error:"Vercel refused this token for that project (403)."};if(429===s.status){let t;return{ok:!1,kind:"transient",status:429,retryAfterS:Number.isFinite(t=Number(s.headers.get("Retry-After")))&&t>0?t:60,error:"Vercel says there were too many requests."}}let l=await s.json().catch(()=>null);if(!s.ok){let t=e.z.object({error:e.z.object({code:r.z.string().regex(/^[A-Za-z0-9_-]{1,60}$/)})}).safeParse(l);return{ok:!1,kind:"transient",status:s.status,error:`Vercel refused this (${s.status}${t.success?`, ${t.data.error.code}`:""}).`}}return{ok:!0,data:l}}let g=t=>`teamId=${encodeURIComponent(t)}`,y=encodeURIComponent,k=t=>({ok:!1,kind:"format",error:`Vercel answered ${t} in a format the console doesn't recognise.`});function z(t,e,r=[]){let n=t.filter(t=>!1!==t.verified&&!t.redirect&&!t.gitBranch&&!t.customEnvironmentId),a=new Set(r.map(t=>t.toLowerCase())),o=n.map((e,r)=>{let n;return{name:e.name,key:[...(n=e.name,[+!t.some(t=>t.redirect?.toLowerCase()===n.toLowerCase()),+!!n.endsWith(".vercel.app"),+!a.has(n.toLowerCase()),n.length]),r]}}).sort((t,e)=>{for(let r=0;r<t.key.length;r++)if(t.key[r]!==e.key[r])return t.key[r]-e.key[r];return 0});return o[0]?.name??`${e}.vercel.app`}let $=e.z.object({teams:n.z.array(e.z.object({id:r.z.string(),slug:r.z.string(),name:r.z.string().nullish()}))});async function j(t,e={}){let r=await f("/v2/teams?limit=100",t,e);if(!r.ok)return r;let n=$.safeParse(r.data);return n.success?{ok:!0,data:n.data.teams.map(t=>({id:t.id,slug:t.slug,name:t.name??t.slug}))}:k("the team list")}async function w(t,r={}){let n=await f("/v5/user/tokens/current",t,r);if(!n.ok)return n;let o=e.z.object({token:e.z.object({expiresAt:a.z.number().nullish()})}).safeParse(n.data);return o.success?{ok:!0,data:o.data.token.expiresAt?new Date(o.data.token.expiresAt):null}:k("the token details")}let b=e.z.object({id:r.z.string(),readyState:r.z.string().nullish(),createdAt:a.z.number().nullish().catch(null),alias:n.z.array(r.z.string()).nullish().catch(null)}).nullish(),I=e.z.object({type:r.z.string(),jobStatus:r.z.string(),toDeploymentId:r.z.string(),requestedAt:a.z.number()}).nullish().catch(null);function A(t,e){let r=t?.readyState==="READY"?t.id:null;return e&&"succeeded"===e.jobStatus&&("rollback"===e.type||"promote"===e.type&&"number"==typeof t?.createdAt&&t.createdAt<=e.requestedAt)?e.toDeploymentId:r}let D=e.z.object({id:r.z.string(),name:r.z.string(),framework:r.z.string().nullish(),createdAt:a.z.number(),link:e.z.object({productionBranch:r.z.string().nullish(),type:r.z.string().nullish(),org:r.z.string().nullish(),repo:r.z.string().nullish()}).nullish(),resourceConfig:e.z.object({functionDefaultRegions:n.z.array(r.z.string()).nullish()}).nullish(),targets:e.z.object({production:b}).nullish(),lastAliasRequest:I,rootDirectory:r.z.string().nullish().catch(null)}),v=e.z.object({projects:n.z.array(D),pagination:e.z.object({next:a.z.number().nullish()}).nullish()});async function C(t,e,r={}){let n,a=[];for(let o=0;o<10;o++){let o=await f(`/v10/projects?teamId=${encodeURIComponent(e.id)}&limit=100${n?`&until=${n}`:""}`,t,r);if(!o.ok)return o;let i=v.safeParse(o.data);if(!i.success)return k("the project list");for(let t of i.data.projects)a.push({id:t.id,name:t.name,team:e,framework:t.framework??null,createdAt:new Date(t.createdAt),productionBranch:t.link?.productionBranch??null,currentDeploymentId:A(t.targets?.production,t.lastAliasRequest),repo:t.link?.type&&t.link.org&&t.link.repo?{type:t.link.type,org:t.link.org,repo:t.link.repo}:null,functionRegions:t.resourceConfig?.functionDefaultRegions??[],rootDirectory:c(t.rootDirectory),rootDirectoryUnsupported:d(t.rootDirectory),productionAliases:t.targets?.production?.alias??[]});if(!(n=i.data.pagination?.next))break}return{ok:!0,data:a}}let R=e.z.object({uid:r.z.string(),projectId:r.z.string(),state:r.z.string().nullish(),readyState:r.z.string().nullish(),target:r.z.string().nullish(),source:r.z.string().nullish(),url:r.z.string().nullish(),createdAt:a.z.number().nullish(),created:a.z.number().nullish(),buildingAt:a.z.number().nullish(),ready:a.z.number().nullish(),meta:o.z.record(r.z.string(),i.z.unknown()).nullish()}),E=t=>"string"==typeof t&&t.length?t:null,S=t=>t?new Date(t):null;function P(t,e){let r=t.readyState??t.state??"BUILDING",n=t.meta??{};return{id:e,projectId:t.projectId,state:"READY"===r?"ready":"ERROR"===r?"error":"CANCELED"===r?"canceled":"building",rawState:r,target:"production"===t.target?"production":"preview",branch:E(n.githubCommitRef)??E(n.gitCommitRef),sha:E(n.githubCommitSha)??E(n.gitCommitSha),message:E(n.githubCommitMessage)??E(n.gitCommitMessage),source:t.source??null,url:t.url??null,createdAt:new Date(t.createdAt??t.created??0),buildingAt:S(t.buildingAt),readyAt:S(t.ready)}}async function L(t,r,a,o={}){let i=await f(`/v7/deployments?teamId=${encodeURIComponent(r.id)}&limit=${a.limit??100}${a.since?`&since=${a.since}`:""}`,t,o);if(!i.ok)return i;let s=e.z.object({deployments:n.z.array(R)}).safeParse(i.data);return s.success?{ok:!0,data:s.data.deployments.map(t=>P(t,t.uid))}:k("the deployment list")}let U=R.omit({uid:!0,projectId:!0}).extend({id:r.z.string(),projectId:r.z.string().nullish()});async function N(t,e,r,n={}){let a=await f(`/v13/deployments/${encodeURIComponent(r)}?teamId=${encodeURIComponent(e.id)}`,t,n);if(!a.ok)return a;let o=U.safeParse(a.data);return o.success?{ok:!0,data:P({...o.data,uid:o.data.id,projectId:o.data.projectId??""},o.data.id)}:k("the deployment")}let T=e.z.object({name:r.z.string(),targets:e.z.object({production:b}).nullish(),lastAliasRequest:I});async function x(t,e,r,n={}){let a=await f(`/v9/projects/${y(r)}?${g(e)}`,t,n);if(!a.ok)return a;let o=T.safeParse(a.data);return o.success?{ok:!0,data:{name:o.data.name,currentId:A(o.data.targets?.production,o.data.lastAliasRequest)}}:k("the project")}let B=e.z.object({deployments:n.z.array(R.extend({projectId:r.z.string().nullish()}))});async function O(t,e,r,n,a,o){let i=`projectId=${y(r)}&target=production&state=${n}&limit=${a}&${g(e)}`,s=await f(`/v6/deployments?${i}`,t,o);if(!s.ok)return s;let l=B.safeParse(s.data);return l.success?{ok:!0,data:l.data.deployments.map(t=>P({...t,projectId:t.projectId??r},t.uid))}:k("the deployment list")}async function M(t,e,r,n={}){return O(t,e,r,"READY",5,n)}async function V(t,e,r,n={}){let a=await O(t,e,r,"BUILDING,QUEUED,INITIALIZING",1,n);return a.ok?{ok:!0,data:a.data[0]??null}:a}async function W(t,n,a,o={}){let i=await h("POST",`/v13/deployments?${g(n)}`,t,{name:a.name,project:a.projectId,deploymentId:a.deploymentId,target:"production"},o);if(!i.ok)return i;let s=e.z.object({id:r.z.string()}).safeParse(i.data);return{ok:!0,data:{id:s.success?s.data.id:""}}}async function q(t,e,r,n,a={}){let o=await h("POST",`/v1/projects/${y(r)}/rollback/${y(n)}?${g(e)}`,t,void 0,a);return o.ok?{ok:!0,data:null}:o}async function Y(t,e,r,n,a={}){let o=await h("POST",`/v10/projects/${y(r)}/promote/${y(n)}?${g(e)}`,t,{},a);return o.ok?{ok:!0,data:null}:o}async function F(t,n,a,o={}){let i=await h("POST",`/v13/deployments?${g(n)}`,t,{name:a.name,project:a.projectId,deploymentId:a.deploymentId,target:"production",meta:{action:"promote"}},o);if(!i.ok)return i;let s=e.z.object({id:r.z.string()}).safeParse(i.data);return{ok:!0,data:{id:s.success?s.data.id:""}}}async function G(t,e,r,n={}){let a=await h("PATCH",`/v12/deployments/${y(r)}/cancel?${g(e)}`,t,void 0,n);return a.ok?{ok:!0,data:null}:a}let Q=e.z.object({domains:n.z.array(e.z.object({name:r.z.string(),redirect:r.z.string().nullish(),verified:s.z.boolean().optional(),gitBranch:r.z.string().nullish(),customEnvironmentId:r.z.string().nullish().catch(null)})),pagination:e.z.object({next:a.z.number().nullish()}).nullish()});async function _(t,e,r,n={}){let a,o=[];for(let i=0;i<10;i++){let i=await f(`/v9/projects/${encodeURIComponent(r)}/domains?teamId=${encodeURIComponent(e)}&limit=100${a?`&until=${a}`:""}`,t,n);if(!i.ok)return i;let s=Q.safeParse(i.data);if(!s.success)return k("the domain list");for(let t of s.data.domains)o.push({name:t.name,redirect:t.redirect??null,verified:!1!==t.verified,gitBranch:t.gitBranch??null,customEnvironmentId:t.customEnvironmentId??null});if(!(a=s.data.pagination?.next))return{ok:!0,data:o}}return{ok:!1,kind:"transient",error:"The project has more than 1000 domains; Watchbell kept the domains it had."}}async function J(t,e,r,n,a={},o=[]){let i=await _(t,e,r,a);return i.ok?{ok:!0,data:z(i.data,n,o)}:i}let Z=e.z.object({misconfigured:s.z.boolean(),configuredBy:r.z.string().nullish(),recommendedIPv4:n.z.array(e.z.object({value:n.z.array(r.z.string())})).default([])});async function H(t,e,r,n={}){let a=await f(`/v6/domains/${encodeURIComponent(r)}/config?teamId=${encodeURIComponent(e)}`,t,n);if(!a.ok)return a;let o=Z.safeParse(a.data);return o.success?{ok:!0,data:{misconfigured:o.data.misconfigured,configuredBy:o.data.configuredBy??null,recommendedIps:o.data.recommendedIPv4.flatMap(t=>t.value)}}:k("the domain configuration")}async function K(t,e={}){let r=await j(t,e);if(!r.ok)return r;let n=[],a=[],o=[];for(let i of r.data){let r=await C(t,i,e);if(!r.ok){if(403===r.status){a.push(i.name),o.push(i.id);continue}return r}for(let t of r.data)n.push({externalId:t.id,name:t.name,meta:{teamId:i.id,teamSlug:i.slug,teamName:i.name,framework:t.framework,productionBranch:t.productionBranch,createdAt:t.createdAt.toISOString(),repo:t.repo?`${t.repo.org}/${t.repo.repo}`:null,repoType:t.repo?.type??null,functionRegions:t.functionRegions,rootDirectory:t.rootDirectory,...t.rootDirectoryUnsupported?{rootDirectoryUnsupported:t.rootDirectoryUnsupported}:{},...t.productionAliases.length?{productionAliases:t.productionAliases}:{}}})}return a.length===r.data.length?{ok:!1,kind:"auth",error:"This token can't read any of your Vercel teams. Create a token with access to them."}:{ok:!0,data:{apps:n,skippedTeams:a,skippedTeamIds:o}}}async function X(t,r,a,o,i={}){if(!/^[0-9a-f]{40}$/.test(o))return k("the commit");let s=new URLSearchParams({teamId:r,projectId:a,sha:o,limit:"10"}),l=await f(`/v6/deployments?${s}`,t,i);if(!l.ok)return l;let u=e.z.object({deployments:n.z.array(R)}).safeParse(l.data);return u.success?{ok:!0,data:u.data.deployments.map(t=>P(t,t.uid)).filter(t=>t.projectId===a&&(null===t.sha||t.sha===o)).sort((t,e)=>e.createdAt.getTime()-t.createdAt.getTime())}:k("the deployment list")}t.s(["T",0,G,"n",0,z,"c",0,x,"C",0,X,"G",0,K,"Q",0,H,"S",0,N,"K",0,L,"M",0,_,"W",0,C,"X",0,j,"r",0,M,"q",0,J,"u",0,Y,"l",0,F,"L",0,W,"E",0,q,"N",0,V,"o",0,w],572134);let tt=t=>Array.isArray(t)?t.filter(t=>"string"==typeof t&&t.length>0).map(t=>t.toLowerCase()):[];function te(t){let e="string"==typeof t?.primaryDomain&&t.primaryDomain?t.primaryDomain.toLowerCase():null;return e?{primaryDomain:e,domains:tt(t?.domains),pastDomains:tt(t?.pastDomains)}:null}function tr(t){try{let e=new URL(t);return"https:"===e.protocol||"http:"===e.protocol?e.hostname.toLowerCase():null}catch{return null}}let tn=t=>/ · DEPLOYMENT_NOT_FOUND$/.test(t.lastError??"");function ta(t,e,r=[],n={}){let a=tr(t),o=te(e.meta);return!(!a||!o||function(t,e,r=[]){let n=te(e.meta);if(!n)return!0;let a=t.toLowerCase();if(a===n.primaryDomain||n.domains.includes(a))return!0;let o=e.name.toLowerCase();return!!(!(a.endsWith(".vercel.app")&&r.some(t=>{let e=t.name.toLowerCase();return e!==o&&e.startsWith(`${o}-`)&&(a===`${e}.vercel.app`||a.startsWith(`${e}-`))}))&&(a===`${o}.vercel.app`||a.endsWith(".vercel.app")&&a.startsWith(`${o}-`)))||r.some(t=>{let e=te(t.meta);return null!==e&&(e.primaryDomain===a||e.domains.includes(a))})}(a,e,r))&&(o.pastDomains.includes(a)||tn(n))?{from:a,to:o.primaryDomain}:null}t.s(["Q",0,function(t,e,r=[],n){let a=[...new Set(t.map(t=>t.name.toLowerCase()))],o=new Set(a),i=[...new Set([...tt(n?.pastDomains),...tt(n?.domains)])].filter(t=>!o.has(t)).slice(-20);return{domains:a,primaryDomain:z(t,e,r).toLowerCase(),pastDomains:i}},"u",0,ta,"P",0,function(t,e){let r=new Map;for(let n of t){if("heartbeat"===n.kind)continue;let t=ta(n.url,{name:n.appName,meta:n.appMeta},e.filter(t=>t.id!==n.appId),{lastError:n.lastError});t&&r.set(n.id,t)}return r},"w",0,function(t,e){let r=new URL(t);if(r.protocol="https:",r.hostname=e,r.port="",r.hostname!==e.toLowerCase())throw Error("The new domain isn't a valid host name.");return r.toString()},"R",0,function(t,e){let r=new Map;for(let n of t){if("heartbeat"===n.kind||!tn({lastError:n.lastError}))continue;let t=te(n.appMeta),a=tr(n.url);if(!t||!a)continue;let o=r.get(n.appId)??t.pastDomains;!o.includes(a)&&ta(n.url,{name:n.appName,meta:n.appMeta},e.filter(t=>t.id!==n.appId),{lastError:n.lastError})&&r.set(n.appId,[...o,a].slice(-20))}return r},"Y",0,te],436357)}];
1
+ module.exports=[436357,521050,572134,t=>{"use strict";var e=t.i(26972),r=t.i(427221),n=t.i(689963),a=t.i(811365),o=t.i(913822),i=t.i(191179),s=t.i(83931);let l=/^[A-Za-z0-9._-]{1,100}$/,u=t=>t.trim().replace(/^\.\//,"").split("/").filter(t=>""!==t&&"."!==t);function c(t){if("string"!=typeof t)return null;let e=u(t);if(!e.length||e.length>4||e.some(t=>".."===t||!l.test(t)))return null;let r=e.join("/");return r.length<=150?r:null}function d(t){if("string"!=typeof t||!u(t).length||null!==c(t))return null;let e=t.replace(/[\u0000-\u001f\u007f-\u009f]/g,"").trim();return e?e.length>80?`${e.slice(0,79)}…`:e:null}function m(t){let e=t.trim().replace(/^\.\//,"").replace(/\/+$/,"").split("**").map(t=>t.split("*").map(t=>t.replace(/[.+?^${}()|[\]\\]/g,"\\$&")).join("[^/]*")).join(".*");return RegExp(`^${e}$`)}t.s(["Q",0,c,"x",0,t=>t?`${t} (the Vercel project's Root Directory)`:"the repository root","H",0,(t,e)=>t?`${t}/${e}`:e,"p",0,function(t,e,r){if("npm"===t)try{let t=JSON.parse(e);return!!t.packages&&"object"==typeof t.packages&&Object.hasOwn(t.packages,r)}catch{return!1}if("pnpm"===t){let t=e.search(/^importers:\s*$/m);if(t<0)return!1;let n=e.slice(t).split(/\n(?=\S)/)[0],a=r.replace(/[.+?^${}()|[\]\\]/g,"\\$&");return RegExp(`^ {2}['"]?${a}['"]?:\\s*$`,"m").test(n)}return!1},"l",0,d,"F",0,function(t,e){let r;if(!t)return!1;try{r=JSON.parse(t)}catch{return!1}let n=r&&"object"==typeof r&&!Array.isArray(r)?r.workspaces:void 0,a=(Array.isArray(n)?n:n&&"object"==typeof n&&Array.isArray(n.packages)?n.packages:[]).filter(t=>"string"==typeof t&&""!==t.trim()),o=a.filter(t=>t.trim().startsWith("!")).map(t=>t.trim().slice(1));return a.some(t=>!t.trim().startsWith("!")&&m(t).test(e))&&!o.some(t=>m(t).test(e))}],521050);let p="https://api.vercel.com";async function f(t,e,r){let n;try{n=await (r.fetch??fetch)(`${p}${t}`,{headers:{Authorization:`Bearer ${e}`,Accept:"application/json"},signal:AbortSignal.timeout(r.timeoutMs??5e3),cache:"no-store"})}catch(t){return{ok:!1,kind:"transient",error:t instanceof DOMException&&("TimeoutError"===t.name||"AbortError"===t.name)?"Vercel didn't answer within 5 seconds.":"Couldn't reach Vercel."}}if(401===n.status||403===n.status)return{ok:!1,kind:"auth",status:n.status,error:`Vercel rejected this credential (${n.status}).`};if(429===n.status){let t=Number(n.headers.get("Retry-After"));return{ok:!1,kind:"transient",status:429,retryAfterS:Number.isFinite(t)&&t>0?t:60,error:"Vercel says there were too many requests."}}return n.ok?{ok:!0,data:await n.json().catch(()=>null)}:{ok:!1,kind:"transient",status:n.status,error:`Vercel returned an error (${n.status}).`}}async function h(t,n,a,o,i){let s;try{s=await (i.fetch??fetch)(`${p}${n}`,{method:t,headers:{Authorization:`Bearer ${a}`,Accept:"application/json",...void 0===o?{}:{"Content-Type":"application/json"}},...void 0===o?{}:{body:JSON.stringify(o)},signal:AbortSignal.timeout(i.timeoutMs??5e3),cache:"no-store"})}catch(t){return{ok:!1,kind:"transient",error:t instanceof DOMException&&("TimeoutError"===t.name||"AbortError"===t.name)?"Vercel didn't answer within 5 seconds; the action may still have happened. Check the deployments in a minute.":"Couldn't reach Vercel."}}if(401===s.status)return{ok:!1,kind:"auth",status:401,error:"Vercel rejected this credential (401)."};if(403===s.status)return{ok:!1,kind:"scope",status:403,error:"Vercel refused this token for that project (403)."};if(429===s.status){let t;return{ok:!1,kind:"transient",status:429,retryAfterS:Number.isFinite(t=Number(s.headers.get("Retry-After")))&&t>0?t:60,error:"Vercel says there were too many requests."}}let l=await s.json().catch(()=>null);if(!s.ok){let t=e.z.object({error:e.z.object({code:r.z.string().regex(/^[A-Za-z0-9_-]{1,60}$/)})}).safeParse(l);return{ok:!1,kind:"transient",status:s.status,error:`Vercel refused this (${s.status}${t.success?`, ${t.data.error.code}`:""}).`}}return{ok:!0,data:l}}let g=t=>`teamId=${encodeURIComponent(t)}`,y=encodeURIComponent,k=t=>({ok:!1,kind:"format",error:`Vercel answered ${t} in a format the console doesn't recognise.`});function z(t,e,r=[]){let n=t.filter(t=>!1!==t.verified&&!t.redirect&&!t.gitBranch&&!t.customEnvironmentId),a=new Set(r.map(t=>t.toLowerCase())),o=n.map((e,r)=>{let n;return{name:e.name,key:[...(n=e.name,[+!t.some(t=>t.redirect?.toLowerCase()===n.toLowerCase()),+!!n.endsWith(".vercel.app"),+!a.has(n.toLowerCase()),n.length]),r]}}).sort((t,e)=>{for(let r=0;r<t.key.length;r++)if(t.key[r]!==e.key[r])return t.key[r]-e.key[r];return 0});return o[0]?.name??`${e}.vercel.app`}let b=e.z.object({teams:n.z.array(e.z.object({id:r.z.string(),slug:r.z.string(),name:r.z.string().nullish()}))});async function j(t,e={}){let r=await f("/v2/teams?limit=100",t,e);if(!r.ok)return r;let n=b.safeParse(r.data);return n.success?{ok:!0,data:n.data.teams.map(t=>({id:t.id,slug:t.slug,name:t.name??t.slug}))}:k("the team list")}async function $(t,r={}){let n=await f("/v5/user/tokens/current",t,r);if(!n.ok)return n;let o=e.z.object({token:e.z.object({expiresAt:a.z.number().nullish()})}).safeParse(n.data);return o.success?{ok:!0,data:o.data.token.expiresAt?new Date(o.data.token.expiresAt):null}:k("the token details")}let w=e.z.object({id:r.z.string(),readyState:r.z.string().nullish(),createdAt:a.z.number().nullish().catch(null),alias:n.z.array(r.z.string()).nullish().catch(null)}).nullish(),I=e.z.object({type:r.z.string(),jobStatus:r.z.string(),toDeploymentId:r.z.string(),requestedAt:a.z.number()}).nullish().catch(null);function A(t,e){let r=t?.readyState==="READY"?t.id:null;return e&&"succeeded"===e.jobStatus&&("rollback"===e.type||"promote"===e.type&&"number"==typeof t?.createdAt&&t.createdAt<=e.requestedAt)?e.toDeploymentId:r}let D=e.z.object({id:r.z.string(),name:r.z.string(),framework:r.z.string().nullish(),createdAt:a.z.number(),link:e.z.object({productionBranch:r.z.string().nullish(),type:r.z.string().nullish(),org:r.z.string().nullish(),repo:r.z.string().nullish()}).nullish(),resourceConfig:e.z.object({functionDefaultRegions:n.z.array(r.z.string()).nullish()}).nullish(),targets:e.z.object({production:w}).nullish(),lastAliasRequest:I,rootDirectory:r.z.string().nullish().catch(null)}),C=e.z.object({projects:n.z.array(D),pagination:e.z.object({next:a.z.number().nullish()}).nullish()});async function v(t,e,r={}){let n,a=[];for(let o=0;o<10;o++){let o=await f(`/v10/projects?teamId=${encodeURIComponent(e.id)}&limit=100${n?`&until=${n}`:""}`,t,r);if(!o.ok)return o;let i=C.safeParse(o.data);if(!i.success)return k("the project list");for(let t of i.data.projects)a.push({id:t.id,name:t.name,team:e,framework:t.framework??null,createdAt:new Date(t.createdAt),productionBranch:t.link?.productionBranch??null,currentDeploymentId:A(t.targets?.production,t.lastAliasRequest),repo:t.link?.type&&t.link.org&&t.link.repo?{type:t.link.type,org:t.link.org,repo:t.link.repo}:null,functionRegions:t.resourceConfig?.functionDefaultRegions??[],rootDirectory:c(t.rootDirectory),rootDirectoryUnsupported:d(t.rootDirectory),productionAliases:t.targets?.production?.alias??[]});if(!(n=i.data.pagination?.next))break}return{ok:!0,data:a}}let R=e.z.object({uid:r.z.string(),projectId:r.z.string(),state:r.z.string().nullish(),readyState:r.z.string().nullish(),target:r.z.string().nullish(),source:r.z.string().nullish(),url:r.z.string().nullish(),createdAt:a.z.number().nullish(),created:a.z.number().nullish(),buildingAt:a.z.number().nullish(),ready:a.z.number().nullish(),meta:o.z.record(r.z.string(),i.z.unknown()).nullish(),gitSource:e.z.object({ref:r.z.string().nullish(),sha:r.z.string().nullish()}).nullish().catch(null)}),S=t=>"string"==typeof t&&t.length?t:null,E=t=>t?new Date(t):null;function P(t,e){var r,n;let a,o,i=t.readyState??t.state??"BUILDING",s=t.meta??{};return{id:e,projectId:t.projectId,state:"READY"===i?"ready":"ERROR"===i?"error":"CANCELED"===i?"canceled":"building",rawState:i,target:"production"===t.target?"production":"preview",branch:S(s.githubCommitRef)??S(s.gitCommitRef)??S(s.gitlabCommitRef)??S(s.bitbucketCommitRef)??S(t.gitSource?.ref),sha:S(s.githubCommitSha)??S(s.gitCommitSha)??S(s.gitlabCommitSha)??S(s.bitbucketCommitSha)??S(t.gitSource?.sha),message:S(s.githubCommitMessage)??S(s.gitCommitMessage)??S(s.gitlabCommitMessage)??S(s.bitbucketCommitMessage),source:t.source??null,url:t.url??null,createdAt:new Date(t.createdAt??t.created??0),buildingAt:E(t.buildingAt),readyAt:E(t.ready),...(r=s,n=t.gitSource?.ref,a=S(r.githubCommitRef)?"github":S(r.gitlabCommitRef)?"gitlab":S(r.bitbucketCommitRef)?"bitbucket":S(n)?"gitSource":S(r.gitCommitRef)?"cli":null,o="1"===r.gitDirty||1===r.gitDirty||!0===r.gitDirty,{...a?{branchFrom:a}:{},...o?{gitDirty:!0}:{}})}}async function L(t,r,a,o={}){let i=await f(`/v7/deployments?teamId=${encodeURIComponent(r.id)}&limit=${a.limit??100}${a.since?`&since=${a.since}`:""}`,t,o);if(!i.ok)return i;let s=e.z.object({deployments:n.z.array(R)}).safeParse(i.data);return s.success?{ok:!0,data:s.data.deployments.map(t=>P(t,t.uid))}:k("the deployment list")}let U=R.omit({uid:!0,projectId:!0}).extend({id:r.z.string(),projectId:r.z.string().nullish()});async function N(t,e,r,n={}){let a=await f(`/v13/deployments/${encodeURIComponent(r)}?teamId=${encodeURIComponent(e.id)}`,t,n);if(!a.ok)return a;let o=U.safeParse(a.data);return o.success?{ok:!0,data:P({...o.data,uid:o.data.id,projectId:o.data.projectId??""},o.data.id)}:k("the deployment")}let T=e.z.object({name:r.z.string(),targets:e.z.object({production:w}).nullish(),lastAliasRequest:I});async function x(t,e,r,n={}){let a=await f(`/v9/projects/${y(r)}?${g(e)}`,t,n);if(!a.ok)return a;let o=T.safeParse(a.data);return o.success?{ok:!0,data:{name:o.data.name,currentId:A(o.data.targets?.production,o.data.lastAliasRequest)}}:k("the project")}let B=e.z.object({deployments:n.z.array(R.extend({projectId:r.z.string().nullish()}))});async function M(t,e,r,n,a,o){let i=`projectId=${y(r)}&target=production&state=${n}&limit=${a}&${g(e)}`,s=await f(`/v6/deployments?${i}`,t,o);if(!s.ok)return s;let l=B.safeParse(s.data);return l.success?{ok:!0,data:l.data.deployments.map(t=>P({...t,projectId:t.projectId??r},t.uid))}:k("the deployment list")}async function O(t,e,r,n={}){return M(t,e,r,"READY",5,n)}async function V(t,e,r,n={}){let a=await M(t,e,r,"BUILDING,QUEUED,INITIALIZING",1,n);return a.ok?{ok:!0,data:a.data[0]??null}:a}async function q(t,n,a,o={}){let i=await h("POST",`/v13/deployments?${g(n)}`,t,{name:a.name,project:a.projectId,deploymentId:a.deploymentId,target:"production"},o);if(!i.ok)return i;let s=e.z.object({id:r.z.string()}).safeParse(i.data);return{ok:!0,data:{id:s.success?s.data.id:""}}}async function W(t,e,r,n,a={}){let o=await h("POST",`/v1/projects/${y(r)}/rollback/${y(n)}?${g(e)}`,t,void 0,a);return o.ok?{ok:!0,data:null}:o}async function F(t,e,r,n,a={}){let o=await h("POST",`/v10/projects/${y(r)}/promote/${y(n)}?${g(e)}`,t,{},a);return o.ok?{ok:!0,data:null}:o}async function Y(t,n,a,o={}){let i=await h("POST",`/v13/deployments?${g(n)}`,t,{name:a.name,project:a.projectId,deploymentId:a.deploymentId,target:"production",meta:{action:"promote"}},o);if(!i.ok)return i;let s=e.z.object({id:r.z.string()}).safeParse(i.data);return{ok:!0,data:{id:s.success?s.data.id:""}}}async function G(t,e,r,n={}){let a=await h("PATCH",`/v12/deployments/${y(r)}/cancel?${g(e)}`,t,void 0,n);return a.ok?{ok:!0,data:null}:a}let Q=e.z.object({domains:n.z.array(e.z.object({name:r.z.string(),redirect:r.z.string().nullish(),verified:s.z.boolean().optional(),gitBranch:r.z.string().nullish(),customEnvironmentId:r.z.string().nullish().catch(null)})),pagination:e.z.object({next:a.z.number().nullish()}).nullish()});async function _(t,e,r,n={}){let a,o=[];for(let i=0;i<10;i++){let i=await f(`/v9/projects/${encodeURIComponent(r)}/domains?teamId=${encodeURIComponent(e)}&limit=100${a?`&until=${a}`:""}`,t,n);if(!i.ok)return i;let s=Q.safeParse(i.data);if(!s.success)return k("the domain list");for(let t of s.data.domains)o.push({name:t.name,redirect:t.redirect??null,verified:!1!==t.verified,gitBranch:t.gitBranch??null,customEnvironmentId:t.customEnvironmentId??null});if(!(a=s.data.pagination?.next))return{ok:!0,data:o}}return{ok:!1,kind:"transient",error:"The project has more than 1000 domains; Watchbell kept the domains it had."}}async function J(t,e,r,n,a={},o=[]){let i=await _(t,e,r,a);return i.ok?{ok:!0,data:z(i.data,n,o)}:i}let Z=e.z.object({misconfigured:s.z.boolean(),configuredBy:r.z.string().nullish(),recommendedIPv4:n.z.array(e.z.object({value:n.z.array(r.z.string())})).default([])});async function H(t,e,r,n={}){let a=await f(`/v6/domains/${encodeURIComponent(r)}/config?teamId=${encodeURIComponent(e)}`,t,n);if(!a.ok)return a;let o=Z.safeParse(a.data);return o.success?{ok:!0,data:{misconfigured:o.data.misconfigured,configuredBy:o.data.configuredBy??null,recommendedIps:o.data.recommendedIPv4.flatMap(t=>t.value)}}:k("the domain configuration")}async function K(t,e={}){let r=await j(t,e);if(!r.ok)return r;let n=[],a=[],o=[];for(let i of r.data){let r=await v(t,i,e);if(!r.ok){if(403===r.status){a.push(i.name),o.push(i.id);continue}return r}for(let t of r.data)n.push({externalId:t.id,name:t.name,meta:{teamId:i.id,teamSlug:i.slug,teamName:i.name,framework:t.framework,productionBranch:t.productionBranch,createdAt:t.createdAt.toISOString(),repo:t.repo?`${t.repo.org}/${t.repo.repo}`:null,repoType:t.repo?.type??null,functionRegions:t.functionRegions,rootDirectory:t.rootDirectory,...t.rootDirectoryUnsupported?{rootDirectoryUnsupported:t.rootDirectoryUnsupported}:{},...t.productionAliases.length?{productionAliases:t.productionAliases}:{}}})}return a.length===r.data.length?{ok:!1,kind:"auth",error:"This token can't read any of your Vercel teams. Create a token with access to them."}:{ok:!0,data:{apps:n,skippedTeams:a,skippedTeamIds:o}}}async function X(t,r,a,o,i={}){if(!/^[0-9a-f]{40}$/.test(o))return k("the commit");let s=new URLSearchParams({teamId:r,projectId:a,sha:o,limit:"10"}),l=await f(`/v6/deployments?${s}`,t,i);if(!l.ok)return l;let u=e.z.object({deployments:n.z.array(R)}).safeParse(l.data);return u.success?{ok:!0,data:u.data.deployments.map(t=>P(t,t.uid)).filter(t=>t.projectId===a&&(null===t.sha||t.sha===o)).sort((t,e)=>e.createdAt.getTime()-t.createdAt.getTime())}:k("the deployment list")}async function tt(t,e,r,n={}){let a=await f(`/v9/projects/${y(r)}?${g(e)}`,t,n);if(!a.ok)return a;let o=T.safeParse(a.data);if(!o.success)return k("the project");let i=o.data.targets?.production??null,s=o.data.lastAliasRequest??null;return{ok:!0,data:{currentId:A(i,s),latest:i?{id:i.id,readyState:i.readyState??null,createdAt:i.createdAt??null}:null,promote:s&&"promote"===s.type&&"succeeded"===s.jobStatus?{toDeploymentId:s.toDeploymentId,requestedAt:s.requestedAt}:null}}}t.s(["T",0,G,"n",0,z,"c",0,x,"C",0,X,"G",0,K,"Q",0,H,"S",0,N,"K",0,L,"M",0,_,"W",0,v,"X",0,j,"r",0,O,"q",0,J,"k",0,tt,"u",0,F,"l",0,Y,"L",0,q,"E",0,W,"N",0,V,"o",0,$],572134);let te=t=>Array.isArray(t)?t.filter(t=>"string"==typeof t&&t.length>0).map(t=>t.toLowerCase()):[];function tr(t){let e="string"==typeof t?.primaryDomain&&t.primaryDomain?t.primaryDomain.toLowerCase():null;return e?{primaryDomain:e,domains:te(t?.domains),pastDomains:te(t?.pastDomains)}:null}function tn(t){try{let e=new URL(t);return"https:"===e.protocol||"http:"===e.protocol?e.hostname.toLowerCase():null}catch{return null}}let ta=t=>/ · DEPLOYMENT_NOT_FOUND$/.test(t.lastError??"");function to(t,e,r=[],n={}){let a=tn(t),o=tr(e.meta);return!(!a||!o||function(t,e,r=[]){let n=tr(e.meta);if(!n)return!0;let a=t.toLowerCase();if(a===n.primaryDomain||n.domains.includes(a))return!0;let o=e.name.toLowerCase();return!!(!(a.endsWith(".vercel.app")&&r.some(t=>{let e=t.name.toLowerCase();return e!==o&&e.startsWith(`${o}-`)&&(a===`${e}.vercel.app`||a.startsWith(`${e}-`))}))&&(a===`${o}.vercel.app`||a.endsWith(".vercel.app")&&a.startsWith(`${o}-`)))||r.some(t=>{let e=tr(t.meta);return null!==e&&(e.primaryDomain===a||e.domains.includes(a))})}(a,e,r))&&(o.pastDomains.includes(a)||ta(n))?{from:a,to:o.primaryDomain}:null}t.s(["Q",0,function(t,e,r=[],n){let a=[...new Set(t.map(t=>t.name.toLowerCase()))],o=new Set(a),i=[...new Set([...te(n?.pastDomains),...te(n?.domains)])].filter(t=>!o.has(t)).slice(-20);return{domains:a,primaryDomain:z(t,e,r).toLowerCase(),pastDomains:i}},"u",0,to,"P",0,function(t,e){let r=new Map;for(let n of t){if("heartbeat"===n.kind)continue;let t=to(n.url,{name:n.appName,meta:n.appMeta},e.filter(t=>t.id!==n.appId),{lastError:n.lastError});t&&r.set(n.id,t)}return r},"w",0,function(t,e){let r=new URL(t);if(r.protocol="https:",r.hostname=e,r.port="",r.hostname!==e.toLowerCase())throw Error("The new domain isn't a valid host name.");return r.toString()},"R",0,function(t,e){let r=new Map;for(let n of t){if("heartbeat"===n.kind||!ta({lastError:n.lastError}))continue;let t=tr(n.appMeta),a=tn(n.url);if(!t||!a)continue;let o=r.get(n.appId)??t.pastDomains;!o.includes(a)&&to(n.url,{name:n.appName,meta:n.appMeta},e.filter(t=>t.id!==n.appId),{lastError:n.lastError})&&r.set(n.appId,[...o,a].slice(-20))}return r},"Y",0,tr],436357)}];
2
2
 
3
3
  //# sourceMappingURL=src_lib_domain-move_ts_04stiet1-xpe2._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[501424,601225,e=>{"use strict";var t=e.i(666680),r=e.i(547963),o=e.i(978071),n=e.i(260417),a=e.i(492973),i=e.i(75064),s=e.i(246517),l=e.i(105464),c=e.i(90879);async function d(e,t,r,o,n=5e3){let a;if((0,c.isDemo)())return{ok:!1,code:null,description:l.Y,retryAfter:null};try{a=await o(`https://api.telegram.org/bot${e}/${t}`,{...r,signal:AbortSignal.timeout(n),cache:"no-store"})}catch{return{ok:!1,code:null,description:"Telegram didn't answer.",retryAfter:null}}let i=await a.json().catch(()=>null);return i?.ok?{ok:!0,result:i.result}:{ok:!1,code:i?.error_code??a.status,description:String(i?.description??`HTTP ${a.status}`).slice(0,200),retryAfter:i?.parameters?.retry_after??null}}async function u(e,t,r,o={}){let n=await d(e,"sendMessage",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({chat_id:t,text:r,parse_mode:"HTML",link_preview_options:{is_disabled:!0},...o.replyMarkup?{reply_markup:o.replyMarkup}:{}})},o.fetch??fetch);return n.ok?{ok:!0}:429===n.code?{ok:!1,kind:"transient",retryAfterS:n.retryAfter??30,error:`Telegram asked us to wait ${n.retryAfter??30} s.`}:null===n.code||n.code>=500?{ok:!1,kind:"transient",error:null===n.code?n.description:`Telegram returned an error (${n.code}).`}:{ok:!1,kind:"config",error:`Telegram: ${n.description}`}}e.s(["I",0,u,"z",0,d],601225);let p=["message","callback_query"],m={inline_keyboard:[]},_=0,f="ABCDEFGHJKMNPQRSTUVWXYZ23456789",g=o.z.union([n.z.number().int(),a.z.string().regex(/^-?\d{1,20}$/)]).transform(e=>String(e)),k=i.z.object({id:g,type:a.z.string().max(32).optional(),title:a.z.string().max(256).optional(),first_name:a.z.string().max(256).optional(),username:a.z.string().max(64).optional()}),h=i.z.object({id:g,is_bot:s.z.boolean().optional()}),y=i.z.object({message_id:n.z.number().int(),chat:k,from:h.optional(),text:a.z.string().max(4096).optional()}),b=i.z.object({update_id:n.z.number().int(),message:y.optional(),callback_query:i.z.object({id:a.z.string().min(1).max(128),from:h,message:y.optional(),data:a.z.string().max(64).optional()}).optional()}),T=e=>({method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});function w(e){return 401===e.code||404===e.code?`Telegram rejected TELEGRAM_BOT_TOKEN. Check the value ${r.n.checkWhere}.`:null===e.code?"Couldn't reach Telegram. Try again.":`Telegram: ${e.description}`}async function z(e,t,r,o={}){let n=await d(e,"setWebhook",T({url:t,secret_token:r,allowed_updates:p,drop_pending_updates:!0,max_connections:5}),o.fetch??fetch);return n.ok?{ok:!0}:{ok:!1,error:w(n)}}async function x(e,t={}){let r=await d(e,"deleteWebhook",T({drop_pending_updates:!1}),t.fetch??fetch);return r.ok?{ok:!0}:{ok:!1,error:w(r)}}async function $(e,t,r={}){let o=r.timeoutS??25,n=`getUpdates?offset=${Math.trunc(t)}&timeout=${o}&allowed_updates=${encodeURIComponent(JSON.stringify(p))}`,a=await d(e,n,{method:"GET"},r.fetch??fetch,(o+10)*1e3);return a.ok?{ok:!0,updates:Array.isArray(a.result)?a.result:[]}:409===a.code?{ok:!1,error:w(a),conflict:!0}:{ok:!1,error:w(a)}}async function A(e,t={}){let r=await d(e,"getWebhookInfo",{method:"GET"},t.fetch??fetch);if(!r.ok)return{ok:!1,error:w(r)};let o=r.result??{};return{ok:!0,info:{url:"string"==typeof o.url?o.url:"",pending:"number"==typeof o.pending_update_count?o.pending_update_count:0,lastError:"string"==typeof o.last_error_message?o.last_error_message.slice(0,200):null,lastErrorAt:"number"==typeof o.last_error_date?new Date(1e3*o.last_error_date):null}}}e.s(["ALLOWED_UPDATES",0,p,"LINK_CODE_LENGTH",0,8,"NO_BUTTONS",0,m,"POLL_TIMEOUT_S",0,25,"WEBHOOK_PATH",0,"/api/telegram/webhook","botClient",0,function(e,t={}){let r=t.fetch??fetch,o=async(t,o)=>{let n=await d(e,t,T(o),r);n.ok||/not modified/i.test(n.description)||console.warn(`telegram ${t} failed (${n.code??"network"})`)};return{answer:(e,t)=>o("answerCallbackQuery",{callback_query_id:e,text:t.slice(0,200)}),editText:(e,t,r,n)=>o("editMessageText",{chat_id:e,message_id:t,text:r,parse_mode:"HTML",link_preview_options:{is_disabled:!0},reply_markup:n??m}),editKeyboard:(e,t,r)=>o("editMessageReplyMarkup",{chat_id:e,message_id:t,reply_markup:r}),send:(e,t)=>o("sendMessage",{chat_id:e,text:t,parse_mode:"HTML",link_preview_options:{is_disabled:!0}})}},"chatLabel",0,e=>`${(e.title??e.first_name??e.username??"Chat").slice(0,50)} (${e.type??"chat"})`,"deleteWebhook",0,x,"getUpdates",0,$,"getWebhookInfo",0,A,"hashLinkCode",0,e=>(0,t.createHash)("sha256").update(`watchpost:telegram-link:${e.trim().toUpperCase()}`,"utf8").digest("hex"),"newLinkCode",0,function(){return[...(0,t.randomBytes)(8)].map(e=>f[e%f.length]).join("")},"newWebhookSecret",0,()=>(0,t.randomBytes)(32).toString("base64url"),"noteRejected",0,()=>{_++},"parseLinkCommand",0,function(e){let t=/^\/link(?:@[A-Za-z0-9_]{3,64})?\s+([A-Za-z0-9]{4,16})\s*$/.exec(e??"");return t?t[1].toUpperCase():null},"parseUpdate",0,function(e){let t=b.safeParse(e);return t.success?t.data:null},"rejectedWebhookCalls",0,()=>_,"secretMatches",0,function(e,r){if("string"!=typeof e||"string"!=typeof r||!e||!r)return!1;let o=(0,t.createHash)("sha256").update(e,"utf8").digest(),n=(0,t.createHash)("sha256").update(r,"utf8").digest();return(0,t.timingSafeEqual)(o,n)},"setWebhook",0,z],501424)}];
1
+ module.exports=[501424,601225,e=>{"use strict";var t=e.i(666680),r=e.i(547963),o=e.i(978071),n=e.i(260417),a=e.i(492973),i=e.i(75064),s=e.i(246517),l=e.i(105464),d=e.i(90879);async function c(e,t,r,o,n=5e3){let a;if((0,d.isDemo)())return{ok:!1,code:null,description:l.Y,retryAfter:null};try{a=await o(`https://api.telegram.org/bot${e}/${t}`,{...r,signal:AbortSignal.timeout(n),cache:"no-store"})}catch{return{ok:!1,code:null,description:"Telegram didn't answer.",retryAfter:null}}let i=await a.json().catch(()=>null);return i?.ok?{ok:!0,result:i.result}:{ok:!1,code:i?.error_code??a.status,description:String(i?.description??`HTTP ${a.status}`).slice(0,200),retryAfter:i?.parameters?.retry_after??null}}async function u(e,t,r,o={}){let n="number"==typeof o.replyTo&&Number.isSafeInteger(o.replyTo)&&o.replyTo>0?{reply_parameters:{message_id:o.replyTo,allow_sending_without_reply:!0}}:{},a=await c(e,"sendMessage",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({chat_id:t,text:r,parse_mode:"HTML",link_preview_options:{is_disabled:!0},...o.replyMarkup?{reply_markup:o.replyMarkup}:{},...n})},o.fetch??fetch);if(a.ok){let e=a.result?.message_id;return"number"==typeof e&&Number.isSafeInteger(e)&&e>0?{ok:!0,messageId:e}:{ok:!0}}return 429===a.code?{ok:!1,kind:"transient",retryAfterS:a.retryAfter??30,error:`Telegram asked us to wait ${a.retryAfter??30} s.`}:null===a.code||a.code>=500?{ok:!1,kind:"transient",error:null===a.code?a.description:`Telegram returned an error (${a.code}).`}:{ok:!1,kind:"config",error:`Telegram: ${a.description}`}}e.s(["I",0,u,"z",0,c],601225);let p=["message","callback_query"],m={inline_keyboard:[]},_=0,f="ABCDEFGHJKMNPQRSTUVWXYZ23456789",g=o.z.union([n.z.number().int(),a.z.string().regex(/^-?\d{1,20}$/)]).transform(e=>String(e)),k=i.z.object({id:g,type:a.z.string().max(32).optional(),title:a.z.string().max(256).optional(),first_name:a.z.string().max(256).optional(),username:a.z.string().max(64).optional()}),h=i.z.object({id:g,is_bot:s.z.boolean().optional()}),y=i.z.object({message_id:n.z.number().int(),chat:k,from:h.optional(),text:a.z.string().max(4096).optional()}),b=i.z.object({update_id:n.z.number().int(),message:y.optional(),callback_query:i.z.object({id:a.z.string().min(1).max(128),from:h,message:y.optional(),data:a.z.string().max(64).optional()}).optional()}),T=e=>({method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});function w(e){return 401===e.code||404===e.code?`Telegram rejected TELEGRAM_BOT_TOKEN. Check the value ${r.n.checkWhere}.`:null===e.code?"Couldn't reach Telegram. Try again.":`Telegram: ${e.description}`}async function z(e,t,r,o={}){let n=await c(e,"setWebhook",T({url:t,secret_token:r,allowed_updates:p,drop_pending_updates:!0,max_connections:5}),o.fetch??fetch);return n.ok?{ok:!0}:{ok:!1,error:w(n)}}async function x(e,t={}){let r=await c(e,"deleteWebhook",T({drop_pending_updates:!1}),t.fetch??fetch);return r.ok?{ok:!0}:{ok:!1,error:w(r)}}async function S(e,t,r={}){let o=r.timeoutS??25,n=`getUpdates?offset=${Math.trunc(t)}&timeout=${o}&allowed_updates=${encodeURIComponent(JSON.stringify(p))}`,a=await c(e,n,{method:"GET"},r.fetch??fetch,(o+10)*1e3);return a.ok?{ok:!0,updates:Array.isArray(a.result)?a.result:[]}:409===a.code?{ok:!1,error:w(a),conflict:!0}:{ok:!1,error:w(a)}}async function $(e,t={}){let r=await c(e,"getWebhookInfo",{method:"GET"},t.fetch??fetch);if(!r.ok)return{ok:!1,error:w(r)};let o=r.result??{};return{ok:!0,info:{url:"string"==typeof o.url?o.url:"",pending:"number"==typeof o.pending_update_count?o.pending_update_count:0,lastError:"string"==typeof o.last_error_message?o.last_error_message.slice(0,200):null,lastErrorAt:"number"==typeof o.last_error_date?new Date(1e3*o.last_error_date):null}}}e.s(["ALLOWED_UPDATES",0,p,"LINK_CODE_LENGTH",0,8,"NO_BUTTONS",0,m,"POLL_TIMEOUT_S",0,25,"WEBHOOK_PATH",0,"/api/telegram/webhook","botClient",0,function(e,t={}){let r=t.fetch??fetch,o=async(t,o)=>{let n=await c(e,t,T(o),r);n.ok||/not modified/i.test(n.description)||console.warn(`telegram ${t} failed (${n.code??"network"})`)};return{answer:(e,t)=>o("answerCallbackQuery",{callback_query_id:e,text:t.slice(0,200)}),editText:(e,t,r,n)=>o("editMessageText",{chat_id:e,message_id:t,text:r,parse_mode:"HTML",link_preview_options:{is_disabled:!0},reply_markup:n??m}),editKeyboard:(e,t,r)=>o("editMessageReplyMarkup",{chat_id:e,message_id:t,reply_markup:r}),send:(e,t)=>o("sendMessage",{chat_id:e,text:t,parse_mode:"HTML",link_preview_options:{is_disabled:!0}})}},"chatLabel",0,e=>`${(e.title??e.first_name??e.username??"Chat").slice(0,50)} (${e.type??"chat"})`,"deleteWebhook",0,x,"getUpdates",0,S,"getWebhookInfo",0,$,"hashLinkCode",0,e=>(0,t.createHash)("sha256").update(`watchpost:telegram-link:${e.trim().toUpperCase()}`,"utf8").digest("hex"),"newLinkCode",0,function(){return[...(0,t.randomBytes)(8)].map(e=>f[e%f.length]).join("")},"newWebhookSecret",0,()=>(0,t.randomBytes)(32).toString("base64url"),"noteRejected",0,()=>{_++},"parseLinkCommand",0,function(e){let t=/^\/link(?:@[A-Za-z0-9_]{3,64})?\s+([A-Za-z0-9]{4,16})\s*$/.exec(e??"");return t?t[1].toUpperCase():null},"parseUpdate",0,function(e){let t=b.safeParse(e);return t.success?t.data:null},"rejectedWebhookCalls",0,()=>_,"secretMatches",0,function(e,r){if("string"!=typeof e||"string"!=typeof r||!e||!r)return!1;let o=(0,t.createHash)("sha256").update(e,"utf8").digest(),n=(0,t.createHash)("sha256").update(r,"utf8").digest();return(0,t.timingSafeEqual)(o,n)},"setWebhook",0,z],501424)}];
2
2
 
3
3
  //# sourceMappingURL=src_lib_notify_telegram-bot_ts_18y40dkchmcqd._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[715208,e=>{"use strict";var t=e.i(893893),n=e.i(656298),a=e.i(688275),s=e.i(672319),r=e.i(245710),l=e.i(556987),u=e.i(469762),o=e.i(505237);let i=e=>Math.round(100*e)/100,c=e=>e?new Date(e):null,d=(e,t)=>`${e} ${t}${1===e?"":"s"}`;function f(e){return null==e?"—":e>=0x40000000?`${(e/0x40000000).toFixed(1)} GB`:`${Math.round(e/1048576)} MB`}function p(e,t,n){return"unknown"!==e?{state:e,label:t}:{state:"unknown",label:n&&n in o.X?`Unknown \xb7 last seen ${o.X[n]}`:"Unknown"}}function h(e,n,s=l.a){return e.map(e=>{let o=(0,t.k)(t.s,e.data),c=o.endpoints??[],d=[...o.branches??[]].sort((e,t)=>Number(t.isDefault)-Number(e.isDefault)),h=d.reduce((e,t)=>e+(t.logicalSize??0),0),m=null!=o.computeSeconds?(0,a.g)(o.computeSeconds):null,g="unknown"===e.state;return{id:e.id,name:e.name,alias:(0,l.X)(s,e.id),account:e.account,region:o.region??null,pg:o.pgVersion??null,usedBy:e.usedBy,stale:g,collectedAt:e.collectedAt,status:p(e.state,(0,a.p)({endpoints:c,computeSeconds:o.computeSeconds??null}).label,o.lastGoodState),cu:null===m?null:{value:m,pct:i(m/a.a.cuHours*100)},storage:{text:f(h),pct:i(h/a.a.storageBytes*100)},transfer:null!=o.transferBytes?{text:f(o.transferBytes),pct:i(o.transferBytes/a.a.transferBytes*100)}:null,resets:o.periodEnd?(0,r.L)(new Date(o.periodEnd)):null,activeHours:null!=o.activeSeconds?Math.round(o.activeSeconds/360)/10:null,branches:d.map(e=>{let t=c.find(t=>t.branchId===e.id),s=t?(0,a.T)(t):{state:"off",label:"No compute"};return{id:e.id,name:e.name,isDefault:e.isDefault,endpoint:t?.id??null,status:g?p("unknown","",s.state):s,autoscaling:t?(0,a.c)(t.minCu,t.maxCu):"—",size:f(e.logicalSize),lastActive:t?.lastActive?(0,u.J)(new Date(t.lastActive),n):"—"}})}})}function m(e,t){if(!e.length||!e.every(e=>"unknown"===e.state))return null;let n=e.map(e=>e.collectedAt).filter(e=>null!==e).sort((e,t)=>t.getTime()-e.getTime())[0];return`API not responding${n?` \xb7 data from ${(0,u.J)(n,t)}`:""}`}e.s(["R",0,f,"r",0,function(e,t,n=l.a){return e.filter(e=>e.paused&&!e.stale).map(e=>{let a=e.usedBy.map(e=>e.name),s=a.length?`${a.join(", ")} ${a.length>1?"get":"gets"} errors until it's restored. `:"",r=t.find(t=>t.account===e.account),u=(0,l.G)(e.account),o=r?r.activeIds.map(e=>(0,l.X)(n,e)):[],i=r?r.left>0?`Account ${u} has a free slot to restore it.`:`Account ${u} already uses both free slots${o.length?` (${o.join(", ")})`:""}. Pause one of them first, or move ${e.alias} to an account with a free slot.`:"";return{key:`db-${e.id}`,tone:"warning",title:`Supabase project ${e.alias} is paused`,body:(0,l.G)(`${s}${i}`.trim()),action:{label:"Open Supabase",href:"/supabase"}}})},"V",0,function(e,t){if(!e.length)return{state:"unknown",sub:"No projects watched yet"};let n=m(e,t);if(n)return{state:"unknown",sub:n};let a=e.filter(e=>"ok"!==e.state).length;return{state:(0,o.S)(e.map(e=>e.state)),sub:a?`${a} of ${e.length} unreachable`:`${d(e.length,"project")} reachable`}},"U",0,function(e,a=l.a){return e.map(e=>{var s;let r=(0,t.k)(t.w,e.data),u=(e,t)=>null==e?null:{n:e,pct:i(e/t*100)};return{id:e.id,name:e.name,alias:(0,l.X)(a,e.id),projectId:e.externalId,account:e.account,stale:"unknown"===e.state,health:p(e.state,(s=e.state,"ok"===s?`Reachable \xb7 ${r.latencyMs??"—"} ms`:"off"===s?"No Firestore database":(0,n.z)({kind:r.pingKind,reason:r.pingReason}).label),r.lastGoodState),ops:r.opsError&&null==r.reads?{note:r.opsError}:{reads:u(r.reads,n.T.reads),writes:u(r.writes,n.T.writes),deletes:u(r.deletes,n.T.deletes)},users:r.authUsers??null,usersNote:r.authError??null,usedBy:e.usedBy}})},"D",0,h,"_",0,function(e,t,n=l.a){if(!e.length)return{state:"unknown",sub:"No projects watched yet"};let s=m(e,t);if(s)return{state:"unknown",sub:s};let r=h(e,t,n);if(1===r.length){let t=r[0];return{state:e[0].state,sub:`${t.alias} ${t.status.label.toLowerCase()}${t.cu?` \xb7 ${Math.round(t.cu.value)} of ${a.a.cuHours} CU-h`:""}`}}return{state:(0,o.S)(e.map(e=>e.state)),sub:`${d(e.length,"project")} \xb7 ${e.filter(e=>"ok"===e.state).length} active`}},"d",0,function(e){return[...new Set(e.map(e=>e.account))].sort().map(t=>{let n=e.filter(e=>e.account===t),a=n.filter(e=>!1!==e.freeOrg&&(0,s.Z)(e.status));return{account:t,...(0,s._)(n),active:a.map(e=>e.name),activeIds:a.map(e=>e.id)}})},"i",0,function(e){let t=e.filter(e=>null!==e.sizeBytes);return{text:f(t.reduce((e,t)=>e+(t.sizeBytes??0),0)),count:t.length}},"x",0,function(e,t){if(!e.length)return{state:"unknown",sub:"No projects watched yet"};let n=m(e,t);if(n)return{state:"unknown",sub:n};let a=e.filter(e=>"paused"===e.state).length,s=e.filter(e=>"warn"===e.state||"err"===e.state).length,r=[d(new Set(e.map(e=>e.account)).size,"account"),a?`${a} paused`:null,s?`${s} unhealthy`:null];return{state:(0,o.S)(e.map(e=>e.state)),sub:r.filter(Boolean).join(" · ")}},"Y",0,function(e,n,a=l.a){return e.map(e=>{let o=(0,t.k)(t.B,e.data),d=o.status??"",h=o.pgVersion?`Postgres ${o.pgVersion.split(".").slice(0,2).join(".")}`:null,m="paused"===e.state||"unknown"===e.state&&"paused"===o.lastGoodState;return{id:e.id,name:e.name,alias:(0,l.X)(a,e.id),ref:e.externalId,account:e.account,sub:[o.region,h].filter(Boolean).join(" · "),status:p(e.state,(0,s.P)(d).label,o.lastGoodState),since:e.stateSince&&"unknown"!==e.state?(0,r.$)(e.stateSince,n):null,size:null!=o.sizeBytes?{text:f(o.sizeBytes),pct:i(o.sizeBytes/s.R*100),asOf:o.sizeAt?(0,r.$)(new Date(o.sizeAt),n):"—"}:null,sizeNote:o.sizeError??(null!=o.sizeBytes?null:"ACTIVE_HEALTHY"===d?"Read once a day while the project is in use":"Read only while the project is active"),traffic:o.trafficAt&&!o.trafficError?o.lastTrafficAt?(0,u.J)(new Date(o.lastTrafficAt),n):"None in 7 days":"—",trafficNote:o.trafficError??null,risk:(0,s.g)({status:m?"INACTIVE":d,lastTrafficAt:c(o.lastTrafficAt),trafficCheckedAt:c(o.trafficAt),pausedSince:m?e.stateSince:null,pausedBeforeSeen:o.pausedBeforeSeen??!1,now:n}),usedBy:e.usedBy,stale:"unknown"===e.state,paused:m,sizeBytes:o.sizeBytes??null}})}])}];
1
+ module.exports=[715208,e=>{"use strict";var t=e.i(893893),n=e.i(656298),a=e.i(688275),s=e.i(672319),l=e.i(245710),r=e.i(556987),u=e.i(469762),o=e.i(505237);let i=e=>Math.round(100*e)/100,c=e=>e?new Date(e):null,d=(e,t)=>`${e} ${t}${1===e?"":"s"}`;function f(e){return null==e?"—":e>=0x40000000?`${(e/0x40000000).toFixed(1)} GB`:`${Math.round(e/1048576)} MB`}function p(e,t,n){return"unknown"!==e?{state:e,label:t}:{state:"unknown",label:n&&n in o.X?`Unknown \xb7 last seen ${o.X[n]}`:"Unknown"}}function h(e,n,s=r.a){return e.map(e=>{let o=(0,t.k)(t.s,e.data),c=o.endpoints??[],d=[...o.branches??[]].sort((e,t)=>Number(t.isDefault)-Number(e.isDefault)),h=d.reduce((e,t)=>e+(t.logicalSize??0),0),m=null!=o.computeSeconds?(0,a.g)(o.computeSeconds):null,g="unknown"===e.state;return{id:e.id,name:e.name,alias:(0,r.X)(s,e.id),account:e.account,region:o.region??null,pg:o.pgVersion??null,usedBy:e.usedBy,stale:g,collectedAt:e.collectedAt,status:p(e.state,(0,a.p)({endpoints:c,computeSeconds:o.computeSeconds??null}).label,o.lastGoodState),cu:null===m?null:{value:m,pct:i(m/a.a.cuHours*100)},storage:{text:f(h),pct:i(h/a.a.storageBytes*100)},transfer:null!=o.transferBytes?{text:f(o.transferBytes),pct:i(o.transferBytes/a.a.transferBytes*100)}:null,resets:o.periodEnd?(0,l.L)(new Date(o.periodEnd)):null,activeHours:null!=o.activeSeconds?Math.round(o.activeSeconds/360)/10:null,branches:d.map(e=>{let t=c.find(t=>t.branchId===e.id),s=t?(0,a.T)(t):{state:"off",label:"No compute"};return{id:e.id,name:e.name,isDefault:e.isDefault,endpoint:t?.id??null,status:g?p("unknown","",s.state):s,autoscaling:t?(0,a.c)(t.minCu,t.maxCu):"—",size:f(e.logicalSize),lastActive:t?.lastActive?(0,u.J)(new Date(t.lastActive),n):"—"}})}})}function m(e,t){if(!e.length||!e.every(e=>"unknown"===e.state))return null;let n=e.map(e=>e.collectedAt).filter(e=>null!==e).sort((e,t)=>t.getTime()-e.getTime())[0];return`API not responding${n?` \xb7 data from ${(0,u.J)(n,t)}`:""}`}e.s(["R",0,f,"r",0,function(e,t,n=r.a){return e.filter(e=>e.paused&&!e.stale).map(e=>{let a=e.usedBy.map(e=>e.name),s=a.length?`${a.join(", ")} ${a.length>1?"get":"gets"} errors until it's restored. `:"",l=t.find(t=>t.account===e.account),u=(0,r.G)(e.account),o=l?l.activeIds.map(e=>(0,r.X)(n,e)):[],i=l?l.left>0?`Account ${u} has a free slot to restore it.`:`Account ${u} already uses both free slots${o.length?` (${o.join(", ")})`:""}. Pause one of them first, or move ${e.alias} to an account with a free slot.`:"";return{key:`db-${e.id}`,tone:"warning",title:`Supabase project ${e.alias} is paused`,body:(0,r.G)(`${s}${i}`.trim()),action:{label:"Open Supabase",href:"/supabase"}}})},"V",0,function(e,t){if(!e.length)return{state:"unknown",sub:"No projects watched yet"};let n=m(e,t);if(n)return{state:"unknown",sub:n};let a=e.filter(e=>"ok"!==e.state).length;return{state:(0,o.S)(e.map(e=>e.state)),sub:a?`${a} of ${e.length} unreachable`:`${d(e.length,"project")} reachable`}},"U",0,function(e,a=r.a){return e.map(e=>{var s;let l=(0,t.k)(t.w,e.data),u=(e,t)=>null==e?null:{n:e,pct:i(e/t*100)};return{id:e.id,name:e.name,alias:(0,r.X)(a,e.id),projectId:e.externalId,account:e.account,stale:"unknown"===e.state,health:p(e.state,(s=e.state,"ok"===s?`Reachable \xb7 ${l.latencyMs??"—"} ms`:"off"===s?"No Firestore database":(0,n.z)({kind:l.pingKind,reason:l.pingReason}).label),l.lastGoodState),ops:l.opsError&&null==l.reads?{note:l.opsError}:{reads:u(l.reads,n.T.reads),writes:u(l.writes,n.T.writes),deletes:u(l.deletes,n.T.deletes)},users:l.authUsers??null,usersNote:l.authError??null,usedBy:e.usedBy}})},"D",0,h,"_",0,function(e,t,n=r.a){if(!e.length)return{state:"unknown",sub:"No projects watched yet"};let s=m(e,t);if(s)return{state:"unknown",sub:s};let l=h(e,t,n);if(1===l.length){let t=l[0],n="Idle"===t.status.label?"is asleep":t.status.label.toLowerCase();return{state:e[0].state,sub:`${t.alias} ${n}${t.cu?` \xb7 ${Math.round(t.cu.value)} of ${a.a.cuHours} compute hours used this month`:""}`}}return{state:(0,o.S)(e.map(e=>e.state)),sub:`${d(e.length,"project")} \xb7 ${e.filter(e=>"ok"===e.state).length} active`}},"d",0,function(e){return[...new Set(e.map(e=>e.account))].sort().map(t=>{let n=e.filter(e=>e.account===t),a=n.filter(e=>!1!==e.freeOrg&&(0,s.Z)(e.status));return{account:t,...(0,s._)(n),active:a.map(e=>e.name),activeIds:a.map(e=>e.id)}})},"i",0,function(e){let t=e.filter(e=>null!==e.sizeBytes);return{text:f(t.reduce((e,t)=>e+(t.sizeBytes??0),0)),count:t.length}},"x",0,function(e,t){if(!e.length)return{state:"unknown",sub:"No projects watched yet"};let n=m(e,t);if(n)return{state:"unknown",sub:n};let a=e.filter(e=>"paused"===e.state).length,s=e.filter(e=>"warn"===e.state||"err"===e.state).length,l=[d(new Set(e.map(e=>e.account)).size,"account"),a?`${a} paused`:null,s?`${s} unhealthy`:null];return{state:(0,o.S)(e.map(e=>e.state)),sub:l.filter(Boolean).join(" · ")}},"Y",0,function(e,n,a=r.a){return e.map(e=>{let o=(0,t.k)(t.B,e.data),d=o.status??"",h=o.pgVersion?`Postgres ${o.pgVersion.split(".").slice(0,2).join(".")}`:null,m="paused"===e.state||"unknown"===e.state&&"paused"===o.lastGoodState;return{id:e.id,name:e.name,alias:(0,r.X)(a,e.id),ref:e.externalId,account:e.account,sub:[o.region,h].filter(Boolean).join(" · "),status:p(e.state,(0,s.P)(d).label,o.lastGoodState),since:e.stateSince&&"unknown"!==e.state?(0,l.$)(e.stateSince,n):null,size:null!=o.sizeBytes?{text:f(o.sizeBytes),pct:i(o.sizeBytes/s.R*100),asOf:o.sizeAt?(0,l.$)(new Date(o.sizeAt),n):"—"}:null,sizeNote:o.sizeError??(null!=o.sizeBytes?null:"ACTIVE_HEALTHY"===d?"Read once a day while the project is in use":"Read only while the project is active"),traffic:o.trafficAt&&!o.trafficError?o.lastTrafficAt?(0,u.J)(new Date(o.lastTrafficAt),n):"None in 7 days":"—",trafficNote:o.trafficError??null,risk:(0,s.g)({status:m?"INACTIVE":d,lastTrafficAt:c(o.lastTrafficAt),trafficCheckedAt:c(o.trafficAt),pausedSince:m?e.stateSince:null,pausedBeforeSeen:o.pausedBeforeSeen??!1,now:n}),usedBy:e.usedBy,stale:"unknown"===e.state,paused:m,sizeBytes:o.sizeBytes??null}})}])}];
2
2
 
3
3
  //# sourceMappingURL=src_lib_view_databases_ts_1ovdbo8spjhf9._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[556987,e=>{"use strict";let t=new Set(["supabase_project","neon_project","firestore","turso_database","upstash_redis","d1_database","db","fs"]);function a(e){let t=e+1,a="";for(;t>0;)a=String.fromCharCode(97+(t-1)%26)+a,t=Math.floor((t-1)/26);return a}let r=e=>(e instanceof Date?e:new Date(e)).getTime(),n=(e,t)=>r(e.firstSeenAt)-r(t.firstSeenAt)||(e.id<t.id?-1:+(e.id>t.id));function i(e,t){return[...e].sort(n).map((e,r)=>({id:e.id,name:e.name,alias:`${t}-${a(r)}`}))}function o(e,t){return e.db.find(e=>e.id===t)?.alias??"db-?"}let s=/[\p{L}\p{N}._%+-]+@[\p{L}\p{N}-]+(?:\.[\p{L}\p{N}-]+)*\.[\p{L}]{2,}/gu;function d(e){return e.replace(s,"[email hidden]")}let l=e=>e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),p="[\\p{L}\\p{N}_-]",u=new WeakMap;function c(e,t,a){let r;if(!e)return e;let n=a?t.db.find(e=>e.id===a):void 0,i=n&&n.name.trim().length>=2?e.replace((r=n.name,RegExp(`(?<!${p})${l(r)}(?!${p})`,"giu")),n.alias):e,o=function(e){if(u.has(e))return u.get(e);let t=new Set(e.app.map(e=>e.name.toLowerCase())),a=[...new Set(e.db.map(e=>e.name).filter(e=>e.trim().length>=2&&!t.has(e.toLowerCase())))].sort((e,t)=>t.length-e.length),r=new Map;for(let t of e.db)r.has(t.name.toLowerCase())||r.set(t.name.toLowerCase(),t.alias);let n=a.length?{re:RegExp(`(?<!${p})(?:${a.map(l).join("|")})(?!${p})`,"giu"),alias:r}:null;return u.set(e,n),n}(t);return o&&(i=i.replace(o.re,e=>o.alias.get(e.toLowerCase())??e)),d(i)}let f=(e,t)=>!!t&&e.db.some(e=>e.id===t);String.raw`[\p{L}\p{N}_.-]`,String.raw`(?![\p{L}\p{N}_-]|\.[\p{L}\p{N}])`,new WeakMap,e.s(["a",0,{db:[],app:[]},"k",0,"oc-shot","r",0,(e,t)=>e.app.find(e=>e.name===t)?.alias??"app-?","n",0,function(e,o=[]){let s=e.filter(e=>"app"===e.kind),d=i(s,"app"),l=[...o].sort((e,t)=>r(e.createdAt)-r(t.createdAt)||(e.id<t.id?-1:+(e.id>t.id))).map((e,t)=>({id:e.id,name:e.label,alias:`account-${t+1}`}));return{db:i(e.filter(e=>{let a;return null!=(a=e.kind)&&t.has(a)}),"db"),app:d,account:l,host:function(e,t){let r=[],i=new Set,o=(e,t,a)=>{let n=t.toLowerCase();i.has(n)||(i.add(n),r.push({id:e,name:n,alias:a}))},s=new Map(t.map(e=>[e.id,e])),d=e.filter(e=>"domain"===e.kind).sort(n),l=new Map;for(let e of d){let t=e.parentId?s.get(e.parentId):void 0;if(!t)continue;let a=(l.get(t.id)??0)+1;l.set(t.id,a),o(e.id,e.name,`${t.alias}${a>1?`-${a}`:""}.example`)}for(let e of t)o(`${e.id}:vercel`,`${e.name}.vercel.app`,`${e.alias}${l.has(e.id)?"-vercel":""}.example`);return e.filter(e=>"zone"===e.kind||"domain"===e.kind&&!(e.parentId&&s.has(e.parentId))).sort(n).filter(e=>!i.has(e.name.toLowerCase())).forEach((e,t)=>o(e.id,e.name,`site-${a(t)}.example`)),r}(e,d),team:function(e){let t=[];for(let a of[...e].sort(n)){let e=a.team?.trim();e&&!t.some(t=>t.name===e)&&t.push({id:`team:${e}`,name:e,alias:`team-${t.length+1}`})}return t}(s)}},"X",0,o,"o",0,function(e,t){return{...e,title:f(t,e.resourceId)?o(t,e.resourceId):c(e.title,t,e.resourceId),message:c(e.message,t,e.resourceId),causedBy:c(e.causedBy,t)}},"G",0,d,"p",0,function(e,t){return{...e,resource:f(t,e.resourceId)?o(t,e.resourceId):c(e.resource,t),message:c(e.message,t,e.resourceId),detail:c(e.detail,t,e.resourceId)}},"J",0,c,"d",0,function(e,t){let a=/^db-unlinked:(.+)$/.exec(e.key)?.[1];return{...e,subject:a?o(t,a):c(e.subject,t),title:c(e.title,t,a),why:c(e.why,t,a),fix:c(e.fix,t,a)}},"h",0,function(e,t=[]){return[...e,...t].filter(e=>!!e).join(" ")}])}];
1
+ module.exports=[556987,e=>{"use strict";let t=new Set(["supabase_project","neon_project","firestore","turso_database","upstash_redis","d1_database","db","fs"]);function a(e){let t=e+1,a="";for(;t>0;)a=String.fromCharCode(97+(t-1)%26)+a,t=Math.floor((t-1)/26);return a}let r=e=>(e instanceof Date?e:new Date(e)).getTime(),n=(e,t)=>r(e.firstSeenAt)-r(t.firstSeenAt)||(e.id<t.id?-1:+(e.id>t.id));function i(e,t){return[...e].sort(n).map((e,r)=>({id:e.id,name:e.name,alias:`${t}-${a(r)}`}))}function s(e,t){return e.db.find(e=>e.id===t)?.alias??"db-?"}let o=/[\p{L}\p{N}._%+-]+@[\p{L}\p{N}-]+(?:\.[\p{L}\p{N}-]+)*\.[\p{L}]{2,}/gu;function l(e){return e.replace(o,"[email hidden]")}let d=e=>e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),p="[\\p{L}\\p{N}_-]",u=new WeakMap;function m(e,t,a){let r;if(!e)return e;let n=a?t.db.find(e=>e.id===a):void 0,i=n&&n.name.trim().length>=2?e.replace((r=n.name,RegExp(`(?<!${p})${d(r)}(?!${p})`,"giu")),n.alias):e,s=function(e){if(u.has(e))return u.get(e);let t=new Set(e.app.map(e=>e.name.toLowerCase())),a=[...new Set(e.db.map(e=>e.name).filter(e=>e.trim().length>=2&&!t.has(e.toLowerCase())))].sort((e,t)=>t.length-e.length),r=new Map;for(let t of e.db)r.has(t.name.toLowerCase())||r.set(t.name.toLowerCase(),t.alias);let n=a.length?{re:RegExp(`(?<!${p})(?:${a.map(d).join("|")})(?!${p})`,"giu"),alias:r}:null;return u.set(e,n),n}(t);return s&&(i=i.replace(s.re,e=>s.alias.get(e.toLowerCase())??e)),l(i)}let f=(e,t)=>!!t&&e.db.some(e=>e.id===t),c=String.raw`[\p{L}\p{N}_.-]`,g=String.raw`(?![\p{L}\p{N}_-]|\.[\p{L}\p{N}])`;new WeakMap;let h=new WeakMap;e.s(["a",0,{db:[],app:[]},"k",0,"oc-shot","r",0,(e,t)=>e.app.find(e=>e.name===t)?.alias??"app-?","n",0,function(e,s=[]){let o=e.filter(e=>"app"===e.kind),l=i(o,"app"),d=[...s].sort((e,t)=>r(e.createdAt)-r(t.createdAt)||(e.id<t.id?-1:+(e.id>t.id))).map((e,t)=>({id:e.id,name:e.label,alias:`account-${t+1}`}));return{db:i(e.filter(e=>{let a;return null!=(a=e.kind)&&t.has(a)}),"db"),app:l,account:d,host:function(e,t){let r=[],i=new Set,s=(e,t,a)=>{let n=t.toLowerCase();i.has(n)||(i.add(n),r.push({id:e,name:n,alias:a}))},o=new Map(t.map(e=>[e.id,e])),l=e.filter(e=>"domain"===e.kind).sort(n),d=new Map;for(let e of l){let t=e.parentId?o.get(e.parentId):void 0;if(!t)continue;let a=(d.get(t.id)??0)+1;d.set(t.id,a),s(e.id,e.name,`${t.alias}${a>1?`-${a}`:""}.example`)}for(let e of t)s(`${e.id}:vercel`,`${e.name}.vercel.app`,`${e.alias}${d.has(e.id)?"-vercel":""}.example`);return e.filter(e=>"zone"===e.kind||"domain"===e.kind&&!(e.parentId&&o.has(e.parentId))).sort(n).filter(e=>!i.has(e.name.toLowerCase())).forEach((e,t)=>s(e.id,e.name,`site-${a(t)}.example`)),r}(e,l),team:function(e){let t=[];for(let a of[...e].sort(n)){let e=a.team?.trim();e&&!t.some(t=>t.name===e)&&t.push({id:`team:${e}`,name:e,alias:`team-${t.length+1}`})}return t}(o)}},"X",0,s,"o",0,function(e,t){return{...e,title:f(t,e.resourceId)?s(t,e.resourceId):m(e.title,t,e.resourceId),message:m(e.message,t,e.resourceId),causedBy:m(e.causedBy,t)}},"G",0,l,"p",0,function(e,t){return{...e,resource:f(t,e.resourceId)?s(t,e.resourceId):m(e.resource,t),message:m(e.message,t,e.resourceId),detail:m(e.detail,t,e.resourceId)}},"J",0,m,"d",0,function(e,t){let a=/^db-unlinked:(.+)$/.exec(e.key)?.[1];return{...e,subject:a?s(t,a):m(e.subject,t),title:m(e.title,t,a),why:m(e.why,t,a),fix:m(e.fix,t,a)}},"q",0,function(e,t){if(!e)return e;let a=function(e){let t=h.get(e);if(t)return t;let a=new Map((e.host??[]).map(e=>[e.alias.toLowerCase(),e.name])),r=new Map;for(let t of[...e.app,...e.db])t.name.trim()&&!r.has(t.alias.toLowerCase())&&r.set(t.alias.toLowerCase(),t.name);let n=e=>[...e].sort((e,t)=>t.length-e.length).map(d).join("|"),i={host:a.size?RegExp(String.raw`(?<![\p{L}\p{N}_-])(?:${n(a.keys())})${g}`,"giu"):null,hostName:a,names:r.size?RegExp(`(?<!${c})(?:${n(r.keys())})${g}`,"giu"):null,realName:r};return h.set(e,i),i}(t),r=e;return a.host&&(r=r.replace(a.host,e=>a.hostName.get(e.toLowerCase())??e)),a.names&&(r=r.replace(a.names,e=>a.realName.get(e.toLowerCase())??e)),l(r)},"h",0,function(e,t=[]){return[...e,...t].filter(e=>!!e).join(" ")}])}];
2
2
 
3
3
  //# sourceMappingURL=src_lib_view_display-name_ts_0xoimm6j7bwnf._.js.map
@@ -1,5 +1,5 @@
1
- (()=>{"use strict";module.exports=[779704,e=>{var t=e.i(93321),i=e.i(548734),a=e.i(837137),r=e.i(86657),n=e.i(502330),s=e.i(666680),c=e.i(26972),l=e.i(427221),o=e.i(811365);let d="advisor.ai_summary",u=c.z.object({text:l.z.string().min(1).max(1200),model:l.z.string().max(200),at:l.z.string(),count:o.z.number().int().min(0),hash:l.z.string().length(64)});function m(e){let t=e.map(e=>`${e.severity}\0${e.app}\0${e.title}`).sort();return(0,s.createHash)("sha256").update(t.join("\x01")).digest("hex")}async function p(){let[e]=await (0,i.f)().select({value:a.settings.value}).from(a.settings).where((0,t.u)(a.settings.key,d)).limit(1),r=u.safeParse(e?.value);return r.success?r.data:null}async function f(e,t){var s,c;if(!await r.f.provider())return{status:"no-provider"};let l=await r.f.advice(e),o=(s=await p(),c=t.force,l.length?!c&&s&&s.hash===m(l)?"skip-unchanged":"run":"skip-empty");if("skip-empty"===o)return{status:"empty"};if("skip-unchanged"===o)return{status:"unchanged"};let u=await r.f.complete((0,n.N)(l),{purpose:"summary",maxTokens:400}),f=u.text.trim().slice(0,1200);if(!f)throw Error("The model returned no text.");let h={text:f,model:u.model.slice(0,200),at:e.toISOString(),count:l.length,hash:m(l)};return await (0,i.f)().insert(a.settings).values({key:d,value:h}).onConflictDoUpdate({target:a.settings.key,set:{value:h,updatedAt:e}}),{status:"stored",summary:h}}e.s(["h",0,p,"E",0,f],779704)},920274,918962,e=>{var t=e.i(93321),i=e.i(530385),a=e.i(548734),r=e.i(837137),n=e.i(142754);let s=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,c=e=>s.test(e);async function l(e,s=new Date){let o=null,d=new Map;if(void 0!==e){if(!c(e))return[];let[i]=await (0,a.f)().select({name:r.resources.name}).from(r.resources).where((0,t.u)(r.resources.id,e)).limit(1);o=i?[e,i.name]:[e],i&&(d=new Map([[e,i.name]]))}let u=new Date(s.getTime()-2592e6),m=(0,t.b)((0,t.M)(n.c.dismissedAt),(0,t.B)(n.c.createdAt,u)),p=await (0,a.f)().select({id:n.c.id,appId:n.c.appId,severity:n.c.severity,title:n.c.title,body:n.c.body,source:n.c.source,client:n.c.client,model:n.c.model,createdAt:n.c.createdAt}).from(n.c).where(o?(0,t.b)(m,(0,t.y)(n.c.appId,o)):m).orderBy((0,i.A)(n.c.createdAt)).limit(20);if(void 0===e){let e=[...new Set(p.map(e=>e.appId).filter(e=>!!e&&c(e)))];e.length&&(d=new Map((await (0,a.f)().select({id:r.resources.id,name:r.resources.name}).from(r.resources).where((0,t.y)(r.resources.id,e)).limit(e.length)).map(e=>[e.id,e.name])))}return p.map(e=>({id:e.id,appId:e.appId,appName:e.appId?d.get(e.appId)??(c(e.appId)?null:e.appId):null,severity:e.severity,title:e.title,body:e.body,from:e.client||e.source,model:e.model,at:e.createdAt}))}async function o(e,i,r){let[s]=await (0,a.f)().update(n.c).set({dismissedAt:r,dismissedBy:i}).where((0,t.b)((0,t.u)(n.c.id,e),(0,t.M)(n.c.dismissedAt))).returning({id:n.c.id,title:n.c.title,appId:n.c.appId,source:n.c.source,client:n.c.client});return s?{id:s.id,title:s.title,appId:s.appId,from:s.client||s.source}:null}e.s(["$",0,o,"b",0,c,"N",0,l],920274);var d=e.i(484458),u=e.i(363652),m=e.i(501634),p=e.i(502330);async function f(e,t={}){let i=t.now??new Date,a=(0,p.u)(await (0,m.V)(i),e);if(t.context){let e=a[a.length-1];e.content=`${e.content}
1
+ (()=>{"use strict";module.exports=[779704,e=>{var t=e.i(93321),a=e.i(548734),i=e.i(837137),r=e.i(86657),n=e.i(502330),s=e.i(666680),c=e.i(26972),l=e.i(427221),o=e.i(811365);let d="advisor.ai_summary",u=c.z.object({text:l.z.string().min(1).max(1200),model:l.z.string().max(200),at:l.z.string(),count:o.z.number().int().min(0),hash:l.z.string().length(64)});function m(e){let t=e.map(e=>`${e.severity}\0${e.app}\0${e.title}`).sort();return(0,s.createHash)("sha256").update(t.join("\x01")).digest("hex")}async function p(){let[e]=await (0,a.f)().select({value:i.settings.value}).from(i.settings).where((0,t.u)(i.settings.key,d)).limit(1),r=u.safeParse(e?.value);return r.success?r.data:null}async function f(e,t){var s,c;if(!await r.f.provider())return{status:"no-provider"};let l=await r.f.advice(e),o=(s=await p(),c=t.force,l.length?!c&&s&&s.hash===m(l)?"skip-unchanged":"run":"skip-empty");if("skip-empty"===o)return{status:"empty"};if("skip-unchanged"===o)return{status:"unchanged"};let u=await r.f.complete((0,n.N)(l),{purpose:"summary",maxTokens:400}),f=u.text.trim().slice(0,1200);if(!f)throw Error("The model returned no text.");let h={text:f,model:u.model.slice(0,200),at:e.toISOString(),count:l.length,hash:m(l)};return await (0,a.f)().insert(i.settings).values({key:d,value:h}).onConflictDoUpdate({target:i.settings.key,set:{value:h,updatedAt:e}}),{status:"stored",summary:h}}e.s(["h",0,p,"E",0,f],779704)},920274,918962,e=>{var t=e.i(93321),a=e.i(530385),i=e.i(548734),r=e.i(837137),n=e.i(142754);let s=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,c=e=>s.test(e);async function l(e,s=new Date){let o=null,d=new Map;if(void 0!==e){if(!c(e))return[];let[a]=await (0,i.f)().select({name:r.resources.name}).from(r.resources).where((0,t.u)(r.resources.id,e)).limit(1);o=a?[e,a.name]:[e],a&&(d=new Map([[e,a.name]]))}let u=new Date(s.getTime()-2592e6),m=(0,t.b)((0,t.M)(n.c.dismissedAt),(0,t.B)(n.c.createdAt,u)),p=await (0,i.f)().select({id:n.c.id,appId:n.c.appId,severity:n.c.severity,title:n.c.title,body:n.c.body,source:n.c.source,client:n.c.client,model:n.c.model,createdAt:n.c.createdAt}).from(n.c).where(o?(0,t.b)(m,(0,t.y)(n.c.appId,o)):m).orderBy((0,a.A)(n.c.createdAt)).limit(20);if(void 0===e){let e=[...new Set(p.map(e=>e.appId).filter(e=>!!e&&c(e)))];e.length&&(d=new Map((await (0,i.f)().select({id:r.resources.id,name:r.resources.name}).from(r.resources).where((0,t.y)(r.resources.id,e)).limit(e.length)).map(e=>[e.id,e.name])))}return p.map(e=>({id:e.id,appId:e.appId,appName:e.appId?d.get(e.appId)??(c(e.appId)?null:e.appId):null,severity:e.severity,title:e.title,body:e.body,from:e.client||e.source,model:e.model,at:e.createdAt}))}async function o(e,a,r){let[s]=await (0,i.f)().update(n.c).set({dismissedAt:r,dismissedBy:a}).where((0,t.b)((0,t.u)(n.c.id,e),(0,t.M)(n.c.dismissedAt))).returning({id:n.c.id,title:n.c.title,appId:n.c.appId,source:n.c.source,client:n.c.client});return s?{id:s.id,title:s.title,appId:s.appId,from:s.client||s.source}:null}e.s(["$",0,o,"b",0,c,"N",0,l],920274);var d=e.i(484458),u=e.i(363652),m=e.i(501634),p=e.i(502330);async function f(e,t={}){let a=t.now??new Date,i=(0,p.u)(await (0,m.V)(a),e);if(t.context){let e=i[i.length-1];e.content=`${e.content}
2
2
 
3
- Context: ${(0,p.O)(t.context,Math.min(t.contextMax??2e3,4e3))}`}let r=await (0,u.X)(a,{...t.model?{model:t.model}:{},purpose:"console-chat",maxTokens:1500}),n=r.text.trim();if(!n)throw new h;return{text:n.length>8e3?`${n.slice(0,7999)}…`:n,model:r.model,ms:r.ms}}class h extends Error{constructor(){super("The model returned no text. Try again."),this.name="GatewayError"}}async function w(e=new Date){let[t,i]=await Promise.all([(0,d.y)(e).catch(()=>null),(0,u.M)().then(()=>!0,()=>!1)]),a=!!t&&(0,d.U)(t.report,e);return{agConnected:a,agEnabled:a&&t?(0,d._)(t.report,t.prefs,t.allowed):[],providerReady:i}}e.s(["q",0,"watchpost","L",0,f,"c",0,w],918962)}]})();
3
+ Context: ${(0,p.O)(t.context,Math.min(t.contextMax??2e3,4e3))}`}let r=await (0,u.X)(i,{...t.model?{model:t.model,...t.fallback?{fallback:!0}:{}}:{},purpose:"console-chat",maxTokens:1500}),n=r.text.trim();if(!n)throw new h;return{text:n.length>8e3?`${n.slice(0,7999)}…`:n,model:r.model,ms:r.ms}}class h extends Error{constructor(){super("The model returned no text. Try again."),this.name="GatewayError"}}async function w(e=new Date){let[t,a]=await Promise.all([(0,d.y)(e).catch(()=>null),(0,u.M)().then(()=>!0,()=>!1)]),i=!!t&&(0,d.U)(t.report,e);return{agConnected:i,agEnabled:i&&t?(0,d._)(t.report,t.prefs,t.allowed):[],providerReady:a}}e.s(["q",0,"watchpost","L",0,f,"c",0,w],918962)}]})();
4
4
 
5
5
  //# sourceMappingURL=src_private_1_nggk_wre7qf._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[363652,875016,240387,501634,e=>{"use strict";let t;var a=e.i(843405),n=e.i(811365),s=e.i(732084),r=e.i(149310),i=e.i(827857),o=e.i(427221),l=e.i(689963),u=e.i(191179),d=e.i(954757),d=d,c=e.i(26972),p=e.i(83931),m=e.i(899370),h=e.i(19809),f=e.i(371289);e.i(666680);var y=e.i(50519);e.i(312573),e.i(771262),e.i(344934),e.i(729015);let w={max:30,windowMs:6e5};globalThis.__watchbellKeyFailures??={...t={limit:(0,y.d)(w),seen:(0,y.V)({ttlMs:w.windowMs,maxKeys:5e4}),failed:(0,y.V)({ttlMs:6e4})},reset:()=>{t.limit.reset(),t.seen.reset(),t.failed.reset()}};var b=e.i(213935),g=e.i(337830),k=e.i(711672),v=e.i(208683),x=e.i(61017);let I=()=>n.z.number().finite(),$=s.z.looseObject({role:r.z.enum(["system","developer","user","assistant","tool","function"]),content:i.z.union([o.z.string(),l.z.array(u.z.unknown()),d.null()]).optional()});c.z.object({model:o.z.string().trim().min(1).max(200),messages:l.z.array($).min(1).max(100),stream:p.z.boolean().nullish(),stream_options:s.z.looseObject({}).nullish(),temperature:I().min(0).max(2).nullish(),top_p:I().min(0).max(1).nullish(),max_tokens:n.z.number().int().min(1).max(1e6).nullish(),max_completion_tokens:n.z.number().int().min(1).max(1e6).nullish(),stop:i.z.union([o.z.string().max(200),l.z.array(o.z.string().max(200)).max(4)]).nullish(),n:m.z.literal(1).nullish(),presence_penalty:I().min(-2).max(2).nullish(),frequency_penalty:I().min(-2).max(2).nullish(),seed:n.z.number().int().nullish(),response_format:s.z.looseObject({type:o.z.string().max(40)}).nullish(),tools:l.z.array(s.z.looseObject({})).max(128).nullish(),tool_choice:i.z.union([o.z.string().max(40),s.z.looseObject({})]).nullish(),user:o.z.string().max(256).nullish()});let A=e=>"number"==typeof e&&Number.isFinite(e)&&e>=0?Math.round(e):null;function S(e,t=[]){return(0,x.h)(e,t).catch(e=>{console.error("ai usage not recorded:",e instanceof Error?e.name:"unknown")})}function j(e){try{(0,a.after)(e)}catch{e()}}class z extends Error{type;status;constructor(e,t,a){super(t),this.type=e,this.status=a,this.name="GatewayError"}}async function P(e){if(e){let t=await (0,k.p)(e,null);if("provider_not_connected"===t)throw new z(t,"No AI provider is connected. Connect one under AI Gateway › Bring your own key.",503);if("model_not_enabled"===t)throw new z(t,`Model "${e.slice(0,120)}" isn't enabled.`,400);return t}let[t,a]=await Promise.all([(0,k.J)(),(0,k.A)()]);if(a){let e=(0,v.O)(t,a,null);if("string"!=typeof e)return{conn:e.conn,upstream:e.model.upstream,publicId:e.publicId}}let n=(0,v.H)(t);if(!n)throw new z("provider_not_connected","No AI provider is connected. Connect one under AI Gateway › Bring your own key.",503);let s=(0,v.r)(n.models.filter(e=>e.enabled&&(0,v.W)(e,n.kind)));if(!s)throw new z("model_not_enabled",`No model is turned on for ${n.name}. Turn one on under Models.`,400);return{conn:n,upstream:s.upstream,publicId:(0,v.q)(n,s)}}async function C(e,t,a){var n;let s,r=Date.now(),{conn:i,upstream:o,publicId:l}=e,u={...x.q,userAgent:`Watchbell console (${a.purpose})`},d={at:new Date(r),keyId:null,client:u,providerId:i.id,model:l,kind:"console",tool:null,stream:!1},c={model:o,messages:t,max_tokens:Math.min(Math.max(a.maxTokens??1024,1),8192),...void 0!==a.temperature?{temperature:a.temperature}:{}};try{s=a.timeoutMs?await (0,g.a)(i,c,new AbortController().signal,a.timeoutMs):await (0,g.a)(i,c,new AbortController().signal)}catch(t){let e=t instanceof g.r?t.info:{type:"upstream_error",errorClass:"network",status:502};throw j(()=>S({...d,latencyMs:Date.now()-r,status:e.status,errorClass:`${e.type} \xb7 ${e.errorClass}`,tokensIn:null,tokensOut:null})),new z(e.type,t instanceof g.r?t.message:(0,g.P)("network",0,i.name),e.status)}if(!s.ok){let e=await s.text().catch(()=>""),t=(0,g.w)(s.status,e);throw j(()=>S({...d,latencyMs:Date.now()-r,status:t.status,errorClass:`${t.type} \xb7 ${t.errorClass}`,tokensIn:null,tokensOut:null},(0,g.b)(i,o,s.headers,new Date))),new z(t.type,(0,g.P)(t.errorClass,s.status,i.name),t.status)}let p=await s.json().catch(()=>null),m=p?.choices?.[0]?.message?.content,h="string"==typeof m?m:Array.isArray(m)?m.map(e=>e&&"object"==typeof e&&"text"in e?String(e.text):"").join(""):"",f=((n=p?.usage)&&"object"==typeof n?{in:A(n.prompt_tokens),out:A(n.completion_tokens)}:null)??{in:null,out:null},y=Date.now()-r,w=null!==p;if(j(()=>{var e,t;let a;return S({...d,latencyMs:y,status:w?200:502,errorClass:w?null:"upstream_error · bad_response",tokensIn:f.in,tokensOut:f.out},(e=s.headers,t=new Date,a=f&&(null!==f.in||null!==f.out)?(f.in??0)+(f.out??0):null,[...e?(0,g.b)(i,o,e,t):[],...(0,b.$)(i.id,i.limits,o,a,t)]))}),!w)throw new z("upstream_error",(0,g.P)("bad_response",s.status,i.name),502);return{text:h,model:l,usage:f,ms:y}}let T=new Set([429,500,502,503,504]);async function _(e){for(let t of(await (0,k.J)()).filter(t=>t.enabled&&t.id!==e)){let e=(0,v.r)(t.models.filter(e=>e.enabled&&(0,v.W)(e,t.kind)));if(e)return{conn:t,upstream:e.upstream,publicId:(0,v.q)(t,e)}}return null}async function D(e,t){if((0,f.W)())return{text:h.v,model:"demo",usage:{in:null,out:null},ms:0};let a=await P(t.model);try{return await C(a,e,t)}catch(s){if(t.model||!(s instanceof z&&T.has(s.status)))throw s;let n=await _(a.conn.id).catch(()=>null);if(!n)throw s;return console.info(`ai: ${a.conn.name} failed, trying ${n.conn.name}`),C(n,e,t)}}e.s(["X",0,D,"M",0,P],363652);var M=e.i(800717),N=e.i(93321),O=e.i(548734),L=e.i(837137),F=e.i(646324),U=e.i(245710);let E=e=>{let t=(0,U.e)(e);return`${t.day} ${t.month} ${t.year}`},B=U.x;var R=e.i(960186),J=e.i(715208),G=e.i(910697),H=e.i(72019),K=e.i(30184);let q="advisor.latest",V=c.z.object({key:o.z.string(),severity:r.z.enum(["warning","info"]),appId:o.z.string().nullable(),subject:o.z.string(),title:o.z.string(),why:o.z.string(),fix:o.z.string(),href:o.z.string()}),W=c.z.object({at:o.z.string(),items:l.z.array(V)});async function X(e){let t=(0,N.b)((0,N.u)(L.resources.kind,"app"),(0,N.u)(L.resources.monitored,!0),(0,N.M)(L.resources.goneAt)),a=await (0,K.P)(),n=await (0,H.V)(),[s,r,i,o,l]=await Promise.all([(0,O.f)().select({id:L.monitors.id,appId:L.monitors.resourceId,appName:L.resources.name,url:L.monitors.url,kind:L.monitors.kind,name:L.monitors.name,paused:L.monitors.paused,ownerPaused:L.monitors.ownerPaused,lastStatus:L.monitors.lastStatus,expectedStatus:L.monitors.expectedStatus,lastPingAt:L.monitors.lastPingAt,createdAt:L.monitors.createdAt}).from(L.monitors).innerJoin(L.resources,(0,N.u)(L.resources.id,L.monitors.resourceId)).where(t).orderBy(L.resources.name,L.monitors.url).limit(G.O.monitors),(0,O.f)().select({id:L.resources.id,name:L.resources.name,version:L.appSecurity.version}).from(L.resources).innerJoin(L.appSecurity,(0,N.u)(L.appSecurity.resourceId,L.resources.id)).where(t).orderBy(L.resources.name).limit(G.O.apps),(0,O.f)().select({id:L.resources.id,name:L.resources.name,kind:L.resources.kind,accountId:L.resources.accountId,accountLabel:L.accounts.label,state:L.snapshots.state}).from(L.resources).innerJoin(L.accounts,(0,N.u)(L.accounts.id,L.resources.accountId)).leftJoin(L.snapshots,(0,N.u)(L.snapshots.resourceId,L.resources.id)).where((0,N.b)((0,N.y)(L.resources.kind,[...R.H]),(0,N.u)(L.resources.monitored,!0),(0,N.M)(L.resources.goneAt))).orderBy(L.resources.name).limit(G.O.databases),(0,O.f)().select({appId:L.links.fromResourceId,dbId:L.links.toResourceId}).from(L.links).where((0,N.u)(L.links.kind,"uses_db")).limit(G.O.apps),(0,O.f)().select({id:L.accounts.id,provider:L.accounts.provider,label:L.accounts.label,expiresAt:L.accounts.expiresAt,scopeNote:L.accounts.scopeNote}).from(L.accounts).orderBy(L.accounts.label).limit(200)]);return{now:e,monitors:s.map(e=>({id:e.id,appId:e.appId,appName:e.appName,path:"heartbeat"===e.kind?e.url:(0,F.K)(e.url),kind:e.kind,name:e.name,paused:e.paused||e.ownerPaused,lastStatus:e.lastStatus,expectedStatus:e.expectedStatus,lastPingAt:e.lastPingAt,createdAt:e.createdAt})),eol:function(e,t){if(!t)return null;let a=t.cycles.find(e=>!e.isEol)?.latest??null,n=[];for(let s of e){let e=s.version?.split(".")[0],r=e?t.cycles.find(t=>t.name===e):void 0;r&&n.push({appId:s.id,appName:s.name,cycle:r.name,eolFrom:r.eolFrom?new Date(`${r.eolFrom}T00:00:00Z`):null,latest:a})}return n}(r,a),headers:null,dbs:i.map(e=>({id:e.id,name:e.name,provider:(0,R.Z)(e.kind),accountId:e.accountId,accountLabel:e.accountLabel,state:e.state??"unknown"})),slots:(0,J.d)(n).map(e=>({account:e.account,used:e.used,total:e.total,planUnknown:e.planUnknown})),links:o,accounts:l}}async function Z(e){let t=function(e){let t=[];for(let a of e.eol??[]){if(!a.eolFrom||a.eolFrom.getTime()-e.now.getTime()>2592e6)continue;let n=a.eolFrom.getTime()<=e.now.getTime(),s=a.latest?.split(".")[0];t.push({key:`next-eol:${a.appId}:${a.cycle}`,severity:"warning",appId:a.appId,subject:a.appName,title:`Next.js ${a.cycle} ${n?"reached":"reaches"} end of life on ${E(a.eolFrom)}`,why:`No security fixes after that date.${a.latest?` Latest is ${a.latest}.`:""}`,fix:s?`Upgrade to Next.js ${s}.`:"Upgrade Next.js.",href:"https://endoflife.date/nextjs"})}for(let a of e.monitors)!a.paused&&("heartbeat"===a.kind&&!a.lastPingAt&&e.now.getTime()-a.createdAt.getTime()>864e5&&t.push({key:`hb-silent:${a.id}`,severity:"warning",appId:a.appId,subject:a.appName,title:`${a.name??"A heartbeat"} has never pinged`,why:"It was added more than a day ago and no job has called its URL.",fix:"Add the ping to the job, or delete the monitor.",href:"/uptime"}),"http"===a.kind&&"/"===a.path&&200===a.expectedStatus&&null!==a.lastStatus&&[401,403,404].includes(a.lastStatus)&&t.push({key:`monitor-root:${a.id}:${a.lastStatus}`,severity:"info",appId:a.appId,subject:a.appName,title:`The monitor on / answers ${a.lastStatus}`,why:`A login or missing page answering ${a.lastStatus} makes the monitor look down.`,fix:`Point the monitor at a public health route, or expect ${a.lastStatus}.`,href:"/uptime"}));for(let a of e.headers??[]){if(!a.missing.length)continue;let e=[...a.missing].sort();t.push({key:`headers:${a.appId}:${e.join(",")}`,severity:"info",appId:a.appId,subject:a.appName,title:`Missing security headers: ${e.join(", ")}`,why:"Browsers use them to block clickjacking, sniffing and downgrade attacks.",fix:"Add them in next.config headers().",href:"https://developer.mozilla.org/en-US/observatory"})}for(let a of e.slots??[])a.used<a.total||t.push({key:`no-slot:${a.account}`,severity:"warning",appId:null,subject:`supabase \xb7 ${a.account}`,title:`Account ${a.account} has no free slot`,why:a.planUnknown?"Two projects are active. If this account is on the free plan (it couldn't be read), a paused one can't be restored here.":"Both free projects are active, so a paused one can't be restored here.",fix:"Pause one project, or move one to another account.",href:"/supabase"});if(e.dbs&&e.links){let a=new Set(e.links.map(e=>e.dbId));for(let n of e.dbs.filter(e=>!a.has(e.id)))t.push({key:`db-unlinked:${n.id}`,severity:"info",appId:null,subject:n.name,title:"Database isn't linked to any app",why:"Topology and the app status can't use it.",fix:"Link it from the app page.",href:"/apps"})}for(let a of e.accounts)"supabase"===a.provider&&a.scopeNote&&/all[- ]access/i.test(a.scopeNote)&&t.push({key:`broad-cred:${a.id}`,severity:"info",appId:null,subject:`supabase \xb7 ${a.label}`,title:`${a.label} uses an all-access token`,why:"The console only reads; a broader token is a bigger risk if it ever leaks.",fix:"Replace it with a read-only token in Connections, then revoke the old one in Supabase.",href:"/connections"});for(let a of e.accounts){if(!a.expiresAt)continue;let n=a.expiresAt.getTime()-e.now.getTime();n>=12096e5&&n<=5184e6&&t.push({key:`cred-60:${a.id}:${B(a.expiresAt)}`,severity:"info",appId:null,subject:`${a.provider} \xb7 ${a.label}`,title:`The ${a.provider} credential ${a.label} expires on ${(0,U.L)(a.expiresAt)}`,why:"An expired credential stops every reading from that account.",fix:"Create a new one and use Replace credential in Connections.",href:"/connections"})}return t.map((e,t)=>({r:e,i:t})).sort((e,t)=>("warning"!==e.r.severity)-("warning"!==t.r.severity)||e.i-t.i).map(({r:e})=>e).slice(0,50)}(await X(e)),a={at:e.toISOString(),items:t};return await (0,O.f)().insert(L.settings).values({key:q,value:a}).onConflictDoUpdate({target:L.settings.key,set:{value:a,updatedAt:e}}),t}async function Y(e){let[t]=await (0,O.f)().select({value:L.settings.value}).from(L.settings).where((0,N.u)(L.settings.key,q)).limit(1),a=W.safeParse(t?.value);return a.success?a.data.items:Z(e)}async function Q(e,t){var a;let n=await Y(e);if(!n.length)return[];let s=await (0,O.f)().select({key:L.recommendationDismissals.key,dismissedAt:L.recommendationDismissals.dismissedAt}).from(L.recommendationDismissals).where((0,N.y)(L.recommendationDismissals.key,n.map(e=>e.key))).limit(50),r=(a=new Map(s.map(e=>[e.key,e.dismissedAt])),n.filter(t=>{let n=a.get(t.key);return!n||e.getTime()-n.getTime()>=2592e6}));return t?r.filter(e=>e.appId===t):r}async function ee(e,t,a){if("string"!=typeof e||0===e.length||e.length>200)return{ok:!1,error:"Something in that request wasn't valid."};let n=(await Y(a)).find(t=>t.key===e);return n?(await (0,O.f)().insert(L.recommendationDismissals).values({key:e,dismissedAt:a,dismissedBy:t}).onConflictDoUpdate({target:L.recommendationDismissals.key,set:{dismissedAt:a,dismissedBy:t}}),{ok:!0,title:n.title,appId:n.appId}):{ok:!1,error:"That item is no longer on the list."}}e.s(["$",0,ee,"T",0,Q],875016);var et=e.i(455317),ea=e.i(840784),en=e.i(532620);e.i(264906),e.i(292321);var es=e.i(895176),er=e.i(556987),ei=e.i(469762),eo=e.i(505237),el=e.i(968715),eu=e.i(201516);let ed=e=>"heartbeat"===e.kind?e.lastError?e.lastError.replace(/^(Down|Late) · /,""):"warn"===e.state?"Late":"No ping":(0,eu.H)(e)??(e.lastStatus?`HTTP ${e.lastStatus}`:e.lastError||"No answer");function ec(e,t){if(e.gone)return[];let a=[],n=e.monitors.filter(e=>(0,eu.i)(e)&&!e.maintUntil&&("err"===e.state||"warn"===e.state)),s=e=>2*("heartbeat"===e.kind)+ +("err"!==e.state);for(let e of[...n].sort((e,t)=>s(e)-s(t))){let t="heartbeat"===e.kind,n=t?e.name??e.path:e.path;a.push({kind:"monitor",where:t?`Monitor ${n} (heartbeat)`:`Monitor ${n}`,subject:n,state:e.state,reason:ed(e),since:e.stateSince??(t?e.lastPingAt??null:null),href:"/uptime",remedies:t?function(e){let t=(e.lastError??"").toLowerCase();return t.includes("failure")?["The job reported a failure: open its logs","Fix and re-run the job; the next OK ping clears it"]:t.includes("didn't finish")||t.includes("started")?["The job started but never finished: it may have hung or hit its timeout","Check the job's own logs for where it stopped","Raise the job's timeout, or fix what it waits on; the next OK ping clears it"]:["Check that the job's scheduler ran (cron, Vercel Cron, GitHub Actions)","Check the job's own logs for errors before the ping line","Make sure the job calls the ping URL at the end (curl -fsS -m 10 <url>)","If the job is retired, pause or delete the heartbeat"]}(e):function(e){let t=e.lastError??"";if(/blocked address/i.test(t))return["The monitor's URL resolves to a private address; fix the URL in Edit monitor"];let a=(0,eu.H)(e);if(a&&/keyword|json|body|content/i.test(a))return["The page answered but its content changed: check the keyword or JSON path in Edit monitor, or the page itself"];let n=e.lastStatus;return null!==n&&n>=500?["Open Logs (last hour) for errors","Check the latest deployment; roll back if it started after the deploy"]:null!==n&&n>=300?["Check the expected status and path in Edit monitor","The route may need sign-in or moved"]:null===n||a?["Check the domain, DNS and the provider status page","Cold start or overload: retry with Check now"]:["Open Logs (last hour) for errors","Check the latest deployment; roll back if it started after the deploy"]}(e)})}e.dbPaused&&e.database&&a.push({kind:"database",where:`Database ${e.database.name}`,subject:e.database.name,state:"warn",reason:"Paused",since:e.stateSince??null,href:(0,R.N)(e.database.kind),remedies:["Restore the database from its provider (Supabase restore)"]});let r=e.lastDeploy;if(r&&"error"===r.state){let e=(0,ei._)(r.commitSha);a.push({kind:"deployment",where:`Production deployment ${e}`,subject:e,state:"fail",reason:"Build failed",since:r.readyAt??r.createdAt,href:"/deployments",remedies:["Open the deployment's build logs; redeploy after fixing"]})}return a}e.s(["f",0,ec],240387);var ep=e.i(425238);let em=["apps","monitors","alerts","advisor"],eh=e=>null===e?null:Math.round(100*e)/100,ef=(0,M.cache)(()=>(0,en.e)()),ey=(0,M.cache)(e=>(0,ea.G)(new Date(e))),ew=(0,M.cache)(e=>(0,es.d)(new Date(e))),eb=(0,M.cache)(()=>(0,et.i)()),eg=(0,M.cache)(e=>Q(new Date(e))),ek={ok:"running",warn:"degraded",err:"down",build:"building",paused:"paused",maint:"paused"},ev={ok:"up",warn:"degraded",err:"down"},ex=(e,t,a)=>{let n=(0,eo.k)(e),s=ec({...e,database:e.database?{id:e.database.id,kind:e.database.kind,name:(0,er.X)(t,e.database.id)}:null},a);return{id:e.name,state:ek[n.state]??"unknown",uptime30d:eh(e.uptime30),database:e.database?(0,er.X)(t,e.database.id):null,lastDeploy:e.lastDeploy?`${(0,ei._)(e.lastDeploy.commitSha)} \xb7 ${(0,ei.$)(e.lastDeploy,a)}`:null,problems:s.map(e=>({kind:e.kind,where:(0,ep.F)(e.where,t),what:(0,ep.F)(e.reason,t),fix:e.remedies.length?(0,ep.F)(e.remedies.join("; "),t):null}))}},eI=e=>e.paused||e.ownerPaused?"paused":ev[e.state]??"unknown",e$=(0,M.cache)(async e=>{let t=new Date(e),[a,n]=await Promise.all([ey(e),ef()]);return a.filter(e=>!e.gone).map(e=>ex(e,n,t))}),eA=(0,M.cache)(async e=>{let[t,a]=await Promise.all([ew(e),ef()]),n=t.filter(e=>!e.appGone).map(e=>({app:e.appName,path:(0,ep.F)(e.path,a),kind:e.kind,state:eI(e),lastStatus:e.lastStatus,latencyMs:e.lastLatencyMs,uptime30d:eh(e.uptime30),lastCheckedAt:e.lastCheckedAt?.toISOString()??null})),s=e=>n.filter(t=>t.state===e).length;return{up:s("up"),degraded:s("degraded"),down:s("down"),paused:s("paused"),items:n.filter(e=>"up"!==e.state)}}),eS=(0,M.cache)(async()=>{let[e,t]=await Promise.all([eb(),ef()]),a=e.slice(0,50).map(e=>{let a=(0,er.o)(e,t);return{title:(0,ep.F)(a.title,t),severity:e.severity,app:"app"===e.resourceKind?e.resourceName:null,since:e.startedAt.toISOString(),message:(0,ep.F)(a.message,t)}});return{open:e.length,critical:e.filter(e=>"critical"===e.severity).length,items:a}}),ej=(0,M.cache)(async e=>{let[t,a,n]=await Promise.all([eg(e),ey(e),ef()]),s=new Map(a.map(e=>[e.id,e.name]));return t.map(e=>{let t=(0,er.d)(e,n);return{title:(0,ep.F)(t.title,n),app:e.appId&&s.get(e.appId)||"console",severity:e.severity}})}),ez=e=>ej(e.getTime());async function eP(e,t=em){let a=new Set(t),[n,s,r,i]=await Promise.all([a.has("apps")?e$(e.getTime()):Promise.resolve([]),a.has("monitors")?eA(e.getTime()):Promise.resolve({up:0,degraded:0,down:0,paused:0}),a.has("alerts")?eS():Promise.resolve({open:0,critical:0}),a.has("advisor")?ez(e):Promise.resolve(void 0)]);return{generatedAt:e.toISOString(),apps:n,monitors:s,alerts:r,...i?{advisor:i}:{}}}async function eC(e,t){let a=e.trim().toLowerCase();return a?(await ey(t.getTime())).find(e=>!e.gone&&(e.id.toLowerCase()===a||e.name.toLowerCase()===a))??null:null}async function eT(e,t){let[a,n]=await Promise.all([eC(e,t),ef()]);return a?{...ex(a,n,t),monitors:a.monitors.map(e=>({path:(0,ep.F)(e.path,n),kind:e.kind,state:eI(e),lastStatus:e.lastStatus,latencyMs:e.lastLatencyMs,uptime30d:eh((0,el.Y)((0,el.w)(a.days.get(e.id),t,el.I)))}))}:null}e.s(["w",0,eT,"V",0,eP,"y",0,ez],501634)}];
1
+ module.exports=[363652,875016,240387,501634,e=>{"use strict";let t;var a=e.i(843405),r=e.i(811365),n=e.i(732084),s=e.i(149310),i=e.i(827857),o=e.i(427221),l=e.i(689963),u=e.i(191179),d=e.i(954757),d=d,c=e.i(26972),p=e.i(83931),m=e.i(899370),h=e.i(19809),f=e.i(371289);e.i(666680);var y=e.i(50519);e.i(312573),e.i(771262),e.i(344934),e.i(729015);let b={max:30,windowMs:6e5};globalThis.__watchbellKeyFailures??={...t={limit:(0,y.d)(b),seen:(0,y.V)({ttlMs:b.windowMs,maxKeys:5e4}),failed:(0,y.V)({ttlMs:6e4})},reset:()=>{t.limit.reset(),t.seen.reset(),t.failed.reset()}};var w=e.i(213935),k=e.i(337830);let g="Bring your own key (/ai/providers)";function v(e,t){if(e.length<=t)return e;let a="";for(let r of e){if(a.length+r.length>t-1)break;a+=r}return`${a.trimEnd()}…`}let $=e=>e.replace(/\s+/g," ").trim(),x=(e,t)=>v($(e.provider)||"unnamed",t);function I(e){var t;return"network"===e.errorClass||"timeout"===e.errorClass||502===(t=e.status)||503===t||504===t||t>=520&&t<=530?"unreachable":"auth_rejected"===e.errorClass||"project_denied"===e.errorClass||"project_restricted"===e.errorClass||401===e.status||403===e.status?"auth":"rate_limited"===e.errorClass||429===e.status?"rate_limited":"bad_response"===e.errorClass?"unreadable":e.status>=500?"server":"other"}function A(e){let t=I(e);return"unreachable"===t||"rate_limited"===t||"server"===t||"unreadable"===t}let j={en:{unreachable:e=>`AI provider "${e}" is unreachable (its endpoint or tunnel is down).`,auth:(e,t)=>`AI provider "${e}" refused the key${t?` (${t})`:""}.`,replaceKey:`Replace it on ${g}.`,rate_limited:e=>`AI provider "${e}" is rate limited (429): its quota is used up.`,server:(e,t)=>`AI provider "${e}" failed with a server error (${t}).`,unreadable:e=>`AI provider "${e}" sent an answer Watchbell can't read.`,other:(e,t)=>`AI provider "${e}" answered ${t}.`,tried:(e,t)=>`Tried "${e}" instead, and that failed too (${t}).`,none:e=>`No other provider is enabled: add one on ${g}, or ${e?"try again later":"check the endpoint"}.`,pinned:()=>"This model was picked by name, so no other provider was tried.",outOfTime:"There was no time left to try another provider.",why:{unreachable:()=>"unreachable",auth:e=>`key refused${e?`, ${e}`:""}`,rate_limited:()=>"rate limited, 429",server:e=>`server error ${e}`,unreadable:()=>"unreadable answer",other:e=>`answered ${e}`}},id:{unreachable:e=>`Penyedia AI "${e}" tak bisa dihubungi (endpoint atau tunnel-nya mati).`,auth:(e,t)=>`Penyedia AI "${e}" menolak kuncinya${t?` (${t})`:""}.`,replaceKey:`Ganti kuncinya di ${g}.`,rate_limited:e=>`Penyedia AI "${e}" kena batas pemakaian (429): kuotanya habis.`,server:(e,t)=>`Penyedia AI "${e}" gagal karena error di servernya (${t}).`,unreadable:e=>`Penyedia AI "${e}" mengirim jawaban yang tidak bisa dibaca Watchbell.`,other:(e,t)=>`Penyedia AI "${e}" menjawab ${t}.`,tried:(e,t)=>`Sudah dicoba "${e}" sebagai gantinya, tapi juga gagal (${t}).`,none:e=>`Tak ada penyedia lain yang aktif: tambah di ${g}, atau ${e?"coba lagi nanti":"cek endpoint-nya"}.`,pinned:()=>"Model ini dipilih langsung, jadi penyedia lain tidak dicoba.",outOfTime:"Tidak ada waktu tersisa untuk mencoba penyedia lain.",why:{unreachable:()=>"tidak bisa dihubungi",auth:e=>`kunci ditolak${e?`, ${e}`:""}`,rate_limited:()=>"kena batas pemakaian, 429",server:e=>`error server ${e}`,unreadable:()=>"jawabannya tidak terbaca",other:e=>`menjawab ${e}`}}},S=e=>e.detail?v($(e.detail),160):"";function _(e,t,a="en"){let r=r=>{let n=function(e,t,a){let r=j[t],n=x(e,a);switch(I(e)){case"unreachable":return r.unreachable(n);case"auth":{let t="project_denied"===e.errorClass||"project_restricted"===e.errorClass?S(e):"";return`${r.auth(n,e.status)} ${t||r.replaceKey}`}case"rate_limited":return r.rate_limited(n);case"server":return r.server(n,e.status);case"unreadable":return r.unreadable(n);default:return S(e)||r.other(n,e.status)}}(e,a,r);return A(e)?`${n} ${function(e,t,a,r){let n=j[a],s="rate_limited"===I(t);switch(e.kind){case"tried":{let t=e.fallback;return n.tried(x(t,r),n.why[I(t)](t.status))}case"none":return n.none(s);case"pinned":return n.pinned();default:return n.outOfTime}}(t,e,a,r)}`:n};for(let e=60;e>8;e--){let t=r(e);if(t.length<=200)return t}return v(r(8),200)}var C=e.i(711672),z=e.i(208683),T=e.i(61017);let P=()=>r.z.number().finite(),M=n.z.looseObject({role:s.z.enum(["system","developer","user","assistant","tool","function"]),content:i.z.union([o.z.string(),l.z.array(u.z.unknown()),d.null()]).optional()});c.z.object({model:o.z.string().trim().min(1).max(200),messages:l.z.array(M).min(1).max(100),stream:p.z.boolean().nullish(),stream_options:n.z.looseObject({}).nullish(),temperature:P().min(0).max(2).nullish(),top_p:P().min(0).max(1).nullish(),max_tokens:r.z.number().int().min(1).max(1e6).nullish(),max_completion_tokens:r.z.number().int().min(1).max(1e6).nullish(),stop:i.z.union([o.z.string().max(200),l.z.array(o.z.string().max(200)).max(4)]).nullish(),n:m.z.literal(1).nullish(),presence_penalty:P().min(-2).max(2).nullish(),frequency_penalty:P().min(-2).max(2).nullish(),seed:r.z.number().int().nullish(),response_format:n.z.looseObject({type:o.z.string().max(40)}).nullish(),tools:l.z.array(n.z.looseObject({})).max(128).nullish(),tool_choice:i.z.union([o.z.string().max(40),n.z.looseObject({})]).nullish(),user:o.z.string().max(256).nullish()});let D=e=>"number"==typeof e&&Number.isFinite(e)&&e>=0?Math.round(e):null;function N(e,t=[]){return(0,T.h)(e,t).catch(e=>{console.error("ai usage not recorded:",e instanceof Error?e.name:"unknown")})}function O(e){try{(0,a.after)(e)}catch{e()}}class L extends Error{type;status;failure;constructor(e,t,a,r){super(t),this.type=e,this.status=a,this.failure=r,this.name="GatewayError"}}async function F(e){if(e){let t=await (0,C.p)(e,null);if("provider_not_connected"===t)throw new L(t,"No AI provider is connected. Connect one under AI Gateway › Bring your own key.",503);if("model_not_enabled"===t)throw new L(t,`Model "${e.slice(0,120)}" isn't enabled.`,400);return t}let[t,a]=await Promise.all([(0,C.J)(),(0,C.A)()]);if(a){let e=(0,z.O)(t,a,null);if("string"!=typeof e)return{conn:e.conn,upstream:e.model.upstream,publicId:e.publicId}}let r=(0,z.H)(t);if(!r)throw new L("provider_not_connected","No AI provider is connected. Connect one under AI Gateway › Bring your own key.",503);let n=(0,z.r)(r.models.filter(e=>e.enabled&&(0,z.W)(e,r.kind)));if(!n)throw new L("model_not_enabled",`No model is turned on for ${r.name}. Turn one on under Models.`,400);return{conn:r,upstream:n.upstream,publicId:(0,z.q)(r,n)}}async function E(e,t,a,r=a.timeoutMs){var n;let s,i=Date.now(),{conn:o,upstream:l,publicId:u}=e,d={...T.q,userAgent:`Watchbell console (${a.purpose})`},c={at:new Date(i),keyId:null,client:d,providerId:o.id,model:u,kind:"console",tool:null,stream:!1},p={model:l,messages:t,max_tokens:Math.min(Math.max(a.maxTokens??1024,1),8192),...void 0!==a.temperature?{temperature:a.temperature}:{}},m=(e,t,a)=>{let r={provider:o.name,...a};return new L(e,_(r,{kind:"none"}),t,{first:r,next:{kind:"none"}})};try{s=r?await (0,k.a)(o,p,new AbortController().signal,r):await (0,k.a)(o,p,new AbortController().signal)}catch(t){let e=t instanceof k.r?t.info:{type:"upstream_error",errorClass:"network",status:502};throw O(()=>N({...c,latencyMs:Date.now()-i,status:e.status,errorClass:`${e.type} \xb7 ${e.errorClass}`,tokensIn:null,tokensOut:null})),m(e.type,e.status,{status:0,errorClass:e.errorClass,detail:t instanceof k.r?t.message:(0,k.P)("network",0,o.name)})}if(!s.ok){let e=await s.text().catch(()=>""),t=(0,k.w)(s.status,e);throw O(()=>N({...c,latencyMs:Date.now()-i,status:t.status,errorClass:`${t.type} \xb7 ${t.errorClass}`,tokensIn:null,tokensOut:null},(0,k.b)(o,l,s.headers,new Date))),m(t.type,t.status,{status:s.status,errorClass:t.errorClass,detail:(0,k.P)(t.errorClass,s.status,o.name)})}let h=await s.json().catch(()=>null),f=h?.choices?.[0]?.message?.content,y="string"==typeof f?f:Array.isArray(f)?f.map(e=>e&&"object"==typeof e&&"text"in e?String(e.text):"").join(""):"",b=((n=h?.usage)&&"object"==typeof n?{in:D(n.prompt_tokens),out:D(n.completion_tokens)}:null)??{in:null,out:null},g=Date.now()-i,v=null!==h;if(O(()=>{var e,t;let a;return N({...c,latencyMs:g,status:v?200:502,errorClass:v?null:"upstream_error · bad_response",tokensIn:b.in,tokensOut:b.out},(e=s.headers,t=new Date,a=b&&(null!==b.in||null!==b.out)?(b.in??0)+(b.out??0):null,[...e?(0,k.b)(o,l,e,t):[],...(0,w.$)(o.id,o.limits,l,a,t)]))}),!v)throw m("upstream_error",502,{status:s.status,errorClass:"bad_response",detail:(0,k.P)("bad_response",s.status,o.name)});return{text:y,model:u,usage:b,ms:g}}let U=new Set([429,500,502,503,504]),B=2/3;async function R(e){for(let t of(await (0,C.J)()).filter(t=>t.enabled&&t.id!==e)){let e=(0,z.r)(t.models.filter(e=>e.enabled&&(0,z.W)(e,t.kind)));if(e)return{conn:t,upstream:e.upstream,publicId:(0,z.q)(t,e)}}return null}function K(e,t){return e instanceof L&&e.failure?new L(e.type,_(e.failure.first,t),e.status,{first:e.failure.first,next:t}):e}async function G(e,t){let a;if((0,f.W)())return{text:h.v,model:"demo",usage:{in:null,out:null},ms:0};let r=Date.now(),n=await F(t.model),s=!t.model||!0===t.fallback,i=async()=>void 0===a?a=await R(n.conn.id).catch(()=>null):a,o=t.timeoutMs;if(t.timeoutMs&&s){let e=Math.floor(t.timeoutMs*(1-B));e>=3e3&&await i()&&(o=t.timeoutMs-e)}try{return await E(n,e,t,o)}catch(l){if(!(l instanceof L&&(l.failure?A(l.failure.first):U.has(l.status))))throw l;if(!s)throw K(l,{kind:"pinned"});let a=await i();if(!a)throw K(l,{kind:"none"});let o=t.timeoutMs?t.timeoutMs-(Date.now()-r):void 0;if(void 0!==o&&o<3e3)throw K(l,{kind:"out-of-time"});console.info(`ai: ${n.conn.name} failed, trying ${a.conn.name}`);try{return await E(a,e,t,o)}catch(t){let e=t instanceof L?t.failure?.first:void 0;throw e?K(l,{kind:"tried",fallback:e}):t}}}e.s(["X",0,G,"M",0,F],363652);var J=e.i(800717),q=e.i(93321),H=e.i(548734),W=e.i(837137),V=e.i(646324),X=e.i(245710);let Z=e=>{let t=(0,X.e)(e);return`${t.day} ${t.month} ${t.year}`},Y=X.x;var Q=e.i(960186),ee=e.i(715208),et=e.i(910697),ea=e.i(72019),er=e.i(30184);let en="advisor.latest",es=c.z.object({key:o.z.string(),severity:s.z.enum(["warning","info"]),appId:o.z.string().nullable(),subject:o.z.string(),title:o.z.string(),why:o.z.string(),fix:o.z.string(),href:o.z.string()}),ei=c.z.object({at:o.z.string(),items:l.z.array(es)});async function eo(e){let t=(0,q.b)((0,q.u)(W.resources.kind,"app"),(0,q.u)(W.resources.monitored,!0),(0,q.M)(W.resources.goneAt)),a=await (0,er.P)(),r=await (0,ea.V)(),[n,s,i,o,l]=await Promise.all([(0,H.f)().select({id:W.monitors.id,appId:W.monitors.resourceId,appName:W.resources.name,url:W.monitors.url,kind:W.monitors.kind,name:W.monitors.name,paused:W.monitors.paused,ownerPaused:W.monitors.ownerPaused,lastStatus:W.monitors.lastStatus,expectedStatus:W.monitors.expectedStatus,lastPingAt:W.monitors.lastPingAt,createdAt:W.monitors.createdAt}).from(W.monitors).innerJoin(W.resources,(0,q.u)(W.resources.id,W.monitors.resourceId)).where(t).orderBy(W.resources.name,W.monitors.url).limit(et.O.monitors),(0,H.f)().select({id:W.resources.id,name:W.resources.name,version:W.appSecurity.version}).from(W.resources).innerJoin(W.appSecurity,(0,q.u)(W.appSecurity.resourceId,W.resources.id)).where(t).orderBy(W.resources.name).limit(et.O.apps),(0,H.f)().select({id:W.resources.id,name:W.resources.name,kind:W.resources.kind,accountId:W.resources.accountId,accountLabel:W.accounts.label,state:W.snapshots.state}).from(W.resources).innerJoin(W.accounts,(0,q.u)(W.accounts.id,W.resources.accountId)).leftJoin(W.snapshots,(0,q.u)(W.snapshots.resourceId,W.resources.id)).where((0,q.b)((0,q.y)(W.resources.kind,[...Q.H]),(0,q.u)(W.resources.monitored,!0),(0,q.M)(W.resources.goneAt))).orderBy(W.resources.name).limit(et.O.databases),(0,H.f)().select({appId:W.links.fromResourceId,dbId:W.links.toResourceId}).from(W.links).where((0,q.u)(W.links.kind,"uses_db")).limit(et.O.apps),(0,H.f)().select({id:W.accounts.id,provider:W.accounts.provider,label:W.accounts.label,expiresAt:W.accounts.expiresAt,scopeNote:W.accounts.scopeNote}).from(W.accounts).orderBy(W.accounts.label).limit(200)]);return{now:e,monitors:n.map(e=>({id:e.id,appId:e.appId,appName:e.appName,path:"heartbeat"===e.kind?e.url:(0,V.K)(e.url),kind:e.kind,name:e.name,paused:e.paused||e.ownerPaused,lastStatus:e.lastStatus,expectedStatus:e.expectedStatus,lastPingAt:e.lastPingAt,createdAt:e.createdAt})),eol:function(e,t){if(!t)return null;let a=t.cycles.find(e=>!e.isEol)?.latest??null,r=[];for(let n of e){let e=n.version?.split(".")[0],s=e?t.cycles.find(t=>t.name===e):void 0;s&&r.push({appId:n.id,appName:n.name,cycle:s.name,eolFrom:s.eolFrom?new Date(`${s.eolFrom}T00:00:00Z`):null,latest:a})}return r}(s,a),headers:null,dbs:i.map(e=>({id:e.id,name:e.name,provider:(0,Q.Z)(e.kind),accountId:e.accountId,accountLabel:e.accountLabel,state:e.state??"unknown"})),slots:(0,ee.d)(r).map(e=>({account:e.account,used:e.used,total:e.total,planUnknown:e.planUnknown})),links:o,accounts:l}}async function el(e){let t=function(e){let t=[];for(let a of e.eol??[]){if(!a.eolFrom||a.eolFrom.getTime()-e.now.getTime()>2592e6)continue;let r=a.eolFrom.getTime()<=e.now.getTime(),n=a.latest?.split(".")[0];t.push({key:`next-eol:${a.appId}:${a.cycle}`,severity:"warning",appId:a.appId,subject:a.appName,title:`Next.js ${a.cycle} ${r?"reached":"reaches"} end of life on ${Z(a.eolFrom)}`,why:`No security fixes after that date.${a.latest?` Latest is ${a.latest}.`:""}`,fix:n?`Upgrade to Next.js ${n}.`:"Upgrade Next.js.",href:"https://endoflife.date/nextjs"})}for(let a of e.monitors)!a.paused&&("heartbeat"===a.kind&&!a.lastPingAt&&e.now.getTime()-a.createdAt.getTime()>864e5&&t.push({key:`hb-silent:${a.id}`,severity:"warning",appId:a.appId,subject:a.appName,title:`${a.name??"A heartbeat"} has never pinged`,why:"It was added more than a day ago and no job has called its URL.",fix:"Add the ping to the job, or delete the monitor.",href:"/uptime"}),"http"===a.kind&&"/"===a.path&&200===a.expectedStatus&&null!==a.lastStatus&&[401,403,404].includes(a.lastStatus)&&t.push({key:`monitor-root:${a.id}:${a.lastStatus}`,severity:"info",appId:a.appId,subject:a.appName,title:`The monitor on / answers ${a.lastStatus}`,why:`A login or missing page answering ${a.lastStatus} makes the monitor look down.`,fix:`Point the monitor at a public health route, or expect ${a.lastStatus}.`,href:"/uptime"}));for(let a of e.headers??[]){if(!a.missing.length)continue;let e=[...a.missing].sort();t.push({key:`headers:${a.appId}:${e.join(",")}`,severity:"info",appId:a.appId,subject:a.appName,title:`Missing security headers: ${e.join(", ")}`,why:"Browsers use them to block clickjacking, sniffing and downgrade attacks.",fix:"Add them in next.config headers().",href:"https://developer.mozilla.org/en-US/observatory"})}for(let a of e.slots??[])a.used<a.total||t.push({key:`no-slot:${a.account}`,severity:"warning",appId:null,subject:`supabase \xb7 ${a.account}`,title:`Account ${a.account} has no free slot`,why:a.planUnknown?"Two projects are active. If this account is on the free plan (it couldn't be read), a paused one can't be restored here.":"Both free projects are active, so a paused one can't be restored here.",fix:"Pause one project, or move one to another account.",href:"/supabase"});if(e.dbs&&e.links){let a=new Set(e.links.map(e=>e.dbId));for(let r of e.dbs.filter(e=>!a.has(e.id)))t.push({key:`db-unlinked:${r.id}`,severity:"info",appId:null,subject:r.name,title:"Database isn't linked to any app",why:"Topology and the app status can't use it.",fix:"Link it from the app page.",href:"/apps"})}for(let a of e.accounts)"supabase"===a.provider&&a.scopeNote&&/all[- ]access/i.test(a.scopeNote)&&t.push({key:`broad-cred:${a.id}`,severity:"info",appId:null,subject:`supabase \xb7 ${a.label}`,title:`${a.label} uses an all-access token`,why:"The console only reads; a broader token is a bigger risk if it ever leaks.",fix:"Replace it with a read-only token in Connections, then revoke the old one in Supabase.",href:"/connections"});for(let a of e.accounts){if(!a.expiresAt)continue;let r=a.expiresAt.getTime()-e.now.getTime();r>=12096e5&&r<=5184e6&&t.push({key:`cred-60:${a.id}:${Y(a.expiresAt)}`,severity:"info",appId:null,subject:`${a.provider} \xb7 ${a.label}`,title:`The ${a.provider} credential ${a.label} expires on ${(0,X.L)(a.expiresAt)}`,why:"An expired credential stops every reading from that account.",fix:"Create a new one and use Replace credential in Connections.",href:"/connections"})}return t.map((e,t)=>({r:e,i:t})).sort((e,t)=>("warning"!==e.r.severity)-("warning"!==t.r.severity)||e.i-t.i).map(({r:e})=>e).slice(0,50)}(await eo(e)),a={at:e.toISOString(),items:t};return await (0,H.f)().insert(W.settings).values({key:en,value:a}).onConflictDoUpdate({target:W.settings.key,set:{value:a,updatedAt:e}}),t}async function eu(e){let[t]=await (0,H.f)().select({value:W.settings.value}).from(W.settings).where((0,q.u)(W.settings.key,en)).limit(1),a=ei.safeParse(t?.value);return a.success?a.data.items:el(e)}async function ed(e,t){var a;let r=await eu(e);if(!r.length)return[];let n=await (0,H.f)().select({key:W.recommendationDismissals.key,dismissedAt:W.recommendationDismissals.dismissedAt}).from(W.recommendationDismissals).where((0,q.y)(W.recommendationDismissals.key,r.map(e=>e.key))).limit(50),s=(a=new Map(n.map(e=>[e.key,e.dismissedAt])),r.filter(t=>{let r=a.get(t.key);return!r||e.getTime()-r.getTime()>=2592e6}));return t?s.filter(e=>e.appId===t):s}async function ec(e,t,a){if("string"!=typeof e||0===e.length||e.length>200)return{ok:!1,error:"Something in that request wasn't valid."};let r=(await eu(a)).find(t=>t.key===e);return r?(await (0,H.f)().insert(W.recommendationDismissals).values({key:e,dismissedAt:a,dismissedBy:t}).onConflictDoUpdate({target:W.recommendationDismissals.key,set:{dismissedAt:a,dismissedBy:t}}),{ok:!0,title:r.title,appId:r.appId}):{ok:!1,error:"That item is no longer on the list."}}e.s(["$",0,ec,"T",0,ed],875016);var ep=e.i(455317),em=e.i(840784),eh=e.i(532620);e.i(264906),e.i(292321);var ef=e.i(895176),ey=e.i(556987),eb=e.i(469762),ew=e.i(505237),ek=e.i(968715),eg=e.i(201516);let ev=e=>"heartbeat"===e.kind?e.lastError?e.lastError.replace(/^(Down|Late) · /,""):"warn"===e.state?"Late":"No ping":(0,eg.H)(e)??(e.lastStatus?`HTTP ${e.lastStatus}`:e.lastError||"No answer");function e$(e,t){if(e.gone)return[];let a=[],r=e.monitors.filter(e=>(0,eg.i)(e)&&!e.maintUntil&&("err"===e.state||"warn"===e.state)),n=e=>2*("heartbeat"===e.kind)+ +("err"!==e.state);for(let e of[...r].sort((e,t)=>n(e)-n(t))){let t="heartbeat"===e.kind,r=t?e.name??e.path:e.path;a.push({kind:"monitor",where:t?`Monitor ${r} (heartbeat)`:`Monitor ${r}`,subject:r,state:e.state,reason:ev(e),since:e.stateSince??(t?e.lastPingAt??null:null),href:"/uptime",remedies:t?function(e){let t=(e.lastError??"").toLowerCase();return t.includes("failure")?["The job reported a failure: open its logs","Fix and re-run the job; the next OK ping clears it"]:t.includes("didn't finish")||t.includes("started")?["The job started but never finished: it may have hung or hit its timeout","Check the job's own logs for where it stopped","Raise the job's timeout, or fix what it waits on; the next OK ping clears it"]:["Check that the job's scheduler ran (cron, Vercel Cron, GitHub Actions)","Check the job's own logs for errors before the ping line","Make sure the job calls the ping URL at the end (curl -fsS -m 10 <url>)","If the job is retired, pause or delete the heartbeat"]}(e):function(e){let t=e.lastError??"";if(/blocked address/i.test(t))return["The monitor's URL resolves to a private address; fix the URL in Edit monitor"];let a=(0,eg.H)(e);if(a&&/keyword|json|body|content/i.test(a))return["The page answered but its content changed: check the keyword or JSON path in Edit monitor, or the page itself"];let r=e.lastStatus;return null!==r&&r>=500?["Open Logs (last hour) for errors","Check the latest deployment; roll back if it started after the deploy"]:null!==r&&r>=300?["Check the expected status and path in Edit monitor","The route may need sign-in or moved"]:null===r||a?["Check the domain, DNS and the provider status page","Cold start or overload: retry with Check now"]:["Open Logs (last hour) for errors","Check the latest deployment; roll back if it started after the deploy"]}(e)})}e.dbPaused&&e.database&&a.push({kind:"database",where:`Database ${e.database.name}`,subject:e.database.name,state:"warn",reason:"Paused",since:e.stateSince??null,href:(0,Q.N)(e.database.kind),remedies:["Restore the database from its provider (Supabase restore)"]});let s=e.lastDeploy;if(s&&"error"===s.state){let e=(0,eb._)(s.commitSha);a.push({kind:"deployment",where:`Production deployment ${e}`,subject:e,state:"fail",reason:"Build failed",since:s.readyAt??s.createdAt,href:"/deployments",remedies:["Open the deployment's build logs; redeploy after fixing"]})}return a}e.s(["f",0,e$],240387);var ex=e.i(425238);let eI=["apps","monitors","alerts","advisor"],eA=e=>null===e?null:Math.round(100*e)/100,ej=(0,J.cache)(()=>(0,eh.e)()),eS=(0,J.cache)(e=>(0,em.G)(new Date(e))),e_=(0,J.cache)(e=>(0,ef.d)(new Date(e))),eC=(0,J.cache)(()=>(0,ep.i)()),ez=(0,J.cache)(e=>ed(new Date(e))),eT={ok:"running",warn:"degraded",err:"down",build:"building",paused:"paused",maint:"paused"},eP={ok:"up",warn:"degraded",err:"down"},eM=(e,t,a)=>{let r=(0,ew.k)(e),n=e$({...e,database:e.database?{id:e.database.id,kind:e.database.kind,name:(0,ey.X)(t,e.database.id)}:null},a);return{id:e.name,state:eT[r.state]??"unknown",uptime30d:eA(e.uptime30),database:e.database?(0,ey.X)(t,e.database.id):null,lastDeploy:e.lastDeploy?`${(0,eb._)(e.lastDeploy.commitSha)} \xb7 ${(0,eb.$)(e.lastDeploy,a)}`:null,problems:n.map(e=>({kind:e.kind,where:(0,ex.F)(e.where,t),what:(0,ex.F)(e.reason,t),fix:e.remedies.length?(0,ex.F)(e.remedies.join("; "),t):null}))}},eD=e=>e.paused||e.ownerPaused?"paused":eP[e.state]??"unknown",eN=(0,J.cache)(async e=>{let t=new Date(e),[a,r]=await Promise.all([eS(e),ej()]);return a.filter(e=>!e.gone).map(e=>eM(e,r,t))}),eO=(0,J.cache)(async e=>{let[t,a]=await Promise.all([e_(e),ej()]),r=t.filter(e=>!e.appGone).map(e=>({app:e.appName,path:(0,ex.F)(e.path,a),kind:e.kind,state:eD(e),lastStatus:e.lastStatus,latencyMs:e.lastLatencyMs,uptime30d:eA(e.uptime30),lastCheckedAt:e.lastCheckedAt?.toISOString()??null})),n=e=>r.filter(t=>t.state===e).length;return{up:n("up"),degraded:n("degraded"),down:n("down"),paused:n("paused"),items:r.filter(e=>"up"!==e.state)}}),eL=(0,J.cache)(async()=>{let[e,t]=await Promise.all([eC(),ej()]),a=e.slice(0,50).map(e=>{let a=(0,ey.o)(e,t);return{title:(0,ex.F)(a.title,t),severity:e.severity,app:"app"===e.resourceKind?e.resourceName:null,since:e.startedAt.toISOString(),message:(0,ex.F)(a.message,t)}});return{open:e.length,critical:e.filter(e=>"critical"===e.severity).length,items:a}}),eF=(0,J.cache)(async e=>{let[t,a,r]=await Promise.all([ez(e),eS(e),ej()]),n=new Map(a.map(e=>[e.id,e.name]));return t.map(e=>{let t=(0,ey.d)(e,r);return{title:(0,ex.F)(t.title,r),app:e.appId&&n.get(e.appId)||"console",severity:e.severity}})}),eE=e=>eF(e.getTime());async function eU(e,t=eI){let a=new Set(t),[r,n,s,i]=await Promise.all([a.has("apps")?eN(e.getTime()):Promise.resolve([]),a.has("monitors")?eO(e.getTime()):Promise.resolve({up:0,degraded:0,down:0,paused:0}),a.has("alerts")?eL():Promise.resolve({open:0,critical:0}),a.has("advisor")?eE(e):Promise.resolve(void 0)]);return{generatedAt:e.toISOString(),apps:r,monitors:n,alerts:s,...i?{advisor:i}:{}}}async function eB(e,t){let a=e.trim().toLowerCase();return a?(await eS(t.getTime())).find(e=>!e.gone&&(e.id.toLowerCase()===a||e.name.toLowerCase()===a))??null:null}async function eR(e,t){let[a,r]=await Promise.all([eB(e,t),ej()]);return a?{...eM(a,r,t),monitors:a.monitors.map(e=>({path:(0,ex.F)(e.path,r),kind:e.kind,state:eD(e),lastStatus:e.lastStatus,latencyMs:e.lastLatencyMs,uptime30d:eA((0,ek.Y)((0,ek.w)(a.days.get(e.id),t,ek.I)))}))}:null}e.s(["w",0,eR,"V",0,eU,"y",0,eE],501634)}];
2
2
 
3
3
  //# sourceMappingURL=src_private_ai_gateway_ts_04_5ao9914d0p._.js.map
@@ -1,4 +1,4 @@
1
- module.exports=[185284,e=>{"use strict";var t=e.i(89171),r=e.i(206033),n=e.i(898305),a=e.i(604147),s=e.i(140561),l=e.i(105954),o=e.i(455744),i=e.i(469755),u=e.i(562810),u=u,d=e.i(971724),c=e.i(180473),m=e.i(600205),f=e.i(313931),p=e.i(425498),h=e.i(77193),y=e.i(400687),g=e.i(579810),w=e.i(707910);let b=["gemini","cloudflare","custom"],k=["gemini","antigravity"],_=["@cf/google/gemma"],v={gemini:{name:"Google Gemini",baseUrl:()=>"https://generativelanguage.googleapis.com/v1beta/openai",secretFields:["apiKey"],modelsPath:"/models",listModels:"gemini-native",quotaFrom:"own",auth:"x-goog-api-key",streamUsage:!0,advanced:!1,keyLabel:"AI Studio API key",where:{url:"https://aistudio.google.com/apikey",text:"Create a key (it starts with AQ. or AIza). If Google says the project is restricted or denied, use a key from another Google project or account."}},cloudflare:{name:"Cloudflare Workers AI",baseUrl:e=>`https://api.cloudflare.com/client/v4/accounts/${e.accountId??""}/ai/v1`,secretFields:["accountId","apiKey"],modelsPath:"/models/search",listModels:"cloudflare-search",quotaFrom:"own",auth:"bearer",streamUsage:!0,advanced:!1,keyLabel:"API token",where:{url:"https://dash.cloudflare.com/profile/api-tokens",text:"Create a token with Workers AI: Read. The account ID is on the Workers AI page. Only Google's Gemma models are offered."}},custom:{name:"Custom OpenAI-compatible",baseUrl:e=>(e.baseUrl??"").replace(/\/+$/,""),secretFields:["baseUrl","apiKey"],modelsPath:"/models",listModels:"openai",quotaFrom:"headers",auth:"bearer",streamUsage:!0,advanced:!0,keyLabel:"API key",where:{url:null,text:"Any HTTPS server that speaks the OpenAI chat completions API and answers GET /models. Every model the server lists is offered; switch any off on Models."}}};f.Y.localUrl;class I extends Error{info;constructor(e,t){super(t),this.info=e,this.name="UpstreamError"}}function x(e,t){let r=t.slice(0,2e4);if(429===e){let e;return{type:"quota_exceeded",errorClass:"rate_limited",retryAfter:(e=/"retryDelay"\s*:\s*"(\d+(?:\.\d+)?)s"/.exec(r))?Math.max(1,Math.ceil(Number(e[1]))):null,status:429}}return 403===e&&/denied access/i.test(r)?{type:"upstream_error",errorClass:"project_denied",retryAfter:null,status:502}:403===e&&/restricted|billing/i.test(r)?{type:"upstream_error",errorClass:"project_restricted",retryAfter:null,status:502}:401===e||403===e||/API_KEY_INVALID|API key not valid|API_KEY_SERVICE_BLOCKED|ACCESS_TOKEN_TYPE_UNSUPPORTED/.test(r)?{type:"upstream_error",errorClass:"auth_rejected",retryAfter:null,status:502}:404===e?{type:"invalid_request",errorClass:"model_not_found",retryAfter:null,status:404}:400===e||413===e||422===e?{type:"invalid_request",errorClass:"bad_request",retryAfter:null,status:e}:e>=500?{type:"upstream_error",errorClass:"server_error",retryAfter:null,status:502}:{type:"upstream_error",errorClass:`http_${e}`,retryAfter:null,status:502}}function A(e,t,r){switch(e){case"project_denied":return"Google denied this project's Gemini API access. Use a key from another Google project or account.";case"project_restricted":return"This Google project's Gemini API access is restricted. Create a key in another project or enable billing.";case"auth_rejected":return`${r} rejected the API key (${t}). Replace it under Bring your own key.`;case"rate_limited":return`${r} says the rate limit or quota is used up (429). Try again later.`;case"model_not_found":return`${r} doesn't know this model (404).`;case"bad_request":return`${r} refused the request (${t}). Check the request body.`;case"server_error":return`${r} failed (${t}). Try again later.`;case"timeout":return`${r} didn't answer within 60 s.`;case"network":return`Can't reach ${r}.`;case"bad_response":return`${r} sent an answer Watchbell can't read.`;default:return`${r} answered ${t}.`}}async function $(e,t,r,n=6e4){var a,s,l,o;try{return await fetch(`${e.baseUrl}/chat/completions`,{method:"POST",headers:(a=t.stream?"text/event-stream":"application/json",{"content-type":"application/json",accept:a,...(s=e.kind,!(l=e.secret.apiKey)?{}:"x-goog-api-key"===v[s].auth?{"x-goog-api-key":l}:{Authorization:`Bearer ${l}`})}),body:JSON.stringify(t),signal:AbortSignal.any([r,AbortSignal.timeout(n)]),redirect:"error",cache:"no-store"})}catch(a){let t,n;if(r.aborted)throw a;throw o=e.name,new I({type:"upstream_error",errorClass:n=(t=a instanceof Error&&("TimeoutError"===a.name||"AbortError"===a.name))?"timeout":"network",retryAfter:null,status:t?504:502},A(n,0,o))}}function C(e,t,r,n){let a=[];for(let s of["requests","tokens"]){let l=r.get(`x-ratelimit-limit-${s}`),o=r.get(`x-ratelimit-remaining-${s}`);if(null===l&&null===o)continue;let i=null!==l&&/^\d+$/.test(l.trim())?Number(l):null,u=null!==o&&/^\d+$/.test(o.trim())?Number(o):null;if(null===i&&null===u)continue;let d=function(e){if(!e)return null;let t=e.trim();if(/^\d+(\.\d+)?$/.test(t))return 1e3*Number(t);let r=/(\d+(?:\.\d+)?)(ms|h|m|s)/g,n=0,a="";for(let e=r.exec(t);e;e=r.exec(t)){a+=e[0];let t=Number(e[1]);n+="h"===e[2]?36e5*t:"m"===e[2]?6e4*t:"s"===e[2]?1e3*t:t}return a===t&&a?Math.round(n):null}(r.get(`x-ratelimit-reset-${s}`));a.push({providerId:e.id,scope:t??"all",metric:s,limit:i,remaining:u,used:null!==i&&null!==u?Math.max(0,i-u):null,resetAt:null!==d?new Date(n.getTime()+d):null,source:"header"})}return a}var z=e.i(875225),D=e.i(106132),O=e.i(924924),j=e.i(618916),M=e.i(921991),T=e.i(547499),E=e.i(809583),N=e.i(291029);function P(e){let t=e.trim();if(t.startsWith("@cf/"))return{provider:null,model:t};let r=t.indexOf("/");if(r<=0)return{provider:null,model:t};let n=t.slice(0,r).toLowerCase(),a=t.slice(r+1);return"models"===n?{provider:null,model:a}:{provider:n,model:a}}function S(e,t){let r;return!0===e.manual||"custom"===t||((r=e.upstream.trim()).startsWith("@cf/")?(0,E.S)(r,_):(0,E.S)(P(r).model,k))}function q(e){let t=e.find(e=>"gemini-3.8-flash"===e.id);if(t)return t;let r=e=>(/gemma-(\d+(?:\.\d+)?)/.exec(e)?.[1]??"0").split(".").map(Number),n=e=>Number(/-(\d+(?:\.\d+)?)b-/.exec(`${e}-`)?.[1]??0),a=e.filter(e=>e.upstream.startsWith("@cf/google/gemma")&&/(-it|instruct)(-|$)/.test(e.id));return a.sort((e,t)=>{let[a,s]=[r(e.id),r(t.id)];for(let e=0;e<Math.max(a.length,s.length);e++)if((s[e]??0)!==(a[e]??0))return(s[e]??0)-(a[e]??0);return n(t.id)-n(e.id)||e.id.localeCompare(t.id)}),a[0]??e[0]??null}function U(e,t){return`${e.slug}/${t.id}`}function G(e,t=null){let r=e.filter(e=>e.enabled);return t?r.find(e=>e.id===t)??null:r.find(e=>e.isDefault)??(1===r.length?r[0]:null)}function K(e,t,r){let n,a,s=(r?.model?r.model:t).trim(),{provider:l,model:o}=P(s),i=e.filter(e=>e.enabled);if(0===i.length)return"provider_not_connected";if(l&&e.some(e=>e.slug===l)){if(!(n=i.find(e=>e.slug===l)??null))return"provider_not_connected";if(r?.providerId&&n.id!==r.providerId)return"model_not_enabled";a=[o]}else{if(!(n=G(e,r?.providerId??null)))return"provider_not_connected";a=l?[s]:[...new Set([o,s])]}let u=n.models.find(e=>e.enabled&&(a.includes(e.id)||a.includes(e.upstream)));return u&&S(u,n.kind)?{conn:n,model:u,publicId:U(n,u)}:"model_not_enabled"}N.f.id,N.f.kind,N.f.name,N.f.baseUrl,N.f.keyHint,N.f.enabled,N.f.isDefault,N.f.models,N.f.limits,N.f.lastTestAt,N.f.lastTestStatus,N.f.lastError,N.f.createdAt;let R=null;async function W(e=Date.now(),t=!1){if(!t&&R&&e-R.at<6e4)return R.conns;let r=await (0,O.f)().select().from(N.f),n=(0,T.f)().OPS_ENCRYPTION_KEY,a=[];for(let e of r){var s,l,o;let t;if(s=e.kind,!b.includes(s))continue;let r=(0,M.V)({ciphertext:e.ciphertext,iv:e.iv},n);if(r){try{t=JSON.parse(r)}catch{continue}a.push({id:e.id,kind:e.kind,name:e.name,slug:(l=e.kind,o=e.name,"custom"!==l?l:o.trim().toLowerCase().replace(/[^a-z0-9._-]+/g,"-").replace(/^-+|-+$/g,"").slice(0,40)||"custom"),baseUrl:e.baseUrl,secret:t,enabled:e.enabled,isDefault:e.isDefault,models:e.models,limits:e.limits,updatedAt:e.updatedAt})}}return R={at:e,conns:a},a}async function B(){try{let[e]=await (0,O.f)().select({value:j.settings.value}).from(j.settings).where((0,z.u)(j.settings.key,E.L)).limit(1);return"string"==typeof e?.value&&e.value.trim()?e.value.trim():null}catch{return console.warn("reading ai.defaultModel failed; using the provider's default model"),null}}async function F(e,t){let r=K(await W(),e,t);return"string"==typeof r?r:{conn:r.conn,upstream:r.model.upstream,publicId:r.publicId}}o.z.array(D.z.strictObject({metric:a.z.enum(["requests","tokens"]),scope:l.z.string().trim().min(1).max(100).regex(/^[A-Za-z0-9._:-]+$/),limit:r.z.number().int().min(1).max(1e12),window:a.z.enum(["minute","day","week"])})).max(10);var L=e.i(121232);let Y=()=>r.z.number().finite(),J=n.z.looseObject({role:a.z.enum(["system","developer","user","assistant","tool","function"]),content:s.z.union([l.z.string(),o.z.array(i.z.unknown()),u.null()]).optional()}),V=d.z.object({model:l.z.string().trim().min(1).max(200),messages:o.z.array(J).min(1).max(100),stream:c.z.boolean().nullish(),stream_options:n.z.looseObject({}).nullish(),temperature:Y().min(0).max(2).nullish(),top_p:Y().min(0).max(1).nullish(),max_tokens:r.z.number().int().min(1).max(1e6).nullish(),max_completion_tokens:r.z.number().int().min(1).max(1e6).nullish(),stop:s.z.union([l.z.string().max(200),o.z.array(l.z.string().max(200)).max(4)]).nullish(),n:m.z.literal(1).nullish(),presence_penalty:Y().min(-2).max(2).nullish(),frequency_penalty:Y().min(-2).max(2).nullish(),seed:r.z.number().int().nullish(),response_format:n.z.looseObject({type:l.z.string().max(40)}).nullish(),tools:o.z.array(n.z.looseObject({})).max(128).nullish(),tool_choice:s.z.union([l.z.string().max(40),n.z.looseObject({})]).nullish(),user:l.z.string().max(256).nullish()});async function H(e){let t;if(Number(e.headers.get("content-length")??"0")>262144)return{ok:!1,message:"The request body is larger than 256 KB.",status:413};let r=await e.text().catch(()=>null);if(null===r)return{ok:!1,message:"Can't read the request body.",status:400};if(Buffer.byteLength(r,"utf8")>262144)return{ok:!1,message:"The request body is larger than 256 KB.",status:413};try{t=JSON.parse(r)}catch{return{ok:!1,message:"The request body isn't valid JSON.",status:400}}let n=V.safeParse(t);return n.success?{ok:!0,body:n.data}:{ok:!1,message:function(e){let t=e.issues[0];if(!t)return"Invalid request body.";let r=t.path.length?t.path.join("."):"body";return`${r}: ${t.message}`}(n.error),status:400}}let Q=e=>"number"==typeof e&&Number.isFinite(e)&&e>=0?Math.round(e):null,X=e=>e&&"object"==typeof e?{in:Q(e.prompt_tokens),out:Q(e.completion_tokens)}:null;function Z(e,t=[]){return(0,L.h)(e,t).catch(e=>{console.error("ai usage not recorded:",e instanceof Error?e.name:"unknown")})}function ee(e){try{(0,t.after)(e)}catch{e()}}function et(e,t,r,n,a){let s=r&&(null!==r.in||null!==r.out)?(r.in??0)+(r.out??0):null;return[...n?C(e,t,n,a):[],...function(e,t,r,n,a){let s=[];for(let l of t.map(e=>{let t=function(e,t){let r=t.getTime();if("minute"===e){let e=6e4*Math.floor(r/6e4);return{start:new Date(e),end:new Date(e+6e4)}}let n=864e5*Math.floor(r/864e5);if("day"===e)return{start:new Date(n),end:new Date(n+864e5)};let a=(new Date(n).getUTCDay()+6)%7,s=n-864e5*a;return{start:new Date(s),end:new Date(s+6048e5)}}(e.window,a);return{...e,start:t.start,resetAt:t.end}})){if("all"!==l.scope&&l.scope!==r)continue;let t="tokens"===l.metric?n??0:1;s.push({providerId:e,scope:l.scope,metric:`${l.metric}:${l.window}`,limit:l.limit,remaining:null,used:t,resetAt:l.resetAt,source:"own"})}return s}(e.id,e.limits,t,s,a)]}async function er(e){let t,r,n=Date.now(),a=await (0,g.f)(e,"ai:invoke");if(!a.ok)return a.response;let s=a.key,l={at:new Date(n),keyId:s.keyId,client:s.client,providerId:null,model:null,kind:"chat",tool:null,tokensIn:null,tokensOut:null,errorClass:null,stream:!1},o=(e,t=[])=>ee(()=>Z({...l,latencyMs:Date.now()-n,...e},t)),i=(e,t,r,n={},a)=>(o({status:r,errorClass:e,...n}),(0,y.O)(e,t,r,a)),u=await H(e);if(!u.ok)return i("invalid_request",u.message,u.status);let d=u.body,c=!0===d.stream,m=await F(d.model,{providerId:s.providerId,model:s.model});if("provider_not_connected"===m)return i("provider_not_connected","No AI provider is connected or enabled for this model. Connect one under AI Gateway › Bring your own key.",503,{stream:c});if("model_not_enabled"===m)return i("model_not_enabled",`Model "${d.model.slice(0,120)}" isn't enabled. GET /api/v1/ai/models lists the models this key can use.`,400,{stream:c});let{conn:f,upstream:p}=m,h={providerId:f.id,model:m.publicId,stream:c};try{t=await $(f,function(e,t,r){let n={};for(let[t,r]of Object.entries(e))null!=r&&(n[t]=r);return n.model=t,e.stream&&r&&(n.stream_options={...e.stream_options??{},include_usage:!0}),n}(d,p,v[f.kind].streamUsage),e.signal)}catch(e){if(e instanceof I)return i(e.info.type,e.message,e.info.status,{...h,errorClass:`${e.info.type} \xb7 ${e.info.errorClass}`});return o({...h,status:499,errorClass:"client_closed"}),new Response(null,{status:499})}let w=new Date;if(!t.ok){let e=await t.text().catch(()=>""),r=x(t.status,e),n=Number(t.headers.get("retry-after")),a=r.retryAfter??(Number.isFinite(n)&&n>0?Math.ceil(n):null);return o({...h,status:r.status,errorClass:`${r.type} \xb7 ${r.errorClass}`},C(f,p,t.headers,w)),(0,y.O)(r.type,A(r.errorClass,t.status,f.name),r.status,a?{"Retry-After":String(a)}:void 0)}if(c&&t.body){let e,r,a,s,o,i,u,d,c,m=(e=t.body.getReader(),r=new TextDecoder,a="",s=null,o=()=>void 0,i=new Promise(e=>{o=e}),u=!1,d=e=>{u||(u=!0,o({usage:s,end:e}))},c=e=>{a+=e;for(let e=a.indexOf("\n");e>=0;e=a.indexOf("\n")){let t=a.slice(0,e).trim();if(a=a.slice(e+1),!t.startsWith("data:"))continue;let r=t.slice(5).trim();if(r.includes('"usage"'))try{let e=X(JSON.parse(r).usage);e&&(s=e)}catch{}}a.length>1e6&&(a=a.slice(-64e3))},{stream:new ReadableStream({async pull(t){try{let n=await e.read();if(n.done){c(`${r.decode()}
2
- `),d("ok"),t.close();return}c(r.decode(n.value,{stream:!0})),t.enqueue(n.value)}catch(e){d("error"),t.error(e)}},async cancel(t){d("aborted"),await e.cancel(t).catch(()=>void 0)}},{highWaterMark:0}),done:i}),y=new Headers(t.headers);return ee(async()=>{let e=await m.done,t="ok"===e.end?200:"aborted"===e.end?499:502;await Z({...l,...h,latencyMs:Date.now()-n,status:t,errorClass:"ok"===e.end?null:"aborted"===e.end?"client_closed":"upstream_error · stream_broken",tokensIn:"aborted"===e.end?null:e.usage?.in??null,tokensOut:"aborted"===e.end?null:e.usage?.out??null},et(f,p,"aborted"===e.end?null:e.usage,y,new Date))}),new Response(m.stream,{status:200,headers:{"content-type":"text/event-stream; charset=utf-8","cache-control":"no-store","x-accel-buffering":"no"}})}try{r=await t.json()}catch{return i("upstream_error",A("bad_response",t.status,f.name),502,{...h,errorClass:"upstream_error · bad_response"})}let b=X(r.usage);return o({...h,status:200,tokensIn:b?.in??null,tokensOut:b?.out??null},et(f,p,b,t.headers,w)),(0,y.E)({...r,model:m.publicId},{status:200})}class en extends Error{type;status;constructor(e,t,r){super(t),this.type=e,this.status=r,this.name="GatewayError"}}async function ea(e){if(e){let t=await F(e,null);if("provider_not_connected"===t)throw new en(t,"No AI provider is connected. Connect one under AI Gateway › Bring your own key.",503);if("model_not_enabled"===t)throw new en(t,`Model "${e.slice(0,120)}" isn't enabled.`,400);return t}let[t,r]=await Promise.all([W(),B()]);if(r){let e=K(t,r,null);if("string"!=typeof e)return{conn:e.conn,upstream:e.model.upstream,publicId:e.publicId}}let n=G(t);if(!n)throw new en("provider_not_connected","No AI provider is connected. Connect one under AI Gateway › Bring your own key.",503);let a=q(n.models.filter(e=>e.enabled&&S(e,n.kind)));if(!a)throw new en("model_not_enabled",`No model is turned on for ${n.name}. Turn one on under Models.`,400);return{conn:n,upstream:a.upstream,publicId:U(n,a)}}async function es(e,t,r){let n,a=Date.now(),{conn:s,upstream:l,publicId:o}=e,i={...L.q,userAgent:`Watchbell console (${r.purpose})`},u={at:new Date(a),keyId:null,client:i,providerId:s.id,model:o,kind:"console",tool:null,stream:!1},d={model:l,messages:t,max_tokens:Math.min(Math.max(r.maxTokens??1024,1),8192),...void 0!==r.temperature?{temperature:r.temperature}:{}};try{n=r.timeoutMs?await $(s,d,new AbortController().signal,r.timeoutMs):await $(s,d,new AbortController().signal)}catch(t){let e=t instanceof I?t.info:{type:"upstream_error",errorClass:"network",status:502};throw ee(()=>Z({...u,latencyMs:Date.now()-a,status:e.status,errorClass:`${e.type} \xb7 ${e.errorClass}`,tokensIn:null,tokensOut:null})),new en(e.type,t instanceof I?t.message:A("network",0,s.name),e.status)}if(!n.ok){let e=await n.text().catch(()=>""),t=x(n.status,e);throw ee(()=>Z({...u,latencyMs:Date.now()-a,status:t.status,errorClass:`${t.type} \xb7 ${t.errorClass}`,tokensIn:null,tokensOut:null},C(s,l,n.headers,new Date))),new en(t.type,A(t.errorClass,n.status,s.name),t.status)}let c=await n.json().catch(()=>null),m=c?.choices?.[0]?.message?.content,f="string"==typeof m?m:Array.isArray(m)?m.map(e=>e&&"object"==typeof e&&"text"in e?String(e.text):"").join(""):"",p=X(c?.usage)??{in:null,out:null},h=Date.now()-a,y=null!==c;if(ee(()=>Z({...u,latencyMs:h,status:y?200:502,errorClass:y?null:"upstream_error · bad_response",tokensIn:p.in,tokensOut:p.out},et(s,l,p,n.headers,new Date))),!y)throw new en("upstream_error",A("bad_response",n.status,s.name),502);return{text:f,model:o,usage:p,ms:h}}let el=new Set([429,500,502,503,504]);async function eo(e){for(let t of(await W()).filter(t=>t.enabled&&t.id!==e)){let e=q(t.models.filter(e=>e.enabled&&S(e,t.kind)));if(e)return{conn:t,upstream:e.upstream,publicId:U(t,e)}}return null}async function ei(e,t){if((0,h.W)())return{text:p.v,model:"demo",usage:{in:null,out:null},ms:0};let r=await ea(t.model);try{return await es(r,e,t)}catch(a){if(t.model||!(a instanceof en&&el.has(a.status)))throw a;let n=await eo(r.conn.id).catch(()=>null);if(!n)throw a;return console.info(`ai: ${r.conn.name} failed, trying ${n.conn.name}`),es(n,e,t)}}async function eu(e){let t,r=Date.now(),n=await (0,g.f)(e,"ai:invoke");if(!n.ok)return n.response;let a=n.key,s=(await W()).filter(e=>e.enabled);if(a.model){let e=K(s,a.model,{providerId:a.providerId,model:null});t="string"==typeof e?[]:[{id:e.publicId,providerId:e.conn.id}]}else t=s.filter(e=>!a.providerId||e.id===a.providerId).flatMap(e=>e.models.filter(t=>t.enabled&&S(t,e.kind)).map(t=>({id:U(e,t),providerId:e.id})));let l=[];if(!a.model&&!a.providerId)try{let e=new Date,{report:t,prefs:r,allowed:n}=await (0,w.y)(e);l=(0,w.U)(t,e)?(0,w._)(t,r,n):[]}catch{console.warn(f.I.modelsReadFailed)}return ee(()=>Z({at:new Date(r),keyId:a.keyId,client:a.client,providerId:null,model:null,kind:"models",tool:null,tokensIn:null,tokensOut:null,latencyMs:Date.now()-r,status:200,errorClass:null,stream:!1})),(0,y.E)({object:"list",data:[...t.map(e=>({id:e.id,object:"model",created:0,owned_by:"watchbell"})),...l.map(e=>({id:`${w.T}${e}`,object:"model",created:0,owned_by:"antigravity",async:!0}))]})}e.s(["X",0,ei,"M",0,ea,"V",0,er,"v",0,eu],185284)}];
1
+ module.exports=[185284,e=>{"use strict";var t=e.i(89171),r=e.i(206033),n=e.i(898305),a=e.i(604147),i=e.i(140561),s=e.i(105954),l=e.i(455744),o=e.i(469755),u=e.i(562810),u=u,d=e.i(971724),c=e.i(180473),m=e.i(600205),f=e.i(313931),p=e.i(425498),h=e.i(77193),y=e.i(400687),b=e.i(579810),w=e.i(707910);let g=["gemini","cloudflare","custom"],k=["gemini","antigravity"],_=["@cf/google/gemma"],v={gemini:{name:"Google Gemini",baseUrl:()=>"https://generativelanguage.googleapis.com/v1beta/openai",secretFields:["apiKey"],modelsPath:"/models",listModels:"gemini-native",quotaFrom:"own",auth:"x-goog-api-key",streamUsage:!0,advanced:!1,keyLabel:"AI Studio API key",where:{url:"https://aistudio.google.com/apikey",text:"Create a key (it starts with AQ. or AIza). If Google says the project is restricted or denied, use a key from another Google project or account."}},cloudflare:{name:"Cloudflare Workers AI",baseUrl:e=>`https://api.cloudflare.com/client/v4/accounts/${e.accountId??""}/ai/v1`,secretFields:["accountId","apiKey"],modelsPath:"/models/search",listModels:"cloudflare-search",quotaFrom:"own",auth:"bearer",streamUsage:!0,advanced:!1,keyLabel:"API token",where:{url:"https://dash.cloudflare.com/profile/api-tokens",text:"Create a token with Workers AI: Read. The account ID is on the Workers AI page. Only Google's Gemma models are offered."}},custom:{name:"Custom OpenAI-compatible",baseUrl:e=>(e.baseUrl??"").replace(/\/+$/,""),secretFields:["baseUrl","apiKey"],modelsPath:"/models",listModels:"openai",quotaFrom:"headers",auth:"bearer",streamUsage:!0,advanced:!0,keyLabel:"API key",where:{url:null,text:"Any HTTPS server that speaks the OpenAI chat completions API and answers GET /models. Every model the server lists is offered; switch any off on Models."}}};f.Y.localUrl;class $ extends Error{info;constructor(e,t){super(t),this.info=e,this.name="UpstreamError"}}function I(e,t){let r=t.slice(0,2e4);if(429===e){let e;return{type:"quota_exceeded",errorClass:"rate_limited",retryAfter:(e=/"retryDelay"\s*:\s*"(\d+(?:\.\d+)?)s"/.exec(r))?Math.max(1,Math.ceil(Number(e[1]))):null,status:429}}return 403===e&&/denied access/i.test(r)?{type:"upstream_error",errorClass:"project_denied",retryAfter:null,status:502}:403===e&&/restricted|billing/i.test(r)?{type:"upstream_error",errorClass:"project_restricted",retryAfter:null,status:502}:401===e||403===e||/API_KEY_INVALID|API key not valid|API_KEY_SERVICE_BLOCKED|ACCESS_TOKEN_TYPE_UNSUPPORTED/.test(r)?{type:"upstream_error",errorClass:"auth_rejected",retryAfter:null,status:502}:404===e?{type:"invalid_request",errorClass:"model_not_found",retryAfter:null,status:404}:400===e||413===e||422===e?{type:"invalid_request",errorClass:"bad_request",retryAfter:null,status:e}:e>=500?{type:"upstream_error",errorClass:"server_error",retryAfter:null,status:502}:{type:"upstream_error",errorClass:`http_${e}`,retryAfter:null,status:502}}function A(e,t,r){switch(e){case"project_denied":return"Google denied this project's Gemini API access. Use a key from another Google project or account.";case"project_restricted":return"This Google project's Gemini API access is restricted. Create a key in another project or enable billing.";case"auth_rejected":return`${r} rejected the API key (${t}). Replace it under Bring your own key.`;case"rate_limited":return`${r} says the rate limit or quota is used up (429). Try again later.`;case"model_not_found":return`${r} doesn't know this model (404).`;case"bad_request":return`${r} refused the request (${t}). Check the request body.`;case"server_error":return`${r} failed (${t}). Try again later.`;case"timeout":return`${r} didn't answer within 60 s.`;case"network":return`Can't reach ${r}.`;case"bad_response":return`${r} sent an answer Watchbell can't read.`;default:return`${r} answered ${t}.`}}async function x(e,t,r,n=6e4){var a,i,s,l;try{return await fetch(`${e.baseUrl}/chat/completions`,{method:"POST",headers:(a=t.stream?"text/event-stream":"application/json",{"content-type":"application/json",accept:a,...(i=e.kind,!(s=e.secret.apiKey)?{}:"x-goog-api-key"===v[i].auth?{"x-goog-api-key":s}:{Authorization:`Bearer ${s}`})}),body:JSON.stringify(t),signal:AbortSignal.any([r,AbortSignal.timeout(n)]),redirect:"error",cache:"no-store"})}catch(a){let t,n;if(r.aborted)throw a;throw l=e.name,new $({type:"upstream_error",errorClass:n=(t=a instanceof Error&&("TimeoutError"===a.name||"AbortError"===a.name))?"timeout":"network",retryAfter:null,status:t?504:502},A(n,0,l))}}function C(e,t,r,n){let a=[];for(let i of["requests","tokens"]){let s=r.get(`x-ratelimit-limit-${i}`),l=r.get(`x-ratelimit-remaining-${i}`);if(null===s&&null===l)continue;let o=null!==s&&/^\d+$/.test(s.trim())?Number(s):null,u=null!==l&&/^\d+$/.test(l.trim())?Number(l):null;if(null===o&&null===u)continue;let d=function(e){if(!e)return null;let t=e.trim();if(/^\d+(\.\d+)?$/.test(t))return 1e3*Number(t);let r=/(\d+(?:\.\d+)?)(ms|h|m|s)/g,n=0,a="";for(let e=r.exec(t);e;e=r.exec(t)){a+=e[0];let t=Number(e[1]);n+="h"===e[2]?36e5*t:"m"===e[2]?6e4*t:"s"===e[2]?1e3*t:t}return a===t&&a?Math.round(n):null}(r.get(`x-ratelimit-reset-${i}`));a.push({providerId:e.id,scope:t??"all",metric:i,limit:o,remaining:u,used:null!==o&&null!==u?Math.max(0,o-u):null,resetAt:null!==d?new Date(n.getTime()+d):null,source:"header"})}return a}let j="Bring your own key (/ai/providers)";function D(e,t){if(e.length<=t)return e;let r="";for(let n of e){if(r.length+n.length>t-1)break;r+=n}return`${r.trimEnd()}…`}let z=e=>e.replace(/\s+/g," ").trim(),M=(e,t)=>D(z(e.provider)||"unnamed",t);function O(e){var t;return"network"===e.errorClass||"timeout"===e.errorClass||502===(t=e.status)||503===t||504===t||t>=520&&t<=530?"unreachable":"auth_rejected"===e.errorClass||"project_denied"===e.errorClass||"project_restricted"===e.errorClass||401===e.status||403===e.status?"auth":"rate_limited"===e.errorClass||429===e.status?"rate_limited":"bad_response"===e.errorClass?"unreadable":e.status>=500?"server":"other"}function T(e){let t=O(e);return"unreachable"===t||"rate_limited"===t||"server"===t||"unreadable"===t}let P={en:{unreachable:e=>`AI provider "${e}" is unreachable (its endpoint or tunnel is down).`,auth:(e,t)=>`AI provider "${e}" refused the key${t?` (${t})`:""}.`,replaceKey:`Replace it on ${j}.`,rate_limited:e=>`AI provider "${e}" is rate limited (429): its quota is used up.`,server:(e,t)=>`AI provider "${e}" failed with a server error (${t}).`,unreadable:e=>`AI provider "${e}" sent an answer Watchbell can't read.`,other:(e,t)=>`AI provider "${e}" answered ${t}.`,tried:(e,t)=>`Tried "${e}" instead, and that failed too (${t}).`,none:e=>`No other provider is enabled: add one on ${j}, or ${e?"try again later":"check the endpoint"}.`,pinned:()=>"This model was picked by name, so no other provider was tried.",outOfTime:"There was no time left to try another provider.",why:{unreachable:()=>"unreachable",auth:e=>`key refused${e?`, ${e}`:""}`,rate_limited:()=>"rate limited, 429",server:e=>`server error ${e}`,unreadable:()=>"unreadable answer",other:e=>`answered ${e}`}},id:{unreachable:e=>`Penyedia AI "${e}" tak bisa dihubungi (endpoint atau tunnel-nya mati).`,auth:(e,t)=>`Penyedia AI "${e}" menolak kuncinya${t?` (${t})`:""}.`,replaceKey:`Ganti kuncinya di ${j}.`,rate_limited:e=>`Penyedia AI "${e}" kena batas pemakaian (429): kuotanya habis.`,server:(e,t)=>`Penyedia AI "${e}" gagal karena error di servernya (${t}).`,unreadable:e=>`Penyedia AI "${e}" mengirim jawaban yang tidak bisa dibaca Watchbell.`,other:(e,t)=>`Penyedia AI "${e}" menjawab ${t}.`,tried:(e,t)=>`Sudah dicoba "${e}" sebagai gantinya, tapi juga gagal (${t}).`,none:e=>`Tak ada penyedia lain yang aktif: tambah di ${j}, atau ${e?"coba lagi nanti":"cek endpoint-nya"}.`,pinned:()=>"Model ini dipilih langsung, jadi penyedia lain tidak dicoba.",outOfTime:"Tidak ada waktu tersisa untuk mencoba penyedia lain.",why:{unreachable:()=>"tidak bisa dihubungi",auth:e=>`kunci ditolak${e?`, ${e}`:""}`,rate_limited:()=>"kena batas pemakaian, 429",server:e=>`error server ${e}`,unreadable:()=>"jawabannya tidak terbaca",other:e=>`menjawab ${e}`}}},E=e=>e.detail?D(z(e.detail),160):"";function N(e,t,r="en"){let n=n=>{let a=function(e,t,r){let n=P[t],a=M(e,r);switch(O(e)){case"unreachable":return n.unreachable(a);case"auth":{let t="project_denied"===e.errorClass||"project_restricted"===e.errorClass?E(e):"";return`${n.auth(a,e.status)} ${t||n.replaceKey}`}case"rate_limited":return n.rate_limited(a);case"server":return n.server(a,e.status);case"unreadable":return n.unreadable(a);default:return E(e)||n.other(a,e.status)}}(e,r,n);return T(e)?`${a} ${function(e,t,r,n){let a=P[r],i="rate_limited"===O(t);switch(e.kind){case"tried":{let t=e.fallback;return a.tried(M(t,n),a.why[O(t)](t.status))}case"none":return a.none(i);case"pinned":return a.pinned();default:return a.outOfTime}}(t,e,r,n)}`:a};for(let e=60;e>8;e--){let t=n(e);if(t.length<=200)return t}return D(n(8),200)}var S=e.i(875225),q=e.i(106132),U=e.i(924924),G=e.i(618916),K=e.i(921991),W=e.i(547499),R=e.i(809583),B=e.i(291029);function F(e){let t=e.trim();if(t.startsWith("@cf/"))return{provider:null,model:t};let r=t.indexOf("/");if(r<=0)return{provider:null,model:t};let n=t.slice(0,r).toLowerCase(),a=t.slice(r+1);return"models"===n?{provider:null,model:a}:{provider:n,model:a}}function L(e,t){let r;return!0===e.manual||"custom"===t||((r=e.upstream.trim()).startsWith("@cf/")?(0,R.S)(r,_):(0,R.S)(F(r).model,k))}function Y(e){let t=e.find(e=>"gemini-3.8-flash"===e.id);if(t)return t;let r=e=>(/gemma-(\d+(?:\.\d+)?)/.exec(e)?.[1]??"0").split(".").map(Number),n=e=>Number(/-(\d+(?:\.\d+)?)b-/.exec(`${e}-`)?.[1]??0),a=e.filter(e=>e.upstream.startsWith("@cf/google/gemma")&&/(-it|instruct)(-|$)/.test(e.id));return a.sort((e,t)=>{let[a,i]=[r(e.id),r(t.id)];for(let e=0;e<Math.max(a.length,i.length);e++)if((i[e]??0)!==(a[e]??0))return(i[e]??0)-(a[e]??0);return n(t.id)-n(e.id)||e.id.localeCompare(t.id)}),a[0]??e[0]??null}function J(e,t){return`${e.slug}/${t.id}`}function V(e,t=null){let r=e.filter(e=>e.enabled);return t?r.find(e=>e.id===t)??null:r.find(e=>e.isDefault)??(1===r.length?r[0]:null)}function H(e,t,r){let n,a,i=(r?.model?r.model:t).trim(),{provider:s,model:l}=F(i),o=e.filter(e=>e.enabled);if(0===o.length)return"provider_not_connected";if(s&&e.some(e=>e.slug===s)){if(!(n=o.find(e=>e.slug===s)??null))return"provider_not_connected";if(r?.providerId&&n.id!==r.providerId)return"model_not_enabled";a=[l]}else{if(!(n=V(e,r?.providerId??null)))return"provider_not_connected";a=s?[i]:[...new Set([l,i])]}let u=n.models.find(e=>e.enabled&&(a.includes(e.id)||a.includes(e.upstream)));return u&&L(u,n.kind)?{conn:n,model:u,publicId:J(n,u)}:"model_not_enabled"}B.f.id,B.f.kind,B.f.name,B.f.baseUrl,B.f.keyHint,B.f.enabled,B.f.isDefault,B.f.models,B.f.limits,B.f.lastTestAt,B.f.lastTestStatus,B.f.lastError,B.f.createdAt;let Q=null;async function X(e=Date.now(),t=!1){if(!t&&Q&&e-Q.at<6e4)return Q.conns;let r=await (0,U.f)().select().from(B.f),n=(0,W.f)().OPS_ENCRYPTION_KEY,a=[];for(let e of r){var i,s,l;let t;if(i=e.kind,!g.includes(i))continue;let r=(0,K.V)({ciphertext:e.ciphertext,iv:e.iv},n);if(r){try{t=JSON.parse(r)}catch{continue}a.push({id:e.id,kind:e.kind,name:e.name,slug:(s=e.kind,l=e.name,"custom"!==s?s:l.trim().toLowerCase().replace(/[^a-z0-9._-]+/g,"-").replace(/^-+|-+$/g,"").slice(0,40)||"custom"),baseUrl:e.baseUrl,secret:t,enabled:e.enabled,isDefault:e.isDefault,models:e.models,limits:e.limits,updatedAt:e.updatedAt})}}return Q={at:e,conns:a},a}async function Z(){try{let[e]=await (0,U.f)().select({value:G.settings.value}).from(G.settings).where((0,S.u)(G.settings.key,R.L)).limit(1);return"string"==typeof e?.value&&e.value.trim()?e.value.trim():null}catch{return console.warn("reading ai.defaultModel failed; using the provider's default model"),null}}async function ee(e,t){let r=H(await X(),e,t);return"string"==typeof r?r:{conn:r.conn,upstream:r.model.upstream,publicId:r.publicId}}l.z.array(q.z.strictObject({metric:a.z.enum(["requests","tokens"]),scope:s.z.string().trim().min(1).max(100).regex(/^[A-Za-z0-9._:-]+$/),limit:r.z.number().int().min(1).max(1e12),window:a.z.enum(["minute","day","week"])})).max(10);var et=e.i(121232);let er=()=>r.z.number().finite(),en=n.z.looseObject({role:a.z.enum(["system","developer","user","assistant","tool","function"]),content:i.z.union([s.z.string(),l.z.array(o.z.unknown()),u.null()]).optional()}),ea=d.z.object({model:s.z.string().trim().min(1).max(200),messages:l.z.array(en).min(1).max(100),stream:c.z.boolean().nullish(),stream_options:n.z.looseObject({}).nullish(),temperature:er().min(0).max(2).nullish(),top_p:er().min(0).max(1).nullish(),max_tokens:r.z.number().int().min(1).max(1e6).nullish(),max_completion_tokens:r.z.number().int().min(1).max(1e6).nullish(),stop:i.z.union([s.z.string().max(200),l.z.array(s.z.string().max(200)).max(4)]).nullish(),n:m.z.literal(1).nullish(),presence_penalty:er().min(-2).max(2).nullish(),frequency_penalty:er().min(-2).max(2).nullish(),seed:r.z.number().int().nullish(),response_format:n.z.looseObject({type:s.z.string().max(40)}).nullish(),tools:l.z.array(n.z.looseObject({})).max(128).nullish(),tool_choice:i.z.union([s.z.string().max(40),n.z.looseObject({})]).nullish(),user:s.z.string().max(256).nullish()});async function ei(e){let t;if(Number(e.headers.get("content-length")??"0")>262144)return{ok:!1,message:"The request body is larger than 256 KB.",status:413};let r=await e.text().catch(()=>null);if(null===r)return{ok:!1,message:"Can't read the request body.",status:400};if(Buffer.byteLength(r,"utf8")>262144)return{ok:!1,message:"The request body is larger than 256 KB.",status:413};try{t=JSON.parse(r)}catch{return{ok:!1,message:"The request body isn't valid JSON.",status:400}}let n=ea.safeParse(t);return n.success?{ok:!0,body:n.data}:{ok:!1,message:function(e){let t=e.issues[0];if(!t)return"Invalid request body.";let r=t.path.length?t.path.join("."):"body";return`${r}: ${t.message}`}(n.error),status:400}}let es=e=>"number"==typeof e&&Number.isFinite(e)&&e>=0?Math.round(e):null,el=e=>e&&"object"==typeof e?{in:es(e.prompt_tokens),out:es(e.completion_tokens)}:null;function eo(e,t=[]){return(0,et.h)(e,t).catch(e=>{console.error("ai usage not recorded:",e instanceof Error?e.name:"unknown")})}function eu(e){try{(0,t.after)(e)}catch{e()}}function ed(e,t,r,n,a){let i=r&&(null!==r.in||null!==r.out)?(r.in??0)+(r.out??0):null;return[...n?C(e,t,n,a):[],...function(e,t,r,n,a){let i=[];for(let s of t.map(e=>{let t=function(e,t){let r=t.getTime();if("minute"===e){let e=6e4*Math.floor(r/6e4);return{start:new Date(e),end:new Date(e+6e4)}}let n=864e5*Math.floor(r/864e5);if("day"===e)return{start:new Date(n),end:new Date(n+864e5)};let a=(new Date(n).getUTCDay()+6)%7,i=n-864e5*a;return{start:new Date(i),end:new Date(i+6048e5)}}(e.window,a);return{...e,start:t.start,resetAt:t.end}})){if("all"!==s.scope&&s.scope!==r)continue;let t="tokens"===s.metric?n??0:1;i.push({providerId:e,scope:s.scope,metric:`${s.metric}:${s.window}`,limit:s.limit,remaining:null,used:t,resetAt:s.resetAt,source:"own"})}return i}(e.id,e.limits,t,i,a)]}async function ec(e){let t,r,n=Date.now(),a=await (0,b.f)(e,"ai:invoke");if(!a.ok)return a.response;let i=a.key,s={at:new Date(n),keyId:i.keyId,client:i.client,providerId:null,model:null,kind:"chat",tool:null,tokensIn:null,tokensOut:null,errorClass:null,stream:!1},l=(e,t=[])=>eu(()=>eo({...s,latencyMs:Date.now()-n,...e},t)),o=(e,t,r,n={},a)=>(l({status:r,errorClass:e,...n}),(0,y.O)(e,t,r,a)),u=await ei(e);if(!u.ok)return o("invalid_request",u.message,u.status);let d=u.body,c=!0===d.stream,m=await ee(d.model,{providerId:i.providerId,model:i.model});if("provider_not_connected"===m)return o("provider_not_connected","No AI provider is connected or enabled for this model. Connect one under AI Gateway › Bring your own key.",503,{stream:c});if("model_not_enabled"===m)return o("model_not_enabled",`Model "${d.model.slice(0,120)}" isn't enabled. GET /api/v1/ai/models lists the models this key can use.`,400,{stream:c});let{conn:f,upstream:p}=m,h={providerId:f.id,model:m.publicId,stream:c};try{t=await x(f,function(e,t,r){let n={};for(let[t,r]of Object.entries(e))null!=r&&(n[t]=r);return n.model=t,e.stream&&r&&(n.stream_options={...e.stream_options??{},include_usage:!0}),n}(d,p,v[f.kind].streamUsage),e.signal)}catch(e){if(e instanceof $)return o(e.info.type,e.message,e.info.status,{...h,errorClass:`${e.info.type} \xb7 ${e.info.errorClass}`});return l({...h,status:499,errorClass:"client_closed"}),new Response(null,{status:499})}let w=new Date;if(!t.ok){let e=await t.text().catch(()=>""),r=I(t.status,e),n=Number(t.headers.get("retry-after")),a=r.retryAfter??(Number.isFinite(n)&&n>0?Math.ceil(n):null);return l({...h,status:r.status,errorClass:`${r.type} \xb7 ${r.errorClass}`},C(f,p,t.headers,w)),(0,y.O)(r.type,A(r.errorClass,t.status,f.name),r.status,a?{"Retry-After":String(a)}:void 0)}if(c&&t.body){let e,r,a,i,l,o,u,d,c,m=(e=t.body.getReader(),r=new TextDecoder,a="",i=null,l=()=>void 0,o=new Promise(e=>{l=e}),u=!1,d=e=>{u||(u=!0,l({usage:i,end:e}))},c=e=>{a+=e;for(let e=a.indexOf("\n");e>=0;e=a.indexOf("\n")){let t=a.slice(0,e).trim();if(a=a.slice(e+1),!t.startsWith("data:"))continue;let r=t.slice(5).trim();if(r.includes('"usage"'))try{let e=el(JSON.parse(r).usage);e&&(i=e)}catch{}}a.length>1e6&&(a=a.slice(-64e3))},{stream:new ReadableStream({async pull(t){try{let n=await e.read();if(n.done){c(`${r.decode()}
2
+ `),d("ok"),t.close();return}c(r.decode(n.value,{stream:!0})),t.enqueue(n.value)}catch(e){d("error"),t.error(e)}},async cancel(t){d("aborted"),await e.cancel(t).catch(()=>void 0)}},{highWaterMark:0}),done:o}),y=new Headers(t.headers);return eu(async()=>{let e=await m.done,t="ok"===e.end?200:"aborted"===e.end?499:502;await eo({...s,...h,latencyMs:Date.now()-n,status:t,errorClass:"ok"===e.end?null:"aborted"===e.end?"client_closed":"upstream_error · stream_broken",tokensIn:"aborted"===e.end?null:e.usage?.in??null,tokensOut:"aborted"===e.end?null:e.usage?.out??null},ed(f,p,"aborted"===e.end?null:e.usage,y,new Date))}),new Response(m.stream,{status:200,headers:{"content-type":"text/event-stream; charset=utf-8","cache-control":"no-store","x-accel-buffering":"no"}})}try{r=await t.json()}catch{return o("upstream_error",A("bad_response",t.status,f.name),502,{...h,errorClass:"upstream_error · bad_response"})}let g=el(r.usage);return l({...h,status:200,tokensIn:g?.in??null,tokensOut:g?.out??null},ed(f,p,g,t.headers,w)),(0,y.E)({...r,model:m.publicId},{status:200})}class em extends Error{type;status;failure;constructor(e,t,r,n){super(t),this.type=e,this.status=r,this.failure=n,this.name="GatewayError"}}async function ef(e){if(e){let t=await ee(e,null);if("provider_not_connected"===t)throw new em(t,"No AI provider is connected. Connect one under AI Gateway › Bring your own key.",503);if("model_not_enabled"===t)throw new em(t,`Model "${e.slice(0,120)}" isn't enabled.`,400);return t}let[t,r]=await Promise.all([X(),Z()]);if(r){let e=H(t,r,null);if("string"!=typeof e)return{conn:e.conn,upstream:e.model.upstream,publicId:e.publicId}}let n=V(t);if(!n)throw new em("provider_not_connected","No AI provider is connected. Connect one under AI Gateway › Bring your own key.",503);let a=Y(n.models.filter(e=>e.enabled&&L(e,n.kind)));if(!a)throw new em("model_not_enabled",`No model is turned on for ${n.name}. Turn one on under Models.`,400);return{conn:n,upstream:a.upstream,publicId:J(n,a)}}async function ep(e,t,r,n=r.timeoutMs){let a,i=Date.now(),{conn:s,upstream:l,publicId:o}=e,u={...et.q,userAgent:`Watchbell console (${r.purpose})`},d={at:new Date(i),keyId:null,client:u,providerId:s.id,model:o,kind:"console",tool:null,stream:!1},c={model:l,messages:t,max_tokens:Math.min(Math.max(r.maxTokens??1024,1),8192),...void 0!==r.temperature?{temperature:r.temperature}:{}},m=(e,t,r)=>{let n={provider:s.name,...r};return new em(e,N(n,{kind:"none"}),t,{first:n,next:{kind:"none"}})};try{a=n?await x(s,c,new AbortController().signal,n):await x(s,c,new AbortController().signal)}catch(t){let e=t instanceof $?t.info:{type:"upstream_error",errorClass:"network",status:502};throw eu(()=>eo({...d,latencyMs:Date.now()-i,status:e.status,errorClass:`${e.type} \xb7 ${e.errorClass}`,tokensIn:null,tokensOut:null})),m(e.type,e.status,{status:0,errorClass:e.errorClass,detail:t instanceof $?t.message:A("network",0,s.name)})}if(!a.ok){let e=await a.text().catch(()=>""),t=I(a.status,e);throw eu(()=>eo({...d,latencyMs:Date.now()-i,status:t.status,errorClass:`${t.type} \xb7 ${t.errorClass}`,tokensIn:null,tokensOut:null},C(s,l,a.headers,new Date))),m(t.type,t.status,{status:a.status,errorClass:t.errorClass,detail:A(t.errorClass,a.status,s.name)})}let f=await a.json().catch(()=>null),p=f?.choices?.[0]?.message?.content,h="string"==typeof p?p:Array.isArray(p)?p.map(e=>e&&"object"==typeof e&&"text"in e?String(e.text):"").join(""):"",y=el(f?.usage)??{in:null,out:null},b=Date.now()-i,w=null!==f;if(eu(()=>eo({...d,latencyMs:b,status:w?200:502,errorClass:w?null:"upstream_error · bad_response",tokensIn:y.in,tokensOut:y.out},ed(s,l,y,a.headers,new Date))),!w)throw m("upstream_error",502,{status:a.status,errorClass:"bad_response",detail:A("bad_response",a.status,s.name)});return{text:h,model:o,usage:y,ms:b}}let eh=new Set([429,500,502,503,504]),ey=2/3;async function eb(e){for(let t of(await X()).filter(t=>t.enabled&&t.id!==e)){let e=Y(t.models.filter(e=>e.enabled&&L(e,t.kind)));if(e)return{conn:t,upstream:e.upstream,publicId:J(t,e)}}return null}function ew(e,t){return e instanceof em&&e.failure?new em(e.type,N(e.failure.first,t),e.status,{first:e.failure.first,next:t}):e}async function eg(e,t){let r;if((0,h.W)())return{text:p.v,model:"demo",usage:{in:null,out:null},ms:0};let n=Date.now(),a=await ef(t.model),i=!t.model||!0===t.fallback,s=async()=>void 0===r?r=await eb(a.conn.id).catch(()=>null):r,l=t.timeoutMs;if(t.timeoutMs&&i){let e=Math.floor(t.timeoutMs*(1-ey));e>=3e3&&await s()&&(l=t.timeoutMs-e)}try{return await ep(a,e,t,l)}catch(o){if(!(o instanceof em&&(o.failure?T(o.failure.first):eh.has(o.status))))throw o;if(!i)throw ew(o,{kind:"pinned"});let r=await s();if(!r)throw ew(o,{kind:"none"});let l=t.timeoutMs?t.timeoutMs-(Date.now()-n):void 0;if(void 0!==l&&l<3e3)throw ew(o,{kind:"out-of-time"});console.info(`ai: ${a.conn.name} failed, trying ${r.conn.name}`);try{return await ep(r,e,t,l)}catch(t){let e=t instanceof em?t.failure?.first:void 0;throw e?ew(o,{kind:"tried",fallback:e}):t}}}async function ek(e){let t,r=Date.now(),n=await (0,b.f)(e,"ai:invoke");if(!n.ok)return n.response;let a=n.key,i=(await X()).filter(e=>e.enabled);if(a.model){let e=H(i,a.model,{providerId:a.providerId,model:null});t="string"==typeof e?[]:[{id:e.publicId,providerId:e.conn.id}]}else t=i.filter(e=>!a.providerId||e.id===a.providerId).flatMap(e=>e.models.filter(t=>t.enabled&&L(t,e.kind)).map(t=>({id:J(e,t),providerId:e.id})));let s=[];if(!a.model&&!a.providerId)try{let e=new Date,{report:t,prefs:r,allowed:n}=await (0,w.y)(e);s=(0,w.U)(t,e)?(0,w._)(t,r,n):[]}catch{console.warn(f.I.modelsReadFailed)}return eu(()=>eo({at:new Date(r),keyId:a.keyId,client:a.client,providerId:null,model:null,kind:"models",tool:null,tokensIn:null,tokensOut:null,latencyMs:Date.now()-r,status:200,errorClass:null,stream:!1})),(0,y.E)({object:"list",data:[...t.map(e=>({id:e.id,object:"model",created:0,owned_by:"watchbell"})),...s.map(e=>({id:`${w.T}${e}`,object:"model",created:0,owned_by:"antigravity",async:!0}))]})}e.s(["X",0,eg,"M",0,ef,"V",0,ec,"v",0,ek],185284)}];
3
3
 
4
4
  //# sourceMappingURL=src_private_ai_gateway_ts_1qtr4nyb8kgnd._.js.map
@@ -3,6 +3,6 @@ ${n}
3
3
 
4
4
  Question: ${o(t,2e3)}`}]}async function l(e,t={}){let a=t.now??new Date,i=s(await (0,r.V)(a),e);if(t.context){let e=i[i.length-1];e.content=`${e.content}
5
5
 
6
- Context: ${o(t.context,Math.min(t.contextMax??2e3,4e3))}`}let u=await (0,n.X)(i,{...t.model?{model:t.model}:{},purpose:"console-chat",maxTokens:1500}),m=u.text.trim();if(!m)throw new c;return{text:m.length>8e3?`${m.slice(0,7999)}…`:m,model:u.model,ms:u.ms}}e.s(["o",0,a,"u",0,s,"O",0,o,"N",0,function(e){let t=e.slice(0,40).map(e=>`- [${o(e.severity,20)}] ${o(e.title)} (app: ${o(e.app,80)})`);return[{role:"system",content:a},{role:"user",content:[`Summarise these ${e.length} recommendations in two or three sentences, most urgent first. Name each app once.`,"",...t].join("\n")}]}],76482);class c extends Error{constructor(){super("The model returned no text. Try again."),this.name="GatewayError"}}async function i(e=new Date){let[r,a]=await Promise.all([(0,t.y)(e).catch(()=>null),(0,n.M)().then(()=>!0,()=>!1)]),o=!!r&&(0,t.U)(r.report,e);return{agConnected:o,agEnabled:o&&r?(0,t._)(r.report,r.prefs,r.allowed):[],providerReady:a}}e.s(["q",0,"watchpost","L",0,l,"c",0,i],343404)}];
6
+ Context: ${o(t.context,Math.min(t.contextMax??2e3,4e3))}`}let u=await (0,n.X)(i,{...t.model?{model:t.model,...t.fallback?{fallback:!0}:{}}:{},purpose:"console-chat",maxTokens:1500}),m=u.text.trim();if(!m)throw new c;return{text:m.length>8e3?`${m.slice(0,7999)}…`:m,model:u.model,ms:u.ms}}e.s(["o",0,a,"u",0,s,"O",0,o,"N",0,function(e){let t=e.slice(0,40).map(e=>`- [${o(e.severity,20)}] ${o(e.title)} (app: ${o(e.app,80)})`);return[{role:"system",content:a},{role:"user",content:[`Summarise these ${e.length} recommendations in two or three sentences, most urgent first. Name each app once.`,"",...t].join("\n")}]}],76482);class c extends Error{constructor(){super("The model returned no text. Try again."),this.name="GatewayError"}}async function i(e=new Date){let[r,a]=await Promise.all([(0,t.y)(e).catch(()=>null),(0,n.M)().then(()=>!0,()=>!1)]),o=!!r&&(0,t.U)(r.report,e);return{agConnected:o,agEnabled:o&&r?(0,t._)(r.report,r.prefs,r.allowed):[],providerReady:a}}e.s(["q",0,"watchpost","L",0,l,"c",0,i],343404)}];
7
7
 
8
8
  //# sourceMappingURL=src_private_assist_provider-answer_ts_10qv42t-5046y._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[861600,294965,598513,e=>{"use strict";var r=e.i(137936),t=e.i(118558),n=e.i(600079),a=e.i(109307),o=e.i(221084),i=e.i(312573),s=e.i(323878),d=e.i(920274),u=e.i(713095);async function l(e){return(0,n.F)("owner",async r=>{if("string"!=typeof e||!(0,d.b)(e))return{ok:!1,error:"Something in that request wasn't valid."};let n=await (0,s.C)(i.t.monitorWrite,r.id);if(!n.allowed)return{ok:!1,error:`Too many changes. Try again in ${(0,i.H)(n.retryAfter)}.`};let a=await (0,d.$)(e,r.userId,new Date);if(!a)return{ok:!1,error:"That note was already dismissed."};try{await (0,o.f)({kind:"ok",message:`AI note dismissed: ${a.title.slice(0,120)}`,detail:`AiNoteDismissed \xb7 from ${a.from.slice(0,60)}`,resourceId:a.appId&&(0,d.b)(a.appId)?a.appId:null,actorUserId:r.userId})}catch{console.warn("audit event failed")}return(0,t.refresh)(),{ok:!0,message:"Note dismissed."}},{requireActionMember:a.g},"local")}(0,u.ensureServerEntryExports)([l]),(0,r.registerServerReference)(l,"40d3dc750d21ba248f85d991e8dcfbfc5cb7c9629f",null),e.s(["f",0,l],861600);var c=e.i(462820);let f={name:"ai-assist",max:20,windowSeconds:600};var w=e.i(86657),m=e.i(502330),y=e.i(425238);let g="That model isn't available. Pick another one or Default.";var k=e.i(918962),v=e.i(962230),p=e.i(779704);let b={ok:!1,error:"Something in that request wasn't valid."},h=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;async function A(e){let r=await (0,s.C)(f,e);return r.allowed?null:`Too many AI requests. Try again in ${(0,i.H)(r.retryAfter)}.`}function I(e){return e instanceof Error&&"GatewayError"===e.name?e.message.slice(0,300):"The AI provider couldn't answer. Try again."}async function q(e){return(0,n.F)("owner",async r=>{if("string"!=typeof e||!h.test(e))return b;let t=await A(r.id);if(t)return{ok:!1,error:t};if(!await w.f.provider())return{ok:!1,error:c.B.noProvider};let n=await w.f.appSnapshot(e,new Date);if(!n)return{ok:!1,error:"That application wasn't found."};try{let e=await w.f.complete((0,m.r)(n),{purpose:"ask-ai",maxTokens:500}),r=e.text.trim();if(!r)return{ok:!1,error:"The model returned no text. Try again."};return{ok:!0,data:{text:r,model:e.model,ms:e.ms}}}catch(e){return{ok:!1,error:I(e)}}},{requireActionMember:a.g},"local")}async function S(e){return(0,n.F)("owner",async r=>{if("string"!=typeof e||!h.test(e))return b;let n=await A(r.id);if(n)return{ok:!1,error:n};let a=new Date,i=await w.f.appSnapshot(e,a);if(!i)return{ok:!1,error:"That application wasn't found."};let s=(0,m.R)(i),d=await (0,k.c)(a);if(!d.agConnected)return d.providerReady?T({kind:"app",contextId:e,question:s,by:r.userId,askedAt:a}):{ok:!1,error:"No AI provider is connected. Connect one under AI Gateway › Bring your own key."};let u=await (0,v._)({kind:"app",contextId:e,question:s,by:r.userId,now:a});if(!u.ok)return{ok:!1,error:u.error};if(!u.reused)try{await (0,o.f)({kind:"ok",message:c.B.queuedAudit(i.id.slice(0,80)),resourceId:e,actorUserId:r.userId})}catch{console.warn("audit event failed")}return(0,t.refresh)(),{ok:!0,message:u.reused?c.B.alreadyWaiting:c.B.sentApp,data:{id:u.id,status:"pending"}}},{requireActionMember:a.g})}async function T(e){let r;try{r=await (0,k.L)(e.question,{model:e.model,now:e.askedAt})}catch(e){return console.warn("ask: provider failed:",e instanceof Error?e.name:"unknown"),{ok:!1,error:I(e)}}let n=await (0,v.Y)({kind:e.kind,contextId:e.contextId,question:e.question,by:e.by,askedAt:e.askedAt,answeredAt:new Date,answer:r.text,client:k.q,model:r.model});return(0,t.refresh)(),{ok:!0,message:`Answered by ${r.model} in ${(r.ms/1e3).toFixed(1)} s.`,data:{id:n.id,status:"answered",text:r.text,model:r.model,ms:r.ms}}}async function x(e,r){return(0,n.F)("owner",async n=>{let a,i=(a="string"==typeof e?e.trim():"")?a.length>2e3?{ok:!1,error:"A question can be up to 2000 characters."}:(0,y.G)(a)?{ok:!1,error:"That looks like a key or token. Remove it before sending."}:{ok:!0,question:a}:{ok:!1,error:"Type a question first."};if(!i.ok)return{ok:!1,error:i.error};let s=new Date,d=function(e,r){let t="string"==typeof e?e.trim():"";if(!t)return r.providerReady?{via:"provider"}:r.agConnected?{via:"antigravity",model:null}:{via:"none",error:"No AI provider is connected. Connect one under AI Gateway › Bring your own key."};if(t.length>200)return{via:"none",error:g};if(t.startsWith("ag/")){let e=t.slice(3);return r.agConnected&&r.agEnabled.includes(e)?{via:"antigravity",model:e}:{via:"none",error:g}}return r.agConnected&&r.agEnabled.includes(t)?{via:"antigravity",model:t}:{via:"provider",model:t}}(r,await (0,k.c)(s));if("none"===d.via)return{ok:!1,error:d.error};let u=await A(n.id);if(u)return{ok:!1,error:u};if("provider"===d.via)return T({kind:"general",contextId:null,question:i.question,by:n.userId,askedAt:s,model:d.model});let l=d.model,f=await (0,v._)({kind:"general",contextId:null,question:i.question,by:n.userId,now:s,model:l});if(!f.ok)return{ok:!1,error:f.error};if(!f.reused)try{await (0,o.f)({kind:"ok",message:c.B.queuedAudit("general"),resourceId:null,actorUserId:n.userId})}catch{console.warn("audit event failed")}return(0,t.refresh)(),{ok:!0,message:f.reused?c.B.alreadyWaiting:c.B.sentGeneral,data:{id:f.id,status:"pending"}}},{requireActionMember:a.g})}async function $(e){return(0,n.F)("owner",async r=>{if("string"!=typeof e||!h.test(e))return b;let t=await (0,v.F)(e,r.userId,new Date);return t?{ok:!0,data:{status:t.status,answer:t.answer,model:t.model??t.requestedModel,answeredAt:t.answeredAt?t.answeredAt.toISOString():null}}:{ok:!1,error:"That question wasn't found. It may have been cleaned up."}},{requireActionMember:a.g})}async function R(){return(0,n.F)("owner",async e=>{let r=await A(e.id);if(r)return{ok:!1,error:r};try{let e=await (0,p.E)(new Date,{force:!0});if("no-provider"===e.status)return{ok:!1,error:"No AI provider is connected."};if("empty"===e.status)return{ok:!1,error:"There are no recommendations to summarise."}}catch(e){return{ok:!1,error:I(e)}}return(0,t.refresh)(),{ok:!0,message:"Summary updated."}},{requireActionMember:a.g})}(0,u.ensureServerEntryExports)([q,S,x,$,R]),(0,r.registerServerReference)(q,"40c0d06ea0f4d55c6bb94812784da837fb9d2d1d02",null),(0,r.registerServerReference)(S,"402f3d91fa7ba75f0ed3c1019d4982b5c45d8d1ab4",null),(0,r.registerServerReference)(x,"606a07cbe7d381145f8fd4ff40803b21917cb01dfe",null),(0,r.registerServerReference)($,"40420dcabd1934a34818ced635fa19c61a4b94b2b6",null),(0,r.registerServerReference)(R,"00087cd27f5ea6471195755a9498636f44f935e3c4",null),e.s(["G",0,S,"B",0,x,"T",0,q,"P",0,$,"E",0,R],294965);var E=e.i(94473),C=e.i(188282);let F={requireActionMember:e=>(0,a.g)(e)};async function B(e){return(0,n.F)("owner",async r=>{let n=await (0,s.C)(i.t.alertWrite,r.id);if(!n.allowed)return{ok:!1,error:`Too many changes. Try again in ${(0,i.H)(n.retryAfter)}.`};try{let n=await (0,E.m)(e,r);(0,t.revalidatePath)("/settings");let a=Object.keys(e??{}),o=1===a.length&&C.H[a[0]]?.risk==="safe"?`${C.H[a[0]].label}: auto-run ${n[a[0]]?"on":"off"}.`:c.X.autoRunSaved;return{ok:!0,message:o,data:n}}catch(e){if(e instanceof E.s)return{ok:!1,error:"Something in that request wasn't valid."};throw e}},F,"local")}async function D(e){return(0,n.F)("owner",async r=>{let n=await (0,s.C)(i.t.alertWrite,r.id);if(!n.allowed)return{ok:!1,error:`Too many changes. Try again in ${(0,i.H)(n.retryAfter)}.`};try{let n=await (0,E.C)(e,r);return(0,t.revalidatePath)("/settings"),{ok:!0,message:`Auto-rollback ${n.enabled?"on":"off"} \xb7 first ${n.windowMin} minutes.`,data:n}}catch(e){if(e instanceof E.s)return{ok:!1,error:"Something in that request wasn't valid."};throw e}},F,"local")}async function M(e){return(0,n.F)("owner",async r=>{let n=await (0,s.C)(i.t.alertWrite,r.id);if(!n.allowed)return{ok:!1,error:`Too many changes. Try again in ${(0,i.H)(n.retryAfter)}.`};try{let n=await (0,E.o)(e,r);return(0,t.revalidatePath)("/settings"),{ok:!0,message:`Automatic security fixes ${n.enabled?"on":"off"}.`,data:n}}catch(e){if(e instanceof E.s)return{ok:!1,error:"Something in that request wasn't valid."};throw e}},F,"local")}(0,u.ensureServerEntryExports)([B,D,M]),(0,r.registerServerReference)(B,"4015787924ac0f9a6a29688580ae095b2e61475abc",null),(0,r.registerServerReference)(D,"40614b98a064ca9f358d1cb782a3b4ca869256519b",null),(0,r.registerServerReference)(M,"40f54e3d51e8dfd3f4a4030141ef9248db0963a157",null),e.s(["G",0,D,"m",0,B,"F",0,M],598513)}];
1
+ module.exports=[861600,294965,598513,e=>{"use strict";var r=e.i(137936),t=e.i(118558),n=e.i(600079),a=e.i(109307),o=e.i(221084),i=e.i(312573),s=e.i(323878),d=e.i(920274),u=e.i(713095);async function l(e){return(0,n.F)("owner",async r=>{if("string"!=typeof e||!(0,d.b)(e))return{ok:!1,error:"Something in that request wasn't valid."};let n=await (0,s.C)(i.t.monitorWrite,r.id);if(!n.allowed)return{ok:!1,error:`Too many changes. Try again in ${(0,i.H)(n.retryAfter)}.`};let a=await (0,d.$)(e,r.userId,new Date);if(!a)return{ok:!1,error:"That note was already dismissed."};try{await (0,o.f)({kind:"ok",message:`AI note dismissed: ${a.title.slice(0,120)}`,detail:`AiNoteDismissed \xb7 from ${a.from.slice(0,60)}`,resourceId:a.appId&&(0,d.b)(a.appId)?a.appId:null,actorUserId:r.userId})}catch{console.warn("audit event failed")}return(0,t.refresh)(),{ok:!0,message:"Note dismissed."}},{requireActionMember:a.g},"local")}(0,u.ensureServerEntryExports)([l]),(0,r.registerServerReference)(l,"407080c491b273d4eb0682565cc1134cd966f88043",null),e.s(["f",0,l],861600);var c=e.i(462820);let f={name:"ai-assist",max:20,windowSeconds:600};var w=e.i(86657),m=e.i(502330),y=e.i(425238);let g="That model isn't available. Pick another one or Default.";var k=e.i(918962),v=e.i(962230),b=e.i(779704);let p={ok:!1,error:"Something in that request wasn't valid."},h=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;async function A(e){let r=await (0,s.C)(f,e);return r.allowed?null:`Too many AI requests. Try again in ${(0,i.H)(r.retryAfter)}.`}function I(e){return e instanceof Error&&"GatewayError"===e.name?e.message.slice(0,300):"The AI provider couldn't answer. Try again."}async function q(e){return(0,n.F)("owner",async r=>{if("string"!=typeof e||!h.test(e))return p;let t=await A(r.id);if(t)return{ok:!1,error:t};if(!await w.f.provider())return{ok:!1,error:c.B.noProvider};let n=await w.f.appSnapshot(e,new Date);if(!n)return{ok:!1,error:"That application wasn't found."};try{let e=await w.f.complete((0,m.r)(n),{purpose:"ask-ai",maxTokens:500}),r=e.text.trim();if(!r)return{ok:!1,error:"The model returned no text. Try again."};return{ok:!0,data:{text:r,model:e.model,ms:e.ms}}}catch(e){return{ok:!1,error:I(e)}}},{requireActionMember:a.g},"local")}async function S(e){return(0,n.F)("owner",async r=>{if("string"!=typeof e||!h.test(e))return p;let n=await A(r.id);if(n)return{ok:!1,error:n};let a=new Date,i=await w.f.appSnapshot(e,a);if(!i)return{ok:!1,error:"That application wasn't found."};let s=(0,m.R)(i),d=await (0,k.c)(a);if(!d.agConnected)return d.providerReady?T({kind:"app",contextId:e,question:s,by:r.userId,askedAt:a}):{ok:!1,error:"No AI provider is connected. Connect one under AI Gateway › Bring your own key."};let u=await (0,v._)({kind:"app",contextId:e,question:s,by:r.userId,now:a});if(!u.ok)return{ok:!1,error:u.error};if(!u.reused)try{await (0,o.f)({kind:"ok",message:c.B.queuedAudit(i.id.slice(0,80)),resourceId:e,actorUserId:r.userId})}catch{console.warn("audit event failed")}return(0,t.refresh)(),{ok:!0,message:u.reused?c.B.alreadyWaiting:c.B.sentApp,data:{id:u.id,status:"pending"}}},{requireActionMember:a.g})}async function T(e){let r;try{r=await (0,k.L)(e.question,{model:e.model,now:e.askedAt})}catch(e){return console.warn("ask: provider failed:",e instanceof Error?e.name:"unknown"),{ok:!1,error:I(e)}}let n=await (0,v.Y)({kind:e.kind,contextId:e.contextId,question:e.question,by:e.by,askedAt:e.askedAt,answeredAt:new Date,answer:r.text,client:k.q,model:r.model});return(0,t.refresh)(),{ok:!0,message:`Answered by ${r.model} in ${(r.ms/1e3).toFixed(1)} s.`,data:{id:n.id,status:"answered",text:r.text,model:r.model,ms:r.ms}}}async function x(e,r){return(0,n.F)("owner",async n=>{let a,i=(a="string"==typeof e?e.trim():"")?a.length>2e3?{ok:!1,error:"A question can be up to 2000 characters."}:(0,y.G)(a)?{ok:!1,error:"That looks like a key or token. Remove it before sending."}:{ok:!0,question:a}:{ok:!1,error:"Type a question first."};if(!i.ok)return{ok:!1,error:i.error};let s=new Date,d=function(e,r){let t="string"==typeof e?e.trim():"";if(!t)return r.providerReady?{via:"provider"}:r.agConnected?{via:"antigravity",model:null}:{via:"none",error:"No AI provider is connected. Connect one under AI Gateway › Bring your own key."};if(t.length>200)return{via:"none",error:g};if(t.startsWith("ag/")){let e=t.slice(3);return r.agConnected&&r.agEnabled.includes(e)?{via:"antigravity",model:e}:{via:"none",error:g}}return r.agConnected&&r.agEnabled.includes(t)?{via:"antigravity",model:t}:{via:"provider",model:t}}(r,await (0,k.c)(s));if("none"===d.via)return{ok:!1,error:d.error};let u=await A(n.id);if(u)return{ok:!1,error:u};if("provider"===d.via)return T({kind:"general",contextId:null,question:i.question,by:n.userId,askedAt:s,model:d.model});let l=d.model,f=await (0,v._)({kind:"general",contextId:null,question:i.question,by:n.userId,now:s,model:l});if(!f.ok)return{ok:!1,error:f.error};if(!f.reused)try{await (0,o.f)({kind:"ok",message:c.B.queuedAudit("general"),resourceId:null,actorUserId:n.userId})}catch{console.warn("audit event failed")}return(0,t.refresh)(),{ok:!0,message:f.reused?c.B.alreadyWaiting:c.B.sentGeneral,data:{id:f.id,status:"pending"}}},{requireActionMember:a.g})}async function $(e){return(0,n.F)("owner",async r=>{if("string"!=typeof e||!h.test(e))return p;let t=await (0,v.F)(e,r.userId,new Date);return t?{ok:!0,data:{status:t.status,answer:t.answer,model:t.model??t.requestedModel,answeredAt:t.answeredAt?t.answeredAt.toISOString():null}}:{ok:!1,error:"That question wasn't found. It may have been cleaned up."}},{requireActionMember:a.g})}async function R(){return(0,n.F)("owner",async e=>{let r=await A(e.id);if(r)return{ok:!1,error:r};try{let e=await (0,b.E)(new Date,{force:!0});if("no-provider"===e.status)return{ok:!1,error:"No AI provider is connected."};if("empty"===e.status)return{ok:!1,error:"There are no recommendations to summarise."}}catch(e){return{ok:!1,error:I(e)}}return(0,t.refresh)(),{ok:!0,message:"Summary updated."}},{requireActionMember:a.g})}(0,u.ensureServerEntryExports)([q,S,x,$,R]),(0,r.registerServerReference)(q,"40cf084ac3b7c0d53d465bdd98638d4ddd733bea0b",null),(0,r.registerServerReference)(S,"407eab4234b6c5cb1a78900690a0259421d6a0d40f",null),(0,r.registerServerReference)(x,"60da6df8083959c2dfce200620ed190dc53d724a1d",null),(0,r.registerServerReference)($,"40488cc3b603999bfff1005a0c6cb2e527d494ef28",null),(0,r.registerServerReference)(R,"0009c9f76c58067c6f678b281b52cbc8d904fad7e9",null),e.s(["G",0,S,"B",0,x,"T",0,q,"P",0,$,"E",0,R],294965);var E=e.i(94473),C=e.i(188282);let F={requireActionMember:e=>(0,a.g)(e)};async function B(e){return(0,n.F)("owner",async r=>{let n=await (0,s.C)(i.t.alertWrite,r.id);if(!n.allowed)return{ok:!1,error:`Too many changes. Try again in ${(0,i.H)(n.retryAfter)}.`};try{let n=await (0,E.m)(e,r);(0,t.revalidatePath)("/settings");let a=Object.keys(e??{}),o=1===a.length&&C.H[a[0]]?.risk==="safe"?`${C.H[a[0]].label}: auto-run ${n[a[0]]?"on":"off"}.`:c.X.autoRunSaved;return{ok:!0,message:o,data:n}}catch(e){if(e instanceof E.s)return{ok:!1,error:"Something in that request wasn't valid."};throw e}},F,"local")}async function D(e){return(0,n.F)("owner",async r=>{let n=await (0,s.C)(i.t.alertWrite,r.id);if(!n.allowed)return{ok:!1,error:`Too many changes. Try again in ${(0,i.H)(n.retryAfter)}.`};try{let n=await (0,E.C)(e,r);return(0,t.revalidatePath)("/settings"),{ok:!0,message:`Auto-rollback ${n.enabled?"on":"off"} \xb7 first ${n.windowMin} minutes.`,data:n}}catch(e){if(e instanceof E.s)return{ok:!1,error:"Something in that request wasn't valid."};throw e}},F,"local")}async function M(e){return(0,n.F)("owner",async r=>{let n=await (0,s.C)(i.t.alertWrite,r.id);if(!n.allowed)return{ok:!1,error:`Too many changes. Try again in ${(0,i.H)(n.retryAfter)}.`};try{let n=await (0,E.o)(e,r);return(0,t.revalidatePath)("/settings"),{ok:!0,message:`Automatic security fixes ${n.enabled?"on":"off"}.`,data:n}}catch(e){if(e instanceof E.s)return{ok:!1,error:"Something in that request wasn't valid."};throw e}},F,"local")}(0,u.ensureServerEntryExports)([B,D,M]),(0,r.registerServerReference)(B,"40beee1fcadfbf7d7dfab9cc9cb75fd10949eb153a",null),(0,r.registerServerReference)(D,"40e63bf13a86d1744068afea46bdf18a166fb3d94d",null),(0,r.registerServerReference)(M,"40046d32c859502a4fbc40babf102db35597f94326",null),e.s(["G",0,D,"m",0,B,"F",0,M],598513)}];
2
2
 
3
3
  //# sourceMappingURL=src_private_notes_notes-actions_ts_1g63g8u965fhc._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[234163,a=>{"use strict";var b=a.i(903769),c=a.i(760937),d=a.i(861600),e=a.i(294965),f=a.i(598513),g=a.i(137936),h=a.i(118558),i=a.i(379416),j=a.i(427221),k=a.i(600079),l=a.i(109307),m=a.i(411350),n=a.i(249431),o=a.i(713095);let p={requireActionMember:l.g},q="That agent is already gone. It reappears with its next request.";async function r(a,b){return(0,k.F)("owner",async c=>{let d=i.z.uuid().safeParse(a);if(!d.success)return{ok:!1,error:q};let e=j.z.string().trim().regex(n.p).safeParse(b);return e.success?await (0,m.o)(d.data,e.data,c.id)?((0,h.revalidatePath)("/ai/agents"),{ok:!0,message:e.data?"Agent renamed.":"Agent name reset."}):{ok:!1,error:q}:{ok:!1,error:"Check the highlighted fields.",fieldErrors:{name:"Use up to 40 letters, digits, spaces, dots, dashes or underscores."}}},p,"local")}async function s(a){return(0,k.F)("owner",async b=>{let c=i.z.uuid().safeParse(a);return c.success&&await (0,m.U)(c.data,b.id)?((0,h.revalidatePath)("/ai/agents"),{ok:!0,message:"Agent forgotten. It reappears with its next request."}):{ok:!1,error:q}},p,"local")}(0,o.ensureServerEntryExports)([r,s]),(0,g.registerServerReference)(r,"603bf850e38a3a69b17ac2e9425e7b7433aa11c79a",null),(0,g.registerServerReference)(s,"4015a9d25ec4865a31659f88493375153519ea5825",null),a.s(["00087cd27f5ea6471195755a9498636f44f935e3c4",()=>e.E,"00afe6df7716ac00fcff0cac83df5e51441c92b322",()=>c.f,"00ca79d04283ceeab96fac38413551fb6530d42bee",()=>b.f,"4015787924ac0f9a6a29688580ae095b2e61475abc",()=>f.m,"4015a9d25ec4865a31659f88493375153519ea5825",0,s,"402f3d91fa7ba75f0ed3c1019d4982b5c45d8d1ab4",()=>e.G,"40614b98a064ca9f358d1cb782a3b4ca869256519b",()=>f.G,"40c0d06ea0f4d55c6bb94812784da837fb9d2d1d02",()=>e.T,"40d3dc750d21ba248f85d991e8dcfbfc5cb7c9629f",()=>d.f,"40f54e3d51e8dfd3f4a4030141ef9248db0963a157",()=>f.F,"603bf850e38a3a69b17ac2e9425e7b7433aa11c79a",0,r],234163)}];
1
+ module.exports=[234163,a=>{"use strict";var b=a.i(903769),c=a.i(760937),d=a.i(861600),e=a.i(294965),f=a.i(598513),g=a.i(137936),h=a.i(118558),i=a.i(379416),j=a.i(427221),k=a.i(600079),l=a.i(109307),m=a.i(411350),n=a.i(249431),o=a.i(713095);let p={requireActionMember:l.g},q="That agent is already gone. It reappears with its next request.";async function r(a,b){return(0,k.F)("owner",async c=>{let d=i.z.uuid().safeParse(a);if(!d.success)return{ok:!1,error:q};let e=j.z.string().trim().regex(n.p).safeParse(b);return e.success?await (0,m.o)(d.data,e.data,c.id)?((0,h.revalidatePath)("/ai/agents"),{ok:!0,message:e.data?"Agent renamed.":"Agent name reset."}):{ok:!1,error:q}:{ok:!1,error:"Check the highlighted fields.",fieldErrors:{name:"Use up to 40 letters, digits, spaces, dots, dashes or underscores."}}},p,"local")}async function s(a){return(0,k.F)("owner",async b=>{let c=i.z.uuid().safeParse(a);return c.success&&await (0,m.U)(c.data,b.id)?((0,h.revalidatePath)("/ai/agents"),{ok:!0,message:"Agent forgotten. It reappears with its next request."}):{ok:!1,error:q}},p,"local")}(0,o.ensureServerEntryExports)([r,s]),(0,g.registerServerReference)(r,"604425de941659268e1e89cd7a5a2052faccbdfb6a",null),(0,g.registerServerReference)(s,"40b0bf1dd5e9427b94e69fe8e1acb131d3b463a7c1",null),a.s(["0004bc8f70189e3081681fbee4c916e42033313963",()=>b.f,"0009c9f76c58067c6f678b281b52cbc8d904fad7e9",()=>e.E,"0017b4401a5071b40ca56482727ec3be44416ded49",()=>c.f,"40046d32c859502a4fbc40babf102db35597f94326",()=>f.F,"407080c491b273d4eb0682565cc1134cd966f88043",()=>d.f,"407eab4234b6c5cb1a78900690a0259421d6a0d40f",()=>e.G,"40b0bf1dd5e9427b94e69fe8e1acb131d3b463a7c1",0,s,"40beee1fcadfbf7d7dfab9cc9cb75fd10949eb153a",()=>f.m,"40cf084ac3b7c0d53d465bdd98638d4ddd733bea0b",()=>e.T,"40e63bf13a86d1744068afea46bdf18a166fb3d94d",()=>f.G,"604425de941659268e1e89cd7a5a2052faccbdfb6a",0,r],234163)}];
2
2
 
3
3
  //# sourceMappingURL=1oeh_server_app_%28console%29_%28private%29_ai_agents_page_actions_1q6nc5chwn5k4.js.map