permdock 0.4.0 → 0.5.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 +37 -35
- package/dist/{schema-Bol6gqXA.js → 2020-C9VN-x8c.js} +5 -130
- package/dist/a2a/index.d.ts +6 -6
- package/dist/a2a/index.js +14 -17
- package/dist/{adapter-context-mlWsVGGg.js → adapter-context-CRhqyzCk.js} +1 -1
- package/dist/adoption-scan-B4R5fnMU.js +107 -0
- package/dist/agent/index.d.ts +3 -0
- package/dist/agent/index.js +1 -0
- package/dist/ai-sdk/index.d.ts +18 -35
- package/dist/ai-sdk/index.js +37 -23
- package/dist/{app-data-CV8pqqMi.js → app-data-MuyzVqX8.js} +2 -1
- package/dist/approval-header-CJACtHkv.js +23 -0
- package/dist/approval-prompt-Dg5LeAcT.js +62 -0
- package/dist/approval-prompt-Djo_PyZc.d.ts +57 -0
- package/dist/approvals/index.d.ts +5 -3
- package/dist/approvals/index.js +8 -5
- package/dist/approvals-DJ6Yd5z1.js +995 -0
- package/dist/arazzo-B6lebmiQ.js +36 -0
- package/dist/{arazzo-C4BcskbX.js → arazzo-BWhNF-k0.js} +20 -14
- package/dist/args-IIolxxKA.js +197 -0
- package/dist/astro/index.d.ts +43 -0
- package/dist/astro/index.js +27 -0
- package/dist/audience-Dg8XsRaO.js +55 -0
- package/dist/auth-DRLEizbL.js +178 -0
- package/dist/authzen/index.d.ts +26 -6
- package/dist/authzen/index.js +94 -79
- package/dist/automation-BMZPIVUM.d.ts +114 -0
- package/dist/automation-DVjOckjV.js +157 -0
- package/dist/better-auth/index.d.ts +8 -6
- package/dist/better-auth/index.js +9 -8
- package/dist/better-supabase/index.d.ts +357 -30
- package/dist/better-supabase/index.js +936 -194
- package/dist/{bind-BzqG8SMb.d.ts → bind--9EFVYWF.d.ts} +12 -10
- package/dist/{bind-kk-uyCwH.js → bind-CZzhx-Vj.js} +14 -10
- package/dist/body-CH5of8Ne.js +10 -0
- package/dist/body-text-QcXok_SI.js +52 -0
- package/dist/{build-instance-DIIV9DbC.js → build-instance-BMnAudHn.js} +4 -3
- package/dist/{canonical-json-CFKyFOke.js → canonical-json-BC8_nMTw.js} +5 -3
- package/dist/{capability-CksyCWDH.d.ts → capability-BSslw1QV.d.ts} +44 -25
- package/dist/{capability-txATtKV4.js → capability-N1K9IpqS.js} +68 -42
- package/dist/casbin-Cr7RLtA3.js +30 -0
- package/dist/casbin-Dyu2gnUD.js +234 -0
- package/dist/casl-64gpT-8x.js +24 -0
- package/dist/casl-DjEDhTCP.js +299 -0
- package/dist/catalog/index.d.ts +74 -2
- package/dist/catalog/index.js +51 -2
- package/dist/{catalog-tZUyOfOv.js → catalog-BECMPrwc.js} +51 -6
- package/dist/catalog-DjhMYYCq.js +1 -0
- package/dist/catalog-R_A__RsH.js +52 -0
- package/dist/{catalog-doc-DWtg0gGR.js → catalog-doc-C9wjsfNY.js} +45 -23
- package/dist/catalog-fingerprint-CCP0-yQS.js +153 -0
- package/dist/chat/index.d.ts +2 -0
- package/dist/chat/index.js +224 -0
- package/dist/chat-sdk/index.d.ts +87 -0
- package/dist/chat-sdk/index.js +197 -0
- package/dist/claims-map-7oQ3ue4X.js +13 -0
- package/dist/claims-map-Ca-QX8C6.d.ts +32 -0
- package/dist/claude-agent/index.d.ts +7 -14
- package/dist/claude-agent/index.js +24 -27
- package/dist/clerk/index.d.ts +9 -8
- package/dist/clerk/index.js +9 -14
- package/dist/cli/bin.js +36 -17
- package/dist/cli/index.d.ts +19 -5
- package/dist/cli/index.js +164 -4
- package/dist/cloud/index.d.ts +102 -63
- package/dist/cloud/index.js +239 -340
- package/dist/cloud-CIoHNevm.js +87 -0
- package/dist/codemod-Bmj9dWMH.js +37 -0
- package/dist/codemod-Cxvvc70T.js +2084 -0
- package/dist/{collect-2SrB7lfk.js → collect-CrZJJnEF.js} +75 -11
- package/dist/collect-DloHbDVa.js +55 -0
- package/dist/collect-FlXJlhus.js +1 -0
- package/dist/command-L8EstFNm.js +6 -0
- package/dist/compile/index.d.ts +1 -1
- package/dist/compile/index.js +1 -2
- package/dist/{compile-CcEu2ZQ1.js → compile-CMqMx_IN.js} +11 -8
- package/dist/{compile-CtTP7eur.d.ts → compile-Ckm2HqBZ.d.ts} +5 -3
- package/dist/completion-BqhRBJD8.js +143 -0
- package/dist/config-B46rm9sc.js +26 -0
- package/dist/{config-BIjREpyE.js → config-bs_kZeYq.js} +12 -7
- package/dist/{config-report--Xb9APJS.js → config-report-DUgj62Ai.js} +15 -5
- package/dist/{connection-DUsczpB5.js → connection-DjhIJSs2.js} +6 -5
- package/dist/{context-DieZVJXu.js → context-bbFHR-0D.js} +2 -2
- package/dist/convex/index.d.ts +11 -10
- package/dist/convex/index.js +6 -4
- package/dist/create-0VZ7Pdiu.d.ts +107 -0
- package/dist/create-BDS7wc3y.d.ts +138 -0
- package/dist/create-BFfm17UA.d.ts +110 -0
- package/dist/create-BWRSXgOF.js +403 -0
- package/dist/create-C3b4B5eF.js +130 -0
- package/dist/{create-BBO24vj6.js → create-DnrmLnLW.js} +31 -32
- package/dist/{credential-kue0qpbm.js → credential-DM2um3ha.js} +152 -31
- package/dist/credentials-DPyHmYz5.js +74 -0
- package/dist/delegation-DaXVdDhM.js +286 -0
- package/dist/delivery/index.d.ts +5 -0
- package/dist/delivery/index.js +5 -0
- package/dist/delivery-DCAgNyCn.js +499 -0
- package/dist/delivery-event-xX4obB8F.js +40 -0
- package/dist/{denied-text-DfRk15uw.d.ts → denied-text-D8jDHgsl.d.ts} +5 -5
- package/dist/{describe-C3ldA9os.d.ts → describe-BZUsixiL.d.ts} +2 -2
- package/dist/{describe-Cgkp7eP0.js → describe-BybMRY7A.js} +6 -2
- package/dist/device-BARQ8eYG.js +193 -0
- package/dist/diff-CxZo9pTq.js +37 -0
- package/dist/{diff-rpqoe7Ag.js → diff-DCePiN6M.js} +60 -54
- package/dist/doctor-CxiwSfqH.js +44 -0
- package/dist/{doctor-owlv6ddh.js → doctor-DFjUxf2f.js} +245 -50
- package/dist/drizzle/index.d.ts +5 -3
- package/dist/drizzle/index.js +2 -2
- package/dist/elysia/index.d.ts +16 -13
- package/dist/elysia/index.js +13 -12
- package/dist/env-DJZrPjRi.js +8 -0
- package/dist/errors-BDUwg2qC.js +27 -0
- package/dist/{errors-drnfxYtm.js → errors-BKy0EfhN.js} +5 -9
- package/dist/errors-BWXBMaKK.d.ts +11 -0
- package/dist/{errors-OD_4c__H.d.ts → errors-C2PXIv4c.d.ts} +2 -2
- package/dist/errors-CWTY6uih.js +143 -0
- package/dist/evaluate-_R8QkWaf.js +1732 -0
- package/dist/evaluations-16UqqQ6W.d.ts +32 -0
- package/dist/{evaluations-C9YJsv3H.js → evaluations-DZ2CbV5k.js} +145 -34
- package/dist/eve/index.d.ts +12 -16
- package/dist/eve/index.js +22 -28
- package/dist/event-time-CsegxXxB.js +23 -0
- package/dist/expiry-D4_YKRKD.js +52 -0
- package/dist/express/index.d.ts +13 -10
- package/dist/express/index.js +12 -11
- package/dist/fastify/index.d.ts +25 -22
- package/dist/fastify/index.js +13 -12
- package/dist/fetch-adapter-g0ypLkID.js +120 -0
- package/dist/fetch-adapter-qKJBuRqy.d.ts +31 -0
- package/dist/fields-D9tPVUUS.js +203 -0
- package/dist/files-C5ZI27eV.js +124 -0
- package/dist/{fixtures-h2eG2OZV.js → fixtures-B7XrLeY7.js} +8 -7
- package/dist/flags-C3DktBDY.js +86 -0
- package/dist/{from-snapshot-7REQZe0H.js → from-snapshot-D2lZt4Dd.js} +55 -52
- package/dist/{grantee-CXY-0C87.js → grantee-Cn1HyUsI.js} +3 -3
- package/dist/{grantee-conditions-MQs5NIuX.js → grantee-conditions-CcXf8hMM.js} +4 -3
- package/dist/{grantee-match-fxYp9Nmt.js → grantee-match-DHArqY82.js} +5 -4
- package/dist/h3/index.d.ts +37 -0
- package/dist/h3/index.js +35 -0
- package/dist/headers-BIjfMaoC.js +8 -0
- package/dist/headers-CIbDTUTK.d.ts +7 -0
- package/dist/{helpers-C9YmyBIa.js → helpers-DTcZOzhF.js} +45 -38
- package/dist/hono/index.d.ts +12 -9
- package/dist/hono/index.js +13 -12
- package/dist/hosted-BZIAYvon.js +315 -0
- package/dist/hosted-DBDX0M-P.d.ts +78 -0
- package/dist/{http-DPuDaChb.d.ts → http-B_LphE5Y.d.ts} +1 -2
- package/dist/http-DXJ37RDA.js +46 -0
- package/dist/{http-BEbdMZ05.js → http-ujKm0JXE.js} +1 -2
- package/dist/{import-UHk1N7vH.js → import-CNV7I2Dw.js} +25 -20
- package/dist/{import-BFIlhetD.js → import-DMmOG27O.js} +190 -53
- package/dist/index-BcHcPyIo.d.ts +110 -0
- package/dist/index-CaxrMD1A.d.ts +1 -0
- package/dist/index-Chrs5fQ-.d.ts +210 -0
- package/dist/index-CxGUswIC.d.ts +431 -0
- package/dist/index-D8EovfsP.d.ts +91 -0
- package/dist/{index-UdVQgq48.d.ts → index-DOVf7RJv.d.ts} +431 -81
- package/dist/{index-BwMe94Xq.d.ts → index-SGdIQyzc.d.ts} +34 -16
- package/dist/index.d.ts +19 -15
- package/dist/index.js +31 -21
- package/dist/init-DeMYsnYJ.js +96 -0
- package/dist/init-GG6Jh8HD.js +95 -0
- package/dist/{instance-options-plkrsAog.d.ts → instance-options-Omfd793B.d.ts} +2 -2
- package/dist/instance-snapshot-Cxq4ygFc.js +600 -0
- package/dist/instant-BluqDvyS.js +19 -0
- package/dist/internals-Dk8A8fX3.js +17 -0
- package/dist/{json-schema-DBkdUuCO.js → json-schema-B-vAwlde.js} +45 -6
- package/dist/json-schema-CN_iLFH2.d.ts +40 -0
- package/dist/jwt/index.d.ts +18 -11
- package/dist/jwt/index.js +156 -135
- package/dist/{kernel-CB3LrIJM.js → kernel-5JatXyND.js} +52 -24
- package/dist/kysely/index.d.ts +5 -3
- package/dist/kysely/index.js +2 -2
- package/dist/load-BxEtwlBS.js +1 -0
- package/dist/{load-C3_oTHyO.js → load-DFS_ry0W.js} +22 -6
- package/dist/{load-jose-BL6LH4bL.js → load-jose-DZ4dnjri.js} +1 -4
- package/dist/login-Dfe5RlYk.js +68 -0
- package/dist/login-imhuwvn3.js +254 -0
- package/dist/manifest-C8IzW3Do.js +42 -0
- package/dist/manifest-CtKR3GXL.js +370 -0
- package/dist/manifest-json-CAGzls-C.js +9 -0
- package/dist/{manifest-uDS9y5de.d.ts → manifest-mx5ghSFM.d.ts} +9 -2
- package/dist/manifest-schema-C0kK_8V0.js +399 -0
- package/dist/{map-claims-AVlBaJoa.js → map-claims-D3oRmTk0.js} +13 -10
- package/dist/{map-error-BE27PYkE.js → map-error-TCAdw-eW.js} +3 -3
- package/dist/{markers-CiwAOZtO.js → markers-C6joDI3o.js} +2 -1
- package/dist/mcp/index.d.ts +22 -12
- package/dist/mcp/index.js +57 -39
- package/dist/{migrate-BwlB5-Wk.js → migrate-BShP7Vf4.js} +53 -14
- package/dist/nest/index.d.ts +12 -9
- package/dist/nest/index.js +15 -14
- package/dist/next/index.d.ts +18 -21
- package/dist/next/index.js +13 -11
- package/dist/next/plugin.d.ts +1 -1
- package/dist/next/plugin.js +2 -2
- package/dist/node/index.d.ts +10 -10
- package/dist/node/index.js +7 -9
- package/dist/{ocsf-uYFXGVw2.js → ocsf-BFp-PZZA.js} +22 -11
- package/dist/openai/index.d.ts +9 -16
- package/dist/openai/index.js +17 -24
- package/dist/openapi/index.d.ts +3 -3
- package/dist/openapi/index.js +1 -1
- package/dist/{openapi-DBzHQbov.js → openapi-B7HZ0f-r.js} +8 -8
- package/dist/{openapi-BJdBmYDG.js → openapi-DTaEmTSW.js} +10 -9
- package/dist/openapi-ahr8rHu3.js +138 -0
- package/dist/operation-findings-DgATDpvh.js +36 -0
- package/dist/operations-CxybZErY.d.ts +59 -0
- package/dist/orpc/index.d.ts +13 -10
- package/dist/orpc/index.js +20 -15
- package/dist/otel/index.d.ts +3 -2
- package/dist/otel/index.js +30 -7
- package/dist/output-Dyw8fyPF.js +88 -0
- package/dist/output-files-B3IZJksC.js +1 -0
- package/dist/{output-files-CgIsvdSa.js → output-files-DhRBBE4n.js} +24 -26
- package/dist/{permission-keys-B26jeyUv.js → ownership-BatFgAA4.js} +1698 -869
- package/dist/{package-root-DtNnpmUd.js → package-root-Dk_ETdkp.js} +1 -1
- package/dist/{parse-CVFQHk6c.js → parse-Cxq0WxrA.js} +2 -2
- package/dist/{parse-local-manifest-C-q02Pal.js → parse-local-manifest-CVSs6J9I.js} +1 -1
- package/dist/{parse-local-manifest-DvYUR0QL.d.ts → parse-local-manifest-DgqtruPn.d.ts} +1 -1
- package/dist/parse-request-D_tUXG6M.js +26 -0
- package/dist/paths-DXSHAMIa.js +42 -0
- package/dist/pdp/index.d.ts +7 -3
- package/dist/pdp/index.js +45 -26
- package/dist/{peer-BOr_kJE1.js → peer-C8swJ2GH.js} +23 -4
- package/dist/peer-CRvC7Hg1.js +1 -0
- package/dist/permdock-B9JxkBwC.js +868 -0
- package/dist/permdock-D7eeLJER.d.ts +502 -0
- package/dist/{permission-registry-BsblpB-z.js → permission-registry-Br4jSNVi.js} +3 -3
- package/dist/permissions-B-wCP5ZC.js +30 -0
- package/dist/{permissions-CCJ6lmxB.js → permissions-CZKiUfFM.js} +4 -3
- package/dist/{permissions-COH-KRgT.d.ts → permissions-oEWfl-kl.d.ts} +1 -2
- package/dist/policies-CO1oOymN.js +295 -0
- package/dist/{policy-ur0BBK_e.d.ts → policy-Czo4n3Hs.d.ts} +2 -2
- package/dist/{hosted-CBHgkzDl.js → policy-DLZJ5gAp.js} +17 -273
- package/dist/policy-from-catalog-DzhEc3Y9.js +450 -0
- package/dist/policy-module-CTlwMvLI.js +89 -0
- package/dist/{policy-types-sp9P1iIV.d.ts → policy-types-DzwivBgR.d.ts} +434 -631
- package/dist/postgrest-CW0IqC-U.js +566 -0
- package/dist/postgrest-NUqZT-RB.d.ts +100 -0
- package/dist/powersync-BHfuehf3.js +62 -0
- package/dist/powersync-CbzkqL_M.js +1 -0
- package/dist/{powersync-cZe4kzhL.js → powersync-bYUDLOAO.js} +23 -24
- package/dist/preset/index.d.ts +146 -0
- package/dist/preset/index.js +1 -0
- package/dist/preset-DZdU0tne.js +1768 -0
- package/dist/principal-source-pHneukrx.js +103 -0
- package/dist/prisma/index.d.ts +6 -3
- package/dist/prisma/index.js +2 -2
- package/dist/{problem-CnWraVhC.js → problem-CTviyH5L.js} +13 -23
- package/dist/{problem-details-rIIo8B2C.d.ts → problem-details-DXlt-vks.d.ts} +1 -1
- package/dist/{problem-details-DECUnXAn.js → problem-details-cn5X30gZ.js} +43 -40
- package/dist/problem-types-CJ2325SZ.js +5 -0
- package/dist/{prompt-CXYhLfsS.js → prompt-DfZLJLIn.js} +2 -2
- package/dist/{protected-B3_P7xuw.d.ts → protected-DEPHc2xV.d.ts} +16 -8
- package/dist/{protected-BN7BUdY1.js → protected-DfjY5mLA.js} +21 -4
- package/dist/{provider-Bi-0HNL3.js → provider-CC-u3bYP.js} +2 -2
- package/dist/{provider-kwHC9CZD.d.ts → provider-DMVt6yYn.d.ts} +1 -1
- package/dist/{provider-store-Ctt-81Ni.js → provider-store-B5Yrkhzr.js} +2 -2
- package/dist/pull-BgIfno6w.js +256 -0
- package/dist/pull-ByOks_Tg.js +1 -0
- package/dist/push-CmFVBOeI.js +116 -0
- package/dist/pushed-policy-BImMTTIM.d.ts +57 -0
- package/dist/pushed-policy-DobP7AHI.js +238 -0
- package/dist/react/index.d.ts +8 -8
- package/dist/react/index.js +6 -6
- package/dist/react/provider-client.d.ts +1 -1
- package/dist/react/provider-client.js +1 -2
- package/dist/react-native/index.d.ts +24 -72
- package/dist/react-native/index.js +24 -22
- package/dist/{refs-f3imMjNW.js → refs-K6eWUJ0H.js} +1 -1
- package/dist/{relation-walk-BXnlLtg2.js → relation-walk-3OyDBF0S.js} +2 -2
- package/dist/{relations-CvmSpG67.js → relations-BnCWnJGI.js} +3 -3
- package/dist/renames-CGj7YwcQ.js +175 -0
- package/dist/{replay-COpmZUfx.d.ts → replay-D7iKcLFe.d.ts} +1 -1
- package/dist/{replay-BsOyTrdV.js → replay-Du1tJjG7.js} +2 -1
- package/dist/{request-context-BVM7aWNs.js → request-context-BTRTG7OT.js} +3 -3
- package/dist/request-schema-CMreVuFM.js +148 -0
- package/dist/resend/index.d.ts +126 -0
- package/dist/resend/index.js +379 -0
- package/dist/{resource-relations-D1Un3pcz.js → resource-relations-D_jw0BFx.js} +1 -1
- package/dist/{retire-BFcxL6un.js → retire-CALjIQ7e.js} +2 -2
- package/dist/{revocations-Cy06JNx2.d.ts → revocations-R07lFBnX.d.ts} +2 -0
- package/dist/rls-BA8an5Ap.js +336 -0
- package/dist/{rls-BEktUaqg.js → rls-j6t43t7n.js} +287 -689
- package/dist/{role-builder-B4GbKM-i.js → role-builder-CXbis5-X.js} +14 -207
- package/dist/{rpc-nYC3cR_u.js → rpc-aPyNi6tA.js} +7 -7
- package/dist/run-CNsApDpd.js +1 -0
- package/dist/run-DOfMtc9V.js +723 -0
- package/dist/run-ticket-BjhTOi6u.d.ts +124 -0
- package/dist/run-ticket-sxFI6LAk.js +337 -0
- package/dist/{runtime-D_tMXnsq.js → runtime-D3VTAiCA.js} +1 -1
- package/dist/{saas-DtaA4JuW.js → saas-FO-Q8oj0.js} +16 -14
- package/dist/scan-BOI5tJ-6.js +29 -0
- package/dist/{schema-DjQBcAP9.js → schema-B4v0Qrac.js} +102 -8
- package/dist/schema-yLuBWWsh.js +130 -0
- package/dist/scim/index.d.ts +2 -2
- package/dist/scim/index.js +1 -2
- package/dist/{scim-vFR1O5oG.js → scim-ClHtpyV3.js} +208 -76
- package/dist/{scopes-tvpa34ep.js → scopes-CUPSjo9q.js} +12 -7
- package/dist/server/index.d.ts +12 -143
- package/dist/server/index.js +12 -9
- package/dist/server-DqCT4CgZ.js +453 -0
- package/dist/{server-types-DdqBwZN_.d.ts → server-types-BLd4MnBX.d.ts} +51 -68
- package/dist/{sha256-BO0swRXL.js → sha256-D9ihqmvd.js} +8 -1
- package/dist/{shared-1uhI-e-b.js → shared-CD11nBbC.js} +18 -8
- package/dist/{shared-JhMeOsDF.js → shared-DvvFzYXe.js} +8 -9
- package/dist/signals-D3NcTKUS.js +32 -0
- package/dist/sink-BEZSlMS_.js +957 -0
- package/dist/sink-Bj_lDUDq.d.ts +225 -0
- package/dist/{skills-BZdRQkxs.js → skills-B6lVdD_W.js} +13 -6
- package/dist/skills-CTYwkl44.js +51 -0
- package/dist/snapshot-CXUWfsNy.js +269 -0
- package/dist/{snapshot-cache-Cod40D-X.js → snapshot-cache-DZHQ0KF6.js} +11 -5
- package/dist/{snapshot-cache-J5T7t_vD.d.ts → snapshot-cache-DqK9eDmM.d.ts} +7 -5
- package/dist/solid/index.d.ts +11 -12
- package/dist/solid/index.js +7 -7
- package/dist/solid-start/index.d.ts +52 -0
- package/dist/solid-start/index.js +49 -0
- package/dist/{sources-Dljy06zL.d.ts → sources-BV9j0DeZ.d.ts} +7 -13
- package/dist/{sources-B1-b-R0t.js → sources-vs5dGOsS.js} +125 -119
- package/dist/{sql-t8teWOfo.js → sql-B5T1IL83.js} +13 -1
- package/dist/src-DLfUWFAI.js +1851 -0
- package/dist/ssf/index.d.ts +4 -4
- package/dist/ssf/index.js +384 -47
- package/dist/standard-webhooks-6lg8v_is.d.ts +88 -0
- package/dist/standard-webhooks-DgFFD-Ga.js +228 -0
- package/dist/storage-C2bWdvJH.js +132 -0
- package/dist/{store-ILkLUj_o.js → store-4u_hxjWa.js} +40 -53
- package/dist/{store-options-CbUHDoSe.js → store-options-BqEakYRa.js} +26 -21
- package/dist/{stores-BHXdSbw9.js → stores-BbsD4fAR.js} +2 -2
- package/dist/{stores-Cxz_80g-.d.ts → stores-ClZUgeoP.d.ts} +7 -8
- package/dist/{stream-Dwsg6WwE.d.ts → stream-7-xmnf3U.d.ts} +2 -2
- package/dist/{stream-BMui98KK.js → stream-CvdUS9V1.js} +9 -2
- package/dist/style-DiKWnAvn.js +1 -0
- package/dist/{style-CTm1AXDT.js → style-Uao76wO7.js} +3 -2
- package/dist/subject-BGoM5o8B.js +17 -0
- package/dist/supabase/index.d.ts +23 -106
- package/dist/supabase/index.js +5 -4
- package/dist/supabase/middleware.d.ts +7 -6
- package/dist/supabase/middleware.js +13 -11
- package/dist/supabase-9pqI57pW.js +92 -0
- package/dist/{supabase-C1TWlnYt.js → supabase-Dxlp8A94.js} +98 -205
- package/dist/supabase-hook-CXcGpHqq.js +1 -0
- package/dist/{supabase-hook-Cva3ikXz.js → supabase-hook-DdDQhMlw.js} +951 -60
- package/dist/support-session-C6xJQYut.js +158 -0
- package/dist/svelte/Protected.svelte +4 -4
- package/dist/svelte/index.d.ts +7 -7
- package/dist/svelte/index.js +10 -10
- package/dist/svelte/runtime.d.ts +3 -3
- package/dist/svelte/runtime.js +3 -3
- package/dist/svelte/source.d.ts +7 -7
- package/dist/svelte/source.js +4 -4
- package/dist/sveltekit/index.d.ts +51 -0
- package/dist/sveltekit/index.js +27 -0
- package/dist/tanstack-start/index.d.ts +51 -0
- package/dist/tanstack-start/index.js +40 -0
- package/dist/target-Bw37TFNA.js +51 -0
- package/dist/{tenancy-DshjqY0n.js → tenancy-DN2QAx9z.js} +5 -5
- package/dist/terminal/index.d.ts +11 -9
- package/dist/terminal/index.js +23 -287
- package/dist/testing/index.d.ts +311 -38
- package/dist/testing/index.js +3475 -201
- package/dist/testing/saas/index.d.ts +9 -8
- package/dist/testing/saas/index.js +2 -2
- package/dist/testing/saas/permissions.d.ts +1 -1
- package/dist/testing/saas/permissions.js +1 -2
- package/dist/text-BMFRfBqc.js +8 -0
- package/dist/{text-diff-BdkkYSbi.js → text-diff-BQcUapOb.js} +1 -1
- package/dist/thenable-yD7SabqG.js +31 -0
- package/dist/time-DkWjdL98.js +71 -0
- package/dist/{token-Bx9qy30p.js → token-BLZcjQgt.js} +15 -6
- package/dist/{tool-refusal-CQ7OEia9.js → tool-refusal-CMLN5xhn.js} +2 -2
- package/dist/trpc/index.d.ts +12 -9
- package/dist/trpc/index.js +16 -14
- package/dist/{types-7rJVLWe5.d.ts → types-5Ut_pbKy.d.ts} +61 -11
- package/dist/{store-9KO4BlkB.d.ts → types-BNORmDM8.d.ts} +100 -75
- package/dist/types-BjV-fqcA.d.ts +57 -0
- package/dist/{types-CUcFZfpU.d.ts → types-BqAKcRNW.d.ts} +2 -1
- package/dist/types-C8-KNsFf.d.ts +107 -0
- package/dist/{types-Br9IXUBG.d.ts → types-CCpc2Dcv.d.ts} +77 -17
- package/dist/{types-DpWfQdSh.d.ts → types-CZTnPFzM.d.ts} +46 -11
- package/dist/{types-CqrjB9o6.d.ts → types-CdlxsYQh.d.ts} +23 -11
- package/dist/{types-CIlTojhq.d.ts → types-ClZaWzfb.d.ts} +9 -6
- package/dist/types-DX0LaKTb.d.ts +157 -0
- package/dist/types-DiQjupG2.d.ts +332 -0
- package/dist/types-DqzsnlSA.js +67 -0
- package/dist/types-_sHy8BQf.d.ts +65 -0
- package/dist/{types-ByUo56un.d.ts → types-fbZ7JEXr.d.ts} +23 -22
- package/dist/{types-DHrmBJLH.d.ts → types-tIgIeIKJ.d.ts} +7 -7
- package/dist/unplugin/index.d.ts +1 -1
- package/dist/unplugin/index.js +2 -2
- package/dist/usage-CHOtwL19.js +1 -0
- package/dist/usage-DHtE8j4E.js +32 -0
- package/dist/{usage-CG9nOYZw.js → usage-T5mXq98v.js} +54 -11
- package/dist/{validation-error-BSSw0l_8.d.ts → validation-error-Bg5Tpluk.d.ts} +1 -1
- package/dist/{validity-dVrUEPJt.js → validity-CZ7-y0Cj.js} +32 -15
- package/dist/{verifier-DMr_Zmb_.js → verifier-DHuh-okk.js} +18 -7
- package/dist/{verify-BztUB3GX.js → verify-DbCL9bnB.js} +645 -50
- package/dist/{version-BEogC-rB.js → version-CEbQ5UeM.js} +4 -3
- package/dist/version-DXkYUISx.js +1 -0
- package/dist/{views-CJsrBS1f.js → views-DTIIO-oQ.js} +22 -5
- package/dist/{permission-types-Dg39z9Kv.d.ts → vocabulary-D6lPdb4Z.d.ts} +65 -2
- package/dist/vue/index.d.ts +9 -10
- package/dist/vue/index.js +8 -8
- package/dist/waiter-BGUtGYoU.js +67 -0
- package/dist/waiter-CKy4MQSY.d.ts +36 -0
- package/dist/watch-Cb-NcaUw.js +1 -0
- package/dist/{watch-zeucB7eF.js → watch-CszoTJMq.js} +44 -5
- package/dist/webmcp/index.d.ts +2 -2
- package/dist/webmcp/index.js +3 -3
- package/dist/where-scope-Dv-WTP-w.js +306 -0
- package/dist/who-can-D0QoYbEb.js +364 -0
- package/dist/wire-delegation-Cv3W2eaM.js +36 -0
- package/dist/wire-denial-C7PaVYEM.js +27 -0
- package/dist/workflow/index.d.ts +5 -0
- package/dist/workflow/index.js +223 -0
- package/dist/workflow-sdk/index.d.ts +56 -0
- package/dist/workflow-sdk/index.js +78 -0
- package/dist/{wrap-Cr93qqdP.d.ts → wrap-Bd1Tejur.d.ts} +2 -1
- package/dist/{wrap-DWsU_5Bd.js → wrap-gX61EtpB.js} +7 -6
- package/package.json +136 -37
- package/schemas/access-event-v1.json +118 -0
- package/schemas/approval-request-v1.json +34 -1
- package/schemas/approval-signature-v1.json +94 -0
- package/schemas/automation-event-v1.json +113 -0
- package/schemas/capability-v1.json +84 -0
- package/schemas/catalog-event-v1.json +87 -0
- package/schemas/catalog-v1.json +123 -12
- package/schemas/cli-commands-v1.json +164 -0
- package/schemas/cli-result-v1.json +96 -0
- package/schemas/cloud-api-v1.json +5407 -0
- package/schemas/connector-v1.json +408 -0
- package/schemas/credential-event-v1.json +81 -0
- package/schemas/credential-v1.json +134 -0
- package/schemas/decision-event-v1.json +288 -0
- package/schemas/delivery-event-v1.json +117 -0
- package/schemas/directory-event-v1.json +85 -0
- package/schemas/evidence-export-v1.json +54 -0
- package/schemas/membership-event-v1.json +93 -0
- package/schemas/policy-v1.json +68 -0
- package/schemas/pushed-policy-v1.json +236 -0
- package/schemas/run-v1.json +162 -0
- package/schemas/snapshot-v1.json +138 -0
- package/schemas/supabase-claims-v1.json +4 -4
- package/schemas/supabase-manifest-v1.json +5 -1
- package/schemas/support-session-v1.json +111 -0
- package/skills/permdock/SKILL.md +16 -12
- package/skills/permdock-agents/SKILL.md +40 -23
- package/skills/permdock-agents/references/operations-automations-chat.md +221 -0
- package/skills/permdock-agents/references/runtimes.md +22 -18
- package/skills/permdock-approvals/SKILL.md +29 -13
- package/skills/permdock-approvals/references/delivery-and-waiters.md +172 -0
- package/skills/permdock-approvals/references/stores-and-resume.md +21 -7
- package/skills/permdock-audit/SKILL.md +3 -3
- package/skills/permdock-credentials/SKILL.md +5 -5
- package/skills/permdock-credentials/references/tokens-keys-links.md +14 -10
- package/skills/permdock-data/SKILL.md +6 -6
- package/skills/permdock-data/references/queries-and-rls.md +9 -8
- package/skills/permdock-data/references/relationships.md +3 -3
- package/skills/permdock-tenancy/SKILL.md +20 -7
- package/skills/permdock-tenancy/references/contacts-and-support-sessions.md +122 -0
- package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +5 -4
- package/skills/permdock-wire/SKILL.md +17 -11
- package/skills/permdock-wire/references/adapters.md +139 -51
- package/skills/permdock-wire/references/policy-options.md +5 -5
- package/skills/permdock-wire/references/presets-and-recipes.md +58 -0
- package/dist/approvals-DZL76lKW.js +0 -240
- package/dist/arazzo-CD8d0WLb.js +0 -54
- package/dist/catalog-6yWAX6Ps.js +0 -2
- package/dist/catalog-WHG4kBq7.js +0 -48
- package/dist/cloud-C7bSDgX4.js +0 -50
- package/dist/cloud-PeBN3IEn.js +0 -118
- package/dist/collect-Bw2Jdq1q.js +0 -2
- package/dist/collect-CQx4hX4N.js +0 -83
- package/dist/commands-Cpip4ULx.js +0 -97
- package/dist/config-DLt6BvV7.js +0 -36
- package/dist/diff-Cnghh_Ip.js +0 -48
- package/dist/doctor-CuVJvhV_.js +0 -53
- package/dist/duration-xK2jGFVc.js +0 -25
- package/dist/errors-CWfoNg9N.js +0 -47
- package/dist/errors-DRnGZHzF.js +0 -30
- package/dist/expiry-BoBJ8Tvc.js +0 -7
- package/dist/fields-fwfXN01n.js +0 -1016
- package/dist/headers-BZSDieNT.js +0 -6
- package/dist/headers-Cf-zWvsO.d.ts +0 -6
- package/dist/ids-DC4V4CFu.js +0 -18
- package/dist/index-DgM7w96K.d.ts +0 -6
- package/dist/index-Dz7didpC.d.ts +0 -201
- package/dist/load-B_shHrmd.js +0 -2
- package/dist/manifest-BngWKryL.js +0 -770
- package/dist/may-use-BOn_dR_w.js +0 -78
- package/dist/openapi-DcQ1Kg40.js +0 -164
- package/dist/ownership-BgnbOJFT.js +0 -851
- package/dist/permdock-L26udHSk.js +0 -3646
- package/dist/powersync-BFSbSElQ.js +0 -62
- package/dist/powersync-DCDgZgfZ.js +0 -2
- package/dist/rls-55DQTuf5.js +0 -250
- package/dist/run-DMcNW_8T.js +0 -174
- package/dist/server-ZYEHtNHS.js +0 -268
- package/dist/sink-BTtmfPnE.js +0 -141
- package/dist/sink-CPN4zLfs.d.ts +0 -104
- package/dist/skills-Dle4ZoLF.js +0 -56
- package/dist/snapshot-Dc9CHPME.js +0 -1078
- package/dist/src-Bb7no-hS.js +0 -639
- package/dist/subject-C6dLxqHU.js +0 -24
- package/dist/supabase-Dbqr141s.js +0 -83
- package/dist/supabase-hook-BULg7Ut_.js +0 -2
- package/dist/thenable-QSmvt-vZ.js +0 -65
- package/dist/types-C0dee0Qf.d.ts +0 -197
- package/dist/types-DvupZE0w.d.ts +0 -9
- package/dist/usage-4G6t643F.js +0 -42
- package/dist/usage-iFLJ0-rr.js +0 -2
- package/dist/vocabulary-hhEFLFoL.d.ts +0 -65
- package/dist/watch-C8TpsAl4.js +0 -2
package/dist/next/index.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { t as compact } from "../compact-CAf557ZB.js";
|
|
2
|
-
import {
|
|
3
|
-
import { n as
|
|
4
|
-
import { n as
|
|
5
|
-
import { n as
|
|
2
|
+
import { c as withApp } from "../permdock-B9JxkBwC.js";
|
|
3
|
+
import { n as wrapPermDock } from "../wrap-gX61EtpB.js";
|
|
4
|
+
import { n as snapshotHeaders, r as snapshotTag, t as cacheLifeFor } from "../snapshot-cache-DZHQ0KF6.js";
|
|
5
|
+
import { n as resolveOrNull, t as buildInstance } from "../build-instance-BMnAudHn.js";
|
|
6
|
+
import { o as evaluationsHandler, v as NO_GRANT } from "../evaluations-DZ2CbV5k.js";
|
|
6
7
|
import { cache } from "react";
|
|
7
8
|
import { jsx } from "react/jsx-runtime";
|
|
8
9
|
import { forbidden, unauthorized, unstable_rethrow } from "#next/navigation";
|
|
@@ -72,7 +73,8 @@ function wrapInstance(permdock, onDenied) {
|
|
|
72
73
|
onDenied: options?.onDenied ?? onDenied
|
|
73
74
|
}))) }));
|
|
74
75
|
}
|
|
75
|
-
function createPermDock(policy,
|
|
76
|
+
function createPermDock(policy, given) {
|
|
77
|
+
const options = withApp(policy, given);
|
|
76
78
|
assertServerOnly();
|
|
77
79
|
const sink = options.sink === void 0 ? void 0 : afterResponse(options.sink);
|
|
78
80
|
const resolveSubject = cache(() => resolveOrNull(() => options.subject(), unstable_rethrow));
|
|
@@ -132,11 +134,11 @@ function createPermDock(policy, options) {
|
|
|
132
134
|
}
|
|
133
135
|
return snapshot;
|
|
134
136
|
};
|
|
135
|
-
const
|
|
136
|
-
const permdock = await getPermDock(
|
|
137
|
+
const requirePermission = async (permission, data, requirement = {}) => {
|
|
138
|
+
const permdock = await getPermDock(requirement.tenant === void 0 ? void 0 : { tenant: requirement.tenant });
|
|
137
139
|
const assert = permdock.assert;
|
|
138
|
-
const handler =
|
|
139
|
-
return assert(
|
|
140
|
+
const handler = requirement.onDenied ?? options.onDenied;
|
|
141
|
+
return assert(permission, data, { onDenied: (decision) => {
|
|
140
142
|
handler?.(decision);
|
|
141
143
|
if (decision.outcome !== "denied" || decision.denials.some((denial) => denial.reason === "validation")) return;
|
|
142
144
|
if (permdock.subject.principal === null) unauthorized();
|
|
@@ -158,7 +160,7 @@ function createPermDock(policy, options) {
|
|
|
158
160
|
children: props.children
|
|
159
161
|
}));
|
|
160
162
|
};
|
|
161
|
-
const permdockHandler = () =>
|
|
163
|
+
const permdockHandler = () => evaluationsHandler(compact({
|
|
162
164
|
policy,
|
|
163
165
|
getPermDock,
|
|
164
166
|
store: options.store
|
|
@@ -167,7 +169,7 @@ function createPermDock(policy, options) {
|
|
|
167
169
|
getPermDock,
|
|
168
170
|
getPermission,
|
|
169
171
|
getSnapshot,
|
|
170
|
-
|
|
172
|
+
requirePermission,
|
|
171
173
|
PermDockProvider,
|
|
172
174
|
permdockHandler
|
|
173
175
|
};
|
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-5Ut_pbKy.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 {
|
|
2
|
-
import { n as createCollectScheduler, r as report, t as collectOnce } from "../watch-
|
|
1
|
+
import { a as describeError } from "../errors-CWTY6uih.js";
|
|
2
|
+
import { n as createCollectScheduler, r as report, t as collectOnce } from "../watch-CszoTJMq.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,24 +1,24 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
1
|
+
import { T as Policy, j as PolicyVocabulary, rr as Principal } from "../policy-types-DzwivBgR.js";
|
|
2
|
+
import { w as Permission } from "../vocabulary-D6lPdb4Z.js";
|
|
3
|
+
import { r as PermDock } from "../permdock-D7eeLJER.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-BLd4MnBX.js";
|
|
5
|
+
import { t as ServerAdapterOptions } from "../bind--9EFVYWF.js";
|
|
6
|
+
import { i as toRequest, n as isServerResponse, r as sendResponse, t as NodeRequest } from "../http-B_LphE5Y.js";
|
|
6
7
|
import { IncomingMessage, ServerResponse } from "node:http";
|
|
7
8
|
//#region src/node/create.d.ts
|
|
8
9
|
type NodePermDockOptions<TUser = unknown> = ServerAdapterOptions<NodeRequest, TUser>;
|
|
9
10
|
type NodeProtect = {
|
|
10
|
-
(permission: Permission,
|
|
11
|
-
(permission: null,
|
|
11
|
+
(permission: Permission, data?: (req: NodeRequest) => unknown, protectOptions?: ProtectOptions): (req: IncomingMessage) => Promise<Guard>;
|
|
12
|
+
(permission: null, data?: (req: NodeRequest) => unknown, protectOptions?: ProtectOptions): (req: IncomingMessage) => Promise<ScopeGuard>;
|
|
12
13
|
};
|
|
13
14
|
type NodePermDock<V extends PolicyVocabulary = PolicyVocabulary> = {
|
|
14
|
-
readonly
|
|
15
|
+
readonly getPermDock: (req: IncomingMessage) => Promise<PermDock<V>>;
|
|
15
16
|
readonly protect: NodeProtect;
|
|
16
17
|
readonly send: typeof sendResponse;
|
|
17
18
|
readonly permdockHandler: () => (req: IncomingMessage, res: ServerResponse) => Promise<void>;
|
|
18
19
|
readonly toRequest: typeof toRequest;
|
|
19
|
-
readonly fromResponse: typeof fromResponse;
|
|
20
20
|
readonly openapi: OpenApiHooks;
|
|
21
21
|
};
|
|
22
22
|
export declare function createPermDock<TUser, TPrincipal extends Principal = Principal, V extends PolicyVocabulary = PolicyVocabulary>(policy: Policy<TUser, TPrincipal, V>, options: NodePermDockOptions<TUser>): NodePermDock<V>;
|
|
23
23
|
//#endregion
|
|
24
|
-
export { InvalidSignatureError, type NodePermDock, type NodePermDockOptions, type NodeRequest, discoverViaSignatureAgent,
|
|
24
|
+
export { InvalidSignatureError, type NodePermDock, type NodePermDockOptions, type NodeRequest, discoverViaSignatureAgent, isServerResponse, sendResponse, toRequest, webBotAuthVerifier };
|
package/dist/node/index.js
CHANGED
|
@@ -1,15 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { r as bindKernel } from "../bind-
|
|
3
|
-
import {
|
|
1
|
+
import { d as discoverViaSignatureAgent, m as webBotAuthVerifier, u as InvalidSignatureError } from "../evaluations-DZ2CbV5k.js";
|
|
2
|
+
import { r as bindKernel } from "../bind-CZzhx-Vj.js";
|
|
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;
|
|
6
6
|
function createPermDock(policy, options) {
|
|
7
7
|
const bound = bindKernel(policy, options, "node", toRequest);
|
|
8
8
|
const { kernel, handlerScope } = bound;
|
|
9
9
|
const bind = (req) => bound.bind(nodeRequest(req));
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
const protect = ((permission, loadData, protectOptions) => (req) => bound.guard(permission, loadData, nodeRequest(req), protectOptions));
|
|
10
|
+
const getPermDock = (req) => bound.getPermDock(nodeRequest(req));
|
|
11
|
+
const protect = ((permission, data, protectOptions) => (req) => bound.guard(permission, data, nodeRequest(req), protectOptions));
|
|
13
12
|
const permdockHandler = () => {
|
|
14
13
|
const { POST, GET } = kernel.permdockHandler(handlerScope);
|
|
15
14
|
return async (req, res) => {
|
|
@@ -21,14 +20,13 @@ function createPermDock(policy, options) {
|
|
|
21
20
|
};
|
|
22
21
|
};
|
|
23
22
|
return {
|
|
24
|
-
|
|
23
|
+
getPermDock,
|
|
25
24
|
protect,
|
|
26
25
|
send: sendResponse,
|
|
27
26
|
permdockHandler,
|
|
28
27
|
toRequest,
|
|
29
|
-
fromResponse,
|
|
30
28
|
openapi: kernel.openapi
|
|
31
29
|
};
|
|
32
30
|
}
|
|
33
31
|
//#endregion
|
|
34
|
-
export { InvalidSignatureError, createPermDock, discoverViaSignatureAgent,
|
|
32
|
+
export { InvalidSignatureError, createPermDock, discoverViaSignatureAgent, isServerResponse, sendResponse, toRequest, webBotAuthVerifier };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { t as compact } from "./compact-CAf557ZB.js";
|
|
2
2
|
//#region src/core/ocsf.ts
|
|
3
3
|
/** The OCSF schema version `toOcsf` emits. */
|
|
4
|
-
const OCSF_VERSION = "1.
|
|
4
|
+
const OCSF_VERSION = "1.9.0";
|
|
5
5
|
function status(outcome) {
|
|
6
6
|
switch (outcome) {
|
|
7
7
|
case "granted": return {
|
|
@@ -14,7 +14,7 @@ function status(outcome) {
|
|
|
14
14
|
};
|
|
15
15
|
case "approval-required": return {
|
|
16
16
|
status_id: 99,
|
|
17
|
-
status: "
|
|
17
|
+
status: "Approval Required"
|
|
18
18
|
};
|
|
19
19
|
default: return unknownStatus(outcome);
|
|
20
20
|
}
|
|
@@ -31,20 +31,29 @@ function appObligationNames(event) {
|
|
|
31
31
|
const names = (event.obligations ?? []).flatMap((obligation) => obligation.kind === "app" ? [obligation.name] : []);
|
|
32
32
|
return names.length === 0 ? void 0 : names;
|
|
33
33
|
}
|
|
34
|
-
/**
|
|
34
|
+
/** Epoch milliseconds of an RFC 3339 `at`, or `undefined` when it does not parse. */
|
|
35
|
+
function epochMillis(at) {
|
|
36
|
+
const time = Date.parse(at);
|
|
37
|
+
return Number.isNaN(time) ? void 0 : time;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Projects a decision or approval event onto OCSF Authorize Session; the event itself is unchanged.
|
|
41
|
+
* An event whose `at` does not parse has no OCSF `time` and projects to `undefined`.
|
|
42
|
+
*/
|
|
35
43
|
function toOcsf(event) {
|
|
44
|
+
const time = epochMillis(event.at);
|
|
45
|
+
if (time === void 0) return;
|
|
36
46
|
const principal = event.subject.principal;
|
|
37
47
|
const actor = event.subject.actor;
|
|
38
48
|
const breakGlass = event.matched?.breakGlass === true;
|
|
39
49
|
const detail = event.outcome === "approval-required" ? "approval-required" : event.denials?.map((denial) => denial.reason).join(",");
|
|
40
|
-
const time = Date.parse(event.at);
|
|
41
50
|
return compact({
|
|
42
51
|
class_uid: 3003,
|
|
43
52
|
category_uid: 3,
|
|
44
53
|
activity_id: 1,
|
|
45
54
|
type_uid: 300301,
|
|
46
55
|
severity_id: breakGlass ? 4 : 1,
|
|
47
|
-
time
|
|
56
|
+
time,
|
|
48
57
|
...status(event.outcome),
|
|
49
58
|
status_detail: detail === "" ? void 0 : detail,
|
|
50
59
|
message: `${event.permission} ${event.outcome}`,
|
|
@@ -68,7 +77,7 @@ function toOcsf(event) {
|
|
|
68
77
|
outcome: event.outcome,
|
|
69
78
|
scope: event.scope,
|
|
70
79
|
resource: event.resource,
|
|
71
|
-
|
|
80
|
+
call: event.call,
|
|
72
81
|
phase: event.phase,
|
|
73
82
|
role: event.matched?.role,
|
|
74
83
|
grant: event.matched?.name,
|
|
@@ -80,16 +89,18 @@ function toOcsf(event) {
|
|
|
80
89
|
})
|
|
81
90
|
});
|
|
82
91
|
}
|
|
92
|
+
/** An access event whose `at` does not parse projects to `undefined`. */
|
|
83
93
|
function accessToOcsf(event) {
|
|
84
|
-
const time =
|
|
94
|
+
const time = epochMillis(event.at);
|
|
95
|
+
if (time === void 0) return;
|
|
85
96
|
const enable = event.operation === "started";
|
|
86
97
|
return compact({
|
|
87
|
-
class_uid:
|
|
98
|
+
class_uid: 3007,
|
|
88
99
|
category_uid: 3,
|
|
89
|
-
activity_id: enable ?
|
|
90
|
-
type_uid: enable ?
|
|
100
|
+
activity_id: enable ? 4 : 5,
|
|
101
|
+
type_uid: enable ? 300704 : 300705,
|
|
91
102
|
severity_id: 4,
|
|
92
|
-
time
|
|
103
|
+
time,
|
|
93
104
|
message: `support access ${event.operation}`,
|
|
94
105
|
user: { uid: event.principal.id },
|
|
95
106
|
actor: event.actor === void 0 ? void 0 : { user: { uid: event.actor.id } },
|
package/dist/openai/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { t as
|
|
1
|
+
import { T as Policy, j as PolicyVocabulary, rr as Principal } from "../policy-types-DzwivBgR.js";
|
|
2
|
+
import { w as Permission } from "../vocabulary-D6lPdb4Z.js";
|
|
3
|
+
import { r as PermDock } from "../permdock-D7eeLJER.js";
|
|
4
|
+
import { u as ApprovalRequest } from "../types-CCpc2Dcv.js";
|
|
5
|
+
import { o as AgentAdapterOptions, t as AgentPermDock } from "../create-BDS7wc3y.js";
|
|
6
6
|
//#region src/openai/create.d.ts
|
|
7
7
|
/** The app context passed to `run(agent, input, { context })`. */
|
|
8
8
|
type OpenAiContext = {
|
|
@@ -15,14 +15,7 @@ type OpenAiContext = {
|
|
|
15
15
|
type OpenAiRunContext = {
|
|
16
16
|
readonly context?: unknown;
|
|
17
17
|
};
|
|
18
|
-
type OpenAiPermDockOptions<TUser = unknown> =
|
|
19
|
-
readonly subject: (context: OpenAiContext) => TUser | Promise<TUser>;
|
|
20
|
-
readonly actor?: (context: OpenAiContext) => unknown;
|
|
21
|
-
readonly delegation?: (context: OpenAiContext) => Delegation | undefined | Promise<Delegation | undefined>;
|
|
22
|
-
readonly tenant?: string | ((context: OpenAiContext) => string | undefined | Promise<string | undefined>);
|
|
23
|
-
readonly tools: ToolMap;
|
|
24
|
-
readonly store?: ApprovalStore;
|
|
25
|
-
};
|
|
18
|
+
type OpenAiPermDockOptions<TUser = unknown> = AgentAdapterOptions<OpenAiContext, TUser>;
|
|
26
19
|
type OpenAiTool = {
|
|
27
20
|
readonly name: string;
|
|
28
21
|
};
|
|
@@ -48,15 +41,15 @@ type OpenAiRunState<TItem> = {
|
|
|
48
41
|
message?: string;
|
|
49
42
|
}): unknown;
|
|
50
43
|
};
|
|
51
|
-
type OpenAiPermDock<V extends PolicyVocabulary = PolicyVocabulary> = {
|
|
44
|
+
type OpenAiPermDock<V extends PolicyVocabulary = PolicyVocabulary> = AgentPermDock<OpenAiContext, V> & {
|
|
52
45
|
/** A `ToolApprovalFunction`: pass it as a tool's `needsApproval`. */
|
|
53
46
|
readonly needsApproval: (permission: Permission) => (runContext: OpenAiRunContext | undefined, input: unknown, callId?: string) => Promise<boolean>;
|
|
54
47
|
readonly guardTools: <T extends OpenAiTool>(tools: readonly T[], context: OpenAiContext) => Promise<readonly T[]>;
|
|
55
48
|
readonly resolveInterruptions: <TItem extends OpenAiInterruption>(state: OpenAiRunState<TItem>, interruptions: readonly TItem[], options: {
|
|
56
49
|
readonly context: OpenAiContext;
|
|
57
50
|
}) => Promise<readonly ApprovalRequest[]>;
|
|
58
|
-
readonly
|
|
51
|
+
readonly getPermDock: (context: OpenAiContext) => Promise<PermDock<V>>;
|
|
59
52
|
};
|
|
60
|
-
export declare function createPermDock<TUser, TPrincipal extends Principal = Principal, V extends PolicyVocabulary = PolicyVocabulary>(policy: Policy<TUser, TPrincipal, V>,
|
|
53
|
+
export declare function createPermDock<TUser, TPrincipal extends Principal = Principal, V extends PolicyVocabulary = PolicyVocabulary>(policy: Policy<TUser, TPrincipal, V>, given: OpenAiPermDockOptions<TUser>): OpenAiPermDock<V>;
|
|
61
54
|
//#endregion
|
|
62
55
|
export type { OpenAiContext, OpenAiInterruption, OpenAiPermDock, OpenAiPermDockOptions, OpenAiRunState, OpenAiTool };
|
package/dist/openai/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { t as compact } from "../compact-CAf557ZB.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
2
|
+
import { c as withApp } from "../permdock-B9JxkBwC.js";
|
|
3
|
+
import { t as approvalTokenOf } from "../kernel-5JatXyND.js";
|
|
4
|
+
import { t as agentRuntime } from "../create-C3b4B5eF.js";
|
|
5
5
|
//#region src/openai/create.ts
|
|
6
6
|
function appContext(runContext) {
|
|
7
7
|
const context = runContext?.context;
|
|
@@ -26,34 +26,25 @@ function parseCall(item) {
|
|
|
26
26
|
return { ok: false };
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
|
-
function createPermDock(policy,
|
|
30
|
-
const
|
|
31
|
-
const
|
|
32
|
-
|
|
33
|
-
actor: options.actor,
|
|
34
|
-
delegation: options.delegation,
|
|
35
|
-
tenant: options.tenant
|
|
36
|
-
}),
|
|
37
|
-
...instanceOptions(options),
|
|
38
|
-
subject: options.subject,
|
|
39
|
-
tools: options.tools,
|
|
40
|
-
store,
|
|
41
|
-
adapter: "openai"
|
|
42
|
-
});
|
|
29
|
+
function createPermDock(policy, given) {
|
|
30
|
+
const options = withApp(policy, given);
|
|
31
|
+
const store = options.store;
|
|
32
|
+
const { agent, kernel } = agentRuntime(policy, options, "openai");
|
|
43
33
|
const byPermission = /* @__PURE__ */ new Map();
|
|
44
|
-
for (const [name, binding] of Object.entries(options.
|
|
34
|
+
for (const [name, binding] of Object.entries(options.operations)) byPermission.set(binding.permission.key, name);
|
|
35
|
+
const passes = (toolName) => options.unmapped === "allow" && !Object.hasOwn(options.operations, toolName);
|
|
45
36
|
const needsApproval = (permission) => async (runContext, input) => {
|
|
46
37
|
const toolName = byPermission.get(permission.key);
|
|
47
38
|
if (toolName === void 0) return true;
|
|
48
39
|
const context = appContext(runContext);
|
|
49
|
-
const binding = options.
|
|
40
|
+
const binding = options.operations[toolName];
|
|
50
41
|
if (binding === void 0) return true;
|
|
51
42
|
const checked = await kernel.check(binding, input, context, { simulate: true });
|
|
52
43
|
return !checked.ok || checked.raw.outcome !== "granted";
|
|
53
44
|
};
|
|
54
45
|
const guardTools = async (tools, context) => {
|
|
55
46
|
const allowed = await kernel.allowedToolNames(context);
|
|
56
|
-
return tools.filter((tool) => allowed.has(tool.name));
|
|
47
|
+
return tools.filter((tool) => allowed.has(tool.name) || passes(tool.name));
|
|
57
48
|
};
|
|
58
49
|
const resolveOne = async (state, item, context) => {
|
|
59
50
|
const call = parseCall(item);
|
|
@@ -61,6 +52,7 @@ function createPermDock(policy, options) {
|
|
|
61
52
|
await state.reject(item, { message: "Denied: unreadable tool call." });
|
|
62
53
|
return null;
|
|
63
54
|
}
|
|
55
|
+
if (passes(call.name)) return null;
|
|
64
56
|
const verdict = await kernel.decideTool(call.name, call.args, context, compact({ resumeToken: approvalTokenOf(context) }));
|
|
65
57
|
if (verdict.outcome === "granted") {
|
|
66
58
|
await state.approve(item);
|
|
@@ -70,6 +62,7 @@ function createPermDock(policy, options) {
|
|
|
70
62
|
await state.reject(item, { message: verdict.reason });
|
|
71
63
|
return null;
|
|
72
64
|
}
|
|
65
|
+
if (store === void 0) return null;
|
|
73
66
|
try {
|
|
74
67
|
return await store.get(verdict.token);
|
|
75
68
|
} catch {
|
|
@@ -81,12 +74,12 @@ function createPermDock(policy, options) {
|
|
|
81
74
|
for (const item of interruptions) resolved.push(await resolveOne(state, item, resolveOptions.context));
|
|
82
75
|
return resolved.filter((record) => record !== null);
|
|
83
76
|
};
|
|
84
|
-
return {
|
|
77
|
+
return Object.freeze({
|
|
78
|
+
...agent,
|
|
85
79
|
needsApproval,
|
|
86
80
|
guardTools,
|
|
87
|
-
resolveInterruptions
|
|
88
|
-
|
|
89
|
-
};
|
|
81
|
+
resolveInterruptions
|
|
82
|
+
});
|
|
90
83
|
}
|
|
91
84
|
//#endregion
|
|
92
85
|
export { createPermDock };
|
package/dist/openapi/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { a as ProblemDetails } from "../errors-
|
|
1
|
+
import { T as Policy, lr as Condition, rr as Principal } from "../policy-types-DzwivBgR.js";
|
|
2
|
+
import { E as PermissionTree, w as Permission } from "../vocabulary-D6lPdb4Z.js";
|
|
3
|
+
import { a as ProblemDetails } from "../errors-C2PXIv4c.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";
|
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-B7HZ0f-r.js";
|
|
3
3
|
export { DRAFT_PINS, GNAP_RESERVED, PROFILE_NAMES, catalogOf, createPermDock, openapiVersion, operationPermissions, operationPermissionsFromOpenApi, permissionsExtension, problemDetails, securityFor, securitySchemesOf };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { r as isRecord, t as compact } from "./compact-CAf557ZB.js";
|
|
2
|
-
import { c as listPermissions, n as findPermission, o as isPermission } from "./permission-registry-
|
|
3
|
-
import {
|
|
2
|
+
import { c as listPermissions, n as findPermission, o as isPermission } from "./permission-registry-Br4jSNVi.js";
|
|
3
|
+
import { r as sha256Digest } from "./sha256-D9ihqmvd.js";
|
|
4
4
|
import { t as requiresApproval } from "./approval-required-TzNB9oQA.js";
|
|
5
5
|
import { i as PROFILE_PARAMETERS, n as GNAP_RESERVED, r as PROFILE_NAMES, t as DRAFT_PINS } from "./pins-8ILTftC9.js";
|
|
6
6
|
//#region src/openapi/emit.ts
|
|
@@ -188,13 +188,10 @@ function jsonPathString(value) {
|
|
|
188
188
|
function operationTarget(operationId) {
|
|
189
189
|
return `$.paths.*[?@.operationId == ${jsonPathString(operationId)}]`;
|
|
190
190
|
}
|
|
191
|
-
|
|
192
|
-
return Array.from(bytes, (byte) => byte.toString(16).padStart(2, "0")).join("");
|
|
193
|
-
}
|
|
194
|
-
/** `sha256:` over the sorted permission keys and scopes, so the same catalog gives the same Overlay. */
|
|
191
|
+
/** The `sha-256:` digest of the sorted permission keys and scopes, so the same catalog gives the same Overlay. */
|
|
195
192
|
function fingerprint(policy) {
|
|
196
193
|
const lines = listPermissions(policy.permissions).map((leaf) => `${leaf.key} ${leaf.scope}`).toSorted();
|
|
197
|
-
return
|
|
194
|
+
return sha256Digest(lines.join("\n"));
|
|
198
195
|
}
|
|
199
196
|
function overlayOf(policy, options, overlayOptions = {}) {
|
|
200
197
|
const version = overlayOptions.version ?? "1.1";
|
|
@@ -456,7 +453,10 @@ const JSON_SCHEMA = Object.freeze({
|
|
|
456
453
|
maximum: 599
|
|
457
454
|
},
|
|
458
455
|
detail: { type: "string" },
|
|
459
|
-
instance: {
|
|
456
|
+
instance: {
|
|
457
|
+
type: "string",
|
|
458
|
+
format: "uri-reference"
|
|
459
|
+
},
|
|
460
460
|
permission: { type: "string" },
|
|
461
461
|
scope: { type: "string" },
|
|
462
462
|
reason: { type: "string" }
|
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import { n as validateOverlay, t as validateOpenapi } from "./schema-Bol6gqXA.js";
|
|
2
1
|
import { r as isRecord } from "./compact-CAf557ZB.js";
|
|
3
|
-
import { a as getResource, n as findPermission } from "./permission-registry-
|
|
4
|
-
import {
|
|
2
|
+
import { a as getResource, n as findPermission } from "./permission-registry-Br4jSNVi.js";
|
|
3
|
+
import { n as definePolicy } from "./policy-DLZJ5gAp.js";
|
|
4
|
+
import { i as configError } from "./errors-CWTY6uih.js";
|
|
5
5
|
import { i as readJsonFile, s as writeFileEnsuringDir } from "./files-D_JIzUrP.js";
|
|
6
|
-
import { a as loadModule, n as asPolicy, s as pickNamed, t as asPermissionTree } from "./load-
|
|
7
|
-
import { t as shortDiff } from "./text-diff-
|
|
8
|
-
import { c as openapiVersion, o as createPermDock } from "./openapi-
|
|
9
|
-
import {
|
|
6
|
+
import { a as loadModule, n as asPolicy, s as pickNamed, t as asPermissionTree } from "./load-DFS_ry0W.js";
|
|
7
|
+
import { t as shortDiff } from "./text-diff-BQcUapOb.js";
|
|
8
|
+
import { c as openapiVersion, o as createPermDock } from "./openapi-B7HZ0f-r.js";
|
|
9
|
+
import { i as fileDrift } from "./output-files-DhRBBE4n.js";
|
|
10
|
+
import { n as validateOverlay, t as validateOpenapi } from "./schema-yLuBWWsh.js";
|
|
10
11
|
import { existsSync } from "node:fs";
|
|
11
12
|
import { resolve } from "node:path";
|
|
12
13
|
//#region src/cli/openapi/openapi.ts
|
|
@@ -52,7 +53,7 @@ async function loadPolicy(cwd, config, from) {
|
|
|
52
53
|
return asPolicy(pickNamed(await loadModule(abs), ["policy"]));
|
|
53
54
|
}
|
|
54
55
|
const permissionsPath = config.permissions;
|
|
55
|
-
if (permissionsPath === void 0) throw
|
|
56
|
+
if (permissionsPath === void 0) throw configError("PermDock CLI: openapi emit needs --policy, or policy or permissions in the config");
|
|
56
57
|
const tree = asPermissionTree(pickNamed(await loadModule(resolve(cwd, permissionsPath)), ["permissions"]));
|
|
57
58
|
return definePolicy(tree, {
|
|
58
59
|
roles: [],
|
|
@@ -63,7 +64,7 @@ function leavesOf(policy, keys) {
|
|
|
63
64
|
return keys.map((key) => {
|
|
64
65
|
if (typeof key !== "string") throw new TypeError("PermDock CLI: x-permdock-permissions must be strings");
|
|
65
66
|
const leaf = findPermission(policy.permissions, key);
|
|
66
|
-
if (leaf === void 0) throw
|
|
67
|
+
if (leaf === void 0) throw configError(`PermDock CLI: unknown permission '${key}'`);
|
|
67
68
|
return leaf;
|
|
68
69
|
});
|
|
69
70
|
}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { c as missingInput } from "./errors-CWTY6uih.js";
|
|
2
|
+
import { t as defineLeaf } from "./command-L8EstFNm.js";
|
|
3
|
+
import { c as given, d as policyFlag, f as validatorFlag, l as outFlag, o as fileOut, t as checkFlag } from "./flags-C3DktBDY.js";
|
|
4
|
+
//#region src/cli/commands/openapi.ts
|
|
5
|
+
const docFlag = { doc: {
|
|
6
|
+
type: "string",
|
|
7
|
+
description: "OpenAPI document: a path, or a URL for import",
|
|
8
|
+
valueHint: "path"
|
|
9
|
+
} };
|
|
10
|
+
const emit = defineLeaf({
|
|
11
|
+
flags: {
|
|
12
|
+
...docFlag,
|
|
13
|
+
...outFlag,
|
|
14
|
+
...checkFlag,
|
|
15
|
+
...policyFlag,
|
|
16
|
+
target: {
|
|
17
|
+
type: "enum",
|
|
18
|
+
options: [
|
|
19
|
+
"3.1",
|
|
20
|
+
"3.2",
|
|
21
|
+
"3.3"
|
|
22
|
+
],
|
|
23
|
+
default: "3.2",
|
|
24
|
+
description: "OpenAPI version; 3.3 is the pinned Security Profiles draft"
|
|
25
|
+
},
|
|
26
|
+
kind: {
|
|
27
|
+
type: "enum",
|
|
28
|
+
options: ["document", "overlay"],
|
|
29
|
+
default: "document",
|
|
30
|
+
description: "A full document or an Overlay"
|
|
31
|
+
},
|
|
32
|
+
overlay: {
|
|
33
|
+
type: "enum",
|
|
34
|
+
options: ["1.1", "1.2"],
|
|
35
|
+
default: "1.1",
|
|
36
|
+
description: "Overlay version; 1.2 is the pinned reusable-actions draft"
|
|
37
|
+
},
|
|
38
|
+
profile: {
|
|
39
|
+
type: "enum",
|
|
40
|
+
options: ["fapi2"],
|
|
41
|
+
description: "Security profile to declare"
|
|
42
|
+
},
|
|
43
|
+
"profile-scheme": {
|
|
44
|
+
type: "string",
|
|
45
|
+
description: "Security scheme name for the profile",
|
|
46
|
+
valueHint: "name"
|
|
47
|
+
},
|
|
48
|
+
scheme: {
|
|
49
|
+
type: "string",
|
|
50
|
+
description: "OAuth security scheme name (default permdockOAuth)",
|
|
51
|
+
valueHint: "name"
|
|
52
|
+
},
|
|
53
|
+
"metadata-url": {
|
|
54
|
+
type: "string",
|
|
55
|
+
description: "OAuth authorization server metadata URL",
|
|
56
|
+
valueHint: "url"
|
|
57
|
+
},
|
|
58
|
+
"device-flow": {
|
|
59
|
+
type: "boolean",
|
|
60
|
+
description: "Declare the device authorization flow"
|
|
61
|
+
},
|
|
62
|
+
arity: {
|
|
63
|
+
type: "boolean",
|
|
64
|
+
description: "Mark instance and collection operations"
|
|
65
|
+
},
|
|
66
|
+
"authorization-url": {
|
|
67
|
+
type: "string",
|
|
68
|
+
description: "OAuth authorization endpoint",
|
|
69
|
+
valueHint: "url"
|
|
70
|
+
},
|
|
71
|
+
"token-url": {
|
|
72
|
+
type: "string",
|
|
73
|
+
description: "OAuth token endpoint",
|
|
74
|
+
valueHint: "url"
|
|
75
|
+
},
|
|
76
|
+
"device-authorization-url": {
|
|
77
|
+
type: "string",
|
|
78
|
+
description: "OAuth device authorization endpoint",
|
|
79
|
+
valueHint: "url"
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
async run(ctx, { flags }) {
|
|
83
|
+
return (await import("./openapi-DTaEmTSW.js")).runOpenapi({
|
|
84
|
+
cwd: ctx.cwd,
|
|
85
|
+
config: ctx.config,
|
|
86
|
+
rest: ["emit"],
|
|
87
|
+
doc: given(flags.doc),
|
|
88
|
+
out: fileOut("openapi emit", flags.out),
|
|
89
|
+
from: given(flags.policy),
|
|
90
|
+
target: flags.target,
|
|
91
|
+
format: flags.kind,
|
|
92
|
+
overlay: flags.overlay,
|
|
93
|
+
check: flags.check,
|
|
94
|
+
profile: flags.profile,
|
|
95
|
+
profileScheme: given(flags["profile-scheme"]),
|
|
96
|
+
scheme: given(flags.scheme) ?? "permdockOAuth",
|
|
97
|
+
metadataUrl: given(flags["metadata-url"]),
|
|
98
|
+
deviceFlow: flags["device-flow"],
|
|
99
|
+
arity: flags.arity,
|
|
100
|
+
authorizationUrl: given(flags["authorization-url"]),
|
|
101
|
+
tokenUrl: given(flags["token-url"]),
|
|
102
|
+
deviceAuthorizationUrl: given(flags["device-authorization-url"]),
|
|
103
|
+
io: ctx.io
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
const importDocument = defineLeaf({
|
|
108
|
+
flags: {
|
|
109
|
+
...docFlag,
|
|
110
|
+
...outFlag,
|
|
111
|
+
...validatorFlag,
|
|
112
|
+
map: {
|
|
113
|
+
type: "string",
|
|
114
|
+
description: "JSON mapping of operations to permissions",
|
|
115
|
+
valueHint: "json"
|
|
116
|
+
},
|
|
117
|
+
annotate: {
|
|
118
|
+
type: "boolean",
|
|
119
|
+
description: "Write x-permdock-permissions back into the document"
|
|
120
|
+
}
|
|
121
|
+
},
|
|
122
|
+
async run(ctx, { flags }) {
|
|
123
|
+
const doc = given(flags.doc);
|
|
124
|
+
if (doc === void 0) throw missingInput("openapi import", ["--doc"], "the OpenAPI document to import");
|
|
125
|
+
const { runOpenapiImport } = await import("./import-CNV7I2Dw.js");
|
|
126
|
+
return runOpenapiImport({
|
|
127
|
+
cwd: ctx.cwd,
|
|
128
|
+
doc,
|
|
129
|
+
out: fileOut("openapi import", flags.out),
|
|
130
|
+
schema: flags.validator,
|
|
131
|
+
map: given(flags.map),
|
|
132
|
+
annotate: flags.annotate,
|
|
133
|
+
io: ctx.io
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
//#endregion
|
|
138
|
+
export { emit, importDocument };
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { n as OPERATION_RISKS } from "./permissions-B-wCP5ZC.js";
|
|
2
|
+
//#region src/catalog/operation-findings.ts
|
|
3
|
+
function rank(risk) {
|
|
4
|
+
return OPERATION_RISKS.indexOf(risk ?? "low");
|
|
5
|
+
}
|
|
6
|
+
function requiresApproval(catalog, permission) {
|
|
7
|
+
return (catalog.permissions.find((entry) => entry.key === permission)?.approvals?.length ?? 0) > 0;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Operations, matched by name, whose `meta.risk` rose or whose permission
|
|
11
|
+
* stopped requiring approval between two catalogs. A new or removed
|
|
12
|
+
* operation is not a finding.
|
|
13
|
+
*/
|
|
14
|
+
function operationFindings(previous, next) {
|
|
15
|
+
const before = new Map((previous.operations ?? []).map((operation) => [operation.name, operation]));
|
|
16
|
+
const findings = [];
|
|
17
|
+
for (const operation of next.operations ?? []) {
|
|
18
|
+
const old = before.get(operation.name);
|
|
19
|
+
if (old === void 0) continue;
|
|
20
|
+
if (rank(operation.meta.risk) > rank(old.meta.risk)) findings.push({
|
|
21
|
+
code: "operation-risk-raised",
|
|
22
|
+
operation: operation.name,
|
|
23
|
+
permission: operation.permission,
|
|
24
|
+
previous: old.meta.risk ?? "low",
|
|
25
|
+
risk: operation.meta.risk ?? "low"
|
|
26
|
+
});
|
|
27
|
+
if (requiresApproval(previous, old.permission) && !requiresApproval(next, operation.permission)) findings.push({
|
|
28
|
+
code: "operation-approval-removed",
|
|
29
|
+
operation: operation.name,
|
|
30
|
+
permission: operation.permission
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
return findings;
|
|
34
|
+
}
|
|
35
|
+
//#endregion
|
|
36
|
+
export { operationFindings as t };
|