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,319 @@
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 { O as textOf, d as isRecord, f as notFoundError, h as optionalText, i as blockCall, k as toInstant, m as optionalInstant, n as applyTemporal, p as oneOf, u as instantArg, x as recordsOf, y as recordOf } from "./block-helpers-DWHxHsEQ.js";
4
+ import { t as fromStorageError } from "./errors-DLjJHPLK.js";
5
+ //#region src/blocks/ai-files/rows.ts
6
+ const FILE_STATUSES = [
7
+ "pending",
8
+ "ready",
9
+ "failed"
10
+ ];
11
+ const FILE_SOURCES = [
12
+ "upload",
13
+ "generated",
14
+ "provider"
15
+ ];
16
+ const DOCUMENT_KINDS = [
17
+ "text",
18
+ "code",
19
+ "sheet",
20
+ "image"
21
+ ];
22
+ const instant = (value) => value instanceof Date ? toInstant(value) : toInstant(textOf(value));
23
+ function fileOf(value) {
24
+ const row = recordOf(value, "ai_files");
25
+ return {
26
+ id: textOf(row["id"]),
27
+ organizationId: textOf(row["organization_id"]),
28
+ ownerId: textOf(row["owner_id"]),
29
+ chatId: optionalText(row["chat_id"]),
30
+ projectId: optionalText(row["project_id"]),
31
+ bucket: textOf(row["bucket"]),
32
+ path: textOf(row["path"]),
33
+ mediaType: textOf(row["media_type"]),
34
+ filename: textOf(row["filename"]),
35
+ size: Number(row["byte_size"] ?? 0),
36
+ sha256: optionalText(row["sha256"]),
37
+ status: oneOf(textOf(row["status"]), FILE_STATUSES, "failed"),
38
+ source: oneOf(textOf(row["source"]), FILE_SOURCES, "upload"),
39
+ createdAt: instant(row["created_at"]),
40
+ uploadedAt: optionalInstant(row["uploaded_at"]),
41
+ expiresAt: optionalInstant(row["expires_at"])
42
+ };
43
+ }
44
+ function providerFileOf(value) {
45
+ const row = recordOf(value, "ai_provider_files");
46
+ return {
47
+ fileId: textOf(row["file_id"]),
48
+ provider: textOf(row["provider"]),
49
+ reference: textOf(row["reference"]),
50
+ expiresAt: optionalInstant(row["expires_at"])
51
+ };
52
+ }
53
+ function documentOf(value) {
54
+ const row = recordOf(value, "ai_documents");
55
+ return {
56
+ id: textOf(row["id"]),
57
+ organizationId: textOf(row["organization_id"]),
58
+ ownerId: textOf(row["owner_id"]),
59
+ chatId: optionalText(row["chat_id"]),
60
+ kind: oneOf(textOf(row["kind"]), DOCUMENT_KINDS, "text"),
61
+ title: textOf(row["title"]),
62
+ version: Number(row["current_version"] ?? 1),
63
+ createdAt: instant(row["created_at"]),
64
+ updatedAt: instant(row["updated_at"])
65
+ };
66
+ }
67
+ function versionOf(value) {
68
+ const row = recordOf(value, "ai_document_versions");
69
+ return {
70
+ documentId: textOf(row["document_id"]),
71
+ version: Number(row["version"]),
72
+ content: optionalText(row["content"]),
73
+ storagePath: optionalText(row["storage_path"]),
74
+ messageId: optionalText(row["created_by_message_id"]),
75
+ createdBy: optionalText(row["created_by"]),
76
+ createdAt: instant(row["created_at"])
77
+ };
78
+ }
79
+ function suggestionOf(value) {
80
+ const row = recordOf(value, "ai_suggestions");
81
+ const accepted = row["accepted"];
82
+ return {
83
+ id: textOf(row["id"]),
84
+ documentId: textOf(row["document_id"]),
85
+ version: Number(row["version"]),
86
+ originalText: textOf(row["original_text"]),
87
+ suggestedText: textOf(row["suggested_text"]),
88
+ description: optionalText(row["description"]),
89
+ createdBy: optionalText(row["created_by"]),
90
+ createdAt: instant(row["created_at"]),
91
+ resolvedAt: optionalInstant(row["resolved_at"]),
92
+ accepted: typeof accepted === "boolean" ? accepted : void 0
93
+ };
94
+ }
95
+ //#endregion
96
+ //#region src/blocks/ai-files/ai-files.ts
97
+ const SCHEME = "supabase-storage:";
98
+ /** The URL a message stores for a file: `supabase-storage://{bucket}/{path}`. */
99
+ function aiFileUrl(file) {
100
+ return `${SCHEME}//${file.bucket}/${file.path.split("/").map(encodeURIComponent).join("/")}`;
101
+ }
102
+ /** The bucket and path of a `supabase-storage://` URL, or `undefined`. */
103
+ function parseAiFileUrl(url) {
104
+ let parsed;
105
+ try {
106
+ parsed = typeof url === "string" ? new URL(url) : url;
107
+ } catch {
108
+ return;
109
+ }
110
+ if (parsed.protocol !== SCHEME || parsed.hostname === "") return void 0;
111
+ const segments = parsed.pathname.split("/").filter((part) => part !== "");
112
+ if (segments.length === 0) return void 0;
113
+ try {
114
+ return {
115
+ bucket: decodeURIComponent(parsed.hostname),
116
+ path: segments.map(decodeURIComponent).join("/")
117
+ };
118
+ } catch {
119
+ return;
120
+ }
121
+ }
122
+ const notFound = () => notFoundError("No AI file you can see has this id", "AI_FILE_NOT_FOUND");
123
+ const notReady = () => dbError("invalid_request", "The file is not uploaded yet", { hint: "AI_FILE_NOT_READY" });
124
+ function stored(reply) {
125
+ return AsyncResult.from(async () => {
126
+ try {
127
+ const { data, error } = await reply;
128
+ if (error) return err(fromStorageError(error, "storage.objects"));
129
+ if (data === null || data === void 0) return err(dbError("network", "Storage returned no data"));
130
+ return ok(data);
131
+ } catch (cause) {
132
+ return err(fromStorageError(cause, "storage.objects"));
133
+ }
134
+ });
135
+ }
136
+ /** 50 MB, the module's default `maxSize`. */
137
+ const DEFAULT_MAX_BYTES = 52428800;
138
+ /** Files and documents for AI chats, as the caller and as the service role. */
139
+ function createAiFiles(options) {
140
+ applyTemporal(options);
141
+ const call = blockCall(options.transport, options.schema, options.mappers);
142
+ const service = blockCall(options.service ?? options.transport, options.schema, options.mappers);
143
+ const ttl = options.downloadTtl ?? 300;
144
+ const maxBytes = options.maxBytes ?? DEFAULT_MAX_BYTES;
145
+ const serviceStorage = options.serviceStorage ?? options.storage;
146
+ const found = (value) => isRecord(value) ? AsyncResult.ok(fileOf(value)) : AsyncResult.err(notFound());
147
+ const get = (fileId) => call("get_ai_file", { file_id: fileId }, (value) => value).andThen(found);
148
+ const fileFrom = (file) => typeof file === "string" ? get(file) : AsyncResult.ok(file);
149
+ const resolve = (url) => {
150
+ const target = parseAiFileUrl(url);
151
+ if (!target) return AsyncResult.err(dbError("invalid_request", "Not a supabase-storage:// URL", { hint: "AI_FILE_URL" }));
152
+ return call("get_ai_file_by_path", {
153
+ bucket: target.bucket,
154
+ path: target.path
155
+ }, (value) => value).andThen(found);
156
+ };
157
+ const sign = (file) => fileFrom(file).andThen((row) => row.status === "ready" ? stored(options.storage.from(row.bucket).createSignedUrl(row.path, ttl)).map((url) => url.signedUrl) : Promise.resolve(err(notReady())));
158
+ return {
159
+ files: {
160
+ upload: (organizationId, file) => call("reserve_ai_file", {
161
+ tenant: organizationId,
162
+ filename: file.filename,
163
+ media_type: file.mediaType,
164
+ byte_size: file.size,
165
+ chat_id: file.chatId,
166
+ project_id: file.projectId
167
+ }, fileOf).andThen((created) => stored(options.storage.from(created.bucket).createSignedUploadUrl(created.path)).map((url) => ({
168
+ file: created,
169
+ signedUrl: url.signedUrl,
170
+ token: url.token
171
+ }))),
172
+ confirm: (fileId, sha256) => call("confirm_ai_file", {
173
+ file_id: fileId,
174
+ sha256
175
+ }, fileOf),
176
+ get,
177
+ resolve,
178
+ list: (chatId) => call("list_ai_files", { chat_id: chatId }, (value) => recordsOf(value, "list_ai_files").map(fileOf)),
179
+ sign,
180
+ read: (file) => fileFrom(file).andThen(async (row) => {
181
+ if (row.status !== "ready") return err(notReady());
182
+ if (row.size > maxBytes) return err(dbError("invalid_request", "The file is larger than maxBytes", { hint: "AI_FILE_TOO_LARGE" }));
183
+ const blob = await stored(options.storage.from(row.bucket).download(row.path));
184
+ if (!blob.ok) return err(blob.error);
185
+ if (blob.data.size > maxBytes) return err(dbError("invalid_request", "The file is larger than maxBytes", { hint: "AI_FILE_TOO_LARGE" }));
186
+ return ok({
187
+ file: row,
188
+ data: new Uint8Array(await blob.data.arrayBuffer())
189
+ });
190
+ }),
191
+ remove: (fileId) => call("delete_ai_file", { file_id: fileId }, (value) => value).andThen(async (value) => {
192
+ if (!isRecord(value)) return ok(false);
193
+ const removed = await stored(options.storage.from(textOf(value["bucket"])).remove([textOf(value["path"])]));
194
+ return removed.ok ? ok(true) : err(removed.error);
195
+ }),
196
+ store: (organizationId, file) => service("store_ai_file", {
197
+ tenant: organizationId,
198
+ owner: file.ownerId,
199
+ filename: file.filename,
200
+ media_type: file.mediaType,
201
+ byte_size: file.data instanceof Uint8Array ? file.data.byteLength : file.data.size,
202
+ chat_id: file.chatId,
203
+ source: file.source ?? "generated"
204
+ }, fileOf).andThen(async (created) => {
205
+ const target = serviceStorage.from(created.bucket);
206
+ if (!target.upload) return err(dbError("invalid_request", "The storage client has no upload", { hint: "AI_FILE_STORAGE_CLIENT" }));
207
+ const sent = await stored(target.upload(created.path, file.data, {
208
+ contentType: created.mediaType,
209
+ upsert: false
210
+ }));
211
+ if (sent.ok) return ok(created);
212
+ await service("delete_ai_file", { file_id: created.id }, () => true);
213
+ return err(sent.error);
214
+ }),
215
+ purge: (purgeOptions = {}) => service("purge_ai_files", {
216
+ older_than: purgeOptions.olderThan,
217
+ batch: purgeOptions.batch
218
+ }, (value) => recordsOf(value, "purge_ai_files")).andThen(async (removed) => {
219
+ const byBucket = /* @__PURE__ */ new Map();
220
+ for (const row of removed) {
221
+ const bucket = textOf(row["bucket"]);
222
+ const paths = byBucket.get(bucket) ?? [];
223
+ paths.push(textOf(row["path"]));
224
+ byBucket.set(bucket, paths);
225
+ }
226
+ for (const [bucket, paths] of byBucket) {
227
+ const result = await stored(serviceStorage.from(bucket).remove(paths));
228
+ if (!result.ok) return err(result.error);
229
+ }
230
+ return ok(removed.length);
231
+ })
232
+ },
233
+ providerFiles: {
234
+ get: (fileId, provider) => service("get_ai_provider_file", {
235
+ file_id: fileId,
236
+ provider
237
+ }, (value) => isRecord(value) ? providerFileOf(value) : void 0),
238
+ set: (fileId, provider, reference, expiresAt) => service("set_ai_provider_file", {
239
+ file_id: fileId,
240
+ provider,
241
+ reference,
242
+ expires_at: instantArg(expiresAt)
243
+ }, (value) => value === true),
244
+ expiring: (horizon, batch) => service("expiring_ai_provider_files", {
245
+ horizon,
246
+ batch
247
+ }, (value) => recordsOf(value, "expiring_ai_provider_files").map(providerFileOf))
248
+ },
249
+ documents: {
250
+ create: (organizationId, document) => (document.ownerId === void 0 ? call : service)("create_ai_document", {
251
+ tenant: organizationId,
252
+ kind: document.kind,
253
+ title: document.title,
254
+ content: document.content,
255
+ chat_id: document.chatId,
256
+ message_id: document.messageId,
257
+ owner: document.ownerId,
258
+ storage_path: document.storagePath
259
+ }, documentOf),
260
+ get: (documentId) => call("get_ai_document", { document_id: documentId }, (value) => value).andThen((value) => Promise.resolve(isRecord(value) ? ok({
261
+ ...documentOf(value),
262
+ content: optionalText(value["content"]),
263
+ storagePath: optionalText(value["storage_path"])
264
+ }) : err(dbError("not_found", "No document you can see has this id", { hint: "AI_DOCUMENT_NOT_FOUND" })))),
265
+ update: (documentId, edit) => call("update_ai_document", {
266
+ document_id: documentId,
267
+ content: edit.content,
268
+ title: edit.title,
269
+ message_id: edit.messageId,
270
+ expected_version: edit.expectedVersion,
271
+ storage_path: edit.storagePath
272
+ }, documentOf),
273
+ rollback: (documentId, version) => call("rollback_ai_document", {
274
+ document_id: documentId,
275
+ version
276
+ }, documentOf),
277
+ versions: (documentId) => call("list_ai_document_versions", { document_id: documentId }, (value) => recordsOf(value, "list_ai_document_versions").map(versionOf)),
278
+ remove: (documentId) => call("delete_ai_document", { document_id: documentId }, (value) => value === true),
279
+ suggest: (documentId, suggestion) => call("suggest_ai_document_edit", {
280
+ document_id: documentId,
281
+ original_text: suggestion.originalText,
282
+ suggested_text: suggestion.suggestedText,
283
+ description: suggestion.description
284
+ }, suggestionOf),
285
+ suggestions: (documentId, query = {}) => call("list_ai_suggestions", {
286
+ document_id: documentId,
287
+ open_only: query.openOnly ?? true
288
+ }, (value) => recordsOf(value, "list_ai_suggestions").map(suggestionOf)),
289
+ resolve: (suggestionId, accepted) => call("resolve_ai_suggestion", {
290
+ suggestion_id: suggestionId,
291
+ accepted
292
+ }, suggestionOf)
293
+ },
294
+ sign: async (messages) => {
295
+ const signed = /* @__PURE__ */ new Map();
296
+ for (const message of messages) for (const part of message.parts) {
297
+ if (part.type !== "file" || signed.has(part.url)) continue;
298
+ if (!parseAiFileUrl(part.url)) continue;
299
+ const result = await resolve(part.url).andThen(sign);
300
+ signed.set(part.url, result.ok ? result.data : void 0);
301
+ }
302
+ if (signed.size === 0) return messages;
303
+ const swap = (part) => {
304
+ if (part.type !== "file") return part;
305
+ const url = signed.get(part.url);
306
+ return url === void 0 ? part : {
307
+ ...part,
308
+ url
309
+ };
310
+ };
311
+ return messages.map((message) => ({
312
+ ...message,
313
+ parts: message.parts.map(swap)
314
+ }));
315
+ }
316
+ };
317
+ }
318
+ //#endregion
319
+ export { createAiFiles as n, parseAiFileUrl as r, aiFileUrl as t };
@@ -0,0 +1,74 @@
1
+ import { r as Knowledge, u as KnowledgeSearchOptions } from "../../knowledge-BXBbT0Tr.js";
2
+ import { t as Agent } from "../../agents-CVHGd7It.js";
3
+ import { P as AiToolPolicy, _ as AiModerationAction, b as AiModerationStage, i as AiChat } from "../../ai-chat-7amvXjmQ.js";
4
+ import { r as SearchToolOptions } from "../../embeddings-C9KGQnXt.js";
5
+ import { LanguageModel, LanguageModelMiddleware, StopCondition, ToolLoopAgent, ToolLoopAgentSettings, ToolSet } from "ai";
6
+ //#region src/ai-sdk/agents/agents.d.ts
7
+ /**
8
+ * The tools an agent may call: the ones it lists (every tool when it lists
9
+ * none), without the tenant's `deny` tools.
10
+ */
11
+ export declare function agentTools(agent: Pick<Agent, "tools">, available: ToolSet, policies?: Readonly<Record<string, AiToolPolicy>>): ToolSet;
12
+ /** The `toolApproval` setting that makes the tenant's `ask` tools wait for the user. */
13
+ export declare function agentToolApproval(tools: ToolSet, policies?: Readonly<Record<string, AiToolPolicy>>): Record<string, "user-approval">;
14
+ /** A `toolApproval` function, as `ToolLoopAgent` takes it. */
15
+ type AgentToolApprovalFunction = Extract<NonNullable<ToolLoopAgentSettings<never, ToolSet>["toolApproval"]>, (options: never) => unknown>;
16
+ /** The knowledge scopes an agent searches; `agent` without an id is its own. */
17
+ export declare function agentScopes(agent: Pick<Agent, "id" | "knowledgeScopes">): NonNullable<KnowledgeSearchOptions["scopes"]>;
18
+ interface AgentRuntimeOptions {
19
+ readonly agent: Agent;
20
+ /** The model for the agent's `model` id; the app picks one when it is unset. */
21
+ readonly model: (modelId: string | undefined) => LanguageModel;
22
+ /** Every tool the app offers; the agent gets the ones it may call. */
23
+ readonly tools?: ToolSet;
24
+ /** `approvals.policies(organizationId)` of the ai-chat block. */
25
+ readonly policies?: Readonly<Record<string, AiToolPolicy>>;
26
+ /** Adds a `search_knowledge` tool over the agent's knowledge scopes. */
27
+ readonly knowledge?: {
28
+ readonly knowledge: Knowledge;
29
+ readonly organizationId: string;
30
+ readonly options?: SearchToolOptions;
31
+ };
32
+ /** Text before the agent's own instructions, such as the app's rules. */
33
+ readonly instructions?: string;
34
+ /** Default 20 steps. */
35
+ readonly stopWhen?: StopCondition<ToolSet> | StopCondition<ToolSet>[];
36
+ /**
37
+ * The app's approval check for each tool call, such as an authorization
38
+ * check. It runs before the tenant's `policies`, and the stricter answer
39
+ * wins: `denied` over `user-approval` over `approved`. A throw denies.
40
+ */
41
+ readonly toolApproval?: AgentToolApprovalFunction;
42
+ }
43
+ /** A `ToolLoopAgent` from an agent row. */
44
+ export declare function createAgentRuntime(options: AgentRuntimeOptions): ToolLoopAgent<never, ToolSet>;
45
+ /** What a moderation check says about a text. */
46
+ interface ModerationVerdict {
47
+ readonly action: AiModerationAction;
48
+ readonly category: string;
49
+ readonly score?: number;
50
+ }
51
+ interface ModerationMiddlewareOptions {
52
+ readonly chats: AiChat;
53
+ readonly organizationId: string;
54
+ readonly chatId?: string;
55
+ readonly userId?: string;
56
+ /** Checks the last user message (`input`) and the answer (`output`). */
57
+ readonly check: (text: string, stage: Extract<AiModerationStage, "input" | "output">) => Promise<ModerationVerdict | undefined>;
58
+ }
59
+ /** Thrown by the moderation middleware when a check blocks the input or output. */
60
+ export declare class ModerationBlockedError extends Error {
61
+ readonly category: string;
62
+ readonly stage: AiModerationStage;
63
+ constructor(stage: AiModerationStage, category: string);
64
+ }
65
+ /**
66
+ * A language model middleware that checks the user's message before the
67
+ * model runs and the answer after it, records every verdict but `allow` in
68
+ * the ai-chat moderation log, and throws `ModerationBlockedError` on
69
+ * `block`. A streamed answer has reached the client when its check runs, so
70
+ * a blocked stream ends with an error part instead of the text vanishing.
71
+ */
72
+ export declare function moderationMiddleware(options: ModerationMiddlewareOptions): LanguageModelMiddleware;
73
+ //#endregion
74
+ export type { Agent, AgentRuntimeOptions, AgentToolApprovalFunction, ModerationMiddlewareOptions, ModerationVerdict };
@@ -0,0 +1,159 @@
1
+ import { t as DbException } from "../../db-exception-CnWcYPxL.js";
2
+ import { i as searchTool } from "../../embeddings-4ZvFzjsU.js";
3
+ import { ToolLoopAgent, stepCountIs } from "ai";
4
+ //#region src/ai-sdk/agents/agents.ts
5
+ /**
6
+ * The tools an agent may call: the ones it lists (every tool when it lists
7
+ * none), without the tenant's `deny` tools.
8
+ */
9
+ function agentTools(agent, available, policies = {}) {
10
+ const allowed = agent.tools.length === 0 ? void 0 : new Set(agent.tools);
11
+ const tools = {};
12
+ for (const [name, tool] of Object.entries(available)) {
13
+ if (allowed !== void 0 && !allowed.has(name)) continue;
14
+ if (policies[name] === "deny") continue;
15
+ tools[name] = tool;
16
+ }
17
+ return tools;
18
+ }
19
+ /** The `toolApproval` setting that makes the tenant's `ask` tools wait for the user. */
20
+ function agentToolApproval(tools, policies = {}) {
21
+ const approval = {};
22
+ for (const name of Object.keys(tools)) if (policies[name] === "ask") approval[name] = "user-approval";
23
+ return approval;
24
+ }
25
+ const APPROVAL_RANK = {
26
+ "not-applicable": 0,
27
+ approved: 1,
28
+ "user-approval": 2,
29
+ denied: 3
30
+ };
31
+ const approvalType = (status) => status === void 0 ? "not-applicable" : typeof status === "string" ? status : status.type;
32
+ /**
33
+ * The app's `toolApproval` with the tenant's `ask` tools: the app decides
34
+ * first, and the stricter of the two answers wins (`denied`, then
35
+ * `user-approval`). A function that throws denies the call.
36
+ */
37
+ function composedApproval(approve, tenant) {
38
+ return async (options) => {
39
+ let status;
40
+ try {
41
+ status = await approve(options);
42
+ } catch {
43
+ return {
44
+ type: "denied",
45
+ reason: "The tool approval check failed"
46
+ };
47
+ }
48
+ return tenant[options.toolCall.toolName] !== void 0 && APPROVAL_RANK[approvalType(status)] < APPROVAL_RANK["user-approval"] ? "user-approval" : status;
49
+ };
50
+ }
51
+ /** The knowledge scopes an agent searches; `agent` without an id is its own. */
52
+ function agentScopes(agent) {
53
+ return agent.knowledgeScopes.map((scope) => scope.scope === "agent" && scope.id === void 0 ? {
54
+ scope: "agent",
55
+ id: agent.id
56
+ } : scope);
57
+ }
58
+ /** A `ToolLoopAgent` from an agent row. */
59
+ function createAgentRuntime(options) {
60
+ const { agent } = options;
61
+ const tools = agentTools(agent, options.tools ?? {}, options.policies);
62
+ if (options.knowledge !== void 0 && agent.knowledgeScopes.length > 0) {
63
+ const { knowledge, organizationId, options: search = {} } = options.knowledge;
64
+ tools["search_knowledge"] = searchTool(knowledge, organizationId, {
65
+ ...search,
66
+ scopes: agentScopes(agent)
67
+ });
68
+ }
69
+ const instructions = [options.instructions, agent.instructions].filter((text) => text !== void 0 && text !== "").join("\n\n");
70
+ return new ToolLoopAgent({
71
+ id: agent.id,
72
+ model: options.model(agent.model),
73
+ tools,
74
+ toolApproval: options.toolApproval === void 0 ? agentToolApproval(tools, options.policies) : composedApproval(options.toolApproval, agentToolApproval(tools, options.policies)),
75
+ ...instructions === "" ? {} : { instructions },
76
+ stopWhen: options.stopWhen ?? stepCountIs(20)
77
+ });
78
+ }
79
+ /** Thrown by the moderation middleware when a check blocks the input or output. */
80
+ var ModerationBlockedError = class extends Error {
81
+ category;
82
+ stage;
83
+ constructor(stage, category) {
84
+ super(`The ${stage} was blocked by moderation (${category})`);
85
+ this.name = "ModerationBlockedError";
86
+ this.stage = stage;
87
+ this.category = category;
88
+ }
89
+ };
90
+ function lastUserText(prompt) {
91
+ for (let index = prompt.length - 1; index >= 0; index -= 1) {
92
+ const message = prompt[index];
93
+ if (message?.role !== "user") continue;
94
+ return message.content.flatMap((part) => part.type === "text" ? [part.text] : []).join("\n");
95
+ }
96
+ return "";
97
+ }
98
+ /**
99
+ * A language model middleware that checks the user's message before the
100
+ * model runs and the answer after it, records every verdict but `allow` in
101
+ * the ai-chat moderation log, and throws `ModerationBlockedError` on
102
+ * `block`. A streamed answer has reached the client when its check runs, so
103
+ * a blocked stream ends with an error part instead of the text vanishing.
104
+ */
105
+ function moderationMiddleware(options) {
106
+ const judge = async (text, stage) => {
107
+ if (text.trim() === "") return void 0;
108
+ const verdict = await options.check(text, stage);
109
+ if (verdict === void 0 || verdict.action === "allow") return verdict;
110
+ const recorded = await options.chats.moderation.record({
111
+ organizationId: options.organizationId,
112
+ stage,
113
+ action: verdict.action,
114
+ category: verdict.category,
115
+ ...options.chatId === void 0 ? {} : { chatId: options.chatId },
116
+ ...options.userId === void 0 ? {} : { userId: options.userId },
117
+ ...verdict.score === void 0 ? {} : { score: verdict.score }
118
+ });
119
+ if (!recorded.ok) throw new DbException(recorded.error);
120
+ return verdict;
121
+ };
122
+ return {
123
+ transformParams: async ({ params }) => {
124
+ const verdict = await judge(lastUserText(params.prompt), "input");
125
+ if (verdict?.action === "block") throw new ModerationBlockedError("input", verdict.category);
126
+ return params;
127
+ },
128
+ wrapGenerate: async ({ doGenerate }) => {
129
+ const result = await doGenerate();
130
+ const text = result.content.flatMap((part) => part.type === "text" ? [part.text] : []).join("");
131
+ const verdict = await judge(text, "output");
132
+ if (verdict?.action === "block") throw new ModerationBlockedError("output", verdict.category);
133
+ return result;
134
+ },
135
+ wrapStream: async ({ doStream }) => {
136
+ const result = await doStream();
137
+ let text = "";
138
+ const checked = result.stream.pipeThrough(new TransformStream({
139
+ transform(part, controller) {
140
+ if (part.type === "text-delta") text += part.delta;
141
+ controller.enqueue(part);
142
+ },
143
+ async flush(controller) {
144
+ const verdict = await judge(text, "output");
145
+ if (verdict?.action === "block") controller.enqueue({
146
+ type: "error",
147
+ error: new ModerationBlockedError("output", verdict.category)
148
+ });
149
+ }
150
+ }));
151
+ return {
152
+ ...result,
153
+ stream: checked
154
+ };
155
+ }
156
+ };
157
+ }
158
+ //#endregion
159
+ export { ModerationBlockedError, agentScopes, agentToolApproval, agentTools, createAgentRuntime, moderationMiddleware };
@@ -0,0 +1,74 @@
1
+ import { t as AsyncResult } from "../../result-D7y2fT87.js";
2
+ import { i as CursorPageOptions } from "../../block-helpers-CKtbFcRv.js";
3
+ import { m as JobHandler } from "../../queue-CLJurhdy.js";
4
+ import { i as AiBatchItemInput, r as AiBatchItem, t as AiBatch, u as AiProviders } from "../../types-TaiEeBGA.js";
5
+ import { Experimental_BatchItemResult, Experimental_BatchProvider, Experimental_BatchReference, Experimental_BatchStatus, Experimental_StartBatchOptions, Experimental_StartBatchResult } from "ai";
6
+ //#region src/ai-sdk/batches/batches.d.ts
7
+ /** The AI SDK batch calls, replaceable in tests. */
8
+ interface BatchApi {
9
+ start(options: Experimental_StartBatchOptions): PromiseLike<Experimental_StartBatchResult>;
10
+ status(options: {
11
+ provider?: Experimental_BatchProvider;
12
+ batch: Experimental_BatchReference;
13
+ }): PromiseLike<Experimental_BatchStatus>;
14
+ results(options: {
15
+ provider?: Experimental_BatchProvider;
16
+ batch: Experimental_BatchReference;
17
+ }): AsyncIterable<Experimental_BatchItemResult>;
18
+ cancel(options: {
19
+ provider?: Experimental_BatchProvider;
20
+ batch: Experimental_BatchReference;
21
+ }): PromiseLike<unknown>;
22
+ }
23
+ interface AiBatchesOptions {
24
+ /** The providers block: a user transport for `start`, a service one for polling. */
25
+ readonly providers: Pick<AiProviders, "batches">;
26
+ /**
27
+ * The batch provider, or a function that picks one for a stored reference.
28
+ * Defaults to the global provider, or the AI Gateway.
29
+ */
30
+ readonly provider?: Experimental_BatchProvider | ((reference: Experimental_BatchReference) => Experimental_BatchProvider | undefined);
31
+ /** Seconds between two polls of a pending batch. Default 60. */
32
+ readonly pollEvery?: number;
33
+ /** Changes what is stored for an item, such as moving images to Storage first. */
34
+ readonly onItem?: (item: Experimental_BatchItemResult, batch: AiBatch) => AiBatchItemInput | Promise<AiBatchItemInput>;
35
+ /** Called once a batch's results are saved, or it failed. */
36
+ readonly onDone?: (batch: AiBatch) => unknown;
37
+ readonly api?: Partial<BatchApi>;
38
+ }
39
+ interface AiBatches {
40
+ /** Starts a batch and records it for the tenant, as the caller. */
41
+ start(context: {
42
+ readonly organizationId: string;
43
+ readonly userId?: string;
44
+ }, options: Experimental_StartBatchOptions & {
45
+ readonly metadata?: Readonly<Record<string, unknown>>;
46
+ }): AsyncResult<AiBatch>;
47
+ /** The stored batch, as the caller. */
48
+ status(batchId: string): AsyncResult<AiBatch | undefined>;
49
+ /** The stored results, as the caller, after the `requestId` in `cursor`. */
50
+ results(batchId: string, options?: CursorPageOptions<string>): AsyncResult<readonly AiBatchItem[]>;
51
+ /** Asks the provider for the batch's status and stores it (service role). */
52
+ refresh(batch: AiBatch): AsyncResult<AiBatch>;
53
+ /** Streams a finished batch's results into the table (service role). Returns how many. */
54
+ collect(batch: AiBatch): AsyncResult<number>;
55
+ cancel(batch: AiBatch): AsyncResult<AiBatch>;
56
+ /** Claims due batches, refreshes them and collects finished ones. Returns how many it polled. */
57
+ poll(options?: {
58
+ readonly batch?: number;
59
+ }): AsyncResult<number>;
60
+ /** A job handler that runs `poll`; schedule it every minute. */
61
+ pollJob(options?: {
62
+ readonly batch?: number;
63
+ }): JobHandler<unknown>;
64
+ }
65
+ /** What is stored for one result by default. */
66
+ export declare function batchItemOf(item: Experimental_BatchItemResult): AiBatchItemInput;
67
+ /**
68
+ * Batch jobs over the AI SDK's batch API, recorded in the providers block:
69
+ * `start` records the batch, the poll job asks the provider for its status
70
+ * until it finishes and then saves its results, which `results` pages.
71
+ */
72
+ export declare function aiBatches(options: AiBatchesOptions): AiBatches;
73
+ //#endregion
74
+ export type { AiBatches, AiBatchesOptions, BatchApi };