better-supabase 0.8.0 → 0.9.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 (1374) hide show
  1. package/README.md +144 -83
  2. package/bin/better-supabase.js +14 -2
  3. package/dist/access-sql-DUSSMaC3.js +201 -0
  4. package/dist/actor-BAhb-d1S.d.ts +104 -0
  5. package/dist/actor-KHDOKGb1.js +151 -0
  6. package/dist/adapter-CEjmtazZ.js +1984 -0
  7. package/dist/agents-BCNhIxVZ.d.ts +111 -0
  8. package/dist/ai-cache-Dps7aRu1.d.ts +70 -0
  9. package/dist/ai-cache-zeUL94pB.js +84 -0
  10. package/dist/ai-chat-3GBSlFR4.d.ts +608 -0
  11. package/dist/ai-files-D2_9YLjF.js +331 -0
  12. package/dist/ai-sdk/agents/index.d.ts +154 -10
  13. package/dist/ai-sdk/agents/index.js +172 -17
  14. package/dist/ai-sdk/batches/index.d.ts +4 -4
  15. package/dist/ai-sdk/batches/index.js +5 -5
  16. package/dist/ai-sdk/cache/index.d.ts +2 -2
  17. package/dist/ai-sdk/cache/index.js +1 -1
  18. package/dist/ai-sdk/chat/index.d.ts +1 -1
  19. package/dist/ai-sdk/chat/index.js +7 -6
  20. package/dist/ai-sdk/embeddings/index.d.ts +3 -3
  21. package/dist/ai-sdk/embeddings/index.js +1 -2
  22. package/dist/ai-sdk/files/index.d.ts +2 -2
  23. package/dist/ai-sdk/files/index.js +4 -4
  24. package/dist/ai-sdk/index.d.ts +7 -6
  25. package/dist/ai-sdk/index.js +4 -3
  26. package/dist/ai-sdk/mcp/index.d.ts +4 -4
  27. package/dist/ai-sdk/mcp/index.js +6 -6
  28. package/dist/ai-sdk/memory/index.d.ts +5 -2
  29. package/dist/ai-sdk/memory/index.js +2 -2
  30. package/dist/ai-sdk/react/index.js +1 -2
  31. package/dist/ai-sdk/workflow/index.d.ts +5 -4
  32. package/dist/ai-sdk/workflow/index.js +8 -8
  33. package/dist/ai-tasks-Ih5oHfyj.d.ts +157 -0
  34. package/dist/announcements-BHCzraR6.js +128 -0
  35. package/dist/api-CFjuYKFY.js +680 -0
  36. package/dist/api-TG3jE5aO.d.ts +411 -0
  37. package/dist/api-keys-BEQatEUW.js +318 -0
  38. package/dist/api-keys-BYoGCM9p.d.ts +205 -0
  39. package/dist/app-tables-BGl5_U2x.js +584 -0
  40. package/dist/approvals-a2KmioBh.d.ts +124 -0
  41. package/dist/arazzo/index.d.ts +5 -5
  42. package/dist/arazzo/index.js +6 -6
  43. package/dist/assistant-Bf2cA6RO.d.ts +148 -0
  44. package/dist/astro/index.d.ts +9 -8
  45. package/dist/astro/index.js +10 -7
  46. package/dist/asyncapi/index.d.ts +4 -4
  47. package/dist/asyncapi/index.js +6 -6
  48. package/dist/attachments-DAj2Yp95.js +264 -0
  49. package/dist/attributes-D4mA7WhI.js +38 -0
  50. package/dist/audit-log-BMMuGPdP.js +786 -0
  51. package/dist/auth-CdBKt0CS.js +20 -0
  52. package/dist/auth-reply-DUCwb8YO.js +31 -0
  53. package/dist/auth-reply-Dj124sbX.d.ts +11 -0
  54. package/dist/authorization-DpRfs6Wx.d.ts +1412 -0
  55. package/dist/authorization-hooks-DkmrnDX7.d.ts +214 -0
  56. package/dist/authorizer-DH7DjkL3.js +126 -0
  57. package/dist/base64-BmeCBgGo.js +42 -0
  58. package/dist/batch-limit-DKVQDz4o.js +5 -0
  59. package/dist/before-route-B98js9m_.js +30 -0
  60. package/dist/better-result/index.d.ts +5 -5
  61. package/dist/better-result/index.js +1 -1
  62. package/dist/bind-a7sUgvf4.d.ts +70 -0
  63. package/dist/block-env-CBd_SoL5.js +29 -0
  64. package/dist/block-env-Dxl7rsI0.d.ts +10 -0
  65. package/dist/block-events-DD9Q_NUz.js +96 -0
  66. package/dist/block-fields-5UA84ZUg.d.ts +55 -0
  67. package/dist/block-fields-ffD6Gxe4.js +139 -0
  68. package/dist/block-helpers-C86hPEjI.d.ts +37 -0
  69. package/dist/block-helpers-CfG_MvDR.js +264 -0
  70. package/dist/block-hooks-BLPWD3Jt.d.ts +107 -0
  71. package/dist/block-hooks-BsXncUlZ.js +114 -0
  72. package/dist/block-transport-DaGGXjIw.d.ts +70 -0
  73. package/dist/block-transport-G4t1umrR.js +85 -0
  74. package/dist/blocks/access-requests/index.d.ts +98 -0
  75. package/dist/blocks/access-requests/index.js +99 -0
  76. package/dist/blocks/agents/index.d.ts +21 -3
  77. package/dist/blocks/agents/index.js +64 -18
  78. package/dist/blocks/ai-cache/index.d.ts +7 -2
  79. package/dist/blocks/ai-cache/index.js +15 -3
  80. package/dist/blocks/ai-chat/index.d.ts +22 -3
  81. package/dist/blocks/ai-chat/index.js +29 -3
  82. package/dist/blocks/ai-chat/react/index.d.ts +12 -46
  83. package/dist/blocks/ai-chat/react/index.js +43 -335
  84. package/dist/blocks/ai-chat/solid/index.d.ts +34 -0
  85. package/dist/blocks/ai-chat/solid/index.js +41 -0
  86. package/dist/blocks/ai-chat/svelte/index.d.ts +34 -0
  87. package/dist/blocks/ai-chat/svelte/index.js +41 -0
  88. package/dist/blocks/ai-chat/vue/index.d.ts +34 -0
  89. package/dist/blocks/ai-chat/vue/index.js +41 -0
  90. package/dist/blocks/ai-files/index.d.ts +10 -3
  91. package/dist/blocks/ai-files/index.js +16 -3
  92. package/dist/blocks/ai-providers/index.d.ts +18 -3
  93. package/dist/blocks/ai-providers/index.js +40 -15
  94. package/dist/blocks/ai-tasks/index.d.ts +9 -2
  95. package/dist/blocks/ai-tasks/index.js +70 -21
  96. package/dist/blocks/announcements/index.d.ts +18 -3
  97. package/dist/blocks/announcements/index.js +27 -3
  98. package/dist/blocks/announcements/react/index.d.ts +4 -14
  99. package/dist/blocks/announcements/react/index.js +22 -70
  100. package/dist/blocks/announcements/solid/index.d.ts +13 -0
  101. package/dist/blocks/announcements/solid/index.js +14 -0
  102. package/dist/blocks/announcements/svelte/index.d.ts +13 -0
  103. package/dist/blocks/announcements/svelte/index.js +14 -0
  104. package/dist/blocks/announcements/vue/index.d.ts +13 -0
  105. package/dist/blocks/announcements/vue/index.js +14 -0
  106. package/dist/blocks/api-keys/index.d.ts +24 -7
  107. package/dist/blocks/api-keys/index.js +29 -294
  108. package/dist/blocks/api-keys/react/index.d.ts +29 -0
  109. package/dist/blocks/api-keys/react/index.js +43 -0
  110. package/dist/blocks/api-keys/react/server.d.ts +7 -0
  111. package/dist/blocks/api-keys/react/server.js +7 -0
  112. package/dist/blocks/api-keys/solid/index.d.ts +13 -0
  113. package/dist/blocks/api-keys/solid/index.js +14 -0
  114. package/dist/blocks/api-keys/svelte/index.d.ts +13 -0
  115. package/dist/blocks/api-keys/svelte/index.js +14 -0
  116. package/dist/blocks/api-keys/vue/index.d.ts +13 -0
  117. package/dist/blocks/api-keys/vue/index.js +14 -0
  118. package/dist/blocks/approvals/index.d.ts +22 -0
  119. package/dist/blocks/approvals/index.js +189 -0
  120. package/dist/blocks/attachments/index.d.ts +18 -227
  121. package/dist/blocks/attachments/index.js +26 -242
  122. package/dist/blocks/audit/index.d.ts +72 -365
  123. package/dist/blocks/audit/index.js +91 -714
  124. package/dist/blocks/audit/react/index.d.ts +26 -0
  125. package/dist/blocks/audit/react/index.js +44 -0
  126. package/dist/blocks/audit/react/server.d.ts +7 -0
  127. package/dist/blocks/audit/react/server.js +7 -0
  128. package/dist/blocks/audit/solid/index.d.ts +13 -0
  129. package/dist/blocks/audit/solid/index.js +14 -0
  130. package/dist/blocks/audit/svelte/index.d.ts +13 -0
  131. package/dist/blocks/audit/svelte/index.js +14 -0
  132. package/dist/blocks/audit/vue/index.d.ts +13 -0
  133. package/dist/blocks/audit/vue/index.js +14 -0
  134. package/dist/blocks/billing/index.d.ts +37 -12
  135. package/dist/blocks/billing/index.js +43 -12
  136. package/dist/blocks/billing/react/index.d.ts +34 -0
  137. package/dist/blocks/billing/react/index.js +36 -0
  138. package/dist/blocks/billing/react/server.d.ts +7 -0
  139. package/dist/blocks/billing/react/server.js +7 -0
  140. package/dist/blocks/billing/solid/index.d.ts +15 -0
  141. package/dist/blocks/billing/solid/index.js +14 -0
  142. package/dist/blocks/billing/svelte/index.d.ts +15 -0
  143. package/dist/blocks/billing/svelte/index.js +14 -0
  144. package/dist/blocks/billing/vue/index.d.ts +15 -0
  145. package/dist/blocks/billing/vue/index.js +14 -0
  146. package/dist/blocks/bookings/index.d.ts +36 -0
  147. package/dist/blocks/bookings/index.js +28 -0
  148. package/dist/blocks/bookings/react/index.d.ts +31 -0
  149. package/dist/blocks/bookings/react/index.js +59 -0
  150. package/dist/blocks/bookings/react/server.d.ts +6 -0
  151. package/dist/blocks/bookings/react/server.js +7 -0
  152. package/dist/blocks/bookings/solid/index.d.ts +13 -0
  153. package/dist/blocks/bookings/solid/index.js +14 -0
  154. package/dist/blocks/bookings/svelte/index.d.ts +13 -0
  155. package/dist/blocks/bookings/svelte/index.js +14 -0
  156. package/dist/blocks/bookings/vue/index.d.ts +13 -0
  157. package/dist/blocks/bookings/vue/index.js +14 -0
  158. package/dist/blocks/bulk/index.d.ts +142 -0
  159. package/dist/blocks/bulk/index.js +154 -0
  160. package/dist/blocks/calendar/index.d.ts +20 -0
  161. package/dist/blocks/calendar/index.js +33 -0
  162. package/dist/blocks/calendar/react/index.d.ts +26 -0
  163. package/dist/blocks/calendar/react/index.js +58 -0
  164. package/dist/blocks/calendar/react/server.d.ts +6 -0
  165. package/dist/blocks/calendar/react/server.js +7 -0
  166. package/dist/blocks/calendar/solid/index.d.ts +13 -0
  167. package/dist/blocks/calendar/solid/index.js +14 -0
  168. package/dist/blocks/calendar/svelte/index.d.ts +13 -0
  169. package/dist/blocks/calendar/svelte/index.js +14 -0
  170. package/dist/blocks/calendar/vue/index.d.ts +13 -0
  171. package/dist/blocks/calendar/vue/index.js +14 -0
  172. package/dist/blocks/catalog/index.d.ts +224 -0
  173. package/dist/blocks/catalog/index.js +292 -0
  174. package/dist/blocks/collections/index.d.ts +184 -0
  175. package/dist/blocks/collections/index.js +208 -0
  176. package/dist/blocks/comments/index.d.ts +19 -166
  177. package/dist/blocks/comments/index.js +26 -207
  178. package/dist/blocks/comments/react/index.d.ts +27 -0
  179. package/dist/blocks/comments/react/index.js +45 -0
  180. package/dist/blocks/comments/react/server.d.ts +7 -0
  181. package/dist/blocks/comments/react/server.js +7 -0
  182. package/dist/blocks/comments/solid/index.d.ts +13 -0
  183. package/dist/blocks/comments/solid/index.js +14 -0
  184. package/dist/blocks/comments/svelte/index.d.ts +13 -0
  185. package/dist/blocks/comments/svelte/index.js +14 -0
  186. package/dist/blocks/comments/vue/index.d.ts +13 -0
  187. package/dist/blocks/comments/vue/index.js +14 -0
  188. package/dist/blocks/connectors/index.d.ts +21 -3
  189. package/dist/blocks/connectors/index.js +53 -18
  190. package/dist/blocks/custom-fields/index.d.ts +62 -0
  191. package/dist/blocks/custom-fields/index.js +85 -0
  192. package/dist/blocks/data-lifecycle/index.d.ts +114 -9
  193. package/dist/blocks/data-lifecycle/index.js +98 -12
  194. package/dist/blocks/deals/index.d.ts +262 -0
  195. package/dist/blocks/deals/index.js +380 -0
  196. package/dist/blocks/documents/index.d.ts +17 -0
  197. package/dist/blocks/documents/index.js +118 -0
  198. package/dist/blocks/domains/index.d.ts +117 -0
  199. package/dist/blocks/domains/index.js +118 -0
  200. package/dist/blocks/drive/index.d.ts +296 -0
  201. package/dist/blocks/drive/index.js +483 -0
  202. package/dist/blocks/employees/index.d.ts +205 -0
  203. package/dist/blocks/employees/index.js +289 -0
  204. package/dist/blocks/engagements/index.d.ts +125 -0
  205. package/dist/blocks/engagements/index.js +143 -0
  206. package/dist/blocks/entitlements/index.d.ts +40 -4
  207. package/dist/blocks/entitlements/index.js +14 -24
  208. package/dist/blocks/entitlements/react/index.d.ts +24 -0
  209. package/dist/blocks/entitlements/react/index.js +35 -0
  210. package/dist/blocks/entitlements/react/server.d.ts +6 -0
  211. package/dist/blocks/entitlements/react/server.js +7 -0
  212. package/dist/blocks/entitlements/solid/index.d.ts +13 -0
  213. package/dist/blocks/entitlements/solid/index.js +14 -0
  214. package/dist/blocks/entitlements/svelte/index.d.ts +13 -0
  215. package/dist/blocks/entitlements/svelte/index.js +14 -0
  216. package/dist/blocks/entitlements/vue/index.d.ts +13 -0
  217. package/dist/blocks/entitlements/vue/index.js +14 -0
  218. package/dist/blocks/flags/index.d.ts +61 -187
  219. package/dist/blocks/flags/index.js +65 -253
  220. package/dist/blocks/forms/index.d.ts +302 -0
  221. package/dist/blocks/forms/index.js +341 -0
  222. package/dist/blocks/forms/react/index.d.ts +16 -0
  223. package/dist/blocks/forms/react/index.js +25 -0
  224. package/dist/blocks/forms/react/server.d.ts +6 -0
  225. package/dist/blocks/forms/react/server.js +7 -0
  226. package/dist/blocks/forms/solid/index.d.ts +13 -0
  227. package/dist/blocks/forms/solid/index.js +14 -0
  228. package/dist/blocks/forms/svelte/index.d.ts +13 -0
  229. package/dist/blocks/forms/svelte/index.js +14 -0
  230. package/dist/blocks/forms/vue/index.d.ts +13 -0
  231. package/dist/blocks/forms/vue/index.js +14 -0
  232. package/dist/blocks/hiring/index.d.ts +154 -0
  233. package/dist/blocks/hiring/index.js +180 -0
  234. package/dist/blocks/identities/index.d.ts +83 -0
  235. package/dist/blocks/identities/index.js +103 -0
  236. package/dist/blocks/imports/index.d.ts +91 -0
  237. package/dist/blocks/imports/index.js +123 -0
  238. package/dist/blocks/inbox/index.d.ts +22 -3
  239. package/dist/blocks/inbox/index.js +77 -4
  240. package/dist/blocks/inbox/react/index.d.ts +3 -2
  241. package/dist/blocks/inbox/react/index.js +55 -199
  242. package/dist/blocks/inbox/react/server.d.ts +2 -1
  243. package/dist/blocks/inbox/solid/index.d.ts +27 -0
  244. package/dist/blocks/inbox/solid/index.js +32 -0
  245. package/dist/blocks/inbox/svelte/index.d.ts +27 -0
  246. package/dist/blocks/inbox/svelte/index.js +32 -0
  247. package/dist/blocks/inbox/vue/index.d.ts +27 -0
  248. package/dist/blocks/inbox/vue/index.js +32 -0
  249. package/dist/blocks/index.d.ts +9 -64
  250. package/dist/blocks/index.js +191 -55
  251. package/dist/blocks/inventory/index.d.ts +181 -0
  252. package/dist/blocks/inventory/index.js +219 -0
  253. package/dist/blocks/invoices/index.d.ts +154 -0
  254. package/dist/blocks/invoices/index.js +216 -0
  255. package/dist/blocks/jobs/index.d.ts +156 -33
  256. package/dist/blocks/jobs/index.js +675 -261
  257. package/dist/blocks/knowledge/index.d.ts +10 -3
  258. package/dist/blocks/knowledge/index.js +17 -3
  259. package/dist/blocks/leave/index.d.ts +241 -0
  260. package/dist/blocks/leave/index.js +209 -0
  261. package/dist/blocks/memory/index.d.ts +9 -4
  262. package/dist/blocks/memory/index.js +48 -12
  263. package/dist/blocks/metrics/index.d.ts +174 -0
  264. package/dist/blocks/metrics/index.js +217 -0
  265. package/dist/blocks/mfa/index.d.ts +7 -0
  266. package/dist/blocks/mfa/index.js +12 -0
  267. package/dist/blocks/mfa/react/index.d.ts +30 -0
  268. package/dist/blocks/mfa/react/index.js +45 -0
  269. package/dist/blocks/mfa/react/server.d.ts +9 -0
  270. package/dist/blocks/mfa/react/server.js +12 -0
  271. package/dist/blocks/mfa/solid/index.d.ts +20 -0
  272. package/dist/blocks/mfa/solid/index.js +23 -0
  273. package/dist/blocks/mfa/svelte/index.d.ts +20 -0
  274. package/dist/blocks/mfa/svelte/index.js +23 -0
  275. package/dist/blocks/mfa/vue/index.d.ts +20 -0
  276. package/dist/blocks/mfa/vue/index.js +23 -0
  277. package/dist/blocks/notifications/index.d.ts +342 -25
  278. package/dist/blocks/notifications/index.js +733 -104
  279. package/dist/blocks/notifications/react/index.d.ts +7 -32
  280. package/dist/blocks/notifications/react/index.js +23 -49
  281. package/dist/blocks/notifications/react/server.d.ts +2 -1
  282. package/dist/blocks/notifications/solid/index.d.ts +13 -0
  283. package/dist/blocks/notifications/solid/index.js +14 -0
  284. package/dist/blocks/notifications/svelte/index.d.ts +13 -0
  285. package/dist/blocks/notifications/svelte/index.js +14 -0
  286. package/dist/blocks/notifications/vue/index.d.ts +13 -0
  287. package/dist/blocks/notifications/vue/index.js +14 -0
  288. package/dist/blocks/number-sequences/index.d.ts +39 -0
  289. package/dist/blocks/number-sequences/index.js +38 -0
  290. package/dist/blocks/oauth-server/index.d.ts +228 -0
  291. package/dist/blocks/oauth-server/index.js +309 -0
  292. package/dist/blocks/onboarding/index.d.ts +8 -3
  293. package/dist/blocks/onboarding/index.js +17 -63
  294. package/dist/blocks/onboarding/react/index.d.ts +3 -12
  295. package/dist/blocks/onboarding/react/index.js +18 -60
  296. package/dist/blocks/onboarding/react/server.d.ts +2 -2
  297. package/dist/blocks/onboarding/react/server.js +2 -2
  298. package/dist/blocks/onboarding/solid/index.d.ts +13 -0
  299. package/dist/blocks/onboarding/solid/index.js +14 -0
  300. package/dist/blocks/onboarding/svelte/index.d.ts +13 -0
  301. package/dist/blocks/onboarding/svelte/index.js +14 -0
  302. package/dist/blocks/onboarding/vue/index.d.ts +13 -0
  303. package/dist/blocks/onboarding/vue/index.js +14 -0
  304. package/dist/blocks/orders/index.d.ts +264 -0
  305. package/dist/blocks/orders/index.js +589 -0
  306. package/dist/blocks/organizations/index.d.ts +31 -238
  307. package/dist/blocks/organizations/index.js +49 -392
  308. package/dist/blocks/organizations/react/index.d.ts +108 -0
  309. package/dist/blocks/organizations/react/index.js +113 -0
  310. package/dist/blocks/organizations/react/server.d.ts +11 -0
  311. package/dist/blocks/organizations/react/server.js +15 -0
  312. package/dist/blocks/organizations/solid/index.d.ts +34 -0
  313. package/dist/blocks/organizations/solid/index.js +32 -0
  314. package/dist/blocks/organizations/svelte/index.d.ts +34 -0
  315. package/dist/blocks/organizations/svelte/index.js +32 -0
  316. package/dist/blocks/organizations/vue/index.d.ts +34 -0
  317. package/dist/blocks/organizations/vue/index.js +32 -0
  318. package/dist/blocks/outbox/index.d.ts +12 -3
  319. package/dist/blocks/outbox/index.js +85 -46
  320. package/dist/blocks/parties/index.d.ts +181 -0
  321. package/dist/blocks/parties/index.js +258 -0
  322. package/dist/blocks/pipelines/index.d.ts +189 -0
  323. package/dist/blocks/pipelines/index.js +204 -0
  324. package/dist/blocks/profiles/index.d.ts +13 -8
  325. package/dist/blocks/profiles/index.js +19 -6
  326. package/dist/blocks/promotions/index.d.ts +125 -0
  327. package/dist/blocks/promotions/index.js +123 -0
  328. package/dist/blocks/push/index.d.ts +48 -28
  329. package/dist/blocks/push/index.js +45 -16
  330. package/dist/blocks/quotes/index.d.ts +152 -0
  331. package/dist/blocks/quotes/index.js +209 -0
  332. package/dist/blocks/rank/index.d.ts +71 -0
  333. package/dist/blocks/rank/index.js +53 -0
  334. package/dist/blocks/reactions/index.d.ts +18 -0
  335. package/dist/blocks/reactions/index.js +26 -0
  336. package/dist/blocks/reactions/react/index.d.ts +23 -0
  337. package/dist/blocks/reactions/react/index.js +46 -0
  338. package/dist/blocks/reactions/react/server.d.ts +6 -0
  339. package/dist/blocks/reactions/react/server.js +7 -0
  340. package/dist/blocks/reactions/solid/index.d.ts +13 -0
  341. package/dist/blocks/reactions/solid/index.js +14 -0
  342. package/dist/blocks/reactions/svelte/index.d.ts +13 -0
  343. package/dist/blocks/reactions/svelte/index.js +14 -0
  344. package/dist/blocks/reactions/vue/index.d.ts +13 -0
  345. package/dist/blocks/reactions/vue/index.js +14 -0
  346. package/dist/blocks/relations/index.d.ts +180 -0
  347. package/dist/blocks/relations/index.js +254 -0
  348. package/dist/blocks/reminders/index.d.ts +177 -0
  349. package/dist/blocks/reminders/index.js +171 -0
  350. package/dist/blocks/reviews/index.d.ts +148 -0
  351. package/dist/blocks/reviews/index.js +139 -0
  352. package/dist/blocks/rules/index.d.ts +103 -0
  353. package/dist/blocks/rules/index.js +54 -0
  354. package/dist/blocks/rules/react/index.d.ts +34 -0
  355. package/dist/blocks/rules/react/index.js +55 -0
  356. package/dist/blocks/rules/react/server.d.ts +6 -0
  357. package/dist/blocks/rules/react/server.js +7 -0
  358. package/dist/blocks/rules/solid/index.d.ts +13 -0
  359. package/dist/blocks/rules/solid/index.js +14 -0
  360. package/dist/blocks/rules/svelte/index.d.ts +13 -0
  361. package/dist/blocks/rules/svelte/index.js +14 -0
  362. package/dist/blocks/rules/vue/index.d.ts +13 -0
  363. package/dist/blocks/rules/vue/index.js +14 -0
  364. package/dist/blocks/saved-views/index.d.ts +17 -0
  365. package/dist/blocks/saved-views/index.js +29 -0
  366. package/dist/blocks/saved-views/react/index.d.ts +34 -0
  367. package/dist/blocks/saved-views/react/index.js +57 -0
  368. package/dist/blocks/saved-views/react/server.d.ts +7 -0
  369. package/dist/blocks/saved-views/react/server.js +7 -0
  370. package/dist/blocks/saved-views/solid/index.d.ts +13 -0
  371. package/dist/blocks/saved-views/solid/index.js +14 -0
  372. package/dist/blocks/saved-views/svelte/index.d.ts +13 -0
  373. package/dist/blocks/saved-views/svelte/index.js +14 -0
  374. package/dist/blocks/saved-views/vue/index.d.ts +13 -0
  375. package/dist/blocks/saved-views/vue/index.js +14 -0
  376. package/dist/blocks/search/index.d.ts +31 -0
  377. package/dist/blocks/search/index.js +61 -0
  378. package/dist/blocks/search/react/index.d.ts +36 -0
  379. package/dist/blocks/search/react/index.js +49 -0
  380. package/dist/blocks/search/react/server.d.ts +7 -0
  381. package/dist/blocks/search/react/server.js +8 -0
  382. package/dist/blocks/search/solid/index.d.ts +13 -0
  383. package/dist/blocks/search/solid/index.js +14 -0
  384. package/dist/blocks/search/svelte/index.d.ts +13 -0
  385. package/dist/blocks/search/svelte/index.js +14 -0
  386. package/dist/blocks/search/vue/index.d.ts +13 -0
  387. package/dist/blocks/search/vue/index.js +14 -0
  388. package/dist/blocks/service-principals/index.d.ts +126 -0
  389. package/dist/blocks/service-principals/index.js +107 -0
  390. package/dist/blocks/sessions/index.d.ts +7 -0
  391. package/dist/blocks/sessions/index.js +14 -0
  392. package/dist/blocks/sessions/react/index.d.ts +31 -0
  393. package/dist/blocks/sessions/react/index.js +51 -0
  394. package/dist/blocks/sessions/react/server.d.ts +9 -0
  395. package/dist/blocks/sessions/react/server.js +11 -0
  396. package/dist/blocks/sessions/solid/index.d.ts +20 -0
  397. package/dist/blocks/sessions/solid/index.js +23 -0
  398. package/dist/blocks/sessions/svelte/index.d.ts +20 -0
  399. package/dist/blocks/sessions/svelte/index.js +23 -0
  400. package/dist/blocks/sessions/vue/index.d.ts +20 -0
  401. package/dist/blocks/sessions/vue/index.js +23 -0
  402. package/dist/blocks/settings/index.d.ts +20 -86
  403. package/dist/blocks/settings/index.js +28 -102
  404. package/dist/blocks/settings/react/index.d.ts +25 -0
  405. package/dist/blocks/settings/react/index.js +37 -0
  406. package/dist/blocks/settings/react/server.d.ts +7 -0
  407. package/dist/blocks/settings/react/server.js +7 -0
  408. package/dist/blocks/settings/solid/index.d.ts +13 -0
  409. package/dist/blocks/settings/solid/index.js +14 -0
  410. package/dist/blocks/settings/svelte/index.d.ts +13 -0
  411. package/dist/blocks/settings/svelte/index.js +14 -0
  412. package/dist/blocks/settings/vue/index.d.ts +13 -0
  413. package/dist/blocks/settings/vue/index.js +14 -0
  414. package/dist/blocks/share-links/index.d.ts +99 -0
  415. package/dist/blocks/share-links/index.js +99 -0
  416. package/dist/blocks/shared-signals/index.d.ts +395 -0
  417. package/dist/blocks/shared-signals/index.js +880 -0
  418. package/dist/blocks/signing-keys/index.d.ts +29 -0
  419. package/dist/blocks/signing-keys/index.js +161 -0
  420. package/dist/blocks/sla/index.d.ts +114 -0
  421. package/dist/blocks/sla/index.js +122 -0
  422. package/dist/blocks/sso/index.d.ts +169 -147
  423. package/dist/blocks/sso/index.js +258 -321
  424. package/dist/blocks/state-machine/index.d.ts +105 -0
  425. package/dist/blocks/state-machine/index.js +116 -0
  426. package/dist/blocks/tags/index.d.ts +20 -0
  427. package/dist/blocks/tags/index.js +28 -0
  428. package/dist/blocks/tags/react/index.d.ts +28 -0
  429. package/dist/blocks/tags/react/index.js +47 -0
  430. package/dist/blocks/tags/react/server.d.ts +7 -0
  431. package/dist/blocks/tags/react/server.js +7 -0
  432. package/dist/blocks/tags/solid/index.d.ts +13 -0
  433. package/dist/blocks/tags/solid/index.js +14 -0
  434. package/dist/blocks/tags/svelte/index.d.ts +13 -0
  435. package/dist/blocks/tags/svelte/index.js +14 -0
  436. package/dist/blocks/tags/vue/index.d.ts +13 -0
  437. package/dist/blocks/tags/vue/index.js +14 -0
  438. package/dist/blocks/targets/index.d.ts +82 -0
  439. package/dist/blocks/targets/index.js +73 -0
  440. package/dist/blocks/teams/index.d.ts +61 -0
  441. package/dist/blocks/teams/index.js +83 -0
  442. package/dist/blocks/templates/index.d.ts +362 -0
  443. package/dist/blocks/templates/index.js +483 -0
  444. package/dist/blocks/time-tracking/index.d.ts +250 -0
  445. package/dist/blocks/time-tracking/index.js +317 -0
  446. package/dist/blocks/trash/index.d.ts +78 -0
  447. package/dist/blocks/trash/index.js +79 -0
  448. package/dist/blocks/undo/index.d.ts +9 -0
  449. package/dist/blocks/undo/index.js +14 -0
  450. package/dist/blocks/undo/react/index.d.ts +17 -0
  451. package/dist/blocks/undo/react/index.js +24 -0
  452. package/dist/blocks/undo/react/server.d.ts +7 -0
  453. package/dist/blocks/undo/react/server.js +7 -0
  454. package/dist/blocks/undo/solid/index.d.ts +13 -0
  455. package/dist/blocks/undo/solid/index.js +14 -0
  456. package/dist/blocks/undo/svelte/index.d.ts +13 -0
  457. package/dist/blocks/undo/svelte/index.js +14 -0
  458. package/dist/blocks/undo/vue/index.d.ts +13 -0
  459. package/dist/blocks/undo/vue/index.js +14 -0
  460. package/dist/blocks/usage/index.d.ts +10 -4
  461. package/dist/blocks/usage/index.js +16 -233
  462. package/dist/blocks/usage/react/index.d.ts +23 -0
  463. package/dist/blocks/usage/react/index.js +38 -0
  464. package/dist/blocks/usage/react/server.d.ts +7 -0
  465. package/dist/blocks/usage/react/server.js +7 -0
  466. package/dist/blocks/usage/solid/index.d.ts +13 -0
  467. package/dist/blocks/usage/solid/index.js +14 -0
  468. package/dist/blocks/usage/svelte/index.d.ts +13 -0
  469. package/dist/blocks/usage/svelte/index.js +14 -0
  470. package/dist/blocks/usage/vue/index.d.ts +13 -0
  471. package/dist/blocks/usage/vue/index.js +14 -0
  472. package/dist/blocks/versions/index.d.ts +165 -0
  473. package/dist/blocks/versions/index.js +283 -0
  474. package/dist/blocks/waitlist/index.d.ts +57 -19
  475. package/dist/blocks/waitlist/index.js +46 -12
  476. package/dist/blocks/webhooks/index.d.ts +269 -137
  477. package/dist/blocks/webhooks/index.js +752 -179
  478. package/dist/blocks/work-items/index.d.ts +208 -0
  479. package/dist/blocks/work-items/index.js +305 -0
  480. package/dist/blocks/workflow-builder/index.d.ts +26 -6
  481. package/dist/blocks/workflow-builder/index.js +30 -5
  482. package/dist/blocks/workflow-builder/react/index.d.ts +4 -19
  483. package/dist/blocks/workflow-builder/react/index.js +45 -89
  484. package/dist/blocks/workflow-builder/solid/index.d.ts +20 -0
  485. package/dist/blocks/workflow-builder/solid/index.js +23 -0
  486. package/dist/blocks/workflow-builder/svelte/index.d.ts +20 -0
  487. package/dist/blocks/workflow-builder/svelte/index.js +23 -0
  488. package/dist/blocks/workflow-builder/vue/index.d.ts +20 -0
  489. package/dist/blocks/workflow-builder/vue/index.js +23 -0
  490. package/dist/blocks/workflows/index.d.ts +20 -3
  491. package/dist/blocks/workflows/index.js +27 -3
  492. package/dist/blocks/workflows/react/index.d.ts +5 -20
  493. package/dist/blocks/workflows/react/index.js +41 -113
  494. package/dist/blocks/workflows/solid/index.d.ts +20 -0
  495. package/dist/blocks/workflows/solid/index.js +23 -0
  496. package/dist/blocks/workflows/svelte/index.d.ts +20 -0
  497. package/dist/blocks/workflows/svelte/index.js +23 -0
  498. package/dist/blocks/workflows/vue/index.d.ts +20 -0
  499. package/dist/blocks/workflows/vue/index.js +23 -0
  500. package/dist/blocks-D2WQ63PI.js +84 -0
  501. package/dist/bookings-0XnhHNLM.js +181 -0
  502. package/dist/build-Cm0T5MVG.js +1815 -0
  503. package/dist/build-Cx08LOT7.js +689 -0
  504. package/dist/calendar-DcFrpSOy.js +801 -0
  505. package/dist/channel-D-LHCY11.d.ts +78 -0
  506. package/dist/channels-C-GCoNLd.js +114 -0
  507. package/dist/chat-sdk/index.d.ts +131 -7
  508. package/dist/chat-sdk/index.js +154 -6
  509. package/dist/chat-sdk/react/index.d.ts +2 -1
  510. package/dist/chat-sdk/react/index.js +1 -2
  511. package/dist/chat-sdk/react/server.d.ts +2 -1
  512. package/dist/chat-sdk/react/server.js +1 -2
  513. package/dist/cli/add-B0zoJUYX.js +651 -0
  514. package/dist/cli/add-Bd5M6uEZ.js +75 -0
  515. package/dist/cli/add-CT6p5psO.js +1 -0
  516. package/dist/cli/adopt-C9jl8z0h.js +1 -0
  517. package/dist/cli/adopt-CebmlHL-.js +393 -0
  518. package/dist/cli/agent-CCt_aXpJ.js +176 -0
  519. package/dist/cli/apply-Dxk8AUNU.js +302 -0
  520. package/dist/cli/bin.js +40 -20
  521. package/dist/cli/blocks-Bzz326nn.js +1 -0
  522. package/dist/cli/blocks-Dq25D80b.js +124 -0
  523. package/dist/cli/cache-Cx6qlRDR.js +502 -0
  524. package/dist/cli/catalog-Di15TkM2.js +187 -0
  525. package/dist/cli/codemod-woL4cVe0.js +985 -0
  526. package/dist/cli/command-CK9Cn8HV.js +836 -0
  527. package/dist/cli/completion-BO5UK6bG.js +1 -0
  528. package/dist/cli/completion-CWoDmFZr.js +205 -0
  529. package/dist/cli/completion-J3dqnNoW.js +30 -0
  530. package/dist/cli/config-C1d-mbUA.js +1 -0
  531. package/dist/cli/config-CLHpTk9Y.js +1421 -0
  532. package/dist/cli/config-MuKY9kUj.js +39 -0
  533. package/dist/cli/config-edit-Ct1lXe8a.js +603 -0
  534. package/dist/cli/db-DT1bGB02.js +78 -0
  535. package/dist/cli/design-edit-B-WsnhUF.js +175 -0
  536. package/dist/cli/detect-DYDUBLU4.js +84 -0
  537. package/dist/cli/dist-D_VbPAMR.js +129 -0
  538. package/dist/cli/dist-DuiMMRbJ.js +1112 -0
  539. package/dist/cli/doctor-SGw36h1D.js +3806 -0
  540. package/dist/cli/emit-ZAYeh4Yn.js +1042 -0
  541. package/dist/cli/env-CVXvJoLP.js +142 -0
  542. package/dist/cli/env-D3gZ-OHj.js +1 -0
  543. package/dist/cli/env-DJ4ZaJpe.js +1 -0
  544. package/dist/cli/env-DMw_MBe5.js +996 -0
  545. package/dist/cli/errors-Caiz_0so.js +98 -0
  546. package/dist/cli/fastest-levenshtein-dhRRvrM2.js +120 -0
  547. package/dist/cli/files-DDvAwTko.js +963 -0
  548. package/dist/cli/gen-B344S1Oy.js +304 -0
  549. package/dist/cli/guards-CUlDNYZs.js +8 -0
  550. package/dist/cli/index.d.ts +258 -129
  551. package/dist/cli/index.js +13 -10
  552. package/dist/cli/init-B1dL-RZL.js +393 -0
  553. package/dist/cli/introspect-BPcFi8ow.js +51 -0
  554. package/dist/cli/io-BiPX-_J1.js +37 -0
  555. package/dist/cli/jsonc-C8M0EhHB.js +1 -0
  556. package/dist/cli/keys-jsxCNJdz.js +106 -0
  557. package/dist/cli/metadata-CxBZo4KM.js +138 -0
  558. package/dist/cli/module-migration-YFFdWC5X.js +592 -0
  559. package/dist/cli/moved-D9OT_Uyy.js +152 -0
  560. package/dist/cli/parse-DE59XyWt.js +170 -0
  561. package/dist/cli/preset-DmcC4nWE.js +129 -0
  562. package/dist/cli/prompts-Bvg_DBpe.js +1137 -0
  563. package/dist/cli/redact-PjNswZOs.js +35 -0
  564. package/dist/cli/rolldown-runtime-kJ_i4yPo.js +26 -0
  565. package/dist/cli/run-CM_2g6KQ.js +684 -0
  566. package/dist/cli/run-DaHfUUO9.js +1539 -0
  567. package/dist/cli/scaffold-CFdDq36-.js +898 -0
  568. package/dist/cli/scaffold-Dsjr7sOT.js +1 -0
  569. package/dist/cli/seed-DldDdXWO.js +113 -0
  570. package/dist/cli/seed-DtRFysBe.js +1 -0
  571. package/dist/cli/shell-Btv_4Yhe.js +10 -0
  572. package/dist/cli/skills-v34NDb2D.js +121 -0
  573. package/dist/cli/snapshot-DAxLi4hO.js +347 -0
  574. package/dist/cli/source-args-0I9zylYy.js +47 -0
  575. package/dist/cli/spec-CaaSOYZS.js +7501 -0
  576. package/dist/cli/spec-De0cfceR.js +1 -0
  577. package/dist/cli/sql-0I1EQ3JG.js +2 -0
  578. package/dist/cli/sql-DDLWwzh9.js +326 -0
  579. package/dist/cli/stack-status-CRanl-CN.js +456 -0
  580. package/dist/cli/style-2JfIPVMQ.js +29 -0
  581. package/dist/cli/supabase-toml-DjLgBYEo.js +1153 -0
  582. package/dist/cli/sync-DFx-6t5n.js +88 -0
  583. package/dist/cli/topics-GJuIDwlY.js +30 -0
  584. package/dist/cli/trace-VbdO6bcN.js +7 -0
  585. package/dist/cli/typegen--TfvOPLh.js +494 -0
  586. package/dist/cli/typegen-version-BNBPI4Eu.js +9 -0
  587. package/dist/cli/validate-BfWNKvxy.js +7522 -0
  588. package/dist/cli/version-DNRW4DAP.js +4 -0
  589. package/dist/cli/write-BS6F3Yvz.js +180 -0
  590. package/dist/client/index.d.ts +7 -4
  591. package/dist/client/index.js +152 -6
  592. package/dist/client/native/index.d.ts +71 -4
  593. package/dist/client/native/index.js +65 -6
  594. package/dist/client-01MAuqzW.js +137 -0
  595. package/dist/client-B7QVIrJS.d.ts +263 -0
  596. package/dist/client-B9CqzgPO.js +75 -0
  597. package/dist/client-BAcILZOf.d.ts +122 -0
  598. package/dist/client-BOT2KVIp.js +128 -0
  599. package/dist/client-BUGIS__1.js +1051 -0
  600. package/dist/client-BVZtq_rQ.d.ts +34 -0
  601. package/dist/client-BYaOGCOG.js +84 -0
  602. package/dist/client-BfgwocyT.js +155 -0
  603. package/dist/client-BpS8a6Fm.js +51 -0
  604. package/dist/client-BxnLb9bz.d.ts +58 -0
  605. package/dist/client-BzCv4kKE.js +65 -0
  606. package/dist/client-C-2ajnhM.js +89 -0
  607. package/dist/client-C5mUEb2n.js +55 -0
  608. package/dist/client-C9QrWrnt.js +209 -0
  609. package/dist/client-CFdMJ1h9.d.ts +277 -0
  610. package/dist/client-CHmjaI0j.d.ts +103 -0
  611. package/dist/client-CWs3X4g1.js +120 -0
  612. package/dist/client-Cdedx_lw.js +438 -0
  613. package/dist/client-CiGjS6us.js +169 -0
  614. package/dist/client-CilSKXNu.js +288 -0
  615. package/dist/client-ClZ0D-if.d.ts +162 -0
  616. package/dist/client-Cmensu7l.d.ts +419 -0
  617. package/dist/client-Co6BPmvr.d.ts +108 -0
  618. package/dist/client-CoVGPi0c.js +133 -0
  619. package/dist/client-CvITjt-9.js +310 -0
  620. package/dist/client-CzI4QpG3.d.ts +131 -0
  621. package/dist/client-D5CZ2a34.d.ts +455 -0
  622. package/dist/client-DAHsEOVV.d.ts +155 -0
  623. package/dist/client-DG7FwgZD.js +104 -0
  624. package/dist/client-DIrCmOXz.d.ts +157 -0
  625. package/dist/client-DNq8xYb-.js +52 -0
  626. package/dist/client-DdfSIZ3M.d.ts +107 -0
  627. package/dist/client-DjTRlN3a.d.ts +68 -0
  628. package/dist/client-Ezlbskjq.js +60 -0
  629. package/dist/client-LLmgiCwJ.d.ts +135 -0
  630. package/dist/client-Lx3mlvKO.d.ts +100 -0
  631. package/dist/client-PGRk3DGz.js +98 -0
  632. package/dist/client-Tc47rlSe.d.ts +350 -0
  633. package/dist/client-VvY0K3wr.d.ts +59 -0
  634. package/dist/client-WAdEBBrH.d.ts +65 -0
  635. package/dist/client-WHeWTNVL.d.ts +130 -0
  636. package/dist/client-WgrPIHH-.js +213 -0
  637. package/dist/client-ZTtSV3l8.js +40 -0
  638. package/dist/client-b2_GjzzD.js +438 -0
  639. package/dist/client-ckXfdy1k.js +38 -0
  640. package/dist/client-e-hFkLUf.d.ts +34 -0
  641. package/dist/client-hyP_nS5R.d.ts +218 -0
  642. package/dist/client-i8glKhxh.js +67 -0
  643. package/dist/client-iDLLvGR4.d.ts +52 -0
  644. package/dist/client-pxjbgOz6.js +376 -0
  645. package/dist/client-xkSCp9hN.d.ts +101 -0
  646. package/dist/client-ysNShuJZ.d.ts +39 -0
  647. package/dist/cloud-event-5rCEzIgK.d.ts +64 -0
  648. package/dist/codecs-Bm46sVxr.d.ts +215 -0
  649. package/dist/codecs-YAekuQ08.js +358 -0
  650. package/dist/codegen-DeoSt1mi.d.ts +1571 -0
  651. package/dist/comments-D7sbd0xG.js +230 -0
  652. package/dist/commerce/index.d.ts +211 -0
  653. package/dist/commerce/index.js +517 -0
  654. package/dist/compiler-BVxepAY0.d.ts +14 -0
  655. package/dist/compose-Djntdacs.js +53 -0
  656. package/dist/composite-M6zPs1Xm.js +130 -0
  657. package/dist/composite-djtGy6bz.d.ts +67 -0
  658. package/dist/config/index.d.ts +7 -5
  659. package/dist/config/index.js +7 -4
  660. package/dist/config-BA1K4OPk.js +557 -0
  661. package/dist/config-C4MozTD7.js +3892 -0
  662. package/dist/connector-Cp8CqssJ.d.ts +107 -0
  663. package/dist/connectors-CjD-R2ks.d.ts +141 -0
  664. package/dist/context-1sSWcd7_.d.ts +365 -0
  665. package/dist/context-B8_p3MXo.js +11 -0
  666. package/dist/context-BDDgjoxz.js +41 -0
  667. package/dist/context-C-bHOtoD.js +5 -0
  668. package/dist/context-D6ZMKc2L.js +19 -0
  669. package/dist/context-wDKxSl9x.js +9 -0
  670. package/dist/controller-D6NyNrlZ.js +79 -0
  671. package/dist/controller-D845qKh2.d.ts +46 -0
  672. package/dist/credentials/index.d.ts +15 -5
  673. package/dist/credentials/index.js +16 -8
  674. package/dist/cron-CUaKTjWC.js +145 -0
  675. package/dist/cron-route-CoL-By8Z.js +24 -0
  676. package/dist/csv-CVfXqaAu.js +89 -0
  677. package/dist/csv-D3eKxV1T.d.ts +28 -0
  678. package/dist/define-B2ln373W.js +1896 -0
  679. package/dist/define-DxHHbNEb.d.ts +1005 -0
  680. package/dist/define-block-B6Gjs57G.js +52 -0
  681. package/dist/define-block-CLZMEFeK.d.ts +256 -0
  682. package/dist/delegation-Dt8hMJWu.js +140 -0
  683. package/dist/delivery-B1mKaOen.js +30 -0
  684. package/dist/delivery-BeHgwS3k.d.ts +69 -0
  685. package/dist/documents-CWn2mtYf.d.ts +96 -0
  686. package/dist/edge/index.d.ts +16 -14
  687. package/dist/edge/index.js +24 -18
  688. package/dist/elysia/index.d.ts +1 -1
  689. package/dist/elysia/index.js +2 -2
  690. package/dist/email-BcmbIWOX.d.ts +42 -0
  691. package/dist/embeddings-C2S14foD.d.ts +78 -0
  692. package/dist/embeddings-CVeOoufZ.js +128 -0
  693. package/dist/ended-nIdGCHxk.d.ts +70 -0
  694. package/dist/entitlements-BvU5dLpW.js +45 -0
  695. package/dist/entitlements-CbzCKalR.d.ts +53 -0
  696. package/dist/env/index.d.ts +1 -1
  697. package/dist/env/index.js +3 -3
  698. package/dist/envelope-CHYk5MXU.js +90 -0
  699. package/dist/errors-8i6tSICm.js +301 -0
  700. package/dist/errors-PIpcoe4z.js +44 -0
  701. package/dist/escape-like-AUEPn-C5.d.ts +15 -0
  702. package/dist/eve/index.d.ts +5 -5
  703. package/dist/eve/index.js +9 -9
  704. package/dist/eve-DUF70Vgi.d.ts +151 -0
  705. package/dist/event-calendar-DJXXMJ3x.d.ts +217 -0
  706. package/dist/event-map-Dy2vKHai.js +19 -0
  707. package/dist/events/index.d.ts +4 -4
  708. package/dist/events/index.js +10 -7
  709. package/dist/events-CTreRrgP.d.ts +800 -0
  710. package/dist/events-xbpHkcK9.js +82 -0
  711. package/dist/executor-BBHgjUJu.d.ts +39 -0
  712. package/dist/executor-BINiCFNp.d.ts +95 -0
  713. package/dist/executor-BXSHYyW2.js +735 -0
  714. package/dist/executor-D1kYY5BA.js +206 -0
  715. package/dist/executor-D3K3tycZ.js +147 -0
  716. package/dist/executor-DKrZr3AC.d.ts +174 -0
  717. package/dist/executor-DoE-5iM8.d.ts +272 -0
  718. package/dist/expo/index.d.ts +4 -4
  719. package/dist/expo/index.js +6 -6
  720. package/dist/expo-sqlite/index.d.ts +3 -3
  721. package/dist/expo-sqlite/index.js +2 -2
  722. package/dist/field-errors-CWXN_h_E.d.ts +113 -0
  723. package/dist/field-formats-Cif5gr7c.js +102 -0
  724. package/dist/field-formats-DCvOQlOy.d.ts +39 -0
  725. package/dist/filter-evaluate-C0ULNfS7.js +214 -0
  726. package/dist/filter-evaluate-CjcFq0RT.d.ts +34 -0
  727. package/dist/filter-query-B3lhckKX.js +518 -0
  728. package/dist/filter-query-BKmRYrTE.d.ts +121 -0
  729. package/dist/flags-D_D1jAHB.d.ts +230 -0
  730. package/dist/flags-XAOsdNAc.js +279 -0
  731. package/dist/flags-sdk/index.d.ts +143 -0
  732. package/dist/flags-sdk/index.js +175 -0
  733. package/dist/form-definition-sagoefQr.d.ts +95 -0
  734. package/dist/format-CNwSjXUU.d.ts +70 -0
  735. package/dist/framework-DG5Bv39u.d.ts +26 -0
  736. package/dist/framework-INbjMZX1.js +51 -0
  737. package/dist/function-contract-B4c0XuTU.d.ts +21 -0
  738. package/dist/function-contract-DmkBg19r.js +5 -0
  739. package/dist/gateway-Cup00l0w.d.ts +109 -0
  740. package/dist/gateway-options-ClvvfuuU.d.ts +29 -0
  741. package/dist/gateway-options-DcLcWL5_.js +27 -0
  742. package/dist/graph-Cs28bOlK.js +360 -0
  743. package/dist/groups-CxonH3u5.js +16 -0
  744. package/dist/h3/index.d.ts +7 -3
  745. package/dist/h3/index.js +3 -3
  746. package/dist/h3/v1/index.d.ts +1 -1
  747. package/dist/h3/v1/index.js +2 -2
  748. package/dist/hono/index.d.ts +24 -10
  749. package/dist/hono/index.js +50 -22
  750. package/dist/http-BF-V0CUF.js +25 -0
  751. package/dist/impersonation-CDeCzZP6.js +62 -0
  752. package/dist/impersonation-D5chOkrO.d.ts +25 -0
  753. package/dist/inbox-3ql4phyr.d.ts +400 -0
  754. package/dist/index-BIi8i6BO.d.ts +97 -0
  755. package/dist/index-BkzNUPId.d.ts +131 -0
  756. package/dist/index-BlqrGvb3.d.ts +227 -0
  757. package/dist/index-Brhm22eL.d.ts +138 -0
  758. package/dist/index-Bvw9r94Q.d.ts +245 -0
  759. package/dist/index-CETRk4YO.d.ts +82 -0
  760. package/dist/index-CrZitvSC.d.ts +258 -0
  761. package/dist/index-DfVXx4Ia.d.ts +202 -0
  762. package/dist/index-DygICr8c.d.ts +206 -0
  763. package/dist/index-Ej8XQ9w9.d.ts +58 -0
  764. package/dist/index-jhqhynmh.d.ts +58 -0
  765. package/dist/index.d.ts +15 -15
  766. package/dist/index.js +15 -14
  767. package/dist/iso4217-A8ev-CNW.js +176 -0
  768. package/dist/json-schema-CpYINXG8.js +548 -0
  769. package/dist/jws-35a8VhFV.d.ts +60 -0
  770. package/dist/jws-milwSg7E.js +191 -0
  771. package/dist/kit-D5S7KNFe.d.ts +66 -0
  772. package/dist/kit-MUK34-ZG.js +104 -0
  773. package/dist/knowledge-BXQ2-V0a.d.ts +187 -0
  774. package/dist/knowledge-CJ_Mm3ic.js +272 -0
  775. package/dist/lint/index.js +9 -9
  776. package/dist/list/index.d.ts +4 -2
  777. package/dist/list/index.js +4 -2
  778. package/dist/list-query-CBXNfJt4.js +549 -0
  779. package/dist/list-query-PvP3pPGQ.d.ts +194 -0
  780. package/dist/live-DwDreq1n.js +239 -0
  781. package/dist/mcp/index.d.ts +24 -7
  782. package/dist/mcp/index.js +76 -55
  783. package/dist/mcp/sdk/index.d.ts +6 -6
  784. package/dist/mcp/sdk/index.js +7 -7
  785. package/dist/messages-Cx4ttLJJ.js +493 -0
  786. package/dist/metric-definition-95HFoW1V.d.ts +70 -0
  787. package/dist/metric-definition-BjxVn4R5.js +117 -0
  788. package/dist/mfa-DtflCXEt.d.ts +30 -0
  789. package/dist/model-lUafmeBQ.d.ts +311 -0
  790. package/dist/model-messages-CTu-6kBu.js +206 -0
  791. package/dist/money-95Rff2vT.js +185 -0
  792. package/dist/money-DFpWzQvk.d.ts +76 -0
  793. package/dist/money-codec-C_-K5ZUU.js +41 -0
  794. package/dist/nestjs/index.d.ts +2 -2
  795. package/dist/nestjs/index.js +2 -2
  796. package/dist/next/index.d.ts +26 -16
  797. package/dist/next/index.js +17 -16
  798. package/dist/node/index.d.ts +2 -2
  799. package/dist/node/index.js +3 -3
  800. package/dist/nuxt/index.d.ts +2 -2
  801. package/dist/nuxt/index.js +3 -2
  802. package/dist/onboarding-BZvLLPaY.js +68 -0
  803. package/dist/openapi/index.d.ts +3 -3
  804. package/dist/openapi/index.js +2 -2
  805. package/dist/operations-C9-UcReN.d.ts +6 -0
  806. package/dist/operations-CsIfMED7.js +29 -0
  807. package/dist/optional-peer-Dx8TaYXw.js +29 -0
  808. package/dist/options-B0FcEKtH.js +5 -0
  809. package/dist/options-B5BU2Yg7.js +11 -0
  810. package/dist/options-B5woz53h.js +5 -0
  811. package/dist/options-B7EJaOX-.js +5 -0
  812. package/dist/options-B9q8CROT.js +9 -0
  813. package/dist/options-BA6jV6py.js +10 -0
  814. package/dist/options-BAW2ZlZ8.js +8 -0
  815. package/dist/options-BMjcVuaI.js +82 -0
  816. package/dist/options-BOOEzor9.js +5 -0
  817. package/dist/options-BQ07tTYr.js +11 -0
  818. package/dist/options-BZsoPJGX.js +5 -0
  819. package/dist/options-BesyRBnM.js +16 -0
  820. package/dist/options-Bf96aVk5.js +10 -0
  821. package/dist/options-BlOPivzq.js +8 -0
  822. package/dist/options-Blg8lAkz.js +9 -0
  823. package/dist/options-Bn4cu0gt.js +5 -0
  824. package/dist/options-BnoJOwXK.js +8 -0
  825. package/dist/options-Bp7sgKvl.js +30 -0
  826. package/dist/options-BqO9GYig.js +311 -0
  827. package/dist/options-BxcFLL1G.js +8 -0
  828. package/dist/options-C1HR4UZd.js +13 -0
  829. package/dist/options-C239TLRF.js +14 -0
  830. package/dist/options-C2HesT4A.js +9 -0
  831. package/dist/options-C3EzJATk.js +10 -0
  832. package/dist/options-C3hZ1fbC.js +10 -0
  833. package/dist/options-C6rEL6U5.js +8 -0
  834. package/dist/options-CAzVf-1T.js +8 -0
  835. package/dist/options-CGKSUFUq.js +5 -0
  836. package/dist/options-CGjGE8xS.js +12 -0
  837. package/dist/options-CK5WiFwG.js +11 -0
  838. package/dist/options-CN7PHkhU.js +8 -0
  839. package/dist/options-CTZNpb2n.js +5 -0
  840. package/dist/options-CUqQ9pm7.js +9 -0
  841. package/dist/options-CVSWgZpY.js +8 -0
  842. package/dist/options-CXFz0xxS.js +8 -0
  843. package/dist/options-CZk_fbbg.js +9 -0
  844. package/dist/options-C_pb1Nd3.js +5 -0
  845. package/dist/options-CbSOj53r.d.ts +52 -0
  846. package/dist/options-ChD15QxJ.js +9 -0
  847. package/dist/options-CkScQRJR.js +12 -0
  848. package/dist/options-CljDnQt2.js +25 -0
  849. package/dist/options-CmraJhd9.js +5 -0
  850. package/dist/options-CoX6VKGb.js +8 -0
  851. package/dist/options-CrC78Tee.js +5 -0
  852. package/dist/options-Ctac2R0Q.js +11 -0
  853. package/dist/options-CyD7OObW.js +17 -0
  854. package/dist/options-D1blDihM.js +9 -0
  855. package/dist/options-D2Gd6VfS.js +8 -0
  856. package/dist/options-D2d1fFuw.js +11 -0
  857. package/dist/options-D40CQzji.js +8 -0
  858. package/dist/options-D7f2VKzj.js +25 -0
  859. package/dist/options-DARkpk2P.js +8 -0
  860. package/dist/options-DCduTMST.js +17 -0
  861. package/dist/options-DDzggjN7.js +8 -0
  862. package/dist/options-DMR68VAC.js +5 -0
  863. package/dist/options-DNKyN5uq.js +20 -0
  864. package/dist/options-DTDxFT6J.js +13 -0
  865. package/dist/options-DWpz3V3F.js +8 -0
  866. package/dist/options-DXqcJyOP.js +10 -0
  867. package/dist/options-DYBQ973I.js +8 -0
  868. package/dist/options-Dh4wu9Ks.js +15 -0
  869. package/dist/options-Dmg1Da9P.js +25 -0
  870. package/dist/options-DsUgamiy.js +5 -0
  871. package/dist/options-EsUh744F.js +13 -0
  872. package/dist/options-Fz6xqu-b.js +5 -0
  873. package/dist/options-HSv8R6h5.js +13 -0
  874. package/dist/options-I8zVkB_y.js +8 -0
  875. package/dist/options-MHhjOoWz.js +5 -0
  876. package/dist/options-MLxMkd5B.js +11 -0
  877. package/dist/options-OJ5zmgr8.js +10 -0
  878. package/dist/options-QKP9FFcK.js +8 -0
  879. package/dist/options-SViK_2x2.js +12 -0
  880. package/dist/options-XgfTctbI.js +5 -0
  881. package/dist/options-_9arpsX9.js +11 -0
  882. package/dist/options-eBPsk4WI.js +11 -0
  883. package/dist/options-kLKILdIu.js +10 -0
  884. package/dist/options-n22NK3PL.js +8 -0
  885. package/dist/options-oeAq4Ho5.js +12 -0
  886. package/dist/options-qU8vgxhO.js +18 -0
  887. package/dist/options-vXMBEWSH.js +5 -0
  888. package/dist/options-wFnK3qWl.js +9 -0
  889. package/dist/options-xVAy3UsV.js +9 -0
  890. package/dist/organizations-Cw7om8uk.js +398 -0
  891. package/dist/orpc/index.d.ts +26 -10
  892. package/dist/orpc/index.js +54 -33
  893. package/dist/otel/index.d.ts +3 -3
  894. package/dist/otel/index.js +42 -7
  895. package/dist/outbox-BTeqjbum.d.ts +181 -0
  896. package/dist/overlay/index.d.ts +1 -1
  897. package/dist/overlay/index.js +3 -3
  898. package/dist/payments-h45bswA-.js +16 -0
  899. package/dist/pg-error-BV_X8Isq.js +26 -0
  900. package/dist/plugin-CDLJRFFg.d.ts +190 -0
  901. package/dist/plugins/actor/index.d.ts +1 -1
  902. package/dist/plugins/actor/index.js +1 -1
  903. package/dist/plugins/rules/index.d.ts +2 -2
  904. package/dist/plugins/rules/index.js +2 -2
  905. package/dist/plugins/soft-delete/index.d.ts +3 -3
  906. package/dist/plugins/soft-delete/index.js +4 -4
  907. package/dist/plugins/tenant/index.d.ts +4 -3
  908. package/dist/plugins/tenant/index.js +3 -3
  909. package/dist/plugins/timestamps/index.d.ts +1 -1
  910. package/dist/plugins/timestamps/index.js +1 -1
  911. package/dist/plugins/validation/index.d.ts +2 -2
  912. package/dist/plugins/validation/index.js +3 -3
  913. package/dist/pool-CwOCsX9e.d.ts +114 -0
  914. package/dist/pool-errors-GMjlCN0d.js +27 -0
  915. package/dist/ports-Ca63W4cW.d.ts +285 -0
  916. package/dist/ports-DAdQyjZz.d.ts +86 -0
  917. package/dist/ports-DGK3KTDH.js +133 -0
  918. package/dist/postgres/index.d.ts +28 -6
  919. package/dist/postgres/index.js +54 -23
  920. package/dist/postgrest-Cw9Bs5gm.d.ts +53 -0
  921. package/dist/powersync/index.d.ts +4 -4
  922. package/dist/powersync/index.js +4 -4
  923. package/dist/powersync/react/index.d.ts +8 -3
  924. package/dist/powersync/react/index.js +11 -3
  925. package/dist/preset/index.d.ts +352 -0
  926. package/dist/preset/index.js +564 -0
  927. package/dist/problem-CEjyhV5T.d.ts +76 -0
  928. package/dist/problem-pIiL3WbE.js +159 -0
  929. package/dist/provider-9gBq9W6k.d.ts +113 -0
  930. package/dist/provider-DKh2xFZb.js +57 -0
  931. package/dist/push-token-D6REHMMw.js +16 -0
  932. package/dist/push-token-asrmi7-6.d.ts +24 -0
  933. package/dist/query/index.d.ts +2 -2
  934. package/dist/range-DwpWe8e7.js +7 -0
  935. package/dist/range-p5V4rBhZ.d.ts +8 -0
  936. package/dist/rank-keys-DcPMt_Jk.js +60 -0
  937. package/dist/rank-result-DS8IoLup.js +18 -0
  938. package/dist/rank-result-Dngpt2n5.d.ts +14 -0
  939. package/dist/rate-limit--QSiFA6D.js +325 -0
  940. package/dist/rate-limit-BtbddDnE.js +49 -0
  941. package/dist/rate-limit-C88MEAOm.d.ts +41 -0
  942. package/dist/ratelimit-headers-Bsxx0Tj2.js +62 -0
  943. package/dist/react/index.d.ts +9 -9
  944. package/dist/react/index.js +3 -4
  945. package/dist/react/native/index.d.ts +1 -1
  946. package/dist/react/native/index.js +2 -2
  947. package/dist/react/server.d.ts +10 -10
  948. package/dist/react/server.js +3 -3
  949. package/dist/react/session.d.ts +2 -2
  950. package/dist/react-CKXUkwPx.js +410 -0
  951. package/dist/react-controller-Xn-IU44p.js +40 -0
  952. package/dist/react-env-Cc7Vf6eb.js +13 -0
  953. package/dist/react-router/index.d.ts +6 -6
  954. package/dist/react-router/index.js +7 -7
  955. package/dist/read-set-GEb-i0On.js +314 -0
  956. package/dist/realtime/index.d.ts +8 -4
  957. package/dist/realtime/index.js +5 -327
  958. package/dist/realtime-status-D2dw1hOE.js +12 -0
  959. package/dist/realtime-status-DcsO00Gw.d.ts +8 -0
  960. package/dist/refusal-br4Ma9Cf.js +61 -0
  961. package/dist/refusal-oD3ISM9h.d.ts +18 -0
  962. package/dist/replicas-BvIL4_jL.js +94 -0
  963. package/dist/resolve-CAR9oaKW.js +869 -0
  964. package/dist/resolve-w9EpHzuM.d.ts +266 -0
  965. package/dist/resource-B4ka8dDH.d.ts +106 -0
  966. package/dist/resource-C8r5xGqY.js +463 -0
  967. package/dist/resource-DO4gbVi5.js +91 -0
  968. package/dist/resource-execute-D0yQ-8WR.d.ts +12 -0
  969. package/dist/resource-types-D2vEQVXI.d.ts +141 -0
  970. package/dist/resources-BklF-rjz.d.ts +7 -0
  971. package/dist/resources-BlZdLsWQ.js +64 -0
  972. package/dist/respond-C7I8kLK_.d.ts +93 -0
  973. package/dist/respond-DdhZ9Wbn.js +95 -0
  974. package/dist/result-BlgnMB0H.js +128 -0
  975. package/dist/result-Cj3yWhjH.d.ts +298 -0
  976. package/dist/rrule-zBh3CA1r.js +290 -0
  977. package/dist/rules-B0-3Iosu.js +261 -0
  978. package/dist/run-watch-CQRdpy-f.js +53 -0
  979. package/dist/sales-lines-BAk8In-Z.js +41 -0
  980. package/dist/sales-lines-C6gafAwg.d.ts +28 -0
  981. package/dist/sales-shared-DAAGwQwN.d.ts +8 -0
  982. package/dist/sales-shared-SblIgCgI.js +22 -0
  983. package/dist/scope-DgWjuXUw.js +90 -0
  984. package/dist/search-B6h03cAx.js +106 -0
  985. package/dist/search-BtoWY6n_.js +9 -0
  986. package/dist/server/index.d.ts +157 -51
  987. package/dist/server/index.js +295 -20
  988. package/dist/server-types-OohhIQb2.d.ts +737 -0
  989. package/dist/session-DiWHtYrO.d.ts +95 -0
  990. package/dist/settings-BXFn9zpS.js +90 -0
  991. package/dist/shared-BmMcMoW9.js +89 -0
  992. package/dist/shared-DbO3Dfms.js +14 -0
  993. package/dist/shared-as0EG51f.js +60 -0
  994. package/dist/sign-in-D0xN6E_l.js +360 -0
  995. package/dist/signatures-B41ApWXA.js +145 -0
  996. package/dist/signatures-BMdJ7neI.d.ts +43 -0
  997. package/dist/signers-CXt_wA9S.d.ts +385 -0
  998. package/dist/signing-keys-Bq9mMCTh.d.ts +90 -0
  999. package/dist/solid/index.d.ts +8 -8
  1000. package/dist/solid/index.js +3 -8
  1001. package/dist/solid-controller-DLsmrczT.js +33 -0
  1002. package/dist/solid-controller-DqlvYFZa.d.ts +11 -0
  1003. package/dist/solid-start/index.d.ts +8 -12
  1004. package/dist/solid-start/index.js +8 -7
  1005. package/dist/spec/index.d.ts +25 -5
  1006. package/dist/spec/index.js +37 -4
  1007. package/dist/spec-pins-Dqpml2dZ.d.ts +84 -0
  1008. package/dist/spec-pins-S4PymRxp.js +60 -0
  1009. package/dist/sql/index.d.ts +189 -28
  1010. package/dist/sql/index.js +74328 -26488
  1011. package/dist/sql-DJrXG-3Z.js +422 -0
  1012. package/dist/sso-BDva_-4y.js +217 -0
  1013. package/dist/sso-BN0LnMqE.d.ts +131 -0
  1014. package/dist/ssr/index.d.ts +5 -6
  1015. package/dist/ssr/index.js +4 -4
  1016. package/dist/standard-B5fe2gnW.js +25 -0
  1017. package/dist/standard-C3_AAF3g.d.ts +7 -0
  1018. package/dist/stats-D6vkb89f.js +1128 -0
  1019. package/dist/storage/index.d.ts +3 -3
  1020. package/dist/storage/index.js +14 -10
  1021. package/dist/storage-api-Cx-1iWBd.d.ts +582 -0
  1022. package/dist/store-B5qYKsTh.d.ts +68 -0
  1023. package/dist/streams/index.d.ts +4 -4
  1024. package/dist/streams/index.js +4 -4
  1025. package/dist/streams/redis/index.d.ts +1 -1
  1026. package/dist/streams/redis/index.js +4 -4
  1027. package/dist/stripe/index.d.ts +16 -0
  1028. package/dist/stripe/index.js +14 -0
  1029. package/dist/stripe-NVcNOhHy.d.ts +140 -0
  1030. package/dist/stripe-XZrSmDTf.js +32 -0
  1031. package/dist/subject-readers-DiePmaYP.js +46 -0
  1032. package/dist/subject-readers-fxP5wu0s.d.ts +21 -0
  1033. package/dist/subjects-z8VWA_lF.d.ts +69 -0
  1034. package/dist/subscribers-Cq--DL1E.js +34 -0
  1035. package/dist/supabase-mcp-DomZ-amK.js +28 -0
  1036. package/dist/support-BsKkvA92.js +522 -0
  1037. package/dist/support-view-BbcZR7Io.d.ts +17 -0
  1038. package/dist/svelte/index.d.ts +7 -7
  1039. package/dist/svelte/index.js +2 -2
  1040. package/dist/svelte-controller-CDAujo-_.js +50 -0
  1041. package/dist/svelte-controller-DxxHEHxD.d.ts +10 -0
  1042. package/dist/sveltekit/index.d.ts +11 -13
  1043. package/dist/sveltekit/index.js +9 -9
  1044. package/dist/table-schema-pQlER3jj.js +283 -0
  1045. package/dist/tags-Dw8vKkcI.d.ts +30 -0
  1046. package/dist/tags-PaG0Ns_9.js +84 -0
  1047. package/dist/tanstack-db/index.d.ts +2 -2
  1048. package/dist/tanstack-db/index.js +1 -1
  1049. package/dist/tanstack-db/supabase/index.d.ts +5 -6
  1050. package/dist/tanstack-db/supabase/index.js +180 -9
  1051. package/dist/tanstack-start/index.d.ts +7 -7
  1052. package/dist/tanstack-start/index.js +6 -6
  1053. package/dist/tax-DDZUB_oc.d.ts +273 -0
  1054. package/dist/tax-D_kSCdWU.js +140 -0
  1055. package/dist/tee-Bsisfd7t.js +101 -0
  1056. package/dist/template-DdgYjIZ5.js +123 -0
  1057. package/dist/temporal-CB5Fpo5d.js +79 -0
  1058. package/dist/temporal-required-DqRzr7i0.js +20 -0
  1059. package/dist/tenant-B-fiItlJ.js +27 -0
  1060. package/dist/tenant-DdmVhsff.d.ts +17 -0
  1061. package/dist/tenant-naming-Bsj3Uvap.js +27 -0
  1062. package/dist/testing/index.d.ts +235 -32
  1063. package/dist/testing/index.js +1132 -32
  1064. package/dist/timing-BMCWgpdZ.js +92 -0
  1065. package/dist/topic-ByDz9edV.js +542 -0
  1066. package/dist/topic-cMS7UtM1.d.ts +359 -0
  1067. package/dist/types-6oiy6rIa.d.ts +205 -0
  1068. package/dist/types-CdP0z5tS.d.ts +564 -0
  1069. package/dist/types-D0W4fnsc.d.ts +162 -0
  1070. package/dist/types-R6syp1el.js +29 -0
  1071. package/dist/types-YfwpIE-d.d.ts +357 -0
  1072. package/dist/types-pNY_UpDs.d.ts +240 -0
  1073. package/dist/types-vaoP9S9_.d.ts +635 -0
  1074. package/dist/undo-CEGIRkPA.js +44 -0
  1075. package/dist/undo-DGo0skyO.d.ts +43 -0
  1076. package/dist/usage-CdlfuS3i.js +250 -0
  1077. package/dist/usage-DM2rzczj.d.ts +202 -0
  1078. package/dist/vault-tOkPLnMB.d.ts +50 -0
  1079. package/dist/vercel-connect/index.d.ts +1 -1
  1080. package/dist/vercel-connect/index.js +4 -4
  1081. package/dist/verify-D63A2ALE.d.ts +142 -0
  1082. package/dist/verify-EQcC3Khp.js +126 -0
  1083. package/dist/version-D87ZteKy.js +4 -0
  1084. package/dist/view-DZ63nqwt.js +105 -0
  1085. package/dist/view-Dv0A949a.d.ts +90 -0
  1086. package/dist/vue/index.d.ts +8 -8
  1087. package/dist/vue/index.js +3 -16
  1088. package/dist/vue-controller-C9tFzqAc.js +32 -0
  1089. package/dist/vue-controller-HPfMTDa2.d.ts +11 -0
  1090. package/dist/watch-DDuWYv0Y.d.ts +84 -0
  1091. package/dist/watch-DT_B3CnJ.js +139 -0
  1092. package/dist/watch-topic-EFpOIIDE.d.ts +28 -0
  1093. package/dist/watch-topic-miuymrli.js +57 -0
  1094. package/dist/wire-DEY0ajW9.js +45 -0
  1095. package/dist/workflow-builder-OrglbXUh.js +681 -0
  1096. package/dist/workflow-sdk/builder/index.d.ts +46 -15
  1097. package/dist/workflow-sdk/builder/index.js +69 -21
  1098. package/dist/workflow-sdk/index.d.ts +75 -2
  1099. package/dist/workflow-sdk/index.js +83 -3
  1100. package/dist/workflow-sdk/world/index.d.ts +29 -4
  1101. package/dist/workflow-sdk/world/index.js +137 -59
  1102. package/dist/workflow-sdk-BZ6qsRlY.js +243 -0
  1103. package/dist/workflow-sdk-q8cLwW1K.d.ts +161 -0
  1104. package/dist/workflow-sdk-world-DPMdBfzn.js +2103 -0
  1105. package/dist/workflows-C-OvZpeg.js +282 -0
  1106. package/dist/workflows-DFQeXDAI.d.ts +243 -0
  1107. package/dist/yjs/index.d.ts +67 -0
  1108. package/dist/yjs/index.js +212 -0
  1109. package/package.json +788 -46
  1110. package/schemas/cli-commands-v1.json +220 -0
  1111. package/schemas/cli-result-v1.json +138 -0
  1112. package/schemas/config-v1.json +4147 -726
  1113. package/schemas/doctor-report-v1.json +23 -0
  1114. package/schemas/snapshot-v2.json +271 -0
  1115. package/skills/better-supabase/SKILL.md +11 -4
  1116. package/skills/better-supabase/references/plugins.md +2 -2
  1117. package/skills/better-supabase/references/ui-recipes.md +18652 -0
  1118. package/skills/better-supabase-api/SKILL.md +14 -14
  1119. package/skills/better-supabase-api/references/adapters.md +12 -2
  1120. package/skills/better-supabase-api/references/ai.md +4 -4
  1121. package/skills/better-supabase-api/references/expo.md +1 -1
  1122. package/skills/better-supabase-api/references/powersync.md +1 -1
  1123. package/skills/better-supabase-api/references/streams-credentials.md +8 -5
  1124. package/skills/better-supabase-auth/SKILL.md +18 -11
  1125. package/skills/better-supabase-auth/references/authorization-providers.md +5 -5
  1126. package/skills/better-supabase-testing/SKILL.md +2 -2
  1127. package/testing/act-cases.json +370 -0
  1128. package/dist/access-sql-CrSbK1q-.js +0 -181
  1129. package/dist/actor-CQTlc1Hh.d.ts +0 -43
  1130. package/dist/adapter-CN45ibbV.js +0 -1691
  1131. package/dist/agents-BY_LQXtQ.d.ts +0 -94
  1132. package/dist/ai-cache-Dfgk8nBT.js +0 -81
  1133. package/dist/ai-cache-DrUMMgp6.d.ts +0 -64
  1134. package/dist/ai-chat-CVLRWbtS.js +0 -744
  1135. package/dist/ai-chat-DXkMy74O.d.ts +0 -590
  1136. package/dist/ai-files-CioLu5du.js +0 -320
  1137. package/dist/ai-tasks-BRQ6iQLc.d.ts +0 -131
  1138. package/dist/announcements-Bouy0Ski.d.ts +0 -72
  1139. package/dist/announcements-p_BFofiR.js +0 -107
  1140. package/dist/api-Dnf2q-Ht.d.ts +0 -370
  1141. package/dist/api-DtHFC037.js +0 -676
  1142. package/dist/api-keys-C8BlF3L2.d.ts +0 -156
  1143. package/dist/assistant-DBlFDZsi.d.ts +0 -147
  1144. package/dist/attributes-5dYul0u0.js +0 -13
  1145. package/dist/authorization-BFCqamMs.d.ts +0 -172
  1146. package/dist/authorizer-ayxUDXXP.js +0 -126
  1147. package/dist/base64-D2gsioCY.js +0 -42
  1148. package/dist/before-route-CnR0C0Jr.js +0 -30
  1149. package/dist/bind-ButSzrHe.js +0 -97
  1150. package/dist/bind-CQ5mPyX1.d.ts +0 -62
  1151. package/dist/block-events-DTxU5tfr.js +0 -91
  1152. package/dist/block-fields-CroxUuF2.js +0 -49
  1153. package/dist/block-fields-D1pfrcIY.d.ts +0 -31
  1154. package/dist/block-helpers-C0Xj8War.d.ts +0 -37
  1155. package/dist/block-helpers-Cy3pB96I.js +0 -222
  1156. package/dist/block-hooks-BPNMIlLl.js +0 -114
  1157. package/dist/block-hooks-DaOVC7SC.d.ts +0 -107
  1158. package/dist/block-transport-bAKh-dGc.js +0 -85
  1159. package/dist/block-transport-inD4fFq-.d.ts +0 -70
  1160. package/dist/build-hPwk3_X5.js +0 -1296
  1161. package/dist/build-meLuYGri.js +0 -689
  1162. package/dist/channel-_2Mx1Oyu.d.ts +0 -70
  1163. package/dist/channels-CkgQ_X60.js +0 -114
  1164. package/dist/cli/add-1dc5wM5k.js +0 -69
  1165. package/dist/cli/bin.d.ts +0 -1
  1166. package/dist/cli/cache-CIfA-jBV.js +0 -483
  1167. package/dist/cli/codemod-JVlTQQG2.js +0 -491
  1168. package/dist/cli/command-DV-StG1x.js +0 -507
  1169. package/dist/cli/config-C2Pz2_4A.js +0 -52
  1170. package/dist/cli/config-DpbF8ML3.js +0 -2
  1171. package/dist/cli/config-M-WzL9O2.js +0 -1175
  1172. package/dist/cli/db-BkcfOlyB.js +0 -53
  1173. package/dist/cli/diff-D1jGdb3Y.js +0 -752
  1174. package/dist/cli/dist-DBPdlPYK.js +0 -1112
  1175. package/dist/cli/dist-DRAVaE6w.js +0 -842
  1176. package/dist/cli/dist-DreZ24Sz.js +0 -129
  1177. package/dist/cli/doctor-VcDtuusV.js +0 -3686
  1178. package/dist/cli/emit-BHHfwUoT.js +0 -1136
  1179. package/dist/cli/env-B--LMhEe.js +0 -514
  1180. package/dist/cli/env-vzBG90Um.js +0 -2
  1181. package/dist/cli/env-zHJtMIBo.js +0 -116
  1182. package/dist/cli/errors-CqTLXe2M.js +0 -72
  1183. package/dist/cli/fastest-levenshtein-CF7BCi9l.js +0 -120
  1184. package/dist/cli/files-BVupXPIC.js +0 -34
  1185. package/dist/cli/gen-DmVj3u4L.js +0 -322
  1186. package/dist/cli/glue-C1UE8gQN.js +0 -468
  1187. package/dist/cli/init-CVZ3s5kl.js +0 -258
  1188. package/dist/cli/introspect-BToGNfm-.js +0 -81
  1189. package/dist/cli/io-CFzJVJ68.js +0 -37
  1190. package/dist/cli/jsonc-BUniUpOk.js +0 -2
  1191. package/dist/cli/keys-CJhtIxJ3.js +0 -85
  1192. package/dist/cli/metadata-DSRKCaf-.js +0 -133
  1193. package/dist/cli/openapi-DWa4Ir1q.js +0 -60
  1194. package/dist/cli/project-DZRaBaY7.js +0 -75
  1195. package/dist/cli/prompts-BdeVmVpg.js +0 -2
  1196. package/dist/cli/prompts-DZJB1nTw.js +0 -1142
  1197. package/dist/cli/read-sets-DjJrm8Wj.js +0 -223
  1198. package/dist/cli/rolldown-runtime-CMFfr-1z.js +0 -26
  1199. package/dist/cli/run-DA6_lg3w.js +0 -389
  1200. package/dist/cli/run-DuN1MX-7.js +0 -705
  1201. package/dist/cli/scaffold-5DenHSxF.js +0 -292
  1202. package/dist/cli/scaffold-CwQUMFRb.js +0 -2
  1203. package/dist/cli/seed-CzBmrGON.js +0 -96
  1204. package/dist/cli/seed-DOmit9Hq.js +0 -2
  1205. package/dist/cli/skills-CnO8QFS7.js +0 -139
  1206. package/dist/cli/snapshot-Bstk6ulj.js +0 -287
  1207. package/dist/cli/source-args-BYfq6imV.js +0 -31
  1208. package/dist/cli/spec-CzosTYm3.js +0 -7438
  1209. package/dist/cli/spec-T_0Bcyw7.js +0 -2
  1210. package/dist/cli/sql-BKOOQAX3.js +0 -517
  1211. package/dist/cli/sql-DJrNDxQm.js +0 -3
  1212. package/dist/cli/sql-layout-D6cphHT3.js +0 -69
  1213. package/dist/cli/style-CB3vxgh0.js +0 -29
  1214. package/dist/cli/supabase-toml-B-bIukQF.js +0 -1095
  1215. package/dist/cli/typegen-Demi5-VQ.js +0 -486
  1216. package/dist/cli/typegen-version-DeFbtzYI.js +0 -8
  1217. package/dist/cli/validate-Ca13ktgz.js +0 -7522
  1218. package/dist/cli/version-B4k0aUxS.js +0 -4
  1219. package/dist/client-wxeTQFtB.js +0 -310
  1220. package/dist/cloud-event-Dune0KI7.d.ts +0 -64
  1221. package/dist/compiler-V1qvcST1.d.ts +0 -14
  1222. package/dist/compose-BHej1acw.js +0 -53
  1223. package/dist/composite-CWAJTRBF.d.ts +0 -146
  1224. package/dist/composite-zTe0TCqj.js +0 -130
  1225. package/dist/config-DlKvtt95.js +0 -540
  1226. package/dist/connector-CySQEFcW.d.ts +0 -107
  1227. package/dist/connectors--PGhmiu0.d.ts +0 -120
  1228. package/dist/context-DsV2SueA.d.ts +0 -246
  1229. package/dist/context-nPDvQ-Zl.js +0 -41
  1230. package/dist/cron-D25Ukpxy.js +0 -145
  1231. package/dist/cron-route-D2AN9SA1.js +0 -24
  1232. package/dist/csv-BZnHA1Py.js +0 -25
  1233. package/dist/define-CFQcvM20.js +0 -1949
  1234. package/dist/define-DmcfoNXB.d.ts +0 -1005
  1235. package/dist/embeddings-4ZvFzjsU.js +0 -127
  1236. package/dist/embeddings-B4vhS-dY.d.ts +0 -68
  1237. package/dist/ended-CcvcRqEd.d.ts +0 -69
  1238. package/dist/entitlements-BYFf0Cdh.js +0 -24
  1239. package/dist/entitlements-Ds8qoYZ-.d.ts +0 -51
  1240. package/dist/envelope-DqnYGRw7.js +0 -47
  1241. package/dist/errors-2M6CKMP4.js +0 -271
  1242. package/dist/errors-rZ7VIqp6.js +0 -44
  1243. package/dist/escape-like-DDWoHzh_.d.ts +0 -15
  1244. package/dist/eve-CoAIcCkq.d.ts +0 -151
  1245. package/dist/events-D1BOCll8.d.ts +0 -551
  1246. package/dist/executor-B-fD7DLt.js +0 -735
  1247. package/dist/executor-B_Hfobee.js +0 -162
  1248. package/dist/executor-C-R4pucm.js +0 -83
  1249. package/dist/executor-CpxLPCiz.d.ts +0 -36
  1250. package/dist/executor-DfEtf0cq.d.ts +0 -164
  1251. package/dist/executor-Drzu3dBK.d.ts +0 -261
  1252. package/dist/executor-ngjKL_Pe.d.ts +0 -30
  1253. package/dist/field-errors-DIe9XYWL.d.ts +0 -109
  1254. package/dist/format-DTXdu8ya.d.ts +0 -70
  1255. package/dist/framework-148t1m3C.d.ts +0 -25
  1256. package/dist/framework-3ey3QmrO.js +0 -51
  1257. package/dist/function-contract-BcZenXMO.d.ts +0 -8
  1258. package/dist/gateway-S9vicgeo.d.ts +0 -130
  1259. package/dist/graph-BGyLLFLX.js +0 -265
  1260. package/dist/hooks-Bhza9Hnr.js +0 -277
  1261. package/dist/http-sbmBe5d2.js +0 -25
  1262. package/dist/impersonation-DcqaTBHx.js +0 -148
  1263. package/dist/inbox-Cd1KCEBL.d.ts +0 -384
  1264. package/dist/index-B72Rvv_j.d.ts +0 -89
  1265. package/dist/index-BCHR4Ucl.d.ts +0 -300
  1266. package/dist/index-BUK7jUzR.d.ts +0 -82
  1267. package/dist/index-Ba1SI-uO.d.ts +0 -1331
  1268. package/dist/index-BfxOaOYs.d.ts +0 -245
  1269. package/dist/index-CicIyqOe.d.ts +0 -55
  1270. package/dist/index-D69h4QqD.d.ts +0 -74
  1271. package/dist/index-DG2SUXDQ.d.ts +0 -58
  1272. package/dist/index-DoNVLHOU.d.ts +0 -206
  1273. package/dist/index-R274XFlg.d.ts +0 -138
  1274. package/dist/index-_4R4b01v.d.ts +0 -257
  1275. package/dist/json-schema-CT4tvrkA.js +0 -548
  1276. package/dist/kit-BhHr9T9v.js +0 -104
  1277. package/dist/kit-W99LCPBS.d.ts +0 -66
  1278. package/dist/knowledge-CAReFpRA.d.ts +0 -176
  1279. package/dist/knowledge-DnHtb64A.js +0 -256
  1280. package/dist/list-query-D3JQeEL7.d.ts +0 -164
  1281. package/dist/list-query-gl808ac1.js +0 -459
  1282. package/dist/live-CTAZQkwl.js +0 -257
  1283. package/dist/messages-CJoHHCWT.js +0 -514
  1284. package/dist/mfa-SZc9YYyb.d.ts +0 -54
  1285. package/dist/model-OgBxvk3N.d.ts +0 -300
  1286. package/dist/model-messages-Cxw_Up4f.js +0 -206
  1287. package/dist/modules-DksjZyMW.js +0 -77
  1288. package/dist/modules-DpPwzC7E.d.ts +0 -192
  1289. package/dist/onboarding-LZvlK1P4.d.ts +0 -62
  1290. package/dist/optional-peer-D1pi-skw.js +0 -24
  1291. package/dist/outbox-DZfAvfzC.d.ts +0 -161
  1292. package/dist/plugin-CPK2HsbY.d.ts +0 -190
  1293. package/dist/pool-gkhbGp2E.d.ts +0 -89
  1294. package/dist/postgrest-BUqLag2Q.d.ts +0 -53
  1295. package/dist/problem-CJvFeGu7.js +0 -126
  1296. package/dist/problem-TvGdxO1t.d.ts +0 -73
  1297. package/dist/provider-DxRTex4x.js +0 -57
  1298. package/dist/provider-ib9wzUDz.d.ts +0 -113
  1299. package/dist/rate-limit-Bw7HgmFj.js +0 -260
  1300. package/dist/react-Bmpo59D7.js +0 -409
  1301. package/dist/react-topic-seAWjL3_.js +0 -38
  1302. package/dist/read-set-DAeWhqPf.js +0 -314
  1303. package/dist/refusal-CFI8-5nf.d.ts +0 -18
  1304. package/dist/refusal-K78A1Vmq.js +0 -61
  1305. package/dist/replicas-CwrYp5Zj.js +0 -94
  1306. package/dist/resolve-Bvgf3ut_.js +0 -786
  1307. package/dist/resolve-MxXVWyhd.d.ts +0 -173
  1308. package/dist/resource--vTrBe6I.d.ts +0 -103
  1309. package/dist/resource-BqNqlYg9.js +0 -91
  1310. package/dist/resource-DA811u_4.js +0 -463
  1311. package/dist/resource-execute-rbKvuCsY.d.ts +0 -12
  1312. package/dist/resource-types-CqB6GWGT.d.ts +0 -141
  1313. package/dist/resources-BVYPnuLo.js +0 -56
  1314. package/dist/resources-DZSk8tXJ.d.ts +0 -7
  1315. package/dist/respond-Cw-zanCm.d.ts +0 -93
  1316. package/dist/respond-volM3ByS.js +0 -91
  1317. package/dist/result-BchM1XZn.d.ts +0 -288
  1318. package/dist/result-DEqHCMKP.js +0 -128
  1319. package/dist/scope-CDHcS7dE.js +0 -90
  1320. package/dist/search-CUWCRYKL.js +0 -9
  1321. package/dist/server-types-CrAmZ8jv.d.ts +0 -614
  1322. package/dist/session-ChiXDZdZ.d.ts +0 -72
  1323. package/dist/shared-CBxosKK3.js +0 -75
  1324. package/dist/shared-DHjhfRdV.js +0 -60
  1325. package/dist/shared-DTneRoxi.js +0 -14
  1326. package/dist/sign-in-D_yoP0PF.js +0 -86
  1327. package/dist/signatures-BRS_p3WD.d.ts +0 -34
  1328. package/dist/signatures-DsWv_bYR.js +0 -103
  1329. package/dist/signers-cpdmZYrv.d.ts +0 -166
  1330. package/dist/spec-pins-CwzDY25w.d.ts +0 -44
  1331. package/dist/spec-pins-DsLfUH7l.js +0 -40
  1332. package/dist/sql-CwuqaQ4Y.js +0 -388
  1333. package/dist/standard-DkzZUneg.js +0 -25
  1334. package/dist/standard-lmkbOtPB.d.ts +0 -7
  1335. package/dist/stats-DhU78Ctf.js +0 -1127
  1336. package/dist/storage-api-CB7Zl1Ci.d.ts +0 -582
  1337. package/dist/store-DsIYEBnv.d.ts +0 -68
  1338. package/dist/stripe-D04h-QBT.d.ts +0 -136
  1339. package/dist/stripe-v-Y2lmop.js +0 -32
  1340. package/dist/supabase-mcp-Cpn5A4i-.js +0 -28
  1341. package/dist/support-D1pFFouF.js +0 -350
  1342. package/dist/support-view-scqMgtOo.d.ts +0 -17
  1343. package/dist/table-schema-htM_SbCW.js +0 -286
  1344. package/dist/tags-BO9LjtWG.d.ts +0 -30
  1345. package/dist/tee-Cb98Vn3b.js +0 -101
  1346. package/dist/template-lPVh-EwW.js +0 -123
  1347. package/dist/temporal-BJGitm-h.js +0 -79
  1348. package/dist/temporal-required-BtynQtM-.js +0 -20
  1349. package/dist/tenant-CM368LXb.d.ts +0 -17
  1350. package/dist/tenant-I1TEZ_BX.js +0 -27
  1351. package/dist/timing-CyTQPubY.js +0 -92
  1352. package/dist/types-6cYK9pbJ.js +0 -29
  1353. package/dist/types-Bb_4-vdW.d.ts +0 -220
  1354. package/dist/types-CD6yCDx3.d.ts +0 -359
  1355. package/dist/types-CbOUc5IH.d.ts +0 -156
  1356. package/dist/types-CoE5Zwy4.d.ts +0 -348
  1357. package/dist/types-DSJ3-m9X.d.ts +0 -192
  1358. package/dist/types-D__3EN0q.d.ts +0 -425
  1359. package/dist/usage-D0NNUFfr.d.ts +0 -177
  1360. package/dist/vault-BpmApxxW.d.ts +0 -50
  1361. package/dist/verify-C91Wyp40.d.ts +0 -142
  1362. package/dist/verify-CJbYfADA.js +0 -124
  1363. package/dist/version-Cq8gfDbd.js +0 -4
  1364. package/dist/view-D5ryq3gz.js +0 -99
  1365. package/dist/view-TpXEUcVN.d.ts +0 -87
  1366. package/dist/watch-BcvtAHOd.js +0 -122
  1367. package/dist/watch-COzRWvVN.d.ts +0 -74
  1368. package/dist/wire-Df3EWkG8.js +0 -45
  1369. package/dist/workflow-builder-CHqHpAVt.js +0 -399
  1370. package/dist/workflow-sdk-C2WJ_G2O.js +0 -173
  1371. package/dist/workflow-sdk-DTZyrvNo.d.ts +0 -98
  1372. package/dist/workflow-sdk-world-CMV1ahFW.js +0 -1399
  1373. package/dist/workflows-CcpCBfIe.d.ts +0 -185
  1374. package/dist/workflows-IvxzG2cl.js +0 -217
