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/dist/mcp/index.js
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
import { r as isRecord, t as compact } from "../compact-CAf557ZB.js";
|
|
2
2
|
import { n as freezeDeep } from "../freeze-CrU8nQeX.js";
|
|
3
|
-
import { i as stepUpOf } from "../problem-details-cn5X30gZ.js";
|
|
4
|
-
import { t as describe } from "../describe-
|
|
5
|
-
import { m as annotationsFor } from "../permission-registry-
|
|
6
|
-
import { t as actorMayCallTool } from "../delegation-
|
|
3
|
+
import { i as stepUpOf, o as statusProblem } from "../problem-details-cn5X30gZ.js";
|
|
4
|
+
import { t as describe } from "../describe-DZlnEtLy.js";
|
|
5
|
+
import { m as annotationsFor } from "../permission-registry-DpPtSKNZ.js";
|
|
6
|
+
import { t as actorMayCallTool } from "../delegation-C5rOdTp5.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 { t as anonymousSubject } from "../subject-BGoM5o8B.js";
|
|
10
|
-
import { t as composeWraps } from "../wrap-
|
|
11
|
-
import { l as protectedResourceMetadataUrl, r as bearerChallenge } from "../problem-CTviyH5L.js";
|
|
10
|
+
import { t as composeWraps } from "../wrap-CiSc_KCq.js";
|
|
11
|
+
import { a as methodNotAllowed, c as problemResponse, l as protectedResourceMetadataUrl, r as bearerChallenge } from "../problem-CTviyH5L.js";
|
|
12
12
|
import { t as clientNameOf } from "../clients-DjU5ABMy.js";
|
|
13
|
-
import {
|
|
14
|
-
import { r as instanceOptions } from "../build-instance-
|
|
15
|
-
import {
|
|
13
|
+
import { r as mapClaimsToSubject } from "../map-claims-etGIS_Dv.js";
|
|
14
|
+
import { r as instanceOptions } from "../build-instance-DxE7czo9.js";
|
|
15
|
+
import { i as refusalText, n as createAgentKernel } from "../kernel-DVExUwkp.js";
|
|
16
16
|
import { t as boundedMap } from "../lru-8q4WZjBV.js";
|
|
17
17
|
import { t as delegationFrom } from "../delegation-input-FTxMK3ji.js";
|
|
18
|
-
import { n as deniedToolRefusal, r as toolErrorResult, t as approvalToolRefusal } from "../tool-refusal-
|
|
18
|
+
import { n as deniedToolRefusal, r as toolErrorResult, t as approvalToolRefusal } from "../tool-refusal-reAhIzdl.js";
|
|
19
19
|
//#region src/mcp/mcp-auth.ts
|
|
20
20
|
/** `_meta` key on `tools/call`, `resources/read` and `prompts/get` carrying an approval token. */
|
|
21
21
|
const APPROVAL_META_KEY = "dev.permdock/approval";
|
|
@@ -383,6 +383,13 @@ function requirePermission(kind, name, config) {
|
|
|
383
383
|
if (!isRecord(permission) || typeof permission["key"] !== "string") throw new TypeError(`permdock/mcp: ${kind} ${name} has no permission; every guarded registration needs one.`);
|
|
384
384
|
return permission;
|
|
385
385
|
}
|
|
386
|
+
const UI_SCHEME = "ui://";
|
|
387
|
+
/** The MCP Apps view a tool links through `_meta.ui.resourceUri`. */
|
|
388
|
+
function uiResourceUri(meta) {
|
|
389
|
+
const ui = isRecord(meta) ? meta["ui"] : void 0;
|
|
390
|
+
const uri = isRecord(ui) ? ui["resourceUri"] : void 0;
|
|
391
|
+
return typeof uri === "string" && uri.startsWith(UI_SCHEME) ? uri : void 0;
|
|
392
|
+
}
|
|
386
393
|
function guardUpdates(registered, wrap, rename, currentName) {
|
|
387
394
|
const update = registered.update.bind(registered);
|
|
388
395
|
registered.update = (updates) => {
|
|
@@ -400,21 +407,23 @@ function protectServer(checks, server, enforcement) {
|
|
|
400
407
|
const toolScopes = /* @__PURE__ */ new Map();
|
|
401
408
|
const prompts = /* @__PURE__ */ new Map();
|
|
402
409
|
const resources = /* @__PURE__ */ new Map();
|
|
410
|
+
const views = /* @__PURE__ */ new Set();
|
|
411
|
+
const uiLinks = /* @__PURE__ */ new Map();
|
|
403
412
|
const templates = [];
|
|
404
413
|
const lastListed = boundedMap(SESSIONS_PER_SERVER);
|
|
405
414
|
const toolPermission = (name) => tools.get(name);
|
|
406
415
|
const toolDeclared = (name) => toolScopes.get(name);
|
|
407
416
|
const promptPermission = (name) => prompts.get(name);
|
|
408
417
|
const resourcePermission = (uri) => {
|
|
409
|
-
const direct = resources.get(uri);
|
|
418
|
+
const direct = resources.get(uri) ?? uiLinks.get(uri)?.permission;
|
|
410
419
|
if (direct !== void 0) return direct;
|
|
411
420
|
return templates.find((entry) => entry.template.uriTemplate.match(uri) !== null)?.permission;
|
|
412
421
|
};
|
|
413
422
|
const templatePermission = (uriTemplate) => templates.find((entry) => entry.template.uriTemplate.toString() === uriTemplate)?.permission;
|
|
414
|
-
const listFilter = (field, keyOf, permissionOf, remember) => async (result, rawContext) => {
|
|
423
|
+
const listFilter = (field, keyOf, permissionOf, remember, hidden = () => false) => async (result, rawContext) => {
|
|
415
424
|
if (!isRecord(result) || !Array.isArray(result[field])) return result;
|
|
416
425
|
const context = contextOf(rawContext);
|
|
417
|
-
const entries = result[field];
|
|
426
|
+
const entries = result[field].filter((entry) => !hidden(keyOf(entry)));
|
|
418
427
|
const shown = await visible(checks, context, permissionOf, entries.map(keyOf), remember ? toolDeclared : void 0, remember);
|
|
419
428
|
const kept = entries.filter((entry) => shown.has(keyOf(entry)));
|
|
420
429
|
if (remember) lastListed.set(sessionKey(context), [...shown].toSorted().join(","));
|
|
@@ -430,7 +439,7 @@ function protectServer(checks, server, enforcement) {
|
|
|
430
439
|
const filters = {
|
|
431
440
|
"tools/list": listFilter("tools", (entry) => entry.name, toolPermission, true),
|
|
432
441
|
"prompts/list": listFilter("prompts", (entry) => entry.name, promptPermission, false),
|
|
433
|
-
"resources/list": listFilter("resources", (entry) => entry.uri, resourcePermission, false),
|
|
442
|
+
"resources/list": listFilter("resources", (entry) => entry.uri, resourcePermission, false, (uri) => views.has(uri) && resourcePermission(uri) === void 0),
|
|
434
443
|
"resources/templates/list": listFilter("resourceTemplates", (entry) => entry.uriTemplate, templatePermission, false)
|
|
435
444
|
};
|
|
436
445
|
const inner = server.server;
|
|
@@ -484,6 +493,9 @@ function protectServer(checks, server, enforcement) {
|
|
|
484
493
|
};
|
|
485
494
|
const registerTool = (name, config, handler) => {
|
|
486
495
|
const permission = toolPermissionOf(name, config);
|
|
496
|
+
const view = uiResourceUri(config["_meta"]);
|
|
497
|
+
const linked = view === void 0 ? void 0 : uiLinks.get(view);
|
|
498
|
+
if (view !== void 0 && linked !== void 0 && linked.permission.key !== permission.key) throw new TypeError(`permdock/mcp: tools ${linked.tool} and ${name} link ${view} under different permissions; give the resource its own permission.`);
|
|
487
499
|
const { permission: _permission, data, scopeChallenge, longRunning: rawLongRunning, oauthScopes: rawScopes, ...passthrough } = config;
|
|
488
500
|
const load = data;
|
|
489
501
|
const longRunning = rawLongRunning === true;
|
|
@@ -501,6 +513,10 @@ function protectServer(checks, server, enforcement) {
|
|
|
501
513
|
}, wrapTool(tool, permission, reach, load, handler, longRunning));
|
|
502
514
|
tools.set(name, permission);
|
|
503
515
|
if (declared !== void 0) toolScopes.set(name, declared);
|
|
516
|
+
if (view !== void 0 && linked === void 0) uiLinks.set(view, {
|
|
517
|
+
tool: name,
|
|
518
|
+
permission
|
|
519
|
+
});
|
|
504
520
|
guardUpdates(registered, (callback) => wrapTool(tool, permission, reach, load, callback, longRunning), (from, to) => {
|
|
505
521
|
tools.delete(from);
|
|
506
522
|
toolScopes.delete(from);
|
|
@@ -528,18 +544,30 @@ function protectServer(checks, server, enforcement) {
|
|
|
528
544
|
};
|
|
529
545
|
const originalResource = server.registerResource.bind(server);
|
|
530
546
|
const registerResource = (name, uriOrTemplate, config, read) => {
|
|
531
|
-
const
|
|
547
|
+
const own = config["permission"] === void 0 && typeof uriOrTemplate === "string" && uriOrTemplate.startsWith(UI_SCHEME) ? void 0 : requirePermission("resource", name, config);
|
|
548
|
+
/** A `ui://` view without its own permission takes the one of the tool linking it; unlinked, it denies. */
|
|
549
|
+
const permissionNow = () => own ?? (typeof uriOrTemplate === "string" ? uiLinks.get(uriOrTemplate)?.permission : void 0);
|
|
532
550
|
const { permission: _permission, data, scopeChallenge, ...passthrough } = config;
|
|
533
551
|
const load = data;
|
|
534
|
-
const
|
|
552
|
+
const ownChallenge = scopeChallenge;
|
|
553
|
+
const wrap = (callback) => (...params) => {
|
|
554
|
+
const permission = permissionNow();
|
|
555
|
+
if (permission === void 0) return Promise.reject(/* @__PURE__ */ new Error(`Denied: resource ${name} is linked to no guarded tool.`));
|
|
556
|
+
return guard(checks, permission, load, callback, (args) => args.slice(0, -1), throwRefusal, { capabilities })(...params);
|
|
557
|
+
};
|
|
535
558
|
const registered = originalResource(name, uriOrTemplate, {
|
|
536
559
|
...passthrough,
|
|
537
|
-
scopeChallenge:
|
|
560
|
+
scopeChallenge: (context) => {
|
|
561
|
+
const permission = permissionNow();
|
|
562
|
+
return permission === void 0 ? ownChallenge?.(context) : challengeFor(ownChallenge, scopesReaching(checks.policy, permission), challengeScope(checks.policy, permission))(context);
|
|
563
|
+
}
|
|
538
564
|
}, wrap(read));
|
|
539
|
-
if (typeof uriOrTemplate === "string")
|
|
540
|
-
|
|
565
|
+
if (typeof uriOrTemplate === "string") {
|
|
566
|
+
if (own === void 0) views.add(uriOrTemplate);
|
|
567
|
+
else resources.set(uriOrTemplate, own);
|
|
568
|
+
} else if (own !== void 0) templates.push({
|
|
541
569
|
template: uriOrTemplate,
|
|
542
|
-
permission
|
|
570
|
+
permission: own
|
|
543
571
|
});
|
|
544
572
|
guardUpdates(registered, wrap);
|
|
545
573
|
return registered;
|
|
@@ -628,4 +656,105 @@ function createPermDock(policy, given) {
|
|
|
628
656
|
return { protectServer: ((server, enforcement) => protectServer(checks, server, enforcement)) };
|
|
629
657
|
}
|
|
630
658
|
//#endregion
|
|
631
|
-
|
|
659
|
+
//#region src/mcp/resource-guard.ts
|
|
660
|
+
/** The `error_description` of every `invalid_token` challenge (RFC 6750 section 3.1). */
|
|
661
|
+
const INVALID_TOKEN = "The access token is invalid";
|
|
662
|
+
const BEARER = /^Bearer +([\w~+/.-]+=*)$/iu;
|
|
663
|
+
function tokenScopes(claims) {
|
|
664
|
+
const { scope, scp } = claims;
|
|
665
|
+
if (typeof scope === "string") return scope.split(" ").filter((name) => name !== "");
|
|
666
|
+
return Array.isArray(scp) ? scp.filter((name) => typeof name === "string") : [];
|
|
667
|
+
}
|
|
668
|
+
function refuse(status, challenge, detail) {
|
|
669
|
+
return {
|
|
670
|
+
ok: false,
|
|
671
|
+
response: problemResponse(statusProblem(status, detail), void 0, void 0, { "WWW-Authenticate": challenge })
|
|
672
|
+
};
|
|
673
|
+
}
|
|
674
|
+
/**
|
|
675
|
+
* The resource-server check in front of an MCP endpoint (MCP authorization,
|
|
676
|
+
* RFC 6750, RFC 9728): reads the bearer token from `Authorization`, verifies
|
|
677
|
+
* it for `resource`, refuses a revoked one and checks `scopes`. It answers
|
|
678
|
+
* the `McpAuthInfo` the SDK's handlers read, or the `401` or `403` response
|
|
679
|
+
* with a `WWW-Authenticate` challenge naming the metadata URL. A token in the
|
|
680
|
+
* query string is never read. Never throws.
|
|
681
|
+
*/
|
|
682
|
+
function mcpResourceGuard(options) {
|
|
683
|
+
const resource = new URL(String(options.resource));
|
|
684
|
+
const resourceMetadata = options.resourceMetadataUrl ?? protectedResourceMetadataUrl(resource);
|
|
685
|
+
const required = options.scopes ?? [];
|
|
686
|
+
const invalid = () => refuse(401, bearerChallenge({
|
|
687
|
+
error: "invalid_token",
|
|
688
|
+
description: INVALID_TOKEN,
|
|
689
|
+
resourceMetadata
|
|
690
|
+
}), "invalid access token");
|
|
691
|
+
return async (request) => {
|
|
692
|
+
const header = request.headers.get("authorization");
|
|
693
|
+
if (header === null || header.trim() === "") return refuse(401, `Bearer resource_metadata="${resourceMetadata}"`, "access token required");
|
|
694
|
+
const token = BEARER.exec(header.trim())?.[1];
|
|
695
|
+
if (token === void 0) return invalid();
|
|
696
|
+
let claims;
|
|
697
|
+
try {
|
|
698
|
+
const verified = await options.verifier.verify(token, compact({
|
|
699
|
+
audience: resource.href,
|
|
700
|
+
issuer: options.issuer
|
|
701
|
+
}));
|
|
702
|
+
if (!verified.ok) return invalid();
|
|
703
|
+
claims = verified.claims;
|
|
704
|
+
if (options.revoked !== void 0 && await options.revoked(claims)) return invalid();
|
|
705
|
+
} catch {
|
|
706
|
+
return invalid();
|
|
707
|
+
}
|
|
708
|
+
const scopes = tokenScopes(claims);
|
|
709
|
+
if (required.some((scope) => !scopes.includes(scope))) return refuse(403, bearerChallenge({
|
|
710
|
+
error: "insufficient_scope",
|
|
711
|
+
scopes: required,
|
|
712
|
+
resourceMetadata
|
|
713
|
+
}), "insufficient scope");
|
|
714
|
+
const clientId = claims["client_id"] ?? claims["azp"];
|
|
715
|
+
return {
|
|
716
|
+
ok: true,
|
|
717
|
+
authInfo: compact({
|
|
718
|
+
token,
|
|
719
|
+
clientId: typeof clientId === "string" ? clientId : void 0,
|
|
720
|
+
scopes,
|
|
721
|
+
expiresAt: claims.exp,
|
|
722
|
+
resource,
|
|
723
|
+
resourceMetadataUrl: resourceMetadata,
|
|
724
|
+
extra: { claims }
|
|
725
|
+
})
|
|
726
|
+
};
|
|
727
|
+
};
|
|
728
|
+
}
|
|
729
|
+
/**
|
|
730
|
+
* The RFC 9728 Protected Resource Metadata document as a Fetch handler, for
|
|
731
|
+
* `/.well-known/oauth-protected-resource<path>`. `bearer_methods_supported`
|
|
732
|
+
* is `header`, the only method `mcpResourceGuard` reads. Any origin may read it.
|
|
733
|
+
*/
|
|
734
|
+
function protectedResourceMetadata(options) {
|
|
735
|
+
const body = JSON.stringify(compact({
|
|
736
|
+
resource: new URL(String(options.resource)).href,
|
|
737
|
+
authorization_servers: options.authorizationServers,
|
|
738
|
+
scopes_supported: options.scopesSupported,
|
|
739
|
+
bearer_methods_supported: ["header"],
|
|
740
|
+
resource_name: options.resourceName,
|
|
741
|
+
resource_documentation: options.resourceDocumentation
|
|
742
|
+
}));
|
|
743
|
+
return (request) => {
|
|
744
|
+
if (request.method === "OPTIONS") return new Response(null, {
|
|
745
|
+
status: 204,
|
|
746
|
+
headers: {
|
|
747
|
+
"access-control-allow-origin": "*",
|
|
748
|
+
"access-control-allow-methods": "GET, OPTIONS"
|
|
749
|
+
}
|
|
750
|
+
});
|
|
751
|
+
if (request.method !== "GET" && request.method !== "HEAD") return methodNotAllowed("GET, HEAD, OPTIONS");
|
|
752
|
+
return new Response(request.method === "HEAD" ? null : body, { headers: {
|
|
753
|
+
"content-type": "application/json",
|
|
754
|
+
"access-control-allow-origin": "*",
|
|
755
|
+
"cache-control": "public, max-age=3600"
|
|
756
|
+
} });
|
|
757
|
+
};
|
|
758
|
+
}
|
|
759
|
+
//#endregion
|
|
760
|
+
export { APPROVAL_META_KEY, createPermDock, mcpResourceGuard, protectedResourceMetadata, subjectFromMcp };
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { r as isRecord } from "./compact-CAf557ZB.js";
|
|
2
2
|
import { i as dateAt } from "./time-DkWjdL98.js";
|
|
3
|
-
import { a as describeError } from "./errors-
|
|
3
|
+
import { a as describeError } from "./errors-DpP_U6Bf.js";
|
|
4
4
|
import { o as sqlFiles } from "./files-D_JIzUrP.js";
|
|
5
|
-
import { r as escapeSqlIdent, s as quoteSqlLiteral } from "./sql-
|
|
6
|
-
import "./sources-
|
|
5
|
+
import { r as escapeSqlIdent, s as quoteSqlLiteral } from "./sql-B96movIM.js";
|
|
6
|
+
import "./sources-B-zYB4GS.js";
|
|
7
7
|
import { a as RETIRE_MARKER } from "./markers-C6joDI3o.js";
|
|
8
|
-
import { r as refuseDirty, t as applyFiles } from "./files-
|
|
9
|
-
import { f as writeOutputFiles, n as dataMigrationFile } from "./output-files-
|
|
10
|
-
import { r as HELPERS } from "./shared-
|
|
11
|
-
import { o as sqlStatements } from "./deciding-columns-
|
|
12
|
-
import { i as retireSql, r as retirePlan } from "./retire-
|
|
8
|
+
import { r as refuseDirty, t as applyFiles } from "./files-acUbNwWt.js";
|
|
9
|
+
import { f as writeOutputFiles, n as dataMigrationFile } from "./output-files-CCMdcFWb.js";
|
|
10
|
+
import { r as HELPERS } from "./shared-fMKOv8hP.js";
|
|
11
|
+
import { o as sqlStatements } from "./deciding-columns-DRo2QM6E.js";
|
|
12
|
+
import { i as retireSql, r as retirePlan } from "./retire-Wj6dkyDE.js";
|
|
13
13
|
import { existsSync, readFileSync } from "node:fs";
|
|
14
14
|
import { relative, resolve } from "node:path";
|
|
15
15
|
import { parse } from "pgsql-parser";
|
|
@@ -84,6 +84,29 @@ function callEnd(text, start) {
|
|
|
84
84
|
}
|
|
85
85
|
return -1;
|
|
86
86
|
}
|
|
87
|
+
/** The top-level arguments of the call at `start`, as written; `end` is past its closing paren. */
|
|
88
|
+
function argTexts(text, start, end) {
|
|
89
|
+
const open = text.indexOf("(", start);
|
|
90
|
+
const args = [];
|
|
91
|
+
let from = open + 1;
|
|
92
|
+
let depth = 0;
|
|
93
|
+
for (let index = open; index < end; index += 1) {
|
|
94
|
+
const char = text[index];
|
|
95
|
+
if (char === "'" || char === "\"") {
|
|
96
|
+
index = Math.max(text.indexOf(char, index + 1), index);
|
|
97
|
+
continue;
|
|
98
|
+
}
|
|
99
|
+
if (char === "(" || char === "[") depth += 1;
|
|
100
|
+
else if (char === ")" || char === "]") {
|
|
101
|
+
depth -= 1;
|
|
102
|
+
if (depth === 0) args.push(text.slice(from, index));
|
|
103
|
+
} else if (char === "," && depth === 1) {
|
|
104
|
+
args.push(text.slice(from, index));
|
|
105
|
+
from = index + 1;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return args.map((arg) => arg.trim());
|
|
109
|
+
}
|
|
87
110
|
const IDENTIFIER = String.raw`(?:"(?:[^"]|"")+"|[A-Za-z_][\w$]*)`;
|
|
88
111
|
const COLUMN = new RegExp(String.raw`${IDENTIFIER}(?:\s*\.\s*${IDENTIFIER})*`, "uy");
|
|
89
112
|
function columnText(text, start) {
|
|
@@ -125,6 +148,8 @@ var Rewriter = class {
|
|
|
125
148
|
#target;
|
|
126
149
|
#text;
|
|
127
150
|
#at;
|
|
151
|
+
/** The written arguments of the call being rewritten. */
|
|
152
|
+
#args = [];
|
|
128
153
|
constructor(config, target, text) {
|
|
129
154
|
this.#config = config;
|
|
130
155
|
this.#target = target;
|
|
@@ -146,9 +171,12 @@ var Rewriter = class {
|
|
|
146
171
|
if (this.#target.granted.get(scope)?.has(key) !== true) return skip("not-granted-on-scope", [...this.#target.granted.values()].some((keys) => keys.has(key)) ? `no role grants ${key} on ${scope}, so the helper would always deny` : `${key} has no unconditional allow row in role_permissions: a conditional, time-bounded or deny-mixed grant splits its grant key, so the helper would always deny`);
|
|
147
172
|
return { to: literal(key) };
|
|
148
173
|
}
|
|
149
|
-
#column(arg) {
|
|
174
|
+
#column(arg, index) {
|
|
150
175
|
const location = child(child(arg, "ColumnRef"), "location");
|
|
151
|
-
if (typeof location !== "number")
|
|
176
|
+
if (typeof location !== "number") {
|
|
177
|
+
const written = this.#args[index];
|
|
178
|
+
return written === void 0 || written === "" ? skip("not-a-column", "the id is an expression whose text could not be read; rewrite it by hand") : { to: `(${written})` };
|
|
179
|
+
}
|
|
152
180
|
const text = columnText(this.#text, this.#at(location));
|
|
153
181
|
return text === void 0 ? skip("not-a-column", "the id could not be read as a column") : { to: text };
|
|
154
182
|
}
|
|
@@ -158,8 +186,8 @@ var Rewriter = class {
|
|
|
158
186
|
const key = this.#key(keyArg, scope);
|
|
159
187
|
return "to" in key ? { to: `${helper}(${key.to})` } : key;
|
|
160
188
|
}
|
|
161
|
-
#row(scope, idArg, keyArg) {
|
|
162
|
-
const column = this.#column(idArg);
|
|
189
|
+
#row(scope, idArg, keyArg, idIndex) {
|
|
190
|
+
const column = this.#column(idArg, idIndex);
|
|
163
191
|
if (!("to" in column)) return column;
|
|
164
192
|
const ids = this.#ids(scope, keyArg);
|
|
165
193
|
return "to" in ids ? { to: `(${column.to} in (select ${ids.to}))` } : ids;
|
|
@@ -175,7 +203,7 @@ var Rewriter = class {
|
|
|
175
203
|
#membership(scope, idArg) {
|
|
176
204
|
const helper = this.#helper(`member_${scope}_ids`);
|
|
177
205
|
if (helper === void 0) return skip("missing-helper", `rls generate writes no member_${scope}_ids: ${scope} has no membership source`);
|
|
178
|
-
const column = this.#column(idArg);
|
|
206
|
+
const column = this.#column(idArg, 0);
|
|
179
207
|
return "to" in column ? { to: `(${column.to} in (select ${helper}()))` } : column;
|
|
180
208
|
}
|
|
181
209
|
#role(scope, idArg, roleArgs) {
|
|
@@ -190,7 +218,7 @@ var Rewriter = class {
|
|
|
190
218
|
if (!this.#target.roles.has(declared)) return skip("unknown-role", `${value} maps to ${declared}, which no role grants; add it to rls.roleValues or declare the role`);
|
|
191
219
|
mapped.push(declared);
|
|
192
220
|
}
|
|
193
|
-
const column = this.#column(idArg);
|
|
221
|
+
const column = this.#column(idArg, 0);
|
|
194
222
|
return "to" in column ? { to: `(${column.to} in (select ${helper}(array[${mapped.map(literal).join(", ")}])))` } : column;
|
|
195
223
|
}
|
|
196
224
|
#scoped(args, selected) {
|
|
@@ -198,14 +226,15 @@ var Rewriter = class {
|
|
|
198
226
|
const named = stringConst(scopeArg);
|
|
199
227
|
if (named === void 0) return skip("unknown-scope", "the scope is not a string literal; rewrite it by hand");
|
|
200
228
|
if (this.#config.globalScopes?.includes(named) === true || isNullConst(idArg)) return this.#global(keyArg, selected);
|
|
201
|
-
return this.#row(this.#config.scopes?.[named] ?? named, idArg, keyArg);
|
|
229
|
+
return this.#row(this.#config.scopes?.[named] ?? named, idArg, keyArg, 1);
|
|
202
230
|
}
|
|
203
231
|
/** `selected`: the call is already a `select` target, so `permdock_has` needs no wrapping subquery. */
|
|
204
232
|
rewrite(call, selected) {
|
|
205
233
|
const { helper, args } = call;
|
|
234
|
+
this.#args = argTexts(this.#text, call.start, call.end);
|
|
206
235
|
switch (helper.form) {
|
|
207
236
|
case "ids": return this.#ids(helper.scope, args[0]);
|
|
208
|
-
case "row": return this.#row(helper.scope, args[0], args[1]);
|
|
237
|
+
case "row": return this.#row(helper.scope, args[0], args[1], 0);
|
|
209
238
|
case "membership": return this.#membership(helper.scope, args[0]);
|
|
210
239
|
case "role": return this.#role(helper.scope, args[0], args.slice(1));
|
|
211
240
|
case "scoped": return this.#scoped(args, selected);
|
|
@@ -246,6 +275,24 @@ function bodyStrings(statement) {
|
|
|
246
275
|
}
|
|
247
276
|
return found;
|
|
248
277
|
}
|
|
278
|
+
/** What `call`, written inside a function body, becomes: the rewrite that its place keeps from being applied. */
|
|
279
|
+
async function suggest(call, config, target) {
|
|
280
|
+
const sql = `select ${call}`;
|
|
281
|
+
let tree;
|
|
282
|
+
try {
|
|
283
|
+
tree = await parse(sql);
|
|
284
|
+
} catch {
|
|
285
|
+
return;
|
|
286
|
+
}
|
|
287
|
+
const target0 = list(child(child(child(list(child(tree, "stmts"))[0], "stmt"), "SelectStmt"), "targetList"))[0];
|
|
288
|
+
const node = child(child(child(target0, "ResTarget"), "val"), "FuncCall");
|
|
289
|
+
if (!isRecord(node)) return;
|
|
290
|
+
const rewriter = new Rewriter(config, target, sql);
|
|
291
|
+
const found = rewriter.call(node);
|
|
292
|
+
if (found === void 0 || found.end === -1) return;
|
|
293
|
+
const outcome = rewriter.rewrite(found, true);
|
|
294
|
+
return "to" in outcome ? outcome.to : void 0;
|
|
295
|
+
}
|
|
249
296
|
/** Rewrites the configured helper calls in one file's policies; everything else is reported. */
|
|
250
297
|
async function migrateSql(file, text, config, target) {
|
|
251
298
|
const rewrites = [];
|
|
@@ -332,13 +379,19 @@ async function migrateSql(file, text, config, target) {
|
|
|
332
379
|
if (kind !== void 0 && BODY_STATEMENTS.has(kind)) {
|
|
333
380
|
for (const body of bodyStrings(child(statement, kind))) {
|
|
334
381
|
const bodyStart = text.indexOf(body, statementStart);
|
|
335
|
-
for (const match of body.matchAll(called))
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
382
|
+
for (const match of body.matchAll(called)) {
|
|
383
|
+
const matchAt = match.index ?? 0;
|
|
384
|
+
const end = callEnd(body, matchAt);
|
|
385
|
+
const suggestion = end === -1 ? void 0 : await suggest(body.slice(matchAt, end), config, target);
|
|
386
|
+
skipped.push({
|
|
387
|
+
file,
|
|
388
|
+
line: lineOf(text, (bodyStart === -1 ? statementStart : bodyStart) + matchAt),
|
|
389
|
+
call: match[1] ?? "",
|
|
390
|
+
reason: "function-body",
|
|
391
|
+
detail: "the call is inside a function body, which runs with its own privileges; rewrite it by hand",
|
|
392
|
+
...suggestion === void 0 ? {} : { suggestion }
|
|
393
|
+
});
|
|
394
|
+
}
|
|
342
395
|
}
|
|
343
396
|
continue;
|
|
344
397
|
}
|
|
@@ -359,7 +412,7 @@ function describeRetire(plan) {
|
|
|
359
412
|
});
|
|
360
413
|
}
|
|
361
414
|
function describe(report, write) {
|
|
362
|
-
const lines = [...report.rewrites.map((item) => `${item.file}:${String(item.line)} ${item.from} -> ${item.to}`), ...report.skipped.map((item) => `skipped ${item.file}:${String(item.line)} ${item.call}: ${item.detail}`)];
|
|
415
|
+
const lines = [...report.rewrites.map((item) => `${item.file}:${String(item.line)} ${item.from} -> ${item.to}`), ...report.skipped.map((item) => `skipped ${item.file}:${String(item.line)} ${item.call}: ${item.detail}${item.suggestion === void 0 ? "" : `; use ${item.suggestion}`}`)];
|
|
363
416
|
const files = new Set(report.rewrites.map((item) => item.file)).size;
|
|
364
417
|
const unknown = report.skipped.filter((item) => item.reason === "unknown-key").length;
|
|
365
418
|
lines.push(`rls migrate: ${write ? "rewrote" : "would rewrite"} ${String(report.rewrites.length)} call(s) in ${String(files)} file(s), skipped ${String(report.skipped.length)}${unknown === 0 ? "" : `, ${String(unknown)} with an unknown key`}${write ? "" : "; drop --dry-run to apply them"}`);
|
package/dist/nest/index.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { T as Policy,
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { 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 { a as PermDock } from "../permdock-Dco6dyCK.js";
|
|
4
4
|
import { n as RevocationFeed } from "../revocations-R07lFBnX.js";
|
|
5
|
-
import { D as ConnectionOptions, T as Connection, f as InvalidSignatureError, i as OpenApiHooks, o as ProtectOptions, v as discoverViaSignatureAgent, x as webBotAuthVerifier } from "../server-types-
|
|
6
|
-
import { t as ServerAdapterOptions } from "../bind
|
|
5
|
+
import { D as ConnectionOptions, T as Connection, f as InvalidSignatureError, i as OpenApiHooks, o as ProtectOptions, v as discoverViaSignatureAgent, x as webBotAuthVerifier } from "../server-types-C4gZUEZy.js";
|
|
6
|
+
import { t as ServerAdapterOptions } from "../bind-JDuvxjuW.js";
|
|
7
7
|
import { r as sendResponse, t as NodeRequest } from "../http-B_LphE5Y.js";
|
|
8
8
|
import { CanActivate, DynamicModule, ExceptionFilter, ExecutionContext, Type } from "@nestjs/common";
|
|
9
9
|
//#region src/nest/http.d.ts
|
package/dist/nest/index.js
CHANGED
|
@@ -2,9 +2,9 @@ import { t as compact } from "../compact-CAf557ZB.js";
|
|
|
2
2
|
import { n as PermDockValidationError } from "../validation-error-ZfUHbKvf.js";
|
|
3
3
|
import { n as PermDockDeniedError, r as PermDockRevokedError, t as PermDockApprovalRequiredError } from "../errors-BKy0EfhN.js";
|
|
4
4
|
import { c as writeReply, r as hasCredentials } from "../http-BBoKefeS.js";
|
|
5
|
-
import {
|
|
6
|
-
import { t as problemFromError } from "../map-error-
|
|
7
|
-
import { a as socketConnection, r as bindKernel } from "../bind-
|
|
5
|
+
import { l as InvalidSignatureError, p as webBotAuthVerifier, u as discoverViaSignatureAgent } from "../evaluations-DReoiVBw.js";
|
|
6
|
+
import { t as problemFromError } from "../map-error-BQGyDm_M.js";
|
|
7
|
+
import { a as socketConnection, r as bindKernel } from "../bind-D1nO6fiC.js";
|
|
8
8
|
import { a as onRevoked, n as closeReason, t as POLICY_VIOLATION } from "../stream-CvdUS9V1.js";
|
|
9
9
|
import { n as sendResponse, r as toRequest$1, t as isServerResponse } from "../http-ujKm0JXE.js";
|
|
10
10
|
import { Catch, Controller, Get, Inject, Injectable, Module, Post, Req, Res, createParamDecorator } from "@nestjs/common";
|
package/dist/next/index.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { m as ApprovalStore } from "../types-
|
|
5
|
-
import { t as InstanceOptions } from "../instance-options-
|
|
6
|
-
import { n as PermDockWrap } from "../wrap-
|
|
7
|
-
import { o as OtelWrap } from "../types-
|
|
8
|
-
import { n as DescribeMessages } from "../describe-
|
|
9
|
-
import { a as snapshotHeaders, i as cacheLifeFor, n as SnapshotHeaders, o as snapshotTag, r as SnapshotHeadersOptions, t as CacheLifeForOptions } from "../snapshot-cache-
|
|
1
|
+
import { Bn as DenialReason, Gt as Snapshot, Ln as Decision, T as Policy, j as PolicyVocabulary, lr as Subject, sr as Principal } from "../policy-types-B-F-qAZk.js";
|
|
2
|
+
import { u as Permission } from "../permission-types-DhNEmoRG.js";
|
|
3
|
+
import { a as PermDock } from "../permdock-Dco6dyCK.js";
|
|
4
|
+
import { m as ApprovalStore } from "../types-DC44-hqb.js";
|
|
5
|
+
import { t as InstanceOptions } from "../instance-options-CU0YQCLH.js";
|
|
6
|
+
import { n as PermDockWrap } from "../wrap-B6R0cMRL.js";
|
|
7
|
+
import { o as OtelWrap } from "../types-CIeZcG8v.js";
|
|
8
|
+
import { n as DescribeMessages } from "../describe-O0SwYIK8.js";
|
|
9
|
+
import { a as snapshotHeaders, i as cacheLifeFor, n as SnapshotHeaders, o as snapshotTag, r as SnapshotHeadersOptions, t as CacheLifeForOptions } from "../snapshot-cache-Pahd3IYJ.js";
|
|
10
10
|
import { ReactElement, ReactNode } from "react";
|
|
11
11
|
//#region src/next/types.d.ts
|
|
12
12
|
type NextSubjectInput = unknown;
|
package/dist/next/index.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { t as compact } from "../compact-CAf557ZB.js";
|
|
2
|
-
import {
|
|
3
|
-
import { n as wrapPermDock } from "../wrap-
|
|
4
|
-
import { n as snapshotHeaders, r as snapshotTag, t as cacheLifeFor } from "../snapshot-cache-
|
|
5
|
-
import { n as resolveOrNull, t as buildInstance } from "../build-instance-
|
|
6
|
-
import {
|
|
2
|
+
import { l as withApp } from "../permdock-BfWEeMqk.js";
|
|
3
|
+
import { n as wrapPermDock } from "../wrap-CiSc_KCq.js";
|
|
4
|
+
import { n as snapshotHeaders, r as snapshotTag, t as cacheLifeFor } from "../snapshot-cache-DT2Kx1F8.js";
|
|
5
|
+
import { n as resolveOrNull, t as buildInstance } from "../build-instance-DxE7czo9.js";
|
|
6
|
+
import { _ as NO_GRANT, o as evaluationsHandler } from "../evaluations-DReoiVBw.js";
|
|
7
7
|
import { cache } from "react";
|
|
8
8
|
import { jsx } from "react/jsx-runtime";
|
|
9
9
|
import { forbidden, unauthorized, unstable_rethrow } from "#next/navigation";
|
package/dist/next/plugin.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as PermDockPluginOptions } from "../types-
|
|
1
|
+
import { a as PermDockPluginOptions } from "../types-BWZybqs9.js";
|
|
2
2
|
//#region src/cli/plugin.d.ts
|
|
3
3
|
/** Any object: Next's `NextConfig` is an interface, so no index signature. */
|
|
4
4
|
type NextConfigLike = object;
|
package/dist/next/plugin.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { a as describeError } from "../errors-
|
|
2
|
-
import { n as createCollectScheduler, r as report, t as collectOnce } from "../watch-
|
|
1
|
+
import { a as describeError } from "../errors-DpP_U6Bf.js";
|
|
2
|
+
import { n as createCollectScheduler, r as report, t as collectOnce } from "../watch-C-4VmFlL.js";
|
|
3
3
|
//#region src/cli/plugin.ts
|
|
4
4
|
const PHASE_BUILD = "phase-production-build";
|
|
5
5
|
const PHASE_DEV = "phase-development-server";
|
package/dist/node/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { T as Policy, j as PolicyVocabulary,
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { f as InvalidSignatureError, i as OpenApiHooks, o as ProtectOptions, r as Guard, s as ScopeGuard, v as discoverViaSignatureAgent, x as webBotAuthVerifier } from "../server-types-
|
|
5
|
-
import { t as ServerAdapterOptions } from "../bind
|
|
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 { a as PermDock } from "../permdock-Dco6dyCK.js";
|
|
4
|
+
import { f as InvalidSignatureError, i as OpenApiHooks, o as ProtectOptions, r as Guard, s as ScopeGuard, v as discoverViaSignatureAgent, x as webBotAuthVerifier } from "../server-types-C4gZUEZy.js";
|
|
5
|
+
import { t as ServerAdapterOptions } from "../bind-JDuvxjuW.js";
|
|
6
6
|
import { i as toRequest, n as isServerResponse, r as sendResponse, t as NodeRequest } from "../http-B_LphE5Y.js";
|
|
7
7
|
import { IncomingMessage, ServerResponse } from "node:http";
|
|
8
8
|
//#region src/node/create.d.ts
|
package/dist/node/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { r as bindKernel } from "../bind-
|
|
1
|
+
import { l as InvalidSignatureError, p as webBotAuthVerifier, u as discoverViaSignatureAgent } from "../evaluations-DReoiVBw.js";
|
|
2
|
+
import { r as bindKernel } from "../bind-D1nO6fiC.js";
|
|
3
3
|
import { n as sendResponse, r as toRequest, t as isServerResponse } from "../http-ujKm0JXE.js";
|
|
4
4
|
//#region src/node/create.ts
|
|
5
5
|
const nodeRequest = (req) => req;
|
package/dist/openai/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { T as Policy, j as PolicyVocabulary,
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { u as ApprovalRequest } from "../types-
|
|
5
|
-
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 { a as PermDock } from "../permdock-Dco6dyCK.js";
|
|
4
|
+
import { u as ApprovalRequest } from "../types-DC44-hqb.js";
|
|
5
|
+
import { o as AgentAdapterOptions, t as AgentPermDock } from "../create-UTnUVETj.js";
|
|
6
6
|
//#region src/openai/create.d.ts
|
|
7
7
|
/** The app context passed to `run(agent, input, { context })`. */
|
|
8
8
|
type OpenAiContext = {
|
package/dist/openai/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { t as compact } from "../compact-CAf557ZB.js";
|
|
2
|
-
import {
|
|
3
|
-
import { t as approvalTokenOf } from "../kernel-
|
|
4
|
-
import { t as agentRuntime } from "../create-
|
|
2
|
+
import { l as withApp } from "../permdock-BfWEeMqk.js";
|
|
3
|
+
import { t as approvalTokenOf } from "../kernel-DVExUwkp.js";
|
|
4
|
+
import { t as agentRuntime } from "../create-Cb86Z8Im.js";
|
|
5
5
|
//#region src/openai/create.ts
|
|
6
6
|
function appContext(runContext) {
|
|
7
7
|
const context = runContext?.context;
|
package/dist/openapi/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { T as Policy,
|
|
2
|
-
import {
|
|
3
|
-
import { a as ProblemDetails } from "../errors-
|
|
1
|
+
import { T as Policy, mr as Condition, sr as Principal } from "../policy-types-B-F-qAZk.js";
|
|
2
|
+
import { f as PermissionTree, u as Permission } from "../permission-types-DhNEmoRG.js";
|
|
3
|
+
import { a as ProblemDetails } from "../errors-B_Qg9D3e.js";
|
|
4
4
|
import { StandardJSONSchemaV1, StandardSchemaV1 } from "@standard-schema/spec";
|
|
5
5
|
//#region src/openapi/types.d.ts
|
|
6
6
|
type OpenApiTarget = "3.1" | "3.2" | "3.3";
|
|
@@ -158,6 +158,14 @@ type SecurityForOptions = {
|
|
|
158
158
|
readonly scheme?: string;
|
|
159
159
|
/** Any one of the permissions suffices: one requirement per scope instead of one with every scope. */
|
|
160
160
|
readonly anyOf?: boolean;
|
|
161
|
+
readonly security?: true;
|
|
162
|
+
};
|
|
163
|
+
/** `security: false` emits only `x-permdock-permissions`, for an API whose `security` is set elsewhere, such as OIDC-only bearer auth. */
|
|
164
|
+
type SecurityExtensionOptions = Omit<SecurityForOptions, "security"> & {
|
|
165
|
+
readonly security: false;
|
|
166
|
+
};
|
|
167
|
+
type SecurityExtensionFor = {
|
|
168
|
+
readonly "x-permdock-permissions": readonly string[];
|
|
161
169
|
};
|
|
162
170
|
type SecurityFor = {
|
|
163
171
|
readonly security: readonly OpenApiSecurityRequirement[];
|
|
@@ -171,6 +179,8 @@ export declare function permissionsExtension(permissions: Permission | readonly
|
|
|
171
179
|
* Unlike `permdock openapi emit`, it never drops `security` for a public
|
|
172
180
|
* permission: that needs the policy.
|
|
173
181
|
*/
|
|
182
|
+
export declare function securityFor(permission: Permission | readonly Permission[], options: SecurityExtensionOptions): SecurityExtensionFor;
|
|
174
183
|
export declare function securityFor(permission: Permission | readonly Permission[], options?: SecurityForOptions): SecurityFor;
|
|
184
|
+
export declare function securityFor(permission: Permission | readonly Permission[], options?: SecurityForOptions | SecurityExtensionOptions): SecurityFor | SecurityExtensionFor;
|
|
175
185
|
//#endregion
|
|
176
|
-
export type { OpenApiDescribe, OpenApiDocsHints, OpenApiFactory, OpenApiOverlayOptions, OpenApiPermDock, OpenApiPermDockOptions, OpenApiSchemeOptions, OpenApiSecurityRequirement, OpenApiTarget, OperationEntry, OperationPermissions, OverlayOperation, OverlayVersion, SchemeType, SecurityFor, SecurityForOptions, SecurityProfileName };
|
|
186
|
+
export type { OpenApiDescribe, OpenApiDocsHints, OpenApiFactory, OpenApiOverlayOptions, OpenApiPermDock, OpenApiPermDockOptions, OpenApiSchemeOptions, OpenApiSecurityRequirement, OpenApiTarget, OperationEntry, OperationPermissions, OverlayOperation, OverlayVersion, SchemeType, SecurityExtensionFor, SecurityExtensionOptions, SecurityFor, SecurityForOptions, SecurityProfileName };
|
package/dist/openapi/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { n as GNAP_RESERVED, r as PROFILE_NAMES, t as DRAFT_PINS } from "../pins-8ILTftC9.js";
|
|
2
|
-
import { a as operationPermissionsFromOpenApi, c as openapiVersion, i as operationPermissions, l as securitySchemesOf, n as securityFor, o as createPermDock, r as problemDetails, s as catalogOf, t as permissionsExtension } from "../openapi-
|
|
2
|
+
import { a as operationPermissionsFromOpenApi, c as openapiVersion, i as operationPermissions, l as securitySchemesOf, n as securityFor, o as createPermDock, r as problemDetails, s as catalogOf, t as permissionsExtension } from "../openapi-Ddb4628T.js";
|
|
3
3
|
export { DRAFT_PINS, GNAP_RESERVED, PROFILE_NAMES, catalogOf, createPermDock, openapiVersion, operationPermissions, operationPermissionsFromOpenApi, permissionsExtension, problemDetails, securityFor, securitySchemesOf };
|