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,504 @@
1
+ import { t as DbException } from "../db-exception-CnWcYPxL.js";
2
+ import { a as tenantClaimPaths, n as claimAt, t as DEFAULT_CLAIMS } from "../claims-PqzCxaTD.js";
3
+ import { i as resolveAuth } from "../resolve-D_IcnvFd.js";
4
+ import { t as isAnonymousUser } from "../view-BeFcRV6G.js";
5
+ import { d as isRecord } from "../block-helpers-DWHxHsEQ.js";
6
+ //#region src/eve/ids.ts
7
+ /** A UUID (version 8) from the SHA-256 of `input`, so the same input always gets the same id. */
8
+ async function stableUuid(input) {
9
+ const bytes = new Uint8Array(await crypto.subtle.digest("SHA-256", new TextEncoder().encode(input))).slice(0, 16);
10
+ bytes[6] = (bytes[6] ?? 0) & 15 | 128;
11
+ bytes[8] = (bytes[8] ?? 0) & 63 | 128;
12
+ const hex = [...bytes].map((byte) => byte.toString(16).padStart(2, "0")).join("");
13
+ return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20)}`;
14
+ }
15
+ //#endregion
16
+ //#region src/eve/auth.ts
17
+ /** Thrown by `supabaseAuth` so eve answers with `response` instead of downgrading to anonymous. */
18
+ var EveAuthRejection = class extends Error {
19
+ name = "EveAuthRejection";
20
+ response;
21
+ constructor(message, status = 401) {
22
+ super(message);
23
+ this.response = new Response(JSON.stringify({ error: message }), {
24
+ status,
25
+ headers: { "content-type": "application/json" }
26
+ });
27
+ }
28
+ };
29
+ function rolesIn(claims, tenantId, claim) {
30
+ const memberships = claims[claim];
31
+ const strings = (value) => Array.isArray(value) ? value.filter((role) => typeof role === "string") : [];
32
+ if (tenantId === void 0) return [];
33
+ if (Array.isArray(memberships)) return [...new Set(memberships.flatMap((entry) => isRecord(entry) && entry["id"] === tenantId ? strings(entry["roles"]) : []))];
34
+ return isRecord(memberships) ? strings(memberships[tenantId]) : [];
35
+ }
36
+ /** The eve principal for a verified Supabase user, or `null` for anyone else. */
37
+ function principalOf(auth, options = {}) {
38
+ if (auth.kind !== "user") return null;
39
+ const claims = auth.claims;
40
+ let tenantId;
41
+ for (const path of tenantClaimPaths(options.tenantClaim)) tenantId ??= claimAt(claims, path);
42
+ const issuer = typeof claims["iss"] === "string" ? claims["iss"] : void 0;
43
+ return {
44
+ authenticator: "supabase",
45
+ principalType: "user",
46
+ principalId: auth.claims.sub,
47
+ subject: auth.claims.sub,
48
+ ...issuer === void 0 ? {} : { issuer },
49
+ attributes: {
50
+ ...tenantId === void 0 ? {} : { tenantId },
51
+ roles: rolesIn(claims, tenantId, options.membershipsClaim ?? DEFAULT_CLAIMS.memberships),
52
+ isAnonymous: isAnonymousUser(claims) ? "true" : "false",
53
+ ...options.attributes?.(claims)
54
+ }
55
+ };
56
+ }
57
+ /**
58
+ * An eve route `AuthFn` that verifies the Supabase session locally (cookie or
59
+ * bearer) and maps the user to a principal. Requests without a session fall
60
+ * through to the next entry; an invalid token is rejected with 401.
61
+ */
62
+ function supabaseAuth(options) {
63
+ return async (request) => {
64
+ const { auth } = await resolveAuth(request, options);
65
+ if (auth.kind === "invalid") throw new EveAuthRejection("The Supabase session is not valid");
66
+ return principalOf(auth, options);
67
+ };
68
+ }
69
+ //#endregion
70
+ //#region src/eve/connections.ts
71
+ /** eve's `ConnectionAuthorizationRequiredError`, matched by name. */
72
+ var ConnectionAuthorizationRequiredError = class extends Error {
73
+ name = "ConnectionAuthorizationRequiredError";
74
+ connectionName;
75
+ constructor(connectionName, options = {}) {
76
+ super(options.message ?? `Connection "${connectionName}" needs authorization`);
77
+ this.connectionName = connectionName;
78
+ }
79
+ };
80
+ /** eve's `ConnectionAuthorizationFailedError`, matched by name. */
81
+ var ConnectionAuthorizationFailedError = class extends Error {
82
+ name = "ConnectionAuthorizationFailedError";
83
+ connectionName;
84
+ reason;
85
+ retryable;
86
+ constructor(connectionName, options) {
87
+ super(options.message ?? `Connection "${connectionName}" failed: ${options.reason}`);
88
+ this.connectionName = connectionName;
89
+ this.reason = options.reason;
90
+ this.retryable = options.retryable;
91
+ }
92
+ };
93
+ const AUTHORIZATION_HINTS = /* @__PURE__ */ new Set([
94
+ "CREDENTIAL_AUTHORIZATION_REQUIRED",
95
+ "CREDENTIAL_NOT_FOUND",
96
+ "CREDENTIAL_SUBJECT_REQUIRED"
97
+ ]);
98
+ function connectionError(name, error) {
99
+ const hint = "hint" in error ? error.hint : void 0;
100
+ if (error.kind === "not_found" || typeof hint === "string" && AUTHORIZATION_HINTS.has(hint)) return new ConnectionAuthorizationRequiredError(name, { message: error.message });
101
+ if (error.kind === "forbidden" || error.kind === "invalid_input") return new ConnectionAuthorizationFailedError(name, {
102
+ message: error.message,
103
+ reason: typeof hint === "string" ? hint : error.kind,
104
+ retryable: false
105
+ });
106
+ return new DbException(error);
107
+ }
108
+ /**
109
+ * An eve connection `authorization` over a better-supabase
110
+ * `CredentialProvider` (Vault, Vercel Connect or your own): tokens come from
111
+ * the provider for the app or for the session's user. A user without a stored
112
+ * credential gets eve's authorization flow when the provider supports one.
113
+ */
114
+ function credentialAuth(options) {
115
+ const name = options.connection ?? options.ref.provider;
116
+ const subjectOf = (principal) => {
117
+ if (options.owner === "app") return { type: "app" };
118
+ if (principal.type !== "user") throw new ConnectionAuthorizationRequiredError(name, { message: `Connection "${name}" needs a signed-in user` });
119
+ return principal.issuer === void 0 ? {
120
+ type: "user",
121
+ id: principal.id
122
+ } : {
123
+ type: "user",
124
+ id: principal.id,
125
+ issuer: principal.issuer
126
+ };
127
+ };
128
+ const displayName = options.connection === void 0 ? {} : { displayName: options.connection };
129
+ const getToken = async ({ principal }) => {
130
+ const result = await options.provider.getToken(options.ref, {
131
+ subject: subjectOf(principal),
132
+ ...options.scopes === void 0 ? {} : { scopes: options.scopes }
133
+ });
134
+ if (!result.ok) throw connectionError(name, result.error);
135
+ const { token, expiresAt } = result.data;
136
+ return expiresAt === void 0 ? { token } : {
137
+ token,
138
+ expiresAt: expiresAt.epochMilliseconds
139
+ };
140
+ };
141
+ const { provider, ref } = options;
142
+ if (options.owner === "app" || options.interactive === false || !provider.capabilities(ref).authorization || !provider.startAuthorization || !provider.completeAuthorization) return {
143
+ credentialOwner: options.owner,
144
+ ...displayName,
145
+ getToken
146
+ };
147
+ const start = provider.startAuthorization.bind(provider);
148
+ const complete = provider.completeAuthorization.bind(provider);
149
+ return {
150
+ principalType: "user",
151
+ ...displayName,
152
+ getToken,
153
+ startAuthorization: async ({ principal, callbackUrl }) => {
154
+ const result = await start(ref, {
155
+ subject: subjectOf(principal),
156
+ redirectUri: callbackUrl,
157
+ ...options.scopes === void 0 ? {} : { scopes: options.scopes }
158
+ });
159
+ if (!result.ok) throw connectionError(name, result.error);
160
+ return { challenge: { url: result.data.url } };
161
+ },
162
+ completeAuthorization: async (request) => {
163
+ const callback = new URL(request.callbackUrl);
164
+ for (const [key, value] of Object.entries(request.callback.params)) callback.searchParams.set(key, value);
165
+ const result = await complete(ref, {
166
+ subject: subjectOf(request.principal),
167
+ callback
168
+ });
169
+ if (!result.ok) throw connectionError(name, result.error);
170
+ return getToken(request);
171
+ }
172
+ };
173
+ }
174
+ //#endregion
175
+ //#region src/eve/inbox.ts
176
+ const INBOX_PREFIX = "inbox:";
177
+ /**
178
+ * Hands inbox conversations to eve through a `chatSdkChannel` built over
179
+ * `inboxAdapter`. A message reaches eve only while the conversation's
180
+ * `bot_mode` is `bot`, so an agent's handoff pauses the bot. The turn's
181
+ * principal is the contact, never a user, so contacts get no user-scoped
182
+ * connections.
183
+ */
184
+ function routeInbox(bridge, options) {
185
+ const handle = async (thread, message) => {
186
+ if (!thread.id.startsWith(INBOX_PREFIX)) return;
187
+ const conversation = await options.inbox.conversations.get(thread.id.slice(6)).orThrow();
188
+ if (conversation?.botMode !== "bot") return;
189
+ const title = options.title ?? conversation.subject ?? void 0;
190
+ await bridge.send(message.text, {
191
+ thread,
192
+ auth: {
193
+ authenticator: "inbox",
194
+ principalType: "contact",
195
+ principalId: conversation.contactId,
196
+ attributes: {
197
+ tenantId: conversation.tenant,
198
+ conversationId: conversation.id
199
+ }
200
+ },
201
+ ...title === void 0 ? {} : { title }
202
+ });
203
+ };
204
+ bridge.bot.onNewMention(async (thread, message) => {
205
+ await thread.subscribe();
206
+ await handle(thread, message);
207
+ });
208
+ bridge.bot.onSubscribedMessage(handle);
209
+ }
210
+ //#endregion
211
+ //#region src/eve/sessions.ts
212
+ /** The `ai_chats` id of an eve session: the same session always maps to the same chat. */
213
+ function chatIdOf(sessionId) {
214
+ return stableUuid(`eve-session:${sessionId}`);
215
+ }
216
+ const streamOf = (sessionId, turnId) => `eve:${sessionId}:${turnId}`;
217
+ /**
218
+ * Hook handlers that copy an eve session into the canonical chat tables, so
219
+ * the chat UI, search, memory recall and analytics read eve sessions like any
220
+ * other chat. Every write is keyed by the event, so eve's at-least-once
221
+ * delivery stores each message once. Sessions without a signed-in user and
222
+ * tenant are skipped.
223
+ */
224
+ function persistSessions(options) {
225
+ const { chats } = options;
226
+ const organizationOf = options.organizationOf ?? ((auth) => {
227
+ const tenant = auth.attributes["tenantId"];
228
+ return typeof tenant === "string" ? tenant : void 0;
229
+ });
230
+ const chatFor = async (ctx) => {
231
+ const auth = ctx.session.auth.initiator ?? ctx.session.auth.current;
232
+ if (auth?.principalType !== "user") return void 0;
233
+ const organizationId = organizationOf(auth);
234
+ if (organizationId === void 0) return void 0;
235
+ const id = await chatIdOf(ctx.session.id);
236
+ await chats.chats.create(organizationId, {
237
+ id,
238
+ ownerId: auth.principalId,
239
+ title: options.title ?? "eve session",
240
+ ...options.agentId === void 0 ? {} : { agentId: options.agentId }
241
+ }).orThrow();
242
+ return id;
243
+ };
244
+ const knownChat = async (ctx) => {
245
+ const auth = ctx.session.auth.initiator ?? ctx.session.auth.current;
246
+ if (auth?.principalType !== "user" || organizationOf(auth) === void 0) return void 0;
247
+ return chatIdOf(ctx.session.id);
248
+ };
249
+ const release = async (ctx, turnId, status, error) => {
250
+ const chatId = await knownChat(ctx);
251
+ if (chatId === void 0) return;
252
+ await chats.runs.release(chatId, streamOf(ctx.session.id, turnId), {
253
+ status,
254
+ ...error === void 0 ? {} : { error }
255
+ }).orThrow();
256
+ };
257
+ return {
258
+ "session.started": async (_event, ctx) => {
259
+ await chatFor(ctx);
260
+ },
261
+ "turn.started": async (event, ctx) => {
262
+ const chatId = await chatFor(ctx);
263
+ if (chatId === void 0) return;
264
+ await chats.runs.claim(chatId, streamOf(ctx.session.id, event.data.turnId), { engine: "eve" }).orThrow();
265
+ },
266
+ "message.received": async (event, ctx) => {
267
+ const chatId = await chatFor(ctx);
268
+ if (chatId === void 0 || event.data.message.length === 0) return;
269
+ const id = `${event.data.turnId}:${String(event.data.sequence)}`;
270
+ await chats.messages.appendUser(chatId, {
271
+ id,
272
+ role: "user",
273
+ parts: [{
274
+ type: "text",
275
+ text: event.data.message
276
+ }]
277
+ }).orThrow();
278
+ },
279
+ "message.completed": async (event, ctx) => {
280
+ const chatId = await knownChat(ctx);
281
+ if (chatId === void 0 || event.data.message.length === 0) return;
282
+ const chat = await chats.chats.get(chatId).orThrow();
283
+ if (chat.leafId === void 0) return;
284
+ const id = `${event.data.turnId}:${String(event.data.stepIndex)}:${String(event.data.sequence)}`;
285
+ await chats.messages.saveAssistant(chatId, {
286
+ id,
287
+ role: "assistant",
288
+ parts: [{
289
+ type: "text",
290
+ text: event.data.message
291
+ }],
292
+ ...event.data.finishReason === "tool-calls" ? { metadata: { interim: true } } : {}
293
+ }, {
294
+ parentId: chat.leafId,
295
+ status: "complete",
296
+ format: "eve",
297
+ native: event.data,
298
+ runId: chat.activeRunId
299
+ }).orThrow();
300
+ },
301
+ "turn.completed": (event, ctx) => release(ctx, event.data.turnId, "completed"),
302
+ "turn.failed": (event, ctx) => release(ctx, event.data.turnId, "failed", `${event.data.code}: ${event.data.message}`),
303
+ "turn.cancelled": (event, ctx) => release(ctx, event.data.turnId, "cancelled")
304
+ };
305
+ }
306
+ //#endregion
307
+ //#region src/eve/eve.ts
308
+ /** eve's `MemoryDocumentConflictError`, matched by name. */
309
+ var MemoryDocumentConflictError = class extends Error {
310
+ name = "MemoryDocumentConflictError";
311
+ key;
312
+ constructor(key) {
313
+ super(`Memory document "${key}" changed since it was read`);
314
+ this.key = key;
315
+ }
316
+ };
317
+ const isConflict = (error) => "hint" in error && error.hint === "MEMORY_DOCUMENT_CONFLICT";
318
+ /**
319
+ * A document backend for eve's `fileMemory()` over the memory module's
320
+ * `memory_documents` table. A write with a stale version throws
321
+ * `MemoryDocumentConflictError`, so eve retries with the current document.
322
+ */
323
+ function supabaseDocumentBackend(options) {
324
+ const scope = options.scope ?? "eve";
325
+ return {
326
+ apiVersion: 1,
327
+ read: async ({ key }) => {
328
+ const result = await options.memory.documents.read(scope, key);
329
+ if (!result.ok) throw new DbException(result.error);
330
+ return result.data ?? null;
331
+ },
332
+ write: async ({ key, content, expectedVersion }) => {
333
+ const result = await options.memory.documents.write(scope, key, content, { expectedVersion });
334
+ if (result.ok) return result.data;
335
+ if (isConflict(result.error)) throw new MemoryDocumentConflictError(key);
336
+ throw new DbException(result.error);
337
+ }
338
+ };
339
+ }
340
+ const OPS_SCOPE = "eve-ops";
341
+ const OP_TTL_SECONDS = 604800;
342
+ function textOfMessage(message) {
343
+ if (typeof message.content === "string") return message.content;
344
+ return message.content.flatMap((part) => part.type === "text" && typeof part.text === "string" ? [part.text] : []).join("\n");
345
+ }
346
+ const isToolsModule = (value) => isRecord(value) && typeof value["defineTool"] === "function";
347
+ /**
348
+ * Loads `eve/tools` when the provider first builds its tools. The specifier
349
+ * is a variable so bundlers leave the optional peer out.
350
+ */
351
+ async function loadTools() {
352
+ const specifier = "eve/tools";
353
+ try {
354
+ return await import(specifier);
355
+ } catch {
356
+ return;
357
+ }
358
+ }
359
+ const isRecallResult = (value) => isRecord(value) && Array.isArray(value["messages"]) && value["messages"].every((message) => isRecord(message) && typeof message["content"] === "string");
360
+ /**
361
+ * An eve memory provider over the memory and knowledge blocks. Every read
362
+ * and write is partitioned by the scope key and the signed-in user; recall
363
+ * stores its answer under the operation id, so a replayed recall returns the
364
+ * same messages.
365
+ */
366
+ function supabaseMemory(options) {
367
+ const { memory } = options;
368
+ const k = options.k ?? 5;
369
+ const organizationOf = options.organizationOf ?? ((auth) => {
370
+ const tenant = auth.attributes["tenantId"];
371
+ return typeof tenant === "string" ? tenant : void 0;
372
+ });
373
+ const target = async (ctx) => {
374
+ const auth = ctx.session.auth.current;
375
+ if (auth?.principalType !== "user") return void 0;
376
+ const organizationId = organizationOf(auth);
377
+ if (organizationId === void 0) return void 0;
378
+ return {
379
+ organizationId,
380
+ namespace: {
381
+ scope: "agent",
382
+ agentId: await stableUuid(`eve-memory:${ctx.memory.scope.key}`),
383
+ ownerId: auth.principalId
384
+ }
385
+ };
386
+ };
387
+ const recall = async (ctx, where) => {
388
+ const query = (ctx.turn?.input ?? []).filter((message) => message.role === "user").map(textOfMessage).join("\n").trim();
389
+ const [core, archival, documents] = await Promise.all([
390
+ memory.render(where.organizationId, where.namespace).orThrow(),
391
+ query.length === 0 ? Promise.resolve([]) : memory.archival.search(where.organizationId, query, where.namespace, { k }).orThrow(),
392
+ query.length === 0 || !options.knowledge ? Promise.resolve([]) : options.knowledge.search(where.organizationId, query, {
393
+ k,
394
+ scopes: options.knowledgeScopes ?? [{ scope: "organization" }]
395
+ }).orThrow()
396
+ ]);
397
+ const messages = [];
398
+ if (core.trim().length > 0) messages.push({
399
+ id: "core",
400
+ content: core
401
+ });
402
+ for (const hit of archival) messages.push({
403
+ id: `memory:${hit.id}`,
404
+ content: hit.content
405
+ });
406
+ for (const hit of documents) messages.push({
407
+ id: `knowledge:${hit.documentId}:${String(hit.index)}`,
408
+ content: hit.title ? `${hit.title}\n${hit.content}` : hit.content
409
+ });
410
+ return { messages };
411
+ };
412
+ let tools;
413
+ const loaded = () => tools ??= (options.load ?? loadTools)().then((value) => {
414
+ if (!isToolsModule(value)) {
415
+ tools = void 0;
416
+ throw new TypeError("supabaseMemory needs the eve package: pnpm add eve");
417
+ }
418
+ return value;
419
+ });
420
+ const provider = {
421
+ recall: { "turn.started": async (ctx) => {
422
+ const where = await target(ctx);
423
+ if (!where) return null;
424
+ const path = `recall/${ctx.operationId}`;
425
+ const scopeKey = ctx.memory.scope.key;
426
+ const stored = await memory.documents.read(OPS_SCOPE, `${scopeKey}/${path}`).orThrow();
427
+ if (stored) {
428
+ const value = JSON.parse(stored.content);
429
+ return isRecallResult(value) ? value : null;
430
+ }
431
+ const result = await recall(ctx, where);
432
+ const written = await memory.documents.write(OPS_SCOPE, `${scopeKey}/${path}`, JSON.stringify(result), {
433
+ expectedVersion: null,
434
+ expiresIn: OP_TTL_SECONDS
435
+ });
436
+ if (written.ok) return result;
437
+ if (!isConflict(written.error)) throw new DbException(written.error);
438
+ const raced = await memory.documents.read(OPS_SCOPE, `${scopeKey}/${path}`).orThrow();
439
+ const value = raced ? JSON.parse(raced.content) : null;
440
+ return isRecallResult(value) ? value : null;
441
+ } },
442
+ ...options.extract ? { capture: { "turn.completed": async (ctx) => {
443
+ const extract = options.extract;
444
+ const where = await target(ctx);
445
+ if (!extract || !where) return;
446
+ const marker = `${ctx.memory.scope.key}/capture/${ctx.operationId}`;
447
+ if (await memory.documents.read(OPS_SCOPE, marker).orThrow()) return;
448
+ const facts = await extract(ctx.messages ?? [], ctx);
449
+ if (facts.length > 0) await memory.saveExtracted(where.organizationId, facts, where.namespace, { sourceMessageId: ctx.operationId }).orThrow();
450
+ const written = await memory.documents.write(OPS_SCOPE, marker, "{}", {
451
+ expectedVersion: null,
452
+ expiresIn: OP_TTL_SECONDS
453
+ });
454
+ if (!written.ok && !isConflict(written.error)) throw new DbException(written.error);
455
+ } } } : {}
456
+ };
457
+ if (options.tools === false) return provider;
458
+ return {
459
+ ...provider,
460
+ tools: async (ctx) => {
461
+ const where = await target(ctx);
462
+ if (!where) return null;
463
+ const { defineTool } = await loaded();
464
+ return {
465
+ remember: defineTool({
466
+ description: "Save a fact about the user to recall in later conversations.",
467
+ inputSchema: {
468
+ type: "object",
469
+ properties: { fact: {
470
+ type: "string",
471
+ minLength: 1,
472
+ maxLength: 2e3
473
+ } },
474
+ required: ["fact"],
475
+ additionalProperties: false
476
+ },
477
+ execute: async (input) => {
478
+ const fact = typeof input["fact"] === "string" ? input["fact"] : "";
479
+ return { id: (await memory.archival.save(where.organizationId, fact, where.namespace).orThrow()).id };
480
+ }
481
+ }),
482
+ forget: defineTool({
483
+ description: "Delete a remembered fact by the id shown with it.",
484
+ inputSchema: {
485
+ type: "object",
486
+ properties: { id: {
487
+ type: "string",
488
+ minLength: 1
489
+ } },
490
+ required: ["id"],
491
+ additionalProperties: false
492
+ },
493
+ execute: async (input) => {
494
+ const id = typeof input["id"] === "string" ? input["id"].replace(/^memory:/, "") : "";
495
+ if (!(await memory.archival.list(where.organizationId, where.namespace, { limit: 1e3 }).orThrow()).some((record) => record.id === id)) return { deleted: false };
496
+ return { deleted: await memory.archival.forget(id).orThrow() };
497
+ }
498
+ })
499
+ };
500
+ }
501
+ };
502
+ }
503
+ //#endregion
504
+ export { ConnectionAuthorizationFailedError, ConnectionAuthorizationRequiredError, EveAuthRejection, MemoryDocumentConflictError, chatIdOf, credentialAuth, persistSessions, principalOf, routeInbox, stableUuid, supabaseAuth, supabaseDocumentBackend, supabaseMemory };
@@ -0,0 +1,151 @@
1
+ import { r as Knowledge, u as KnowledgeSearchOptions } from "./knowledge-BXBbT0Tr.js";
2
+ import { t as Memory } from "./types-DGs5L0VN.js";
3
+ //#region src/eve/types.d.ts
4
+ /**
5
+ * eve's `SessionAuthContext`, typed structurally so this entry never imports
6
+ * eve. `attributes` carries `tenantId`, `roles` and `isAnonymous`.
7
+ */
8
+ interface EveSessionAuth {
9
+ readonly authenticator: string;
10
+ readonly principalType: string;
11
+ readonly principalId: string;
12
+ readonly issuer?: string;
13
+ readonly subject?: string;
14
+ readonly attributes: Readonly<Record<string, string | readonly string[]>>;
15
+ }
16
+ /** The session part of the context eve passes to hooks, memory and connections. */
17
+ interface EveSessionContext {
18
+ readonly session: {
19
+ readonly id: string;
20
+ readonly auth: {
21
+ readonly current: EveSessionAuth | null;
22
+ readonly initiator?: EveSessionAuth | null;
23
+ };
24
+ };
25
+ }
26
+ //#endregion
27
+ //#region src/eve/eve.d.ts
28
+ /** eve's `MemoryDocumentConflictError`, matched by name. */
29
+ declare class MemoryDocumentConflictError extends Error {
30
+ override readonly name = "MemoryDocumentConflictError";
31
+ readonly key: string;
32
+ constructor(key: string);
33
+ }
34
+ /** The backend eve's `fileMemory({ backend })` reads and writes. */
35
+ interface EveDocumentBackend {
36
+ /** The document backend contract version. Omitted means 1. */
37
+ readonly apiVersion?: 1;
38
+ read(input: {
39
+ readonly key: string;
40
+ readonly signal?: AbortSignal;
41
+ }): Promise<{
42
+ readonly content: string;
43
+ readonly version: string;
44
+ } | null>;
45
+ write(input: {
46
+ readonly key: string;
47
+ readonly content: string;
48
+ readonly expectedVersion: string | null;
49
+ readonly signal?: AbortSignal;
50
+ }): Promise<{
51
+ readonly content: string;
52
+ readonly version: string;
53
+ }>;
54
+ }
55
+ interface SupabaseDocumentBackendOptions {
56
+ /** `createMemory` on a service transport. */
57
+ readonly memory: Memory;
58
+ /** Prefixes every key, so apps can share the table. Defaults to `eve`. */
59
+ readonly scope?: string;
60
+ }
61
+ /**
62
+ * A document backend for eve's `fileMemory()` over the memory module's
63
+ * `memory_documents` table. A write with a stale version throws
64
+ * `MemoryDocumentConflictError`, so eve retries with the current document.
65
+ */
66
+ declare function supabaseDocumentBackend(options: SupabaseDocumentBackendOptions): EveDocumentBackend;
67
+ interface EveMessagePart {
68
+ readonly type: string;
69
+ readonly text?: unknown;
70
+ }
71
+ interface EveModelMessage {
72
+ readonly role: string;
73
+ readonly content: string | readonly EveMessagePart[];
74
+ }
75
+ /** The context eve passes to a memory provider's `tools`. */
76
+ interface EveMemoryToolsContext extends EveSessionContext {
77
+ readonly memory: {
78
+ readonly scope: {
79
+ readonly key: string;
80
+ };
81
+ readonly slot?: string;
82
+ };
83
+ }
84
+ /** The context eve passes to a memory provider's recall and capture handlers. */
85
+ interface EveMemoryContext extends EveMemoryToolsContext {
86
+ readonly operationId: string;
87
+ readonly messages?: readonly EveModelMessage[];
88
+ readonly turn?: {
89
+ readonly id: string;
90
+ readonly input: readonly EveModelMessage[];
91
+ readonly sequence?: number;
92
+ } | null;
93
+ readonly abortSignal?: AbortSignal;
94
+ }
95
+ interface EveRecallMessage {
96
+ readonly id?: string;
97
+ readonly content: string;
98
+ }
99
+ interface EveRecallResult {
100
+ readonly messages: readonly EveRecallMessage[];
101
+ }
102
+ /** A provider for eve's `defineMemory({ provider })`; pass it through `defineMemoryProvider`. */
103
+ interface EveMemoryProvider {
104
+ readonly recall: {
105
+ "turn.started"(ctx: EveMemoryContext): Promise<EveRecallResult | null>;
106
+ };
107
+ readonly capture?: {
108
+ "turn.completed"?(ctx: EveMemoryContext): Promise<void>;
109
+ };
110
+ tools?(ctx: EveMemoryToolsContext): Promise<Readonly<Record<string, EveMemoryTool>> | null>;
111
+ }
112
+ /** A tool from eve's `defineTool`, as a memory provider returns it. */
113
+ interface EveMemoryTool {
114
+ readonly description: string;
115
+ readonly inputSchema: unknown;
116
+ execute(input: never, context: never): unknown;
117
+ }
118
+ interface SupabaseMemoryOptions {
119
+ /** `createMemory` on a service transport: eve calls the provider outside a user request. */
120
+ readonly memory: Memory;
121
+ /** Tenant documents to search alongside the memories. */
122
+ readonly knowledge?: Knowledge;
123
+ /**
124
+ * The knowledge scopes to search. Defaults to the tenant's shared
125
+ * documents: the provider searches as the service role, so a wider scope
126
+ * can show one user's documents to another.
127
+ */
128
+ readonly knowledgeScopes?: KnowledgeSearchOptions["scopes"];
129
+ /** Archival memories and knowledge chunks to recall per turn. Defaults to 5. */
130
+ readonly k?: number;
131
+ /** The tenant of a principal. Defaults to `attributes.tenantId`. */
132
+ readonly organizationOf?: (auth: EveSessionAuth) => string | undefined;
133
+ /**
134
+ * Facts to keep from a finished turn (an LLM call of yours). Without it
135
+ * the provider stores only what the model saves with its `remember` tool.
136
+ */
137
+ readonly extract?: (messages: readonly EveModelMessage[], ctx: EveMemoryContext) => Promise<readonly string[]>;
138
+ /** Adds the `remember` and `forget` tools. Defaults to true. */
139
+ readonly tools?: boolean;
140
+ /** Returns `eve/tools`; defaults to importing it on first use. */
141
+ readonly load?: () => Promise<unknown>;
142
+ }
143
+ /**
144
+ * An eve memory provider over the memory and knowledge blocks. Every read
145
+ * and write is partitioned by the scope key and the signed-in user; recall
146
+ * stores its answer under the operation id, so a replayed recall returns the
147
+ * same messages.
148
+ */
149
+ declare function supabaseMemory(options: SupabaseMemoryOptions): EveMemoryProvider;
150
+ //#endregion
151
+ export { EveMemoryToolsContext as a, MemoryDocumentConflictError as c, supabaseDocumentBackend as d, supabaseMemory as f, EveMemoryTool as i, SupabaseDocumentBackendOptions as l, EveSessionContext as m, EveMemoryContext as n, EveRecallMessage as o, EveSessionAuth as p, EveMemoryProvider as r, EveRecallResult as s, EveDocumentBackend as t, SupabaseMemoryOptions as u };
@@ -1,3 +1,4 @@
1
- import { C as kitEventAttributes, S as WebhookEventData, _ as KitEventType, b as OrgEventData, d as InvitationEventData, f as KIT_ATTRIBUTES, g as KitEventPattern, h as KitEventMeta, m as KitEventMap, p as KitEvent, v as KitEventsMatching, w as onKitEvent, x as SupportEventData, y as NotificationEventData } from "../events-aIO7vsIk.js";
2
- import { _ as toHttp, a as ForwardOptions, c as ROW_EVENT_TYPES, d as forwardMutations, f as fromHttp, g as toCloudEvents, h as kitCloudEvent, i as ForwardKitOptions, l as RowEventData, m as isCloudEvent, n as CloudEventOptions, o as HttpMode, p as httpSink, r as EventSink, s as HttpSinkOptions, t as CloudEvent, u as forwardKitEvents } from "../index-DOESKG27.js";
3
- export { CloudEvent, CloudEventOptions, EventSink, ForwardKitOptions, ForwardOptions, HttpMode, HttpSinkOptions, type InvitationEventData, KIT_ATTRIBUTES, type KitEvent, type KitEventMap, type KitEventMeta, type KitEventPattern, type KitEventType, type KitEventsMatching, type NotificationEventData, type OrgEventData, ROW_EVENT_TYPES, RowEventData, type SupportEventData, type WebhookEventData, forwardKitEvents, forwardMutations, fromHttp, httpSink, isCloudEvent, kitCloudEvent, kitEventAttributes, onKitEvent, toCloudEvents, toHttp };
1
+ import { A as CredentialEventData, B as OrganizationEventData, C as BlockEventMap, D as BlockEventsMatching, E as BlockEventType, F as InvitationEventData, G as StorageObjectEventData, H as ScimEventData, I as InviteCodeEventData, J as WebhookEventData, K as SupportEventData, L as NotificationEventData, M as FlagEventData, N as InboxEventData, O as CommentEventData, P as IncomingWebhookEventData, Q as onBlockEvent, R as OrganizationDeletionEventData, S as BlockEvent, T as BlockEventPattern, U as SettingEventData, V as PushDeviceEventData, W as SsoProviderEventData, X as WorkflowRunEventData, Y as WorkflowEventData, Z as blockEventAttributes, _ as AttachmentEventData, b as BLOCK_EVENT_RENAMES, d as AgentEventData, f as AiChatEventData, g as ApiKeyEventData, h as AnnouncementEventData, j as DataExportEventData, k as ConnectorEventData, m as AiToolEventData, p as AiProviderKeyEventData, q as WaitlistEventData, v as AuditRevealEventData, w as BlockEventMeta, x as BillingEventData, y as BLOCK_ATTRIBUTES, z as OrganizationDomainEventData } from "../events-DWDhx77e.js";
2
+ import { a as blockCloudEvent, i as ForwardBlockOptions, n as CloudEventOptions, o as forwardBlockEvents, r as EventSink, t as CloudEvent } from "../cloud-event-C1JCc1bH.js";
3
+ import { a as RowEventData, c as httpSink, d as toHttp, i as ROW_EVENT_TYPES, l as isCloudEvent, n as HttpMode, o as forwardMutations, r as HttpSinkOptions, s as fromHttp, t as ForwardOptions, u as toCloudEvents } from "../index-ClmjK_o-.js";
4
+ export { type AgentEventData, type AiChatEventData, type AiProviderKeyEventData, type AiToolEventData, type AnnouncementEventData, type ApiKeyEventData, type AttachmentEventData, type AuditRevealEventData, BLOCK_ATTRIBUTES, BLOCK_EVENT_RENAMES, type BillingEventData, type BlockEvent, type BlockEventMap, type BlockEventMeta, type BlockEventPattern, type BlockEventType, type BlockEventsMatching, type CloudEvent, type CloudEventOptions, type CommentEventData, type ConnectorEventData, type CredentialEventData, type DataExportEventData, type EventSink, type FlagEventData, type ForwardBlockOptions, ForwardOptions, HttpMode, HttpSinkOptions, type InboxEventData, type IncomingWebhookEventData, type InvitationEventData, type InviteCodeEventData, type NotificationEventData, type OrganizationDeletionEventData, type OrganizationDomainEventData, type OrganizationEventData, type PushDeviceEventData, ROW_EVENT_TYPES, RowEventData, type ScimEventData, type SettingEventData, type SsoProviderEventData, type StorageObjectEventData, type SupportEventData, type WaitlistEventData, type WebhookEventData, type WorkflowEventData, type WorkflowRunEventData, blockCloudEvent, blockEventAttributes, forwardBlockEvents, forwardMutations, fromHttp, httpSink, isCloudEvent, onBlockEvent, toCloudEvents, toHttp };