better-supabase 0.5.1 → 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 +187 -46
  2. package/dist/access-sql-B0dF-SoF.js +181 -0
  3. package/dist/{actor-DaJjqD5R.d.ts → actor-CQTlc1Hh.d.ts} +1 -1
  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-C_A-KEAz.js → doctor-B4JOm_ox.js} +991 -317
  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-DMa6M7hV.js → init-BIIwclPg.js} +242 -27
  185. package/dist/cli/{introspect-BKlaIu_M.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-Bo_NLT5n.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-BCtlgDQx.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-Bv7gvfzC.d.ts → config-D44Y7PAv.d.ts} +406 -214
  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-CFPX0Qft.d.ts → ended-jLfvw8h-.d.ts} +20 -2
  231. package/dist/{entitlements-BiJZ4t49.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-BgSHAYLf.js → impersonation-DcqaTBHx.js} +21 -6
  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-Daak8ukG.d.ts +54 -0
  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-Bn6HNKUe.js → resolve-D_IcnvFd.js} +248 -240
  385. package/dist/{impersonation-BmePsuxz.d.ts → resolve-KW8nCeL6.d.ts} +29 -69
  386. package/dist/{resource-mqfJW4YF.js → resource-BsvzCMlX.js} +4 -4
  387. package/dist/{resource-DNRFP7KR.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 -22
  396. package/dist/server/index.js +46 -14
  397. package/dist/{respond-BR1fJWOB.d.ts → server-CeVeeXwz.d.ts} +224 -85
  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 +313 -212
  413. package/dist/sql/index.js +34872 -6579
  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-wHnK6zp-.js → support-BivNqSpK.js} +32 -11
  430. package/dist/{support-view-B8SlToQX.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 +315 -41
  449. package/dist/testing/index.js +1046 -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-DOYTYwHP.js → version-Bvv6aLjZ.js} +1 -1
  465. package/dist/view-BeFcRV6G.js +99 -0
  466. package/dist/{view-CbgObAeb.d.ts → view-DbxLNu8L.d.ts} +22 -5
  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 +461 -20
  485. package/schemas/ai-message-v1.json +258 -0
  486. package/schemas/config-v1.json +1074 -140
  487. package/schemas/doctor-report-v1.json +20 -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 +47 -11
  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-CIdSQZad.js +0 -2
  504. package/dist/cli/gen-CjElD1Vw.js +0 -2241
  505. package/dist/cli/read-sets-VQcPgxU9.js +0 -436
  506. package/dist/cli/sql-CVx-1O8G.js +0 -373
  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/index-CWMDdEr4.d.ts +0 -50
  512. package/dist/index-DOESKG27.d.ts +0 -100
  513. package/dist/index-DmXSxbLi.d.ts +0 -62
  514. package/dist/index-Dp2VDwog.d.ts +0 -161
  515. package/dist/jobs/index.d.ts +0 -226
  516. package/dist/jobs/index.js +0 -1007
  517. package/dist/json-schema-m1fiwKgN.js +0 -208
  518. package/dist/kit-events-CTFDfSwb.js +0 -60
  519. package/dist/kit-transport-B82k1djG.d.ts +0 -33
  520. package/dist/kits-CGLLrNPd.js +0 -157
  521. package/dist/mfa-Cu96oJdw.d.ts +0 -30
  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-B1mZ7CgQ.js +0 -660
  530. package/dist/stats-Bqob3WqT.js +0 -592
  531. package/dist/support-CEPwlw2G.d.ts +0 -89
  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 -122
