better-supabase 0.9.0 → 0.10.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 (784) hide show
  1. package/README.md +3 -0
  2. package/dist/{adapter-CEjmtazZ.js → adapter-rmWaLNe3.js} +3 -3
  3. package/dist/{agents-BCNhIxVZ.d.ts → agents-ByYUSZxT.d.ts} +4 -4
  4. package/dist/{ai-cache-Dps7aRu1.d.ts → ai-cache-CkxtAt4P.d.ts} +4 -4
  5. package/dist/{ai-cache-zeUL94pB.js → ai-cache-DPiuJ-zJ.js} +2 -2
  6. package/dist/{ai-chat-3GBSlFR4.d.ts → ai-chat-al8b3spK.d.ts} +4 -4
  7. package/dist/{ai-files-D2_9YLjF.js → ai-files-BXtV3ygd.js} +5 -5
  8. package/dist/ai-sdk/agents/index.d.ts +6 -6
  9. package/dist/ai-sdk/agents/index.js +1 -1
  10. package/dist/ai-sdk/batches/index.d.ts +3 -3
  11. package/dist/ai-sdk/batches/index.js +2 -2
  12. package/dist/ai-sdk/cache/index.d.ts +1 -1
  13. package/dist/ai-sdk/cache/index.js +1 -1
  14. package/dist/ai-sdk/chat/index.d.ts +1 -1
  15. package/dist/ai-sdk/chat/index.js +1 -1
  16. package/dist/ai-sdk/embeddings/index.d.ts +2 -2
  17. package/dist/ai-sdk/files/index.d.ts +1 -1
  18. package/dist/ai-sdk/files/index.js +3 -3
  19. package/dist/ai-sdk/index.d.ts +5 -5
  20. package/dist/ai-sdk/mcp/index.d.ts +3 -3
  21. package/dist/ai-sdk/mcp/index.js +2 -2
  22. package/dist/ai-sdk/memory/index.d.ts +3 -3
  23. package/dist/ai-sdk/workflow/index.d.ts +3 -3
  24. package/dist/ai-sdk/workflow/index.js +1 -1
  25. package/dist/{ai-tasks-Ih5oHfyj.d.ts → ai-tasks-Di0gmJOX.d.ts} +5 -5
  26. package/dist/{announcements-BHCzraR6.js → announcements-HF7LuFw5.js} +4 -4
  27. package/dist/{api-TG3jE5aO.d.ts → api-XJcQON_7.d.ts} +6 -6
  28. package/dist/{api-keys-BEQatEUW.js → api-keys-C1IZF7p8.js} +4 -4
  29. package/dist/{api-keys-BYoGCM9p.d.ts → api-keys-EdSNjGIZ.d.ts} +4 -4
  30. package/dist/{app-tables-BGl5_U2x.js → app-tables-BRjMcWhW.js} +248 -13
  31. package/dist/app-tables-DVidEHOI.d.ts +35 -0
  32. package/dist/{approvals-a2KmioBh.d.ts → approvals-DqlPHBHI.d.ts} +4 -4
  33. package/dist/arazzo/index.d.ts +2 -2
  34. package/dist/{assistant-Bf2cA6RO.d.ts → assistant-BZyhQ8bd.d.ts} +2 -2
  35. package/dist/astro/index.d.ts +7 -7
  36. package/dist/astro/index.js +5 -5
  37. package/dist/asyncapi/index.d.ts +1 -1
  38. package/dist/{attachments-DAj2Yp95.js → attachments-C8FEBBKE.js} +5 -5
  39. package/dist/{audit-log-BMMuGPdP.js → audit-log-CRgiHlRh.js} +6 -6
  40. package/dist/{auth-reply-DUCwb8YO.js → auth-reply-B_dW4jHJ.js} +1 -1
  41. package/dist/{authorization-DpRfs6Wx.d.ts → authorization-CdJRoZgV.d.ts} +24 -1
  42. package/dist/{authorization-hooks-DkmrnDX7.d.ts → authorization-hooks-Do5djkpz.d.ts} +2 -2
  43. package/dist/{authorizer-DH7DjkL3.js → authorizer-dVVN05Un.js} +1 -1
  44. package/dist/better-result/index.d.ts +4 -4
  45. package/dist/better-result/index.js +1 -1
  46. package/dist/{bind-a7sUgvf4.d.ts → bind-DkaP_0iS.d.ts} +4 -4
  47. package/dist/{block-fields-ffD6Gxe4.js → block-fields-BANwJ9Y_.js} +2 -2
  48. package/dist/{block-helpers-C86hPEjI.d.ts → block-helpers-7pMBVsE6.d.ts} +1 -1
  49. package/dist/{block-helpers-CfG_MvDR.js → block-helpers-BfVCR5Fc.js} +1 -1
  50. package/dist/{block-hooks-BsXncUlZ.js → block-hooks-ByKlh8Qy.js} +2 -2
  51. package/dist/{block-hooks-BLPWD3Jt.d.ts → block-hooks-C_WaodoA.d.ts} +2 -2
  52. package/dist/{block-transport-DaGGXjIw.d.ts → block-transport-NbUJygA7.d.ts} +2 -2
  53. package/dist/blocks/access-requests/index.d.ts +5 -5
  54. package/dist/blocks/access-requests/index.js +5 -5
  55. package/dist/blocks/agents/index.d.ts +4 -4
  56. package/dist/blocks/agents/index.js +5 -5
  57. package/dist/blocks/ai-cache/index.d.ts +3 -3
  58. package/dist/blocks/ai-cache/index.js +2 -2
  59. package/dist/blocks/ai-chat/index.d.ts +5 -5
  60. package/dist/blocks/ai-chat/index.js +3 -3
  61. package/dist/blocks/ai-chat/react/index.d.ts +2 -2
  62. package/dist/blocks/ai-chat/react/index.js +1 -1
  63. package/dist/blocks/ai-chat/solid/index.d.ts +2 -2
  64. package/dist/blocks/ai-chat/solid/index.js +1 -1
  65. package/dist/blocks/ai-chat/svelte/index.d.ts +2 -2
  66. package/dist/blocks/ai-chat/svelte/index.js +1 -1
  67. package/dist/blocks/ai-chat/vue/index.d.ts +2 -2
  68. package/dist/blocks/ai-chat/vue/index.js +1 -1
  69. package/dist/blocks/ai-files/index.d.ts +3 -3
  70. package/dist/blocks/ai-files/index.js +2 -2
  71. package/dist/blocks/ai-providers/index.d.ts +4 -4
  72. package/dist/blocks/ai-providers/index.js +5 -5
  73. package/dist/blocks/ai-tasks/index.d.ts +3 -3
  74. package/dist/blocks/ai-tasks/index.js +6 -6
  75. package/dist/blocks/announcements/index.d.ts +4 -4
  76. package/dist/blocks/announcements/index.js +2 -2
  77. package/dist/blocks/announcements/react/index.d.ts +1 -1
  78. package/dist/blocks/announcements/react/index.js +1 -1
  79. package/dist/blocks/announcements/solid/index.d.ts +2 -2
  80. package/dist/blocks/announcements/svelte/index.d.ts +2 -2
  81. package/dist/blocks/announcements/vue/index.d.ts +2 -2
  82. package/dist/blocks/api-keys/index.d.ts +6 -6
  83. package/dist/blocks/api-keys/index.js +3 -3
  84. package/dist/blocks/api-keys/react/index.d.ts +1 -1
  85. package/dist/blocks/api-keys/react/index.js +2 -2
  86. package/dist/blocks/api-keys/react/server.d.ts +1 -1
  87. package/dist/blocks/api-keys/solid/index.d.ts +2 -2
  88. package/dist/blocks/api-keys/solid/index.js +1 -1
  89. package/dist/blocks/api-keys/svelte/index.d.ts +2 -2
  90. package/dist/blocks/api-keys/svelte/index.js +1 -1
  91. package/dist/blocks/api-keys/vue/index.d.ts +2 -2
  92. package/dist/blocks/api-keys/vue/index.js +1 -1
  93. package/dist/blocks/approvals/index.d.ts +4 -4
  94. package/dist/blocks/approvals/index.js +5 -5
  95. package/dist/blocks/attachments/index.d.ts +4 -4
  96. package/dist/blocks/attachments/index.js +2 -2
  97. package/dist/blocks/audit/index.d.ts +5 -5
  98. package/dist/blocks/audit/index.js +4 -4
  99. package/dist/blocks/audit/react/index.d.ts +1 -1
  100. package/dist/blocks/audit/react/index.js +1 -1
  101. package/dist/blocks/audit/react/server.d.ts +1 -1
  102. package/dist/blocks/audit/solid/index.d.ts +2 -2
  103. package/dist/blocks/audit/svelte/index.d.ts +2 -2
  104. package/dist/blocks/audit/vue/index.d.ts +2 -2
  105. package/dist/blocks/billing/index.d.ts +9 -9
  106. package/dist/blocks/billing/index.js +7 -7
  107. package/dist/blocks/billing/react/index.d.ts +1 -1
  108. package/dist/blocks/billing/react/index.js +1 -1
  109. package/dist/blocks/billing/react/server.d.ts +1 -1
  110. package/dist/blocks/billing/solid/index.d.ts +2 -2
  111. package/dist/blocks/billing/solid/index.js +1 -1
  112. package/dist/blocks/billing/svelte/index.d.ts +2 -2
  113. package/dist/blocks/billing/svelte/index.js +1 -1
  114. package/dist/blocks/billing/vue/index.d.ts +2 -2
  115. package/dist/blocks/billing/vue/index.js +1 -1
  116. package/dist/blocks/bookings/index.d.ts +3 -3
  117. package/dist/blocks/bookings/index.js +2 -2
  118. package/dist/blocks/bookings/react/index.d.ts +1 -1
  119. package/dist/blocks/bookings/react/index.js +1 -1
  120. package/dist/blocks/bookings/solid/index.d.ts +2 -2
  121. package/dist/blocks/bookings/svelte/index.d.ts +2 -2
  122. package/dist/blocks/bookings/vue/index.d.ts +2 -2
  123. package/dist/blocks/bulk/index.d.ts +9 -5
  124. package/dist/blocks/bulk/index.js +4 -4
  125. package/dist/blocks/calendar/index.d.ts +3 -3
  126. package/dist/blocks/calendar/index.js +2 -2
  127. package/dist/blocks/calendar/react/index.d.ts +1 -1
  128. package/dist/blocks/calendar/react/index.js +1 -1
  129. package/dist/blocks/calendar/solid/index.d.ts +2 -2
  130. package/dist/blocks/calendar/svelte/index.d.ts +2 -2
  131. package/dist/blocks/calendar/vue/index.d.ts +2 -2
  132. package/dist/blocks/catalog/index.d.ts +7 -7
  133. package/dist/blocks/catalog/index.js +7 -7
  134. package/dist/blocks/collections/index.d.ts +6 -6
  135. package/dist/blocks/collections/index.js +6 -6
  136. package/dist/blocks/comments/index.d.ts +4 -4
  137. package/dist/blocks/comments/index.js +3 -3
  138. package/dist/blocks/comments/react/index.d.ts +1 -1
  139. package/dist/blocks/comments/react/index.js +2 -2
  140. package/dist/blocks/comments/react/server.d.ts +1 -1
  141. package/dist/blocks/comments/solid/index.d.ts +2 -2
  142. package/dist/blocks/comments/solid/index.js +1 -1
  143. package/dist/blocks/comments/svelte/index.d.ts +2 -2
  144. package/dist/blocks/comments/svelte/index.js +1 -1
  145. package/dist/blocks/comments/vue/index.d.ts +2 -2
  146. package/dist/blocks/comments/vue/index.js +1 -1
  147. package/dist/blocks/connectors/index.d.ts +4 -4
  148. package/dist/blocks/connectors/index.js +6 -6
  149. package/dist/blocks/custom-fields/index.d.ts +4 -4
  150. package/dist/blocks/custom-fields/index.js +5 -5
  151. package/dist/blocks/data-lifecycle/index.d.ts +8 -8
  152. package/dist/blocks/data-lifecycle/index.js +5 -5
  153. package/dist/blocks/deals/index.d.ts +7 -7
  154. package/dist/blocks/deals/index.js +8 -8
  155. package/dist/blocks/documents/index.d.ts +4 -4
  156. package/dist/blocks/documents/index.js +3 -3
  157. package/dist/blocks/domains/index.d.ts +6 -6
  158. package/dist/blocks/domains/index.js +5 -5
  159. package/dist/blocks/drive/index.d.ts +7 -7
  160. package/dist/blocks/drive/index.js +6 -6
  161. package/dist/blocks/employees/index.d.ts +7 -7
  162. package/dist/blocks/employees/index.js +7 -7
  163. package/dist/blocks/engagements/index.d.ts +6 -6
  164. package/dist/blocks/engagements/index.js +5 -5
  165. package/dist/blocks/entitlements/index.d.ts +6 -6
  166. package/dist/blocks/entitlements/index.js +1 -1
  167. package/dist/blocks/entitlements/react/index.d.ts +2 -2
  168. package/dist/blocks/entitlements/solid/index.d.ts +2 -2
  169. package/dist/blocks/entitlements/svelte/index.d.ts +2 -2
  170. package/dist/blocks/entitlements/vue/index.d.ts +2 -2
  171. package/dist/blocks/flags/index.d.ts +5 -5
  172. package/dist/blocks/flags/index.js +6 -6
  173. package/dist/blocks/forms/index.d.ts +6 -6
  174. package/dist/blocks/forms/index.js +5 -5
  175. package/dist/blocks/forms/react/index.d.ts +1 -1
  176. package/dist/blocks/forms/solid/index.d.ts +2 -2
  177. package/dist/blocks/forms/svelte/index.d.ts +2 -2
  178. package/dist/blocks/forms/vue/index.d.ts +2 -2
  179. package/dist/blocks/hiring/index.d.ts +6 -6
  180. package/dist/blocks/hiring/index.js +6 -6
  181. package/dist/blocks/identities/index.d.ts +5 -5
  182. package/dist/blocks/identities/index.js +3 -3
  183. package/dist/blocks/imports/index.d.ts +74 -6
  184. package/dist/blocks/imports/index.js +111 -7
  185. package/dist/blocks/inbox/index.d.ts +5 -5
  186. package/dist/blocks/inbox/index.js +3 -3
  187. package/dist/blocks/inbox/react/index.d.ts +2 -2
  188. package/dist/blocks/inbox/react/server.d.ts +2 -2
  189. package/dist/blocks/inbox/solid/index.d.ts +2 -2
  190. package/dist/blocks/inbox/svelte/index.d.ts +2 -2
  191. package/dist/blocks/inbox/vue/index.d.ts +2 -2
  192. package/dist/blocks/index.d.ts +26 -7
  193. package/dist/blocks/index.js +4 -4
  194. package/dist/blocks/inventory/index.d.ts +6 -6
  195. package/dist/blocks/inventory/index.js +5 -5
  196. package/dist/blocks/invoices/index.d.ts +6 -6
  197. package/dist/blocks/invoices/index.js +8 -8
  198. package/dist/blocks/jobs/index.d.ts +6 -6
  199. package/dist/blocks/jobs/index.js +8 -8
  200. package/dist/blocks/knowledge/index.d.ts +3 -3
  201. package/dist/blocks/knowledge/index.js +2 -2
  202. package/dist/blocks/leave/index.d.ts +5 -5
  203. package/dist/blocks/leave/index.js +4 -4
  204. package/dist/blocks/memory/index.d.ts +4 -4
  205. package/dist/blocks/memory/index.js +5 -5
  206. package/dist/blocks/metrics/index.d.ts +6 -6
  207. package/dist/blocks/metrics/index.js +5 -5
  208. package/dist/blocks/mfa/index.d.ts +2 -2
  209. package/dist/blocks/mfa/index.js +1 -1
  210. package/dist/blocks/mfa/react/index.d.ts +1 -1
  211. package/dist/blocks/mfa/react/index.js +1 -1
  212. package/dist/blocks/mfa/react/server.d.ts +1 -1
  213. package/dist/blocks/mfa/react/server.js +1 -1
  214. package/dist/blocks/mfa/solid/index.d.ts +2 -2
  215. package/dist/blocks/mfa/solid/index.js +1 -1
  216. package/dist/blocks/mfa/svelte/index.d.ts +2 -2
  217. package/dist/blocks/mfa/svelte/index.js +1 -1
  218. package/dist/blocks/mfa/vue/index.d.ts +2 -2
  219. package/dist/blocks/mfa/vue/index.js +1 -1
  220. package/dist/blocks/notifications/index.d.ts +9 -9
  221. package/dist/blocks/notifications/index.js +9 -9
  222. package/dist/blocks/notifications/react/index.d.ts +1 -1
  223. package/dist/blocks/notifications/react/server.d.ts +1 -1
  224. package/dist/blocks/notifications/solid/index.d.ts +2 -2
  225. package/dist/blocks/notifications/svelte/index.d.ts +2 -2
  226. package/dist/blocks/notifications/vue/index.d.ts +2 -2
  227. package/dist/blocks/number-sequences/index.d.ts +10 -4
  228. package/dist/blocks/number-sequences/index.js +22 -11
  229. package/dist/blocks/oauth-server/index.d.ts +5 -5
  230. package/dist/blocks/oauth-server/index.js +3 -3
  231. package/dist/blocks/onboarding/index.d.ts +3 -3
  232. package/dist/blocks/onboarding/index.js +2 -2
  233. package/dist/blocks/onboarding/react/index.d.ts +1 -1
  234. package/dist/blocks/onboarding/react/index.js +1 -1
  235. package/dist/blocks/onboarding/react/server.d.ts +1 -1
  236. package/dist/blocks/onboarding/solid/index.d.ts +2 -2
  237. package/dist/blocks/onboarding/svelte/index.d.ts +2 -2
  238. package/dist/blocks/onboarding/vue/index.d.ts +2 -2
  239. package/dist/blocks/orders/index.d.ts +6 -6
  240. package/dist/blocks/orders/index.js +9 -9
  241. package/dist/blocks/organizations/index.d.ts +5 -5
  242. package/dist/blocks/organizations/index.js +4 -4
  243. package/dist/blocks/organizations/react/index.d.ts +1 -1
  244. package/dist/blocks/organizations/react/index.js +2 -2
  245. package/dist/blocks/organizations/react/server.d.ts +1 -1
  246. package/dist/blocks/organizations/solid/index.d.ts +2 -2
  247. package/dist/blocks/organizations/solid/index.js +1 -1
  248. package/dist/blocks/organizations/svelte/index.d.ts +2 -2
  249. package/dist/blocks/organizations/svelte/index.js +1 -1
  250. package/dist/blocks/organizations/vue/index.d.ts +2 -2
  251. package/dist/blocks/organizations/vue/index.js +1 -1
  252. package/dist/blocks/outbox/index.d.ts +4 -4
  253. package/dist/blocks/outbox/index.js +5 -5
  254. package/dist/blocks/parties/index.d.ts +7 -7
  255. package/dist/blocks/parties/index.js +4 -4
  256. package/dist/blocks/pipelines/index.d.ts +6 -6
  257. package/dist/blocks/pipelines/index.js +7 -7
  258. package/dist/blocks/profiles/index.d.ts +4 -4
  259. package/dist/blocks/profiles/index.js +5 -5
  260. package/dist/blocks/promotions/index.d.ts +5 -5
  261. package/dist/blocks/promotions/index.js +6 -6
  262. package/dist/blocks/push/index.d.ts +6 -6
  263. package/dist/blocks/push/index.js +4 -4
  264. package/dist/blocks/quotes/index.d.ts +6 -6
  265. package/dist/blocks/quotes/index.js +8 -8
  266. package/dist/blocks/rank/index.d.ts +4 -4
  267. package/dist/blocks/rank/index.js +4 -4
  268. package/dist/blocks/reactions/index.d.ts +4 -4
  269. package/dist/blocks/reactions/index.js +2 -2
  270. package/dist/blocks/reactions/react/index.d.ts +1 -1
  271. package/dist/blocks/reactions/react/index.js +1 -1
  272. package/dist/blocks/reactions/solid/index.d.ts +2 -2
  273. package/dist/blocks/reactions/solid/index.js +1 -1
  274. package/dist/blocks/reactions/svelte/index.d.ts +2 -2
  275. package/dist/blocks/reactions/svelte/index.js +1 -1
  276. package/dist/blocks/reactions/vue/index.d.ts +2 -2
  277. package/dist/blocks/reactions/vue/index.js +1 -1
  278. package/dist/blocks/relations/index.d.ts +5 -5
  279. package/dist/blocks/relations/index.js +5 -5
  280. package/dist/blocks/reminders/index.d.ts +7 -7
  281. package/dist/blocks/reminders/index.js +6 -6
  282. package/dist/blocks/reviews/index.d.ts +5 -5
  283. package/dist/blocks/reviews/index.js +5 -5
  284. package/dist/blocks/rules/index.d.ts +75 -9
  285. package/dist/blocks/rules/index.js +115 -6
  286. package/dist/blocks/rules/react/index.d.ts +2 -2
  287. package/dist/blocks/rules/react/index.js +2 -2
  288. package/dist/blocks/rules/solid/index.d.ts +2 -2
  289. package/dist/blocks/rules/solid/index.js +1 -1
  290. package/dist/blocks/rules/svelte/index.d.ts +2 -2
  291. package/dist/blocks/rules/svelte/index.js +1 -1
  292. package/dist/blocks/rules/vue/index.d.ts +2 -2
  293. package/dist/blocks/rules/vue/index.js +1 -1
  294. package/dist/blocks/saved-views/index.d.ts +3 -3
  295. package/dist/blocks/saved-views/index.js +2 -2
  296. package/dist/blocks/saved-views/react/index.d.ts +1 -1
  297. package/dist/blocks/saved-views/react/index.js +1 -1
  298. package/dist/blocks/saved-views/react/server.d.ts +1 -1
  299. package/dist/blocks/saved-views/solid/index.d.ts +2 -2
  300. package/dist/blocks/saved-views/solid/index.js +1 -1
  301. package/dist/blocks/saved-views/svelte/index.d.ts +2 -2
  302. package/dist/blocks/saved-views/svelte/index.js +1 -1
  303. package/dist/blocks/saved-views/vue/index.d.ts +2 -2
  304. package/dist/blocks/saved-views/vue/index.js +1 -1
  305. package/dist/blocks/search/index.d.ts +4 -4
  306. package/dist/blocks/search/index.js +3 -3
  307. package/dist/blocks/search/react/index.d.ts +1 -1
  308. package/dist/blocks/search/react/index.js +1 -1
  309. package/dist/blocks/search/react/server.d.ts +1 -1
  310. package/dist/blocks/search/solid/index.d.ts +2 -2
  311. package/dist/blocks/search/svelte/index.d.ts +2 -2
  312. package/dist/blocks/search/vue/index.d.ts +2 -2
  313. package/dist/blocks/service-principals/index.d.ts +5 -5
  314. package/dist/blocks/service-principals/index.js +5 -5
  315. package/dist/blocks/sessions/index.d.ts +2 -2
  316. package/dist/blocks/sessions/index.js +2 -2
  317. package/dist/blocks/sessions/react/index.d.ts +1 -1
  318. package/dist/blocks/sessions/react/index.js +1 -1
  319. package/dist/blocks/sessions/react/server.d.ts +1 -1
  320. package/dist/blocks/sessions/solid/index.d.ts +2 -2
  321. package/dist/blocks/sessions/solid/index.js +1 -1
  322. package/dist/blocks/sessions/svelte/index.d.ts +2 -2
  323. package/dist/blocks/sessions/svelte/index.js +1 -1
  324. package/dist/blocks/sessions/vue/index.d.ts +2 -2
  325. package/dist/blocks/sessions/vue/index.js +1 -1
  326. package/dist/blocks/settings/index.d.ts +4 -4
  327. package/dist/blocks/settings/index.js +3 -3
  328. package/dist/blocks/settings/react/index.d.ts +1 -1
  329. package/dist/blocks/settings/react/index.js +2 -2
  330. package/dist/blocks/settings/react/server.d.ts +1 -1
  331. package/dist/blocks/settings/solid/index.d.ts +2 -2
  332. package/dist/blocks/settings/solid/index.js +1 -1
  333. package/dist/blocks/settings/svelte/index.d.ts +2 -2
  334. package/dist/blocks/settings/svelte/index.js +1 -1
  335. package/dist/blocks/settings/vue/index.d.ts +2 -2
  336. package/dist/blocks/settings/vue/index.js +1 -1
  337. package/dist/blocks/share-links/index.d.ts +12 -5
  338. package/dist/blocks/share-links/index.js +9 -6
  339. package/dist/blocks/shared-signals/index.d.ts +7 -7
  340. package/dist/blocks/shared-signals/index.js +4 -4
  341. package/dist/blocks/signing-keys/index.d.ts +4 -4
  342. package/dist/blocks/signing-keys/index.js +4 -4
  343. package/dist/blocks/sla/index.d.ts +6 -6
  344. package/dist/blocks/sla/index.js +5 -5
  345. package/dist/blocks/sso/index.d.ts +6 -6
  346. package/dist/blocks/sso/index.js +4 -4
  347. package/dist/blocks/state-machine/index.d.ts +4 -4
  348. package/dist/blocks/state-machine/index.js +3 -3
  349. package/dist/blocks/tags/index.d.ts +3 -3
  350. package/dist/blocks/tags/index.js +3 -3
  351. package/dist/blocks/tags/react/index.d.ts +1 -1
  352. package/dist/blocks/tags/react/index.js +2 -2
  353. package/dist/blocks/tags/react/server.d.ts +1 -1
  354. package/dist/blocks/tags/solid/index.d.ts +2 -2
  355. package/dist/blocks/tags/solid/index.js +1 -1
  356. package/dist/blocks/tags/svelte/index.d.ts +2 -2
  357. package/dist/blocks/tags/svelte/index.js +1 -1
  358. package/dist/blocks/tags/vue/index.d.ts +2 -2
  359. package/dist/blocks/tags/vue/index.js +1 -1
  360. package/dist/blocks/targets/index.d.ts +4 -4
  361. package/dist/blocks/targets/index.js +5 -5
  362. package/dist/blocks/teams/index.d.ts +4 -4
  363. package/dist/blocks/teams/index.js +4 -4
  364. package/dist/blocks/templates/index.d.ts +7 -7
  365. package/dist/blocks/templates/index.js +6 -6
  366. package/dist/blocks/time-tracking/index.d.ts +6 -6
  367. package/dist/blocks/time-tracking/index.js +7 -7
  368. package/dist/blocks/trash/index.d.ts +5 -5
  369. package/dist/blocks/trash/index.js +4 -4
  370. package/dist/blocks/undo/index.d.ts +4 -4
  371. package/dist/blocks/undo/index.js +1 -1
  372. package/dist/blocks/undo/react/index.d.ts +1 -1
  373. package/dist/blocks/undo/react/server.d.ts +1 -1
  374. package/dist/blocks/undo/solid/index.d.ts +2 -2
  375. package/dist/blocks/undo/svelte/index.d.ts +2 -2
  376. package/dist/blocks/undo/vue/index.d.ts +2 -2
  377. package/dist/blocks/usage/index.d.ts +4 -4
  378. package/dist/blocks/usage/index.js +2 -2
  379. package/dist/blocks/usage/react/index.d.ts +1 -1
  380. package/dist/blocks/usage/react/index.js +1 -1
  381. package/dist/blocks/usage/react/server.d.ts +1 -1
  382. package/dist/blocks/usage/solid/index.d.ts +2 -2
  383. package/dist/blocks/usage/svelte/index.d.ts +2 -2
  384. package/dist/blocks/usage/vue/index.d.ts +2 -2
  385. package/dist/blocks/versions/index.d.ts +10 -6
  386. package/dist/blocks/versions/index.js +18 -13
  387. package/dist/blocks/waitlist/index.d.ts +5 -5
  388. package/dist/blocks/waitlist/index.js +5 -5
  389. package/dist/blocks/webhooks/index.d.ts +13 -13
  390. package/dist/blocks/webhooks/index.js +10 -10
  391. package/dist/blocks/work-items/index.d.ts +7 -7
  392. package/dist/blocks/work-items/index.js +5 -5
  393. package/dist/blocks/workflow-builder/index.d.ts +7 -7
  394. package/dist/blocks/workflow-builder/index.js +2 -2
  395. package/dist/blocks/workflow-builder/react/index.d.ts +2 -2
  396. package/dist/blocks/workflow-builder/react/index.js +2 -2
  397. package/dist/blocks/workflow-builder/solid/index.d.ts +2 -2
  398. package/dist/blocks/workflow-builder/svelte/index.d.ts +2 -2
  399. package/dist/blocks/workflow-builder/vue/index.d.ts +2 -2
  400. package/dist/blocks/workflows/index.d.ts +5 -5
  401. package/dist/blocks/workflows/index.js +1 -1
  402. package/dist/blocks/workflows/react/index.d.ts +2 -2
  403. package/dist/blocks/workflows/react/index.js +1 -1
  404. package/dist/blocks/workflows/solid/index.d.ts +2 -2
  405. package/dist/blocks/workflows/svelte/index.d.ts +2 -2
  406. package/dist/blocks/workflows/vue/index.d.ts +2 -2
  407. package/dist/{bookings-0XnhHNLM.js → bookings-EJAVAuVz.js} +4 -4
  408. package/dist/{build-Cx08LOT7.js → build-6jmaPAgx.js} +1 -1
  409. package/dist/{calendar-DcFrpSOy.js → calendar-1J1E5dLq.js} +4 -4
  410. package/dist/chat-sdk/index.d.ts +4 -4
  411. package/dist/chat-sdk/index.js +2 -2
  412. package/dist/chat-sdk/react/index.d.ts +2 -2
  413. package/dist/chat-sdk/react/server.d.ts +2 -2
  414. package/dist/cli/{add-Bd5M6uEZ.js → add-BhI_nXAo.js} +2 -2
  415. package/dist/cli/{add-B0zoJUYX.js → add-CUS0AiBh.js} +6 -6
  416. package/dist/cli/add-ojbcMxyp.js +1 -0
  417. package/dist/cli/adopt-D0ASVx2G.js +1 -0
  418. package/dist/cli/{adopt-CebmlHL-.js → adopt-DwcU6CJd.js} +27 -8
  419. package/dist/cli/{agent-CCt_aXpJ.js → agent-CCrTYK3W.js} +1 -1
  420. package/dist/cli/{apply-Dxk8AUNU.js → apply-DBXC0Z5I.js} +40 -10
  421. package/dist/cli/bin.js +1 -1
  422. package/dist/cli/{blocks-Dq25D80b.js → blocks-B15ltTFn.js} +1 -1
  423. package/dist/cli/{blocks-Bzz326nn.js → blocks-BXeqIzWN.js} +1 -1
  424. package/dist/cli/{cache-Cx6qlRDR.js → cache-CPBYJAkb.js} +2 -2
  425. package/dist/cli/{codemod-woL4cVe0.js → codemod-CrI33UR2.js} +2 -2
  426. package/dist/cli/{command-CK9Cn8HV.js → command-D_HI1mp1.js} +17 -0
  427. package/dist/cli/{completion-CWoDmFZr.js → completion-DzYo025z.js} +2 -2
  428. package/dist/cli/{completion-J3dqnNoW.js → completion-En43UcyJ.js} +2 -2
  429. package/dist/cli/{completion-BO5UK6bG.js → completion-Vry-Wjw8.js} +1 -1
  430. package/dist/cli/{config-CLHpTk9Y.js → config-Bi_UBxXl.js} +40 -10
  431. package/dist/cli/{config-C1d-mbUA.js → config-DsqQr5z3.js} +1 -1
  432. package/dist/cli/{config-MuKY9kUj.js → config-DyJgo2d9.js} +1 -1
  433. package/dist/cli/{doctor-SGw36h1D.js → doctor-wACp5w6N.js} +44 -342
  434. package/dist/cli/{emit-ZAYeh4Yn.js → emit-j0zZ6NE_.js} +21 -2
  435. package/dist/cli/{env-CVXvJoLP.js → env-2v9JrxSr.js} +3 -3
  436. package/dist/cli/{env-DMw_MBe5.js → env-Cf5OTqbK.js} +92 -1
  437. package/dist/cli/{env-DJ4ZaJpe.js → env-Ch99nTQw.js} +1 -1
  438. package/dist/cli/env-DkBe35Rv.js +1 -0
  439. package/dist/cli/{gen-B344S1Oy.js → gen-BhquLu7l.js} +11 -11
  440. package/dist/cli/index.d.ts +6 -4
  441. package/dist/cli/index.js +7 -7
  442. package/dist/cli/{init-B1dL-RZL.js → init-BwLTO6XG.js} +15 -8
  443. package/dist/cli/{introspect-BPcFi8ow.js → introspect-B-gXAIqs.js} +3 -3
  444. package/dist/cli/{keys-jsxCNJdz.js → keys-hwtdwdkT.js} +1 -1
  445. package/dist/cli/live-BFfYoE0_.js +329 -0
  446. package/dist/cli/mcp-Bdm2oGmL.js +237 -0
  447. package/dist/cli/{metadata-CxBZo4KM.js → metadata-DikbSOE0.js} +2 -2
  448. package/dist/cli/migration-safety-LaGVPPuD.js +206 -0
  449. package/dist/cli/{module-migration-YFFdWC5X.js → module-migration-CLkZ8jpw.js} +1 -1
  450. package/dist/cli/{moved-D9OT_Uyy.js → moved-B7UFO_OM.js} +1 -1
  451. package/dist/cli/{parse-DE59XyWt.js → parse-CwV5a6dA.js} +1 -1
  452. package/dist/cli/{preset-DmcC4nWE.js → preset-DQ1DxMtI.js} +1 -1
  453. package/dist/cli/{run-CM_2g6KQ.js → run-BLJj7SuM.js} +43 -42
  454. package/dist/cli/{run-DaHfUUO9.js → run-DliGNdjI.js} +38 -70
  455. package/dist/cli/{scaffold-CFdDq36-.js → scaffold-6bv24GSP.js} +4 -4
  456. package/dist/cli/{scaffold-Dsjr7sOT.js → scaffold-DUz5fa-k.js} +1 -1
  457. package/dist/cli/{seed-DldDdXWO.js → seed-CIJaL1Ao.js} +4 -4
  458. package/dist/cli/seed-ClGWseBT.js +1 -0
  459. package/dist/cli/shared-CNcvDOLt.js +145 -0
  460. package/dist/cli/{skills-v34NDb2D.js → skills-CaxIQhzW.js} +1 -1
  461. package/dist/cli/{snapshot-DAxLi4hO.js → snapshot-Dvcx0BSl.js} +3 -3
  462. package/dist/cli/{source-args-0I9zylYy.js → source-args-BNhagtpw.js} +1 -1
  463. package/dist/cli/{spec-CaaSOYZS.js → spec-BewE6r6J.js} +5 -5
  464. package/dist/cli/{spec-De0cfceR.js → spec-DRDaIq8f.js} +1 -1
  465. package/dist/cli/{sql-DDLWwzh9.js → sql-BBkchli4.js} +5 -5
  466. package/dist/cli/{sql-0I1EQ3JG.js → sql-BCQt5TDs.js} +2 -2
  467. package/dist/cli/{stack-status-CRanl-CN.js → stack-status-LeEoCtV1.js} +1 -1
  468. package/dist/cli/{sync-DFx-6t5n.js → sync-CJ-ft-tl.js} +2 -2
  469. package/dist/cli/{topics-GJuIDwlY.js → topics-BBE1-Vrg.js} +1 -1
  470. package/dist/cli/{version-DNRW4DAP.js → version-D1wM9DNb.js} +1 -1
  471. package/dist/cli/{write-BS6F3Yvz.js → write-Dp1XlAVM.js} +24 -6
  472. package/dist/client/index.d.ts +5 -5
  473. package/dist/client/index.js +2 -2
  474. package/dist/client/native/index.d.ts +5 -5
  475. package/dist/client/native/index.js +2 -2
  476. package/dist/{client-BYaOGCOG.js → client-13Ii0c0P.js} +1 -1
  477. package/dist/{client-BxnLb9bz.d.ts → client-9zIKhf5D.d.ts} +2 -2
  478. package/dist/{client-PGRk3DGz.js → client-AxwF58Eo.js} +1 -1
  479. package/dist/{client-iDLLvGR4.d.ts → client-B0rvMvA8.d.ts} +3 -3
  480. package/dist/{client-ysNShuJZ.d.ts → client-B5nnqDmz.d.ts} +2 -2
  481. package/dist/{client-VvY0K3wr.d.ts → client-B7LCXnnY.d.ts} +5 -5
  482. package/dist/{client-D5CZ2a34.d.ts → client-B9H4BZJh.d.ts} +11 -11
  483. package/dist/{client-e-hFkLUf.d.ts → client-BLKpcAs0.d.ts} +2 -2
  484. package/dist/{client-DAHsEOVV.d.ts → client-BO9fQgBB.d.ts} +3 -3
  485. package/dist/{client-LLmgiCwJ.d.ts → client-B_r4denm.d.ts} +1 -1
  486. package/dist/{client-Tc47rlSe.d.ts → client-BaynD5V-.d.ts} +45 -7
  487. package/dist/{client-Co6BPmvr.d.ts → client-BtBkVSk2.d.ts} +3 -3
  488. package/dist/{client-xkSCp9hN.d.ts → client-ByGlM0YF.d.ts} +3 -3
  489. package/dist/{client-BAcILZOf.d.ts → client-C3dLIsJv.d.ts} +6 -6
  490. package/dist/{client-CFdMJ1h9.d.ts → client-C597NIlL.d.ts} +4 -4
  491. package/dist/{client-CoVGPi0c.js → client-CFeWXNXy.js} +2 -2
  492. package/dist/{client-Cmensu7l.d.ts → client-Cgxj38RS.d.ts} +6 -6
  493. package/dist/{client-WAdEBBrH.d.ts → client-CjyTNdt1.d.ts} +4 -4
  494. package/dist/{client-Cdedx_lw.js → client-CmHsfDHU.js} +5 -5
  495. package/dist/{client-Lx3mlvKO.d.ts → client-CpMv4-v5.d.ts} +4 -4
  496. package/dist/{client-DjTRlN3a.d.ts → client-CsRpAyIv.d.ts} +1 -1
  497. package/dist/{client-BUGIS__1.js → client-D0502FgY.js} +6 -6
  498. package/dist/{client-CiGjS6us.js → client-D727oIVC.js} +3 -3
  499. package/dist/{client-CHmjaI0j.d.ts → client-D9zBl9PT.d.ts} +6 -6
  500. package/dist/{client-WHeWTNVL.d.ts → client-DR_YEGnc.d.ts} +1 -1
  501. package/dist/{client-DIrCmOXz.d.ts → client-DZXFDaQE.d.ts} +3 -3
  502. package/dist/{client-hyP_nS5R.d.ts → client-Diu2lPbg.d.ts} +4 -4
  503. package/dist/{client-BVZtq_rQ.d.ts → client-Dk8gY9hi.d.ts} +2 -2
  504. package/dist/{client-B7QVIrJS.d.ts → client-Fi8CoJcs.d.ts} +10 -10
  505. package/dist/{client-DdfSIZ3M.d.ts → client-LVa6yC9u.d.ts} +4 -4
  506. package/dist/{client-ClZ0D-if.d.ts → client-WXJwUhr1.d.ts} +4 -4
  507. package/dist/{client-BOT2KVIp.js → client-fpvgtQKE.js} +1 -1
  508. package/dist/{client-C9QrWrnt.js → client-iB5axfa0.js} +2 -2
  509. package/dist/{client-01MAuqzW.js → client-jvtwGFy4.js} +1 -1
  510. package/dist/{client-CilSKXNu.js → client-kI6vCKVI.js} +1 -1
  511. package/dist/{client-CzI4QpG3.d.ts → client-kKdkLGPB.d.ts} +1 -1
  512. package/dist/{client-i8glKhxh.js → client-rp7YfOg1.js} +1 -1
  513. package/dist/{cloud-event-5rCEzIgK.d.ts → cloud-event-bwsBwVNG.d.ts} +1 -1
  514. package/dist/{codecs-YAekuQ08.js → codecs-C7E_OoiC.js} +3 -3
  515. package/dist/{codegen-DeoSt1mi.d.ts → codegen-2m4SKVdi.d.ts} +97 -14
  516. package/dist/{comments-D7sbd0xG.js → comments-N7Bi-oTW.js} +4 -4
  517. package/dist/commerce/index.js +3 -3
  518. package/dist/{compiler-BVxepAY0.d.ts → compiler-C6E3WwIi.d.ts} +2 -2
  519. package/dist/{compose-Djntdacs.js → compose-CO_cljl3.js} +1 -1
  520. package/dist/{composite-M6zPs1Xm.js → composite-CPV0thLs.js} +2 -2
  521. package/dist/{composite-djtGy6bz.d.ts → composite-DMMA_Whg.d.ts} +6 -6
  522. package/dist/config/index.d.ts +6 -6
  523. package/dist/config/index.js +4 -4
  524. package/dist/{config-C4MozTD7.js → config-C4RQDF6t.js} +4 -0
  525. package/dist/{config-BA1K4OPk.js → config-CkyahUjo.js} +4 -3
  526. package/dist/{connectors-CjD-R2ks.d.ts → connectors-CZdfZcIg.d.ts} +4 -4
  527. package/dist/{context-1sSWcd7_.d.ts → context-CCfX2szU.d.ts} +15 -3
  528. package/dist/{controller-D845qKh2.d.ts → controller-CCb9tHw_.d.ts} +1 -1
  529. package/dist/create/index.d.ts +597 -0
  530. package/dist/create/index.js +2049 -0
  531. package/dist/create/lite/index.d.ts +85 -0
  532. package/dist/create/lite/index.js +126 -0
  533. package/dist/create/supabase/index.d.ts +68 -0
  534. package/dist/create/supabase/index.js +312 -0
  535. package/dist/credentials/index.d.ts +4 -4
  536. package/dist/credentials/index.js +4 -4
  537. package/dist/{cron-route-CoL-By8Z.js → cron-route-BsgbJ-g4.js} +1 -1
  538. package/dist/{define-B2ln373W.js → define-CMcokcZz.js} +5 -5
  539. package/dist/{define-DxHHbNEb.d.ts → define-DXTC706J.d.ts} +6 -6
  540. package/dist/{define-block-CLZMEFeK.d.ts → define-block-BlHQxDIQ.d.ts} +6 -6
  541. package/dist/{documents-CWn2mtYf.d.ts → documents-BYM2viS0.d.ts} +3 -3
  542. package/dist/edge/index.d.ts +9 -9
  543. package/dist/edge/index.js +9 -9
  544. package/dist/elysia/index.d.ts +1 -1
  545. package/dist/elysia/index.js +1 -1
  546. package/dist/{embeddings-C2S14foD.d.ts → embeddings-Da0w4A_0.d.ts} +1 -1
  547. package/dist/{ended-nIdGCHxk.d.ts → ended-EcTtzzQJ.d.ts} +2 -2
  548. package/dist/{entitlements-BvU5dLpW.js → entitlements-AmYp2KHX.js} +3 -3
  549. package/dist/{entitlements-CbzCKalR.d.ts → entitlements-Bn7BTnbg.d.ts} +2 -2
  550. package/dist/env/index.d.ts +1 -1
  551. package/dist/env/index.js +6 -1
  552. package/dist/{envelope-CHYk5MXU.js → envelope--7d0Q3Se.js} +1 -1
  553. package/dist/{errors-PIpcoe4z.js → errors-7MqM7bbV.js} +1 -1
  554. package/dist/eve/index.d.ts +5 -5
  555. package/dist/{eve-DUF70Vgi.d.ts → eve-BcEr_hPo.d.ts} +2 -2
  556. package/dist/events/index.d.ts +3 -3
  557. package/dist/{events-CTreRrgP.d.ts → events-CtAHxPal.d.ts} +2 -2
  558. package/dist/{executor-DoE-5iM8.d.ts → executor-BicyP8Nl.d.ts} +1 -1
  559. package/dist/{executor-BINiCFNp.d.ts → executor-CHRwEYqt.d.ts} +1 -1
  560. package/dist/{executor-DKrZr3AC.d.ts → executor-CIxyatuB.d.ts} +2 -2
  561. package/dist/{executor-BXSHYyW2.js → executor-Cex-1PFp.js} +3 -3
  562. package/dist/{executor-BBHgjUJu.d.ts → executor-DzJQVTE2.d.ts} +1 -1
  563. package/dist/{executor-D1kYY5BA.js → executor-aKUo_Xyb.js} +2 -2
  564. package/dist/expo/index.d.ts +4 -4
  565. package/dist/expo/index.js +3 -3
  566. package/dist/expo-sqlite/index.d.ts +3 -3
  567. package/dist/expo-sqlite/index.js +2 -2
  568. package/dist/{field-errors-CWXN_h_E.d.ts → field-errors-nFnYWvB0.d.ts} +6 -6
  569. package/dist/{filter-evaluate-CjcFq0RT.d.ts → filter-evaluate-CEm52E5s.d.ts} +1 -1
  570. package/dist/{filter-query-BKmRYrTE.d.ts → filter-query-D3wOD1P_.d.ts} +1 -1
  571. package/dist/{flags-XAOsdNAc.js → flags-CtSrkVuW.js} +1 -1
  572. package/dist/{flags-D_D1jAHB.d.ts → flags-Dz5PIzFU.d.ts} +2 -2
  573. package/dist/flags-sdk/index.d.ts +1 -1
  574. package/dist/flags-sdk/index.js +2 -2
  575. package/dist/{options-BqO9GYig.js → form-definition-GVZTILhS.js} +13 -13
  576. package/dist/{framework-DG5Bv39u.d.ts → framework-C2oL4OaO.d.ts} +6 -6
  577. package/dist/{framework-INbjMZX1.js → framework-Cfm0IspZ.js} +1 -1
  578. package/dist/{gateway-Cup00l0w.d.ts → gateway-CJL6ZG17.d.ts} +3 -3
  579. package/dist/h3/index.d.ts +1 -1
  580. package/dist/h3/index.js +1 -1
  581. package/dist/h3/v1/index.d.ts +1 -1
  582. package/dist/h3/v1/index.js +1 -1
  583. package/dist/hono/index.d.ts +9 -9
  584. package/dist/hono/index.js +6 -6
  585. package/dist/{inbox-3ql4phyr.d.ts → inbox-BaUJgHOF.d.ts} +3 -3
  586. package/dist/index-8xwnaWHY.d.ts +344 -0
  587. package/dist/{index-BkzNUPId.d.ts → index-BurdFUXr.d.ts} +6 -6
  588. package/dist/{index-DygICr8c.d.ts → index-Cckxs8IE.d.ts} +2 -2
  589. package/dist/{index-CrZitvSC.d.ts → index-Ck4oK5vV.d.ts} +7 -7
  590. package/dist/{index-Ej8XQ9w9.d.ts → index-Co0YsJTk.d.ts} +2 -2
  591. package/dist/{index-CETRk4YO.d.ts → index-CxmVzT-3.d.ts} +5 -1
  592. package/dist/{index-Bvw9r94Q.d.ts → index-D1kMyNc7.d.ts} +1 -1
  593. package/dist/{index-BlqrGvb3.d.ts → index-DL8z_oDo.d.ts} +4 -4
  594. package/dist/{index-DfVXx4Ia.d.ts → index-DMONTkSf.d.ts} +2 -2
  595. package/dist/{index-jhqhynmh.d.ts → index-DTQbC3CW.d.ts} +1 -1
  596. package/dist/{index-BIi8i6BO.d.ts → index-DcijDfh1.d.ts} +3 -3
  597. package/dist/index-MCXVzkXs.d.ts +722 -0
  598. package/dist/{index-Brhm22eL.d.ts → index-gXy3R1Uq.d.ts} +1 -1
  599. package/dist/index.d.ts +8 -8
  600. package/dist/index.js +6 -6
  601. package/dist/{kit-D5S7KNFe.d.ts → kit-BlcEFQql.d.ts} +3 -3
  602. package/dist/{kit-MUK34-ZG.js → kit-gqwkVhGU.js} +3 -3
  603. package/dist/{knowledge-BXQ2-V0a.d.ts → knowledge-BYtgA52P.d.ts} +5 -5
  604. package/dist/{knowledge-CJ_Mm3ic.js → knowledge-CSNKLX-s.js} +3 -3
  605. package/dist/list/index.d.ts +3 -3
  606. package/dist/{list-query-PvP3pPGQ.d.ts → list-query-DWJIiVz_.d.ts} +4 -4
  607. package/dist/management-D1gG89z2.d.ts +53 -0
  608. package/dist/mcp/index.d.ts +41 -16
  609. package/dist/mcp/index.js +139 -56
  610. package/dist/mcp/sdk/index.d.ts +6 -6
  611. package/dist/mcp/sdk/index.js +2 -2
  612. package/dist/{options-BQ07tTYr.js → methods-7u6vSgz_.js} +4 -4
  613. package/dist/{money-codec-C_-K5ZUU.js → money-codec-DCGgzO26.js} +1 -1
  614. package/dist/nestjs/index.d.ts +2 -2
  615. package/dist/nestjs/index.js +1 -1
  616. package/dist/next/index.d.ts +16 -16
  617. package/dist/next/index.js +10 -10
  618. package/dist/node/index.d.ts +2 -2
  619. package/dist/node/index.js +1 -1
  620. package/dist/{onboarding-BZvLLPaY.js → onboarding-viTTNWUp.js} +2 -2
  621. package/dist/openapi/index.d.ts +2 -2
  622. package/dist/{operations-C9-UcReN.d.ts → operations-BtuQRwTJ.d.ts} +1 -1
  623. package/dist/{organizations-Cw7om8uk.js → organizations-Bxrm32IG.js} +4 -4
  624. package/dist/orpc/index.d.ts +6 -6
  625. package/dist/orpc/index.js +3 -3
  626. package/dist/otel/index.d.ts +2 -2
  627. package/dist/otel/index.js +5 -5
  628. package/dist/{outbox-BTeqjbum.d.ts → outbox-BCGHl9X6.d.ts} +4 -4
  629. package/dist/{plugin-CDLJRFFg.d.ts → plugin-D5OIaP93.d.ts} +2 -2
  630. package/dist/plugins/actor/index.d.ts +1 -1
  631. package/dist/plugins/rules/index.d.ts +2 -2
  632. package/dist/plugins/soft-delete/index.d.ts +2 -2
  633. package/dist/plugins/soft-delete/index.js +1 -1
  634. package/dist/plugins/tenant/index.d.ts +2 -2
  635. package/dist/plugins/timestamps/index.d.ts +1 -1
  636. package/dist/plugins/validation/index.d.ts +1 -1
  637. package/dist/plugins/validation/index.js +1 -1
  638. package/dist/{pool-CwOCsX9e.d.ts → pool-BBi4mot3.d.ts} +7 -4
  639. package/dist/{pool-errors-GMjlCN0d.js → pool-errors-C94tPR_G.js} +1 -1
  640. package/dist/{ports-Ca63W4cW.d.ts → ports-B53rB7zg.d.ts} +7 -7
  641. package/dist/{ports-DGK3KTDH.js → ports-Bcdppx0G.js} +2 -2
  642. package/dist/{ports-DAdQyjZz.d.ts → ports-Dcnuo3HT.d.ts} +1 -1
  643. package/dist/postgres/index.d.ts +4 -4
  644. package/dist/postgres/index.js +11 -5
  645. package/dist/{postgrest-Cw9Bs5gm.d.ts → postgrest-D6fEMsp4.d.ts} +1 -1
  646. package/dist/powersync/index.d.ts +3 -3
  647. package/dist/powersync/index.js +3 -3
  648. package/dist/powersync/react/index.d.ts +1 -1
  649. package/dist/powersync/react/index.js +1 -1
  650. package/dist/preset/index.d.ts +4 -352
  651. package/dist/preset/index.js +4 -564
  652. package/dist/preset-BBrL6_Ln.js +648 -0
  653. package/dist/{provider-9gBq9W6k.d.ts → provider-CQ1SrhLa.d.ts} +1 -1
  654. package/dist/{push-token-asrmi7-6.d.ts → push-token-CDMgWT13.d.ts} +1 -1
  655. package/dist/query/index.d.ts +1 -1
  656. package/dist/{rank-result-DS8IoLup.js → rank-result-oUF1DYBm.js} +1 -1
  657. package/dist/{rate-limit--QSiFA6D.js → rate-limit-ByfWNX9N.js} +5 -5
  658. package/dist/react/index.d.ts +7 -7
  659. package/dist/react/index.js +1 -1
  660. package/dist/react/native/index.d.ts +1 -1
  661. package/dist/react/server.d.ts +8 -8
  662. package/dist/react/server.js +1 -1
  663. package/dist/react/session.d.ts +2 -2
  664. package/dist/{react-CKXUkwPx.js → react-BcKACxsj.js} +1 -1
  665. package/dist/react-router/index.d.ts +6 -6
  666. package/dist/react-router/index.js +5 -5
  667. package/dist/{read-set-GEb-i0On.js → read-set-PWiJfv6S.js} +1 -1
  668. package/dist/realtime/index.d.ts +7 -7
  669. package/dist/realtime/index.js +2 -2
  670. package/dist/{refusal-oD3ISM9h.d.ts → refusal-Bdr1k47u.d.ts} +1 -1
  671. package/dist/{refusal-br4Ma9Cf.js → refusal-Ch-u9dVd.js} +2 -2
  672. package/dist/{resolve-w9EpHzuM.d.ts → resolve-7atr-wWr.d.ts} +2 -2
  673. package/dist/{resource-C8r5xGqY.js → resource-CHGOmg1O.js} +4 -4
  674. package/dist/{resource-B4ka8dDH.d.ts → resource-DxcgtHq6.d.ts} +1 -1
  675. package/dist/{resource-execute-D0yQ-8WR.d.ts → resource-execute-C45ICrN9.d.ts} +2 -2
  676. package/dist/{resource-types-D2vEQVXI.d.ts → resource-types-CC59gMHE.d.ts} +5 -5
  677. package/dist/{resources-BklF-rjz.d.ts → resources-B71O7EVQ.d.ts} +2 -2
  678. package/dist/{resources-BlZdLsWQ.js → resources-B7htXQeg.js} +1 -1
  679. package/dist/{respond-C7I8kLK_.d.ts → respond-Cdg5ibH5.d.ts} +1 -1
  680. package/dist/{respond-DdhZ9Wbn.js → respond-Dpx48ATq.js} +1 -1
  681. package/dist/{result-BlgnMB0H.js → result-COkvI9t5.js} +7 -1
  682. package/dist/{rules-B0-3Iosu.js → rules-4of_Fq-6.js} +31 -5
  683. package/dist/runtime-BOXURhEW.js +45 -0
  684. package/dist/{sales-lines-BAk8In-Z.js → sales-lines-CymdiwYd.js} +3 -3
  685. package/dist/{sales-shared-SblIgCgI.js → sales-shared-DjCuN8xG.js} +1 -1
  686. package/dist/{search-B6h03cAx.js → search-LbjCylX5.js} +3 -3
  687. package/dist/server/index.d.ts +20 -20
  688. package/dist/server/index.js +10 -10
  689. package/dist/{server-types-OohhIQb2.d.ts → server-types-fXwJoFjt.d.ts} +12 -12
  690. package/dist/{session-DiWHtYrO.d.ts → session-Djo5t4KQ.d.ts} +5 -5
  691. package/dist/{settings-BXFn9zpS.js → settings-DxXfDUmh.js} +4 -4
  692. package/dist/{shared-DbO3Dfms.js → shared-9B02lczf.js} +1 -1
  693. package/dist/{signatures-B41ApWXA.js → signatures-C9CGYZS1.js} +1 -1
  694. package/dist/{signers-CXt_wA9S.d.ts → signers-BjSgNAXP.d.ts} +4 -4
  695. package/dist/{signing-keys-Bq9mMCTh.d.ts → signing-keys-Ccr86Y2C.d.ts} +2 -2
  696. package/dist/solid/index.d.ts +7 -7
  697. package/dist/{solid-controller-DqlvYFZa.d.ts → solid-controller-CZrt1Tg6.d.ts} +1 -1
  698. package/dist/solid-start/index.d.ts +6 -6
  699. package/dist/solid-start/index.js +5 -5
  700. package/dist/spec/index.d.ts +2 -2
  701. package/dist/sql/index.d.ts +5 -709
  702. package/dist/sql/index.js +5 -86238
  703. package/dist/{sql-DJrXG-3Z.js → sql-BQshMgmB.js} +2 -2
  704. package/dist/sql-CgTZOQZ7.js +87439 -0
  705. package/dist/{sso-BN0LnMqE.d.ts → sso-B5ZoEsXE.d.ts} +3 -3
  706. package/dist/{sso-BDva_-4y.js → sso-CwAnve68.js} +3 -3
  707. package/dist/ssr/index.d.ts +4 -4
  708. package/dist/{standard-B5fe2gnW.js → standard-DZmwmIhV.js} +1 -1
  709. package/dist/{stats-D6vkb89f.js → stats-CUhqw6Ev.js} +2 -2
  710. package/dist/storage/index.d.ts +3 -3
  711. package/dist/storage/index.js +4 -4
  712. package/dist/{storage-api-Cx-1iWBd.d.ts → storage-api-B4Ib2Zpo.d.ts} +2 -2
  713. package/dist/streams/index.d.ts +1 -1
  714. package/dist/streams/index.js +2 -2
  715. package/dist/streams/redis/index.js +1 -1
  716. package/dist/{subject-readers-fxP5wu0s.d.ts → subject-readers-81xiWh4M.d.ts} +2 -2
  717. package/dist/{subject-readers-DiePmaYP.js → subject-readers-DDyPTIOr.js} +1 -1
  718. package/dist/{subjects-z8VWA_lF.d.ts → subjects-DP-fvFkk.d.ts} +8 -0
  719. package/dist/{support-BsKkvA92.js → support-BsqhV6jP.js} +5 -5
  720. package/dist/{support-view-BbcZR7Io.d.ts → support-view-CznLe4jq.d.ts} +1 -1
  721. package/dist/svelte/index.d.ts +6 -6
  722. package/dist/{svelte-controller-DxxHEHxD.d.ts → svelte-controller-DDbju9CW.d.ts} +1 -1
  723. package/dist/sveltekit/index.d.ts +7 -7
  724. package/dist/sveltekit/index.js +5 -5
  725. package/dist/{tags-Dw8vKkcI.d.ts → tags-7NHyD1P8.d.ts} +1 -1
  726. package/dist/{tags-PaG0Ns_9.js → tags-DGldvcA4.js} +5 -5
  727. package/dist/tanstack-db/index.d.ts +2 -2
  728. package/dist/tanstack-db/supabase/index.d.ts +2 -2
  729. package/dist/tanstack-start/index.d.ts +6 -6
  730. package/dist/tanstack-start/index.js +5 -5
  731. package/dist/{tax-D_kSCdWU.js → tax-DZDpMMRw.js} +1 -1
  732. package/dist/{tee-Bsisfd7t.js → tee-CdRV1tcj.js} +1 -1
  733. package/dist/{tenant-DdmVhsff.d.ts → tenant-DW_GmsW4.d.ts} +2 -2
  734. package/dist/testing/index.d.ts +23 -23
  735. package/dist/testing/index.js +8 -51
  736. package/dist/{topic-ByDz9edV.js → topic-DB-1YTMj.js} +35 -16
  737. package/dist/{topic-cMS7UtM1.d.ts → topic-Dgs-eSYQ.d.ts} +31 -17
  738. package/dist/{types-YfwpIE-d.d.ts → types-BO8lVTun.d.ts} +6 -0
  739. package/dist/{types-D0W4fnsc.d.ts → types-C_GN-4ed.d.ts} +4 -4
  740. package/dist/types-DGHfTW8_.d.ts +9 -0
  741. package/dist/{types-pNY_UpDs.d.ts → types-DM8q3IOr.d.ts} +3 -3
  742. package/dist/{types-6oiy6rIa.d.ts → types-DOaUIJxW.d.ts} +4 -4
  743. package/dist/{types-vaoP9S9_.d.ts → types-DZj8CZMH.d.ts} +22 -8
  744. package/dist/{types-CdP0z5tS.d.ts → types-P1S1cj6N.d.ts} +5 -5
  745. package/dist/{undo-CEGIRkPA.js → undo-0qM13zul.js} +3 -3
  746. package/dist/{undo-DGo0skyO.d.ts → undo-D42sPjCf.d.ts} +2 -2
  747. package/dist/{usage-CdlfuS3i.js → usage-BrJGPvCq.js} +2 -2
  748. package/dist/{usage-DM2rzczj.d.ts → usage-CnQHSM_r.d.ts} +4 -4
  749. package/dist/{vault-tOkPLnMB.d.ts → vault-EnOQJWjn.d.ts} +2 -2
  750. package/dist/vercel-connect/index.d.ts +1 -1
  751. package/dist/vercel-connect/index.js +1 -1
  752. package/dist/{verify-D63A2ALE.d.ts → verify-3NLjUIER.d.ts} +2 -2
  753. package/dist/{verify-EQcC3Khp.js → verify-C9D_jjsQ.js} +2 -2
  754. package/dist/{version-D87ZteKy.js → version-Bxj_xcUY.js} +1 -1
  755. package/dist/{view-Dv0A949a.d.ts → view-SuASaomx.d.ts} +1 -1
  756. package/dist/vue/index.d.ts +7 -7
  757. package/dist/{vue-controller-HPfMTDa2.d.ts → vue-controller-D_ohttBZ.d.ts} +1 -1
  758. package/dist/{watch-DT_B3CnJ.js → watch-Blj1mQ9n.js} +1 -1
  759. package/dist/{watch-DDuWYv0Y.d.ts → watch-D1wwzZ04.d.ts} +5 -5
  760. package/dist/{watch-topic-EFpOIIDE.d.ts → watch-topic-D-rpUg5n.d.ts} +1 -1
  761. package/dist/{workflow-builder-OrglbXUh.js → workflow-builder-C5DBN7yq.js} +25 -9
  762. package/dist/workflow-sdk/builder/index.d.ts +3 -3
  763. package/dist/workflow-sdk/builder/index.js +1 -1
  764. package/dist/workflow-sdk/index.d.ts +1 -1
  765. package/dist/workflow-sdk/index.js +1 -1
  766. package/dist/workflow-sdk/world/index.d.ts +1 -1
  767. package/dist/workflow-sdk/world/index.js +2 -2
  768. package/dist/{workflow-sdk-q8cLwW1K.d.ts → workflow-sdk-Di5pmCAu.d.ts} +3 -3
  769. package/dist/{workflow-sdk-BZ6qsRlY.js → workflow-sdk-vjDWlnfX.js} +1 -1
  770. package/dist/{workflows-DFQeXDAI.d.ts → workflows-DJXoxDZH.d.ts} +3 -3
  771. package/dist/{workflows-C-OvZpeg.js → workflows-DzdX28KN.js} +3 -3
  772. package/dist/yjs/index.d.ts +2 -2
  773. package/dist/yjs/index.js +2 -2
  774. package/package.json +27 -15
  775. package/schemas/config-v1.json +180 -7
  776. package/schemas/doctor-report-v1.json +7 -0
  777. package/skills/better-supabase/SKILL.md +1 -0
  778. package/skills/better-supabase/references/ui-recipes.md +683 -11
  779. package/dist/cli/add-CT6p5psO.js +0 -1
  780. package/dist/cli/adopt-C9jl8z0h.js +0 -1
  781. package/dist/cli/env-D3gZ-OHj.js +0 -1
  782. package/dist/cli/seed-DtRFysBe.js +0 -1
  783. package/dist/cli/{detect-DYDUBLU4.js → detect-BeLVeNpA.js} +1 -1
  784. package/dist/{client-b2_GjzzD.js → client-BGnJ5WJi.js} +1 -1
