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
package/README.md
CHANGED
|
@@ -151,9 +151,7 @@ The same hook names exist in React Native, Vue, Svelte and Solid. Read [building
|
|
|
151
151
|
import { createPermDock } from "permdock/next";
|
|
152
152
|
|
|
153
153
|
export const { getPermDock, requirePermission, permdockHandler } =
|
|
154
|
-
createPermDock(policy, {
|
|
155
|
-
subject: async () => getUser(await cookies()),
|
|
156
|
-
});
|
|
154
|
+
createPermDock(policy, { subject: async () => getUser(await cookies()) });
|
|
157
155
|
|
|
158
156
|
// in a page or Server Action
|
|
159
157
|
await requirePermission(permissions.post.update, post); // forbidden() / unauthorized() on a denial
|
package/dist/a2a/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { $n as AuthorizationDetail, T as Policy, sr as Principal } from "../policy-types-
|
|
2
|
-
import { u as Permission } from "../permission-types-
|
|
3
|
-
import { m as ApprovalStore } from "../types-
|
|
4
|
-
import { a as ProblemDetails } from "../errors-
|
|
5
|
-
import { t as InstanceOptions } from "../instance-options-
|
|
1
|
+
import { $n as AuthorizationDetail, T as Policy, sr as Principal } from "../policy-types-CCiDRZBH.js";
|
|
2
|
+
import { u as Permission } from "../permission-types-CAY-GU7e.js";
|
|
3
|
+
import { m as ApprovalStore } from "../types-B_tiYvk8.js";
|
|
4
|
+
import { a as ProblemDetails } from "../errors-zi_4T-rx.js";
|
|
5
|
+
import { t as InstanceOptions } from "../instance-options-B0KXqTrJ.js";
|
|
6
6
|
//#region src/a2a/types.d.ts
|
|
7
7
|
type A2aAuth = {
|
|
8
8
|
readonly clientId?: string;
|
|
@@ -159,8 +159,8 @@ type A2aPermDock = {
|
|
|
159
159
|
readonly extendedAgentCard: (auth: A2aAuth) => Promise<A2aAgentCard>;
|
|
160
160
|
readonly protectSkill: (selector: (task: unknown) => string) => (task: unknown, auth: A2aAuth) => Promise<A2aTaskOutcome>;
|
|
161
161
|
/**
|
|
162
|
-
* Appends an A2A 1.0 signature. `sign` returns a compact JWS over the
|
|
163
|
-
*
|
|
162
|
+
* Appends an A2A 1.0 signature. `sign` returns a compact JWS over the RFC
|
|
163
|
+
* 8785 canonical card it is given; the payload is detached.
|
|
164
164
|
*/
|
|
165
165
|
readonly sign: (card: A2aAgentCard, sign: (payload: string) => Promise<string>) => Promise<A2aAgentCard>;
|
|
166
166
|
};
|
package/dist/a2a/index.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { t as compact } from "../compact-CAf557ZB.js";
|
|
2
|
-
import { n as freezeDeep } from "../freeze-
|
|
3
|
-
import { o as statusProblem } from "../problem-details-
|
|
4
|
-
import { n as PermDockDeniedError, t as PermDockApprovalRequiredError } from "../errors-
|
|
2
|
+
import { n as freezeDeep } from "../freeze-jjan0lCv.js";
|
|
3
|
+
import { o as statusProblem } from "../problem-details-CLDgX1KV.js";
|
|
4
|
+
import { n as PermDockDeniedError, t as PermDockApprovalRequiredError } from "../errors-B6R_lg2a.js";
|
|
5
5
|
import { t as canonicalJson } from "../canonical-json-DwilZ1iB.js";
|
|
6
|
-
import { t as bytesToBase64Url } from "../sha256-
|
|
6
|
+
import { t as bytesToBase64Url } from "../sha256-C-4WXKIu.js";
|
|
7
7
|
import { n as resourceRef } from "../resource-ref-CaS9yVPi.js";
|
|
8
|
-
import { i as challengeScope, l as withApp, o as hasScope, s as scopesReaching } from "../permdock-
|
|
9
|
-
import {
|
|
10
|
-
import { r as instanceOptions } from "../build-instance-
|
|
11
|
-
import { n as createAgentKernel } from "../kernel-
|
|
8
|
+
import { i as challengeScope, l as withApp, o as hasScope, s as scopesReaching } from "../permdock-L-_I_3zP.js";
|
|
9
|
+
import { p as wwwAuthenticate, r as bearerChallenge } from "../problem-BVLHFK33.js";
|
|
10
|
+
import { r as instanceOptions } from "../build-instance-CNWaYJyr.js";
|
|
11
|
+
import { n as createAgentKernel } from "../kernel-C-fYydV2.js";
|
|
12
12
|
import { t as delegationFrom } from "../delegation-input-FTxMK3ji.js";
|
|
13
13
|
//#region src/a2a/create.ts
|
|
14
14
|
function firstScheme(options) {
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { a as ProblemDetails } from "./errors-zi_4T-rx.js";
|
|
2
|
+
//#region src/core/action-result.d.ts
|
|
3
|
+
/** What a `protectAction` action resolves to; both members cross to the client. */
|
|
4
|
+
type ActionResult<T> = {
|
|
5
|
+
readonly ok: true;
|
|
6
|
+
readonly value: T;
|
|
7
|
+
} | {
|
|
8
|
+
readonly ok: false;
|
|
9
|
+
readonly problem: ProblemDetails;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* The server action: `approval` is the token of a granted approval request,
|
|
13
|
+
* which resumes an `approval-required` decision.
|
|
14
|
+
*/
|
|
15
|
+
type ProtectedAction<T> = (input: unknown, options?: {
|
|
16
|
+
readonly approval?: string;
|
|
17
|
+
}) => Promise<ActionResult<T>>;
|
|
18
|
+
//#endregion
|
|
19
|
+
export { ProtectedAction as n, ActionResult as t };
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { n as isActor } from "./subject-BGoM5o8B.js";
|
|
2
2
|
//#region src/core/adapter-context.ts
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* Resolves an adapter `tenant` option against its framework context; a throw is
|
|
5
|
+
* no tenant.
|
|
6
|
+
*/
|
|
4
7
|
async function tenantScope(option, context) {
|
|
5
8
|
if (option === void 0 || typeof option === "string") return { tenant: option };
|
|
6
9
|
try {
|
|
@@ -9,7 +12,10 @@ async function tenantScope(option, context) {
|
|
|
9
12
|
return { tenant: void 0 };
|
|
10
13
|
}
|
|
11
14
|
}
|
|
12
|
-
/**
|
|
15
|
+
/**
|
|
16
|
+
* Resolves an adapter `actor` option; anything but an `Actor`, or a throw, is
|
|
17
|
+
* no actor.
|
|
18
|
+
*/
|
|
13
19
|
async function actorFrom(option, context) {
|
|
14
20
|
if (option === void 0) return;
|
|
15
21
|
try {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { r as listSourceFiles } from "./files-
|
|
2
|
-
import { t as DOCS_BASE } from "./manifest-
|
|
1
|
+
import { r as listSourceFiles } from "./files-BSjrtIHw.js";
|
|
2
|
+
import { t as DOCS_BASE } from "./manifest-Cgiq5oqc.js";
|
|
3
3
|
import { readFileSync } from "node:fs";
|
|
4
4
|
import { relative } from "node:path";
|
|
5
5
|
//#region src/cli/adoption-scan.ts
|
|
@@ -35,9 +35,9 @@ const LEGACY_PATTERNS = [
|
|
|
35
35
|
}
|
|
36
36
|
];
|
|
37
37
|
/**
|
|
38
|
-
* Lines that look like an authorization check written without PermDock:
|
|
39
|
-
*
|
|
40
|
-
*
|
|
38
|
+
* Lines that look like an authorization check written without PermDock: the
|
|
39
|
+
* work left before a permission can be enforced. It reads source text only and
|
|
40
|
+
* runs nothing; a finding is a place to look, not a verdict.
|
|
41
41
|
*/
|
|
42
42
|
function scanLegacy(options) {
|
|
43
43
|
const custom = (options.patterns ?? []).map((source) => ({
|
package/dist/agent/index.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { n as DeniedTextEvent, t as DeniedText } from "../denied-text-
|
|
2
|
-
import { a as createPermDock, c as ModelMap, d as StepUp, i as OperationVerdict, l as ToolBinding, n as AgentPermDockOptions, o as AgentAdapterOptions, r as GatewayOptions, s as DecideToolOptions, t as AgentPermDock, u as ToolMap } from "../create-
|
|
1
|
+
import { n as DeniedTextEvent, t as DeniedText } from "../denied-text-CHNlVInN.js";
|
|
2
|
+
import { a as createPermDock, c as ModelMap, d as StepUp, i as OperationVerdict, l as ToolBinding, n as AgentPermDockOptions, o as AgentAdapterOptions, r as GatewayOptions, s as DecideToolOptions, t as AgentPermDock, u as ToolMap } from "../create-BSNrVuxh.js";
|
|
3
3
|
export { type AgentAdapterOptions, type AgentPermDock, type AgentPermDockOptions, type DecideToolOptions, type DeniedText, type DeniedTextEvent, type GatewayOptions, type ModelMap, type OperationVerdict, type StepUp, type ToolBinding, type ToolMap, createPermDock };
|
package/dist/agent/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { n as createPermDock } from "../create-
|
|
1
|
+
export { n as createPermDock } from "../create-Cq4Uox0f.js";
|
package/dist/ai-sdk/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { T as Policy, j as PolicyVocabulary, sr as Principal } from "../policy-types-
|
|
2
|
-
import { u as Permission } from "../permission-types-
|
|
3
|
-
import { n as DeniedTextEvent, t as DeniedText } from "../denied-text-
|
|
4
|
-
import { d as StepUp, o as AgentAdapterOptions, t as AgentPermDock } from "../create-
|
|
1
|
+
import { T as Policy, j as PolicyVocabulary, sr as Principal } from "../policy-types-CCiDRZBH.js";
|
|
2
|
+
import { u as Permission } from "../permission-types-CAY-GU7e.js";
|
|
3
|
+
import { n as DeniedTextEvent, t as DeniedText } from "../denied-text-CHNlVInN.js";
|
|
4
|
+
import { d as StepUp, o as AgentAdapterOptions, t as AgentPermDock } from "../create-BSNrVuxh.js";
|
|
5
5
|
//#region src/ai-sdk/create.d.ts
|
|
6
6
|
type AiSdkContext = {
|
|
7
7
|
readonly runtimeContext?: unknown;
|
|
@@ -10,16 +10,19 @@ type AiSdkContext = {
|
|
|
10
10
|
};
|
|
11
11
|
type AiSdkPermDockOptions<TUser = unknown> = AgentAdapterOptions<AiSdkContext, TUser> & {
|
|
12
12
|
/**
|
|
13
|
-
* Turns a denial the user can lift into `user-approval`: a missing
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
13
|
+
* Turns a denial the user can lift into `user-approval`: a missing step-up
|
|
14
|
+
* authentication, or a role the user is eligible to activate. The re-check
|
|
15
|
+
* decides again and runs the tool only when granted. `at` is the page the
|
|
16
|
+
* user signs in again at; `acr_values` and `max_age` are added.
|
|
17
17
|
*/
|
|
18
18
|
readonly stepUp?: {
|
|
19
19
|
readonly at?: string;
|
|
20
20
|
};
|
|
21
21
|
};
|
|
22
|
-
/**
|
|
22
|
+
/**
|
|
23
|
+
* What an AI SDK tool approval function may return; `undefined` is
|
|
24
|
+
* `not-applicable`.
|
|
25
|
+
*/
|
|
23
26
|
type ToolApprovalResult = ToolApprovalStatus | undefined | "not-applicable" | "denied" | "user-approval" | {
|
|
24
27
|
readonly type: "not-applicable";
|
|
25
28
|
} | {
|
|
@@ -44,7 +47,10 @@ type ToolApprovalStatus = "approved" | {
|
|
|
44
47
|
} | {
|
|
45
48
|
readonly type: "user-approval";
|
|
46
49
|
readonly reason: string;
|
|
47
|
-
/**
|
|
50
|
+
/**
|
|
51
|
+
* What the user does before approving; there is no approval request in
|
|
52
|
+
* the store.
|
|
53
|
+
*/
|
|
48
54
|
readonly stepUp: StepUp;
|
|
49
55
|
};
|
|
50
56
|
/** Structural `GenericToolApprovalFunction` options from `ai`. */
|
|
@@ -93,9 +99,9 @@ type AiSdkPermDock<V extends PolicyVocabulary = PolicyVocabulary> = AgentPermDoc
|
|
|
93
99
|
*/
|
|
94
100
|
readonly composeToolApproval: (app: AppToolApproval) => (call: ToolApprovalCall) => Promise<ToolApprovalResult>;
|
|
95
101
|
/**
|
|
96
|
-
* Hides tools the subject in `context` can never use, before the model
|
|
97
|
-
*
|
|
98
|
-
*
|
|
102
|
+
* Hides tools the subject in `context` can never use, before the model sees
|
|
103
|
+
* them. With `models`, a call to a model the subject is not granted throws
|
|
104
|
+
* `PermDockDeniedError` before the provider is called.
|
|
99
105
|
*/
|
|
100
106
|
readonly capabilityMiddleware: (context: AiSdkContext) => LanguageModelMiddleware;
|
|
101
107
|
readonly needsApproval: (permission: Permission) => (input: unknown, options?: NeedsApprovalOptions) => Promise<boolean>;
|
package/dist/ai-sdk/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { t as compact } from "../compact-CAf557ZB.js";
|
|
2
|
-
import { n as PermDockDeniedError, t as PermDockApprovalRequiredError } from "../errors-
|
|
3
|
-
import { l as withApp } from "../permdock-
|
|
4
|
-
import { r as stepUpText, t as approvalTokenOf } from "../kernel-
|
|
5
|
-
import { t as agentRuntime } from "../create-
|
|
2
|
+
import { n as PermDockDeniedError, t as PermDockApprovalRequiredError } from "../errors-B6R_lg2a.js";
|
|
3
|
+
import { l as withApp } from "../permdock-L-_I_3zP.js";
|
|
4
|
+
import { r as stepUpText, t as approvalTokenOf } from "../kernel-C-fYydV2.js";
|
|
5
|
+
import { t as agentRuntime } from "../create-Cq4Uox0f.js";
|
|
6
6
|
//#region src/ai-sdk/create.ts
|
|
7
7
|
const APPROVAL_STATUSES = /* @__PURE__ */ new Set([
|
|
8
8
|
"approved",
|
|
@@ -30,8 +30,8 @@ function toolContextOf(options) {
|
|
|
30
30
|
}
|
|
31
31
|
/**
|
|
32
32
|
* Whether `messages` already carry an approval request for `toolCallId`: the
|
|
33
|
-
* SDK is re-checking a call a user approved, and treats any answer other
|
|
34
|
-
*
|
|
33
|
+
* SDK is re-checking a call a user approved, and treats any answer other than
|
|
34
|
+
* `denied` as approval.
|
|
35
35
|
*/
|
|
36
36
|
function isRecheck(messages, toolCallId) {
|
|
37
37
|
if (!Array.isArray(messages) || typeof toolCallId !== "string") return false;
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
import { t as assertSafeKey } from "./paths-
|
|
2
|
-
import { i as validateSync } from "./thenable-
|
|
1
|
+
import { t as assertSafeKey } from "./paths-CUvURzHp.js";
|
|
2
|
+
import { i as validateSync } from "./thenable-BNSM1U2R.js";
|
|
3
3
|
//#region src/core/app-data.ts
|
|
4
4
|
const MAX_META_DEPTH = 8;
|
|
5
|
-
/**
|
|
5
|
+
/**
|
|
6
|
+
* Throws unless `value` is plain, prototype-safe JSON at most eight levels
|
|
7
|
+
* deep.
|
|
8
|
+
*/
|
|
6
9
|
function assertMetaValue(value, label, depth = 0) {
|
|
7
10
|
if (depth > MAX_META_DEPTH) throw new Error(`PermDock: ${label} nests deeper than ${MAX_META_DEPTH}`);
|
|
8
11
|
if (value === null || typeof value === "string" || typeof value === "boolean" || typeof value === "number" && Number.isFinite(value)) return;
|
|
@@ -33,8 +36,8 @@ function runSchema(schema, value) {
|
|
|
33
36
|
};
|
|
34
37
|
}
|
|
35
38
|
/**
|
|
36
|
-
* Checks code-declared app data: plain JSON, then the schema when one is
|
|
37
|
-
*
|
|
39
|
+
* Checks code-declared app data: plain JSON, then the schema when one is given.
|
|
40
|
+
* Throws on failure, because a bad definition is an author error.
|
|
38
41
|
*/
|
|
39
42
|
function parseAppData(schema, value, label) {
|
|
40
43
|
assertAppData(value, label);
|
|
@@ -46,8 +49,8 @@ function parseAppData(schema, value, label) {
|
|
|
46
49
|
}
|
|
47
50
|
/**
|
|
48
51
|
* Checks app data read from a source (a membership, a stored custom role).
|
|
49
|
-
* Never throws: `undefined` means the value is dropped, and the caller
|
|
50
|
-
*
|
|
52
|
+
* Never throws: `undefined` means the value is dropped, and the caller reports
|
|
53
|
+
* it.
|
|
51
54
|
*/
|
|
52
55
|
function readAppData(schema, value) {
|
|
53
56
|
try {
|
|
@@ -6,15 +6,18 @@
|
|
|
6
6
|
const SF_TOKEN = /^[A-Za-z*][!#$%&'*+\-.^_`|~0-9A-Za-z:/]*$/u;
|
|
7
7
|
/**
|
|
8
8
|
* The token a `PermDock-Approval` field value carries, or `undefined` for
|
|
9
|
-
* anything but a single sf-token Item without parameters. Leading and
|
|
10
|
-
*
|
|
9
|
+
* anything but a single sf-token Item without parameters. Leading and trailing
|
|
10
|
+
* spaces are discarded as RFC 9651 section 4.2 parses them.
|
|
11
11
|
*/
|
|
12
12
|
function parseApprovalHeader(value) {
|
|
13
13
|
if (value === null) return;
|
|
14
14
|
const item = value.replaceAll(/^ +| +$/gu, "");
|
|
15
15
|
return SF_TOKEN.test(item) ? item : void 0;
|
|
16
16
|
}
|
|
17
|
-
/**
|
|
17
|
+
/**
|
|
18
|
+
* The `PermDock-Approval` field value for `token`; a `TypeError` for a token
|
|
19
|
+
* that is not an sf-token.
|
|
20
|
+
*/
|
|
18
21
|
function approvalHeaderValue(token) {
|
|
19
22
|
if (!SF_TOKEN.test(token)) throw new TypeError("PermDock: a PermDock-Approval token must be an RFC 9651 sf-token");
|
|
20
23
|
return token;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { t as compact } from "./compact-CAf557ZB.js";
|
|
2
|
-
import { n as freezeDeep } from "./freeze-
|
|
2
|
+
import { n as freezeDeep } from "./freeze-jjan0lCv.js";
|
|
3
3
|
//#region src/delivery/approval-prompt.ts
|
|
4
4
|
/**
|
|
5
|
-
* The prompt for a pending request. Throws a `TypeError` for a request that
|
|
6
|
-
*
|
|
5
|
+
* The prompt for a pending request. Throws a `TypeError` for a request that is
|
|
6
|
+
* not pending: a resolved or expired request has nothing to approve.
|
|
7
7
|
*/
|
|
8
8
|
function approvalPrompt(request, options = {}) {
|
|
9
9
|
if (request.status !== "pending") throw new TypeError(`PermDock: approvalPrompt needs a pending request, got ${request.status}`);
|
|
@@ -39,9 +39,8 @@ function approvalPrompt(request, options = {}) {
|
|
|
39
39
|
}));
|
|
40
40
|
}
|
|
41
41
|
/**
|
|
42
|
-
* The approval page URL for `prompt`. A string or `URL` is a base the
|
|
43
|
-
*
|
|
44
|
-
* not https.
|
|
42
|
+
* The approval page URL for `prompt`. A string or `URL` is a base the encoded
|
|
43
|
+
* request id is appended to. Throws a `TypeError` for a URL that is not https.
|
|
45
44
|
*/
|
|
46
45
|
function approvalUrlFor(prompt, approvalUrl) {
|
|
47
46
|
let url;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { s as OperationMeta, t as Operation } from "./operations-
|
|
2
|
-
import { u as ApprovalRequest } from "./types-
|
|
1
|
+
import { s as OperationMeta, t as Operation } from "./operations-Ci_rT6Uo.js";
|
|
2
|
+
import { u as ApprovalRequest } from "./types-B_tiYvk8.js";
|
|
3
3
|
//#region src/delivery/approval-prompt.d.ts
|
|
4
4
|
/**
|
|
5
|
-
* What an email or chat prompt shows an approver, wire format v1. It carries
|
|
6
|
-
*
|
|
7
|
-
*
|
|
5
|
+
* What an email or chat prompt shows an approver, wire format v1. It carries no
|
|
6
|
+
* approval token and no roles: a prompt links to the app's approval page, where
|
|
7
|
+
* the signed-in approver decides. A link never approves.
|
|
8
8
|
*/
|
|
9
9
|
type ApprovalPrompt = {
|
|
10
10
|
readonly v: 1;
|
|
@@ -38,19 +38,21 @@ type ApprovalPrompt = {
|
|
|
38
38
|
readonly effects?: OperationMeta["effects"];
|
|
39
39
|
};
|
|
40
40
|
};
|
|
41
|
-
/**
|
|
41
|
+
/**
|
|
42
|
+
* The approval page for a prompt: a base URL the request id is appended to, or
|
|
43
|
+
* a function of the prompt.
|
|
44
|
+
*/
|
|
42
45
|
type ApprovalUrl = string | URL | ((prompt: ApprovalPrompt) => string | URL);
|
|
43
46
|
/**
|
|
44
|
-
* The prompt for a pending request. Throws a `TypeError` for a request that
|
|
45
|
-
*
|
|
47
|
+
* The prompt for a pending request. Throws a `TypeError` for a request that is
|
|
48
|
+
* not pending: a resolved or expired request has nothing to approve.
|
|
46
49
|
*/
|
|
47
50
|
declare function approvalPrompt(request: ApprovalRequest, options?: {
|
|
48
51
|
readonly operation?: Pick<Operation, "name" | "meta">;
|
|
49
52
|
}): ApprovalPrompt;
|
|
50
53
|
/**
|
|
51
|
-
* The approval page URL for `prompt`. A string or `URL` is a base the
|
|
52
|
-
*
|
|
53
|
-
* not https.
|
|
54
|
+
* The approval page URL for `prompt`. A string or `URL` is a base the encoded
|
|
55
|
+
* request id is appended to. Throws a `TypeError` for a URL that is not https.
|
|
54
56
|
*/
|
|
55
57
|
declare function approvalUrlFor(prompt: ApprovalPrompt, approvalUrl: ApprovalUrl): string;
|
|
56
58
|
//#endregion
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { _ as DEFAULT_APPROVAL_TTL, a as ApprovalDelegationSource, b as escalationOpenAt, c as ApprovalListQuery, d as ApprovalResumeFailureCause, f as ApprovalSignature, g as ApprovalVerdict, h as ApprovalSubjectSummary, i as ApprovalDelegation, l as ApprovalPage, m as ApprovalStore, n as ApprovalApprovers, o as ApprovalInspectResult, p as ApprovalStatus, r as ApprovalCancelMeta, s as ApprovalListFilter, t as APPROVAL_HEADER, u as ApprovalRequest, v as approvalQuorum, y as approverRelationKey } from "../types-
|
|
2
|
-
import { n as ApprovalErrorCode, r as isApprovalError, t as ApprovalError } from "../errors-
|
|
3
|
-
import { a as AccessReviewItemQuery, c as AccessReviewStore, i as AccessReviewItemPage, n as AccessReviewDecision, o as AccessReviewItemStatus, r as AccessReviewItem, s as AccessReviewStatus, t as AccessReview } from "../types-
|
|
4
|
-
import { $ as AccessReviewHolder, A as SignApprovalOptions, B as IdempotentResponse, C as ApproverRelationsOptions, D as approvalView, E as approvalEntityTag, F as ApprovalsHandlerOptions, G as ApprovalDelegationMatch, H as idempotencyRecordKey, I as approvalsHandler, J as memoryApprovalDelegationSource, K as MatchDelegationOptions, L as IdempotencyRecord, M as signApproval, N as APPROVAL_REQUEST_SCHEMA, O as ApprovalSignatureClaims, P as parseApprovalRequest, Q as pageAccessReviewItems, R as IdempotencyStore, S as vouchApproval, T as ApprovalView, U as matchesIdempotencyRecord, V as idempotencyRecord, W as memoryIdempotencyStore, X as MemoryAccessReviewStore, Y as parseApprovalDelegation, Z as memoryAccessReviewStore, _ as resolveApproval, a as approverPermissions, at as isAccessReviewError, b as storedApprovalToken, c as decodeApprovalCursor, ct as decideAccessReviewItem, d as pageApprovals, et as AccessReviewOptions, f as cancelApprovals, g as requestApproval, h as readApprovalHeader, i as memoryApprovalStore, it as AccessReviewErrorCode, j as approvalSignatureClaims, k as ApprovalSignatureEntry, l as encodeApprovalCursor, lt as AccessReviewsHandlerOptions, m as inspectApproval, n as applyApprovalVerdict, nt as startAccessReview, o as ApprovalCursorPosition, ot as AccessReviewVerdict, p as consumeApproval, q as matchDelegation, r as assertApprover, rt as AccessReviewError, s as approvalPageSize, st as accessReviewerEligible, t as MemoryApprovalStore, tt as StartAccessReviewInput, u as listAllApprovals, ut as accessReviewsHandler, v as resumeDecision, w as approverRelations, x as summarizeSubject, y as resumeFromHeader, z as IdempotentCall } from "../index-
|
|
1
|
+
import { _ as DEFAULT_APPROVAL_TTL, a as ApprovalDelegationSource, b as escalationOpenAt, c as ApprovalListQuery, d as ApprovalResumeFailureCause, f as ApprovalSignature, g as ApprovalVerdict, h as ApprovalSubjectSummary, i as ApprovalDelegation, l as ApprovalPage, m as ApprovalStore, n as ApprovalApprovers, o as ApprovalInspectResult, p as ApprovalStatus, r as ApprovalCancelMeta, s as ApprovalListFilter, t as APPROVAL_HEADER, u as ApprovalRequest, v as approvalQuorum, y as approverRelationKey } from "../types-B_tiYvk8.js";
|
|
2
|
+
import { n as ApprovalErrorCode, r as isApprovalError, t as ApprovalError } from "../errors-CHwoRRpB.js";
|
|
3
|
+
import { a as AccessReviewItemQuery, c as AccessReviewStore, i as AccessReviewItemPage, n as AccessReviewDecision, o as AccessReviewItemStatus, r as AccessReviewItem, s as AccessReviewStatus, t as AccessReview } from "../types-B2mlGuhW.js";
|
|
4
|
+
import { $ as AccessReviewHolder, A as SignApprovalOptions, B as IdempotentResponse, C as ApproverRelationsOptions, D as approvalView, E as approvalEntityTag, F as ApprovalsHandlerOptions, G as ApprovalDelegationMatch, H as idempotencyRecordKey, I as approvalsHandler, J as memoryApprovalDelegationSource, K as MatchDelegationOptions, L as IdempotencyRecord, M as signApproval, N as APPROVAL_REQUEST_SCHEMA, O as ApprovalSignatureClaims, P as parseApprovalRequest, Q as pageAccessReviewItems, R as IdempotencyStore, S as vouchApproval, T as ApprovalView, U as matchesIdempotencyRecord, V as idempotencyRecord, W as memoryIdempotencyStore, X as MemoryAccessReviewStore, Y as parseApprovalDelegation, Z as memoryAccessReviewStore, _ as resolveApproval, a as approverPermissions, at as isAccessReviewError, b as storedApprovalToken, c as decodeApprovalCursor, ct as decideAccessReviewItem, d as pageApprovals, et as AccessReviewOptions, f as cancelApprovals, g as requestApproval, h as readApprovalHeader, i as memoryApprovalStore, it as AccessReviewErrorCode, j as approvalSignatureClaims, k as ApprovalSignatureEntry, l as encodeApprovalCursor, lt as AccessReviewsHandlerOptions, m as inspectApproval, n as applyApprovalVerdict, nt as startAccessReview, o as ApprovalCursorPosition, ot as AccessReviewVerdict, p as consumeApproval, q as matchDelegation, r as assertApprover, rt as AccessReviewError, s as approvalPageSize, st as accessReviewerEligible, t as MemoryApprovalStore, tt as StartAccessReviewInput, u as listAllApprovals, ut as accessReviewsHandler, v as resumeDecision, w as approverRelations, x as summarizeSubject, y as resumeFromHeader, z as IdempotentCall } from "../index-_9UiQIkt.js";
|
|
5
5
|
export { APPROVAL_HEADER, APPROVAL_REQUEST_SCHEMA, type AccessReview, type AccessReviewDecision, AccessReviewError, type AccessReviewErrorCode, type AccessReviewHolder, type AccessReviewItem, type AccessReviewItemPage, type AccessReviewItemQuery, type AccessReviewItemStatus, type AccessReviewOptions, type AccessReviewStatus, type AccessReviewStore, type AccessReviewVerdict, type AccessReviewsHandlerOptions, type ApprovalApprovers, type ApprovalCancelMeta, type ApprovalCursorPosition, type ApprovalDelegation, type ApprovalDelegationMatch, type ApprovalDelegationSource, ApprovalError, type ApprovalErrorCode, type ApprovalInspectResult, type ApprovalListFilter, type ApprovalListQuery, type ApprovalPage, type ApprovalRequest, type ApprovalResumeFailureCause, type ApprovalSignature, type ApprovalSignatureClaims, type ApprovalSignatureEntry, type ApprovalStatus, type ApprovalStore, type ApprovalSubjectSummary, type ApprovalVerdict, type ApprovalView, type ApprovalsHandlerOptions, type ApproverRelationsOptions, DEFAULT_APPROVAL_TTL, type IdempotencyRecord, type IdempotencyStore, type IdempotentCall, type IdempotentResponse, type MatchDelegationOptions, type MemoryAccessReviewStore, type MemoryApprovalStore, type SignApprovalOptions, type StartAccessReviewInput, accessReviewerEligible, accessReviewsHandler, applyApprovalVerdict, approvalEntityTag, approvalPageSize, approvalQuorum, approvalSignatureClaims, approvalView, approvalsHandler, approverPermissions, approverRelationKey, approverRelations, assertApprover, cancelApprovals, consumeApproval, decideAccessReviewItem, decodeApprovalCursor, encodeApprovalCursor, escalationOpenAt, idempotencyRecord, idempotencyRecordKey, inspectApproval, isAccessReviewError, isApprovalError, listAllApprovals, matchDelegation, matchesIdempotencyRecord, memoryAccessReviewStore, memoryApprovalDelegationSource, memoryApprovalStore, memoryIdempotencyStore, pageAccessReviewItems, pageApprovals, parseApprovalDelegation, parseApprovalRequest, readApprovalHeader, requestApproval, resolveApproval, resumeDecision, resumeFromHeader, signApproval, startAccessReview, storedApprovalToken, summarizeSubject, vouchApproval };
|
package/dist/approvals/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { a as escalationOpenAt, c as isApprovalError, i as approverRelationKey, n as DEFAULT_APPROVAL_TTL, r as approvalQuorum, s as ApprovalError, t as APPROVAL_HEADER } from "../types-
|
|
2
|
-
import { c as decodeApprovalCursor, d as pageApprovals, i as memoryApprovalStore, l as encodeApprovalCursor, n as assertApprover, s as approvalPageSize, t as applyApprovalVerdict, u as listAllApprovals } from "../store-
|
|
3
|
-
import { a as requestApproval, c as resumeFromHeader, d as vouchApproval, f as approverPermissions, i as readApprovalHeader, l as storedApprovalToken, m as approverRelations, n as consumeApproval, o as resolveApproval, r as inspectApproval, s as resumeDecision, t as cancelApprovals, u as summarizeSubject } from "../helpers-
|
|
1
|
+
import { a as escalationOpenAt, c as isApprovalError, i as approverRelationKey, n as DEFAULT_APPROVAL_TTL, r as approvalQuorum, s as ApprovalError, t as APPROVAL_HEADER } from "../types-CcUXciSj.js";
|
|
2
|
+
import { c as decodeApprovalCursor, d as pageApprovals, i as memoryApprovalStore, l as encodeApprovalCursor, n as assertApprover, s as approvalPageSize, t as applyApprovalVerdict, u as listAllApprovals } from "../store-RNFvaJJv.js";
|
|
3
|
+
import { a as requestApproval, c as resumeFromHeader, d as vouchApproval, f as approverPermissions, i as readApprovalHeader, l as storedApprovalToken, m as approverRelations, n as consumeApproval, o as resolveApproval, r as inspectApproval, s as resumeDecision, t as cancelApprovals, u as summarizeSubject } from "../helpers-DJicaG6f.js";
|
|
4
4
|
import { n as isAccessReviewError, t as AccessReviewError } from "../errors-BDUwg2qC.js";
|
|
5
|
-
import { _ as accessReviewerEligible, a as idempotencyRecordKey, c as approvalEntityTag, d as memoryApprovalDelegationSource, f as parseApprovalDelegation, g as accessReviewsHandler, h as startAccessReview, i as idempotencyRecord, l as approvalView, m as pageAccessReviewItems, n as approvalSignatureClaims, o as matchesIdempotencyRecord, p as memoryAccessReviewStore, r as signApproval, s as memoryIdempotencyStore, t as approvalsHandler, u as matchDelegation, v as decideAccessReviewItem } from "../approvals-
|
|
6
|
-
import { t as APPROVAL_REQUEST_SCHEMA } from "../request-schema-
|
|
7
|
-
import { t as parseApprovalRequest } from "../parse-request-
|
|
5
|
+
import { _ as accessReviewerEligible, a as idempotencyRecordKey, c as approvalEntityTag, d as memoryApprovalDelegationSource, f as parseApprovalDelegation, g as accessReviewsHandler, h as startAccessReview, i as idempotencyRecord, l as approvalView, m as pageAccessReviewItems, n as approvalSignatureClaims, o as matchesIdempotencyRecord, p as memoryAccessReviewStore, r as signApproval, s as memoryIdempotencyStore, t as approvalsHandler, u as matchDelegation, v as decideAccessReviewItem } from "../approvals-DnIBTuXE.js";
|
|
6
|
+
import { t as APPROVAL_REQUEST_SCHEMA } from "../request-schema-DhX7UbfQ.js";
|
|
7
|
+
import { t as parseApprovalRequest } from "../parse-request-CwCZpyjV.js";
|
|
8
8
|
export { APPROVAL_HEADER, APPROVAL_REQUEST_SCHEMA, AccessReviewError, ApprovalError, DEFAULT_APPROVAL_TTL, accessReviewerEligible, accessReviewsHandler, applyApprovalVerdict, approvalEntityTag, approvalPageSize, approvalQuorum, approvalSignatureClaims, approvalView, approvalsHandler, approverPermissions, approverRelationKey, approverRelations, assertApprover, cancelApprovals, consumeApproval, decideAccessReviewItem, decodeApprovalCursor, encodeApprovalCursor, escalationOpenAt, idempotencyRecord, idempotencyRecordKey, inspectApproval, isAccessReviewError, isApprovalError, listAllApprovals, matchDelegation, matchesIdempotencyRecord, memoryAccessReviewStore, memoryApprovalDelegationSource, memoryApprovalStore, memoryIdempotencyStore, pageAccessReviewItems, pageApprovals, parseApprovalDelegation, parseApprovalRequest, readApprovalHeader, requestApproval, resolveApproval, resumeDecision, resumeFromHeader, signApproval, startAccessReview, storedApprovalToken, summarizeSubject, vouchApproval };
|
|
@@ -1,23 +1,26 @@
|
|
|
1
1
|
import { t as compact } from "./compact-CAf557ZB.js";
|
|
2
|
-
import { n as freezeDeep } from "./freeze-
|
|
3
|
-
import { a as ownRecord } from "./paths-
|
|
4
|
-
import { a as problemType, o as statusProblem } from "./problem-details-
|
|
5
|
-
import { a as isId } from "./expiry-
|
|
6
|
-
import { d as isoNow, f as nowMillis, g as secondsOf, i as dateAt } from "./time-
|
|
2
|
+
import { n as freezeDeep } from "./freeze-jjan0lCv.js";
|
|
3
|
+
import { a as ownRecord } from "./paths-CUvURzHp.js";
|
|
4
|
+
import { a as problemType, o as statusProblem } from "./problem-details-CLDgX1KV.js";
|
|
5
|
+
import { a as isId } from "./expiry-6XByK0dm.js";
|
|
6
|
+
import { d as isoNow, f as nowMillis, g as secondsOf, i as dateAt } from "./time-nR1JesoH.js";
|
|
7
7
|
import { t as canonicalJson } from "./canonical-json-DwilZ1iB.js";
|
|
8
|
-
import { r as sha256Digest } from "./sha256-
|
|
9
|
-
import { c as rootMembershipId } from "./scopes-
|
|
10
|
-
import { o as flattenGrantee } from "./grantee-
|
|
11
|
-
import { c as isApprovalError, s as ApprovalError } from "./types-
|
|
12
|
-
import { a as belongsToTenant, c as decodeApprovalCursor, n as assertApprover, o as membershipTenants, r as matchesApprovers, s as approvalPageSize, u as listAllApprovals } from "./store-
|
|
13
|
-
import { n as readBodyText } from "./body-text-
|
|
14
|
-
import { r as hasCredentials } from "./http-
|
|
15
|
-
import {
|
|
16
|
-
import { f as approverPermissions, m as approverRelations, p as heldPermissions } from "./helpers-
|
|
8
|
+
import { r as sha256Digest } from "./sha256-C-4WXKIu.js";
|
|
9
|
+
import { c as rootMembershipId } from "./scopes-0Up_UA2t.js";
|
|
10
|
+
import { o as flattenGrantee } from "./grantee-Dke-9rd1.js";
|
|
11
|
+
import { c as isApprovalError, s as ApprovalError } from "./types-CcUXciSj.js";
|
|
12
|
+
import { a as belongsToTenant, c as decodeApprovalCursor, n as assertApprover, o as membershipTenants, r as matchesApprovers, s as approvalPageSize, u as listAllApprovals } from "./store-RNFvaJJv.js";
|
|
13
|
+
import { n as readBodyText } from "./body-text-DQhcmqdY.js";
|
|
14
|
+
import { r as hasCredentials } from "./http-DKLXrFGk.js";
|
|
15
|
+
import { d as unauthenticatedProblem, f as validationProblem, l as problemResponse, o as methodNotAllowed } from "./problem-BVLHFK33.js";
|
|
16
|
+
import { f as approverPermissions, m as approverRelations, p as heldPermissions } from "./helpers-DJicaG6f.js";
|
|
17
17
|
import { n as isAccessReviewError, t as AccessReviewError } from "./errors-BDUwg2qC.js";
|
|
18
|
-
import { t as bodyTooLarge } from "./body-
|
|
18
|
+
import { t as bodyTooLarge } from "./body-CJQwYVa8.js";
|
|
19
19
|
//#region src/approvals/access-reviews/decide.ts
|
|
20
|
-
/**
|
|
20
|
+
/**
|
|
21
|
+
* Whether `by` is named as a reviewer. A link, a feed or a contact is never a
|
|
22
|
+
* reviewer.
|
|
23
|
+
*/
|
|
21
24
|
function accessReviewerEligible(review, by, permissions = [], now) {
|
|
22
25
|
const principal = by.principal;
|
|
23
26
|
if (principal === null || principal.kind === "link" || principal.kind === "feed" || principal.kind === "contact") return false;
|
|
@@ -27,8 +30,8 @@ function accessReviewerEligible(review, by, permissions = [], now) {
|
|
|
27
30
|
});
|
|
28
31
|
}
|
|
29
32
|
/**
|
|
30
|
-
* The decision to persist, or throws. A reviewer cannot decide a holding
|
|
31
|
-
*
|
|
33
|
+
* The decision to persist, or throws. A reviewer cannot decide a holding of
|
|
34
|
+
* their own principal. `holder()` matches only through `permissions`.
|
|
32
35
|
*/
|
|
33
36
|
function decideAccessReviewItem(review, item, verdict, at) {
|
|
34
37
|
const now = dateAt(at);
|
|
@@ -57,7 +60,10 @@ function json$1(status, body) {
|
|
|
57
60
|
headers: { "content-type": "application/json" }
|
|
58
61
|
});
|
|
59
62
|
}
|
|
60
|
-
/**
|
|
63
|
+
/**
|
|
64
|
+
* The route a path names, the methods it allows, or `undefined` for an unknown
|
|
65
|
+
* path.
|
|
66
|
+
*/
|
|
61
67
|
function parseRoute$1(url, method) {
|
|
62
68
|
const parts = url.pathname.replace(/\/+$/u, "").split("/").filter(Boolean);
|
|
63
69
|
const last = parts.at(-1);
|
|
@@ -132,8 +138,8 @@ function mapError$1(error, credentials) {
|
|
|
132
138
|
}
|
|
133
139
|
/**
|
|
134
140
|
* HTTP for one access-review store: `GET` a review and its items, `POST`
|
|
135
|
-
* `.../keep`, `.../revoke`, `.../applied` and `.../close`. A caller who is
|
|
136
|
-
*
|
|
141
|
+
* `.../keep`, `.../revoke`, `.../applied` and `.../close`. A caller who is not
|
|
142
|
+
* a reviewer and did not open the review gets 404.
|
|
137
143
|
*/
|
|
138
144
|
function accessReviewsHandler(store, options) {
|
|
139
145
|
return async (request) => {
|
|
@@ -275,9 +281,9 @@ function itemsFrom(reviewId, holders, keys) {
|
|
|
275
281
|
return items;
|
|
276
282
|
}
|
|
277
283
|
/**
|
|
278
|
-
* Opens a review of who holds `permissions` in the caller's active tenant.
|
|
279
|
-
*
|
|
280
|
-
*
|
|
284
|
+
* Opens a review of who holds `permissions` in the caller's active tenant. The
|
|
285
|
+
* caller must be signed in. PermDock stores the population and does not revoke
|
|
286
|
+
* anything: the application changes the source, then `markApplied`.
|
|
281
287
|
*/
|
|
282
288
|
async function startAccessReview(permdock, input, options) {
|
|
283
289
|
const principal = permdock.subject.principal;
|
|
@@ -415,9 +421,9 @@ function stringList(value) {
|
|
|
415
421
|
return [...new Set(value)];
|
|
416
422
|
}
|
|
417
423
|
/**
|
|
418
|
-
* A frozen copy of a delegation with only the known fields, or `undefined`
|
|
419
|
-
*
|
|
420
|
-
*
|
|
424
|
+
* A frozen copy of a delegation with only the known fields, or `undefined` when
|
|
425
|
+
* a known field has the wrong type, `until` is not after `from`, or the
|
|
426
|
+
* delegate and the delegator are the same principal.
|
|
421
427
|
*/
|
|
422
428
|
function parseApprovalDelegation(input) {
|
|
423
429
|
const value = ownRecord(input);
|
|
@@ -475,8 +481,8 @@ function covers(entry, request, delegate, tenant, at) {
|
|
|
475
481
|
return entry.resources === void 0 || entry.resources.includes(request.resource.type);
|
|
476
482
|
}
|
|
477
483
|
/**
|
|
478
|
-
* The first active delegation under which `delegate` may approve `request`,
|
|
479
|
-
*
|
|
484
|
+
* The first active delegation under which `delegate` may approve `request`, or
|
|
485
|
+
* `undefined`. The delegator is resolved by `subjectFor` and checked with
|
|
480
486
|
* `assertApprover`, so relation and permission approvers use the delegator's
|
|
481
487
|
* facts. A throw, a missing option or a delegator the source does not name
|
|
482
488
|
* matches nobody. The delegator's own delegations are never read.
|
|
@@ -529,17 +535,23 @@ function approvalView(request) {
|
|
|
529
535
|
}
|
|
530
536
|
/**
|
|
531
537
|
* A strong RFC 9110 entity tag: the quoted `sha-256:` digest of
|
|
532
|
-
* `approvalView(request)` as RFC 8785 JSON. A field outside
|
|
533
|
-
*
|
|
538
|
+
* `approvalView(request)` as RFC 8785 JSON. A field outside `ApprovalRequest`
|
|
539
|
+
* changes the tag, so hash the stored request as is.
|
|
534
540
|
*/
|
|
535
541
|
function approvalEntityTag(request) {
|
|
536
542
|
return `"${sha256Digest(canonicalJson(approvalView(request)))}"`;
|
|
537
543
|
}
|
|
538
544
|
//#endregion
|
|
539
545
|
//#region src/approvals/idempotency.ts
|
|
540
|
-
/**
|
|
546
|
+
/**
|
|
547
|
+
* How long `approvalsHandler` keeps a response for a repeated
|
|
548
|
+
* `Idempotency-Key`.
|
|
549
|
+
*/
|
|
541
550
|
const IDEMPOTENCY_TTL_MS = 864e5;
|
|
542
|
-
/**
|
|
551
|
+
/**
|
|
552
|
+
* The `IdempotencyStore` key for one approver's `Idempotency-Key`: keys never
|
|
553
|
+
* cross approvers.
|
|
554
|
+
*/
|
|
543
555
|
function idempotencyRecordKey(principalId, key) {
|
|
544
556
|
return `${principalId}\n${key}`;
|
|
545
557
|
}
|
|
@@ -547,9 +559,9 @@ function fingerprintOf(call) {
|
|
|
547
559
|
return `${call.action} ${call.id} ${sha256Digest(call.body)}`;
|
|
548
560
|
}
|
|
549
561
|
/**
|
|
550
|
-
* The record `approvalsHandler` stores after `call` answered `response`:
|
|
551
|
-
*
|
|
552
|
-
*
|
|
562
|
+
* The record `approvalsHandler` stores after `call` answered `response`: the
|
|
563
|
+
* status, headers and body text, the call's fingerprint, and an expiry 24 hours
|
|
564
|
+
* after `now` (epoch milliseconds, default the clock).
|
|
553
565
|
*/
|
|
554
566
|
async function idempotencyRecord(input) {
|
|
555
567
|
return {
|
|
@@ -563,7 +575,10 @@ async function idempotencyRecord(input) {
|
|
|
563
575
|
expiresAt: (input.now ?? nowMillis()) + IDEMPOTENCY_TTL_MS
|
|
564
576
|
};
|
|
565
577
|
}
|
|
566
|
-
/**
|
|
578
|
+
/**
|
|
579
|
+
* Whether a stored response came from the same call: a reused key with another
|
|
580
|
+
* call is refused with `422`.
|
|
581
|
+
*/
|
|
567
582
|
function matchesIdempotencyRecord(response, call) {
|
|
568
583
|
return response.fingerprint === fingerprintOf(call);
|
|
569
584
|
}
|
|
@@ -671,8 +686,8 @@ function decodeSegment(segment) {
|
|
|
671
686
|
}
|
|
672
687
|
}
|
|
673
688
|
/**
|
|
674
|
-
* The route the path names and the methods it allows. The handler mounts at
|
|
675
|
-
*
|
|
689
|
+
* The route the path names and the methods it allows. The handler mounts at any
|
|
690
|
+
* prefix, so a path reads from its last segments; a path naming none is
|
|
676
691
|
* `undefined` (`404`).
|
|
677
692
|
*/
|
|
678
693
|
function parseRoute(url) {
|
|
@@ -744,7 +759,10 @@ async function factsFor(request, subject, options) {
|
|
|
744
759
|
permissions: await heldPermissions(request, subject, options.permdockFor)
|
|
745
760
|
};
|
|
746
761
|
}
|
|
747
|
-
/**
|
|
762
|
+
/**
|
|
763
|
+
* The caller as themselves, or the first delegation that makes them an
|
|
764
|
+
* approver.
|
|
765
|
+
*/
|
|
748
766
|
async function actingApprover(request, subject, requireDistinct, options) {
|
|
749
767
|
const facts = await factsFor(request, subject, options);
|
|
750
768
|
try {
|
|
@@ -792,7 +810,10 @@ function canView(request, subject, requireDistinct, options) {
|
|
|
792
810
|
if (request.resolvedBy === principal.id || (request.approvals ?? []).some((item) => item.by === principal.id)) return Promise.resolve(true);
|
|
793
811
|
return mayResolve(request, subject, requireDistinct, options);
|
|
794
812
|
}
|
|
795
|
-
/**
|
|
813
|
+
/**
|
|
814
|
+
* The requester and who answered: the signed approval carries the resume token,
|
|
815
|
+
* so only they read it.
|
|
816
|
+
*/
|
|
796
817
|
function party(request, principalId) {
|
|
797
818
|
return request.subject.principal?.id === principalId || request.resolvedBy === principalId || (request.approvals ?? []).some((item) => item.by === principalId);
|
|
798
819
|
}
|
|
@@ -833,7 +854,10 @@ function inboxScope(url, subject) {
|
|
|
833
854
|
}
|
|
834
855
|
const MAX_BODY_BYTES = 16384;
|
|
835
856
|
const MAX_NOTE_LENGTH = 2e3;
|
|
836
|
-
/**
|
|
857
|
+
/**
|
|
858
|
+
* An unreadable body is no note; an oversized body or note is refused, never
|
|
859
|
+
* truncated.
|
|
860
|
+
*/
|
|
837
861
|
async function readNote(request) {
|
|
838
862
|
if (!(request.headers.get("content-type") ?? "").includes("application/json")) return { text: "" };
|
|
839
863
|
const read = await readBodyText(request, MAX_BODY_BYTES);
|