permdock 0.7.0 → 0.9.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-BcudBQOF.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-Ch07MdxN.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-K0faOLFp.d.ts → approval-prompt-3BqWczTt.d.ts} +13 -11
- package/dist/{approval-prompt-Dg5LeAcT.js → approval-prompt-B8hQY69x.js} +5 -6
- 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-BpS7LnV0.js} +2 -2
- package/dist/{arazzo-rdeJ8n1J.js → arazzo-CmQaGPkM.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-DTjR8xet.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-C6Jg75xq.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-D1nO6fiC.js → bind-BNQA9JK9.js} +26 -10
- package/dist/{bind-JDuvxjuW.d.ts → bind-YYjvfpB9.d.ts} +32 -12
- 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-BWXqwQYU.js} +3 -3
- package/dist/{capability-L7NnfhiE.js → capability-BqX94r07.js} +31 -25
- package/dist/{capability-D4UC9TTW.d.ts → capability-Di9tiUvi.d.ts} +41 -29
- package/dist/{casbin-BHijLuHY.js → casbin-B7_yS-oo.js} +2 -2
- package/dist/{casbin-BW9pS47J.js → casbin-bHyIxTNQ.js} +16 -8
- 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-CGlSwU6j.js} +20 -19
- package/dist/catalog-D3oS2GH3.js +1 -0
- package/dist/{catalog-BaMQfQ6Y.js → catalog-amPDr0JQ.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-operations-DeHTrJSV.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-3kWfjnYy.js} +4 -5
- package/dist/{codemod-BP6n8N9L.js → codemod-Bv5i-Mzo.js} +523 -201
- package/dist/{codemod-i4N2BhDc.js → codemod-D9Aiii1r.js} +3 -4
- package/dist/{collect-DNm3oKOk.js → collect-B80GYEot.js} +4 -5
- package/dist/collect-D-eroIfV.js +1 -0
- package/dist/{collect-BaWeMjwV.js → collect-WCl8cJQV.js} +26 -63
- 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-BEklRUYo.d.ts} +36 -12
- package/dist/{compile-BAEO5bOk.js → compile-EzEMB-7v.js} +77 -33
- package/dist/{completion-BNdVf7X2.js → completion-_bc0OUQ-.js} +17 -8
- package/dist/config-BwPBfN0t.js +108 -0
- package/dist/{config-DGZzMV1B.js → config-D5XrLWpk.js} +2 -2
- package/dist/{config-report-Cm7UITNA.js → config-report-BmWIskD7.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-CQkE8Esr.d.ts → core-CFepFiDP.d.ts} +49 -22
- package/dist/{core-B5-w6Kw9.js → core-DzVINFbU.js} +26 -20
- package/dist/{create-Cb86Z8Im.js → create-6EwRQlig.js} +10 -7
- package/dist/{create-DJrlhEp9.js → create-BLPKnJKa.js} +35 -25
- package/dist/{create-UTnUVETj.d.ts → create-BPUopdfL.d.ts} +70 -37
- package/dist/{create-QHuuPw3q.d.ts → create-BamXmeob.d.ts} +37 -29
- package/dist/{create-B2-CQqCI.d.ts → create-DBvUsgzK.d.ts} +49 -28
- 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-DHldhVUv.d.ts +22 -0
- package/dist/{describe-DZlnEtLy.js → describe-Bb4hGK5d.js} +5 -5
- package/dist/{describe-O0SwYIK8.d.ts → describe-BbFPBSms.d.ts} +5 -5
- package/dist/{device-BARQ8eYG.js → device-BwbJNmb2.js} +11 -8
- package/dist/{diff-Btr1c1Ow.js → diff-BwR1JdP2.js} +2 -2
- package/dist/{diff-DzT-xD13.js → diff-CQegtBAo.js} +22 -13
- package/dist/{digest-B3kc_PgQ.d.ts → digest-8Yx2CchM.d.ts} +3 -3
- package/dist/{doctor-BU1szn63.js → doctor-ClRVAtXQ.js} +287 -135
- package/dist/{doctor-BoK_y0KO.js → doctor-LPMYjSqO.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-B_Qg9D3e.d.ts → errors-BIM4MFsJ.d.ts} +22 -6
- 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/{evaluate-B_oqFbWC.js → evaluate-BAmf_AQd.js} +153 -82
- package/dist/{evaluations-BCddEOfO.d.ts → evaluations-DOWuBpWv.d.ts} +11 -5
- package/dist/{evaluations-DReoiVBw.js → evaluations-IBceAeKT.js} +40 -19
- 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-BIbBAtPZ.d.ts} +9 -6
- package/dist/{fetch-adapter-De-u6vhJ.js → fetch-adapter-dPTgJVHd.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-BFfzZSLH.js +58 -0
- package/dist/gen-BtfFWGbz.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-XBgU6RGT.js → hosted-D0IzESu_.js} +42 -21
- package/dist/{hosted-BmjzxQhp.d.ts → hosted-DVxlLZMe.d.ts} +33 -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-DB2EG_iy.js → import-ACkOrv6g.js} +6 -6
- package/dist/{import-Bz0GefWg.js → import-CST57XLp.js} +64 -51
- package/dist/{index-CMiPH2Tv.d.ts → index-BinlXeU-.d.ts} +64 -37
- package/dist/{index-BSfRl0hZ.d.ts → index-CV-7DWeD.d.ts} +64 -52
- package/dist/{index-BE8y3moU.d.ts → index-DJwEgYzA.d.ts} +127 -82
- package/dist/{index-DH9DUDEM.d.ts → index-Dj2qF9VC.d.ts} +54 -30
- package/dist/{index-BTkwrK7v.d.ts → index-vYjMrXyK.d.ts} +336 -173
- package/dist/{index-DLwcuCN_.d.ts → index-ymept53A.d.ts} +51 -30
- package/dist/index.d.ts +22 -22
- package/dist/index.js +34 -34
- package/dist/{init-B-4t1NzC.js → init-BjuFDYT1.js} +10 -10
- package/dist/{init-5TXNji88.js → init-txYTuW9u.js} +5 -5
- package/dist/{instance-options-CU0YQCLH.d.ts → instance-options-CoHn-0e8.d.ts} +4 -4
- package/dist/{instance-snapshot-CjcwnEiV.js → instance-snapshot-DuWf1cT3.js} +86 -61
- 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-qv4cr9w8.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-CfImTJGb.js} +4 -4
- package/dist/{login-WC9HPJpU.js → login-CgfCTO3F.js} +16 -9
- package/dist/{manifest-Dv6q4i5s.js → manifest-B2QPh19C.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-C-nv08_n.js} +16 -9
- 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 +79 -26
- package/dist/next/index.js +121 -10
- 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-ztVaux6j.js → openapi-BGeuunWC.js} +23 -14
- package/dist/{openapi-DMocl1bh.js → openapi-BIpw3Mb7.js} +4 -5
- package/dist/{openapi-Ddb4628T.js → openapi-BOsx0xn9.js} +33 -18
- 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-DgSDLrta.js → output-DV5dwOTs.js} +9 -5
- package/dist/output-files-BHOIlrfD.js +1 -0
- package/dist/{output-files-CCMdcFWb.js → output-files-BIQ_9pIs.js} +29 -17
- package/dist/ownership-DA5YdYTm.js +1059 -0
- package/dist/{parse-Ddhz2xf4.js → parse-1_ZheTW5.js} +16 -13
- package/dist/parse-local-manifest-CCmbhnxP.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-BfWEeMqk.js → permdock-BvjivVb9.js} +200 -140
- package/dist/{permdock-Dco6dyCK.d.ts → permdock-CprAPN3w.d.ts} +260 -129
- 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-CYcHj_w7.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-BycVKnXv.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-CU3An8uP.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-DGIO_gxq.d.ts} +782 -357
- package/dist/{postgres-store-BL9M_CA1.js → postgres-store-DcyrPS-r.js} +43 -16
- package/dist/{postgrest-r5faDIzD.js → postgrest-5Dr3W64L.js} +84 -86
- package/dist/{postgrest-CYacM_u7.d.ts → postgrest-D5nUGm-c.d.ts} +55 -35
- package/dist/powersync-B701tvhE.js +1 -0
- package/dist/{powersync-13odBwiM.js → powersync-Bg8u-JcR.js} +3 -3
- package/dist/{powersync-53ryOZip.js → powersync-CJrT1DSc.js} +127 -69
- 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-D8x73IGm.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-DfLeek9O.d.ts} +1 -1
- package/dist/{provider-store-IgqQipCO.js → provider-store-CaTv00tr.js} +13 -9
- package/dist/{pull-CN5OLxrF.js → pull-2nJr0qg_.js} +12 -11
- package/dist/pull-C3EEGzSw.js +1 -0
- package/dist/{push-tVdG8dUL.js → push-Bn-lMEmI.js} +19 -13
- package/dist/{pushed-policy-CmYeSQqq.js → pushed-policy-CDuOL2de.js} +10 -7
- package/dist/{pushed-policy-BbcY9r_4.d.ts → pushed-policy-CryQheKq.d.ts} +12 -6
- 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-Bs9Df2fQ.d.ts} +1 -1
- package/dist/{request-context-BykKLmyE.js → request-context-Duzdf0cd.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-ConCSj1y.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-Ck_PocSp.js → rls-Ba9wN0SP.js} +13 -6
- package/dist/{rls-CxBZb4rZ.js → rls-Cx0dtsB7.js} +310 -128
- 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-vHIwyXCp.js} +8 -5
- package/dist/run-Ck22anC2.js +1 -0
- package/dist/{run-uLD2aWuO.js → run-PbRlXTfh.js} +26 -23
- package/dist/{run-ticket-BpNi7BCi.d.ts → run-ticket-B2o2Kxz8.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-DK4V-3Is.js} +42 -29
- package/dist/{scan-DSljDE1Y.js → scan-CRTj6fke.js} +1 -1
- package/dist/{schema-B4v0Qrac.js → schema-BOJjqlWL.js} +3 -2
- package/dist/{schema-gIcCx7zM.js → schema-BTsE1WRT.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-CyRN0-Cd.d.ts} +88 -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-Cp_Eot9W.d.ts → sink-B5zoUW_O.d.ts} +44 -20
- package/dist/{sink-BEZSlMS_.js → sink-D9_vh372.js} +32 -21
- package/dist/{skills-g_3BS9NC.js → skills-C9uKfSF5.js} +3 -3
- package/dist/{skills-Dcjw9_1C.js → skills-CQQcuGBi.js} +12 -8
- package/dist/{snapshot-CbGmYiJx.js → snapshot-CXlzi69u.js} +21 -18
- package/dist/{snapshot-cache-Pahd3IYJ.d.ts → snapshot-cache-BjAWkchD.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-B-zYB4GS.js → sources-CMAM-2A3.js} +46 -27
- package/dist/{sources-DEEuGb8S.d.ts → sources-CWG32C0G.d.ts} +126 -53
- 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-C_pi2Rnh.js} +292 -101
- package/dist/ssf/index.d.ts +3 -3
- package/dist/ssf/index.js +47 -35
- package/dist/{standard-webhooks-DgFFD-Ga.js → standard-webhooks-D67a3nzk.js} +5 -5
- package/dist/{standard-webhooks-B_qRg0ws.d.ts → standard-webhooks-DOYEuOLx.d.ts} +7 -7
- 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-DZJvxFIZ.d.ts +59 -0
- package/dist/{stores-BqEuHC05.js → stores-DxZWDXCs.js} +42 -5
- package/dist/{stream-2Vwhl7Er.d.ts → stream-9y9qw51m.d.ts} +4 -3
- package/dist/{stream-CvdUS9V1.js → stream-CDvF0sJm.js} +5 -5
- 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-DnMMg5Fn.js} +79 -35
- package/dist/{supabase-Bqp7iIY2.js → supabase-SBs3MYUE.js} +3 -3
- package/dist/supabase-hook-C0FyEACZ.js +1 -0
- package/dist/{supabase-hook-Dg0SrQWR.js → supabase-hook-CrgU06WH.js} +175 -196
- package/dist/{supautils-MESd81bF.js → supautils-ByezN3b8.js} +385 -219
- 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-BqrxBCir.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 +225 -141
- package/dist/testing/index.js +352 -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-c7Xo_2Cu.d.ts +50 -0
- package/dist/{types-CfiKC5aN.d.ts → types-B2efzoSX.d.ts} +14 -11
- package/dist/{types-CIeZcG8v.d.ts → types-B6ExllNo.d.ts} +2 -2
- package/dist/{types-DBHftjgS.d.ts → types-BB-zWDcR.d.ts} +45 -33
- package/dist/{types-BfVmNJO5.d.ts → types-BMVDHvI0.d.ts} +128 -50
- package/dist/{types-DXmwu78Z.d.ts → types-CEinc15V.d.ts} +31 -14
- package/dist/{types-g7Oy6Zg4.d.ts → types-CN0LsqbK.d.ts} +47 -24
- package/dist/{types-CeIscIKp.d.ts → types-CWBsAwqn.d.ts} +23 -12
- package/dist/{types-DqzsnlSA.js → types-CcUXciSj.js} +17 -5
- package/dist/{types-BWZybqs9.d.ts → types-CzOeVvcC.d.ts} +384 -203
- package/dist/{types-DC44-hqb.d.ts → types-DLvhVm1r.d.ts} +59 -32
- package/dist/{types-D3A19w4A.d.ts → types-DlelvQk4.d.ts} +22 -13
- package/dist/{types-cTos-H7p.d.ts → types-DsHGPtkR.d.ts} +68 -32
- package/dist/{types-BXMYB7BY.d.ts → types-ZzRGoViD.d.ts} +77 -24
- package/dist/{types-CQVEQawv.d.ts → types-rCRV4Ge-.d.ts} +24 -14
- package/dist/types-tQB2CEnY.d.ts +262 -0
- package/dist/unplugin/index.d.ts +1 -1
- package/dist/unplugin/index.js +2 -2
- package/dist/usage-0hjZPIRX.js +1 -0
- package/dist/{usage-Bybmck7f.js → usage-B9EtHWLa.js} +50 -26
- package/dist/{usage-CDaLXCfL.js → usage-CBzgwfIs.js} +2 -2
- package/dist/{validation-error-ZfUHbKvf.js → validation-error-CYg2kJEw.js} +4 -1
- package/dist/{validation-error-CQpoquwj.d.ts → validation-error-uvp-kyfO.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-DlUcTDBz.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-CqUKX6CY.d.ts} +13 -10
- package/dist/{waiter-BGUtGYoU.js → waiter-aBLM63_f.js} +1 -1
- package/dist/{watch-C-4VmFlL.js → watch-BFDKqmUa.js} +8 -8
- package/dist/watch-ClLuO2TL.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-BoDJm0Nc.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-DxXB54Wu.d.ts} +8 -5
- package/package.json +8 -8
- 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 +16 -23
- 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,13 +1,13 @@
|
|
|
1
1
|
import { r as isRecord } from "./compact-CAf557ZB.js";
|
|
2
|
-
import { a as getResource, n as findPermission } from "./permission-registry-
|
|
3
|
-
import {
|
|
4
|
-
import { i as configError } from "./errors-
|
|
5
|
-
import { i as readJsonFile, s as writeFileEnsuringDir } from "./files-
|
|
6
|
-
import { a as loadModule, n as asPolicy, s as pickNamed, t as asPermissionTree } from "./load-
|
|
7
|
-
import { t as shortDiff } from "./text-diff-
|
|
8
|
-
import { c as openapiVersion, o as createPermDock } from "./openapi-
|
|
9
|
-
import { i as fileDrift } from "./output-files-
|
|
10
|
-
import { n as validateOverlay, t as validateOpenapi } from "./schema-
|
|
2
|
+
import { a as getResource, n as findPermission } from "./permission-registry-B8tYxPIt.js";
|
|
3
|
+
import { r as definePolicy } from "./policy-CLQ8__GF.js";
|
|
4
|
+
import { i as configError } from "./errors-Vpu6rKHl.js";
|
|
5
|
+
import { i as readJsonFile, s as writeFileEnsuringDir } from "./files-BSjrtIHw.js";
|
|
6
|
+
import { a as loadModule, n as asPolicy, s as pickNamed, t as asPermissionTree } from "./load-DjSU5KXO.js";
|
|
7
|
+
import { t as shortDiff } from "./text-diff-BtfSmdUo.js";
|
|
8
|
+
import { c as openapiVersion, o as createPermDock } from "./openapi-BOsx0xn9.js";
|
|
9
|
+
import { i as fileDrift } from "./output-files-BIQ_9pIs.js";
|
|
10
|
+
import { n as validateOverlay, t as validateOpenapi } from "./schema-BTsE1WRT.js";
|
|
11
11
|
import { existsSync } from "node:fs";
|
|
12
12
|
import { resolve } from "node:path";
|
|
13
13
|
//#region src/cli/openapi/openapi.ts
|
|
@@ -17,7 +17,10 @@ function mergeRecord(base, extra) {
|
|
|
17
17
|
for (const [key, value] of Object.entries(extra)) result[key] = value;
|
|
18
18
|
return result;
|
|
19
19
|
}
|
|
20
|
-
/**
|
|
20
|
+
/**
|
|
21
|
+
* Keeps what the document already says about a scheme (flow URLs, other flows,
|
|
22
|
+
* description); PermDock owns the scopes.
|
|
23
|
+
*/
|
|
21
24
|
function mergeSchemes(existing, emitted) {
|
|
22
25
|
const result = {};
|
|
23
26
|
for (const [name, scheme] of Object.entries(emitted)) {
|
|
@@ -68,7 +71,10 @@ function leavesOf(policy, keys) {
|
|
|
68
71
|
return leaf;
|
|
69
72
|
});
|
|
70
73
|
}
|
|
71
|
-
/**
|
|
74
|
+
/**
|
|
75
|
+
* Operations carrying `x-permdock-permissions`, joined by `operationId`; those
|
|
76
|
+
* without one are findings.
|
|
77
|
+
*/
|
|
72
78
|
function overlayOperations(document, policy) {
|
|
73
79
|
const operations = [];
|
|
74
80
|
const unnamed = [];
|
|
@@ -94,7 +100,10 @@ function overlayOperations(document, policy) {
|
|
|
94
100
|
secured
|
|
95
101
|
};
|
|
96
102
|
}
|
|
97
|
-
/**
|
|
103
|
+
/**
|
|
104
|
+
* `instance` when any listed permission acts on one row; the id is the last
|
|
105
|
+
* path template parameter.
|
|
106
|
+
*/
|
|
98
107
|
function arityOf(policy, leaves, path) {
|
|
99
108
|
if (!leaves.some((leaf) => getResource(policy.permissions, leaf.resource)?.instanceActions.has(leaf.action) === true)) return { kind: "collection" };
|
|
100
109
|
const parameter = [...path.matchAll(/\{([^}]+)\}/gu)].at(-1)?.[1];
|
|
@@ -213,11 +222,11 @@ async function runOpenapi(input) {
|
|
|
213
222
|
code: 1,
|
|
214
223
|
output: `openapi drift: the source already sets security the Overlay replaces on ${covered.secured.join(", ")}`
|
|
215
224
|
};
|
|
216
|
-
const result = covered
|
|
225
|
+
const result = covered === void 0 ? applyDocument(parsed, policy, openapi, input.arity === true, input.target) : openapi.overlay({
|
|
217
226
|
extends: input.doc,
|
|
218
227
|
version: input.overlay,
|
|
219
228
|
operations: covered.operations
|
|
220
|
-
})
|
|
229
|
+
});
|
|
221
230
|
const conformance = outputConformance(parsed, result, input.format, input.overlay);
|
|
222
231
|
if (conformance !== void 0) return {
|
|
223
232
|
code: 1,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { c as missingInput } from "./errors-
|
|
1
|
+
import { c as missingInput } from "./errors-Vpu6rKHl.js";
|
|
2
2
|
import { t as defineLeaf } from "./command-L8EstFNm.js";
|
|
3
|
-
import { c as given, d as policyFlag, f as validatorFlag, l as outFlag, o as fileOut, t as checkFlag } from "./flags-
|
|
3
|
+
import { c as given, d as policyFlag, f as validatorFlag, l as outFlag, o as fileOut, t as checkFlag } from "./flags-DXjoTVbS.js";
|
|
4
4
|
//#region src/cli/commands/openapi.ts
|
|
5
5
|
const docFlag = { doc: {
|
|
6
6
|
type: "string",
|
|
@@ -80,7 +80,7 @@ const emit = defineLeaf({
|
|
|
80
80
|
}
|
|
81
81
|
},
|
|
82
82
|
async run(ctx, { flags }) {
|
|
83
|
-
return (await import("./openapi-
|
|
83
|
+
return (await import("./openapi-BGeuunWC.js")).runOpenapi({
|
|
84
84
|
cwd: ctx.cwd,
|
|
85
85
|
config: ctx.config,
|
|
86
86
|
rest: ["emit"],
|
|
@@ -122,8 +122,7 @@ const importDocument = defineLeaf({
|
|
|
122
122
|
async run(ctx, { flags }) {
|
|
123
123
|
const doc = given(flags.doc);
|
|
124
124
|
if (doc === void 0) throw missingInput("openapi import", ["--doc"], "the OpenAPI document to import");
|
|
125
|
-
|
|
126
|
-
return runOpenapiImport({
|
|
125
|
+
return (await import("./import-ACkOrv6g.js")).runOpenapiImport({
|
|
127
126
|
cwd: ctx.cwd,
|
|
128
127
|
doc,
|
|
129
128
|
out: fileOut("openapi import", flags.out),
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { r as isRecord, t as compact } from "./compact-CAf557ZB.js";
|
|
2
|
-
import { c as listPermissions, n as findPermission, o as isPermission } from "./permission-registry-
|
|
3
|
-
import { r as sha256Digest } from "./sha256-
|
|
2
|
+
import { c as listPermissions, n as findPermission, o as isPermission } from "./permission-registry-B8tYxPIt.js";
|
|
3
|
+
import { r as sha256Digest } from "./sha256-C-4WXKIu.js";
|
|
4
4
|
import { t as requiresApproval } from "./approval-required-TzNB9oQA.js";
|
|
5
|
-
import { i as PROFILE_PARAMETERS, n as GNAP_RESERVED, r as PROFILE_NAMES, t as DRAFT_PINS } from "./pins-
|
|
5
|
+
import { i as PROFILE_PARAMETERS, n as GNAP_RESERVED, r as PROFILE_NAMES, t as DRAFT_PINS } from "./pins-nqarl3oE.js";
|
|
6
6
|
//#region src/openapi/emit.ts
|
|
7
7
|
function assertScheme(options) {
|
|
8
8
|
if (options.scheme.type === "gnap") throw new TypeError(GNAP_RESERVED);
|
|
@@ -17,7 +17,10 @@ function grantsOf(policy, permissions) {
|
|
|
17
17
|
function grantsAnyone(grant) {
|
|
18
18
|
return (Array.isArray(grant.to) ? grant.to : [grant.to]).some((grantee) => grantee.kind === "anyone");
|
|
19
19
|
}
|
|
20
|
-
/**
|
|
20
|
+
/**
|
|
21
|
+
* Every subject is granted it: an unconditional allow to `anyone()` and no
|
|
22
|
+
* deny.
|
|
23
|
+
*/
|
|
21
24
|
function isPublic(policy, permission) {
|
|
22
25
|
const grants = grantsOf(policy, [permission]);
|
|
23
26
|
return grants.every((grant) => grant.effect === "allow") && grants.some((grant) => grantsAnyone(grant) && grant.where === void 0 && grant.check === void 0 && grant.approval === void 0 && grant.closure === void 0 && grant.limit === void 0 && grant.purpose === void 0 && grant.viaOnly === void 0);
|
|
@@ -137,14 +140,17 @@ const FLOWS = [
|
|
|
137
140
|
"clientCredentials",
|
|
138
141
|
"deviceAuthorization"
|
|
139
142
|
];
|
|
140
|
-
/**
|
|
143
|
+
/**
|
|
144
|
+
* The client authentication methods FAPI 2.0 section 5.3.2.1 allows:
|
|
145
|
+
* sender-constrained, no shared secret.
|
|
146
|
+
*/
|
|
141
147
|
const FAPI2_AUTH_METHODS = ["private_key_jwt", "tls_client_auth"];
|
|
142
148
|
function pascal(value) {
|
|
143
149
|
return value.split(/[^A-Za-z0-9]+/u).filter((part) => part.length > 0).map((part) => `${part.charAt(0).toUpperCase()}${part.slice(1)}`).join("");
|
|
144
150
|
}
|
|
145
151
|
/**
|
|
146
|
-
* One Security Profile Requirement per distinct scope set: `scopeSets` from
|
|
147
|
-
*
|
|
152
|
+
* One Security Profile Requirement per distinct scope set: `scopeSets` from the
|
|
153
|
+
* operations, else one per permission.
|
|
148
154
|
*/
|
|
149
155
|
function securityProfileRequirementsOf(policy, options, scopeSets) {
|
|
150
156
|
if ((options.target ?? "3.2") !== "3.3" || options.securityProfile === void 0) return;
|
|
@@ -188,7 +194,10 @@ function jsonPathString(value) {
|
|
|
188
194
|
function operationTarget(operationId) {
|
|
189
195
|
return `$.paths.*[?@.operationId == ${jsonPathString(operationId)}]`;
|
|
190
196
|
}
|
|
191
|
-
/**
|
|
197
|
+
/**
|
|
198
|
+
* The `sha-256:` digest of the sorted permission keys and scopes, so the same
|
|
199
|
+
* catalog gives the same Overlay.
|
|
200
|
+
*/
|
|
192
201
|
function fingerprint(policy) {
|
|
193
202
|
const lines = listPermissions(policy.permissions).map((leaf) => `${leaf.key} ${leaf.scope}`).toSorted();
|
|
194
203
|
return sha256Digest(lines.join("\n"));
|
|
@@ -318,7 +327,10 @@ function segmentsOf(path) {
|
|
|
318
327
|
function isParam(segment) {
|
|
319
328
|
return segment.startsWith("{") && segment.endsWith("}");
|
|
320
329
|
}
|
|
321
|
-
/**
|
|
330
|
+
/**
|
|
331
|
+
* The number of literal segments that match, or -1 when the template does not
|
|
332
|
+
* match.
|
|
333
|
+
*/
|
|
322
334
|
function score(route, segments) {
|
|
323
335
|
if (route.segments.length !== segments.length) return -1;
|
|
324
336
|
let literal = 0;
|
|
@@ -339,8 +351,8 @@ function scopesOf(key, entry) {
|
|
|
339
351
|
return Object.freeze([...entry.oauthScopes]);
|
|
340
352
|
}
|
|
341
353
|
/**
|
|
342
|
-
* Operations as `"METHOD /path/{param}"` keys, the OpenAPI path template, to
|
|
343
|
-
*
|
|
354
|
+
* Operations as `"METHOD /path/{param}"` keys, the OpenAPI path template, to a
|
|
355
|
+
* permission. `base` is a prefix requests carry and the keys do not
|
|
344
356
|
* (`/api/v1`). A key that is not a method and a path throws.
|
|
345
357
|
*/
|
|
346
358
|
function operationPermissions(operations, options = {}) {
|
|
@@ -400,10 +412,10 @@ function operationPermissions(operations, options = {}) {
|
|
|
400
412
|
};
|
|
401
413
|
}
|
|
402
414
|
/**
|
|
403
|
-
* The operation permissions an OpenAPI document declares: every operation
|
|
404
|
-
*
|
|
405
|
-
*
|
|
406
|
-
*
|
|
415
|
+
* The operation permissions an OpenAPI document declares: every operation whose
|
|
416
|
+
* `x-permdock-permissions` names exactly one permission of `tree`, keyed by its
|
|
417
|
+
* method, path and `operationId`. An operation naming none, several or an
|
|
418
|
+
* unknown key is left out, so a gate denies it.
|
|
407
419
|
*/
|
|
408
420
|
function operationPermissionsFromOpenApi(document, tree, options = {}) {
|
|
409
421
|
const operations = {};
|
|
@@ -491,8 +503,8 @@ function jsonSchema(options) {
|
|
|
491
503
|
return structuredClone(JSON_SCHEMA);
|
|
492
504
|
}
|
|
493
505
|
/**
|
|
494
|
-
* The Problem Details body the adapters send on a denial, as a Standard
|
|
495
|
-
*
|
|
506
|
+
* The Problem Details body the adapters send on a denial, as a Standard Schema
|
|
507
|
+
* with a JSON Schema, for `oc.errors({ FORBIDDEN: { data: problemDetails } })`.
|
|
496
508
|
* Extension members pass through: RFC 9457 lets a problem type add them.
|
|
497
509
|
*/
|
|
498
510
|
const problemDetails = Object.freeze({ "~standard": Object.freeze({
|
|
@@ -512,7 +524,10 @@ function isList(permission) {
|
|
|
512
524
|
function listOf(permission) {
|
|
513
525
|
return isList(permission) ? permission : [permission];
|
|
514
526
|
}
|
|
515
|
-
/**
|
|
527
|
+
/**
|
|
528
|
+
* The `x-permdock-permissions` value: the permission keys an operation
|
|
529
|
+
* enforces.
|
|
530
|
+
*/
|
|
516
531
|
function permissionsExtension(permissions) {
|
|
517
532
|
return Object.freeze(listOf(permissions).map((leaf) => leaf.key));
|
|
518
533
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { n as OPERATION_RISKS } from "./permissions-
|
|
1
|
+
import { n as OPERATION_RISKS } from "./permissions-CVXmRILq.js";
|
|
2
2
|
//#region src/catalog/operation-findings.ts
|
|
3
3
|
function rank(risk) {
|
|
4
4
|
return OPERATION_RISKS.indexOf(risk ?? "low");
|
|
@@ -8,8 +8,8 @@ function requiresApproval(catalog, permission) {
|
|
|
8
8
|
}
|
|
9
9
|
/**
|
|
10
10
|
* Operations, matched by name, whose `meta.risk` rose or whose permission
|
|
11
|
-
* stopped requiring approval between two catalogs. A new or removed
|
|
12
|
-
*
|
|
11
|
+
* stopped requiring approval between two catalogs. A new or removed operation
|
|
12
|
+
* is not a finding.
|
|
13
13
|
*/
|
|
14
14
|
function operationFindings(previous, next) {
|
|
15
15
|
const before = new Map((previous.operations ?? []).map((operation) => [operation.name, operation]));
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { f as PermissionTree, u as Permission } from "./permission-types-
|
|
1
|
+
import { f as PermissionTree, u as Permission } from "./permission-types-CAY-GU7e.js";
|
|
2
2
|
//#region src/core/operation-risks.d.ts
|
|
3
3
|
type OperationRisk = "low" | "medium" | "high" | "critical";
|
|
4
4
|
/** Every `meta.risk` level, lowest first. */
|
|
@@ -7,7 +7,10 @@ declare function isOperationRisk(value: unknown): value is OperationRisk;
|
|
|
7
7
|
//#endregion
|
|
8
8
|
//#region src/core/operations.d.ts
|
|
9
9
|
type OperationEffect = "read" | "write" | "delete" | "send" | "spend" | "external";
|
|
10
|
-
/**
|
|
10
|
+
/**
|
|
11
|
+
* Plain JSON a host reads to label, confirm or gate an operation; PermDock
|
|
12
|
+
* never decides on it.
|
|
13
|
+
*/
|
|
11
14
|
type OperationMeta = {
|
|
12
15
|
readonly risk?: OperationRisk;
|
|
13
16
|
/** What running the operation does, each effect at most once. */
|
|
@@ -15,9 +18,9 @@ type OperationMeta = {
|
|
|
15
18
|
readonly title?: string;
|
|
16
19
|
};
|
|
17
20
|
/**
|
|
18
|
-
* Loads the row the check runs on from the operation's input, the binding
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
+
* Loads the row the check runs on from the operation's input, the binding every
|
|
22
|
+
* surface shares. The row is validated against the permission's resource schema
|
|
23
|
+
* like any request-derived data (invariant 9).
|
|
21
24
|
*/
|
|
22
25
|
type OperationData<TInput = never> = {
|
|
23
26
|
load(input: TInput): unknown;
|
|
@@ -32,8 +35,8 @@ type OperationDefinition = {
|
|
|
32
35
|
};
|
|
33
36
|
/**
|
|
34
37
|
* A permission-bound action that agent tools, workflow nodes, MCP operations,
|
|
35
|
-
* HTTP routes and chat commands read by name. `TInput` is the parameter type
|
|
36
|
-
*
|
|
38
|
+
* HTTP routes and chat commands read by name. `TInput` is the parameter type of
|
|
39
|
+
* `data`; an operation without `data` takes `undefined`.
|
|
37
40
|
*/
|
|
38
41
|
type Operation<TInput = unknown, TName extends string = string, TPermission extends Permission = Permission> = {
|
|
39
42
|
readonly name: TName;
|
package/dist/orpc/index.d.ts
CHANGED
|
@@ -1,11 +1,44 @@
|
|
|
1
|
-
import { T as Policy, j as PolicyVocabulary,
|
|
2
|
-
import { u as Permission } from "../permission-types-
|
|
3
|
-
import { a as
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import { t as
|
|
8
|
-
import {
|
|
1
|
+
import { T as Policy, j as PolicyVocabulary, pr as Principal } from "../policy-types-DGIO_gxq.js";
|
|
2
|
+
import { u as Permission } from "../permission-types-CAY-GU7e.js";
|
|
3
|
+
import { a as OperationInput, t as Operation } from "../operations-Ci_rT6Uo.js";
|
|
4
|
+
import { a as PermDock } from "../permdock-CprAPN3w.js";
|
|
5
|
+
import { n as RevocationFeed } from "../revocations-BaUXHM1N.js";
|
|
6
|
+
import { D as ConnectionOptions, T as Connection, i as OpenApiHooks } from "../server-types-CyRN0-Cd.js";
|
|
7
|
+
import { t as ServerAdapterOptions } from "../bind-YYjvfpB9.js";
|
|
8
|
+
import { t as StreamProtectOptions } from "../stream-9y9qw51m.js";
|
|
9
|
+
import { AnySchema, MetaPlugin, Middleware, Procedure, Schema } from "@orpc/server";
|
|
10
|
+
import { StandardSchemaV1 } from "@standard-schema/spec";
|
|
11
|
+
//#region src/orpc/operations.d.ts
|
|
12
|
+
type OperationProcedureContext<TCtx extends object, V extends PolicyVocabulary = PolicyVocabulary> = TCtx & {
|
|
13
|
+
readonly permdock: PermDock<V>;
|
|
14
|
+
/** The row the operation's `data` loader read; `undefined` without one. */
|
|
15
|
+
readonly permdockData?: unknown;
|
|
16
|
+
};
|
|
17
|
+
type OperationRoute<TCtx extends object, TInput, V extends PolicyVocabulary = PolicyVocabulary> = {
|
|
18
|
+
readonly handler: (opts: {
|
|
19
|
+
readonly input: TInput;
|
|
20
|
+
readonly context: OperationProcedureContext<TCtx, V>;
|
|
21
|
+
}) => unknown;
|
|
22
|
+
} & ([TInput] extends [undefined] ? {
|
|
23
|
+
readonly input?: StandardSchemaV1<unknown, TInput>;
|
|
24
|
+
} : {
|
|
25
|
+
/** Required: the operation's `data` loader never sees raw input. */
|
|
26
|
+
readonly input: StandardSchemaV1<unknown, TInput>;
|
|
27
|
+
});
|
|
28
|
+
type OperationRoutes<TOperations extends Readonly<Record<string, Operation>>, TCtx extends object, V extends PolicyVocabulary = PolicyVocabulary> = { readonly [TName in keyof TOperations]: OperationRoute<TCtx, OperationInput<TOperations[TName]>, V>; };
|
|
29
|
+
type OperationsRouterOptions = {
|
|
30
|
+
/** oRPC meta plugins per operation, such as `openapi()` from `@orpc/openapi`. */
|
|
31
|
+
readonly meta?: (operation: Operation) => readonly MetaPlugin<AnySchema, AnySchema, Record<never, never>>[];
|
|
32
|
+
};
|
|
33
|
+
type InputSchemaOf<TRoute> = TRoute extends {
|
|
34
|
+
readonly input: infer TSchema extends AnySchema;
|
|
35
|
+
} ? TSchema : Schema<undefined>;
|
|
36
|
+
type OutputOf<TRoute> = TRoute extends {
|
|
37
|
+
readonly handler: (...args: never[]) => infer TResult;
|
|
38
|
+
} ? Awaited<TResult> : never;
|
|
39
|
+
type OperationsRouter<TCtx extends object, TRoutes> = { readonly [TName in keyof TRoutes]: Procedure<TCtx, any, InputSchemaOf<TRoutes[TName]>, Schema<OutputOf<TRoutes[TName]>>, Record<never, never>>; };
|
|
40
|
+
type OperationsRouterOf<TCtx extends object, V extends PolicyVocabulary> = <TOperations extends Readonly<Record<string, Operation>>, const TRoutes extends OperationRoutes<TOperations, TCtx, V>>(operations: TOperations, routes: TRoutes, options?: OperationsRouterOptions) => OperationsRouter<TCtx, TRoutes>;
|
|
41
|
+
//#endregion
|
|
9
42
|
//#region src/orpc/create.d.ts
|
|
10
43
|
type OrpcMiddlewareOpts<TCtx extends object = object, TInput = unknown> = {
|
|
11
44
|
readonly context: TCtx;
|
|
@@ -20,7 +53,10 @@ type OrpcMiddleware<TCtx extends object = object, TInput = unknown, V extends Po
|
|
|
20
53
|
readonly permdockData?: unknown;
|
|
21
54
|
}, TInput, any, Record<never, never>>;
|
|
22
55
|
type OrpcPermDockOptions<TCtx extends object = object, TUser = unknown> = ServerAdapterOptions<OrpcMiddlewareOpts<TCtx>, TUser> & {
|
|
23
|
-
/**
|
|
56
|
+
/**
|
|
57
|
+
* The Web `Request` behind a context; defaults to `context.request` or
|
|
58
|
+
* `context.req`.
|
|
59
|
+
*/
|
|
24
60
|
readonly request?: (context: TCtx) => Request | null | undefined;
|
|
25
61
|
/** Ends or revalidates open event iterators. */
|
|
26
62
|
readonly revocations?: RevocationFeed;
|
|
@@ -31,10 +67,22 @@ type OrpcOpenApiHooks<TCtx extends object = object, V extends PolicyVocabulary =
|
|
|
31
67
|
readonly security: readonly Record<string, readonly string[]>[];
|
|
32
68
|
readonly "x-permdock-permissions": readonly string[];
|
|
33
69
|
};
|
|
70
|
+
/**
|
|
71
|
+
* `security` as the merge function oRPC 2's `openapi({ spec })` takes, with
|
|
72
|
+
* mutable arrays so it type-checks against oRPC's `OperationObject`.
|
|
73
|
+
*/
|
|
74
|
+
readonly spec: (permission: Permission) => <TSpec extends object>(current: TSpec) => TSpec & OrpcSecuritySpec;
|
|
34
75
|
readonly securitySchemes: OpenApiHooks["securitySchemes"];
|
|
35
76
|
};
|
|
77
|
+
type OrpcSecuritySpec = {
|
|
78
|
+
security: Record<string, string[]>[];
|
|
79
|
+
"x-permdock-permissions": string[];
|
|
80
|
+
};
|
|
36
81
|
type OrpcPermDock<TCtx extends object = object, V extends PolicyVocabulary = PolicyVocabulary> = {
|
|
37
|
-
/**
|
|
82
|
+
/**
|
|
83
|
+
* The `PermDock` for one procedure call, for code the middleware does not run
|
|
84
|
+
* before.
|
|
85
|
+
*/
|
|
38
86
|
readonly getPermDock: (opts: OrpcMiddlewareOpts<TCtx>) => Promise<PermDock<V>>;
|
|
39
87
|
readonly middleware: () => OrpcMiddleware<TCtx, unknown, V>;
|
|
40
88
|
readonly protect: (permission: Permission | null, data?: (opts: OrpcMiddlewareOpts<TCtx>) => unknown, protectOptions?: StreamProtectOptions) => OrpcMiddleware<TCtx, unknown, V>;
|
|
@@ -42,13 +90,19 @@ type OrpcPermDock<TCtx extends object = object, V extends PolicyVocabulary = Pol
|
|
|
42
90
|
readonly connection: (opts: OrpcMiddlewareOpts<TCtx>, connectionOptions?: ConnectionOptions) => Promise<Connection>;
|
|
43
91
|
readonly permdockHandler: () => (request: Request) => Promise<Response>;
|
|
44
92
|
readonly openapi: OrpcOpenApiHooks<TCtx, V>;
|
|
93
|
+
/**
|
|
94
|
+
* One procedure per `defineOperations` entry, guarded by the operation's
|
|
95
|
+
* permission and `data` loader; `meta` attaches oRPC meta such as
|
|
96
|
+
* `openapi()`.
|
|
97
|
+
*/
|
|
98
|
+
readonly operationsRouter: OperationsRouterOf<TCtx, V>;
|
|
45
99
|
};
|
|
46
100
|
/**
|
|
47
|
-
* The permission the procedure's first `protect` decides, or `undefined`
|
|
48
|
-
*
|
|
49
|
-
*
|
|
101
|
+
* The permission the procedure's first `protect` decides, or `undefined` when
|
|
102
|
+
* no `protect` is attached. Reads the procedure definition only and never
|
|
103
|
+
* decides.
|
|
50
104
|
*/
|
|
51
105
|
export declare function permissionOf(procedure: unknown): Permission | undefined;
|
|
52
106
|
export declare function createPermDock<TCtx extends object = object, TUser = unknown, TPrincipal extends Principal = Principal, V extends PolicyVocabulary = PolicyVocabulary>(policy: Policy<TUser, TPrincipal, V>, options: OrpcPermDockOptions<TCtx, TUser>): OrpcPermDock<TCtx, V>;
|
|
53
107
|
//#endregion
|
|
54
|
-
export type { OrpcMiddleware, OrpcMiddlewareOpts, OrpcOpenApiHooks, OrpcPermDock, OrpcPermDockOptions };
|
|
108
|
+
export type { OperationProcedureContext, OperationRoute, OperationRoutes, OperationsRouter, OperationsRouterOf, OperationsRouterOptions, OrpcMiddleware, OrpcMiddlewareOpts, OrpcOpenApiHooks, OrpcPermDock, OrpcPermDockOptions, OrpcSecuritySpec };
|
package/dist/orpc/index.js
CHANGED
|
@@ -1,11 +1,42 @@
|
|
|
1
1
|
import { t as compact } from "../compact-CAf557ZB.js";
|
|
2
|
-
import { o as isPermission } from "../permission-registry-
|
|
3
|
-
import { o as problemMessage } from "../http-
|
|
4
|
-
import { t as problemFromError } from "../map-error-
|
|
5
|
-
import { n as attached } from "../bind-
|
|
6
|
-
import { i as isAsyncIterable, o as reloadAfter } from "../stream-
|
|
7
|
-
import { i as rpcCode, n as guardStream, r as problemBody, t as bindRpcKernel } from "../rpc-
|
|
8
|
-
import { ORPCError } from "@orpc/server";
|
|
2
|
+
import { o as isPermission } from "../permission-registry-B8tYxPIt.js";
|
|
3
|
+
import { o as problemMessage } from "../http-DKLXrFGk.js";
|
|
4
|
+
import { t as problemFromError } from "../map-error-pasIGqMT.js";
|
|
5
|
+
import { n as attached } from "../bind-BNQA9JK9.js";
|
|
6
|
+
import { i as isAsyncIterable, o as reloadAfter } from "../stream-CDvF0sJm.js";
|
|
7
|
+
import { i as rpcCode, n as guardStream, r as problemBody, t as bindRpcKernel } from "../rpc-vHIwyXCp.js";
|
|
8
|
+
import { ORPCError, os } from "@orpc/server";
|
|
9
|
+
//#region src/orpc/operations.ts
|
|
10
|
+
const root = os;
|
|
11
|
+
function routeOf(name, value) {
|
|
12
|
+
if (typeof (value !== null && typeof value === "object" ? Reflect.get(value, "handler") : void 0) !== "function") throw new TypeError(`operationsRouter: the route for operation "${name}" needs a handler function.`);
|
|
13
|
+
return value;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Builds one oRPC procedure per operation: `middleware()`, the route's `input`
|
|
17
|
+
* schema, then `protect(operation.permission, operation.data)`. Throws at
|
|
18
|
+
* definition time when a route names no operation, an operation has no route,
|
|
19
|
+
* or an operation with `data` has no `input` schema.
|
|
20
|
+
*/
|
|
21
|
+
function operationsRouterOf(deps) {
|
|
22
|
+
return (operations, routes, options = {}) => {
|
|
23
|
+
for (const name of Object.keys(routes)) if (!Object.hasOwn(operations, name)) throw new TypeError(`operationsRouter: "${name}" is not an operation passed to operationsRouter.`);
|
|
24
|
+
const router = {};
|
|
25
|
+
for (const [name, operation] of Object.entries(operations)) {
|
|
26
|
+
if (!Object.hasOwn(routes, name)) throw new TypeError(`operationsRouter: operation "${name}" has no route.`);
|
|
27
|
+
const route = routeOf(name, Reflect.get(routes, name));
|
|
28
|
+
const load = operation.data;
|
|
29
|
+
if (load !== void 0 && route.input === void 0) throw new TypeError(`operationsRouter: operation "${name}" loads a row from its input, so its route needs an input schema.`);
|
|
30
|
+
const base = root.meta(...options.meta?.(operation) ?? []).use(deps.middleware());
|
|
31
|
+
router[name] = (route.input === void 0 ? base : base.input(route.input)).use(deps.protect(operation.permission, load === void 0 ? void 0 : (opts) => load(opts.input))).handler(({ input, context }) => route.handler({
|
|
32
|
+
input,
|
|
33
|
+
context
|
|
34
|
+
}));
|
|
35
|
+
}
|
|
36
|
+
return router;
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
//#endregion
|
|
9
40
|
//#region src/orpc/create.ts
|
|
10
41
|
function toOpts(mw, input, next) {
|
|
11
42
|
return compact({
|
|
@@ -18,7 +49,10 @@ function toOpts(mw, input, next) {
|
|
|
18
49
|
function isErrorConstructor(value) {
|
|
19
50
|
return typeof value === "function";
|
|
20
51
|
}
|
|
21
|
-
/**
|
|
52
|
+
/**
|
|
53
|
+
* Uses the procedure's own constructor when it declares the code, so the
|
|
54
|
+
* declared status and `defined` apply.
|
|
55
|
+
*/
|
|
22
56
|
function orpcError(code, message, data, errors) {
|
|
23
57
|
const declared = errors !== void 0 && Object.hasOwn(errors, code) ? errors[code] : void 0;
|
|
24
58
|
return isErrorConstructor(declared) ? declared({
|
|
@@ -38,7 +72,10 @@ async function throwOrpcError(response, errors) {
|
|
|
38
72
|
const code = rpcCode(response.status);
|
|
39
73
|
throw orpcError(code, problemMessage(data, code), data, errors);
|
|
40
74
|
}
|
|
41
|
-
/**
|
|
75
|
+
/**
|
|
76
|
+
* A PermDock error thrown further down (an `assert` in a handler) becomes the
|
|
77
|
+
* ORPCError `protect` throws.
|
|
78
|
+
*/
|
|
42
79
|
function mapDownstream(run, errors) {
|
|
43
80
|
return new Promise((resolve) => {
|
|
44
81
|
resolve(run());
|
|
@@ -58,9 +95,9 @@ function readOwn(value, key) {
|
|
|
58
95
|
return (typeof value === "object" || typeof value === "function") && value !== null && Object.hasOwn(value, key) ? Reflect.get(value, key) : void 0;
|
|
59
96
|
}
|
|
60
97
|
/**
|
|
61
|
-
* The permission the procedure's first `protect` decides, or `undefined`
|
|
62
|
-
*
|
|
63
|
-
*
|
|
98
|
+
* The permission the procedure's first `protect` decides, or `undefined` when
|
|
99
|
+
* no `protect` is attached. Reads the procedure definition only and never
|
|
100
|
+
* decides.
|
|
64
101
|
*/
|
|
65
102
|
function permissionOf(procedure) {
|
|
66
103
|
const ordered = readOwn(readOwn(procedure, "~orpc"), "orderedMiddlewares");
|
|
@@ -140,8 +177,20 @@ function createPermDock(policy, options) {
|
|
|
140
177
|
openapi: {
|
|
141
178
|
protect,
|
|
142
179
|
security: kernelOpenApi.security,
|
|
180
|
+
spec: (permission) => {
|
|
181
|
+
const fragment = kernelOpenApi.security(permission);
|
|
182
|
+
return (current) => ({
|
|
183
|
+
...current,
|
|
184
|
+
security: fragment.security.map((requirement) => Object.fromEntries(Object.entries(requirement).map(([scheme, scopes]) => [scheme, [...scopes]]))),
|
|
185
|
+
"x-permdock-permissions": [...fragment["x-permdock-permissions"]]
|
|
186
|
+
});
|
|
187
|
+
},
|
|
143
188
|
securitySchemes: kernelOpenApi.securitySchemes
|
|
144
|
-
}
|
|
189
|
+
},
|
|
190
|
+
operationsRouter: operationsRouterOf({
|
|
191
|
+
middleware,
|
|
192
|
+
protect
|
|
193
|
+
})
|
|
145
194
|
};
|
|
146
195
|
}
|
|
147
196
|
//#endregion
|
package/dist/otel/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { j as PolicyVocabulary } from "../policy-types-
|
|
2
|
-
import { a as PermDock } from "../permdock-
|
|
3
|
-
import { a as OtelOptions, i as OtelApi, n as GEN_AI_TOOL_CALL_ID, o as OtelWrap, r as GEN_AI_TOOL_NAME, s as StructuralLogger, t as GENAI_SEMCONV_PIN } from "../types-
|
|
1
|
+
import { j as PolicyVocabulary } from "../policy-types-DGIO_gxq.js";
|
|
2
|
+
import { a as PermDock } from "../permdock-CprAPN3w.js";
|
|
3
|
+
import { a as OtelOptions, i as OtelApi, n as GEN_AI_TOOL_CALL_ID, o as OtelWrap, r as GEN_AI_TOOL_NAME, s as StructuralLogger, t as GENAI_SEMCONV_PIN } from "../types-B6ExllNo.js";
|
|
4
4
|
//#region src/otel/instrument.d.ts
|
|
5
5
|
/**
|
|
6
6
|
* Listens on one instance. Spans carry no duration and no histogram is
|
|
@@ -8,7 +8,10 @@ import { a as OtelOptions, i as OtelApi, n as GEN_AI_TOOL_CALL_ID, o as OtelWrap
|
|
|
8
8
|
* `withOtel` for timings and for `tenant()` / `team()` derived instances.
|
|
9
9
|
*/
|
|
10
10
|
export declare function instrument(permdock: PermDock, options?: OtelOptions): () => void;
|
|
11
|
-
/**
|
|
11
|
+
/**
|
|
12
|
+
* Returns an instrumented instance: timed spans and histogram, derived
|
|
13
|
+
* instances included.
|
|
14
|
+
*/
|
|
12
15
|
export declare function withOtel<V extends PolicyVocabulary = PolicyVocabulary>(permdock: PermDock<V>, options?: OtelOptions): PermDock<V>;
|
|
13
16
|
//#endregion
|
|
14
17
|
export { GENAI_SEMCONV_PIN, GEN_AI_TOOL_CALL_ID, GEN_AI_TOOL_NAME, type OtelApi, type OtelOptions, type OtelWrap, type StructuralLogger };
|
package/dist/otel/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as compact } from "../compact-CAf557ZB.js";
|
|
2
|
-
import { n as wrapPermDock } from "../wrap-
|
|
3
|
-
import { r as appObligationNames } from "../ocsf-
|
|
2
|
+
import { n as wrapPermDock } from "../wrap-B2wziJI_.js";
|
|
3
|
+
import { r as appObligationNames } from "../ocsf-TcjRBgIs.js";
|
|
4
4
|
//#region src/otel/types.ts
|
|
5
5
|
const GENAI_SEMCONV_PIN = "1.37.0";
|
|
6
6
|
const GEN_AI_TOOL_NAME = "gen_ai.tool.name";
|
|
@@ -87,8 +87,8 @@ function omitPath(attributes, path) {
|
|
|
87
87
|
}
|
|
88
88
|
/**
|
|
89
89
|
* `error.type` for a decision that failed: a boundary validation failure
|
|
90
|
-
* always, and the first denial reason when `errorOnDeny` marks every denial
|
|
91
|
-
*
|
|
90
|
+
* always, and the first denial reason when `errorOnDeny` marks every denial an
|
|
91
|
+
* error.
|
|
92
92
|
*/
|
|
93
93
|
function errorType(event, options) {
|
|
94
94
|
if (event.outcome !== "denied") return;
|
|
@@ -220,7 +220,10 @@ function instrumented(permdock, options, api) {
|
|
|
220
220
|
};
|
|
221
221
|
});
|
|
222
222
|
}
|
|
223
|
-
/**
|
|
223
|
+
/**
|
|
224
|
+
* Returns an instrumented instance: timed spans and histogram, derived
|
|
225
|
+
* instances included.
|
|
226
|
+
*/
|
|
224
227
|
function withOtel(permdock, options = {}) {
|
|
225
228
|
return instrumented(permdock, options, resolveApi(options.api));
|
|
226
229
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { s as cliVersion } from "./version-
|
|
2
|
-
import { t as DOCS_BASE } from "./manifest-
|
|
1
|
+
import { s as cliVersion } from "./version-DMQ0dnN5.js";
|
|
2
|
+
import { t as DOCS_BASE } from "./manifest-B2QPh19C.js";
|
|
3
3
|
//#region src/cli/core/output.ts
|
|
4
4
|
const CLI_RESULT_SCHEMA = "https://permdock.com/schemas/cli-result-v1.json";
|
|
5
5
|
function envelope(input) {
|
|
@@ -23,8 +23,8 @@ function dataOf(output) {
|
|
|
23
23
|
}
|
|
24
24
|
const LOCATION = /^([^\s:]+\.[A-Za-z0-9]+):(\d+)\b/u;
|
|
25
25
|
/**
|
|
26
|
-
* A finding whose `file` and `line` default to the `path:line` a message
|
|
27
|
-
*
|
|
26
|
+
* A finding whose `file` and `line` default to the `path:line` a message opens
|
|
27
|
+
* with, the form doctor, usage and scan already print.
|
|
28
28
|
*/
|
|
29
29
|
function findingOf(input) {
|
|
30
30
|
if (input.file !== void 0) return input;
|
|
@@ -88,5 +88,9 @@ function sarifLog(command, findings) {
|
|
|
88
88
|
}]
|
|
89
89
|
}, null, 2)}\n`;
|
|
90
90
|
}
|
|
91
|
+
/** `text`, or `fallback` when `text` is empty. */
|
|
92
|
+
function nonEmptyOr(text, fallback) {
|
|
93
|
+
return text === "" ? fallback : text;
|
|
94
|
+
}
|
|
91
95
|
//#endregion
|
|
92
|
-
export {
|
|
96
|
+
export { nonEmptyOr as a, githubAnnotations as i, envelope as n, sarifLog as o, findingOf as r, dataOf as t };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { t as SPLIT_PARTS } from "./output-files-BIQ_9pIs.js";
|