permdock 0.4.0 → 0.6.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-DCYe60Pi.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-DvSSPQJX.d.ts +57 -0
- package/dist/approvals/index.d.ts +5 -3
- package/dist/approvals/index.js +8 -5
- package/dist/approvals-p1PGoVjb.js +995 -0
- package/dist/arazzo-41WuzHou.js +36 -0
- package/dist/{arazzo-C4BcskbX.js → arazzo-CaUVBn7D.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-DabClFLQ.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-BNM3TtDo.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-kk-uyCwH.js → bind-CAvgUuKs.js} +14 -10
- package/dist/{bind-BzqG8SMb.d.ts → bind-DOyrv6zi.d.ts} +12 -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-Bu_eDqYw.js} +4 -3
- package/dist/{canonical-json-CFKyFOke.js → canonical-json-BC8_nMTw.js} +5 -3
- package/dist/{capability-CksyCWDH.d.ts → capability-Drg-1YhL.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-BoWglDPI.js +1 -0
- package/dist/catalog-DZVbrF-z.js +52 -0
- package/dist/{catalog-tZUyOfOv.js → catalog-HD2gf5mY.js} +51 -6
- package/dist/{catalog-doc-DWtg0gGR.js → catalog-doc-Cdn7-0pQ.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-ytQ3uviA.js +87 -0
- package/dist/codemod-5mpSpnUY.js +37 -0
- package/dist/codemod-ua2hHy7w.js +2084 -0
- package/dist/collect-Ci6akVwH.js +55 -0
- package/dist/collect-D7eQDffE.js +1 -0
- package/dist/{collect-2SrB7lfk.js → collect-mLTY4nwb.js} +75 -11
- 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-CtTP7eur.d.ts → compile-1bsAezL0.d.ts} +5 -3
- package/dist/{compile-CcEu2ZQ1.js → compile-CMqMx_IN.js} +11 -8
- package/dist/completion-BTFrHZhX.js +143 -0
- package/dist/config-Bj2Ixq3d.js +26 -0
- package/dist/{config-BIjREpyE.js → config-bs_kZeYq.js} +12 -7
- package/dist/{config-report--Xb9APJS.js → config-report-DSpsLpCE.js} +15 -5
- package/dist/{connection-DUsczpB5.js → connection-DjhIJSs2.js} +6 -5
- package/dist/{context-DieZVJXu.js → context-B_u3_bDJ.js} +2 -2
- package/dist/convex/index.d.ts +11 -10
- package/dist/convex/index.js +6 -4
- package/dist/create-B30OMUOJ.d.ts +107 -0
- package/dist/create-CBMmFie-.d.ts +138 -0
- package/dist/create-CGm28gyI.js +130 -0
- package/dist/create-CQWIpUG-.js +403 -0
- package/dist/{create-BBO24vj6.js → create-DCF2SvoT.js} +31 -32
- package/dist/create-D_NmPOdH.d.ts +110 -0
- package/dist/{credential-kue0qpbm.js → credential-BcoiejpY.js} +152 -31
- package/dist/credentials-DPyHmYz5.js +74 -0
- package/dist/delegation-j6-rc37o.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-CiFQNuMV.d.ts} +5 -5
- package/dist/{describe-C3ldA9os.d.ts → describe-B5qgDvEW.d.ts} +2 -2
- package/dist/{describe-Cgkp7eP0.js → describe-BybMRY7A.js} +6 -2
- package/dist/device-BARQ8eYG.js +193 -0
- package/dist/{diff-rpqoe7Ag.js → diff-3jbx6Rm4.js} +60 -54
- package/dist/diff-CmuSD3vc.js +37 -0
- package/dist/doctor-3ZqNHX_G.js +44 -0
- package/dist/{doctor-owlv6ddh.js → doctor-BdZw53-k.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-CWTY6uih.js +143 -0
- package/dist/{errors-OD_4c__H.d.ts → errors-DH5QEGXh.d.ts} +2 -2
- package/dist/evaluate-CNClBvcj.js +1785 -0
- package/dist/evaluations-C_1vdSZc.d.ts +32 -0
- package/dist/{evaluations-C9YJsv3H.js → evaluations-beAooV0n.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-DD_gfmrC.js +120 -0
- package/dist/fetch-adapter-Dw0MTS3D.d.ts +31 -0
- package/dist/fields-OYG_JR78.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-CTCMsFZk.js} +55 -52
- package/dist/{grantee-conditions-MQs5NIuX.js → grantee-conditions-CcXf8hMM.js} +4 -3
- package/dist/{grantee-CXY-0C87.js → grantee-hxrUsbpM.js} +16 -6
- package/dist/{grantee-match-fxYp9Nmt.js → grantee-match-DbENBHLB.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-CBYVMjwh.js} +45 -38
- package/dist/hono/index.d.ts +12 -9
- package/dist/hono/index.js +13 -12
- package/dist/hosted-B46-5LYE.js +315 -0
- package/dist/hosted-BPk51-kX.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-wyqXUyjm.js} +190 -53
- package/dist/index-B8YjkEZ4.d.ts +210 -0
- package/dist/index-C-6Letxg.d.ts +431 -0
- package/dist/index-CaxrMD1A.d.ts +1 -0
- package/dist/{index-BwMe94Xq.d.ts → index-Ch8LpNDp.d.ts} +34 -16
- package/dist/index-Cp_ilKi1.d.ts +91 -0
- package/dist/index-CueFnxQc.d.ts +110 -0
- package/dist/index-DuWxc5dt.d.ts +909 -0
- 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-BsVpyGIk.d.ts} +2 -2
- package/dist/instance-snapshot-BOEhcqIF.js +601 -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-D0NVb1cK.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-dvL2XEe1.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-Dr70oA_3.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-CIq4-E9F.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-C4dDTVEd.js +138 -0
- package/dist/{openapi-BJdBmYDG.js → openapi-DD1SV-5-.js} +10 -9
- package/dist/operation-findings-DgATDpvh.js +36 -0
- package/dist/operations-X0VM7F3m.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-1im__-08.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-DqaJNJPn.js} +1045 -153
- 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-DvYUR0QL.d.ts → parse-local-manifest-5ODwqu8b.d.ts} +1 -1
- package/dist/{parse-local-manifest-C-q02Pal.js → parse-local-manifest-CVSs6J9I.js} +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-BrAscV28.js +868 -0
- package/dist/permdock-SV8ZINYT.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-BPxlwVhN.js} +4 -3
- package/dist/{permissions-COH-KRgT.d.ts → permissions-u_KHg-sN.d.ts} +1 -2
- package/dist/policies-DP2nqRoF.js +295 -0
- package/dist/{policy-ur0BBK_e.d.ts → policy-77FSAq_V.d.ts} +2 -2
- package/dist/{hosted-CBHgkzDl.js → policy-DbM5YYtV.js} +17 -273
- package/dist/policy-from-catalog-C2gMa2Dj.js +450 -0
- package/dist/policy-module-CTlwMvLI.js +89 -0
- package/dist/{policy-types-sp9P1iIV.d.ts → policy-types-n0uRTsW8.d.ts} +460 -632
- package/dist/postgrest-CEgRbefE.d.ts +100 -0
- package/dist/postgrest-DAjUkF9w.js +575 -0
- package/dist/{powersync-cZe4kzhL.js → powersync-BkWWCS1K.js} +23 -24
- package/dist/powersync-DISt6SUe.js +62 -0
- package/dist/powersync-MMJ2mI2q.js +1 -0
- 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-B45V5d2b.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-BN7BUdY1.js → protected-BlF0F6wL.js} +21 -4
- package/dist/{protected-B3_P7xuw.d.ts → protected-RFGpakN9.d.ts} +16 -8
- package/dist/{provider-Bi-0HNL3.js → provider-B1al-AZz.js} +2 -2
- package/dist/{provider-kwHC9CZD.d.ts → provider-DILL9oPK.d.ts} +1 -1
- package/dist/{provider-store-Ctt-81Ni.js → provider-store-DM6DNcta.js} +2 -2
- package/dist/pull-CvpINcMK.js +1 -0
- package/dist/pull-jEwbf80J.js +256 -0
- package/dist/push-BD4f15co.js +116 -0
- package/dist/pushed-policy-CqtxkV4G.js +238 -0
- package/dist/pushed-policy-DCW91KQU.d.ts +57 -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 +29 -25
- 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-Bkm-Ne4l.d.ts} +1 -1
- package/dist/{replay-BsOyTrdV.js → replay-Du1tJjG7.js} +2 -1
- package/dist/{request-context-BVM7aWNs.js → request-context-C81Pip9n.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-BAqP4q66.js +336 -0
- package/dist/{rls-BEktUaqg.js → rls-DTvYd-lI.js} +288 -690
- package/dist/{role-builder-B4GbKM-i.js → role-builder-uWQZ4v84.js} +14 -207
- package/dist/{rpc-nYC3cR_u.js → rpc-VSl5ylaQ.js} +7 -7
- package/dist/run-CUKuz0A8.js +723 -0
- package/dist/run-DDwUaJDU.js +1 -0
- package/dist/run-ticket-DocwaTKn.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-BCXRuXca.js} +16 -14
- package/dist/scan-qvOe0hS3.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-C3WXAHZj.js +453 -0
- package/dist/{server-types-DdqBwZN_.d.ts → server-types-CKQiCnON.d.ts} +51 -68
- package/dist/{sha256-BO0swRXL.js → sha256-D9ihqmvd.js} +8 -1
- package/dist/{shared-1uhI-e-b.js → shared-BAK8t4Uo.js} +20 -9
- package/dist/{shared-JhMeOsDF.js → shared-DvvFzYXe.js} +8 -9
- package/dist/signals-D3NcTKUS.js +32 -0
- package/dist/sink-4-eQIRWf.d.ts +225 -0
- package/dist/sink-BEZSlMS_.js +957 -0
- package/dist/{skills-BZdRQkxs.js → skills-B6lVdD_W.js} +13 -6
- package/dist/skills-CTYwkl44.js +51 -0
- package/dist/snapshot-B7DkYg6g.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-PXI-vGpY.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-Xc4zkszI.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-Cu2m75uo.js +1860 -0
- package/dist/ssf/index.d.ts +4 -4
- package/dist/ssf/index.js +384 -47
- package/dist/standard-webhooks-DgFFD-Ga.js +228 -0
- package/dist/standard-webhooks-rbD7LS6h.d.ts +88 -0
- package/dist/storage-C2bWdvJH.js +132 -0
- package/dist/{store-ILkLUj_o.js → store-BDutJkDL.js} +40 -53
- package/dist/{store-options-CbUHDoSe.js → store-options-u0ycEe8s.js} +26 -21
- package/dist/{stores-Cxz_80g-.d.ts → stores-BUGNbJTt.d.ts} +7 -8
- package/dist/{stores-BHXdSbw9.js → stores-CGhM8BN_.js} +2 -2
- package/dist/{stream-Dwsg6WwE.d.ts → stream-CeCMJmBB.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-By_frk3U.js +92 -0
- package/dist/{supabase-hook-Cva3ikXz.js → supabase-hook-BMoEhZir.js} +960 -64
- package/dist/supabase-hook-CCw5m35C.js +1 -0
- package/dist/{supabase-C1TWlnYt.js → supabase-x5JtR2tc.js} +99 -206
- 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-8RnwUAvE.d.ts +107 -0
- package/dist/{store-9KO4BlkB.d.ts → types-B3_ooZgZ.d.ts} +100 -75
- package/dist/{types-Br9IXUBG.d.ts → types-BdtSDbBO.d.ts} +77 -17
- package/dist/types-BtHtcKMr.d.ts +157 -0
- package/dist/{types-CqrjB9o6.d.ts → types-BzzaHxt3.d.ts} +23 -11
- package/dist/types-C791HFu9.d.ts +332 -0
- package/dist/types-C863OQiR.d.ts +57 -0
- package/dist/{types-ByUo56un.d.ts → types-CVZSNocA.d.ts} +23 -22
- package/dist/{types-DHrmBJLH.d.ts → types-CX7AvRqP.d.ts} +7 -7
- package/dist/types-C_IiEs64.d.ts +65 -0
- package/dist/{types-7rJVLWe5.d.ts → types-Dfv0aTER.d.ts} +63 -11
- package/dist/types-DqzsnlSA.js +67 -0
- package/dist/{types-DpWfQdSh.d.ts → types-Druu9wLM.d.ts} +46 -11
- package/dist/{types-CIlTojhq.d.ts → types-_WhUP7ud.d.ts} +9 -6
- package/dist/{types-CUcFZfpU.d.ts → types-lUlG3TVd.d.ts} +2 -1
- package/dist/unplugin/index.d.ts +1 -1
- package/dist/unplugin/index.js +2 -2
- package/dist/usage-CRVl9V3t.js +32 -0
- package/dist/usage-CZpSQP6L.js +1 -0
- package/dist/{usage-CG9nOYZw.js → usage-SveTRTyr.js} +54 -11
- package/dist/{validation-error-BSSw0l_8.d.ts → validation-error-DHUrAkku.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-BaAKx7t6.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-CN8H_9UF.d.ts} +67 -2
- package/dist/vue/index.d.ts +9 -10
- package/dist/vue/index.js +8 -8
- package/dist/waiter-B986w1oK.d.ts +36 -0
- package/dist/waiter-BGUtGYoU.js +67 -0
- package/dist/watch--ovlPOc0.js +1 -0
- package/dist/{watch-zeucB7eF.js → watch-vea54PRw.js} +44 -5
- package/dist/webmcp/index.d.ts +2 -2
- package/dist/webmcp/index.js +3 -3
- package/dist/where-scope-C9vfEphl.js +306 -0
- package/dist/who-can-DWBAcaCQ.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-C5jC6sKI.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 +10 -9
- 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 +6 -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/index-UdVQgq48.d.ts +0 -550
- 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
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { E as PermissionTree, w as Permission } from "./vocabulary-CN8H_9UF.js";
|
|
2
|
+
//#region src/core/operation-risks.d.ts
|
|
3
|
+
type OperationRisk = "low" | "medium" | "high" | "critical";
|
|
4
|
+
/** Every `meta.risk` level, lowest first. */
|
|
5
|
+
declare const OPERATION_RISKS: readonly OperationRisk[];
|
|
6
|
+
declare function isOperationRisk(value: unknown): value is OperationRisk;
|
|
7
|
+
//#endregion
|
|
8
|
+
//#region src/core/operations.d.ts
|
|
9
|
+
type OperationEffect = "read" | "write" | "delete" | "send" | "spend" | "external";
|
|
10
|
+
/** Plain JSON a host reads to label, confirm or gate an operation; PermDock never decides on it. */
|
|
11
|
+
type OperationMeta = {
|
|
12
|
+
readonly risk?: OperationRisk;
|
|
13
|
+
/** What running the operation does, each effect at most once. */
|
|
14
|
+
readonly effects?: readonly OperationEffect[];
|
|
15
|
+
readonly title?: string;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Loads the row the check runs on from the operation's input, the binding
|
|
19
|
+
* every surface shares. The row is validated against the permission's
|
|
20
|
+
* resource schema like any request-derived data (invariant 9).
|
|
21
|
+
*/
|
|
22
|
+
type OperationData<TInput = never> = {
|
|
23
|
+
load(input: TInput): unknown;
|
|
24
|
+
}["load"];
|
|
25
|
+
/** One entry of the object passed to `defineOperations`. */
|
|
26
|
+
type OperationDefinition = {
|
|
27
|
+
readonly permission: Permission;
|
|
28
|
+
readonly data?: OperationData<unknown>;
|
|
29
|
+
/** The permission each result row is filtered by. */
|
|
30
|
+
readonly results?: Permission;
|
|
31
|
+
readonly meta?: OperationMeta;
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* A permission-bound action that agent tools, workflow nodes, MCP operations,
|
|
35
|
+
* HTTP routes and chat commands read by name. `TInput` is the parameter type
|
|
36
|
+
* of `data`; an operation without `data` takes `undefined`.
|
|
37
|
+
*/
|
|
38
|
+
type Operation<TInput = unknown, TName extends string = string, TPermission extends Permission = Permission> = {
|
|
39
|
+
readonly name: TName;
|
|
40
|
+
readonly permission: TPermission;
|
|
41
|
+
readonly data?: OperationData<TInput>;
|
|
42
|
+
readonly results?: Permission;
|
|
43
|
+
readonly meta: OperationMeta;
|
|
44
|
+
};
|
|
45
|
+
/** The input type of an operation: the parameter type of its `data` loader. */
|
|
46
|
+
type OperationInput<TOperation> = TOperation extends Operation<infer TInput> ? TInput : never;
|
|
47
|
+
type InputOf<TDefinition> = TDefinition extends {
|
|
48
|
+
readonly data: (input: infer TInput) => unknown;
|
|
49
|
+
} ? TInput : undefined;
|
|
50
|
+
type OperationMap<TDefinitions extends Record<string, OperationDefinition> = Record<string, OperationDefinition>> = { readonly [TName in keyof TDefinitions & string]: Operation<InputOf<TDefinitions[TName]>, TName, TDefinitions[TName]["permission"]>; };
|
|
51
|
+
/**
|
|
52
|
+
* Binds each named operation to a permission of `permissions`. Throws at
|
|
53
|
+
* definition time for a permission or `results` outside the tree, a name that
|
|
54
|
+
* is not 1 to 128 of `A-Z a-z 0-9 _ . -` or repeats another case-insensitively,
|
|
55
|
+
* a `data` that is not a function, or meta outside the closed lists.
|
|
56
|
+
*/
|
|
57
|
+
declare function defineOperations<const TDefinitions extends Record<string, OperationDefinition>>(permissions: PermissionTree, definitions: TDefinitions): OperationMap<TDefinitions>;
|
|
58
|
+
//#endregion
|
|
59
|
+
export { OperationInput as a, defineOperations as c, isOperationRisk as d, OperationEffect as i, OPERATION_RISKS as l, OperationData as n, OperationMap as o, OperationDefinition as r, OperationMeta as s, Operation as t, OperationRisk as u };
|
package/dist/orpc/index.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { t as
|
|
1
|
+
import { T as Policy, j as PolicyVocabulary, rr as Principal } from "../policy-types-n0uRTsW8.js";
|
|
2
|
+
import { w as Permission } from "../vocabulary-CN8H_9UF.js";
|
|
3
|
+
import { r as PermDock } from "../permdock-SV8ZINYT.js";
|
|
4
|
+
import { n as RevocationFeed } from "../revocations-R07lFBnX.js";
|
|
5
|
+
import { D as ConnectionOptions, T as Connection, i as OpenApiHooks } from "../server-types-CKQiCnON.js";
|
|
6
|
+
import { t as ServerAdapterOptions } from "../bind-DOyrv6zi.js";
|
|
7
|
+
import { t as StreamProtectOptions } from "../stream-CeCMJmBB.js";
|
|
7
8
|
import { Middleware } from "@orpc/server";
|
|
8
9
|
//#region src/orpc/create.d.ts
|
|
9
10
|
type OrpcMiddlewareOpts<TCtx extends object = object, TInput = unknown> = {
|
|
@@ -25,7 +26,7 @@ type OrpcPermDockOptions<TCtx extends object = object, TUser = unknown> = Server
|
|
|
25
26
|
readonly revocations?: RevocationFeed;
|
|
26
27
|
};
|
|
27
28
|
type OrpcOpenApiHooks<TCtx extends object = object, V extends PolicyVocabulary = PolicyVocabulary> = {
|
|
28
|
-
readonly protect: (permission: Permission | null,
|
|
29
|
+
readonly protect: (permission: Permission | null, data?: (opts: OrpcMiddlewareOpts<TCtx>) => unknown, protectOptions?: StreamProtectOptions) => OrpcMiddleware<TCtx, unknown, V>;
|
|
29
30
|
readonly security: (permission: Permission) => {
|
|
30
31
|
readonly security: readonly Record<string, readonly string[]>[];
|
|
31
32
|
readonly "x-permdock-permissions": readonly string[];
|
|
@@ -33,11 +34,13 @@ type OrpcOpenApiHooks<TCtx extends object = object, V extends PolicyVocabulary =
|
|
|
33
34
|
readonly securitySchemes: OpenApiHooks["securitySchemes"];
|
|
34
35
|
};
|
|
35
36
|
type OrpcPermDock<TCtx extends object = object, V extends PolicyVocabulary = PolicyVocabulary> = {
|
|
36
|
-
|
|
37
|
-
readonly
|
|
37
|
+
/** The `PermDock` for one procedure call, for code the middleware does not run before. */
|
|
38
|
+
readonly getPermDock: (opts: OrpcMiddlewareOpts<TCtx>) => Promise<PermDock<V>>;
|
|
39
|
+
readonly middleware: () => OrpcMiddleware<TCtx, unknown, V>;
|
|
40
|
+
readonly protect: (permission: Permission | null, data?: (opts: OrpcMiddlewareOpts<TCtx>) => unknown, protectOptions?: StreamProtectOptions) => OrpcMiddleware<TCtx, unknown, V>;
|
|
38
41
|
/** A long-lived connection for the request behind `context`. */
|
|
39
42
|
readonly connection: (opts: OrpcMiddlewareOpts<TCtx>, connectionOptions?: ConnectionOptions) => Promise<Connection>;
|
|
40
|
-
readonly permdockHandler: (request: Request) => Promise<Response>;
|
|
43
|
+
readonly permdockHandler: () => (request: Request) => Promise<Response>;
|
|
41
44
|
readonly openapi: OrpcOpenApiHooks<TCtx, V>;
|
|
42
45
|
};
|
|
43
46
|
/**
|
package/dist/orpc/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { t as compact } from "../compact-CAf557ZB.js";
|
|
2
|
-
import { o as isPermission } from "../permission-registry-
|
|
2
|
+
import { o as isPermission } from "../permission-registry-Br4jSNVi.js";
|
|
3
3
|
import { o as problemMessage } from "../http-BBoKefeS.js";
|
|
4
|
-
import { t as problemFromError } from "../map-error-
|
|
5
|
-
import { n as attached } from "../bind-
|
|
6
|
-
import {
|
|
7
|
-
import { i as rpcCode, n as guardStream, r as problemBody, t as bindRpcKernel } from "../rpc-
|
|
4
|
+
import { t as problemFromError } from "../map-error-Dr70oA_3.js";
|
|
5
|
+
import { n as attached } from "../bind-CAvgUuKs.js";
|
|
6
|
+
import { i as isAsyncIterable, o as reloadAfter } from "../stream-CvdUS9V1.js";
|
|
7
|
+
import { i as rpcCode, n as guardStream, r as problemBody, t as bindRpcKernel } from "../rpc-VSl5ylaQ.js";
|
|
8
8
|
import { ORPCError } from "@orpc/server";
|
|
9
9
|
//#region src/orpc/create.ts
|
|
10
10
|
function toOpts(mw, input, next) {
|
|
@@ -83,10 +83,14 @@ function createPermDock(policy, options) {
|
|
|
83
83
|
if (typeof bound !== "object" || bound === null || !issued.has(bound) || issued.get(bound) !== scope.tenant) return;
|
|
84
84
|
return bound;
|
|
85
85
|
};
|
|
86
|
-
const
|
|
86
|
+
const getPermDock = async (opts) => {
|
|
87
|
+
const scope = await scopeOf(opts);
|
|
88
|
+
return boundFor(opts.context, scope) ?? issue(await kernel.getPermDock(bind(opts), scope), scope);
|
|
89
|
+
};
|
|
90
|
+
const middleware = () => ((mwOptions, input) => {
|
|
87
91
|
const opts = toOpts(mwOptions, input, mwOptions.next);
|
|
88
92
|
const request = bind(opts);
|
|
89
|
-
return scopeOf(opts).then((scope) => attached(async () => boundFor(opts.context, scope) ?? issue(await kernel.
|
|
93
|
+
return scopeOf(opts).then((scope) => attached(async () => boundFor(opts.context, scope) ?? issue(await kernel.getPermDock(request, scope), scope))).then((instance) => {
|
|
90
94
|
if (!instance.ok) return throwOrpcError(instance.response, mwOptions.errors);
|
|
91
95
|
const nextCtx = {
|
|
92
96
|
...opts.context,
|
|
@@ -97,17 +101,17 @@ function createPermDock(policy, options) {
|
|
|
97
101
|
});
|
|
98
102
|
});
|
|
99
103
|
/** Wraps an event iterator so revocation ends it and unreadable items drop. */
|
|
100
|
-
const guardOutput = async (result, opts, permission,
|
|
104
|
+
const guardOutput = async (result, opts, permission, data, protectOptions, errors) => {
|
|
101
105
|
const output = result !== null && typeof result === "object" && "output" in result ? result.output : void 0;
|
|
102
106
|
if (!isAsyncIterable(output)) return result;
|
|
103
107
|
return {
|
|
104
108
|
...result,
|
|
105
|
-
output: await guardStream(output, (connectionOptions) => connection(opts, connectionOptions), permission,
|
|
109
|
+
output: await guardStream(output, (connectionOptions) => connection(opts, connectionOptions), permission, data, protectOptions, { onRevoked: (error) => orpcErrorFrom(error, errors) })
|
|
106
110
|
};
|
|
107
111
|
};
|
|
108
|
-
const protect = (permission,
|
|
112
|
+
const protect = (permission, data, protectOptions) => tagged(permission, (async (mwOptions, input) => {
|
|
109
113
|
const opts = toOpts(mwOptions, input, mwOptions.next);
|
|
110
|
-
const { request, scope, guard } = await runGuard(permission,
|
|
114
|
+
const { request, scope, guard } = await runGuard(permission, data, opts, protectOptions);
|
|
111
115
|
if (guard.ok) {
|
|
112
116
|
const nextCtx = {
|
|
113
117
|
...opts.context,
|
|
@@ -115,11 +119,11 @@ function createPermDock(policy, options) {
|
|
|
115
119
|
permdockData: guard.data
|
|
116
120
|
};
|
|
117
121
|
attach(nextCtx, request);
|
|
118
|
-
return guardOutput(await mapDownstream(() => mwOptions.next({ context: nextCtx }), mwOptions.errors), opts, permission,
|
|
122
|
+
return guardOutput(await mapDownstream(() => mwOptions.next({ context: nextCtx }), mwOptions.errors), opts, permission, data === void 0 ? void 0 : reloadAfter(guard.data, () => data(opts)), protectOptions, mwOptions.errors);
|
|
119
123
|
}
|
|
120
124
|
return throwOrpcError(guard.response, mwOptions.errors);
|
|
121
125
|
}));
|
|
122
|
-
const
|
|
126
|
+
const handler = (request) => {
|
|
123
127
|
return evaluate(request, {
|
|
124
128
|
context: { req: request },
|
|
125
129
|
path: ["permdock"],
|
|
@@ -128,10 +132,11 @@ function createPermDock(policy, options) {
|
|
|
128
132
|
};
|
|
129
133
|
const kernelOpenApi = kernel.openapi;
|
|
130
134
|
return {
|
|
131
|
-
|
|
135
|
+
getPermDock,
|
|
136
|
+
middleware,
|
|
132
137
|
protect,
|
|
133
138
|
connection,
|
|
134
|
-
permdockHandler,
|
|
139
|
+
permdockHandler: () => handler,
|
|
135
140
|
openapi: {
|
|
136
141
|
protect,
|
|
137
142
|
security: kernelOpenApi.security,
|
package/dist/otel/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { j as PolicyVocabulary
|
|
2
|
-
import {
|
|
1
|
+
import { j as PolicyVocabulary } from "../policy-types-n0uRTsW8.js";
|
|
2
|
+
import { r as PermDock } from "../permdock-SV8ZINYT.js";
|
|
3
|
+
import { a as OtelOptions, i as OtelApi, n as GEN_AI_TOOL_CALL_ID, o as OtelWrap, r as GEN_AI_TOOL_NAME, s as StructuralLogger, t as GENAI_SEMCONV_PIN } from "../types-lUlG3TVd.js";
|
|
3
4
|
//#region src/otel/instrument.d.ts
|
|
4
5
|
/**
|
|
5
6
|
* Listens on one instance. Spans carry no duration and no histogram is
|
package/dist/otel/index.js
CHANGED
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
import { t as compact } from "../compact-CAf557ZB.js";
|
|
2
|
-
import { n as wrapPermDock } from "../wrap-
|
|
3
|
-
import { r as appObligationNames } from "../ocsf-
|
|
2
|
+
import { n as wrapPermDock } from "../wrap-gX61EtpB.js";
|
|
3
|
+
import { r as appObligationNames } from "../ocsf-BFp-PZZA.js";
|
|
4
4
|
//#region src/otel/types.ts
|
|
5
5
|
const GENAI_SEMCONV_PIN = "1.37.0";
|
|
6
6
|
const GEN_AI_TOOL_NAME = "gen_ai.tool.name";
|
|
7
7
|
const GEN_AI_TOOL_CALL_ID = "gen_ai.tool.call.id";
|
|
8
|
+
const GEN_AI_AGENT_ID = "gen_ai.agent.id";
|
|
9
|
+
const GEN_AI_REQUEST_MODEL = "gen_ai.request.model";
|
|
10
|
+
const USER_ID = "user.id";
|
|
11
|
+
const USER_ROLES = "user.roles";
|
|
12
|
+
const ERROR_TYPE = "error.type";
|
|
8
13
|
//#endregion
|
|
9
14
|
//#region src/otel/instrument.ts
|
|
10
15
|
const FORBIDDEN = /* @__PURE__ */ new Set([
|
|
@@ -80,9 +85,26 @@ function omitPath(attributes, path) {
|
|
|
80
85
|
matched: true
|
|
81
86
|
};
|
|
82
87
|
}
|
|
88
|
+
/**
|
|
89
|
+
* `error.type` for a decision that failed: a boundary validation failure
|
|
90
|
+
* always, and the first denial reason when `errorOnDeny` marks every denial
|
|
91
|
+
* an error.
|
|
92
|
+
*/
|
|
93
|
+
function errorType(event, options) {
|
|
94
|
+
if (event.outcome !== "denied") return;
|
|
95
|
+
if (event.denials?.some((denial) => denial.reason === "validation") === true) return "validation";
|
|
96
|
+
return options.errorOnDeny === true ? event.denials?.[0]?.reason : void 0;
|
|
97
|
+
}
|
|
83
98
|
function attributesOf(event, options, parent) {
|
|
84
99
|
const extra = options.attributes === void 0 ? {} : options.attributes(event);
|
|
100
|
+
const actor = event.subject.actor;
|
|
101
|
+
const scopes = event.subject.delegation?.scope?.split(" ").filter((scope) => scope !== "");
|
|
85
102
|
let redacted = compact({
|
|
103
|
+
[USER_ID]: event.subject.principal?.id,
|
|
104
|
+
[USER_ROLES]: event.subject.principal?.roles,
|
|
105
|
+
[GEN_AI_AGENT_ID]: actor?.kind === "agent" ? actor.id : void 0,
|
|
106
|
+
[GEN_AI_REQUEST_MODEL]: event.model ?? parent?.attributes?.["gen_ai.request.model"],
|
|
107
|
+
[ERROR_TYPE]: errorType(event, options),
|
|
86
108
|
"permdock.outcome": event.outcome,
|
|
87
109
|
"permdock.permission": event.permission,
|
|
88
110
|
"permdock.scope": event.scope,
|
|
@@ -91,10 +113,11 @@ function attributesOf(event, options, parent) {
|
|
|
91
113
|
"permdock.subject.id": event.subject.principal?.id,
|
|
92
114
|
"permdock.actor.id": event.subject.actor?.id,
|
|
93
115
|
"permdock.actor.kind": event.subject.actor?.kind,
|
|
94
|
-
"permdock.
|
|
116
|
+
"permdock.support_session.id": event.subject.supportSession?.id,
|
|
117
|
+
"permdock.delegation.scopes": scopes,
|
|
95
118
|
"permdock.matched.role": event.matched?.role,
|
|
96
119
|
"permdock.matched.name": event.matched?.name,
|
|
97
|
-
"permdock.obligations": appObligationNames(event)
|
|
120
|
+
"permdock.obligations": appObligationNames(event),
|
|
98
121
|
"permdock.denials.count": event.denials?.length,
|
|
99
122
|
"permdock.token": event.token,
|
|
100
123
|
"permdock.validate": event.trusted ? "trusted" : "boundary",
|
|
@@ -135,9 +158,9 @@ function recordSignals(event, options, api, timing) {
|
|
|
135
158
|
span.setAttributes?.(attributes);
|
|
136
159
|
if (event.outcome === "denied") {
|
|
137
160
|
span.addEvent?.("permdock.denied", compact({
|
|
138
|
-
role: event.denials?.map((denial) => denial.role
|
|
139
|
-
reason: event.denials?.map((denial) => denial.reason)
|
|
140
|
-
alternatives: event.alternatives
|
|
161
|
+
role: event.denials?.map((denial) => denial.role ?? ""),
|
|
162
|
+
reason: event.denials?.map((denial) => denial.reason),
|
|
163
|
+
alternatives: event.alternatives
|
|
141
164
|
}));
|
|
142
165
|
if (event.denials?.some((denial) => denial.reason === "validation") === true) span.recordException?.(/* @__PURE__ */ new Error("validation"));
|
|
143
166
|
if (options.errorOnDeny === true) span.setStatus?.({ code: SPAN_STATUS_ERROR });
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { s as cliVersion } from "./version-CEbQ5UeM.js";
|
|
2
|
+
import { t as DOCS_BASE } from "./manifest-dvL2XEe1.js";
|
|
3
|
+
//#region src/cli/core/output.ts
|
|
4
|
+
const CLI_RESULT_SCHEMA = "https://permdock.com/schemas/cli-result-v1.json";
|
|
5
|
+
function envelope(input) {
|
|
6
|
+
return {
|
|
7
|
+
$schema: CLI_RESULT_SCHEMA,
|
|
8
|
+
status: input.status,
|
|
9
|
+
...input.data === void 0 ? {} : { data: input.data },
|
|
10
|
+
...input.error === void 0 ? {} : { error: input.error },
|
|
11
|
+
...input.next === void 0 || input.next.length === 0 ? {} : { next: input.next }
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
/** A command's JSON report as data; text that is not JSON becomes `{ message }`. */
|
|
15
|
+
function dataOf(output) {
|
|
16
|
+
const text = output.trim();
|
|
17
|
+
if (text === "") return;
|
|
18
|
+
try {
|
|
19
|
+
return JSON.parse(text);
|
|
20
|
+
} catch {
|
|
21
|
+
return { message: text };
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
const LOCATION = /^([^\s:]+\.[A-Za-z0-9]+):(\d+)\b/u;
|
|
25
|
+
/**
|
|
26
|
+
* A finding whose `file` and `line` default to the `path:line` a message
|
|
27
|
+
* opens with, the form doctor, usage and scan already print.
|
|
28
|
+
*/
|
|
29
|
+
function findingOf(input) {
|
|
30
|
+
if (input.file !== void 0) return input;
|
|
31
|
+
const match = LOCATION.exec(input.message);
|
|
32
|
+
if (match?.[1] === void 0 || match[2] === void 0) return input;
|
|
33
|
+
return {
|
|
34
|
+
...input,
|
|
35
|
+
file: match[1],
|
|
36
|
+
line: Number(match[2])
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
function escapeData(value) {
|
|
40
|
+
return value.replaceAll("%", "%25").replaceAll("\r", "%0D").replaceAll("\n", "%0A");
|
|
41
|
+
}
|
|
42
|
+
function escapeProperty(value) {
|
|
43
|
+
return escapeData(value).replaceAll(":", "%3A").replaceAll(",", "%2C");
|
|
44
|
+
}
|
|
45
|
+
/** GitHub Actions workflow commands, one per finding. */
|
|
46
|
+
function githubAnnotations(findings) {
|
|
47
|
+
return findings.map((finding) => {
|
|
48
|
+
return `::${finding.severity === "error" ? "error" : finding.severity === "warning" ? "warning" : "notice"} ${[
|
|
49
|
+
...finding.file === void 0 ? [] : [`file=${escapeProperty(finding.file)}`],
|
|
50
|
+
...finding.line === void 0 ? [] : [`line=${String(finding.line)}`],
|
|
51
|
+
`title=${escapeProperty(finding.code)}`
|
|
52
|
+
].join(",")}::${escapeData(finding.fix === void 0 ? finding.message : `${finding.message}\nFix: ${finding.fix}`)}`;
|
|
53
|
+
}).join("\n");
|
|
54
|
+
}
|
|
55
|
+
/** A SARIF 2.1.0 log with one run, one rule per finding code. */
|
|
56
|
+
function sarifLog(command, findings) {
|
|
57
|
+
const rules = [...new Set(findings.map((finding) => finding.code))].map((code) => {
|
|
58
|
+
const sample = findings.find((finding) => finding.code === code);
|
|
59
|
+
const rule = { id: code };
|
|
60
|
+
if (sample?.docs !== void 0) rule.helpUri = sample.docs;
|
|
61
|
+
if (sample?.fix !== void 0) rule.help = { text: sample.fix };
|
|
62
|
+
return rule;
|
|
63
|
+
});
|
|
64
|
+
const results = findings.map((finding) => ({
|
|
65
|
+
ruleId: finding.code,
|
|
66
|
+
level: finding.severity === "error" ? "error" : finding.severity === "warning" ? "warning" : "note",
|
|
67
|
+
message: { text: finding.message },
|
|
68
|
+
...finding.file === void 0 ? {} : { locations: [{ physicalLocation: {
|
|
69
|
+
artifactLocation: { uri: finding.file },
|
|
70
|
+
...finding.line === void 0 ? {} : { region: { startLine: finding.line } }
|
|
71
|
+
} }] }
|
|
72
|
+
}));
|
|
73
|
+
return `${JSON.stringify({
|
|
74
|
+
$schema: "https://json.schemastore.org/sarif-2.1.0.json",
|
|
75
|
+
version: "2.1.0",
|
|
76
|
+
runs: [{
|
|
77
|
+
tool: { driver: {
|
|
78
|
+
name: `permdock ${command}`,
|
|
79
|
+
version: cliVersion(),
|
|
80
|
+
informationUri: DOCS_BASE,
|
|
81
|
+
rules
|
|
82
|
+
} },
|
|
83
|
+
results
|
|
84
|
+
}]
|
|
85
|
+
}, null, 2)}\n`;
|
|
86
|
+
}
|
|
87
|
+
//#endregion
|
|
88
|
+
export { sarifLog as a, githubAnnotations as i, envelope as n, findingOf as r, dataOf as t };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { t as SPLIT_PARTS } from "./output-files-DhRBBE4n.js";
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { t as shortDiff } from "./text-diff-
|
|
1
|
+
import { i as dateAt } from "./time-DkWjdL98.js";
|
|
2
|
+
import { t as shortDiff } from "./text-diff-BQcUapOb.js";
|
|
3
|
+
import { t as applyFiles } from "./files-C5ZI27eV.js";
|
|
3
4
|
import { existsSync, readFileSync, readdirSync, statSync } from "node:fs";
|
|
4
|
-
import { resolve } from "node:path";
|
|
5
|
+
import { basename, dirname, resolve } from "node:path";
|
|
5
6
|
/** How `path` on disk differs from `expected`; `undefined` when `same` holds. */
|
|
6
7
|
function fileDrift(path, expected, same = (a, b) => a === b) {
|
|
7
8
|
if (!existsSync(path)) return { kind: "missing" };
|
|
@@ -22,25 +23,19 @@ function driftOf(cwd, files) {
|
|
|
22
23
|
}
|
|
23
24
|
return drift;
|
|
24
25
|
}
|
|
25
|
-
/** Writes every file but the stdout ones,
|
|
26
|
+
/** Writes every file but the stdout ones, all or nothing, and returns the stdout text for printing. */
|
|
26
27
|
function writeOutputFiles(cwd, files) {
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
continue;
|
|
33
|
-
}
|
|
34
|
-
const path = resolve(cwd, file.rel);
|
|
35
|
-
writeFileEnsuringDir(path, file.text);
|
|
36
|
-
wrote.push(file.rel);
|
|
37
|
-
}
|
|
28
|
+
const onDisk = files.filter((file) => file.rel !== "-");
|
|
29
|
+
applyFiles(cwd, onDisk.map((file) => ({
|
|
30
|
+
path: file.rel,
|
|
31
|
+
text: file.text
|
|
32
|
+
})));
|
|
38
33
|
return {
|
|
39
|
-
wrote,
|
|
40
|
-
printed:
|
|
34
|
+
wrote: onDisk.map((file) => file.rel),
|
|
35
|
+
printed: files.filter((file) => file.rel === "-").map((file) => file.text.trimEnd()).join("\n")
|
|
41
36
|
};
|
|
42
37
|
}
|
|
43
|
-
const
|
|
38
|
+
const SPLIT_PARTS = [
|
|
44
39
|
"helpers",
|
|
45
40
|
"seeds",
|
|
46
41
|
"indexes",
|
|
@@ -51,8 +46,8 @@ const PARTS = [
|
|
|
51
46
|
function parseSplit(raw) {
|
|
52
47
|
if (raw === void 0) return;
|
|
53
48
|
const names = raw.split(",").map((name) => name.trim()).filter((name) => name !== "");
|
|
54
|
-
if (names.filter((name) => !
|
|
55
|
-
return
|
|
49
|
+
if (names.filter((name) => !SPLIT_PARTS.some((part) => part === name)).length > 0 || names.length === 0) return `rls generate --split takes helpers, seeds, indexes, policies and hook, got '${raw}'`;
|
|
50
|
+
return SPLIT_PARTS.filter((part) => names.includes(part));
|
|
56
51
|
}
|
|
57
52
|
/** The path of one split part: `{part}` in `out` replaced by the part name. */
|
|
58
53
|
function partPath(out, part) {
|
|
@@ -83,7 +78,8 @@ function isSeedsDirectory(cwd, out) {
|
|
|
83
78
|
* A generated data migration at `out`: a file, `-` for stdout, or a
|
|
84
79
|
* migrations directory that gets a new versioned file only when the newest
|
|
85
80
|
* one starting with `marker` differs. With `check`, the planned file is
|
|
86
|
-
* always returned, so drift names it.
|
|
81
|
+
* always returned, so drift names it. `reserved` lists the files this run
|
|
82
|
+
* already plans, so two data migrations never share a version.
|
|
87
83
|
*/
|
|
88
84
|
function dataMigrationFile(input) {
|
|
89
85
|
if (!isSeedsDirectory(input.cwd, input.out)) return {
|
|
@@ -91,7 +87,7 @@ function dataMigrationFile(input) {
|
|
|
91
87
|
rel: input.out,
|
|
92
88
|
text: input.text
|
|
93
89
|
};
|
|
94
|
-
const planned = seedsMigration(input.cwd, input.out, input.marker, input.text, input.now, input.part);
|
|
90
|
+
const planned = seedsMigration(input.cwd, input.out, input.marker, input.text, input.now, input.part, input.reserved);
|
|
95
91
|
return !planned.current || input.check ? {
|
|
96
92
|
part: input.part,
|
|
97
93
|
rel: planned.rel,
|
|
@@ -113,7 +109,7 @@ function nextMigrationVersion(names, now) {
|
|
|
113
109
|
const stamp = VERSION_PREFIX.exec(name)?.[0];
|
|
114
110
|
return stamp === void 0 ? [] : [Date.UTC(Number(stamp.slice(0, 4)), Number(stamp.slice(4, 6)) - 1, Number(stamp.slice(6, 8)), Number(stamp.slice(8, 10)), Number(stamp.slice(10, 12)), Number(stamp.slice(12, 14)))];
|
|
115
111
|
});
|
|
116
|
-
return times.length === 0 ? migrationVersion(now) : migrationVersion(
|
|
112
|
+
return times.length === 0 ? migrationVersion(now) : migrationVersion(dateAt({ epochMilliseconds: Math.max(...times) + 1e3 }));
|
|
117
113
|
}
|
|
118
114
|
/**
|
|
119
115
|
* The seeds part in a migrations directory: the newest migration there that
|
|
@@ -122,8 +118,10 @@ function nextMigrationVersion(names, now) {
|
|
|
122
118
|
* (\`nextMigrationVersion\`), so a regeneration of the same directory names it
|
|
123
119
|
* the same. \`current\` is false when a new one is due. \`label\` replaces
|
|
124
120
|
* \`seeds\` in the file name for the other generated data migrations.
|
|
121
|
+
* \`reserved\` holds paths, relative to \`cwd\`, that this run writes; the ones
|
|
122
|
+
* in \`dir\` count as migrations already there.
|
|
125
123
|
*/
|
|
126
|
-
function seedsMigration(cwd, dir, marker, text, now, label = "seeds") {
|
|
124
|
+
function seedsMigration(cwd, dir, marker, text, now, label = "seeds", reserved = []) {
|
|
127
125
|
const base = dir.endsWith("/") ? dir.slice(0, -1) : dir;
|
|
128
126
|
const path = resolve(cwd, base);
|
|
129
127
|
const latest = existsSync(path) ? readdirSync(path).filter((name) => name.endsWith(".sql")).toSorted().toReversed().find((name) => readFileSync(resolve(path, name), "utf8").startsWith(marker)) : void 0;
|
|
@@ -132,9 +130,9 @@ function seedsMigration(cwd, dir, marker, text, now, label = "seeds") {
|
|
|
132
130
|
current: true
|
|
133
131
|
};
|
|
134
132
|
return {
|
|
135
|
-
rel: `${base}/${nextMigrationVersion(existsSync(path) ? readdirSync(path) : [], now)}_permdock_${label}.sql`,
|
|
133
|
+
rel: `${base}/${nextMigrationVersion([...existsSync(path) ? readdirSync(path) : [], ...reserved.filter((rel) => resolve(cwd, dirname(rel)) === path).map((rel) => basename(rel))], now)}_permdock_${label}.sql`,
|
|
136
134
|
current: false
|
|
137
135
|
};
|
|
138
136
|
}
|
|
139
137
|
//#endregion
|
|
140
|
-
export {
|
|
138
|
+
export { isSeedsDirectory as a, parseSplit as c, seedsMigration as d, writeOutputFiles as f, fileDrift as i, partPath as l, dataMigrationFile as n, migrationVersion as o, driftOf as r, nextMigrationVersion as s, SPLIT_PARTS as t, pgDeltaPath as u };
|