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
|
@@ -1,6 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { C as
|
|
3
|
-
import { r as
|
|
1
|
+
import { $n as Delegation, Bt as LocalSnapshotManifest, C as MembershipFixture, D as PolicyDelegation, I as SeparationConflict, In as DenialReason, J as EntitlementSource, Kt as AccessEvent, Lt as InstanceHandle, N as RoleBinding, Nn as Decision, P as RoleOptions, Pn as Denial, Qt as DeliveryEvent, R as SupportAccessOptions, Rt as Instant, T as Policy, V as VocabularyFromInput, Vt as Snapshot, W as CustomRoleSource, Xt as DecisionEvent, Y as JwtClaims, Zn as CustomRole, at as SettingsSource, c as BreakGlassOptions, ct as TenantSettings, et as MembershipSource, g as GrantCondition, h as Grant, i as ApprovalOption, ir as Subject, it as RelationSource, j as PolicyVocabulary, k as PolicyOptions, mr as OpaqueCondition, nr as Membership, nt as RelationGroup, ot as SnapshotSource, rn as SinkEvent, rr as Principal, s as AssuranceRequirement, sn as PolicyScopesInput, ur as ConditionRef, ut as TokenSigner, vr as SqlFunctionArg, yr as SqlFunctionCondition } from "./policy-types-DzwivBgR.js";
|
|
2
|
+
import { C as InferPermissionTree, D as PermissionsOptions, E as PermissionTree, F as ResourceParent, L as ResourceRelationInput, M as ResourceMeta, N as ResourceNode, P as ResourceOptions, R as ResourceRestricted, T as PermissionKind, g as ActionMeta, h as ActionList, k as ResourceInit, r as Role, w as Permission, z as ResourceXTree } from "./vocabulary-D6lPdb4Z.js";
|
|
3
|
+
import { i as PermDockOptions, r as PermDock } from "./permdock-D7eeLJER.js";
|
|
4
|
+
import { a as PolicyDocument } from "./hosted-DBDX0M-P.js";
|
|
5
|
+
import { m as ApprovalStore } from "./types-CCpc2Dcv.js";
|
|
6
|
+
import { t as InstanceOptions } from "./instance-options-Omfd793B.js";
|
|
7
|
+
import { n as PermDockWrap } from "./wrap-Bd1Tejur.js";
|
|
8
|
+
import { t as JsonSchemaNode } from "./json-schema-CN_iLFH2.js";
|
|
9
|
+
import { i as CatalogEventData, s as CloudEvent } from "./sink-Bj_lDUDq.js";
|
|
4
10
|
import { StandardSchemaV1 } from "@standard-schema/spec";
|
|
5
11
|
//#region src/conditions/refs.d.ts
|
|
6
12
|
type KnownRefField = "id" | "issuer" | "kind" | "tenant" | "team" | "roles" | "plans" | "memberships" | "assurance" | "binding" | "session";
|
|
@@ -74,9 +80,24 @@ declare function emptySnapshot(): Snapshot;
|
|
|
74
80
|
declare function requiresApproval(approval: Grant["approval"] | undefined): boolean;
|
|
75
81
|
//#endregion
|
|
76
82
|
//#region src/core/policy.d.ts
|
|
77
|
-
declare function definePolicy<TUser, TPrincipal extends Principal, const Input extends PermissionTree | PolicyVocabulary, const S extends PolicyScopesInput = PolicyScopesInput>(permissions: Input, options:
|
|
83
|
+
declare function definePolicy<TUser, TPrincipal extends Principal, const Input extends PermissionTree | PolicyVocabulary, const S extends PolicyScopesInput = PolicyScopesInput>(permissions: Input, options: PolicyOptions<TUser, TPrincipal, S>): Policy<TUser, TPrincipal, VocabularyFromInput<Input>>;
|
|
78
84
|
declare function separationConflicts(policy: Policy, memberships: readonly MembershipFixture[]): readonly SeparationConflict[];
|
|
79
85
|
//#endregion
|
|
86
|
+
//#region src/core/permission-registry.d.ts
|
|
87
|
+
declare function getResource<RX = never>(tree: PermissionTree & ResourceXTree<RX>, name: string): ([RX] extends [never] ? ResourceNode : ResourceNode & {
|
|
88
|
+
readonly meta?: ResourceMeta<Readonly<RX>>;
|
|
89
|
+
}) | undefined;
|
|
90
|
+
declare function listPermissions(tree: PermissionTree | Permission): readonly Permission[];
|
|
91
|
+
declare function findPermission(tree: PermissionTree, keyOrScope: string): Permission | undefined;
|
|
92
|
+
/**
|
|
93
|
+
* A permission leaf: string `key`, `scope`, `resource` and `action` plus an
|
|
94
|
+
* object `meta`. `kind` is non-enumerable and does not survive
|
|
95
|
+
* `JSON.stringify`, so a leaf that crossed a serialisation boundary passes
|
|
96
|
+
* without it; when present it must be `instance` or `collection`.
|
|
97
|
+
*/
|
|
98
|
+
declare function isPermission(value: unknown): value is Permission;
|
|
99
|
+
declare function mergePermissions<const Trees extends readonly PermissionTree[]>(...trees: Trees): PermissionTree;
|
|
100
|
+
//#endregion
|
|
80
101
|
//#region src/conditions/opaque.d.ts
|
|
81
102
|
declare function opaque(input: {
|
|
82
103
|
readonly sql: string;
|
|
@@ -91,14 +112,18 @@ declare function sqlFunction(name: string, options: {
|
|
|
91
112
|
//#endregion
|
|
92
113
|
//#region src/core/memory-sources.d.ts
|
|
93
114
|
declare function memoryEntitlementSource(entries: Readonly<Record<string, readonly string[]>>): EntitlementSource;
|
|
94
|
-
declare function
|
|
115
|
+
declare function memorySettingsSource(settings: Readonly<Record<string, TenantSettings>>): SettingsSource;
|
|
95
116
|
/** Memberships keyed by principal id; `tenant` is not a filter, as for a database source. */
|
|
96
117
|
declare function memoryMembershipSource(entries: Readonly<Record<string, readonly Membership[]>>): MembershipSource;
|
|
97
118
|
/** A snapshot held in memory; `set` replaces it and notifies every subscriber. */
|
|
98
119
|
declare function memorySnapshotSource(initial: Snapshot | string): SnapshotSource & {
|
|
99
120
|
set(snapshot: Snapshot | string): void;
|
|
100
121
|
};
|
|
101
|
-
declare function
|
|
122
|
+
declare function memoryCustomRoleSource(customRoles: readonly CustomRole[]): CustomRoleSource;
|
|
123
|
+
//#endregion
|
|
124
|
+
//#region src/core/approval-state.d.ts
|
|
125
|
+
/** The denial detail when an `ApprovalPolicySource` threw or returned an invalid entry. */
|
|
126
|
+
declare const APPROVAL_POLICY_UNAVAILABLE = "approval-policy-unavailable";
|
|
102
127
|
//#endregion
|
|
103
128
|
//#region src/core/memberships.d.ts
|
|
104
129
|
/**
|
|
@@ -160,19 +185,13 @@ type StripeEntitlementsClient = {
|
|
|
160
185
|
* tenant to its customer id; no tenant or no customer means no entitlements.
|
|
161
186
|
* Pass it as `entitlements`, and grant with `plan('<lookup_key>')`.
|
|
162
187
|
*/
|
|
163
|
-
declare function
|
|
188
|
+
declare function stripeEntitlementSource(options: {
|
|
164
189
|
readonly stripe: StripeEntitlementsClient;
|
|
165
190
|
readonly customer: (tenant: string, principal: {
|
|
166
191
|
readonly id: string;
|
|
167
192
|
}) => string | undefined | PromiseLike<string | undefined>;
|
|
168
193
|
}): EntitlementSource;
|
|
169
194
|
//#endregion
|
|
170
|
-
//#region src/core/limits.d.ts
|
|
171
|
-
declare function memoryLimitStore(): LimitStore & {
|
|
172
|
-
/** Live counters, for tests and diagnostics. */
|
|
173
|
-
size(): number;
|
|
174
|
-
};
|
|
175
|
-
//#endregion
|
|
176
195
|
//#region src/core/memory-relations.d.ts
|
|
177
196
|
type MemoryEdge = {
|
|
178
197
|
/** The object's id. */
|
|
@@ -181,7 +200,7 @@ type MemoryEdge = {
|
|
|
181
200
|
readonly startsAt?: number;
|
|
182
201
|
readonly expiresAt?: number;
|
|
183
202
|
};
|
|
184
|
-
type
|
|
203
|
+
type MemoryRelationSourceData = {
|
|
185
204
|
/** Rows per resource: parent pointers, links, restricted flags and relation columns are read from them. */
|
|
186
205
|
readonly rows?: Readonly<Record<string, readonly Readonly<Record<string, unknown>>[]>>;
|
|
187
206
|
/** Edge-table rows per resource and relation. */
|
|
@@ -197,7 +216,129 @@ type MemoryRelationsData = {
|
|
|
197
216
|
* An in-process `RelationSource` over plain rows and edges, read against the
|
|
198
217
|
* resource definitions in `permissions`. For tests, fixtures and small apps.
|
|
199
218
|
*/
|
|
200
|
-
declare function
|
|
219
|
+
declare function memoryRelationSource(permissions: PermissionTree, data?: MemoryRelationSourceData): RelationSource;
|
|
220
|
+
//#endregion
|
|
221
|
+
//#region src/core/who-can.d.ts
|
|
222
|
+
/** One way a principal holds a permission on an object. */
|
|
223
|
+
type HoldingVia = {
|
|
224
|
+
readonly kind: "role";
|
|
225
|
+
readonly role: string;
|
|
226
|
+
readonly membership: Membership;
|
|
227
|
+
} | {
|
|
228
|
+
readonly kind: "relation";
|
|
229
|
+
readonly resource: string;
|
|
230
|
+
readonly relation: string;
|
|
231
|
+
/** The instance the relation is held on: the object or one of its ancestors. */
|
|
232
|
+
readonly id: string;
|
|
233
|
+
} | {
|
|
234
|
+
readonly kind: "share";
|
|
235
|
+
readonly resource: string;
|
|
236
|
+
readonly relation: string;
|
|
237
|
+
readonly id: string;
|
|
238
|
+
readonly expiresAt?: number;
|
|
239
|
+
/** The group the share names, when the principal holds it as one of its members. */
|
|
240
|
+
readonly group?: RelationGroup;
|
|
241
|
+
};
|
|
242
|
+
type Holder = {
|
|
243
|
+
readonly principal: {
|
|
244
|
+
readonly id: string;
|
|
245
|
+
};
|
|
246
|
+
readonly via: readonly HoldingVia[];
|
|
247
|
+
};
|
|
248
|
+
/**
|
|
249
|
+
* Who holds a permission on one object, for share dialogs and access
|
|
250
|
+
* reviews. It lists and never grants. `complete: false` means some grantee
|
|
251
|
+
* could not be enumerated (a global role, a plan, a source without `list`,
|
|
252
|
+
* an unavailable relation): holders may be missing, so check with `decide`.
|
|
253
|
+
*/
|
|
254
|
+
type WhoCan = {
|
|
255
|
+
readonly permission: string;
|
|
256
|
+
readonly holders: readonly Holder[];
|
|
257
|
+
readonly complete: boolean;
|
|
258
|
+
};
|
|
259
|
+
/**
|
|
260
|
+
* Who holds `permission` on `resource` for the instance's policy and how
|
|
261
|
+
* (role, relation or share), from `MembershipSource.list` and
|
|
262
|
+
* `RelationSource.related`. It lists and never grants; `complete: false`
|
|
263
|
+
* means some holders could not be listed. An instance built from a
|
|
264
|
+
* snapshot answers an empty, incomplete list.
|
|
265
|
+
*/
|
|
266
|
+
declare function whoCan(permdock: InstanceHandle, permission: Permission<string, unknown, "instance">, resource: unknown): Promise<WhoCan>;
|
|
267
|
+
//#endregion
|
|
268
|
+
//#region src/core/policy-sign.d.ts
|
|
269
|
+
type SignPolicyDocumentOptions = {
|
|
270
|
+
/** `aud`: the environment URL `cloud().policies` checks it against. */
|
|
271
|
+
readonly audience: string | readonly string[];
|
|
272
|
+
/** `exp`, a NumericDate; the signer's default (one hour after `iat`) when absent. */
|
|
273
|
+
readonly expiresAt?: number;
|
|
274
|
+
};
|
|
275
|
+
/**
|
|
276
|
+
* Signs `document` as a `vnd.permdock.policy+jwt`: the `policy` claim holds
|
|
277
|
+
* every field but `id` and `issuedAt`, which become `jti` and `iat`, so
|
|
278
|
+
* `policyDocumentFromClaims` reads it back. `iss` is the signer's own.
|
|
279
|
+
*/
|
|
280
|
+
declare function signPolicyDocument(document: PolicyDocument, signer: TokenSigner, options: SignPolicyDocumentOptions): Promise<string>;
|
|
281
|
+
//#endregion
|
|
282
|
+
//#region src/core/snapshot-sign.d.ts
|
|
283
|
+
type SignSnapshotOptions = {
|
|
284
|
+
/** `aud`; a signer with no default audience refuses to sign without one. */
|
|
285
|
+
readonly audience?: string | readonly string[];
|
|
286
|
+
};
|
|
287
|
+
/**
|
|
288
|
+
* Signs `snapshot` as a `vnd.permdock.snapshot+jwt`. `issuedAt` and
|
|
289
|
+
* `expiresAt` become `iat` and `exp` and leave the `snapshot` claim, so the
|
|
290
|
+
* registered claims are the only times a verifier reads.
|
|
291
|
+
*/
|
|
292
|
+
declare function signSnapshot(snapshot: Snapshot, signer: TokenSigner, options?: SignSnapshotOptions): Promise<string>;
|
|
293
|
+
/**
|
|
294
|
+
* The snapshot a verified `vnd.permdock.snapshot+jwt` carries, parsed as
|
|
295
|
+
* `parseSnapshot` parses it, with `issuedAt` and `expiresAt` from `iat` and
|
|
296
|
+
* `exp`. `null` when the claim is missing or not a valid snapshot.
|
|
297
|
+
*/
|
|
298
|
+
declare function snapshotFromClaims(claims: JwtClaims): Snapshot | null;
|
|
299
|
+
//#endregion
|
|
300
|
+
//#region src/core/delivery-event.d.ts
|
|
301
|
+
declare function deliveryEvent(input: Omit<DeliveryEvent, "type" | "at"> & {
|
|
302
|
+
/** An RFC 3339 instant; defaults to now. */
|
|
303
|
+
readonly at?: string;
|
|
304
|
+
}): DeliveryEvent;
|
|
305
|
+
//#endregion
|
|
306
|
+
//#region src/core/arazzo.d.ts
|
|
307
|
+
type ArazzoSimulateInput = {
|
|
308
|
+
readonly arazzo: unknown;
|
|
309
|
+
readonly openapi: unknown;
|
|
310
|
+
readonly workflowId?: string;
|
|
311
|
+
readonly permissions?: PermissionTree;
|
|
312
|
+
readonly inputs?: Readonly<Record<string, unknown>>;
|
|
313
|
+
};
|
|
314
|
+
type ArazzoStepResult = {
|
|
315
|
+
readonly stepId: string;
|
|
316
|
+
/** The nested workflow that owns the step, when it is not the plan's workflow. */
|
|
317
|
+
readonly workflowId?: string;
|
|
318
|
+
readonly operationId?: string;
|
|
319
|
+
readonly permissions: readonly Permission[];
|
|
320
|
+
readonly decision: Decision;
|
|
321
|
+
readonly provisional?: true;
|
|
322
|
+
};
|
|
323
|
+
type ArazzoPlan = {
|
|
324
|
+
readonly workflowId: string;
|
|
325
|
+
readonly outcome: Decision["outcome"];
|
|
326
|
+
readonly steps: readonly ArazzoStepResult[];
|
|
327
|
+
};
|
|
328
|
+
type ArazzoFinding = {
|
|
329
|
+
readonly stepId: string;
|
|
330
|
+
readonly workflowId: string;
|
|
331
|
+
readonly reason: "undocumented" | "unsupported" | "validation" | "unknown-key";
|
|
332
|
+
readonly detail: string;
|
|
333
|
+
};
|
|
334
|
+
declare function arazzoFindings(input: ArazzoSimulateInput, tree: PermissionTree | undefined): readonly ArazzoFinding[];
|
|
335
|
+
/**
|
|
336
|
+
* Walks an Arazzo workflow against `permdock`: each step's operation is
|
|
337
|
+
* decided as `permdock.simulate` would, and a server instance emits one
|
|
338
|
+
* simulate event for the whole plan. Works on an instance built from a
|
|
339
|
+
* snapshot too.
|
|
340
|
+
*/
|
|
341
|
+
declare function simulateArazzo(permdock: PermDock, input: ArazzoSimulateInput): ArazzoPlan;
|
|
201
342
|
//#endregion
|
|
202
343
|
//#region src/core/local-manifest.d.ts
|
|
203
344
|
/**
|
|
@@ -207,6 +348,71 @@ declare function memoryRelations(permissions: PermissionTree, data?: MemoryRelat
|
|
|
207
348
|
*/
|
|
208
349
|
declare function localSnapshotManifest(policy: Policy): LocalSnapshotManifest;
|
|
209
350
|
//#endregion
|
|
351
|
+
//#region src/core/app.d.ts
|
|
352
|
+
/**
|
|
353
|
+
* How strict `defineApp` is about the services the policy needs. `dev`
|
|
354
|
+
* fills in in-process defaults (a memory approval store and a memory limit
|
|
355
|
+
* store) so a new app runs before any infrastructure exists. `prod` throws at startup when a grant needs a
|
|
356
|
+
* service the app does not configure, instead of denying at run time.
|
|
357
|
+
*/
|
|
358
|
+
type AppProfile = "dev" | "prod";
|
|
359
|
+
/**
|
|
360
|
+
* Everything an app wires once and every adapter reads: the data sources,
|
|
361
|
+
* the opt-in features and the services. An adapter's own options win over
|
|
362
|
+
* these, key by key.
|
|
363
|
+
*/
|
|
364
|
+
type AppOptions = InstanceOptions & Pick<PermDockOptions, "settings"> & {
|
|
365
|
+
/** Where approval requests open and resume, for every adapter. */
|
|
366
|
+
readonly store?: ApprovalStore;
|
|
367
|
+
readonly profile?: AppProfile;
|
|
368
|
+
};
|
|
369
|
+
//#endregion
|
|
370
|
+
//#region src/app/define-app.d.ts
|
|
371
|
+
/**
|
|
372
|
+
* Binds the app's sources, features and services to `policy`. The result
|
|
373
|
+
* is a policy: pass it wherever a policy goes (`createPermDock`, every
|
|
374
|
+
* adapter, the CLI) and each picks up the app definition, with its own
|
|
375
|
+
* options taking precedence. The profile defaults to `prod`.
|
|
376
|
+
*/
|
|
377
|
+
declare function defineApp<TUser, TPrincipal extends Principal, V extends PolicyVocabulary>(policy: Policy<TUser, TPrincipal, V>, options?: AppOptions): Policy<TUser, TPrincipal, V>;
|
|
378
|
+
//#endregion
|
|
379
|
+
//#region src/core/shadow.d.ts
|
|
380
|
+
/** The application's existing check, asked the same question PermDock is. */
|
|
381
|
+
type LegacyCheck = (input: {
|
|
382
|
+
readonly permission: Permission;
|
|
383
|
+
readonly data: unknown;
|
|
384
|
+
readonly subject: Subject;
|
|
385
|
+
}) => boolean;
|
|
386
|
+
/** One check where the legacy system and PermDock disagree. */
|
|
387
|
+
type ShadowMismatch = {
|
|
388
|
+
readonly permission: string;
|
|
389
|
+
readonly principal: string | null;
|
|
390
|
+
/** What the legacy check answered; `false` when it threw. */
|
|
391
|
+
readonly legacy: boolean;
|
|
392
|
+
readonly permdock: Decision["outcome"];
|
|
393
|
+
/** `true` when PermDock's answer was the one returned. */
|
|
394
|
+
readonly enforced: boolean;
|
|
395
|
+
};
|
|
396
|
+
type ShadowOptions = {
|
|
397
|
+
readonly legacy: LegacyCheck;
|
|
398
|
+
/**
|
|
399
|
+
* Permissions PermDock decides; every other check returns the legacy
|
|
400
|
+
* answer. `"all"` once every mismatch is resolved; default none.
|
|
401
|
+
*/
|
|
402
|
+
readonly enforce?: readonly Permission[] | "all";
|
|
403
|
+
/** Called for each disagreement; a throw here is ignored. */
|
|
404
|
+
readonly onMismatch?: (mismatch: ShadowMismatch) => void;
|
|
405
|
+
};
|
|
406
|
+
/**
|
|
407
|
+
* Runs PermDock beside the application's existing checks while adopting
|
|
408
|
+
* it. Each `can`, `decide`, `decideEach`, `filter` and `assert` asks both;
|
|
409
|
+
* the legacy answer is returned unless the permission is in `enforce`, and
|
|
410
|
+
* every disagreement reaches `onMismatch`. Promote permissions one by one
|
|
411
|
+
* as their mismatches are resolved, then remove the wrap. Pass it as an
|
|
412
|
+
* adapter's `wrap` option, or call it on a core instance.
|
|
413
|
+
*/
|
|
414
|
+
declare function shadowMode(options: ShadowOptions): PermDockWrap;
|
|
415
|
+
//#endregion
|
|
210
416
|
//#region src/core/may-access.d.ts
|
|
211
417
|
/**
|
|
212
418
|
* An optimistic routing hint for a proxy or middleware, never a decision.
|
|
@@ -219,37 +425,11 @@ declare function mayAccess(policy: Policy, user: unknown, permission: Permission
|
|
|
219
425
|
readonly tenant?: string;
|
|
220
426
|
}): boolean;
|
|
221
427
|
//#endregion
|
|
222
|
-
//#region src/core/may-use.d.ts
|
|
223
|
-
/**
|
|
224
|
-
* Whether `permission` could be granted to this instance's subject for some
|
|
225
|
-
* row: the grants its snapshot carries for the active tenant, minus an
|
|
226
|
-
* unconditional deny, within its delegation. A listing hint for tools and
|
|
227
|
-
* skills, never a decision; the call itself is decided in full.
|
|
228
|
-
*/
|
|
229
|
-
declare function mayUse(permdock: PermDock, permission: Permission): boolean;
|
|
230
|
-
type PermittedIdsOptions = {
|
|
231
|
-
readonly within?: string;
|
|
232
|
-
readonly conditioned?: boolean;
|
|
233
|
-
};
|
|
234
|
-
/**
|
|
235
|
-
* The instances of `scope` in which the subject holds `permission`, from its
|
|
236
|
-
* live memberships of exactly that scope, within its delegation: by default
|
|
237
|
-
* those with an allow that carries no row condition (`where`, `check`, a
|
|
238
|
-
* validity window or a non-portable test; a `fields` limit is not a row
|
|
239
|
-
* condition), minus the instances any deny of the permission reaches. The
|
|
240
|
-
* in-process mirror of the SQL `permitted_<scope>_ids_by_permission`. With
|
|
241
|
-
* `conditioned: true` it also lists the instances where a conditioned allow
|
|
242
|
-
* applies, minus only unconditional denies, as
|
|
243
|
-
* `permitted_<scope>_ids_by_permission(p_permission, true)` does. A listing,
|
|
244
|
-
* never a decision: a row's own check still runs `can`.
|
|
245
|
-
*/
|
|
246
|
-
declare function permittedIds(permdock: PermDock, permission: Permission, scope: string, options?: PermittedIdsOptions): readonly string[];
|
|
247
|
-
//#endregion
|
|
248
428
|
//#region src/core/custom-role-source.d.ts
|
|
249
429
|
/** Reads custom roles from the application's store, as `customRoleSource` takes them. */
|
|
250
430
|
type CustomRoleReader = {
|
|
251
431
|
/** Every custom role of `tenant`, whether or not anyone in the request holds it. */
|
|
252
|
-
|
|
432
|
+
rolesFor(tenant: string): CustomRole[] | Promise<CustomRole[]>;
|
|
253
433
|
assignable?(tenant: string): string[] | Promise<string[]>;
|
|
254
434
|
/** Platform custom roles (`scope: 'global'`). */
|
|
255
435
|
globalRoles?(): CustomRole[] | Promise<CustomRole[]>;
|
|
@@ -263,12 +443,12 @@ type CustomRoleSourceOptions = {
|
|
|
263
443
|
readonly policy: Policy;
|
|
264
444
|
};
|
|
265
445
|
/**
|
|
266
|
-
* A `
|
|
446
|
+
* A `CustomRoleSource` over a reader that returns every custom role of a tenant.
|
|
267
447
|
* It keeps only the roles of the requested tenant. With `read: 'held'` it
|
|
268
448
|
* skips a tenant's read, and `globalRoles`, when the subject holds only
|
|
269
449
|
* declared roles there.
|
|
270
450
|
*/
|
|
271
|
-
declare function customRoleSource(reader: CustomRoleReader, options?: CustomRoleSourceOptions):
|
|
451
|
+
declare function customRoleSource(reader: CustomRoleReader, options?: CustomRoleSourceOptions): CustomRoleSource;
|
|
272
452
|
//#endregion
|
|
273
453
|
//#region src/core/instance-snapshot.d.ts
|
|
274
454
|
type SnapshotInclude = readonly (Permission | {
|
|
@@ -283,14 +463,14 @@ type SnapshotForOptions = {
|
|
|
283
463
|
readonly memberships?: readonly Membership[];
|
|
284
464
|
/** The tenant's custom roles, typically from a shared, tagged cache. */
|
|
285
465
|
readonly customRoles?: readonly CustomRole[];
|
|
286
|
-
/** Per tenant, the role names `
|
|
466
|
+
/** Per tenant, the role names `CustomRoleSource.assignable` returns; narrows `assignable`. */
|
|
287
467
|
readonly assignable?: Readonly<Record<string, readonly string[]>>;
|
|
288
468
|
/** Plans of the active tenant; replaces `principal.plans`. */
|
|
289
469
|
readonly plans?: readonly string[];
|
|
290
470
|
readonly include?: SnapshotInclude;
|
|
291
471
|
readonly tenants?: "all";
|
|
292
|
-
/**
|
|
293
|
-
readonly now?:
|
|
472
|
+
/** The instant for `issuedAt` and membership expiry. Defaults to the clock. */
|
|
473
|
+
readonly now?: Instant;
|
|
294
474
|
};
|
|
295
475
|
/**
|
|
296
476
|
* Builds the serializable access snapshot for a subject without a request,
|
|
@@ -301,22 +481,7 @@ type SnapshotForOptions = {
|
|
|
301
481
|
declare function snapshotFor<TUser, TPrincipal extends Principal = Principal, V extends PolicyVocabulary = PolicyVocabulary>(policy: Policy<TUser, TPrincipal, V>, user: TUser | Subject | null, options?: SnapshotForOptions): Snapshot;
|
|
302
482
|
//#endregion
|
|
303
483
|
//#region src/core/permissions.d.ts
|
|
304
|
-
declare function definePermissions<const Input, PX = never, RX = never>(input: Input, options?:
|
|
305
|
-
//#endregion
|
|
306
|
-
//#region src/core/permission-registry.d.ts
|
|
307
|
-
declare function getResource<RX = never>(tree: PermissionTree & ResourceXTree<RX>, name: string): ([RX] extends [never] ? ResourceNode : ResourceNode & {
|
|
308
|
-
readonly meta?: ResourceMeta<Readonly<RX>>;
|
|
309
|
-
}) | undefined;
|
|
310
|
-
declare function listPermissions(tree: PermissionTree | Permission): readonly Permission[];
|
|
311
|
-
declare function findPermission(tree: PermissionTree, keyOrScope: string): Permission | undefined;
|
|
312
|
-
/**
|
|
313
|
-
* A permission leaf: string `key`, `scope`, `resource` and `action` plus an
|
|
314
|
-
* object `meta`. `kind` is non-enumerable and does not survive
|
|
315
|
-
* `JSON.stringify`, so a leaf that crossed a serialisation boundary passes
|
|
316
|
-
* without it; when present it must be `instance` or `collection`.
|
|
317
|
-
*/
|
|
318
|
-
declare function isPermission(value: unknown): value is Permission;
|
|
319
|
-
declare function mergePermissions<const Trees extends readonly PermissionTree[]>(...trees: Trees): PermissionTree;
|
|
484
|
+
declare function definePermissions<const Input, PX = never, RX = never>(input: Input, options?: PermissionsOptions<PX, RX>): InferPermissionTree<Input, "", PX> & ResourceXTree<RX>;
|
|
320
485
|
//#endregion
|
|
321
486
|
//#region src/core/permission-leaf.d.ts
|
|
322
487
|
/**
|
|
@@ -405,13 +570,193 @@ declare function deny<T, K extends PermissionKind = PermissionKind>(permission:
|
|
|
405
570
|
//#region src/core/approval-normalize.d.ts
|
|
406
571
|
declare function normalizeApproval(approval: ApprovalOption | undefined, permission?: string): Grant["approval"];
|
|
407
572
|
//#endregion
|
|
408
|
-
//#region src/core/
|
|
409
|
-
|
|
573
|
+
//#region src/core/elevated.d.ts
|
|
574
|
+
/**
|
|
575
|
+
* The only deny override: a break-glass grant overrides deny grants whose
|
|
576
|
+
* `name` it lists, and nothing else. It is an allow that stays non-portable
|
|
577
|
+
* (RLS never compiles it) and grants only once its `requires` are met.
|
|
578
|
+
*/
|
|
579
|
+
declare function breakGlass<T>(permission: Permission<string, T> | readonly Permission<string, T>[], options?: BreakGlassOptions): Omit<Grant, "role" | "scope"> | Omit<Grant, "role" | "scope">[];
|
|
580
|
+
/**
|
|
581
|
+
* Support access with tenant consent: a role a vendor holds only through a
|
|
582
|
+
* consented, time-bound `via: 'support'` membership. `actorRequired` denies
|
|
583
|
+
* every decision under it without an `act`; `forbid` compiles to deny grants
|
|
584
|
+
* scoped to `via: 'support'`.
|
|
585
|
+
*/
|
|
586
|
+
declare function supportAccess<const S extends string>(options: SupportAccessOptions<S> & {
|
|
587
|
+
readonly on: S;
|
|
588
|
+
}): RoleBinding<S>;
|
|
589
|
+
/** Support access held in the `tenant` scope. */
|
|
590
|
+
declare function supportAccess(options: SupportAccessOptions<never>): RoleBinding<"tenant">;
|
|
591
|
+
type ActivateInput = {
|
|
592
|
+
readonly role: string | Role;
|
|
593
|
+
/** The scope the activation applies in (a declared name or the `tenant` / `team` alias). */
|
|
594
|
+
readonly scope: string;
|
|
595
|
+
readonly id: string;
|
|
596
|
+
/** Ancestor scope ids, keyed by scope name, for a nested-scope activation. */
|
|
597
|
+
readonly within?: Readonly<Record<string, string>>;
|
|
598
|
+
/** Seconds the elevation lasts; capped at the role's `maxDuration`. */
|
|
599
|
+
readonly duration?: number;
|
|
600
|
+
readonly reason?: string;
|
|
601
|
+
};
|
|
602
|
+
/**
|
|
603
|
+
* Requests a just-in-time role activation. It never writes: a granted
|
|
604
|
+
* decision carries the elevated membership under `elevation` for the app to
|
|
605
|
+
* write. `approval-required` comes back first when the role's `activation`
|
|
606
|
+
* sets `approval`. Fail-closed: an unknown role, an ineligible subject, a
|
|
607
|
+
* missing justification or stale authentication all deny.
|
|
608
|
+
*/
|
|
609
|
+
/**
|
|
610
|
+
* Requests a just-in-time activation of an eligible role for the subject of
|
|
611
|
+
* `permdock`. It never writes: a granted decision carries the elevated
|
|
612
|
+
* membership under `elevation` for the app to write, and
|
|
613
|
+
* `approval-required` comes back first when the role's `activation` sets
|
|
614
|
+
* `approval`. An instance built from a snapshot denies with `unsupported`.
|
|
615
|
+
*/
|
|
616
|
+
declare function activate(permdock: InstanceHandle, input: ActivateInput): Decision;
|
|
617
|
+
//#endregion
|
|
618
|
+
//#region src/core/ownership.d.ts
|
|
619
|
+
/** Who a role change is about: their principal id and their membership in the scope instance. */
|
|
620
|
+
type RoleChangeTarget = {
|
|
621
|
+
readonly id: string;
|
|
622
|
+
/** The kind of the target's membership in the instance (`staff`, `contact`, ...). */
|
|
623
|
+
readonly via?: string;
|
|
624
|
+
/** The roles the target holds in the instance now. */
|
|
625
|
+
readonly roles?: readonly string[];
|
|
626
|
+
/** `idp` when the identity provider owns the target's membership: the application cannot change it. */
|
|
627
|
+
readonly managedBy?: "idp";
|
|
628
|
+
};
|
|
629
|
+
type RoleChangeBase = {
|
|
630
|
+
readonly kind: "assign" | "revoke" | "transfer";
|
|
631
|
+
readonly role: string | Role;
|
|
632
|
+
/** Ids of the instance's ancestor scopes; a holder there may assign here. */
|
|
633
|
+
readonly within?: Readonly<Record<string, string>>;
|
|
634
|
+
readonly target: RoleChangeTarget;
|
|
635
|
+
/**
|
|
636
|
+
* How many principals hold `role` in the instance now, from the
|
|
637
|
+
* application's store. Without it a role with `min`, `max` or
|
|
638
|
+
* `transferOnly` is denied.
|
|
639
|
+
*/
|
|
640
|
+
readonly holders?: number;
|
|
641
|
+
};
|
|
642
|
+
/**
|
|
643
|
+
* A role held at a named scope instance (`scope` is a declared name or alias
|
|
644
|
+
* and `id` the instance), or a global role: `scope: 'global'` with no `id`.
|
|
645
|
+
* A global change has no tenant, so `within` and `holders` do not apply to it.
|
|
646
|
+
*/
|
|
647
|
+
type RoleChange = RoleChangeBase & ({
|
|
648
|
+
/** The scope the role is held at (a declared name or alias). */
|
|
649
|
+
readonly scope: string;
|
|
650
|
+
/** The scope instance. */
|
|
651
|
+
readonly id: string;
|
|
652
|
+
} | {
|
|
653
|
+
readonly scope: "global";
|
|
654
|
+
readonly id?: undefined;
|
|
655
|
+
});
|
|
656
|
+
/**
|
|
657
|
+
* `granted` names the role that authorised the change (`null` when a
|
|
658
|
+
* `meta.manageRoles` holder or the declared-role ceiling did); `denied` lists
|
|
659
|
+
* every rule the change breaks.
|
|
660
|
+
*/
|
|
661
|
+
type RoleChangeDecision = {
|
|
662
|
+
readonly outcome: "granted";
|
|
663
|
+
readonly change: RoleChange;
|
|
664
|
+
readonly role: string | null;
|
|
665
|
+
} | {
|
|
666
|
+
readonly outcome: "denied";
|
|
667
|
+
readonly change: RoleChange;
|
|
668
|
+
readonly denials: readonly Denial[];
|
|
669
|
+
};
|
|
670
|
+
type RoleChangeOptions = {
|
|
671
|
+
/**
|
|
672
|
+
* `true` when the application loaded `change.within` from its own store
|
|
673
|
+
* (the instance's stored parent), not from the request. Without it, a
|
|
674
|
+
* nested instance's tenant comes only from a live membership the actor
|
|
675
|
+
* holds on that instance or under it.
|
|
676
|
+
*/
|
|
677
|
+
readonly trusted?: boolean;
|
|
678
|
+
};
|
|
679
|
+
/**
|
|
680
|
+
* The one rule check behind `permdock.decideRoleChange`. The actor is always
|
|
681
|
+
* the instance's own principal; nothing in `change` can stand in for it.
|
|
682
|
+
*/
|
|
683
|
+
/**
|
|
684
|
+
* Whether the subject of `permdock` may assign, revoke or transfer a role
|
|
685
|
+
* in one scope instance: `assigns`, the ceiling, `for`, `exclusiveWith`,
|
|
686
|
+
* `min`, `max` and `transferOnly`. It never writes; the application does,
|
|
687
|
+
* and generated RLS triggers re-check the holder counts at commit. A nested
|
|
688
|
+
* instance's tenant comes from a live membership the subject holds on it,
|
|
689
|
+
* or from `change.within` only with `{ trusted: true }`; otherwise
|
|
690
|
+
* `no-membership`. An instance built from a snapshot denies with
|
|
691
|
+
* `unsupported`.
|
|
692
|
+
*/
|
|
693
|
+
declare function decideRoleChange(permdock: InstanceHandle, change: RoleChange, options?: RoleChangeOptions): RoleChangeDecision;
|
|
694
|
+
//#endregion
|
|
695
|
+
//#region src/core/parse-sink-events.d.ts
|
|
696
|
+
/**
|
|
697
|
+
* Validates one untrusted sink event against its family's schema and returns
|
|
698
|
+
* a frozen copy, or `null` for anything else. Never throws.
|
|
699
|
+
*/
|
|
700
|
+
declare function parseSinkEvent(value: unknown): SinkEvent | null;
|
|
701
|
+
/**
|
|
702
|
+
* Validates an untrusted list of sink events, such as a request body a sink
|
|
703
|
+
* receiver read. Each event that fails its schema is dropped, and a value
|
|
704
|
+
* that is not an array yields no events. Never throws.
|
|
705
|
+
*/
|
|
706
|
+
declare function parseSinkEvents(value: unknown): readonly SinkEvent[];
|
|
707
|
+
/** Validates the data of a `com.permdock.catalog.*` CloudEvent; `null` when it does not match. */
|
|
708
|
+
declare function parseCatalogEventData(value: unknown): CatalogEventData | null;
|
|
709
|
+
/**
|
|
710
|
+
* Validates one CloudEvent against the closed type list, its `dataschema` and
|
|
711
|
+
* its data shape; `null` for anything else, a reserved type included. Never
|
|
712
|
+
* throws.
|
|
713
|
+
*/
|
|
714
|
+
declare function parseCloudEvent(value: unknown): CloudEvent | null;
|
|
715
|
+
/**
|
|
716
|
+
* Validates a CloudEvents JSON batch (`application/cloudevents-batch+json`):
|
|
717
|
+
* `null` unless the value is an array and every event in it is valid.
|
|
718
|
+
*/
|
|
719
|
+
declare function parseCloudEventBatch(value: unknown): readonly CloudEvent[] | null;
|
|
720
|
+
//#endregion
|
|
721
|
+
//#region src/core/event-schemas.d.ts
|
|
722
|
+
/** The URL each event family's schema is published at, and its CloudEvents `dataschema`. */
|
|
723
|
+
declare const EVENT_SCHEMA_IDS: {
|
|
724
|
+
readonly decision: "https://permdock.com/schemas/decision-event-v1.json";
|
|
725
|
+
readonly directory: "https://permdock.com/schemas/directory-event-v1.json";
|
|
726
|
+
readonly membership: "https://permdock.com/schemas/membership-event-v1.json";
|
|
727
|
+
readonly credential: "https://permdock.com/schemas/credential-event-v1.json";
|
|
728
|
+
readonly access: "https://permdock.com/schemas/access-event-v1.json";
|
|
729
|
+
readonly automation: "https://permdock.com/schemas/automation-event-v1.json";
|
|
730
|
+
readonly catalog: "https://permdock.com/schemas/catalog-event-v1.json";
|
|
731
|
+
readonly delivery: "https://permdock.com/schemas/delivery-event-v1.json";
|
|
732
|
+
};
|
|
733
|
+
declare const DECISION_EVENT_SCHEMA: JsonSchemaNode;
|
|
734
|
+
declare const DIRECTORY_EVENT_SCHEMA: JsonSchemaNode;
|
|
735
|
+
declare const MEMBERSHIP_EVENT_SCHEMA: JsonSchemaNode;
|
|
736
|
+
declare const CREDENTIAL_EVENT_SCHEMA: JsonSchemaNode;
|
|
737
|
+
declare const ACCESS_EVENT_SCHEMA: JsonSchemaNode;
|
|
738
|
+
declare const AUTOMATION_EVENT_SCHEMA: JsonSchemaNode;
|
|
739
|
+
declare const CATALOG_EVENT_SCHEMA: JsonSchemaNode;
|
|
740
|
+
declare const DELIVERY_EVENT_SCHEMA: JsonSchemaNode;
|
|
741
|
+
/** Every sink event family's schema, keyed by the event's `type`. */
|
|
742
|
+
declare const SINK_EVENT_SCHEMAS: {
|
|
743
|
+
readonly decision: JsonSchemaNode;
|
|
744
|
+
readonly directory: JsonSchemaNode;
|
|
745
|
+
readonly membership: JsonSchemaNode;
|
|
746
|
+
readonly credential: JsonSchemaNode;
|
|
747
|
+
readonly access: JsonSchemaNode;
|
|
748
|
+
readonly automation: JsonSchemaNode;
|
|
749
|
+
readonly delivery: JsonSchemaNode;
|
|
750
|
+
};
|
|
410
751
|
//#endregion
|
|
411
752
|
//#region src/core/ocsf.d.ts
|
|
412
753
|
/** The OCSF schema version `toOcsf` emits. */
|
|
413
|
-
declare const OCSF_VERSION = "1.
|
|
414
|
-
/**
|
|
754
|
+
declare const OCSF_VERSION = "1.9.0";
|
|
755
|
+
/**
|
|
756
|
+
* An OCSF Authorize Session (class 3003, category Identity and Access Management) event.
|
|
757
|
+
* API Activity (6003) would fit a per-request decision, but it requires `api` and
|
|
758
|
+
* `src_endpoint`, which a decision event does not carry.
|
|
759
|
+
*/
|
|
415
760
|
type OcsfAuthorizeSession = {
|
|
416
761
|
readonly class_uid: 3003;
|
|
417
762
|
readonly category_uid: 3;
|
|
@@ -420,7 +765,8 @@ type OcsfAuthorizeSession = {
|
|
|
420
765
|
readonly severity_id: 1 | 4;
|
|
421
766
|
readonly time: number;
|
|
422
767
|
readonly status_id: 0 | 1 | 2 | 99;
|
|
423
|
-
|
|
768
|
+
/** OCSF requires a source label for status 99: `Approval Required`. */
|
|
769
|
+
readonly status: "Unknown" | "Success" | "Failure" | "Approval Required";
|
|
424
770
|
readonly status_detail?: string;
|
|
425
771
|
readonly message: string;
|
|
426
772
|
readonly privileges: readonly string[];
|
|
@@ -452,7 +798,7 @@ type OcsfAuthorizeSession = {
|
|
|
452
798
|
readonly outcome: DecisionEvent["outcome"];
|
|
453
799
|
readonly scope: string;
|
|
454
800
|
readonly resource: DecisionEvent["resource"];
|
|
455
|
-
readonly
|
|
801
|
+
readonly call: DecisionEvent["call"];
|
|
456
802
|
readonly phase?: DecisionEvent["phase"];
|
|
457
803
|
readonly role?: string | null;
|
|
458
804
|
/** The matched grant's declared `name`. */
|
|
@@ -466,19 +812,23 @@ type OcsfAuthorizeSession = {
|
|
|
466
812
|
readonly reason?: string;
|
|
467
813
|
};
|
|
468
814
|
};
|
|
469
|
-
/** Projects a decision or approval event onto OCSF Authorize Session; the event itself is unchanged. */
|
|
470
|
-
declare function toOcsf(event: DecisionEvent): OcsfAuthorizeSession;
|
|
471
815
|
/**
|
|
472
|
-
*
|
|
816
|
+
* Projects a decision or approval event onto OCSF Authorize Session; the event itself is unchanged.
|
|
817
|
+
* An event whose `at` does not parse has no OCSF `time` and projects to `undefined`.
|
|
818
|
+
*/
|
|
819
|
+
declare function toOcsf(event: DecisionEvent): OcsfAuthorizeSession | undefined;
|
|
820
|
+
/**
|
|
821
|
+
* An OCSF User Management (class 3007) event for a support-access lifecycle
|
|
473
822
|
* event: `started` enables the session, `ended` and `revoked` disable it.
|
|
474
823
|
* Support access is high severity, so a SIEM can alert on vendor access.
|
|
824
|
+
* OCSF 1.9.0 deprecates Account Change (3001) in favour of this class.
|
|
475
825
|
*/
|
|
476
|
-
type
|
|
477
|
-
readonly class_uid:
|
|
826
|
+
type OcsfUserManagement = {
|
|
827
|
+
readonly class_uid: 3007;
|
|
478
828
|
readonly category_uid: 3;
|
|
479
|
-
/**
|
|
480
|
-
readonly activity_id:
|
|
481
|
-
readonly type_uid:
|
|
829
|
+
/** 4 Enable for `started`, 5 Disable for `ended` and `revoked`. */
|
|
830
|
+
readonly activity_id: 4 | 5;
|
|
831
|
+
readonly type_uid: 300704 | 300705;
|
|
482
832
|
readonly severity_id: 4;
|
|
483
833
|
readonly time: number;
|
|
484
834
|
readonly message: string;
|
|
@@ -509,7 +859,8 @@ type OcsfAccountChange = {
|
|
|
509
859
|
readonly reason?: string;
|
|
510
860
|
};
|
|
511
861
|
};
|
|
512
|
-
|
|
862
|
+
/** An access event whose `at` does not parse projects to `undefined`. */
|
|
863
|
+
declare function accessToOcsf(event: AccessEvent): OcsfUserManagement | undefined;
|
|
513
864
|
//#endregion
|
|
514
865
|
//#region src/core/csv.d.ts
|
|
515
866
|
/** The CSV export columns, in order; the header row of every CSV file. */
|
|
@@ -522,8 +873,7 @@ declare function toCsvRow(event: DecisionEvent): string;
|
|
|
522
873
|
//#endregion
|
|
523
874
|
//#region src/core/catalog-fingerprint.d.ts
|
|
524
875
|
/**
|
|
525
|
-
* The catalog v1 fingerprint:
|
|
526
|
-
* sorted, no whitespace) without `generatedAt`, `generator`, `fingerprint`
|
|
876
|
+
* The catalog v1 fingerprint: the `sha-256:` digest of its RFC 8785 JSON without `generatedAt`, `generator`, `fingerprint`
|
|
527
877
|
* and every `permissions[].usages`, so neither the CLI version, the clock nor
|
|
528
878
|
* call sites change it.
|
|
529
879
|
*/
|
|
@@ -547,4 +897,4 @@ declare function coveredByDelegation(permission: DelegatedPermission, delegation
|
|
|
547
897
|
*/
|
|
548
898
|
declare function delegatedPermissions(delegations: readonly PolicyDelegation[] | undefined, subject: Subject, heldRoles: ReadonlySet<string>, now: number): ReadonlySet<string> | undefined;
|
|
549
899
|
//#endregion
|
|
550
|
-
export {
|
|
900
|
+
export { ShadowMismatch as $, CustomRoleValidation as $t, decideRoleChange as A, isExternallyManaged as At, crud as B, getResource as Bt, parseCloudEventBatch as C, MemoryRelationSourceData as Ct, RoleChangeDecision as D, claimsFirst as Dt, RoleChange as E, stripeEntitlementSource as Et, normalizeApproval as F, memorySettingsSource as Ft, definePermissions as G, separationConflicts as Gt, writable as H, listPermissions as Ht, allow as I, memorySnapshotSource as It, CustomRoleReader as J, fromSnapshot as Jt, SnapshotForOptions as K, requiresApproval as Kt, deny as L, sqlFunction as Lt, activate as M, memoryCustomRoleSource as Mt, breakGlass as N, memoryEntitlementSource as Nt, RoleChangeOptions as O, composeMemberships as Ot, supportAccess as P, memoryMembershipSource as Pt, LegacyCheck as Q, CustomRoleRename as Qt, normalizeAssurance as R, opaque as Rt, parseCloudEvent as S, MemoryEdge as St, parseSinkEvents as T, StripeEntitlementsClient as Tt, formerKeys as U, mergePermissions as Ut, readable as V, isPermission as Vt, resource as W, definePolicy as Wt, customRoleSource as X, CustomRoleDrop as Xt, CustomRoleSourceOptions as Y, parseSnapshot as Yt, mayAccess as Z, CustomRoleDropReason as Zt, DIRECTORY_EVENT_SCHEMA as _, signPolicyDocument as _t, toCsvRow as a, principal as an, localSnapshotManifest as at, SINK_EVENT_SCHEMAS as b, WhoCan as bt, OcsfUserManagement as c, ArazzoSimulateInput as ct, ACCESS_EVENT_SCHEMA as d, simulateArazzo as dt, ResolvedCustomRole as en, ShadowOptions as et, AUTOMATION_EVENT_SCHEMA as f, deliveryEvent as ft, DELIVERY_EVENT_SCHEMA as g, SignPolicyDocumentOptions as gt, DECISION_EVENT_SCHEMA as h, snapshotFromClaims as ht, CSV_COLUMNS as i, context as in, AppProfile as it, ActivateInput as j, APPROVAL_POLICY_UNAVAILABLE as jt, RoleChangeTarget as k, countHolders as kt, accessToOcsf as l, ArazzoStepResult as lt, CREDENTIAL_EVENT_SCHEMA as m, signSnapshot as mt, delegatedPermissions as n, resolveCustomRole as nn, defineApp as nt, OCSF_VERSION as o, ArazzoFinding as ot, CATALOG_EVENT_SCHEMA as p, SignSnapshotOptions as pt, snapshotFor as q, emptySnapshot as qt, catalogFingerprint as r, validateCustomRole as rn, AppOptions as rt, OcsfAuthorizeSession as s, ArazzoPlan as st, coveredByDelegation as t, customRoleClaim as tn, shadowMode as tt, toOcsf as u, arazzoFindings as ut, EVENT_SCHEMA_IDS as v, Holder as vt, parseSinkEvent as w, memoryRelationSource as wt, parseCatalogEventData as x, whoCan as xt, MEMBERSHIP_EVENT_SCHEMA as y, HoldingVia as yt, role as z, findPermission as zt };
|