@@ -1,1399 +0,0 @@
1
- import { a as sqlString, i as sqlIdent } from "./template-lPVh-EwW.js";
2
- //#region src/sql/shared.ts
3
- /** What `record` and the other statement helpers return when there is nothing to do. */
4
- const NOTHING = "null;";
5
- /** `alter table ... add column if not exists` for each extra column of a managed table. */
6
- const addExtraColumns = (table, columns) => columns.map((column) => `\nalter table ${table} add column if not exists ${column.ident} ${column.type};`).join("");
7
- /**
8
- * A `jsonb` object of `columns` of row `alias`, keyed by column name, so
9
- * reads return extra columns without exposing the rest of the row.
10
- */
11
- const columnsObject = (alias, columns) => `jsonb_build_object(${columns.map((name) => `${sqlString(name)}, ${alias}.${sqlIdent(name)}`).join(", ")})`;
12
- const SCHEMA = `create schema if not exists better_supabase;
13
- grant usage on schema better_supabase to anon, authenticated, service_role;`;
14
- /**
15
- * A SQL condition true for the service role and for a direct admin
16
- * connection (no JWT, a privileged session user), which may act for others.
17
- */
18
- const SERVICE_CALLER = "coalesce(nullif((select auth.jwt()) ->> 'role', ''), session_user::text) in ('service_role', 'postgres', 'supabase_admin')";
19
- /**
20
- * The `organization.member_added` record for a module that adds a member, so
21
- * every module writes the same payload. Each value is a SQL expression.
22
- */
23
- function memberAddedRecord(ctx, member) {
24
- return ctx.record({
25
- type: "organization.member_added",
26
- payload: `jsonb_build_object('organizationId', ${member.tenant}::text, 'userId', ${member.user}, 'role', ${member.role})`,
27
- subject: `'organizations/' || ${member.tenant}::text`,
28
- tenant: member.tenant,
29
- audit: {
30
- category: "membership",
31
- targetType: "user",
32
- recordId: `${member.user}::text`
33
- }
34
- });
35
- }
36
- /** Creates the module's schema when it isn't `better_supabase`, then the module schema. */
37
- function schemaPreamble(ctx) {
38
- if (ctx.schemaName === "better_supabase") return SCHEMA;
39
- return `${SCHEMA}
40
- create schema if not exists ${ctx.schema};
41
- grant usage on schema ${ctx.schema} to anon, authenticated, service_role;`;
42
- }
43
- /**
44
- * A policy condition for "the caller holds `permission` in this row's
45
- * tenant". Postgres never inlines `can()` (it is `security definer`), so a
46
- * `can('tenant', column, ...)` in `using` runs once per row and can't use the
47
- * tenant index; the `tenant_ids_with` set runs once per statement.
48
- */
49
- function tenantIn(tenant, permission) {
50
- return `${tenant} in (select better_supabase.tenant_ids_with(${permission}))`;
51
- }
52
- /** A claim from the top level of the token, then `app_metadata`. */
53
- function jwtClaim(name) {
54
- return `coalesce(auth.jwt() ->> ${sqlString(name)}, auth.jwt() -> 'app_metadata' ->> ${sqlString(name)})`;
55
- }
56
- /** `table` or `schema.table` as `[schema, table]`, in `public` without a schema. */
57
- function splitTable(name) {
58
- const parts = name.split(".");
59
- if (parts.length > 2 || parts.some((part) => part.length === 0)) throw new TypeError(`"${name}" must be "table" or "schema.table"`);
60
- return parts.length === 2 ? [parts[0], parts[1]] : ["public", parts[0]];
61
- }
62
- /** `table` or `schema.table`, quoted. */
63
- function quotedTable(name) {
64
- const [schema, table] = splitTable(name);
65
- return `${sqlIdent(schema)}.${sqlIdent(table)}`;
66
- }
67
- /** `schema.table.column` split into its quoted table and column. */
68
- function columnRef(where, value) {
69
- const parts = value.split(".");
70
- if (parts.length !== 3 || parts.some((part) => part.length === 0)) throw new TypeError(`${where} must be "schema.table.column", got "${value}"`);
71
- const [schema, table, column] = parts;
72
- return {
73
- table: `${sqlIdent(schema)}.${sqlIdent(table)}`,
74
- column: sqlIdent(column)
75
- };
76
- }
77
- const QUOTED_IDENT = /^"(.*)"$/s;
78
- /**
79
- * Replaces the check constraints on one column of a table a module created
80
- * earlier: `create table if not exists` never changes an inline check, and
81
- * its generated name follows the table's configured name. For upgrade steps.
82
- * `column` is a quoted identifier; the catalog stores the bare name.
83
- */
84
- function replaceColumnCheck(check) {
85
- const column = QUOTED_IDENT.exec(check.column)?.[1]?.replaceAll("\"\"", "\"") ?? check.column;
86
- return `do $$
87
- declare
88
- v_name name;
89
- begin
90
- for v_name in
91
- select c.conname from pg_catalog.pg_constraint c
92
- join pg_catalog.pg_attribute a on a.attrelid = c.conrelid and a.attnum = c.conkey[1]
93
- where c.conrelid = ${sqlString(check.table)}::regclass and c.contype = 'c'
94
- and cardinality(c.conkey) = 1 and a.attname = ${sqlString(column)}
95
- loop
96
- execute format('alter table %s drop constraint %I', ${sqlString(check.table)}, v_name);
97
- end loop;
98
- end;
99
- $$;
100
- alter table ${check.table} add constraint ${sqlIdent(check.name)} check (${check.expression});`;
101
- }
102
- /**
103
- * Adds a foreign key to a table a module created earlier, once: `create
104
- * table if not exists` can't add it to a table that already exists, and the
105
- * referenced table can come from a module that renders later. Existing rows
106
- * without a match leave the key unvalidated, with a warning.
107
- */
108
- function addForeignKey(fk) {
109
- return `do $$
110
- begin
111
- if not exists (
112
- select 1 from pg_constraint
113
- where conrelid = ${sqlString(fk.table)}::regclass and conname = ${sqlString(fk.name)}
114
- ) then
115
- alter table ${fk.table} add constraint ${sqlIdent(fk.name)}
116
- foreign key (${fk.column}) references ${fk.references} on delete ${fk.onDelete} not valid;
117
- begin
118
- alter table ${fk.table} validate constraint ${sqlIdent(fk.name)};
119
- exception when foreign_key_violation then
120
- raise warning '% has rows without a match, so only new rows are checked. Delete them, then run: alter table % validate constraint %',
121
- ${sqlString(fk.table)}, ${sqlString(fk.table)}, ${sqlString(fk.name)};
122
- end;
123
- end if;
124
- end;
125
- $$;`;
126
- }
127
- /**
128
- * An `updated_at` column on a managed table, kept current by the
129
- * `updated-at` module's `set_updated_at()` (the module must require it).
130
- */
131
- function updatedAt(table, column) {
132
- return `alter table ${table} add column if not exists ${column} timestamptz not null default now();
133
- drop trigger if exists bs_updated_at on ${table};
134
- create trigger bs_updated_at before update on ${table}
135
- for each row execute function better_supabase.set_updated_at(${sqlString(column.replaceAll("\"", ""))});`;
136
- }
137
- function renameSql(renames) {
138
- const schema = sqlString(renames.schema);
139
- const q = (name) => `${sqlIdent(renames.schema)}.${sqlIdent(name)}`;
140
- const lines = [];
141
- let table = renames.table;
142
- for (const [from, to] of renames.tables ?? []) {
143
- lines.push(` if to_regclass(${sqlString(`${renames.schema}.${from}`)}) is not null
144
- and (select c.relkind from pg_class c where c.oid = to_regclass(${sqlString(`${renames.schema}.${from}`)})) in ('r', 'p')
145
- and to_regclass(${sqlString(`${renames.schema}.${to}`)}) is null then
146
- alter table ${q(from)} rename to ${sqlIdent(to)};
147
- end if;`);
148
- if (from === table) table = to;
149
- }
150
- for (const [from, to] of renames.columns ?? []) lines.push(` if exists (select 1 from information_schema.columns c
151
- where c.table_schema = ${schema} and c.table_name = ${sqlString(table)} and c.column_name = ${sqlString(from)})
152
- and not exists (select 1 from information_schema.columns c
153
- where c.table_schema = ${schema} and c.table_name = ${sqlString(table)} and c.column_name = ${sqlString(to)}) then
154
- alter table ${q(table)} rename column ${sqlIdent(from)} to ${sqlIdent(to)};
155
- end if;`);
156
- for (const [from, to] of renames.indexes ?? []) lines.push(` if to_regclass(${sqlString(`${renames.schema}.${from}`)}) is not null
157
- and to_regclass(${sqlString(`${renames.schema}.${to}`)}) is null then
158
- alter index ${q(from)} rename to ${sqlIdent(to)};
159
- end if;`);
160
- for (const [from, to, args] of renames.functions ?? []) lines.push(` if to_regprocedure(${sqlString(`${renames.schema}.${from}(${args})`)}) is not null
161
- and to_regprocedure(${sqlString(`${renames.schema}.${to}(${args})`)}) is null then
162
- alter function ${q(from)}(${args}) rename to ${sqlIdent(to)};
163
- end if;`);
164
- if (lines.length === 0) return "";
165
- return `do $$
166
- begin
167
- ${lines.join("\n")}
168
- end;
169
- $$;`;
170
- }
171
- /**
172
- * A SQL condition true when `organization` names no row of the installed
173
- * organizations table. False without the organizations module.
174
- */
175
- function organizationMissing(ctx, organization) {
176
- if (!ctx.installed("organizations")) return "false";
177
- const organizations = ctx.of("organizations");
178
- return `not exists (select 1 from ${organizations.table("organizations")} o where o.${organizations.col("organizations", "id")} = ${organization})`;
179
- }
180
- function membershipDisabledAt(ctx) {
181
- if (ctx.module !== "tenant" && !ctx.installed("tenant")) return void 0;
182
- const tenant = ctx.module === "tenant" ? ctx : ctx.of("tenant");
183
- if (!tenant.has("memberships", "disabledAt")) return void 0;
184
- if (!tenant.manages && typeof tenant.config.columns["memberships"]?.["disabledAt"] !== "string") return void 0;
185
- return tenant.col("memberships", "disabledAt");
186
- }
187
- function activeMembership(ctx, alias) {
188
- const column = membershipDisabledAt(ctx);
189
- return column === void 0 ? "" : ` and ${alias}.${column} is null`;
190
- }
191
- function membershipSuspended(ctx, tenant, user) {
192
- const column = membershipDisabledAt(ctx);
193
- if (column === void 0) return void 0;
194
- const t = ctx.module === "tenant" ? ctx : ctx.of("tenant");
195
- return `exists (select 1 from ${t.table("memberships")} sm where sm.${t.col("memberships", "tenant")} = ${tenant} and sm.${t.col("memberships", "user")} = ${user} and sm.${column} is not null)`;
196
- }
197
- /**
198
- * `tenant_disabled(id)` and `user_disabled(uuid)` from
199
- * `sql.modules.access.disabled`. Without a column they return false, so callers
200
- * don't need to know whether it is configured.
201
- */
202
- function disabledHelpers(ctx) {
203
- const disabled = ctx.modules.access?.disabled ?? {};
204
- const id = ctx.idType;
205
- const organizations = managedOrganizations(ctx);
206
- let tenantCheck = "false";
207
- if (disabled.tenant !== void 0) tenantCheck = disabledCheck("sql.modules.access.disabled.tenant", disabled.tenant, {
208
- key: "\"id\"",
209
- alias: "t",
210
- value: "tenant_disabled.tenant"
211
- });
212
- else if (organizations) tenantCheck = `exists (select 1 from ${organizations.table} t where t.${organizations.id} = tenant_disabled.tenant and (${organizations.flags.map((column) => `t.${column} is not null`).join(" or ")}))`;
213
- const userCheck = disabled.user === void 0 ? "false" : disabledCheck("sql.modules.access.disabled.user", disabled.user, {
214
- key: sqlIdent(disabled.userKey ?? "id"),
215
- alias: "u",
216
- value: "user_disabled.user_id"
217
- });
218
- return `
219
- -- Disabled tenants and users get no permissions and no membership claims
220
- -- (modules.access.disabled; with the managed organizations module, its
221
- -- disabled_at and deleted_at columns).
222
- create or replace function better_supabase.tenant_disabled(tenant ${id})
223
- returns boolean
224
- language sql
225
- stable
226
- security definer
227
- set search_path = ''
228
- as $$
229
- select ${tenantCheck}
230
- $$;
231
-
232
- create or replace function better_supabase.user_disabled(user_id uuid)
233
- returns boolean
234
- language sql
235
- stable
236
- security definer
237
- set search_path = ''
238
- as $$
239
- select ${userCheck}
240
- $$;
241
-
242
- revoke execute on function better_supabase.tenant_disabled(${id}) from public, anon, authenticated;
243
- revoke execute on function better_supabase.user_disabled(uuid) from public, anon, authenticated;
244
- grant execute on function better_supabase.tenant_disabled(${id}) to service_role, supabase_auth_admin;
245
- grant execute on function better_supabase.user_disabled(uuid) to service_role, supabase_auth_admin;`;
246
- }
247
- /**
248
- * Whether `disabledHelpers` reads the managed organizations table, which a
249
- * later file creates: the caller turns `check_function_bodies` off around it.
250
- */
251
- /**
252
- * The condition that `value` is disabled: a set column (`schema.table.column`,
253
- * matched on `key`), or no active row (an authorization provider's
254
- * suspension row, where a missing row counts as disabled).
255
- */
256
- function disabledCheck(where, config, match) {
257
- const { alias: d, value } = match;
258
- if (typeof config === "string") {
259
- const ref = columnRef(where, config);
260
- return `exists (select 1 from ${ref.table} ${d} where ${d}.${match.key} = ${value} and ${d}.${ref.column} is not null)`;
261
- }
262
- const parts = config.table.split(".");
263
- if (parts.length !== 2 || parts.some((part) => part.length === 0)) throw new TypeError(`${where}.table must be "schema.table", got "${config.table}"`);
264
- const active = [`${d}.${sqlIdent(config.id)} = ${value}`];
265
- if (config.disabledAt !== void 0) active.push(`${d}.${sqlIdent(config.disabledAt)} is null`);
266
- if (config.status !== void 0) {
267
- if (!config.active || config.active.length === 0) throw new TypeError(`${where}.status needs the active values in active`);
268
- active.push(`${d}.${sqlIdent(config.status)}::text in (${config.active.map(sqlString).join(", ")})`);
269
- }
270
- if (config.disabledAt === void 0 && config.status === void 0) throw new TypeError(`${where} needs disabledAt, status or both`);
271
- return `not exists (select 1 from ${parts.map((part) => sqlIdent(part)).join(".")} ${d} where ${active.join(" and ")})`;
272
- }
273
- /**
274
- * Whether the `access` module's file defines `tenant_disabled` and
275
- * `user_disabled`: it does whenever it is installed (or configured) outside
276
- * custom mode, and the `tenant` module's file then leaves them out, so each
277
- * function is defined in one file.
278
- */
279
- function accessDefinesDisabledHelpers(ctx) {
280
- const access = ctx.modules.access;
281
- if (!ctx.installed("access") && access === void 0) return false;
282
- return (access?.mode ?? "managed") !== "custom";
283
- }
284
- function disabledHelpersNeedLaterTables(ctx) {
285
- return !ctx.modules.access?.disabled?.tenant && managedOrganizations(ctx) !== void 0;
286
- }
287
- /** The managed organizations table and its disabling columns, when installed and managed. */
288
- function managedOrganizations(ctx) {
289
- if (!ctx.installed("organizations")) return void 0;
290
- const organizations = ctx.of("organizations");
291
- if (!organizations.manages) return void 0;
292
- const flags = ["disabledAt", "deletedAt"].filter((logical) => organizations.has("organizations", logical)).map((logical) => organizations.col("organizations", logical));
293
- if (flags.length === 0) return void 0;
294
- return {
295
- table: organizations.table("organizations"),
296
- id: organizations.col("organizations", "id"),
297
- flags
298
- };
299
- }
300
- /**
301
- * Another row trigger on `target` whose function name matches `pattern` does
302
- * the module trigger's job twice. `track_*` warns about it, or drops it with
303
- * `replace_trigger => true`.
304
- */
305
- const EQUIVALENT_TRIGGERS = `
306
- create or replace function better_supabase.replace_equivalent_triggers(
307
- target regclass,
308
- module_trigger text,
309
- pattern text,
310
- replace_trigger boolean
311
- )
312
- returns void
313
- language plpgsql
314
- set search_path = ''
315
- as $$
316
- declare
317
- found record;
318
- begin
319
- for found in
320
- select t.tgname as name, p.proname as fn
321
- from pg_catalog.pg_trigger t
322
- join pg_catalog.pg_proc p on p.oid = t.tgfoid
323
- where t.tgrelid = replace_equivalent_triggers.target
324
- and not t.tgisinternal
325
- and t.tgname <> replace_equivalent_triggers.module_trigger
326
- and p.proname ~* replace_equivalent_triggers.pattern
327
- loop
328
- if replace_trigger then
329
- execute format('drop trigger %I on %s', found.name, target);
330
- else
331
- raise warning '% already has trigger % (%), which does what % does. Pass replace_trigger => true to drop it.',
332
- target, found.name, found.fn, module_trigger;
333
- end if;
334
- end loop;
335
- end;
336
- $$;
337
- revoke execute on function better_supabase.replace_equivalent_triggers(regclass, text, text, boolean) from public, anon, authenticated;`;
338
- /** FNV-1a, as 8 hex digits: a stable suffix that keeps two names apart. */
339
- function shortHash(text) {
340
- let hash = 2166136261;
341
- for (let index = 0; index < text.length; index += 1) {
342
- hash ^= text.codePointAt(index) ?? 0;
343
- hash = Math.imul(hash, 16777619) >>> 0;
344
- }
345
- return hash.toString(16).padStart(8, "0");
346
- }
347
- /**
348
- * Adds CHECK `name` on `table` (quoted) unless a re-run finds it already
349
- * checking `expression`: the constraint comment records a hash of the
350
- * expression, so an unchanged check skips the table scan under ACCESS
351
- * EXCLUSIVE. `notValid` leaves existing rows unchecked.
352
- */
353
- function ensureCheck(table, name, expression, options = {}) {
354
- const marker = sqlString(`better-supabase check ${shortHash(`${expression}|${options.notValid === true}`)}`);
355
- const constraint = sqlIdent(name);
356
- return `do $$
357
- begin
358
- if coalesce(obj_description((
359
- select c.oid from pg_catalog.pg_constraint c
360
- where c.conrelid = ${sqlString(table)}::regclass and c.conname = ${sqlString(name)}
361
- ), 'pg_constraint'), '') <> ${marker} then
362
- alter table ${table} drop constraint if exists ${constraint};
363
- alter table ${table} add constraint ${constraint} check (${expression})${options.notValid === true ? " not valid" : ""};
364
- comment on constraint ${constraint} on ${table} is ${marker};
365
- end if;
366
- end;
367
- $$;`;
368
- }
369
- /**
370
- * The constraint and trigger name of a check. A key that sanitizing or the
371
- * 63-byte limit would change (`notify.email`, `notify-email`, a long key)
372
- * gets a hash of the key, so two keys never share a name and drop each
373
- * other's check.
374
- */
375
- function jsonCheckName(check) {
376
- const base = `bs_json_${check.column}`;
377
- if (!check.where) return base.slice(0, 63);
378
- const key = check.where.value;
379
- const clean = key.replaceAll(/[^a-z0-9_]/gi, "_");
380
- const plain = `${base}_${clean}`;
381
- if (clean === key && plain.length <= 63) return plain;
382
- return `${plain.slice(0, 54)}_${shortHash(key)}`;
383
- }
384
- function jsonSchemaChecks(checks) {
385
- if (checks.length === 0) return "";
386
- return `\n-- config.json schemas
387
- -- Each check is added not valid and validated separately. On a large table,
388
- -- move the validate statements to a later migration: adding a not valid check
389
- -- blocks writes only briefly, and validating takes a lock that lets writes
390
- -- continue. The trigger of the same name reports which part of the schema failed.
391
- ${checks.map((check) => {
392
- const target = quotedTable(check.table);
393
- const name = sqlIdent(jsonCheckName(check));
394
- const schemaText = sqlString(JSON.stringify(check.schema));
395
- const matches = `extensions.jsonb_matches_schema(${schemaText}::json, ${sqlIdent(check.column)})`;
396
- const columns = check.where ? `${sqlIdent(check.column)}, ${sqlIdent(check.where.column)}` : sqlIdent(check.column);
397
- const args = [
398
- sqlString(check.column),
399
- schemaText,
400
- ...check.where ? [sqlString(check.where.column), sqlString(check.where.value)] : []
401
- ].join(", ");
402
- return [
403
- `alter table ${target} drop constraint if exists ${name};`,
404
- `alter table ${target} add constraint ${name}`,
405
- ` check (${check.where ? `${sqlIdent(check.where.column)} <> ${sqlString(check.where.value)} or ` : ""}${matches}) not valid;`,
406
- `alter table ${target} validate constraint ${name};`,
407
- `drop trigger if exists ${name} on ${target};`,
408
- `create trigger ${name} before insert or update of ${columns} on ${target}`,
409
- ` for each row execute function better_supabase.check_json_schema(${args});`
410
- ].join("\n");
411
- }).join("\n\n")}\n`;
412
- }
413
- /** SQL that grants a function to signed-in users and the service role. */
414
- const userGrant = (signature) => `revoke execute on function ${signature} from public, anon;
415
- grant execute on function ${signature} to authenticated, service_role;`;
416
- /** SQL that grants a function to the service role only. */
417
- const serviceGrant = (signature) => `revoke execute on function ${signature} from public, anon, authenticated;
418
- grant execute on function ${signature} to service_role;`;
419
- /**
420
- * `serviceGrant` for each function in `schema` (as SQL, e.g. `ctx.schema`),
421
- * one statement per function, so `sql.modules.<module>.api` sees the grants
422
- * and writes an entry point for each.
423
- */
424
- function serviceOnly(signatures, schema = "better_supabase") {
425
- return signatures.map((signature) => serviceGrant(`${schema}.${signature}`)).join("\n");
426
- }
427
- /** `raise exception` with an errcode and a hint the TypeScript side maps. */
428
- const raise = (message, errcode, hint, ...args) => `raise exception ${sqlString(message)}${args.map((arg) => `, ${arg}`).join("")} using errcode = '${errcode}', hint = '${hint}';`;
429
- /** `raise` for a module function: the hint first, the errcode defaulting to insufficient privilege. */
430
- const fail = (code, message, errcode = "42501") => raise(message, errcode, code);
431
- /** `coalesce(can('tenant', tenant, permission), false)`. */
432
- const canIn = (tenant, permission) => `coalesce(better_supabase.can('tenant', ${tenant}, ${permission}), false)`;
433
- /** The hex SHA-256 of a `text` expression, as tokens and codes are stored. */
434
- const sha256Hex = (value) => `encode(extensions.digest(${value}, 'sha256'), 'hex')`;
435
- /** A page size: `value`, or `fallback` when null, clamped to `min`..`max`. */
436
- const pageSize = (value, fallback, max, min = 1) => `least(greatest(coalesce(${value}, ${String(fallback)}), ${String(min)}), ${String(max)})`;
437
- /**
438
- * A row trigger that records writes to a table that callers change through
439
- * `security invoker` functions or policies, which can't call `emit_event` or
440
- * `audit_event` themselves. `written` and `removed` are `ctx.record`
441
- * statements over `v_row`, the new row (or the old one on delete). When
442
- * both are `null;` the trigger and its function are dropped.
443
- */
444
- function recordTrigger(ctx, options) {
445
- const fn = ctx.fn(options.name);
446
- const trigger = ctx.trigger(options.name);
447
- if (options.written === "null;" && options.removed === "null;") return `drop trigger if exists ${trigger} on ${options.table};
448
- drop function if exists ${fn}();`;
449
- return `create or replace function ${fn}()
450
- returns trigger
451
- language plpgsql
452
- security definer
453
- set search_path = ''
454
- as $$
455
- declare
456
- v_row ${options.table};
457
- begin
458
- if tg_op = 'DELETE' then
459
- v_row := old;
460
- ${options.removed}
461
- else
462
- v_row := new;
463
- ${options.written}
464
- end if;
465
- return null;
466
- end;
467
- $$;
468
- revoke execute on function ${fn}() from public, anon, authenticated;
469
- drop trigger if exists ${trigger} on ${options.table};
470
- create trigger ${trigger} after insert or update or delete on ${options.table}
471
- for each row execute function ${fn}();`;
472
- }
473
- //#endregion
474
- //#region src/sql/modules/access-model.ts
475
- /**
476
- * The `roles` model's defaults. Module actions name these keys (see
477
- * `MODULE_PERMISSIONS`); `*` grants everything and `prefix.*` a prefix.
478
- */
479
- const DEFAULT_ROLES = {
480
- owner: ["*"],
481
- admin: [
482
- "organization.read",
483
- "organization.update",
484
- "members.*",
485
- "audit.read",
486
- "webhooks.*",
487
- "notifications.*",
488
- "billing.*",
489
- "api_keys.*",
490
- "settings.*",
491
- "usage.*",
492
- "comments.*",
493
- "activity.read",
494
- "attachments.*",
495
- "organization.export",
496
- "onboarding.*",
497
- "inbox.*",
498
- "ai_chat.*",
499
- "ai.*"
500
- ],
501
- member: [
502
- "organization.read",
503
- "members.read",
504
- "notifications.read",
505
- "api_keys.own",
506
- "settings.read",
507
- "comments.read",
508
- "comments.create",
509
- "activity.read",
510
- "attachments.read",
511
- "attachments.upload",
512
- "onboarding.read",
513
- "inbox.read",
514
- "inbox.reply",
515
- "ai_chat.read",
516
- "ai_chat.create",
517
- "ai_chat.share",
518
- "ai.read",
519
- "ai.create",
520
- "ai.share"
521
- ],
522
- viewer: ["organization.read"]
523
- };
524
- /**
525
- * The permission key each module action checks by default, overridable per
526
- * module in `sql.modules.<name>.permissions`. Keys are `<area>.<verb>`, with `read`
527
- * for viewing; platform-wide actions use the `platform` area or a key that
528
- * `is_platform()` checks. The AI blocks other than ai-chat check `ai.*` keys.
529
- */
530
- const MODULE_PERMISSIONS = {
531
- organizations: {
532
- update: "organization.update",
533
- delete: "organization.delete",
534
- removeMember: "members.remove",
535
- suspendMember: "members.remove",
536
- updateRole: "members.update_role",
537
- transferOwnership: "organization.transfer_ownership"
538
- },
539
- invitations: {
540
- invite: "members.invite",
541
- revoke: "members.invite",
542
- view: "members.invite",
543
- invitePlatform: "platform.invite"
544
- },
545
- audit: {
546
- view: "audit.read",
547
- viewAll: "audit.read"
548
- },
549
- "support-sessions": {
550
- start: "support.start",
551
- view: "support.read",
552
- revoke: "support.revoke"
553
- },
554
- notifications: {
555
- send: "notifications.send",
556
- read: "notifications.read"
557
- },
558
- "webhooks-out": {
559
- manage: "webhooks.manage",
560
- view: "webhooks.read"
561
- },
562
- "webhooks-in": {
563
- create: "webhooks.manage",
564
- update: "webhooks.manage",
565
- delete: "webhooks.manage",
566
- view: "webhooks.read"
567
- },
568
- "api-keys": {
569
- manage: "api_keys.manage",
570
- own: "api_keys.own"
571
- },
572
- settings: {
573
- read: "settings.read",
574
- update: "settings.update",
575
- platform: "settings.manage"
576
- },
577
- usage: {
578
- read: "usage.read",
579
- record: "usage.record"
580
- },
581
- billing: {
582
- read: "billing.read",
583
- manage: "billing.manage",
584
- viewAll: "billing.read"
585
- },
586
- comments: {
587
- read: "comments.read",
588
- create: "comments.create",
589
- moderate: "comments.moderate",
590
- activity: "activity.read"
591
- },
592
- "data-lifecycle": {
593
- export: "organization.export",
594
- delete: "organization.delete"
595
- },
596
- attachments: {
597
- read: "attachments.read",
598
- upload: "attachments.upload",
599
- manage: "attachments.manage"
600
- },
601
- sso: { manage: "sso.manage" },
602
- onboarding: {
603
- read: "onboarding.read",
604
- complete: "onboarding.complete"
605
- },
606
- announcements: { manage: "announcements.manage" },
607
- waitlist: {
608
- manage: "waitlist.manage",
609
- invite: "members.invite"
610
- },
611
- flags: { manage: "flags.manage" },
612
- workflows: {
613
- read: "workflow.read",
614
- run: "workflow.run",
615
- admin: "workflow.admin"
616
- },
617
- "workflow-builder": {
618
- read: "workflow.read",
619
- run: "workflow.run",
620
- edit: "workflow.edit",
621
- publish: "workflow.publish",
622
- admin: "workflow.admin"
623
- },
624
- inbox: {
625
- read: "inbox.read",
626
- reply: "inbox.reply",
627
- assign: "inbox.assign",
628
- manage: "inbox.manage"
629
- },
630
- "ai-chat": {
631
- read: "ai_chat.read",
632
- create: "ai_chat.create",
633
- share: "ai_chat.share",
634
- moderate: "ai_chat.moderate",
635
- admin: "ai_chat.admin"
636
- },
637
- "ai-files": {
638
- upload: "ai.create",
639
- manage: "ai.admin"
640
- },
641
- knowledge: {
642
- read: "ai.read",
643
- write: "ai.create",
644
- manage: "ai.admin"
645
- },
646
- memory: {
647
- read: "ai.read",
648
- manage: "ai.admin"
649
- },
650
- agents: {
651
- read: "ai.read",
652
- create: "ai.create",
653
- publish: "ai.share",
654
- moderate: "ai.moderate"
655
- },
656
- connectors: {
657
- read: "ai.read",
658
- use: "ai.create",
659
- manage: "ai.admin"
660
- },
661
- "ai-tasks": {
662
- create: "ai.create",
663
- manage: "ai.admin"
664
- },
665
- "ai-providers": {
666
- use: "ai.create",
667
- manage: "ai.admin"
668
- }
669
- };
670
- /**
671
- * Where each module action checks its key: `tenant` through `member_can`,
672
- * `can` or `tenant_ids_with` (a provider's `idsWith`), and `platform`
673
- * through `is_platform` or `platform_can` (a provider's `isPlatform`).
674
- */
675
- const MODULE_PERMISSION_SCOPES = {
676
- organizations: {
677
- update: "tenant",
678
- delete: "tenant",
679
- removeMember: "tenant",
680
- suspendMember: "tenant",
681
- updateRole: "tenant",
682
- transferOwnership: "tenant"
683
- },
684
- invitations: {
685
- invite: "tenant",
686
- revoke: "tenant",
687
- view: "tenant",
688
- invitePlatform: "platform"
689
- },
690
- audit: {
691
- view: "tenant",
692
- viewAll: "platform"
693
- },
694
- "support-sessions": {
695
- start: "platform",
696
- view: "platform",
697
- revoke: "platform"
698
- },
699
- notifications: {
700
- send: "tenant",
701
- read: "tenant"
702
- },
703
- "webhooks-out": {
704
- manage: "tenant",
705
- view: "tenant"
706
- },
707
- "webhooks-in": {
708
- create: "tenant",
709
- update: "tenant",
710
- delete: "tenant",
711
- view: "tenant"
712
- },
713
- "api-keys": {
714
- manage: "tenant",
715
- own: "tenant"
716
- },
717
- settings: {
718
- read: "tenant",
719
- update: "tenant",
720
- platform: "platform"
721
- },
722
- usage: {
723
- read: "tenant",
724
- record: "tenant"
725
- },
726
- billing: {
727
- read: "tenant",
728
- manage: "tenant",
729
- viewAll: "platform"
730
- },
731
- comments: {
732
- read: "tenant",
733
- create: "tenant",
734
- moderate: "tenant",
735
- activity: "tenant"
736
- },
737
- attachments: {
738
- read: "tenant",
739
- upload: "tenant",
740
- manage: "tenant"
741
- },
742
- "data-lifecycle": {
743
- export: "tenant",
744
- delete: "tenant"
745
- },
746
- sso: { manage: "tenant" },
747
- onboarding: {
748
- read: "tenant",
749
- complete: "tenant"
750
- },
751
- announcements: { manage: "platform" },
752
- waitlist: {
753
- manage: "platform",
754
- invite: "tenant"
755
- },
756
- flags: { manage: "platform" },
757
- workflows: {
758
- read: "tenant",
759
- run: "tenant",
760
- admin: "tenant"
761
- },
762
- "workflow-builder": {
763
- read: "tenant",
764
- run: "tenant",
765
- edit: "tenant",
766
- publish: "tenant",
767
- admin: "tenant"
768
- },
769
- inbox: {
770
- read: "tenant",
771
- reply: "tenant",
772
- assign: "tenant",
773
- manage: "tenant"
774
- },
775
- "ai-chat": {
776
- read: "tenant",
777
- create: "tenant",
778
- share: "tenant",
779
- moderate: "tenant",
780
- admin: "tenant"
781
- },
782
- "ai-files": {
783
- upload: "tenant",
784
- manage: "tenant"
785
- },
786
- knowledge: {
787
- read: "tenant",
788
- write: "tenant",
789
- manage: "tenant"
790
- },
791
- memory: {
792
- read: "tenant",
793
- manage: "tenant"
794
- },
795
- agents: {
796
- read: "tenant",
797
- create: "tenant",
798
- publish: "tenant",
799
- moderate: "tenant"
800
- },
801
- connectors: {
802
- read: "tenant",
803
- use: "tenant",
804
- manage: "tenant"
805
- },
806
- "ai-tasks": {
807
- create: "tenant",
808
- manage: "tenant"
809
- },
810
- "ai-providers": {
811
- use: "tenant",
812
- manage: "tenant"
813
- }
814
- };
815
- function accessModel(ctx) {
816
- return ctx.modules.access?.model ?? "roles";
817
- }
818
- function rolesOf(ctx) {
819
- return ctx.modules.access?.roles ?? DEFAULT_ROLES;
820
- }
821
- const roleNames = (ctx) => Object.keys(rolesOf(ctx));
822
- /**
823
- * The scope name tenants use in `can(scope, id, permission)`
824
- * (`sql.modules.access.options.scope`, default `organization`). `tenant` is
825
- * accepted too.
826
- */
827
- const tenantScope = (ctx) => ctx.of("access").text("scope", "organization");
828
- const isPlain = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
829
- const quotedRef = (where, table, column) => {
830
- const parts = `${table}.${column}`.split(".");
831
- if (parts.length !== 3 || parts.some((part) => !/^[A-Za-z_][A-Za-z0-9_$]*$/.test(part))) throw new TypeError(`${where}: "${table}" must be "schema.table" and "${column}" a column`);
832
- return {
833
- table: `${sqlIdent(parts[0])}.${sqlIdent(parts[1])}`,
834
- column: sqlIdent(parts[2])
835
- };
836
- };
837
- /** The `provider` model's platform role table, or `undefined` without one. */
838
- function providerPlatformRoles(ctx) {
839
- if (accessModel(ctx) !== "provider" || !ctx.installed("invitations")) return;
840
- const value = ctx.of("invitations").option("platformRoles");
841
- if (value === void 0) return void 0;
842
- const where = "sql.modules.invitations.options.platformRoles";
843
- if (!isPlain(value) || typeof value["table"] !== "string" || typeof value["user"] !== "string" || typeof value["role"] !== "string" || value["canAssign"] !== void 0 && typeof value["canAssign"] !== "string" || value["canAssignFor"] !== void 0 && (typeof value["canAssignFor"] !== "string" || !value["canAssignFor"].includes("{user}"))) throw new TypeError(`${where} must be { table: "schema.table", user: "<user column>", role: "<role column>", through?: { table, id, column }, canAssign?: "<SQL template>", canAssignFor?: "<SQL template with {user}>" }`);
844
- const user = quotedRef(where, value["table"], value["user"]);
845
- const role = quotedRef(where, value["table"], value["role"]);
846
- const through = value["through"];
847
- let lookup;
848
- if (through !== void 0) {
849
- if (!isPlain(through) || typeof through["table"] !== "string" || typeof through["id"] !== "string" || typeof through["column"] !== "string" || through["where"] !== void 0 && (typeof through["where"] !== "string" || !through["where"].includes("{row}"))) throw new TypeError(`${where}.through must be { table: "schema.table", id: "<key column>", column: "<role name column>", where?: "<condition on {row}>" }`);
850
- const id = quotedRef(`${where}.through`, through["table"], through["id"]);
851
- lookup = {
852
- table: id.table,
853
- id: id.column,
854
- column: quotedRef(`${where}.through`, through["table"], through["column"]).column,
855
- ...typeof through["where"] === "string" ? { where: through["where"] } : {}
856
- };
857
- }
858
- return {
859
- table: user.table,
860
- user: user.column,
861
- role: role.column,
862
- ...lookup ? { through: lookup } : {},
863
- ...typeof value["canAssign"] === "string" ? { canAssign: value["canAssign"] } : {},
864
- ...typeof value["canAssignFor"] === "string" ? { canAssignFor: value["canAssignFor"] } : {}
865
- };
866
- }
867
- /** Whether the catalog has platform roles, and so platform invitations. */
868
- function hasPlatformRoles(ctx) {
869
- if (providerPlatformRoles(ctx)) return true;
870
- return accessModel(ctx) === "catalog" && ctx.of("access").hasTable("platformAssignments");
871
- }
872
- /**
873
- * Whether catalog role row `alias` is a tenant or a platform role, or
874
- * `undefined` when roles carry no scope. Managed catalogs have a `scope`
875
- * column; an adopted one maps `roles.scope` and names its values in
876
- * `sql.modules.access.options.tenantRoleScope` and `platformRoleScope`.
877
- */
878
- function roleScopeIs(ctx, alias, scope) {
879
- if (accessModel(ctx) !== "catalog") return void 0;
880
- const access = ctx.of("access");
881
- if (!access.manages && access.config.columns["roles"]?.["scope"] == null) return;
882
- const value = scope === "tenant" ? access.text("tenantRoleScope", "tenant") : access.text("platformRoleScope", "platform");
883
- return `${alias}.${access.col("roles", "scope")}::text = ${sqlString(value)}`;
884
- }
885
- const MODULE_PERMISSION_SHORTHANDS = {
886
- organizations: { suspendMember: "removeMember" },
887
- invitations: {
888
- revoke: "invite",
889
- view: "invite"
890
- },
891
- audit: { viewAll: "view" },
892
- billing: { viewAll: "read" },
893
- waitlist: { invite: {
894
- module: "invitations",
895
- action: "invite"
896
- } },
897
- "webhooks-in": {
898
- create: "manage",
899
- update: "manage",
900
- delete: "manage"
901
- }
902
- };
903
- function modulePermissionKey(ctx, action, fallback) {
904
- const shorthand = MODULE_PERMISSION_SHORTHANDS[ctx.module]?.[action];
905
- if (shorthand === void 0) return ctx.permissionKey(action, fallback);
906
- const target = typeof shorthand === "string" ? modulePermissionKey(ctx, shorthand, fallback) : modulePermissionKey(ctx.of(shorthand.module), shorthand.action, fallback);
907
- return ctx.permissionKey(action, target);
908
- }
909
- const modulePermission = (ctx, action, fallback) => sqlString(modulePermissionKey(ctx, action, fallback));
910
- //#endregion
911
- //#region src/sql/modules/workflow-sdk-world-ddl.generated.ts
912
- /** The `@workflow/world-postgres` version the DDL below was generated from. */
913
- const WORLD_POSTGRES_VERSION = "5.0.2";
914
- /** The `workflow` schema after every migration above, as idempotent DDL. */
915
- const WORLD_POSTGRES_DDL = `create schema if not exists workflow;
916
-
917
- do $$ begin
918
- create type workflow.status as enum ('pending', 'running', 'completed', 'failed', 'cancelled');
919
- exception when duplicate_object then null;
920
- end $$;
921
-
922
- do $$ begin
923
- create type workflow.step_status as enum ('pending', 'running', 'completed', 'failed', 'cancelled');
924
- exception when duplicate_object then null;
925
- end $$;
926
-
927
- do $$ begin
928
- create type workflow.wait_status as enum ('waiting', 'completed');
929
- exception when duplicate_object then null;
930
- end $$;
931
-
932
- create table if not exists workflow.workflow_event_slots (
933
- "run_id" character varying not null,
934
- constraint "workflow_event_slots_pkey" PRIMARY KEY (run_id)
935
- );
936
-
937
- alter table workflow.workflow_event_slots
938
- add column if not exists "run_id" character varying not null;
939
-
940
- create table if not exists workflow.workflow_events (
941
- "id" character varying not null,
942
- "type" character varying not null,
943
- "correlation_id" character varying,
944
- "created_at" timestamp without time zone not null default now(),
945
- "run_id" character varying not null,
946
- "payload" jsonb,
947
- "payload_cbor" bytea,
948
- "spec_version" integer,
949
- "resume_id" character varying,
950
- "resume_payload_digest" character varying,
951
- constraint "workflow_events_run_id_id_pk" PRIMARY KEY (run_id, id)
952
- );
953
-
954
- alter table workflow.workflow_events
955
- add column if not exists "id" character varying not null,
956
- add column if not exists "type" character varying not null,
957
- add column if not exists "correlation_id" character varying,
958
- add column if not exists "created_at" timestamp without time zone not null default now(),
959
- add column if not exists "run_id" character varying not null,
960
- add column if not exists "payload" jsonb,
961
- add column if not exists "payload_cbor" bytea,
962
- add column if not exists "spec_version" integer,
963
- add column if not exists "resume_id" character varying,
964
- add column if not exists "resume_payload_digest" character varying;
965
-
966
- create index if not exists workflow_events_correlation_id_index ON workflow.workflow_events USING btree (correlation_id);
967
-
968
- create unique index if not exists workflow_events_entity_creation_unique ON workflow.workflow_events USING btree (run_id, correlation_id, type) WHERE ((type)::text = ANY ((ARRAY['step_created'::character varying, 'hook_created'::character varying, 'wait_created'::character varying, 'attr_set'::character varying])::text[]));
969
-
970
- create unique index if not exists workflow_events_hook_resume_unique ON workflow.workflow_events USING btree (run_id, resume_id) WHERE (((type)::text = 'hook_received'::text) AND (resume_id IS NOT NULL));
971
-
972
- create table if not exists workflow.workflow_hooks (
973
- "run_id" character varying not null,
974
- "hook_id" character varying not null,
975
- "token" character varying not null,
976
- "owner_id" character varying not null,
977
- "project_id" character varying not null,
978
- "environment" character varying not null,
979
- "created_at" timestamp without time zone not null default now(),
980
- "metadata" jsonb,
981
- "metadata_cbor" bytea,
982
- "spec_version" integer,
983
- "is_webhook" boolean default true,
984
- "is_system" boolean default false,
985
- "resume_context" bytea,
986
- "token_retention_until" timestamp with time zone,
987
- "claimed_from" bytea,
988
- constraint "workflow_hooks_pkey" PRIMARY KEY (hook_id)
989
- );
990
-
991
- alter table workflow.workflow_hooks
992
- add column if not exists "run_id" character varying not null,
993
- add column if not exists "hook_id" character varying not null,
994
- add column if not exists "token" character varying not null,
995
- add column if not exists "owner_id" character varying not null,
996
- add column if not exists "project_id" character varying not null,
997
- add column if not exists "environment" character varying not null,
998
- add column if not exists "created_at" timestamp without time zone not null default now(),
999
- add column if not exists "metadata" jsonb,
1000
- add column if not exists "metadata_cbor" bytea,
1001
- add column if not exists "spec_version" integer,
1002
- add column if not exists "is_webhook" boolean default true,
1003
- add column if not exists "is_system" boolean default false,
1004
- add column if not exists "resume_context" bytea,
1005
- add column if not exists "token_retention_until" timestamp with time zone,
1006
- add column if not exists "claimed_from" bytea;
1007
-
1008
- create index if not exists workflow_hooks_run_id_index ON workflow.workflow_hooks USING btree (run_id);
1009
-
1010
- create index if not exists workflow_hooks_token_index ON workflow.workflow_hooks USING btree (token);
1011
-
1012
- create table if not exists workflow.workflow_invocations (
1013
- "sequence" bigserial,
1014
- "run_id" character varying not null,
1015
- "request_id" character varying not null,
1016
- "payload" bytea,
1017
- "fingerprint" character varying,
1018
- "result" bytea,
1019
- "created_at" timestamp without time zone not null default now(),
1020
- "responded_at" timestamp without time zone,
1021
- "expired_at" timestamp without time zone,
1022
- "result_version" integer not null default 0,
1023
- constraint "workflow_invocations_pkey" PRIMARY KEY (run_id, request_id)
1024
- );
1025
-
1026
- alter table workflow.workflow_invocations
1027
- add column if not exists "sequence" bigserial,
1028
- add column if not exists "run_id" character varying not null,
1029
- add column if not exists "request_id" character varying not null,
1030
- add column if not exists "payload" bytea,
1031
- add column if not exists "fingerprint" character varying,
1032
- add column if not exists "result" bytea,
1033
- add column if not exists "created_at" timestamp without time zone not null default now(),
1034
- add column if not exists "responded_at" timestamp without time zone,
1035
- add column if not exists "expired_at" timestamp without time zone,
1036
- add column if not exists "result_version" integer not null default 0;
1037
-
1038
- create index if not exists workflow_invocations_pending ON workflow.workflow_invocations USING btree (run_id, sequence) WHERE (responded_at IS NULL);
1039
-
1040
- create table if not exists workflow.workflow_runs (
1041
- "id" character varying not null,
1042
- "output" jsonb,
1043
- "deployment_id" character varying not null,
1044
- "status" workflow.status not null,
1045
- "name" character varying not null,
1046
- "execution_context" jsonb,
1047
- "input" jsonb,
1048
- "error" text,
1049
- "created_at" timestamp without time zone not null default now(),
1050
- "updated_at" timestamp without time zone not null default now(),
1051
- "completed_at" timestamp without time zone,
1052
- "started_at" timestamp without time zone,
1053
- "output_cbor" bytea,
1054
- "execution_context_cbor" bytea,
1055
- "input_cbor" bytea,
1056
- "expired_at" timestamp without time zone,
1057
- "spec_version" character varying,
1058
- "error_cbor" bytea,
1059
- "error_code" character varying,
1060
- "attributes" jsonb not null default '{}'::jsonb,
1061
- "encryption_public_key" character varying,
1062
- "dynamic_workflow_code_cbor" bytea,
1063
- constraint "workflow_runs_pkey" PRIMARY KEY (id)
1064
- );
1065
-
1066
- alter table workflow.workflow_runs
1067
- add column if not exists "id" character varying not null,
1068
- add column if not exists "output" jsonb,
1069
- add column if not exists "deployment_id" character varying not null,
1070
- add column if not exists "status" workflow.status not null,
1071
- add column if not exists "name" character varying not null,
1072
- add column if not exists "execution_context" jsonb,
1073
- add column if not exists "input" jsonb,
1074
- add column if not exists "error" text,
1075
- add column if not exists "created_at" timestamp without time zone not null default now(),
1076
- add column if not exists "updated_at" timestamp without time zone not null default now(),
1077
- add column if not exists "completed_at" timestamp without time zone,
1078
- add column if not exists "started_at" timestamp without time zone,
1079
- add column if not exists "output_cbor" bytea,
1080
- add column if not exists "execution_context_cbor" bytea,
1081
- add column if not exists "input_cbor" bytea,
1082
- add column if not exists "expired_at" timestamp without time zone,
1083
- add column if not exists "spec_version" character varying,
1084
- add column if not exists "error_cbor" bytea,
1085
- add column if not exists "error_code" character varying,
1086
- add column if not exists "attributes" jsonb not null default '{}'::jsonb,
1087
- add column if not exists "encryption_public_key" character varying,
1088
- add column if not exists "dynamic_workflow_code_cbor" bytea;
1089
-
1090
- create index if not exists workflow_runs_name_index ON workflow.workflow_runs USING btree (name);
1091
-
1092
- create index if not exists workflow_runs_status_index ON workflow.workflow_runs USING btree (status);
1093
-
1094
- create table if not exists workflow.workflow_snapshots (
1095
- "run_id" character varying not null,
1096
- "data" bytea not null,
1097
- "events_cursor" character varying,
1098
- "created_at" timestamp without time zone not null default now(),
1099
- constraint "workflow_snapshots_pkey" PRIMARY KEY (run_id)
1100
- );
1101
-
1102
- alter table workflow.workflow_snapshots
1103
- add column if not exists "run_id" character varying not null,
1104
- add column if not exists "data" bytea not null,
1105
- add column if not exists "events_cursor" character varying,
1106
- add column if not exists "created_at" timestamp without time zone not null default now();
1107
-
1108
- create table if not exists workflow.workflow_steps (
1109
- "run_id" character varying not null,
1110
- "step_id" character varying not null,
1111
- "step_name" character varying not null,
1112
- "status" workflow.step_status not null,
1113
- "input" jsonb,
1114
- "output" jsonb,
1115
- "error" text,
1116
- "attempt" integer not null,
1117
- "started_at" timestamp without time zone,
1118
- "completed_at" timestamp without time zone,
1119
- "created_at" timestamp without time zone not null default now(),
1120
- "updated_at" timestamp without time zone not null default now(),
1121
- "retry_after" timestamp without time zone,
1122
- "input_cbor" bytea,
1123
- "output_cbor" bytea,
1124
- "error_cbor" bytea,
1125
- "spec_version" integer,
1126
- constraint "workflow_steps_pkey" PRIMARY KEY (step_id)
1127
- );
1128
-
1129
- alter table workflow.workflow_steps
1130
- add column if not exists "run_id" character varying not null,
1131
- add column if not exists "step_id" character varying not null,
1132
- add column if not exists "step_name" character varying not null,
1133
- add column if not exists "status" workflow.step_status not null,
1134
- add column if not exists "input" jsonb,
1135
- add column if not exists "output" jsonb,
1136
- add column if not exists "error" text,
1137
- add column if not exists "attempt" integer not null,
1138
- add column if not exists "started_at" timestamp without time zone,
1139
- add column if not exists "completed_at" timestamp without time zone,
1140
- add column if not exists "created_at" timestamp without time zone not null default now(),
1141
- add column if not exists "updated_at" timestamp without time zone not null default now(),
1142
- add column if not exists "retry_after" timestamp without time zone,
1143
- add column if not exists "input_cbor" bytea,
1144
- add column if not exists "output_cbor" bytea,
1145
- add column if not exists "error_cbor" bytea,
1146
- add column if not exists "spec_version" integer;
1147
-
1148
- create index if not exists workflow_steps_run_id_index ON workflow.workflow_steps USING btree (run_id);
1149
-
1150
- create index if not exists workflow_steps_status_index ON workflow.workflow_steps USING btree (status);
1151
-
1152
- create table if not exists workflow.workflow_stream_chunks (
1153
- "id" character varying not null,
1154
- "stream_id" character varying not null,
1155
- "data" bytea not null,
1156
- "created_at" timestamp without time zone not null default now(),
1157
- "eof" boolean not null,
1158
- "run_id" character varying,
1159
- constraint "workflow_stream_chunks_stream_id_id_pk" PRIMARY KEY (stream_id, id)
1160
- );
1161
-
1162
- alter table workflow.workflow_stream_chunks
1163
- add column if not exists "id" character varying not null,
1164
- add column if not exists "stream_id" character varying not null,
1165
- add column if not exists "data" bytea not null,
1166
- add column if not exists "created_at" timestamp without time zone not null default now(),
1167
- add column if not exists "eof" boolean not null,
1168
- add column if not exists "run_id" character varying;
1169
-
1170
- create index if not exists workflow_stream_chunks_run_id_index ON workflow.workflow_stream_chunks USING btree (run_id);
1171
-
1172
- create table if not exists workflow.workflow_waits (
1173
- "wait_id" character varying not null,
1174
- "run_id" character varying not null,
1175
- "status" workflow.wait_status not null,
1176
- "resume_at" timestamp without time zone,
1177
- "completed_at" timestamp without time zone,
1178
- "created_at" timestamp without time zone not null default now(),
1179
- "updated_at" timestamp without time zone not null default now(),
1180
- "spec_version" integer,
1181
- constraint "workflow_waits_pkey" PRIMARY KEY (wait_id)
1182
- );
1183
-
1184
- alter table workflow.workflow_waits
1185
- add column if not exists "wait_id" character varying not null,
1186
- add column if not exists "run_id" character varying not null,
1187
- add column if not exists "status" workflow.wait_status not null,
1188
- add column if not exists "resume_at" timestamp without time zone,
1189
- add column if not exists "completed_at" timestamp without time zone,
1190
- add column if not exists "created_at" timestamp without time zone not null default now(),
1191
- add column if not exists "updated_at" timestamp without time zone not null default now(),
1192
- add column if not exists "spec_version" integer;
1193
-
1194
- create index if not exists workflow_waits_run_id_index ON workflow.workflow_waits USING btree (run_id);
1195
- `;
1196
- //#endregion
1197
- //#region src/sql/modules/workflow-sdk-world.ts
1198
- /** The Vault secret names the pg_net dispatcher reads. */
1199
- const WORKFLOW_VAULT_SECRETS = {
1200
- flowUrl: "workflow_flow_url",
1201
- deliverySecret: "workflow_delivery_secret",
1202
- encryptionKey: "workflow_encryption_key"
1203
- };
1204
- const WORKFLOW_DELIVERY_QUEUE = "workflow_deliveries";
1205
- function deliveryModeOf(ctx) {
1206
- const mode = ctx.text("delivery", "poll");
1207
- if (mode !== "poll" && mode !== "pg_net") throw new TypeError(`sql.modules.workflow-sdk-world.options.delivery must be "poll" or "pg_net", got "${mode}"`);
1208
- return mode;
1209
- }
1210
- const IDENT = /^[a-z_][a-z0-9_]{0,40}$/;
1211
- function deliveryQueueOf(ctx) {
1212
- const queue = ctx.text("queue", WORKFLOW_DELIVERY_QUEUE);
1213
- if (!IDENT.test(queue)) throw new TypeError(`sql.modules.workflow-sdk-world.options.queue: "${queue}" is not a queue name`);
1214
- return queue;
1215
- }
1216
- function build(ctx) {
1217
- if (ctx.mode === "custom") return "";
1218
- const fn = (name) => ctx.fn(name);
1219
- const workflows = ctx.of("workflows");
1220
- const record = workflows.fn("record_workflow_run");
1221
- const runKey = workflows.permission("run", MODULE_PERMISSIONS.workflows.run);
1222
- const claimJobs = ctx.of("jobs").fn("claim_jobs");
1223
- const id = ctx.idType;
1224
- const queue = sqlString(deliveryQueueOf(ctx));
1225
- const batch = Math.max(1, Math.trunc(ctx.number("batch", 20)));
1226
- const timeout = Math.max(1e3, Math.trunc(ctx.number("timeout", 3e4)));
1227
- const lease = Math.ceil(timeout / 1e3) + 30;
1228
- const mirror = ctx.trigger("workflow_sdk_runs_mirror");
1229
- return `${schemaPreamble(ctx)}
1230
- -- The Workflow SDK World's tables (@workflow/world-postgres ${WORLD_POSTGRES_VERSION}).
1231
- -- Only the service role reads them: the app reads runs from workflow_runs in
1232
- -- the workflows module.
1233
- ${WORLD_POSTGRES_DDL}
1234
- revoke all on schema workflow from public, anon, authenticated;
1235
- grant usage on schema workflow to service_role;
1236
- do $$
1237
- declare
1238
- t record;
1239
- begin
1240
- for t in select c.relname from pg_catalog.pg_class c
1241
- join pg_catalog.pg_namespace n on n.oid = c.relnamespace
1242
- where n.nspname = 'workflow' and c.relkind = 'r'
1243
- loop
1244
- execute format('alter table workflow.%I enable row level security', t.relname);
1245
- execute format('revoke all on workflow.%I from public, anon, authenticated', t.relname);
1246
- execute format('grant all on workflow.%I to service_role', t.relname);
1247
- end loop;
1248
- end;
1249
- $$;
1250
- grant usage, select on all sequences in schema workflow to service_role;
1251
- create index if not exists workflow_runs_attributes_idx on workflow.workflow_runs using gin (attributes jsonb_path_ops);
1252
-
1253
- -- Copies each World run into workflow_runs: its tenant and actor come from
1254
- -- the bs.tenant and bs.actor attributes that startFor sets. A run with an
1255
- -- actor keeps its tenant only when the actor holds workflow.run there; a
1256
- -- run without one was started by the server, which is trusted.
1257
- create or replace function ${fn("workflow_sdk_mirror_run")}()
1258
- returns trigger
1259
- language plpgsql
1260
- security definer
1261
- set search_path = ''
1262
- as $$
1263
- declare
1264
- v_tenant ${id};
1265
- v_actor uuid;
1266
- begin
1267
- begin
1268
- v_tenant := (new.attributes ->> 'bs.tenant')::${id};
1269
- exception when others then
1270
- v_tenant := null;
1271
- end;
1272
- begin
1273
- v_actor := (new.attributes ->> 'bs.actor')::uuid;
1274
- exception when others then
1275
- v_actor := null;
1276
- end;
1277
- if v_tenant is not null and v_actor is not null
1278
- and not coalesce(better_supabase.can_user(v_actor, 'tenant', v_tenant, ${runKey}), false) then
1279
- v_tenant := null;
1280
- end if;
1281
- perform ${record}(
1282
- 'workflow-sdk',
1283
- new.id,
1284
- new.name,
1285
- case new.status::text when 'pending' then 'queued' else new.status::text end,
1286
- v_tenant,
1287
- v_actor,
1288
- coalesce(new.attributes, '{}'::jsonb) - 'bs.tenant' - 'bs.actor',
1289
- case when new.status::text = 'failed' then coalesce(new.error_code, left(new.error, 4000)) end,
1290
- new.started_at at time zone 'UTC',
1291
- new.completed_at at time zone 'UTC'
1292
- );
1293
- return null;
1294
- end;
1295
- $$;
1296
- revoke execute on function ${fn("workflow_sdk_mirror_run")}() from public, anon, authenticated;
1297
- drop trigger if exists ${mirror} on workflow.workflow_runs;
1298
- create trigger ${mirror} after insert or update of status, attributes, error on workflow.workflow_runs
1299
- for each row execute function ${fn("workflow_sdk_mirror_run")}();
1300
-
1301
- -- pg_net delivery: posts up to batch due messages to the flow route in the
1302
- -- Vault secret ${WORKFLOW_VAULT_SECRETS.flowUrl}, signed with ${WORKFLOW_VAULT_SECRETS.deliverySecret}
1303
- -- (x-bs-signature: t=<unix>,v1=hex(hmac_sha256(t.job.body))). The body is
1304
- -- the stored message; the route completes or fails the job, so a delivery
1305
- -- whose response is lost runs again after the lease.
1306
- create or replace function ${fn("dispatch_workflow_deliveries")}(batch integer default ${String(batch)})
1307
- returns integer
1308
- language plpgsql
1309
- security definer
1310
- set search_path = ''
1311
- as $$
1312
- declare
1313
- v_url text;
1314
- v_secret text;
1315
- v_job record;
1316
- v_body jsonb;
1317
- v_t text;
1318
- v_job_header text;
1319
- v_count integer := 0;
1320
- -- pg_net is optional: http_post is looked up, not named, so plpgsql_check
1321
- -- (supabase db lint) passes without the extension.
1322
- v_post regprocedure := pg_catalog.to_regprocedure('net.http_post(text, jsonb, jsonb, jsonb, integer)');
1323
- begin
1324
- if v_post is null then
1325
- raise exception 'dispatch_workflow_deliveries needs pg_net: create extension pg_net, or deliver with the poll mode';
1326
- end if;
1327
- select ds.decrypted_secret into v_url from vault.decrypted_secrets ds where ds.name = ${sqlString(WORKFLOW_VAULT_SECRETS.flowUrl)};
1328
- select ds.decrypted_secret into v_secret from vault.decrypted_secrets ds where ds.name = ${sqlString(WORKFLOW_VAULT_SECRETS.deliverySecret)};
1329
- if v_url is null or v_secret is null then
1330
- raise exception 'Set the Vault secrets ${WORKFLOW_VAULT_SECRETS.flowUrl} and ${WORKFLOW_VAULT_SECRETS.deliverySecret} before dispatching' using hint = 'WORKFLOW_DELIVERY_UNCONFIGURED';
1331
- end if;
1332
- for v_job in select * from ${claimJobs}(${queue}, ${String(lease)}, greatest(coalesce(batch, ${String(batch)}), 1)) loop
1333
- v_body := coalesce(v_job.message -> 'payload', '{}'::jsonb);
1334
- v_t := floor(extract(epoch from now()))::bigint::text;
1335
- v_job_header := ${queue} || ':' || v_job.id::text || ':' || v_job.attempts::text;
1336
- execute format('select %s(url := $1, body := $2, headers := $3, timeout_milliseconds := $4)', v_post::oid::regproc)
1337
- using v_url, v_body, jsonb_build_object(
1338
- 'content-type', 'application/json',
1339
- 'x-bs-job', v_job_header,
1340
- 'x-bs-signature', 't=' || v_t || ',v1=' || encode(extensions.hmac(v_t || '.' || v_job_header || '.' || v_body::text, v_secret, 'sha256'), 'hex')
1341
- ), ${String(timeout)};
1342
- v_count := v_count + 1;
1343
- end loop;
1344
- return v_count;
1345
- end;
1346
- $$;
1347
- revoke execute on function ${fn("dispatch_workflow_deliveries")}(integer) from public, anon, authenticated;
1348
- grant execute on function ${fn("dispatch_workflow_deliveries")}(integer) to service_role;`;
1349
- }
1350
- function data(ctx) {
1351
- if (ctx.mode === "custom" || deliveryModeOf(ctx) !== "pg_net") return "";
1352
- const schedule = ctx.text("schedule", "1 seconds");
1353
- return `-- Delivers workflow messages through pg_net every ${schedule} when pg_cron is installed.
1354
- do $$
1355
- begin
1356
- if pg_catalog.to_regnamespace('cron') is not null then
1357
- perform cron.schedule('better-supabase-workflow-deliveries', ${sqlString(schedule)}, ${sqlString(`select ${ctx.fn("dispatch_workflow_deliveries")}()`)});
1358
- else
1359
- raise notice 'pg_cron is not installed: call ${ctx.fn("dispatch_workflow_deliveries").replaceAll("'", "")}() on a schedule to deliver workflow messages';
1360
- end if;
1361
- end;
1362
- $$;`;
1363
- }
1364
- function contract() {
1365
- return [{
1366
- name: "dispatch_workflow_deliveries",
1367
- args: ["integer"],
1368
- returns: "integer"
1369
- }];
1370
- }
1371
- const WORKFLOW_SDK_WORLD = {
1372
- name: "workflow-sdk-world",
1373
- title: "Workflow SDK World",
1374
- description: `The tables of the Workflow SDK World (@workflow/world-postgres ${WORLD_POSTGRES_VERSION}) in the workflow schema, closed to the API roles; a trigger that copies each run into workflow_runs, and a pg_net dispatcher for the delivery queue on a pg_cron schedule.`,
1375
- requires: [
1376
- "workflows",
1377
- "jobs",
1378
- "access"
1379
- ],
1380
- providerFunctions: ["idsWithFor"],
1381
- target: "schema",
1382
- modes: ["managed", "custom"],
1383
- version: 1,
1384
- names: {
1385
- tables: {},
1386
- options: [
1387
- "delivery",
1388
- "queue",
1389
- "batch",
1390
- "timeout",
1391
- "schedule"
1392
- ]
1393
- },
1394
- contract,
1395
- build,
1396
- data
1397
- };
1398
- //#endregion
1399
- export { fail as A, recordTrigger as B, addForeignKey as C, disabledHelpers as D, columnsObject as E, membershipSuspended as F, serviceOnly as G, replaceColumnCheck as H, organizationMissing as I, tenantIn as J, sha256Hex as K, pageSize as L, jwtClaim as M, memberAddedRecord as N, disabledHelpersNeedLaterTables as O, membershipDisabledAt as P, quotedTable as R, addExtraColumns as S, columnRef as T, schemaPreamble as U, renameSql as V, serviceGrant as W, userGrant as X, updatedAt as Y, NOTHING as _, MODULE_PERMISSIONS as a, accessDefinesDisabledHelpers as b, hasPlatformRoles as c, providerPlatformRoles as d, roleNames as f, EQUIVALENT_TRIGGERS as g, tenantScope as h, WORLD_POSTGRES_VERSION as i, jsonSchemaChecks as j, ensureCheck as k, modulePermission as l, rolesOf as m, WORKFLOW_SDK_WORLD as n, MODULE_PERMISSION_SCOPES as o, roleScopeIs as p, splitTable as q, WORKFLOW_VAULT_SECRETS as r, accessModel as s, WORKFLOW_DELIVERY_QUEUE as t, modulePermissionKey as u, SCHEMA as v, canIn as w, activeMembership as x, SERVICE_CALLER as y, raise as z };