permdock 0.3.1 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +37 -35
- package/dist/{openapi-schema--ARjyfQr.js → 2020-C9VN-x8c.js} +5 -132
- package/dist/a2a/index.d.ts +8 -6
- package/dist/a2a/index.js +21 -31
- package/dist/{adapter-context-mlWsVGGg.js → adapter-context-CRhqyzCk.js} +1 -1
- package/dist/adoption-scan-B4R5fnMU.js +107 -0
- package/dist/agent/index.d.ts +3 -0
- package/dist/agent/index.js +1 -0
- package/dist/ai-sdk/index.d.ts +18 -23
- package/dist/ai-sdk/index.js +38 -21
- package/dist/app-data-MuyzVqX8.js +60 -0
- package/dist/approval-header-CJACtHkv.js +23 -0
- package/dist/approval-prompt-Dg5LeAcT.js +62 -0
- package/dist/approval-prompt-Djo_PyZc.d.ts +57 -0
- package/dist/approvals/index.d.ts +5 -3
- package/dist/approvals/index.js +8 -5
- package/dist/approvals-DJ6Yd5z1.js +995 -0
- package/dist/{approvers-DT4AVyIg.js → approvers-CqPOLD-o.js} +1 -1
- package/dist/arazzo-B6lebmiQ.js +36 -0
- package/dist/{arazzo-BAgw9ap6.js → arazzo-BWhNF-k0.js} +24 -17
- package/dist/args-IIolxxKA.js +197 -0
- package/dist/astro/index.d.ts +43 -0
- package/dist/astro/index.js +27 -0
- package/dist/audience-Dg8XsRaO.js +55 -0
- package/dist/auth-DRLEizbL.js +178 -0
- package/dist/authzen/index.d.ts +26 -6
- package/dist/authzen/index.js +228 -75
- package/dist/automation-BMZPIVUM.d.ts +114 -0
- package/dist/automation-DVjOckjV.js +157 -0
- package/dist/better-auth/index.d.ts +8 -6
- package/dist/better-auth/index.js +11 -23
- package/dist/better-supabase/index.d.ts +438 -86
- package/dist/better-supabase/index.js +1027 -184
- package/dist/bind--9EFVYWF.d.ts +38 -0
- package/dist/{bind-CuzGytRf.js → bind-CZzhx-Vj.js} +22 -10
- package/dist/body-CH5of8Ne.js +10 -0
- package/dist/body-text-QcXok_SI.js +52 -0
- package/dist/build-instance-BMnAudHn.js +52 -0
- package/dist/{canonical-json-DemiK4Vp.js → canonical-json-BC8_nMTw.js} +6 -6
- package/dist/{capability-2kYTMWDv.d.ts → capability-BSslw1QV.d.ts} +44 -25
- package/dist/{capability-4qPdO9gk.js → capability-N1K9IpqS.js} +69 -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-BECMPrwc.js +100 -0
- package/dist/catalog-DjhMYYCq.js +1 -0
- package/dist/catalog-R_A__RsH.js +52 -0
- package/dist/{catalog-doc-DdGm82XT.js → catalog-doc-C9wjsfNY.js} +54 -25
- 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 +26 -30
- package/dist/clerk/index.d.ts +9 -8
- package/dist/clerk/index.js +15 -45
- package/dist/cli/bin.js +36 -17
- package/dist/cli/index.d.ts +20 -6
- package/dist/cli/index.js +164 -4
- package/dist/cloud/index.d.ts +102 -63
- package/dist/cloud/index.js +240 -347
- package/dist/cloud-CIoHNevm.js +87 -0
- package/dist/codemod-Bmj9dWMH.js +37 -0
- package/dist/codemod-Cxvvc70T.js +2084 -0
- package/dist/{collect-DSTE3ml9.js → collect-CrZJJnEF.js} +79 -17
- package/dist/collect-DloHbDVa.js +55 -0
- package/dist/collect-FlXJlhus.js +1 -0
- package/dist/command-L8EstFNm.js +6 -0
- package/dist/{compact-y6vfu2_f.js → compact-CAf557ZB.js} +11 -1
- package/dist/compile/index.d.ts +1 -1
- package/dist/compile/index.js +1 -2
- package/dist/{compile-Ba4blROR.js → compile-CMqMx_IN.js} +13 -9
- package/dist/{compile-BkRyBDBw.d.ts → compile-Ckm2HqBZ.d.ts} +5 -3
- package/dist/completion-BqhRBJD8.js +143 -0
- package/dist/config-B46rm9sc.js +26 -0
- package/dist/{config-BJiM-xAm.js → config-bs_kZeYq.js} +15 -10
- package/dist/{config-report-CdCgbRnV.js → config-report-DUgj62Ai.js} +17 -8
- package/dist/{connection-CU8MQxRi.js → connection-DjhIJSs2.js} +8 -6
- package/dist/constants-DcJABbLW.js +20 -0
- package/dist/{context-Bcy85rGi.js → context-bbFHR-0D.js} +16 -5
- package/dist/convex/index.d.ts +11 -10
- package/dist/convex/index.js +18 -18
- package/dist/create-0VZ7Pdiu.d.ts +107 -0
- package/dist/create-BDS7wc3y.d.ts +138 -0
- package/dist/create-BFfm17UA.d.ts +110 -0
- package/dist/create-BWRSXgOF.js +403 -0
- package/dist/create-C3b4B5eF.js +130 -0
- package/dist/create-DnrmLnLW.js +323 -0
- package/dist/{credential-8P81ff4u.js → credential-DM2um3ha.js} +153 -32
- package/dist/credentials-DPyHmYz5.js +74 -0
- package/dist/deciding-columns-Sq12mEA6.js +123 -0
- package/dist/delegation-DaXVdDhM.js +286 -0
- package/dist/delegation-input-FTxMK3ji.js +19 -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-D8jDHgsl.d.ts +19 -0
- package/dist/{describe-DMYiCjJV.d.ts → describe-BZUsixiL.d.ts} +11 -2
- package/dist/{describe-B_gVZEVi.js → describe-BybMRY7A.js} +10 -5
- package/dist/device-BARQ8eYG.js +193 -0
- package/dist/diff-CxZo9pTq.js +37 -0
- package/dist/{diff-2VaeChzX.js → diff-DCePiN6M.js} +61 -55
- package/dist/doctor-CxiwSfqH.js +44 -0
- package/dist/doctor-DFjUxf2f.js +2361 -0
- package/dist/drizzle/index.d.ts +5 -3
- package/dist/drizzle/index.js +6 -14
- package/dist/elysia/index.d.ts +16 -13
- package/dist/elysia/index.js +14 -13
- package/dist/env-DJZrPjRi.js +8 -0
- package/dist/errors-BDUwg2qC.js +27 -0
- package/dist/{errors-Cz5zn0mW.js → errors-BKy0EfhN.js} +6 -10
- package/dist/errors-BWXBMaKK.d.ts +11 -0
- package/dist/{errors-DPdqI50v.d.ts → errors-C2PXIv4c.d.ts} +2 -2
- package/dist/errors-CWTY6uih.js +143 -0
- package/dist/evaluate-_R8QkWaf.js +1732 -0
- package/dist/evaluations-16UqqQ6W.d.ts +32 -0
- package/dist/{evaluations-tz6D9A2G.js → evaluations-DZ2CbV5k.js} +181 -32
- package/dist/eve/index.d.ts +12 -16
- package/dist/eve/index.js +23 -29
- 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 +14 -12
- package/dist/fastify/index.d.ts +26 -13
- package/dist/fastify/index.js +17 -36
- package/dist/fetch-adapter-g0ypLkID.js +120 -0
- package/dist/fetch-adapter-qKJBuRqy.d.ts +31 -0
- package/dist/fields-D9tPVUUS.js +203 -0
- package/dist/files-C5ZI27eV.js +124 -0
- package/dist/{files-DWUN9PzI.js → files-D_JIzUrP.js} +12 -3
- package/dist/{fixtures-ht28Cplr.js → fixtures-B7XrLeY7.js} +12 -12
- package/dist/flags-C3DktBDY.js +86 -0
- package/dist/{from-snapshot-CTLijvdm.js → from-snapshot-D2lZt4Dd.js} +78 -65
- package/dist/{generate-CH7ThJ14.js → generate-CNU1pIOo.js} +1 -3
- package/dist/grantee-Cn1HyUsI.js +254 -0
- package/dist/grantee-conditions-CcXf8hMM.js +271 -0
- package/dist/grantee-match-DHArqY82.js +142 -0
- 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-H_KARDVC.js → helpers-DTcZOzhF.js} +47 -39
- package/dist/hono/index.d.ts +12 -9
- package/dist/hono/index.js +14 -13
- package/dist/{hosted-DJQw46hn.js → hosted-BZIAYvon.js} +64 -15
- package/dist/hosted-DBDX0M-P.d.ts +78 -0
- package/dist/{http-SO7qGttf.js → http-BBoKefeS.js} +35 -2
- package/dist/{http-DPuDaChb.d.ts → http-B_LphE5Y.d.ts} +1 -2
- package/dist/http-DXJ37RDA.js +46 -0
- package/dist/{http-BIhmLfCc.js → http-ujKm0JXE.js} +3 -26
- package/dist/{openapi-import-cmwetbzw.js → import-CNV7I2Dw.js} +30 -26
- package/dist/{rls-import-4lLW_pbb.js → import-DMmOG27O.js} +271 -128
- package/dist/index-BcHcPyIo.d.ts +110 -0
- package/dist/index-CaxrMD1A.d.ts +1 -0
- package/dist/index-Chrs5fQ-.d.ts +210 -0
- package/dist/index-CxGUswIC.d.ts +431 -0
- package/dist/index-D8EovfsP.d.ts +91 -0
- package/dist/index-DOVf7RJv.d.ts +900 -0
- package/dist/{index-C8z4RjQV.d.ts → index-SGdIQyzc.d.ts} +34 -16
- package/dist/index.d.ts +20 -14
- package/dist/index.js +33 -23
- package/dist/init-DeMYsnYJ.js +96 -0
- package/dist/init-GG6Jh8HD.js +95 -0
- package/dist/{instance-options-jARdwfPN.d.ts → instance-options-Omfd793B.d.ts} +2 -2
- package/dist/instance-snapshot-Cxq4ygFc.js +600 -0
- package/dist/instant-BluqDvyS.js +19 -0
- package/dist/internals-Dk8A8fX3.js +17 -0
- package/dist/{json-schema-BsAflUGW.js → json-schema-B-vAwlde.js} +46 -9
- package/dist/json-schema-CN_iLFH2.d.ts +40 -0
- package/dist/jwt/index.d.ts +18 -11
- package/dist/jwt/index.js +166 -145
- package/dist/{kernel-_RRHmnMY.js → kernel-5JatXyND.js} +120 -43
- package/dist/kysely/index.d.ts +5 -3
- package/dist/kysely/index.js +6 -14
- package/dist/{live-options-H2eG8dfJ.js → live-options-BaAFCIiu.js} +16 -3
- package/dist/load-BxEtwlBS.js +1 -0
- package/dist/{load-DhWEB9P1.js → load-DFS_ry0W.js} +31 -7
- package/dist/{load-jose-BL6LH4bL.js → load-jose-DZ4dnjri.js} +1 -4
- package/dist/login-Dfe5RlYk.js +68 -0
- package/dist/login-imhuwvn3.js +254 -0
- package/dist/manifest-C8IzW3Do.js +42 -0
- package/dist/manifest-CtKR3GXL.js +370 -0
- package/dist/manifest-json-CAGzls-C.js +9 -0
- package/dist/{manifest-uDS9y5de.d.ts → manifest-mx5ghSFM.d.ts} +9 -2
- package/dist/manifest-schema-C0kK_8V0.js +399 -0
- package/dist/{map-claims-Z4QZOiFF.js → map-claims-D3oRmTk0.js} +19 -25
- package/dist/{map-error-pgUWNNtG.js → map-error-TCAdw-eW.js} +5 -5
- package/dist/{markers-B0hYLvMD.js → markers-C6joDI3o.js} +8 -3
- package/dist/mcp/index.d.ts +36 -9
- package/dist/mcp/index.js +476 -448
- package/dist/{rls-migrate-CN4TlJTO.js → migrate-BShP7Vf4.js} +119 -20
- package/dist/nest/index.d.ts +12 -9
- package/dist/nest/index.js +20 -20
- package/dist/next/index.d.ts +40 -20
- package/dist/next/index.js +37 -39
- 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-BFp-PZZA.js +126 -0
- package/dist/openai/index.d.ts +9 -16
- package/dist/openai/index.js +18 -25
- package/dist/openapi/index.d.ts +3 -3
- package/dist/openapi/index.js +1 -1
- package/dist/{openapi-BqRBvAng.js → openapi-B7HZ0f-r.js} +9 -12
- package/dist/{openapi-CqqEbHsL.js → openapi-DTaEmTSW.js} +23 -26
- package/dist/openapi-ahr8rHu3.js +138 -0
- package/dist/operation-findings-DgATDpvh.js +36 -0
- package/dist/operations-CxybZErY.d.ts +59 -0
- package/dist/orpc/index.d.ts +13 -10
- package/dist/orpc/index.js +23 -20
- package/dist/otel/index.d.ts +3 -2
- package/dist/otel/index.js +53 -27
- package/dist/output-Dyw8fyPF.js +88 -0
- package/dist/output-files-B3IZJksC.js +1 -0
- package/dist/output-files-DhRBBE4n.js +138 -0
- package/dist/{rls-fields-CZOMlwHl.js → ownership-BatFgAA4.js} +2393 -2349
- package/dist/{package-root-zGkxO3oN.js → package-root-Dk_ETdkp.js} +4 -3
- package/dist/{parse-BuyjxhZV.js → parse-Cxq0WxrA.js} +3 -3
- package/dist/{parse-local-manifest-BrMozJCo.js → parse-local-manifest-CVSs6J9I.js} +2 -4
- package/dist/{parse-local-manifest-JLnaBH0S.d.ts → parse-local-manifest-DgqtruPn.d.ts} +1 -1
- package/dist/parse-request-D_tUXG6M.js +26 -0
- package/dist/paths-DXSHAMIa.js +42 -0
- package/dist/pdp/index.d.ts +7 -3
- package/dist/pdp/index.js +47 -29
- package/dist/{peer-BOr_kJE1.js → peer-C8swJ2GH.js} +23 -4
- package/dist/peer-CRvC7Hg1.js +1 -0
- package/dist/permdock-B9JxkBwC.js +868 -0
- package/dist/permdock-D7eeLJER.d.ts +502 -0
- package/dist/permission-registry-Br4jSNVi.js +385 -0
- package/dist/permissions-B-wCP5ZC.js +30 -0
- package/dist/{permissions-RJrovw98.js → permissions-CZKiUfFM.js} +4 -3
- package/dist/{permissions-CDgvKG5L.d.ts → permissions-oEWfl-kl.d.ts} +1 -2
- package/dist/policies-CO1oOymN.js +295 -0
- package/dist/{policy-D2W7uv19.d.ts → policy-Czo4n3Hs.d.ts} +2 -2
- package/dist/policy-DLZJ5gAp.js +399 -0
- package/dist/policy-from-catalog-DzhEc3Y9.js +450 -0
- package/dist/policy-module-CTlwMvLI.js +89 -0
- package/dist/{policy-IB6yxpC3.d.ts → policy-types-DzwivBgR.d.ts} +939 -1057
- package/dist/postgrest-CW0IqC-U.js +566 -0
- package/dist/postgrest-NUqZT-RB.d.ts +100 -0
- package/dist/powersync-BHfuehf3.js +62 -0
- package/dist/powersync-CbzkqL_M.js +1 -0
- package/dist/{powersync-Dv1_aWF7.js → powersync-bYUDLOAO.js} +30 -32
- 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 +6 -12
- package/dist/{problem-B43ztKIm.js → problem-CTviyH5L.js} +18 -27
- package/dist/{problem-details-DX075l9V.d.ts → problem-details-DXlt-vks.d.ts} +1 -1
- package/dist/{problem-details-_AMOYz-w.js → problem-details-cn5X30gZ.js} +45 -42
- package/dist/problem-types-CJ2325SZ.js +5 -0
- package/dist/{prompt-CXYhLfsS.js → prompt-DfZLJLIn.js} +2 -2
- package/dist/protected-DEPHc2xV.d.ts +38 -0
- package/dist/{protected-utU-SLuy.js → protected-DfjY5mLA.js} +37 -8
- package/dist/{provider-CSQd7m92.js → provider-CC-u3bYP.js} +23 -10
- package/dist/{provider-DZY281jO.d.ts → provider-DMVt6yYn.d.ts} +1 -1
- package/dist/{provider-store-Cfbvo4DE.js → provider-store-B5Yrkhzr.js} +6 -3
- package/dist/pull-BgIfno6w.js +256 -0
- package/dist/pull-ByOks_Tg.js +1 -0
- package/dist/push-CmFVBOeI.js +116 -0
- package/dist/pushed-policy-BImMTTIM.d.ts +57 -0
- package/dist/pushed-policy-DobP7AHI.js +238 -0
- package/dist/react/index.d.ts +8 -8
- package/dist/react/index.js +6 -6
- package/dist/react/provider-client.d.ts +1 -1
- package/dist/react/provider-client.js +1 -2
- package/dist/react-native/index.d.ts +24 -63
- package/dist/react-native/index.js +45 -27
- package/dist/{refs-KYb4ntaz.js → refs-K6eWUJ0H.js} +1 -1
- package/dist/relation-walk-3OyDBF0S.js +186 -0
- package/dist/relations-BnCWnJGI.js +163 -0
- package/dist/renames-CGj7YwcQ.js +175 -0
- package/dist/{replay-CYyiLiwO.d.ts → replay-D7iKcLFe.d.ts} +1 -1
- package/dist/{replay-BsOyTrdV.js → replay-Du1tJjG7.js} +2 -1
- package/dist/request-context-BTRTG7OT.js +71 -0
- package/dist/request-context-C2_1lchh.d.ts +5 -0
- 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-D_jw0BFx.js +243 -0
- package/dist/retire-CALjIQ7e.js +240 -0
- package/dist/{revocations-Cy06JNx2.d.ts → revocations-R07lFBnX.d.ts} +2 -0
- package/dist/rls-BA8an5Ap.js +336 -0
- package/dist/{rls-DiinlRML.js → rls-j6t43t7n.js} +1066 -1068
- package/dist/role-builder-CXbis5-X.js +623 -0
- package/dist/{rpc-DL9Sqvb1.js → rpc-aPyNi6tA.js} +18 -8
- package/dist/run-CNsApDpd.js +1 -0
- package/dist/run-DOfMtc9V.js +723 -0
- package/dist/run-ticket-BjhTOi6u.d.ts +124 -0
- package/dist/run-ticket-sxFI6LAk.js +337 -0
- package/dist/{runtime-CB8gQFvS.js → runtime-D3VTAiCA.js} +1 -1
- package/dist/{saas-DhpJjnBA.js → saas-FO-Q8oj0.js} +18 -15
- package/dist/scan-BOI5tJ-6.js +29 -0
- package/dist/{schema-D3MnDMxa.js → schema-B4v0Qrac.js} +106 -10
- 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-BFGBBAqR.js → scim-ClHtpyV3.js} +213 -87
- package/dist/{scopes-CVdPrWN-.js → scopes-CUPSjo9q.js} +20 -7
- package/dist/server/index.d.ts +13 -134
- package/dist/server/index.js +13 -10
- package/dist/server-DqCT4CgZ.js +453 -0
- package/dist/{create-B1d519XK.d.ts → server-types-BLd4MnBX.d.ts} +89 -70
- package/dist/{sha256-BO0swRXL.js → sha256-D9ihqmvd.js} +8 -1
- package/dist/shared-CD11nBbC.js +304 -0
- package/dist/{shared-DRu8VFVM.js → shared-DvvFzYXe.js} +8 -9
- package/dist/signals-D3NcTKUS.js +32 -0
- package/dist/sink-BEZSlMS_.js +957 -0
- package/dist/sink-Bj_lDUDq.d.ts +225 -0
- package/dist/{skills-Biq5uup3.js → skills-B6lVdD_W.js} +16 -8
- package/dist/skills-CTYwkl44.js +51 -0
- package/dist/snapshot-CXUWfsNy.js +269 -0
- package/dist/{snapshot-cache-D6jLelln.js → snapshot-cache-DZHQ0KF6.js} +11 -5
- package/dist/{snapshot-cache-B-LxUahj.d.ts → snapshot-cache-DqK9eDmM.d.ts} +7 -5
- package/dist/solid/index.d.ts +24 -25
- package/dist/solid/index.js +41 -11
- package/dist/solid-start/index.d.ts +52 -0
- package/dist/solid-start/index.js +49 -0
- package/dist/{sources-BdOYLw9j.d.ts → sources-BV9j0DeZ.d.ts} +11 -13
- package/dist/{sources-4p0-4xQm.js → sources-vs5dGOsS.js} +147 -142
- package/dist/sql-B5T1IL83.js +55 -0
- package/dist/src-DLfUWFAI.js +1851 -0
- package/dist/ssf/index.d.ts +4 -4
- package/dist/ssf/index.js +440 -106
- package/dist/standard-webhooks-6lg8v_is.d.ts +88 -0
- package/dist/standard-webhooks-DgFFD-Ga.js +228 -0
- package/dist/storage-C2bWdvJH.js +132 -0
- package/dist/{store-DMAWwAJV.js → store-4u_hxjWa.js} +42 -55
- package/dist/{store-options-ByhZq1jV.js → store-options-BqEakYRa.js} +38 -24
- package/dist/{stores-BT2pSCub.js → stores-BbsD4fAR.js} +7 -3
- package/dist/stores-ClZUgeoP.d.ts +30 -0
- package/dist/{stream-D1RXubw2.d.ts → stream-7-xmnf3U.d.ts} +2 -2
- package/dist/{stream-DDpvynSB.js → stream-CvdUS9V1.js} +10 -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/{subject-settings-BwBmCdTR.js → subject-settings-CkEwrw3W.js} +23 -5
- package/dist/supabase/index.d.ts +23 -106
- package/dist/supabase/index.js +5 -4
- package/dist/supabase/middleware.d.ts +13 -6
- package/dist/supabase/middleware.js +16 -11
- package/dist/supabase-9pqI57pW.js +92 -0
- package/dist/{supabase-C0qESOa-.js → supabase-Dxlp8A94.js} +124 -247
- package/dist/supabase-hook-CXcGpHqq.js +1 -0
- package/dist/{supabase-hook-ntETYCQu.js → supabase-hook-DdDQhMlw.js} +1659 -819
- package/dist/{supautils-u8jXTGrt.js → supautils-B6HYL9eL.js} +2 -2
- package/dist/support-session-C6xJQYut.js +158 -0
- package/dist/svelte/Protected.svelte +11 -4
- package/dist/svelte/index.d.ts +7 -7
- package/dist/svelte/index.js +26 -12
- package/dist/svelte/runtime.d.ts +10 -3
- package/dist/svelte/runtime.js +4 -3
- package/dist/svelte/source.d.ts +7 -7
- package/dist/svelte/source.js +5 -5
- 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/{validity-uOp8UpYn.js → tenancy-DN2QAx9z.js} +6 -42
- package/dist/terminal/index.d.ts +11 -9
- package/dist/terminal/index.js +36 -316
- package/dist/testing/index.d.ts +391 -106
- package/dist/testing/index.js +4574 -1286
- 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-CIWxJOCh.js → token-BLZcjQgt.js} +15 -6
- package/dist/tool-refusal-CMLN5xhn.js +41 -0
- package/dist/trpc/index.d.ts +12 -9
- package/dist/trpc/index.js +18 -17
- package/dist/{types-DbjRN55U.d.ts → types-5Ut_pbKy.d.ts} +141 -13
- package/dist/types-BNORmDM8.d.ts +172 -0
- package/dist/types-BjV-fqcA.d.ts +57 -0
- package/dist/{types-QCuYJh4q.d.ts → types-BqAKcRNW.d.ts} +2 -1
- package/dist/types-C8-KNsFf.d.ts +107 -0
- package/dist/{types-aqOHTHcp.d.ts → types-CCpc2Dcv.d.ts} +77 -17
- package/dist/{types-Dnemwd77.d.ts → types-CZTnPFzM.d.ts} +50 -11
- package/dist/{types-C97IskBw.d.ts → types-CdlxsYQh.d.ts} +23 -11
- package/dist/{types-DxiCGmmd.d.ts → types-ClZaWzfb.d.ts} +9 -6
- package/dist/types-DX0LaKTb.d.ts +157 -0
- package/dist/types-DiQjupG2.d.ts +332 -0
- package/dist/types-DqzsnlSA.js +67 -0
- package/dist/types-_sHy8BQf.d.ts +65 -0
- package/dist/types-fbZ7JEXr.d.ts +89 -0
- package/dist/types-tIgIeIKJ.d.ts +66 -0
- package/dist/unplugin/index.d.ts +1 -1
- package/dist/unplugin/index.js +2 -2
- package/dist/usage-CHOtwL19.js +1 -0
- package/dist/usage-DHtE8j4E.js +32 -0
- package/dist/{usage-ItS7nLcl.js → usage-T5mXq98v.js} +56 -13
- package/dist/{validation-error-Ba264OaJ.d.ts → validation-error-Bg5Tpluk.d.ts} +1 -1
- package/dist/{validation-error-CnjZ4t92.js → validation-error-ZfUHbKvf.js} +1 -1
- package/dist/validity-CZ7-y0Cj.js +79 -0
- package/dist/{verifier-BxBo6I44.js → verifier-DHuh-okk.js} +68 -21
- package/dist/verify-DbCL9bnB.js +1770 -0
- package/dist/{version-BvacVTZR.js → version-CEbQ5UeM.js} +4 -3
- package/dist/version-DXkYUISx.js +1 -0
- package/dist/{views-Soe7bGSC.js → views-DTIIO-oQ.js} +41 -2
- package/dist/{permissions-DttnqqxC.d.ts → vocabulary-D6lPdb4Z.d.ts} +120 -29
- package/dist/vue/index.d.ts +25 -21
- package/dist/vue/index.js +25 -9
- package/dist/waiter-BGUtGYoU.js +67 -0
- package/dist/waiter-CKy4MQSY.d.ts +36 -0
- package/dist/watch-Cb-NcaUw.js +1 -0
- package/dist/{watch-DVBJ9cBq.js → watch-CszoTJMq.js} +47 -8
- package/dist/webmcp/index.d.ts +2 -2
- package/dist/webmcp/index.js +13 -37
- package/dist/where-scope-Dv-WTP-w.js +306 -0
- package/dist/who-can-D0QoYbEb.js +364 -0
- package/dist/wire-delegation-Cv3W2eaM.js +36 -0
- package/dist/wire-denial-C7PaVYEM.js +27 -0
- package/dist/workflow/index.d.ts +5 -0
- package/dist/workflow/index.js +223 -0
- package/dist/workflow-sdk/index.d.ts +56 -0
- package/dist/workflow-sdk/index.js +78 -0
- package/dist/wrap-Bd1Tejur.d.ts +15 -0
- package/dist/wrap-gX61EtpB.js +27 -0
- package/package.json +140 -41
- 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 +129 -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 +19 -10
- package/skills/permdock-data/SKILL.md +6 -6
- package/skills/permdock-data/references/queries-and-rls.md +13 -8
- package/skills/permdock-data/references/relationships.md +3 -3
- package/skills/permdock-tenancy/SKILL.md +20 -7
- package/skills/permdock-tenancy/references/contacts-and-support-sessions.md +122 -0
- package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +6 -4
- package/skills/permdock-wire/SKILL.md +18 -12
- package/skills/permdock-wire/references/adapters.md +146 -50
- package/skills/permdock-wire/references/policy-options.md +15 -6
- package/skills/permdock-wire/references/presets-and-recipes.md +58 -0
- package/dist/approvals-DbYAuNkG.js +0 -224
- package/dist/arazzo-C9chp3ST.js +0 -54
- package/dist/bind-C_ob3LKa.d.ts +0 -25
- package/dist/catalog-CRW5Mx_B.js +0 -2
- package/dist/catalog-CYj-mX2O.js +0 -48
- package/dist/catalog-DWF5cYqB.js +0 -55
- package/dist/cloud-CfwZ39Rl.js +0 -50
- package/dist/cloud-DWLXO2af.js +0 -118
- package/dist/collect-CHB22Sx4.js +0 -83
- package/dist/collect-DSWOk19R.js +0 -2
- package/dist/commands-BeaGNj_o.js +0 -97
- package/dist/config-ir40y8m0.js +0 -36
- package/dist/create-CMwIl-w2.js +0 -253
- package/dist/delegation-D8pUEuce.js +0 -103
- package/dist/diff-C9RDjjhs.js +0 -48
- package/dist/doctor-Djh6JDEk.js +0 -53
- package/dist/doctor-DvH0IQff.js +0 -1194
- package/dist/doctor-collect-CjdO0wQX.js +0 -665
- package/dist/duration-xK2jGFVc.js +0 -25
- package/dist/errors-CWfoNg9N.js +0 -47
- package/dist/errors-DRnGZHzF.js +0 -30
- package/dist/evaluation-items-CfCCejQd.js +0 -40
- package/dist/expiry-BoBJ8Tvc.js +0 -7
- package/dist/fields-BMl1RxoX.js +0 -26
- package/dist/grantee-Cv5Sogfv.js +0 -602
- 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-0nNqHspG.d.ts +0 -6
- package/dist/index-BNc7Wer_.d.ts +0 -483
- package/dist/index-C7Tw7MaW.d.ts +0 -201
- package/dist/instance-options-Dhhcnm3y.js +0 -22
- package/dist/load-DwJUafYN.js +0 -2
- package/dist/manifest-iaoBXHKc.js +0 -783
- package/dist/map-AcxK9o_D.js +0 -147
- package/dist/may-use-DndQ5tQ-.js +0 -77
- package/dist/openapi-CQTsgKoB.js +0 -164
- package/dist/permdock-CbgvLnuo.js +0 -3479
- package/dist/permissions-DVoF6dMt.js +0 -662
- package/dist/policy-xyWg7QdR.js +0 -1122
- package/dist/powersync-CrBX8hY6.js +0 -2
- package/dist/powersync-DE19b9dT.js +0 -62
- package/dist/protected-BdnIEFkY.d.ts +0 -27
- package/dist/protected-xAr24FEC.d.ts +0 -40
- package/dist/relations-cjOL01hZ.js +0 -505
- package/dist/rls-P-BeBx0n.js +0 -238
- package/dist/rls-graph-CHwx0V8q.js +0 -435
- package/dist/rls-ownership-DcYlZ09B.js +0 -843
- package/dist/rls-shared-Cewd_-zI.js +0 -495
- package/dist/rls-verify-CMv9H3wV.js +0 -746
- package/dist/run-BWc9qqvE.js +0 -174
- package/dist/server-DlZ28Oz5.js +0 -268
- package/dist/sink-B1fZzIMf.d.ts +0 -104
- package/dist/sink-Bd9PSyfq.js +0 -141
- package/dist/skills-C5CbhhpG.js +0 -56
- package/dist/snapshot-Enxd0n-s.js +0 -975
- package/dist/sql-xdg5f4Fi.js +0 -27
- package/dist/src-BDwEZWrZ.js +0 -568
- package/dist/store-jOBYpiXC.d.ts +0 -36
- package/dist/stores-C0IMQrGI.d.ts +0 -52
- package/dist/subject-C6dLxqHU.js +0 -24
- package/dist/supabase-config-Bj3iDH2I.js +0 -472
- package/dist/supabase-hook-gd3s8bxB.js +0 -2
- package/dist/supabase-s4o9s1O1.js +0 -83
- package/dist/thenable-okc2xDsj.js +0 -10
- package/dist/types-BnIEz1sU.d.ts +0 -48
- package/dist/types-Bvc4oWT6.d.ts +0 -9
- package/dist/types-CKNSyIf_.d.ts +0 -52
- package/dist/types-Cq_H8N_X.d.ts +0 -197
- package/dist/usage-B0YuTQRO.js +0 -42
- package/dist/usage-DorAJiU_.js +0 -2
- package/dist/vocabulary-DA8a8zif.d.ts +0 -56
- package/dist/watch-BwxLTYMZ.js +0 -2
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { $n as Delegation, Rt as Instant, Yn as AuthorizationDetail, dt as TokenVerifier, ir as Subject, lt as TokenFailureCause, qn as Actor, qt as AuthEvent, rr as Principal, ut as TokenSigner } from "./policy-types-DzwivBgR.js";
|
|
2
|
+
import { p as PrincipalSource } from "./permdock-D7eeLJER.js";
|
|
3
|
+
//#region src/server/run-ticket.d.ts
|
|
4
|
+
/** What started the run: a saved automation, a background job, or a caller's own request. */
|
|
5
|
+
type RunKind = "automation" | "job" | "caller";
|
|
6
|
+
/** RFC 8693 `act`: the party running the work, with the chain of earlier actors. */
|
|
7
|
+
type RunActClaim = {
|
|
8
|
+
readonly sub: string;
|
|
9
|
+
readonly kind?: string;
|
|
10
|
+
readonly act?: RunActClaim;
|
|
11
|
+
};
|
|
12
|
+
/** The connector and tools a run may reach; carried for the adapter, never a grant. */
|
|
13
|
+
type RunBinding = {
|
|
14
|
+
readonly connector?: string;
|
|
15
|
+
readonly tools?: readonly string[];
|
|
16
|
+
};
|
|
17
|
+
type RunAutomation = {
|
|
18
|
+
readonly id: string;
|
|
19
|
+
readonly version: number | string;
|
|
20
|
+
};
|
|
21
|
+
/** The v1 claims of a `vnd.permdock.run+jwt`. At least one of `scope` and `authorization_details` is present. */
|
|
22
|
+
type RunTicket = {
|
|
23
|
+
readonly v: 1;
|
|
24
|
+
readonly iss: string;
|
|
25
|
+
readonly sub: string;
|
|
26
|
+
readonly aud: string | readonly string[];
|
|
27
|
+
readonly jti: string;
|
|
28
|
+
readonly iat: number;
|
|
29
|
+
readonly exp: number;
|
|
30
|
+
readonly kind: RunKind;
|
|
31
|
+
readonly act?: RunActClaim;
|
|
32
|
+
readonly scope?: string;
|
|
33
|
+
readonly authorization_details?: readonly AuthorizationDetail[];
|
|
34
|
+
/** Present exactly when `kind` is `automation`. */
|
|
35
|
+
readonly automation?: RunAutomation;
|
|
36
|
+
readonly tenant?: string;
|
|
37
|
+
/** The event that started the run, as JSON. Evaluation never reads it as a grant. */
|
|
38
|
+
readonly trigger?: Readonly<Record<string, unknown>>;
|
|
39
|
+
readonly binding?: RunBinding;
|
|
40
|
+
};
|
|
41
|
+
type RunTicketInput = {
|
|
42
|
+
/** The principal the run acts for (`sub`). */
|
|
43
|
+
readonly principal: string;
|
|
44
|
+
readonly kind: RunKind;
|
|
45
|
+
/** Becomes `act`; a nested `act` on the actor is kept as the chain. */
|
|
46
|
+
readonly actor?: Actor;
|
|
47
|
+
/** The run's ceiling. Required: a ticket never carries the principal's full authority. */
|
|
48
|
+
readonly delegation: Delegation;
|
|
49
|
+
readonly automation?: RunAutomation;
|
|
50
|
+
readonly tenant?: string;
|
|
51
|
+
readonly trigger?: Readonly<Record<string, unknown>>;
|
|
52
|
+
readonly binding?: RunBinding;
|
|
53
|
+
/** `jti`; a fresh UUID when absent. */
|
|
54
|
+
readonly id?: string;
|
|
55
|
+
/** Lifetime in whole seconds. Exactly one of `expiresIn` and `expiresAt`. */
|
|
56
|
+
readonly expiresIn?: number;
|
|
57
|
+
readonly expiresAt?: Instant;
|
|
58
|
+
};
|
|
59
|
+
type RunTicketOptions = {
|
|
60
|
+
readonly audience?: string | readonly string[];
|
|
61
|
+
readonly now?: Instant;
|
|
62
|
+
};
|
|
63
|
+
/** The live record of an automation, read on every use of its ticket. */
|
|
64
|
+
type RunTicketAutomations = {
|
|
65
|
+
automation(id: string, options: {
|
|
66
|
+
readonly tenant?: string;
|
|
67
|
+
}): {
|
|
68
|
+
readonly id: string;
|
|
69
|
+
readonly version: number | string;
|
|
70
|
+
readonly revoked?: boolean;
|
|
71
|
+
} | null | Promise<{
|
|
72
|
+
readonly id: string;
|
|
73
|
+
readonly version: number | string;
|
|
74
|
+
readonly revoked?: boolean;
|
|
75
|
+
} | null>;
|
|
76
|
+
};
|
|
77
|
+
/** `on('auth')` causes: a verification failure, or one of the run checks. */
|
|
78
|
+
type RunTicketFailureCause = TokenFailureCause | "automation-unavailable" | "automation-changed" | "owner-unavailable";
|
|
79
|
+
type RunTicketSubjectOptions = {
|
|
80
|
+
readonly verifier: TokenVerifier;
|
|
81
|
+
readonly principals: PrincipalSource;
|
|
82
|
+
/** Required to accept a `kind: 'automation'` ticket. */
|
|
83
|
+
readonly automations?: RunTicketAutomations;
|
|
84
|
+
readonly audience?: string | readonly string[];
|
|
85
|
+
readonly issuer?: string;
|
|
86
|
+
readonly clockTolerance?: number;
|
|
87
|
+
readonly onAuth?: (event: AuthEvent) => void;
|
|
88
|
+
readonly requestId?: string;
|
|
89
|
+
};
|
|
90
|
+
/** `subject.context.run` of a subject resolved from a run ticket. */
|
|
91
|
+
type RunContext = {
|
|
92
|
+
readonly id: string;
|
|
93
|
+
readonly kind: RunKind;
|
|
94
|
+
readonly automation?: RunAutomation;
|
|
95
|
+
readonly binding?: RunBinding;
|
|
96
|
+
};
|
|
97
|
+
/** The principal of a run subject, with the verified ticket attached. */
|
|
98
|
+
type RunPrincipal = Principal & {
|
|
99
|
+
readonly runTicket: RunTicket;
|
|
100
|
+
};
|
|
101
|
+
/**
|
|
102
|
+
* Validates untrusted run-ticket claims and returns a frozen copy with only
|
|
103
|
+
* the v1 fields, or `undefined`. Unknown claims are dropped; a wrong type in
|
|
104
|
+
* a known claim, a missing delegation, or an `automation` that does not match
|
|
105
|
+
* `kind` rejects the whole ticket.
|
|
106
|
+
*/
|
|
107
|
+
declare function parseRunTicket(claims: unknown): RunTicket | undefined;
|
|
108
|
+
/**
|
|
109
|
+
* Signs a `vnd.permdock.run+jwt` for one run. Throws a `TypeError` on input a
|
|
110
|
+
* verifier would refuse: no delegation, an `automation` that does not match
|
|
111
|
+
* `kind`, a non-JSON `trigger`, or an expiry that is not in the future.
|
|
112
|
+
*/
|
|
113
|
+
declare function signRunTicket(input: RunTicketInput, signer: TokenSigner, options?: RunTicketOptions): Promise<string>;
|
|
114
|
+
/**
|
|
115
|
+
* Resolves a `vnd.permdock.run+jwt` into the subject the run acts as: the
|
|
116
|
+
* principal loaded live from `principals`, the ticket's actor and its
|
|
117
|
+
* delegation as the ceiling, with `context.trigger` and `context.run`. Every
|
|
118
|
+
* failure (verification, malformed claims, an automation that is missing,
|
|
119
|
+
* revoked or changed, a principal that is gone, a throwing source) is the
|
|
120
|
+
* anonymous subject, never a throw.
|
|
121
|
+
*/
|
|
122
|
+
declare function subjectFromRunTicket(token: string | undefined | null, options: RunTicketSubjectOptions): Promise<Subject<RunPrincipal>>;
|
|
123
|
+
//#endregion
|
|
124
|
+
export { RunKind as a, RunTicketAutomations as c, RunTicketOptions as d, RunTicketSubjectOptions as f, subjectFromRunTicket as h, RunContext as i, RunTicketFailureCause as l, signRunTicket as m, RunAutomation as n, RunPrincipal as o, parseRunTicket as p, RunBinding as r, RunTicket as s, RunActClaim as t, RunTicketInput as u };
|
|
@@ -0,0 +1,337 @@
|
|
|
1
|
+
import { t as compact } from "./compact-CAf557ZB.js";
|
|
2
|
+
import { n as freezeDeep } from "./freeze-CrU8nQeX.js";
|
|
3
|
+
import { a as ownRecord, n as isForbiddenKey } from "./paths-DXSHAMIa.js";
|
|
4
|
+
import { a as isId } from "./expiry-D4_YKRKD.js";
|
|
5
|
+
import { o as epochSeconds, p as nowSeconds } from "./time-DkWjdL98.js";
|
|
6
|
+
import { n as toWireDelegation, t as fromWireDelegation } from "./wire-delegation-Cv3W2eaM.js";
|
|
7
|
+
import { t as anonymousSubject } from "./subject-BGoM5o8B.js";
|
|
8
|
+
//#region src/server/run-ticket.ts
|
|
9
|
+
const RUN_TICKET_TYP = "vnd.permdock.run+jwt";
|
|
10
|
+
const RUN_KINDS = [
|
|
11
|
+
"automation",
|
|
12
|
+
"job",
|
|
13
|
+
"caller"
|
|
14
|
+
];
|
|
15
|
+
const MAX_ACT_DEPTH = 8;
|
|
16
|
+
const MAX_JSON_DEPTH = 16;
|
|
17
|
+
const MAX_JSON_ENTRIES = 256;
|
|
18
|
+
const MAX_TOOLS = 64;
|
|
19
|
+
function isRunKind(value) {
|
|
20
|
+
return RUN_KINDS.some((kind) => kind === value);
|
|
21
|
+
}
|
|
22
|
+
function isVersion(value) {
|
|
23
|
+
return typeof value === "number" && Number.isSafeInteger(value) && value >= 0 || isId(value);
|
|
24
|
+
}
|
|
25
|
+
function isNumericDate(value) {
|
|
26
|
+
return typeof value === "number" && Number.isSafeInteger(value) && value > 0;
|
|
27
|
+
}
|
|
28
|
+
function jsonCopy(value, depth, budget) {
|
|
29
|
+
budget.n -= 1;
|
|
30
|
+
if (budget.n < 0 || depth > MAX_JSON_DEPTH) return;
|
|
31
|
+
if (value === null || typeof value === "string" || typeof value === "boolean" || typeof value === "number" && Number.isFinite(value)) return value;
|
|
32
|
+
if (Array.isArray(value)) {
|
|
33
|
+
const out = [];
|
|
34
|
+
for (const item of value) {
|
|
35
|
+
const copied = jsonCopy(item, depth + 1, budget);
|
|
36
|
+
if (copied === void 0) return;
|
|
37
|
+
out.push(copied);
|
|
38
|
+
}
|
|
39
|
+
return out;
|
|
40
|
+
}
|
|
41
|
+
if (typeof value !== "object") return;
|
|
42
|
+
const prototype = Object.getPrototypeOf(value);
|
|
43
|
+
if (prototype !== Object.prototype && prototype !== null) return;
|
|
44
|
+
const out = {};
|
|
45
|
+
for (const [key, item] of Object.entries(value)) {
|
|
46
|
+
if (isForbiddenKey(key)) return;
|
|
47
|
+
const copied = jsonCopy(item, depth + 1, budget);
|
|
48
|
+
if (copied === void 0) return;
|
|
49
|
+
out[key] = copied;
|
|
50
|
+
}
|
|
51
|
+
return out;
|
|
52
|
+
}
|
|
53
|
+
function parseTrigger(value) {
|
|
54
|
+
if (value === null || typeof value !== "object" || Array.isArray(value)) return;
|
|
55
|
+
const copied = jsonCopy(value, 0, { n: MAX_JSON_ENTRIES });
|
|
56
|
+
return ownRecord(copied);
|
|
57
|
+
}
|
|
58
|
+
function parseAct(value, depth) {
|
|
59
|
+
const record = ownRecord(value);
|
|
60
|
+
if (record === void 0 || depth > MAX_ACT_DEPTH || !isId(record["sub"])) return;
|
|
61
|
+
const kind = record["kind"];
|
|
62
|
+
if (kind !== void 0 && !isId(kind)) return;
|
|
63
|
+
const inner = record["act"] === void 0 ? void 0 : parseAct(record["act"], depth + 1);
|
|
64
|
+
if (record["act"] !== void 0 && inner === void 0) return;
|
|
65
|
+
return compact({
|
|
66
|
+
sub: record["sub"],
|
|
67
|
+
kind,
|
|
68
|
+
act: inner
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
function parseAutomation(value) {
|
|
72
|
+
const record = ownRecord(value);
|
|
73
|
+
if (record === void 0 || !isId(record["id"]) || !isVersion(record["version"])) return;
|
|
74
|
+
return {
|
|
75
|
+
id: record["id"],
|
|
76
|
+
version: record["version"]
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
function parseBinding(value) {
|
|
80
|
+
const record = ownRecord(value);
|
|
81
|
+
if (record === void 0) return;
|
|
82
|
+
const connector = record["connector"];
|
|
83
|
+
const tools = record["tools"];
|
|
84
|
+
if (connector !== void 0 && !isId(connector)) return;
|
|
85
|
+
if (tools !== void 0 && !(Array.isArray(tools) && tools.length <= MAX_TOOLS && tools.every(isId) && new Set(tools).size === tools.length)) return;
|
|
86
|
+
return compact({
|
|
87
|
+
connector,
|
|
88
|
+
tools: tools === void 0 ? void 0 : [...tools]
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
function parseAudience(value) {
|
|
92
|
+
if (isId(value)) return value;
|
|
93
|
+
if (Array.isArray(value) && value.length > 0 && value.every(isId)) return [...value];
|
|
94
|
+
}
|
|
95
|
+
function parseDetails(value) {
|
|
96
|
+
if (!Array.isArray(value)) return;
|
|
97
|
+
const out = [];
|
|
98
|
+
for (const item of value) {
|
|
99
|
+
const copied = parseTrigger(item);
|
|
100
|
+
if (copied === void 0 || typeof copied["type"] !== "string") return;
|
|
101
|
+
out.push(copied);
|
|
102
|
+
}
|
|
103
|
+
return out;
|
|
104
|
+
}
|
|
105
|
+
function optional(record, key, parse) {
|
|
106
|
+
const raw = record[key];
|
|
107
|
+
if (raw === void 0) return { ok: true };
|
|
108
|
+
const value = parse(raw);
|
|
109
|
+
return value === void 0 ? { ok: false } : {
|
|
110
|
+
ok: true,
|
|
111
|
+
value
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
function parseBody(record) {
|
|
115
|
+
const { sub, kind, tenant, scope } = record;
|
|
116
|
+
if (record["v"] !== 1 || !isId(sub) || !isRunKind(kind) || tenant !== void 0 && !isId(tenant) || scope !== void 0 && typeof scope !== "string") return;
|
|
117
|
+
const act = optional(record, "act", (value) => parseAct(value, 0));
|
|
118
|
+
const details = optional(record, "authorization_details", parseDetails);
|
|
119
|
+
const automation = optional(record, "automation", parseAutomation);
|
|
120
|
+
const trigger = optional(record, "trigger", parseTrigger);
|
|
121
|
+
const binding = optional(record, "binding", parseBinding);
|
|
122
|
+
if (!act.ok || !details.ok || !automation.ok || !trigger.ok || !binding.ok || scope === void 0 && details.value === void 0 || kind === "automation" !== (automation.value !== void 0)) return;
|
|
123
|
+
return compact({
|
|
124
|
+
v: 1,
|
|
125
|
+
sub,
|
|
126
|
+
kind,
|
|
127
|
+
act: act.value,
|
|
128
|
+
scope,
|
|
129
|
+
authorization_details: details.value,
|
|
130
|
+
automation: automation.value,
|
|
131
|
+
tenant,
|
|
132
|
+
trigger: trigger.value,
|
|
133
|
+
binding: binding.value
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Validates untrusted run-ticket claims and returns a frozen copy with only
|
|
138
|
+
* the v1 fields, or `undefined`. Unknown claims are dropped; a wrong type in
|
|
139
|
+
* a known claim, a missing delegation, or an `automation` that does not match
|
|
140
|
+
* `kind` rejects the whole ticket.
|
|
141
|
+
*/
|
|
142
|
+
function parseRunTicket(claims) {
|
|
143
|
+
const record = ownRecord(claims);
|
|
144
|
+
if (record === void 0) return;
|
|
145
|
+
const { iss, jti, iat, exp } = record;
|
|
146
|
+
const aud = parseAudience(record["aud"]);
|
|
147
|
+
const body = parseBody(record);
|
|
148
|
+
if (body === void 0 || !isId(iss) || !isId(jti) || !isNumericDate(iat) || !isNumericDate(exp) || exp <= iat || aud === void 0) return;
|
|
149
|
+
return freezeDeep({
|
|
150
|
+
...body,
|
|
151
|
+
iss,
|
|
152
|
+
aud,
|
|
153
|
+
jti,
|
|
154
|
+
iat,
|
|
155
|
+
exp
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
function actClaim(actor, depth) {
|
|
159
|
+
if (!isId(actor.id) || !isId(actor.kind)) return;
|
|
160
|
+
const nested = actor["act"];
|
|
161
|
+
const chain = nested === void 0 ? void 0 : parseAct(nested, depth + 1);
|
|
162
|
+
if (nested !== void 0 && chain === void 0) return;
|
|
163
|
+
return compact({
|
|
164
|
+
sub: actor.id,
|
|
165
|
+
kind: actor.kind,
|
|
166
|
+
act: chain
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
function expiryOf(input, issuedAt) {
|
|
170
|
+
if (input.expiresIn === void 0 === (input.expiresAt === void 0)) return;
|
|
171
|
+
if (input.expiresIn !== void 0) return Number.isSafeInteger(input.expiresIn) && input.expiresIn > 0 ? issuedAt + input.expiresIn : void 0;
|
|
172
|
+
const at = nowSeconds(input.expiresAt);
|
|
173
|
+
return at > issuedAt ? at : void 0;
|
|
174
|
+
}
|
|
175
|
+
function invalid(message) {
|
|
176
|
+
throw new TypeError(`PermDock: run ticket ${message}`);
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Signs a `vnd.permdock.run+jwt` for one run. Throws a `TypeError` on input a
|
|
180
|
+
* verifier would refuse: no delegation, an `automation` that does not match
|
|
181
|
+
* `kind`, a non-JSON `trigger`, or an expiry that is not in the future.
|
|
182
|
+
*/
|
|
183
|
+
function signRunTicket(input, signer, options = {}) {
|
|
184
|
+
const issuedAt = nowSeconds(options.now);
|
|
185
|
+
const expiresAt = expiryOf(input, issuedAt);
|
|
186
|
+
if (expiresAt === void 0) invalid("needs exactly one future expiresIn or expiresAt");
|
|
187
|
+
const act = input.actor === void 0 ? void 0 : actClaim(input.actor, 0);
|
|
188
|
+
if (input.actor !== void 0 && act === void 0) invalid("actor needs an id and a kind");
|
|
189
|
+
const wire = toWireDelegation(input.delegation);
|
|
190
|
+
const body = parseBody(compact({
|
|
191
|
+
v: 1,
|
|
192
|
+
sub: input.principal,
|
|
193
|
+
kind: input.kind,
|
|
194
|
+
act,
|
|
195
|
+
scope: wire?.scope,
|
|
196
|
+
authorization_details: wire?.authorization_details,
|
|
197
|
+
automation: input.automation,
|
|
198
|
+
tenant: input.tenant,
|
|
199
|
+
trigger: input.trigger,
|
|
200
|
+
binding: input.binding
|
|
201
|
+
}));
|
|
202
|
+
if (body === void 0) invalid("is invalid: check principal, kind, automation, delegation, trigger and binding");
|
|
203
|
+
if (input.id !== void 0 && !isId(input.id)) invalid("id must be a non-empty string");
|
|
204
|
+
return signer.sign(body, compact({
|
|
205
|
+
typ: RUN_TICKET_TYP,
|
|
206
|
+
audience: options.audience,
|
|
207
|
+
expiresAt,
|
|
208
|
+
issuedAt,
|
|
209
|
+
jti: input.id ?? globalThis.crypto.randomUUID()
|
|
210
|
+
}));
|
|
211
|
+
}
|
|
212
|
+
function isPrincipalRecord(value) {
|
|
213
|
+
return value !== null && typeof value === "object" && !Array.isArray(value) && Object.hasOwn(value, "id") && "id" in value && typeof value.id === "string";
|
|
214
|
+
}
|
|
215
|
+
function actorOf(ticket) {
|
|
216
|
+
if (ticket.act === void 0) return;
|
|
217
|
+
return {
|
|
218
|
+
id: ticket.act.sub,
|
|
219
|
+
kind: ticket.act.kind ?? ticket.kind
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
function delegationOf(ticket) {
|
|
223
|
+
const delegation = fromWireDelegation(compact({
|
|
224
|
+
scope: ticket.scope,
|
|
225
|
+
authorization_details: ticket.authorization_details
|
|
226
|
+
})) ?? { scopes: [] };
|
|
227
|
+
return ticket.act?.act === void 0 ? delegation : {
|
|
228
|
+
...delegation,
|
|
229
|
+
chain: ticket.act
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
function mediaType(typ) {
|
|
233
|
+
const lower = typ?.toLowerCase();
|
|
234
|
+
return lower?.startsWith("application/") === true ? lower.slice(12) : lower;
|
|
235
|
+
}
|
|
236
|
+
async function checkAutomation(ticket, automations) {
|
|
237
|
+
const expected = ticket.automation;
|
|
238
|
+
if (expected === void 0) return;
|
|
239
|
+
if (automations === void 0) return "automation-unavailable";
|
|
240
|
+
try {
|
|
241
|
+
const record = await automations.automation(expected.id, ticket.tenant === void 0 ? {} : { tenant: ticket.tenant });
|
|
242
|
+
const live = ownRecord(record);
|
|
243
|
+
if (live === void 0 || live["id"] !== expected.id || live["revoked"] === true) return "automation-unavailable";
|
|
244
|
+
return live["version"] === expected.version ? void 0 : "automation-changed";
|
|
245
|
+
} catch {
|
|
246
|
+
return "automation-unavailable";
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
async function loadPrincipal(ticket, principals) {
|
|
250
|
+
try {
|
|
251
|
+
const loaded = await principals.principal(ticket.sub, ticket.tenant === void 0 ? {} : { tenant: ticket.tenant });
|
|
252
|
+
if (!isPrincipalRecord(loaded) || loaded.id !== ticket.sub) return {
|
|
253
|
+
ok: false,
|
|
254
|
+
cause: "owner-unavailable"
|
|
255
|
+
};
|
|
256
|
+
return {
|
|
257
|
+
ok: true,
|
|
258
|
+
principal: ticket.tenant === void 0 ? loaded : {
|
|
259
|
+
...loaded,
|
|
260
|
+
tenant: ticket.tenant
|
|
261
|
+
}
|
|
262
|
+
};
|
|
263
|
+
} catch {
|
|
264
|
+
return {
|
|
265
|
+
ok: false,
|
|
266
|
+
cause: "owner-unavailable"
|
|
267
|
+
};
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
function anonymous() {
|
|
271
|
+
return anonymousSubject();
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* Resolves a `vnd.permdock.run+jwt` into the subject the run acts as: the
|
|
275
|
+
* principal loaded live from `principals`, the ticket's actor and its
|
|
276
|
+
* delegation as the ceiling, with `context.trigger` and `context.run`. Every
|
|
277
|
+
* failure (verification, malformed claims, an automation that is missing,
|
|
278
|
+
* revoked or changed, a principal that is gone, a throwing source) is the
|
|
279
|
+
* anonymous subject, never a throw.
|
|
280
|
+
*/
|
|
281
|
+
async function subjectFromRunTicket(token, options) {
|
|
282
|
+
if (typeof token !== "string" || token.length === 0) return anonymous();
|
|
283
|
+
const deny = (cause) => {
|
|
284
|
+
try {
|
|
285
|
+
options.onAuth?.(compact({
|
|
286
|
+
reason: "invalid-token",
|
|
287
|
+
cause,
|
|
288
|
+
source: "run-ticket",
|
|
289
|
+
typ: RUN_TICKET_TYP,
|
|
290
|
+
issuer: options.issuer,
|
|
291
|
+
requestId: options.requestId
|
|
292
|
+
}));
|
|
293
|
+
} catch {}
|
|
294
|
+
return anonymous();
|
|
295
|
+
};
|
|
296
|
+
let ticket;
|
|
297
|
+
try {
|
|
298
|
+
const verified = await options.verifier.verify(token, compact({
|
|
299
|
+
typ: RUN_TICKET_TYP,
|
|
300
|
+
audience: options.audience,
|
|
301
|
+
issuer: options.issuer,
|
|
302
|
+
clockTolerance: options.clockTolerance
|
|
303
|
+
}));
|
|
304
|
+
if (!verified.ok) return deny(verified.cause);
|
|
305
|
+
if (mediaType(verified.header.typ) !== RUN_TICKET_TYP) return deny("wrong-token-type");
|
|
306
|
+
ticket = parseRunTicket(verified.claims);
|
|
307
|
+
} catch {
|
|
308
|
+
return deny("malformed");
|
|
309
|
+
}
|
|
310
|
+
if (ticket === void 0) return deny("invalid-claims");
|
|
311
|
+
if (ticket.exp <= epochSeconds()) return deny("expired");
|
|
312
|
+
const automation = await checkAutomation(ticket, options.automations);
|
|
313
|
+
if (automation !== void 0) return deny(automation);
|
|
314
|
+
const loaded = await loadPrincipal(ticket, options.principals);
|
|
315
|
+
if (!loaded.ok) return deny(loaded.cause);
|
|
316
|
+
const run = compact({
|
|
317
|
+
id: ticket.jti,
|
|
318
|
+
kind: ticket.kind,
|
|
319
|
+
automation: ticket.automation,
|
|
320
|
+
binding: ticket.binding
|
|
321
|
+
});
|
|
322
|
+
return Object.freeze(compact({
|
|
323
|
+
principal: Object.freeze({
|
|
324
|
+
...loaded.principal,
|
|
325
|
+
runTicket: ticket
|
|
326
|
+
}),
|
|
327
|
+
actor: actorOf(ticket),
|
|
328
|
+
delegation: delegationOf(ticket),
|
|
329
|
+
context: Object.freeze(compact({
|
|
330
|
+
trigger: ticket.trigger,
|
|
331
|
+
run
|
|
332
|
+
})),
|
|
333
|
+
expiresAt: ticket.exp
|
|
334
|
+
}));
|
|
335
|
+
}
|
|
336
|
+
//#endregion
|
|
337
|
+
export { signRunTicket as n, subjectFromRunTicket as r, parseRunTicket as t };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { l as scopedTenant, s as protectedView } from "./views-DTIIO-oQ.js";
|
|
2
2
|
//#region src/svelte/protected.ts
|
|
3
3
|
/** The instance for `tenant`, built once per store change rather than once per check. */
|
|
4
4
|
function scopedFor(store, tenant, _generation) {
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
import { r as
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
1
|
+
import { r as isRecord } from "./compact-CAf557ZB.js";
|
|
2
|
+
import { r as principal } from "./refs-K6eWUJ0H.js";
|
|
3
|
+
import { a as deny, n as role, r as allow } from "./role-builder-CXbis5-X.js";
|
|
4
|
+
import { E as memoryCustomRoleSource, _ as limits, g as memoryRelationSource, v as memoryLimitStore } from "./src-DLfUWFAI.js";
|
|
5
|
+
import { h as secondsAt } from "./time-DkWjdL98.js";
|
|
6
|
+
import { l as relation, n as anyone } from "./grantee-Cn1HyUsI.js";
|
|
7
|
+
import { n as definePolicy } from "./policy-DLZJ5gAp.js";
|
|
8
|
+
import { s as quoteSqlLiteral } from "./sql-B5T1IL83.js";
|
|
9
|
+
import { a as saasPlans, i as saasPermissions, o as saasRoles } from "./permissions-CZKiUfFM.js";
|
|
8
10
|
//#region src/testing/saas/policy.ts
|
|
9
11
|
function isSubject(user) {
|
|
10
12
|
return user !== null && "context" in user && "principal" in user;
|
|
@@ -66,7 +68,7 @@ const saasPolicy = definePolicy({
|
|
|
66
68
|
to,
|
|
67
69
|
limit: {
|
|
68
70
|
count: 5,
|
|
69
|
-
per:
|
|
71
|
+
per: 86400
|
|
70
72
|
}
|
|
71
73
|
})),
|
|
72
74
|
allow(p.apiKey.revokeAll, {
|
|
@@ -399,7 +401,7 @@ function saasRelations(seed = saasSeed) {
|
|
|
399
401
|
principal: share.user,
|
|
400
402
|
expiresAt: share.expiresAt
|
|
401
403
|
});
|
|
402
|
-
return
|
|
404
|
+
return memoryRelationSource(saasPermissions, {
|
|
403
405
|
rows: { folder: seed.folders },
|
|
404
406
|
edges: { folder: {
|
|
405
407
|
viewer: edges("viewer"),
|
|
@@ -597,7 +599,7 @@ function encodeJson(value) {
|
|
|
597
599
|
}
|
|
598
600
|
/** Signs an ES256 access token for `sub` with WebCrypto; no dependency. */
|
|
599
601
|
async function signSaasToken(sub, options = {}) {
|
|
600
|
-
const iat = options.now
|
|
602
|
+
const iat = secondsAt(options.now);
|
|
601
603
|
const memberships = options.memberships === false ? void 0 : options.memberships ?? saasMemberships(sub);
|
|
602
604
|
const header = {
|
|
603
605
|
alg: "ES256",
|
|
@@ -632,7 +634,7 @@ function decodeSegment(segment) {
|
|
|
632
634
|
function parseSegment(segment) {
|
|
633
635
|
try {
|
|
634
636
|
const parsed = JSON.parse(new TextDecoder().decode(decodeSegment(segment)));
|
|
635
|
-
return
|
|
637
|
+
return isRecord(parsed) ? parsed : null;
|
|
636
638
|
} catch {
|
|
637
639
|
return null;
|
|
638
640
|
}
|
|
@@ -642,11 +644,12 @@ function parseSegment(segment) {
|
|
|
642
644
|
* and returns its `sub`, or `null`; never throws. Identity only: memberships
|
|
643
645
|
* and plans come from the seed, never from the token.
|
|
644
646
|
*/
|
|
645
|
-
async function verifySaasToken(token, now
|
|
647
|
+
async function verifySaasToken(token, now) {
|
|
646
648
|
return (await verifySaasSession(token, now))?.sub ?? null;
|
|
647
649
|
}
|
|
648
650
|
/** `verifySaasToken` plus the token's `exp` as `expiresAt` (epoch seconds). */
|
|
649
|
-
async function verifySaasSession(token,
|
|
651
|
+
async function verifySaasSession(token, at) {
|
|
652
|
+
const now = secondsAt(at);
|
|
650
653
|
const parts = typeof token === "string" ? token.split(".") : [];
|
|
651
654
|
const [head, body, signature] = parts;
|
|
652
655
|
if (parts.length !== 3 || head === void 0 || body === void 0 || signature === void 0) return null;
|
|
@@ -714,8 +717,8 @@ function saasLimitStore(used = 0) {
|
|
|
714
717
|
function saasScenarioOptions(scenario) {
|
|
715
718
|
return {
|
|
716
719
|
...scenario.tenant === void 0 ? {} : { tenant: scenario.tenant },
|
|
717
|
-
customRoles:
|
|
718
|
-
limits: saasLimitStore(scenario.quotaUsed),
|
|
720
|
+
customRoles: memoryCustomRoleSource(saasCustomRoles),
|
|
721
|
+
limits: limits(saasLimitStore(scenario.quotaUsed)),
|
|
719
722
|
relations: saasRelations()
|
|
720
723
|
};
|
|
721
724
|
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { t as defineLeaf } from "./command-L8EstFNm.js";
|
|
2
|
+
//#region src/cli/commands/scan.ts
|
|
3
|
+
const scan = defineLeaf({
|
|
4
|
+
flags: {
|
|
5
|
+
pattern: {
|
|
6
|
+
type: "string",
|
|
7
|
+
repeatable: true,
|
|
8
|
+
description: "An extra regular expression to report",
|
|
9
|
+
valueHint: "regex"
|
|
10
|
+
},
|
|
11
|
+
src: {
|
|
12
|
+
type: "string",
|
|
13
|
+
repeatable: true,
|
|
14
|
+
description: "Directories to scan (default collect.srcPath or src)",
|
|
15
|
+
valueHint: "dir"
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
async run(ctx, { flags }) {
|
|
19
|
+
const { runAdoptionScan } = await import("./adoption-scan-B4R5fnMU.js");
|
|
20
|
+
return runAdoptionScan({
|
|
21
|
+
cwd: ctx.cwd,
|
|
22
|
+
srcPath: flags.src.length > 0 ? flags.src : ctx.config.collect?.srcPath ?? ["src"],
|
|
23
|
+
patterns: flags.pattern,
|
|
24
|
+
json: ctx.json
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
//#endregion
|
|
29
|
+
export { scan };
|