permdock 0.4.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 +37 -35
- package/dist/{schema-Bol6gqXA.js → 2020-C9VN-x8c.js} +5 -130
- package/dist/a2a/index.d.ts +6 -6
- package/dist/a2a/index.js +14 -17
- package/dist/{adapter-context-mlWsVGGg.js → adapter-context-CRhqyzCk.js} +1 -1
- package/dist/adoption-scan-DCYe60Pi.js +107 -0
- package/dist/agent/index.d.ts +3 -0
- package/dist/agent/index.js +1 -0
- package/dist/ai-sdk/index.d.ts +18 -35
- package/dist/ai-sdk/index.js +37 -23
- package/dist/{app-data-CV8pqqMi.js → app-data-MuyzVqX8.js} +2 -1
- package/dist/approval-header-CJACtHkv.js +23 -0
- package/dist/approval-prompt-Dg5LeAcT.js +62 -0
- package/dist/approval-prompt-DvSSPQJX.d.ts +57 -0
- package/dist/approvals/index.d.ts +5 -3
- package/dist/approvals/index.js +8 -5
- package/dist/approvals-p1PGoVjb.js +995 -0
- package/dist/arazzo-41WuzHou.js +36 -0
- package/dist/{arazzo-C4BcskbX.js → arazzo-CaUVBn7D.js} +20 -14
- package/dist/args-IIolxxKA.js +197 -0
- package/dist/astro/index.d.ts +43 -0
- package/dist/astro/index.js +27 -0
- package/dist/audience-DabClFLQ.js +55 -0
- package/dist/auth-DRLEizbL.js +178 -0
- package/dist/authzen/index.d.ts +26 -6
- package/dist/authzen/index.js +94 -79
- package/dist/automation-BNM3TtDo.d.ts +114 -0
- package/dist/automation-DVjOckjV.js +157 -0
- package/dist/better-auth/index.d.ts +8 -6
- package/dist/better-auth/index.js +9 -8
- package/dist/better-supabase/index.d.ts +357 -30
- package/dist/better-supabase/index.js +936 -194
- package/dist/{bind-kk-uyCwH.js → bind-CAvgUuKs.js} +14 -10
- package/dist/{bind-BzqG8SMb.d.ts → bind-DOyrv6zi.d.ts} +12 -10
- package/dist/body-CH5of8Ne.js +10 -0
- package/dist/body-text-QcXok_SI.js +52 -0
- package/dist/{build-instance-DIIV9DbC.js → build-instance-Bu_eDqYw.js} +4 -3
- package/dist/{canonical-json-CFKyFOke.js → canonical-json-BC8_nMTw.js} +5 -3
- package/dist/{capability-CksyCWDH.d.ts → capability-Drg-1YhL.d.ts} +44 -25
- package/dist/{capability-txATtKV4.js → capability-N1K9IpqS.js} +68 -42
- package/dist/casbin-Cr7RLtA3.js +30 -0
- package/dist/casbin-Dyu2gnUD.js +234 -0
- package/dist/casl-64gpT-8x.js +24 -0
- package/dist/casl-DjEDhTCP.js +299 -0
- package/dist/catalog/index.d.ts +74 -2
- package/dist/catalog/index.js +51 -2
- package/dist/catalog-BoWglDPI.js +1 -0
- package/dist/catalog-DZVbrF-z.js +52 -0
- package/dist/{catalog-tZUyOfOv.js → catalog-HD2gf5mY.js} +51 -6
- package/dist/{catalog-doc-DWtg0gGR.js → catalog-doc-Cdn7-0pQ.js} +45 -23
- package/dist/catalog-fingerprint-CCP0-yQS.js +153 -0
- package/dist/chat/index.d.ts +2 -0
- package/dist/chat/index.js +224 -0
- package/dist/chat-sdk/index.d.ts +87 -0
- package/dist/chat-sdk/index.js +197 -0
- package/dist/claims-map-7oQ3ue4X.js +13 -0
- package/dist/claims-map-Ca-QX8C6.d.ts +32 -0
- package/dist/claude-agent/index.d.ts +7 -14
- package/dist/claude-agent/index.js +24 -27
- package/dist/clerk/index.d.ts +9 -8
- package/dist/clerk/index.js +9 -14
- package/dist/cli/bin.js +36 -17
- package/dist/cli/index.d.ts +19 -5
- package/dist/cli/index.js +164 -4
- package/dist/cloud/index.d.ts +102 -63
- package/dist/cloud/index.js +239 -340
- package/dist/cloud-ytQ3uviA.js +87 -0
- package/dist/codemod-5mpSpnUY.js +37 -0
- package/dist/codemod-ua2hHy7w.js +2084 -0
- package/dist/collect-Ci6akVwH.js +55 -0
- package/dist/collect-D7eQDffE.js +1 -0
- package/dist/{collect-2SrB7lfk.js → collect-mLTY4nwb.js} +75 -11
- package/dist/command-L8EstFNm.js +6 -0
- package/dist/compile/index.d.ts +1 -1
- package/dist/compile/index.js +1 -2
- package/dist/{compile-CtTP7eur.d.ts → compile-1bsAezL0.d.ts} +5 -3
- package/dist/{compile-CcEu2ZQ1.js → compile-CMqMx_IN.js} +11 -8
- package/dist/completion-BTFrHZhX.js +143 -0
- package/dist/config-Bj2Ixq3d.js +26 -0
- package/dist/{config-BIjREpyE.js → config-bs_kZeYq.js} +12 -7
- package/dist/{config-report--Xb9APJS.js → config-report-DSpsLpCE.js} +15 -5
- package/dist/{connection-DUsczpB5.js → connection-DjhIJSs2.js} +6 -5
- package/dist/{context-DieZVJXu.js → context-B_u3_bDJ.js} +2 -2
- package/dist/convex/index.d.ts +11 -10
- package/dist/convex/index.js +6 -4
- package/dist/create-B30OMUOJ.d.ts +107 -0
- package/dist/create-CBMmFie-.d.ts +138 -0
- package/dist/create-CGm28gyI.js +130 -0
- package/dist/create-CQWIpUG-.js +403 -0
- package/dist/{create-BBO24vj6.js → create-DCF2SvoT.js} +31 -32
- package/dist/create-D_NmPOdH.d.ts +110 -0
- package/dist/{credential-kue0qpbm.js → credential-BcoiejpY.js} +152 -31
- package/dist/credentials-DPyHmYz5.js +74 -0
- package/dist/delegation-j6-rc37o.js +286 -0
- package/dist/delivery/index.d.ts +5 -0
- package/dist/delivery/index.js +5 -0
- package/dist/delivery-DCAgNyCn.js +499 -0
- package/dist/delivery-event-xX4obB8F.js +40 -0
- package/dist/{denied-text-DfRk15uw.d.ts → denied-text-CiFQNuMV.d.ts} +5 -5
- package/dist/{describe-C3ldA9os.d.ts → describe-B5qgDvEW.d.ts} +2 -2
- package/dist/{describe-Cgkp7eP0.js → describe-BybMRY7A.js} +6 -2
- package/dist/device-BARQ8eYG.js +193 -0
- package/dist/{diff-rpqoe7Ag.js → diff-3jbx6Rm4.js} +60 -54
- package/dist/diff-CmuSD3vc.js +37 -0
- package/dist/doctor-3ZqNHX_G.js +44 -0
- package/dist/{doctor-owlv6ddh.js → doctor-BdZw53-k.js} +245 -50
- package/dist/drizzle/index.d.ts +5 -3
- package/dist/drizzle/index.js +2 -2
- package/dist/elysia/index.d.ts +16 -13
- package/dist/elysia/index.js +13 -12
- package/dist/env-DJZrPjRi.js +8 -0
- package/dist/errors-BDUwg2qC.js +27 -0
- package/dist/{errors-drnfxYtm.js → errors-BKy0EfhN.js} +5 -9
- package/dist/errors-BWXBMaKK.d.ts +11 -0
- package/dist/errors-CWTY6uih.js +143 -0
- package/dist/{errors-OD_4c__H.d.ts → errors-DH5QEGXh.d.ts} +2 -2
- package/dist/evaluate-CNClBvcj.js +1785 -0
- package/dist/evaluations-C_1vdSZc.d.ts +32 -0
- package/dist/{evaluations-C9YJsv3H.js → evaluations-beAooV0n.js} +145 -34
- package/dist/eve/index.d.ts +12 -16
- package/dist/eve/index.js +22 -28
- package/dist/event-time-CsegxXxB.js +23 -0
- package/dist/expiry-D4_YKRKD.js +52 -0
- package/dist/express/index.d.ts +13 -10
- package/dist/express/index.js +12 -11
- package/dist/fastify/index.d.ts +25 -22
- package/dist/fastify/index.js +13 -12
- package/dist/fetch-adapter-DD_gfmrC.js +120 -0
- package/dist/fetch-adapter-Dw0MTS3D.d.ts +31 -0
- package/dist/fields-OYG_JR78.js +203 -0
- package/dist/files-C5ZI27eV.js +124 -0
- package/dist/{fixtures-h2eG2OZV.js → fixtures-B7XrLeY7.js} +8 -7
- package/dist/flags-C3DktBDY.js +86 -0
- package/dist/{from-snapshot-7REQZe0H.js → from-snapshot-CTCMsFZk.js} +55 -52
- package/dist/{grantee-conditions-MQs5NIuX.js → grantee-conditions-CcXf8hMM.js} +4 -3
- package/dist/{grantee-CXY-0C87.js → grantee-hxrUsbpM.js} +16 -6
- package/dist/{grantee-match-fxYp9Nmt.js → grantee-match-DbENBHLB.js} +5 -4
- package/dist/h3/index.d.ts +37 -0
- package/dist/h3/index.js +35 -0
- package/dist/headers-BIjfMaoC.js +8 -0
- package/dist/headers-CIbDTUTK.d.ts +7 -0
- package/dist/{helpers-C9YmyBIa.js → helpers-CBYVMjwh.js} +45 -38
- package/dist/hono/index.d.ts +12 -9
- package/dist/hono/index.js +13 -12
- package/dist/hosted-B46-5LYE.js +315 -0
- package/dist/hosted-BPk51-kX.d.ts +78 -0
- package/dist/{http-DPuDaChb.d.ts → http-B_LphE5Y.d.ts} +1 -2
- package/dist/http-DXJ37RDA.js +46 -0
- package/dist/{http-BEbdMZ05.js → http-ujKm0JXE.js} +1 -2
- package/dist/{import-UHk1N7vH.js → import-CNV7I2Dw.js} +25 -20
- package/dist/{import-BFIlhetD.js → import-wyqXUyjm.js} +190 -53
- package/dist/index-B8YjkEZ4.d.ts +210 -0
- package/dist/index-C-6Letxg.d.ts +431 -0
- package/dist/index-CaxrMD1A.d.ts +1 -0
- package/dist/{index-BwMe94Xq.d.ts → index-Ch8LpNDp.d.ts} +34 -16
- package/dist/index-Cp_ilKi1.d.ts +91 -0
- package/dist/index-CueFnxQc.d.ts +110 -0
- package/dist/index-DuWxc5dt.d.ts +909 -0
- package/dist/index.d.ts +19 -15
- package/dist/index.js +31 -21
- package/dist/init-DeMYsnYJ.js +96 -0
- package/dist/init-GG6Jh8HD.js +95 -0
- package/dist/{instance-options-plkrsAog.d.ts → instance-options-BsVpyGIk.d.ts} +2 -2
- package/dist/instance-snapshot-BOEhcqIF.js +601 -0
- package/dist/instant-BluqDvyS.js +19 -0
- package/dist/internals-Dk8A8fX3.js +17 -0
- package/dist/{json-schema-DBkdUuCO.js → json-schema-B-vAwlde.js} +45 -6
- package/dist/json-schema-CN_iLFH2.d.ts +40 -0
- package/dist/jwt/index.d.ts +18 -11
- package/dist/jwt/index.js +156 -135
- package/dist/{kernel-CB3LrIJM.js → kernel-D0NVb1cK.js} +52 -24
- package/dist/kysely/index.d.ts +5 -3
- package/dist/kysely/index.js +2 -2
- package/dist/load-BxEtwlBS.js +1 -0
- package/dist/{load-C3_oTHyO.js → load-DFS_ry0W.js} +22 -6
- package/dist/{load-jose-BL6LH4bL.js → load-jose-DZ4dnjri.js} +1 -4
- package/dist/login-Dfe5RlYk.js +68 -0
- package/dist/login-imhuwvn3.js +254 -0
- package/dist/manifest-C8IzW3Do.js +42 -0
- package/dist/manifest-dvL2XEe1.js +370 -0
- package/dist/manifest-json-CAGzls-C.js +9 -0
- package/dist/{manifest-uDS9y5de.d.ts → manifest-mx5ghSFM.d.ts} +9 -2
- package/dist/manifest-schema-C0kK_8V0.js +399 -0
- package/dist/{map-claims-AVlBaJoa.js → map-claims-D3oRmTk0.js} +13 -10
- package/dist/{map-error-BE27PYkE.js → map-error-Dr70oA_3.js} +3 -3
- package/dist/{markers-CiwAOZtO.js → markers-C6joDI3o.js} +2 -1
- package/dist/mcp/index.d.ts +22 -12
- package/dist/mcp/index.js +57 -39
- package/dist/{migrate-BwlB5-Wk.js → migrate-CIq4-E9F.js} +53 -14
- package/dist/nest/index.d.ts +12 -9
- package/dist/nest/index.js +15 -14
- package/dist/next/index.d.ts +18 -21
- package/dist/next/index.js +13 -11
- package/dist/next/plugin.d.ts +1 -1
- package/dist/next/plugin.js +2 -2
- package/dist/node/index.d.ts +10 -10
- package/dist/node/index.js +7 -9
- package/dist/{ocsf-uYFXGVw2.js → ocsf-BFp-PZZA.js} +22 -11
- package/dist/openai/index.d.ts +9 -16
- package/dist/openai/index.js +17 -24
- package/dist/openapi/index.d.ts +3 -3
- package/dist/openapi/index.js +1 -1
- package/dist/{openapi-DBzHQbov.js → openapi-B7HZ0f-r.js} +8 -8
- package/dist/openapi-C4dDTVEd.js +138 -0
- package/dist/{openapi-BJdBmYDG.js → openapi-DD1SV-5-.js} +10 -9
- package/dist/operation-findings-DgATDpvh.js +36 -0
- package/dist/operations-X0VM7F3m.d.ts +59 -0
- package/dist/orpc/index.d.ts +13 -10
- package/dist/orpc/index.js +20 -15
- package/dist/otel/index.d.ts +3 -2
- package/dist/otel/index.js +30 -7
- package/dist/output-1im__-08.js +88 -0
- package/dist/output-files-B3IZJksC.js +1 -0
- package/dist/{output-files-CgIsvdSa.js → output-files-DhRBBE4n.js} +24 -26
- package/dist/{permission-keys-B26jeyUv.js → ownership-DqaJNJPn.js} +1045 -153
- package/dist/{package-root-DtNnpmUd.js → package-root-Dk_ETdkp.js} +1 -1
- package/dist/{parse-CVFQHk6c.js → parse-Cxq0WxrA.js} +2 -2
- package/dist/{parse-local-manifest-DvYUR0QL.d.ts → parse-local-manifest-5ODwqu8b.d.ts} +1 -1
- package/dist/{parse-local-manifest-C-q02Pal.js → parse-local-manifest-CVSs6J9I.js} +1 -1
- package/dist/parse-request-D_tUXG6M.js +26 -0
- package/dist/paths-DXSHAMIa.js +42 -0
- package/dist/pdp/index.d.ts +7 -3
- package/dist/pdp/index.js +45 -26
- package/dist/{peer-BOr_kJE1.js → peer-C8swJ2GH.js} +23 -4
- package/dist/peer-CRvC7Hg1.js +1 -0
- package/dist/permdock-BrAscV28.js +868 -0
- package/dist/permdock-SV8ZINYT.d.ts +502 -0
- package/dist/{permission-registry-BsblpB-z.js → permission-registry-Br4jSNVi.js} +3 -3
- package/dist/permissions-B-wCP5ZC.js +30 -0
- package/dist/{permissions-CCJ6lmxB.js → permissions-BPxlwVhN.js} +4 -3
- package/dist/{permissions-COH-KRgT.d.ts → permissions-u_KHg-sN.d.ts} +1 -2
- package/dist/policies-DP2nqRoF.js +295 -0
- package/dist/{policy-ur0BBK_e.d.ts → policy-77FSAq_V.d.ts} +2 -2
- package/dist/{hosted-CBHgkzDl.js → policy-DbM5YYtV.js} +17 -273
- package/dist/policy-from-catalog-C2gMa2Dj.js +450 -0
- package/dist/policy-module-CTlwMvLI.js +89 -0
- package/dist/{policy-types-sp9P1iIV.d.ts → policy-types-n0uRTsW8.d.ts} +460 -632
- package/dist/postgrest-CEgRbefE.d.ts +100 -0
- package/dist/postgrest-DAjUkF9w.js +575 -0
- package/dist/{powersync-cZe4kzhL.js → powersync-BkWWCS1K.js} +23 -24
- package/dist/powersync-DISt6SUe.js +62 -0
- package/dist/powersync-MMJ2mI2q.js +1 -0
- package/dist/preset/index.d.ts +146 -0
- package/dist/preset/index.js +1 -0
- package/dist/preset-DZdU0tne.js +1768 -0
- package/dist/principal-source-pHneukrx.js +103 -0
- package/dist/prisma/index.d.ts +6 -3
- package/dist/prisma/index.js +2 -2
- package/dist/{problem-CnWraVhC.js → problem-CTviyH5L.js} +13 -23
- package/dist/{problem-details-rIIo8B2C.d.ts → problem-details-B45V5d2b.d.ts} +1 -1
- package/dist/{problem-details-DECUnXAn.js → problem-details-cn5X30gZ.js} +43 -40
- package/dist/problem-types-CJ2325SZ.js +5 -0
- package/dist/{prompt-CXYhLfsS.js → prompt-DfZLJLIn.js} +2 -2
- package/dist/{protected-BN7BUdY1.js → protected-BlF0F6wL.js} +21 -4
- package/dist/{protected-B3_P7xuw.d.ts → protected-RFGpakN9.d.ts} +16 -8
- package/dist/{provider-Bi-0HNL3.js → provider-B1al-AZz.js} +2 -2
- package/dist/{provider-kwHC9CZD.d.ts → provider-DILL9oPK.d.ts} +1 -1
- package/dist/{provider-store-Ctt-81Ni.js → provider-store-DM6DNcta.js} +2 -2
- package/dist/pull-CvpINcMK.js +1 -0
- package/dist/pull-jEwbf80J.js +256 -0
- package/dist/push-BD4f15co.js +116 -0
- package/dist/pushed-policy-CqtxkV4G.js +238 -0
- package/dist/pushed-policy-DCW91KQU.d.ts +57 -0
- package/dist/react/index.d.ts +8 -8
- package/dist/react/index.js +6 -6
- package/dist/react/provider-client.d.ts +1 -1
- package/dist/react/provider-client.js +1 -2
- package/dist/react-native/index.d.ts +24 -72
- package/dist/react-native/index.js +29 -25
- package/dist/{refs-f3imMjNW.js → refs-K6eWUJ0H.js} +1 -1
- package/dist/{relation-walk-BXnlLtg2.js → relation-walk-3OyDBF0S.js} +2 -2
- package/dist/{relations-CvmSpG67.js → relations-BnCWnJGI.js} +3 -3
- package/dist/renames-CGj7YwcQ.js +175 -0
- package/dist/{replay-COpmZUfx.d.ts → replay-Bkm-Ne4l.d.ts} +1 -1
- package/dist/{replay-BsOyTrdV.js → replay-Du1tJjG7.js} +2 -1
- package/dist/{request-context-BVM7aWNs.js → request-context-C81Pip9n.js} +3 -3
- package/dist/request-schema-CMreVuFM.js +148 -0
- package/dist/resend/index.d.ts +126 -0
- package/dist/resend/index.js +379 -0
- package/dist/{resource-relations-D1Un3pcz.js → resource-relations-D_jw0BFx.js} +1 -1
- package/dist/{retire-BFcxL6un.js → retire-CALjIQ7e.js} +2 -2
- package/dist/{revocations-Cy06JNx2.d.ts → revocations-R07lFBnX.d.ts} +2 -0
- package/dist/rls-BAqP4q66.js +336 -0
- package/dist/{rls-BEktUaqg.js → rls-DTvYd-lI.js} +288 -690
- package/dist/{role-builder-B4GbKM-i.js → role-builder-uWQZ4v84.js} +14 -207
- package/dist/{rpc-nYC3cR_u.js → rpc-VSl5ylaQ.js} +7 -7
- package/dist/run-CUKuz0A8.js +723 -0
- package/dist/run-DDwUaJDU.js +1 -0
- package/dist/run-ticket-DocwaTKn.d.ts +124 -0
- package/dist/run-ticket-sxFI6LAk.js +337 -0
- package/dist/{runtime-D_tMXnsq.js → runtime-D3VTAiCA.js} +1 -1
- package/dist/{saas-DtaA4JuW.js → saas-BCXRuXca.js} +16 -14
- package/dist/scan-qvOe0hS3.js +29 -0
- package/dist/{schema-DjQBcAP9.js → schema-B4v0Qrac.js} +102 -8
- package/dist/schema-yLuBWWsh.js +130 -0
- package/dist/scim/index.d.ts +2 -2
- package/dist/scim/index.js +1 -2
- package/dist/{scim-vFR1O5oG.js → scim-ClHtpyV3.js} +208 -76
- package/dist/{scopes-tvpa34ep.js → scopes-CUPSjo9q.js} +12 -7
- package/dist/server/index.d.ts +12 -143
- package/dist/server/index.js +12 -9
- package/dist/server-C3WXAHZj.js +453 -0
- package/dist/{server-types-DdqBwZN_.d.ts → server-types-CKQiCnON.d.ts} +51 -68
- package/dist/{sha256-BO0swRXL.js → sha256-D9ihqmvd.js} +8 -1
- package/dist/{shared-1uhI-e-b.js → shared-BAK8t4Uo.js} +20 -9
- package/dist/{shared-JhMeOsDF.js → shared-DvvFzYXe.js} +8 -9
- package/dist/signals-D3NcTKUS.js +32 -0
- package/dist/sink-4-eQIRWf.d.ts +225 -0
- package/dist/sink-BEZSlMS_.js +957 -0
- package/dist/{skills-BZdRQkxs.js → skills-B6lVdD_W.js} +13 -6
- package/dist/skills-CTYwkl44.js +51 -0
- package/dist/snapshot-B7DkYg6g.js +269 -0
- package/dist/{snapshot-cache-Cod40D-X.js → snapshot-cache-DZHQ0KF6.js} +11 -5
- package/dist/{snapshot-cache-J5T7t_vD.d.ts → snapshot-cache-PXI-vGpY.d.ts} +7 -5
- package/dist/solid/index.d.ts +11 -12
- package/dist/solid/index.js +7 -7
- package/dist/solid-start/index.d.ts +52 -0
- package/dist/solid-start/index.js +49 -0
- package/dist/{sources-Dljy06zL.d.ts → sources-Xc4zkszI.d.ts} +7 -13
- package/dist/{sources-B1-b-R0t.js → sources-vs5dGOsS.js} +125 -119
- package/dist/{sql-t8teWOfo.js → sql-B5T1IL83.js} +13 -1
- package/dist/src-Cu2m75uo.js +1860 -0
- package/dist/ssf/index.d.ts +4 -4
- package/dist/ssf/index.js +384 -47
- package/dist/standard-webhooks-DgFFD-Ga.js +228 -0
- package/dist/standard-webhooks-rbD7LS6h.d.ts +88 -0
- package/dist/storage-C2bWdvJH.js +132 -0
- package/dist/{store-ILkLUj_o.js → store-BDutJkDL.js} +40 -53
- package/dist/{store-options-CbUHDoSe.js → store-options-u0ycEe8s.js} +26 -21
- package/dist/{stores-Cxz_80g-.d.ts → stores-BUGNbJTt.d.ts} +7 -8
- package/dist/{stores-BHXdSbw9.js → stores-CGhM8BN_.js} +2 -2
- package/dist/{stream-Dwsg6WwE.d.ts → stream-CeCMJmBB.d.ts} +2 -2
- package/dist/{stream-BMui98KK.js → stream-CvdUS9V1.js} +9 -2
- package/dist/style-DiKWnAvn.js +1 -0
- package/dist/{style-CTm1AXDT.js → style-Uao76wO7.js} +3 -2
- package/dist/subject-BGoM5o8B.js +17 -0
- package/dist/supabase/index.d.ts +23 -106
- package/dist/supabase/index.js +5 -4
- package/dist/supabase/middleware.d.ts +7 -6
- package/dist/supabase/middleware.js +13 -11
- package/dist/supabase-By_frk3U.js +92 -0
- package/dist/{supabase-hook-Cva3ikXz.js → supabase-hook-BMoEhZir.js} +960 -64
- package/dist/supabase-hook-CCw5m35C.js +1 -0
- package/dist/{supabase-C1TWlnYt.js → supabase-x5JtR2tc.js} +99 -206
- package/dist/support-session-C6xJQYut.js +158 -0
- package/dist/svelte/Protected.svelte +4 -4
- package/dist/svelte/index.d.ts +7 -7
- package/dist/svelte/index.js +10 -10
- package/dist/svelte/runtime.d.ts +3 -3
- package/dist/svelte/runtime.js +3 -3
- package/dist/svelte/source.d.ts +7 -7
- package/dist/svelte/source.js +4 -4
- package/dist/sveltekit/index.d.ts +51 -0
- package/dist/sveltekit/index.js +27 -0
- package/dist/tanstack-start/index.d.ts +51 -0
- package/dist/tanstack-start/index.js +40 -0
- package/dist/target-Bw37TFNA.js +51 -0
- package/dist/{tenancy-DshjqY0n.js → tenancy-DN2QAx9z.js} +5 -5
- package/dist/terminal/index.d.ts +11 -9
- package/dist/terminal/index.js +23 -287
- package/dist/testing/index.d.ts +311 -38
- package/dist/testing/index.js +3475 -201
- package/dist/testing/saas/index.d.ts +9 -8
- package/dist/testing/saas/index.js +2 -2
- package/dist/testing/saas/permissions.d.ts +1 -1
- package/dist/testing/saas/permissions.js +1 -2
- package/dist/text-BMFRfBqc.js +8 -0
- package/dist/{text-diff-BdkkYSbi.js → text-diff-BQcUapOb.js} +1 -1
- package/dist/thenable-yD7SabqG.js +31 -0
- package/dist/time-DkWjdL98.js +71 -0
- package/dist/{token-Bx9qy30p.js → token-BLZcjQgt.js} +15 -6
- package/dist/{tool-refusal-CQ7OEia9.js → tool-refusal-CMLN5xhn.js} +2 -2
- package/dist/trpc/index.d.ts +12 -9
- package/dist/trpc/index.js +16 -14
- package/dist/types-8RnwUAvE.d.ts +107 -0
- package/dist/{store-9KO4BlkB.d.ts → types-B3_ooZgZ.d.ts} +100 -75
- package/dist/{types-Br9IXUBG.d.ts → types-BdtSDbBO.d.ts} +77 -17
- package/dist/types-BtHtcKMr.d.ts +157 -0
- package/dist/{types-CqrjB9o6.d.ts → types-BzzaHxt3.d.ts} +23 -11
- package/dist/types-C791HFu9.d.ts +332 -0
- package/dist/types-C863OQiR.d.ts +57 -0
- package/dist/{types-ByUo56un.d.ts → types-CVZSNocA.d.ts} +23 -22
- package/dist/{types-DHrmBJLH.d.ts → types-CX7AvRqP.d.ts} +7 -7
- package/dist/types-C_IiEs64.d.ts +65 -0
- package/dist/{types-7rJVLWe5.d.ts → types-Dfv0aTER.d.ts} +63 -11
- package/dist/types-DqzsnlSA.js +67 -0
- package/dist/{types-DpWfQdSh.d.ts → types-Druu9wLM.d.ts} +46 -11
- package/dist/{types-CIlTojhq.d.ts → types-_WhUP7ud.d.ts} +9 -6
- package/dist/{types-CUcFZfpU.d.ts → types-lUlG3TVd.d.ts} +2 -1
- package/dist/unplugin/index.d.ts +1 -1
- package/dist/unplugin/index.js +2 -2
- package/dist/usage-CRVl9V3t.js +32 -0
- package/dist/usage-CZpSQP6L.js +1 -0
- package/dist/{usage-CG9nOYZw.js → usage-SveTRTyr.js} +54 -11
- package/dist/{validation-error-BSSw0l_8.d.ts → validation-error-DHUrAkku.d.ts} +1 -1
- package/dist/{validity-dVrUEPJt.js → validity-CZ7-y0Cj.js} +32 -15
- package/dist/{verifier-DMr_Zmb_.js → verifier-DHuh-okk.js} +18 -7
- package/dist/{verify-BztUB3GX.js → verify-BaAKx7t6.js} +645 -50
- package/dist/{version-BEogC-rB.js → version-CEbQ5UeM.js} +4 -3
- package/dist/version-DXkYUISx.js +1 -0
- package/dist/{views-CJsrBS1f.js → views-DTIIO-oQ.js} +22 -5
- package/dist/{permission-types-Dg39z9Kv.d.ts → vocabulary-CN8H_9UF.d.ts} +67 -2
- package/dist/vue/index.d.ts +9 -10
- package/dist/vue/index.js +8 -8
- package/dist/waiter-B986w1oK.d.ts +36 -0
- package/dist/waiter-BGUtGYoU.js +67 -0
- package/dist/watch--ovlPOc0.js +1 -0
- package/dist/{watch-zeucB7eF.js → watch-vea54PRw.js} +44 -5
- package/dist/webmcp/index.d.ts +2 -2
- package/dist/webmcp/index.js +3 -3
- package/dist/where-scope-C9vfEphl.js +306 -0
- package/dist/who-can-DWBAcaCQ.js +364 -0
- package/dist/wire-delegation-Cv3W2eaM.js +36 -0
- package/dist/wire-denial-C7PaVYEM.js +27 -0
- package/dist/workflow/index.d.ts +5 -0
- package/dist/workflow/index.js +223 -0
- package/dist/workflow-sdk/index.d.ts +56 -0
- package/dist/workflow-sdk/index.js +78 -0
- package/dist/{wrap-Cr93qqdP.d.ts → wrap-C5jC6sKI.d.ts} +2 -1
- package/dist/{wrap-DWsU_5Bd.js → wrap-gX61EtpB.js} +7 -6
- package/package.json +136 -37
- package/schemas/access-event-v1.json +118 -0
- package/schemas/approval-request-v1.json +34 -1
- package/schemas/approval-signature-v1.json +94 -0
- package/schemas/automation-event-v1.json +113 -0
- package/schemas/capability-v1.json +84 -0
- package/schemas/catalog-event-v1.json +87 -0
- package/schemas/catalog-v1.json +123 -12
- package/schemas/cli-commands-v1.json +164 -0
- package/schemas/cli-result-v1.json +96 -0
- package/schemas/cloud-api-v1.json +5407 -0
- package/schemas/connector-v1.json +408 -0
- package/schemas/credential-event-v1.json +81 -0
- package/schemas/credential-v1.json +134 -0
- package/schemas/decision-event-v1.json +288 -0
- package/schemas/delivery-event-v1.json +117 -0
- package/schemas/directory-event-v1.json +85 -0
- package/schemas/evidence-export-v1.json +54 -0
- package/schemas/membership-event-v1.json +93 -0
- package/schemas/policy-v1.json +68 -0
- package/schemas/pushed-policy-v1.json +236 -0
- package/schemas/run-v1.json +162 -0
- package/schemas/snapshot-v1.json +138 -0
- package/schemas/supabase-claims-v1.json +4 -4
- package/schemas/supabase-manifest-v1.json +5 -1
- package/schemas/support-session-v1.json +111 -0
- package/skills/permdock/SKILL.md +16 -12
- package/skills/permdock-agents/SKILL.md +40 -23
- package/skills/permdock-agents/references/operations-automations-chat.md +221 -0
- package/skills/permdock-agents/references/runtimes.md +22 -18
- package/skills/permdock-approvals/SKILL.md +29 -13
- package/skills/permdock-approvals/references/delivery-and-waiters.md +172 -0
- package/skills/permdock-approvals/references/stores-and-resume.md +21 -7
- package/skills/permdock-audit/SKILL.md +3 -3
- package/skills/permdock-credentials/SKILL.md +5 -5
- package/skills/permdock-credentials/references/tokens-keys-links.md +14 -10
- package/skills/permdock-data/SKILL.md +6 -6
- package/skills/permdock-data/references/queries-and-rls.md +10 -9
- package/skills/permdock-data/references/relationships.md +3 -3
- package/skills/permdock-tenancy/SKILL.md +20 -7
- package/skills/permdock-tenancy/references/contacts-and-support-sessions.md +122 -0
- package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +6 -4
- package/skills/permdock-wire/SKILL.md +17 -11
- package/skills/permdock-wire/references/adapters.md +139 -51
- package/skills/permdock-wire/references/policy-options.md +5 -5
- package/skills/permdock-wire/references/presets-and-recipes.md +58 -0
- package/dist/approvals-DZL76lKW.js +0 -240
- package/dist/arazzo-CD8d0WLb.js +0 -54
- package/dist/catalog-6yWAX6Ps.js +0 -2
- package/dist/catalog-WHG4kBq7.js +0 -48
- package/dist/cloud-C7bSDgX4.js +0 -50
- package/dist/cloud-PeBN3IEn.js +0 -118
- package/dist/collect-Bw2Jdq1q.js +0 -2
- package/dist/collect-CQx4hX4N.js +0 -83
- package/dist/commands-Cpip4ULx.js +0 -97
- package/dist/config-DLt6BvV7.js +0 -36
- package/dist/diff-Cnghh_Ip.js +0 -48
- package/dist/doctor-CuVJvhV_.js +0 -53
- package/dist/duration-xK2jGFVc.js +0 -25
- package/dist/errors-CWfoNg9N.js +0 -47
- package/dist/errors-DRnGZHzF.js +0 -30
- package/dist/expiry-BoBJ8Tvc.js +0 -7
- package/dist/fields-fwfXN01n.js +0 -1016
- package/dist/headers-BZSDieNT.js +0 -6
- package/dist/headers-Cf-zWvsO.d.ts +0 -6
- package/dist/ids-DC4V4CFu.js +0 -18
- package/dist/index-DgM7w96K.d.ts +0 -6
- package/dist/index-Dz7didpC.d.ts +0 -201
- package/dist/index-UdVQgq48.d.ts +0 -550
- package/dist/load-B_shHrmd.js +0 -2
- package/dist/manifest-BngWKryL.js +0 -770
- package/dist/may-use-BOn_dR_w.js +0 -78
- package/dist/openapi-DcQ1Kg40.js +0 -164
- package/dist/ownership-BgnbOJFT.js +0 -851
- package/dist/permdock-L26udHSk.js +0 -3646
- package/dist/powersync-BFSbSElQ.js +0 -62
- package/dist/powersync-DCDgZgfZ.js +0 -2
- package/dist/rls-55DQTuf5.js +0 -250
- package/dist/run-DMcNW_8T.js +0 -174
- package/dist/server-ZYEHtNHS.js +0 -268
- package/dist/sink-BTtmfPnE.js +0 -141
- package/dist/sink-CPN4zLfs.d.ts +0 -104
- package/dist/skills-Dle4ZoLF.js +0 -56
- package/dist/snapshot-Dc9CHPME.js +0 -1078
- package/dist/src-Bb7no-hS.js +0 -639
- package/dist/subject-C6dLxqHU.js +0 -24
- package/dist/supabase-Dbqr141s.js +0 -83
- package/dist/supabase-hook-BULg7Ut_.js +0 -2
- package/dist/thenable-QSmvt-vZ.js +0 -65
- package/dist/types-C0dee0Qf.d.ts +0 -197
- package/dist/types-DvupZE0w.d.ts +0 -9
- package/dist/usage-4G6t643F.js +0 -42
- package/dist/usage-iFLJ0-rr.js +0 -2
- package/dist/vocabulary-hhEFLFoL.d.ts +0 -65
- package/dist/watch-C8TpsAl4.js +0 -2
|
@@ -1,45 +1,119 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { Rt as Instant, St as ApiKeyPrincipal, T as Policy, U as CredentialVerifier, ar as Subject, gt as SupportSession, pn as ApproverInput, qt as AuthEvent, rr as Principal } from "../policy-types-n0uRTsW8.js";
|
|
2
|
+
import { E as PermissionTree, w as Permission } from "../vocabulary-CN8H_9UF.js";
|
|
3
|
+
import { d as PrincipalIdentity, i as PermDockOptions, p as PrincipalSource, r as PermDock } from "../permdock-SV8ZINYT.js";
|
|
4
|
+
import { c as AccessReviewStore } from "../types-C_IiEs64.js";
|
|
5
|
+
import { i as SupabaseRpcCaller } from "../postgrest-CEgRbefE.js";
|
|
6
|
+
import { g as SupabaseSubjectOptions, m as SupabaseSessionLike, u as SupabasePrincipal } from "../types-BzzaHxt3.js";
|
|
7
|
+
import { c as LinkPolicy, o as CapabilityPrincipal, t as Capability } from "../capability-Drg-1YhL.js";
|
|
4
8
|
import { AuthorizationProvider } from "better-supabase/config";
|
|
5
|
-
import { AuthSession, Authorizer } from "better-supabase/server";
|
|
9
|
+
import { AuthSession, AuthorizationHooks, Authorizer, SupportAuthorize, SupportAuthorizeInput } from "better-supabase/server";
|
|
6
10
|
import { EntitlementClaimOptions } from "better-supabase/blocks/entitlements";
|
|
7
11
|
import { ApiKey, ApiKeyClaimsOptions, ApiKeys } from "better-supabase/blocks/api-keys";
|
|
8
12
|
import { AccessTopicPolicy } from "better-supabase/realtime";
|
|
9
13
|
import { AccessBucketPolicy } from "better-supabase/storage";
|
|
10
14
|
import { CredentialProvider } from "better-supabase/credentials";
|
|
11
15
|
import { ToolDecision, ToolRef } from "better-supabase/mcp";
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
readonly manifest: unknown;
|
|
16
|
+
import { AuthorizeHookOptions, ProtectWebHandlerOptions } from "better-supabase/workflow-sdk";
|
|
17
|
+
//#region src/better-supabase/access-reviews.d.ts
|
|
18
|
+
type AccessReviewApplierOptions = {
|
|
16
19
|
/**
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
+
* A supabase-js client that may call the organizations and invitations
|
|
21
|
+
* block functions. Pass the reviewer's client so the block's own
|
|
22
|
+
* permission and role-ceiling checks run as the reviewer.
|
|
20
23
|
*/
|
|
21
|
-
readonly
|
|
22
|
-
|
|
24
|
+
readonly client: SupabaseRpcCaller;
|
|
25
|
+
readonly reviews: AccessReviewStore;
|
|
26
|
+
/** Decides whether a fallback role or an invitation's role grants the reviewed permission. */
|
|
27
|
+
readonly policy: Policy;
|
|
28
|
+
/**
|
|
29
|
+
* The role a revoked member moves to with `update_member_role`: one role,
|
|
30
|
+
* or a map from the roles in the item's `via` to their fallback. A
|
|
31
|
+
* fallback that still grants the permission, or none, removes the member
|
|
32
|
+
* with `remove_member` instead.
|
|
33
|
+
*/
|
|
34
|
+
readonly demoteTo?: string | Readonly<Record<string, string>>;
|
|
35
|
+
/**
|
|
36
|
+
* The member's email, for revoking the tenant's open invitations to it
|
|
37
|
+
* whose role grants the permission. Without it invitations are left alone.
|
|
38
|
+
*/
|
|
39
|
+
readonly email?: (userId: string) => string | null | undefined | Promise<string | null | undefined>;
|
|
40
|
+
/**
|
|
41
|
+
* An instance for the member in the review's tenant, read after the
|
|
42
|
+
* change. An item it still grants is not marked applied.
|
|
43
|
+
*/
|
|
44
|
+
readonly permdockFor?: (principalId: string, tenant: string) => PermDock | Promise<PermDock>;
|
|
45
|
+
/** The schema of the block functions; better-supabase's default is `better_supabase`. */
|
|
46
|
+
readonly schema?: string;
|
|
47
|
+
/** The scope review tenants are; defaults to the policy's first scope. */
|
|
23
48
|
readonly scope?: string;
|
|
49
|
+
readonly now?: Instant;
|
|
50
|
+
};
|
|
51
|
+
type AccessReviewApplyFailure = {
|
|
52
|
+
readonly item: string;
|
|
53
|
+
readonly cause: string;
|
|
54
|
+
};
|
|
55
|
+
type AccessReviewApplyResult = {
|
|
56
|
+
/** Items marked applied, including those whose member was already gone. */
|
|
57
|
+
readonly applied: readonly string[];
|
|
58
|
+
/** Items left unapplied, with the error the block function or the re-check gave. */
|
|
59
|
+
readonly failed: readonly AccessReviewApplyFailure[];
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* Applies the revoked items of an access review to better-supabase's
|
|
63
|
+
* organizations and invitations blocks, then marks each one applied. A
|
|
64
|
+
* revoked member moves to the `demoteTo` role when the policy says that
|
|
65
|
+
* role lacks the permission, and is removed otherwise. With `email`, the
|
|
66
|
+
* tenant's open invitations to the member whose role grants the permission
|
|
67
|
+
* are revoked too. A member who is no longer in the organization counts as
|
|
68
|
+
* applied. Any other error leaves the item unapplied in `failed`, and one
|
|
69
|
+
* item's failure never stops the others. Throws `review-not-found` for an
|
|
70
|
+
* unknown review.
|
|
71
|
+
*/
|
|
72
|
+
export declare function accessReviewApplier(options: AccessReviewApplierOptions): (reviewId: string) => Promise<AccessReviewApplyResult>;
|
|
73
|
+
//#endregion
|
|
74
|
+
//#region src/better-supabase/approvers.d.ts
|
|
75
|
+
/**
|
|
76
|
+
* Who may approve each better-supabase request kind: `'ai-tool'` (a tool
|
|
77
|
+
* call), `'support-session'`, or `'<subject type>.<action>'` from the
|
|
78
|
+
* approvals block.
|
|
79
|
+
*/
|
|
80
|
+
type ProviderApprovers = Readonly<Record<string, ApproverInput>>;
|
|
81
|
+
//#endregion
|
|
82
|
+
//#region src/better-supabase/subscribers.d.ts
|
|
83
|
+
/** The fields of better-supabase's `OutboxEvent` the policy reads. */
|
|
84
|
+
type SubscriberPolicyEvent = {
|
|
85
|
+
readonly type: string;
|
|
86
|
+
readonly tenant: string | null;
|
|
87
|
+
readonly actorId: string | null;
|
|
88
|
+
readonly payload: unknown;
|
|
89
|
+
};
|
|
90
|
+
type SubscriberPolicyOptions<E extends SubscriberPolicyEvent = SubscriberPolicyEvent> = {
|
|
91
|
+
readonly policy: Policy;
|
|
92
|
+
/** Loads the sender and every subscriber's principal. */
|
|
93
|
+
readonly principals: PrincipalSource;
|
|
24
94
|
/**
|
|
25
|
-
* The permission
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
* owner decides.
|
|
95
|
+
* The permission a subscriber needs for each event type: an exact type,
|
|
96
|
+
* `prefix.*` or `*`, with the exact type first and then the longest
|
|
97
|
+
* pattern. A type with no entry reaches no one.
|
|
29
98
|
*/
|
|
30
|
-
readonly
|
|
99
|
+
readonly events: Readonly<Record<string, Permission>>;
|
|
100
|
+
/** The row the permission is decided on. Defaults to `event.payload`, validated against the resource schema. */
|
|
101
|
+
readonly row?: (event: E) => unknown;
|
|
102
|
+
/** The principal the fan-out runs as in the event's tenant. Defaults to `event.actorId`. */
|
|
103
|
+
readonly sender?: (event: E) => string | null | undefined;
|
|
104
|
+
/** Sources for the sender's and subscribers' instances. */
|
|
105
|
+
readonly options?: Omit<PermDockOptions, "tenant" | "actor" | "delegation" | "session" | "expiresAt" | "principals">;
|
|
31
106
|
};
|
|
32
107
|
/**
|
|
33
|
-
* better-supabase's
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
* their helper, which `rls.mode: 'database'` writes; `canApprove` only with
|
|
39
|
-
* `approver`. Throws when the manifest or catalog is invalid, or when the
|
|
40
|
-
* tenant scope is ambiguous.
|
|
108
|
+
* The per-subscriber check for better-supabase's webhooks-out, outbox and
|
|
109
|
+
* realtime fan-out: the subscribers whose `principal` `decideFor` grants
|
|
110
|
+
* the event type's permission on its row, in the event's tenant, as the
|
|
111
|
+
* sender. An unmapped type, an event without a tenant or sender, a sender
|
|
112
|
+
* outside the tenant and a throw reach no one.
|
|
41
113
|
*/
|
|
42
|
-
export declare function
|
|
114
|
+
export declare function subscriberPolicy<E extends SubscriberPolicyEvent = SubscriberPolicyEvent>(options: SubscriberPolicyOptions<E>): <S extends {
|
|
115
|
+
readonly principal: string;
|
|
116
|
+
}>(event: E, subscribers: readonly S[]) => Promise<S[]>;
|
|
43
117
|
//#endregion
|
|
44
118
|
//#region src/better-supabase/api-keys.d.ts
|
|
45
119
|
/** The roles a tenant key holds in its tenant: a list, or one per key. */
|
|
@@ -99,7 +173,9 @@ type ApiKeySessionOptions = {
|
|
|
99
173
|
};
|
|
100
174
|
/** The claim, and the short code better-supabase writes for each feature key. */
|
|
101
175
|
type FeatureClaim = EntitlementClaimOptions;
|
|
102
|
-
type BetterSupabaseSubjectOptions = Omit<SupabaseSubjectOptions, "
|
|
176
|
+
type BetterSupabaseSubjectOptions = Omit<SupabaseSubjectOptions, "claims"> & {
|
|
177
|
+
/** Where the token carries roles, the active tenant and memberships; plans come from `plans`. */
|
|
178
|
+
readonly claims?: Omit<NonNullable<SupabaseSubjectOptions["claims"]>, "plans">;
|
|
103
179
|
/** How `kind: 'apiKey'` sessions map. Without it they are anonymous. */
|
|
104
180
|
readonly apiKeys?: ApiKeySessionOptions;
|
|
105
181
|
/**
|
|
@@ -119,7 +195,146 @@ type BetterSupabaseSubjectOptions = Omit<SupabaseSubjectOptions, "plans"> & {
|
|
|
119
195
|
* principal holding `serviceRoles`. Without `apiKeys`, and for `anon`,
|
|
120
196
|
* `service` and `invalid` sessions, the subject is anonymous.
|
|
121
197
|
*/
|
|
122
|
-
export declare function subjectFromBetterSupabase(session: SupabaseSessionLike | ApiKeySession | null | undefined, options?: BetterSupabaseSubjectOptions): Subject<SupabasePrincipal> | Subject<
|
|
198
|
+
export declare function subjectFromBetterSupabase(session: SupabaseSessionLike | ApiKeySession | null | undefined, options?: BetterSupabaseSubjectOptions): Subject<SupabasePrincipal> | Subject<ApiKeyPrincipal> | Subject;
|
|
199
|
+
//#endregion
|
|
200
|
+
//#region src/better-supabase/support.d.ts
|
|
201
|
+
/** A start `decideSupportSession` holds for approval: the session it would start and the token an approval binds to. */
|
|
202
|
+
type PendingSupportSession = {
|
|
203
|
+
readonly token: string;
|
|
204
|
+
readonly session: SupportSession;
|
|
205
|
+
};
|
|
206
|
+
type SupportPolicyOptions = {
|
|
207
|
+
readonly policy: Policy;
|
|
208
|
+
/** How the admin's verified claims map to a subject; the defaults of `subjectFromBetterSupabase`. */
|
|
209
|
+
readonly subject?: Omit<BetterSupabaseSubjectOptions, "apiKeys">;
|
|
210
|
+
/** Sources and sinks for the admin's instance; `settings` also supplies the tenant's `supportSessions` rules. */
|
|
211
|
+
readonly options?: Omit<PermDockOptions, "tenant" | "actor" | "delegation" | "session" | "expiresAt">;
|
|
212
|
+
/**
|
|
213
|
+
* The session's permissions when a start asks for `readOnly: false`.
|
|
214
|
+
* Without it such a start is refused; a read-only start gets every
|
|
215
|
+
* `readOnlyHint` permission the admin can use.
|
|
216
|
+
*/
|
|
217
|
+
readonly writable?: readonly Permission[];
|
|
218
|
+
/** Approval by someone other than the admin is required unless this is `false`. */
|
|
219
|
+
readonly approval?: boolean;
|
|
220
|
+
/**
|
|
221
|
+
* The approval the application recorded for `pending.token`, or
|
|
222
|
+
* `undefined` while none exists. `approvedBy` is the approver's principal
|
|
223
|
+
* id and never the admin's.
|
|
224
|
+
*/
|
|
225
|
+
readonly approved?: (input: SupportAuthorizeInput, pending: PendingSupportSession) => {
|
|
226
|
+
readonly approvedBy: string;
|
|
227
|
+
} | undefined | Promise<{
|
|
228
|
+
readonly approvedBy: string;
|
|
229
|
+
} | undefined>;
|
|
230
|
+
};
|
|
231
|
+
/**
|
|
232
|
+
* The `authorize` option of better-supabase's `supportSessions`: the admin's
|
|
233
|
+
* verified claims become a PermDock subject, and the start is decided with
|
|
234
|
+
* `permdock.decideSupportSession` in the requested tenant. `true` only for
|
|
235
|
+
* `granted`: an `approval-required` start passes once `approved` returns a
|
|
236
|
+
* distinct approver for its token. `readOnly: false` needs `writable`. A
|
|
237
|
+
* throw is `false`.
|
|
238
|
+
*/
|
|
239
|
+
export declare function supportPolicy(options: SupportPolicyOptions): SupportAuthorize;
|
|
240
|
+
//#endregion
|
|
241
|
+
//#region src/better-supabase/hooks.d.ts
|
|
242
|
+
type Maybe$1<T> = T | null | undefined | Promise<T | null | undefined>;
|
|
243
|
+
type Claims = Readonly<Record<string, unknown>>;
|
|
244
|
+
type AuthorizationHooksOptions = {
|
|
245
|
+
readonly policy: Policy;
|
|
246
|
+
/**
|
|
247
|
+
* The claims better-supabase mints for `userId` now, or `null` for a user
|
|
248
|
+
* deleted, suspended or unknown: the same loader `principalSource` takes.
|
|
249
|
+
*/
|
|
250
|
+
readonly claims: (userId: string, options: {
|
|
251
|
+
readonly tenant?: string;
|
|
252
|
+
}) => Maybe$1<Claims>;
|
|
253
|
+
/** How the claims map to a subject; the defaults of `subjectFromBetterSupabase`. */
|
|
254
|
+
readonly subject?: Omit<BetterSupabaseSubjectOptions, "apiKeys">;
|
|
255
|
+
/** Sources for every instance the hooks build. */
|
|
256
|
+
readonly options?: Omit<PermDockOptions, "tenant" | "actor" | "delegation" | "session" | "expiresAt">;
|
|
257
|
+
/**
|
|
258
|
+
* The claims an organization-owned automation runs as in `tenant`, such
|
|
259
|
+
* as its default service principal's. Without it such an automation runs
|
|
260
|
+
* as no one.
|
|
261
|
+
*/
|
|
262
|
+
readonly service?: (tenant: string | null) => Maybe$1<Claims>;
|
|
263
|
+
/** The `principalSource` for `identities` and `delivery`; without it neither hook is set. */
|
|
264
|
+
readonly principals?: PrincipalSource;
|
|
265
|
+
/** The permission each event type needs, for `delivery` (`subscriberPolicy`'s `events`). */
|
|
266
|
+
readonly events?: Readonly<Record<string, Permission>>;
|
|
267
|
+
/** The row a delivery check decides on; defaults to `event.payload`. */
|
|
268
|
+
readonly row?: (event: SubscriberPolicyEvent) => unknown;
|
|
269
|
+
/** Who may approve each request kind, as for `authorizationProvider`; sets `approverOf`. */
|
|
270
|
+
readonly approvers?: ProviderApprovers;
|
|
271
|
+
/** `supportPolicy`'s options without `policy`; sets `support.authorize`. */
|
|
272
|
+
readonly support?: Omit<SupportPolicyOptions, "policy">;
|
|
273
|
+
/**
|
|
274
|
+
* The user and tenant a run ticket stands for, looked up in the app's
|
|
275
|
+
* store; `null` refuses the ticket. Sets `tickets.subject`, which loads
|
|
276
|
+
* the user's current claims, so a suspended user's ticket runs as no one.
|
|
277
|
+
*/
|
|
278
|
+
readonly tickets?: (ticket: string) => Maybe$1<{
|
|
279
|
+
readonly userId: string;
|
|
280
|
+
readonly tenant?: string;
|
|
281
|
+
}>;
|
|
282
|
+
};
|
|
283
|
+
/**
|
|
284
|
+
* better-supabase's `AuthorizationHooks` (`createServer(betterSupabase,
|
|
285
|
+
* { authorization })`), decided by `policy`. Every hook builds the
|
|
286
|
+
* principal's instance from the claims `claims` loads now, never from the
|
|
287
|
+
* request, and fails closed: a throw, an unknown key and `approval-required`
|
|
288
|
+
* refuse. `automation` and `delegation` are always set; `identities`,
|
|
289
|
+
* `delivery`, `approverOf`, `support` and `tickets` only with the options
|
|
290
|
+
* they read. `delegation.permissions` maps each scope to the keys whose
|
|
291
|
+
* `.scope` it is, was renamed from, or that a policy `oauthScopes` entry
|
|
292
|
+
* covers, and reads no `authorization_details`.
|
|
293
|
+
*/
|
|
294
|
+
export declare function authorizationHooks(options: AuthorizationHooksOptions): AuthorizationHooks;
|
|
295
|
+
//#endregion
|
|
296
|
+
//#region src/better-supabase/provider.d.ts
|
|
297
|
+
type AuthorizationProviderOptions = {
|
|
298
|
+
/** `permdock.manifest.json`, parsed or as JSON text, from `permdock supabase inspect --out`. */
|
|
299
|
+
readonly manifest: unknown;
|
|
300
|
+
/**
|
|
301
|
+
* `permissions.catalog.json` from `permdock catalog`. Without it the
|
|
302
|
+
* provider lists no permissions, so better-supabase refuses every key in
|
|
303
|
+
* a bucket, topic or module check.
|
|
304
|
+
*/
|
|
305
|
+
readonly catalog?: unknown;
|
|
306
|
+
/** The scope tenants are; defaults to the manifest's one root scope. */
|
|
307
|
+
readonly scope?: string;
|
|
308
|
+
/**
|
|
309
|
+
* The permission that lets a user decide a tool call waiting for
|
|
310
|
+
* approval: the `'ai-tool'` entry of `approvers` (`holder(approver)`)
|
|
311
|
+
* unless `approvers` names one. The requester is never their own approver.
|
|
312
|
+
*/
|
|
313
|
+
readonly approver?: Permission;
|
|
314
|
+
/**
|
|
315
|
+
* Who may approve each request kind, for better-supabase's `isApprover`:
|
|
316
|
+
* `'ai-tool'`, `'support-session'` or the approvals block's
|
|
317
|
+
* `'<subject type>.<action>'`, each mapped to `user()`, `holder()` or
|
|
318
|
+
* `anyOf()` approvers. A kind it does not name has no provider approver,
|
|
319
|
+
* which for tool calls and support sessions means nobody but the service
|
|
320
|
+
* role. Needs `permdock_is_approver` from `rls.approvals`.
|
|
321
|
+
*/
|
|
322
|
+
readonly approvers?: ProviderApprovers;
|
|
323
|
+
};
|
|
324
|
+
/**
|
|
325
|
+
* better-supabase's `authorization` config value, built from PermDock's
|
|
326
|
+
* manifest and catalog: the scopes, the `rls generate` helpers as SQL
|
|
327
|
+
* templates, the membership tables, suspension rows, the token hook and
|
|
328
|
+
* every catalog key with `sqlComplete` set from its `rowConditions`. A
|
|
329
|
+
* `_for` template and `permissionsFor` are set only when the manifest lists
|
|
330
|
+
* their helper, which `rls.mode: 'database'` writes; `isApprover` only with
|
|
331
|
+
* `approvers` and `permdock_is_approver`, and otherwise `canApprove` only
|
|
332
|
+
* with `approver`. `holdersOf` (`permitted_<tenant scope>_users`) and
|
|
333
|
+
* `actorMayWrite` (`permdock_actor_may_write()`) are set when the manifest
|
|
334
|
+
* lists their helper. Throws when the manifest or catalog is invalid, or when the
|
|
335
|
+
* tenant scope is ambiguous.
|
|
336
|
+
*/
|
|
337
|
+
export declare function authorizationProvider(options: AuthorizationProviderOptions): AuthorizationProvider;
|
|
123
338
|
//#endregion
|
|
124
339
|
//#region src/better-supabase/authorizer.d.ts
|
|
125
340
|
/** The table operations better-supabase's `permissions: true` resolves through `forOperation`. */
|
|
@@ -245,4 +460,116 @@ type ToolPolicy<C> = {
|
|
|
245
460
|
*/
|
|
246
461
|
export declare function toolPolicy<C>(options: ToolPolicyOptions<C>): ToolPolicy<C>;
|
|
247
462
|
//#endregion
|
|
248
|
-
|
|
463
|
+
//#region src/better-supabase/principals.d.ts
|
|
464
|
+
/**
|
|
465
|
+
* Where an identity link points: an app user, whose claims `principal`
|
|
466
|
+
* loads, or a contact the app stores itself, which must be `kind: 'contact'`.
|
|
467
|
+
*/
|
|
468
|
+
type BetterSupabaseIdentityLink = {
|
|
469
|
+
readonly user: string;
|
|
470
|
+
} | {
|
|
471
|
+
readonly contact: Principal;
|
|
472
|
+
};
|
|
473
|
+
type Maybe<T> = T | null | undefined | Promise<T | null | undefined>;
|
|
474
|
+
type PrincipalSourceOptions = {
|
|
475
|
+
/**
|
|
476
|
+
* The claims better-supabase mints for `userId` now, or `null` for a user
|
|
477
|
+
* deleted, suspended or unknown. `sqlSupportStore(…).claims`, which runs
|
|
478
|
+
* the custom access token hook, fills it.
|
|
479
|
+
*/
|
|
480
|
+
readonly claims: (userId: string, options: {
|
|
481
|
+
readonly tenant?: string;
|
|
482
|
+
}) => Maybe<Readonly<Record<string, unknown>>>;
|
|
483
|
+
/**
|
|
484
|
+
* The identity link for an email address or chat user. Only links the
|
|
485
|
+
* app created through a signed-in link flow or a verified address count.
|
|
486
|
+
* Without it the source has no `principalByIdentity`.
|
|
487
|
+
*/
|
|
488
|
+
readonly identities?: (identity: PrincipalIdentity) => Maybe<BetterSupabaseIdentityLink>;
|
|
489
|
+
/** How the claims map to a principal; the defaults of `subjectFromBetterSupabase`. */
|
|
490
|
+
readonly subject?: Omit<BetterSupabaseSubjectOptions, "apiKeys">;
|
|
491
|
+
};
|
|
492
|
+
/**
|
|
493
|
+
* A `PrincipalSource` over better-supabase: `principal(id)` maps the claims
|
|
494
|
+
* `claims` loads with `subjectFromBetterSupabase`, and `principalByIdentity`
|
|
495
|
+
* follows `identities` to a user or a contact. Claims for another user, a
|
|
496
|
+
* link to a non-contact principal and a missing link are `null`.
|
|
497
|
+
*/
|
|
498
|
+
export declare function principalSource(options: PrincipalSourceOptions): PrincipalSource;
|
|
499
|
+
//#endregion
|
|
500
|
+
//#region src/better-supabase/share-links.d.ts
|
|
501
|
+
/** The fields of better-supabase's `ResolvedShareLink` a link subject is built from. */
|
|
502
|
+
type ShareLinkRow = {
|
|
503
|
+
readonly id: string;
|
|
504
|
+
readonly organizationId: string;
|
|
505
|
+
readonly subjectType: string;
|
|
506
|
+
readonly subjectId: string;
|
|
507
|
+
readonly role: string;
|
|
508
|
+
/** Set on a link pinned to one version, which `subjectFromShareLink` refuses. */
|
|
509
|
+
readonly versionId?: string;
|
|
510
|
+
readonly expiresAt?: Instant;
|
|
511
|
+
};
|
|
512
|
+
/** better-supabase's `ShareLinks`, or anything with its `resolve`. */
|
|
513
|
+
type ShareLinkResolver = {
|
|
514
|
+
resolve(token: string): PromiseLike<{
|
|
515
|
+
readonly ok: true;
|
|
516
|
+
readonly data: ShareLinkRow | null;
|
|
517
|
+
} | {
|
|
518
|
+
readonly ok: false;
|
|
519
|
+
}>;
|
|
520
|
+
};
|
|
521
|
+
/** How links on one better-supabase subject type map to PermDock. */
|
|
522
|
+
type ShareLinkTarget = {
|
|
523
|
+
/** The resource the subject type's rows are; RLS matches it against `capability.on.resource`. */
|
|
524
|
+
readonly resource: Permission | PermissionTree;
|
|
525
|
+
/** PermDock roles for each share-link role (`{ view: ['guest'] }`). A role with no entry is refused. */
|
|
526
|
+
readonly roles: Readonly<Record<string, readonly string[]>>;
|
|
527
|
+
};
|
|
528
|
+
type ShareLinkSubjectOptions = {
|
|
529
|
+
readonly shareLinks: ShareLinkResolver;
|
|
530
|
+
/** One entry per subject type a guest page serves, keyed by better-supabase's `subjectType`. */
|
|
531
|
+
readonly links: Readonly<Record<string, ShareLinkTarget>>;
|
|
532
|
+
/** Lifetime of the subject in seconds, capped by the link's own expiry. Default 300, at most 3600. */
|
|
533
|
+
readonly ttl?: number;
|
|
534
|
+
/**
|
|
535
|
+
* The link policies of the link's organization (`row.organizationId`);
|
|
536
|
+
* every one must hold, and a throw denies. A row carries no creation
|
|
537
|
+
* time, so a `maxLifetime` rule refuses every share link.
|
|
538
|
+
*/
|
|
539
|
+
readonly linkPolicy?: (capability: Capability, row: ShareLinkRow) => LinkPolicy | readonly LinkPolicy[] | undefined | Promise<LinkPolicy | readonly LinkPolicy[] | undefined>;
|
|
540
|
+
readonly onAuth?: (event: AuthEvent) => void;
|
|
541
|
+
readonly requestId?: string;
|
|
542
|
+
readonly now?: Instant;
|
|
543
|
+
};
|
|
544
|
+
/**
|
|
545
|
+
* Resolves a better-supabase share-link token into the `link` subject it
|
|
546
|
+
* acts as, for `exchangeCapability` and `--capabilities` RLS. The row is
|
|
547
|
+
* read on every call, so a revoked or expired link stops resolving at
|
|
548
|
+
* once. An unknown token, subject type or role, a malformed row, a broken
|
|
549
|
+
* link policy, a `resolve` error and a throw are the anonymous subject. So
|
|
550
|
+
* is a link pinned to a version: a capability grants the subject's current
|
|
551
|
+
* rows, so a pinned link reads through `versions.getShared(token)` instead.
|
|
552
|
+
*/
|
|
553
|
+
export declare function subjectFromShareLink(token: string | undefined | null, options: ShareLinkSubjectOptions): Promise<Subject<CapabilityPrincipal>>;
|
|
554
|
+
//#endregion
|
|
555
|
+
//#region src/better-supabase/workflow.d.ts
|
|
556
|
+
/** Where `handlerCan` gets the request's instance, such as `permdock/server`'s `createPermDock` result. */
|
|
557
|
+
type HandlerPermDockSource = {
|
|
558
|
+
readonly getPermDock: (request: Request) => PermDock | Promise<PermDock>;
|
|
559
|
+
};
|
|
560
|
+
/**
|
|
561
|
+
* The `can` option of better-supabase's `authorizeHook`, for the caller's
|
|
562
|
+
* `permdock`: `true` only when the caller is a member of the hook's tenant
|
|
563
|
+
* and `decide` grants the permission its `hookMetadata` names there. An
|
|
564
|
+
* unknown key, `approval-required` and a throw are `false`.
|
|
565
|
+
*/
|
|
566
|
+
export declare function hookCan(permdock: PermDock): NonNullable<AuthorizeHookOptions["can"]>;
|
|
567
|
+
/**
|
|
568
|
+
* The `can` option of better-supabase's `protectWebHandler`: `undefined`
|
|
569
|
+
* (401) when the request has no signed-in principal or `getPermDock`
|
|
570
|
+
* throws, otherwise whether `decide` grants the permission in the request's
|
|
571
|
+
* active tenant. An unknown key and `approval-required` are `false` (403).
|
|
572
|
+
*/
|
|
573
|
+
export declare function handlerCan(source: HandlerPermDockSource): ProtectWebHandlerOptions["can"];
|
|
574
|
+
//#endregion
|
|
575
|
+
export type { AccessPolicyOptions, AccessReviewApplierOptions, AccessReviewApplyFailure, AccessReviewApplyResult, ApiKeySession, ApiKeySessionOptions, ApiKeyVerifierOptions, AuthorizationHooksOptions, AuthorizationProviderOptions, AuthorizerOperation, AuthorizerOptions, BetterSupabaseIdentityLink, BetterSupabaseSubjectOptions, BucketAccess, CredentialGuardOptions, HandlerPermDockSource, McpToolDecision, McpToolRef, PendingSupportSession, PrincipalSourceOptions, ProviderApprovers, ServiceRoles, ShareLinkResolver, ShareLinkRow, ShareLinkSubjectOptions, ShareLinkTarget, SubscriberPolicyEvent, SubscriberPolicyOptions, SupabasePrincipal, SupportPolicyOptions, ToolPolicy, ToolPolicyOptions, TopicAccess };
|