better-supabase 0.5.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (536) hide show
  1. package/README.md +299 -41
  2. package/dist/access-sql-B0dF-SoF.js +181 -0
  3. package/dist/actor-CQTlc1Hh.d.ts +43 -0
  4. package/dist/adapter-Bc1o3zyy.js +1106 -0
  5. package/dist/agents-CVHGd7It.d.ts +94 -0
  6. package/dist/ai-cache-CBWs1W0k.js +80 -0
  7. package/dist/ai-cache-DaDu_G5L.d.ts +64 -0
  8. package/dist/ai-chat-7amvXjmQ.d.ts +590 -0
  9. package/dist/ai-chat-B24UI962.js +743 -0
  10. package/dist/ai-files-CSPNswUY.js +319 -0
  11. package/dist/ai-sdk/agents/index.d.ts +74 -0
  12. package/dist/ai-sdk/agents/index.js +159 -0
  13. package/dist/ai-sdk/batches/index.d.ts +74 -0
  14. package/dist/ai-sdk/batches/index.js +180 -0
  15. package/dist/ai-sdk/cache/index.d.ts +38 -0
  16. package/dist/ai-sdk/cache/index.js +127 -0
  17. package/dist/ai-sdk/chat/index.d.ts +2 -0
  18. package/dist/ai-sdk/chat/index.js +246 -0
  19. package/dist/ai-sdk/embeddings/index.d.ts +3 -0
  20. package/dist/ai-sdk/embeddings/index.js +2 -0
  21. package/dist/ai-sdk/files/index.d.ts +61 -0
  22. package/dist/ai-sdk/files/index.js +111 -0
  23. package/dist/ai-sdk/index.d.ts +145 -0
  24. package/dist/ai-sdk/index.js +174 -0
  25. package/dist/ai-sdk/mcp/index.d.ts +102 -0
  26. package/dist/ai-sdk/mcp/index.js +362 -0
  27. package/dist/ai-sdk/memory/index.d.ts +67 -0
  28. package/dist/ai-sdk/memory/index.js +175 -0
  29. package/dist/ai-sdk/react/index.d.ts +2 -0
  30. package/dist/ai-sdk/react/index.js +3 -0
  31. package/dist/ai-sdk/react/server.d.ts +6 -0
  32. package/dist/ai-sdk/react/server.js +7 -0
  33. package/dist/ai-sdk/workflow/index.d.ts +249 -0
  34. package/dist/ai-sdk/workflow/index.js +575 -0
  35. package/dist/ai-sdk/workflow/react/index.d.ts +20 -0
  36. package/dist/ai-sdk/workflow/react/index.js +66 -0
  37. package/dist/ai-sdk/workflow/react/server.d.ts +10 -0
  38. package/dist/ai-sdk/workflow/react/server.js +12 -0
  39. package/dist/ai-tasks-Cd1HMFvB.d.ts +131 -0
  40. package/dist/announcements-CiyOs-xP.js +107 -0
  41. package/dist/announcements-ZRGnScWI.d.ts +72 -0
  42. package/dist/api-keys-rCGtKaZA.d.ts +156 -0
  43. package/dist/assistant-DwdpDH1q.d.ts +147 -0
  44. package/dist/astro/index.d.ts +86 -0
  45. package/dist/astro/index.js +93 -0
  46. package/dist/attributes-5dYul0u0.js +13 -0
  47. package/dist/auth-link-BjFPqwLz.d.ts +97 -0
  48. package/dist/auth-link-DrDX9KOT.js +114 -0
  49. package/dist/authorization-BFCqamMs.d.ts +172 -0
  50. package/dist/before-route-CnR0C0Jr.js +30 -0
  51. package/dist/bind-Bu_ZNa3W.d.ts +62 -0
  52. package/dist/bind-l4kAvYSv.js +97 -0
  53. package/dist/block-events-CrT8r7Fe.js +76 -0
  54. package/dist/block-fields-GFkxl4dP.js +49 -0
  55. package/dist/block-fields-SJ6fEf3o.d.ts +31 -0
  56. package/dist/block-helpers-CKtbFcRv.d.ts +37 -0
  57. package/dist/block-helpers-DWHxHsEQ.js +190 -0
  58. package/dist/block-hooks-BmjMyXTa.js +114 -0
  59. package/dist/block-hooks-plbZ0AbJ.d.ts +107 -0
  60. package/dist/{kit-transport-DJlHQUBU.js → block-transport-BLr-ZgLc.js} +11 -7
  61. package/dist/block-transport-DvaoPuZ9.d.ts +48 -0
  62. package/dist/blocks/agents/index.d.ts +3 -0
  63. package/dist/blocks/agents/index.js +123 -0
  64. package/dist/blocks/ai-cache/index.d.ts +3 -0
  65. package/dist/blocks/ai-cache/index.js +3 -0
  66. package/dist/blocks/ai-chat/index.d.ts +31 -0
  67. package/dist/blocks/ai-chat/index.js +5 -0
  68. package/dist/blocks/ai-chat/react/index.d.ts +77 -0
  69. package/dist/blocks/ai-chat/react/index.js +387 -0
  70. package/dist/blocks/ai-chat/react/server.d.ts +16 -0
  71. package/dist/blocks/ai-chat/react/server.js +14 -0
  72. package/dist/blocks/ai-files/index.d.ts +14 -0
  73. package/dist/blocks/ai-files/index.js +3 -0
  74. package/dist/blocks/ai-providers/index.d.ts +7 -0
  75. package/dist/blocks/ai-providers/index.js +211 -0
  76. package/dist/blocks/ai-tasks/index.d.ts +3 -0
  77. package/dist/blocks/ai-tasks/index.js +203 -0
  78. package/dist/blocks/announcements/index.d.ts +3 -0
  79. package/dist/blocks/announcements/index.js +3 -0
  80. package/dist/blocks/announcements/react/index.d.ts +31 -0
  81. package/dist/blocks/announcements/react/index.js +86 -0
  82. package/dist/blocks/announcements/react/server.d.ts +6 -0
  83. package/dist/blocks/announcements/react/server.js +7 -0
  84. package/dist/blocks/api-keys/index.d.ts +35 -0
  85. package/dist/blocks/api-keys/index.js +334 -0
  86. package/dist/blocks/attachments/index.d.ts +210 -0
  87. package/dist/blocks/attachments/index.js +222 -0
  88. package/dist/blocks/audit/index.d.ts +366 -0
  89. package/dist/blocks/audit/index.js +714 -0
  90. package/dist/blocks/billing/index.d.ts +265 -0
  91. package/dist/blocks/billing/index.js +400 -0
  92. package/dist/blocks/comments/index.d.ts +200 -0
  93. package/dist/blocks/comments/index.js +207 -0
  94. package/dist/blocks/connectors/index.d.ts +3 -0
  95. package/dist/blocks/connectors/index.js +164 -0
  96. package/dist/blocks/data-lifecycle/index.d.ts +251 -0
  97. package/dist/blocks/data-lifecycle/index.js +353 -0
  98. package/dist/blocks/entitlements/index.d.ts +14 -0
  99. package/dist/blocks/entitlements/index.js +25 -0
  100. package/dist/blocks/flags/index.d.ts +226 -0
  101. package/dist/blocks/flags/index.js +282 -0
  102. package/dist/blocks/inbox/index.d.ts +6 -0
  103. package/dist/blocks/inbox/index.js +499 -0
  104. package/dist/blocks/inbox/react/index.d.ts +2 -0
  105. package/dist/blocks/inbox/react/index.js +225 -0
  106. package/dist/blocks/inbox/react/server.d.ts +10 -0
  107. package/dist/blocks/inbox/react/server.js +12 -0
  108. package/dist/blocks/index.d.ts +65 -0
  109. package/dist/blocks/index.js +77 -0
  110. package/dist/blocks/jobs/index.d.ts +297 -0
  111. package/dist/blocks/jobs/index.js +1051 -0
  112. package/dist/blocks/knowledge/index.d.ts +3 -0
  113. package/dist/blocks/knowledge/index.js +3 -0
  114. package/dist/blocks/memory/index.d.ts +8 -0
  115. package/dist/blocks/memory/index.js +289 -0
  116. package/dist/blocks/notifications/index.d.ts +297 -0
  117. package/dist/blocks/notifications/index.js +425 -0
  118. package/dist/blocks/notifications/react/index.d.ts +44 -0
  119. package/dist/blocks/notifications/react/index.js +67 -0
  120. package/dist/blocks/notifications/react/server.d.ts +6 -0
  121. package/dist/blocks/notifications/react/server.js +7 -0
  122. package/dist/blocks/onboarding/index.d.ts +3 -0
  123. package/dist/blocks/onboarding/index.js +64 -0
  124. package/dist/blocks/onboarding/react/index.d.ts +28 -0
  125. package/dist/blocks/onboarding/react/index.js +78 -0
  126. package/dist/blocks/onboarding/react/server.d.ts +7 -0
  127. package/dist/blocks/onboarding/react/server.js +7 -0
  128. package/dist/blocks/organizations/index.d.ts +241 -0
  129. package/dist/blocks/organizations/index.js +400 -0
  130. package/dist/blocks/outbox/index.d.ts +3 -0
  131. package/dist/blocks/outbox/index.js +266 -0
  132. package/dist/blocks/profiles/index.d.ts +40 -0
  133. package/dist/blocks/profiles/index.js +28 -0
  134. package/dist/blocks/push/index.d.ts +185 -0
  135. package/dist/blocks/push/index.js +258 -0
  136. package/dist/blocks/settings/index.d.ts +89 -0
  137. package/dist/blocks/settings/index.js +104 -0
  138. package/dist/blocks/sso/index.d.ts +198 -0
  139. package/dist/blocks/sso/index.js +1297 -0
  140. package/dist/blocks/usage/index.d.ts +4 -0
  141. package/dist/blocks/usage/index.js +233 -0
  142. package/dist/blocks/waitlist/index.d.ts +117 -0
  143. package/dist/blocks/waitlist/index.js +132 -0
  144. package/dist/blocks/webhooks/index.d.ts +304 -0
  145. package/dist/{webhooks → blocks/webhooks}/index.js +468 -148
  146. package/dist/blocks/workflow-builder/index.d.ts +21 -0
  147. package/dist/blocks/workflow-builder/index.js +5 -0
  148. package/dist/blocks/workflow-builder/react/index.d.ts +47 -0
  149. package/dist/blocks/workflow-builder/react/index.js +119 -0
  150. package/dist/blocks/workflow-builder/react/server.d.ts +8 -0
  151. package/dist/blocks/workflow-builder/react/server.js +11 -0
  152. package/dist/blocks/workflows/index.d.ts +3 -0
  153. package/dist/blocks/workflows/index.js +3 -0
  154. package/dist/blocks/workflows/react/index.d.ts +47 -0
  155. package/dist/blocks/workflows/react/index.js +137 -0
  156. package/dist/blocks/workflows/react/server.d.ts +8 -0
  157. package/dist/blocks/workflows/react/server.js +11 -0
  158. package/dist/{index-SaTsEfGP.d.ts → bucket-Cl46E3jS.d.ts} +134 -91
  159. package/dist/{simplify-_0oUKqCd.js → build-BXIzE6Xv.js} +222 -124
  160. package/dist/{channel-FQW-CnGR.d.ts → channel-_2Mx1Oyu.d.ts} +2 -2
  161. package/dist/channels-CkgQ_X60.js +114 -0
  162. package/dist/chat-sdk/index.d.ts +303 -0
  163. package/dist/chat-sdk/index.js +733 -0
  164. package/dist/chat-sdk/react/index.d.ts +2 -0
  165. package/dist/chat-sdk/react/index.js +3 -0
  166. package/dist/chat-sdk/react/server.d.ts +3 -0
  167. package/dist/chat-sdk/react/server.js +2 -0
  168. package/dist/claims-DDBQT6BK.js +61 -0
  169. package/dist/{claims-BAf6c7is.js → claims-PqzCxaTD.js} +39 -2
  170. package/dist/cli/bin.js +1 -1
  171. package/dist/cli/{codemod-DqV7612m.js → codemod-Bl_tQpHn.js} +105 -2
  172. package/dist/cli/config-B9HkL8nF.js +2 -0
  173. package/dist/cli/config-DU7EJImt.js +49 -0
  174. package/dist/cli/config-NiPxAmUF.js +1077 -0
  175. package/dist/cli/{dist-xn4wlboc.js → dist-DRAVaE6w.js} +111 -1
  176. package/dist/cli/{doctor-L7Z8mYTx.js → doctor-B4JOm_ox.js} +992 -316
  177. package/dist/cli/{env-DmKv_G4A.js → env-CJLbUVPB.js} +1 -1
  178. package/dist/cli/{env-jIFUADLY.js → env-qXgyMV6r.js} +2 -2
  179. package/dist/cli/fresh-import-BeYf9I3x.js +40 -0
  180. package/dist/cli/gen-BGLb_zou.js +3100 -0
  181. package/dist/cli/gen-DAH8FM2W.js +2 -0
  182. package/dist/cli/index.d.ts +44 -5
  183. package/dist/cli/index.js +7 -7
  184. package/dist/cli/{init-Saf5-R9T.js → init-BIIwclPg.js} +242 -27
  185. package/dist/cli/{introspect--H7oGmcd.js → introspect-DNUTuNvb.js} +5 -5
  186. package/dist/cli/{io-k41_z-jT.js → io-DI1mTdSA.js} +12 -3
  187. package/dist/cli/{keys-ByKHnvP9.js → keys-BGCnnb-s.js} +8 -6
  188. package/dist/cli/{ohash-D7bG_EOb.js → ohash-BjQY1cBb.js} +1 -1
  189. package/dist/cli/{openapi-Cp5Fyta-.js → openapi-BlRJ18s3.js} +2 -2
  190. package/dist/cli/{project-B_GeXyHh.js → project-DZRaBaY7.js} +11 -6
  191. package/dist/cli/read-sets-CETOSFx4.js +223 -0
  192. package/dist/cli/{run-BKR2W_79.js → run-DNWxHynX.js} +33 -23
  193. package/dist/cli/{seed-CUlqWh-8.js → seed-DQzqT7LP.js} +8 -6
  194. package/dist/cli/{skills-LJJIhLFR.js → skills-QQs4q68J.js} +3 -2
  195. package/dist/cli/sql-D0GUtUPp.js +536 -0
  196. package/dist/cli/{config-CPVpXP5I.js → supabase-toml-B-bIukQF.js} +72 -942
  197. package/dist/cli/typegen-version-DeFbtzYI.js +8 -0
  198. package/dist/cli/{version-BDJuO0UR.js → version-hr88OZG0.js} +1 -1
  199. package/dist/client/index.d.ts +3 -2
  200. package/dist/client/index.js +11 -71
  201. package/dist/client/native/index.d.ts +228 -0
  202. package/dist/client/native/index.js +361 -0
  203. package/dist/client-CI0Z2zWX.js +277 -0
  204. package/dist/cloud-event-BnmD5fb9.js +46 -0
  205. package/dist/cloud-event-C1JCc1bH.d.ts +50 -0
  206. package/dist/{compiler-BXH_aZ7N.d.ts → compiler-DY_wkj4R.d.ts} +2 -2
  207. package/dist/compose-BIBNgAnq.js +53 -0
  208. package/dist/composite-Bt1YK3Ke.d.ts +146 -0
  209. package/dist/composite-DhE66P5u.js +130 -0
  210. package/dist/config/index.d.ts +6 -4
  211. package/dist/config/index.js +5 -5
  212. package/dist/{config-T_ejwyd3.d.ts → config-D44Y7PAv.d.ts} +406 -205
  213. package/dist/{config-DreERlKo.js → config-Dn7F5k9A.js} +62 -14
  214. package/dist/connector-Dv8kK0MO.d.ts +107 -0
  215. package/dist/connectors-hkLCwyEz.d.ts +120 -0
  216. package/dist/context-BCrWe7ow.d.ts +237 -0
  217. package/dist/credentials/index.d.ts +31 -0
  218. package/dist/credentials/index.js +168 -0
  219. package/dist/cron-DVPUg5k3.js +145 -0
  220. package/dist/csv-CPAzEmB6.js +25 -0
  221. package/dist/db-exception-CnWcYPxL.js +15 -0
  222. package/dist/{define-cNKzqwL_.js → define-B-TVjC25.js} +784 -227
  223. package/dist/{define-Bp_BZa5h.d.ts → define-CJJkkr1-.d.ts} +353 -61
  224. package/dist/edge/index.d.ts +69 -11
  225. package/dist/edge/index.js +191 -75
  226. package/dist/elysia/index.d.ts +59 -0
  227. package/dist/elysia/index.js +62 -0
  228. package/dist/embeddings-4ZvFzjsU.js +127 -0
  229. package/dist/embeddings-C9KGQnXt.d.ts +68 -0
  230. package/dist/{refresh-BTrQ_ZTp.d.ts → ended-jLfvw8h-.d.ts} +20 -2
  231. package/dist/{entitlements-DUxU4oHe.d.ts → entitlements-DHrY2UDZ.d.ts} +16 -7
  232. package/dist/entitlements-DRl6ZJUm.js +24 -0
  233. package/dist/envelope-DqnYGRw7.js +47 -0
  234. package/dist/{errors-DtwXa6b8.js → errors-B11Duf73.js} +82 -13
  235. package/dist/errors-DLjJHPLK.js +44 -0
  236. package/dist/escape-like-DHfx6jRr.js +7 -0
  237. package/dist/escape-like-ImTK0ps_.d.ts +15 -0
  238. package/dist/eve/index.d.ts +220 -0
  239. package/dist/eve/index.js +504 -0
  240. package/dist/eve-gT2Fpjut.d.ts +151 -0
  241. package/dist/events/index.d.ts +4 -3
  242. package/dist/events/index.js +9 -50
  243. package/dist/events-DWDhx77e.d.ts +549 -0
  244. package/dist/executor-Bq28caBo.js +718 -0
  245. package/dist/executor-C-R4pucm.js +83 -0
  246. package/dist/executor-CaWigTyR.d.ts +148 -0
  247. package/dist/executor-D14tGopJ.d.ts +36 -0
  248. package/dist/{executor-Cghdstwu.d.ts → executor-DbvExCFC.d.ts} +7 -1
  249. package/dist/{sql-Coh6n4cC.js → executor-De1Of3m3.js} +210 -11
  250. package/dist/executor-DvsBbNBS.d.ts +261 -0
  251. package/dist/expo/index.d.ts +79 -0
  252. package/dist/expo/index.js +129 -0
  253. package/dist/expo-sqlite/index.d.ts +58 -0
  254. package/dist/expo-sqlite/index.js +104 -0
  255. package/dist/field-errors-BFOa7WhB.d.ts +99 -0
  256. package/dist/field-errors-VF1yb8yI.js +13 -0
  257. package/dist/framework-CONDyPYx.js +51 -0
  258. package/dist/framework-DuVb4Xa8.d.ts +25 -0
  259. package/dist/gateway-C1ssRHnf.d.ts +130 -0
  260. package/dist/graph-BGyLLFLX.js +265 -0
  261. package/dist/h3/index.d.ts +59 -0
  262. package/dist/h3/index.js +55 -0
  263. package/dist/h3/v1/index.d.ts +63 -0
  264. package/dist/h3/v1/index.js +49 -0
  265. package/dist/history-BZih6SFP.js +64 -0
  266. package/dist/hono/index.d.ts +56 -7
  267. package/dist/hono/index.js +97 -45
  268. package/dist/{react-C_s7kiNz.js → hooks-1BTCJsiw.js} +104 -133
  269. package/dist/http-Cv4T29xh.js +40 -0
  270. package/dist/http-DdYadv-o.js +126 -0
  271. package/dist/image-url-pIVlO6R1.js +41 -0
  272. package/dist/impersonation-DcqaTBHx.js +148 -0
  273. package/dist/inbox-i7E1ppo6.d.ts +384 -0
  274. package/dist/index-ACiNPN4Z.d.ts +74 -0
  275. package/dist/{index-DgILJRXj.d.ts → index-Bepi-Hgg.d.ts} +91 -28
  276. package/dist/index-BkWT_uBO.d.ts +51 -0
  277. package/dist/index-BpFYMsi0.d.ts +53 -0
  278. package/dist/{index-C7f8cOBM.d.ts → index-Bxih3l0u.d.ts} +2 -2
  279. package/dist/index-CaxrMD1A.d.ts +1 -0
  280. package/dist/index-ClmjK_o-.d.ts +55 -0
  281. package/dist/index-CtuakVRc.d.ts +267 -0
  282. package/dist/index-D48jVS-N.d.ts +246 -0
  283. package/dist/index-DDrYaUcq.d.ts +138 -0
  284. package/dist/index-DQh4VCc9.d.ts +98 -0
  285. package/dist/{live-D9W2M5aO.d.ts → index-DunNRdnT.d.ts} +136 -38
  286. package/dist/index.d.ts +65 -18
  287. package/dist/index.js +42 -14
  288. package/dist/invalidate-BBqhpxyB.d.ts +19 -0
  289. package/dist/json-CEnpTHlZ.js +16 -0
  290. package/dist/json-schema-CvER4kgT.js +502 -0
  291. package/dist/keys-4MnkWTTh.js +35 -0
  292. package/dist/kit-B5tid-q5.d.ts +60 -0
  293. package/dist/kit-Fm-Fv7q5.js +78 -0
  294. package/dist/knowledge-BXBbT0Tr.d.ts +176 -0
  295. package/dist/knowledge-CDmiMLew.js +255 -0
  296. package/dist/lint/index.d.ts +1 -1
  297. package/dist/lint/index.js +37 -0
  298. package/dist/list/index.d.ts +3 -2
  299. package/dist/list/index.js +1 -444
  300. package/dist/{index-fag8VJZ2.d.ts → list-query-BRt-zDF7.d.ts} +20 -12
  301. package/dist/list-query-gl808ac1.js +459 -0
  302. package/dist/{live-CdJBOc4f.js → live-CTAZQkwl.js} +99 -14
  303. package/dist/logger-DWVYUmwi.d.ts +18 -0
  304. package/dist/mcp/index.d.ts +38 -11
  305. package/dist/mcp/index.js +82 -46
  306. package/dist/mcp/sdk/index.d.ts +105 -0
  307. package/dist/mcp/sdk/index.js +126 -0
  308. package/dist/message-CaKlqdsX.js +219 -0
  309. package/dist/message-CfDoR0Y6.d.ts +94 -0
  310. package/dist/messages-B9-5887d.js +715 -0
  311. package/dist/messages-DYP0sUTe.d.ts +59 -0
  312. package/dist/{mfa-CusDgPaD.d.ts → mfa-Daak8ukG.d.ts} +8 -2
  313. package/dist/modules-DpPwzC7E.d.ts +192 -0
  314. package/dist/modules-dxrVK3ID.js +228 -0
  315. package/dist/nestjs/index.d.ts +68 -0
  316. package/dist/nestjs/index.js +164 -0
  317. package/dist/next/client/index.d.ts +35 -0
  318. package/dist/next/client/index.js +36 -0
  319. package/dist/next/image/index.js +3 -24
  320. package/dist/next/index.d.ts +150 -51
  321. package/dist/next/index.js +261 -107
  322. package/dist/node/index.d.ts +4 -0
  323. package/dist/node/index.js +210 -0
  324. package/dist/node-headers-AO06VhqH.d.ts +24 -0
  325. package/dist/node-headers-C71zNQHe.js +55 -0
  326. package/dist/nuxt/index.d.ts +60 -0
  327. package/dist/nuxt/index.js +64 -0
  328. package/dist/onboarding-BZGHYJks.d.ts +62 -0
  329. package/dist/openapi/index.d.ts +1 -1
  330. package/dist/openapi/index.js +3 -3
  331. package/dist/orpc/index.d.ts +70 -11
  332. package/dist/orpc/index.js +73 -24
  333. package/dist/otel/index.d.ts +7 -7
  334. package/dist/otel/index.js +87 -57
  335. package/dist/outbox-Cq7pPYvl.d.ts +161 -0
  336. package/dist/{plugin-o144f322.d.ts → plugin-FGY8UhYm.d.ts} +30 -10
  337. package/dist/plugin-tfXW1-qO.js +45 -0
  338. package/dist/plugins/actor/index.d.ts +2 -2
  339. package/dist/plugins/actor/index.js +3 -3
  340. package/dist/plugins/rules/index.d.ts +11 -4
  341. package/dist/plugins/rules/index.js +40 -13
  342. package/dist/plugins/soft-delete/index.d.ts +5 -4
  343. package/dist/plugins/soft-delete/index.js +10 -5
  344. package/dist/plugins/tenant/index.d.ts +2 -2
  345. package/dist/plugins/tenant/index.js +18 -11
  346. package/dist/plugins/timestamps/index.d.ts +5 -3
  347. package/dist/plugins/timestamps/index.js +6 -4
  348. package/dist/plugins/validation/index.d.ts +2 -2
  349. package/dist/plugins/validation/index.js +10 -6
  350. package/dist/{pool-C9voM4Kw.d.ts → pool-CAu2nLrL.d.ts} +2 -2
  351. package/dist/postgres/index.d.ts +4 -4
  352. package/dist/postgres/index.js +1 -2
  353. package/dist/{postgrest-CruYKAvV.d.ts → postgrest-BLVdEnfe.d.ts} +13 -3
  354. package/dist/powersync/index.d.ts +43 -0
  355. package/dist/powersync/index.js +199 -0
  356. package/dist/powersync/react/index.d.ts +87 -0
  357. package/dist/powersync/react/index.js +108 -0
  358. package/dist/{problem-BW1KhzSG.js → problem-BreOl8b8.js} +14 -3
  359. package/dist/{problem-Blxe8S31.d.ts → problem-DD8LZFjc.d.ts} +21 -3
  360. package/dist/provider-BH5UWZJ6.d.ts +113 -0
  361. package/dist/provider-Di3sRutW.js +57 -0
  362. package/dist/query/index.d.ts +4 -2
  363. package/dist/query/index.js +4 -3
  364. package/dist/{query-CCbo44lG.js → query-BQ-NaZon.js} +141 -24
  365. package/dist/{queue-BYUCjr59.d.ts → queue-CLJurhdy.d.ts} +258 -83
  366. package/dist/react/index.d.ts +11 -7
  367. package/dist/react/index.js +7 -3
  368. package/dist/react/native/index.d.ts +116 -0
  369. package/dist/react/native/index.js +130 -0
  370. package/dist/react/server.d.ts +28 -10
  371. package/dist/react/server.js +22 -5
  372. package/dist/react/session.d.ts +2 -2
  373. package/dist/react-4ZqkP8da.js +79 -0
  374. package/dist/react-F80mF4-t.js +409 -0
  375. package/dist/react-router/index.d.ts +83 -0
  376. package/dist/react-router/index.js +89 -0
  377. package/dist/react-topic-seAWjL3_.js +38 -0
  378. package/dist/{read-set-DQFt1N_Y.js → read-set-DuKWC9Mj.js} +67 -25
  379. package/dist/realtime/index.d.ts +4 -5
  380. package/dist/realtime/index.js +144 -82
  381. package/dist/refusal-CeJWxmkH.js +61 -0
  382. package/dist/refusal-D1rgbzNq.d.ts +15 -0
  383. package/dist/replicas-CwrYp5Zj.js +94 -0
  384. package/dist/{view-Bq64ki8-.js → resolve-D_IcnvFd.js} +239 -289
  385. package/dist/{resolve-C15TJq77.d.ts → resolve-KW8nCeL6.d.ts} +29 -45
  386. package/dist/{resource-CRxxwkQq.js → resource-BsvzCMlX.js} +4 -4
  387. package/dist/{resource-D8iqWMr-.d.ts → resource-D6Uc7Sk7.d.ts} +5 -5
  388. package/dist/respond-BUgsXNgk.js +91 -0
  389. package/dist/respond-DoBijysA.d.ts +93 -0
  390. package/dist/result-D7y2fT87.d.ts +282 -0
  391. package/dist/{result-BKiliPY7.js → result-DzUbqgdW.js} +27 -2
  392. package/dist/run-state-CPo-1X2B.d.ts +12 -0
  393. package/dist/run-state-CgBKzYMW.js +13 -0
  394. package/dist/search-CUWCRYKL.js +9 -0
  395. package/dist/server/index.d.ts +143 -21
  396. package/dist/server/index.js +46 -14
  397. package/dist/{respond-D2OQl62-.d.ts → server-CeVeeXwz.d.ts} +225 -80
  398. package/dist/session-ChiXDZdZ.d.ts +72 -0
  399. package/dist/shared-CBxosKK3.js +75 -0
  400. package/dist/{shared-D1dRUrAg.js → shared-CxWmcyqB.js} +2 -1
  401. package/dist/shared-DDSjEGDR.d.ts +11 -0
  402. package/dist/sign-in-BCV5S2WZ.d.ts +49 -0
  403. package/dist/sign-in-Cb1mwv6X.js +86 -0
  404. package/dist/{signers-Cc6r98SW.d.ts → signers-4y62_VIi.d.ts} +13 -9
  405. package/dist/simplify-DDO0j0LI.js +83 -0
  406. package/dist/solid/index.d.ts +131 -0
  407. package/dist/solid/index.js +344 -0
  408. package/dist/solid-start/index.d.ts +75 -0
  409. package/dist/solid-start/index.js +58 -0
  410. package/dist/{spec-pins-C3oc-Tdp.js → spec-pins--j6mTok4.js} +8 -1
  411. package/dist/{spec-pins-CqorWDnO.d.ts → spec-pins-C89s6DyW.d.ts} +7 -0
  412. package/dist/sql/index.d.ts +330 -194
  413. package/dist/sql/index.js +34901 -6489
  414. package/dist/ssr/index.d.ts +6 -5
  415. package/dist/ssr/index.js +3 -3
  416. package/dist/{standard-D7r6dMUu.js → standard-BK0cqJ7y.js} +4 -3
  417. package/dist/{standard-J4YgMOLm.d.ts → standard-CYsm7xpT.d.ts} +1 -1
  418. package/dist/stats-D_AD9GGu.js +1123 -0
  419. package/dist/storage/index.d.ts +5 -5
  420. package/dist/storage/index.js +1027 -368
  421. package/dist/store-BdH5ruDx.js +66 -0
  422. package/dist/store-CGjgWu5n.d.ts +68 -0
  423. package/dist/streams/index.d.ts +76 -0
  424. package/dist/streams/index.js +77 -0
  425. package/dist/streams/redis/index.d.ts +52 -0
  426. package/dist/streams/redis/index.js +185 -0
  427. package/dist/stripe-BMj5LtsT.js +38 -0
  428. package/dist/stripe-D04h-QBT.d.ts +136 -0
  429. package/dist/{support-Dk6vdmEw.js → support-BivNqSpK.js} +35 -12
  430. package/dist/{support-view-Da5peKFg.d.ts → support-view-33Oi07TT.d.ts} +1 -1
  431. package/dist/svelte/index.d.ts +114 -0
  432. package/dist/svelte/index.js +344 -0
  433. package/dist/sveltekit/index.d.ts +116 -0
  434. package/dist/sveltekit/index.js +106 -0
  435. package/dist/tags-B99_U9Pp.js +39 -0
  436. package/dist/tags-Cx-LnIQP.d.ts +30 -0
  437. package/dist/tanstack-db/index.d.ts +71 -0
  438. package/dist/tanstack-db/index.js +72 -0
  439. package/dist/tanstack-start/index.d.ts +75 -0
  440. package/dist/tanstack-start/index.js +95 -0
  441. package/dist/tee-CoEppCER.js +101 -0
  442. package/dist/{template-TxrGI5jR.js → template--jDkl3UP.js} +34 -13
  443. package/dist/template-CwO38Do8.d.ts +6 -0
  444. package/dist/temporal-BJGitm-h.js +79 -0
  445. package/dist/{temporal-required-CAt4Dc9Z.js → temporal-required-BVvW7SYJ.js} +3 -2
  446. package/dist/tenant-I1TEZ_BX.js +27 -0
  447. package/dist/tenant-icPeuUBN.d.ts +17 -0
  448. package/dist/testing/index.d.ts +343 -37
  449. package/dist/testing/index.js +1186 -79
  450. package/dist/timing-CyTQPubY.js +92 -0
  451. package/dist/ttl-Hr34gRu8.js +12 -0
  452. package/dist/{types-Dnf_wRDz.d.ts → types-6BdhkmZe.d.ts} +111 -45
  453. package/dist/types-BI-0Sl2v.d.ts +359 -0
  454. package/dist/types-C05bxW-W.d.ts +220 -0
  455. package/dist/types-DGs5L0VN.d.ts +192 -0
  456. package/dist/types-TaiEeBGA.d.ts +156 -0
  457. package/dist/usage-CrvrL2vw.d.ts +177 -0
  458. package/dist/user-change-XzvgafU4.js +130 -0
  459. package/dist/vault-CSO7ss5C.d.ts +50 -0
  460. package/dist/vercel-connect/index.d.ts +47 -0
  461. package/dist/vercel-connect/index.js +119 -0
  462. package/dist/{verify-Ce49ETPz.js → verify-DL41hbvY.js} +85 -13
  463. package/dist/verify-DPuWngD4.d.ts +172 -0
  464. package/dist/{version-DM_Roffb.js → version-Bvv6aLjZ.js} +1 -1
  465. package/dist/view-BeFcRV6G.js +99 -0
  466. package/dist/{view-BEf0diC5.d.ts → view-DbxLNu8L.d.ts} +35 -32
  467. package/dist/vue/index.d.ts +141 -0
  468. package/dist/vue/index.js +362 -0
  469. package/dist/watch-DI34G86j.d.ts +60 -0
  470. package/dist/watch-Xuxrvxq-.js +122 -0
  471. package/dist/{wire-D2dT86vi.js → wire-DtZQ4sdE.js} +15 -5
  472. package/dist/workflow-builder-DJ1oHn8g.js +398 -0
  473. package/dist/workflow-sdk/builder/index.d.ts +85 -0
  474. package/dist/workflow-sdk/builder/index.js +250 -0
  475. package/dist/workflow-sdk/index.d.ts +14 -0
  476. package/dist/workflow-sdk/index.js +3 -0
  477. package/dist/workflow-sdk/world/index.d.ts +107 -0
  478. package/dist/workflow-sdk/world/index.js +702 -0
  479. package/dist/workflow-sdk-B3yLD6Br.d.ts +98 -0
  480. package/dist/workflow-sdk-C2WJ_G2O.js +173 -0
  481. package/dist/workflow-sdk-world-D-prir6O.js +1397 -0
  482. package/dist/workflows-B0j9WKPu.d.ts +185 -0
  483. package/dist/workflows-wu1WWBn7.js +216 -0
  484. package/package.json +470 -29
  485. package/schemas/ai-message-v1.json +258 -0
  486. package/schemas/config-v1.json +1074 -140
  487. package/schemas/doctor-report-v1.json +21 -1
  488. package/schemas/snapshot-v2.json +8 -0
  489. package/skills/better-supabase/SKILL.md +41 -12
  490. package/skills/better-supabase/references/frontend.md +96 -0
  491. package/skills/better-supabase/references/plugins.md +10 -6
  492. package/skills/better-supabase/references/troubleshooting.md +2 -1
  493. package/skills/better-supabase-api/SKILL.md +76 -22
  494. package/skills/better-supabase-api/references/adapters.md +207 -0
  495. package/skills/better-supabase-api/references/ai.md +125 -0
  496. package/skills/better-supabase-api/references/expo.md +65 -0
  497. package/skills/better-supabase-api/references/powersync.md +35 -0
  498. package/skills/better-supabase-api/references/streams-credentials.md +105 -0
  499. package/skills/better-supabase-auth/SKILL.md +62 -18
  500. package/skills/better-supabase-auth/references/authorization-providers.md +51 -0
  501. package/skills/better-supabase-testing/SKILL.md +3 -1
  502. package/dist/cli/config-dtoekM0v.js +0 -2
  503. package/dist/cli/gen-BJc9vdyu.js +0 -2
  504. package/dist/cli/gen-C2osRcr5.js +0 -2204
  505. package/dist/cli/read-sets-BfMQcKy8.js +0 -289
  506. package/dist/cli/sql-DzPbfngx.js +0 -348
  507. package/dist/entitlements-CTEBm7IB.js +0 -20
  508. package/dist/events-aIO7vsIk.d.ts +0 -230
  509. package/dist/executor-BunPOO-k.d.ts +0 -402
  510. package/dist/executor-XycESQPH.js +0 -94
  511. package/dist/impersonation-VfaGc4Q_.js +0 -41
  512. package/dist/index-BGdgBPdf.d.ts +0 -161
  513. package/dist/index-DOESKG27.d.ts +0 -100
  514. package/dist/index-DmXSxbLi.d.ts +0 -62
  515. package/dist/index-Dxn2a5cw.d.ts +0 -50
  516. package/dist/jobs/index.d.ts +0 -226
  517. package/dist/jobs/index.js +0 -1007
  518. package/dist/json-schema-m1fiwKgN.js +0 -208
  519. package/dist/kit-events-CTFDfSwb.js +0 -60
  520. package/dist/kit-transport-B82k1djG.d.ts +0 -33
  521. package/dist/kits-CGLLrNPd.js +0 -157
  522. package/dist/notifications/index.d.ts +0 -162
  523. package/dist/notifications/index.js +0 -264
  524. package/dist/orgs/index.d.ts +0 -132
  525. package/dist/orgs/index.js +0 -245
  526. package/dist/permdock-sql-C2Inc6Xc.d.ts +0 -29
  527. package/dist/permdock-sql-DgOfeixi.js +0 -51
  528. package/dist/plugin-DwARMuQp.js +0 -59
  529. package/dist/server-Csx2sRjg.js +0 -655
  530. package/dist/stats-Bqob3WqT.js +0 -592
  531. package/dist/support-DT-OhSxD.d.ts +0 -88
  532. package/dist/template-mbvlysOo.d.ts +0 -6
  533. package/dist/temporal-CVlIV2DZ.js +0 -40
  534. package/dist/user-change-CHFEUro1.js +0 -49
  535. package/dist/webhooks/index.d.ts +0 -285
  536. package/skills/better-supabase-auth/references/permdock.md +0 -100
