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,224 @@
|
|
|
1
|
+
import { t as compact } from "../compact-CAf557ZB.js";
|
|
2
|
+
import { n as freezeDeep } from "../freeze-CrU8nQeX.js";
|
|
3
|
+
import { n as loadPrincipalByIdentity } from "../principal-source-pHneukrx.js";
|
|
4
|
+
import { f as nowMillis } from "../time-DkWjdL98.js";
|
|
5
|
+
import { c as withApp, t as getPermDock } from "../permdock-B9JxkBwC.js";
|
|
6
|
+
import { c as isApprovalError } from "../types-DqzsnlSA.js";
|
|
7
|
+
import { a as requestApproval, o as resolveApproval, s as resumeDecision } from "../helpers-DTcZOzhF.js";
|
|
8
|
+
import { t as approvalPrompt } from "../approval-prompt-Dg5LeAcT.js";
|
|
9
|
+
//#region src/chat/subject.ts
|
|
10
|
+
function nonEmpty(value) {
|
|
11
|
+
return typeof value === "string" && value !== "";
|
|
12
|
+
}
|
|
13
|
+
function isChatAuthor(value) {
|
|
14
|
+
if (typeof value !== "object" || value === null) return false;
|
|
15
|
+
const provider = Reflect.get(value, "provider");
|
|
16
|
+
const userId = Reflect.get(value, "userId");
|
|
17
|
+
const workspace = Reflect.get(value, "workspace");
|
|
18
|
+
return nonEmpty(provider) && nonEmpty(userId) && (workspace === void 0 || nonEmpty(workspace));
|
|
19
|
+
}
|
|
20
|
+
/** The principal linked to `author`, or `null` for an unlinked or malformed author. Never throws. */
|
|
21
|
+
function principalFromChat(author, principals) {
|
|
22
|
+
if (!isChatAuthor(author)) return Promise.resolve(null);
|
|
23
|
+
return loadPrincipalByIdentity(principals, compact({
|
|
24
|
+
kind: "chat",
|
|
25
|
+
provider: author.provider,
|
|
26
|
+
value: author.userId,
|
|
27
|
+
workspace: author.workspace
|
|
28
|
+
}));
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* The subject a chat author acts as: the principal its identity link
|
|
32
|
+
* names, or anonymous when there is no link. Never throws.
|
|
33
|
+
*/
|
|
34
|
+
async function subjectFromChat(author, options) {
|
|
35
|
+
return {
|
|
36
|
+
principal: await principalFromChat(author, options.principals),
|
|
37
|
+
context: {}
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
//#endregion
|
|
41
|
+
//#region src/chat/create.ts
|
|
42
|
+
const ADAPTER = "chat";
|
|
43
|
+
function denied(reason, permission) {
|
|
44
|
+
return freezeDeep({
|
|
45
|
+
outcome: "denied",
|
|
46
|
+
denials: [{
|
|
47
|
+
role: null,
|
|
48
|
+
reason,
|
|
49
|
+
detail: { permission: permission.key }
|
|
50
|
+
}],
|
|
51
|
+
alternatives: []
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
function idOf(row) {
|
|
55
|
+
if (row === null || typeof row !== "object") return;
|
|
56
|
+
const id = Reflect.get(row, "id");
|
|
57
|
+
return typeof id === "string" || typeof id === "number" ? String(id) : void 0;
|
|
58
|
+
}
|
|
59
|
+
function isLive(request, now) {
|
|
60
|
+
return request.status !== "expired" && Date.parse(request.expiresAt) > now;
|
|
61
|
+
}
|
|
62
|
+
async function findRequest(store, id) {
|
|
63
|
+
if (store.getById !== void 0) return store.getById(id);
|
|
64
|
+
let cursor;
|
|
65
|
+
do {
|
|
66
|
+
const page = await store.list(compact({ cursor }));
|
|
67
|
+
const found = page.items.find((request) => request.id === id);
|
|
68
|
+
if (found !== void 0) return found;
|
|
69
|
+
cursor = page.next;
|
|
70
|
+
} while (cursor !== void 0);
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Creates the chat PermDock. Every command and action is decided as the
|
|
75
|
+
* principal the author's chat identity links to, loaded live; an unlinked
|
|
76
|
+
* author is anonymous and denied.
|
|
77
|
+
*/
|
|
78
|
+
function createPermDock(policy, given) {
|
|
79
|
+
const options = withApp(policy, given);
|
|
80
|
+
const { store: approvals, ...permdockOptions } = options;
|
|
81
|
+
const instanceFor = (subject) => getPermDock(policy, subject, permdockOptions);
|
|
82
|
+
const getPermDock$1 = async (author) => instanceFor(await subjectFromChat(author, { principals: options.principals }));
|
|
83
|
+
const parked = async (operation, decision, permdock, row) => {
|
|
84
|
+
if (approvals === void 0) return null;
|
|
85
|
+
const resource = compact({
|
|
86
|
+
type: operation.permission.resource,
|
|
87
|
+
id: idOf(row)
|
|
88
|
+
});
|
|
89
|
+
const current = await approvals.get(decision.token);
|
|
90
|
+
if (current !== null && isLive(current, nowMillis())) {
|
|
91
|
+
if (current.status === "pending") return approvalPrompt(current, { operation });
|
|
92
|
+
return resumeDecision({
|
|
93
|
+
decision,
|
|
94
|
+
permission: operation.permission,
|
|
95
|
+
subject: permdock.subject,
|
|
96
|
+
store: approvals,
|
|
97
|
+
resource,
|
|
98
|
+
adapter: ADAPTER,
|
|
99
|
+
token: decision.token
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
const request = await requestApproval(approvals, decision, {
|
|
103
|
+
permission: operation.permission,
|
|
104
|
+
resource,
|
|
105
|
+
subject: permdock.subject,
|
|
106
|
+
adapter: ADAPTER
|
|
107
|
+
});
|
|
108
|
+
return approvalPrompt(request, { operation });
|
|
109
|
+
};
|
|
110
|
+
const protect = (operation, handler) => {
|
|
111
|
+
const { permission } = operation;
|
|
112
|
+
return async (author, input) => {
|
|
113
|
+
const permdock = await getPermDock$1(author);
|
|
114
|
+
let row;
|
|
115
|
+
if (operation.data !== void 0) {
|
|
116
|
+
try {
|
|
117
|
+
row = await operation.data(input);
|
|
118
|
+
} catch {
|
|
119
|
+
return {
|
|
120
|
+
outcome: "denied",
|
|
121
|
+
decision: denied("closure-error", permission)
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
if (permission.kind === "instance" && (row === null || row === void 0)) return {
|
|
125
|
+
outcome: "denied",
|
|
126
|
+
decision: denied("validation", permission)
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
let decision = permdock.decide(permission, row, {
|
|
130
|
+
adapter: ADAPTER,
|
|
131
|
+
call: "adapter",
|
|
132
|
+
operation: {
|
|
133
|
+
name: operation.name,
|
|
134
|
+
meta: operation.meta
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
if (decision.outcome === "approval-required") {
|
|
138
|
+
const resolved = await parked(operation, decision, permdock, row);
|
|
139
|
+
if (resolved === null || "v" in resolved) return {
|
|
140
|
+
outcome: "approval-required",
|
|
141
|
+
decision,
|
|
142
|
+
prompt: resolved
|
|
143
|
+
};
|
|
144
|
+
decision = resolved;
|
|
145
|
+
}
|
|
146
|
+
switch (decision.outcome) {
|
|
147
|
+
case "granted": break;
|
|
148
|
+
case "denied": return {
|
|
149
|
+
outcome: "denied",
|
|
150
|
+
decision
|
|
151
|
+
};
|
|
152
|
+
case "approval-required": return {
|
|
153
|
+
outcome: "approval-required",
|
|
154
|
+
decision,
|
|
155
|
+
prompt: null
|
|
156
|
+
};
|
|
157
|
+
default: return decision;
|
|
158
|
+
}
|
|
159
|
+
if (!isChatAuthor(author)) return {
|
|
160
|
+
outcome: "denied",
|
|
161
|
+
decision: denied("validation", permission)
|
|
162
|
+
};
|
|
163
|
+
return {
|
|
164
|
+
outcome: "granted",
|
|
165
|
+
value: await handler({
|
|
166
|
+
author,
|
|
167
|
+
input,
|
|
168
|
+
row,
|
|
169
|
+
permdock,
|
|
170
|
+
decision
|
|
171
|
+
})
|
|
172
|
+
};
|
|
173
|
+
};
|
|
174
|
+
};
|
|
175
|
+
const resolveAction = async (author, action) => {
|
|
176
|
+
const status = action.status;
|
|
177
|
+
if (status !== "approved" && status !== "rejected" || typeof action.approval !== "string" || action.approval === "") return {
|
|
178
|
+
ok: false,
|
|
179
|
+
cause: "invalid-action"
|
|
180
|
+
};
|
|
181
|
+
const subject = await subjectFromChat(author, { principals: options.principals });
|
|
182
|
+
if (subject.principal === null) return {
|
|
183
|
+
ok: false,
|
|
184
|
+
cause: "approver-unauthenticated"
|
|
185
|
+
};
|
|
186
|
+
if (approvals === void 0) return {
|
|
187
|
+
ok: false,
|
|
188
|
+
cause: "approval-not-found"
|
|
189
|
+
};
|
|
190
|
+
try {
|
|
191
|
+
const request = await findRequest(approvals, action.approval);
|
|
192
|
+
if (request === null) return {
|
|
193
|
+
ok: false,
|
|
194
|
+
cause: "approval-not-found"
|
|
195
|
+
};
|
|
196
|
+
const resolved = await resolveApproval(approvals, request.token, compact({
|
|
197
|
+
status,
|
|
198
|
+
by: subject,
|
|
199
|
+
note: action.note
|
|
200
|
+
}), compact({
|
|
201
|
+
relations: permdockOptions.relations,
|
|
202
|
+
requireDistinctApprover: true,
|
|
203
|
+
permdockFor: (approver) => instanceFor(approver)
|
|
204
|
+
}));
|
|
205
|
+
return {
|
|
206
|
+
ok: true,
|
|
207
|
+
id: resolved.id,
|
|
208
|
+
status: resolved.status
|
|
209
|
+
};
|
|
210
|
+
} catch (error) {
|
|
211
|
+
return {
|
|
212
|
+
ok: false,
|
|
213
|
+
cause: isApprovalError(error) ? error.code : "approval-not-found"
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
};
|
|
217
|
+
return Object.freeze({
|
|
218
|
+
getPermDock: getPermDock$1,
|
|
219
|
+
protect,
|
|
220
|
+
resolveAction
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
//#endregion
|
|
224
|
+
export { createPermDock, isChatAuthor, subjectFromChat };
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { n as ApprovalUrl, t as ApprovalPrompt } from "../approval-prompt-Djo_PyZc.js";
|
|
2
|
+
import { l as ChatAuthor, n as ChatActionResult, o as ChatPermDock } from "../create-0VZ7Pdiu.js";
|
|
3
|
+
import { n as ChatTransport } from "../types-DX0LaKTb.js";
|
|
4
|
+
import { ActionEvent, Author, CardElement } from "chat";
|
|
5
|
+
//#region src/chat-sdk/author.d.ts
|
|
6
|
+
type ChatSdkAuthorOptions = {
|
|
7
|
+
/** The platform workspace the bot is installed in, matched against identity links. */
|
|
8
|
+
readonly workspace?: string;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* The `ChatAuthor` of a Chat SDK message or action, named by its adapter
|
|
12
|
+
* (`adapter.name`, such as `slack`). `null` for a bot, this bot, the
|
|
13
|
+
* platform itself or an empty id. Reads only `userId`: the email and display
|
|
14
|
+
* name never identify anyone.
|
|
15
|
+
*/
|
|
16
|
+
export declare function chatSdkAuthor(user: Pick<Author, "userId" | "isBot" | "isMe" | "isSystem">, adapter: {
|
|
17
|
+
readonly name: string;
|
|
18
|
+
} | string, options?: ChatSdkAuthorOptions): ChatAuthor | null;
|
|
19
|
+
//#endregion
|
|
20
|
+
//#region src/chat-sdk/card.d.ts
|
|
21
|
+
/** The `actionId` of the card's approve button; its `value` is the request id. */
|
|
22
|
+
export declare const APPROVE_ACTION = "permdock:approve";
|
|
23
|
+
/** The `actionId` of the card's reject button; its `value` is the request id. */
|
|
24
|
+
export declare const REJECT_ACTION = "permdock:reject";
|
|
25
|
+
type ApprovalCardOptions = {
|
|
26
|
+
/** The app's approval page: a base URL the request id is appended to, or a function of the prompt. Must be https. */
|
|
27
|
+
readonly approvalUrl: ApprovalUrl;
|
|
28
|
+
/** `false` leaves out the approve and reject buttons, so the page is the only place to decide. Defaults to `true`. */
|
|
29
|
+
readonly buttons?: boolean;
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* A Chat SDK card for an approval prompt: the detail, who asked, the
|
|
33
|
+
* permission and the expiry, a link to the approval page, and approve and
|
|
34
|
+
* reject buttons that carry the request id, never its token. A click is
|
|
35
|
+
* applied by `approvalActions` as the verified clicking user. Throws a
|
|
36
|
+
* `TypeError` for an approval page that is not https.
|
|
37
|
+
*/
|
|
38
|
+
export declare function approvalCard(prompt: ApprovalPrompt, options: ApprovalCardOptions): CardElement;
|
|
39
|
+
//#endregion
|
|
40
|
+
//#region src/chat-sdk/actions.d.ts
|
|
41
|
+
type ApprovalActionsOptions = ChatSdkAuthorOptions & {
|
|
42
|
+
/**
|
|
43
|
+
* Receives every verdict instead of the default replies: the outcome posted
|
|
44
|
+
* to the thread, a refusal shown only to the clicking user.
|
|
45
|
+
*/
|
|
46
|
+
readonly onResult?: (result: ChatActionResult, event: ActionEvent) => void | Promise<void>;
|
|
47
|
+
};
|
|
48
|
+
type ApprovalActions = {
|
|
49
|
+
/** The action ids to register: `chat.onAction(actions.actionIds, actions.onAction)`. */
|
|
50
|
+
readonly actionIds: readonly [typeof APPROVE_ACTION, typeof REJECT_ACTION];
|
|
51
|
+
readonly onAction: (event: ActionEvent) => Promise<void>;
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* Applies the approve and reject buttons of `approvalCard`. The clicking
|
|
55
|
+
* user, as the Chat SDK adapter verified them, is resolved through
|
|
56
|
+
* `ChatPermDock.resolveAction`; the button value names the request by id.
|
|
57
|
+
* A click from an unlinked user, the requester or a bot records nothing.
|
|
58
|
+
*/
|
|
59
|
+
export declare function approvalActions(permdock: ChatPermDock, options?: ApprovalActionsOptions): ApprovalActions;
|
|
60
|
+
//#endregion
|
|
61
|
+
//#region src/chat-sdk/transport.d.ts
|
|
62
|
+
/** The part of a Chat SDK `Chat` the transport calls; a `new Chat(...)` fits. */
|
|
63
|
+
type ChatSdkClient = {
|
|
64
|
+
openDM(user: string): Promise<{
|
|
65
|
+
post(message: string | CardElement): Promise<{
|
|
66
|
+
readonly id: string;
|
|
67
|
+
}>;
|
|
68
|
+
}>;
|
|
69
|
+
};
|
|
70
|
+
type ChatSdkTransportOptions = {
|
|
71
|
+
/** The adapter name recipients are on (`slack`, `teams`, …); a target for another provider is rejected. */
|
|
72
|
+
readonly provider: string;
|
|
73
|
+
/** The workspace the bot is installed in; a target for another workspace is rejected. */
|
|
74
|
+
readonly workspace?: string;
|
|
75
|
+
/** Keys this transport remembers to skip a repeat post. Defaults to 1000. */
|
|
76
|
+
readonly remember?: number;
|
|
77
|
+
};
|
|
78
|
+
/**
|
|
79
|
+
* The chat channel of `permdock/delivery` over the Chat SDK: opens a direct
|
|
80
|
+
* message with the target's platform user id and posts the text, or the
|
|
81
|
+
* approval card when the message carries an approval prompt. The Chat SDK
|
|
82
|
+
* takes no idempotency key, so the transport skips a key it already sent,
|
|
83
|
+
* per instance and in memory only.
|
|
84
|
+
*/
|
|
85
|
+
export declare function chatSdkTransport(chat: ChatSdkClient, options: ChatSdkTransportOptions): ChatTransport;
|
|
86
|
+
//#endregion
|
|
87
|
+
export type { ApprovalActions, ApprovalActionsOptions, ApprovalCardOptions, ChatSdkAuthorOptions, ChatSdkClient, ChatSdkTransportOptions };
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
import { t as compact } from "../compact-CAf557ZB.js";
|
|
2
|
+
import { n as approvalUrlFor } from "../approval-prompt-Dg5LeAcT.js";
|
|
3
|
+
import { i as isDeliveryTarget } from "../target-Bw37TFNA.js";
|
|
4
|
+
import { Actions, Button, Card, CardText, Field, Fields, LinkButton } from "chat";
|
|
5
|
+
//#region src/chat-sdk/author.ts
|
|
6
|
+
/**
|
|
7
|
+
* The `ChatAuthor` of a Chat SDK message or action, named by its adapter
|
|
8
|
+
* (`adapter.name`, such as `slack`). `null` for a bot, this bot, the
|
|
9
|
+
* platform itself or an empty id. Reads only `userId`: the email and display
|
|
10
|
+
* name never identify anyone.
|
|
11
|
+
*/
|
|
12
|
+
function chatSdkAuthor(user, adapter, options = {}) {
|
|
13
|
+
const provider = typeof adapter === "string" ? adapter : adapter.name;
|
|
14
|
+
if (typeof provider !== "string" || provider === "" || typeof user.userId !== "string" || user.userId === "" || user.isBot === true || user.isMe || user.isSystem === true) return null;
|
|
15
|
+
return compact({
|
|
16
|
+
provider,
|
|
17
|
+
userId: user.userId,
|
|
18
|
+
workspace: options.workspace === void 0 || options.workspace === "" ? void 0 : options.workspace
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
//#endregion
|
|
22
|
+
//#region src/chat-sdk/card.ts
|
|
23
|
+
/** The `actionId` of the card's approve button; its `value` is the request id. */
|
|
24
|
+
const APPROVE_ACTION = "permdock:approve";
|
|
25
|
+
/** The `actionId` of the card's reject button; its `value` is the request id. */
|
|
26
|
+
const REJECT_ACTION = "permdock:reject";
|
|
27
|
+
function oneLine(value) {
|
|
28
|
+
return value.replaceAll(/\s+/gu, " ").trim();
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* A Chat SDK card for an approval prompt: the detail, who asked, the
|
|
32
|
+
* permission and the expiry, a link to the approval page, and approve and
|
|
33
|
+
* reject buttons that carry the request id, never its token. A click is
|
|
34
|
+
* applied by `approvalActions` as the verified clicking user. Throws a
|
|
35
|
+
* `TypeError` for an approval page that is not https.
|
|
36
|
+
*/
|
|
37
|
+
function approvalCard(prompt, options) {
|
|
38
|
+
const url = approvalUrlFor(prompt, options.approvalUrl);
|
|
39
|
+
const requester = prompt.requester.principal?.id ?? "an anonymous caller";
|
|
40
|
+
const actor = prompt.requester.actor;
|
|
41
|
+
const fields = [
|
|
42
|
+
Field({
|
|
43
|
+
label: "Requested by",
|
|
44
|
+
value: actor === void 0 ? requester : `${requester} through ${actor.kind} ${actor.id}`
|
|
45
|
+
}),
|
|
46
|
+
Field({
|
|
47
|
+
label: "Permission",
|
|
48
|
+
value: prompt.permission
|
|
49
|
+
}),
|
|
50
|
+
Field({
|
|
51
|
+
label: "Resource",
|
|
52
|
+
value: prompt.resource.id === void 0 ? prompt.resource.type : `${prompt.resource.type} ${prompt.resource.id}`
|
|
53
|
+
}),
|
|
54
|
+
...prompt.operation?.risk === void 0 ? [] : [Field({
|
|
55
|
+
label: "Risk",
|
|
56
|
+
value: prompt.operation.risk
|
|
57
|
+
})],
|
|
58
|
+
Field({
|
|
59
|
+
label: "Expires",
|
|
60
|
+
value: prompt.expiresAt
|
|
61
|
+
})
|
|
62
|
+
];
|
|
63
|
+
const review = LinkButton({
|
|
64
|
+
url,
|
|
65
|
+
label: "Review"
|
|
66
|
+
});
|
|
67
|
+
const children = [
|
|
68
|
+
CardText(oneLine(prompt.detail)),
|
|
69
|
+
Fields(fields),
|
|
70
|
+
Actions(options.buttons === false ? [review] : [
|
|
71
|
+
Button({
|
|
72
|
+
id: APPROVE_ACTION,
|
|
73
|
+
label: "Approve",
|
|
74
|
+
style: "primary",
|
|
75
|
+
value: prompt.id
|
|
76
|
+
}),
|
|
77
|
+
Button({
|
|
78
|
+
id: REJECT_ACTION,
|
|
79
|
+
label: "Reject",
|
|
80
|
+
style: "danger",
|
|
81
|
+
value: prompt.id
|
|
82
|
+
}),
|
|
83
|
+
review
|
|
84
|
+
])
|
|
85
|
+
];
|
|
86
|
+
return Card({
|
|
87
|
+
title: `Approval needed: ${oneLine(prompt.operation?.title ?? prompt.detail)}`,
|
|
88
|
+
children
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
//#endregion
|
|
92
|
+
//#region src/chat-sdk/actions.ts
|
|
93
|
+
async function reply(result, event) {
|
|
94
|
+
const { thread } = event;
|
|
95
|
+
if (thread === null) return;
|
|
96
|
+
if (result.ok) {
|
|
97
|
+
const verdict = result.status === "approved" ? "Approved" : "Rejected";
|
|
98
|
+
await thread.post(`${verdict} by ${event.user.userName}.`);
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
await thread.postEphemeral(event.user, `The approval was not recorded: ${result.cause}.`, { fallbackToDM: false });
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Applies the approve and reject buttons of `approvalCard`. The clicking
|
|
105
|
+
* user, as the Chat SDK adapter verified them, is resolved through
|
|
106
|
+
* `ChatPermDock.resolveAction`; the button value names the request by id.
|
|
107
|
+
* A click from an unlinked user, the requester or a bot records nothing.
|
|
108
|
+
*/
|
|
109
|
+
function approvalActions(permdock, options = {}) {
|
|
110
|
+
const onAction = async (event) => {
|
|
111
|
+
if (event.actionId !== "permdock:approve" && event.actionId !== "permdock:reject") return;
|
|
112
|
+
const author = chatSdkAuthor(event.user, event.adapter, options);
|
|
113
|
+
const result = await permdock.resolveAction(author, {
|
|
114
|
+
approval: event.value ?? "",
|
|
115
|
+
status: event.actionId === "permdock:approve" ? "approved" : "rejected"
|
|
116
|
+
});
|
|
117
|
+
await (options.onResult ?? reply)(result, event);
|
|
118
|
+
};
|
|
119
|
+
return Object.freeze({
|
|
120
|
+
actionIds: [APPROVE_ACTION, REJECT_ACTION],
|
|
121
|
+
onAction
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
//#endregion
|
|
125
|
+
//#region src/chat-sdk/transport.ts
|
|
126
|
+
const DEFAULT_REMEMBER = 1e3;
|
|
127
|
+
function failed(cause, retryable, reason) {
|
|
128
|
+
return reason === void 0 ? {
|
|
129
|
+
status: "failed",
|
|
130
|
+
cause,
|
|
131
|
+
retryable
|
|
132
|
+
} : {
|
|
133
|
+
status: "failed",
|
|
134
|
+
cause,
|
|
135
|
+
retryable,
|
|
136
|
+
reason
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
/** Maps a Chat SDK throw by its `ChatError` code; anything else is retryable. */
|
|
140
|
+
function chatSdkFailure(error) {
|
|
141
|
+
switch (typeof error === "object" && error !== null ? Reflect.get(error, "code") : void 0) {
|
|
142
|
+
case "RATE_LIMITED": return failed("rate-limited", true);
|
|
143
|
+
case "NOT_IMPLEMENTED": return failed("rejected", false, "the adapter cannot open a direct message");
|
|
144
|
+
default: return failed("unavailable", true);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* The chat channel of `permdock/delivery` over the Chat SDK: opens a direct
|
|
149
|
+
* message with the target's platform user id and posts the text, or the
|
|
150
|
+
* approval card when the message carries an approval prompt. The Chat SDK
|
|
151
|
+
* takes no idempotency key, so the transport skips a key it already sent,
|
|
152
|
+
* per instance and in memory only.
|
|
153
|
+
*/
|
|
154
|
+
function chatSdkTransport(chat, options) {
|
|
155
|
+
const remember = options.remember ?? DEFAULT_REMEMBER;
|
|
156
|
+
const sent = /* @__PURE__ */ new Map();
|
|
157
|
+
const record = (key, result) => {
|
|
158
|
+
sent.set(key, result);
|
|
159
|
+
if (sent.size > remember) {
|
|
160
|
+
const oldest = sent.keys().next();
|
|
161
|
+
if (oldest.done !== true) sent.delete(oldest.value);
|
|
162
|
+
}
|
|
163
|
+
};
|
|
164
|
+
const deliver = async (target, message, deliveryOptions) => {
|
|
165
|
+
if (!isDeliveryTarget(target, "chat")) return failed("invalid-recipient", false);
|
|
166
|
+
if (target.provider !== void 0 && target.provider !== options.provider || target.workspace !== void 0 && options.workspace !== void 0 && target.workspace !== options.workspace) return failed("rejected", false, "the target is on another platform or workspace");
|
|
167
|
+
const previous = sent.get(deliveryOptions.idempotencyKey);
|
|
168
|
+
if (previous !== void 0) return previous;
|
|
169
|
+
let body;
|
|
170
|
+
try {
|
|
171
|
+
body = message.approval === void 0 ? message.text : approvalCard(message.approval.prompt, { approvalUrl: message.approval.url });
|
|
172
|
+
} catch {
|
|
173
|
+
return {
|
|
174
|
+
status: "failed",
|
|
175
|
+
cause: "invalid-message",
|
|
176
|
+
retryable: false
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
try {
|
|
180
|
+
const result = {
|
|
181
|
+
status: "sent",
|
|
182
|
+
providerId: (await (await chat.openDM(target.address)).post(body)).id
|
|
183
|
+
};
|
|
184
|
+
record(deliveryOptions.idempotencyKey, result);
|
|
185
|
+
return result;
|
|
186
|
+
} catch (error) {
|
|
187
|
+
return chatSdkFailure(error);
|
|
188
|
+
}
|
|
189
|
+
};
|
|
190
|
+
return Object.freeze({
|
|
191
|
+
channel: "chat",
|
|
192
|
+
name: "chat-sdk",
|
|
193
|
+
deliver
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
//#endregion
|
|
197
|
+
export { APPROVE_ACTION, REJECT_ACTION, approvalActions, approvalCard, chatSdkAuthor, chatSdkTransport };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { o as readPath } from "./paths-DXSHAMIa.js";
|
|
2
|
+
//#region src/core/claims-map.ts
|
|
3
|
+
/** The value at `path`; a function that throws reads as absent, so a bad mapping fails closed. */
|
|
4
|
+
function readClaim(claims, path) {
|
|
5
|
+
if (typeof path === "string") return readPath(claims, path);
|
|
6
|
+
try {
|
|
7
|
+
return path(claims);
|
|
8
|
+
} catch {
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
//#endregion
|
|
13
|
+
export { readClaim as t };
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
//#region src/core/claims-map.d.ts
|
|
2
|
+
/** Where a value lives in verified claims: a dotted path (`app_metadata.roles`), or a function over the claims. */
|
|
3
|
+
type ClaimPath = string | ((claims: Readonly<Record<string, unknown>>) => unknown);
|
|
4
|
+
/**
|
|
5
|
+
* How one provider's verified claims map to a principal. Every subject
|
|
6
|
+
* provider takes it as `claims`; each field it leaves out keeps that
|
|
7
|
+
* provider's default. Mapping only: core never verifies a token, and a claim
|
|
8
|
+
* becomes a principal field only after the provider verified the token.
|
|
9
|
+
*/
|
|
10
|
+
type ClaimsMap = {
|
|
11
|
+
readonly id?: ClaimPath;
|
|
12
|
+
readonly roles?: ClaimPath;
|
|
13
|
+
readonly groups?: ClaimPath;
|
|
14
|
+
readonly entitlements?: ClaimPath;
|
|
15
|
+
readonly plans?: ClaimPath;
|
|
16
|
+
/** The active tenant. */
|
|
17
|
+
readonly tenant?: ClaimPath;
|
|
18
|
+
/** `[{ scope, id, within?, roles }]` carried in the token. */
|
|
19
|
+
readonly memberships?: ClaimPath;
|
|
20
|
+
/** `'user'`, `'service'` or `'workload'`, or the path that holds one. */
|
|
21
|
+
readonly kind?: string;
|
|
22
|
+
readonly assurance?: string | {
|
|
23
|
+
readonly acr?: string;
|
|
24
|
+
readonly amr?: string;
|
|
25
|
+
readonly authTime?: string;
|
|
26
|
+
/** OpenID Connect for Identity Assurance; default `verified_claims`. */
|
|
27
|
+
readonly verified?: string;
|
|
28
|
+
};
|
|
29
|
+
readonly session?: ClaimPath;
|
|
30
|
+
};
|
|
31
|
+
//#endregion
|
|
32
|
+
export { ClaimsMap as t };
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { t as
|
|
4
|
-
import { t as ToolMap } from "../types-Bvc4oWT6.js";
|
|
1
|
+
import { T as Policy, j as PolicyVocabulary, rr as Principal } from "../policy-types-DzwivBgR.js";
|
|
2
|
+
import { r as PermDock } from "../permdock-D7eeLJER.js";
|
|
3
|
+
import { o as AgentAdapterOptions, t as AgentPermDock } from "../create-BDS7wc3y.js";
|
|
5
4
|
//#region src/claude-agent/create.d.ts
|
|
6
5
|
/** Structural `McpServerProvenance` from `@anthropic-ai/claude-agent-sdk`. */
|
|
7
6
|
type ClaudeMcpServer = {
|
|
@@ -19,15 +18,9 @@ type ClaudeAgentContext = {
|
|
|
19
18
|
readonly sessionId?: string;
|
|
20
19
|
readonly agentId?: string;
|
|
21
20
|
};
|
|
22
|
-
type ClaudeAgentPermDockOptions<TUser = unknown> =
|
|
23
|
-
readonly subject: (context: ClaudeAgentContext) => TUser | Promise<TUser>;
|
|
24
|
-
readonly actor?: (context: ClaudeAgentContext) => unknown;
|
|
25
|
-
readonly delegation?: (context: ClaudeAgentContext) => Delegation | undefined | Promise<Delegation | undefined>;
|
|
26
|
-
readonly tenant?: string | ((context: ClaudeAgentContext) => string | undefined | Promise<string | undefined>);
|
|
27
|
-
readonly tools: ToolMap;
|
|
21
|
+
type ClaudeAgentPermDockOptions<TUser = unknown> = AgentAdapterOptions<ClaudeAgentContext, TUser> & {
|
|
28
22
|
/** MCP server sources whose `mcp__*` tools may be decided; default `['sdk']`. */
|
|
29
23
|
readonly mcpSources?: readonly string[];
|
|
30
|
-
readonly store?: ApprovalStore;
|
|
31
24
|
};
|
|
32
25
|
type PermissionResult = {
|
|
33
26
|
readonly behavior: "allow";
|
|
@@ -58,15 +51,15 @@ type PermissionRequestHookOutput = {
|
|
|
58
51
|
readonly decision: PermissionResult;
|
|
59
52
|
};
|
|
60
53
|
} | Record<string, never>;
|
|
61
|
-
type ClaudeAgentPermDock<V extends PolicyVocabulary = PolicyVocabulary> = {
|
|
54
|
+
type ClaudeAgentPermDock<V extends PolicyVocabulary = PolicyVocabulary> = AgentPermDock<ClaudeAgentContext, V> & {
|
|
62
55
|
/** A `CanUseTool`: pass it as the query's `canUseTool` option. */
|
|
63
56
|
readonly canUseTool: (toolName: string, input: Record<string, unknown>, options?: CanUseToolOptions) => Promise<PermissionResult>;
|
|
64
57
|
/** A `HookCallback` for the `PermissionRequest` event. */
|
|
65
58
|
readonly permissionRequestHook: (input: PermissionRequestHookInput, toolUseID?: string, options?: {
|
|
66
59
|
readonly signal?: AbortSignal;
|
|
67
60
|
}) => Promise<PermissionRequestHookOutput>;
|
|
68
|
-
readonly
|
|
61
|
+
readonly getPermDock: (context: ClaudeAgentContext) => Promise<PermDock<V>>;
|
|
69
62
|
};
|
|
70
|
-
export declare function createPermDock<TUser, TPrincipal extends Principal = Principal, V extends PolicyVocabulary = PolicyVocabulary>(policy: Policy<TUser, TPrincipal, V>,
|
|
63
|
+
export declare function createPermDock<TUser, TPrincipal extends Principal = Principal, V extends PolicyVocabulary = PolicyVocabulary>(policy: Policy<TUser, TPrincipal, V>, given: ClaudeAgentPermDockOptions<TUser>): ClaudeAgentPermDock<V>;
|
|
71
64
|
//#endregion
|
|
72
65
|
export type { CanUseToolOptions, ClaudeAgentContext, ClaudeAgentPermDock, ClaudeAgentPermDockOptions, ClaudeMcpServer, PermissionRequestHookInput, PermissionRequestHookOutput, PermissionResult };
|