better-supabase 0.7.1 → 0.8.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 +6 -2
- package/dist/{access-sql-B0dF-SoF.js → access-sql-CrSbK1q-.js} +1 -1
- package/dist/{adapter-iKgjHVPx.js → adapter-CN45ibbV.js} +658 -157
- package/dist/{agents-CVHGd7It.d.ts → agents-BY_LQXtQ.d.ts} +4 -4
- package/dist/{ai-cache-CBWs1W0k.js → ai-cache-Dfgk8nBT.js} +2 -1
- package/dist/{ai-cache-DaDu_G5L.d.ts → ai-cache-DrUMMgp6.d.ts} +4 -4
- package/dist/{ai-chat-B24UI962.js → ai-chat-CVLRWbtS.js} +4 -3
- package/dist/{ai-chat-7amvXjmQ.d.ts → ai-chat-DXkMy74O.d.ts} +5 -5
- package/dist/{ai-files-CSPNswUY.js → ai-files-CioLu5du.js} +5 -4
- package/dist/ai-message-DfaP8sis.js +14 -0
- package/dist/ai-sdk/agents/index.d.ts +4 -4
- package/dist/ai-sdk/batches/index.d.ts +4 -4
- package/dist/ai-sdk/batches/index.js +4 -4
- package/dist/ai-sdk/cache/index.d.ts +2 -2
- package/dist/ai-sdk/cache/index.js +2 -2
- package/dist/ai-sdk/chat/index.d.ts +1 -1
- package/dist/ai-sdk/chat/index.js +8 -20
- package/dist/ai-sdk/embeddings/index.d.ts +2 -2
- package/dist/ai-sdk/files/index.d.ts +3 -3
- package/dist/ai-sdk/files/index.js +4 -4
- package/dist/ai-sdk/index.d.ts +37 -9
- package/dist/ai-sdk/index.js +3 -2
- package/dist/ai-sdk/mcp/index.d.ts +43 -6
- package/dist/ai-sdk/mcp/index.js +36 -7
- package/dist/ai-sdk/memory/index.d.ts +2 -2
- package/dist/ai-sdk/memory/index.js +1 -1
- package/dist/ai-sdk/workflow/index.d.ts +6 -6
- package/dist/ai-sdk/workflow/index.js +13 -24
- package/dist/{ai-tasks-Cd1HMFvB.d.ts → ai-tasks-BRQ6iQLc.d.ts} +4 -4
- package/dist/{announcements-ZRGnScWI.d.ts → announcements-Bouy0Ski.d.ts} +3 -3
- package/dist/{announcements-CiyOs-xP.js → announcements-p_BFofiR.js} +1 -1
- package/dist/api-Dnf2q-Ht.d.ts +370 -0
- package/dist/api-DtHFC037.js +676 -0
- package/dist/{api-keys-CIjghYjV.d.ts → api-keys-C8BlF3L2.d.ts} +4 -4
- package/dist/arazzo/index.d.ts +255 -0
- package/dist/arazzo/index.js +622 -0
- package/dist/{assistant-DwdpDH1q.d.ts → assistant-DBlFDZsi.d.ts} +5 -5
- package/dist/astro/index.d.ts +7 -7
- package/dist/astro/index.js +7 -7
- package/dist/asyncapi/index.d.ts +103 -0
- package/dist/asyncapi/index.js +569 -0
- package/dist/authorizer-ayxUDXXP.js +126 -0
- package/dist/authorizer-eiOjo-3l.d.ts +73 -0
- package/dist/better-result/index.d.ts +118 -0
- package/dist/better-result/index.js +64 -0
- package/dist/{bind-l4kAvYSv.js → bind-ButSzrHe.js} +1 -1
- package/dist/{bind-Bu_ZNa3W.d.ts → bind-CQ5mPyX1.d.ts} +3 -3
- package/dist/{block-events-CrT8r7Fe.js → block-events-DTxU5tfr.js} +18 -3
- package/dist/{block-fields-GFkxl4dP.js → block-fields-CroxUuF2.js} +3 -3
- package/dist/{block-fields-SJ6fEf3o.d.ts → block-fields-D1pfrcIY.d.ts} +2 -2
- package/dist/{block-helpers-CKtbFcRv.d.ts → block-helpers-C0Xj8War.d.ts} +2 -2
- package/dist/{block-helpers-DWHxHsEQ.js → block-helpers-Cy3pB96I.js} +41 -9
- package/dist/{block-hooks-BmjMyXTa.js → block-hooks-BPNMIlLl.js} +3 -3
- package/dist/{block-hooks-plbZ0AbJ.d.ts → block-hooks-DaOVC7SC.d.ts} +3 -3
- package/dist/{block-transport-BLr-ZgLc.js → block-transport-bAKh-dGc.js} +28 -2
- package/dist/{block-transport-DvaoPuZ9.d.ts → block-transport-inD4fFq-.d.ts} +24 -2
- package/dist/blocks/agents/index.d.ts +3 -3
- package/dist/blocks/agents/index.js +5 -4
- package/dist/blocks/ai-cache/index.d.ts +3 -3
- package/dist/blocks/ai-cache/index.js +3 -3
- package/dist/blocks/ai-chat/index.d.ts +9 -4
- package/dist/blocks/ai-chat/index.js +5 -5
- package/dist/blocks/ai-chat/react/index.d.ts +3 -3
- package/dist/blocks/ai-chat/react/index.js +5 -5
- package/dist/blocks/ai-files/index.d.ts +3 -3
- package/dist/blocks/ai-files/index.js +3 -3
- package/dist/blocks/ai-providers/index.d.ts +3 -3
- package/dist/blocks/ai-providers/index.js +8 -7
- package/dist/blocks/ai-tasks/index.d.ts +3 -3
- package/dist/blocks/ai-tasks/index.js +7 -6
- package/dist/blocks/announcements/index.d.ts +3 -3
- package/dist/blocks/announcements/index.js +3 -3
- package/dist/blocks/announcements/react/index.d.ts +3 -3
- package/dist/blocks/announcements/react/index.js +3 -3
- package/dist/blocks/api-keys/index.d.ts +5 -5
- package/dist/blocks/api-keys/index.js +8 -8
- package/dist/blocks/attachments/index.d.ts +12 -8
- package/dist/blocks/attachments/index.js +22 -13
- package/dist/blocks/audit/index.d.ts +21 -10
- package/dist/blocks/audit/index.js +30 -11
- package/dist/blocks/billing/index.d.ts +11 -9
- package/dist/blocks/billing/index.js +15 -15
- package/dist/blocks/comments/index.d.ts +8 -8
- package/dist/blocks/comments/index.js +8 -7
- package/dist/blocks/connectors/index.d.ts +3 -3
- package/dist/blocks/connectors/index.js +7 -6
- package/dist/blocks/data-lifecycle/index.d.ts +12 -8
- package/dist/blocks/data-lifecycle/index.js +13 -8
- package/dist/blocks/entitlements/index.d.ts +3 -3
- package/dist/blocks/entitlements/index.js +1 -1
- package/dist/blocks/flags/index.d.ts +4 -4
- package/dist/blocks/flags/index.js +4 -3
- package/dist/blocks/inbox/index.d.ts +3 -3
- package/dist/blocks/inbox/index.js +4 -5
- package/dist/blocks/inbox/react/index.d.ts +1 -1
- package/dist/blocks/inbox/react/index.js +1 -1
- package/dist/blocks/inbox/react/server.d.ts +1 -1
- package/dist/blocks/index.d.ts +10 -10
- package/dist/blocks/index.js +6 -6
- package/dist/blocks/jobs/index.d.ts +48 -32
- package/dist/blocks/jobs/index.js +44 -287
- package/dist/blocks/knowledge/index.d.ts +3 -3
- package/dist/blocks/knowledge/index.js +3 -3
- package/dist/blocks/memory/index.d.ts +4 -4
- package/dist/blocks/memory/index.js +7 -6
- package/dist/blocks/notifications/index.d.ts +11 -9
- package/dist/blocks/notifications/index.js +20 -25
- package/dist/blocks/notifications/react/index.d.ts +1 -1
- package/dist/blocks/notifications/react/index.js +1 -1
- package/dist/blocks/onboarding/index.d.ts +3 -3
- package/dist/blocks/onboarding/index.js +3 -3
- package/dist/blocks/onboarding/react/index.d.ts +2 -2
- package/dist/blocks/onboarding/react/index.js +2 -2
- package/dist/blocks/onboarding/react/server.d.ts +1 -1
- package/dist/blocks/organizations/index.d.ts +9 -9
- package/dist/blocks/organizations/index.js +11 -18
- package/dist/blocks/outbox/index.d.ts +2 -2
- package/dist/blocks/outbox/index.js +16 -25
- package/dist/blocks/profiles/index.d.ts +7 -7
- package/dist/blocks/profiles/index.js +7 -6
- package/dist/blocks/push/index.d.ts +4 -4
- package/dist/blocks/push/index.js +3 -3
- package/dist/blocks/settings/index.d.ts +4 -4
- package/dist/blocks/settings/index.js +7 -6
- package/dist/blocks/sso/index.d.ts +5 -5
- package/dist/blocks/sso/index.js +6 -5
- package/dist/blocks/usage/index.d.ts +3 -3
- package/dist/blocks/usage/index.js +5 -4
- package/dist/blocks/waitlist/index.d.ts +5 -5
- package/dist/blocks/waitlist/index.js +5 -4
- package/dist/blocks/webhooks/index.d.ts +22 -13
- package/dist/blocks/webhooks/index.js +41 -70
- package/dist/blocks/workflow-builder/index.d.ts +4 -4
- package/dist/blocks/workflow-builder/index.js +3 -3
- package/dist/blocks/workflow-builder/react/index.d.ts +4 -4
- package/dist/blocks/workflow-builder/react/index.js +4 -4
- package/dist/blocks/workflows/index.d.ts +3 -3
- package/dist/blocks/workflows/index.js +3 -3
- package/dist/blocks/workflows/react/index.d.ts +3 -3
- package/dist/blocks/workflows/react/index.js +3 -3
- package/dist/build-hPwk3_X5.js +1296 -0
- package/dist/{build-BXIzE6Xv.js → build-meLuYGri.js} +3 -3
- package/dist/casing-DdFWEtqr.js +16 -0
- package/dist/chat-sdk/index.d.ts +6 -6
- package/dist/chat-sdk/index.js +5 -4
- package/dist/chat-sdk/react/index.d.ts +1 -1
- package/dist/chat-sdk/react/server.d.ts +1 -1
- package/dist/{claims-DDBQT6BK.js → claims-0KZVT804.js} +1 -1
- package/dist/cli/add-1dc5wM5k.js +69 -0
- package/dist/cli/arazzo-1.0-BalU61-_.js +532 -0
- package/dist/cli/arazzo-1.1-Bnfasbun.js +705 -0
- package/dist/cli/asyncapi-3.0.0-C78dBjR6.js +5593 -0
- package/dist/cli/asyncapi-3.1.0-g-7aIfV1.js +5833 -0
- package/dist/cli/bin.js +4 -4
- package/dist/cli/cache-CIfA-jBV.js +483 -0
- package/dist/cli/{codemod-Bl_tQpHn.js → codemod-JVlTQQG2.js} +4 -4
- package/dist/cli/{command-CK14fP91.js → command-DV-StG1x.js} +5 -0
- package/dist/cli/{config-DU7EJImt.js → config-C2Pz2_4A.js} +7 -4
- package/dist/cli/config-DpbF8ML3.js +2 -0
- package/dist/cli/{config-NiPxAmUF.js → config-M-WzL9O2.js} +116 -18
- package/dist/cli/{db-DOBPt660.js → db-BkcfOlyB.js} +2 -1
- package/dist/cli/{diff-SjkO5rNr.js → diff-D1jGdb3Y.js} +1 -1
- package/dist/cli/{doctor-DJk0aeBi.js → doctor-VcDtuusV.js} +316 -221
- package/dist/cli/emit-BHHfwUoT.js +1136 -0
- package/dist/cli/{env-qXgyMV6r.js → env-B--LMhEe.js} +13 -10
- package/dist/cli/env-vzBG90Um.js +2 -0
- package/dist/cli/{env-CJLbUVPB.js → env-zHJtMIBo.js} +11 -3
- package/dist/cli/{errors-4v4DTtda.js → errors-CqTLXe2M.js} +18 -2
- package/dist/cli/{fastest-levenshtein-CFN-lNDv.js → fastest-levenshtein-CF7BCi9l.js} +1 -1
- package/dist/cli/files-BVupXPIC.js +34 -0
- package/dist/cli/gen-DmVj3u4L.js +322 -0
- package/dist/cli/{init-BHuEQrQK.js → glue-C1UE8gQN.js} +16 -313
- package/dist/cli/index.d.ts +59 -31
- package/dist/cli/index.js +8 -6
- package/dist/cli/init-CVZ3s5kl.js +258 -0
- package/dist/cli/{introspect-DzR2nyQb.js → introspect-BToGNfm-.js} +14 -14
- package/dist/cli/{io-DI1mTdSA.js → io-CFzJVJ68.js} +5 -1
- package/dist/cli/{keys-BGCnnb-s.js → keys-CJhtIxJ3.js} +4 -4
- package/dist/cli/metadata-DSRKCaf-.js +133 -0
- package/dist/cli/names-D6LrQnOv.js +6 -0
- package/dist/cli/openapi-3.0-t7xwkuRH.js +928 -0
- package/dist/cli/openapi-3.1-CVze7tBS.js +870 -0
- package/dist/cli/openapi-3.2-CFoMYM01.js +1031 -0
- package/dist/cli/{openapi-BlRJ18s3.js → openapi-DWa4Ir1q.js} +8 -14
- package/dist/cli/prompts-BdeVmVpg.js +2 -0
- package/dist/cli/{prompts-BNcNfAve.js → prompts-DZJB1nTw.js} +6 -6
- package/dist/cli/{rolldown-runtime-BPOCksWG.js → rolldown-runtime-CMFfr-1z.js} +3 -1
- package/dist/cli/run-DA6_lg3w.js +389 -0
- package/dist/cli/run-DuN1MX-7.js +705 -0
- package/dist/cli/scaffold-5DenHSxF.js +292 -0
- package/dist/cli/scaffold-CwQUMFRb.js +2 -0
- package/dist/cli/{seed-DQzqT7LP.js → seed-CzBmrGON.js} +14 -18
- package/dist/cli/seed-DOmit9Hq.js +2 -0
- package/dist/cli/{skills-QQs4q68J.js → skills-CnO8QFS7.js} +7 -6
- package/dist/cli/snapshot-Bstk6ulj.js +287 -0
- package/dist/cli/source-args-BYfq6imV.js +31 -0
- package/dist/cli/spec-CzosTYm3.js +7438 -0
- package/dist/cli/spec-T_0Bcyw7.js +2 -0
- package/dist/cli/{sql-B8csQPyn.js → sql-BKOOQAX3.js} +240 -218
- package/dist/cli/sql-DJrNDxQm.js +3 -0
- package/dist/cli/{style-C0NFdJRL.js → style-CB3vxgh0.js} +3 -3
- package/dist/cli/typegen-Demi5-VQ.js +486 -0
- package/dist/cli/validate-Ca13ktgz.js +7522 -0
- package/dist/cli/{version-59gcepIG.js → version-B4k0aUxS.js} +1 -1
- package/dist/client/index.d.ts +4 -3
- package/dist/client/index.js +60 -3
- package/dist/client/native/index.d.ts +3 -3
- package/dist/client/native/index.js +3 -3
- package/dist/{client-CI0Z2zWX.js → client-wxeTQFtB.js} +36 -3
- package/dist/{clone-BfgmLU90.js → clone-dN9XOL1K.js} +9 -1
- package/dist/{cloud-event-BnmD5fb9.js → cloud-event-CTh9Sr5w.js} +16 -2
- package/dist/{cloud-event-C1JCc1bH.d.ts → cloud-event-Dune0KI7.d.ts} +16 -2
- package/dist/{compiler-DY_wkj4R.d.ts → compiler-V1qvcST1.d.ts} +2 -2
- package/dist/{compose-BIBNgAnq.js → compose-BHej1acw.js} +3 -3
- package/dist/{composite--yqry7uW.d.ts → composite-CWAJTRBF.d.ts} +6 -6
- package/dist/{composite-DXVUibdi.js → composite-zTe0TCqj.js} +4 -4
- package/dist/config/index.d.ts +3 -4
- package/dist/config/index.js +4 -4
- package/dist/config-DlKvtt95.js +540 -0
- package/dist/{connector-Dv8kK0MO.d.ts → connector-CySQEFcW.d.ts} +1 -1
- package/dist/{connectors-CrpknU0P.d.ts → connectors--PGhmiu0.d.ts} +4 -4
- package/dist/{context-BCrWe7ow.d.ts → context-DsV2SueA.d.ts} +11 -2
- package/dist/context-nPDvQ-Zl.js +41 -0
- package/dist/credentials/index.d.ts +5 -5
- package/dist/credentials/index.js +9 -17
- package/dist/{cron-DVPUg5k3.js → cron-D25Ukpxy.js} +1 -1
- package/dist/cron-route-D2AN9SA1.js +24 -0
- package/dist/{csv-DCK-PT1n.js → csv-BZnHA1Py.js} +1 -1
- package/dist/{define-B-TVjC25.js → define-CFQcvM20.js} +263 -229
- package/dist/{define-CJJkkr1-.d.ts → define-DmcfoNXB.d.ts} +136 -111
- package/dist/edge/index.d.ts +66 -13
- package/dist/edge/index.js +65 -39
- package/dist/elysia/index.d.ts +1 -1
- package/dist/elysia/index.js +1 -1
- package/dist/{embeddings-C9KGQnXt.d.ts → embeddings-B4vhS-dY.d.ts} +1 -1
- package/dist/{ended-XjeGQ5XW.d.ts → ended-CcvcRqEd.d.ts} +7 -1
- package/dist/{entitlements-DRl6ZJUm.js → entitlements-BYFf0Cdh.js} +2 -2
- package/dist/{entitlements-BKSVGtrG.d.ts → entitlements-Ds8qoYZ-.d.ts} +1 -1
- package/dist/env/index.d.ts +1 -1
- package/dist/env/index.js +9 -2
- package/dist/{errors-B11Duf73.js → errors-2M6CKMP4.js} +5 -0
- package/dist/{errors-DLjJHPLK.js → errors-rZ7VIqp6.js} +2 -2
- package/dist/{escape-like-ImTK0ps_.d.ts → escape-like-DDWoHzh_.d.ts} +1 -1
- package/dist/eve/index.d.ts +5 -5
- package/dist/eve/index.js +5 -11
- package/dist/{eve-gT2Fpjut.d.ts → eve-CoAIcCkq.d.ts} +2 -2
- package/dist/events/index.d.ts +4 -4
- package/dist/events/index.js +7 -2
- package/dist/{events-DWDhx77e.d.ts → events-D1BOCll8.d.ts} +6 -4
- package/dist/{executor-Bq28caBo.js → executor-B-fD7DLt.js} +52 -35
- package/dist/executor-B_Hfobee.js +162 -0
- package/dist/{executor-BVBFM86G.d.ts → executor-CpxLPCiz.d.ts} +1 -1
- package/dist/{executor-CaWigTyR.d.ts → executor-DfEtf0cq.d.ts} +43 -27
- package/dist/{executor-DvsBbNBS.d.ts → executor-Drzu3dBK.d.ts} +2 -2
- package/dist/{executor-DbvExCFC.d.ts → executor-ngjKL_Pe.d.ts} +2 -2
- package/dist/expo/index.d.ts +4 -4
- package/dist/expo/index.js +6 -6
- package/dist/expo-sqlite/index.d.ts +3 -3
- package/dist/expo-sqlite/index.js +2 -2
- package/dist/extra-CGQ2_q3S.js +10 -0
- package/dist/{field-errors-BFOa7WhB.d.ts → field-errors-DIe9XYWL.d.ts} +17 -7
- package/dist/{field-errors-VF1yb8yI.js → field-errors-DZVRWRkf.js} +1 -1
- package/dist/format-DTXdu8ya.d.ts +70 -0
- package/dist/{framework-BmzgK32X.d.ts → framework-148t1m3C.d.ts} +5 -5
- package/dist/{framework-a7aRCIqv.js → framework-3ey3QmrO.js} +2 -2
- package/dist/function-contract-BcZenXMO.d.ts +8 -0
- package/dist/{gateway-C1ssRHnf.d.ts → gateway-S9vicgeo.d.ts} +4 -4
- package/dist/{guards-BnzDvFrz.js → guards-6F2bCtQR.js} +3 -1
- package/dist/h3/index.d.ts +1 -1
- package/dist/h3/index.js +1 -1
- package/dist/h3/v1/index.d.ts +1 -1
- package/dist/h3/v1/index.js +1 -1
- package/dist/{message-CaKlqdsX.js → history-GH1HJWQV.js} +65 -13
- package/dist/hmac-DCud0myt.js +22 -0
- package/dist/hono/index.d.ts +19 -14
- package/dist/hono/index.js +21 -16
- package/dist/{hooks-1BTCJsiw.js → hooks-Bhza9Hnr.js} +68 -100
- package/dist/http-sbmBe5d2.js +25 -0
- package/dist/{inbox-i7E1ppo6.d.ts → inbox-Cd1KCEBL.d.ts} +3 -3
- package/dist/index-B72Rvv_j.d.ts +89 -0
- package/dist/{index-DunNRdnT.d.ts → index-BCHR4Ucl.d.ts} +4 -4
- package/dist/{index-CLg87OBW.d.ts → index-BUK7jUzR.d.ts} +6 -0
- package/dist/{config-D44Y7PAv.d.ts → index-Ba1SI-uO.d.ts} +625 -278
- package/dist/{index-D48jVS-N.d.ts → index-BfxOaOYs.d.ts} +4 -5
- package/dist/{index-ClmjK_o-.d.ts → index-CicIyqOe.d.ts} +4 -4
- package/dist/{index-ACiNPN4Z.d.ts → index-D69h4QqD.d.ts} +1 -1
- package/dist/index-DG2SUXDQ.d.ts +58 -0
- package/dist/{index-Bepi-Hgg.d.ts → index-DoNVLHOU.d.ts} +3 -3
- package/dist/{index-CdZKQF98.d.ts → index-R274XFlg.d.ts} +1 -1
- package/dist/{index-CewnYSpv.d.ts → index-_4R4b01v.d.ts} +8 -18
- package/dist/index.d.ts +89 -14
- package/dist/index.js +12 -11
- package/dist/{json-schema-CvER4kgT.js → json-schema-CT4tvrkA.js} +148 -102
- package/dist/{kit-Fm-Fv7q5.js → kit-BhHr9T9v.js} +36 -10
- package/dist/{kit-CkNzZUqv.d.ts → kit-W99LCPBS.d.ts} +13 -7
- package/dist/{knowledge-BXBbT0Tr.d.ts → knowledge-CAReFpRA.d.ts} +5 -5
- package/dist/{knowledge-CDmiMLew.js → knowledge-DnHtb64A.js} +4 -3
- package/dist/list/index.d.ts +1 -2
- package/dist/{list-query-BRt-zDF7.d.ts → list-query-D3JQeEL7.d.ts} +4 -4
- package/dist/mcp/index.d.ts +49 -19
- package/dist/mcp/index.js +158 -94
- package/dist/mcp/sdk/index.d.ts +38 -6
- package/dist/mcp/sdk/index.js +88 -6
- package/dist/{message-CfDoR0Y6.d.ts → message-B0fNJgq8.d.ts} +1 -2
- package/dist/{messages-B9-5887d.js → messages-CJoHHCWT.js} +4 -205
- package/dist/{mfa-Daak8ukG.d.ts → mfa-SZc9YYyb.d.ts} +1 -1
- package/dist/model-OgBxvk3N.d.ts +300 -0
- package/dist/model-messages-Cxw_Up4f.js +206 -0
- package/dist/model-messages-D4GZllOD.d.ts +34 -0
- package/dist/modules-DksjZyMW.js +77 -0
- package/dist/nestjs/index.d.ts +2 -2
- package/dist/nestjs/index.js +1 -1
- package/dist/next/index.d.ts +105 -55
- package/dist/next/index.js +204 -170
- package/dist/node/index.d.ts +2 -2
- package/dist/node/index.js +1 -1
- package/dist/{onboarding-BZGHYJks.d.ts → onboarding-LZvlK1P4.d.ts} +3 -3
- package/dist/openapi/index.d.ts +4 -2
- package/dist/openapi/index.js +21 -343
- package/dist/optional-peer-D1pi-skw.js +24 -0
- package/dist/orpc/index.d.ts +8 -8
- package/dist/orpc/index.js +21 -20
- package/dist/otel/index.d.ts +3 -3
- package/dist/otel/index.js +7 -7
- package/dist/{outbox-Cq7pPYvl.d.ts → outbox-DZfAvfzC.d.ts} +6 -6
- package/dist/overlay/index.d.ts +233 -0
- package/dist/overlay/index.js +554 -0
- package/dist/{plugin-FGY8UhYm.d.ts → plugin-CPK2HsbY.d.ts} +42 -3
- package/dist/plugins/actor/index.d.ts +1 -1
- package/dist/plugins/actor/index.js +1 -1
- package/dist/plugins/rules/index.d.ts +2 -2
- package/dist/plugins/rules/index.js +1 -1
- package/dist/plugins/soft-delete/index.d.ts +3 -3
- package/dist/plugins/soft-delete/index.js +9 -2
- package/dist/plugins/tenant/index.d.ts +7 -2
- package/dist/plugins/tenant/index.js +16 -2
- package/dist/plugins/timestamps/index.d.ts +1 -1
- package/dist/plugins/timestamps/index.js +8 -1
- package/dist/plugins/validation/index.d.ts +2 -2
- package/dist/plugins/validation/index.js +4 -4
- package/dist/{pool-CAu2nLrL.d.ts → pool-gkhbGp2E.d.ts} +2 -2
- package/dist/postgres/index.d.ts +4 -4
- package/dist/postgres/index.js +2 -1
- package/dist/{postgrest-BLVdEnfe.d.ts → postgrest-BUqLag2Q.d.ts} +1 -1
- package/dist/powersync/index.d.ts +5 -5
- package/dist/powersync/index.js +4 -4
- package/dist/powersync/react/index.d.ts +3 -3
- package/dist/powersync/react/index.js +1 -1
- package/dist/{problem-BreOl8b8.js → problem-CJvFeGu7.js} +13 -2
- package/dist/{problem-DD8LZFjc.d.ts → problem-TvGdxO1t.d.ts} +7 -1
- package/dist/{provider-Di3sRutW.js → provider-DxRTex4x.js} +1 -1
- package/dist/{provider-D-UEMvSD.d.ts → provider-ib9wzUDz.d.ts} +2 -2
- package/dist/query/index.d.ts +2 -2
- package/dist/query/index.js +1 -1
- package/dist/{query-BQ-NaZon.js → query-Ctz-qKRx.js} +1 -1
- package/dist/rate-limit-Bw7HgmFj.js +260 -0
- package/dist/react/index.d.ts +9 -9
- package/dist/react/index.js +4 -4
- package/dist/react/native/index.d.ts +1 -1
- package/dist/react/native/index.js +2 -2
- package/dist/react/server.d.ts +10 -10
- package/dist/react/server.js +3 -3
- package/dist/react/session.d.ts +2 -2
- package/dist/{react-F80mF4-t.js → react-Bmpo59D7.js} +4 -4
- package/dist/react-router/index.d.ts +6 -6
- package/dist/react-router/index.js +9 -11
- package/dist/{read-set-DuKWC9Mj.js → read-set-DAeWhqPf.js} +2 -2
- package/dist/realtime/index.d.ts +3 -3
- package/dist/realtime/index.js +30 -36
- package/dist/{refusal-DhSU2Vvr.d.ts → refusal-CFI8-5nf.d.ts} +4 -1
- package/dist/{refusal-CeJWxmkH.js → refusal-K78A1Vmq.js} +5 -5
- package/dist/{resolve-tJZY3FEa.js → resolve-Bvgf3ut_.js} +131 -42
- package/dist/{resolve-ChTYeTEl.d.ts → resolve-MxXVWyhd.d.ts} +12 -8
- package/dist/resource--vTrBe6I.d.ts +103 -0
- package/dist/resource-BqNqlYg9.js +91 -0
- package/dist/resource-DA811u_4.js +463 -0
- package/dist/resource-execute-rbKvuCsY.d.ts +12 -0
- package/dist/resource-schemas-BJ518zFH.js +79 -0
- package/dist/resource-types-CqB6GWGT.d.ts +141 -0
- package/dist/resources-BVYPnuLo.js +56 -0
- package/dist/resources-DZSk8tXJ.d.ts +7 -0
- package/dist/{respond-DprrgyXX.d.ts → respond-Cw-zanCm.d.ts} +3 -3
- package/dist/{respond-BUgsXNgk.js → respond-volM3ByS.js} +4 -4
- package/dist/{result-D7y2fT87.d.ts → result-BchM1XZn.d.ts} +7 -1
- package/dist/{result-DzUbqgdW.js → result-DEqHCMKP.js} +1 -1
- package/dist/server/index.d.ts +81 -19
- package/dist/server/index.js +16 -14
- package/dist/{server-Bh0EVSwU.d.ts → server-types-CrAmZ8jv.d.ts} +92 -36
- package/dist/{shared-CxWmcyqB.js → shared-DHjhfRdV.js} +2 -15
- package/dist/shared-DTneRoxi.js +14 -0
- package/dist/{sign-in-Cb1mwv6X.js → sign-in-D_yoP0PF.js} +1 -1
- package/dist/signatures-BRS_p3WD.d.ts +34 -0
- package/dist/signatures-DsWv_bYR.js +103 -0
- package/dist/{signers-4y62_VIi.d.ts → signers-cpdmZYrv.d.ts} +1 -1
- package/dist/solid/index.d.ts +9 -18
- package/dist/solid/index.js +2 -2
- package/dist/solid-start/index.d.ts +6 -6
- package/dist/solid-start/index.js +7 -7
- package/dist/spec/index.d.ts +134 -0
- package/dist/spec/index.js +353 -0
- package/dist/{spec-pins-C89s6DyW.d.ts → spec-pins-CwzDY25w.d.ts} +18 -1
- package/dist/{spec-pins--j6mTok4.js → spec-pins-DsLfUH7l.js} +14 -1
- package/dist/sql/index.d.ts +145 -119
- package/dist/sql/index.js +19921 -19798
- package/dist/{executor-De1Of3m3.js → sql-CwuqaQ4Y.js} +34 -169
- package/dist/ssr/index.d.ts +4 -4
- package/dist/ssr/index.js +3 -2
- package/dist/{standard-BK0cqJ7y.js → standard-DkzZUneg.js} +2 -2
- package/dist/{standard-CYsm7xpT.d.ts → standard-lmkbOtPB.d.ts} +1 -1
- package/dist/{stats-D_AD9GGu.js → stats-DhU78Ctf.js} +8 -4
- package/dist/storage/index.d.ts +4 -6
- package/dist/storage/index.js +16 -17
- package/dist/{bucket-Cl46E3jS.d.ts → storage-api-CB7Zl1Ci.d.ts} +243 -8
- package/dist/{store-CGjgWu5n.d.ts → store-DsIYEBnv.d.ts} +1 -1
- package/dist/streams/index.d.ts +4 -4
- package/dist/streams/index.js +5 -4
- package/dist/streams/redis/index.d.ts +1 -1
- package/dist/streams/redis/index.js +5 -11
- package/dist/{stripe-BMj5LtsT.js → stripe-v-Y2lmop.js} +2 -8
- package/dist/supabase-mcp-C6tMoEjn.d.ts +43 -0
- package/dist/supabase-mcp-Cpn5A4i-.js +28 -0
- package/dist/{support-ig_K4PvS.js → support-D1pFFouF.js} +71 -35
- package/dist/{support-view-CVOJJLpc.d.ts → support-view-scqMgtOo.d.ts} +1 -1
- package/dist/svelte/index.d.ts +8 -17
- package/dist/svelte/index.js +2 -2
- package/dist/sveltekit/index.d.ts +7 -7
- package/dist/sveltekit/index.js +10 -12
- package/dist/table-schema-htM_SbCW.js +286 -0
- package/dist/{tags-Cx-LnIQP.d.ts → tags-BO9LjtWG.d.ts} +1 -1
- package/dist/tanstack-db/index.d.ts +2 -2
- package/dist/tanstack-db/supabase/index.d.ts +52 -0
- package/dist/tanstack-db/supabase/index.js +97 -0
- package/dist/tanstack-start/index.d.ts +6 -6
- package/dist/tanstack-start/index.js +8 -12
- package/dist/{tee-CoEppCER.js → tee-Cb98Vn3b.js} +1 -1
- package/dist/{template--jDkl3UP.js → template-lPVh-EwW.js} +11 -2
- package/dist/{temporal-required-BVvW7SYJ.js → temporal-required-BtynQtM-.js} +1 -1
- package/dist/{tenant-BxNFk9bx.d.ts → tenant-CM368LXb.d.ts} +2 -2
- package/dist/testing/index.d.ts +249 -118
- package/dist/testing/index.js +1418 -870
- package/dist/ttl-cache-XzZ-Q2eX.js +29 -0
- package/dist/types-BRTSpOIh.js +5 -0
- package/dist/{types-C05bxW-W.d.ts → types-Bb_4-vdW.d.ts} +4 -4
- package/dist/{types-AYOvcyep.d.ts → types-CD6yCDx3.d.ts} +5 -5
- package/dist/{types-6rocye-y.d.ts → types-CbOUc5IH.d.ts} +4 -4
- package/dist/{types-6BdhkmZe.d.ts → types-CoE5Zwy4.d.ts} +8 -0
- package/dist/{types-DGs5L0VN.d.ts → types-DSJ3-m9X.d.ts} +4 -4
- package/dist/{queue-CLJurhdy.d.ts → types-D__3EN0q.d.ts} +17 -19
- package/dist/{usage-CrvrL2vw.d.ts → usage-D0NNUFfr.d.ts} +3 -3
- package/dist/{vault-wlbBhqm7.d.ts → vault-BpmApxxW.d.ts} +3 -3
- package/dist/vercel-connect/index.d.ts +1 -1
- package/dist/vercel-connect/index.js +5 -11
- package/dist/{verify-DPuWngD4.d.ts → verify-C91Wyp40.d.ts} +5 -35
- package/dist/verify-CJbYfADA.js +124 -0
- package/dist/{version-C6OfRAIn.js → version-Cq8gfDbd.js} +1 -1
- package/dist/{view-BeFcRV6G.js → view-D5ryq3gz.js} +1 -1
- package/dist/{view-CF7ihnkg.d.ts → view-TpXEUcVN.d.ts} +3 -3
- package/dist/vue/index.d.ts +9 -18
- package/dist/vue/index.js +2 -2
- package/dist/{watch-Xuxrvxq-.js → watch-BcvtAHOd.js} +2 -2
- package/dist/{watch-DI34G86j.d.ts → watch-COzRWvVN.d.ts} +23 -9
- package/dist/{wire-DtZQ4sdE.js → wire-Df3EWkG8.js} +2 -2
- package/dist/{workflow-builder-DJ1oHn8g.js → workflow-builder-CHqHpAVt.js} +6 -5
- package/dist/workflow-sdk/builder/index.d.ts +3 -3
- package/dist/workflow-sdk/index.d.ts +1 -1
- package/dist/workflow-sdk/world/index.d.ts +23 -17
- package/dist/workflow-sdk/world/index.js +59 -76
- package/dist/{workflow-sdk-B3yLD6Br.d.ts → workflow-sdk-DTZyrvNo.d.ts} +3 -3
- package/dist/{workflow-sdk-world-D-prir6O.js → workflow-sdk-world-CMV1ahFW.js} +528 -526
- package/dist/{workflows-B0j9WKPu.d.ts → workflows-CcpCBfIe.d.ts} +3 -3
- package/dist/{workflows-wu1WWBn7.js → workflows-IvxzG2cl.js} +5 -4
- package/package.json +54 -3
- package/schemas/config-v1.json +243 -0
- package/schemas/doctor-report-v1.json +4 -1
- package/schemas/spec-manifest-v1.json +95 -0
- package/skills/better-supabase/SKILL.md +8 -4
- package/skills/better-supabase/references/troubleshooting.md +20 -20
- package/skills/better-supabase-api/references/expo.md +6 -3
- package/skills/better-supabase-api/references/powersync.md +2 -1
- package/dist/cli/config-B9HkL8nF.js +0 -2
- package/dist/cli/gen-CCMc39Dx.js +0 -3100
- package/dist/cli/gen-DRmzPI75.js +0 -2
- package/dist/cli/prompts-BTYQGunc.js +0 -2
- package/dist/cli/run-BqDPh9UH.js +0 -361
- package/dist/config-Dn7F5k9A.js +0 -202
- package/dist/history-BZih6SFP.js +0 -64
- package/dist/index-BkWT_uBO.d.ts +0 -51
- package/dist/index-Bxih3l0u.d.ts +0 -81
- package/dist/index-CaxrMD1A.d.ts +0 -1
- package/dist/index-DQh4VCc9.d.ts +0 -98
- package/dist/keys-4MnkWTTh.js +0 -35
- package/dist/messages-DYP0sUTe.d.ts +0 -59
- package/dist/modules-dxrVK3ID.js +0 -228
- package/dist/path-Cv__-OTj.d.ts +0 -17
- package/dist/resource-BsvzCMlX.js +0 -212
- package/dist/resource-IPS5xi9q.d.ts +0 -74
- package/dist/template-CwO38Do8.d.ts +0 -6
- package/dist/verify-DL41hbvY.js +0 -232
- package/dist/cli/{read-sets-CETOSFx4.js → read-sets-DjJrm8Wj.js} +1 -1
|
@@ -1,4 +1,76 @@
|
|
|
1
|
-
import { t as isList } from "./guards-
|
|
1
|
+
import { t as isList } from "./guards-6F2bCtQR.js";
|
|
2
|
+
import { r as tableJsonSchema, t as forTarget } from "./table-schema-htM_SbCW.js";
|
|
3
|
+
//#region src/generators/json-schema-target.ts
|
|
4
|
+
function isObject(value) {
|
|
5
|
+
return typeof value === "object" && value !== null && !isList(value);
|
|
6
|
+
}
|
|
7
|
+
/** Keywords whose value is one subschema. */
|
|
8
|
+
const SINGLE = /* @__PURE__ */ new Set([
|
|
9
|
+
"additionalProperties",
|
|
10
|
+
"additionalItems",
|
|
11
|
+
"contains",
|
|
12
|
+
"propertyNames",
|
|
13
|
+
"not",
|
|
14
|
+
"if",
|
|
15
|
+
"then",
|
|
16
|
+
"else"
|
|
17
|
+
]);
|
|
18
|
+
/** Keywords whose value is a list of subschemas. */
|
|
19
|
+
const LISTS = /* @__PURE__ */ new Set([
|
|
20
|
+
"allOf",
|
|
21
|
+
"anyOf",
|
|
22
|
+
"oneOf"
|
|
23
|
+
]);
|
|
24
|
+
/** Keywords whose value maps names to subschemas. */
|
|
25
|
+
const MAPS = /* @__PURE__ */ new Set([
|
|
26
|
+
"properties",
|
|
27
|
+
"patternProperties",
|
|
28
|
+
"definitions"
|
|
29
|
+
]);
|
|
30
|
+
/** 2020-12 keywords draft-07 has no equivalent for; draft-07 would ignore them. */
|
|
31
|
+
const DROPPED = /* @__PURE__ */ new Set([
|
|
32
|
+
"$dynamicAnchor",
|
|
33
|
+
"$anchor",
|
|
34
|
+
"unevaluatedProperties",
|
|
35
|
+
"unevaluatedItems"
|
|
36
|
+
]);
|
|
37
|
+
function mapValues(value, convert) {
|
|
38
|
+
if (!isObject(value)) return value;
|
|
39
|
+
return Object.fromEntries(Object.entries(value).map(([key, child]) => [key, isObject(child) ? convert(child) : child]));
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Rewrites a 2020-12 schema into draft-07: `$defs` becomes `definitions`
|
|
43
|
+
* (and `$ref`s into it follow), `prefixItems` becomes the array form of
|
|
44
|
+
* `items`, `dependentRequired` and `dependentSchemas` become
|
|
45
|
+
* `dependencies`, and keywords without a draft-07 form are left out. A
|
|
46
|
+
* draft-07 schema passes through unchanged.
|
|
47
|
+
*/
|
|
48
|
+
function toDraft07(schema) {
|
|
49
|
+
const out = {};
|
|
50
|
+
const dependencies = {};
|
|
51
|
+
for (const [key, value] of Object.entries(schema)) {
|
|
52
|
+
if (DROPPED.has(key)) continue;
|
|
53
|
+
if (key === "$schema") continue;
|
|
54
|
+
if (key === "$defs") out["definitions"] = mapValues(value, toDraft07);
|
|
55
|
+
else if (key === "$ref" || key === "$dynamicRef") out["$ref"] = typeof value === "string" ? value.replace(/^#\/\$defs\//, "#/definitions/") : value;
|
|
56
|
+
else if (key === "prefixItems" && isList(value)) out["items"] = value.map((item) => isObject(item) ? toDraft07(item) : item);
|
|
57
|
+
else if (key === "items") {
|
|
58
|
+
const converted = isObject(value) ? toDraft07(value) : value;
|
|
59
|
+
if (schema["prefixItems"] === void 0) out["items"] = converted;
|
|
60
|
+
else out["additionalItems"] = converted;
|
|
61
|
+
} else if (key === "dependentRequired" || key === "dependentSchemas") Object.assign(dependencies, mapValues(value, toDraft07));
|
|
62
|
+
else if (SINGLE.has(key) && isObject(value)) out[key] = toDraft07(value);
|
|
63
|
+
else if (LISTS.has(key) && isList(value)) out[key] = value.map((item) => isObject(item) ? toDraft07(item) : item);
|
|
64
|
+
else if (MAPS.has(key)) out[key] = mapValues(value, toDraft07);
|
|
65
|
+
else out[key] = value;
|
|
66
|
+
}
|
|
67
|
+
if (Object.keys(dependencies).length > 0) out["dependencies"] = {
|
|
68
|
+
...isObject(out["dependencies"]) ? out["dependencies"] : {},
|
|
69
|
+
...dependencies
|
|
70
|
+
};
|
|
71
|
+
return out;
|
|
72
|
+
}
|
|
73
|
+
//#endregion
|
|
2
74
|
//#region src/generators/shared.ts
|
|
3
75
|
const INTEGER = /* @__PURE__ */ new Set([
|
|
4
76
|
"int2",
|
|
@@ -86,15 +158,20 @@ function temporalGuardImport(input) {
|
|
|
86
158
|
const guard = TEMPORAL_GUARDS[plan.scalar.kind];
|
|
87
159
|
if (guard) names.add(guard);
|
|
88
160
|
}
|
|
89
|
-
return names.size === 0 ? void 0 : `import { ${[...names].sort().join(", ")} } from "better-supabase";`;
|
|
161
|
+
return names.size === 0 ? void 0 : `import { ${[...names].sort().join(", ")} } from ${JSON.stringify(input.runtimeImport ?? "better-supabase")};`;
|
|
90
162
|
}
|
|
91
163
|
const EXAMPLE = /^\s*@example\s+(.+?)\s*$/gm;
|
|
164
|
+
const DEPRECATED = /^\s*@deprecated\b.*$/gm;
|
|
165
|
+
const IS_DEPRECATED = /^\s*@deprecated\b/m;
|
|
92
166
|
/**
|
|
93
167
|
* Splits a comment into its description and `@example` lines. An example is
|
|
94
168
|
* JSON (`@example 42`, `@example "KVK-1"`) or, when it doesn't parse, text.
|
|
169
|
+
* A `@deprecated` line (with or without text) sets `deprecated` and is left
|
|
170
|
+
* out of the description.
|
|
95
171
|
*/
|
|
96
172
|
function parseComment(comment) {
|
|
97
173
|
if (!comment) return { examples: [] };
|
|
174
|
+
const deprecated = IS_DEPRECATED.test(comment);
|
|
98
175
|
const examples = [...comment.matchAll(EXAMPLE)].map((match) => {
|
|
99
176
|
const raw = match[1] ?? "";
|
|
100
177
|
try {
|
|
@@ -103,11 +180,12 @@ function parseComment(comment) {
|
|
|
103
180
|
return raw;
|
|
104
181
|
}
|
|
105
182
|
});
|
|
106
|
-
const description = comment.replace(EXAMPLE, "").trim();
|
|
107
|
-
return
|
|
108
|
-
description,
|
|
109
|
-
examples
|
|
110
|
-
|
|
183
|
+
const description = comment.replace(EXAMPLE, "").replace(DEPRECATED, "").trim();
|
|
184
|
+
return {
|
|
185
|
+
...description ? { description } : {},
|
|
186
|
+
examples,
|
|
187
|
+
...deprecated ? { deprecated: true } : {}
|
|
188
|
+
};
|
|
111
189
|
}
|
|
112
190
|
const COMPARISON = /^(?:(char_length|length)\(\(?"?(\w+)"?\)?(?:::[\w ]+)?\)|\(?"?(\w+)"?\)?(?:::[\w ]+)?)\s*(>=|>|<=|<)\s*\(?'?(-?\d+(?:\.\d+)?)'?\)?(?:::[\w ]+)?$/;
|
|
113
191
|
const REVERSED = /^\(?'?(-?\d+(?:\.\d+)?)'?\)?(?:::[\w ]+)?\s*(>=|>|<=|<)\s*(?:(char_length|length)\(\(?"?(\w+)"?\)?(?:::[\w ]+)?\)|\(?"?(\w+)"?\)?(?:::[\w ]+)?)$/;
|
|
@@ -332,6 +410,21 @@ function fieldDocs(docs, plan) {
|
|
|
332
410
|
...text ? pick(found, ["minLength", "maxLength"]) : {}
|
|
333
411
|
};
|
|
334
412
|
}
|
|
413
|
+
/**
|
|
414
|
+
* A field as `tableSchema()` and `tableJsonSchema()` read it. A jsonb column
|
|
415
|
+
* with a configured TypeScript type becomes `custom`; set `schema` on the
|
|
416
|
+
* result for one with a validator.
|
|
417
|
+
*/
|
|
418
|
+
function fieldSpec(plan, docs) {
|
|
419
|
+
return {
|
|
420
|
+
...plan.customJson ? { kind: "custom" } : plan.scalar,
|
|
421
|
+
...plan.nullable ? { nullable: true } : {},
|
|
422
|
+
...plan.optional ? { optional: true } : {},
|
|
423
|
+
...plan.column.array ? { array: true } : {},
|
|
424
|
+
...plan.managed ? { readOnly: true } : {},
|
|
425
|
+
...docs
|
|
426
|
+
};
|
|
427
|
+
}
|
|
335
428
|
function pick(bounds, keys) {
|
|
336
429
|
const out = {};
|
|
337
430
|
for (const key of keys) {
|
|
@@ -382,108 +475,61 @@ function parseImport(spec) {
|
|
|
382
475
|
}
|
|
383
476
|
//#endregion
|
|
384
477
|
//#region src/generators/json-schema.ts
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
};
|
|
391
|
-
case "string": return { type: "string" };
|
|
392
|
-
case "integer": return { type: "integer" };
|
|
393
|
-
case "number": return { type: "number" };
|
|
394
|
-
case "boolean": return { type: "boolean" };
|
|
395
|
-
case "datetime": return {
|
|
396
|
-
type: "string",
|
|
397
|
-
format: "date-time"
|
|
398
|
-
};
|
|
399
|
-
case "date": return {
|
|
400
|
-
type: "string",
|
|
401
|
-
format: "date"
|
|
402
|
-
};
|
|
403
|
-
case "instant": return {
|
|
404
|
-
type: "string",
|
|
405
|
-
format: "date-time"
|
|
406
|
-
};
|
|
407
|
-
case "plainDateTime": return {
|
|
408
|
-
type: "string",
|
|
409
|
-
pattern: "^\\d{4}-\\d{2}-\\d{2}[T ]\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?$"
|
|
410
|
-
};
|
|
411
|
-
case "bigint": return {
|
|
412
|
-
type: "string",
|
|
413
|
-
pattern: "^-?\\d+$"
|
|
414
|
-
};
|
|
415
|
-
case "json":
|
|
416
|
-
case "unknown": return {};
|
|
417
|
-
case "enum": return {
|
|
418
|
-
type: "string",
|
|
419
|
-
enum: [...kind.values]
|
|
420
|
-
};
|
|
421
|
-
default: return kind;
|
|
422
|
-
}
|
|
423
|
-
}
|
|
424
|
-
function property(plan, docs) {
|
|
425
|
-
const { description, examples, ...bounds } = docs;
|
|
426
|
-
const schema = {
|
|
427
|
-
...nullable(plan, bounds),
|
|
428
|
-
...description === void 0 ? {} : { description },
|
|
429
|
-
...examples === void 0 ? {} : { examples: [...examples] }
|
|
430
|
-
};
|
|
431
|
-
return plan.managed ? {
|
|
478
|
+
/** Marks the deprecated table and columns, which only `meta` knows about. */
|
|
479
|
+
function withDeprecated(schema, deprecated, columns) {
|
|
480
|
+
if (!deprecated && columns.length === 0) return schema;
|
|
481
|
+
const properties = schema["properties"];
|
|
482
|
+
return {
|
|
432
483
|
...schema,
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
...scalar(plan.scalar),
|
|
439
|
-
...bounds
|
|
484
|
+
...deprecated ? { deprecated: true } : {},
|
|
485
|
+
...columns.length > 0 && typeof properties === "object" && properties ? { properties: Object.fromEntries(Object.entries(properties).map(([name, value]) => [name, columns.includes(name) && typeof value === "object" && value ? {
|
|
486
|
+
...value,
|
|
487
|
+
deprecated: true
|
|
488
|
+
} : value])) } : {}
|
|
440
489
|
};
|
|
441
|
-
if (plan.column.array) schema = {
|
|
442
|
-
type: "array",
|
|
443
|
-
items: schema
|
|
444
|
-
};
|
|
445
|
-
if (!plan.nullable) return schema;
|
|
446
|
-
if (Object.keys(schema).length === 0) return schema;
|
|
447
|
-
const { enum: values, ...rest } = schema;
|
|
448
|
-
if (isList(values)) return {
|
|
449
|
-
...rest,
|
|
450
|
-
type: ["string", "null"],
|
|
451
|
-
enum: [...values, null]
|
|
452
|
-
};
|
|
453
|
-
return typeof schema["type"] === "string" ? {
|
|
454
|
-
...schema,
|
|
455
|
-
type: [schema["type"], "null"]
|
|
456
|
-
} : { anyOf: [schema, { type: "null" }] };
|
|
457
490
|
}
|
|
458
|
-
/**
|
|
459
|
-
|
|
491
|
+
/**
|
|
492
|
+
* JSON Schema `$defs` for every table: `customersRow`, `customersInsert`,
|
|
493
|
+
* ... `target` lowers the document to draft-07 or the OpenAPI 3.0 dialect,
|
|
494
|
+
* which keep the schemas under `definitions`.
|
|
495
|
+
*/
|
|
496
|
+
function buildJsonSchema(input, id, target = "draft-2020-12") {
|
|
460
497
|
const defs = {};
|
|
461
498
|
for (const [key, table] of tableEntries(input)) {
|
|
462
499
|
const docs = tableDocs(input, table);
|
|
500
|
+
const description = docs ? docs.description : table.description;
|
|
463
501
|
for (const variant of variantsFor(table)) {
|
|
464
|
-
const
|
|
465
|
-
const
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
}
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
...required.length > 0 ? { required } : {},
|
|
478
|
-
additionalProperties: false
|
|
479
|
-
};
|
|
502
|
+
const plans = fieldsFor(table, variant, input);
|
|
503
|
+
const schema = tableJsonSchema({
|
|
504
|
+
...docs ? { title: variantTitle(docs, variant) } : {},
|
|
505
|
+
...description === void 0 ? {} : { description },
|
|
506
|
+
fields: Object.fromEntries(plans.map((plan) => {
|
|
507
|
+
const spec = fieldSpec(plan, fieldDocs(docs, plan));
|
|
508
|
+
return [plan.name, docs || plan.column.description === void 0 ? spec : {
|
|
509
|
+
description: plan.column.description,
|
|
510
|
+
...spec
|
|
511
|
+
}];
|
|
512
|
+
}))
|
|
513
|
+
});
|
|
514
|
+
defs[`${key}${variant}`] = withDeprecated(schema, table.deprecated === true, plans.filter((plan) => plan.column.deprecated).map((plan) => plan.name));
|
|
480
515
|
}
|
|
481
516
|
}
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
517
|
+
switch (target) {
|
|
518
|
+
case "draft-2020-12": return {
|
|
519
|
+
$schema: "https://json-schema.org/draft/2020-12/schema",
|
|
520
|
+
...id ? { $id: id } : {},
|
|
521
|
+
$defs: defs
|
|
522
|
+
};
|
|
523
|
+
case "draft-07": return forTarget({
|
|
524
|
+
...id ? { $id: id } : {},
|
|
525
|
+
definitions: Object.fromEntries(Object.entries(defs).map(([name, def]) => [name, toDraft07(def)]))
|
|
526
|
+
}, "draft-07");
|
|
527
|
+
case "openapi-3.0": return {
|
|
528
|
+
...id ? { $id: id } : {},
|
|
529
|
+
definitions: Object.fromEntries(Object.entries(defs).map(([name, def]) => [name, forTarget(def, "openapi-3.0")]))
|
|
530
|
+
};
|
|
531
|
+
default: return target;
|
|
532
|
+
}
|
|
487
533
|
}
|
|
488
534
|
/** Writes the JSON Schema document; `createOpenApi` reuses the same `$defs`. */
|
|
489
535
|
function jsonSchema(options = {}) {
|
|
@@ -493,10 +539,10 @@ function jsonSchema(options = {}) {
|
|
|
493
539
|
generate(input) {
|
|
494
540
|
return [{
|
|
495
541
|
path: options.output ?? siblingPath(input.config.output, "schema.json"),
|
|
496
|
-
contents: `${JSON.stringify(buildJsonSchema(input, options.id), null, 2)}\n`
|
|
542
|
+
contents: `${JSON.stringify(buildJsonSchema(input, options.id, options.target), null, 2)}\n`
|
|
497
543
|
}];
|
|
498
544
|
}
|
|
499
545
|
};
|
|
500
546
|
}
|
|
501
547
|
//#endregion
|
|
502
|
-
export {
|
|
548
|
+
export { variantsFor as _, fieldSpec as a, parseImport as c, schemaName as d, siblingPath as f, variantTitle as g, temporalGuardImport as h, fieldDocs as i, propertyKey as l, tableEntries as m, jsonSchema as n, fieldsFor as o, tableDocs as p, HEADER as r, optionalLine as s, buildJsonSchema as t, rowType as u, toDraft07 as v };
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import { n as dbError } from "./errors-
|
|
2
|
-
import { n as validate } from "./standard-
|
|
1
|
+
import { n as dbError } from "./errors-2M6CKMP4.js";
|
|
2
|
+
import { n as validate } from "./standard-DkzZUneg.js";
|
|
3
3
|
import { n as claimAt } from "./claims-PqzCxaTD.js";
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
4
|
+
import { t as authContext } from "./context-nPDvQ-Zl.js";
|
|
5
|
+
import { n as toSession } from "./view-D5ryq3gz.js";
|
|
6
|
+
import { o as settle, r as guard } from "./respond-volM3ByS.js";
|
|
7
|
+
import { n as checkPermission } from "./authorizer-ayxUDXXP.js";
|
|
6
8
|
//#region src/server/kit.ts
|
|
7
9
|
/** `FormData` as a plain object; repeated keys become arrays. */
|
|
8
10
|
function formDataObject(form) {
|
|
@@ -21,11 +23,35 @@ function actionError(error) {
|
|
|
21
23
|
error
|
|
22
24
|
};
|
|
23
25
|
}
|
|
24
|
-
/**
|
|
25
|
-
|
|
26
|
+
/** What a `permission` on an action or route is checked against. */
|
|
27
|
+
function callerResource(input) {
|
|
28
|
+
if (input === void 0 || input instanceof Request) return { type: "route" };
|
|
29
|
+
if (typeof input !== "object" || input === null || Array.isArray(input) || input instanceof FormData) return { type: "action" };
|
|
30
|
+
return {
|
|
31
|
+
type: "action",
|
|
32
|
+
properties: input
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* `requireTenant`, `roles`, `permission` and `authorize`, in that order: the
|
|
37
|
+
* session and tenant, or why the caller is refused.
|
|
38
|
+
*/
|
|
39
|
+
async function authorizeCaller(auth, checks, input, tenant, authorizer) {
|
|
26
40
|
const session = toSession(auth);
|
|
27
41
|
if (checks.requireTenant && tenant === void 0) return dbError("forbidden", "Choose an organization first", { code: "NO_TENANT" });
|
|
28
42
|
if (checks.roles && !hasRole(auth, checks.roles, checks.roleClaim)) return dbError("forbidden", "You do not have the role this needs", { code: "MISSING_ROLE" });
|
|
43
|
+
if (checks.permission !== void 0) {
|
|
44
|
+
const permitted = await checkPermission({
|
|
45
|
+
authorizer,
|
|
46
|
+
permission: checks.permission,
|
|
47
|
+
resource: callerResource(input),
|
|
48
|
+
context: {
|
|
49
|
+
...authContext(auth),
|
|
50
|
+
...tenant === void 0 ? {} : { tenant }
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
if (!permitted.ok) return permitted.error;
|
|
54
|
+
}
|
|
29
55
|
if (checks.authorize && !await checks.authorize(session, input)) return dbError("forbidden", "You are not allowed to do this", { code: "NOT_AUTHORIZED" });
|
|
30
56
|
return {
|
|
31
57
|
session,
|
|
@@ -33,8 +59,8 @@ async function authorizeCaller(auth, checks, input, tenant) {
|
|
|
33
59
|
};
|
|
34
60
|
}
|
|
35
61
|
/** `guard`, then `authorizeCaller`: the caller, or the refusal. */
|
|
36
|
-
async function requireCaller(auth, options, tenant) {
|
|
37
|
-
return guard(auth, options.allow, options.aal, options.scopes) ?? authorizeCaller(auth, options, void 0, tenant);
|
|
62
|
+
async function requireCaller(auth, options, tenant, authorizer) {
|
|
63
|
+
return guard(auth, options.allow, options.aal, options.scopes) ?? authorizeCaller(auth, options, void 0, tenant, authorizer);
|
|
38
64
|
}
|
|
39
65
|
/**
|
|
40
66
|
* Runs an action body with the guard, input validation and authorize checks
|
|
@@ -42,7 +68,7 @@ async function requireCaller(auth, options, tenant) {
|
|
|
42
68
|
* unwrap, thrown `DbException`s become errors, other throws propagate (so
|
|
43
69
|
* framework redirects keep working).
|
|
44
70
|
*/
|
|
45
|
-
async function runAction(auth, options, input, tenant, body) {
|
|
71
|
+
async function runAction(auth, options, input, tenant, body, authorizer) {
|
|
46
72
|
const denied = guard(auth, options.allow, options.aal, options.scopes);
|
|
47
73
|
if (denied) return actionError(denied);
|
|
48
74
|
let parsed = input instanceof FormData ? formDataObject(input) : input;
|
|
@@ -51,7 +77,7 @@ async function runAction(auth, options, input, tenant, body) {
|
|
|
51
77
|
if (!checked.ok) return actionError(checked.error);
|
|
52
78
|
parsed = checked.data;
|
|
53
79
|
}
|
|
54
|
-
const caller = await authorizeCaller(auth, options, parsed, tenant);
|
|
80
|
+
const caller = await authorizeCaller(auth, options, parsed, tenant, authorizer);
|
|
55
81
|
if ("kind" in caller) return actionError(caller);
|
|
56
82
|
const settled = await settle(() => body(parsed, caller));
|
|
57
83
|
return settled.ok ? {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { b as DbError } from "./result-
|
|
2
|
-
import { r as AuthState } from "./resolve-
|
|
3
|
-
import { t as AuthSession } from "./view-
|
|
4
|
-
import { r as GuardOptions } from "./respond-
|
|
1
|
+
import { b as DbError } from "./result-BchM1XZn.js";
|
|
2
|
+
import { r as AuthState } from "./resolve-MxXVWyhd.js";
|
|
3
|
+
import { t as AuthSession } from "./view-TpXEUcVN.js";
|
|
4
|
+
import { r as GuardOptions } from "./respond-Cw-zanCm.js";
|
|
5
5
|
import { StandardSchemaV1 } from "@standard-schema/spec";
|
|
6
6
|
//#region src/server/kit.d.ts
|
|
7
7
|
/** What a server action returns: plain data, safe across any serialization boundary. */
|
|
@@ -18,13 +18,19 @@ type ActionResult<T> = {
|
|
|
18
18
|
* Checks after `allow`, `aal` and `scopes`. A caller who fails one gets
|
|
19
19
|
* `forbidden`: an `ActionResult` error, a 403, or the framework's refusal.
|
|
20
20
|
*/
|
|
21
|
-
interface AuthorizeOptions<I, C, P, R extends boolean> {
|
|
21
|
+
interface AuthorizeOptions<I, C, P, R extends boolean, Ref = unknown> {
|
|
22
22
|
/** Refuse callers without an active tenant, so `ctx.tenant` is a string. */
|
|
23
23
|
readonly requireTenant?: R;
|
|
24
24
|
/** Admit only users holding one of these roles at `roleClaim`. */
|
|
25
25
|
readonly roles?: readonly string[];
|
|
26
26
|
/** The dotted claim path `roles` reads: one string or an array. Defaults to `app_metadata.role`. */
|
|
27
27
|
readonly roleClaim?: string;
|
|
28
|
+
/**
|
|
29
|
+
* The permission the server's `authorizer` must grant. Without an
|
|
30
|
+
* authorizer, or on any outcome but `granted`, the caller is refused;
|
|
31
|
+
* `approval-required` refuses with `code: "APPROVAL_REQUIRED"`.
|
|
32
|
+
*/
|
|
33
|
+
readonly permission?: Ref;
|
|
28
34
|
/** Return `false` to refuse the caller, e.g. `(session, input) => input.ownerId === session.user.id`. */
|
|
29
35
|
readonly authorize?: (session: AuthSession<C, P>, input: I) => boolean | Promise<boolean>;
|
|
30
36
|
}
|
|
@@ -46,12 +52,12 @@ type Unwrapped<T> = T extends {
|
|
|
46
52
|
readonly ok: false;
|
|
47
53
|
} ? never : T;
|
|
48
54
|
/** Guard, authorize and validate options of a framework-neutral action. */
|
|
49
|
-
interface BlockActionOptions<S extends StandardSchemaV1 | undefined, C = unknown, P = unknown, R extends boolean = boolean> extends GuardOptions, AuthorizeOptions<ActionParsed<S>, C, P, R> {
|
|
55
|
+
interface BlockActionOptions<S extends StandardSchemaV1 | undefined, C = unknown, P = unknown, R extends boolean = boolean, Ref = unknown> extends GuardOptions, AuthorizeOptions<ActionParsed<S>, C, P, R, Ref> {
|
|
50
56
|
/** Validates the input (plain object or `FormData`) with any Standard Schema. */
|
|
51
57
|
readonly input?: S;
|
|
52
58
|
}
|
|
53
59
|
/** The guard and authorize checks of a loader, page or route. */
|
|
54
|
-
interface BlockRequireOptions<C = unknown, P = unknown, R extends boolean = boolean> extends GuardOptions, AuthorizeOptions<undefined, C, P, R> {}
|
|
60
|
+
interface BlockRequireOptions<C = unknown, P = unknown, R extends boolean = boolean, Ref = unknown> extends GuardOptions, AuthorizeOptions<undefined, C, P, R, Ref> {}
|
|
55
61
|
/** The strings at a dotted claim path: one string, or every string in an array. */
|
|
56
62
|
declare function rolesAt(claims: Readonly<Record<string, unknown>> | undefined, path: string): readonly string[];
|
|
57
63
|
/** Whether a signed-in caller holds one of `roles` at the claim `path`. */
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/// <reference lib="esnext.temporal" />
|
|
2
|
-
import { t as AsyncResult, w as ErrorMapper } from "./result-
|
|
3
|
-
import { t as BlockTransport } from "./block-transport-
|
|
4
|
-
import { r as BlockTemporalOptions } from "./block-helpers-
|
|
5
|
-
import { f as AiFiles, o as AiFile } from "./types-
|
|
6
|
-
import { m as JobHandler } from "./
|
|
2
|
+
import { t as AsyncResult, w as ErrorMapper } from "./result-BchM1XZn.js";
|
|
3
|
+
import { t as BlockTransport } from "./block-transport-inD4fFq-.js";
|
|
4
|
+
import { r as BlockTemporalOptions } from "./block-helpers-C0Xj8War.js";
|
|
5
|
+
import { f as AiFiles, o as AiFile } from "./types-Bb_4-vdW.js";
|
|
6
|
+
import { m as JobHandler } from "./types-D__3EN0q.js";
|
|
7
7
|
//#region src/blocks/knowledge/knowledge.d.ts
|
|
8
8
|
/**
|
|
9
9
|
* Turns texts into vectors. `model` is stored with each document, so a
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { t as DbException } from "./db-exception-CnWcYPxL.js";
|
|
2
|
-
import { n as dbError } from "./errors-
|
|
3
|
-
import { a as ok, r as err, t as AsyncResult } from "./result-
|
|
2
|
+
import { n as dbError } from "./errors-2M6CKMP4.js";
|
|
3
|
+
import { a as ok, r as err, t as AsyncResult } from "./result-DEqHCMKP.js";
|
|
4
4
|
import { t as vectorLiteral } from "./search-CUWCRYKL.js";
|
|
5
|
-
import {
|
|
5
|
+
import { n as isRecord } from "./guards-6F2bCtQR.js";
|
|
6
|
+
import { C as recordOrEmpty, E as run, N as toInstant, S as recordOf, i as blockCall, j as textOf, l as errorText, n as applyTemporal, u as injectableOf, v as optionalText, w as recordsOf } from "./block-helpers-Cy3pB96I.js";
|
|
6
7
|
//#region src/blocks/knowledge/knowledge.ts
|
|
7
8
|
const SCOPES = /* @__PURE__ */ new Set([
|
|
8
9
|
"organization",
|
package/dist/list/index.d.ts
CHANGED
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
import { _ as defineListQuery, a as ListExtra, c as ListParseResult, d as ListQueryConfig, f as ListQueryInput, g as UNSET, h as ParserSpec, i as ListDefinition, l as ListParsers, m as OpenApiParameter, n as FacetCounts, o as ListPage, p as ListSearchParams, r as FacetInfo, s as ListPagination, t as FacetCountFields, u as ListQuery } from "../list-query-
|
|
2
|
-
import "../index-CaxrMD1A.js";
|
|
1
|
+
import { _ as defineListQuery, a as ListExtra, c as ListParseResult, d as ListQueryConfig, f as ListQueryInput, g as UNSET, h as ParserSpec, i as ListDefinition, l as ListParsers, m as OpenApiParameter, n as FacetCounts, o as ListPage, p as ListSearchParams, r as FacetInfo, s as ListPagination, t as FacetCountFields, u as ListQuery } from "../list-query-D3JQeEL7.js";
|
|
3
2
|
export { type FacetCountFields, type FacetCounts, type FacetInfo, type ListDefinition, type ListExtra, type ListPage, type ListPagination, type ListParseResult, type ListParsers, type ListQuery, type ListQueryConfig, type ListQueryInput, type ListSearchParams, type OpenApiParameter, type ParserSpec, UNSET, defineListQuery };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { E as ValidationIssue, t as AsyncResult } from "./result-
|
|
2
|
-
import { L as TableKey, M as Row, a as AnyModels, i as AnyFunctions } from "./types-
|
|
3
|
-
import { l as CountMode } from "./executor-
|
|
4
|
-
import {
|
|
1
|
+
import { E as ValidationIssue, t as AsyncResult } from "./result-BchM1XZn.js";
|
|
2
|
+
import { L as TableKey, M as Row, a as AnyModels, i as AnyFunctions } from "./types-CoE5Zwy4.js";
|
|
3
|
+
import { l as CountMode } from "./executor-Drzu3dBK.js";
|
|
4
|
+
import { Bt as WhereInput, E as OffsetPageArgs, F as RepositoryOf, Lt as SelectArg, Nt as Payload, T as OffsetPage, g as CursorPageArgs, h as CursorPage, jt as OrderByArg, t as BetterSupabase, wt as IncludeArg, x as FindExt } from "./define-DmcfoNXB.js";
|
|
5
5
|
import { StandardSchemaV1 } from "@standard-schema/spec";
|
|
6
6
|
//#region src/list/list-query.d.ts
|
|
7
7
|
/** Facet value meaning "not set": filters with `is null`. */
|
package/dist/mcp/index.d.ts
CHANGED
|
@@ -1,10 +1,22 @@
|
|
|
1
|
-
import { L as TableKey, a as AnyModels, i as AnyFunctions } from "../types-
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { i as
|
|
6
|
-
import {
|
|
1
|
+
import { L as TableKey, a as AnyModels, i as AnyFunctions } from "../types-CoE5Zwy4.js";
|
|
2
|
+
import { E as ResourceOperation } from "../model-OgBxvk3N.js";
|
|
3
|
+
import { s as PermissionRef, t as AnyAuthorizer } from "../authorizer-eiOjo-3l.js";
|
|
4
|
+
import { t as BetterSupabase } from "../define-DmcfoNXB.js";
|
|
5
|
+
import { i as ServerContext, s as ServerOptions, t as BetterServer } from "../server-types-CrAmZ8jv.js";
|
|
6
|
+
import { r as GuardOptions } from "../respond-Cw-zanCm.js";
|
|
7
|
+
import { l as ResourceRouteOptions } from "../resource-types-CqB6GWGT.js";
|
|
7
8
|
import { StandardSchemaV1 } from "@standard-schema/spec";
|
|
9
|
+
//#region src/mcp/dialect.d.ts
|
|
10
|
+
/** The JSON Schema dialect of tool schemas, which depends on the protocol revision. */
|
|
11
|
+
type ToolSchemaTarget = "draft-2020-12" | "draft-07";
|
|
12
|
+
//#endregion
|
|
13
|
+
//#region src/mcp/permissions.d.ts
|
|
14
|
+
/** `McpOptions.requiredRoles`: the roles, or the roles and the claim to read. */
|
|
15
|
+
type RequiredRoles = readonly string[] | {
|
|
16
|
+
readonly roles: readonly string[];
|
|
17
|
+
readonly claim?: string;
|
|
18
|
+
};
|
|
19
|
+
//#endregion
|
|
8
20
|
//#region src/mcp/mcp.d.ts
|
|
9
21
|
export declare const MCP_PROTOCOL_VERSION: string;
|
|
10
22
|
type Json = Readonly<Record<string, unknown>>;
|
|
@@ -31,10 +43,17 @@ interface ToolContext<M extends AnyModels, F extends AnyFunctions, E, C = unknow
|
|
|
31
43
|
}
|
|
32
44
|
interface McpTool<M extends AnyModels, F extends AnyFunctions, E, C = unknown, P = unknown> {
|
|
33
45
|
readonly info: ToolInfo;
|
|
46
|
+
/**
|
|
47
|
+
* The input schema in another dialect, for clients on an older protocol
|
|
48
|
+
* revision. Without it, `info.inputSchema` is rewritten.
|
|
49
|
+
*/
|
|
50
|
+
readonly inputSchemaFor?: (target: ToolSchemaTarget) => Json | undefined;
|
|
34
51
|
/** Validates arguments; its output is what `run` receives. */
|
|
35
52
|
readonly input?: StandardSchemaV1;
|
|
36
53
|
/** Opaque data for the `authorize` and `visible` hooks. Never sent to clients. */
|
|
37
54
|
readonly meta?: unknown;
|
|
55
|
+
/** Checked by the authorizer on every call; callers it denies don't see the tool. */
|
|
56
|
+
readonly permission?: unknown;
|
|
38
57
|
run(args: never, ctx: ToolContext<M, F, E, C, P>): unknown;
|
|
39
58
|
}
|
|
40
59
|
/** What the `authorize` and `visible` hooks see of a tool. */
|
|
@@ -52,7 +71,7 @@ type ToolDecision = {
|
|
|
52
71
|
/** OAuth scopes the call needs, sent in an `insufficient_scope` challenge. */
|
|
53
72
|
readonly scopes?: readonly string[];
|
|
54
73
|
};
|
|
55
|
-
interface ToolDefinition<M extends AnyModels, F extends AnyFunctions, E, I, C = unknown, P = unknown> {
|
|
74
|
+
interface ToolDefinition<M extends AnyModels, F extends AnyFunctions, E, I, C = unknown, P = unknown, Ref = unknown> {
|
|
56
75
|
readonly name: string;
|
|
57
76
|
readonly title?: string;
|
|
58
77
|
readonly description: string;
|
|
@@ -63,13 +82,25 @@ interface ToolDefinition<M extends AnyModels, F extends AnyFunctions, E, I, C =
|
|
|
63
82
|
readonly input?: StandardSchemaV1<unknown, I>;
|
|
64
83
|
readonly inputSchema?: Json;
|
|
65
84
|
readonly outputSchema?: Json;
|
|
85
|
+
/**
|
|
86
|
+
* The dialect `input` converts to for `ToolInfo` and the `tools` list.
|
|
87
|
+
* Defaults to `draft-2020-12`. `tools/list` converts again for clients on
|
|
88
|
+
* 2025-06-18 and earlier, which get draft-07.
|
|
89
|
+
*/
|
|
90
|
+
readonly jsonSchemaTarget?: ToolSchemaTarget;
|
|
66
91
|
readonly annotations?: ToolAnnotations;
|
|
67
92
|
/** Opaque data for the `authorize` and `visible` hooks. Never sent to clients. */
|
|
68
93
|
readonly meta?: unknown;
|
|
94
|
+
/**
|
|
95
|
+
* Checked by the authorizer after the arguments are validated, with the
|
|
96
|
+
* tool as the resource (`mcp_tool`). `tools/list` hides the tool from
|
|
97
|
+
* callers it denies.
|
|
98
|
+
*/
|
|
99
|
+
readonly permission?: Ref;
|
|
69
100
|
run(args: I, ctx: ToolContext<M, F, E, C, P>): unknown;
|
|
70
101
|
}
|
|
71
102
|
/** A table's tools: the REST resource options, plus `meta` per operation for `authorize` and `visible`. */
|
|
72
|
-
type ToolResourceOptions<M extends AnyModels, T extends TableKey<M
|
|
103
|
+
type ToolResourceOptions<M extends AnyModels, T extends TableKey<M>, Ref = string> = ResourceRouteOptions<M, T, Ref> & {
|
|
73
104
|
/**
|
|
74
105
|
* Opaque data per operation, e.g. a permission, passed to
|
|
75
106
|
* `authorize` and `visible` as the table tool's `meta`. Never sent to
|
|
@@ -77,15 +108,15 @@ type ToolResourceOptions<M extends AnyModels, T extends TableKey<M>> = ResourceR
|
|
|
77
108
|
*/
|
|
78
109
|
readonly meta?: { readonly [K in ResourceOperation]?: unknown; };
|
|
79
110
|
};
|
|
80
|
-
type ToolResources<M extends AnyModels> = { readonly [T in TableKey<M>]?: ToolResourceOptions<M, T> | true; };
|
|
81
|
-
interface McpOptions<M extends AnyModels, F extends AnyFunctions, E, C = unknown, P = unknown> extends ServerOptions, Omit<GuardOptions, "scopes"> {
|
|
111
|
+
type ToolResources<M extends AnyModels, Ref = string> = { readonly [T in TableKey<M>]?: ToolResourceOptions<M, T, Ref> | true; };
|
|
112
|
+
interface McpOptions<M extends AnyModels, F extends AnyFunctions, E, C = unknown, P = unknown, Ref = string> extends ServerOptions, Omit<GuardOptions, "scopes"> {
|
|
82
113
|
readonly name: string;
|
|
83
114
|
readonly version: string;
|
|
84
115
|
readonly title?: string;
|
|
85
116
|
/** Sent to clients on `initialize`, e.g. how the tools fit together. */
|
|
86
117
|
readonly instructions?: string;
|
|
87
118
|
/** Tables exposed as tools: `<table>_list`, `_get`, `_create`, `_update`, `_delete`. */
|
|
88
|
-
readonly resources?: ToolResources<M>;
|
|
119
|
+
readonly resources?: ToolResources<M, Ref>;
|
|
89
120
|
readonly tools?: readonly McpTool<M, F, E, C, P>[];
|
|
90
121
|
/**
|
|
91
122
|
* Canonical URL of this MCP server (RFC 9728 `resource`). Defaults to the
|
|
@@ -118,10 +149,7 @@ interface McpOptions<M extends AnyModels, F extends AnyFunctions, E, C = unknown
|
|
|
118
149
|
* requiredRoles: { roles: ['admin', 'support'], claim: 'app_metadata.roles' }
|
|
119
150
|
* ```
|
|
120
151
|
*/
|
|
121
|
-
readonly requiredRoles?:
|
|
122
|
-
readonly roles: readonly string[];
|
|
123
|
-
readonly claim?: string;
|
|
124
|
-
};
|
|
152
|
+
readonly requiredRoles?: RequiredRoles;
|
|
125
153
|
/** Origins allowed to call the server (DNS rebinding protection). Defaults to any. */
|
|
126
154
|
readonly allowedOrigins?: readonly string[];
|
|
127
155
|
/**
|
|
@@ -159,7 +187,7 @@ interface McpOptions<M extends AnyModels, F extends AnyFunctions, E, C = unknown
|
|
|
159
187
|
*/
|
|
160
188
|
readonly visible?: (ctx: ToolContext<M, F, E, C, P>, tool: ToolRef) => boolean | Promise<boolean>;
|
|
161
189
|
}
|
|
162
|
-
interface BetterMcp<M extends AnyModels, F extends AnyFunctions, E, C = unknown, P = unknown> extends BetterServer<M, F, E, C, P> {
|
|
190
|
+
interface BetterMcp<M extends AnyModels, F extends AnyFunctions, E, C = unknown, P = unknown, Ref = string> extends BetterServer<M, F, E, C, P> {
|
|
163
191
|
/** Everything in one handler: the MCP endpoint and `/.well-known/oauth-protected-resource`. */
|
|
164
192
|
readonly fetch: (request: Request) => Promise<Response>;
|
|
165
193
|
/** The Streamable HTTP endpoint (POST JSON-RPC). */
|
|
@@ -168,7 +196,7 @@ interface BetterMcp<M extends AnyModels, F extends AnyFunctions, E, C = unknown,
|
|
|
168
196
|
metadata(request: Request): Response;
|
|
169
197
|
readonly tools: readonly ToolInfo[];
|
|
170
198
|
/** Adds a tool typed against this app's repositories. */
|
|
171
|
-
tool<I = Record<string, unknown>>(definition: ToolDefinition<M, F, E, I, C, P>): this;
|
|
199
|
+
tool<I = Record<string, unknown>>(definition: ToolDefinition<M, F, E, I, C, P, Ref>): this;
|
|
172
200
|
/** Calls a tool directly, e.g. from tests or another transport. */
|
|
173
201
|
call(name: string, args: unknown, ctx: ToolContext<M, F, E, C, P>): Promise<ToolResult>;
|
|
174
202
|
}
|
|
@@ -181,13 +209,15 @@ interface ToolResult {
|
|
|
181
209
|
readonly isError?: boolean;
|
|
182
210
|
}
|
|
183
211
|
/** A custom tool. Pass it in `createMcp({ tools: [...] })`. */
|
|
184
|
-
export declare function defineTool<M extends AnyModels, F extends AnyFunctions, E, I = Record<string, unknown>, C = unknown, P = unknown>(definition: ToolDefinition<M, F, E, I, C, P>): McpTool<M, F, E, C, P>;
|
|
212
|
+
export declare function defineTool<M extends AnyModels, F extends AnyFunctions, E, I = Record<string, unknown>, C = unknown, P = unknown, Ref = unknown>(definition: ToolDefinition<M, F, E, I, C, P, Ref>): McpTool<M, F, E, C, P>;
|
|
185
213
|
/**
|
|
186
214
|
* An MCP server (Streamable HTTP, stateless) whose tools run as the caller:
|
|
187
215
|
* the Bearer token from the MCP client is verified and every query goes
|
|
188
216
|
* through RLS. Answers 401 with RFC 9728 metadata so clients can sign in with
|
|
189
217
|
* Supabase Auth's OAuth server.
|
|
190
218
|
*/
|
|
191
|
-
export declare function createMcp<M extends AnyModels, D, F extends AnyFunctions, E, C = unknown, P = unknown>(betterSupabase: BetterSupabase<M, D, F, E, C, P>, options: McpOptions<M, F, E, C, P
|
|
219
|
+
export declare function createMcp<M extends AnyModels, D, F extends AnyFunctions, E, C = unknown, P = unknown, A extends AnyAuthorizer | undefined = undefined>(betterSupabase: BetterSupabase<M, D, F, E, C, P>, options: McpOptions<M, F, E, C, P, PermissionRef<A>> & {
|
|
220
|
+
readonly authorizer?: A;
|
|
221
|
+
}): BetterMcp<M, F, E, C, P, PermissionRef<A>>;
|
|
192
222
|
//#endregion
|
|
193
223
|
export type { BetterMcp, GuardOptions, McpOptions, McpTool, ResourceRouteOptions, ToolAnnotations, ToolContext, ToolDecision, ToolDefinition, ToolInfo, ToolRef, ToolResourceOptions, ToolResources, ToolResult };
|