@@ -0,0 +1,68 @@
1
+ import { n as Embedder, o as KnowledgeHit, r as Knowledge, u as KnowledgeSearchOptions } from "./knowledge-BXBbT0Tr.js";
2
+ import { EmbeddingModel, RerankingModel, SourceDocumentUIPart, Tool, embedMany } from "ai";
3
+ //#region src/ai-sdk/embeddings/embeddings.d.ts
4
+ type ProviderOptions = Parameters<typeof embedMany>[0]["providerOptions"];
5
+ interface EmbedWithOptions {
6
+ /** Concurrent calls when the values need more than one. Default 4. */
7
+ readonly maxParallelCalls?: number;
8
+ readonly providerOptions?: ProviderOptions;
9
+ /** The name stored with each embedding; the provider and model id by default. */
10
+ readonly name?: string;
11
+ }
12
+ /** The name of an SDK model: the string itself, or `provider/modelId`. */
13
+ declare function modelName(model: string | {
14
+ readonly provider: string;
15
+ readonly modelId: string;
16
+ }): string;
17
+ /** An `Embedder` for the knowledge and memory blocks over `embedMany`. */
18
+ declare function embedWith(model: EmbeddingModel, options?: EmbedWithOptions): Embedder;
19
+ type Reranker = (query: string, hits: readonly KnowledgeHit[], options?: {
20
+ readonly signal?: AbortSignal;
21
+ }) => Promise<readonly KnowledgeHit[]>;
22
+ /** Reorders search hits with a reranking model, keeping the best `topN`. */
23
+ declare function rerankWith(model: RerankingModel, options?: {
24
+ readonly topN?: number;
25
+ }): Reranker;
26
+ interface SearchToolOptions extends Omit<KnowledgeSearchOptions, "signal"> {
27
+ readonly description?: string;
28
+ /** Reranks the hits before the model sees them. */
29
+ readonly rerank?: Reranker;
30
+ /** Called with the hits, to stream them as source parts. */
31
+ readonly onHits?: (hits: readonly KnowledgeHit[]) => void;
32
+ }
33
+ interface SearchToolResult {
34
+ readonly results: readonly {
35
+ readonly id: string;
36
+ readonly title: string;
37
+ readonly content: string;
38
+ }[];
39
+ }
40
+ /**
41
+ * A tool that searches the knowledge base as the caller. Each result id
42
+ * is `documentId#index`, the `sourceId` that `toSourceParts` gives it.
43
+ */
44
+ declare function searchTool(knowledge: Knowledge, organizationId: string, options?: SearchToolOptions): Tool<{
45
+ query: string;
46
+ }, SearchToolResult>;
47
+ /** One `source-document` part per document among the hits, in hit order. */
48
+ declare function toSourceParts(hits: readonly KnowledgeHit[]): SourceDocumentUIPart[];
49
+ /** `Supabase.ai.Session` in Supabase Edge Functions, typed structurally. */
50
+ interface SupabaseAiSession {
51
+ run(input: string, options: {
52
+ readonly mean_pool: boolean;
53
+ readonly normalize: boolean;
54
+ }): Promise<unknown>;
55
+ }
56
+ interface SupabaseEmbedOptions {
57
+ /** The built-in model. Default `gte-small` (384 dimensions). */
58
+ readonly model?: string;
59
+ /** A session to use instead of `new Supabase.ai.Session(model)`. */
60
+ readonly session?: SupabaseAiSession;
61
+ }
62
+ /**
63
+ * An `Embedder` over the model built into Supabase Edge Functions. Set the
64
+ * module's `dimensions` option to the model's size (384 for `gte-small`).
65
+ */
66
+ declare function supabaseEmbed(options?: SupabaseEmbedOptions): Embedder;
67
+ //#endregion
68
+ export { SupabaseAiSession as a, modelName as c, supabaseEmbed as d, toSourceParts as f, SearchToolResult as i, rerankWith as l, Reranker as n, SupabaseEmbedOptions as o, SearchToolOptions as r, embedWith as s, EmbedWithOptions as t, searchTool as u };
@@ -1,4 +1,4 @@
1
- import { _ as StoredSession } from "./impersonation-BmePsuxz.js";
1
+ import { c as StoredSession, n as CookieOptions } from "./session-ChiXDZdZ.js";
2
2
  //#region src/auth/refresh.d.ts
