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,36 @@
|
|
|
1
|
+
import { r as isRecord, t as compact } from "./compact-CAf557ZB.js";
|
|
2
|
+
//#region src/core/wire-delegation.ts
|
|
3
|
+
function toWireDelegation(delegation) {
|
|
4
|
+
if (delegation === void 0) return;
|
|
5
|
+
return compact({
|
|
6
|
+
scope: delegation.scopes?.join(" "),
|
|
7
|
+
authorization_details: delegation.authorizationDetails,
|
|
8
|
+
access: delegation.access
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
function scopeList(value) {
|
|
12
|
+
if (typeof value !== "string") return;
|
|
13
|
+
return value.split(" ").filter((item) => item.length > 0);
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* The runtime `Delegation` of a wire delegation. A field of the wrong type
|
|
17
|
+
* becomes an empty scope list, so a malformed delegation narrows to nothing.
|
|
18
|
+
*/
|
|
19
|
+
function fromWireDelegation(value) {
|
|
20
|
+
if (value === void 0) return;
|
|
21
|
+
if (!isRecord(value)) return { scopes: [] };
|
|
22
|
+
const scope = value["scope"];
|
|
23
|
+
const details = value["authorization_details"];
|
|
24
|
+
const access = value["access"];
|
|
25
|
+
if (scope !== void 0 && typeof scope !== "string" || details !== void 0 && !(Array.isArray(details) && details.every(isDetail)) || access !== void 0 && !Array.isArray(access)) return { scopes: [] };
|
|
26
|
+
return compact({
|
|
27
|
+
scopes: scopeList(scope),
|
|
28
|
+
authorizationDetails: details,
|
|
29
|
+
access
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
function isDetail(value) {
|
|
33
|
+
return isRecord(value) && typeof value["type"] === "string";
|
|
34
|
+
}
|
|
35
|
+
//#endregion
|
|
36
|
+
export { toWireDelegation as n, fromWireDelegation as t };
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { t as compact } from "./compact-CAf557ZB.js";
|
|
2
|
+
//#region src/core/wire-denial.ts
|
|
3
|
+
const IN_PROCESS = /* @__PURE__ */ new Set(["closure-error", "validation"]);
|
|
4
|
+
function jsonDetail(value) {
|
|
5
|
+
if (value === void 0 || value === null || value instanceof Error) return;
|
|
6
|
+
if (typeof value === "string" || typeof value === "boolean") return value;
|
|
7
|
+
if (typeof value === "number") return Number.isFinite(value) ? value : void 0;
|
|
8
|
+
if (typeof value !== "object") return;
|
|
9
|
+
try {
|
|
10
|
+
return JSON.parse(JSON.stringify(value));
|
|
11
|
+
} catch {
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
function wireDenial(denial) {
|
|
16
|
+
return compact({
|
|
17
|
+
role: denial.role,
|
|
18
|
+
reason: denial.reason,
|
|
19
|
+
to: denial.to,
|
|
20
|
+
detail: IN_PROCESS.has(denial.reason) ? void 0 : jsonDetail(denial.detail)
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
function wireDenials(denials) {
|
|
24
|
+
return denials.map(wireDenial);
|
|
25
|
+
}
|
|
26
|
+
//#endregion
|
|
27
|
+
export { wireDenials as t };
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { a as AutomationSource, i as AutomationRequest, l as memoryAutomationSource, n as AutomationDecision, r as AutomationMode, s as MemoryAutomationSource, t as Automation, u as parseAutomation } from "../automation-BNM3TtDo.js";
|
|
2
|
+
import { i as pollingApprovalWaiter, n as ApprovalWaiter, r as PollingApprovalWaiterOptions, t as ApprovalWaitOptions } from "../waiter-B986w1oK.js";
|
|
3
|
+
import { a as WorkflowPermDockOptions, i as WorkflowPermDock, n as AwaitApprovalOptions, o as createPermDock, r as StartAutomationResult, t as AutomationOptions } from "../create-D_NmPOdH.js";
|
|
4
|
+
import "../index-CaxrMD1A.js";
|
|
5
|
+
export { type ApprovalWaitOptions, type ApprovalWaiter, type Automation, type AutomationDecision, type AutomationMode, type AutomationOptions, type AutomationRequest, type AutomationSource, type AwaitApprovalOptions, type MemoryAutomationSource, type PollingApprovalWaiterOptions, type StartAutomationResult, type WorkflowPermDock, type WorkflowPermDockOptions, createPermDock, memoryAutomationSource, parseAutomation, pollingApprovalWaiter };
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
import { t as compact } from "../compact-CAf557ZB.js";
|
|
2
|
+
import { n as freezeDeep } from "../freeze-CrU8nQeX.js";
|
|
3
|
+
import { n as findPermission } from "../permission-registry-Br4jSNVi.js";
|
|
4
|
+
import { n as isThenable } from "../thenable-yD7SabqG.js";
|
|
5
|
+
import { n as memoryAutomationSource, r as parseAutomation } from "../automation-DVjOckjV.js";
|
|
6
|
+
import { c as withApp, t as getPermDock } from "../permdock-BrAscV28.js";
|
|
7
|
+
import { o as automationEvent } from "../sink-BEZSlMS_.js";
|
|
8
|
+
import { a as requestApproval, s as resumeDecision } from "../helpers-CBYVMjwh.js";
|
|
9
|
+
import { n as signRunTicket, r as subjectFromRunTicket } from "../run-ticket-sxFI6LAk.js";
|
|
10
|
+
import { t as pollingApprovalWaiter } from "../waiter-BGUtGYoU.js";
|
|
11
|
+
//#region src/workflow/create.ts
|
|
12
|
+
function writeQuietly(sink, event) {
|
|
13
|
+
try {
|
|
14
|
+
const written = sink.write([event]);
|
|
15
|
+
if (isThenable(written)) Promise.resolve(written).catch(() => void 0);
|
|
16
|
+
} catch {}
|
|
17
|
+
}
|
|
18
|
+
const DEFAULT_TTL = 86400;
|
|
19
|
+
function deniedStart(reason, detail) {
|
|
20
|
+
return freezeDeep({
|
|
21
|
+
outcome: "denied",
|
|
22
|
+
denials: [compact({
|
|
23
|
+
role: null,
|
|
24
|
+
reason,
|
|
25
|
+
detail
|
|
26
|
+
})]
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
async function readAutomation(source, id, tenant) {
|
|
30
|
+
try {
|
|
31
|
+
const found = await source.automation(id, compact({ tenant }));
|
|
32
|
+
const parsed = found === null ? void 0 : parseAutomation(found);
|
|
33
|
+
return parsed === void 0 || parsed.revoked === true ? void 0 : parsed;
|
|
34
|
+
} catch {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
function idOf(row) {
|
|
39
|
+
if (row === null || typeof row !== "object") return;
|
|
40
|
+
const id = Reflect.get(row, "id");
|
|
41
|
+
return typeof id === "string" ? id : void 0;
|
|
42
|
+
}
|
|
43
|
+
function targetOf(permission, data, resource) {
|
|
44
|
+
return resource ?? compact({
|
|
45
|
+
type: permission.resource,
|
|
46
|
+
id: idOf(data)
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Creates the PermDock for durable runs of published automations. A run
|
|
51
|
+
* acts as the automation's principal with that principal's rights at each
|
|
52
|
+
* step, narrowed to the automation's operations; the trigger is recorded
|
|
53
|
+
* and never grants.
|
|
54
|
+
*/
|
|
55
|
+
function createPermDock(policy, given) {
|
|
56
|
+
const { signer, verifier, principals, automations, store: approvals, waiter, audience, issuer, expiresIn = DEFAULT_TTL, onAuth, ...permdockOptions } = withApp(policy, given);
|
|
57
|
+
const instanceFor = (subject) => getPermDock(policy, subject, permdockOptions);
|
|
58
|
+
const publisherCanAssign = async (automation) => {
|
|
59
|
+
const publisher = await principals.principal(automation.publishedBy, compact({ tenant: automation.tenant }));
|
|
60
|
+
if (publisher === null) return false;
|
|
61
|
+
const instance = await instanceFor({
|
|
62
|
+
principal: publisher,
|
|
63
|
+
context: {}
|
|
64
|
+
});
|
|
65
|
+
const roles = new Set(instance.assignableRoles(compact({ tenant: automation.tenant })).map((role) => role.key));
|
|
66
|
+
const ceiling = new Set(instance.assignablePermissions(compact({ tenant: automation.tenant })).map((leaf) => leaf.key));
|
|
67
|
+
return (automation.roles ?? []).every((role) => roles.has(role)) && automation.permissions.every((key) => ceiling.has(key));
|
|
68
|
+
};
|
|
69
|
+
const getPermDock$1 = async (ticket) => {
|
|
70
|
+
let current;
|
|
71
|
+
const tracked = { async automation(id, readOptions) {
|
|
72
|
+
current = await readAutomation(automations, id, readOptions?.tenant);
|
|
73
|
+
return current ?? null;
|
|
74
|
+
} };
|
|
75
|
+
const live = { async principal(id, readOptions) {
|
|
76
|
+
if (current === void 0) return principals.principal(id, readOptions);
|
|
77
|
+
if (id !== current.principal) return null;
|
|
78
|
+
if (current.mode === "publisher") return principals.principal(id, readOptions);
|
|
79
|
+
if (current.tenant === void 0 || !await publisherCanAssign(current)) return null;
|
|
80
|
+
return freezeDeep({
|
|
81
|
+
id: current.principal,
|
|
82
|
+
kind: "service",
|
|
83
|
+
tenant: current.tenant,
|
|
84
|
+
memberships: [{
|
|
85
|
+
tenant: current.tenant,
|
|
86
|
+
roles: current.roles ?? []
|
|
87
|
+
}]
|
|
88
|
+
});
|
|
89
|
+
} };
|
|
90
|
+
let subject;
|
|
91
|
+
try {
|
|
92
|
+
subject = await subjectFromRunTicket(ticket, compact({
|
|
93
|
+
verifier,
|
|
94
|
+
principals: live,
|
|
95
|
+
automations: tracked,
|
|
96
|
+
audience,
|
|
97
|
+
issuer,
|
|
98
|
+
onAuth
|
|
99
|
+
}));
|
|
100
|
+
} catch {
|
|
101
|
+
subject = {
|
|
102
|
+
principal: null,
|
|
103
|
+
context: {}
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
return instanceFor(subject);
|
|
107
|
+
};
|
|
108
|
+
const start = async (id, startOptions = {}) => {
|
|
109
|
+
const automation = await readAutomation(automations, id, startOptions.tenant);
|
|
110
|
+
if (automation === void 0) return deniedStart("validation", { cause: "automation-unavailable" });
|
|
111
|
+
const { caller } = startOptions;
|
|
112
|
+
if (caller !== void 0) {
|
|
113
|
+
const run = automation.run === void 0 ? void 0 : findPermission(policy.permissions, automation.run);
|
|
114
|
+
if (run === void 0) return deniedStart("no-grant", { permission: automation.run ?? null });
|
|
115
|
+
const decision = caller.decide(run, startOptions.row);
|
|
116
|
+
if (decision.outcome !== "granted") return freezeDeep({
|
|
117
|
+
outcome: "denied",
|
|
118
|
+
denials: decision.outcome === "denied" ? decision.denials : [{
|
|
119
|
+
role: null,
|
|
120
|
+
reason: "approval"
|
|
121
|
+
}]
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
const scopes = [];
|
|
125
|
+
for (const key of automation.permissions) {
|
|
126
|
+
const leaf = findPermission(policy.permissions, key);
|
|
127
|
+
if (leaf === void 0) return deniedStart("validation", { permission: key });
|
|
128
|
+
scopes.push(leaf.scope);
|
|
129
|
+
}
|
|
130
|
+
const runId = startOptions.id ?? globalThis.crypto.randomUUID();
|
|
131
|
+
const runAutomation = {
|
|
132
|
+
id: automation.id,
|
|
133
|
+
version: automation.version
|
|
134
|
+
};
|
|
135
|
+
const signed = await signRunTicket(compact({
|
|
136
|
+
principal: automation.principal,
|
|
137
|
+
kind: "automation",
|
|
138
|
+
actor: {
|
|
139
|
+
id: automation.id,
|
|
140
|
+
kind: "automation"
|
|
141
|
+
},
|
|
142
|
+
delegation: { scopes },
|
|
143
|
+
automation: runAutomation,
|
|
144
|
+
tenant: automation.tenant,
|
|
145
|
+
trigger: startOptions.trigger,
|
|
146
|
+
binding: startOptions.binding,
|
|
147
|
+
id: runId,
|
|
148
|
+
expiresIn
|
|
149
|
+
}), signer, compact({
|
|
150
|
+
audience,
|
|
151
|
+
now: startOptions.now
|
|
152
|
+
}));
|
|
153
|
+
if (permdockOptions.sink !== void 0) writeQuietly(permdockOptions.sink, automationEvent({
|
|
154
|
+
operation: "run",
|
|
155
|
+
automation,
|
|
156
|
+
run: runId
|
|
157
|
+
}));
|
|
158
|
+
return freezeDeep({
|
|
159
|
+
outcome: "started",
|
|
160
|
+
ticket: signed,
|
|
161
|
+
run: {
|
|
162
|
+
id: runId,
|
|
163
|
+
automation: runAutomation
|
|
164
|
+
}
|
|
165
|
+
});
|
|
166
|
+
};
|
|
167
|
+
const opened = async (ticket, permission, data, decideOptions) => {
|
|
168
|
+
const { resource, ttl, signal: _signal, ...rest } = decideOptions;
|
|
169
|
+
const first = await getPermDock$1(ticket);
|
|
170
|
+
const decision = first.decide(permission, data, rest);
|
|
171
|
+
if (decision.outcome !== "approval-required" || approvals === void 0) return { decision };
|
|
172
|
+
return {
|
|
173
|
+
decision,
|
|
174
|
+
expiresAt: (await requestApproval(approvals, decision, compact({
|
|
175
|
+
permission,
|
|
176
|
+
resource: targetOf(permission, data, resource),
|
|
177
|
+
subject: first.subject,
|
|
178
|
+
adapter: "workflow",
|
|
179
|
+
ttl
|
|
180
|
+
}))).expiresAt
|
|
181
|
+
};
|
|
182
|
+
};
|
|
183
|
+
const openApproval = async (ticket, permission, data, decideOptions = {}) => (await opened(ticket, permission, data, decideOptions)).decision;
|
|
184
|
+
const resumeApproval = async (ticket, permission, token, data, decideOptions = {}) => {
|
|
185
|
+
const { resource, ttl: _ttl, signal: _signal, ...rest } = decideOptions;
|
|
186
|
+
const run = await getPermDock$1(ticket);
|
|
187
|
+
const decision = run.decide(permission, data, rest);
|
|
188
|
+
if (approvals === void 0) return decision;
|
|
189
|
+
return resumeDecision({
|
|
190
|
+
decision,
|
|
191
|
+
permission,
|
|
192
|
+
subject: run.subject,
|
|
193
|
+
store: approvals,
|
|
194
|
+
resource: targetOf(permission, data, resource),
|
|
195
|
+
adapter: "workflow",
|
|
196
|
+
token
|
|
197
|
+
});
|
|
198
|
+
};
|
|
199
|
+
const awaitApproval = async (ticket, permission, data, decideOptions = {}) => {
|
|
200
|
+
if (waiter === void 0) {
|
|
201
|
+
const { resource: _resource, ttl: _ttl, signal: _signal, ...rest } = decideOptions;
|
|
202
|
+
return (await getPermDock$1(ticket)).decide(permission, data, rest);
|
|
203
|
+
}
|
|
204
|
+
const { decision, expiresAt } = await opened(ticket, permission, data, decideOptions);
|
|
205
|
+
if (decision.outcome !== "approval-required" || expiresAt === void 0) return decision;
|
|
206
|
+
try {
|
|
207
|
+
await waiter.wait(decision.token, compact({
|
|
208
|
+
expiresAt: { epochMilliseconds: Date.parse(expiresAt) },
|
|
209
|
+
signal: decideOptions.signal
|
|
210
|
+
}));
|
|
211
|
+
} catch {}
|
|
212
|
+
return resumeApproval(ticket, permission, decision.token, data, decideOptions);
|
|
213
|
+
};
|
|
214
|
+
return Object.freeze({
|
|
215
|
+
start,
|
|
216
|
+
getPermDock: getPermDock$1,
|
|
217
|
+
awaitApproval,
|
|
218
|
+
openApproval,
|
|
219
|
+
resumeApproval
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
//#endregion
|
|
223
|
+
export { createPermDock, memoryAutomationSource, parseAutomation, pollingApprovalWaiter };
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { Nn as Decision } 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 ApprovalWaiter } from "../waiter-B986w1oK.js";
|
|
5
|
+
import { i as WorkflowPermDock, r as StartAutomationResult, t as AutomationOptions } from "../create-D_NmPOdH.js";
|
|
6
|
+
//#region src/workflow-sdk/index.d.ts
|
|
7
|
+
/** The part of a Workflow SDK `Hook` the waiter reads: awaiting it suspends the run. */
|
|
8
|
+
export type WorkflowSdkHook = {
|
|
9
|
+
readonly then: PromiseLike<unknown>["then"];
|
|
10
|
+
dispose(): void;
|
|
11
|
+
};
|
|
12
|
+
/** `createHook` from `workflow`; valid only inside a `"use workflow"` function. */
|
|
13
|
+
export type WorkflowSdkCreateHook = (options: {
|
|
14
|
+
readonly token: string;
|
|
15
|
+
}) => WorkflowSdkHook;
|
|
16
|
+
/** `resumeHook` from `workflow/api`. */
|
|
17
|
+
export type WorkflowSdkResumeHook = (token: string, payload: unknown) => Promise<unknown>;
|
|
18
|
+
/** `sleep` from `workflow`; valid only inside a `"use workflow"` function. */
|
|
19
|
+
export type WorkflowSdkSleep = (until: Date) => PromiseLike<unknown>;
|
|
20
|
+
/** `start` from `workflow/api`, with the workflow function and its arguments. */
|
|
21
|
+
export type WorkflowSdkStart<TArgs extends unknown[], TRun> = (workflow: (ticket: string, ...args: TArgs) => Promise<unknown>, args: [string, ...TArgs]) => Promise<TRun>;
|
|
22
|
+
export type WorkflowSdkWaiterOptions = {
|
|
23
|
+
readonly createHook: WorkflowSdkCreateHook;
|
|
24
|
+
readonly resumeHook: WorkflowSdkResumeHook;
|
|
25
|
+
/** With `sleep`, a wait ends at the request's `expiresAt`; without it, only a wake ends it. */
|
|
26
|
+
readonly sleep?: WorkflowSdkSleep;
|
|
27
|
+
};
|
|
28
|
+
/** The Workflow SDK hook token a run parks on while approval `token` is pending. */
|
|
29
|
+
export declare function approvalHookToken(token: string): string;
|
|
30
|
+
/**
|
|
31
|
+
* An `ApprovalWaiter` over Workflow SDK hooks. `wait` parks the run on a hook
|
|
32
|
+
* and must run inside the workflow function; `wake` resumes it from an
|
|
33
|
+
* approval handler. The hook carries no verdict: the run decides again from
|
|
34
|
+
* the approval store after it wakes.
|
|
35
|
+
*/
|
|
36
|
+
export declare function workflowSdkWaiter(options: WorkflowSdkWaiterOptions): ApprovalWaiter;
|
|
37
|
+
export type StartAutomationRunResult<TRun> = (Extract<StartAutomationResult, {
|
|
38
|
+
readonly outcome: "started";
|
|
39
|
+
}> & {
|
|
40
|
+
readonly workflowRun: TRun;
|
|
41
|
+
}) | Extract<StartAutomationResult, {
|
|
42
|
+
readonly outcome: "denied";
|
|
43
|
+
}>;
|
|
44
|
+
/**
|
|
45
|
+
* Starts automation `id` and, when PermDock grants it, the Workflow SDK run
|
|
46
|
+
* that executes it, with the run ticket as the workflow's first argument. A
|
|
47
|
+
* denied start starts nothing.
|
|
48
|
+
*/
|
|
49
|
+
export declare function startAutomation<TArgs extends unknown[], TRun>(workflow: Pick<WorkflowPermDock, "start">, start: WorkflowSdkStart<TArgs, TRun>, run: (ticket: string, ...args: TArgs) => Promise<unknown>, id: string, args: TArgs, options?: AutomationOptions): Promise<StartAutomationRunResult<TRun>>;
|
|
50
|
+
/**
|
|
51
|
+
* Resumes hook `token` with `payload` only when `caller` is granted
|
|
52
|
+
* `permission` on `row`. A token alone never resumes a run. A hook that is
|
|
53
|
+
* gone or a resume that throws denies with `validation`.
|
|
54
|
+
*/
|
|
55
|
+
export declare function authorizeHook(resumeHook: WorkflowSdkResumeHook, caller: PermDock, permission: Permission, row: unknown, token: string, payload: unknown): Promise<Decision>;
|
|
56
|
+
//#endregion
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { n as freezeDeep } from "../freeze-CrU8nQeX.js";
|
|
2
|
+
//#region src/workflow-sdk/index.ts
|
|
3
|
+
const HOOK_PREFIX = "permdock:approval:";
|
|
4
|
+
/** The Workflow SDK hook token a run parks on while approval `token` is pending. */
|
|
5
|
+
function approvalHookToken(token) {
|
|
6
|
+
return `${HOOK_PREFIX}${token}`;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* An `ApprovalWaiter` over Workflow SDK hooks. `wait` parks the run on a hook
|
|
10
|
+
* and must run inside the workflow function; `wake` resumes it from an
|
|
11
|
+
* approval handler. The hook carries no verdict: the run decides again from
|
|
12
|
+
* the approval store after it wakes.
|
|
13
|
+
*/
|
|
14
|
+
function workflowSdkWaiter(options) {
|
|
15
|
+
const { createHook, resumeHook, sleep } = options;
|
|
16
|
+
return Object.freeze({
|
|
17
|
+
async wait(token, waitOptions = {}) {
|
|
18
|
+
const hook = createHook({ token: approvalHookToken(token) });
|
|
19
|
+
try {
|
|
20
|
+
const expiresAt = waitOptions.expiresAt?.epochMilliseconds;
|
|
21
|
+
if (sleep === void 0 || expiresAt === void 0) {
|
|
22
|
+
await hook;
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
await Promise.race([hook, sleep(new Date(expiresAt))]);
|
|
26
|
+
} finally {
|
|
27
|
+
hook.dispose();
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
async wake(token) {
|
|
31
|
+
try {
|
|
32
|
+
await resumeHook(approvalHookToken(token), { token });
|
|
33
|
+
} catch {}
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Starts automation `id` and, when PermDock grants it, the Workflow SDK run
|
|
39
|
+
* that executes it, with the run ticket as the workflow's first argument. A
|
|
40
|
+
* denied start starts nothing.
|
|
41
|
+
*/
|
|
42
|
+
async function startAutomation(workflow, start, run, id, args, options) {
|
|
43
|
+
const started = await workflow.start(id, options);
|
|
44
|
+
if (started.outcome !== "started") return started;
|
|
45
|
+
const workflowRun = await start(run, [started.ticket, ...args]);
|
|
46
|
+
return Object.freeze({
|
|
47
|
+
...started,
|
|
48
|
+
workflowRun
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
function hookDenied() {
|
|
52
|
+
return freezeDeep({
|
|
53
|
+
outcome: "denied",
|
|
54
|
+
denials: [{
|
|
55
|
+
role: null,
|
|
56
|
+
reason: "validation",
|
|
57
|
+
detail: { cause: "hook-unavailable" }
|
|
58
|
+
}],
|
|
59
|
+
alternatives: []
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Resumes hook `token` with `payload` only when `caller` is granted
|
|
64
|
+
* `permission` on `row`. A token alone never resumes a run. A hook that is
|
|
65
|
+
* gone or a resume that throws denies with `validation`.
|
|
66
|
+
*/
|
|
67
|
+
async function authorizeHook(resumeHook, caller, permission, row, token, payload) {
|
|
68
|
+
const decision = caller.decide(permission, row);
|
|
69
|
+
if (decision.outcome !== "granted") return decision;
|
|
70
|
+
try {
|
|
71
|
+
await resumeHook(token, payload);
|
|
72
|
+
} catch {
|
|
73
|
+
return hookDenied();
|
|
74
|
+
}
|
|
75
|
+
return decision;
|
|
76
|
+
}
|
|
77
|
+
//#endregion
|
|
78
|
+
export { approvalHookToken, authorizeHook, startAutomation, workflowSdkWaiter };
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { j as PolicyVocabulary
|
|
1
|
+
import { j as PolicyVocabulary } from "./policy-types-n0uRTsW8.js";
|
|
2
|
+
import { r as PermDock } from "./permdock-SV8ZINYT.js";
|
|
2
3
|
//#region src/core/wrap.d.ts
|
|
3
4
|
/** A wrapper an adapter applies to each instance it builds, as `withOtel` does. */
|
|
4
5
|
type PermDockWrap = <V extends PolicyVocabulary>(permdock: PermDock<V>) => PermDock<V>;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { n as internalsOf, t as attachInternals } from "./internals-Dk8A8fX3.js";
|
|
1
2
|
//#region src/core/wrap.ts
|
|
2
3
|
/**
|
|
3
4
|
* A frozen copy of `permdock` with the members `overrides` returns replaced.
|
|
@@ -6,16 +7,16 @@
|
|
|
6
7
|
*/
|
|
7
8
|
function wrapPermDock(permdock, overrides) {
|
|
8
9
|
const wrap = (next) => wrapPermDock(next, overrides);
|
|
9
|
-
|
|
10
|
+
const wrapped = {
|
|
10
11
|
...permdock,
|
|
11
12
|
...overrides(permdock),
|
|
12
13
|
tenant: (id) => wrap(permdock.tenant(id)),
|
|
13
14
|
team: (id) => wrap(permdock.team(id)),
|
|
14
|
-
derive: (options) =>
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
15
|
+
derive: async (options) => wrap(await permdock.derive(options))
|
|
16
|
+
};
|
|
17
|
+
const internals = internalsOf(permdock);
|
|
18
|
+
if (internals !== void 0) attachInternals(wrapped, internals);
|
|
19
|
+
return Object.freeze(wrapped);
|
|
19
20
|
}
|
|
20
21
|
/** `otel`, then `wrap`. */
|
|
21
22
|
function composeWraps(otel, wrap) {
|