better-supabase 0.5.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +299 -41
- package/dist/access-sql-B0dF-SoF.js +181 -0
- package/dist/actor-CQTlc1Hh.d.ts +43 -0
- package/dist/adapter-Bc1o3zyy.js +1106 -0
- package/dist/agents-CVHGd7It.d.ts +94 -0
- package/dist/ai-cache-CBWs1W0k.js +80 -0
- package/dist/ai-cache-DaDu_G5L.d.ts +64 -0
- package/dist/ai-chat-7amvXjmQ.d.ts +590 -0
- package/dist/ai-chat-B24UI962.js +743 -0
- package/dist/ai-files-CSPNswUY.js +319 -0
- package/dist/ai-sdk/agents/index.d.ts +74 -0
- package/dist/ai-sdk/agents/index.js +159 -0
- package/dist/ai-sdk/batches/index.d.ts +74 -0
- package/dist/ai-sdk/batches/index.js +180 -0
- package/dist/ai-sdk/cache/index.d.ts +38 -0
- package/dist/ai-sdk/cache/index.js +127 -0
- package/dist/ai-sdk/chat/index.d.ts +2 -0
- package/dist/ai-sdk/chat/index.js +246 -0
- package/dist/ai-sdk/embeddings/index.d.ts +3 -0
- package/dist/ai-sdk/embeddings/index.js +2 -0
- package/dist/ai-sdk/files/index.d.ts +61 -0
- package/dist/ai-sdk/files/index.js +111 -0
- package/dist/ai-sdk/index.d.ts +145 -0
- package/dist/ai-sdk/index.js +174 -0
- package/dist/ai-sdk/mcp/index.d.ts +102 -0
- package/dist/ai-sdk/mcp/index.js +362 -0
- package/dist/ai-sdk/memory/index.d.ts +67 -0
- package/dist/ai-sdk/memory/index.js +175 -0
- package/dist/ai-sdk/react/index.d.ts +2 -0
- package/dist/ai-sdk/react/index.js +3 -0
- package/dist/ai-sdk/react/server.d.ts +6 -0
- package/dist/ai-sdk/react/server.js +7 -0
- package/dist/ai-sdk/workflow/index.d.ts +249 -0
- package/dist/ai-sdk/workflow/index.js +575 -0
- package/dist/ai-sdk/workflow/react/index.d.ts +20 -0
- package/dist/ai-sdk/workflow/react/index.js +66 -0
- package/dist/ai-sdk/workflow/react/server.d.ts +10 -0
- package/dist/ai-sdk/workflow/react/server.js +12 -0
- package/dist/ai-tasks-Cd1HMFvB.d.ts +131 -0
- package/dist/announcements-CiyOs-xP.js +107 -0
- package/dist/announcements-ZRGnScWI.d.ts +72 -0
- package/dist/api-keys-rCGtKaZA.d.ts +156 -0
- package/dist/assistant-DwdpDH1q.d.ts +147 -0
- package/dist/astro/index.d.ts +86 -0
- package/dist/astro/index.js +93 -0
- package/dist/attributes-5dYul0u0.js +13 -0
- package/dist/auth-link-BjFPqwLz.d.ts +97 -0
- package/dist/auth-link-DrDX9KOT.js +114 -0
- package/dist/authorization-BFCqamMs.d.ts +172 -0
- package/dist/before-route-CnR0C0Jr.js +30 -0
- package/dist/bind-Bu_ZNa3W.d.ts +62 -0
- package/dist/bind-l4kAvYSv.js +97 -0
- package/dist/block-events-CrT8r7Fe.js +76 -0
- package/dist/block-fields-GFkxl4dP.js +49 -0
- package/dist/block-fields-SJ6fEf3o.d.ts +31 -0
- package/dist/block-helpers-CKtbFcRv.d.ts +37 -0
- package/dist/block-helpers-DWHxHsEQ.js +190 -0
- package/dist/block-hooks-BmjMyXTa.js +114 -0
- package/dist/block-hooks-plbZ0AbJ.d.ts +107 -0
- package/dist/{kit-transport-DJlHQUBU.js → block-transport-BLr-ZgLc.js} +11 -7
- package/dist/block-transport-DvaoPuZ9.d.ts +48 -0
- package/dist/blocks/agents/index.d.ts +3 -0
- package/dist/blocks/agents/index.js +123 -0
- package/dist/blocks/ai-cache/index.d.ts +3 -0
- package/dist/blocks/ai-cache/index.js +3 -0
- package/dist/blocks/ai-chat/index.d.ts +31 -0
- package/dist/blocks/ai-chat/index.js +5 -0
- package/dist/blocks/ai-chat/react/index.d.ts +77 -0
- package/dist/blocks/ai-chat/react/index.js +387 -0
- package/dist/blocks/ai-chat/react/server.d.ts +16 -0
- package/dist/blocks/ai-chat/react/server.js +14 -0
- package/dist/blocks/ai-files/index.d.ts +14 -0
- package/dist/blocks/ai-files/index.js +3 -0
- package/dist/blocks/ai-providers/index.d.ts +7 -0
- package/dist/blocks/ai-providers/index.js +211 -0
- package/dist/blocks/ai-tasks/index.d.ts +3 -0
- package/dist/blocks/ai-tasks/index.js +203 -0
- package/dist/blocks/announcements/index.d.ts +3 -0
- package/dist/blocks/announcements/index.js +3 -0
- package/dist/blocks/announcements/react/index.d.ts +31 -0
- package/dist/blocks/announcements/react/index.js +86 -0
- package/dist/blocks/announcements/react/server.d.ts +6 -0
- package/dist/blocks/announcements/react/server.js +7 -0
- package/dist/blocks/api-keys/index.d.ts +35 -0
- package/dist/blocks/api-keys/index.js +334 -0
- package/dist/blocks/attachments/index.d.ts +210 -0
- package/dist/blocks/attachments/index.js +222 -0
- package/dist/blocks/audit/index.d.ts +366 -0
- package/dist/blocks/audit/index.js +714 -0
- package/dist/blocks/billing/index.d.ts +265 -0
- package/dist/blocks/billing/index.js +400 -0
- package/dist/blocks/comments/index.d.ts +200 -0
- package/dist/blocks/comments/index.js +207 -0
- package/dist/blocks/connectors/index.d.ts +3 -0
- package/dist/blocks/connectors/index.js +164 -0
- package/dist/blocks/data-lifecycle/index.d.ts +251 -0
- package/dist/blocks/data-lifecycle/index.js +353 -0
- package/dist/blocks/entitlements/index.d.ts +14 -0
- package/dist/blocks/entitlements/index.js +25 -0
- package/dist/blocks/flags/index.d.ts +226 -0
- package/dist/blocks/flags/index.js +282 -0
- package/dist/blocks/inbox/index.d.ts +6 -0
- package/dist/blocks/inbox/index.js +499 -0
- package/dist/blocks/inbox/react/index.d.ts +2 -0
- package/dist/blocks/inbox/react/index.js +225 -0
- package/dist/blocks/inbox/react/server.d.ts +10 -0
- package/dist/blocks/inbox/react/server.js +12 -0
- package/dist/blocks/index.d.ts +65 -0
- package/dist/blocks/index.js +77 -0
- package/dist/blocks/jobs/index.d.ts +297 -0
- package/dist/blocks/jobs/index.js +1051 -0
- package/dist/blocks/knowledge/index.d.ts +3 -0
- package/dist/blocks/knowledge/index.js +3 -0
- package/dist/blocks/memory/index.d.ts +8 -0
- package/dist/blocks/memory/index.js +289 -0
- package/dist/blocks/notifications/index.d.ts +297 -0
- package/dist/blocks/notifications/index.js +425 -0
- package/dist/blocks/notifications/react/index.d.ts +44 -0
- package/dist/blocks/notifications/react/index.js +67 -0
- package/dist/blocks/notifications/react/server.d.ts +6 -0
- package/dist/blocks/notifications/react/server.js +7 -0
- package/dist/blocks/onboarding/index.d.ts +3 -0
- package/dist/blocks/onboarding/index.js +64 -0
- package/dist/blocks/onboarding/react/index.d.ts +28 -0
- package/dist/blocks/onboarding/react/index.js +78 -0
- package/dist/blocks/onboarding/react/server.d.ts +7 -0
- package/dist/blocks/onboarding/react/server.js +7 -0
- package/dist/blocks/organizations/index.d.ts +241 -0
- package/dist/blocks/organizations/index.js +400 -0
- package/dist/blocks/outbox/index.d.ts +3 -0
- package/dist/blocks/outbox/index.js +266 -0
- package/dist/blocks/profiles/index.d.ts +40 -0
- package/dist/blocks/profiles/index.js +28 -0
- package/dist/blocks/push/index.d.ts +185 -0
- package/dist/blocks/push/index.js +258 -0
- package/dist/blocks/settings/index.d.ts +89 -0
- package/dist/blocks/settings/index.js +104 -0
- package/dist/blocks/sso/index.d.ts +198 -0
- package/dist/blocks/sso/index.js +1297 -0
- package/dist/blocks/usage/index.d.ts +4 -0
- package/dist/blocks/usage/index.js +233 -0
- package/dist/blocks/waitlist/index.d.ts +117 -0
- package/dist/blocks/waitlist/index.js +132 -0
- package/dist/blocks/webhooks/index.d.ts +304 -0
- package/dist/{webhooks → blocks/webhooks}/index.js +468 -148
- package/dist/blocks/workflow-builder/index.d.ts +21 -0
- package/dist/blocks/workflow-builder/index.js +5 -0
- package/dist/blocks/workflow-builder/react/index.d.ts +47 -0
- package/dist/blocks/workflow-builder/react/index.js +119 -0
- package/dist/blocks/workflow-builder/react/server.d.ts +8 -0
- package/dist/blocks/workflow-builder/react/server.js +11 -0
- package/dist/blocks/workflows/index.d.ts +3 -0
- package/dist/blocks/workflows/index.js +3 -0
- package/dist/blocks/workflows/react/index.d.ts +47 -0
- package/dist/blocks/workflows/react/index.js +137 -0
- package/dist/blocks/workflows/react/server.d.ts +8 -0
- package/dist/blocks/workflows/react/server.js +11 -0
- package/dist/{index-SaTsEfGP.d.ts → bucket-Cl46E3jS.d.ts} +134 -91
- package/dist/{simplify-_0oUKqCd.js → build-BXIzE6Xv.js} +222 -124
- package/dist/{channel-FQW-CnGR.d.ts → channel-_2Mx1Oyu.d.ts} +2 -2
- package/dist/channels-CkgQ_X60.js +114 -0
- package/dist/chat-sdk/index.d.ts +303 -0
- package/dist/chat-sdk/index.js +733 -0
- package/dist/chat-sdk/react/index.d.ts +2 -0
- package/dist/chat-sdk/react/index.js +3 -0
- package/dist/chat-sdk/react/server.d.ts +3 -0
- package/dist/chat-sdk/react/server.js +2 -0
- package/dist/claims-DDBQT6BK.js +61 -0
- package/dist/{claims-BAf6c7is.js → claims-PqzCxaTD.js} +39 -2
- package/dist/cli/bin.js +1 -1
- package/dist/cli/{codemod-DqV7612m.js → codemod-Bl_tQpHn.js} +105 -2
- package/dist/cli/config-B9HkL8nF.js +2 -0
- package/dist/cli/config-DU7EJImt.js +49 -0
- package/dist/cli/config-NiPxAmUF.js +1077 -0
- package/dist/cli/{dist-xn4wlboc.js → dist-DRAVaE6w.js} +111 -1
- package/dist/cli/{doctor-L7Z8mYTx.js → doctor-B4JOm_ox.js} +992 -316
- package/dist/cli/{env-DmKv_G4A.js → env-CJLbUVPB.js} +1 -1
- package/dist/cli/{env-jIFUADLY.js → env-qXgyMV6r.js} +2 -2
- package/dist/cli/fresh-import-BeYf9I3x.js +40 -0
- package/dist/cli/gen-BGLb_zou.js +3100 -0
- package/dist/cli/gen-DAH8FM2W.js +2 -0
- package/dist/cli/index.d.ts +44 -5
- package/dist/cli/index.js +7 -7
- package/dist/cli/{init-Saf5-R9T.js → init-BIIwclPg.js} +242 -27
- package/dist/cli/{introspect--H7oGmcd.js → introspect-DNUTuNvb.js} +5 -5
- package/dist/cli/{io-k41_z-jT.js → io-DI1mTdSA.js} +12 -3
- package/dist/cli/{keys-ByKHnvP9.js → keys-BGCnnb-s.js} +8 -6
- package/dist/cli/{ohash-D7bG_EOb.js → ohash-BjQY1cBb.js} +1 -1
- package/dist/cli/{openapi-Cp5Fyta-.js → openapi-BlRJ18s3.js} +2 -2
- package/dist/cli/{project-B_GeXyHh.js → project-DZRaBaY7.js} +11 -6
- package/dist/cli/read-sets-CETOSFx4.js +223 -0
- package/dist/cli/{run-BKR2W_79.js → run-DNWxHynX.js} +33 -23
- package/dist/cli/{seed-CUlqWh-8.js → seed-DQzqT7LP.js} +8 -6
- package/dist/cli/{skills-LJJIhLFR.js → skills-QQs4q68J.js} +3 -2
- package/dist/cli/sql-D0GUtUPp.js +536 -0
- package/dist/cli/{config-CPVpXP5I.js → supabase-toml-B-bIukQF.js} +72 -942
- package/dist/cli/typegen-version-DeFbtzYI.js +8 -0
- package/dist/cli/{version-BDJuO0UR.js → version-hr88OZG0.js} +1 -1
- package/dist/client/index.d.ts +3 -2
- package/dist/client/index.js +11 -71
- package/dist/client/native/index.d.ts +228 -0
- package/dist/client/native/index.js +361 -0
- package/dist/client-CI0Z2zWX.js +277 -0
- package/dist/cloud-event-BnmD5fb9.js +46 -0
- package/dist/cloud-event-C1JCc1bH.d.ts +50 -0
- package/dist/{compiler-BXH_aZ7N.d.ts → compiler-DY_wkj4R.d.ts} +2 -2
- package/dist/compose-BIBNgAnq.js +53 -0
- package/dist/composite-Bt1YK3Ke.d.ts +146 -0
- package/dist/composite-DhE66P5u.js +130 -0
- package/dist/config/index.d.ts +6 -4
- package/dist/config/index.js +5 -5
- package/dist/{config-T_ejwyd3.d.ts → config-D44Y7PAv.d.ts} +406 -205
- package/dist/{config-DreERlKo.js → config-Dn7F5k9A.js} +62 -14
- package/dist/connector-Dv8kK0MO.d.ts +107 -0
- package/dist/connectors-hkLCwyEz.d.ts +120 -0
- package/dist/context-BCrWe7ow.d.ts +237 -0
- package/dist/credentials/index.d.ts +31 -0
- package/dist/credentials/index.js +168 -0
- package/dist/cron-DVPUg5k3.js +145 -0
- package/dist/csv-CPAzEmB6.js +25 -0
- package/dist/db-exception-CnWcYPxL.js +15 -0
- package/dist/{define-cNKzqwL_.js → define-B-TVjC25.js} +784 -227
- package/dist/{define-Bp_BZa5h.d.ts → define-CJJkkr1-.d.ts} +353 -61
- package/dist/edge/index.d.ts +69 -11
- package/dist/edge/index.js +191 -75
- package/dist/elysia/index.d.ts +59 -0
- package/dist/elysia/index.js +62 -0
- package/dist/embeddings-4ZvFzjsU.js +127 -0
- package/dist/embeddings-C9KGQnXt.d.ts +68 -0
- package/dist/{refresh-BTrQ_ZTp.d.ts → ended-jLfvw8h-.d.ts} +20 -2
- package/dist/{entitlements-DUxU4oHe.d.ts → entitlements-DHrY2UDZ.d.ts} +16 -7
- package/dist/entitlements-DRl6ZJUm.js +24 -0
- package/dist/envelope-DqnYGRw7.js +47 -0
- package/dist/{errors-DtwXa6b8.js → errors-B11Duf73.js} +82 -13
- package/dist/errors-DLjJHPLK.js +44 -0
- package/dist/escape-like-DHfx6jRr.js +7 -0
- package/dist/escape-like-ImTK0ps_.d.ts +15 -0
- package/dist/eve/index.d.ts +220 -0
- package/dist/eve/index.js +504 -0
- package/dist/eve-gT2Fpjut.d.ts +151 -0
- package/dist/events/index.d.ts +4 -3
- package/dist/events/index.js +9 -50
- package/dist/events-DWDhx77e.d.ts +549 -0
- package/dist/executor-Bq28caBo.js +718 -0
- package/dist/executor-C-R4pucm.js +83 -0
- package/dist/executor-CaWigTyR.d.ts +148 -0
- package/dist/executor-D14tGopJ.d.ts +36 -0
- package/dist/{executor-Cghdstwu.d.ts → executor-DbvExCFC.d.ts} +7 -1
- package/dist/{sql-Coh6n4cC.js → executor-De1Of3m3.js} +210 -11
- package/dist/executor-DvsBbNBS.d.ts +261 -0
- package/dist/expo/index.d.ts +79 -0
- package/dist/expo/index.js +129 -0
- package/dist/expo-sqlite/index.d.ts +58 -0
- package/dist/expo-sqlite/index.js +104 -0
- package/dist/field-errors-BFOa7WhB.d.ts +99 -0
- package/dist/field-errors-VF1yb8yI.js +13 -0
- package/dist/framework-CONDyPYx.js +51 -0
- package/dist/framework-DuVb4Xa8.d.ts +25 -0
- package/dist/gateway-C1ssRHnf.d.ts +130 -0
- package/dist/graph-BGyLLFLX.js +265 -0
- package/dist/h3/index.d.ts +59 -0
- package/dist/h3/index.js +55 -0
- package/dist/h3/v1/index.d.ts +63 -0
- package/dist/h3/v1/index.js +49 -0
- package/dist/history-BZih6SFP.js +64 -0
- package/dist/hono/index.d.ts +56 -7
- package/dist/hono/index.js +97 -45
- package/dist/{react-C_s7kiNz.js → hooks-1BTCJsiw.js} +104 -133
- package/dist/http-Cv4T29xh.js +40 -0
- package/dist/http-DdYadv-o.js +126 -0
- package/dist/image-url-pIVlO6R1.js +41 -0
- package/dist/impersonation-DcqaTBHx.js +148 -0
- package/dist/inbox-i7E1ppo6.d.ts +384 -0
- package/dist/index-ACiNPN4Z.d.ts +74 -0
- package/dist/{index-DgILJRXj.d.ts → index-Bepi-Hgg.d.ts} +91 -28
- package/dist/index-BkWT_uBO.d.ts +51 -0
- package/dist/index-BpFYMsi0.d.ts +53 -0
- package/dist/{index-C7f8cOBM.d.ts → index-Bxih3l0u.d.ts} +2 -2
- package/dist/index-CaxrMD1A.d.ts +1 -0
- package/dist/index-ClmjK_o-.d.ts +55 -0
- package/dist/index-CtuakVRc.d.ts +267 -0
- package/dist/index-D48jVS-N.d.ts +246 -0
- package/dist/index-DDrYaUcq.d.ts +138 -0
- package/dist/index-DQh4VCc9.d.ts +98 -0
- package/dist/{live-D9W2M5aO.d.ts → index-DunNRdnT.d.ts} +136 -38
- package/dist/index.d.ts +65 -18
- package/dist/index.js +42 -14
- package/dist/invalidate-BBqhpxyB.d.ts +19 -0
- package/dist/json-CEnpTHlZ.js +16 -0
- package/dist/json-schema-CvER4kgT.js +502 -0
- package/dist/keys-4MnkWTTh.js +35 -0
- package/dist/kit-B5tid-q5.d.ts +60 -0
- package/dist/kit-Fm-Fv7q5.js +78 -0
- package/dist/knowledge-BXBbT0Tr.d.ts +176 -0
- package/dist/knowledge-CDmiMLew.js +255 -0
- package/dist/lint/index.d.ts +1 -1
- package/dist/lint/index.js +37 -0
- package/dist/list/index.d.ts +3 -2
- package/dist/list/index.js +1 -444
- package/dist/{index-fag8VJZ2.d.ts → list-query-BRt-zDF7.d.ts} +20 -12
- package/dist/list-query-gl808ac1.js +459 -0
- package/dist/{live-CdJBOc4f.js → live-CTAZQkwl.js} +99 -14
- package/dist/logger-DWVYUmwi.d.ts +18 -0
- package/dist/mcp/index.d.ts +38 -11
- package/dist/mcp/index.js +82 -46
- package/dist/mcp/sdk/index.d.ts +105 -0
- package/dist/mcp/sdk/index.js +126 -0
- package/dist/message-CaKlqdsX.js +219 -0
- package/dist/message-CfDoR0Y6.d.ts +94 -0
- package/dist/messages-B9-5887d.js +715 -0
- package/dist/messages-DYP0sUTe.d.ts +59 -0
- package/dist/{mfa-CusDgPaD.d.ts → mfa-Daak8ukG.d.ts} +8 -2
- package/dist/modules-DpPwzC7E.d.ts +192 -0
- package/dist/modules-dxrVK3ID.js +228 -0
- package/dist/nestjs/index.d.ts +68 -0
- package/dist/nestjs/index.js +164 -0
- package/dist/next/client/index.d.ts +35 -0
- package/dist/next/client/index.js +36 -0
- package/dist/next/image/index.js +3 -24
- package/dist/next/index.d.ts +150 -51
- package/dist/next/index.js +261 -107
- package/dist/node/index.d.ts +4 -0
- package/dist/node/index.js +210 -0
- package/dist/node-headers-AO06VhqH.d.ts +24 -0
- package/dist/node-headers-C71zNQHe.js +55 -0
- package/dist/nuxt/index.d.ts +60 -0
- package/dist/nuxt/index.js +64 -0
- package/dist/onboarding-BZGHYJks.d.ts +62 -0
- package/dist/openapi/index.d.ts +1 -1
- package/dist/openapi/index.js +3 -3
- package/dist/orpc/index.d.ts +70 -11
- package/dist/orpc/index.js +73 -24
- package/dist/otel/index.d.ts +7 -7
- package/dist/otel/index.js +87 -57
- package/dist/outbox-Cq7pPYvl.d.ts +161 -0
- package/dist/{plugin-o144f322.d.ts → plugin-FGY8UhYm.d.ts} +30 -10
- package/dist/plugin-tfXW1-qO.js +45 -0
- package/dist/plugins/actor/index.d.ts +2 -2
- package/dist/plugins/actor/index.js +3 -3
- package/dist/plugins/rules/index.d.ts +11 -4
- package/dist/plugins/rules/index.js +40 -13
- package/dist/plugins/soft-delete/index.d.ts +5 -4
- package/dist/plugins/soft-delete/index.js +10 -5
- package/dist/plugins/tenant/index.d.ts +2 -2
- package/dist/plugins/tenant/index.js +18 -11
- package/dist/plugins/timestamps/index.d.ts +5 -3
- package/dist/plugins/timestamps/index.js +6 -4
- package/dist/plugins/validation/index.d.ts +2 -2
- package/dist/plugins/validation/index.js +10 -6
- package/dist/{pool-C9voM4Kw.d.ts → pool-CAu2nLrL.d.ts} +2 -2
- package/dist/postgres/index.d.ts +4 -4
- package/dist/postgres/index.js +1 -2
- package/dist/{postgrest-CruYKAvV.d.ts → postgrest-BLVdEnfe.d.ts} +13 -3
- package/dist/powersync/index.d.ts +43 -0
- package/dist/powersync/index.js +199 -0
- package/dist/powersync/react/index.d.ts +87 -0
- package/dist/powersync/react/index.js +108 -0
- package/dist/{problem-BW1KhzSG.js → problem-BreOl8b8.js} +14 -3
- package/dist/{problem-Blxe8S31.d.ts → problem-DD8LZFjc.d.ts} +21 -3
- package/dist/provider-BH5UWZJ6.d.ts +113 -0
- package/dist/provider-Di3sRutW.js +57 -0
- package/dist/query/index.d.ts +4 -2
- package/dist/query/index.js +4 -3
- package/dist/{query-CCbo44lG.js → query-BQ-NaZon.js} +141 -24
- package/dist/{queue-BYUCjr59.d.ts → queue-CLJurhdy.d.ts} +258 -83
- package/dist/react/index.d.ts +11 -7
- package/dist/react/index.js +7 -3
- package/dist/react/native/index.d.ts +116 -0
- package/dist/react/native/index.js +130 -0
- package/dist/react/server.d.ts +28 -10
- package/dist/react/server.js +22 -5
- package/dist/react/session.d.ts +2 -2
- package/dist/react-4ZqkP8da.js +79 -0
- package/dist/react-F80mF4-t.js +409 -0
- package/dist/react-router/index.d.ts +83 -0
- package/dist/react-router/index.js +89 -0
- package/dist/react-topic-seAWjL3_.js +38 -0
- package/dist/{read-set-DQFt1N_Y.js → read-set-DuKWC9Mj.js} +67 -25
- package/dist/realtime/index.d.ts +4 -5
- package/dist/realtime/index.js +144 -82
- package/dist/refusal-CeJWxmkH.js +61 -0
- package/dist/refusal-D1rgbzNq.d.ts +15 -0
- package/dist/replicas-CwrYp5Zj.js +94 -0
- package/dist/{view-Bq64ki8-.js → resolve-D_IcnvFd.js} +239 -289
- package/dist/{resolve-C15TJq77.d.ts → resolve-KW8nCeL6.d.ts} +29 -45
- package/dist/{resource-CRxxwkQq.js → resource-BsvzCMlX.js} +4 -4
- package/dist/{resource-D8iqWMr-.d.ts → resource-D6Uc7Sk7.d.ts} +5 -5
- package/dist/respond-BUgsXNgk.js +91 -0
- package/dist/respond-DoBijysA.d.ts +93 -0
- package/dist/result-D7y2fT87.d.ts +282 -0
- package/dist/{result-BKiliPY7.js → result-DzUbqgdW.js} +27 -2
- package/dist/run-state-CPo-1X2B.d.ts +12 -0
- package/dist/run-state-CgBKzYMW.js +13 -0
- package/dist/search-CUWCRYKL.js +9 -0
- package/dist/server/index.d.ts +143 -21
- package/dist/server/index.js +46 -14
- package/dist/{respond-D2OQl62-.d.ts → server-CeVeeXwz.d.ts} +225 -80
- package/dist/session-ChiXDZdZ.d.ts +72 -0
- package/dist/shared-CBxosKK3.js +75 -0
- package/dist/{shared-D1dRUrAg.js → shared-CxWmcyqB.js} +2 -1
- package/dist/shared-DDSjEGDR.d.ts +11 -0
- package/dist/sign-in-BCV5S2WZ.d.ts +49 -0
- package/dist/sign-in-Cb1mwv6X.js +86 -0
- package/dist/{signers-Cc6r98SW.d.ts → signers-4y62_VIi.d.ts} +13 -9
- package/dist/simplify-DDO0j0LI.js +83 -0
- package/dist/solid/index.d.ts +131 -0
- package/dist/solid/index.js +344 -0
- package/dist/solid-start/index.d.ts +75 -0
- package/dist/solid-start/index.js +58 -0
- package/dist/{spec-pins-C3oc-Tdp.js → spec-pins--j6mTok4.js} +8 -1
- package/dist/{spec-pins-CqorWDnO.d.ts → spec-pins-C89s6DyW.d.ts} +7 -0
- package/dist/sql/index.d.ts +330 -194
- package/dist/sql/index.js +34901 -6489
- package/dist/ssr/index.d.ts +6 -5
- package/dist/ssr/index.js +3 -3
- package/dist/{standard-D7r6dMUu.js → standard-BK0cqJ7y.js} +4 -3
- package/dist/{standard-J4YgMOLm.d.ts → standard-CYsm7xpT.d.ts} +1 -1
- package/dist/stats-D_AD9GGu.js +1123 -0
- package/dist/storage/index.d.ts +5 -5
- package/dist/storage/index.js +1027 -368
- package/dist/store-BdH5ruDx.js +66 -0
- package/dist/store-CGjgWu5n.d.ts +68 -0
- package/dist/streams/index.d.ts +76 -0
- package/dist/streams/index.js +77 -0
- package/dist/streams/redis/index.d.ts +52 -0
- package/dist/streams/redis/index.js +185 -0
- package/dist/stripe-BMj5LtsT.js +38 -0
- package/dist/stripe-D04h-QBT.d.ts +136 -0
- package/dist/{support-Dk6vdmEw.js → support-BivNqSpK.js} +35 -12
- package/dist/{support-view-Da5peKFg.d.ts → support-view-33Oi07TT.d.ts} +1 -1
- package/dist/svelte/index.d.ts +114 -0
- package/dist/svelte/index.js +344 -0
- package/dist/sveltekit/index.d.ts +116 -0
- package/dist/sveltekit/index.js +106 -0
- package/dist/tags-B99_U9Pp.js +39 -0
- package/dist/tags-Cx-LnIQP.d.ts +30 -0
- package/dist/tanstack-db/index.d.ts +71 -0
- package/dist/tanstack-db/index.js +72 -0
- package/dist/tanstack-start/index.d.ts +75 -0
- package/dist/tanstack-start/index.js +95 -0
- package/dist/tee-CoEppCER.js +101 -0
- package/dist/{template-TxrGI5jR.js → template--jDkl3UP.js} +34 -13
- package/dist/template-CwO38Do8.d.ts +6 -0
- package/dist/temporal-BJGitm-h.js +79 -0
- package/dist/{temporal-required-CAt4Dc9Z.js → temporal-required-BVvW7SYJ.js} +3 -2
- package/dist/tenant-I1TEZ_BX.js +27 -0
- package/dist/tenant-icPeuUBN.d.ts +17 -0
- package/dist/testing/index.d.ts +343 -37
- package/dist/testing/index.js +1186 -79
- package/dist/timing-CyTQPubY.js +92 -0
- package/dist/ttl-Hr34gRu8.js +12 -0
- package/dist/{types-Dnf_wRDz.d.ts → types-6BdhkmZe.d.ts} +111 -45
- package/dist/types-BI-0Sl2v.d.ts +359 -0
- package/dist/types-C05bxW-W.d.ts +220 -0
- package/dist/types-DGs5L0VN.d.ts +192 -0
- package/dist/types-TaiEeBGA.d.ts +156 -0
- package/dist/usage-CrvrL2vw.d.ts +177 -0
- package/dist/user-change-XzvgafU4.js +130 -0
- package/dist/vault-CSO7ss5C.d.ts +50 -0
- package/dist/vercel-connect/index.d.ts +47 -0
- package/dist/vercel-connect/index.js +119 -0
- package/dist/{verify-Ce49ETPz.js → verify-DL41hbvY.js} +85 -13
- package/dist/verify-DPuWngD4.d.ts +172 -0
- package/dist/{version-DM_Roffb.js → version-Bvv6aLjZ.js} +1 -1
- package/dist/view-BeFcRV6G.js +99 -0
- package/dist/{view-BEf0diC5.d.ts → view-DbxLNu8L.d.ts} +35 -32
- package/dist/vue/index.d.ts +141 -0
- package/dist/vue/index.js +362 -0
- package/dist/watch-DI34G86j.d.ts +60 -0
- package/dist/watch-Xuxrvxq-.js +122 -0
- package/dist/{wire-D2dT86vi.js → wire-DtZQ4sdE.js} +15 -5
- package/dist/workflow-builder-DJ1oHn8g.js +398 -0
- package/dist/workflow-sdk/builder/index.d.ts +85 -0
- package/dist/workflow-sdk/builder/index.js +250 -0
- package/dist/workflow-sdk/index.d.ts +14 -0
- package/dist/workflow-sdk/index.js +3 -0
- package/dist/workflow-sdk/world/index.d.ts +107 -0
- package/dist/workflow-sdk/world/index.js +702 -0
- package/dist/workflow-sdk-B3yLD6Br.d.ts +98 -0
- package/dist/workflow-sdk-C2WJ_G2O.js +173 -0
- package/dist/workflow-sdk-world-D-prir6O.js +1397 -0
- package/dist/workflows-B0j9WKPu.d.ts +185 -0
- package/dist/workflows-wu1WWBn7.js +216 -0
- package/package.json +470 -29
- package/schemas/ai-message-v1.json +258 -0
- package/schemas/config-v1.json +1074 -140
- package/schemas/doctor-report-v1.json +21 -1
- package/schemas/snapshot-v2.json +8 -0
- package/skills/better-supabase/SKILL.md +41 -12
- package/skills/better-supabase/references/frontend.md +96 -0
- package/skills/better-supabase/references/plugins.md +10 -6
- package/skills/better-supabase/references/troubleshooting.md +2 -1
- package/skills/better-supabase-api/SKILL.md +76 -22
- package/skills/better-supabase-api/references/adapters.md +207 -0
- package/skills/better-supabase-api/references/ai.md +125 -0
- package/skills/better-supabase-api/references/expo.md +65 -0
- package/skills/better-supabase-api/references/powersync.md +35 -0
- package/skills/better-supabase-api/references/streams-credentials.md +105 -0
- package/skills/better-supabase-auth/SKILL.md +62 -18
- package/skills/better-supabase-auth/references/authorization-providers.md +51 -0
- package/skills/better-supabase-testing/SKILL.md +3 -1
- package/dist/cli/config-dtoekM0v.js +0 -2
- package/dist/cli/gen-BJc9vdyu.js +0 -2
- package/dist/cli/gen-C2osRcr5.js +0 -2204
- package/dist/cli/read-sets-BfMQcKy8.js +0 -289
- package/dist/cli/sql-DzPbfngx.js +0 -348
- package/dist/entitlements-CTEBm7IB.js +0 -20
- package/dist/events-aIO7vsIk.d.ts +0 -230
- package/dist/executor-BunPOO-k.d.ts +0 -402
- package/dist/executor-XycESQPH.js +0 -94
- package/dist/impersonation-VfaGc4Q_.js +0 -41
- package/dist/index-BGdgBPdf.d.ts +0 -161
- package/dist/index-DOESKG27.d.ts +0 -100
- package/dist/index-DmXSxbLi.d.ts +0 -62
- package/dist/index-Dxn2a5cw.d.ts +0 -50
- package/dist/jobs/index.d.ts +0 -226
- package/dist/jobs/index.js +0 -1007
- package/dist/json-schema-m1fiwKgN.js +0 -208
- package/dist/kit-events-CTFDfSwb.js +0 -60
- package/dist/kit-transport-B82k1djG.d.ts +0 -33
- package/dist/kits-CGLLrNPd.js +0 -157
- package/dist/notifications/index.d.ts +0 -162
- package/dist/notifications/index.js +0 -264
- package/dist/orgs/index.d.ts +0 -132
- package/dist/orgs/index.js +0 -245
- package/dist/permdock-sql-C2Inc6Xc.d.ts +0 -29
- package/dist/permdock-sql-DgOfeixi.js +0 -51
- package/dist/plugin-DwARMuQp.js +0 -59
- package/dist/server-Csx2sRjg.js +0 -655
- package/dist/stats-Bqob3WqT.js +0 -592
- package/dist/support-DT-OhSxD.d.ts +0 -88
- package/dist/template-mbvlysOo.d.ts +0 -6
- package/dist/temporal-CVlIV2DZ.js +0 -40
- package/dist/user-change-CHFEUro1.js +0 -49
- package/dist/webhooks/index.d.ts +0 -285
- package/skills/better-supabase-auth/references/permdock.md +0 -100
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
import { n as dbError } from "../../errors-B11Duf73.js";
|
|
2
|
+
import { s as nowInstant } from "../../temporal-BJGitm-h.js";
|
|
3
|
+
import { t as temporal } from "../../temporal-required-BVvW7SYJ.js";
|
|
4
|
+
import { a as ok, r as err, t as AsyncResult } from "../../result-DzUbqgdW.js";
|
|
5
|
+
import { c as errorText } from "../../block-helpers-DWHxHsEQ.js";
|
|
6
|
+
import { experimental_cancelBatch, experimental_getBatchResults, experimental_getBatchStatus, experimental_startBatch } from "ai";
|
|
7
|
+
//#region src/ai-sdk/batches/batches.ts
|
|
8
|
+
const DEFAULT_API = {
|
|
9
|
+
start: (options) => experimental_startBatch(options),
|
|
10
|
+
status: (options) => experimental_getBatchStatus(options),
|
|
11
|
+
results: (options) => experimental_getBatchResults(options),
|
|
12
|
+
cancel: (options) => experimental_cancelBatch(options)
|
|
13
|
+
};
|
|
14
|
+
const PAGE = 100;
|
|
15
|
+
function referenceOf(batch) {
|
|
16
|
+
const reference = batch.reference;
|
|
17
|
+
return reference["version"] === 2 && typeof reference["id"] === "string" && typeof reference["provider"] === "string" ? {
|
|
18
|
+
version: 2,
|
|
19
|
+
id: reference["id"],
|
|
20
|
+
provider: reference["provider"]
|
|
21
|
+
} : void 0;
|
|
22
|
+
}
|
|
23
|
+
function countsOf(status) {
|
|
24
|
+
return status.requestCounts === void 0 ? void 0 : { ...status.requestCounts };
|
|
25
|
+
}
|
|
26
|
+
function jsonOf(value) {
|
|
27
|
+
return value === void 0 ? void 0 : JSON.parse(JSON.stringify(value));
|
|
28
|
+
}
|
|
29
|
+
/** What is stored for one result by default. */
|
|
30
|
+
function batchItemOf(item) {
|
|
31
|
+
if (item.status !== "succeeded") return {
|
|
32
|
+
requestId: item.id,
|
|
33
|
+
status: item.status,
|
|
34
|
+
...item.error === void 0 ? {} : { error: item.error.message }
|
|
35
|
+
};
|
|
36
|
+
if (item.type === "text") return {
|
|
37
|
+
requestId: item.id,
|
|
38
|
+
status: "succeeded",
|
|
39
|
+
output: jsonOf({
|
|
40
|
+
text: item.text,
|
|
41
|
+
content: item.content,
|
|
42
|
+
finishReason: item.finishReason,
|
|
43
|
+
response: item.response
|
|
44
|
+
}),
|
|
45
|
+
usage: jsonOf(item.usage)
|
|
46
|
+
};
|
|
47
|
+
return {
|
|
48
|
+
requestId: item.id,
|
|
49
|
+
status: "succeeded",
|
|
50
|
+
output: { images: item.images.map((image) => ({
|
|
51
|
+
mediaType: image.mediaType,
|
|
52
|
+
base64: image.base64
|
|
53
|
+
})) },
|
|
54
|
+
usage: jsonOf(item.usage)
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Batch jobs over the AI SDK's batch API, recorded in the providers block:
|
|
59
|
+
* `start` records the batch, the poll job asks the provider for its status
|
|
60
|
+
* until it finishes and then saves its results, which `results` pages.
|
|
61
|
+
*/
|
|
62
|
+
function aiBatches(options) {
|
|
63
|
+
const api = {
|
|
64
|
+
...DEFAULT_API,
|
|
65
|
+
...options.api
|
|
66
|
+
};
|
|
67
|
+
const store = options.providers.batches;
|
|
68
|
+
const pollEvery = options.pollEvery ?? 60;
|
|
69
|
+
const providerFor = (reference) => {
|
|
70
|
+
const chosen = typeof options.provider === "function" ? options.provider(reference) : options.provider;
|
|
71
|
+
return chosen === void 0 ? {} : { provider: chosen };
|
|
72
|
+
};
|
|
73
|
+
const nextPoll = () => nowInstant().add({ seconds: pollEvery });
|
|
74
|
+
const call = (run) => AsyncResult.from(async () => {
|
|
75
|
+
try {
|
|
76
|
+
return ok(await run());
|
|
77
|
+
} catch (cause) {
|
|
78
|
+
return err(dbError("network", errorText(cause), { hint: "AI_BATCH_PROVIDER" }));
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
const withReference = (batch) => {
|
|
82
|
+
const reference = referenceOf(batch);
|
|
83
|
+
return reference === void 0 ? AsyncResult.err(dbError("invalid_input", `batch ${batch.id} has no batch reference`, { hint: "AI_BATCH_INVALID" })) : AsyncResult.ok(reference);
|
|
84
|
+
};
|
|
85
|
+
const refresh = (batch) => withReference(batch).andThen((reference) => call(() => api.status({
|
|
86
|
+
...providerFor(reference),
|
|
87
|
+
batch: reference
|
|
88
|
+
})).andThen((status) => {
|
|
89
|
+
const counts = countsOf(status);
|
|
90
|
+
return store.update(batch.id, {
|
|
91
|
+
status: status.status,
|
|
92
|
+
...status.rawStatus === void 0 ? {} : { rawStatus: status.rawStatus },
|
|
93
|
+
...counts === void 0 ? {} : { counts },
|
|
94
|
+
...status.error === void 0 ? {} : { error: status.error.message },
|
|
95
|
+
...status.expiresAt === void 0 ? {} : { expiresAt: temporal().Instant.from(status.expiresAt) },
|
|
96
|
+
nextPollAt: nextPoll()
|
|
97
|
+
});
|
|
98
|
+
}));
|
|
99
|
+
const collect = (batch) => withReference(batch).andThen((reference) => AsyncResult.from(async () => {
|
|
100
|
+
let saved = 0;
|
|
101
|
+
let page = [];
|
|
102
|
+
const flush = async () => {
|
|
103
|
+
if (page.length === 0) return ok(0);
|
|
104
|
+
const written = await store.saveItems(batch.id, page);
|
|
105
|
+
page = [];
|
|
106
|
+
return written;
|
|
107
|
+
};
|
|
108
|
+
try {
|
|
109
|
+
for await (const item of api.results({
|
|
110
|
+
...providerFor(reference),
|
|
111
|
+
batch: reference
|
|
112
|
+
})) {
|
|
113
|
+
page.push(options.onItem === void 0 ? batchItemOf(item) : await options.onItem(item, batch));
|
|
114
|
+
if (page.length >= PAGE) {
|
|
115
|
+
const written = await flush();
|
|
116
|
+
if (!written.ok) return written;
|
|
117
|
+
saved += written.data;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
} catch (cause) {
|
|
121
|
+
return err(dbError("network", errorText(cause), { hint: "AI_BATCH_PROVIDER" }));
|
|
122
|
+
}
|
|
123
|
+
const written = await flush();
|
|
124
|
+
if (!written.ok) return written;
|
|
125
|
+
saved += written.data;
|
|
126
|
+
const done = await store.update(batch.id, {
|
|
127
|
+
resultsSaved: true,
|
|
128
|
+
nextPollAt: null
|
|
129
|
+
});
|
|
130
|
+
if (!done.ok) return done;
|
|
131
|
+
await options.onDone?.(done.data);
|
|
132
|
+
return ok(saved);
|
|
133
|
+
}));
|
|
134
|
+
const pollOne = (batch) => {
|
|
135
|
+
if (batch.status !== "pending") return collect(batch).map(() => batch);
|
|
136
|
+
return refresh(batch).andThen((fresh) => fresh.status === "pending" ? AsyncResult.ok(fresh) : collect(fresh).map(() => fresh));
|
|
137
|
+
};
|
|
138
|
+
const poll = (pollOptions = {}) => store.due(pollOptions).andThen((due) => AsyncResult.from(async () => {
|
|
139
|
+
for (const batch of due) {
|
|
140
|
+
const polled = await pollOne(batch);
|
|
141
|
+
if (!polled.ok) {
|
|
142
|
+
const noted = await store.update(batch.id, { error: polled.error.message });
|
|
143
|
+
if (!noted.ok) return noted;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
return ok(due.length);
|
|
147
|
+
}));
|
|
148
|
+
return {
|
|
149
|
+
start: (context, startOptions) => {
|
|
150
|
+
const { metadata, ...batchOptions } = startOptions;
|
|
151
|
+
return call(() => api.start(batchOptions)).andThen((started) => store.record(context.organizationId, {
|
|
152
|
+
provider: started.provider,
|
|
153
|
+
reference: {
|
|
154
|
+
version: started.version,
|
|
155
|
+
id: started.id,
|
|
156
|
+
provider: started.provider
|
|
157
|
+
},
|
|
158
|
+
itemCount: batchOptions.requests.length,
|
|
159
|
+
status: started.status,
|
|
160
|
+
...context.userId === void 0 ? {} : { userId: context.userId },
|
|
161
|
+
...metadata === void 0 ? {} : { metadata },
|
|
162
|
+
...started.rawStatus === void 0 ? {} : { rawStatus: started.rawStatus },
|
|
163
|
+
...started.requestCounts === void 0 ? {} : { counts: { ...started.requestCounts } },
|
|
164
|
+
...started.expiresAt === void 0 ? {} : { expiresAt: temporal().Instant.from(started.expiresAt) }
|
|
165
|
+
}));
|
|
166
|
+
},
|
|
167
|
+
status: (batchId) => store.get(batchId),
|
|
168
|
+
results: (batchId, resultOptions) => store.items(batchId, resultOptions),
|
|
169
|
+
refresh,
|
|
170
|
+
collect,
|
|
171
|
+
cancel: (batch) => withReference(batch).andThen((reference) => call(() => api.cancel({
|
|
172
|
+
...providerFor(reference),
|
|
173
|
+
batch: reference
|
|
174
|
+
})).andThen(() => store.update(batch.id, { status: "cancelled" }))),
|
|
175
|
+
poll,
|
|
176
|
+
pollJob: (jobOptions) => async () => poll(jobOptions).orThrow()
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
//#endregion
|
|
180
|
+
export { aiBatches, batchItemOf };
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { b as DbError } from "../../result-D7y2fT87.js";
|
|
2
|
+
import { t as AiCache } from "../../ai-cache-DaDu_G5L.js";
|
|
3
|
+
import { LanguageModelMiddleware } from "ai";
|
|
4
|
+
//#region src/ai-sdk/cache/cache.d.ts
|
|
5
|
+
type WrapGenerate = NonNullable<LanguageModelMiddleware["wrapGenerate"]>;
|
|
6
|
+
/** The call `cacheMiddleware` derives a key from. */
|
|
7
|
+
type CacheCall = Parameters<WrapGenerate>[0];
|
|
8
|
+
interface CacheMiddlewareOptions {
|
|
9
|
+
/** The AI cache block with a service transport. */
|
|
10
|
+
readonly cache: Pick<AiCache, "get" | "set">;
|
|
11
|
+
/** Seconds an entry lives, capped by the module's `maxTtl`. */
|
|
12
|
+
readonly ttl: number;
|
|
13
|
+
/** Keeps tenants' entries apart and lets `clear` and tenant deletion find them. */
|
|
14
|
+
readonly organizationId?: string;
|
|
15
|
+
/**
|
|
16
|
+
* What the key covers. Defaults to the provider, the model id and the call
|
|
17
|
+
* options without the abort signal and headers.
|
|
18
|
+
*/
|
|
19
|
+
readonly key?: (call: CacheCall) => unknown;
|
|
20
|
+
/** Skips the cache for a call, such as one with a high temperature. */
|
|
21
|
+
readonly when?: (call: CacheCall) => boolean;
|
|
22
|
+
/** Pacing for replayed streams, in milliseconds; no delay by default. */
|
|
23
|
+
readonly replay?: {
|
|
24
|
+
readonly initialDelayInMs?: number | null;
|
|
25
|
+
readonly chunkDelayInMs?: number | null;
|
|
26
|
+
};
|
|
27
|
+
/** Called when the cache can't be read or written; the call still runs. */
|
|
28
|
+
readonly onError?: (error: DbError) => void;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* A `wrapLanguageModel` middleware that answers repeated calls from the AI
|
|
32
|
+
* cache block. A cached generation is returned as is, and a cached stream is
|
|
33
|
+
* replayed through `simulateReadableStream`. Calls that end in an error are
|
|
34
|
+
* never cached, and a cache that fails to answer only costs the lookup.
|
|
35
|
+
*/
|
|
36
|
+
export declare function cacheMiddleware(options: CacheMiddlewareOptions): LanguageModelMiddleware;
|
|
37
|
+
//#endregion
|
|
38
|
+
export type { CacheCall, CacheMiddlewareOptions };
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { d as isRecord } from "../../block-helpers-DWHxHsEQ.js";
|
|
2
|
+
import { t as cacheKey } from "../../ai-cache-CBWs1W0k.js";
|
|
3
|
+
import { simulateReadableStream } from "ai";
|
|
4
|
+
//#region src/ai-sdk/cache/cache.ts
|
|
5
|
+
const BYTES = "$bytes";
|
|
6
|
+
const DATE = "$date";
|
|
7
|
+
const URL_TAG = "$url";
|
|
8
|
+
function encode(value) {
|
|
9
|
+
if (value instanceof Date) return { [DATE]: value.toISOString() };
|
|
10
|
+
if (value instanceof Uint8Array) {
|
|
11
|
+
let binary = "";
|
|
12
|
+
for (const byte of value) binary += String.fromCodePoint(byte);
|
|
13
|
+
return { [BYTES]: btoa(binary) };
|
|
14
|
+
}
|
|
15
|
+
if (value instanceof URL) return { [URL_TAG]: value.href };
|
|
16
|
+
if (Array.isArray(value)) return value.map(encode);
|
|
17
|
+
if (isRecord(value)) {
|
|
18
|
+
const out = {};
|
|
19
|
+
for (const [key, item] of Object.entries(value)) if (item !== void 0 && typeof item !== "function") out[key] = encode(item);
|
|
20
|
+
return out;
|
|
21
|
+
}
|
|
22
|
+
return value;
|
|
23
|
+
}
|
|
24
|
+
function decode(value) {
|
|
25
|
+
if (Array.isArray(value)) return value.map(decode);
|
|
26
|
+
if (!isRecord(value)) return value;
|
|
27
|
+
const keys = Object.keys(value);
|
|
28
|
+
if (keys.length === 1 && typeof value[DATE] === "string") return new Date(value[DATE]);
|
|
29
|
+
if (keys.length === 1 && typeof value[URL_TAG] === "string") return new URL(value[URL_TAG]);
|
|
30
|
+
if (keys.length === 1 && typeof value[BYTES] === "string") return Uint8Array.from(atob(value[BYTES]), (char) => char.codePointAt(0) ?? 0);
|
|
31
|
+
const out = {};
|
|
32
|
+
for (const [key, item] of Object.entries(value)) out[key] = decode(item);
|
|
33
|
+
return out;
|
|
34
|
+
}
|
|
35
|
+
const defaultKey = (call) => {
|
|
36
|
+
const { abortSignal: _signal, headers: _headers, ...params } = call.params;
|
|
37
|
+
return {
|
|
38
|
+
provider: call.model.provider,
|
|
39
|
+
model: call.model.modelId,
|
|
40
|
+
params
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* A `wrapLanguageModel` middleware that answers repeated calls from the AI
|
|
45
|
+
* cache block. A cached generation is returned as is, and a cached stream is
|
|
46
|
+
* replayed through `simulateReadableStream`. Calls that end in an error are
|
|
47
|
+
* never cached, and a cache that fails to answer only costs the lookup.
|
|
48
|
+
*/
|
|
49
|
+
function cacheMiddleware(options) {
|
|
50
|
+
const keyOf = async (call, type) => cacheKey({
|
|
51
|
+
type,
|
|
52
|
+
tenant: options.organizationId ?? null,
|
|
53
|
+
parts: (options.key ?? defaultKey)(call)
|
|
54
|
+
});
|
|
55
|
+
const read = async (key) => {
|
|
56
|
+
const entry = await options.cache.get(key);
|
|
57
|
+
if (!entry.ok) {
|
|
58
|
+
options.onError?.(entry.error);
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
return entry.data?.value;
|
|
62
|
+
};
|
|
63
|
+
const write = async (key, value, call, kind) => {
|
|
64
|
+
const saved = await options.cache.set(key, encode(value), {
|
|
65
|
+
ttl: options.ttl,
|
|
66
|
+
kind,
|
|
67
|
+
model: `${call.model.provider}/${call.model.modelId}`,
|
|
68
|
+
...options.organizationId === void 0 ? {} : { organizationId: options.organizationId }
|
|
69
|
+
});
|
|
70
|
+
if (!saved.ok) options.onError?.(saved.error);
|
|
71
|
+
};
|
|
72
|
+
return {
|
|
73
|
+
specificationVersion: "v4",
|
|
74
|
+
wrapGenerate: async (call) => {
|
|
75
|
+
if (options.when?.(call) === false) return call.doGenerate();
|
|
76
|
+
const key = await keyOf(call, "generate");
|
|
77
|
+
const cached = await read(key);
|
|
78
|
+
if (isRecord(cached)) return decode(cached);
|
|
79
|
+
const result = await call.doGenerate();
|
|
80
|
+
if (result.finishReason.unified !== "error") {
|
|
81
|
+
const { request: _request, ...rest } = result;
|
|
82
|
+
const response = rest.response === void 0 ? void 0 : {
|
|
83
|
+
...rest.response,
|
|
84
|
+
body: void 0,
|
|
85
|
+
headers: void 0
|
|
86
|
+
};
|
|
87
|
+
await write(key, {
|
|
88
|
+
...rest,
|
|
89
|
+
response
|
|
90
|
+
}, call, "generate");
|
|
91
|
+
}
|
|
92
|
+
return result;
|
|
93
|
+
},
|
|
94
|
+
wrapStream: async (call) => {
|
|
95
|
+
if (options.when?.(call) === false) return call.doStream();
|
|
96
|
+
const key = await keyOf(call, "stream");
|
|
97
|
+
const cached = await read(key);
|
|
98
|
+
if (isRecord(cached) && Array.isArray(cached["parts"])) {
|
|
99
|
+
const parts = decode(cached["parts"]);
|
|
100
|
+
return { stream: simulateReadableStream({
|
|
101
|
+
chunks: parts,
|
|
102
|
+
initialDelayInMs: options.replay?.initialDelayInMs ?? null,
|
|
103
|
+
chunkDelayInMs: options.replay?.chunkDelayInMs ?? null
|
|
104
|
+
}) };
|
|
105
|
+
}
|
|
106
|
+
const result = await call.doStream();
|
|
107
|
+
const parts = [];
|
|
108
|
+
let failed = false;
|
|
109
|
+
const stream = result.stream.pipeThrough(new TransformStream({
|
|
110
|
+
transform(part, controller) {
|
|
111
|
+
if (part.type === "error" || part.type === "finish" && part.finishReason.unified === "error") failed = true;
|
|
112
|
+
if (part.type !== "raw") parts.push(part);
|
|
113
|
+
controller.enqueue(part);
|
|
114
|
+
},
|
|
115
|
+
async flush() {
|
|
116
|
+
if (!failed) await write(key, { parts }, call, "stream");
|
|
117
|
+
}
|
|
118
|
+
}));
|
|
119
|
+
return {
|
|
120
|
+
...result,
|
|
121
|
+
stream
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
//#endregion
|
|
127
|
+
export { cacheMiddleware };
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { a as AssistantOptions, c as AssistantRunResult, i as AssistantModeration, l as AssistantTurn, n as AssistantContext, o as AssistantRequestBody, r as AssistantFinish, s as AssistantRunArgs, t as Assistant, u as createAssistant } from "../../assistant-DwdpDH1q.js";
|
|
2
|
+
export { type Assistant, type AssistantContext, type AssistantFinish, type AssistantModeration, type AssistantOptions, type AssistantRequestBody, type AssistantRunArgs, type AssistantRunResult, type AssistantTurn, createAssistant };
|
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
import { n as dbError } from "../../errors-B11Duf73.js";
|
|
2
|
+
import { a as problemResponse } from "../../problem-BreOl8b8.js";
|
|
3
|
+
import { d as isRecord } from "../../block-helpers-DWHxHsEQ.js";
|
|
4
|
+
import { n as pathToHistory, r as repairDanglingToolCalls } from "../../history-BZih6SFP.js";
|
|
5
|
+
import { a as isUIMessage, f as problem429, h as usageOf, i as fromUIMessage, l as gatewayOptions, p as runRelease, s as toUIMessages, t as AI_SDK_UI_FORMAT } from "../../messages-B9-5887d.js";
|
|
6
|
+
import { n as teeToStore, t as resumeFromStore } from "../../tee-CoEppCER.js";
|
|
7
|
+
import { JsonToSseTransformStream, UI_MESSAGE_STREAM_HEADERS, convertToModelMessages } from "ai";
|
|
8
|
+
//#region src/ai-sdk/chat/assistant.ts
|
|
9
|
+
const TRIGGERS = /* @__PURE__ */ new Set(["submit-message", "regenerate-message"]);
|
|
10
|
+
function badRequest(message) {
|
|
11
|
+
return problemResponse(dbError("invalid_request", message, { code: "AI_CHAT_BAD_REQUEST" }));
|
|
12
|
+
}
|
|
13
|
+
function parseBody(value) {
|
|
14
|
+
if (!isRecord(value)) return "Expected a JSON object.";
|
|
15
|
+
const { id, trigger, messageId, model } = value;
|
|
16
|
+
if (typeof id !== "string" || id === "") return "Expected the chat id.";
|
|
17
|
+
const messages = value["messages"];
|
|
18
|
+
const last = Array.isArray(messages) ? messages.at(-1) : void 0;
|
|
19
|
+
const message = value["message"] ?? last;
|
|
20
|
+
if (!isUIMessage(message) || message.role !== "user") return "Expected the user's message.";
|
|
21
|
+
if (trigger !== void 0 && !TRIGGERS.has(trigger)) return "Expected submit-message or regenerate-message.";
|
|
22
|
+
return {
|
|
23
|
+
id,
|
|
24
|
+
message,
|
|
25
|
+
...trigger === "regenerate-message" ? { trigger } : {},
|
|
26
|
+
...typeof messageId === "string" ? { messageId } : {},
|
|
27
|
+
...typeof model === "string" ? { model } : {}
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
async function readJson(request) {
|
|
31
|
+
try {
|
|
32
|
+
return await request.json();
|
|
33
|
+
} catch {
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
const settle = async (value) => {
|
|
38
|
+
try {
|
|
39
|
+
return await value;
|
|
40
|
+
} catch {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
function sse(stream) {
|
|
45
|
+
return new Response(stream.pipeThrough(new TextEncoderStream()), { headers: UI_MESSAGE_STREAM_HEADERS });
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* A chat route for the AI SDK on the `ai-chat` block: `respond` stores the
|
|
49
|
+
* user's message, picks an allowed model, checks the quota, claims the
|
|
50
|
+
* chat's answer, runs the model and streams it while keeping a copy in the
|
|
51
|
+
* stream store; the answer and its usage are stored when it ends, even
|
|
52
|
+
* after the client left. `resume` replays it after a reload, `stop` ends it.
|
|
53
|
+
*/
|
|
54
|
+
function createAssistant(options) {
|
|
55
|
+
const newId = options.generateId ?? (() => crypto.randomUUID());
|
|
56
|
+
async function chatOf(context, body) {
|
|
57
|
+
const found = await context.chats.chats.get(body.id);
|
|
58
|
+
if (found.ok) return found.data;
|
|
59
|
+
if (found.error.kind !== "not_found") return problemResponse(found.error);
|
|
60
|
+
const created = await context.chats.chats.create(context.organizationId, {
|
|
61
|
+
id: body.id,
|
|
62
|
+
...body.model === void 0 ? {} : { model: body.model }
|
|
63
|
+
});
|
|
64
|
+
return created.ok ? created.data : problemResponse(created.error);
|
|
65
|
+
}
|
|
66
|
+
async function modelOf(context, chat, requested) {
|
|
67
|
+
const allowed = await context.chats.models.allowed(chat.organizationId);
|
|
68
|
+
if (!allowed.ok) return problemResponse(allowed.error);
|
|
69
|
+
const ids = new Set(allowed.data.map((model) => model.id));
|
|
70
|
+
const fits = (id) => ids.size === 0 || ids.has(id);
|
|
71
|
+
if (requested !== void 0 && fits(requested)) return requested;
|
|
72
|
+
if (requested !== void 0) return problemResponse(dbError("forbidden", `The model ${requested} is not allowed.`, { code: "AI_MODEL_NOT_ALLOWED" }));
|
|
73
|
+
if (chat.model !== void 0 && fits(chat.model)) return chat.model;
|
|
74
|
+
if (fits(options.defaultModel)) return options.defaultModel;
|
|
75
|
+
const first = allowed.data[0];
|
|
76
|
+
return first === void 0 ? options.defaultModel : first.id;
|
|
77
|
+
}
|
|
78
|
+
async function moderated(context, chat, message) {
|
|
79
|
+
const verdict = await options.moderate?.({
|
|
80
|
+
message,
|
|
81
|
+
chat
|
|
82
|
+
});
|
|
83
|
+
if (verdict === void 0 || verdict.action === "allow") return void 0;
|
|
84
|
+
await context.chats.moderation.record({
|
|
85
|
+
organizationId: chat.organizationId,
|
|
86
|
+
chatId: chat.id,
|
|
87
|
+
messageId: message.id,
|
|
88
|
+
userId: context.userId,
|
|
89
|
+
stage: "input",
|
|
90
|
+
action: verdict.action,
|
|
91
|
+
category: verdict.category,
|
|
92
|
+
...verdict.score === void 0 ? {} : { score: verdict.score }
|
|
93
|
+
});
|
|
94
|
+
return verdict.action === "block" ? problemResponse(dbError("forbidden", "The message was blocked.", { code: "AI_MODERATION_BLOCKED" })) : void 0;
|
|
95
|
+
}
|
|
96
|
+
async function prepare(value, context) {
|
|
97
|
+
const body = parseBody(value);
|
|
98
|
+
if (typeof body === "string") return badRequest(body);
|
|
99
|
+
const chat = await chatOf(context, body);
|
|
100
|
+
if (chat instanceof Response) return chat;
|
|
101
|
+
const model = await modelOf(context, chat, body.model);
|
|
102
|
+
if (model instanceof Response) return model;
|
|
103
|
+
const userMessage = fromUIMessage(body.message);
|
|
104
|
+
const blocked = await moderated(context, chat, userMessage);
|
|
105
|
+
if (blocked) return blocked;
|
|
106
|
+
if (options.quota) {
|
|
107
|
+
const exceeded = await options.quota(chat.organizationId);
|
|
108
|
+
if (exceeded) return problem429(exceeded);
|
|
109
|
+
}
|
|
110
|
+
const appended = await context.chats.messages.appendUser(chat.id, userMessage, {
|
|
111
|
+
...body.trigger === void 0 ? {} : { trigger: body.trigger },
|
|
112
|
+
...body.messageId === void 0 ? {} : { messageId: body.messageId }
|
|
113
|
+
});
|
|
114
|
+
if (!appended.ok) return problemResponse(appended.error);
|
|
115
|
+
const parentId = appended.data.messageId;
|
|
116
|
+
const path = await context.chats.messages.path(chat.id, {
|
|
117
|
+
leafId: parentId,
|
|
118
|
+
native: true
|
|
119
|
+
});
|
|
120
|
+
if (!path.ok) return problemResponse(path.error);
|
|
121
|
+
const repaired = new Map(repairDanglingToolCalls(pathToHistory(path.data)).map((message) => [message.id, message]));
|
|
122
|
+
const uiMessages = toUIMessages(path.data.map((stored) => stored.format === "ai-sdk-ui" ? stored : repaired.get(stored.id) ?? stored));
|
|
123
|
+
return {
|
|
124
|
+
chat,
|
|
125
|
+
model,
|
|
126
|
+
parentId,
|
|
127
|
+
uiMessages,
|
|
128
|
+
messages: await convertToModelMessages(uiMessages, { ignoreIncompleteToolCalls: true }),
|
|
129
|
+
providerOptions: gatewayOptions({
|
|
130
|
+
userId: context.userId,
|
|
131
|
+
organizationId: chat.organizationId,
|
|
132
|
+
chatId: chat.id,
|
|
133
|
+
feature: options.feature ?? "chat"
|
|
134
|
+
})
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
async function respond(request, context) {
|
|
138
|
+
const turn = await prepare(await readJson(request), context);
|
|
139
|
+
if (turn instanceof Response) return turn;
|
|
140
|
+
const { chat, model, parentId, uiMessages } = turn;
|
|
141
|
+
const streamId = newId();
|
|
142
|
+
const assistantId = newId();
|
|
143
|
+
const claim = await context.chats.runs.claim(chat.id, streamId, {
|
|
144
|
+
model,
|
|
145
|
+
messageId: assistantId
|
|
146
|
+
});
|
|
147
|
+
if (!claim.ok) return problemResponse(claim.error);
|
|
148
|
+
if (!claim.data.claimed) return problemResponse(dbError("conflict", "An answer is already being written.", { code: "AI_CHAT_BUSY" }));
|
|
149
|
+
const runId = claim.data.runId;
|
|
150
|
+
const abort = new AbortController();
|
|
151
|
+
const release = (status, usage, error) => context.chats.runs.release(chat.id, streamId, runRelease(status, usage, error));
|
|
152
|
+
let result;
|
|
153
|
+
try {
|
|
154
|
+
result = await options.run({
|
|
155
|
+
chat,
|
|
156
|
+
model,
|
|
157
|
+
messages: turn.messages,
|
|
158
|
+
uiMessages,
|
|
159
|
+
abortSignal: abort.signal,
|
|
160
|
+
providerOptions: turn.providerOptions,
|
|
161
|
+
context
|
|
162
|
+
});
|
|
163
|
+
} catch (cause) {
|
|
164
|
+
await release("failed", void 0, String(cause));
|
|
165
|
+
return problemResponse(dbError("unexpected", "The answer could not be started.", { code: "AI_CHAT_RUN_FAILED" }));
|
|
166
|
+
}
|
|
167
|
+
let finished;
|
|
168
|
+
const onEnd = (event) => {
|
|
169
|
+
finished = (async () => {
|
|
170
|
+
const stopped = event.isAborted || abort.signal.aborted;
|
|
171
|
+
const status = stopped ? "cancelled" : "completed";
|
|
172
|
+
const saved = await context.chats.messages.saveAssistant(chat.id, fromUIMessage(event.responseMessage), {
|
|
173
|
+
parentId,
|
|
174
|
+
status: stopped ? "aborted" : "complete",
|
|
175
|
+
model,
|
|
176
|
+
format: AI_SDK_UI_FORMAT,
|
|
177
|
+
native: event.responseMessage,
|
|
178
|
+
runId
|
|
179
|
+
});
|
|
180
|
+
const usage = usageOf({
|
|
181
|
+
totalUsage: await settle(result.totalUsage),
|
|
182
|
+
providerMetadata: await settle(result.providerMetadata)
|
|
183
|
+
});
|
|
184
|
+
await release(saved.ok ? status : "failed", usage, saved.ok ? void 0 : saved.error.message);
|
|
185
|
+
if (usage.costMicroUsd === void 0 && usage.generationId !== void 0 && options.enqueueCostBackfill) await options.enqueueCostBackfill({
|
|
186
|
+
generationId: usage.generationId,
|
|
187
|
+
organizationId: chat.organizationId
|
|
188
|
+
});
|
|
189
|
+
await options.onFinish?.({
|
|
190
|
+
chat,
|
|
191
|
+
message: event.responseMessage,
|
|
192
|
+
status,
|
|
193
|
+
model,
|
|
194
|
+
usage,
|
|
195
|
+
context
|
|
196
|
+
});
|
|
197
|
+
})();
|
|
198
|
+
return finished;
|
|
199
|
+
};
|
|
200
|
+
const chunks = result.toUIMessageStream({
|
|
201
|
+
originalMessages: uiMessages,
|
|
202
|
+
generateMessageId: () => assistantId,
|
|
203
|
+
onEnd,
|
|
204
|
+
...options.onError === void 0 ? {} : { onError: options.onError }
|
|
205
|
+
});
|
|
206
|
+
const teed = teeToStore(options.streams, streamId, chunks.pipeThrough(new JsonToSseTransformStream()), {
|
|
207
|
+
owner: chat.ownerId,
|
|
208
|
+
tenant: chat.organizationId,
|
|
209
|
+
kind: "chat",
|
|
210
|
+
...options.streamTtl === void 0 ? {} : { ttl: options.streamTtl },
|
|
211
|
+
onCancel: () => {
|
|
212
|
+
abort.abort();
|
|
213
|
+
}
|
|
214
|
+
});
|
|
215
|
+
context.waitUntil?.((async () => {
|
|
216
|
+
await teed.persisted;
|
|
217
|
+
await finished;
|
|
218
|
+
})());
|
|
219
|
+
return sse(teed.stream);
|
|
220
|
+
}
|
|
221
|
+
async function resume(chatId, context, resumeOptions = {}) {
|
|
222
|
+
const chat = await context.chats.chats.get(chatId);
|
|
223
|
+
if (!chat.ok) return chat.error.kind === "not_found" ? new Response(null, { status: 204 }) : problemResponse(chat.error);
|
|
224
|
+
const { activeStreamId } = chat.data;
|
|
225
|
+
if (activeStreamId === void 0) return new Response(null, { status: 204 });
|
|
226
|
+
const stream = await resumeFromStore(options.streams, activeStreamId, {
|
|
227
|
+
...resumeOptions.fromIdx === void 0 ? {} : { fromIdx: resumeOptions.fromIdx },
|
|
228
|
+
...resumeOptions.signal === void 0 ? {} : { signal: resumeOptions.signal }
|
|
229
|
+
});
|
|
230
|
+
if (!stream.ok) return problemResponse(stream.error);
|
|
231
|
+
return stream.data === void 0 ? new Response(null, { status: 204 }) : sse(stream.data);
|
|
232
|
+
}
|
|
233
|
+
async function stop(chatId, context) {
|
|
234
|
+
const stopped = await context.chats.runs.stop(chatId);
|
|
235
|
+
if (!stopped.ok) return problemResponse(stopped.error);
|
|
236
|
+
return new Response(null, { status: 204 });
|
|
237
|
+
}
|
|
238
|
+
return {
|
|
239
|
+
respond,
|
|
240
|
+
prepare,
|
|
241
|
+
resume,
|
|
242
|
+
stop
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
//#endregion
|
|
246
|
+
export { createAssistant };
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { n as Embedder, o as KnowledgeHit } from "../../knowledge-BXBbT0Tr.js";
|
|
2
|
+
import { a as SupabaseAiSession, c as modelName, d as supabaseEmbed, f as toSourceParts, i as SearchToolResult, l as rerankWith, n as Reranker, o as SupabaseEmbedOptions, r as SearchToolOptions, s as embedWith, t as EmbedWithOptions, u as searchTool } from "../../embeddings-C9KGQnXt.js";
|
|
3
|
+
export { type EmbedWithOptions, type Embedder, type KnowledgeHit, type Reranker, type SearchToolOptions, type SearchToolResult, type SupabaseAiSession, type SupabaseEmbedOptions, embedWith, modelName, rerankWith, searchTool, supabaseEmbed, toSourceParts };
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/// <reference lib="esnext.temporal" />
|
|
2
|
+
import { b as DbError, t as AsyncResult } from "../../result-D7y2fT87.js";
|
|
3
|
+
import { i as AiFilePart } from "../../message-CfDoR0Y6.js";
|
|
4
|
+
import { c as AiFileSource, f as AiFiles } from "../../types-C05bxW-W.js";
|
|
5
|
+
import { Experimental_DownloadFunction } from "ai";
|
|
6
|
+
//#region src/ai-sdk/files/files.d.ts
|
|
7
|
+
interface AiFileDownloadOptions {
|
|
8
|
+
/**
|
|
9
|
+
* How other URLs download: the SDK's `createDownload()` by default, or
|
|
10
|
+
* `false` to refuse every URL that isn't `supabase-storage://`.
|
|
11
|
+
*/
|
|
12
|
+
readonly fallback?: Experimental_DownloadFunction | false;
|
|
13
|
+
readonly abortSignal?: AbortSignal;
|
|
14
|
+
}
|
|
15
|
+
/** Thrown by the download function, so the SDK reports a failed file part. */
|
|
16
|
+
export declare class AiFileDownloadError extends Error {
|
|
17
|
+
readonly error: DbError;
|
|
18
|
+
constructor(url: URL, error: DbError);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* The SDK's `experimental_download` for messages that hold
|
|
22
|
+
* `supabase-storage://` file URLs: it reads each file as the caller, so a
|
|
23
|
+
* user can never send a model someone else's file, and keeps the
|
|
24
|
+
* `maxBytes` limit of `createAiFiles`.
|
|
25
|
+
*/
|
|
26
|
+
export declare function aiFileDownload(files: AiFiles, options?: AiFileDownloadOptions): Experimental_DownloadFunction;
|
|
27
|
+
/** A file a model generated: the SDK's `GeneratedFile`, typed structurally. */
|
|
28
|
+
interface GeneratedFileLike {
|
|
29
|
+
readonly uint8Array: Uint8Array;
|
|
30
|
+
readonly mediaType: string;
|
|
31
|
+
}
|
|
32
|
+
interface SaveGeneratedOptions {
|
|
33
|
+
readonly organizationId: string;
|
|
34
|
+
readonly ownerId: string;
|
|
35
|
+
readonly chatId?: string;
|
|
36
|
+
/** The file name for the n-th file; default `generated-{n}.{ext}`. */
|
|
37
|
+
readonly filename?: (file: GeneratedFileLike, index: number) => string;
|
|
38
|
+
readonly source?: AiFileSource;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Stores what `generateImage`, `generateSpeech` or a model's file output
|
|
42
|
+
* returned (service role) and gives back file parts that point at them.
|
|
43
|
+
*/
|
|
44
|
+
export declare function saveGeneratedFiles(files: AiFiles, generated: readonly GeneratedFileLike[], options: SaveGeneratedOptions): AsyncResult<readonly AiFilePart[]>;
|
|
45
|
+
interface ProviderFileUpload {
|
|
46
|
+
/** What the provider's file API returned: a file id or a file URI. */
|
|
47
|
+
readonly reference: string;
|
|
48
|
+
readonly expiresAt?: Temporal.Instant;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* The provider's reference for a file, uploading it once with `upload`
|
|
52
|
+
* (such as the SDK's `uploadFile` or a provider client) and reusing the
|
|
53
|
+
* reference until it expires.
|
|
54
|
+
*/
|
|
55
|
+
export declare function providerFile(files: AiFiles, fileId: string, provider: string, upload: (file: {
|
|
56
|
+
readonly data: Uint8Array;
|
|
57
|
+
readonly mediaType: string;
|
|
58
|
+
readonly filename: string;
|
|
59
|
+
}) => Promise<ProviderFileUpload>): AsyncResult<string>;
|
|
60
|
+
//#endregion
|
|
61
|
+
export type { AiFileDownloadOptions, GeneratedFileLike, ProviderFileUpload, SaveGeneratedOptions };
|