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