permdock 0.7.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -3
- package/dist/a2a/index.d.ts +7 -7
- package/dist/a2a/index.js +8 -8
- package/dist/action-result-CL-QCITA.d.ts +19 -0
- package/dist/{adapter-context-CRhqyzCk.js → adapter-context-CIQpQxbE.js} +8 -2
- package/dist/{adoption-scan-D-feE7BE.js → adoption-scan-BLs67P1l.js} +5 -5
- package/dist/agent/index.d.ts +2 -2
- package/dist/agent/index.js +1 -1
- package/dist/ai-sdk/index.d.ts +19 -13
- package/dist/ai-sdk/index.js +6 -6
- package/dist/{app-data-MuyzVqX8.js → app-data-UNNm07jV.js} +10 -7
- package/dist/{approval-header-CJACtHkv.js → approval-header-8QV6MU4H.js} +6 -3
- package/dist/{approval-prompt-Dg5LeAcT.js → approval-prompt-B8hQY69x.js} +5 -6
- package/dist/{approval-prompt-K0faOLFp.d.ts → approval-prompt-PYagyQUj.d.ts} +13 -11
- package/dist/approvals/index.d.ts +4 -4
- package/dist/approvals/index.js +6 -6
- package/dist/{approvals-CMRfsbBh.js → approvals-DnIBTuXE.js} +66 -42
- package/dist/{approvers-CqPOLD-o.js → approvers-B4r0N_Uz.js} +8 -2
- package/dist/{arazzo-ClrF3PVb.js → arazzo-3RhGfkAK.js} +2 -2
- package/dist/{arazzo-rdeJ8n1J.js → arazzo-B5-ulWif.js} +6 -6
- package/dist/{args-CC3OwyHW.js → args-0FrVs5EH.js} +14 -7
- package/dist/astro/index.d.ts +30 -12
- package/dist/astro/index.js +2 -2
- package/dist/{audience-BrMs8c4o.js → audience-BAkBDMqn.js} +8 -8
- package/dist/{auth-CscUX8Sy.js → auth--yPyZNgr.js} +19 -7
- package/dist/authzen/index.d.ts +34 -28
- package/dist/authzen/index.js +23 -20
- package/dist/{automation-DOtAFWdy.d.ts → automation-DqEoWHBc.d.ts} +42 -32
- package/dist/{automation-ySsxp_Yp.js → automation-x3KEUusw.js} +22 -21
- package/dist/better-auth/index.d.ts +2 -2
- package/dist/better-auth/index.js +13 -7
- package/dist/better-supabase/index.d.ts +357 -227
- package/dist/better-supabase/index.js +219 -140
- package/dist/{bind-JDuvxjuW.d.ts → bind-Cp2hBHzP.d.ts} +27 -12
- package/dist/{bind-D1nO6fiC.js → bind-D_sZSVA3.js} +22 -10
- package/dist/{body-CH5of8Ne.js → body-CJQwYVa8.js} +3 -3
- package/dist/{body-text-QcXok_SI.js → body-text-DQhcmqdY.js} +8 -4
- package/dist/{boundary-BM8a_P6E.js → boundary-BV3O1eud.js} +8 -2
- package/dist/{boundary-BmHxVH1J.d.ts → boundary-C9ck-3uK.d.ts} +13 -4
- package/dist/{budget-NbEtbJC_.js → budget-BELja5A9.js} +6 -3
- package/dist/{budget-JqcRqyhK.d.ts → budget-hYsPz_yE.d.ts} +6 -3
- package/dist/{build-instance-DxE7czo9.js → build-instance-CNWaYJyr.js} +3 -3
- package/dist/{capability-L7NnfhiE.js → capability-BqX94r07.js} +31 -25
- package/dist/{capability-D4UC9TTW.d.ts → capability-ChuiONQU.d.ts} +41 -29
- package/dist/{casbin-BW9pS47J.js → casbin-H0rKxBx2.js} +16 -8
- package/dist/{casbin-BHijLuHY.js → casbin-cbSbhT_k.js} +2 -2
- package/dist/{casl-CmJlgziS.js → casl-C4OINZHI.js} +2 -2
- package/dist/{casl-UbI8v-Wq.js → casl-CHHoCldP.js} +19 -10
- package/dist/catalog/index.d.ts +51 -30
- package/dist/catalog/index.js +18 -15
- package/dist/{catalog-D69WhFii.js → catalog-BFpz2EmT.js} +20 -19
- package/dist/{catalog-BaMQfQ6Y.js → catalog-DCspHDc8.js} +3 -3
- package/dist/{catalog-doc-CV9s6B1S.js → catalog-doc-DjMKzJp9.js} +28 -14
- package/dist/{catalog-fingerprint-C144oW4M.js → catalog-fingerprint-e6aCWosn.js} +18 -14
- package/dist/catalog-mRQQQhNK.js +1 -0
- package/dist/catalog-operations-Dadrl7Z-.js +60 -0
- package/dist/{challenge-nGWma08S.js → challenge-DImNcR7B.js} +48 -27
- package/dist/chat/index.d.ts +1 -1
- package/dist/chat/index.js +13 -10
- package/dist/chat-sdk/index.d.ts +44 -26
- package/dist/chat-sdk/index.js +17 -17
- package/dist/{checks-BC_0mPIq.js → checks-CGkP3Z7A.js} +4 -1
- package/dist/{claims-map-7oQ3ue4X.js → claims-map-CKkoAAYF.js} +5 -2
- package/dist/{claims-map-Ca-QX8C6.d.ts → claims-map-D1Pb5oRq.d.ts} +8 -5
- package/dist/claude-agent/index.d.ts +6 -6
- package/dist/claude-agent/index.js +6 -3
- package/dist/clerk/index.d.ts +11 -7
- package/dist/clerk/index.js +6 -6
- package/dist/cli/bin.js +4 -4
- package/dist/cli/index.d.ts +82 -7
- package/dist/cli/index.js +6 -6
- package/dist/{clients-C7zLFuWT.d.ts → clients-C_NOET3z.d.ts} +5 -5
- package/dist/{clients-DjU5ABMy.js → clients-DYr3U86j.js} +3 -3
- package/dist/cloud/index.d.ts +84 -52
- package/dist/cloud/index.js +53 -39
- package/dist/{cloud-CO8pYtwr.js → cloud-BFlGMaak.js} +4 -5
- package/dist/{codemod-i4N2BhDc.js → codemod-DLQ9Zpo4.js} +3 -4
- package/dist/{codemod-BP6n8N9L.js → codemod-DWSN2erG.js} +523 -201
- package/dist/collect-B5BL3klN.js +1 -0
- package/dist/{collect-BaWeMjwV.js → collect-B7ZFAJU3.js} +26 -63
- package/dist/{collect-DNm3oKOk.js → collect-Bzv3le0A.js} +4 -5
- package/dist/{compare-pfyVnBjE.js → compare-DTfyUunF.js} +2 -2
- package/dist/compile/index.d.ts +2 -2
- package/dist/compile/index.js +1 -1
- package/dist/{compile-COM2VKuN.d.ts → compile-BFzysW3o.d.ts} +36 -12
- package/dist/{compile-BAEO5bOk.js → compile-EzEMB-7v.js} +77 -33
- package/dist/{completion-BNdVf7X2.js → completion-saoYiRFO.js} +17 -8
- package/dist/config-BwPBfN0t.js +108 -0
- package/dist/{config-DGZzMV1B.js → config-DBeXXmBF.js} +2 -2
- package/dist/{config-report-Cm7UITNA.js → config-report-BipSWA6V.js} +9 -6
- package/dist/config-shape-ykV0Vm2n.js +134 -0
- package/dist/{connection-DjhIJSs2.js → connection-B72dg5Q2.js} +23 -22
- package/dist/{connector-schema-_VCSsdtD.js → connector-schema-CYLQNMYq.js} +3 -2
- package/dist/{context--uM9V3Ui.js → context-BnIzxTNE.js} +4 -3
- package/dist/convex/index.d.ts +13 -7
- package/dist/convex/index.js +9 -6
- package/dist/{core-B5-w6Kw9.js → core-H-mbhpZc.js} +26 -20
- package/dist/{core-CQkE8Esr.d.ts → core-hWIARPDz.d.ts} +49 -22
- package/dist/{create-UTnUVETj.d.ts → create-BSNrVuxh.d.ts} +70 -37
- package/dist/{create-B2-CQqCI.d.ts → create-BVq1lNQE.d.ts} +49 -28
- package/dist/{create-QHuuPw3q.d.ts → create-CM1FciYG.d.ts} +37 -29
- package/dist/{create-Cb86Z8Im.js → create-Cq4Uox0f.js} +10 -7
- package/dist/{create-DJrlhEp9.js → create-_noSrY1T.js} +15 -21
- package/dist/{credential-CIM7wHwA.js → credential-CyyyvCsL.js} +41 -38
- package/dist/{credentials-BpuTwd7a.js → credentials-CdDxp7jN.js} +6 -6
- package/dist/{deciding-columns-DRo2QM6E.js → deciding-columns-NB4wcyBf.js} +2 -2
- package/dist/{delegation-C5rOdTp5.js → delegation-CDB6_keF.js} +31 -22
- package/dist/delivery/index.d.ts +4 -4
- package/dist/delivery/index.js +5 -5
- package/dist/{delivery-rwOKLWRm.js → delivery-BupfvJIV.js} +34 -22
- package/dist/{delivery-event-xX4obB8F.js → delivery-event-JioK5YbS.js} +6 -6
- package/dist/denied-text-CHNlVInN.d.ts +22 -0
- package/dist/{describe-DZlnEtLy.js → describe-Bb4hGK5d.js} +5 -5
- package/dist/{describe-O0SwYIK8.d.ts → describe-ByS9LgHK.d.ts} +5 -5
- package/dist/{device-BARQ8eYG.js → device-BwbJNmb2.js} +11 -8
- package/dist/{diff-Btr1c1Ow.js → diff-CN8IYhC_.js} +2 -2
- package/dist/{diff-DzT-xD13.js → diff-iZWV65nC.js} +22 -13
- package/dist/{digest-B3kc_PgQ.d.ts → digest-8Yx2CchM.d.ts} +3 -3
- package/dist/{doctor-BU1szn63.js → doctor-CHD1M9R5.js} +287 -135
- package/dist/{doctor-BoK_y0KO.js → doctor-D3wo-yuz.js} +4 -4
- package/dist/drizzle/index.d.ts +33 -19
- package/dist/drizzle/index.js +17 -9
- package/dist/elysia/index.d.ts +17 -11
- package/dist/elysia/index.js +5 -5
- package/dist/{errors-BKy0EfhN.js → errors-B6R_lg2a.js} +13 -4
- package/dist/{errors-BWXBMaKK.d.ts → errors-CHwoRRpB.d.ts} +4 -1
- package/dist/{errors-DpP_U6Bf.js → errors-Vpu6rKHl.js} +13 -10
- package/dist/{errors-B_Qg9D3e.d.ts → errors-zi_4T-rx.d.ts} +22 -6
- package/dist/{evaluate-B_oqFbWC.js → evaluate-Dd8Ta0Ie.js} +140 -78
- package/dist/{evaluations-DReoiVBw.js → evaluations-IBceAeKT.js} +40 -19
- package/dist/{evaluations-BCddEOfO.d.ts → evaluations-z8dQFDaN.d.ts} +11 -5
- package/dist/eve/index.d.ts +9 -6
- package/dist/eve/index.js +4 -4
- package/dist/{event-time-CsegxXxB.js → event-time-BGy48400.js} +8 -4
- package/dist/{expiry-D4_YKRKD.js → expiry-6XByK0dm.js} +8 -5
- package/dist/express/index.d.ts +9 -6
- package/dist/express/index.js +9 -6
- package/dist/fastify/index.d.ts +16 -10
- package/dist/fastify/index.js +8 -5
- package/dist/{fetch-adapter-CuhyYwC1.d.ts → fetch-adapter-C1DCvpqV.d.ts} +9 -6
- package/dist/{fetch-adapter-De-u6vhJ.js → fetch-adapter-JL43jD3E.js} +14 -11
- package/dist/fields-D0vUI6dq.js +498 -0
- package/dist/{files-acUbNwWt.js → files-B3AA05f1.js} +8 -5
- package/dist/{files-D_JIzUrP.js → files-BSjrtIHw.js} +11 -4
- package/dist/{fixtures-BTMW6zgU.js → fixtures-A1_sp_tR.js} +15 -6
- package/dist/{flags-aaeRAdiD.js → flags-DXjoTVbS.js} +2 -2
- package/dist/{freeze-CrU8nQeX.js → freeze-jjan0lCv.js} +4 -1
- package/dist/{from-snapshot-Bz469dIh.js → from-snapshot-DCakWRsr.js} +18 -15
- package/dist/gen-B5kvbAoZ.js +58 -0
- package/dist/gen-DWCYcMQM.js +827 -0
- package/dist/{generate-3FNO5P5Q.js → generate-CRVV5V7l.js} +14 -8
- package/dist/generate-CezbCaTI.js +275 -0
- package/dist/{grantee-BrRANrpT.js → grantee-Dke-9rd1.js} +4 -4
- package/dist/{grantee-conditions-C6P1Tvol.js → grantee-conditions-BrYPe-w0.js} +12 -12
- package/dist/{grantee-match-0RtHWQDx.js → grantee-match-7RZZvoT_.js} +12 -6
- package/dist/{graph-sql-B-dsAT6j.d.ts → graph-sql-BwFC4Qjs.d.ts} +3 -3
- package/dist/h3/index.d.ts +10 -7
- package/dist/h3/index.js +3 -3
- package/dist/headers-B9jQxjtW.d.ts +10 -0
- package/dist/{helpers-DY3vXuGs.js → helpers-DJicaG6f.js} +40 -28
- package/dist/hono/index.d.ts +16 -10
- package/dist/hono/index.js +5 -5
- package/dist/{hosted-BmjzxQhp.d.ts → hosted-Cmtxogd0.d.ts} +33 -21
- package/dist/{hosted-XBgU6RGT.js → hosted-D0IzESu_.js} +42 -21
- package/dist/{http-ujKm0JXE.js → http-DH94eh6f.js} +4 -4
- package/dist/{http-BBoKefeS.js → http-DKLXrFGk.js} +13 -7
- package/dist/{http-Ca3Sr5x1.js → http-DOL33cO0.js} +11 -8
- package/dist/{import-Bz0GefWg.js → import-CST57XLp.js} +64 -51
- package/dist/{import-DB2EG_iy.js → import-_YqhhwvX.js} +6 -6
- package/dist/{index-BSfRl0hZ.d.ts → index-B8s204GL.d.ts} +64 -52
- package/dist/{index-DH9DUDEM.d.ts → index-BT5-1VsX.d.ts} +54 -30
- package/dist/{index-BTkwrK7v.d.ts → index-BW_0MZOS.d.ts} +282 -172
- package/dist/{index-CMiPH2Tv.d.ts → index-BhxEUY9J.d.ts} +64 -37
- package/dist/{index-DLwcuCN_.d.ts → index-Bv5iXPqU.d.ts} +51 -30
- package/dist/{index-BE8y3moU.d.ts → index-_9UiQIkt.d.ts} +127 -82
- package/dist/index.d.ts +22 -22
- package/dist/index.js +33 -33
- package/dist/{init-5TXNji88.js → init-Dz_PsHdv.js} +5 -5
- package/dist/{init-B-4t1NzC.js → init-cE3A8aXq.js} +10 -10
- package/dist/{instance-options-CU0YQCLH.d.ts → instance-options-B0KXqTrJ.d.ts} +4 -4
- package/dist/{instance-snapshot-CjcwnEiV.js → instance-snapshot--JWiTrvO.js} +75 -55
- package/dist/{instant-BluqDvyS.js → instant-DK3Iz83e.js} +2 -2
- package/dist/{internals-Dk8A8fX3.js → internals-B3IgHrvo.js} +6 -3
- package/dist/{json-schema-B-vAwlde.js → json-schema-BPGa-RjQ.js} +9 -3
- package/dist/{json-schema-CN_iLFH2.d.ts → json-schema-BfXgnRNT.d.ts} +4 -4
- package/dist/jwt/index.d.ts +57 -27
- package/dist/jwt/index.js +24 -21
- package/dist/{kernel-DVExUwkp.js → kernel-C-fYydV2.js} +32 -23
- package/dist/kysely/index.d.ts +49 -33
- package/dist/kysely/index.js +9 -7
- package/dist/{live-options-BaAFCIiu.js → live-options-BBIT68le.js} +2 -2
- package/dist/{load-DxroEzH1.js → load-DjSU5KXO.js} +6 -6
- package/dist/load-Dm0pSYH3.js +1 -0
- package/dist/{login-ClSJh5t5.js → login-D-8tMqzo.js} +4 -4
- package/dist/{login-WC9HPJpU.js → login-DplQ0s84.js} +16 -9
- package/dist/{manifest-Dv6q4i5s.js → manifest-Cgiq5oqc.js} +49 -38
- package/dist/{manifest-BVhExYhw.d.ts → manifest-CzzWtnAb.d.ts} +126 -31
- package/dist/{manifest-schema-Cv492Qev.js → manifest-schema-2r37XRhD.js} +44 -3
- package/dist/{manifest-B79YuF2T.js → manifest-wg8WkkpD.js} +6 -6
- package/dist/{map-claims-etGIS_Dv.js → map-claims-BNWCJtmP.js} +14 -8
- package/dist/{map-error-BQGyDm_M.js → map-error-pasIGqMT.js} +7 -7
- package/dist/{markers-C6joDI3o.js → markers-BeHZ4x9Q.js} +20 -5
- package/dist/mcp/index.d.ts +114 -61
- package/dist/mcp/index.js +70 -40
- package/dist/{migrate-Dodel0IJ.js → migrate-B7oP_sQU.js} +35 -17
- package/dist/module-values-BJTBdo6y.js +107 -0
- package/dist/nest/index.d.ts +23 -13
- package/dist/nest/index.js +18 -11
- package/dist/next/client.d.ts +5 -2
- package/dist/next/client.js +1 -1
- package/dist/next/index.d.ts +72 -26
- package/dist/next/index.js +110 -6
- package/dist/next/plugin.d.ts +1 -1
- package/dist/next/plugin.js +4 -3
- package/dist/node/index.d.ts +5 -5
- package/dist/node/index.js +3 -3
- package/dist/{ocsf-BFp-PZZA.js → ocsf-TcjRBgIs.js} +15 -5
- package/dist/openai/index.d.ts +13 -7
- package/dist/openai/index.js +3 -3
- package/dist/openapi/index.d.ts +51 -30
- package/dist/openapi/index.js +2 -2
- package/dist/{openapi-Ddb4628T.js → openapi-BOsx0xn9.js} +33 -18
- package/dist/{openapi-DMocl1bh.js → openapi-CBZUhA3l.js} +4 -5
- package/dist/{openapi-ztVaux6j.js → openapi-VeHHU2l9.js} +23 -14
- package/dist/{operation-findings-kRcEp8lE.js → operation-findings-CXtFzlKJ.js} +3 -3
- package/dist/{operations-BNLes61x.d.ts → operations-Ci_rT6Uo.d.ts} +10 -7
- package/dist/orpc/index.d.ts +68 -14
- package/dist/orpc/index.js +62 -13
- package/dist/otel/index.d.ts +7 -4
- package/dist/otel/index.js +8 -5
- package/dist/output-files-BHOIlrfD.js +1 -0
- package/dist/{output-files-CCMdcFWb.js → output-files-BIQ_9pIs.js} +29 -17
- package/dist/{output-DgSDLrta.js → output-tkju6U7R.js} +9 -5
- package/dist/ownership-B4L59T9u.js +1054 -0
- package/dist/{parse-Ddhz2xf4.js → parse-1_ZheTW5.js} +16 -13
- package/dist/parse-local-manifest-BQhTlLQS.d.ts +10 -0
- package/dist/{parse-local-manifest-T1Q8X3A2.js → parse-local-manifest-DEiCF4ah.js} +19 -7
- package/dist/{parse-request-D_tUXG6M.js → parse-request-CwCZpyjV.js} +7 -8
- package/dist/{paths-DXSHAMIa.js → paths-CUvURzHp.js} +4 -1
- package/dist/pdp/index.d.ts +9 -6
- package/dist/pdp/index.js +20 -13
- package/dist/{peer-DOzzMfZL.js → peer-C9LvBCcb.js} +1 -1
- package/dist/{peer-12Q5I_RH.js → peer-Q0fuZ6hx.js} +9 -3
- package/dist/{permdock-Dco6dyCK.d.ts → permdock-B6Sf4T_S.d.ts} +253 -129
- package/dist/{permdock-BfWEeMqk.js → permdock-L-_I_3zP.js} +59 -35
- package/dist/{permission-registry-DpPtSKNZ.js → permission-registry-B8tYxPIt.js} +23 -10
- package/dist/{permission-types-DhNEmoRG.d.ts → permission-types-CAY-GU7e.d.ts} +127 -41
- package/dist/{permissions-CoqCOfJ3.d.ts → permissions-Bx6UI8n1.d.ts} +6 -3
- package/dist/{permissions-CyH2MV_B.js → permissions-CVXmRILq.js} +3 -3
- package/dist/{permissions-DArULThq.js → permissions-mDcTWoBs.js} +8 -5
- package/dist/pg-DQTqRrou.js +60 -0
- package/dist/{pins-8ILTftC9.js → pins-nqarl3oE.js} +4 -1
- package/dist/{pkce-5h8NgMQJ.js → pkce-CnmmYqUZ.js} +1 -1
- package/dist/{policy-B7dg_yzu.d.ts → policy-Ba4bDhaj.d.ts} +5 -5
- package/dist/{policy-DaJy4nK4.js → policy-CLQ8__GF.js} +43 -23
- package/dist/{policy-from-catalog-DFWYkNdu.js → policy-from-catalog-CJgOm6aq.js} +28 -25
- package/dist/{policy-module-CTlwMvLI.js → policy-module-xym9fnSq.js} +12 -6
- package/dist/{policy-types-B-F-qAZk.d.ts → policy-types-CCiDRZBH.d.ts} +738 -349
- package/dist/{postgres-store-BL9M_CA1.js → postgres-store-DcyrPS-r.js} +43 -16
- package/dist/{postgrest-r5faDIzD.js → postgrest-D4nuPXIQ.js} +52 -33
- package/dist/{postgrest-CYacM_u7.d.ts → postgrest-DicQyqm-.d.ts} +54 -35
- package/dist/{powersync-53ryOZip.js → powersync-DHNQX06W.js} +127 -69
- package/dist/{powersync-13odBwiM.js → powersync-DXqGuq9A.js} +3 -3
- package/dist/powersync-Djf-zCpB.js +1 -0
- package/dist/preset/index.d.ts +38 -28
- package/dist/preset/index.js +1 -1
- package/dist/{preset-CHTbd-DQ.js → preset-BjLzeFpp.js} +56 -32
- package/dist/{principal-source-pHneukrx.js → principal-source-C6N60GtM.js} +10 -10
- package/dist/prisma/index.d.ts +69 -41
- package/dist/prisma/index.js +21 -17
- package/dist/{problem-CTviyH5L.js → problem-BVLHFK33.js} +41 -21
- package/dist/{problem-details-cn5X30gZ.js → problem-details-CLDgX1KV.js} +13 -4
- package/dist/{problem-types-CJ2325SZ.js → problem-types-DSsRfONQ.js} +4 -1
- package/dist/{prompt-DwtVemER.js → prompt-BYc6drYW.js} +4 -1
- package/dist/protected-action-BE7N_Luo.d.ts +58 -0
- package/dist/protected-action-DUYqb-Ma.js +80 -0
- package/dist/{protected-DXE3cQYg.js → protected-action-QEA8arRB.js} +48 -14
- package/dist/{provider-BQsTYYy0.js → provider-C55OGXJ7.js} +5 -4
- package/dist/{provider-Csk-THAn.d.ts → provider-DXfq5c2d.d.ts} +1 -1
- package/dist/{provider-store-IgqQipCO.js → provider-store-CaTv00tr.js} +13 -9
- package/dist/pull-B65ndFNZ.js +1 -0
- package/dist/{pull-CN5OLxrF.js → pull-CwpGaQSi.js} +12 -11
- package/dist/{push-tVdG8dUL.js → push-DgssgzkK.js} +19 -13
- package/dist/{pushed-policy-BbcY9r_4.d.ts → pushed-policy-D1Eoi6NM.d.ts} +12 -6
- package/dist/{pushed-policy-CmYeSQqq.js → pushed-policy-ITwYKvvH.js} +10 -7
- package/dist/react/index.d.ts +9 -8
- package/dist/react/index.js +7 -6
- package/dist/react/provider-client.d.ts +1 -1
- package/dist/react/provider-client.js +1 -1
- package/dist/react-native/index.d.ts +94 -55
- package/dist/react-native/index.js +200 -61
- package/dist/{refs-CNJBiTFo.js → refs-C8BKxc_e.js} +2 -2
- package/dist/{relation-walk-3OyDBF0S.js → relation-walk-DK_gkgL7.js} +12 -9
- package/dist/{relations-BnCWnJGI.js → relations-BxvRvDHK.js} +3 -3
- package/dist/{replay-Du1tJjG7.js → replay-BU09ad4L.js} +1 -1
- package/dist/{replay-DCDD_ZfL.d.ts → replay-DNftIb_R.d.ts} +1 -1
- package/dist/{request-context-BykKLmyE.js → request-context-C25ilqiJ.js} +8 -8
- package/dist/{request-schema-CMreVuFM.js → request-schema-DhX7UbfQ.js} +4 -1
- package/dist/resend/index.d.ts +34 -28
- package/dist/resend/index.js +29 -29
- package/dist/resolve-names-CF7xXLSG.js +201 -0
- package/dist/{resource-relations-D_jw0BFx.js → resource-relations-8-pCScBO.js} +18 -9
- package/dist/{retire-Wj6dkyDE.js → retire-B2xffQgY.js} +15 -6
- package/dist/{revocations-R07lFBnX.d.ts → revocations-BaUXHM1N.d.ts} +6 -3
- package/dist/{rls-CxBZb4rZ.js → rls-CNEH2_BG.js} +299 -124
- package/dist/{rls-Ck_PocSp.js → rls-Ca8Jz9b5.js} +13 -6
- package/dist/{role-builder-C1VJzvcr.js → role-builder-BK2-T6oD.js} +41 -20
- package/dist/{row-conditions-h2HythXQ.js → row-conditions-BAGHOmVq.js} +4 -3
- package/dist/{rpc-Bk1bE-ch.js → rpc-fNqAIqQk.js} +8 -5
- package/dist/{run-uLD2aWuO.js → run-Bz26OTfO.js} +26 -23
- package/dist/run-D-JE8QWb.js +1 -0
- package/dist/{run-ticket-BpNi7BCi.d.ts → run-ticket-DbWI9f99.d.ts} +29 -14
- package/dist/{run-ticket-B5d_63Ma.js → run-ticket-Dv7aF7Dk.js} +9 -9
- package/dist/{runtime-Vif3_-zf.js → runtime-BGnrOkVH.js} +5 -2
- package/dist/{saas-Az_Kz-4D.js → saas-iWnUdwCt.js} +42 -29
- package/dist/{scan-DSljDE1Y.js → scan-DCj1KQfn.js} +1 -1
- package/dist/{schema-B4v0Qrac.js → schema-BOJjqlWL.js} +3 -2
- package/dist/{schema-gIcCx7zM.js → schema-Dst9I9Gs.js} +8 -4
- package/dist/scim/index.d.ts +2 -2
- package/dist/scim/index.js +2 -2
- package/dist/{scim-C7JYhySg.js → scim-D8YupzX1.js} +2 -2
- package/dist/{scim-YNieBO1U.js → scim-jJBJ7g1Z.js} +33 -15
- package/dist/{scopes-BHsc-wp-.js → scopes-0Up_UA2t.js} +41 -23
- package/dist/server/index.d.ts +11 -11
- package/dist/server/index.js +12 -12
- package/dist/{server-Bnga6I50.js → server-3cVlTLde.js} +31 -31
- package/dist/{server-types-C4gZUEZy.d.ts → server-types-CIlpSA2G.d.ts} +81 -46
- package/dist/{sha256-D9ihqmvd.js → sha256-C-4WXKIu.js} +4 -3
- package/dist/{shared-fMKOv8hP.js → shared-Afctg7B0.js} +65 -32
- package/dist/{shared-C8LjUdVU.js → shared-l0oGGetg.js} +9 -6
- package/dist/{signals-D3NcTKUS.js → signals-B1vHR3fN.js} +2 -2
- package/dist/{sink-BEZSlMS_.js → sink-D9_vh372.js} +32 -21
- package/dist/{sink-Cp_Eot9W.d.ts → sink-Dvi7YZG_.d.ts} +44 -20
- package/dist/{skills-Dcjw9_1C.js → skills-Bjj7BNEQ.js} +12 -8
- package/dist/{skills-g_3BS9NC.js → skills-OuoMR49L.js} +3 -3
- package/dist/{snapshot-CbGmYiJx.js → snapshot-CXlzi69u.js} +21 -18
- package/dist/{snapshot-cache-Pahd3IYJ.d.ts → snapshot-cache-BAXZ0KOp.d.ts} +21 -12
- package/dist/{snapshot-cache-DT2Kx1F8.js → snapshot-cache-Bx_4xC_6.js} +14 -11
- package/dist/solid/index.d.ts +55 -16
- package/dist/solid/index.js +46 -12
- package/dist/solid-start/index.d.ts +30 -12
- package/dist/solid-start/index.js +3 -3
- package/dist/{sources-DEEuGb8S.d.ts → sources-B1Os_YUu.d.ts} +126 -53
- package/dist/{sources-B-zYB4GS.js → sources-CMAM-2A3.js} +46 -27
- package/dist/{sql-B96movIM.js → sql-0WjxIp9g.js} +28 -7
- package/dist/{sql-CDEPCA0g.d.ts → sql-B80DFdpG.d.ts} +2 -2
- package/dist/{src-DLFrtrrC.js → src-DZ0l9UAg.js} +190 -100
- package/dist/ssf/index.d.ts +3 -3
- package/dist/ssf/index.js +47 -35
- package/dist/{standard-webhooks-B_qRg0ws.d.ts → standard-webhooks-C-qX4mJW.d.ts} +7 -7
- package/dist/{standard-webhooks-DgFFD-Ga.js → standard-webhooks-D67a3nzk.js} +5 -5
- package/dist/{store-DSP9oGvh.js → store-RNFvaJJv.js} +32 -26
- package/dist/{store-options-B_poyYvg.js → store-options-Dil3lraY.js} +105 -15
- package/dist/stores-C0Kta5Ft.d.ts +59 -0
- package/dist/{stores-BqEuHC05.js → stores-DxZWDXCs.js} +42 -5
- package/dist/{stream-CvdUS9V1.js → stream-CDvF0sJm.js} +5 -5
- package/dist/{stream-2Vwhl7Er.d.ts → stream-ltuLdtTG.d.ts} +4 -3
- package/dist/{style-Ds1gNm77.js → style-DblOtSga.js} +1 -1
- package/dist/{style-Cqo7-73x.js → style-Ds11Hmk4.js} +2 -1
- package/dist/{subject-settings-CkEwrw3W.js → subject-settings-8sH5HlII.js} +8 -4
- package/dist/{row-check-Dt35czLy.d.ts → subject-settings-vNW8qmUH.d.ts} +30 -18
- package/dist/supabase/index.d.ts +48 -38
- package/dist/supabase/index.js +5 -5
- package/dist/supabase/middleware.d.ts +19 -13
- package/dist/supabase/middleware.js +7 -7
- package/dist/{supabase--0aJdLEd.js → supabase-BL1qJzzY.js} +79 -35
- package/dist/{supabase-Bqp7iIY2.js → supabase-D39cuGPt.js} +3 -3
- package/dist/{supabase-hook-Dg0SrQWR.js → supabase-hook-B-yXnzUl.js} +175 -196
- package/dist/supabase-hook-H-MtE9Wd.js +1 -0
- package/dist/{supautils-MESd81bF.js → supautils-BU-pAEpf.js} +166 -47
- package/dist/{support-session-Cna49-3f.js → support-session-BsmPCbz8.js} +21 -21
- package/dist/svelte/PermissionBoundary.svelte +2 -6
- package/dist/svelte/Protected.svelte +2 -8
- package/dist/svelte/index.d.ts +9 -8
- package/dist/svelte/index.js +10 -9
- package/dist/svelte/runtime.d.ts +4 -4
- package/dist/svelte/runtime.js +4 -4
- package/dist/svelte/source.d.ts +9 -8
- package/dist/svelte/source.js +6 -5
- package/dist/sveltekit/index.d.ts +30 -12
- package/dist/sveltekit/index.js +2 -2
- package/dist/{ownership-Z2LpxsGa.js → tables-DeMNEy6V.js} +641 -1104
- package/dist/tanstack-start/index.d.ts +22 -10
- package/dist/tanstack-start/index.js +2 -2
- package/dist/{target-Bw37TFNA.js → target-qdEAnnhU.js} +6 -6
- package/dist/{tenancy-CmeBQ6Nv.js → tenancy-5d1zVBvK.js} +25 -19
- package/dist/terminal/index.d.ts +23 -14
- package/dist/terminal/index.js +17 -20
- package/dist/testing/core.d.ts +1 -1
- package/dist/testing/core.js +1 -1
- package/dist/testing/fixtures/index.d.ts +8 -5
- package/dist/testing/fixtures/index.js +78 -17
- package/dist/testing/index.d.ts +224 -141
- package/dist/testing/index.js +299 -234
- package/dist/testing/saas/index.d.ts +43 -27
- package/dist/testing/saas/index.js +2 -2
- package/dist/testing/saas/permissions.d.ts +1 -1
- package/dist/testing/saas/permissions.js +1 -1
- package/dist/{text-diff-DhITNCnD.js → text-diff-BtfSmdUo.js} +2 -2
- package/dist/{thenable-yD7SabqG.js → thenable-BNSM1U2R.js} +12 -3
- package/dist/{time-DkWjdL98.js → time-nR1JesoH.js} +32 -8
- package/dist/{token-2qYDvXz2.js → token-DC9EQiet.js} +14 -12
- package/dist/{tool-refusal-reAhIzdl.js → tool-refusal-Qpjs_W6M.js} +5 -2
- package/dist/trpc/index.d.ts +11 -8
- package/dist/trpc/index.js +15 -9
- package/dist/type-helpers-BIPIDa6a.d.ts +50 -0
- package/dist/{types-DBHftjgS.d.ts → types-AMJ5qoU_.d.ts} +45 -33
- package/dist/{types-CfiKC5aN.d.ts → types-B2mlGuhW.d.ts} +14 -11
- package/dist/{types-D3A19w4A.d.ts → types-B4uqKDnp.d.ts} +22 -13
- package/dist/{types-CQVEQawv.d.ts → types-BJk0BKRX.d.ts} +24 -14
- package/dist/types-B_d_g7T3.d.ts +262 -0
- package/dist/{types-DC44-hqb.d.ts → types-B_tiYvk8.d.ts} +59 -32
- package/dist/{types-DqzsnlSA.js → types-CcUXciSj.js} +17 -5
- package/dist/{types-BWZybqs9.d.ts → types-DC1Loeh3.d.ts} +381 -202
- package/dist/{types-CIeZcG8v.d.ts → types-DHKPcqzr.d.ts} +2 -2
- package/dist/{types-cTos-H7p.d.ts → types-DjuMBNF9.d.ts} +68 -32
- package/dist/{types-CeIscIKp.d.ts → types-HzqOtvsJ.d.ts} +23 -12
- package/dist/{types-BXMYB7BY.d.ts → types-ZzRGoViD.d.ts} +77 -24
- package/dist/{types-BfVmNJO5.d.ts → types-ah9NlU6j.d.ts} +128 -50
- package/dist/{types-DXmwu78Z.d.ts → types-djVzLlIV.d.ts} +31 -14
- package/dist/{types-g7Oy6Zg4.d.ts → types-yUuPR5Hy.d.ts} +47 -24
- package/dist/unplugin/index.d.ts +1 -1
- package/dist/unplugin/index.js +2 -2
- package/dist/usage-CYeXek0p.js +1 -0
- package/dist/{usage-Bybmck7f.js → usage-CxEzS4ey.js} +50 -26
- package/dist/{usage-CDaLXCfL.js → usage-ab0PdusX.js} +2 -2
- package/dist/{validation-error-ZfUHbKvf.js → validation-error-CYg2kJEw.js} +4 -1
- package/dist/{validation-error-CQpoquwj.d.ts → validation-error-YGg2mXyH.d.ts} +5 -2
- package/dist/{validity-CZ7-y0Cj.js → validity-Buc7w8E9.js} +13 -10
- package/dist/{verifier-DHuh-okk.js → verifier-DUV6pLqZ.js} +10 -4
- package/dist/{verify-pe8rL_Qw.js → verify-DZeqoWu5.js} +148 -487
- package/dist/version-DMQ0dnN5.js +48 -0
- package/dist/version-DizhmD72.js +1 -0
- package/dist/{views-BB8E9dTP.js → views-CD8wuL4Z.js} +19 -6
- package/dist/{vocabulary-Bg3eeT2H.d.ts → vocabulary-DEJ5j4mR.d.ts} +7 -4
- package/dist/vue/index.d.ts +71 -22
- package/dist/vue/index.js +50 -13
- package/dist/{waiter-DwEyouan.d.ts → waiter-Bu9zAlE0.d.ts} +13 -10
- package/dist/{waiter-BGUtGYoU.js → waiter-aBLM63_f.js} +1 -1
- package/dist/{watch-C-4VmFlL.js → watch-Cx_WciLE.js} +8 -8
- package/dist/watch-DB42U1ib.js +1 -0
- package/dist/webmcp/index.d.ts +11 -11
- package/dist/webmcp/index.js +8 -5
- package/dist/{where-scope-wq2coopv.js → where-scope-DlCdCM_8.js} +24 -18
- package/dist/{who-can-BwNsI_Js.js → who-can-rI7dCR9Q.js} +23 -20
- package/dist/workflow/index.d.ts +3 -3
- package/dist/workflow/index.js +13 -13
- package/dist/workflow-sdk/index.d.ts +19 -13
- package/dist/workflow-sdk/index.js +6 -6
- package/dist/{wrap-CiSc_KCq.js → wrap-B2wziJI_.js} +4 -4
- package/dist/{wrap-B6R0cMRL.d.ts → wrap-DlJE3gS_.d.ts} +8 -5
- package/package.json +7 -7
- package/schemas/catalog-v1.json +3 -0
- package/schemas/supabase-manifest-v1.json +33 -1
- package/skills/permdock-credentials/references/tokens-keys-links.md +8 -6
- package/skills/permdock-data/references/queries-and-rls.md +2 -1
- package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +2 -2
- package/skills/permdock-wire/references/adapters.md +14 -22
- package/dist/catalog-BCCjSAdH.js +0 -1
- package/dist/collect-k_Dulxr5.js +0 -1
- package/dist/config-CoQHDrDi.js +0 -166
- package/dist/denied-text-D4qkEtFz.d.ts +0 -19
- package/dist/fields-ClcQLrVc.js +0 -238
- package/dist/generate-CNU1pIOo.js +0 -171
- package/dist/headers-BIjfMaoC.js +0 -8
- package/dist/headers-CIbDTUTK.d.ts +0 -7
- package/dist/load-DrMHXzgN.js +0 -1
- package/dist/output-files-DPAY7-GX.js +0 -1
- package/dist/package-root-Dk_ETdkp.js +0 -31
- package/dist/parse-local-manifest-e4mdwAKd.d.ts +0 -10
- package/dist/policies-B2lZIurj.js +0 -295
- package/dist/powersync-CExtTLyA.js +0 -1
- package/dist/problem-details-Tcfmj3bV.d.ts +0 -7
- package/dist/protected-BwZYL1X_.d.ts +0 -39
- package/dist/pull-Cty6Ovyu.js +0 -1
- package/dist/run-Bz7DXGEv.js +0 -1
- package/dist/stores-BAZwSYZA.d.ts +0 -31
- package/dist/supabase-hook-DJxC4PoP.js +0 -1
- package/dist/types-CKV71kKh.d.ts +0 -172
- package/dist/usage-y-kBNdqs.js +0 -1
- package/dist/version-CEbQ5UeM.js +0 -18
- package/dist/version-DXkYUISx.js +0 -1
- package/dist/watch-Bd9mx3rd.js +0 -1
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { G as CustomRoleSourceFactory, Gt as Snapshot, Hn as ExplainedDecision, J as EntitlementSource, Kn as Obligation, Ln as Decision, Q as LimitStore, Rt as Instant, T as Policy, W as CustomRoleSource, Wn as LimitDetail, Zn as Actor, Zt as AuthEvent, _ as GrantLimit, at as SettingsSource, en as DecisionEvent, et as MembershipSource, fn as Scope, fr as AdapterId, h as Grant, i as ApprovalOption, it as RelationSource, j as PolicyVocabulary, lr as Subject, mr as Condition, or as Membership, q as DecisionSink, qn as Quota, rr as Delegation, sr as Principal, ut as TokenSigner } from "./policy-types-
|
|
2
|
-
import {
|
|
3
|
-
import { a as RoleTree, n as PlanTree, r as Role } from "./vocabulary-
|
|
4
|
-
import { i as OperationEffect, s as OperationMeta, t as Operation, u as OperationRisk } from "./operations-
|
|
5
|
-
import { a as HostedPolicies } from "./hosted-
|
|
1
|
+
import { G as CustomRoleSourceFactory, Gt as Snapshot, Hn as ExplainedDecision, J as EntitlementSource, Kn as Obligation, Ln as Decision, Q as LimitStore, Rt as Instant, T as Policy, W as CustomRoleSource, Wn as LimitDetail, Zn as Actor, Zt as AuthEvent, _ as GrantLimit, at as SettingsSource, en as DecisionEvent, et as MembershipSource, fn as Scope, fr as AdapterId, h as Grant, i as ApprovalOption, it as RelationSource, j as PolicyVocabulary, lr as Subject, mr as Condition, or as Membership, q as DecisionSink, qn as Quota, rr as Delegation, sr as Principal, ut as TokenSigner } from "./policy-types-CCiDRZBH.js";
|
|
2
|
+
import { D as RowOf, M as AppData, b as ResourceNode, u as Permission } from "./permission-types-CAY-GU7e.js";
|
|
3
|
+
import { a as RoleTree, n as PlanTree, r as Role } from "./vocabulary-DEJ5j4mR.js";
|
|
4
|
+
import { i as OperationEffect, s as OperationMeta, t as Operation, u as OperationRisk } from "./operations-Ci_rT6Uo.js";
|
|
5
|
+
import { a as HostedPolicies } from "./hosted-Cmtxogd0.js";
|
|
6
6
|
//#region src/core/approval-policies.d.ts
|
|
7
7
|
/**
|
|
8
|
-
* One approval requirement kept as data, for a tenant or the whole platform.
|
|
9
|
-
*
|
|
8
|
+
* One approval requirement kept as data, for a tenant or the whole platform. It
|
|
9
|
+
* adds to what the code requires and never removes a requirement.
|
|
10
10
|
*/
|
|
11
11
|
type ApprovalPolicy = {
|
|
12
12
|
/**
|
|
@@ -14,15 +14,27 @@ type ApprovalPolicy = {
|
|
|
14
14
|
* permission, which needs `risk` or `effects`.
|
|
15
15
|
*/
|
|
16
16
|
readonly permission?: string;
|
|
17
|
-
/**
|
|
17
|
+
/**
|
|
18
|
+
* Matches an operation call whose `meta.risk` is one of these; a call that
|
|
19
|
+
* names no operation never matches.
|
|
20
|
+
*/
|
|
18
21
|
readonly risk?: readonly OperationRisk[];
|
|
19
|
-
/**
|
|
22
|
+
/**
|
|
23
|
+
* Matches an operation call whose `meta.effects` includes one of these; a
|
|
24
|
+
* call that names no operation never matches.
|
|
25
|
+
*/
|
|
20
26
|
readonly effects?: readonly OperationEffect[];
|
|
21
27
|
/** Absent: every tenant. */
|
|
22
28
|
readonly tenant?: string;
|
|
23
|
-
/**
|
|
29
|
+
/**
|
|
30
|
+
* Actor kinds it applies to (`['agent']`); absent: every call. A call without
|
|
31
|
+
* an actor never matches a list.
|
|
32
|
+
*/
|
|
24
33
|
readonly actors?: readonly string[];
|
|
25
|
-
/**
|
|
34
|
+
/**
|
|
35
|
+
* A portable condition over the row; instance permissions only, since a
|
|
36
|
+
* collection action has no row.
|
|
37
|
+
*/
|
|
26
38
|
readonly where?: Condition;
|
|
27
39
|
/** A portable condition over the call's input (the proposed row). */
|
|
28
40
|
readonly check?: Condition;
|
|
@@ -34,18 +46,21 @@ type ApprovalPolicy = {
|
|
|
34
46
|
};
|
|
35
47
|
/**
|
|
36
48
|
* Data-driven approval requirements, a subject input like `CustomRoleSource`:
|
|
37
|
-
* read once per instance for the subject's tenants (entries without a
|
|
38
|
-
*
|
|
39
|
-
*
|
|
49
|
+
* read once per instance for the subject's tenants (entries without a tenant
|
|
50
|
+
* always apply). A throw, a rejected promise or an invalid entry denies every
|
|
51
|
+
* call an allow would otherwise permit.
|
|
40
52
|
*/
|
|
41
53
|
type ApprovalPolicySource = {
|
|
42
54
|
/** Names the implementation in errors and events. */
|
|
43
55
|
readonly name?: string;
|
|
44
|
-
approvalPoliciesFor(query: {
|
|
56
|
+
approvalPoliciesFor: (query: {
|
|
45
57
|
readonly tenants: readonly string[];
|
|
46
|
-
})
|
|
58
|
+
}) => readonly ApprovalPolicy[] | Promise<readonly ApprovalPolicy[]>;
|
|
47
59
|
};
|
|
48
|
-
/**
|
|
60
|
+
/**
|
|
61
|
+
* The denial detail when an `ApprovalPolicySource` fails: every call an allow
|
|
62
|
+
* would grant denies with reason `approval`.
|
|
63
|
+
*/
|
|
49
64
|
/**
|
|
50
65
|
* The in-process `ApprovalPolicySource`, usable directly as the
|
|
51
66
|
* `approvalPolicies` option: it is the source and its feature at once.
|
|
@@ -74,9 +89,9 @@ type LoadedApprovalPolicies = {
|
|
|
74
89
|
readonly tighten: (code: Grant["approval"], input: TightenInput) => Grant["approval"];
|
|
75
90
|
} | "failed";
|
|
76
91
|
/**
|
|
77
|
-
* Approval policies kept as data, as an instance option:
|
|
78
|
-
*
|
|
79
|
-
*
|
|
92
|
+
* Approval policies kept as data, as an instance option: `approvalPolicies:
|
|
93
|
+
* approvalPolicies(source)`. The loading and tightening code ships only with an
|
|
94
|
+
* app that imports this function.
|
|
80
95
|
*/
|
|
81
96
|
type ApprovalPolicies = {
|
|
82
97
|
readonly feature: "approval-policies";
|
|
@@ -84,11 +99,11 @@ type ApprovalPolicies = {
|
|
|
84
99
|
};
|
|
85
100
|
declare function approvalPolicies(source: ApprovalPolicySource): ApprovalPolicies;
|
|
86
101
|
/**
|
|
87
|
-
* Why an `ApprovalPolicy` entry does not load. `unknown-permission`: the
|
|
88
|
-
*
|
|
89
|
-
*
|
|
90
|
-
* `where-on-collection`: `where` reads a row, which a collection action
|
|
91
|
-
*
|
|
102
|
+
* Why an `ApprovalPolicy` entry does not load. `unknown-permission`: the policy
|
|
103
|
+
* declares no such key (the entry applies to nothing). `invalid`: a field has
|
|
104
|
+
* the wrong shape or the approval option does not normalise.
|
|
105
|
+
* `where-on-collection`: `where` reads a row, which a collection action never
|
|
106
|
+
* has, so the entry could never match; use `check` over the input.
|
|
92
107
|
* `stale-on-without-version`: `staleOn` needs an instance permission whose
|
|
93
108
|
* resource declares `version`.
|
|
94
109
|
*/
|
|
@@ -100,16 +115,16 @@ type ApprovalPolicyValidation = {
|
|
|
100
115
|
readonly problem: ApprovalPolicyProblem;
|
|
101
116
|
};
|
|
102
117
|
/**
|
|
103
|
-
* Checks one entry against the policy the way `approvalPoliciesFor` loads
|
|
104
|
-
*
|
|
105
|
-
*
|
|
118
|
+
* Checks one entry against the policy the way `approvalPoliciesFor` loads it,
|
|
119
|
+
* for an application to refuse a bad entry when it is saved instead of finding
|
|
120
|
+
* every call denied. Never throws.
|
|
106
121
|
*/
|
|
107
122
|
declare function validateApprovalPolicy(policy: Policy, entry: unknown): ApprovalPolicyValidation;
|
|
108
123
|
/**
|
|
109
|
-
* `code` with every matching entry added as further stages: the result
|
|
110
|
-
*
|
|
111
|
-
*
|
|
112
|
-
*
|
|
124
|
+
* `code` with every matching entry added as further stages: the result needs
|
|
125
|
+
* all of them (`'sequential'` when any part is ordered), keeps the code's
|
|
126
|
+
* escalation, the shortest `ttl`, and `distinct` unless every part opts out.
|
|
127
|
+
* Without a matching entry, `code` unchanged.
|
|
113
128
|
*/
|
|
114
129
|
declare function tightenApproval(code: Grant["approval"], entries: readonly LoadedApprovalPolicy[], input: {
|
|
115
130
|
readonly permission: string;
|
|
@@ -124,13 +139,16 @@ declare function tightenApproval(code: Grant["approval"], entries: readonly Load
|
|
|
124
139
|
}): Grant["approval"];
|
|
125
140
|
//#endregion
|
|
126
141
|
//#region src/core/checks.d.ts
|
|
127
|
-
/**
|
|
142
|
+
/**
|
|
143
|
+
* One check of `canAll` or `decideAll`: a permission alone, or with the row it
|
|
144
|
+
* is checked on.
|
|
145
|
+
*/
|
|
128
146
|
type PermissionCheck = Permission | readonly [permission: Permission, data?: unknown];
|
|
129
147
|
//#endregion
|
|
130
148
|
//#region src/core/limits.d.ts
|
|
131
149
|
declare function memoryLimitStore(): LimitStore & {
|
|
132
150
|
/** Live counters, for tests and diagnostics. */
|
|
133
|
-
size()
|
|
151
|
+
size: () => number;
|
|
134
152
|
};
|
|
135
153
|
type QuotaVerdict = {
|
|
136
154
|
readonly ok: true;
|
|
@@ -144,7 +162,10 @@ type QuotaVerdict = {
|
|
|
144
162
|
readonly ok: false;
|
|
145
163
|
readonly reason: "limit-unavailable";
|
|
146
164
|
};
|
|
147
|
-
/**
|
|
165
|
+
/**
|
|
166
|
+
* What the quota stage of `evaluate` asks about one allow whose grant has a
|
|
167
|
+
* `limit`.
|
|
168
|
+
*/
|
|
148
169
|
type QuotaInput = {
|
|
149
170
|
readonly cache: Map<string, number>;
|
|
150
171
|
readonly limit: GrantLimit;
|
|
@@ -180,7 +201,10 @@ type PrincipalIdentity = {
|
|
|
180
201
|
readonly kind: "email" | "chat";
|
|
181
202
|
/** The chat platform (`slack`, `teams`, …); absent for email. */
|
|
182
203
|
readonly provider?: string;
|
|
183
|
-
/**
|
|
204
|
+
/**
|
|
205
|
+
* The address (RFC 5322 `addr-spec`) or the platform user id. Emails compare
|
|
206
|
+
* trimmed and case-insensitively.
|
|
207
|
+
*/
|
|
184
208
|
readonly value: string;
|
|
185
209
|
/** The chat workspace or team id. */
|
|
186
210
|
readonly workspace?: string;
|
|
@@ -193,94 +217,143 @@ type PrincipalIdentity = {
|
|
|
193
217
|
type PrincipalSource<TPrincipal extends Principal = Principal> = {
|
|
194
218
|
/** Names the implementation in errors and events. */
|
|
195
219
|
readonly name?: string;
|
|
196
|
-
/**
|
|
197
|
-
|
|
220
|
+
/**
|
|
221
|
+
* The principal as of this request, or `null` for one deleted, suspended or
|
|
222
|
+
* unknown.
|
|
223
|
+
*/
|
|
224
|
+
principal: (id: string, options?: {
|
|
198
225
|
readonly tenant?: string;
|
|
199
|
-
})
|
|
200
|
-
/**
|
|
201
|
-
|
|
226
|
+
}) => TPrincipal | null | Promise<TPrincipal | null>;
|
|
227
|
+
/**
|
|
228
|
+
* The principal an app-owned identity link points to, or `null` when none
|
|
229
|
+
* does.
|
|
230
|
+
*/
|
|
231
|
+
principalByIdentity?: (identity: PrincipalIdentity) => TPrincipal | null | Promise<TPrincipal | null>;
|
|
202
232
|
};
|
|
203
|
-
/**
|
|
233
|
+
/**
|
|
234
|
+
* One `memoryPrincipalSource` identity link: `identity` resolves to the
|
|
235
|
+
* principal with id `principal`.
|
|
236
|
+
*/
|
|
204
237
|
type PrincipalIdentityLink = {
|
|
205
238
|
readonly identity: PrincipalIdentity;
|
|
206
239
|
readonly principal: string;
|
|
207
240
|
};
|
|
208
241
|
/**
|
|
209
|
-
* In-process principals for tests and single-replica apps. `identities`
|
|
210
|
-
*
|
|
211
|
-
*
|
|
242
|
+
* In-process principals for tests and single-replica apps. `identities` links
|
|
243
|
+
* an email or chat identity to a principal id; each answer is a fresh frozen
|
|
244
|
+
* copy. `tenant` is not a filter, as for a database source.
|
|
212
245
|
*/
|
|
213
246
|
declare function memoryPrincipalSource<TPrincipal extends Principal>(input: {
|
|
214
247
|
readonly principals: readonly TPrincipal[];
|
|
215
248
|
readonly identities?: readonly PrincipalIdentityLink[];
|
|
216
249
|
}): PrincipalSource<TPrincipal> & {
|
|
217
|
-
principalByIdentity(identity: PrincipalIdentity)
|
|
250
|
+
principalByIdentity: (identity: PrincipalIdentity) => TPrincipal | null;
|
|
218
251
|
};
|
|
219
252
|
//#endregion
|
|
220
253
|
//#region src/core/validation.d.ts
|
|
221
254
|
type Boundary = "http-body" | "mcp-args" | "tool-args" | "decision-endpoint" | "manual";
|
|
222
255
|
//#endregion
|
|
223
256
|
//#region src/core/permdock.d.ts
|
|
224
|
-
/**
|
|
257
|
+
/**
|
|
258
|
+
* Rows the server loaded for `decideIds`: by id, or a list carrying the
|
|
259
|
+
* resource id field.
|
|
260
|
+
*/
|
|
225
261
|
type LoadedRows = ReadonlyMap<string, unknown> | readonly unknown[];
|
|
226
262
|
type DecideIdsOptions = Omit<DecideOptions, "trusted" | "boundary"> & {
|
|
227
263
|
/** Loads the rows for `ids`; ids it leaves out are denied with `validation`. */
|
|
228
264
|
readonly data: (ids: readonly string[]) => LoadedRows | Promise<LoadedRows>;
|
|
229
265
|
};
|
|
230
266
|
type DecideOptions = {
|
|
231
|
-
/**
|
|
267
|
+
/**
|
|
268
|
+
* `true` skips schema validation for a row the server loaded itself.
|
|
269
|
+
* Otherwise `data` is validated against the resource schema first (`validate:
|
|
270
|
+
* 'boundary'`), and a failure denies with reason `validation`.
|
|
271
|
+
*/
|
|
232
272
|
readonly trusted?: boolean;
|
|
233
|
-
/**
|
|
273
|
+
/**
|
|
274
|
+
* Where untrusted data came from, reported on validation errors. Defaults to
|
|
275
|
+
* `'manual'`.
|
|
276
|
+
*/
|
|
234
277
|
readonly boundary?: Boundary;
|
|
235
|
-
/**
|
|
278
|
+
/**
|
|
279
|
+
* Decision clock, for expiries and limits; a `Temporal.Instant` fits.
|
|
280
|
+
* Defaults to the current time.
|
|
281
|
+
*/
|
|
236
282
|
readonly now?: Instant;
|
|
237
|
-
/**
|
|
283
|
+
/**
|
|
284
|
+
* The call that produced the decision, reported on the decision event.
|
|
285
|
+
* Defaults to `'decide'`.
|
|
286
|
+
*/
|
|
238
287
|
readonly call?: DecisionEvent["call"];
|
|
239
288
|
/** The adapter that made the call, reported on the decision event. */
|
|
240
289
|
readonly adapter?: AdapterId;
|
|
241
|
-
/**
|
|
290
|
+
/**
|
|
291
|
+
* The model id the decision is about or that drove the call
|
|
292
|
+
* (`'openai/gpt-5'`), reported on the decision event. Never read when
|
|
293
|
+
* deciding.
|
|
294
|
+
*/
|
|
242
295
|
readonly model?: string;
|
|
243
|
-
/**
|
|
296
|
+
/**
|
|
297
|
+
* Per-call unauthorized handler for `assert`; runs before instance and policy
|
|
298
|
+
* handlers.
|
|
299
|
+
*/
|
|
244
300
|
readonly onDenied?: (decision: Decision) => never | void;
|
|
245
301
|
/** The field being read or written; only grants whose `fields` cover it match. */
|
|
246
302
|
readonly field?: string;
|
|
247
|
-
/**
|
|
303
|
+
/**
|
|
304
|
+
* `true` attaches a `trace` to the decision: the grants evaluated, matched
|
|
305
|
+
* and skipped. Off by default and free when off.
|
|
306
|
+
*/
|
|
248
307
|
readonly explain?: boolean;
|
|
249
308
|
/**
|
|
250
309
|
* A declared scope name: only memberships of that scope answer the check.
|
|
251
|
-
* Naming the first scope keeps nested memberships out of a tenant-level
|
|
252
|
-
*
|
|
253
|
-
*
|
|
310
|
+
* Naming the first scope keeps nested memberships out of a tenant-level guard
|
|
311
|
+
* on a collection action. Global roles still apply; resource roles and
|
|
312
|
+
* memberships of other scopes are skipped with reason `scope`.
|
|
254
313
|
*/
|
|
255
314
|
readonly scope?: string;
|
|
256
315
|
/**
|
|
257
316
|
* The operation the call decides, for `ApprovalPolicySource` entries that
|
|
258
|
-
* match on `meta.risk` and `meta.effects`. Surfaces that decide an
|
|
259
|
-
*
|
|
317
|
+
* match on `meta.risk` and `meta.effects`. Surfaces that decide an operation
|
|
318
|
+
* (agent tools, workflow steps, `protect(operation)`) pass it.
|
|
260
319
|
*/
|
|
261
320
|
readonly operation?: Pick<Operation, "name" | "meta">;
|
|
262
321
|
/**
|
|
263
322
|
* The arguments of the call being decided, such as a tool call's input. An
|
|
264
323
|
* `approval-required` token binds their digest, so an approval covers this
|
|
265
|
-
* call and no call with other arguments. Agent and MCP adapters pass the
|
|
266
|
-
*
|
|
324
|
+
* call and no call with other arguments. Agent and MCP adapters pass the tool
|
|
325
|
+
* arguments. Never read when deciding.
|
|
267
326
|
*/
|
|
268
327
|
readonly args?: unknown;
|
|
269
328
|
/**
|
|
270
|
-
* The application's own data for the decision event (a request id, a
|
|
271
|
-
*
|
|
272
|
-
* deciding.
|
|
329
|
+
* The application's own data for the decision event (a request id, a route).
|
|
330
|
+
* Plain JSON; a value that is not is dropped. Never read when deciding.
|
|
273
331
|
*/
|
|
274
332
|
readonly x?: AppData;
|
|
275
333
|
};
|
|
276
334
|
type SimulateOptions = {
|
|
277
|
-
/**
|
|
335
|
+
/**
|
|
336
|
+
* Decision clock for the whole batch: grant validity, membership expiry and
|
|
337
|
+
* limits are read as of this instant. Defaults to the current time.
|
|
338
|
+
*/
|
|
278
339
|
readonly now?: Instant;
|
|
279
340
|
};
|
|
280
341
|
type RowPair<T> = {
|
|
281
342
|
readonly current: T;
|
|
282
343
|
readonly next: T;
|
|
283
344
|
};
|
|
345
|
+
/**
|
|
346
|
+
* The `data` a check of `P` takes: any part of its row, or a `{ current, next
|
|
347
|
+
* }` pair of them for an update. `RowOf` is `unknown` for an untyped
|
|
348
|
+
* permission, so any value passes.
|
|
349
|
+
*/
|
|
350
|
+
type RowData<P> = Partial<RowOf<P>> | RowPair<Partial<RowOf<P>>> | null | undefined;
|
|
351
|
+
/**
|
|
352
|
+
* `data` the type system knows nothing about (`unknown`, `any`), such as a
|
|
353
|
+
* request body. The check parses it against the resource schema at run time; a
|
|
354
|
+
* value of a known type that does not fit the row is a type error.
|
|
355
|
+
*/
|
|
356
|
+
type UncheckedData<D> = D & (unknown extends D ? unknown : never);
|
|
284
357
|
type WhereResult = {
|
|
285
358
|
readonly condition: Condition | {
|
|
286
359
|
readonly op: "or";
|
|
@@ -308,87 +381,111 @@ type SnapshotOptions = {
|
|
|
308
381
|
};
|
|
309
382
|
type PermDock<V extends PolicyVocabulary = PolicyVocabulary> = {
|
|
310
383
|
readonly can: {
|
|
311
|
-
|
|
384
|
+
<P extends Permission<string, unknown, "instance">>(permission: P, data: RowData<P>, options?: DecideOptions): boolean;
|
|
312
385
|
(permission: Permission<string, unknown, "collection">, data?: unknown, options?: DecideOptions): boolean;
|
|
313
386
|
/**
|
|
314
|
-
*
|
|
315
|
-
*
|
|
316
|
-
|
|
387
|
+
* Data of no known type (`unknown`, `any`), such as a request body. It is
|
|
388
|
+
* parsed against the resource schema at run time.
|
|
389
|
+
*/
|
|
390
|
+
<D>(permission: Permission, data: UncheckedData<D>, options?: DecideOptions): boolean;
|
|
391
|
+
/**
|
|
392
|
+
* A permission held as `Permission` at run time (from a list, a catalog or
|
|
393
|
+
* `findPermission`), whose kind the type does not say: pass `data`, or
|
|
394
|
+
* `undefined` for a check without a row.
|
|
317
395
|
*/
|
|
318
|
-
(permission:
|
|
396
|
+
<P extends Permission>(permission: P, data: RowData<P>, options?: DecideOptions): boolean;
|
|
319
397
|
};
|
|
320
398
|
readonly decide: {
|
|
321
|
-
|
|
399
|
+
<P extends Permission<string, unknown, "instance">>(permission: P, data: RowData<P>, options?: DecideOptions): Decision;
|
|
322
400
|
(permission: Permission<string, unknown, "collection">, data?: unknown, options?: DecideOptions): Decision;
|
|
323
401
|
/**
|
|
324
|
-
*
|
|
325
|
-
*
|
|
326
|
-
* or `undefined` for a check without a row.
|
|
402
|
+
* Data of no known type (`unknown`, `any`), such as a request body. It is
|
|
403
|
+
* parsed against the resource schema at run time.
|
|
327
404
|
*/
|
|
328
|
-
(permission: Permission, data:
|
|
405
|
+
<D>(permission: Permission, data: UncheckedData<D>, options?: DecideOptions): Decision;
|
|
406
|
+
/**
|
|
407
|
+
* A permission held as `Permission` at run time (from a list, a catalog or
|
|
408
|
+
* `findPermission`), whose kind the type does not say: pass `data`, or
|
|
409
|
+
* `undefined` for a check without a row.
|
|
410
|
+
*/
|
|
411
|
+
<P extends Permission>(permission: P, data: RowData<P>, options?: DecideOptions): Decision;
|
|
329
412
|
};
|
|
330
413
|
/**
|
|
331
|
-
* `can` for every check, on one instance: `true` only when each is
|
|
332
|
-
*
|
|
333
|
-
*
|
|
414
|
+
* `can` for every check, on one instance: `true` only when each is granted,
|
|
415
|
+
* and `false` for an empty list. A check is a permission, or a `[permission,
|
|
416
|
+
* row]` pair. It stops at the first check that is not granted.
|
|
334
417
|
*/
|
|
335
418
|
readonly canAll: (checks: readonly PermissionCheck[], options?: DecideOptions) => boolean;
|
|
336
|
-
/**
|
|
419
|
+
/**
|
|
420
|
+
* `decide` for every check, in check order; a check is a permission or a
|
|
421
|
+
* `[permission, row]` pair.
|
|
422
|
+
*/
|
|
337
423
|
readonly decideAll: (checks: readonly PermissionCheck[], options?: DecideOptions) => readonly Decision[];
|
|
338
424
|
/**
|
|
339
|
-
* `decide` for each row, in row order. Each row is its own call: a limit
|
|
340
|
-
*
|
|
425
|
+
* `decide` for each row, in row order. Each row is its own call: a limit is
|
|
426
|
+
* consumed once per granted row, so rows past the cap are denied with
|
|
341
427
|
* `limit`, and each `approval-required` row carries its own token.
|
|
342
428
|
*/
|
|
343
|
-
readonly decideEach:
|
|
429
|
+
readonly decideEach: {
|
|
430
|
+
<D>(permission: Permission, rows: readonly UncheckedData<D>[], options?: DecideOptions): readonly Decision[];
|
|
431
|
+
<P extends Permission>(permission: P, rows: readonly RowData<P>[], options?: DecideOptions): readonly Decision[];
|
|
432
|
+
};
|
|
344
433
|
/**
|
|
345
434
|
* `decide` for each id, in id order, on rows the server loads itself:
|
|
346
435
|
* `options.data(ids)` answers a map from id to row, or the rows with their
|
|
347
|
-
* resource id field. Each row is trusted (no schema check) and decided in
|
|
348
|
-
*
|
|
349
|
-
*
|
|
350
|
-
*
|
|
351
|
-
*
|
|
436
|
+
* resource id field. Each row is trusted (no schema check) and decided in the
|
|
437
|
+
* tenant its own root scope field names, as `permdock.tenant(<that value>)`
|
|
438
|
+
* would, so one call can span tenants. An id with no loaded row, a loader
|
|
439
|
+
* that throws and a row of another resource are denied with `validation`. A
|
|
440
|
+
* snapshot instance denies every id with `unsupported`.
|
|
352
441
|
*/
|
|
353
442
|
readonly decideIds: (permission: Permission, ids: readonly string[], options: DecideIdsOptions) => Promise<readonly Decision[]>;
|
|
354
443
|
/**
|
|
355
|
-
* What `permission` on `row` decides for the principal `principalId`,
|
|
356
|
-
*
|
|
357
|
-
*
|
|
358
|
-
*
|
|
359
|
-
*
|
|
444
|
+
* What `permission` on `row` decides for the principal `principalId`, loaded
|
|
445
|
+
* from `principals` in this instance's active tenant with no actor and no
|
|
446
|
+
* delegation. It grants this instance nothing, shares none of its caches and
|
|
447
|
+
* never consumes a limit. Denied with `anonymous` when there is no
|
|
448
|
+
* `principals`, no such principal or the source throws, and with
|
|
360
449
|
* `tenant-mismatch` when the principal is outside the active tenant.
|
|
361
450
|
*/
|
|
362
451
|
readonly decideFor: (principalId: string, permission: Permission, row?: unknown) => Promise<Decision>;
|
|
363
452
|
readonly assert: {
|
|
364
|
-
|
|
453
|
+
<P extends Permission<string, unknown, "instance">>(permission: P, data: RowData<P>, options?: DecideOptions): Extract<Decision, {
|
|
365
454
|
readonly outcome: "granted";
|
|
366
455
|
}>;
|
|
367
456
|
(permission: Permission<string, unknown, "collection">, data?: unknown, options?: DecideOptions): Extract<Decision, {
|
|
368
457
|
readonly outcome: "granted";
|
|
369
458
|
}>;
|
|
370
459
|
/**
|
|
371
|
-
*
|
|
372
|
-
*
|
|
373
|
-
|
|
460
|
+
* Data of no known type (`unknown`, `any`), such as a request body. It is
|
|
461
|
+
* parsed against the resource schema at run time.
|
|
462
|
+
*/
|
|
463
|
+
<D>(permission: Permission, data: UncheckedData<D>, options?: DecideOptions): Extract<Decision, {
|
|
464
|
+
readonly outcome: "granted";
|
|
465
|
+
}>;
|
|
466
|
+
/**
|
|
467
|
+
* A permission held as `Permission` at run time (from a list, a catalog or
|
|
468
|
+
* `findPermission`), whose kind the type does not say: pass `data`, or
|
|
469
|
+
* `undefined` for a check without a row.
|
|
374
470
|
*/
|
|
375
|
-
(permission:
|
|
471
|
+
<P extends Permission>(permission: P, data: RowData<P>, options?: DecideOptions): Extract<Decision, {
|
|
376
472
|
readonly outcome: "granted";
|
|
377
473
|
}>;
|
|
378
474
|
};
|
|
379
475
|
/**
|
|
380
|
-
* `decide` with `explain: true`: the same decision, with a `trace` that
|
|
381
|
-
*
|
|
382
|
-
*
|
|
383
|
-
*
|
|
476
|
+
* `decide` with `explain: true`: the same decision, with a `trace` that names
|
|
477
|
+
* the grants evaluated, the allows and denies that matched (so a `denied`
|
|
478
|
+
* says which deny won) and the grants passed over. Local computation only;
|
|
479
|
+
* the trace never reaches a `DecisionSink`.
|
|
384
480
|
*/
|
|
385
481
|
readonly explain: {
|
|
386
|
-
|
|
482
|
+
<P extends Permission<string, unknown, "instance">>(permission: P, data: RowData<P>, options?: Omit<DecideOptions, "explain">): ExplainedDecision;
|
|
387
483
|
(permission: Permission<string, unknown, "collection">, data?: unknown, options?: Omit<DecideOptions, "explain">): ExplainedDecision;
|
|
388
|
-
(permission: Permission, data:
|
|
484
|
+
<D>(permission: Permission, data: UncheckedData<D>, options?: Omit<DecideOptions, "explain">): ExplainedDecision;
|
|
485
|
+
<P extends Permission>(permission: P, data: RowData<P>, options?: Omit<DecideOptions, "explain">): ExplainedDecision;
|
|
389
486
|
};
|
|
390
|
-
readonly filter: <T>(permission: Permission<string, T
|
|
391
|
-
readonly pick: <T>(permission: Permission<string, T
|
|
487
|
+
readonly filter: <T>(permission: Permission<string, NoInfer<T>, "instance">, rows: readonly T[], options?: DecideOptions) => T[];
|
|
488
|
+
readonly pick: <T>(permission: Permission<string, NoInfer<T>, "instance">, row: T, options?: DecideOptions) => Partial<T>;
|
|
392
489
|
readonly where: (permission: Permission) => WhereResult;
|
|
393
490
|
readonly actions: (resource: Permission | {
|
|
394
491
|
readonly [key: string]: unknown;
|
|
@@ -425,12 +522,15 @@ type PermDock<V extends PolicyVocabulary = PolicyVocabulary> = {
|
|
|
425
522
|
readonly scope?: string;
|
|
426
523
|
readonly id?: string;
|
|
427
524
|
}) => readonly Role[];
|
|
428
|
-
/**
|
|
525
|
+
/**
|
|
526
|
+
* The distinct `meta.audience` values of the roles held in the active tenant,
|
|
527
|
+
* in rank order.
|
|
528
|
+
*/
|
|
429
529
|
readonly audiences: () => readonly string[];
|
|
430
530
|
/**
|
|
431
|
-
* The roles the subject may hand out in a tenant (the active one by
|
|
432
|
-
*
|
|
433
|
-
*
|
|
531
|
+
* The roles the subject may hand out in a tenant (the active one by default),
|
|
532
|
+
* or with `scope: 'global'` the global roles it may hand out. A snapshot
|
|
533
|
+
* answers only the tenant form.
|
|
434
534
|
*/
|
|
435
535
|
readonly assignableRoles: (options?: {
|
|
436
536
|
readonly tenant?: string;
|
|
@@ -447,8 +547,8 @@ type PermDock<V extends PolicyVocabulary = PolicyVocabulary> = {
|
|
|
447
547
|
readonly scope?: "global";
|
|
448
548
|
}) => readonly Permission[];
|
|
449
549
|
/**
|
|
450
|
-
* The levels of `permission` (`resource(…, { levels })`) the subject may
|
|
451
|
-
*
|
|
550
|
+
* The levels of `permission` (`resource(…, { levels })`) the subject may hand
|
|
551
|
+
* out in a custom role: those it holds, or every level with
|
|
452
552
|
* `meta.manageRoles`. Empty when the permission is not assignable.
|
|
453
553
|
*/
|
|
454
554
|
readonly assignableLevels: (permission: Permission, options?: {
|
|
@@ -467,10 +567,10 @@ type PermDock<V extends PolicyVocabulary = PolicyVocabulary> = {
|
|
|
467
567
|
*/
|
|
468
568
|
readonly permittedIds: (permission: Permission, scope: string, options?: PermittedIdsOptions) => readonly string[];
|
|
469
569
|
/**
|
|
470
|
-
* Loads the relation facts `permission` needs for `rows` into this
|
|
471
|
-
*
|
|
472
|
-
*
|
|
473
|
-
*
|
|
570
|
+
* Loads the relation facts `permission` needs for `rows` into this instance's
|
|
571
|
+
* cache, so `can`, `decide` and `filter` answer synchronously over an async
|
|
572
|
+
* `RelationSource`. It never grants; a failed load leaves the checks denied
|
|
573
|
+
* with `relation-unavailable`.
|
|
474
574
|
*/
|
|
475
575
|
readonly prefetchRelations: (permission: Permission, rows: readonly unknown[]) => Promise<void>;
|
|
476
576
|
readonly roles: V["roles"] extends RoleTree ? V["roles"] : RoleTree;
|
|
@@ -480,37 +580,58 @@ type PermDock<V extends PolicyVocabulary = PolicyVocabulary> = {
|
|
|
480
580
|
/**
|
|
481
581
|
* The same subject, tenant, team, actor, delegation, sink and limits with
|
|
482
582
|
* other sources: `customRoles`, `approvalPolicies` or `relations`. The
|
|
483
|
-
* sources it names are read again for the subject's tenants; the others
|
|
484
|
-
*
|
|
485
|
-
*
|
|
583
|
+
* sources it names are read again for the subject's tenants; the others keep
|
|
584
|
+
* what this instance loaded. Always a promise, since the sources it names may
|
|
585
|
+
* answer asynchronously.
|
|
486
586
|
*/
|
|
487
587
|
readonly derive: (options: DeriveOptions) => Promise<PermDock<V>>;
|
|
488
588
|
};
|
|
489
|
-
/**
|
|
589
|
+
/**
|
|
590
|
+
* What `permdock.derive` may replace: the sources read after the subject is
|
|
591
|
+
* resolved.
|
|
592
|
+
*/
|
|
490
593
|
type DeriveOptions = Pick<PermDockOptions, "customRoles" | "approvalPolicies" | "relations" | "principals">;
|
|
491
594
|
type PermDockOptions = {
|
|
492
595
|
readonly tenant?: string;
|
|
493
596
|
/** One source, or several composed with `composeMemberships`. */
|
|
494
597
|
readonly memberships?: MembershipSource | readonly MembershipSource[];
|
|
495
598
|
readonly customRoles?: CustomRoleSource | CustomRoleSourceFactory;
|
|
496
|
-
/**
|
|
599
|
+
/**
|
|
600
|
+
* Plans and seats from billing, merged into `principal.plans` for the active
|
|
601
|
+
* tenant.
|
|
602
|
+
*/
|
|
497
603
|
readonly entitlements?: EntitlementSource;
|
|
498
604
|
readonly actor?: Actor;
|
|
499
605
|
readonly delegation?: Delegation;
|
|
500
606
|
readonly sink?: DecisionSink;
|
|
501
|
-
/**
|
|
607
|
+
/**
|
|
608
|
+
* Grant limits, `limits(store)`; without it a grant with a `limit` denies
|
|
609
|
+
* with `limit-unavailable`.
|
|
610
|
+
*/
|
|
502
611
|
readonly limits?: Limits;
|
|
503
612
|
readonly session?: string;
|
|
504
613
|
readonly expiresAt?: number;
|
|
505
|
-
/**
|
|
614
|
+
/**
|
|
615
|
+
* Hosted grants, `hostedPolicies(source)`; `current()` is read once, when the
|
|
616
|
+
* instance is created.
|
|
617
|
+
*/
|
|
506
618
|
readonly policies?: HostedPolicies;
|
|
507
|
-
/**
|
|
619
|
+
/**
|
|
620
|
+
* The object graph for `through` and edge-table relations; without it they
|
|
621
|
+
* deny with `relation-unavailable`.
|
|
622
|
+
*/
|
|
508
623
|
readonly relations?: RelationSource;
|
|
509
|
-
/**
|
|
624
|
+
/**
|
|
625
|
+
* Approval requirements kept as data; they add to the code's and never remove
|
|
626
|
+
* one. A throw denies.
|
|
627
|
+
*/
|
|
510
628
|
readonly approvalPolicies?: ApprovalPolicies;
|
|
511
629
|
/** Other principals by id, for `decideFor`; asked with the active tenant. */
|
|
512
630
|
readonly principals?: PrincipalSource;
|
|
513
|
-
/**
|
|
631
|
+
/**
|
|
632
|
+
* Tenant settings, read by `decideCredential` for the key's tenant; a call's
|
|
633
|
+
* own `settings` wins.
|
|
634
|
+
*/
|
|
514
635
|
readonly settings?: SettingsSource;
|
|
515
636
|
/**
|
|
516
637
|
* Request values an adapter's `context` hook derived on the server, merged
|
|
@@ -521,11 +642,14 @@ type PermDockOptions = {
|
|
|
521
642
|
/**
|
|
522
643
|
* The instance for `user`, built synchronously. Every input must answer
|
|
523
644
|
* synchronously: the subject mapper, `memberships`, `customRoles`,
|
|
524
|
-
* `entitlements`, `approvalPolicies` and the freshness check. One that
|
|
525
|
-
*
|
|
645
|
+
* `entitlements`, `approvalPolicies` and the freshness check. One that answers
|
|
646
|
+
* with a Promise throws here; use `getPermDock` for those.
|
|
526
647
|
*/
|
|
527
648
|
declare function getPermDockSync<TUser, TPrincipal extends Principal = Principal, V extends PolicyVocabulary = PolicyVocabulary>(policy: Policy<TUser, TPrincipal, V>, user: TUser | Subject | null, options?: PermDockOptions): PermDock<V>;
|
|
528
|
-
/**
|
|
649
|
+
/**
|
|
650
|
+
* The instance for `user`: waits for every source, then builds it.
|
|
651
|
+
* `getPermDockSync` is the synchronous twin.
|
|
652
|
+
*/
|
|
529
653
|
declare function getPermDock<TUser, TPrincipal extends Principal = Principal, V extends PolicyVocabulary = PolicyVocabulary>(policy: Policy<TUser, TPrincipal, V>, user: TUser | Subject | null, options?: PermDockOptions): Promise<PermDock<V>>;
|
|
530
654
|
//#endregion
|
|
531
|
-
export {
|
|
655
|
+
export { memoryApprovalPolicySource as A, PermissionCheck as C, ApprovalPolicySource as D, ApprovalPolicyProblem as E, ApprovalPolicyValidation as O, memoryLimitStore as S, ApprovalPolicy as T, PrincipalSource as _, PermDock as a, Limits as b, RowPair as c, UncheckedData as d, WhereResult as f, PrincipalIdentityLink as g, PrincipalIdentity as h, LoadedRows as i, validateApprovalPolicy as j, approvalPolicies as k, SimulateOptions as l, getPermDockSync as m, DecideOptions as n, PermDockOptions as o, getPermDock as p, DeriveOptions as r, RowData as s, DecideIdsOptions as t, SnapshotOptions as u, memoryPrincipalSource as v, ApprovalPolicies as w, limits as x, PermittedIdsOptions as y };
|