permdock 0.5.0 → 0.7.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 -0
- package/dist/{2020-C9VN-x8c.js → 2020-CJbO8Bvz.js} +1 -3
- package/dist/a2a/index.d.ts +5 -5
- package/dist/a2a/index.js +4 -4
- package/dist/{adoption-scan-B4R5fnMU.js → adoption-scan-D-feE7BE.js} +1 -1
- package/dist/agent/index.d.ts +3 -3
- package/dist/agent/index.js +1 -1
- package/dist/ai-sdk/index.d.ts +21 -6
- package/dist/ai-sdk/index.js +19 -9
- package/dist/{approval-prompt-Djo_PyZc.d.ts → approval-prompt-K0faOLFp.d.ts} +2 -2
- package/dist/approvals/index.d.ts +4 -4
- package/dist/approvals/index.js +4 -4
- package/dist/{approvals-DJ6Yd5z1.js → approvals-CMRfsbBh.js} +74 -48
- package/dist/{arazzo-B6lebmiQ.js → arazzo-ClrF3PVb.js} +2 -2
- package/dist/{arazzo-BWhNF-k0.js → arazzo-rdeJ8n1J.js} +4 -4
- package/dist/{args-IIolxxKA.js → args-CC3OwyHW.js} +112 -2
- package/dist/astro/index.d.ts +6 -6
- package/dist/astro/index.js +2 -2
- package/dist/{audience-Dg8XsRaO.js → audience-BrMs8c4o.js} +1 -1
- package/dist/{auth-DRLEizbL.js → auth-CscUX8Sy.js} +3 -4
- package/dist/authzen/index.d.ts +162 -22
- package/dist/authzen/index.js +315 -146
- package/dist/{automation-BMZPIVUM.d.ts → automation-DOtAFWdy.d.ts} +3 -3
- package/dist/{automation-DVjOckjV.js → automation-ySsxp_Yp.js} +1 -1
- package/dist/base-url-BQbddZO5.js +9 -0
- package/dist/better-auth/index.d.ts +2 -2
- package/dist/better-auth/index.js +2 -2
- package/dist/better-supabase/index.d.ts +50 -8
- package/dist/better-supabase/index.js +94 -32
- package/dist/{bind-CZzhx-Vj.js → bind-D1nO6fiC.js} +5 -5
- package/dist/{bind--9EFVYWF.d.ts → bind-JDuvxjuW.d.ts} +7 -7
- package/dist/{build-instance-BMnAudHn.js → build-instance-DxE7czo9.js} +1 -1
- package/dist/{canonical-json-BC8_nMTw.js → canonical-json-DwilZ1iB.js} +6 -3
- package/dist/{capability-BSslw1QV.d.ts → capability-D4UC9TTW.d.ts} +2 -2
- package/dist/{capability-N1K9IpqS.js → capability-L7NnfhiE.js} +1 -1
- package/dist/{casbin-Cr7RLtA3.js → casbin-BHijLuHY.js} +2 -2
- package/dist/{casbin-Dyu2gnUD.js → casbin-BW9pS47J.js} +1 -1
- package/dist/{casl-64gpT-8x.js → casl-CmJlgziS.js} +2 -2
- package/dist/{casl-DjEDhTCP.js → casl-UbI8v-Wq.js} +1 -1
- package/dist/catalog/index.d.ts +70 -10
- package/dist/catalog/index.js +112 -6
- package/dist/catalog-BCCjSAdH.js +1 -0
- package/dist/{catalog-R_A__RsH.js → catalog-BaMQfQ6Y.js} +3 -3
- package/dist/{catalog-BECMPrwc.js → catalog-D69WhFii.js} +43 -13
- package/dist/{catalog-doc-C9wjsfNY.js → catalog-doc-CV9s6B1S.js} +28 -5
- package/dist/{catalog-fingerprint-CCP0-yQS.js → catalog-fingerprint-C144oW4M.js} +1 -1
- package/dist/{create-BWRSXgOF.js → challenge-nGWma08S.js} +122 -25
- package/dist/chat/index.d.ts +1 -1
- package/dist/chat/index.js +2 -2
- package/dist/chat-sdk/index.d.ts +3 -3
- package/dist/checks-BC_0mPIq.js +37 -0
- package/dist/claude-agent/index.d.ts +3 -3
- package/dist/claude-agent/index.js +2 -2
- package/dist/clerk/index.d.ts +3 -3
- package/dist/clerk/index.js +1 -1
- package/dist/cli/bin.js +2 -2
- package/dist/cli/index.d.ts +3 -3
- package/dist/cli/index.js +3 -3
- package/dist/cloud/index.d.ts +127 -11
- package/dist/cloud/index.js +251 -3
- package/dist/{cloud-CIoHNevm.js → cloud-CO8pYtwr.js} +5 -5
- package/dist/{codemod-Cxvvc70T.js → codemod-BP6n8N9L.js} +3 -3
- package/dist/{codemod-Bmj9dWMH.js → codemod-i4N2BhDc.js} +3 -3
- package/dist/{collect-CrZJJnEF.js → collect-BaWeMjwV.js} +17 -8
- package/dist/{collect-DloHbDVa.js → collect-DNm3oKOk.js} +6 -5
- package/dist/collect-k_Dulxr5.js +1 -0
- package/dist/compile/index.d.ts +1 -1
- package/dist/compile/index.js +1 -1
- package/dist/{compile-CMqMx_IN.js → compile-BAEO5bOk.js} +2 -2
- package/dist/{compile-Ckm2HqBZ.d.ts → compile-COM2VKuN.d.ts} +3 -3
- package/dist/{completion-BqhRBJD8.js → completion-BNdVf7X2.js} +3 -3
- package/dist/{config-bs_kZeYq.js → config-CoQHDrDi.js} +7 -3
- package/dist/{config-B46rm9sc.js → config-DGZzMV1B.js} +2 -2
- package/dist/{config-report-DUgj62Ai.js → config-report-Cm7UITNA.js} +3 -3
- package/dist/connector-schema-_VCSsdtD.js +433 -0
- package/dist/{context-bbFHR-0D.js → context--uM9V3Ui.js} +2 -2
- package/dist/convex/index.d.ts +5 -5
- package/dist/convex/index.js +2 -2
- package/dist/core-B5-w6Kw9.js +335 -0
- package/dist/core-CQkE8Esr.d.ts +179 -0
- package/dist/{create-0VZ7Pdiu.d.ts → create-B2-CQqCI.d.ts} +5 -5
- package/dist/{create-C3b4B5eF.js → create-Cb86Z8Im.js} +9 -8
- package/dist/{create-DnrmLnLW.js → create-DJrlhEp9.js} +5 -5
- package/dist/{create-BFfm17UA.d.ts → create-QHuuPw3q.d.ts} +7 -7
- package/dist/{create-BDS7wc3y.d.ts → create-UTnUVETj.d.ts} +30 -10
- package/dist/{credential-DM2um3ha.js → credential-CIM7wHwA.js} +4 -4
- package/dist/{credentials-DPyHmYz5.js → credentials-BpuTwd7a.js} +1 -1
- package/dist/{deciding-columns-Sq12mEA6.js → deciding-columns-DRo2QM6E.js} +13 -2
- package/dist/{delegation-DaXVdDhM.js → delegation-C5rOdTp5.js} +5 -5
- package/dist/delivery/index.d.ts +5 -5
- package/dist/delivery/index.js +4 -3
- package/dist/{delivery-DCAgNyCn.js → delivery-rwOKLWRm.js} +51 -2
- package/dist/{denied-text-D8jDHgsl.d.ts → denied-text-D4qkEtFz.d.ts} +2 -2
- package/dist/{describe-BybMRY7A.js → describe-DZlnEtLy.js} +1 -0
- package/dist/{describe-BZUsixiL.d.ts → describe-O0SwYIK8.d.ts} +2 -2
- package/dist/{diff-CxZo9pTq.js → diff-Btr1c1Ow.js} +2 -2
- package/dist/{diff-DCePiN6M.js → diff-DzT-xD13.js} +10 -10
- package/dist/{doctor-DFjUxf2f.js → doctor-BU1szn63.js} +241 -49
- package/dist/{doctor-CxiwSfqH.js → doctor-BoK_y0KO.js} +4 -4
- package/dist/drizzle/index.d.ts +3 -3
- package/dist/drizzle/index.js +1 -1
- package/dist/elysia/index.d.ts +5 -5
- package/dist/elysia/index.js +3 -3
- package/dist/{errors-C2PXIv4c.d.ts → errors-B_Qg9D3e.d.ts} +2 -2
- package/dist/{errors-CWTY6uih.js → errors-DpP_U6Bf.js} +1 -0
- package/dist/{evaluate-_R8QkWaf.js → evaluate-B_oqFbWC.js} +130 -34
- package/dist/{evaluations-16UqqQ6W.d.ts → evaluations-BCddEOfO.d.ts} +4 -4
- package/dist/{evaluations-DZ2CbV5k.js → evaluations-DReoiVBw.js} +4 -4
- package/dist/eve/index.d.ts +5 -5
- package/dist/eve/index.js +3 -3
- package/dist/express/index.d.ts +5 -5
- package/dist/express/index.js +3 -3
- package/dist/fastify/index.d.ts +5 -5
- package/dist/fastify/index.js +3 -3
- package/dist/{fetch-adapter-qKJBuRqy.d.ts → fetch-adapter-CuhyYwC1.d.ts} +4 -4
- package/dist/{fetch-adapter-g0ypLkID.js → fetch-adapter-De-u6vhJ.js} +3 -3
- package/dist/{fields-D9tPVUUS.js → fields-ClcQLrVc.js} +48 -13
- package/dist/{files-C5ZI27eV.js → files-acUbNwWt.js} +15 -2
- package/dist/{fixtures-B7XrLeY7.js → fixtures-BTMW6zgU.js} +2 -2
- package/dist/{flags-C3DktBDY.js → flags-aaeRAdiD.js} +2 -2
- package/dist/{from-snapshot-D2lZt4Dd.js → from-snapshot-Bz469dIh.js} +17 -10
- package/dist/generate-3FNO5P5Q.js +159 -0
- package/dist/{grantee-Cn1HyUsI.js → grantee-BrRANrpT.js} +14 -4
- package/dist/{grantee-conditions-CcXf8hMM.js → grantee-conditions-C6P1Tvol.js} +1 -1
- package/dist/{grantee-match-DHArqY82.js → grantee-match-0RtHWQDx.js} +3 -3
- package/dist/h3/index.d.ts +4 -4
- package/dist/h3/index.js +3 -3
- package/dist/{helpers-DTcZOzhF.js → helpers-DY3vXuGs.js} +3 -3
- package/dist/hono/index.d.ts +5 -5
- package/dist/hono/index.js +3 -3
- package/dist/{hosted-DBDX0M-P.d.ts → hosted-BmjzxQhp.d.ts} +14 -2
- package/dist/{hosted-BZIAYvon.js → hosted-XBgU6RGT.js} +34 -12
- package/dist/{http-DXJ37RDA.js → http-Ca3Sr5x1.js} +1 -1
- package/dist/{import-DMmOG27O.js → import-Bz0GefWg.js} +5 -5
- package/dist/{import-CNV7I2Dw.js → import-DB2EG_iy.js} +3 -3
- package/dist/{index-CxGUswIC.d.ts → index-BE8y3moU.d.ts} +50 -8
- package/dist/{index-Chrs5fQ-.d.ts → index-BSfRl0hZ.d.ts} +6 -6
- package/dist/{index-DOVf7RJv.d.ts → index-BTkwrK7v.d.ts} +155 -17
- package/dist/index-CMiPH2Tv.d.ts +206 -0
- package/dist/{index-SGdIQyzc.d.ts → index-DH9DUDEM.d.ts} +18 -3
- package/dist/{index-BcHcPyIo.d.ts → index-DLwcuCN_.d.ts} +86 -7
- package/dist/index.d.ts +18 -17
- package/dist/index.js +27 -25
- package/dist/{init-GG6Jh8HD.js → init-5TXNji88.js} +5 -5
- package/dist/{init-DeMYsnYJ.js → init-B-4t1NzC.js} +4 -4
- package/dist/{instance-options-Omfd793B.d.ts → instance-options-CU0YQCLH.d.ts} +1 -1
- package/dist/{instance-snapshot-Cxq4ygFc.js → instance-snapshot-CjcwnEiV.js} +20 -14
- package/dist/jwt/index.d.ts +83 -5
- package/dist/jwt/index.js +143 -5
- package/dist/{kernel-5JatXyND.js → kernel-DVExUwkp.js} +138 -12
- package/dist/kysely/index.d.ts +3 -3
- package/dist/kysely/index.js +1 -1
- package/dist/load-DrMHXzgN.js +1 -0
- package/dist/{load-DFS_ry0W.js → load-DxroEzH1.js} +2 -2
- package/dist/{login-Dfe5RlYk.js → login-ClSJh5t5.js} +4 -4
- package/dist/{login-imhuwvn3.js → login-WC9HPJpU.js} +6 -10
- package/dist/{manifest-C8IzW3Do.js → manifest-B79YuF2T.js} +6 -2
- package/dist/{manifest-mx5ghSFM.d.ts → manifest-BVhExYhw.d.ts} +23 -2
- package/dist/{manifest-CtKR3GXL.js → manifest-Dv6q4i5s.js} +54 -35
- package/dist/{manifest-schema-C0kK_8V0.js → manifest-schema-Cv492Qev.js} +37 -7
- package/dist/{map-claims-D3oRmTk0.js → map-claims-etGIS_Dv.js} +14 -11
- package/dist/{map-error-TCAdw-eW.js → map-error-BQGyDm_M.js} +1 -1
- package/dist/mcp/index.d.ts +64 -10
- package/dist/mcp/index.js +151 -22
- package/dist/{migrate-BShP7Vf4.js → migrate-Dodel0IJ.js} +77 -24
- package/dist/nest/index.d.ts +5 -5
- package/dist/nest/index.js +3 -3
- package/dist/next/index.d.ts +9 -9
- package/dist/next/index.js +5 -5
- package/dist/next/plugin.d.ts +1 -1
- package/dist/next/plugin.js +2 -2
- package/dist/node/index.d.ts +5 -5
- package/dist/node/index.js +2 -2
- package/dist/openai/index.d.ts +5 -5
- package/dist/openai/index.js +3 -3
- package/dist/openapi/index.d.ts +14 -4
- package/dist/openapi/index.js +1 -1
- package/dist/{openapi-ahr8rHu3.js → openapi-DMocl1bh.js} +4 -4
- package/dist/{openapi-B7HZ0f-r.js → openapi-Ddb4628T.js} +2 -7
- package/dist/{openapi-DTaEmTSW.js → openapi-ztVaux6j.js} +8 -8
- package/dist/{operation-findings-DgATDpvh.js → operation-findings-kRcEp8lE.js} +1 -1
- package/dist/{operations-CxybZErY.d.ts → operations-BNLes61x.d.ts} +1 -1
- package/dist/orpc/index.d.ts +6 -6
- package/dist/orpc/index.js +4 -4
- package/dist/otel/index.d.ts +3 -3
- package/dist/otel/index.js +1 -1
- package/dist/{output-Dyw8fyPF.js → output-DgSDLrta.js} +7 -3
- package/dist/{output-files-DhRBBE4n.js → output-files-CCMdcFWb.js} +2 -2
- package/dist/output-files-DPAY7-GX.js +1 -0
- package/dist/{ownership-BatFgAA4.js → ownership-Z2LpxsGa.js} +1349 -883
- package/dist/parse-Ddhz2xf4.js +148 -0
- package/dist/{parse-local-manifest-CVSs6J9I.js → parse-local-manifest-T1Q8X3A2.js} +24 -1
- package/dist/{parse-local-manifest-DgqtruPn.d.ts → parse-local-manifest-e4mdwAKd.d.ts} +1 -1
- package/dist/pdp/index.d.ts +3 -3
- package/dist/pdp/index.js +7 -3
- package/dist/peer-12Q5I_RH.js +976 -0
- package/dist/{peer-CRvC7Hg1.js → peer-DOzzMfZL.js} +1 -1
- package/dist/{permdock-B9JxkBwC.js → permdock-BfWEeMqk.js} +177 -49
- package/dist/{permdock-D7eeLJER.d.ts → permdock-Dco6dyCK.d.ts} +34 -5
- package/dist/{permission-registry-Br4jSNVi.js → permission-registry-DpPtSKNZ.js} +1 -1
- package/dist/{vocabulary-D6lPdb4Z.d.ts → permission-types-DhNEmoRG.d.ts} +4 -62
- package/dist/{permissions-oEWfl-kl.d.ts → permissions-CoqCOfJ3.d.ts} +2 -1
- package/dist/{permissions-B-wCP5ZC.js → permissions-CyH2MV_B.js} +1 -1
- package/dist/{permissions-CZKiUfFM.js → permissions-DArULThq.js} +4 -4
- package/dist/pkce-5h8NgMQJ.js +21 -0
- package/dist/{policies-CO1oOymN.js → policies-B2lZIurj.js} +3 -3
- package/dist/{policy-Czo4n3Hs.d.ts → policy-B7dg_yzu.d.ts} +2 -2
- package/dist/{policy-DLZJ5gAp.js → policy-DaJy4nK4.js} +17 -8
- package/dist/{policy-from-catalog-DzhEc3Y9.js → policy-from-catalog-DFWYkNdu.js} +9 -9
- package/dist/{policy-types-DzwivBgR.d.ts → policy-types-B-F-qAZk.d.ts} +109 -5
- package/dist/postgres-store-BL9M_CA1.js +1001 -0
- package/dist/{postgrest-NUqZT-RB.d.ts → postgrest-CYacM_u7.d.ts} +12 -1
- package/dist/{postgrest-CW0IqC-U.js → postgrest-r5faDIzD.js} +47 -5
- package/dist/{powersync-BHfuehf3.js → powersync-13odBwiM.js} +3 -3
- package/dist/powersync-53ryOZip.js +1059 -0
- package/dist/powersync-CExtTLyA.js +1 -0
- package/dist/preset/index.js +1 -1
- package/dist/{preset-DZdU0tne.js → preset-CHTbd-DQ.js} +2 -2
- package/dist/prisma/index.d.ts +2 -2
- package/dist/prisma/index.js +1 -1
- package/dist/{problem-details-DXlt-vks.d.ts → problem-details-Tcfmj3bV.d.ts} +1 -1
- package/dist/prompt-DwtVemER.js +935 -0
- package/dist/{protected-DEPHc2xV.d.ts → protected-BwZYL1X_.d.ts} +6 -5
- package/dist/{protected-DfjY5mLA.js → protected-DXE3cQYg.js} +2 -2
- package/dist/{provider-CC-u3bYP.js → provider-BQsTYYy0.js} +2 -2
- package/dist/{provider-DMVt6yYn.d.ts → provider-Csk-THAn.d.ts} +1 -1
- package/dist/{provider-store-B5Yrkhzr.js → provider-store-IgqQipCO.js} +2 -2
- package/dist/{pull-BgIfno6w.js → pull-CN5OLxrF.js} +7 -7
- package/dist/pull-Cty6Ovyu.js +1 -0
- package/dist/{push-CmFVBOeI.js → push-tVdG8dUL.js} +54 -14
- package/dist/{pushed-policy-BImMTTIM.d.ts → pushed-policy-BbcY9r_4.d.ts} +1 -1
- package/dist/{pushed-policy-DobP7AHI.js → pushed-policy-CmYeSQqq.js} +1 -1
- package/dist/react/index.d.ts +6 -6
- package/dist/react/index.js +3 -3
- package/dist/react/provider-client.d.ts +1 -1
- package/dist/react/provider-client.js +1 -1
- package/dist/react-native/index.d.ts +25 -11
- package/dist/react-native/index.js +214 -24
- package/dist/{refs-K6eWUJ0H.js → refs-CNJBiTFo.js} +15 -1
- package/dist/{replay-D7iKcLFe.d.ts → replay-DCDD_ZfL.d.ts} +1 -1
- package/dist/{request-context-BTRTG7OT.js → request-context-BykKLmyE.js} +2 -2
- package/dist/resend/index.d.ts +4 -4
- package/dist/{retire-CALjIQ7e.js → retire-Wj6dkyDE.js} +2 -2
- package/dist/{rls-BA8an5Ap.js → rls-Ck_PocSp.js} +32 -8
- package/dist/{rls-j6t43t7n.js → rls-CxBZb4rZ.js} +478 -534
- package/dist/{role-builder-CXbis5-X.js → role-builder-C1VJzvcr.js} +3 -3
- package/dist/rolldown-runtime-C3I60J0A.js +4 -0
- package/dist/{rpc-aPyNi6tA.js → rpc-Bk1bE-ch.js} +1 -1
- package/dist/run-Bz7DXGEv.js +1 -0
- package/dist/{run-ticket-sxFI6LAk.js → run-ticket-B5d_63Ma.js} +22 -1
- package/dist/{run-ticket-BjhTOi6u.d.ts → run-ticket-BpNi7BCi.d.ts} +8 -3
- package/dist/{run-DOfMtc9V.js → run-uLD2aWuO.js} +7 -7
- package/dist/{runtime-D3VTAiCA.js → runtime-Vif3_-zf.js} +1 -1
- package/dist/{saas-FO-Q8oj0.js → saas-Az_Kz-4D.js} +7 -7
- package/dist/{scan-BOI5tJ-6.js → scan-DSljDE1Y.js} +1 -1
- package/dist/{schema-yLuBWWsh.js → schema-gIcCx7zM.js} +1 -1
- package/dist/scim/index.d.ts +3 -2
- package/dist/scim/index.js +3 -1
- package/dist/scim-C7JYhySg.js +44 -0
- package/dist/{scim-ClHtpyV3.js → scim-YNieBO1U.js} +3 -537
- package/dist/{scopes-CUPSjo9q.js → scopes-BHsc-wp-.js} +1 -1
- package/dist/server/index.d.ts +11 -11
- package/dist/server/index.js +7 -7
- package/dist/{server-DqCT4CgZ.js → server-Bnga6I50.js} +3 -3
- package/dist/{server-types-BLd4MnBX.d.ts → server-types-C4gZUEZy.d.ts} +9 -9
- package/dist/{shared-DvvFzYXe.js → shared-C8LjUdVU.js} +1 -1
- package/dist/{shared-CD11nBbC.js → shared-fMKOv8hP.js} +46 -39
- package/dist/{sink-Bj_lDUDq.d.ts → sink-Cp_Eot9W.d.ts} +4 -4
- package/dist/{skills-B6lVdD_W.js → skills-Dcjw9_1C.js} +5 -5
- package/dist/{skills-CTYwkl44.js → skills-g_3BS9NC.js} +3 -3
- package/dist/{snapshot-CXUWfsNy.js → snapshot-CbGmYiJx.js} +4 -4
- package/dist/{snapshot-cache-DZHQ0KF6.js → snapshot-cache-DT2Kx1F8.js} +1 -1
- package/dist/{snapshot-cache-DqK9eDmM.d.ts → snapshot-cache-Pahd3IYJ.d.ts} +1 -1
- package/dist/solid/index.d.ts +6 -5
- package/dist/solid/index.js +4 -4
- package/dist/solid-start/index.d.ts +6 -6
- package/dist/solid-start/index.js +3 -3
- package/dist/{sources-vs5dGOsS.js → sources-B-zYB4GS.js} +111 -25
- package/dist/{sources-BV9j0DeZ.d.ts → sources-DEEuGb8S.d.ts} +63 -14
- package/dist/sources-qoIJQrJv.js +11 -0
- package/dist/{sql-B5T1IL83.js → sql-B96movIM.js} +5 -1
- package/dist/sql-CDEPCA0g.d.ts +10 -0
- package/dist/{src-DLfUWFAI.js → src-DLFrtrrC.js} +154 -53
- package/dist/ssf/index.d.ts +4 -4
- package/dist/ssf/index.js +640 -211
- package/dist/{standard-webhooks-6lg8v_is.d.ts → standard-webhooks-B_qRg0ws.d.ts} +2 -2
- package/dist/{store-4u_hxjWa.js → store-DSP9oGvh.js} +15 -7
- package/dist/{store-options-BqEakYRa.js → store-options-B_poyYvg.js} +6 -6
- package/dist/{stores-ClZUgeoP.d.ts → stores-BAZwSYZA.d.ts} +6 -5
- package/dist/{stores-BbsD4fAR.js → stores-BqEuHC05.js} +2 -2
- package/dist/{stream-7-xmnf3U.d.ts → stream-2Vwhl7Er.d.ts} +2 -2
- package/dist/{style-Uao76wO7.js → style-Cqo7-73x.js} +1 -0
- package/dist/{style-DiKWnAvn.js → style-Ds1gNm77.js} +1 -1
- package/dist/supabase/index.d.ts +8 -7
- package/dist/supabase/index.js +5 -5
- package/dist/supabase/middleware.d.ts +6 -6
- package/dist/supabase/middleware.js +6 -6
- package/dist/{supabase-Dxlp8A94.js → supabase--0aJdLEd.js} +9 -7
- package/dist/{supabase-9pqI57pW.js → supabase-Bqp7iIY2.js} +3 -3
- package/dist/supabase-hook-DJxC4PoP.js +1 -0
- package/dist/{supabase-hook-DdDQhMlw.js → supabase-hook-Dg0SrQWR.js} +1069 -123
- package/dist/supautils-MESd81bF.js +689 -0
- package/dist/{support-session-C6xJQYut.js → support-session-Cna49-3f.js} +2 -2
- package/dist/svelte/index.d.ts +5 -5
- package/dist/svelte/index.js +5 -5
- package/dist/svelte/runtime.d.ts +3 -3
- package/dist/svelte/runtime.js +3 -3
- package/dist/svelte/source.d.ts +5 -5
- package/dist/svelte/source.js +2 -2
- package/dist/sveltekit/index.d.ts +6 -6
- package/dist/sveltekit/index.js +2 -2
- package/dist/tanstack-start/index.d.ts +6 -6
- package/dist/tanstack-start/index.js +2 -2
- package/dist/{tenancy-DN2QAx9z.js → tenancy-CmeBQ6Nv.js} +12 -3
- package/dist/terminal/index.d.ts +6 -6
- package/dist/terminal/index.js +3 -3
- package/dist/testing/core.d.ts +2 -0
- package/dist/testing/core.js +1 -0
- package/dist/testing/fixtures/index.d.ts +12 -0
- package/dist/testing/fixtures/index.js +770 -0
- package/dist/testing/index.d.ts +41 -174
- package/dist/testing/index.js +241 -731
- package/dist/testing/saas/index.d.ts +5 -5
- 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 +444 -0
- package/dist/{token-BLZcjQgt.js → token-2qYDvXz2.js} +1 -1
- package/dist/{tool-refusal-CMLN5xhn.js → tool-refusal-reAhIzdl.js} +1 -1
- package/dist/trpc/index.d.ts +6 -6
- package/dist/trpc/index.js +3 -3
- package/dist/{types-5Ut_pbKy.d.ts → types-BWZybqs9.d.ts} +112 -8
- package/dist/{types-CZTnPFzM.d.ts → types-BXMYB7BY.d.ts} +2 -2
- package/dist/{types-CdlxsYQh.d.ts → types-BfVmNJO5.d.ts} +14 -3
- package/dist/{types-BqAKcRNW.d.ts → types-CIeZcG8v.d.ts} +2 -2
- package/dist/{types-BNORmDM8.d.ts → types-CKV71kKh.d.ts} +4 -4
- package/dist/{types-tIgIeIKJ.d.ts → types-CQVEQawv.d.ts} +4 -4
- package/dist/{types-BjV-fqcA.d.ts → types-CeIscIKp.d.ts} +4 -4
- package/dist/{types-_sHy8BQf.d.ts → types-CfiKC5aN.d.ts} +1 -1
- package/dist/{types-ClZaWzfb.d.ts → types-D3A19w4A.d.ts} +8 -4
- package/dist/{types-C8-KNsFf.d.ts → types-DBHftjgS.d.ts} +15 -8
- package/dist/{types-CCpc2Dcv.d.ts → types-DC44-hqb.d.ts} +2 -2
- package/dist/{types-fbZ7JEXr.d.ts → types-DXmwu78Z.d.ts} +4 -4
- package/dist/{types-DiQjupG2.d.ts → types-cTos-H7p.d.ts} +2 -2
- package/dist/{types-DX0LaKTb.d.ts → types-g7Oy6Zg4.d.ts} +3 -3
- package/dist/unplugin/index.d.ts +1 -1
- package/dist/unplugin/index.js +2 -2
- package/dist/{usage-T5mXq98v.js → usage-Bybmck7f.js} +7 -7
- package/dist/{usage-DHtE8j4E.js → usage-CDaLXCfL.js} +2 -2
- package/dist/usage-y-kBNdqs.js +1 -0
- package/dist/{validation-error-Bg5Tpluk.d.ts → validation-error-CQpoquwj.d.ts} +1 -1
- package/dist/{verify-DbCL9bnB.js → verify-pe8rL_Qw.js} +350 -83
- package/dist/{views-DTIIO-oQ.js → views-BB8E9dTP.js} +1 -1
- package/dist/vocabulary-Bg3eeT2H.d.ts +67 -0
- package/dist/vue/index.d.ts +6 -5
- package/dist/vue/index.js +4 -4
- package/dist/{waiter-CKy4MQSY.d.ts → waiter-DwEyouan.d.ts} +2 -2
- package/dist/watch-Bd9mx3rd.js +1 -0
- package/dist/{watch-CszoTJMq.js → watch-C-4VmFlL.js} +3 -3
- package/dist/webmcp/index.d.ts +2 -2
- package/dist/webmcp/index.js +2 -2
- package/dist/{where-scope-Dv-WTP-w.js → where-scope-wq2coopv.js} +41 -21
- package/dist/{who-can-D0QoYbEb.js → who-can-BwNsI_Js.js} +6 -6
- package/dist/workflow/index.d.ts +3 -3
- package/dist/workflow/index.js +5 -5
- package/dist/workflow-sdk/index.d.ts +5 -5
- package/dist/{wrap-Bd1Tejur.d.ts → wrap-B6R0cMRL.d.ts} +2 -2
- package/dist/{wrap-gX61EtpB.js → wrap-CiSc_KCq.js} +8 -2
- package/package.json +22 -11
- package/schemas/cli-result-v1.json +1 -0
- package/schemas/cloud-api-v1.json +152 -7
- package/schemas/connector-v1.json +8 -0
- package/schemas/supabase-claims-v1.json +5 -0
- package/schemas/supabase-manifest-v1.json +276 -75
- package/skills/permdock/SKILL.md +1 -0
- package/skills/permdock-agents/references/runtimes.md +3 -1
- package/skills/permdock-approvals/references/stores-and-resume.md +2 -1
- package/skills/permdock-data/references/queries-and-rls.md +5 -2
- package/skills/permdock-tenancy/SKILL.md +1 -1
- package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +2 -0
- package/skills/permdock-wire/references/adapters.md +14 -0
- package/skills/permdock-wire/references/policy-options.md +1 -0
- package/dist/catalog-DjhMYYCq.js +0 -1
- package/dist/collect-FlXJlhus.js +0 -1
- package/dist/index-D8EovfsP.d.ts +0 -91
- package/dist/load-BxEtwlBS.js +0 -1
- package/dist/output-files-B3IZJksC.js +0 -1
- package/dist/parse-Cxq0WxrA.js +0 -53
- package/dist/peer-C8swJ2GH.js +0 -50
- package/dist/powersync-CbzkqL_M.js +0 -1
- package/dist/powersync-bYUDLOAO.js +0 -538
- package/dist/prompt-DfZLJLIn.js +0 -32
- package/dist/pull-ByOks_Tg.js +0 -1
- package/dist/run-CNsApDpd.js +0 -1
- package/dist/supabase-hook-CXcGpHqq.js +0 -1
- package/dist/supautils-B6HYL9eL.js +0 -91
- package/dist/text-diff-BQcUapOb.js +0 -15
- package/dist/usage-CHOtwL19.js +0 -1
- package/dist/watch-Cb-NcaUw.js +0 -1
package/README.md
CHANGED
|
@@ -306,6 +306,7 @@ React Router loaders call `getSnapshot(request)` from `permdock/server` and send
|
|
|
306
306
|
- Fail-closed: an unknown, invalid or thrown check denies, and `can()` never throws.
|
|
307
307
|
- Deny overrides allow, an unknown reference is a type error, and evaluation is prototype-safe with no eval.
|
|
308
308
|
- `service_role` is never emitted, a model-supplied subject is never trusted, and an agent with no delegation is denied.
|
|
309
|
+
- The generated Supabase token hook and the functions it calls for `supabase.hook.claims` and `supabase.hook.before` are revoked from `public`, `anon` and `authenticated`, so no client reads another user's claims.
|
|
309
310
|
- No one approves their own request by default, a delegate is held to the same rule as the person they cover, there is never a default tenant, and data is validated against the resource schema unless the caller marks a row it loaded `trusted: true`.
|
|
310
311
|
- A user or service API key expires unless the tenant sets `allowNoExpiry`. A feed key (`pdfeed_`) does not expire; rotation replaces the secret and keeps the id, and the key is bound to one resource.
|
|
311
312
|
- Authentication stays upstream: PermDock consumes verified sessions, JWKS-verified JWTs (`permdock/jwt`, with `jose` as an optional peer), provider claims and MCP `authInfo`. Core never verifies a token. User-editable fields never become claims: `subjectFromBetterAuth` copies `additionalFields` only through a `schema`. Read [authentication](https://permdock.com/docs/concepts/authentication).
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
var __commonJSMin = (cb, mod) => () => (mod || (cb((mod = { exports: {} }).exports, mod, mod.exports), cb = null), mod.exports);
|
|
3
|
-
//#endregion
|
|
1
|
+
import { t as __commonJSMin } from "./rolldown-runtime-C3I60J0A.js";
|
|
4
2
|
//#region ../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/codegen/code.js
|
|
5
3
|
var require_code$1 = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
6
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
package/dist/a2a/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
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-B-F-qAZk.js";
|
|
2
|
+
import { u as Permission } from "../permission-types-DhNEmoRG.js";
|
|
3
|
+
import { m as ApprovalStore } from "../types-DC44-hqb.js";
|
|
4
|
+
import { a as ProblemDetails } from "../errors-B_Qg9D3e.js";
|
|
5
|
+
import { t as InstanceOptions } from "../instance-options-CU0YQCLH.js";
|
|
6
6
|
//#region src/a2a/types.d.ts
|
|
7
7
|
type A2aAuth = {
|
|
8
8
|
readonly clientId?: string;
|
package/dist/a2a/index.js
CHANGED
|
@@ -2,13 +2,13 @@ import { t as compact } from "../compact-CAf557ZB.js";
|
|
|
2
2
|
import { n as freezeDeep } from "../freeze-CrU8nQeX.js";
|
|
3
3
|
import { o as statusProblem } from "../problem-details-cn5X30gZ.js";
|
|
4
4
|
import { n as PermDockDeniedError, t as PermDockApprovalRequiredError } from "../errors-BKy0EfhN.js";
|
|
5
|
-
import { t as canonicalJson } from "../canonical-json-
|
|
5
|
+
import { t as canonicalJson } from "../canonical-json-DwilZ1iB.js";
|
|
6
6
|
import { t as bytesToBase64Url } from "../sha256-D9ihqmvd.js";
|
|
7
7
|
import { n as resourceRef } from "../resource-ref-CaS9yVPi.js";
|
|
8
|
-
import {
|
|
8
|
+
import { i as challengeScope, l as withApp, o as hasScope, s as scopesReaching } from "../permdock-BfWEeMqk.js";
|
|
9
9
|
import { f as wwwAuthenticate, r as bearerChallenge } from "../problem-CTviyH5L.js";
|
|
10
|
-
import { r as instanceOptions } from "../build-instance-
|
|
11
|
-
import { n as createAgentKernel } from "../kernel-
|
|
10
|
+
import { r as instanceOptions } from "../build-instance-DxE7czo9.js";
|
|
11
|
+
import { n as createAgentKernel } from "../kernel-DVExUwkp.js";
|
|
12
12
|
import { t as delegationFrom } from "../delegation-input-FTxMK3ji.js";
|
|
13
13
|
//#region src/a2a/create.ts
|
|
14
14
|
function firstScheme(options) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { r as listSourceFiles } from "./files-D_JIzUrP.js";
|
|
2
|
-
import { t as DOCS_BASE } from "./manifest-
|
|
2
|
+
import { t as DOCS_BASE } from "./manifest-Dv6q4i5s.js";
|
|
3
3
|
import { readFileSync } from "node:fs";
|
|
4
4
|
import { relative } from "node:path";
|
|
5
5
|
//#region src/cli/adoption-scan.ts
|
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, 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-
|
|
3
|
-
export { type AgentAdapterOptions, type AgentPermDock, type AgentPermDockOptions, type DecideToolOptions, type DeniedText, type DeniedTextEvent, type GatewayOptions, type ModelMap, type OperationVerdict, type ToolBinding, type ToolMap, createPermDock };
|
|
1
|
+
import { n as DeniedTextEvent, t as DeniedText } from "../denied-text-D4qkEtFz.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-UTnUVETj.js";
|
|
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-Cb86Z8Im.js";
|
package/dist/ai-sdk/index.d.ts
CHANGED
|
@@ -1,14 +1,24 @@
|
|
|
1
|
-
import { T as Policy, j as PolicyVocabulary,
|
|
2
|
-
import {
|
|
3
|
-
import { n as DeniedTextEvent, t as DeniedText } from "../denied-text-
|
|
4
|
-
import { o as AgentAdapterOptions, t as AgentPermDock } from "../create-
|
|
1
|
+
import { T as Policy, j as PolicyVocabulary, sr as Principal } from "../policy-types-B-F-qAZk.js";
|
|
2
|
+
import { u as Permission } from "../permission-types-DhNEmoRG.js";
|
|
3
|
+
import { n as DeniedTextEvent, t as DeniedText } from "../denied-text-D4qkEtFz.js";
|
|
4
|
+
import { d as StepUp, o as AgentAdapterOptions, t as AgentPermDock } from "../create-UTnUVETj.js";
|
|
5
5
|
//#region src/ai-sdk/create.d.ts
|
|
6
6
|
type AiSdkContext = {
|
|
7
7
|
readonly runtimeContext?: unknown;
|
|
8
8
|
readonly permdockApproval?: string;
|
|
9
9
|
readonly [key: string]: unknown;
|
|
10
10
|
};
|
|
11
|
-
type AiSdkPermDockOptions<TUser = unknown> = AgentAdapterOptions<AiSdkContext, TUser
|
|
11
|
+
type AiSdkPermDockOptions<TUser = unknown> = AgentAdapterOptions<AiSdkContext, TUser> & {
|
|
12
|
+
/**
|
|
13
|
+
* Turns a denial the user can lift into `user-approval`: a missing
|
|
14
|
+
* step-up authentication, or a role the user is eligible to activate.
|
|
15
|
+
* The re-check decides again and runs the tool only when granted. `at` is
|
|
16
|
+
* the page the user signs in again at; `acr_values` and `max_age` are added.
|
|
17
|
+
*/
|
|
18
|
+
readonly stepUp?: {
|
|
19
|
+
readonly at?: string;
|
|
20
|
+
};
|
|
21
|
+
};
|
|
12
22
|
/** What an AI SDK tool approval function may return; `undefined` is `not-applicable`. */
|
|
13
23
|
type ToolApprovalResult = ToolApprovalStatus | undefined | "not-applicable" | "denied" | "user-approval" | {
|
|
14
24
|
readonly type: "not-applicable";
|
|
@@ -31,6 +41,11 @@ type ToolApprovalStatus = "approved" | {
|
|
|
31
41
|
readonly type: "user-approval";
|
|
32
42
|
readonly reason: string;
|
|
33
43
|
readonly token: string;
|
|
44
|
+
} | {
|
|
45
|
+
readonly type: "user-approval";
|
|
46
|
+
readonly reason: string;
|
|
47
|
+
/** What the user does before approving; there is no approval request in the store. */
|
|
48
|
+
readonly stepUp: StepUp;
|
|
34
49
|
};
|
|
35
50
|
/** Structural `GenericToolApprovalFunction` options from `ai`. */
|
|
36
51
|
type ToolApprovalCall = {
|
|
@@ -87,4 +102,4 @@ type AiSdkPermDock<V extends PolicyVocabulary = PolicyVocabulary> = AgentPermDoc
|
|
|
87
102
|
};
|
|
88
103
|
export declare function createPermDock<TUser, TPrincipal extends Principal = Principal, V extends PolicyVocabulary = PolicyVocabulary>(policy: Policy<TUser, TPrincipal, V>, given: AiSdkPermDockOptions<TUser>): AiSdkPermDock<V>;
|
|
89
104
|
//#endregion
|
|
90
|
-
export type { AiSdkContext, AiSdkPermDock, AiSdkPermDockOptions, AppToolApproval, DeniedText, DeniedTextEvent, LanguageModelMiddleware, NeedsApprovalOptions, ToolApprovalCall, ToolApprovalResult, ToolApprovalStatus };
|
|
105
|
+
export type { AiSdkContext, AiSdkPermDock, AiSdkPermDockOptions, AppToolApproval, DeniedText, DeniedTextEvent, LanguageModelMiddleware, NeedsApprovalOptions, StepUp, ToolApprovalCall, ToolApprovalResult, ToolApprovalStatus };
|
package/dist/ai-sdk/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { t as compact } from "../compact-CAf557ZB.js";
|
|
2
2
|
import { n as PermDockDeniedError, t as PermDockApprovalRequiredError } from "../errors-BKy0EfhN.js";
|
|
3
|
-
import {
|
|
4
|
-
import { t as approvalTokenOf } from "../kernel-
|
|
5
|
-
import { t as agentRuntime } from "../create-
|
|
3
|
+
import { l as withApp } from "../permdock-BfWEeMqk.js";
|
|
4
|
+
import { r as stepUpText, t as approvalTokenOf } from "../kernel-DVExUwkp.js";
|
|
5
|
+
import { t as agentRuntime } from "../create-Cb86Z8Im.js";
|
|
6
6
|
//#region src/ai-sdk/create.ts
|
|
7
7
|
const APPROVAL_STATUSES = /* @__PURE__ */ new Set([
|
|
8
8
|
"approved",
|
|
@@ -77,7 +77,8 @@ function modelDenied(decision, modelId, permission, permdock) {
|
|
|
77
77
|
}
|
|
78
78
|
function createPermDock(policy, given) {
|
|
79
79
|
const options = withApp(policy, given);
|
|
80
|
-
const
|
|
80
|
+
const stepUp = options.stepUp;
|
|
81
|
+
const { agent, kernel } = agentRuntime(policy, options, "ai-sdk", { stepUp: stepUp !== void 0 });
|
|
81
82
|
const byPermission = /* @__PURE__ */ new Map();
|
|
82
83
|
for (const [name, binding] of Object.entries(options.operations)) byPermission.set(binding.permission.key, name);
|
|
83
84
|
const passes = (toolName) => options.unmapped === "allow" && !Object.hasOwn(options.operations, toolName);
|
|
@@ -87,11 +88,16 @@ function createPermDock(policy, given) {
|
|
|
87
88
|
const context = contextOf(call);
|
|
88
89
|
const verdict = await decide(call.toolCall.toolName, call.toolCall.input, context);
|
|
89
90
|
if (verdict.outcome === "granted") return "approved";
|
|
90
|
-
|
|
91
|
+
const recheck = isRecheck(call.messages, call.toolCall.toolCallId);
|
|
92
|
+
if (verdict.outcome === "denied") return verdict.stepUp !== void 0 && verdict.permission !== void 0 && !recheck ? {
|
|
93
|
+
type: "user-approval",
|
|
94
|
+
reason: stepUpText(verdict.stepUp, verdict.permission, stepUp?.at),
|
|
95
|
+
stepUp: verdict.stepUp
|
|
96
|
+
} : {
|
|
91
97
|
type: "denied",
|
|
92
98
|
reason: verdict.reason
|
|
93
99
|
};
|
|
94
|
-
if (
|
|
100
|
+
if (recheck) return {
|
|
95
101
|
type: "denied",
|
|
96
102
|
reason: `${verdict.summary} No approval is recorded for this call.`
|
|
97
103
|
};
|
|
@@ -117,7 +123,7 @@ function createPermDock(policy, given) {
|
|
|
117
123
|
}, modelId, Object.hasOwn(options.models, modelId) ? options.models[modelId] : void 0, await kernel.instance(context));
|
|
118
124
|
}
|
|
119
125
|
if (params.tools === void 0) return params;
|
|
120
|
-
const allowed = await kernel.allowedToolNames(context);
|
|
126
|
+
const allowed = await kernel.allowedToolNames(context, { eligible: stepUp !== void 0 });
|
|
121
127
|
const keeps = (name) => typeof name === "string" && (allowed.has(name) || passes(name));
|
|
122
128
|
const tools = params.tools.filter((tool) => keeps(tool.name));
|
|
123
129
|
const choice = params.toolChoice;
|
|
@@ -140,8 +146,12 @@ function createPermDock(policy, given) {
|
|
|
140
146
|
}, permission, await kernel.instance(context));
|
|
141
147
|
const verdict = await decide(toolName, input, context);
|
|
142
148
|
if (verdict.outcome === "granted") return false;
|
|
143
|
-
|
|
144
|
-
if (
|
|
149
|
+
const recheck = isRecheck(needsOptions.messages, needsOptions.toolCallId);
|
|
150
|
+
if (verdict.outcome === "denied") {
|
|
151
|
+
if (verdict.stepUp !== void 0 && !recheck) return true;
|
|
152
|
+
throw deniedError(verdict, permission, await kernel.instance(context));
|
|
153
|
+
}
|
|
154
|
+
if (recheck) throw new PermDockApprovalRequiredError({
|
|
145
155
|
decision: verdict.decision,
|
|
146
156
|
permission: permission.key,
|
|
147
157
|
scope: permission.scope,
|
|
@@ -1,5 +1,5 @@
|
|
|
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-BNLes61x.js";
|
|
2
|
+
import { u as ApprovalRequest } from "./types-DC44-hqb.js";
|
|
3
3
|
//#region src/delivery/approval-prompt.d.ts
|
|
4
4
|
/**
|
|
5
5
|
* What an email or chat prompt shows an approver, wire format v1. It carries
|
|
@@ -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-
|
|
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-DC44-hqb.js";
|
|
2
2
|
import { n as ApprovalErrorCode, r as isApprovalError, t as ApprovalError } from "../errors-BWXBMaKK.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-
|
|
4
|
-
import { $ as
|
|
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 IdempotencyStore, type IdempotentResponse, type MatchDelegationOptions, type MemoryAccessReviewStore, type MemoryApprovalStore, type SignApprovalOptions, type StartAccessReviewInput, accessReviewerEligible, accessReviewsHandler, applyApprovalVerdict, approvalPageSize, approvalQuorum, approvalSignatureClaims, approvalsHandler, approverPermissions, approverRelationKey, approverRelations, assertApprover, cancelApprovals, consumeApproval, decideAccessReviewItem, decodeApprovalCursor, encodeApprovalCursor, escalationOpenAt, inspectApproval, isAccessReviewError, isApprovalError, listAllApprovals, matchDelegation, memoryAccessReviewStore, memoryApprovalDelegationSource, memoryApprovalStore, memoryIdempotencyStore, pageAccessReviewItems, pageApprovals, parseApprovalDelegation, parseApprovalRequest, readApprovalHeader, requestApproval, resolveApproval, resumeDecision, resumeFromHeader, signApproval, startAccessReview, storedApprovalToken, summarizeSubject, vouchApproval };
|
|
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-CfiKC5aN.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-BE8y3moU.js";
|
|
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
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-DqzsnlSA.js";
|
|
2
|
-
import {
|
|
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-
|
|
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-DSP9oGvh.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-DY3vXuGs.js";
|
|
4
4
|
import { n as isAccessReviewError, t as AccessReviewError } from "../errors-BDUwg2qC.js";
|
|
5
|
-
import { a as
|
|
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-CMRfsbBh.js";
|
|
6
6
|
import { t as APPROVAL_REQUEST_SCHEMA } from "../request-schema-CMreVuFM.js";
|
|
7
7
|
import { t as parseApprovalRequest } from "../parse-request-D_tUXG6M.js";
|
|
8
|
-
export { APPROVAL_HEADER, APPROVAL_REQUEST_SCHEMA, AccessReviewError, ApprovalError, DEFAULT_APPROVAL_TTL, accessReviewerEligible, accessReviewsHandler, applyApprovalVerdict, approvalPageSize, approvalQuorum, approvalSignatureClaims, approvalsHandler, approverPermissions, approverRelationKey, approverRelations, assertApprover, cancelApprovals, consumeApproval, decideAccessReviewItem, decodeApprovalCursor, encodeApprovalCursor, escalationOpenAt, inspectApproval, isAccessReviewError, isApprovalError, listAllApprovals, matchDelegation, memoryAccessReviewStore, memoryApprovalDelegationSource, memoryApprovalStore, memoryIdempotencyStore, pageAccessReviewItems, pageApprovals, parseApprovalDelegation, parseApprovalRequest, readApprovalHeader, requestApproval, resolveApproval, resumeDecision, resumeFromHeader, signApproval, startAccessReview, storedApprovalToken, summarizeSubject, vouchApproval };
|
|
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 };
|
|
@@ -4,16 +4,16 @@ import { a as ownRecord } from "./paths-DXSHAMIa.js";
|
|
|
4
4
|
import { a as problemType, o as statusProblem } from "./problem-details-cn5X30gZ.js";
|
|
5
5
|
import { a as isId } from "./expiry-D4_YKRKD.js";
|
|
6
6
|
import { d as isoNow, f as nowMillis, g as secondsOf, i as dateAt } from "./time-DkWjdL98.js";
|
|
7
|
-
import { t as canonicalJson } from "./canonical-json-
|
|
7
|
+
import { t as canonicalJson } from "./canonical-json-DwilZ1iB.js";
|
|
8
8
|
import { r as sha256Digest } from "./sha256-D9ihqmvd.js";
|
|
9
|
-
import {
|
|
10
|
-
import { o as flattenGrantee } from "./grantee-
|
|
9
|
+
import { c as rootMembershipId } from "./scopes-BHsc-wp-.js";
|
|
10
|
+
import { o as flattenGrantee } from "./grantee-BrRANrpT.js";
|
|
11
11
|
import { c as isApprovalError, s as ApprovalError } from "./types-DqzsnlSA.js";
|
|
12
|
-
import { a as
|
|
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-DSP9oGvh.js";
|
|
13
13
|
import { n as readBodyText } from "./body-text-QcXok_SI.js";
|
|
14
14
|
import { r as hasCredentials } from "./http-BBoKefeS.js";
|
|
15
15
|
import { a as methodNotAllowed, c as problemResponse, d as validationProblem, u as unauthenticatedProblem } from "./problem-CTviyH5L.js";
|
|
16
|
-
import { f as approverPermissions, m as approverRelations, p as heldPermissions } from "./helpers-
|
|
16
|
+
import { f as approverPermissions, m as approverRelations, p as heldPermissions } from "./helpers-DY3vXuGs.js";
|
|
17
17
|
import { n as isAccessReviewError, t as AccessReviewError } from "./errors-BDUwg2qC.js";
|
|
18
18
|
import { t as bodyTooLarge } from "./body-CH5of8Ne.js";
|
|
19
19
|
//#region src/approvals/access-reviews/decide.ts
|
|
@@ -521,7 +521,52 @@ async function matchDelegation(request, delegate, options) {
|
|
|
521
521
|
}))).find((match) => match !== void 0);
|
|
522
522
|
}
|
|
523
523
|
//#endregion
|
|
524
|
+
//#region src/approvals/entity-tag.ts
|
|
525
|
+
/** The request without its resume `token`; every other field stays. */
|
|
526
|
+
function approvalView(request) {
|
|
527
|
+
const { token: _token, ...view } = request;
|
|
528
|
+
return view;
|
|
529
|
+
}
|
|
530
|
+
/**
|
|
531
|
+
* A strong RFC 9110 entity tag: the quoted `sha-256:` digest of
|
|
532
|
+
* `approvalView(request)` as RFC 8785 JSON. A field outside
|
|
533
|
+
* `ApprovalRequest` changes the tag, so hash the stored request as is.
|
|
534
|
+
*/
|
|
535
|
+
function approvalEntityTag(request) {
|
|
536
|
+
return `"${sha256Digest(canonicalJson(approvalView(request)))}"`;
|
|
537
|
+
}
|
|
538
|
+
//#endregion
|
|
524
539
|
//#region src/approvals/idempotency.ts
|
|
540
|
+
/** How long `approvalsHandler` keeps a response for a repeated `Idempotency-Key`. */
|
|
541
|
+
const IDEMPOTENCY_TTL_MS = 864e5;
|
|
542
|
+
/** The `IdempotencyStore` key for one approver's `Idempotency-Key`: keys never cross approvers. */
|
|
543
|
+
function idempotencyRecordKey(principalId, key) {
|
|
544
|
+
return `${principalId}\n${key}`;
|
|
545
|
+
}
|
|
546
|
+
function fingerprintOf(call) {
|
|
547
|
+
return `${call.action} ${call.id} ${sha256Digest(call.body)}`;
|
|
548
|
+
}
|
|
549
|
+
/**
|
|
550
|
+
* The record `approvalsHandler` stores after `call` answered `response`:
|
|
551
|
+
* the status, headers and body text, the call's fingerprint, and an expiry
|
|
552
|
+
* 24 hours after `now` (epoch milliseconds, default the clock).
|
|
553
|
+
*/
|
|
554
|
+
async function idempotencyRecord(input) {
|
|
555
|
+
return {
|
|
556
|
+
key: idempotencyRecordKey(input.principalId, input.key),
|
|
557
|
+
response: {
|
|
558
|
+
fingerprint: fingerprintOf(input.call),
|
|
559
|
+
status: input.response.status,
|
|
560
|
+
headers: [...input.response.headers.entries()],
|
|
561
|
+
body: await input.response.clone().text()
|
|
562
|
+
},
|
|
563
|
+
expiresAt: (input.now ?? nowMillis()) + IDEMPOTENCY_TTL_MS
|
|
564
|
+
};
|
|
565
|
+
}
|
|
566
|
+
/** Whether a stored response came from the same call: a reused key with another call is refused with `422`. */
|
|
567
|
+
function matchesIdempotencyRecord(response, call) {
|
|
568
|
+
return response.fingerprint === fingerprintOf(call);
|
|
569
|
+
}
|
|
525
570
|
/** An in-process `IdempotencyStore`, for one instance and for tests. */
|
|
526
571
|
function memoryIdempotencyStore() {
|
|
527
572
|
const entries = /* @__PURE__ */ new Map();
|
|
@@ -588,7 +633,6 @@ function signApproval(request, signer, options = {}) {
|
|
|
588
633
|
}
|
|
589
634
|
//#endregion
|
|
590
635
|
//#region src/approvals/handler.ts
|
|
591
|
-
const IDEMPOTENCY_TTL_MS = 864e5;
|
|
592
636
|
const MAX_IDEMPOTENCY_KEY_LENGTH = 256;
|
|
593
637
|
function problem(status, detail) {
|
|
594
638
|
return problemResponse(statusProblem(status, detail));
|
|
@@ -602,14 +646,6 @@ function json(status, body, headers = {}) {
|
|
|
602
646
|
}
|
|
603
647
|
});
|
|
604
648
|
}
|
|
605
|
-
function viewOf(request) {
|
|
606
|
-
const { token: _token, ...view } = request;
|
|
607
|
-
return view;
|
|
608
|
-
}
|
|
609
|
-
/** A strong RFC 9110 entity tag: the `sha-256:` digest of the view's RFC 8785 JSON. */
|
|
610
|
-
function entityTag(request) {
|
|
611
|
-
return `"${sha256Digest(canonicalJson(viewOf(request)))}"`;
|
|
612
|
-
}
|
|
613
649
|
function entityTags(field) {
|
|
614
650
|
return field.split(",").map((tag) => tag.trim()).filter((tag) => tag !== "");
|
|
615
651
|
}
|
|
@@ -619,7 +655,7 @@ function ifMatchFails(request, current) {
|
|
|
619
655
|
if (field === null) return false;
|
|
620
656
|
const tags = entityTags(field);
|
|
621
657
|
if (tags.includes("*")) return false;
|
|
622
|
-
return !tags.includes(
|
|
658
|
+
return !tags.includes(approvalEntityTag(current));
|
|
623
659
|
}
|
|
624
660
|
/** RFC 9110 section 13.1.2: weak comparison. */
|
|
625
661
|
function ifNoneMatchHolds(request, etag) {
|
|
@@ -702,20 +738,6 @@ async function resolveSubject(request, resolve) {
|
|
|
702
738
|
return null;
|
|
703
739
|
}
|
|
704
740
|
}
|
|
705
|
-
function membershipTenants(subject) {
|
|
706
|
-
const principal = subject.principal;
|
|
707
|
-
if (principal === null) return [];
|
|
708
|
-
const tenants = /* @__PURE__ */ new Set();
|
|
709
|
-
if (principal.tenant !== void 0) tenants.add(principal.tenant);
|
|
710
|
-
for (const membership of principal.memberships ?? []) {
|
|
711
|
-
const tenant = rootMembershipId(membership);
|
|
712
|
-
if (tenant !== void 0) tenants.add(tenant);
|
|
713
|
-
}
|
|
714
|
-
return [...tenants];
|
|
715
|
-
}
|
|
716
|
-
function belongsToTenant(subject, tenant) {
|
|
717
|
-
return membershipTenants(subject).includes(tenant);
|
|
718
|
-
}
|
|
719
741
|
async function factsFor(request, subject, options) {
|
|
720
742
|
return {
|
|
721
743
|
relations: await approverRelations(request, subject, options),
|
|
@@ -865,14 +887,6 @@ function idempotencyKey(request) {
|
|
|
865
887
|
if (key === void 0 || key === "" || key.length > MAX_IDEMPOTENCY_KEY_LENGTH || /["\\]/u.test(key)) return { refusal: validationProblem("Idempotency-Key must be a quoted string of 1 to 256 characters") };
|
|
866
888
|
return { key };
|
|
867
889
|
}
|
|
868
|
-
async function stored(response, fingerprint) {
|
|
869
|
-
return {
|
|
870
|
-
fingerprint,
|
|
871
|
-
status: response.status,
|
|
872
|
-
headers: [...response.headers.entries()],
|
|
873
|
-
body: await response.clone().text()
|
|
874
|
-
};
|
|
875
|
-
}
|
|
876
890
|
function approvalsHandler(store, options) {
|
|
877
891
|
const requireDistinct = options.requireDistinctApprover === true;
|
|
878
892
|
const idempotency = options.idempotency ?? memoryIdempotencyStore();
|
|
@@ -898,8 +912,8 @@ function approvalsHandler(store, options) {
|
|
|
898
912
|
permissions: acting.permissions
|
|
899
913
|
} : void 0
|
|
900
914
|
}));
|
|
901
|
-
return json(200,
|
|
902
|
-
ETag:
|
|
915
|
+
return json(200, approvalView(resolved), {
|
|
916
|
+
ETag: approvalEntityTag(resolved),
|
|
903
917
|
...options.signer !== void 0 && resolved.status === "approved" ? signatureLink(url) : {}
|
|
904
918
|
});
|
|
905
919
|
};
|
|
@@ -933,7 +947,7 @@ function approvalsHandler(store, options) {
|
|
|
933
947
|
return (tenant === void 0 ? scoped.tenantless : tenants.has(tenant)) && await mayResolve(item, subject, requireDistinct, options);
|
|
934
948
|
}));
|
|
935
949
|
return json(200, compact({
|
|
936
|
-
items: page.items.filter((_, index) => eligible[index] === true).map(
|
|
950
|
+
items: page.items.filter((_, index) => eligible[index] === true).map(approvalView),
|
|
937
951
|
next: page.next
|
|
938
952
|
}), nextLink(url, page.next));
|
|
939
953
|
}
|
|
@@ -943,19 +957,19 @@ function approvalsHandler(store, options) {
|
|
|
943
957
|
principalId: principal.id
|
|
944
958
|
});
|
|
945
959
|
return json(200, compact({
|
|
946
|
-
items: page.items.map(
|
|
960
|
+
items: page.items.map(approvalView),
|
|
947
961
|
next: page.next
|
|
948
962
|
}), nextLink(url, page.next));
|
|
949
963
|
}
|
|
950
964
|
case "get": {
|
|
951
965
|
const current = await visible(route.id, subject);
|
|
952
966
|
if (current === null) return problem(404, "approval was not found");
|
|
953
|
-
const etag =
|
|
967
|
+
const etag = approvalEntityTag(current);
|
|
954
968
|
if (ifNoneMatchHolds(request, etag)) return new Response(null, {
|
|
955
969
|
status: 304,
|
|
956
970
|
headers: { ETag: etag }
|
|
957
971
|
});
|
|
958
|
-
return json(200,
|
|
972
|
+
return json(200, approvalView(current), { ETag: etag });
|
|
959
973
|
}
|
|
960
974
|
case "signature": {
|
|
961
975
|
const current = await findById(store, route.id);
|
|
@@ -973,15 +987,27 @@ function approvalsHandler(store, options) {
|
|
|
973
987
|
const read = await readNote(request);
|
|
974
988
|
if (read.refusal !== void 0) return read.refusal;
|
|
975
989
|
if (keyed.key === void 0) return await resolve(request, url, route, subject, read);
|
|
976
|
-
const
|
|
977
|
-
|
|
990
|
+
const call = {
|
|
991
|
+
action: route.kind,
|
|
992
|
+
id: route.id,
|
|
993
|
+
body: read.text
|
|
994
|
+
};
|
|
995
|
+
const key = idempotencyRecordKey(principal.id, keyed.key);
|
|
978
996
|
const replay = await idempotency.get(key);
|
|
979
|
-
if (replay !== void 0) return replay
|
|
997
|
+
if (replay !== void 0) return matchesIdempotencyRecord(replay, call) ? new Response(replay.body, {
|
|
980
998
|
status: replay.status,
|
|
981
999
|
headers: replay.headers.map(([name, value]) => [name, value])
|
|
982
1000
|
}) : problem(422, "Idempotency-Key was used for another request");
|
|
983
1001
|
const response = await resolve(request, url, route, subject, read);
|
|
984
|
-
if (response.ok)
|
|
1002
|
+
if (response.ok) {
|
|
1003
|
+
const record = await idempotencyRecord({
|
|
1004
|
+
principalId: principal.id,
|
|
1005
|
+
key: keyed.key,
|
|
1006
|
+
call,
|
|
1007
|
+
response
|
|
1008
|
+
});
|
|
1009
|
+
await idempotency.set(record.key, record.response, record.expiresAt);
|
|
1010
|
+
}
|
|
985
1011
|
return response;
|
|
986
1012
|
}
|
|
987
1013
|
default: return problem(404, `unknown approvals route ${String(route)}`);
|
|
@@ -992,4 +1018,4 @@ function approvalsHandler(store, options) {
|
|
|
992
1018
|
};
|
|
993
1019
|
}
|
|
994
1020
|
//#endregion
|
|
995
|
-
export {
|
|
1021
|
+
export { accessReviewerEligible as _, idempotencyRecordKey as a, approvalEntityTag as c, memoryApprovalDelegationSource as d, parseApprovalDelegation as f, accessReviewsHandler as g, startAccessReview as h, idempotencyRecord as i, approvalView as l, pageAccessReviewItems as m, approvalSignatureClaims as n, matchesIdempotencyRecord as o, memoryAccessReviewStore as p, signApproval as r, memoryIdempotencyStore as s, approvalsHandler as t, matchDelegation as u, decideAccessReviewItem as v };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as defineLeaf } from "./command-L8EstFNm.js";
|
|
2
|
-
import { c as given, u as permissionsFlag } from "./flags-
|
|
2
|
+
import { c as given, u as permissionsFlag } from "./flags-aaeRAdiD.js";
|
|
3
3
|
//#region src/cli/commands/arazzo.ts
|
|
4
4
|
const check = defineLeaf({
|
|
5
5
|
flags: {
|
|
@@ -21,7 +21,7 @@ const check = defineLeaf({
|
|
|
21
21
|
...permissionsFlag
|
|
22
22
|
},
|
|
23
23
|
async run(ctx, { flags }) {
|
|
24
|
-
return (await import("./arazzo-
|
|
24
|
+
return (await import("./arazzo-rdeJ8n1J.js")).runArazzo({
|
|
25
25
|
cwd: ctx.cwd,
|
|
26
26
|
config: ctx.config,
|
|
27
27
|
doc: given(flags.doc),
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { c as missingInput } from "./errors-
|
|
1
|
+
import { _ as arazzoFindings } from "./src-DLFrtrrC.js";
|
|
2
|
+
import { c as missingInput } from "./errors-DpP_U6Bf.js";
|
|
3
3
|
import { i as readJsonFile } from "./files-D_JIzUrP.js";
|
|
4
4
|
import { t as ARAZZO_REPORT_SCHEMA } from "./version-CEbQ5UeM.js";
|
|
5
|
-
import { a as loadModule, s as pickNamed, t as asPermissionTree } from "./load-
|
|
6
|
-
import { t as DOCS_BASE } from "./manifest-
|
|
5
|
+
import { a as loadModule, s as pickNamed, t as asPermissionTree } from "./load-DxroEzH1.js";
|
|
6
|
+
import { t as DOCS_BASE } from "./manifest-Dv6q4i5s.js";
|
|
7
7
|
import { existsSync } from "node:fs";
|
|
8
8
|
import { resolve } from "node:path";
|
|
9
9
|
//#region src/cli/arazzo.ts
|
|
@@ -1,5 +1,115 @@
|
|
|
1
|
-
import { n as CliError } from "./errors-
|
|
2
|
-
|
|
1
|
+
import { n as CliError } from "./errors-DpP_U6Bf.js";
|
|
2
|
+
//#region ../../node_modules/.pnpm/fastest-levenshtein@1.0.16/node_modules/fastest-levenshtein/esm/mod.js
|
|
3
|
+
const peq = /* @__PURE__ */ new Uint32Array(65536);
|
|
4
|
+
const myers_32 = (a, b) => {
|
|
5
|
+
const n = a.length;
|
|
6
|
+
const m = b.length;
|
|
7
|
+
const lst = 1 << n - 1;
|
|
8
|
+
let pv = -1;
|
|
9
|
+
let mv = 0;
|
|
10
|
+
let sc = n;
|
|
11
|
+
let i = n;
|
|
12
|
+
while (i--) peq[a.charCodeAt(i)] |= 1 << i;
|
|
13
|
+
for (i = 0; i < m; i++) {
|
|
14
|
+
let eq = peq[b.charCodeAt(i)];
|
|
15
|
+
const xv = eq | mv;
|
|
16
|
+
eq |= (eq & pv) + pv ^ pv;
|
|
17
|
+
mv |= ~(eq | pv);
|
|
18
|
+
pv &= eq;
|
|
19
|
+
if (mv & lst) sc++;
|
|
20
|
+
if (pv & lst) sc--;
|
|
21
|
+
mv = mv << 1 | 1;
|
|
22
|
+
pv = pv << 1 | ~(xv | mv);
|
|
23
|
+
mv &= xv;
|
|
24
|
+
}
|
|
25
|
+
i = n;
|
|
26
|
+
while (i--) peq[a.charCodeAt(i)] = 0;
|
|
27
|
+
return sc;
|
|
28
|
+
};
|
|
29
|
+
const myers_x = (b, a) => {
|
|
30
|
+
const n = a.length;
|
|
31
|
+
const m = b.length;
|
|
32
|
+
const mhc = [];
|
|
33
|
+
const phc = [];
|
|
34
|
+
const hsize = Math.ceil(n / 32);
|
|
35
|
+
const vsize = Math.ceil(m / 32);
|
|
36
|
+
for (let i = 0; i < hsize; i++) {
|
|
37
|
+
phc[i] = -1;
|
|
38
|
+
mhc[i] = 0;
|
|
39
|
+
}
|
|
40
|
+
let j = 0;
|
|
41
|
+
for (; j < vsize - 1; j++) {
|
|
42
|
+
let mv = 0;
|
|
43
|
+
let pv = -1;
|
|
44
|
+
const start = j * 32;
|
|
45
|
+
const vlen = Math.min(32, m) + start;
|
|
46
|
+
for (let k = start; k < vlen; k++) peq[b.charCodeAt(k)] |= 1 << k;
|
|
47
|
+
for (let i = 0; i < n; i++) {
|
|
48
|
+
const eq = peq[a.charCodeAt(i)];
|
|
49
|
+
const pb = phc[i / 32 | 0] >>> i & 1;
|
|
50
|
+
const mb = mhc[i / 32 | 0] >>> i & 1;
|
|
51
|
+
const xv = eq | mv;
|
|
52
|
+
const xh = ((eq | mb) & pv) + pv ^ pv | eq | mb;
|
|
53
|
+
let ph = mv | ~(xh | pv);
|
|
54
|
+
let mh = pv & xh;
|
|
55
|
+
if (ph >>> 31 ^ pb) phc[i / 32 | 0] ^= 1 << i;
|
|
56
|
+
if (mh >>> 31 ^ mb) mhc[i / 32 | 0] ^= 1 << i;
|
|
57
|
+
ph = ph << 1 | pb;
|
|
58
|
+
mh = mh << 1 | mb;
|
|
59
|
+
pv = mh | ~(xv | ph);
|
|
60
|
+
mv = ph & xv;
|
|
61
|
+
}
|
|
62
|
+
for (let k = start; k < vlen; k++) peq[b.charCodeAt(k)] = 0;
|
|
63
|
+
}
|
|
64
|
+
let mv = 0;
|
|
65
|
+
let pv = -1;
|
|
66
|
+
const start = j * 32;
|
|
67
|
+
const vlen = Math.min(32, m - start) + start;
|
|
68
|
+
for (let k = start; k < vlen; k++) peq[b.charCodeAt(k)] |= 1 << k;
|
|
69
|
+
let score = m;
|
|
70
|
+
for (let i = 0; i < n; i++) {
|
|
71
|
+
const eq = peq[a.charCodeAt(i)];
|
|
72
|
+
const pb = phc[i / 32 | 0] >>> i & 1;
|
|
73
|
+
const mb = mhc[i / 32 | 0] >>> i & 1;
|
|
74
|
+
const xv = eq | mv;
|
|
75
|
+
const xh = ((eq | mb) & pv) + pv ^ pv | eq | mb;
|
|
76
|
+
let ph = mv | ~(xh | pv);
|
|
77
|
+
let mh = pv & xh;
|
|
78
|
+
score += ph >>> m - 1 & 1;
|
|
79
|
+
score -= mh >>> m - 1 & 1;
|
|
80
|
+
if (ph >>> 31 ^ pb) phc[i / 32 | 0] ^= 1 << i;
|
|
81
|
+
if (mh >>> 31 ^ mb) mhc[i / 32 | 0] ^= 1 << i;
|
|
82
|
+
ph = ph << 1 | pb;
|
|
83
|
+
mh = mh << 1 | mb;
|
|
84
|
+
pv = mh | ~(xv | ph);
|
|
85
|
+
mv = ph & xv;
|
|
86
|
+
}
|
|
87
|
+
for (let k = start; k < vlen; k++) peq[b.charCodeAt(k)] = 0;
|
|
88
|
+
return score;
|
|
89
|
+
};
|
|
90
|
+
const distance = (a, b) => {
|
|
91
|
+
if (a.length < b.length) {
|
|
92
|
+
const tmp = b;
|
|
93
|
+
b = a;
|
|
94
|
+
a = tmp;
|
|
95
|
+
}
|
|
96
|
+
if (b.length === 0) return a.length;
|
|
97
|
+
if (a.length <= 32) return myers_32(a, b);
|
|
98
|
+
return myers_x(a, b);
|
|
99
|
+
};
|
|
100
|
+
const closest = (str, arr) => {
|
|
101
|
+
let min_distance = Infinity;
|
|
102
|
+
let min_index = 0;
|
|
103
|
+
for (let i = 0; i < arr.length; i++) {
|
|
104
|
+
const dist = distance(str, arr[i]);
|
|
105
|
+
if (dist < min_distance) {
|
|
106
|
+
min_distance = dist;
|
|
107
|
+
min_index = i;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return arr[min_index];
|
|
111
|
+
};
|
|
112
|
+
//#endregion
|
|
3
113
|
//#region src/cli/core/context.ts
|
|
4
114
|
/** Flags every command accepts, read from anywhere before `--`. */
|
|
5
115
|
const GLOBAL_FLAGS = {
|
package/dist/astro/index.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { a as OperationInput, t as Operation } from "../operations-
|
|
4
|
-
import {
|
|
5
|
-
import { D as ConnectionOptions, T as Connection, f as InvalidSignatureError, i as OpenApiHooks, o as ProtectOptions, u as SnapshotQuery, v as discoverViaSignatureAgent, x as webBotAuthVerifier } from "../server-types-
|
|
6
|
-
import { a as ProtectTarget, i as PermDockHandlers, n as FetchAdapterOptions, t as ContextReader } from "../fetch-adapter-
|
|
1
|
+
import { Gt as Snapshot, T as Policy, j as PolicyVocabulary, sr as Principal } from "../policy-types-B-F-qAZk.js";
|
|
2
|
+
import { u as Permission } from "../permission-types-DhNEmoRG.js";
|
|
3
|
+
import { a as OperationInput, t as Operation } from "../operations-BNLes61x.js";
|
|
4
|
+
import { a as PermDock } from "../permdock-Dco6dyCK.js";
|
|
5
|
+
import { D as ConnectionOptions, T as Connection, f as InvalidSignatureError, i as OpenApiHooks, o as ProtectOptions, u as SnapshotQuery, v as discoverViaSignatureAgent, x as webBotAuthVerifier } from "../server-types-C4gZUEZy.js";
|
|
6
|
+
import { a as ProtectTarget, i as PermDockHandlers, n as FetchAdapterOptions, t as ContextReader } from "../fetch-adapter-CuhyYwC1.js";
|
|
7
7
|
import { APIContext, MiddlewareHandler } from "astro";
|
|
8
8
|
//#region src/astro/create.d.ts
|
|
9
9
|
type AstroPermDockOptions<TUser = unknown> = FetchAdapterOptions<APIContext, TUser>;
|