@@ -17267,7 +17267,7 @@ export function TeamPicker({
17267
17267
 
17268
17268
  ## Record grid
17269
17269
 
17270
- An app table as a data grid with search, filters, saved views and bulk actions on the selected rows. It loads its data on the server through the block's client; the [saved-views block](https://bettersupabase.com/blocks/saved-views) must be installed (`npx better-supabase add saved-views`). Page: https://bettersupabase.com/recipes/record-grid.
17270
+ An app table as a data grid with search, filters, saved views and bulk actions on the selected rows, including Set field through `appTables.set`. It loads its data on the server through the block's client; the [saved-views block](https://bettersupabase.com/blocks/saved-views) must be installed (`npx better-supabase add saved-views`). Page: https://bettersupabase.com/recipes/record-grid.
17271
17271
 
17272
17272
  Web, with shadcn components:
17273
17273
 
@@ -17537,6 +17537,170 @@ function SaveTaskViewDialog({ query }: { query: TaskQuery }) {
17537
17537
  );
17538
17538
  }
17539
17539
 
17540
+ const UNASSIGNED = "unassigned";
17541
+
17542
+ type SetField = "due_on" | "assignee_id";
17543
+
17544
+ /**
17545
+ * Sets one field on the selected tasks with the bulk block's
17546
+ * `appTables.set`. An empty value clears the field.
17547
+ */
17548
+ function SetFieldDialog({
17549
+ ids,
17550
+ members,
17551
+ onDone,
17552
+ }: {
17553
+ ids: readonly string[];
17554
+ members: readonly MemberOption[];
17555
+ onDone: () => void;
17556
+ }) {
17557
+ const t = useExtracted("projects");
17558
+ const fieldId = useId();
17559
+ const errorMessage = useErrorMessage();
17560
+ const [open, setOpen] = useState(false);
17561
+ const [field, setField] = useState<SetField>("due_on");
17562
+ const [dueOn, setDueOn] = useState("");
17563
+ const [assignee, setAssignee] = useState(UNASSIGNED);
17564
+
17565
+ const set = useAction(setTaskField, {
17566
+ onSuccess: (count) => {
17567
+ toast.success(
17568
+ t("{count, plural, one {# task} other {# tasks}} changed", { count }),
17569
+ );
17570
+ setOpen(false);
17571
+ onDone();
17572
+ },
17573
+ onError: (error) => {
17574
+ toast.error(errorMessage(error));
17575
+ },
17576
+ });
17577
+
17578
+ const fields = [
17579
+ { value: "due_on", label: t("Due date") },
17580
+ { value: "assignee_id", label: t("Assignee") },
17581
+ ] as const satisfies readonly { value: SetField; label: string }[];
17582
+
17583
+ const people = [
17584
+ { value: UNASSIGNED, label: t("Unassigned") },
17585
+ ...members.map((member) => ({ value: member.userId, label: member.name })),
17586
+ ];
17587
+
17588
+ return (
17589
+ <Dialog open={open} onOpenChange={setOpen}>
17590
+ <DialogTrigger render={<Button size="sm" variant="outline" />}>
17591
+ {t("Set field")}
17592
+ </DialogTrigger>
17593
+ <DialogContent>
17594
+ <form
17595
+ className="grid gap-6"
17596
+ onSubmit={(event) => {
17597
+ event.preventDefault();
17598
+ void set.run({
17599
+ ids: [...ids],
17600
+ values:
17601
+ field === "due_on"
17602
+ ? { due_on: dueOn === "" ? null : dueOn }
17603
+ : {
17604
+ assignee_id: assignee === UNASSIGNED ? null : assignee,
17605
+ },
17606
+ });
17607
+ }}
17608
+ >
17609
+ <DialogHeader>
17610
+ <DialogTitle>
17611
+ {t(
17612
+ "Set a field on {count, plural, one {# task} other {# tasks}}",
17613
+ { count: ids.length },
17614
+ )}
17615
+ </DialogTitle>
17616
+ <DialogDescription>
17617
+ {t("Leave the value empty to clear the field.")}
17618
+ </DialogDescription>
17619
+ </DialogHeader>
17620
+ <div className="grid gap-4">
17621
+ <Field>
17622
+ <FieldLabel htmlFor={`${fieldId}-field`}>{t("Field")}</FieldLabel>
17623
+ <Select
17624
+ value={field}
17625
+ items={fields}
17626
+ onValueChange={(value) => {
17627
+ const picked = fields.find((each) => each.value === value);
17628
+
17629
+ if (picked) {
17630
+ setField(picked.value);
17631
+ }
17632
+ }}
17633
+ >
17634
+ <SelectTrigger id={`${fieldId}-field`} className="w-full">
17635
+ <SelectValue />
17636
+ </SelectTrigger>
17637
+ <SelectContent>
17638
+ {fields.map((each) => (
17639
+ <SelectItem key={each.value} value={each.value}>
17640
+ {each.label}
17641
+ </SelectItem>
17642
+ ))}
17643
+ </SelectContent>
17644
+ </Select>
17645
+ </Field>
17646
+ {field === "due_on" ? (
17647
+ <Field>
17648
+ <FieldLabel htmlFor={`${fieldId}-due`}>
17649
+ {t("Due date")}
17650
+ </FieldLabel>
17651
+ <Input
17652
+ id={`${fieldId}-due`}
17653
+ type="date"
17654
+ value={dueOn}
17655
+ onChange={(event) => {
17656
+ setDueOn(event.target.value);
17657
+ }}
17658
+ />
17659
+ </Field>
17660
+ ) : (
17661
+ <Field>
17662
+ <FieldLabel htmlFor={`${fieldId}-assignee`}>
17663
+ {t("Assignee")}
17664
+ </FieldLabel>
17665
+ <Select
17666
+ value={assignee}
17667
+ items={people}
17668
+ onValueChange={(value) => {
17669
+ const person = people.find((each) => each.value === value);
17670
+
17671
+ if (person) {
17672
+ setAssignee(person.value);
17673
+ }
17674
+ }}
17675
+ >
17676
+ <SelectTrigger id={`${fieldId}-assignee`} className="w-full">
17677
+ <SelectValue />
17678
+ </SelectTrigger>
17679
+ <SelectContent>
17680
+ {people.map((person) => (
17681
+ <SelectItem key={person.value} value={person.value}>
17682
+ {person.label}
17683
+ </SelectItem>
17684
+ ))}
17685
+ </SelectContent>
17686
+ </Select>
17687
+ </Field>
17688
+ )}
17689
+ </div>
17690
+ <DialogFooter>
17691
+ <DialogClose render={<Button type="button" variant="outline" />}>
17692
+ {t("Cancel")}
17693
+ </DialogClose>
17694
+ <Button type="submit" disabled={set.pending}>
17695
+ {t("Apply")}
17696
+ </Button>
17697
+ </DialogFooter>
17698
+ </form>
17699
+ </DialogContent>
17700
+ </Dialog>
17701
+ );
17702
+ }
17703
+
17540
17704
  type GridRow = TaskRow & {
17541
17705
  readonly projectName: string;
17542
17706
  readonly assigneeName: string;
@@ -17568,7 +17732,8 @@ function StatusCell({ row }: GridCell) {
17568
17732
 
17569
17733
  /**
17570
17734
  * Tasks in a ReUI data grid. The checkboxes feed a bulk bar that sets the
17571
- * status of the selected rows or deletes them in one statement.
17735
+ * status of the selected rows, sets another field through the bulk block,
17736
+ * or deletes them in one statement.
17572
17737
  */
17573
17738
  export function TaskGrid({
17574
17739
  rows,
@@ -17652,6 +17817,13 @@ export function TaskGrid({
17652
17817
  {t("Mark {status}", { status: statusLabel(status) })}
17653
17818
  </Button>
17654
17819
  ))}
17820
+ <SetFieldDialog
17821
+ ids={ids}
17822
+ members={members}
17823
+ onDone={() => {
17824
+ setSelection({});
17825
+ }}
17826
+ />
17655
17827
  <Button
17656
17828
  size="sm"
17657
17829
  variant="destructive"
@@ -17931,14 +18103,16 @@ export async function ProjectPage({
17931
18103
  notFound();
17932
18104
  }
17933
18105
 
17934
- const [project, tasks, members, t, format, locale] = await Promise.all([
17935
- settle(() => getProject(id)),
17936
- settle(() => getTasks({ q: "", status: null, projectId: id })),
17937
- settle(() => getMemberOptions(organizationId)),
17938
- getExtracted("projects"),
17939
- getFormatter(),
17940
- getLocale(),
17941
- ]);
18106
+ const [project, tasks, members, history, t, format, locale] =
18107
+ await Promise.all([
18108
+ settle(() => getProject(id)),
18109
+ settle(() => getTasks({ q: "", status: null, projectId: id })),
18110
+ settle(() => getMemberOptions(organizationId)),
18111
+ settle(() => getProjectHistory(id)),
18112
+ getExtracted("projects"),
18113
+ getFormatter(),
18114
+ getLocale(),
18115
+ ]);
17942
18116
 
17943
18117
  if (project.kind !== "ok" || tasks.kind !== "ok" || members.kind !== "ok") {
17944
18118
  return <ProjectLoadError title={t("The project didn't load")} />;
@@ -17982,7 +18156,10 @@ export async function ProjectPage({
17982
18156
  count: tasks.data.length,
17983
18157
  })}
17984
18158
  </CardDescription>
17985
- <CardAction>
18159
+ <CardAction className="flex items-center gap-2">
18160
+ {can(session, "imports.manage") ? (
18161
+ <TaskImportDialog projectId={record.id} />
18162
+ ) : null}
17986
18163
  <TaskFormDialog
17987
18164
  projects={[{ id: record.id, name: record.name }]}
17988
18165
  members={members.data}
@@ -18068,6 +18245,16 @@ export async function ProjectPage({
18068
18245
  </dl>
18069
18246
  </CardContent>
18070
18247
  </Card>
18248
+ {history.kind === "ok" ? (
18249
+ <ProjectHistory
18250
+ projectId={record.id}
18251
+ versions={history.data}
18252
+ canSave={can(session, "versions.create")}
18253
+ canRestore={can(session, "versions.restore")}
18254
+ />
18255
+ ) : (
18256
+ <ProjectLoadError title={t("The history didn't load")} />
18257
+ )}
18071
18258
  <Card size="sm" data-recipe="tag-input">
18072
18259
  <CardHeader>
18073
18260
  <CardTitle>{t("Tags")}</CardTitle>
@@ -18650,3 +18837,488 @@ export async function TaskGantt({
18650
18837
  );
18651
18838
  }
18652
18839
  ```
18840
+
18841
+ ## Record history
18842
+
18843
+ Every version `subject.versions` kept of a row, with the fields each one changed and a restore per field. It loads its data on the server through the block's client; the [versions block](https://bettersupabase.com/blocks/versions) must be installed (`npx better-supabase add versions`). Page: https://bettersupabase.com/recipes/record-history.
18844
+
18845
+ Web, with shadcn components:
18846
+
18847
+ ```bash
18848
+ npx shadcn add badge button card empty
18849
+ ```
18850
+
18851
+ ```tsx title="apps/examples/nextjs/src/features/projects/components/project-history.tsx"
18852
+ interface FieldChange {
18853
+ readonly field: ProjectHistoryField;
18854
+ readonly before: string | undefined;
18855
+ readonly after: string | undefined;
18856
+ }
18857
+
18858
+ /** The fields a version changed from the one before it; all of them for the first. */
18859
+ function changesOf(
18860
+ version: ProjectVersion,
18861
+ previous: ProjectVersion | undefined,
18862
+ ): readonly FieldChange[] {
18863
+ return PROJECT_HISTORY_FIELDS.flatMap((field) => {
18864
+ const after = version.fields[field];
18865
+ const before = previous?.fields[field];
18866
+
18867
+ return previous !== undefined && before === after
18868
+ ? []
18869
+ : [{ field, before, after }];
18870
+ });
18871
+ }
18872
+
18873
+ /**
18874
+ * The project's history: every version the snapshot trigger kept, with the
18875
+ * fields it changed. Restore writes one field of an older version back and
18876
+ * leaves the others as they are.
18877
+ */
18878
+ export function ProjectHistory({
18879
+ projectId,
18880
+ versions,
18881
+ canSave,
18882
+ canRestore,
18883
+ }: {
18884
+ projectId: string;
18885
+ versions: readonly ProjectVersion[];
18886
+ canSave: boolean;
18887
+ canRestore: boolean;
18888
+ }) {
18889
+ const t = useExtracted("projects");
18890
+
18891
+ return (
18892
+ <Card size="sm" data-recipe="record-history">
18893
+ <CardHeader>
18894
+ <CardTitle>{t("History")}</CardTitle>
18895
+ <CardDescription>
18896
+ {t("Each change to the name, budget or currency.")}
18897
+ </CardDescription>
18898
+ </CardHeader>
18899
+ <CardContent>
18900
+ {versions.length === 0 ? (
18901
+ <Empty className="border">
18902
+ <EmptyHeader>
18903
+ <EmptyMedia variant="icon">
18904
+ <HistoryIcon />
18905
+ </EmptyMedia>
18906
+ <EmptyTitle>{t("No history yet")}</EmptyTitle>
18907
+ <EmptyDescription>
18908
+ {t("The next change to this project appears here.")}
18909
+ </EmptyDescription>
18910
+ </EmptyHeader>
18911
+ {canSave ? (
18912
+ <EmptyContent>
18913
+ <SaveVersionButton projectId={projectId} />
18914
+ </EmptyContent>
18915
+ ) : null}
18916
+ </Empty>
18917
+ ) : (
18918
+ <ol className="flex flex-col divide-y" data-testid="project-history">
18919
+ {versions.map((version, index) => (
18920
+ <VersionEntry
18921
+ key={version.id}
18922
+ projectId={projectId}
18923
+ version={version}
18924
+ changes={changesOf(version, versions[index + 1])}
18925
+ canRestore={canRestore && index > 0}
18926
+ />
18927
+ ))}
18928
+ </ol>
18929
+ )}
18930
+ </CardContent>
18931
+ </Card>
18932
+ );
18933
+ }
18934
+
18935
+ function VersionEntry({
18936
+ projectId,
18937
+ version,
18938
+ changes,
18939
+ canRestore,
18940
+ }: {
18941
+ projectId: string;
18942
+ version: ProjectVersion;
18943
+ changes: readonly FieldChange[];
18944
+ canRestore: boolean;
18945
+ }) {
18946
+ const t = useExtracted("projects");
18947
+ const format = useFormatter();
18948
+ const locale = useLocale();
18949
+ const errorMessage = useErrorMessage();
18950
+
18951
+ const restore = useAction(restoreProjectFields, {
18952
+ onSuccess: () => {
18953
+ toast.success(t("Field restored"));
18954
+ },
18955
+ onError: (error) => {
18956
+ toast.error(errorMessage(error));
18957
+ },
18958
+ });
18959
+
18960
+ const label = {
18961
+ name: t("Name"),
18962
+ budget_minor: t("Budget"),
18963
+ currency: t("Currency"),
18964
+ } as const satisfies Record<ProjectHistoryField, string>;
18965
+
18966
+ const source = {
18967
+ manual: t("Saved"),
18968
+ auto: t("Edited"),
18969
+ restore: t("Restored"),
18970
+ } as const satisfies Record<ProjectVersion["source"], string>;
18971
+
18972
+ const shown = (field: ProjectHistoryField, value: string | undefined) => {
18973
+ if (value === undefined) {
18974
+ return t("Empty");
18975
+ }
18976
+
18977
+ return field === "budget_minor"
18978
+ ? formatMoney(
18979
+ money(BigInt(value), version.fields.currency ?? "EUR"),
18980
+ locale,
18981
+ )
18982
+ : value;
18983
+ };
18984
+
18985
+ return (
18986
+ <li className="flex flex-col gap-2 py-3">
18987
+ <div className="flex items-center gap-2">
18988
+ <span className="text-sm font-medium">
18989
+ {t("Version {number}", { number: String(version.number) })}
18990
+ </span>
18991
+ <Badge variant="secondary">{source[version.source]}</Badge>
18992
+ <span className="ml-auto text-xs text-muted-foreground">
18993
+ {format.dateTime(version.createdAt, {
18994
+ dateStyle: "medium",
18995
+ timeStyle: "short",
18996
+ })}
18997
+ </span>
18998
+ </div>
18999
+ <dl className="flex flex-col gap-1">
19000
+ {changes.map((change) => (
19001
+ <div key={change.field} className="flex items-center gap-2 text-sm">
19002
+ <dt className="w-20 shrink-0 text-muted-foreground">
19003
+ {label[change.field]}
19004
+ </dt>
19005
+ <dd className="flex min-w-0 flex-1 items-center gap-1">
19006
+ {change.before === undefined ? null : (
19007
+ <>
19008
+ <span className="truncate text-muted-foreground line-through">
19009
+ {shown(change.field, change.before)}
19010
+ </span>
19011
+ <ArrowRightIcon className="size-3 shrink-0 text-muted-foreground" />
19012
+ </>
19013
+ )}
19014
+ <span className="truncate">
19015
+ {shown(change.field, change.after)}
19016
+ </span>
19017
+ </dd>
19018
+ {canRestore ? (
19019
+ <Button
19020
+ size="xs"
19021
+ variant="ghost"
19022
+ disabled={restore.pending}
19023
+ aria-label={t("Restore {field} from version {number}", {
19024
+ field: label[change.field],
19025
+ number: String(version.number),
19026
+ })}
19027
+ onClick={() => {
19028
+ void restore.run({
19029
+ projectId,
19030
+ versionId: version.id,
19031
+ fields: [change.field],
19032
+ });
19033
+ }}
19034
+ >
19035
+ {t("Restore")}
19036
+ </Button>
19037
+ ) : null}
19038
+ </div>
19039
+ ))}
19040
+ </dl>
19041
+ </li>
19042
+ );
19043
+ }
19044
+
19045
+ function SaveVersionButton({ projectId }: { projectId: string }) {
19046
+ const t = useExtracted("projects");
19047
+ const errorMessage = useErrorMessage();
19048
+
19049
+ const save = useAction(saveProjectVersion, {
19050
+ onSuccess: () => {
19051
+ toast.success(t("Version saved"));
19052
+ },
19053
+ onError: (error) => {
19054
+ toast.error(errorMessage(error));
19055
+ },
19056
+ });
19057
+
19058
+ return (
19059
+ <Button
19060
+ size="sm"
19061
+ variant="outline"
19062
+ disabled={save.pending}
19063
+ onClick={() => {
19064
+ void save.run({ projectId });
19065
+ }}
19066
+ >
19067
+ <HistoryIcon />
19068
+ {t("Save a version")}
19069
+ </Button>
19070
+ );
19071
+ }
19072
+ ```
19073
+
19074
+ ## Upsert import
19075
+
19076
+ Paste CSV, map its columns, preview the rows it creates and changes, then upsert them on one of the table's unique sets. It loads its data on the server through the block's client; the [imports block](https://bettersupabase.com/blocks/imports) must be installed (`npx better-supabase add imports`). Page: https://bettersupabase.com/recipes/upsert-import.
19077
+
19078
+ Web, with shadcn components:
19079
+
19080
+ ```bash
19081
+ npx shadcn add alert badge button dialog field select skeleton textarea
19082
+ ```
19083
+
19084
+ ```tsx title="apps/examples/nextjs/src/features/projects/components/task-import-dialog.tsx"
19085
+ const SKIP = "skip";
19086
+
19087
+ type Choice = TaskImportField | typeof SKIP;
19088
+
19089
+ function isChoice(value: unknown): value is Choice {
19090
+ return value === SKIP || TASK_IMPORT_FIELDS.some((field) => field === value);
19091
+ }
19092
+
19093
+ /** The mapped columns, without the skipped ones. */
19094
+ function mappedOnly(
19095
+ mapping: Readonly<Record<string, Choice>>,
19096
+ ): Record<string, TaskImportField> {
19097
+ return Object.fromEntries(
19098
+ Object.entries(mapping).flatMap(([header, choice]) =>
19099
+ choice === SKIP ? [] : [[header, choice]],
19100
+ ),
19101
+ );
19102
+ }
19103
+
19104
+ /**
19105
+ * Imports tasks into the project from pasted CSV: map the columns, preview
19106
+ * what the file creates and changes, then run it. A task with the same
19107
+ * title in the project is updated instead of added twice.
19108
+ */
19109
+ export function TaskImportDialog({ projectId }: { projectId: string }) {
19110
+ const t = useExtracted("projects");
19111
+ const id = useId();
19112
+ const errorMessage = useErrorMessage();
19113
+ const [open, setOpen] = useState(false);
19114
+ const [csv, setCsv] = useState("");
19115
+ const [mapping, setMapping] = useState<Record<string, Choice>>({});
19116
+ const preview = useAction(previewTaskImport);
19117
+
19118
+ const run = useAction(runTaskImport, {
19119
+ onSuccess: ({ status, imported }) => {
19120
+ if (status === "completed") {
19121
+ toast.success(
19122
+ t("{count, plural, one {# task} other {# tasks}} imported", {
19123
+ count: imported,
19124
+ }),
19125
+ );
19126
+ setOpen(false);
19127
+ setCsv("");
19128
+ setMapping({});
19129
+ preview.reset();
19130
+ } else {
19131
+ toast.error(t("The file has rows that need fixing."));
19132
+ }
19133
+ },
19134
+ onError: (error) => {
19135
+ toast.error(errorMessage(error));
19136
+ },
19137
+ });
19138
+
19139
+ const [headers = []] = csv.trim() === "" ? [] : parseCsv(csv);
19140
+ const titleMapped = Object.values(mapping).includes("title");
19141
+
19142
+ const label = {
19143
+ title: t("Title"),
19144
+ status: t("Status"),
19145
+ dueOn: t("Due date"),
19146
+ } as const satisfies Record<TaskImportField, string>;
19147
+
19148
+ const choices = [
19149
+ { value: SKIP, label: t("Skip") },
19150
+ ...TASK_IMPORT_FIELDS.map((field) => ({
19151
+ value: field,
19152
+ label: label[field],
19153
+ })),
19154
+ ];
19155
+
19156
+ const changeCsv = (text: string) => {
19157
+ setCsv(text);
19158
+ preview.reset();
19159
+
19160
+ const [first = []] = text.trim() === "" ? [] : parseCsv(text);
19161
+ const suggested = suggestMapping(first, TASK_IMPORT_FIELDS);
19162
+
19163
+ setMapping(
19164
+ Object.fromEntries(
19165
+ first.map((header) => {
19166
+ const field = suggested[header];
19167
+
19168
+ return [header, isChoice(field) ? field : SKIP];
19169
+ }),
19170
+ ),
19171
+ );
19172
+ };
19173
+
19174
+ const input = { projectId, csv, mapping: mappedOnly(mapping) };
19175
+
19176
+ const runPreview = () => {
19177
+ void preview.run(input);
19178
+ };
19179
+
19180
+ return (
19181
+ <Dialog open={open} onOpenChange={setOpen}>
19182
+ <DialogTrigger render={<Button size="sm" variant="outline" />}>
19183
+ <UploadIcon />
19184
+ {t("Import")}
19185
+ </DialogTrigger>
19186
+ <DialogContent data-recipe="upsert-import">
19187
+ <DialogHeader>
19188
+ <DialogTitle>{t("Import tasks")}</DialogTitle>
19189
+ <DialogDescription>
19190
+ {t(
19191
+ "Paste CSV with a title column. A title the project already has updates that task.",
19192
+ )}
19193
+ </DialogDescription>
19194
+ </DialogHeader>
19195
+ <div className="flex flex-col gap-4">
19196
+ <Field>
19197
+ <FieldLabel htmlFor={`${id}-csv`}>{t("CSV")}</FieldLabel>
19198
+ <Textarea
19199
+ id={`${id}-csv`}
19200
+ rows={5}
19201
+ value={csv}
19202
+ placeholder={"title,status,due\nWrite the brief,todo,2026-11-02"}
19203
+ onChange={(event) => {
19204
+ changeCsv(event.target.value);
19205
+ }}
19206
+ />
19207
+ </Field>
19208
+ {headers.length > 0 ? (
19209
+ <div className="grid gap-3 sm:grid-cols-2">
19210
+ {headers.map((header) => (
19211
+ <Field key={header}>
19212
+ <FieldLabel htmlFor={`${id}-${header}`}>{header}</FieldLabel>
19213
+ <Select
19214
+ value={mapping[header] ?? SKIP}
19215
+ items={choices}
19216
+ onValueChange={(value) => {
19217
+ if (isChoice(value)) {
19218
+ setMapping((current) => ({
19219
+ ...current,
19220
+ [header]: value,
19221
+ }));
19222
+ preview.reset();
19223
+ }
19224
+ }}
19225
+ >
19226
+ <SelectTrigger
19227
+ id={`${id}-${header}`}
19228
+ size="sm"
19229
+ className="w-full"
19230
+ >
19231
+ <SelectValue />
19232
+ </SelectTrigger>
19233
+ <SelectContent>
19234
+ {choices.map((choice) => (
19235
+ <SelectItem key={choice.value} value={choice.value}>
19236
+ {choice.label}
19237
+ </SelectItem>
19238
+ ))}
19239
+ </SelectContent>
19240
+ </Select>
19241
+ </Field>
19242
+ ))}
19243
+ </div>
19244
+ ) : null}
19245
+ {preview.error ? (
19246
+ <Alert variant="destructive">
19247
+ <TriangleAlertIcon />
19248
+ <AlertTitle>{t("The preview didn't load")}</AlertTitle>
19249
+ <AlertDescription>{errorMessage(preview.error)}</AlertDescription>
19250
+ <AlertAction>
19251
+ <Button size="sm" variant="outline" onClick={runPreview}>
19252
+ {t("Retry")}
19253
+ </Button>
19254
+ </AlertAction>
19255
+ </Alert>
19256
+ ) : preview.pending ? (
19257
+ <Skeleton className="h-8" />
19258
+ ) : preview.data ? (
19259
+ <div className="flex flex-col gap-2" data-testid="import-preview">
19260
+ <div className="flex flex-wrap items-center gap-2">
19261
+ <Badge variant="success-light">
19262
+ {t("{count, plural, one {# new} other {# new}}", {
19263
+ count: preview.data.created,
19264
+ })}
19265
+ </Badge>
19266
+ <Badge variant="info-light">
19267
+ {t("{count, plural, one {# changed} other {# changed}}", {
19268
+ count: preview.data.changed,
19269
+ })}
19270
+ </Badge>
19271
+ <Badge variant="secondary">
19272
+ {t("{count, plural, one {# unchanged} other {# unchanged}}", {
19273
+ count: preview.data.unchanged,
19274
+ })}
19275
+ </Badge>
19276
+ {preview.data.errors.length > 0 ? (
19277
+ <Badge variant="destructive-light">
19278
+ {t("{count, plural, one {# error} other {# errors}}", {
19279
+ count: preview.data.errors.length,
19280
+ })}
19281
+ </Badge>
19282
+ ) : null}
19283
+ </div>
19284
+ {preview.data.errors.slice(0, 5).map((error) => (
19285
+ <p
19286
+ key={`${error.row}:${error.message}`}
19287
+ className="text-xs text-destructive"
19288
+ >
19289
+ {t("Row {row}: {message}", {
19290
+ row: String(error.row),
19291
+ message: error.message,
19292
+ })}
19293
+ </p>
19294
+ ))}
19295
+ </div>
19296
+ ) : null}
19297
+ </div>
19298
+ <DialogFooter>
19299
+ <DialogClose render={<Button type="button" variant="outline" />}>
19300
+ {t("Cancel")}
19301
+ </DialogClose>
19302
+ {preview.data && preview.data.errors.length === 0 ? (
19303
+ <Button
19304
+ disabled={run.pending}
19305
+ onClick={() => {
19306
+ void run.run(input);
19307
+ }}
19308
+ >
19309
+ {t("Import")}
19310
+ </Button>
19311
+ ) : (
19312
+ <Button
19313
+ disabled={!titleMapped || preview.pending}
19314
+ onClick={runPreview}
19315
+ >
19316
+ {t("Preview")}
19317
+ </Button>
19318
+ )}
19319
+ </DialogFooter>
19320
+ </DialogContent>
19321
+ </Dialog>
19322
+ );
19323
+ }
19324
+ ```