@@ -0,0 +1,111 @@
1
+ import { n as dbError } from "../../errors-B11Duf73.js";
2
+ import { a as ok, r as err, t as AsyncResult } from "../../result-DzUbqgdW.js";
3
+ import { c as errorText } from "../../block-helpers-DWHxHsEQ.js";
4
+ import { r as parseAiFileUrl, t as aiFileUrl } from "../../ai-files-CSPNswUY.js";
5
+ import { createDownload } from "ai";
6
+ //#region src/ai-sdk/files/files.ts
7
+ /** Thrown by the download function, so the SDK reports a failed file part. */
8
+ var AiFileDownloadError = class extends Error {
9
+ error;
10
+ constructor(url, error) {
11
+ super(`Could not download ${url.href}: ${error.message}`);
12
+ this.name = "AiFileDownloadError";
13
+ this.error = error;
14
+ }
15
+ };
16
+ /**
17
+ * The SDK's `experimental_download` for messages that hold
18
+ * `supabase-storage://` file URLs: it reads each file as the caller, so a
19
+ * user can never send a model someone else's file, and keeps the
20
+ * `maxBytes` limit of `createAiFiles`.
21
+ */
22
+ function aiFileDownload(files, options = {}) {
23
+ const fallback = options.fallback ?? sdkDownload(options.abortSignal);
24
+ return (requests) => Promise.all(requests.map(async (request) => {
25
+ if (parseAiFileUrl(request.url)) {
26
+ const read = await files.files.resolve(request.url).andThen((file) => files.files.read(file));
27
+ if (!read.ok) throw new AiFileDownloadError(request.url, read.error);
28
+ return {
29
+ data: read.data.data,
30
+ mediaType: read.data.file.mediaType
31
+ };
32
+ }
33
+ if (request.isUrlSupportedByModel) return null;
34
+ if (fallback === false) throw new AiFileDownloadError(request.url, dbError("invalid_request", "Only supabase-storage:// URLs", { hint: "AI_FILE_URL" }));
35
+ const [downloaded] = await fallback([request]);
36
+ return downloaded ?? null;
37
+ }));
38
+ }
39
+ function sdkDownload(abortSignal) {
40
+ const download = createDownload();
41
+ return (requests) => Promise.all(requests.map((request) => download(abortSignal === void 0 ? { url: request.url } : {
42
+ url: request.url,
43
+ abortSignal
44
+ })));
45
+ }
46
+ const EXTENSIONS = {
47
+ "image/png": "png",
48
+ "image/jpeg": "jpg",
49
+ "image/webp": "webp",
50
+ "image/gif": "gif",
51
+ "audio/mpeg": "mp3",
52
+ "audio/wav": "wav",
53
+ "audio/ogg": "ogg",
54
+ "video/mp4": "mp4",
55
+ "application/pdf": "pdf",
56
+ "text/plain": "txt"
57
+ };
58
+ /**
59
+ * Stores what `generateImage`, `generateSpeech` or a model's file output
60
+ * returned (service role) and gives back file parts that point at them.
61
+ */
62
+ function saveGeneratedFiles(files, generated, options) {
63
+ return AsyncResult.from(async () => {
64
+ const parts = [];
65
+ for (const [index, file] of generated.entries()) {
66
+ const filename = options.filename?.(file, index) ?? `generated-${String(index + 1)}.${EXTENSIONS[file.mediaType] ?? "bin"}`;
67
+ const stored = await files.files.store(options.organizationId, {
68
+ ownerId: options.ownerId,
69
+ filename,
70
+ mediaType: file.mediaType,
71
+ data: file.uint8Array,
72
+ source: options.source ?? "generated",
73
+ ...options.chatId === void 0 ? {} : { chatId: options.chatId }
74
+ });
75
+ if (!stored.ok) return err(stored.error);
76
+ parts.push({
77
+ type: "file",
78
+ mediaType: stored.data.mediaType,
79
+ url: aiFileUrl(stored.data),
80
+ filename: stored.data.filename
81
+ });
82
+ }
83
+ return ok(parts);
84
+ });
85
+ }
86
+ /**
87
+ * The provider's reference for a file, uploading it once with `upload`
88
+ * (such as the SDK's `uploadFile` or a provider client) and reusing the
89
+ * reference until it expires.
90
+ */
91
+ function providerFile(files, fileId, provider, upload) {
92
+ return files.providerFiles.get(fileId, provider).andThen(async (cached) => {
93
+ if (cached) return ok(cached.reference);
94
+ const read = await files.files.read(fileId);
95
+ if (!read.ok) return err(read.error);
96
+ let uploaded;
97
+ try {
98
+ uploaded = await upload({
99
+ data: read.data.data,
100
+ mediaType: read.data.file.mediaType,
101
+ filename: read.data.file.filename
102
+ });
103
+ } catch (cause) {
104
+ return err(dbError("network", `The ${provider} upload failed: ${errorText(cause)}`, { hint: "AI_PROVIDER_FILE_UPLOAD" }));
105
+ }
106
+ const saved = await files.providerFiles.set(fileId, provider, uploaded.reference, uploaded.expiresAt);
107
+ return saved.ok ? ok(uploaded.reference) : err(saved.error);
108
+ });
109
+ }
110
+ //#endregion
111
+ export { AiFileDownloadError, aiFileDownload, providerFile, saveGeneratedFiles };
@@ -0,0 +1,145 @@
1
+ /// <reference lib="esnext.temporal" />
2
+ import { b as DbError, t as AsyncResult } from "../result-D7y2fT87.js";
3
+ import { m as JobHandler } from "../queue-CLJurhdy.js";
4
+ import { U as AiSandboxes } from "../ai-chat-7amvXjmQ.js";
5
+ import { p as ResolvedProviderKey, u as AiProviders } from "../types-TaiEeBGA.js";
6
+ import { i as Usage } from "../usage-CrvrL2vw.js";
7
+ import { _ as usageOf, a as GatewayClient, c as GatewayOptions, d as costBackfill, f as gatewayOptions, g as usageEntries, h as problem429, i as CostBackfillPayload, l as ModelCatalogRefreshOptions, m as modelInputOf, n as AiUsageMeters, o as GatewayContext, p as modelCatalogRefresh, r as CostBackfillOptions, s as GatewayModelEntry, t as AiUsage, u as UsageSource, v as usageQuota } from "../gateway-C1ssRHnf.js";
8
+ import { a as ModelSource, c as isUIMessage, i as ModelApproval, l as toUIMessage, n as DENIED_TOOL_OUTPUT, o as fromModelMessages, r as FromModelMessagesOptions, s as fromUIMessage, t as AI_SDK_UI_FORMAT, u as toUIMessages } from "../messages-DYP0sUTe.js";
9
+ import { Experimental_SandboxSession, Telemetry } from "ai";
10
+ //#region src/ai-sdk/providers.d.ts
11
+ /** The `settings` key that names the credential field, `apiKey` unless set. */
12
+ export declare const BYOK_FIELD = "credentialField";
13
+ /**
14
+ * The AI Gateway's `byok` option for a tenant's resolved keys: each key
15
+ * becomes `{ apiKey: token, ...settings }` under its provider, in order. A
16
+ * provider whose credential field isn't `apiKey` names it in the key's
17
+ * `settings.credentialField`.
18
+ */
19
+ export declare function byokOptions(keys: readonly ResolvedProviderKey[]): GatewayOptions;
20
+ /**
21
+ * `providerOptions` for a tenant's request: `gatewayOptions(context, extra)`
22
+ * with the tenant's own keys as `byok`, resolved through the providers block
23
+ * (service role) for this request only. Without keys, the gateway uses the
24
+ * app's credentials.
25
+ */
26
+ export declare function tenantGatewayOptions(providers: Pick<AiProviders, "keys">, context: GatewayContext & {
27
+ readonly organizationId: string;
28
+ }, extra?: GatewayOptions, options?: {
29
+ readonly providers?: readonly string[];
30
+ readonly signal?: AbortSignal;
31
+ }): AsyncResult<{
32
+ readonly gateway: GatewayOptions;
33
+ }>;
34
+ interface TrackedSandboxOptions {
35
+ /** The ai-chat block's sandboxes, with a service transport. */
36
+ readonly sandboxes: Pick<AiSandboxes, "touch">;
37
+ /** The `ai_sandboxes` row id from `sandboxes.register`. */
38
+ readonly id: string;
39
+ /** Milliseconds between two touches. Default 30000. */
40
+ readonly every?: number;
41
+ /** The clock, for tests. */
42
+ readonly now?: () => number;
43
+ }
44
+ /**
45
+ * Wraps an `experimental_sandbox` session so each use marks its registry row
46
+ * used (`sandboxes.touch`, at most every `every` milliseconds). The idle-stop
47
+ * job then stops only sandboxes nobody used for their `idle_seconds`.
48
+ */
49
+ export declare function trackedSandbox(session: Experimental_SandboxSession, options: TrackedSandboxOptions): Experimental_SandboxSession;
50
+ //#endregion
51
+ //#region src/ai-sdk/telemetry.d.ts
52
+ /** The usage meters `meterTelemetry` writes. */
53
+ interface TelemetryMeters {
54
+ /** Default `ai.input_tokens`. */
55
+ readonly input?: string;
56
+ /** Default `ai.output_tokens`. */
57
+ readonly output?: string;
58
+ /** Default `ai.embedding_tokens`. */
59
+ readonly embedding?: string;
60
+ /** Default `ai.rerank_calls`. */
61
+ readonly rerank?: string;
62
+ }
63
+ /** What `meterTelemetry` reads from the event that starts an operation. */
64
+ interface TelemetryStart {
65
+ readonly callId: string;
66
+ readonly operationId: string;
67
+ readonly provider?: string;
68
+ readonly modelId?: string;
69
+ readonly functionId?: string;
70
+ readonly runtimeContext?: unknown;
71
+ readonly providerOptions?: unknown;
72
+ }
73
+ interface MeterTelemetryOptions {
74
+ /** The usage block with a service transport. */
75
+ readonly usage: Pick<Usage, "recordMany">;
76
+ /**
77
+ * The tenant an operation is for. Defaults to the `org:` tag `gatewayOptions`
78
+ * puts in `providerOptions.gateway.tags`, then `runtimeContext.organizationId`.
79
+ * Operations without a tenant are not metered.
80
+ */
81
+ readonly tenant?: (event: TelemetryStart) => string | undefined;
82
+ readonly meters?: TelemetryMeters;
83
+ /** The `source` of each usage row. Default `ai:telemetry`. */
84
+ readonly source?: string;
85
+ readonly onError?: (error: DbError) => void;
86
+ }
87
+ /** The `org:` tag of `providerOptions.gateway.tags`, then `runtimeContext.organizationId`. */
88
+ export declare function tenantOfEvent(event: TelemetryStart): string | undefined;
89
+ /**
90
+ * A telemetry integration that meters every model call on the tenant's usage
91
+ * meters: input and output tokens of each language model call (agent steps
92
+ * included), embedding tokens, and rerank calls. Register it once with
93
+ * `registerTelemetry(meterTelemetry({ usage }))`; each call's rows carry an
94
+ * idempotency key, so a retried event is counted once. Don't also record the
95
+ * same tokens with `usageEntries`.
96
+ */
97
+ export declare function meterTelemetry(options: MeterTelemetryOptions): Telemetry;
98
+ /** One row of `gateway.getSpendReport()` grouped by tag. */
99
+ interface SpendReportRow {
100
+ readonly tag?: string;
101
+ readonly totalCost: number;
102
+ readonly requestCount?: number;
103
+ }
104
+ /** The AI Gateway call `spendReconciliation` makes (`gateway` from `ai`). */
105
+ interface SpendReportClient {
106
+ getSpendReport(params: {
107
+ startDate: string;
108
+ endDate: string;
109
+ groupBy?: "tag";
110
+ credentialType?: "byok" | "system";
111
+ }): PromiseLike<{
112
+ readonly results: readonly SpendReportRow[];
113
+ }>;
114
+ }
115
+ interface SpendReconciliationOptions {
116
+ readonly gateway: SpendReportClient;
117
+ /** The usage block with a service transport. */
118
+ readonly usage: Pick<Usage, "recordMany">;
119
+ /** The micro-USD meter of the gateway's own figure. Default `ai.gateway_cost`. */
120
+ readonly meter?: string;
121
+ /** Only the spend the app pays (`system`) or tenants' own keys pay (`byok`). */
122
+ readonly credentialType?: "byok" | "system";
123
+ /** The clock, for tests. */
124
+ readonly now?: () => Temporal.Instant;
125
+ }
126
+ interface SpendReconciliation {
127
+ /** The UTC day reconciled, `YYYY-MM-DD`. */
128
+ readonly day: string;
129
+ readonly tenants: readonly {
130
+ readonly organizationId: string;
131
+ readonly costMicroUsd: number;
132
+ readonly requests: number;
133
+ }[];
134
+ }
135
+ /**
136
+ * A nightly job handler that reads the AI Gateway's spend for a UTC day
137
+ * (yesterday unless the payload names `day`), grouped by the `org:` tags
138
+ * `gatewayOptions` sets, and records each tenant's cost on `meter` once per
139
+ * day. Compare that meter with the per-call cost meter to find drift.
140
+ */
141
+ export declare function spendReconciliation(options: SpendReconciliationOptions): JobHandler<{
142
+ readonly day?: string;
143
+ } | undefined>;
144
+ //#endregion
145
+ export { AI_SDK_UI_FORMAT, type AiUsage, type AiUsageMeters, type CostBackfillOptions, type CostBackfillPayload, DENIED_TOOL_OUTPUT, type FromModelMessagesOptions, type GatewayClient, type GatewayContext, type GatewayModelEntry, type GatewayOptions, type MeterTelemetryOptions, type ModelApproval, type ModelCatalogRefreshOptions, type ModelSource, type SpendReconciliation, type SpendReconciliationOptions, type SpendReportClient, type SpendReportRow, type TelemetryMeters, type TelemetryStart, type TrackedSandboxOptions, type UsageSource, costBackfill, fromModelMessages, fromUIMessage, gatewayOptions, isUIMessage, modelCatalogRefresh, modelInputOf, problem429, toUIMessage, toUIMessages, usageEntries, usageOf, usageQuota };
@@ -0,0 +1,174 @@
1
+ import { s as nowInstant } from "../temporal-BJGitm-h.js";
2
+ import { d as isRecord } from "../block-helpers-DWHxHsEQ.js";
3
+ import { a as isUIMessage, c as costBackfill, d as modelInputOf, f as problem429, g as usageQuota, h as usageOf, i as fromUIMessage, l as gatewayOptions, m as usageEntries, n as DENIED_TOOL_OUTPUT, o as toUIMessage, r as fromModelMessages, s as toUIMessages, t as AI_SDK_UI_FORMAT, u as modelCatalogRefresh } from "../messages-B9-5887d.js";
4
+ //#region src/ai-sdk/providers.ts
5
+ /** The `settings` key that names the credential field, `apiKey` unless set. */
6
+ const BYOK_FIELD = "credentialField";
7
+ function jsonOf(value) {
8
+ return JSON.parse(JSON.stringify(value ?? null));
9
+ }
10
+ /**
11
+ * The AI Gateway's `byok` option for a tenant's resolved keys: each key
12
+ * becomes `{ apiKey: token, ...settings }` under its provider, in order. A
13
+ * provider whose credential field isn't `apiKey` names it in the key's
14
+ * `settings.credentialField`.
15
+ */
16
+ function byokOptions(keys) {
17
+ const byok = {};
18
+ for (const key of keys) {
19
+ const { [BYOK_FIELD]: field, ...settings } = key.settings;
20
+ const name = typeof field === "string" && field.length > 0 ? field : "apiKey";
21
+ const entry = {};
22
+ for (const [option, value] of Object.entries(settings)) if (value !== void 0) entry[option] = jsonOf(value);
23
+ entry[name] = key.token;
24
+ (byok[key.provider] ??= []).push(entry);
25
+ }
26
+ return Object.keys(byok).length === 0 ? {} : { byok };
27
+ }
28
+ /**
29
+ * `providerOptions` for a tenant's request: `gatewayOptions(context, extra)`
30
+ * with the tenant's own keys as `byok`, resolved through the providers block
31
+ * (service role) for this request only. Without keys, the gateway uses the
32
+ * app's credentials.
33
+ */
34
+ function tenantGatewayOptions(providers, context, extra = {}, options = {}) {
35
+ return providers.keys.resolve(context.organizationId, options).map((keys) => gatewayOptions(context, {
36
+ ...extra,
37
+ ...byokOptions(keys)
38
+ }));
39
+ }
40
+ /**
41
+ * Wraps an `experimental_sandbox` session so each use marks its registry row
42
+ * used (`sandboxes.touch`, at most every `every` milliseconds). The idle-stop
43
+ * job then stops only sandboxes nobody used for their `idle_seconds`.
44
+ */
45
+ function trackedSandbox(session, options) {
46
+ const every = options.every ?? 3e4;
47
+ const now = options.now ?? Date.now;
48
+ let last = Number.NEGATIVE_INFINITY;
49
+ const touch = () => {
50
+ const at = now();
51
+ if (at - last < every) return;
52
+ last = at;
53
+ options.sandboxes.touch(options.id);
54
+ };
55
+ return new Proxy(session, { get(target, property) {
56
+ const value = target[property];
57
+ if (typeof value !== "function") return value;
58
+ return (...args) => {
59
+ touch();
60
+ return value.apply(target, args);
61
+ };
62
+ } });
63
+ }
64
+ //#endregion
65
+ //#region src/ai-sdk/telemetry.ts
66
+ /** The `org:` tag of `providerOptions.gateway.tags`, then `runtimeContext.organizationId`. */
67
+ function tenantOfEvent(event) {
68
+ const options = event.providerOptions;
69
+ const tags = (isRecord(options) && isRecord(options["gateway"]) ? options["gateway"] : void 0)?.["tags"];
70
+ if (Array.isArray(tags)) {
71
+ for (const tag of tags) if (typeof tag === "string" && tag.startsWith("org:") && tag.length > 4) return tag.slice(4);
72
+ }
73
+ const context = event.runtimeContext;
74
+ const id = isRecord(context) ? context["organizationId"] : void 0;
75
+ return typeof id === "string" && id.length > 0 ? id : void 0;
76
+ }
77
+ const count = (value) => typeof value === "number" && Number.isFinite(value) && value > 0 ? Math.round(value) : 0;
78
+ /**
79
+ * A telemetry integration that meters every model call on the tenant's usage
80
+ * meters: input and output tokens of each language model call (agent steps
81
+ * included), embedding tokens, and rerank calls. Register it once with
82
+ * `registerTelemetry(meterTelemetry({ usage }))`; each call's rows carry an
83
+ * idempotency key, so a retried event is counted once. Don't also record the
84
+ * same tokens with `usageEntries`.
85
+ */
86
+ function meterTelemetry(options) {
87
+ const tenants = /* @__PURE__ */ new Map();
88
+ const calls = /* @__PURE__ */ new Map();
89
+ const tenantOf = options.tenant ?? tenantOfEvent;
90
+ const meters = options.meters ?? {};
91
+ const source = options.source ?? "ai:telemetry";
92
+ const record = async (callId, key, entries) => {
93
+ const tenant = tenants.get(callId);
94
+ const kept = entries.filter((entry) => (entry.quantity ?? 0) > 0);
95
+ if (tenant === void 0 || kept.length === 0) return;
96
+ const saved = await options.usage.recordMany(tenant, kept, {
97
+ idempotencyKey: `ai-call:${key}`,
98
+ source
99
+ });
100
+ if (!saved.ok) options.onError?.(saved.error);
101
+ };
102
+ return {
103
+ onStart: (event) => {
104
+ const tenant = tenantOf(event);
105
+ if (tenant !== void 0) tenants.set(event.callId, tenant);
106
+ },
107
+ onLanguageModelCallEnd: (event) => {
108
+ const step = calls.get(event.callId) ?? 0;
109
+ calls.set(event.callId, step + 1);
110
+ return record(event.callId, `${event.callId}:${step}`, [{
111
+ meter: meters.input ?? "ai.input_tokens",
112
+ quantity: count(event.usage.inputTokens)
113
+ }, {
114
+ meter: meters.output ?? "ai.output_tokens",
115
+ quantity: count(event.usage.outputTokens)
116
+ }]);
117
+ },
118
+ onEmbedEnd: (event) => record(event.callId, `${event.callId}:${event.embedCallId}`, [{
119
+ meter: meters.embedding ?? "ai.embedding_tokens",
120
+ quantity: count(event.usage.tokens)
121
+ }]),
122
+ onRerankEnd: (event) => record(event.callId, `${event.callId}:rerank`, [{
123
+ meter: meters.rerank ?? "ai.rerank_calls",
124
+ quantity: 1
125
+ }]),
126
+ onEnd: (event) => {
127
+ tenants.delete(event.callId);
128
+ calls.delete(event.callId);
129
+ }
130
+ };
131
+ }
132
+ /**
133
+ * A nightly job handler that reads the AI Gateway's spend for a UTC day
134
+ * (yesterday unless the payload names `day`), grouped by the `org:` tags
135
+ * `gatewayOptions` sets, and records each tenant's cost on `meter` once per
136
+ * day. Compare that meter with the per-call cost meter to find drift.
137
+ */
138
+ function spendReconciliation(options) {
139
+ const meter = options.meter ?? "ai.gateway_cost";
140
+ return async (payload) => {
141
+ const day = payload?.day ?? (options.now ?? nowInstant)().toZonedDateTimeISO("UTC").subtract({ days: 1 }).toPlainDate().toString();
142
+ const report = await options.gateway.getSpendReport({
143
+ startDate: day,
144
+ endDate: day,
145
+ groupBy: "tag",
146
+ ...options.credentialType === void 0 ? {} : { credentialType: options.credentialType }
147
+ });
148
+ const tenants = [];
149
+ for (const row of report.results) {
150
+ if (typeof row.tag !== "string" || !row.tag.startsWith("org:")) continue;
151
+ const organizationId = row.tag.slice(4);
152
+ const costMicroUsd = Math.round(Math.max(0, row.totalCost) * 1e6);
153
+ tenants.push({
154
+ organizationId,
155
+ costMicroUsd,
156
+ requests: count(row.requestCount)
157
+ });
158
+ if (costMicroUsd === 0) continue;
159
+ await options.usage.recordMany(organizationId, [{
160
+ meter,
161
+ quantity: costMicroUsd
162
+ }], {
163
+ idempotencyKey: `ai-spend:${day}:${organizationId}`,
164
+ source: "ai:gateway-spend"
165
+ }).orThrow();
166
+ }
167
+ return {
168
+ day,
169
+ tenants
170
+ };
171
+ };
172
+ }
173
+ //#endregion
174
+ export { AI_SDK_UI_FORMAT, BYOK_FIELD, DENIED_TOOL_OUTPUT, byokOptions, costBackfill, fromModelMessages, fromUIMessage, gatewayOptions, isUIMessage, meterTelemetry, modelCatalogRefresh, modelInputOf, problem429, spendReconciliation, tenantGatewayOptions, tenantOfEvent, toUIMessage, toUIMessages, trackedSandbox, usageEntries, usageOf, usageQuota };
@@ -0,0 +1,102 @@
1
+ import { b as DbError, t as AsyncResult } from "../../result-D7y2fT87.js";
2
+ import { i as CredentialRef, r as CredentialProvider } from "../../provider-BH5UWZJ6.js";
3
+ import { r as ConnectorServer, s as Connectors } from "../../connectors-hkLCwyEz.js";
4
+ import { n as VaultCredentials } from "../../vault-CSO7ss5C.js";
5
+ import { ToolSet } from "ai";
6
+ import { ElicitResult, ElicitationRequest, MCPClient, OAuthClientMetadata, OAuthClientProvider } from "@ai-sdk/mcp";
7
+ //#region src/ai-sdk/mcp/mcp.d.ts
8
+ /** The Vault ref of a user's OAuth connection to a server. */
9
+ export declare function mcpOAuthRef(serverId: string): CredentialRef;
10
+ interface VaultOAuthProviderOptions {
11
+ readonly vault: VaultCredentials;
12
+ readonly server: Pick<ConnectorServer, "id" | "clientMetadata" | "scopes">;
13
+ readonly userId: string;
14
+ /** The app's OAuth callback URL. */
15
+ readonly redirectUrl: string;
16
+ /** Overrides the server's `client_metadata`. */
17
+ readonly clientMetadata?: OAuthClientMetadata;
18
+ }
19
+ interface VaultOAuthProvider extends OAuthClientProvider {
20
+ /** Where `auth` asked to send the user, once it did. */
21
+ readonly authorizationUrl: URL | undefined;
22
+ }
23
+ /**
24
+ * An `OAuthClientProvider` that keeps the user's tokens, PKCE verifier and
25
+ * state in one per-user Vault secret, and the dynamically registered client
26
+ * in one secret per server.
27
+ */
28
+ export declare function vaultOAuthProvider(options: VaultOAuthProviderOptions): VaultOAuthProvider;
29
+ interface AuthorizeConnectorOptions {
30
+ readonly connectors: Connectors;
31
+ readonly vault: VaultCredentials;
32
+ readonly server: ConnectorServer;
33
+ readonly userId: string;
34
+ readonly redirectUrl: string;
35
+ }
36
+ /**
37
+ * Starts the user's OAuth connection to a server: `{ url }` to send them
38
+ * to, or `{ url: undefined }` when stored tokens still work and the grant
39
+ * is recorded.
40
+ */
41
+ export declare function authorizeConnector(options: AuthorizeConnectorOptions): AsyncResult<{
42
+ readonly url: string | undefined;
43
+ }>;
44
+ /**
45
+ * Finishes the connection from the OAuth callback: checks the state,
46
+ * exchanges the code, keeps the tokens in Vault and records the grant.
47
+ */
48
+ export declare function completeConnector(options: AuthorizeConnectorOptions & {
49
+ readonly callback: URL | string;
50
+ }): AsyncResult<void>;
51
+ interface ConnectToolsOptions {
52
+ /** The connectors block as the user. */
53
+ readonly connectors: Connectors;
54
+ readonly server: ConnectorServer;
55
+ readonly userId: string;
56
+ /** For `oauth` servers whose grant lives in Vault. */
57
+ readonly vault?: VaultCredentials;
58
+ /** Resolves `header` refs and grants from other providers (Vercel Connect). */
59
+ readonly credentials?: CredentialProvider;
60
+ /** The OAuth callback URL, for refreshing tokens. */
61
+ readonly redirectUrl?: string;
62
+ /** Reuses the MCP session per chat. */
63
+ readonly chatKey?: string;
64
+ /** Asks for MCP Apps and returns their app-only tools apart. */
65
+ readonly apps?: boolean;
66
+ /** Answers the server's elicitation requests; declined without one. */
67
+ readonly elicit?: (request: ElicitationRequest) => Promise<ElicitResult>;
68
+ /** Prefixes tool names, such as `github_`, so servers don't collide. */
69
+ readonly prefix?: string;
70
+ }
71
+ interface ConnectedTools {
72
+ readonly tools: ToolSet;
73
+ /** Tools only an MCP App may call; empty unless `apps`. */
74
+ readonly appTools: ToolSet;
75
+ readonly client: MCPClient;
76
+ readonly fingerprint: string;
77
+ close(): Promise<void>;
78
+ }
79
+ /**
80
+ * Connects to a server as the user and returns its tools, once the
81
+ * fingerprint of their definitions is approved. A changed tool list waits
82
+ * for an admin (`CONNECTOR_TOOLS_CHANGED`) and the client is closed. Close
83
+ * the client when the run ends.
84
+ */
85
+ export declare function connectTools(options: ConnectToolsOptions): AsyncResult<ConnectedTools>;
86
+ interface ConnectAllResult {
87
+ readonly tools: ToolSet;
88
+ /** The servers left out, with why. */
89
+ readonly skipped: readonly {
90
+ readonly server: ConnectorServer;
91
+ readonly error: DbError;
92
+ }[];
93
+ close(): Promise<void>;
94
+ }
95
+ /**
96
+ * Connects to several servers (an agent's `connectorIds`) and merges their
97
+ * tools, each prefixed with its server's name. A server that fails is
98
+ * skipped and reported, not fatal.
99
+ */
100
+ export declare function connectAll(servers: readonly ConnectorServer[], options: Omit<ConnectToolsOptions, "server" | "prefix">): Promise<ConnectAllResult>;
101
+ //#endregion
102
+ export type { AuthorizeConnectorOptions, ConnectAllResult, ConnectToolsOptions, ConnectedTools, VaultOAuthProvider, VaultOAuthProviderOptions };