permdock 0.4.0 → 0.5.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-B4R5fnMU.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-Djo_PyZc.d.ts +57 -0
- package/dist/approvals/index.d.ts +5 -3
- package/dist/approvals/index.js +8 -5
- package/dist/approvals-DJ6Yd5z1.js +995 -0
- package/dist/arazzo-B6lebmiQ.js +36 -0
- package/dist/{arazzo-C4BcskbX.js → arazzo-BWhNF-k0.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-Dg8XsRaO.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-BMZPIVUM.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-BzqG8SMb.d.ts → bind--9EFVYWF.d.ts} +12 -10
- package/dist/{bind-kk-uyCwH.js → bind-CZzhx-Vj.js} +14 -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-BMnAudHn.js} +4 -3
- package/dist/{canonical-json-CFKyFOke.js → canonical-json-BC8_nMTw.js} +5 -3
- package/dist/{capability-CksyCWDH.d.ts → capability-BSslw1QV.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-tZUyOfOv.js → catalog-BECMPrwc.js} +51 -6
- package/dist/catalog-DjhMYYCq.js +1 -0
- package/dist/catalog-R_A__RsH.js +52 -0
- package/dist/{catalog-doc-DWtg0gGR.js → catalog-doc-C9wjsfNY.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-CIoHNevm.js +87 -0
- package/dist/codemod-Bmj9dWMH.js +37 -0
- package/dist/codemod-Cxvvc70T.js +2084 -0
- package/dist/{collect-2SrB7lfk.js → collect-CrZJJnEF.js} +75 -11
- package/dist/collect-DloHbDVa.js +55 -0
- package/dist/collect-FlXJlhus.js +1 -0
- 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-CcEu2ZQ1.js → compile-CMqMx_IN.js} +11 -8
- package/dist/{compile-CtTP7eur.d.ts → compile-Ckm2HqBZ.d.ts} +5 -3
- package/dist/completion-BqhRBJD8.js +143 -0
- package/dist/config-B46rm9sc.js +26 -0
- package/dist/{config-BIjREpyE.js → config-bs_kZeYq.js} +12 -7
- package/dist/{config-report--Xb9APJS.js → config-report-DUgj62Ai.js} +15 -5
- package/dist/{connection-DUsczpB5.js → connection-DjhIJSs2.js} +6 -5
- package/dist/{context-DieZVJXu.js → context-bbFHR-0D.js} +2 -2
- package/dist/convex/index.d.ts +11 -10
- package/dist/convex/index.js +6 -4
- package/dist/create-0VZ7Pdiu.d.ts +107 -0
- package/dist/create-BDS7wc3y.d.ts +138 -0
- package/dist/create-BFfm17UA.d.ts +110 -0
- package/dist/create-BWRSXgOF.js +403 -0
- package/dist/create-C3b4B5eF.js +130 -0
- package/dist/{create-BBO24vj6.js → create-DnrmLnLW.js} +31 -32
- package/dist/{credential-kue0qpbm.js → credential-DM2um3ha.js} +152 -31
- package/dist/credentials-DPyHmYz5.js +74 -0
- package/dist/delegation-DaXVdDhM.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-D8jDHgsl.d.ts} +5 -5
- package/dist/{describe-C3ldA9os.d.ts → describe-BZUsixiL.d.ts} +2 -2
- package/dist/{describe-Cgkp7eP0.js → describe-BybMRY7A.js} +6 -2
- package/dist/device-BARQ8eYG.js +193 -0
- package/dist/diff-CxZo9pTq.js +37 -0
- package/dist/{diff-rpqoe7Ag.js → diff-DCePiN6M.js} +60 -54
- package/dist/doctor-CxiwSfqH.js +44 -0
- package/dist/{doctor-owlv6ddh.js → doctor-DFjUxf2f.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-OD_4c__H.d.ts → errors-C2PXIv4c.d.ts} +2 -2
- package/dist/errors-CWTY6uih.js +143 -0
- package/dist/evaluate-_R8QkWaf.js +1732 -0
- package/dist/evaluations-16UqqQ6W.d.ts +32 -0
- package/dist/{evaluations-C9YJsv3H.js → evaluations-DZ2CbV5k.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-g0ypLkID.js +120 -0
- package/dist/fetch-adapter-qKJBuRqy.d.ts +31 -0
- package/dist/fields-D9tPVUUS.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-D2lZt4Dd.js} +55 -52
- package/dist/{grantee-CXY-0C87.js → grantee-Cn1HyUsI.js} +3 -3
- package/dist/{grantee-conditions-MQs5NIuX.js → grantee-conditions-CcXf8hMM.js} +4 -3
- package/dist/{grantee-match-fxYp9Nmt.js → grantee-match-DHArqY82.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-DTcZOzhF.js} +45 -38
- package/dist/hono/index.d.ts +12 -9
- package/dist/hono/index.js +13 -12
- package/dist/hosted-BZIAYvon.js +315 -0
- package/dist/hosted-DBDX0M-P.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-DMmOG27O.js} +190 -53
- package/dist/index-BcHcPyIo.d.ts +110 -0
- package/dist/index-CaxrMD1A.d.ts +1 -0
- package/dist/index-Chrs5fQ-.d.ts +210 -0
- package/dist/index-CxGUswIC.d.ts +431 -0
- package/dist/index-D8EovfsP.d.ts +91 -0
- package/dist/{index-UdVQgq48.d.ts → index-DOVf7RJv.d.ts} +431 -81
- package/dist/{index-BwMe94Xq.d.ts → index-SGdIQyzc.d.ts} +34 -16
- 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-Omfd793B.d.ts} +2 -2
- package/dist/instance-snapshot-Cxq4ygFc.js +600 -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-5JatXyND.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-CtKR3GXL.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-TCAdw-eW.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-BShP7Vf4.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-BJdBmYDG.js → openapi-DTaEmTSW.js} +10 -9
- package/dist/openapi-ahr8rHu3.js +138 -0
- package/dist/operation-findings-DgATDpvh.js +36 -0
- package/dist/operations-CxybZErY.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-Dyw8fyPF.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-BatFgAA4.js} +1698 -869
- 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-C-q02Pal.js → parse-local-manifest-CVSs6J9I.js} +1 -1
- package/dist/{parse-local-manifest-DvYUR0QL.d.ts → parse-local-manifest-DgqtruPn.d.ts} +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-B9JxkBwC.js +868 -0
- package/dist/permdock-D7eeLJER.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-CZKiUfFM.js} +4 -3
- package/dist/{permissions-COH-KRgT.d.ts → permissions-oEWfl-kl.d.ts} +1 -2
- package/dist/policies-CO1oOymN.js +295 -0
- package/dist/{policy-ur0BBK_e.d.ts → policy-Czo4n3Hs.d.ts} +2 -2
- package/dist/{hosted-CBHgkzDl.js → policy-DLZJ5gAp.js} +17 -273
- package/dist/policy-from-catalog-DzhEc3Y9.js +450 -0
- package/dist/policy-module-CTlwMvLI.js +89 -0
- package/dist/{policy-types-sp9P1iIV.d.ts → policy-types-DzwivBgR.d.ts} +434 -631
- package/dist/postgrest-CW0IqC-U.js +566 -0
- package/dist/postgrest-NUqZT-RB.d.ts +100 -0
- package/dist/powersync-BHfuehf3.js +62 -0
- package/dist/powersync-CbzkqL_M.js +1 -0
- package/dist/{powersync-cZe4kzhL.js → powersync-bYUDLOAO.js} +23 -24
- 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-DXlt-vks.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-B3_P7xuw.d.ts → protected-DEPHc2xV.d.ts} +16 -8
- package/dist/{protected-BN7BUdY1.js → protected-DfjY5mLA.js} +21 -4
- package/dist/{provider-Bi-0HNL3.js → provider-CC-u3bYP.js} +2 -2
- package/dist/{provider-kwHC9CZD.d.ts → provider-DMVt6yYn.d.ts} +1 -1
- package/dist/{provider-store-Ctt-81Ni.js → provider-store-B5Yrkhzr.js} +2 -2
- package/dist/pull-BgIfno6w.js +256 -0
- package/dist/pull-ByOks_Tg.js +1 -0
- package/dist/push-CmFVBOeI.js +116 -0
- package/dist/pushed-policy-BImMTTIM.d.ts +57 -0
- package/dist/pushed-policy-DobP7AHI.js +238 -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 +24 -22
- 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-D7iKcLFe.d.ts} +1 -1
- package/dist/{replay-BsOyTrdV.js → replay-Du1tJjG7.js} +2 -1
- package/dist/{request-context-BVM7aWNs.js → request-context-BTRTG7OT.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-BA8an5Ap.js +336 -0
- package/dist/{rls-BEktUaqg.js → rls-j6t43t7n.js} +287 -689
- package/dist/{role-builder-B4GbKM-i.js → role-builder-CXbis5-X.js} +14 -207
- package/dist/{rpc-nYC3cR_u.js → rpc-aPyNi6tA.js} +7 -7
- package/dist/run-CNsApDpd.js +1 -0
- package/dist/run-DOfMtc9V.js +723 -0
- package/dist/run-ticket-BjhTOi6u.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-FO-Q8oj0.js} +16 -14
- package/dist/scan-BOI5tJ-6.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-DqCT4CgZ.js +453 -0
- package/dist/{server-types-DdqBwZN_.d.ts → server-types-BLd4MnBX.d.ts} +51 -68
- package/dist/{sha256-BO0swRXL.js → sha256-D9ihqmvd.js} +8 -1
- package/dist/{shared-1uhI-e-b.js → shared-CD11nBbC.js} +18 -8
- package/dist/{shared-JhMeOsDF.js → shared-DvvFzYXe.js} +8 -9
- package/dist/signals-D3NcTKUS.js +32 -0
- package/dist/sink-BEZSlMS_.js +957 -0
- package/dist/sink-Bj_lDUDq.d.ts +225 -0
- package/dist/{skills-BZdRQkxs.js → skills-B6lVdD_W.js} +13 -6
- package/dist/skills-CTYwkl44.js +51 -0
- package/dist/snapshot-CXUWfsNy.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-DqK9eDmM.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-BV9j0DeZ.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-DLfUWFAI.js +1851 -0
- package/dist/ssf/index.d.ts +4 -4
- package/dist/ssf/index.js +384 -47
- package/dist/standard-webhooks-6lg8v_is.d.ts +88 -0
- package/dist/standard-webhooks-DgFFD-Ga.js +228 -0
- package/dist/storage-C2bWdvJH.js +132 -0
- package/dist/{store-ILkLUj_o.js → store-4u_hxjWa.js} +40 -53
- package/dist/{store-options-CbUHDoSe.js → store-options-BqEakYRa.js} +26 -21
- package/dist/{stores-BHXdSbw9.js → stores-BbsD4fAR.js} +2 -2
- package/dist/{stores-Cxz_80g-.d.ts → stores-ClZUgeoP.d.ts} +7 -8
- package/dist/{stream-Dwsg6WwE.d.ts → stream-7-xmnf3U.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-9pqI57pW.js +92 -0
- package/dist/{supabase-C1TWlnYt.js → supabase-Dxlp8A94.js} +98 -205
- package/dist/supabase-hook-CXcGpHqq.js +1 -0
- package/dist/{supabase-hook-Cva3ikXz.js → supabase-hook-DdDQhMlw.js} +951 -60
- 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-7rJVLWe5.d.ts → types-5Ut_pbKy.d.ts} +61 -11
- package/dist/{store-9KO4BlkB.d.ts → types-BNORmDM8.d.ts} +100 -75
- package/dist/types-BjV-fqcA.d.ts +57 -0
- package/dist/{types-CUcFZfpU.d.ts → types-BqAKcRNW.d.ts} +2 -1
- package/dist/types-C8-KNsFf.d.ts +107 -0
- package/dist/{types-Br9IXUBG.d.ts → types-CCpc2Dcv.d.ts} +77 -17
- package/dist/{types-DpWfQdSh.d.ts → types-CZTnPFzM.d.ts} +46 -11
- package/dist/{types-CqrjB9o6.d.ts → types-CdlxsYQh.d.ts} +23 -11
- package/dist/{types-CIlTojhq.d.ts → types-ClZaWzfb.d.ts} +9 -6
- package/dist/types-DX0LaKTb.d.ts +157 -0
- package/dist/types-DiQjupG2.d.ts +332 -0
- package/dist/types-DqzsnlSA.js +67 -0
- package/dist/types-_sHy8BQf.d.ts +65 -0
- package/dist/{types-ByUo56un.d.ts → types-fbZ7JEXr.d.ts} +23 -22
- package/dist/{types-DHrmBJLH.d.ts → types-tIgIeIKJ.d.ts} +7 -7
- package/dist/unplugin/index.d.ts +1 -1
- package/dist/unplugin/index.js +2 -2
- package/dist/usage-CHOtwL19.js +1 -0
- package/dist/usage-DHtE8j4E.js +32 -0
- package/dist/{usage-CG9nOYZw.js → usage-T5mXq98v.js} +54 -11
- package/dist/{validation-error-BSSw0l_8.d.ts → validation-error-Bg5Tpluk.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-DbCL9bnB.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-D6lPdb4Z.d.ts} +65 -2
- package/dist/vue/index.d.ts +9 -10
- package/dist/vue/index.js +8 -8
- package/dist/waiter-BGUtGYoU.js +67 -0
- package/dist/waiter-CKy4MQSY.d.ts +36 -0
- package/dist/watch-Cb-NcaUw.js +1 -0
- package/dist/{watch-zeucB7eF.js → watch-CszoTJMq.js} +44 -5
- package/dist/webmcp/index.d.ts +2 -2
- package/dist/webmcp/index.js +3 -3
- package/dist/where-scope-Dv-WTP-w.js +306 -0
- package/dist/who-can-D0QoYbEb.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-Bd1Tejur.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 +9 -8
- 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 +5 -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/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
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { fn as Approver } from "./policy-types-DzwivBgR.js";
|
|
2
|
+
//#region src/approvals/access-reviews/types.d.ts
|
|
3
|
+
type AccessReviewStatus = "open" | "closed";
|
|
4
|
+
type AccessReviewItemStatus = "pending" | "kept" | "revoked";
|
|
5
|
+
/**
|
|
6
|
+
* Access review v1: who holds `permissions` in one tenant, and who may
|
|
7
|
+
* confirm or revoke each holding. PermDock records the reviewer's decision
|
|
8
|
+
* and never changes the role or membership itself.
|
|
9
|
+
*/
|
|
10
|
+
type AccessReview = {
|
|
11
|
+
readonly v: 1;
|
|
12
|
+
readonly id: string;
|
|
13
|
+
readonly tenant: string;
|
|
14
|
+
readonly permissions: readonly string[];
|
|
15
|
+
readonly reviewers: Approver | readonly Approver[];
|
|
16
|
+
readonly createdBy: string;
|
|
17
|
+
readonly createdAt: string;
|
|
18
|
+
readonly dueAt: string;
|
|
19
|
+
readonly status: AccessReviewStatus;
|
|
20
|
+
/** `false` when the population can omit a holder, such as a global role. */
|
|
21
|
+
readonly complete: boolean;
|
|
22
|
+
};
|
|
23
|
+
/** One holding in a review. `via` names the roles the population attributed it to. */
|
|
24
|
+
type AccessReviewItem = {
|
|
25
|
+
readonly v: 1;
|
|
26
|
+
readonly id: string;
|
|
27
|
+
readonly review: string;
|
|
28
|
+
readonly principal: string;
|
|
29
|
+
readonly permission: string;
|
|
30
|
+
readonly via: readonly string[];
|
|
31
|
+
readonly status: AccessReviewItemStatus;
|
|
32
|
+
readonly decidedBy?: string;
|
|
33
|
+
readonly decidedAt?: string;
|
|
34
|
+
readonly note?: string;
|
|
35
|
+
/** Set by the application after it revoked the holding at its source. */
|
|
36
|
+
readonly appliedAt?: string;
|
|
37
|
+
};
|
|
38
|
+
type AccessReviewItemQuery = {
|
|
39
|
+
readonly review: string;
|
|
40
|
+
readonly status?: AccessReviewItemStatus;
|
|
41
|
+
readonly limit?: number;
|
|
42
|
+
readonly cursor?: string;
|
|
43
|
+
};
|
|
44
|
+
type AccessReviewItemPage = {
|
|
45
|
+
readonly items: readonly AccessReviewItem[];
|
|
46
|
+
readonly next?: string;
|
|
47
|
+
};
|
|
48
|
+
type AccessReviewDecision = {
|
|
49
|
+
readonly status: "kept" | "revoked";
|
|
50
|
+
readonly decidedBy: string;
|
|
51
|
+
readonly decidedAt: string;
|
|
52
|
+
readonly note?: string;
|
|
53
|
+
};
|
|
54
|
+
type AccessReviewStore = {
|
|
55
|
+
/** Names the implementation in errors and events. */
|
|
56
|
+
readonly name?: string;
|
|
57
|
+
create(review: AccessReview, items: readonly AccessReviewItem[]): Promise<void> | void;
|
|
58
|
+
get(id: string): Promise<AccessReview | null> | AccessReview | null;
|
|
59
|
+
items(query: AccessReviewItemQuery): Promise<AccessReviewItemPage> | AccessReviewItemPage;
|
|
60
|
+
decide(reviewId: string, itemId: string, decision: AccessReviewDecision): Promise<AccessReviewItem> | AccessReviewItem;
|
|
61
|
+
markApplied(reviewId: string, itemId: string, at: string): Promise<AccessReviewItem> | AccessReviewItem;
|
|
62
|
+
close(id: string): Promise<AccessReview> | AccessReview;
|
|
63
|
+
};
|
|
64
|
+
//#endregion
|
|
65
|
+
export { AccessReviewItemQuery as a, AccessReviewStore as c, AccessReviewItemPage as i, AccessReviewDecision as n, AccessReviewItemStatus as o, AccessReviewItem as r, AccessReviewStatus as s, AccessReview as t };
|
|
@@ -1,26 +1,18 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { Mn as ApprovalRequiredDecision, Nn as Decision, Vt as Snapshot, dt as TokenVerifier, zn as GrantedDecision } from "./policy-types-DzwivBgR.js";
|
|
2
|
+
import { w as Permission } from "./vocabulary-D6lPdb4Z.js";
|
|
3
|
+
import { r as PermDock } from "./permdock-D7eeLJER.js";
|
|
3
4
|
import { t as PermissionBoundaryState } from "./boundary-BmHxVH1J.js";
|
|
4
|
-
import { l as PermissionState,
|
|
5
|
+
import { l as PermissionState, m as ClientStore, u as ProviderOptionsBase } from "./types-BNORmDM8.js";
|
|
5
6
|
import { Snippet } from "svelte";
|
|
6
7
|
import { Readable } from "svelte/store";
|
|
7
|
-
//#region src/svelte/boundary.d.ts
|
|
8
|
-
type PermissionBoundaryProps = {
|
|
9
|
-
readonly children?: Snippet;
|
|
10
|
-
/** Rendered in place of the children when one throws `PermDockDeniedError`. */
|
|
11
|
-
readonly denied?: Snippet<[PermissionBoundaryState]>;
|
|
12
|
-
/** Rendered for `PermDockApprovalRequiredError`; defaults to `denied`. */
|
|
13
|
-
readonly approval?: Snippet<[PermissionBoundaryState]>;
|
|
14
|
-
};
|
|
15
|
-
//#endregion
|
|
16
8
|
//#region src/client/views.d.ts
|
|
17
9
|
/**
|
|
18
10
|
* What `Protected` renders: `pending` while an endpoint answer is in flight,
|
|
19
|
-
* `approval` for an approval-required decision, `
|
|
11
|
+
* `approval` for an approval-required decision, `denied` for any other
|
|
20
12
|
* denial.
|
|
21
13
|
*/
|
|
22
14
|
type ProtectedView = (PermissionState & {
|
|
23
|
-
readonly slot: "pending" | "
|
|
15
|
+
readonly slot: "pending" | "denied";
|
|
24
16
|
}) | {
|
|
25
17
|
readonly allowed: false;
|
|
26
18
|
readonly status: PermissionState["status"];
|
|
@@ -35,18 +27,27 @@ type ProtectedView = (PermissionState & {
|
|
|
35
27
|
/** Provider-wide content for the `Protected` slots a component leaves out. */
|
|
36
28
|
type SlotDefaults<P, F, A = F> = {
|
|
37
29
|
readonly pending?: P;
|
|
38
|
-
readonly
|
|
30
|
+
readonly denied?: F;
|
|
39
31
|
readonly approval?: A;
|
|
40
32
|
};
|
|
41
33
|
/**
|
|
42
34
|
* The content `Protected` renders for a non-default slot. Its own prop wins
|
|
43
|
-
* over the provider default; `approval` falls back to `
|
|
35
|
+
* over the provider default; `approval` falls back to `denied`, first the
|
|
44
36
|
* component's, then the provider's.
|
|
45
37
|
*/
|
|
46
38
|
declare function slotContent<P, F, A>(slot: "pending", own: SlotDefaults<P, F, A>, defaults: SlotDefaults<P, F, A> | undefined): P | undefined;
|
|
47
|
-
declare function slotContent<P, F, A>(slot: "
|
|
39
|
+
declare function slotContent<P, F, A>(slot: "denied", own: SlotDefaults<P, F, A>, defaults: SlotDefaults<P, F, A> | undefined): F | undefined;
|
|
48
40
|
declare function slotContent<P, F, A>(slot: "approval", own: SlotDefaults<P, F, A>, defaults: SlotDefaults<P, F, A> | undefined): F | A | undefined;
|
|
49
41
|
//#endregion
|
|
42
|
+
//#region src/svelte/boundary.d.ts
|
|
43
|
+
type PermissionBoundaryProps = {
|
|
44
|
+
readonly children?: Snippet;
|
|
45
|
+
/** Rendered in place of the children when one throws `PermDockDeniedError`. */
|
|
46
|
+
readonly denied?: Snippet<[PermissionBoundaryState]>;
|
|
47
|
+
/** Rendered for `PermDockApprovalRequiredError`; defaults to `denied`. */
|
|
48
|
+
readonly approval?: Snippet<[PermissionBoundaryState]>;
|
|
49
|
+
};
|
|
50
|
+
//#endregion
|
|
50
51
|
//#region src/svelte/protected.d.ts
|
|
51
52
|
type ProtectedProps = {
|
|
52
53
|
readonly permission: Permission;
|
|
@@ -54,8 +55,8 @@ type ProtectedProps = {
|
|
|
54
55
|
readonly tenant?: string;
|
|
55
56
|
readonly children?: Snippet<[GrantedDecision]>;
|
|
56
57
|
readonly pending?: Snippet;
|
|
57
|
-
readonly
|
|
58
|
-
/** Rendered for an approval-required decision; defaults to `
|
|
58
|
+
readonly denied?: Snippet<[Decision]>;
|
|
59
|
+
/** Rendered for an approval-required decision; defaults to `denied`. */
|
|
59
60
|
readonly approval?: Snippet<[ApprovalRequiredDecision]>;
|
|
60
61
|
};
|
|
61
62
|
/** The instance for `tenant`, built once per store change rather than once per check. */
|
|
@@ -63,7 +64,7 @@ declare function scopedFor(store: ClientStore, tenant: string | undefined, _gene
|
|
|
63
64
|
declare function viewFor(store: ClientStore, reference: Permission, data: unknown, scoped: PermDock | undefined, _generation?: number): ProtectedView;
|
|
64
65
|
//#endregion
|
|
65
66
|
//#region src/svelte/types.d.ts
|
|
66
|
-
type
|
|
67
|
+
type SveltePermDockOptions = ProviderOptionsBase & {
|
|
67
68
|
/**
|
|
68
69
|
* A getter (`() => data.snapshot`) or a readable store re-hydrates the
|
|
69
70
|
* store when it changes; a promise keeps the store `pending` until it
|
|
@@ -81,8 +82,8 @@ type PermDockSvelteOptions = ProviderOptionsBase & {
|
|
|
81
82
|
/** Snippets for the `<Protected>` slots a component leaves out. */
|
|
82
83
|
type PermDockDefaults = {
|
|
83
84
|
readonly pending?: Snippet;
|
|
84
|
-
readonly
|
|
85
|
+
readonly denied?: Snippet<[Decision]>;
|
|
85
86
|
readonly approval?: Snippet<[ApprovalRequiredDecision]>;
|
|
86
87
|
};
|
|
87
88
|
//#endregion
|
|
88
|
-
export { viewFor as a, scopedFor as i,
|
|
89
|
+
export { viewFor as a, scopedFor as i, SveltePermDockOptions as n, PermissionBoundaryProps as o, ProtectedProps as r, slotContent as s, PermDockDefaults as t };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { n as DescribeMessages } from "./describe-
|
|
4
|
-
import {
|
|
1
|
+
import { Mn as ApprovalRequiredDecision, Nn as Decision, Vt as Snapshot, dt as TokenVerifier, zn as GrantedDecision } from "./policy-types-DzwivBgR.js";
|
|
2
|
+
import { w as Permission } from "./vocabulary-D6lPdb4Z.js";
|
|
3
|
+
import { n as DescribeMessages } from "./describe-BZUsixiL.js";
|
|
4
|
+
import { h as ClientStoreOptions } from "./types-BNORmDM8.js";
|
|
5
5
|
import { ReactNode } from "react";
|
|
6
6
|
//#region src/react/types.d.ts
|
|
7
7
|
type PermDockProviderProps = ({
|
|
@@ -49,7 +49,7 @@ type PermDockProviderProps = ({
|
|
|
49
49
|
/** Provider-wide content for the `<Protected>` slots a component leaves out. */
|
|
50
50
|
type PermDockDefaults = {
|
|
51
51
|
readonly pending?: ReactNode;
|
|
52
|
-
readonly
|
|
52
|
+
readonly denied?: ReactNode | ((decision: Decision) => ReactNode);
|
|
53
53
|
readonly approval?: ReactNode | ((decision: ApprovalRequiredDecision) => ReactNode);
|
|
54
54
|
};
|
|
55
55
|
type ProtectedProps = {
|
|
@@ -57,8 +57,8 @@ type ProtectedProps = {
|
|
|
57
57
|
readonly data?: unknown;
|
|
58
58
|
readonly tenant?: string;
|
|
59
59
|
readonly pending?: ReactNode;
|
|
60
|
-
readonly
|
|
61
|
-
/** Rendered for an approval-required decision; defaults to `
|
|
60
|
+
readonly denied?: ReactNode | ((decision: Decision) => ReactNode);
|
|
61
|
+
/** Rendered for an approval-required decision; defaults to `denied`. */
|
|
62
62
|
readonly approval?: ReactNode | ((decision: ApprovalRequiredDecision) => ReactNode);
|
|
63
63
|
readonly children: ReactNode | ((decision: GrantedDecision) => ReactNode);
|
|
64
64
|
};
|
package/dist/unplugin/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as PermDockPluginOptions } from "../types-
|
|
1
|
+
import { a as PermDockPluginOptions } from "../types-5Ut_pbKy.js";
|
|
2
2
|
import { createUnplugin } from "unplugin";
|
|
3
3
|
//#region src/unplugin/index.d.ts
|
|
4
4
|
type CreateUnplugin = typeof createUnplugin<PermDockPluginOptions | undefined>;
|
package/dist/unplugin/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { n as createCollectScheduler, r as report } from "../watch-
|
|
2
|
-
import {
|
|
1
|
+
import { n as createCollectScheduler, r as report } from "../watch-CszoTJMq.js";
|
|
2
|
+
import { r as peerHint } from "../peer-C8swJ2GH.js";
|
|
3
3
|
import { createRequire } from "node:module";
|
|
4
4
|
//#region src/unplugin/index.ts
|
|
5
5
|
function loadCreateUnplugin() {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { t as runUsage } from "./usage-T5mXq98v.js";
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { t as defineLeaf } from "./command-L8EstFNm.js";
|
|
2
|
+
import { a as failOnFlag } from "./flags-C3DktBDY.js";
|
|
3
|
+
//#region src/cli/commands/usage.ts
|
|
4
|
+
const usage = defineLeaf({
|
|
5
|
+
flags: {
|
|
6
|
+
...failOnFlag,
|
|
7
|
+
ignore: {
|
|
8
|
+
type: "string",
|
|
9
|
+
repeatable: true,
|
|
10
|
+
description: "Permission keys or globs to skip",
|
|
11
|
+
valueHint: "glob"
|
|
12
|
+
},
|
|
13
|
+
"dynamic-as-used": {
|
|
14
|
+
type: "boolean",
|
|
15
|
+
description: "Count computed permission references as uses"
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
async run(ctx, { flags }) {
|
|
19
|
+
return (await import("./usage-CHOtwL19.js")).runUsage({
|
|
20
|
+
cwd: ctx.cwd,
|
|
21
|
+
config: ctx.config,
|
|
22
|
+
ignore: flags.ignore,
|
|
23
|
+
strict: flags["fail-on"] === "warning",
|
|
24
|
+
json: ctx.json,
|
|
25
|
+
dynamicAsUsed: flags["dynamic-as-used"],
|
|
26
|
+
now: ctx.now,
|
|
27
|
+
io: ctx.io
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
//#endregion
|
|
32
|
+
export { usage };
|
|
@@ -1,10 +1,13 @@
|
|
|
1
|
-
import { a as getResource } from "./permission-registry-
|
|
2
|
-
import {
|
|
1
|
+
import { a as getResource } from "./permission-registry-Br4jSNVi.js";
|
|
2
|
+
import { u as usageResult } from "./errors-CWTY6uih.js";
|
|
3
3
|
import { a as rel, r as listSourceFiles } from "./files-D_JIzUrP.js";
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { a as loadModule, n as asPolicy, s as pickNamed } from "./load-
|
|
7
|
-
import { r as runCollect } from "./collect-
|
|
4
|
+
import { o as USAGE_REPORT_SCHEMA } from "./version-CEbQ5UeM.js";
|
|
5
|
+
import { s as jsonSchemaOf } from "./catalog-doc-C9wjsfNY.js";
|
|
6
|
+
import { a as loadModule, n as asPolicy, s as pickNamed } from "./load-DFS_ry0W.js";
|
|
7
|
+
import { r as runCollect } from "./collect-CrZJJnEF.js";
|
|
8
|
+
import { t as beforeFirst } from "./text-BMFRfBqc.js";
|
|
9
|
+
import { t as DOCS_BASE } from "./manifest-CtKR3GXL.js";
|
|
10
|
+
import { r as findingOf } from "./output-Dyw8fyPF.js";
|
|
8
11
|
import { existsSync, readFileSync, realpathSync } from "node:fs";
|
|
9
12
|
import { dirname, resolve } from "node:path";
|
|
10
13
|
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
@@ -15,20 +18,26 @@ import { isBuiltin } from "node:module";
|
|
|
15
18
|
/** Entries a client file must not import; `tests/cli/doctor-entries.test.ts` keeps it in step with `exports`. */
|
|
16
19
|
const SERVER_SPECIFIERS = [
|
|
17
20
|
"permdock/a2a",
|
|
21
|
+
"permdock/agent",
|
|
18
22
|
"permdock/ai-sdk",
|
|
19
23
|
"permdock/approvals",
|
|
24
|
+
"permdock/astro",
|
|
20
25
|
"permdock/authzen",
|
|
21
26
|
"permdock/better-auth",
|
|
22
27
|
"permdock/better-supabase",
|
|
28
|
+
"permdock/chat",
|
|
29
|
+
"permdock/chat-sdk",
|
|
23
30
|
"permdock/claude-agent",
|
|
24
31
|
"permdock/clerk",
|
|
25
32
|
"permdock/cloud",
|
|
26
33
|
"permdock/convex",
|
|
34
|
+
"permdock/delivery",
|
|
27
35
|
"permdock/drizzle",
|
|
28
36
|
"permdock/elysia",
|
|
29
37
|
"permdock/eve",
|
|
30
38
|
"permdock/express",
|
|
31
39
|
"permdock/fastify",
|
|
40
|
+
"permdock/h3",
|
|
32
41
|
"permdock/hono",
|
|
33
42
|
"permdock/jwt",
|
|
34
43
|
"permdock/kysely",
|
|
@@ -42,24 +51,35 @@ const SERVER_SPECIFIERS = [
|
|
|
42
51
|
"permdock/otel",
|
|
43
52
|
"permdock/pdp",
|
|
44
53
|
"permdock/prisma",
|
|
54
|
+
"permdock/resend",
|
|
45
55
|
"permdock/scim",
|
|
46
56
|
"permdock/server",
|
|
57
|
+
"permdock/solid-start",
|
|
47
58
|
"permdock/ssf",
|
|
48
59
|
"permdock/supabase",
|
|
49
60
|
"permdock/supabase/middleware",
|
|
61
|
+
"permdock/sveltekit",
|
|
62
|
+
"permdock/tanstack-start",
|
|
50
63
|
"permdock/terminal",
|
|
51
|
-
"permdock/trpc"
|
|
64
|
+
"permdock/trpc",
|
|
65
|
+
"permdock/workflow",
|
|
66
|
+
"permdock/workflow-sdk"
|
|
52
67
|
];
|
|
53
68
|
/** Entries that feed request, tool or model data into a check. */
|
|
54
69
|
const ADAPTER_SPECIFIERS = [
|
|
55
70
|
"permdock/a2a",
|
|
71
|
+
"permdock/agent",
|
|
56
72
|
"permdock/ai-sdk",
|
|
73
|
+
"permdock/astro",
|
|
57
74
|
"permdock/authzen",
|
|
75
|
+
"permdock/chat",
|
|
76
|
+
"permdock/chat-sdk",
|
|
58
77
|
"permdock/claude-agent",
|
|
59
78
|
"permdock/elysia",
|
|
60
79
|
"permdock/eve",
|
|
61
80
|
"permdock/express",
|
|
62
81
|
"permdock/fastify",
|
|
82
|
+
"permdock/h3",
|
|
63
83
|
"permdock/hono",
|
|
64
84
|
"permdock/mcp",
|
|
65
85
|
"permdock/nest",
|
|
@@ -68,7 +88,10 @@ const ADAPTER_SPECIFIERS = [
|
|
|
68
88
|
"permdock/openai",
|
|
69
89
|
"permdock/orpc",
|
|
70
90
|
"permdock/server",
|
|
91
|
+
"permdock/solid-start",
|
|
71
92
|
"permdock/supabase/middleware",
|
|
93
|
+
"permdock/sveltekit",
|
|
94
|
+
"permdock/tanstack-start",
|
|
72
95
|
"permdock/terminal",
|
|
73
96
|
"permdock/trpc",
|
|
74
97
|
"permdock/webmcp"
|
|
@@ -241,6 +264,12 @@ function stringValue(node) {
|
|
|
241
264
|
if (value?.type === "Literal") return typeof value.value === "string" ? value.value : void 0;
|
|
242
265
|
return value?.type === "TemplateLiteral" ? value.quasis[0]?.value.cooked ?? void 0 : void 0;
|
|
243
266
|
}
|
|
267
|
+
/** Their `jwks` holds Standard Webhooks `v1a` keys, not a token issuer's. */
|
|
268
|
+
const WEBHOOK_VERIFIERS = /* @__PURE__ */ new Set([
|
|
269
|
+
"cloudApprovalWaiter",
|
|
270
|
+
"verifyWebhook",
|
|
271
|
+
"webhookVerifier"
|
|
272
|
+
]);
|
|
244
273
|
function isPermDockSpecifier(value) {
|
|
245
274
|
return value === "permdock" || value.startsWith("permdock/");
|
|
246
275
|
}
|
|
@@ -254,7 +283,8 @@ function permdockOptionObjects(source) {
|
|
|
254
283
|
ImportDeclaration(node) {
|
|
255
284
|
if (node.importKind === "type" || !isPermDockSpecifier(node.source.value)) return;
|
|
256
285
|
for (const specifier of node.specifiers) if (specifier.type === "ImportNamespaceSpecifier") namespaces.add(specifier.local.name);
|
|
257
|
-
else if (specifier.type === "ImportDefaultSpecifier"
|
|
286
|
+
else if (specifier.type === "ImportDefaultSpecifier") functions.add(specifier.local.name);
|
|
287
|
+
else if (specifier.importKind !== "type" && !WEBHOOK_VERIFIERS.has(specifier.imported.type === "Identifier" ? specifier.imported.name : specifier.imported.value)) functions.add(specifier.local.name);
|
|
258
288
|
},
|
|
259
289
|
VariableDeclarator(node) {
|
|
260
290
|
const init = unwrapped(node.init);
|
|
@@ -373,7 +403,7 @@ function pd038(sources, tenantClaim, fallback) {
|
|
|
373
403
|
code: "PD038",
|
|
374
404
|
severity: "warning",
|
|
375
405
|
message: `${source.file}:${line} reads the tenant from '${read}', but rls.tenantClaim is '${tenantClaim}'`,
|
|
376
|
-
fix: `pass tenant: '${tenantClaim}' or set rls.tenantClaim to '${read}'`
|
|
406
|
+
fix: `pass claims: { tenant: '${tenantClaim}' } or set rls.tenantClaim to '${read}'`
|
|
377
407
|
});
|
|
378
408
|
}
|
|
379
409
|
return findings;
|
|
@@ -534,7 +564,20 @@ async function runUsage(input) {
|
|
|
534
564
|
};
|
|
535
565
|
return {
|
|
536
566
|
code: report.errors > 0 || input.strict && report.warnings > 0 ? 1 : 0,
|
|
537
|
-
output: input.json ? `${JSON.stringify(report, null, 2)}\n` : formatUsage(report)
|
|
567
|
+
output: input.json ? `${JSON.stringify(report, null, 2)}\n` : formatUsage(report),
|
|
568
|
+
findings: [
|
|
569
|
+
...unused,
|
|
570
|
+
...ungranted,
|
|
571
|
+
...noRole,
|
|
572
|
+
...dynamic,
|
|
573
|
+
...undeclared,
|
|
574
|
+
...outsideInclude
|
|
575
|
+
].map((item) => findingOf({
|
|
576
|
+
code: item.kind,
|
|
577
|
+
severity: item.kind === "no-role" ? "error" : "warning",
|
|
578
|
+
message: `${item.key === "*" ? "" : `${item.key}: `}${item.detail}`,
|
|
579
|
+
docs: `${DOCS_BASE}/usage`
|
|
580
|
+
}))
|
|
538
581
|
};
|
|
539
582
|
}
|
|
540
583
|
async function usagePolicy(cwd, policyRel, loaded) {
|
|
@@ -587,7 +630,7 @@ function declaredFields(policy, resource) {
|
|
|
587
630
|
function conditionFields(condition, out) {
|
|
588
631
|
if (condition === void 0) return;
|
|
589
632
|
const add = (field) => {
|
|
590
|
-
out.add(field
|
|
633
|
+
out.add(beforeFirst(field, "."));
|
|
591
634
|
};
|
|
592
635
|
switch (condition.op) {
|
|
593
636
|
case "eq":
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as ProblemDetails } from "./errors-
|
|
1
|
+
import { a as ProblemDetails } from "./errors-C2PXIv4c.js";
|
|
2
2
|
import { StandardSchemaV1 } from "@standard-schema/spec";
|
|
3
3
|
//#region src/core/validation-error.d.ts
|
|
4
4
|
/** The base of every Problem Details `type` URI; defined here so a validation error does not pull in the Problem Details builders. */
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { n as freezeDeep } from "./freeze-CrU8nQeX.js";
|
|
2
|
-
import {
|
|
2
|
+
import { i as ownKeys, n as isForbiddenKey, r as ownGet } from "./paths-DXSHAMIa.js";
|
|
3
|
+
import { c as instantOf, g as secondsOf, m as rfc3339 } from "./time-DkWjdL98.js";
|
|
3
4
|
//#region src/core/fields.ts
|
|
4
5
|
function sanitizeFields(fields) {
|
|
5
6
|
if (fields === void 0) return;
|
|
@@ -25,17 +26,6 @@ function sanitizeContext(value) {
|
|
|
25
26
|
//#endregion
|
|
26
27
|
//#region src/core/validity.ts
|
|
27
28
|
/**
|
|
28
|
-
* An instant as Unix seconds: a finite number is taken as seconds already, a
|
|
29
|
-
* string must parse as RFC 3339. Anything else is `undefined`, and the caller
|
|
30
|
-
* decides whether that is "absent" or an error.
|
|
31
|
-
*/
|
|
32
|
-
function instantOf(input) {
|
|
33
|
-
if (typeof input === "number") return Number.isFinite(input) ? Math.floor(input) : void 0;
|
|
34
|
-
if (typeof input !== "string" || input.trim() === "") return;
|
|
35
|
-
const millis = Date.parse(input);
|
|
36
|
-
return Number.isFinite(millis) ? Math.floor(millis / 1e3) : void 0;
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
29
|
* The normalised validity of a grant, or `undefined` when neither bound is
|
|
40
30
|
* set. Fail-closed at definition time: a bound that does not parse, or a
|
|
41
31
|
* window that ends before it starts, throws so a typo never widens a grant.
|
|
@@ -43,8 +33,8 @@ function instantOf(input) {
|
|
|
43
33
|
function normalizeValidity(options, permissionKey) {
|
|
44
34
|
const from = options.validFrom === void 0 ? void 0 : instantOf(options.validFrom);
|
|
45
35
|
const until = options.validUntil === void 0 ? void 0 : instantOf(options.validUntil);
|
|
46
|
-
if (options.validFrom !== void 0 && from === void 0) throw new Error(`PermDock: validFrom on '${permissionKey}' must be an RFC 3339 string or
|
|
47
|
-
if (options.validUntil !== void 0 && until === void 0) throw new Error(`PermDock: validUntil on '${permissionKey}' must be an RFC 3339 string or
|
|
36
|
+
if (options.validFrom !== void 0 && from === void 0) throw new Error(`PermDock: validFrom on '${permissionKey}' must be an RFC 3339 string or an Instant`);
|
|
37
|
+
if (options.validUntil !== void 0 && until === void 0) throw new Error(`PermDock: validUntil on '${permissionKey}' must be an RFC 3339 string or an Instant`);
|
|
48
38
|
if (from !== void 0 && until !== void 0 && until <= from) throw new Error(`PermDock: validUntil on '${permissionKey}' must be after validFrom`);
|
|
49
39
|
if (from === void 0 && until === void 0) return;
|
|
50
40
|
return Object.freeze({
|
|
@@ -58,5 +48,32 @@ function isActive(validity, now) {
|
|
|
58
48
|
if (validity.from !== void 0 && now < validity.from) return false;
|
|
59
49
|
return validity.until === void 0 || now < validity.until;
|
|
60
50
|
}
|
|
51
|
+
function wireValidity(validity) {
|
|
52
|
+
if (validity === void 0) return;
|
|
53
|
+
return Object.freeze({
|
|
54
|
+
...validity.from === void 0 ? {} : { from: rfc3339(validity.from) },
|
|
55
|
+
...validity.until === void 0 ? {} : { until: rfc3339(validity.until) }
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* The validity of a wire grant. A malformed window fails closed for the
|
|
60
|
+
* grant's effect: an allow never applies (`{ from: +∞ }`), a deny always
|
|
61
|
+
* does (no window), so a corrupt bound can never lift a deny.
|
|
62
|
+
*/
|
|
63
|
+
function readWireValidity(value, effect = "allow") {
|
|
64
|
+
if (value === void 0) return;
|
|
65
|
+
const malformed = effect === "deny" ? void 0 : NEVER;
|
|
66
|
+
if (typeof value !== "object" || value === null) return malformed;
|
|
67
|
+
const from = "from" in value ? value.from : void 0;
|
|
68
|
+
const until = "until" in value ? value.until : void 0;
|
|
69
|
+
const start = from === void 0 ? void 0 : secondsOf(from);
|
|
70
|
+
const end = until === void 0 ? void 0 : secondsOf(until);
|
|
71
|
+
if (from !== void 0 && start === void 0 || until !== void 0 && end === void 0) return malformed;
|
|
72
|
+
return Object.freeze({
|
|
73
|
+
...start === void 0 ? {} : { from: start },
|
|
74
|
+
...end === void 0 ? {} : { until: end }
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
const NEVER = Object.freeze({ from: Number.POSITIVE_INFINITY });
|
|
61
78
|
//#endregion
|
|
62
|
-
export {
|
|
79
|
+
export { grantCoversField as a, sanitizeFields as c, wireValidity as i, normalizeValidity as n, pickVisible as o, readWireValidity as r, sanitizeContext as s, isActive as t };
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { n as isReadonlyArray, t as compact } from "./compact-CAf557ZB.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { n as isForbiddenKey, s as splitPath } from "./paths-DXSHAMIa.js";
|
|
3
|
+
import { p as nowSeconds } from "./time-DkWjdL98.js";
|
|
4
|
+
import { t as loadJose } from "./load-jose-DZ4dnjri.js";
|
|
4
5
|
//#region src/jwt/header.ts
|
|
5
6
|
function compactParts(token) {
|
|
6
7
|
return token.split(".");
|
|
@@ -90,10 +91,11 @@ function assertSafeClaimPaths(claims) {
|
|
|
90
91
|
claims.roles,
|
|
91
92
|
claims.groups,
|
|
92
93
|
claims.entitlements,
|
|
94
|
+
claims.plans,
|
|
93
95
|
claims.tenant,
|
|
94
96
|
claims.memberships,
|
|
95
97
|
claims.session
|
|
96
|
-
].filter((path) => path
|
|
98
|
+
].filter((path) => typeof path === "string");
|
|
97
99
|
if (typeof claims.assurance === "string") paths.push(claims.assurance);
|
|
98
100
|
else if (claims.assurance !== void 0) paths.push(...[
|
|
99
101
|
claims.assurance.acr,
|
|
@@ -128,11 +130,12 @@ function assertVerifierConfig(options) {
|
|
|
128
130
|
}
|
|
129
131
|
function assertSubjectConfig(options) {
|
|
130
132
|
if (options.verifier === void 0) {
|
|
131
|
-
assertVerifierConfig(options);
|
|
133
|
+
assertVerifierConfig(verifierOptions(options));
|
|
132
134
|
if (options.jwks !== void 0 && !isSecretJwks(options.jwks) && options.issuer === void 0) throw new Error("PermDock: issuer is required with jwks.");
|
|
133
135
|
}
|
|
134
136
|
assertSafeClaimPaths(options.claims);
|
|
135
137
|
if (options.profile === "fapi2" && options.sender === "none") throw new Error("PermDock: profile 'fapi2' requires a sender constraint.");
|
|
138
|
+
if (options.verifier === void 0 && options.audience === void 0) throw new Error("PermDock: audience is required; pass audience: false to accept a token minted for any audience.");
|
|
136
139
|
}
|
|
137
140
|
function secretBits(secret) {
|
|
138
141
|
if (typeof secret === "string") return secret.length * 8;
|
|
@@ -142,6 +145,14 @@ function secretBytes(secret) {
|
|
|
142
145
|
if (typeof secret === "string") return new TextEncoder().encode(secret);
|
|
143
146
|
return secret;
|
|
144
147
|
}
|
|
148
|
+
/** The verifier options of a subject config: `audience: false` means none is checked. */
|
|
149
|
+
function verifierOptions(options) {
|
|
150
|
+
const { audience, ...rest } = options;
|
|
151
|
+
return audience === false || audience === void 0 ? rest : {
|
|
152
|
+
...rest,
|
|
153
|
+
audience
|
|
154
|
+
};
|
|
155
|
+
}
|
|
145
156
|
//#endregion
|
|
146
157
|
//#region src/jwt/cache.ts
|
|
147
158
|
function clampTtl(seconds, minTtl, maxTtl) {
|
|
@@ -297,7 +308,7 @@ function createKeyCache(options) {
|
|
|
297
308
|
}
|
|
298
309
|
};
|
|
299
310
|
const resolve = async (force, nowInput) => {
|
|
300
|
-
const now = nowInput ??
|
|
311
|
+
const now = nowInput ?? nowSeconds();
|
|
301
312
|
if (options.jwks instanceof URL) return loadJwks(options.jwks.href, now, force);
|
|
302
313
|
if (typeof options.jwks === "string") return loadJwks(options.jwks, now, force);
|
|
303
314
|
if (options.jwks !== void 0 && typeof options.jwks === "object" && "keys" in options.jwks) return {
|
|
@@ -317,7 +328,7 @@ function createKeyCache(options) {
|
|
|
317
328
|
return resolve(false, now);
|
|
318
329
|
},
|
|
319
330
|
refetchJwks(now) {
|
|
320
|
-
const current = now ??
|
|
331
|
+
const current = now ?? nowSeconds();
|
|
321
332
|
if (current < cooldownUntil) return resolve(false, current);
|
|
322
333
|
cooldownUntil = current + cooldown;
|
|
323
334
|
return resolve(true, current);
|
|
@@ -499,4 +510,4 @@ function joseTokenVerifier(options) {
|
|
|
499
510
|
}
|
|
500
511
|
}
|
|
501
512
|
//#endregion
|
|
502
|
-
export {
|
|
513
|
+
export { verifierOptions as a, issuerFromDiscovery as i, assertSubjectConfig as n, decodeHeader as o, fail as r, normalizeTyp as s, joseTokenVerifier as t };
|