3
3
  interface RefreshOptions {
4
4
  readonly url: string;
@@ -39,4 +39,22 @@ type RefreshOutcome = {
39
39
  */
40
40
  declare function refreshSession(refreshToken: string, options: RefreshOptions): Promise<RefreshOutcome>;
41
41
  //#endregion
42
- export { RefreshOutcome as n, refreshSession as r, RefreshOptions as t };
42
+ //#region src/auth/ended.d.ts
43
+ type SessionStatus = "active" | "ended" | "unknown";
44
+ interface SessionStatusOptions {
45
+ readonly url: string;
46
+ readonly publishableKey: string;
47
+ readonly cookieName?: string;
48
+ readonly fetch?: typeof fetch;
49
+ readonly timeoutMs?: number;
50
+ readonly now?: () => number;
51
+ }
52
+ interface ClearSessionCookiesOptions {
53
+ readonly url: string;
54
+ readonly cookieName?: string;
55
+ readonly cookie?: CookieOptions;
56
+ }
57
+ declare function sessionStatus(input: Request | string, options: SessionStatusOptions): Promise<SessionStatus>;
58
+ declare function clearSessionCookies<R extends Response>(request: Request, response: R, options: ClearSessionCookiesOptions): R;
59
+ //#endregion
60
+ export { sessionStatus as a, refreshSession as c, clearSessionCookies as i, SessionStatus as n, RefreshOptions as o, SessionStatusOptions as r, RefreshOutcome as s, ClearSessionCookiesOptions as t };
@@ -1,8 +1,8 @@
1
- import { t as AuthSession } from "./view-CbgObAeb.js";
1
+ import { t as AuthSession } from "./view-DbxLNu8L.js";
2
2
  //#region src/auth/entitlements.d.ts
3
3
  /**
4
- * One entry of the `memberships` claim, in PermDock's shape. PermDock strips
5
- * `null`s, so optional fields are absent rather than `null`.
4
+ * One entry of the `memberships` claim when a hook writes it as a list.
5
+ * Hooks strip `null`s, so optional fields are absent rather than `null`.
6
6
  */
7
7
  interface MembershipClaim {
8
8
  /** The scope the membership is in, e.g. `tenant` or `organization`. */
@@ -30,13 +30,22 @@ interface MembershipClaim {
30
30
  type EntitlementKey<C> = C extends {
31
31
  readonly features?: infer F;
32
32
  } ? NonNullable<F> extends Readonly<Record<string, readonly (infer K)[]>> ? K extends string ? K : string : string : string;
33
+ /** Where `hasEntitlement` reads the features claim, and its short codes. */
34
+ interface EntitlementClaimOptions {
35
+ /** `config.claims.features`, default `features`. */
36
+ readonly claim?: string;
37
+ /** `entitlements.claim.keys`: the short code written for each feature key. */
38
+ readonly keys?: Readonly<Record<string, string>>;
39
+ }
33
40
  /**
34
41
  * Whether the session's plan-features claim grants `key` in `tenantId`.
35
42
  * `claim` is `config.claims.features` (default `features`), the claim
36
- * `better_supabase.feature_claims()` fills. The claim is as fresh as the
43
+ * `better_supabase.feature_claims()` fills, or `{ claim, keys }` when
44
+ * `entitlements.claim.keys` writes short codes. The claim is as fresh as the
37
45
  * token: enforce it in RLS with `better_supabase.has_entitlement()`, and
38
- * refresh the session after checkout.
46
+ * refresh the session after checkout. A tenant left out by
47
+ * `entitlements.claim.maxTenants` reads as not granted.
39
48
  */
40
- declare function hasEntitlement<C>(session: AuthSession<C>, tenantId: string, key: EntitlementKey<C>, claim?: string): boolean;
49
+ declare function hasEntitlement<C>(session: AuthSession<C>, tenantId: string, key: EntitlementKey<C>, claim?: string | EntitlementClaimOptions): boolean;
41
50
  //#endregion
42
- export { MembershipClaim as n, hasEntitlement as r, EntitlementKey as t };
51
+ export { hasEntitlement as i, EntitlementKey as n, MembershipClaim as r, EntitlementClaimOptions as t };
@@ -0,0 +1,24 @@
1
+ import { t as AsyncResult } from "./result-DzUbqgdW.js";
2
+ import { C as run } from "./block-helpers-DWHxHsEQ.js";
3
+ //#region src/blocks/entitlements/entitlements.ts
4
+ /** The Stripe event sent when a customer's active entitlements change. */
5
+ const ENTITLEMENTS_UPDATED = "entitlements.active_entitlement_summary.updated";
6
+ function stripeCustomerOf(payload) {
7
+ if (typeof payload !== "object" || payload === null) return void 0;
8
+ const customer = (payload.data?.object)?.customer;
9
+ if (typeof customer === "string") return customer;
10
+ const id = customer?.id;
11
+ return typeof id === "string" ? id : void 0;
12
+ }
13
+ /**
14
+ * Users whose `memberships` claim carries the entitlements of the Stripe
15
+ * customer in an `entitlements.active_entitlement_summary.updated` event, so
16
+ * a job can invalidate their sessions. Empty for other payloads.
17
+ */
18
+ function entitlementMembers(sql, payload) {
19
+ const customer = stripeCustomerOf(payload);
20
+ if (customer === void 0) return AsyncResult.ok([]);
21
+ return run(() => sql.queryRaw("select user_id from better_supabase.entitlement_members($1) as user_id", [customer])).map((rows) => rows.map((row) => row.user_id));
22
+ }
23
+ //#endregion
24
+ export { entitlementMembers as n, ENTITLEMENTS_UPDATED as t };
@@ -0,0 +1,47 @@
1
+ import { o as tenantFrom, s as tenantPathsFor } from "./claims-PqzCxaTD.js";
2
+ import { n as impersonatorClaim, r as impersonatorOf } from "./impersonation-DcqaTBHx.js";
3
+ //#region src/blocks/jobs/envelope.ts
4
+ /** Marks a payload that carries a job context; pgmq stores it as the payload. */
5
+ const ENVELOPE = "$bs";
6
+ /** Wraps a payload with the actor and tenant of `context`, when it has either. */
7
+ function withContext(payload, context) {
8
+ if (!context) return payload;
9
+ const tenant = tenantFrom(context, tenantPathsFor(void 0));
10
+ const impersonator = context.claims ? impersonatorOf(context.claims) : void 0;
11
+ const recorded = {
12
+ ...context.actor ? { actor: context.actor } : {},
13
+ ...tenant === void 0 ? {} : { tenant },
14
+ ...impersonator ? { act: impersonatorClaim(impersonator) } : {}
15
+ };
16
+ if (!recorded.actor && recorded.tenant === void 0) return payload;
17
+ return {
18
+ [ENVELOPE]: 1,
19
+ context: recorded,
20
+ payload
21
+ };
22
+ }
23
+ function isRecord(value) {
24
+ return typeof value === "object" && value !== null && !Array.isArray(value);
25
+ }
26
+ function isActor(value) {
27
+ return isRecord(value) && typeof value["id"] === "string" && (value["kind"] === "user" || value["kind"] === "service" || value["kind"] === "anon");
28
+ }
29
+ /** Splits a stored payload into the payload and its recorded context. */
30
+ function unwrap(stored) {
31
+ if (!isRecord(stored) || stored[ENVELOPE] !== 1 || !Object.hasOwn(stored, "payload")) return {
32
+ payload: stored,
33
+ context: {}
34
+ };
35
+ const { actor, tenant, act } = isRecord(stored["context"]) ? stored["context"] : {};
36
+ const impersonator = act === void 0 ? void 0 : impersonatorOf({ act });
37
+ return {
38
+ payload: stored["payload"],
39
+ context: {
40
+ ...isActor(actor) ? { actor } : {},
41
+ ...typeof tenant === "string" && tenant.length > 0 ? { tenant } : {},
42
+ ...impersonator ? { claims: { act: impersonatorClaim(impersonator) } } : {}
43
+ }
44
+ };
45
+ }
46
+ //#endregion
47
+ export { withContext as n, unwrap as t };
@@ -1,3 +1,4 @@
1
+ import { t as DbException } from "./db-exception-CnWcYPxL.js";
1
2
  //#region src/core/errors.ts
2
3
  const STATUS = {
3
4
  not_found: 404,
@@ -19,7 +20,10 @@ const STATUS = {
19
20
  validation: 422,
20
21
  multiple_rows: 409,
21
22
  stale: 412,
23
+ max_affected: 400,
22
24
  rate_limited: 429,
25
+ quota_exceeded: 429,
26
+ unsupported: 501,
23
27
  unexpected: 500
24
28
  };
25
29
  function statusOf(kind) {
@@ -66,26 +70,48 @@ const isConflict = constraintGuard("conflict");
66
70
  const isCheck = constraintGuard("check");
67
71
  /** A foreign key violation, optionally for one constraint (`ForeignKeyConstraint`). */
68
72
  const isForeignKey = constraintGuard("foreign_key");
69
- /** Thrown by `.orThrow()`. Carries the plain `DbError` as `error`. */
70
- var DbException = class extends Error {
71
- name = "DbException";
72
- error;
73
- constructor(error) {
74
- super(error.message);
75
- this.error = error;
76
- }
77
- get kind() {
78
- return this.error.kind;
79
- }
80
- };
81
73
  const CONSTRAINT_IN_MESSAGE = /constraint "([^"]+)"/;
82
74
  const KEY_COLUMNS_IN_DETAILS = /^Key \(([^)]+)\)=/;
83
75
  const COLUMN_IN_MESSAGE = /column "([^"]+)"/;
84
76
  const RETRY_AFTER = /retry after (\d+)/i;
85
77
  const PERMISSION_DENIED = /^permission denied for (table|view|sequence|function|schema) (\S+)/;
78
+ /**
79
+ * The SQL compiler fails a write past `maxAffected` by casting this text,
80
+ * followed by `:<rows>`, to an integer: plain SQL has no `raise`.
81
+ */
82
+ const MAX_AFFECTED_MARKER = "better_supabase:max_affected";
83
+ const MAX_AFFECTED_COUNT = /better_supabase:max_affected:(\d+)/;
86
84
  function constraintOf(raw) {
87
85
  return raw.constraint ?? CONSTRAINT_IN_MESSAGE.exec(raw.message ?? "")?.[1];
88
86
  }
87
+ /** The hint `better_supabase.check_json_schema()` raises with (the `jsonb-schemas` module). */
88
+ const JSON_SCHEMA_HINT = "JSON_SCHEMA_INVALID";
89
+ /** The prefix of the `jsonb-schemas` check constraints and triggers. */
90
+ const JSON_SCHEMA_CONSTRAINT = "bs_json_";
91
+ const JSON_SCHEMA_COLUMN = /^[\w$]+\.([\w$]+) does not match its JSON Schema/;
92
+ /**
93
+ * One issue per pg_jsonschema error in DETAIL (a JSON array of strings), at
94
+ * the column's database name. Without the list (the check constraint itself
95
+ * failed), one issue for the whole value.
96
+ */
97
+ function jsonSchemaIssues(raw) {
98
+ const column = raw.column ?? JSON_SCHEMA_COLUMN.exec(raw.message ?? "")?.[1];
99
+ const path = column === void 0 ? {} : { path: [column] };
100
+ let errors;
101
+ try {
102
+ errors = JSON.parse(raw.details ?? "");
103
+ } catch {
104
+ errors = void 0;
105
+ }
106
+ const messages = Array.isArray(errors) ? errors.filter((entry) => typeof entry === "string") : [];
107
+ return messages.length > 0 ? messages.map((message) => ({
108
+ message,
109
+ ...path
110
+ })) : [{
111
+ message: "The value does not match its JSON Schema",
112
+ ...path
113
+ }];
114
+ }
89
115
  function columnsOf(raw) {
90
116
  return KEY_COLUMNS_IN_DETAILS.exec(raw.details ?? "")?.[1]?.split(",").map((column) => column.trim());
91
117
  }
@@ -96,6 +122,13 @@ function optional(raw) {
96
122
  if (raw.hint) out.hint = raw.hint;
97
123
  return out;
98
124
  }
125
+ /** Adds the operation's limit to a `max_affected` error that doesn't name it. */
126
+ function withMaxAffected(error, maxAffected) {
127
+ return error.kind === "max_affected" && maxAffected !== void 0 && error.maxAffected === void 0 ? {
128
+ ...error,
129
+ maxAffected
130
+ } : error;
131
+ }
99
132
  /**
100
133
  * Maps a PostgREST or Postgres error to a `DbError`. Custom mappers run
101
134
  * first; the first one that returns an error wins.
@@ -138,6 +171,10 @@ function mapBuiltin(raw) {
138
171
  }
139
172
  case "23514": {
140
173
  const constraint = constraintOf(raw);
174
+ if (base.hint === JSON_SCHEMA_HINT || constraint?.startsWith(JSON_SCHEMA_CONSTRAINT)) return dbError("validation", message, {
175
+ ...base,
176
+ issues: jsonSchemaIssues(raw)
177
+ });
141
178
  return dbError("check", message, {
142
179
  ...base,
143
180
  ...constraint ? { constraint } : {}
@@ -168,6 +205,7 @@ function mapBuiltin(raw) {
168
205
  });
169
206
  }
170
207
  case "P0001": return dbError("raised", message, base);
208
+ case "P0002": return dbError("not_found", message, base);
171
209
  case "57014": return dbError("timeout", message, base);
172
210
  case "40001":
173
211
  case "40P01": return dbError("serialization", message, base);
@@ -175,6 +213,13 @@ function mapBuiltin(raw) {
175
213
  case "PGRST301":
176
214
  case "PGRST302":
177
215
  case "PGRST303": return dbError("unauthorized", message, base);
216
+ case "PGRST124": return dbError("max_affected", message, base);
217
+ case "22P02":
218
+ if (message.includes("better_supabase:max_affected")) {
219
+ const affected = MAX_AFFECTED_COUNT.exec(message)?.[1];
220
+ return dbError("max_affected", `The write affects ${affected ?? "more"} rows, more than maxAffected allows`, { code: "22P02" });
221
+ }
222
+ break;
178
223
  case "PGRST123": return dbError("invalid_request", message, {
179
224
  ...base,
180
225
  hint: base.hint ?? "PostgREST aggregates are off. Run `alter role authenticator set pgrst.db_aggregates_enabled = 'true'; notify pgrst, 'reload config';` (see BS210), or use better-supabase/postgres."
@@ -187,11 +232,35 @@ function mapBuiltin(raw) {
187
232
  ...seconds ? { retryAfter: Number(seconds) } : {}
188
233
  });
189
234
  }
235
+ case "BSQ29": return dbError("quota_exceeded", message, {
236
+ ...base,
237
+ ...quotaDetails(raw.details)
238
+ });
190
239
  }
191
240
  if (code.startsWith("22")) return dbError("invalid_input", message, base);
192
241
  if (code.startsWith("PGRST1") || code.startsWith("PGRST2")) return dbError("invalid_request", message, base);
193
242
  if (code.startsWith("08") || /fetch failed|network/i.test(message)) return dbError("network", message, base);
194
243
  return dbError("unexpected", message, base);
195
244
  }
245
+ /** `consume_quota` puts `{ meter, limit, retry_after }` in the error's DETAIL. */
246
+ function quotaDetails(details) {
247
+ let parsed;
248
+ try {
249
+ parsed = JSON.parse(details ?? "");
250
+ } catch {
251
+ return {};
252
+ }
253
+ if (typeof parsed !== "object" || parsed === null) return {};
254
+ const record = parsed;
255
+ const field = (key) => record[key];
256
+ const meter = field("meter");
257
+ const limit = field("limit");
258
+ const retryAfter = field("retry_after");
259
+ return {
260
+ ...typeof meter === "string" ? { meter } : {},
261
+ ...typeof limit === "number" ? { limit } : {},
262
+ ...typeof retryAfter === "number" ? { retryAfter } : {}
263
+ };
264
+ }
196
265
  //#endregion
197
- export { isConflict as a, mapDbError as c, isCheck as i, statusOf as l, dbError as n, isDbError as o, dbErrorOf as r, isForeignKey as s, DbException as t };
266
+ export { isConflict as a, mapDbError as c, isCheck as i, statusOf as l, dbError as n, isDbError as o, dbErrorOf as r, isForeignKey as s, MAX_AFFECTED_MARKER as t, withMaxAffected as u };
@@ -0,0 +1,44 @@
1
+ import { t as DbException } from "./db-exception-CnWcYPxL.js";
2
+ import { n as dbError, o as isDbError } from "./errors-B11Duf73.js";
3
+ import { s as toDbError } from "./result-DzUbqgdW.js";
4
+ //#region src/storage/errors.ts
5
+ /** Maps a Storage error (`StorageApiError`, fetch failures) to a `DbError`. */
6
+ function fromStorageError(raw, table) {
7
+ if (isDbError(raw)) return raw;
8
+ if (raw instanceof DbException) return raw.error;
9
+ if (typeof raw !== "object" || raw === null) return toDbError(raw);
10
+ const failure = raw;
11
+ if (failure.name === "AbortError") return toDbError(raw);
12
+ const message = failure.message ?? "Storage request failed";
13
+ const code = failure.code ?? failure.statusCode;
14
+ const base = {
15
+ ...code ? { code } : {},
16
+ ...table ? { table } : {}
17
+ };
18
+ const statusCode = Number(failure.statusCode);
19
+ const status = Number.isFinite(statusCode) && statusCode >= 400 ? statusCode : failure.status ?? 0;
20
+ if (code === "FeatureNotEnabled" || /^Route \S+ not found$/.test(message)) return dbError("unsupported", message, base);
21
+ if (/row-level security|unauthorized to|AccessDenied/i.test(`${message} ${code ?? ""}`)) return dbError("forbidden", message, base);
22
+ if (/already exists|duplicate/i.test(`${message} ${code ?? ""}`)) return dbError("conflict", message, base);
23
+ if (failure.name === "StorageUnknownError" && status === 0) return dbError("network", message, base);
24
+ switch (status) {
25
+ case 400: return dbError("invalid_request", message, base);
26
+ case 401: return dbError("unauthorized", message, base);
27
+ case 403: return dbError("forbidden", message, base);
28
+ case 404: return dbError("not_found", message, base);
29
+ case 409: return dbError("conflict", message, base);
30
+ case 413:
31
+ case 415: return dbError("invalid_input", message, {
32
+ ...base,
33
+ status
34
+ });
35
+ case 408:
36
+ case 429: return dbError("network", message, {
37
+ ...base,
38
+ status
39
+ });
40
+ default: return status >= 500 ? dbError("network", message, base) : dbError("unexpected", message, base);
41
+ }
42
+ }
43
+ //#endregion
44
+ export { fromStorageError as t };
@@ -0,0 +1,7 @@
1
+ //#region src/ir/escape-like.ts
2
+ /** Escapes LIKE wildcards so user input matches literally. */
3
+ function escapeLike(value) {
4
+ return value.replaceAll(/[\\%_]/g, (char) => `\\${char}`);
5
+ }
6
+ //#endregion
7
+ export { escapeLike as t };
@@ -0,0 +1,15 @@
1
+ import { b as DbError, x as DbErrorKind } from "./result-D7y2fT87.js";
2
+ //#region src/core/db-exception.d.ts
3
+ /** Thrown by `.orThrow()`. Carries the plain `DbError` as `error`. */
4
+ declare class DbException extends Error {
5
+ override readonly name = "DbException";
6
+ readonly error: DbError;
7
+ constructor(error: DbError);
8
+ get kind(): DbErrorKind;
9
+ }
10
+ //#endregion
11
+ //#region src/ir/escape-like.d.ts
12
+ /** Escapes LIKE wildcards so user input matches literally. */
13
+ declare function escapeLike(value: string): string;
14
+ //#endregion
15
+ export { DbException as n, escapeLike as t };
@@ -0,0 +1,220 @@
1
+ import { a as ResolveAuthOptions, r as AuthState } from "../resolve-KW8nCeL6.js";
2
+ import { i as CredentialRef, r as CredentialProvider } from "../provider-BH5UWZJ6.js";
3
+ import { i as AiChat } from "../ai-chat-7amvXjmQ.js";
4
+ import { a as Inbox } from "../inbox-i7E1ppo6.js";
5
+ import { a as EveMemoryToolsContext, c as MemoryDocumentConflictError, d as supabaseDocumentBackend, f as supabaseMemory, i as EveMemoryTool, l as SupabaseDocumentBackendOptions, m as EveSessionContext, n as EveMemoryContext, o as EveRecallMessage, p as EveSessionAuth, r as EveMemoryProvider, s as EveRecallResult, t as EveDocumentBackend, u as SupabaseMemoryOptions } from "../eve-gT2Fpjut.js";
6
+ //#region src/eve/auth.d.ts
7
+ /** Thrown by `supabaseAuth` so eve answers with `response` instead of downgrading to anonymous. */
8
+ export declare class EveAuthRejection extends Error {
9
+ override readonly name = "EveAuthRejection";
10
+ readonly response: Response;
11
+ constructor(message: string, status?: number);
12
+ }
13
+ interface SupabaseAuthOptions extends Omit<ResolveAuthOptions, "refresh" | "leeway" | "refreshTimeoutMs"> {
14
+ /** The tenant claim, `config.claims.tenant`. Defaults to `tenant_id`. */
15
+ readonly tenantClaim?: string;
16
+ /** The memberships claim, `config.claims.memberships`. Defaults to `memberships`. */
17
+ readonly membershipsClaim?: string;
18
+ /** Extra attributes from the verified claims, merged over the defaults. */
19
+ readonly attributes?: (claims: Readonly<Record<string, unknown>>) => Readonly<Record<string, string | readonly string[]>>;
20
+ }
21
+ /** The eve principal for a verified Supabase user, or `null` for anyone else. */
22
+ export declare function principalOf(auth: AuthState, options?: Pick<SupabaseAuthOptions, "tenantClaim" | "membershipsClaim" | "attributes">): EveSessionAuth | null;
23
+ /**
24
+ * An eve route `AuthFn` that verifies the Supabase session locally (cookie or
25
+ * bearer) and maps the user to a principal. Requests without a session fall
26
+ * through to the next entry; an invalid token is rejected with 401.
27
+ */
28
+ export declare function supabaseAuth(options: SupabaseAuthOptions): (request: Request) => Promise<EveSessionAuth | null>;
29
+ //#endregion
30
+ //#region src/eve/connections.d.ts
31
+ /** eve's `ConnectionAuthorizationRequiredError`, matched by name. */
32
+ export declare class ConnectionAuthorizationRequiredError extends Error {
33
+ override readonly name = "ConnectionAuthorizationRequiredError";
34
+ readonly connectionName: string;
35
+ constructor(connectionName: string, options?: {
36
+ readonly message?: string;
37
+ });
38
+ }
39
+ /** eve's `ConnectionAuthorizationFailedError`, matched by name. */
40
+ export declare class ConnectionAuthorizationFailedError extends Error {
41
+ override readonly name = "ConnectionAuthorizationFailedError";
42
+ readonly connectionName: string;
43
+ readonly reason: string;
44
+ readonly retryable: boolean;
45
+ constructor(connectionName: string, options: {
46
+ readonly message?: string;
47
+ readonly reason: string;
48
+ readonly retryable: boolean;
49
+ });
50
+ }
51
+ /** The identity eve resolves for a connection callback. */
52
+ type EveConnectionPrincipal = {
53
+ readonly type: "app";
54
+ } | {
55
+ readonly type: "user";
56
+ readonly id: string;
57
+ readonly issuer?: string;
58
+ readonly attributes?: Readonly<Record<string, string | readonly string[]>>;
59
+ };
60
+ interface EveConnectionRequest {
61
+ readonly principal: EveConnectionPrincipal;
62
+ readonly connection: {
63
+ readonly url: string;
64
+ };
65
+ }
66
+ interface EveTokenResult {
67
+ readonly token: string;
68
+ /** Epoch milliseconds. */
69
+ readonly expiresAt?: number;
70
+ readonly providerSubject?: string;
71
+ }
72
+ interface EveAuthorizationChallenge {
73
+ readonly challenge: {
74
+ readonly url?: string;
75
+ readonly displayName?: string;
76
+ readonly instructions?: string;
77
+ };
78
+ }
79
+ /** A `getToken`-only connection `auth`: eve never runs a consent flow. */
80
+ interface EveTokenAuthorization {
81
+ readonly credentialOwner: "app" | "user";
82
+ readonly displayName?: string;
83
+ getToken(request: EveConnectionRequest): Promise<EveTokenResult>;
84
+ readonly startAuthorization?: undefined;
85
+ readonly completeAuthorization?: undefined;
86
+ }
87
+ /** An interactive connection `auth`, which eve allows only for users. */
88
+ interface EveInteractiveAuthorization {
89
+ readonly principalType: "user";
90
+ readonly displayName?: string;
91
+ getToken(request: EveConnectionRequest): Promise<EveTokenResult>;
92
+ startAuthorization(request: EveConnectionRequest & {
93
+ readonly callbackUrl: string;
94
+ }): Promise<EveAuthorizationChallenge>;
95
+ completeAuthorization(request: EveConnectionRequest & {
96
+ readonly callbackUrl: string;
97
+ readonly callback: {
98
+ readonly params: Readonly<Record<string, string>>;
99
+ readonly method: string;
100
+ };
101
+ }): Promise<EveTokenResult>;
102
+ }
103
+ /** A connection `auth` value for eve's `defineMcpClientConnection`. */
104
+ type EveConnectionAuthorization = EveTokenAuthorization | EveInteractiveAuthorization;
105
+ interface CredentialAuthOptions {
106
+ readonly provider: CredentialProvider;
107
+ readonly ref: CredentialRef;
108
+ /** `app` uses the app's credential; `user` the principal's own. */
109
+ readonly owner: "app" | "user";
110
+ /** The connection's name in errors. Defaults to the ref's provider. */
111
+ readonly connection?: string;
112
+ readonly scopes?: readonly string[];
113
+ /** For `user`: let eve send the user to connect the account when the provider can. Defaults to true. */
114
+ readonly interactive?: boolean;
115
+ }
116
+ /**
117
+ * An eve connection `authorization` over a better-supabase
118
+ * `CredentialProvider` (Vault, Vercel Connect or your own): tokens come from
119
+ * the provider for the app or for the session's user. A user without a stored
120
+ * credential gets eve's authorization flow when the provider supports one.
121
+ */
122
+ export declare function credentialAuth(options: CredentialAuthOptions): EveConnectionAuthorization;
123
+ //#endregion
124
+ //#region src/eve/ids.d.ts
125
+ /** A UUID (version 8) from the SHA-256 of `input`, so the same input always gets the same id. */
126
+ export declare function stableUuid(input: string): Promise<string>;
127
+ //#endregion
128
+ //#region src/eve/inbox.d.ts
129
+ /** The parts of a Chat SDK thread `routeInbox` reads. */
130
+ interface EveChatThread {
131
+ readonly id: string;
132
+ subscribe(): Promise<void>;
133
+ }
134
+ /** The parts of a Chat SDK message `routeInbox` reads. */
135
+ interface EveChatMessage {
136
+ readonly text: string;
137
+ }
138
+ /**
139
+ * The parts of eve's `chatSdkChannel()` result `routeInbox` uses. `T` is the
140
+ * Chat SDK thread, so `send` gets back the thread the handler received.
141
+ */
142
+ interface EveChatSdkBridge<T extends EveChatThread = EveChatThread> {
143
+ readonly bot: {
144
+ onNewMention(handler: (thread: T, message: EveChatMessage) => Promise<void>): void;
145
+ onSubscribedMessage(handler: (thread: T, message: EveChatMessage) => Promise<void>): void;
146
+ };
147
+ send(message: string, options: {
148
+ readonly thread: NoInfer<T>;
149
+ readonly auth: EveSessionAuth | null;
150
+ readonly title?: string;
151
+ }): Promise<unknown>;
152
+ }
153
+ interface RouteInboxOptions {
154
+ /** `createInbox` on a service transport. */
155
+ readonly inbox: Inbox;
156
+ /** The session title for a new conversation. Defaults to the conversation's subject. */
157
+ readonly title?: string;
158
+ }
159
+ /**
160
+ * Hands inbox conversations to eve through a `chatSdkChannel` built over
161
+ * `inboxAdapter`. A message reaches eve only while the conversation's
162
+ * `bot_mode` is `bot`, so an agent's handoff pauses the bot. The turn's
163
+ * principal is the contact, never a user, so contacts get no user-scoped
164
+ * connections.
165
+ */
166
+ export declare function routeInbox<T extends EveChatThread>(bridge: EveChatSdkBridge<T>, options: RouteInboxOptions): void;
167
+ //#endregion
168
+ //#region src/eve/sessions.d.ts
169
+ interface EveEvent<T> {
170
+ readonly type?: string;
171
+ readonly data: T;
172
+ readonly meta?: {
173
+ readonly id?: string;
174
+ readonly at?: string;
175
+ };
176
+ }
177
+ interface TurnData {
178
+ readonly turnId: string;
179
+ readonly sequence: number;
180
+ }
181
+ /** Hook handlers for eve's `defineHook({ events })`. */
182
+ interface EveSessionHooks {
183
+ "session.started"(event: EveEvent<unknown>, ctx: EveSessionContext): Promise<void>;
184
+ "turn.started"(event: EveEvent<TurnData>, ctx: EveSessionContext): Promise<void>;
185
+ "message.received"(event: EveEvent<TurnData & {
186
+ readonly message: string;
187
+ }>, ctx: EveSessionContext): Promise<void>;
188
+ "message.completed"(event: EveEvent<TurnData & {
189
+ readonly message: string;
190
+ readonly stepIndex: number;
191
+ readonly finishReason: string;
192
+ }>, ctx: EveSessionContext): Promise<void>;
193
+ "turn.completed"(event: EveEvent<TurnData>, ctx: EveSessionContext): Promise<void>;
194
+ "turn.failed"(event: EveEvent<TurnData & {
195
+ readonly code: string;
196
+ readonly message: string;
197
+ }>, ctx: EveSessionContext): Promise<void>;
198
+ "turn.cancelled"(event: EveEvent<TurnData>, ctx: EveSessionContext): Promise<void>;
199
+ }
200
+ interface PersistSessionsOptions {
201
+ /** `createAiChat` on a service transport. */
202
+ readonly chats: AiChat;
203
+ /** The tenant of a principal. Defaults to `attributes.tenantId`. */
204
+ readonly organizationOf?: (auth: EveSessionAuth) => string | undefined;
205
+ readonly agentId?: string;
206
+ /** The title of a new chat. Defaults to `eve session`. */
207
+ readonly title?: string;
208
+ }
209
+ /** The `ai_chats` id of an eve session: the same session always maps to the same chat. */
210
+ export declare function chatIdOf(sessionId: string): Promise<string>;
211
+ /**
212
+ * Hook handlers that copy an eve session into the canonical chat tables, so
213
+ * the chat UI, search, memory recall and analytics read eve sessions like any
214
+ * other chat. Every write is keyed by the event, so eve's at-least-once
215
+ * delivery stores each message once. Sessions without a signed-in user and
216
+ * tenant are skipped.
217
+ */
218
+ export declare function persistSessions(options: PersistSessionsOptions): EveSessionHooks;
219
+ //#endregion
220
+ export { type CredentialAuthOptions, type EveAuthorizationChallenge, type EveChatMessage, type EveChatSdkBridge, type EveChatThread, type EveConnectionAuthorization, type EveConnectionPrincipal, type EveConnectionRequest, type EveDocumentBackend, type EveInteractiveAuthorization, type EveMemoryContext, type EveMemoryProvider, type EveMemoryTool, type EveMemoryToolsContext, type EveRecallMessage, type EveRecallResult, type EveSessionAuth, type EveSessionContext, type EveSessionHooks, type EveTokenAuthorization, type EveTokenResult, MemoryDocumentConflictError, type PersistSessionsOptions, type RouteInboxOptions, type SupabaseAuthOptions, type SupabaseDocumentBackendOptions, type SupabaseMemoryOptions, supabaseDocumentBackend, supabaseMemory };