permdock 0.6.0 → 0.8.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 +2 -3
- package/dist/{2020-C9VN-x8c.js → 2020-CJbO8Bvz.js} +1 -3
- package/dist/a2a/index.d.ts +7 -7
- package/dist/a2a/index.js +9 -9
- package/dist/action-result-CL-QCITA.d.ts +19 -0
- package/dist/{adapter-context-CRhqyzCk.js → adapter-context-CIQpQxbE.js} +8 -2
- package/dist/{adoption-scan-DCYe60Pi.js → adoption-scan-BLs67P1l.js} +5 -5
- package/dist/agent/index.d.ts +3 -3
- package/dist/agent/index.js +1 -1
- package/dist/ai-sdk/index.d.ts +31 -10
- package/dist/ai-sdk/index.js +22 -12
- package/dist/{app-data-MuyzVqX8.js → app-data-UNNm07jV.js} +10 -7
- package/dist/{approval-header-CJACtHkv.js → approval-header-8QV6MU4H.js} +6 -3
- package/dist/{approval-prompt-Dg5LeAcT.js → approval-prompt-B8hQY69x.js} +5 -6
- package/dist/{approval-prompt-DvSSPQJX.d.ts → approval-prompt-PYagyQUj.d.ts} +13 -11
- package/dist/approvals/index.d.ts +5 -5
- package/dist/approvals/index.js +7 -7
- package/dist/{approvals-p1PGoVjb.js → approvals-DnIBTuXE.js} +128 -78
- package/dist/{approvers-CqPOLD-o.js → approvers-B4r0N_Uz.js} +8 -2
- package/dist/{arazzo-41WuzHou.js → arazzo-3RhGfkAK.js} +2 -2
- package/dist/{arazzo-CaUVBn7D.js → arazzo-B5-ulWif.js} +6 -6
- package/dist/{args-IIolxxKA.js → args-0FrVs5EH.js} +125 -8
- package/dist/astro/index.d.ts +30 -12
- package/dist/astro/index.js +2 -2
- package/dist/{audience-DabClFLQ.js → audience-BAkBDMqn.js} +8 -8
- package/dist/{auth-DRLEizbL.js → auth--yPyZNgr.js} +21 -10
- package/dist/authzen/index.d.ts +171 -25
- package/dist/authzen/index.js +321 -149
- package/dist/{automation-BNM3TtDo.d.ts → automation-DqEoWHBc.d.ts} +42 -32
- package/dist/{automation-DVjOckjV.js → automation-x3KEUusw.js} +22 -21
- package/dist/base-url-BQbddZO5.js +9 -0
- package/dist/better-auth/index.d.ts +2 -2
- package/dist/better-auth/index.js +13 -7
- package/dist/better-supabase/index.d.ts +392 -220
- package/dist/better-supabase/index.js +293 -152
- package/dist/{bind-DOyrv6zi.d.ts → bind-Cp2hBHzP.d.ts} +27 -12
- package/dist/{bind-CAvgUuKs.js → bind-D_sZSVA3.js} +22 -10
- package/dist/{body-CH5of8Ne.js → body-CJQwYVa8.js} +3 -3
- package/dist/{body-text-QcXok_SI.js → body-text-DQhcmqdY.js} +8 -4
- package/dist/{boundary-BM8a_P6E.js → boundary-BV3O1eud.js} +8 -2
- package/dist/{boundary-BmHxVH1J.d.ts → boundary-C9ck-3uK.d.ts} +13 -4
- package/dist/{budget-NbEtbJC_.js → budget-BELja5A9.js} +6 -3
- package/dist/{budget-JqcRqyhK.d.ts → budget-hYsPz_yE.d.ts} +6 -3
- package/dist/{build-instance-Bu_eDqYw.js → build-instance-CNWaYJyr.js} +3 -3
- package/dist/{canonical-json-BC8_nMTw.js → canonical-json-DwilZ1iB.js} +6 -3
- package/dist/{capability-N1K9IpqS.js → capability-BqX94r07.js} +31 -25
- package/dist/{capability-Drg-1YhL.d.ts → capability-ChuiONQU.d.ts} +41 -29
- package/dist/{casbin-Dyu2gnUD.js → casbin-H0rKxBx2.js} +16 -8
- package/dist/{casbin-Cr7RLtA3.js → casbin-cbSbhT_k.js} +2 -2
- package/dist/{casl-64gpT-8x.js → casl-C4OINZHI.js} +2 -2
- package/dist/{casl-DjEDhTCP.js → casl-CHHoCldP.js} +19 -10
- package/dist/catalog/index.d.ts +104 -23
- package/dist/catalog/index.js +117 -8
- package/dist/{catalog-HD2gf5mY.js → catalog-BFpz2EmT.js} +57 -26
- package/dist/{catalog-DZVbrF-z.js → catalog-DCspHDc8.js} +3 -3
- package/dist/{catalog-doc-Cdn7-0pQ.js → catalog-doc-DjMKzJp9.js} +53 -16
- package/dist/{catalog-fingerprint-CCP0-yQS.js → catalog-fingerprint-e6aCWosn.js} +19 -15
- package/dist/catalog-mRQQQhNK.js +1 -0
- package/dist/catalog-operations-Dadrl7Z-.js +60 -0
- package/dist/{create-CQWIpUG-.js → challenge-DImNcR7B.js} +157 -39
- package/dist/chat/index.d.ts +1 -1
- package/dist/chat/index.js +13 -10
- package/dist/chat-sdk/index.d.ts +44 -26
- package/dist/chat-sdk/index.js +17 -17
- package/dist/checks-CGkP3Z7A.js +40 -0
- package/dist/{claims-map-7oQ3ue4X.js → claims-map-CKkoAAYF.js} +5 -2
- package/dist/{claims-map-Ca-QX8C6.d.ts → claims-map-D1Pb5oRq.d.ts} +8 -5
- package/dist/claude-agent/index.d.ts +6 -6
- package/dist/claude-agent/index.js +6 -3
- package/dist/clerk/index.d.ts +11 -7
- package/dist/clerk/index.js +6 -6
- package/dist/cli/bin.js +4 -4
- package/dist/cli/index.d.ts +82 -7
- package/dist/cli/index.js +6 -6
- package/dist/{clients-C7zLFuWT.d.ts → clients-C_NOET3z.d.ts} +5 -5
- package/dist/{clients-DjU5ABMy.js → clients-DYr3U86j.js} +3 -3
- package/dist/cloud/index.d.ts +186 -38
- package/dist/cloud/index.js +293 -31
- package/dist/{cloud-ytQ3uviA.js → cloud-BFlGMaak.js} +5 -6
- package/dist/{codemod-5mpSpnUY.js → codemod-DLQ9Zpo4.js} +3 -4
- package/dist/{codemod-ua2hHy7w.js → codemod-DWSN2erG.js} +523 -201
- package/dist/collect-B5BL3klN.js +1 -0
- package/dist/{collect-mLTY4nwb.js → collect-B7ZFAJU3.js} +36 -64
- package/dist/{collect-Ci6akVwH.js → collect-Bzv3le0A.js} +6 -6
- package/dist/{compare-pfyVnBjE.js → compare-DTfyUunF.js} +2 -2
- package/dist/compile/index.d.ts +2 -2
- package/dist/compile/index.js +1 -1
- package/dist/{compile-1bsAezL0.d.ts → compile-BFzysW3o.d.ts} +36 -12
- package/dist/{compile-CMqMx_IN.js → compile-EzEMB-7v.js} +77 -33
- package/dist/{completion-BTFrHZhX.js → completion-saoYiRFO.js} +17 -8
- package/dist/config-BwPBfN0t.js +108 -0
- package/dist/{config-Bj2Ixq3d.js → config-DBeXXmBF.js} +2 -2
- package/dist/{config-report-DSpsLpCE.js → config-report-BipSWA6V.js} +9 -6
- package/dist/config-shape-ykV0Vm2n.js +134 -0
- package/dist/{connection-DjhIJSs2.js → connection-B72dg5Q2.js} +23 -22
- package/dist/connector-schema-CYLQNMYq.js +434 -0
- package/dist/{context-B_u3_bDJ.js → context-BnIzxTNE.js} +4 -3
- package/dist/convex/index.d.ts +13 -7
- package/dist/convex/index.js +9 -6
- package/dist/core-H-mbhpZc.js +341 -0
- package/dist/core-hWIARPDz.d.ts +206 -0
- package/dist/{create-CBMmFie-.d.ts → create-BSNrVuxh.d.ts} +87 -34
- package/dist/{create-B30OMUOJ.d.ts → create-BVq1lNQE.d.ts} +49 -28
- package/dist/{create-D_NmPOdH.d.ts → create-CM1FciYG.d.ts} +37 -29
- package/dist/{create-CGm28gyI.js → create-Cq4Uox0f.js} +13 -9
- package/dist/{create-DCF2SvoT.js → create-_noSrY1T.js} +15 -21
- package/dist/{credential-BcoiejpY.js → credential-CyyyvCsL.js} +42 -39
- package/dist/{credentials-DPyHmYz5.js → credentials-CdDxp7jN.js} +6 -6
- package/dist/{deciding-columns-Sq12mEA6.js → deciding-columns-NB4wcyBf.js} +13 -2
- package/dist/{delegation-j6-rc37o.js → delegation-CDB6_keF.js} +31 -22
- package/dist/delivery/index.d.ts +5 -5
- package/dist/delivery/index.js +6 -5
- package/dist/{delivery-DCAgNyCn.js → delivery-BupfvJIV.js} +81 -20
- package/dist/{delivery-event-xX4obB8F.js → delivery-event-JioK5YbS.js} +6 -6
- package/dist/denied-text-CHNlVInN.d.ts +22 -0
- package/dist/{describe-BybMRY7A.js → describe-Bb4hGK5d.js} +6 -5
- package/dist/{describe-B5qgDvEW.d.ts → describe-ByS9LgHK.d.ts} +5 -5
- package/dist/{device-BARQ8eYG.js → device-BwbJNmb2.js} +11 -8
- package/dist/{diff-CmuSD3vc.js → diff-CN8IYhC_.js} +2 -2
- package/dist/{diff-3jbx6Rm4.js → diff-iZWV65nC.js} +23 -14
- package/dist/{digest-B3kc_PgQ.d.ts → digest-8Yx2CchM.d.ts} +3 -3
- package/dist/{doctor-BdZw53-k.js → doctor-CHD1M9R5.js} +485 -141
- package/dist/{doctor-3ZqNHX_G.js → doctor-D3wo-yuz.js} +4 -4
- package/dist/drizzle/index.d.ts +33 -19
- package/dist/drizzle/index.js +17 -9
- package/dist/elysia/index.d.ts +17 -11
- package/dist/elysia/index.js +5 -5
- package/dist/{errors-BKy0EfhN.js → errors-B6R_lg2a.js} +13 -4
- package/dist/{errors-BWXBMaKK.d.ts → errors-CHwoRRpB.d.ts} +4 -1
- package/dist/{errors-CWTY6uih.js → errors-Vpu6rKHl.js} +14 -10
- package/dist/{errors-DH5QEGXh.d.ts → errors-zi_4T-rx.d.ts} +22 -6
- package/dist/{evaluate-CNClBvcj.js → evaluate-Dd8Ta0Ie.js} +185 -80
- package/dist/{evaluations-beAooV0n.js → evaluations-IBceAeKT.js} +41 -20
- package/dist/{evaluations-C_1vdSZc.d.ts → evaluations-z8dQFDaN.d.ts} +12 -6
- package/dist/eve/index.d.ts +9 -6
- package/dist/eve/index.js +4 -4
- package/dist/{event-time-CsegxXxB.js → event-time-BGy48400.js} +8 -4
- package/dist/{expiry-D4_YKRKD.js → expiry-6XByK0dm.js} +8 -5
- package/dist/express/index.d.ts +9 -6
- package/dist/express/index.js +9 -6
- package/dist/fastify/index.d.ts +16 -10
- package/dist/fastify/index.js +8 -5
- package/dist/{fetch-adapter-Dw0MTS3D.d.ts → fetch-adapter-C1DCvpqV.d.ts} +9 -6
- package/dist/{fetch-adapter-DD_gfmrC.js → fetch-adapter-JL43jD3E.js} +14 -11
- package/dist/fields-D0vUI6dq.js +498 -0
- package/dist/{files-C5ZI27eV.js → files-B3AA05f1.js} +21 -5
- package/dist/{files-D_JIzUrP.js → files-BSjrtIHw.js} +11 -4
- package/dist/{fixtures-B7XrLeY7.js → fixtures-A1_sp_tR.js} +15 -6
- package/dist/{flags-C3DktBDY.js → flags-DXjoTVbS.js} +2 -2
- package/dist/{freeze-CrU8nQeX.js → freeze-jjan0lCv.js} +4 -1
- package/dist/{from-snapshot-CTCMsFZk.js → from-snapshot-DCakWRsr.js} +26 -16
- package/dist/gen-B5kvbAoZ.js +58 -0
- package/dist/gen-DWCYcMQM.js +827 -0
- package/dist/generate-CRVV5V7l.js +165 -0
- package/dist/generate-CezbCaTI.js +275 -0
- package/dist/{grantee-hxrUsbpM.js → grantee-Dke-9rd1.js} +4 -4
- package/dist/{grantee-conditions-CcXf8hMM.js → grantee-conditions-BrYPe-w0.js} +12 -12
- package/dist/{grantee-match-DbENBHLB.js → grantee-match-7RZZvoT_.js} +12 -6
- package/dist/{graph-sql-B-dsAT6j.d.ts → graph-sql-BwFC4Qjs.d.ts} +3 -3
- package/dist/h3/index.d.ts +10 -7
- package/dist/h3/index.js +3 -3
- package/dist/headers-B9jQxjtW.d.ts +10 -0
- package/dist/{helpers-CBYVMjwh.js → helpers-DJicaG6f.js} +40 -28
- package/dist/hono/index.d.ts +16 -10
- package/dist/hono/index.js +5 -5
- package/dist/{hosted-BPk51-kX.d.ts → hosted-Cmtxogd0.d.ts} +44 -20
- package/dist/{hosted-B46-5LYE.js → hosted-D0IzESu_.js} +68 -25
- package/dist/{http-ujKm0JXE.js → http-DH94eh6f.js} +4 -4
- package/dist/{http-BBoKefeS.js → http-DKLXrFGk.js} +13 -7
- package/dist/{http-DXJ37RDA.js → http-DOL33cO0.js} +11 -8
- package/dist/{import-wyqXUyjm.js → import-CST57XLp.js} +64 -51
- package/dist/{import-CNV7I2Dw.js → import-_YqhhwvX.js} +6 -6
- package/dist/{index-B8YjkEZ4.d.ts → index-B8s204GL.d.ts} +64 -52
- package/dist/{index-Ch8LpNDp.d.ts → index-BT5-1VsX.d.ts} +64 -25
- package/dist/{index-DuWxc5dt.d.ts → index-BW_0MZOS.d.ts} +388 -149
- package/dist/index-BhxEUY9J.d.ts +233 -0
- package/dist/index-Bv5iXPqU.d.ts +210 -0
- package/dist/{index-C-6Letxg.d.ts → index-_9UiQIkt.d.ts} +164 -77
- package/dist/index.d.ts +22 -21
- package/dist/index.js +35 -33
- package/dist/{init-GG6Jh8HD.js → init-Dz_PsHdv.js} +5 -5
- package/dist/{init-DeMYsnYJ.js → init-cE3A8aXq.js} +10 -10
- package/dist/{instance-options-BsVpyGIk.d.ts → instance-options-B0KXqTrJ.d.ts} +4 -4
- package/dist/{instance-snapshot-BOEhcqIF.js → instance-snapshot--JWiTrvO.js} +81 -56
- package/dist/{instant-BluqDvyS.js → instant-DK3Iz83e.js} +2 -2
- package/dist/{internals-Dk8A8fX3.js → internals-B3IgHrvo.js} +6 -3
- package/dist/{json-schema-B-vAwlde.js → json-schema-BPGa-RjQ.js} +9 -3
- package/dist/{json-schema-CN_iLFH2.d.ts → json-schema-BfXgnRNT.d.ts} +4 -4
- package/dist/jwt/index.d.ts +125 -17
- package/dist/jwt/index.js +157 -16
- package/dist/{kernel-D0NVb1cK.js → kernel-C-fYydV2.js} +151 -16
- package/dist/kysely/index.d.ts +49 -33
- package/dist/kysely/index.js +9 -7
- package/dist/{live-options-BaAFCIiu.js → live-options-BBIT68le.js} +2 -2
- package/dist/{load-DFS_ry0W.js → load-DjSU5KXO.js} +6 -6
- package/dist/load-Dm0pSYH3.js +1 -0
- package/dist/{login-Dfe5RlYk.js → login-D-8tMqzo.js} +4 -4
- package/dist/{login-imhuwvn3.js → login-DplQ0s84.js} +18 -15
- package/dist/{manifest-dvL2XEe1.js → manifest-Cgiq5oqc.js} +67 -37
- package/dist/{manifest-mx5ghSFM.d.ts → manifest-CzzWtnAb.d.ts} +144 -28
- package/dist/{manifest-schema-C0kK_8V0.js → manifest-schema-2r37XRhD.js} +80 -9
- package/dist/{manifest-C8IzW3Do.js → manifest-wg8WkkpD.js} +11 -7
- package/dist/{map-claims-D3oRmTk0.js → map-claims-BNWCJtmP.js} +27 -18
- package/dist/{map-error-Dr70oA_3.js → map-error-pasIGqMT.js} +7 -7
- package/dist/{markers-C6joDI3o.js → markers-BeHZ4x9Q.js} +20 -5
- package/dist/mcp/index.d.ts +154 -47
- package/dist/mcp/index.js +200 -41
- package/dist/{migrate-CIq4-E9F.js → migrate-B7oP_sQU.js} +102 -31
- package/dist/module-values-BJTBdo6y.js +107 -0
- package/dist/nest/index.d.ts +23 -13
- package/dist/nest/index.js +18 -11
- package/dist/next/client.d.ts +5 -2
- package/dist/next/client.js +1 -1
- package/dist/next/index.d.ts +72 -26
- package/dist/next/index.js +110 -6
- package/dist/next/plugin.d.ts +1 -1
- package/dist/next/plugin.js +4 -3
- package/dist/node/index.d.ts +5 -5
- package/dist/node/index.js +3 -3
- package/dist/{ocsf-BFp-PZZA.js → ocsf-TcjRBgIs.js} +15 -5
- package/dist/openai/index.d.ts +13 -7
- package/dist/openai/index.js +3 -3
- package/dist/openapi/index.d.ts +61 -30
- package/dist/openapi/index.js +2 -2
- package/dist/{openapi-B7HZ0f-r.js → openapi-BOsx0xn9.js} +34 -24
- package/dist/{openapi-C4dDTVEd.js → openapi-CBZUhA3l.js} +4 -5
- package/dist/{openapi-DD1SV-5-.js → openapi-VeHHU2l9.js} +23 -14
- package/dist/{operation-findings-DgATDpvh.js → operation-findings-CXtFzlKJ.js} +3 -3
- package/dist/{operations-X0VM7F3m.d.ts → operations-Ci_rT6Uo.d.ts} +10 -7
- package/dist/orpc/index.d.ts +68 -14
- package/dist/orpc/index.js +62 -13
- package/dist/otel/index.d.ts +7 -4
- package/dist/otel/index.js +8 -5
- package/dist/output-files-BHOIlrfD.js +1 -0
- package/dist/{output-files-DhRBBE4n.js → output-files-BIQ_9pIs.js} +29 -17
- package/dist/{output-1im__-08.js → output-tkju6U7R.js} +15 -7
- package/dist/ownership-B4L59T9u.js +1054 -0
- package/dist/parse-1_ZheTW5.js +151 -0
- package/dist/parse-local-manifest-BQhTlLQS.d.ts +10 -0
- package/dist/parse-local-manifest-DEiCF4ah.js +69 -0
- package/dist/{parse-request-D_tUXG6M.js → parse-request-CwCZpyjV.js} +7 -8
- package/dist/{paths-DXSHAMIa.js → paths-CUvURzHp.js} +4 -1
- package/dist/pdp/index.d.ts +9 -6
- package/dist/pdp/index.js +23 -12
- package/dist/{peer-CRvC7Hg1.js → peer-C9LvBCcb.js} +1 -1
- package/dist/peer-Q0fuZ6hx.js +982 -0
- package/dist/{permdock-SV8ZINYT.d.ts → permdock-B6Sf4T_S.d.ts} +270 -117
- package/dist/{permdock-BrAscV28.js → permdock-L-_I_3zP.js} +226 -74
- package/dist/{permission-registry-Br4jSNVi.js → permission-registry-B8tYxPIt.js} +24 -11
- package/dist/{vocabulary-CN8H_9UF.d.ts → permission-types-CAY-GU7e.d.ts} +130 -104
- package/dist/{permissions-u_KHg-sN.d.ts → permissions-Bx6UI8n1.d.ts} +6 -2
- package/dist/{permissions-B-wCP5ZC.js → permissions-CVXmRILq.js} +3 -3
- package/dist/{permissions-BPxlwVhN.js → permissions-mDcTWoBs.js} +8 -5
- package/dist/pg-DQTqRrou.js +60 -0
- package/dist/{pins-8ILTftC9.js → pins-nqarl3oE.js} +4 -1
- package/dist/pkce-CnmmYqUZ.js +21 -0
- package/dist/{policy-77FSAq_V.d.ts → policy-Ba4bDhaj.d.ts} +5 -5
- package/dist/{policy-DbM5YYtV.js → policy-CLQ8__GF.js} +49 -20
- package/dist/{policy-from-catalog-C2gMa2Dj.js → policy-from-catalog-CJgOm6aq.js} +28 -25
- package/dist/{policy-module-CTlwMvLI.js → policy-module-xym9fnSq.js} +12 -6
- package/dist/{policy-types-n0uRTsW8.d.ts → policy-types-CCiDRZBH.d.ts} +802 -334
- package/dist/postgres-store-DcyrPS-r.js +1028 -0
- package/dist/{postgrest-DAjUkF9w.js → postgrest-D4nuPXIQ.js} +88 -36
- package/dist/{postgrest-CEgRbefE.d.ts → postgrest-DicQyqm-.d.ts} +60 -30
- package/dist/powersync-DHNQX06W.js +1117 -0
- package/dist/{powersync-DISt6SUe.js → powersync-DXqGuq9A.js} +3 -3
- package/dist/powersync-Djf-zCpB.js +1 -0
- package/dist/preset/index.d.ts +38 -28
- package/dist/preset/index.js +1 -1
- package/dist/{preset-DZdU0tne.js → preset-BjLzeFpp.js} +58 -34
- package/dist/{principal-source-pHneukrx.js → principal-source-C6N60GtM.js} +10 -10
- package/dist/prisma/index.d.ts +69 -41
- package/dist/prisma/index.js +21 -17
- package/dist/{problem-CTviyH5L.js → problem-BVLHFK33.js} +41 -21
- package/dist/{problem-details-cn5X30gZ.js → problem-details-CLDgX1KV.js} +13 -4
- package/dist/{problem-types-CJ2325SZ.js → problem-types-DSsRfONQ.js} +4 -1
- package/dist/prompt-BYc6drYW.js +938 -0
- package/dist/protected-action-BE7N_Luo.d.ts +58 -0
- package/dist/protected-action-DUYqb-Ma.js +80 -0
- package/dist/{protected-BlF0F6wL.js → protected-action-QEA8arRB.js} +48 -14
- package/dist/{provider-B1al-AZz.js → provider-C55OGXJ7.js} +5 -4
- package/dist/{provider-DILL9oPK.d.ts → provider-DXfq5c2d.d.ts} +1 -1
- package/dist/{provider-store-DM6DNcta.js → provider-store-CaTv00tr.js} +13 -9
- package/dist/pull-B65ndFNZ.js +1 -0
- package/dist/{pull-jEwbf80J.js → pull-CwpGaQSi.js} +12 -11
- package/dist/{push-BD4f15co.js → push-DgssgzkK.js} +62 -16
- package/dist/{pushed-policy-DCW91KQU.d.ts → pushed-policy-D1Eoi6NM.d.ts} +12 -6
- package/dist/{pushed-policy-CqtxkV4G.js → pushed-policy-ITwYKvvH.js} +10 -7
- package/dist/react/index.d.ts +9 -8
- package/dist/react/index.js +7 -6
- package/dist/react/provider-client.d.ts +1 -1
- package/dist/react/provider-client.js +1 -1
- package/dist/react-native/index.d.ts +104 -51
- package/dist/react-native/index.js +394 -67
- package/dist/{refs-K6eWUJ0H.js → refs-C8BKxc_e.js} +17 -3
- package/dist/{relation-walk-3OyDBF0S.js → relation-walk-DK_gkgL7.js} +12 -9
- package/dist/{relations-BnCWnJGI.js → relations-BxvRvDHK.js} +3 -3
- package/dist/{replay-Du1tJjG7.js → replay-BU09ad4L.js} +1 -1
- package/dist/{replay-Bkm-Ne4l.d.ts → replay-DNftIb_R.d.ts} +1 -1
- package/dist/{request-context-C81Pip9n.js → request-context-C25ilqiJ.js} +8 -8
- package/dist/{request-schema-CMreVuFM.js → request-schema-DhX7UbfQ.js} +4 -1
- package/dist/resend/index.d.ts +34 -28
- package/dist/resend/index.js +29 -29
- package/dist/resolve-names-CF7xXLSG.js +201 -0
- package/dist/{resource-relations-D_jw0BFx.js → resource-relations-8-pCScBO.js} +18 -9
- package/dist/{retire-CALjIQ7e.js → retire-B2xffQgY.js} +15 -6
- package/dist/{revocations-R07lFBnX.d.ts → revocations-BaUXHM1N.d.ts} +6 -3
- package/dist/{rls-DTvYd-lI.js → rls-CNEH2_BG.js} +743 -624
- package/dist/{rls-BAqP4q66.js → rls-Ca8Jz9b5.js} +41 -10
- package/dist/{role-builder-uWQZ4v84.js → role-builder-BK2-T6oD.js} +41 -20
- package/dist/rolldown-runtime-C3I60J0A.js +4 -0
- package/dist/{row-conditions-h2HythXQ.js → row-conditions-BAGHOmVq.js} +4 -3
- package/dist/{rpc-VSl5ylaQ.js → rpc-fNqAIqQk.js} +8 -5
- package/dist/{run-CUKuz0A8.js → run-Bz26OTfO.js} +26 -23
- package/dist/run-D-JE8QWb.js +1 -0
- package/dist/{run-ticket-DocwaTKn.d.ts → run-ticket-DbWI9f99.d.ts} +33 -13
- package/dist/{run-ticket-sxFI6LAk.js → run-ticket-Dv7aF7Dk.js} +29 -8
- package/dist/{runtime-D3VTAiCA.js → runtime-BGnrOkVH.js} +5 -2
- package/dist/{saas-BCXRuXca.js → saas-iWnUdwCt.js} +42 -29
- package/dist/{scan-qvOe0hS3.js → scan-DCj1KQfn.js} +1 -1
- package/dist/{schema-B4v0Qrac.js → schema-BOJjqlWL.js} +3 -2
- package/dist/{schema-yLuBWWsh.js → schema-Dst9I9Gs.js} +9 -5
- package/dist/scim/index.d.ts +3 -2
- package/dist/scim/index.js +3 -1
- package/dist/scim-D8YupzX1.js +44 -0
- package/dist/{scim-ClHtpyV3.js → scim-jJBJ7g1Z.js} +35 -551
- package/dist/{scopes-CUPSjo9q.js → scopes-0Up_UA2t.js} +42 -24
- package/dist/server/index.d.ts +12 -12
- package/dist/server/index.js +13 -13
- package/dist/{server-C3WXAHZj.js → server-3cVlTLde.js} +31 -31
- package/dist/{server-types-CKQiCnON.d.ts → server-types-CIlpSA2G.d.ts} +81 -46
- package/dist/{sha256-D9ihqmvd.js → sha256-C-4WXKIu.js} +4 -3
- package/dist/{shared-BAK8t4Uo.js → shared-Afctg7B0.js} +100 -61
- package/dist/{shared-DvvFzYXe.js → shared-l0oGGetg.js} +9 -6
- package/dist/{signals-D3NcTKUS.js → signals-B1vHR3fN.js} +2 -2
- package/dist/{sink-BEZSlMS_.js → sink-D9_vh372.js} +32 -21
- package/dist/{sink-4-eQIRWf.d.ts → sink-Dvi7YZG_.d.ts} +44 -20
- package/dist/{skills-B6lVdD_W.js → skills-Bjj7BNEQ.js} +16 -12
- package/dist/{skills-CTYwkl44.js → skills-OuoMR49L.js} +3 -3
- package/dist/{snapshot-B7DkYg6g.js → snapshot-CXlzi69u.js} +21 -18
- package/dist/{snapshot-cache-PXI-vGpY.d.ts → snapshot-cache-BAXZ0KOp.d.ts} +21 -12
- package/dist/{snapshot-cache-DZHQ0KF6.js → snapshot-cache-Bx_4xC_6.js} +14 -11
- package/dist/solid/index.d.ts +55 -15
- package/dist/solid/index.js +46 -12
- package/dist/solid-start/index.d.ts +30 -12
- package/dist/solid-start/index.js +3 -3
- package/dist/sources-B1Os_YUu.d.ts +312 -0
- package/dist/{sources-vs5dGOsS.js → sources-CMAM-2A3.js} +156 -51
- package/dist/sources-qoIJQrJv.js +11 -0
- package/dist/{sql-B5T1IL83.js → sql-0WjxIp9g.js} +32 -7
- package/dist/sql-B80DFdpG.d.ts +10 -0
- package/dist/{src-Cu2m75uo.js → src-DZ0l9UAg.js} +305 -123
- package/dist/ssf/index.d.ts +4 -4
- package/dist/ssf/index.js +665 -224
- package/dist/{standard-webhooks-rbD7LS6h.d.ts → standard-webhooks-C-qX4mJW.d.ts} +7 -7
- package/dist/{standard-webhooks-DgFFD-Ga.js → standard-webhooks-D67a3nzk.js} +5 -5
- package/dist/{store-BDutJkDL.js → store-RNFvaJJv.js} +43 -29
- package/dist/{store-options-u0ycEe8s.js → store-options-Dil3lraY.js} +105 -15
- package/dist/stores-C0Kta5Ft.d.ts +59 -0
- package/dist/{stores-CGhM8BN_.js → stores-DxZWDXCs.js} +42 -5
- package/dist/{stream-CvdUS9V1.js → stream-CDvF0sJm.js} +5 -5
- package/dist/{stream-CeCMJmBB.d.ts → stream-ltuLdtTG.d.ts} +4 -3
- package/dist/{style-DiKWnAvn.js → style-DblOtSga.js} +1 -1
- package/dist/{style-Uao76wO7.js → style-Ds11Hmk4.js} +3 -1
- package/dist/{subject-settings-CkEwrw3W.js → subject-settings-8sH5HlII.js} +8 -4
- package/dist/{row-check-Dt35czLy.d.ts → subject-settings-vNW8qmUH.d.ts} +30 -18
- package/dist/supabase/index.d.ts +48 -37
- package/dist/supabase/index.js +6 -6
- package/dist/supabase/middleware.d.ts +19 -13
- package/dist/supabase/middleware.js +7 -7
- package/dist/{supabase-x5JtR2tc.js → supabase-BL1qJzzY.js} +82 -36
- package/dist/{supabase-By_frk3U.js → supabase-D39cuGPt.js} +3 -3
- package/dist/{supabase-hook-BMoEhZir.js → supabase-hook-B-yXnzUl.js} +1206 -286
- package/dist/supabase-hook-H-MtE9Wd.js +1 -0
- package/dist/supautils-BU-pAEpf.js +808 -0
- package/dist/{support-session-C6xJQYut.js → support-session-BsmPCbz8.js} +22 -22
- package/dist/svelte/PermissionBoundary.svelte +2 -6
- package/dist/svelte/Protected.svelte +2 -8
- package/dist/svelte/index.d.ts +9 -8
- package/dist/svelte/index.js +10 -9
- package/dist/svelte/runtime.d.ts +4 -4
- package/dist/svelte/runtime.js +4 -4
- package/dist/svelte/source.d.ts +9 -8
- package/dist/svelte/source.js +6 -5
- package/dist/sveltekit/index.d.ts +30 -12
- package/dist/sveltekit/index.js +2 -2
- package/dist/{ownership-DqaJNJPn.js → tables-DeMNEy6V.js} +1025 -1085
- package/dist/tanstack-start/index.d.ts +22 -10
- package/dist/tanstack-start/index.js +2 -2
- package/dist/{target-Bw37TFNA.js → target-qdEAnnhU.js} +6 -6
- package/dist/{tenancy-DN2QAx9z.js → tenancy-5d1zVBvK.js} +36 -21
- package/dist/terminal/index.d.ts +23 -14
- package/dist/terminal/index.js +17 -20
- package/dist/testing/core.d.ts +2 -0
- package/dist/testing/core.js +1 -0
- package/dist/testing/fixtures/index.d.ts +15 -0
- package/dist/testing/fixtures/index.js +831 -0
- package/dist/testing/index.d.ts +235 -285
- package/dist/testing/index.js +502 -927
- package/dist/testing/saas/index.d.ts +43 -27
- package/dist/testing/saas/index.js +2 -2
- package/dist/testing/saas/permissions.d.ts +1 -1
- package/dist/testing/saas/permissions.js +1 -1
- package/dist/text-diff-BtfSmdUo.js +444 -0
- package/dist/{thenable-yD7SabqG.js → thenable-BNSM1U2R.js} +12 -3
- package/dist/{time-DkWjdL98.js → time-nR1JesoH.js} +32 -8
- package/dist/{token-BLZcjQgt.js → token-DC9EQiet.js} +15 -13
- package/dist/{tool-refusal-CMLN5xhn.js → tool-refusal-Qpjs_W6M.js} +5 -2
- package/dist/trpc/index.d.ts +11 -8
- package/dist/trpc/index.js +15 -9
- package/dist/type-helpers-BIPIDa6a.d.ts +50 -0
- package/dist/{types-8RnwUAvE.d.ts → types-AMJ5qoU_.d.ts} +49 -30
- package/dist/{types-C_IiEs64.d.ts → types-B2mlGuhW.d.ts} +14 -11
- package/dist/{types-_WhUP7ud.d.ts → types-B4uqKDnp.d.ts} +25 -12
- package/dist/{types-CX7AvRqP.d.ts → types-BJk0BKRX.d.ts} +24 -14
- package/dist/types-B_d_g7T3.d.ts +262 -0
- package/dist/{types-BdtSDbBO.d.ts → types-B_tiYvk8.d.ts} +59 -32
- package/dist/{types-DqzsnlSA.js → types-CcUXciSj.js} +17 -5
- package/dist/{types-Dfv0aTER.d.ts → types-DC1Loeh3.d.ts} +449 -168
- package/dist/{types-lUlG3TVd.d.ts → types-DHKPcqzr.d.ts} +2 -2
- package/dist/{types-C791HFu9.d.ts → types-DjuMBNF9.d.ts} +68 -32
- package/dist/{types-C863OQiR.d.ts → types-HzqOtvsJ.d.ts} +23 -12
- package/dist/{types-Druu9wLM.d.ts → types-ZzRGoViD.d.ts} +77 -24
- package/dist/{types-BzzaHxt3.d.ts → types-ah9NlU6j.d.ts} +137 -48
- package/dist/{types-CVZSNocA.d.ts → types-djVzLlIV.d.ts} +31 -14
- package/dist/{types-BtHtcKMr.d.ts → types-yUuPR5Hy.d.ts} +47 -24
- package/dist/unplugin/index.d.ts +1 -1
- package/dist/unplugin/index.js +2 -2
- package/dist/usage-CYeXek0p.js +1 -0
- package/dist/{usage-SveTRTyr.js → usage-CxEzS4ey.js} +50 -26
- package/dist/{usage-CRVl9V3t.js → usage-ab0PdusX.js} +2 -2
- package/dist/{validation-error-ZfUHbKvf.js → validation-error-CYg2kJEw.js} +4 -1
- package/dist/{validation-error-DHUrAkku.d.ts → validation-error-YGg2mXyH.d.ts} +5 -2
- package/dist/{validity-CZ7-y0Cj.js → validity-Buc7w8E9.js} +13 -10
- package/dist/{verifier-DHuh-okk.js → verifier-DUV6pLqZ.js} +10 -4
- package/dist/{verify-BaAKx7t6.js → verify-DZeqoWu5.js} +417 -489
- package/dist/version-DMQ0dnN5.js +48 -0
- package/dist/version-DizhmD72.js +1 -0
- package/dist/{views-DTIIO-oQ.js → views-CD8wuL4Z.js} +19 -6
- package/dist/vocabulary-DEJ5j4mR.d.ts +70 -0
- package/dist/vue/index.d.ts +71 -21
- package/dist/vue/index.js +50 -13
- package/dist/{waiter-B986w1oK.d.ts → waiter-Bu9zAlE0.d.ts} +13 -10
- package/dist/{waiter-BGUtGYoU.js → waiter-aBLM63_f.js} +1 -1
- package/dist/{watch-vea54PRw.js → watch-Cx_WciLE.js} +8 -8
- package/dist/watch-DB42U1ib.js +1 -0
- package/dist/webmcp/index.d.ts +11 -11
- package/dist/webmcp/index.js +8 -5
- package/dist/{where-scope-C9vfEphl.js → where-scope-DlCdCM_8.js} +56 -30
- package/dist/{who-can-DWBAcaCQ.js → who-can-rI7dCR9Q.js} +23 -20
- package/dist/workflow/index.d.ts +3 -3
- package/dist/workflow/index.js +13 -13
- package/dist/workflow-sdk/index.d.ts +19 -13
- package/dist/workflow-sdk/index.js +6 -6
- package/dist/{wrap-gX61EtpB.js → wrap-B2wziJI_.js} +11 -5
- package/dist/{wrap-C5jC6sKI.d.ts → wrap-DlJE3gS_.d.ts} +8 -5
- package/package.json +25 -14
- package/schemas/catalog-v1.json +3 -0
- package/schemas/cli-result-v1.json +1 -0
- package/schemas/cloud-api-v1.json +152 -7
- package/schemas/connector-v1.json +8 -0
- package/schemas/supabase-claims-v1.json +5 -0
- package/schemas/supabase-manifest-v1.json +308 -75
- package/skills/permdock/SKILL.md +1 -0
- package/skills/permdock-agents/references/runtimes.md +3 -1
- package/skills/permdock-approvals/references/stores-and-resume.md +2 -1
- package/skills/permdock-credentials/references/tokens-keys-links.md +8 -6
- package/skills/permdock-data/references/queries-and-rls.md +6 -2
- package/skills/permdock-tenancy/SKILL.md +1 -1
- package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +2 -1
- package/skills/permdock-wire/references/adapters.md +28 -22
- package/skills/permdock-wire/references/policy-options.md +1 -0
- package/dist/catalog-BoWglDPI.js +0 -1
- package/dist/collect-D7eQDffE.js +0 -1
- package/dist/config-bs_kZeYq.js +0 -162
- package/dist/denied-text-CiFQNuMV.d.ts +0 -19
- package/dist/fields-OYG_JR78.js +0 -203
- package/dist/generate-CNU1pIOo.js +0 -171
- package/dist/headers-BIjfMaoC.js +0 -8
- package/dist/headers-CIbDTUTK.d.ts +0 -7
- package/dist/index-Cp_ilKi1.d.ts +0 -91
- package/dist/index-CueFnxQc.d.ts +0 -110
- package/dist/load-BxEtwlBS.js +0 -1
- package/dist/output-files-B3IZJksC.js +0 -1
- package/dist/package-root-Dk_ETdkp.js +0 -31
- package/dist/parse-Cxq0WxrA.js +0 -53
- package/dist/parse-local-manifest-5ODwqu8b.d.ts +0 -10
- package/dist/parse-local-manifest-CVSs6J9I.js +0 -34
- package/dist/peer-C8swJ2GH.js +0 -50
- package/dist/policies-DP2nqRoF.js +0 -295
- package/dist/powersync-BkWWCS1K.js +0 -538
- package/dist/powersync-MMJ2mI2q.js +0 -1
- package/dist/problem-details-B45V5d2b.d.ts +0 -7
- package/dist/prompt-DfZLJLIn.js +0 -32
- package/dist/protected-RFGpakN9.d.ts +0 -38
- package/dist/pull-CvpINcMK.js +0 -1
- package/dist/run-DDwUaJDU.js +0 -1
- package/dist/sources-Xc4zkszI.d.ts +0 -190
- package/dist/stores-BUGNbJTt.d.ts +0 -30
- package/dist/supabase-hook-CCw5m35C.js +0 -1
- package/dist/supautils-B6HYL9eL.js +0 -91
- package/dist/text-diff-BQcUapOb.js +0 -15
- package/dist/types-B3_ooZgZ.d.ts +0 -172
- package/dist/usage-CZpSQP6L.js +0 -1
- package/dist/version-CEbQ5UeM.js +0 -18
- package/dist/version-DXkYUISx.js +0 -1
- package/dist/watch--ovlPOc0.js +0 -1
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { r as isRecord, t as compact } from "./compact-CAf557ZB.js";
|
|
2
|
-
import { n as freezeDeep } from "./freeze-
|
|
3
|
-
import { n as isForbiddenKey } from "./paths-
|
|
4
|
-
import { l as isRfc3339 } from "./time-
|
|
5
|
-
import { t as canonicalJson } from "./canonical-json-
|
|
6
|
-
import { r as sha256Digest } from "./sha256-
|
|
7
|
-
import { C as EVENT_SCHEMA_IDS, T as SINK_EVENT_SCHEMAS, i as RESERVED_CLOUD_EVENT_TYPES, l as isAbsoluteUri, r as CLOUD_EVENT_TYPES, s as cloudEventType, u as isTraceparent, v as CATALOG_EVENT_SCHEMA } from "./sink-
|
|
8
|
-
import { n as copyJson, t as checkSchema } from "./json-schema-
|
|
2
|
+
import { n as freezeDeep } from "./freeze-jjan0lCv.js";
|
|
3
|
+
import { n as isForbiddenKey } from "./paths-CUvURzHp.js";
|
|
4
|
+
import { l as isRfc3339 } from "./time-nR1JesoH.js";
|
|
5
|
+
import { t as canonicalJson } from "./canonical-json-DwilZ1iB.js";
|
|
6
|
+
import { r as sha256Digest } from "./sha256-C-4WXKIu.js";
|
|
7
|
+
import { C as EVENT_SCHEMA_IDS, T as SINK_EVENT_SCHEMAS, i as RESERVED_CLOUD_EVENT_TYPES, l as isAbsoluteUri, r as CLOUD_EVENT_TYPES, s as cloudEventType, u as isTraceparent, v as CATALOG_EVENT_SCHEMA } from "./sink-D9_vh372.js";
|
|
8
|
+
import { n as copyJson, t as checkSchema } from "./json-schema-BPGa-RjQ.js";
|
|
9
9
|
//#region src/core/parse-sink-events.ts
|
|
10
10
|
function hasUnsafeKey(value) {
|
|
11
11
|
if (Array.isArray(value)) return value.some(hasUnsafeKey);
|
|
@@ -32,8 +32,8 @@ function rulesHold(event) {
|
|
|
32
32
|
return true;
|
|
33
33
|
}
|
|
34
34
|
/**
|
|
35
|
-
* Validates one untrusted sink event against its family's schema and returns
|
|
36
|
-
*
|
|
35
|
+
* Validates one untrusted sink event against its family's schema and returns a
|
|
36
|
+
* frozen copy, or `null` for anything else. Never throws.
|
|
37
37
|
*/
|
|
38
38
|
function parseSinkEvent(value) {
|
|
39
39
|
if (!isRecord(value)) return null;
|
|
@@ -46,8 +46,8 @@ function parseSinkEvent(value) {
|
|
|
46
46
|
}
|
|
47
47
|
/**
|
|
48
48
|
* Validates an untrusted list of sink events, such as a request body a sink
|
|
49
|
-
* receiver read. Each event that fails its schema is dropped, and a value
|
|
50
|
-
*
|
|
49
|
+
* receiver read. Each event that fails its schema is dropped, and a value that
|
|
50
|
+
* is not an array yields no events. Never throws.
|
|
51
51
|
*/
|
|
52
52
|
function parseSinkEvents(value) {
|
|
53
53
|
if (!Array.isArray(value)) return Object.freeze([]);
|
|
@@ -56,7 +56,10 @@ function parseSinkEvents(value) {
|
|
|
56
56
|
return event === null ? [] : [event];
|
|
57
57
|
}));
|
|
58
58
|
}
|
|
59
|
-
/**
|
|
59
|
+
/**
|
|
60
|
+
* Validates the data of a `com.permdock.catalog.*` CloudEvent; `null` when it
|
|
61
|
+
* does not match.
|
|
62
|
+
*/
|
|
60
63
|
function parseCatalogEventData(value) {
|
|
61
64
|
const copy = jsonMatching(value, CATALOG_EVENT_SCHEMA);
|
|
62
65
|
return copy === null ? null : freezeDeep(copy);
|
|
@@ -141,9 +144,10 @@ function fingerprintInput(catalog) {
|
|
|
141
144
|
return out;
|
|
142
145
|
}
|
|
143
146
|
/**
|
|
144
|
-
* The catalog v1 fingerprint: the `sha-256:` digest of its RFC 8785 JSON
|
|
145
|
-
*
|
|
146
|
-
* call sites
|
|
147
|
+
* The catalog v1 fingerprint: the `sha-256:` digest of its RFC 8785 JSON
|
|
148
|
+
* without `generatedAt`, `generator`, `fingerprint` and every
|
|
149
|
+
* `permissions[].usages`, so neither the CLI version, the clock nor call sites
|
|
150
|
+
* change it.
|
|
147
151
|
*/
|
|
148
152
|
function catalogFingerprint(catalog) {
|
|
149
153
|
if (!isRecord(catalog)) throw new TypeError("PermDock: a catalog must be an object");
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { t as catalogFile, n as runCatalog } from "./catalog-BFpz2EmT.js";
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { r as isRecord } from "./compact-CAf557ZB.js";
|
|
2
|
+
import { k as isOperationEffect } from "./src-DZ0l9UAg.js";
|
|
3
|
+
import { o as isPermission } from "./permission-registry-B8tYxPIt.js";
|
|
4
|
+
import { r as isOperationRisk } from "./permissions-CVXmRILq.js";
|
|
5
|
+
import { i as configError } from "./errors-Vpu6rKHl.js";
|
|
6
|
+
import { a as rel } from "./files-BSjrtIHw.js";
|
|
7
|
+
import { a as loadModule, s as pickNamed } from "./load-DjSU5KXO.js";
|
|
8
|
+
import { existsSync } from "node:fs";
|
|
9
|
+
import { resolve } from "node:path";
|
|
10
|
+
//#region src/cli/catalog-operations.ts
|
|
11
|
+
function metaOf(name, value) {
|
|
12
|
+
const fail = (field) => {
|
|
13
|
+
throw configError(`PermDock CLI: operations.${name}.meta${field} is invalid`);
|
|
14
|
+
};
|
|
15
|
+
if (!isRecord(value)) return fail("");
|
|
16
|
+
const { risk, effects, title } = value;
|
|
17
|
+
if (risk !== void 0 && !isOperationRisk(risk)) return fail(".risk");
|
|
18
|
+
if (effects !== void 0 && (!Array.isArray(effects) || !effects.every(isOperationEffect))) return fail(".effects");
|
|
19
|
+
if (title !== void 0 && typeof title !== "string") return fail(".title");
|
|
20
|
+
return {
|
|
21
|
+
...risk === void 0 ? {} : { risk },
|
|
22
|
+
...effects === void 0 ? {} : { effects },
|
|
23
|
+
...title === void 0 ? {} : { title }
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* The catalog entries of a `defineOperations` map, in definition order. Throws
|
|
28
|
+
* for a value that is not one, such as a module that exports the definitions
|
|
29
|
+
* object instead of the map.
|
|
30
|
+
*/
|
|
31
|
+
function catalogOperations(value) {
|
|
32
|
+
if (!isRecord(value)) throw configError("PermDock CLI: operations export is not an operation map");
|
|
33
|
+
const out = [];
|
|
34
|
+
for (const name of Object.keys(value)) {
|
|
35
|
+
const operation = value[name];
|
|
36
|
+
if (!isRecord(operation) || operation["name"] !== name || !isPermission(operation["permission"])) throw configError(`PermDock CLI: operations.${name} is not an operation; export the defineOperations result`);
|
|
37
|
+
const results = operation["results"];
|
|
38
|
+
if (results !== void 0 && !isPermission(results)) throw configError(`PermDock CLI: operations.${name}.results is not a permission`);
|
|
39
|
+
out.push({
|
|
40
|
+
name,
|
|
41
|
+
permission: operation["permission"].key,
|
|
42
|
+
...results === void 0 ? {} : { results: results.key },
|
|
43
|
+
meta: metaOf(name, operation["meta"])
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
return out;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* The configured operations module's catalog entries; `undefined` without one.
|
|
50
|
+
* Throws when it is missing or does not load.
|
|
51
|
+
*/
|
|
52
|
+
async function loadConfiguredOperations(cwd, path, options) {
|
|
53
|
+
if (path === void 0) return;
|
|
54
|
+
const abs = resolve(cwd, path);
|
|
55
|
+
if (!existsSync(abs)) throw configError(`PermDock CLI: operations module not found: ${rel(cwd, abs)}`);
|
|
56
|
+
const mod = await loadModule(abs, options);
|
|
57
|
+
return catalogOperations(pickNamed(mod, ["operations"]));
|
|
58
|
+
}
|
|
59
|
+
//#endregion
|
|
60
|
+
export { loadConfiguredOperations as t };
|
|
@@ -1,17 +1,24 @@
|
|
|
1
1
|
import { r as isRecord, t as compact } from "./compact-CAf557ZB.js";
|
|
2
|
-
import { n as freezeDeep } from "./freeze-
|
|
3
|
-
import { i as dateAt, p as nowSeconds } from "./time-
|
|
4
|
-
import {
|
|
5
|
-
import { l as isApprovalErrorCode, s as ApprovalError, t as APPROVAL_HEADER } from "./types-
|
|
6
|
-
import { h as toCloudEvent, l as isAbsoluteUri } from "./sink-
|
|
7
|
-
import { n as parseCatalogEventData, t as catalogFingerprint } from "./catalog-fingerprint-
|
|
8
|
-
import { t as parseApprovalRequest } from "./parse-request-
|
|
2
|
+
import { n as freezeDeep } from "./freeze-jjan0lCv.js";
|
|
3
|
+
import { i as dateAt, p as nowSeconds } from "./time-nR1JesoH.js";
|
|
4
|
+
import { u as policyDocumentFromClaims } from "./hosted-D0IzESu_.js";
|
|
5
|
+
import { l as isApprovalErrorCode, s as ApprovalError, t as APPROVAL_HEADER } from "./types-CcUXciSj.js";
|
|
6
|
+
import { h as toCloudEvent, l as isAbsoluteUri } from "./sink-D9_vh372.js";
|
|
7
|
+
import { n as parseCatalogEventData, t as catalogFingerprint } from "./catalog-fingerprint-e6aCWosn.js";
|
|
8
|
+
import { t as parseApprovalRequest } from "./parse-request-CwCZpyjV.js";
|
|
9
9
|
import { t as timeoutSignal } from "./timeout-D51niuQP.js";
|
|
10
|
+
import { t as CLOUD_BASE_URL } from "./base-url-BQbddZO5.js";
|
|
10
11
|
//#region src/cloud/approver.ts
|
|
11
12
|
const APPROVER_HEADER = "PermDock-Approver";
|
|
12
|
-
/**
|
|
13
|
+
/**
|
|
14
|
+
* The RFC 9396 `authorization_details` type that binds an approver token to one
|
|
15
|
+
* verdict.
|
|
16
|
+
*/
|
|
13
17
|
const APPROVAL_DETAIL_TYPE = "permdock_approval";
|
|
14
|
-
/**
|
|
18
|
+
/**
|
|
19
|
+
* Seconds an approver token lives: it proves one resolve call, and the Cloud
|
|
20
|
+
* refuses a replayed `jti`.
|
|
21
|
+
*/
|
|
15
22
|
const APPROVER_TTL = 60;
|
|
16
23
|
async function facts(read, request, verdict, fallback) {
|
|
17
24
|
if (read === void 0) return fallback ?? [];
|
|
@@ -24,7 +31,10 @@ async function facts(read, request, verdict, fallback) {
|
|
|
24
31
|
function unauthenticated(detail) {
|
|
25
32
|
return new ApprovalError("approver-unauthenticated", detail);
|
|
26
33
|
}
|
|
27
|
-
/**
|
|
34
|
+
/**
|
|
35
|
+
* A rejection only denies, so the Cloud takes a `system` one without an
|
|
36
|
+
* approver token.
|
|
37
|
+
*/
|
|
28
38
|
function isSystemRejection(verdict) {
|
|
29
39
|
return verdict.status === "rejected" && verdict.by.actor?.kind === "system";
|
|
30
40
|
}
|
|
@@ -35,10 +45,10 @@ function isSystemRejection(verdict) {
|
|
|
35
45
|
* the request id, the verdict status, `vouched`, and the approver's
|
|
36
46
|
* `permissions` and `relations`. With the `roles`, `memberships` and `tenant`
|
|
37
47
|
* claims they are the only facts the Cloud checks a request's `approvers`
|
|
38
|
-
* against in bring-your-own mode. `target` runs only after the
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
*
|
|
48
|
+
* against in bring-your-own mode. `target` runs only after the approver checks
|
|
49
|
+
* pass. Throws an `ApprovalError` before any resolve when the approver cannot
|
|
50
|
+
* be proven: no signer, no principal, an actor, a failed lookup or a signer
|
|
51
|
+
* failure.
|
|
42
52
|
*/
|
|
43
53
|
async function approverHeaders(verdict, options, issuer, target) {
|
|
44
54
|
if (isSystemRejection(verdict)) return {};
|
|
@@ -79,7 +89,10 @@ async function approverHeaders(verdict, options, issuer, target) {
|
|
|
79
89
|
}
|
|
80
90
|
//#endregion
|
|
81
91
|
//#region src/cloud/request.ts
|
|
82
|
-
/**
|
|
92
|
+
/**
|
|
93
|
+
* Milliseconds a PermDock Cloud request may take; a slower one fails like an
|
|
94
|
+
* unreachable Cloud.
|
|
95
|
+
*/
|
|
83
96
|
const CLOUD_TIMEOUT_MS = 1e4;
|
|
84
97
|
function readEnv(name) {
|
|
85
98
|
const value = globalThis.process?.env?.[name];
|
|
@@ -92,44 +105,99 @@ function firstNonEmpty(...values) {
|
|
|
92
105
|
function trimSlash(value) {
|
|
93
106
|
return value.endsWith("/") ? value.slice(0, -1) : value;
|
|
94
107
|
}
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
function cloudEndpoints(options = {}) {
|
|
100
|
-
const url = trimSlash(firstNonEmpty(options.url, readEnv("PERMDOCK_CLOUD_URL")));
|
|
101
|
-
if (url === "") throw new Error("PermDock: cloud() requires url and key.");
|
|
102
|
-
const environment = firstNonEmpty(options.environment, readEnv("PERMDOCK_CLOUD_ENV"), readEnv("VERCEL_ENV"), "production");
|
|
108
|
+
function cloudUrl(options) {
|
|
109
|
+
return trimSlash(firstNonEmpty(options.url, readEnv("PERMDOCK_CLOUD_URL"), CLOUD_BASE_URL));
|
|
110
|
+
}
|
|
111
|
+
function endpointsOf(url, environment) {
|
|
103
112
|
const issuer = `${url}/v1/environments/${encodeURIComponent(environment)}`;
|
|
104
113
|
return Object.freeze({
|
|
105
114
|
issuer,
|
|
106
115
|
jwks: `${issuer}/.well-known/jwks.json`
|
|
107
116
|
});
|
|
108
117
|
}
|
|
109
|
-
/**
|
|
118
|
+
/**
|
|
119
|
+
* `options.environment`, else `PERMDOCK_CLOUD_ENV`, else `""` for the key-bound
|
|
120
|
+
* lookup.
|
|
121
|
+
*/
|
|
122
|
+
function configuredEnvironment(options) {
|
|
123
|
+
return firstNonEmpty(options.environment, readEnv("PERMDOCK_CLOUD_ENV"));
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* The environment URL and JWK Set URL `cloud()` uses when the environment is
|
|
127
|
+
* configured: `environment`, else `PERMDOCK_CLOUD_ENV`. Throws when neither is
|
|
128
|
+
* set; `resolveCloudEndpoints` then asks the Cloud which environment the key
|
|
129
|
+
* belongs to.
|
|
130
|
+
*/
|
|
131
|
+
function cloudEndpoints(options = {}) {
|
|
132
|
+
const url = cloudUrl(options);
|
|
133
|
+
const environment = configuredEnvironment(options);
|
|
134
|
+
if (environment === "") throw new Error("PermDock: cloudEndpoints() requires environment or PERMDOCK_CLOUD_ENV; resolveCloudEndpoints() asks the Cloud for the key's environment.");
|
|
135
|
+
return endpointsOf(url, environment);
|
|
136
|
+
}
|
|
137
|
+
async function keyEnvironment(url, key, fetchFn) {
|
|
138
|
+
const response = await fetchFn(`${url}/v1/environment`, {
|
|
139
|
+
headers: {
|
|
140
|
+
authorization: `Bearer ${key}`,
|
|
141
|
+
accept: "application/json"
|
|
142
|
+
},
|
|
143
|
+
signal: timeoutSignal(CLOUD_TIMEOUT_MS)
|
|
144
|
+
});
|
|
145
|
+
if (!response.ok) throw new Error(`PermDock Cloud did not name the key's environment: HTTP ${String(response.status)}`);
|
|
146
|
+
const body = await response.json();
|
|
147
|
+
if (!isRecord(body) || typeof body["environment"] !== "string") throw new Error("PermDock Cloud answered GET /v1/environment in an unknown shape");
|
|
148
|
+
const endpoints = endpointsOf(url, body["environment"]);
|
|
149
|
+
if (body["issuer"] !== endpoints.issuer) throw new Error(`PermDock Cloud named issuer ${String(body["issuer"])}, not ${endpoints.issuer}`);
|
|
150
|
+
return endpoints;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* The authenticated connection every `permdock/cloud` client shares. Throws
|
|
154
|
+
* without a key.
|
|
155
|
+
*/
|
|
110
156
|
function cloudConnection(options) {
|
|
111
157
|
const key = firstNonEmpty(options.key, readEnv("PERMDOCK_CLOUD_KEY"));
|
|
112
|
-
|
|
113
|
-
|
|
158
|
+
const url = cloudUrl(options);
|
|
159
|
+
if (key === "") throw new Error("PermDock: cloud() requires a key (PERMDOCK_CLOUD_KEY).");
|
|
160
|
+
const environment = configuredEnvironment(options);
|
|
161
|
+
const known = environment === "" ? void 0 : endpointsOf(url, environment);
|
|
114
162
|
const fetchFn = options.fetch ?? globalThis.fetch.bind(globalThis);
|
|
115
|
-
|
|
163
|
+
let pending;
|
|
164
|
+
const endpoints = () => {
|
|
165
|
+
if (known !== void 0) return Promise.resolve(known);
|
|
166
|
+
pending ??= keyEnvironment(url, key, fetchFn).catch((error) => {
|
|
167
|
+
pending = void 0;
|
|
168
|
+
throw error;
|
|
169
|
+
});
|
|
170
|
+
return pending;
|
|
171
|
+
};
|
|
172
|
+
const request = async (path, init = {}, accept, contentType) => {
|
|
173
|
+
const { issuer } = await endpoints();
|
|
116
174
|
const headers = new Headers();
|
|
117
175
|
headers.set("authorization", `Bearer ${key}`);
|
|
118
176
|
headers.set("content-type", "application/json");
|
|
119
177
|
for (const [name, value] of new Headers(init.headers)) headers.set(name, value);
|
|
120
178
|
if (accept !== void 0) headers.set("accept", accept);
|
|
121
179
|
if (contentType !== void 0) headers.set("content-type", contentType);
|
|
122
|
-
return fetchFn(`${
|
|
180
|
+
return fetchFn(`${issuer}${path}`, {
|
|
123
181
|
...init,
|
|
124
182
|
headers,
|
|
125
183
|
signal: timeoutSignal(CLOUD_TIMEOUT_MS, init.signal)
|
|
126
184
|
});
|
|
127
185
|
};
|
|
128
186
|
return Object.freeze({
|
|
129
|
-
|
|
187
|
+
known,
|
|
188
|
+
endpoints,
|
|
130
189
|
request
|
|
131
190
|
});
|
|
132
191
|
}
|
|
192
|
+
/**
|
|
193
|
+
* The environment URL and JWK Set URL for a key: `cloudEndpoints(options)` when
|
|
194
|
+
* the environment is configured, else the environment `GET /v1/environment`
|
|
195
|
+
* names for `key` (`PERMDOCK_CLOUD_KEY`). Rejects when the Cloud does not
|
|
196
|
+
* answer or answers another issuer.
|
|
197
|
+
*/
|
|
198
|
+
async function resolveCloudEndpoints(options = {}) {
|
|
199
|
+
return await cloudConnection(options).endpoints();
|
|
200
|
+
}
|
|
133
201
|
/** `true` for a compact JWS: three dot-separated parts, not JSON. */
|
|
134
202
|
function isCompactJws(value) {
|
|
135
203
|
return !value.startsWith("{") && value.split(".").length === 3;
|
|
@@ -162,7 +230,10 @@ function asApproval(value) {
|
|
|
162
230
|
if (!isRecord(value) || value["v"] !== 1 || typeof value["token"] !== "string") return null;
|
|
163
231
|
return value;
|
|
164
232
|
}
|
|
165
|
-
/**
|
|
233
|
+
/**
|
|
234
|
+
* The refusal PermDock Cloud names in its body, else the one its status
|
|
235
|
+
* implies.
|
|
236
|
+
*/
|
|
166
237
|
async function approvalErrorFrom(response) {
|
|
167
238
|
let body;
|
|
168
239
|
try {
|
|
@@ -182,7 +253,7 @@ function approvalErrorFromStatus(status) {
|
|
|
182
253
|
return new ApprovalError("approval-not-found", "approval was not found");
|
|
183
254
|
}
|
|
184
255
|
function cloud(options = {}) {
|
|
185
|
-
const {
|
|
256
|
+
const { known, endpoints, request } = cloudConnection(options);
|
|
186
257
|
const flushAt = options.flushAt ?? 32;
|
|
187
258
|
const waitUntil = options.waitUntil;
|
|
188
259
|
const approvals = {
|
|
@@ -211,7 +282,7 @@ function cloud(options = {}) {
|
|
|
211
282
|
}
|
|
212
283
|
},
|
|
213
284
|
async resolve(token, verdict) {
|
|
214
|
-
const approver = await approverHeaders(verdict, options.approver,
|
|
285
|
+
const approver = await approverHeaders(verdict, options.approver, (await endpoints()).issuer, async () => {
|
|
215
286
|
const response = await request("/approvals/by-token", { headers: { [APPROVAL_HEADER]: token } });
|
|
216
287
|
if (!response.ok) throw await approvalErrorFrom(response);
|
|
217
288
|
const found = parseApprovalRequest(await response.json());
|
|
@@ -306,8 +377,7 @@ function cloud(options = {}) {
|
|
|
306
377
|
}
|
|
307
378
|
};
|
|
308
379
|
const capacity = options.capacity ?? 1e4;
|
|
309
|
-
|
|
310
|
-
if (!isAbsoluteUri(source)) throw new TypeError("PermDock: cloud() source is an absolute URI");
|
|
380
|
+
if (options.source !== void 0 && !isAbsoluteUri(options.source)) throw new TypeError("PermDock: cloud() source is an absolute URI");
|
|
311
381
|
const pending = [];
|
|
312
382
|
const bound = () => {
|
|
313
383
|
if (pending.length > capacity) pending.splice(0, pending.length - capacity);
|
|
@@ -316,6 +386,7 @@ function cloud(options = {}) {
|
|
|
316
386
|
if (pending.length === 0) return;
|
|
317
387
|
const events = pending.splice(0);
|
|
318
388
|
try {
|
|
389
|
+
const source = options.source ?? (await endpoints()).issuer;
|
|
319
390
|
if (!(await request("/decisions", {
|
|
320
391
|
method: "POST",
|
|
321
392
|
body: JSON.stringify(events.map((event) => toCloudEvent(event, { source })))
|
|
@@ -342,6 +413,13 @@ function cloud(options = {}) {
|
|
|
342
413
|
return text;
|
|
343
414
|
} });
|
|
344
415
|
let document = null;
|
|
416
|
+
let built;
|
|
417
|
+
const policyVerifier = (resolved) => {
|
|
418
|
+
const verifier = options.verifier;
|
|
419
|
+
if (typeof verifier !== "function") return verifier;
|
|
420
|
+
built ??= verifier(resolved);
|
|
421
|
+
return built;
|
|
422
|
+
};
|
|
345
423
|
return freezeDeep({
|
|
346
424
|
approvals,
|
|
347
425
|
sink,
|
|
@@ -351,10 +429,15 @@ function cloud(options = {}) {
|
|
|
351
429
|
return document;
|
|
352
430
|
},
|
|
353
431
|
async refresh() {
|
|
354
|
-
|
|
355
|
-
if (verifier === void 0) return;
|
|
432
|
+
if (options.verifier === void 0) return;
|
|
356
433
|
let response;
|
|
434
|
+
let root;
|
|
435
|
+
let verifier;
|
|
357
436
|
try {
|
|
437
|
+
const resolved = await endpoints();
|
|
438
|
+
root = resolved.issuer;
|
|
439
|
+
verifier = policyVerifier(resolved);
|
|
440
|
+
if (verifier === void 0) return;
|
|
358
441
|
response = await request("/policy");
|
|
359
442
|
} catch {
|
|
360
443
|
return;
|
|
@@ -395,9 +478,44 @@ function cloud(options = {}) {
|
|
|
395
478
|
if (parsed === null) throw new Error("PermDock Cloud answered the catalog push in an unknown shape");
|
|
396
479
|
return parsed;
|
|
397
480
|
} },
|
|
398
|
-
|
|
399
|
-
|
|
481
|
+
endpoints,
|
|
482
|
+
...known
|
|
400
483
|
});
|
|
401
484
|
}
|
|
402
485
|
//#endregion
|
|
403
|
-
|
|
486
|
+
//#region src/cloud/challenge.ts
|
|
487
|
+
const SCHEME = /^[\s,]*([!#$%&'*+.^_`|~0-9A-Za-z-]+)(?=[\s,]|$)/u;
|
|
488
|
+
const PARAM = /^\s*([!#$%&'*+.^_`|~0-9A-Za-z-]+)\s*=\s*(?:"((?:[^"\\]|\\.)*)"|([!#$%&'*+.^_`|~0-9A-Za-z-]+))\s*(?:,|$)/u;
|
|
489
|
+
const TOKEN68 = /^\s*[A-Za-z0-9._~+/-]+=*\s*(?:,|$)/u;
|
|
490
|
+
/**
|
|
491
|
+
* The first `Bearer` challenge in `header` (RFC 9110 section 11.6.1 syntax), or
|
|
492
|
+
* `null`. Other schemes in the same field are skipped.
|
|
493
|
+
*/
|
|
494
|
+
function bearerChallenge(header) {
|
|
495
|
+
if (header === null) return null;
|
|
496
|
+
let rest = header;
|
|
497
|
+
while (rest.trim() !== "") {
|
|
498
|
+
const scheme = SCHEME.exec(rest);
|
|
499
|
+
if (scheme === null) return null;
|
|
500
|
+
rest = rest.slice(scheme[0].length);
|
|
501
|
+
const entries = [];
|
|
502
|
+
let param = PARAM.exec(rest);
|
|
503
|
+
if (param === null) {
|
|
504
|
+
const token68 = TOKEN68.exec(rest);
|
|
505
|
+
rest = token68 === null ? rest : rest.slice(token68[0].length);
|
|
506
|
+
}
|
|
507
|
+
while (param !== null) {
|
|
508
|
+
const quoted = param[2];
|
|
509
|
+
entries.push([(param[1] ?? "").toLowerCase(), quoted === void 0 ? param[3] ?? "" : quoted.replaceAll(/\\(.)/gu, "$1")]);
|
|
510
|
+
rest = rest.slice(param[0].length);
|
|
511
|
+
param = PARAM.exec(rest);
|
|
512
|
+
}
|
|
513
|
+
if ((scheme[1] ?? "").toLowerCase() === "bearer") return Object.freeze({
|
|
514
|
+
scheme: "bearer",
|
|
515
|
+
params: Object.freeze(Object.fromEntries(entries))
|
|
516
|
+
});
|
|
517
|
+
}
|
|
518
|
+
return null;
|
|
519
|
+
}
|
|
520
|
+
//#endregion
|
|
521
|
+
export { isCompactJws as a, cloudEndpoints as i, cloud as n, resolveCloudEndpoints as o, cloudConnection as r, approverHeaders as s, bearerChallenge as t };
|
package/dist/chat/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as ChatCommandResult, c as createPermDock, d as SubjectFromChatOptions, f as isChatAuthor, i as ChatCommandContext, l as ChatAuthor, n as ChatActionResult, o as ChatPermDock, p as subjectFromChat, r as ChatCommand, s as ChatPermDockOptions, t as ChatAction, u as ChatPrincipal } from "../create-
|
|
1
|
+
import { a as ChatCommandResult, c as createPermDock, d as SubjectFromChatOptions, f as isChatAuthor, i as ChatCommandContext, l as ChatAuthor, n as ChatActionResult, o as ChatPermDock, p as subjectFromChat, r as ChatCommand, s as ChatPermDockOptions, t as ChatAction, u as ChatPrincipal } from "../create-BVq1lNQE.js";
|
|
2
2
|
export { type ChatAction, type ChatActionResult, type ChatAuthor, type ChatCommand, type ChatCommandContext, type ChatCommandResult, type ChatPermDock, type ChatPermDockOptions, type ChatPrincipal, type SubjectFromChatOptions, createPermDock, isChatAuthor, subjectFromChat };
|
package/dist/chat/index.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { t as compact } from "../compact-CAf557ZB.js";
|
|
2
|
-
import { n as freezeDeep } from "../freeze-
|
|
3
|
-
import { n as loadPrincipalByIdentity } from "../principal-source-
|
|
4
|
-
import { f as nowMillis } from "../time-
|
|
5
|
-
import {
|
|
6
|
-
import { c as isApprovalError } from "../types-
|
|
7
|
-
import { a as requestApproval, o as resolveApproval, s as resumeDecision } from "../helpers-
|
|
8
|
-
import { t as approvalPrompt } from "../approval-prompt-
|
|
2
|
+
import { n as freezeDeep } from "../freeze-jjan0lCv.js";
|
|
3
|
+
import { n as loadPrincipalByIdentity } from "../principal-source-C6N60GtM.js";
|
|
4
|
+
import { f as nowMillis } from "../time-nR1JesoH.js";
|
|
5
|
+
import { l as withApp, t as getPermDock } from "../permdock-L-_I_3zP.js";
|
|
6
|
+
import { c as isApprovalError } from "../types-CcUXciSj.js";
|
|
7
|
+
import { a as requestApproval, o as resolveApproval, s as resumeDecision } from "../helpers-DJicaG6f.js";
|
|
8
|
+
import { t as approvalPrompt } from "../approval-prompt-B8hQY69x.js";
|
|
9
9
|
//#region src/chat/subject.ts
|
|
10
10
|
function nonEmpty(value) {
|
|
11
11
|
return typeof value === "string" && value !== "";
|
|
@@ -17,7 +17,10 @@ function isChatAuthor(value) {
|
|
|
17
17
|
const workspace = Reflect.get(value, "workspace");
|
|
18
18
|
return nonEmpty(provider) && nonEmpty(userId) && (workspace === void 0 || nonEmpty(workspace));
|
|
19
19
|
}
|
|
20
|
-
/**
|
|
20
|
+
/**
|
|
21
|
+
* The principal linked to `author`, or `null` for an unlinked or malformed
|
|
22
|
+
* author. Never throws.
|
|
23
|
+
*/
|
|
21
24
|
function principalFromChat(author, principals) {
|
|
22
25
|
if (!isChatAuthor(author)) return Promise.resolve(null);
|
|
23
26
|
return loadPrincipalByIdentity(principals, compact({
|
|
@@ -28,8 +31,8 @@ function principalFromChat(author, principals) {
|
|
|
28
31
|
}));
|
|
29
32
|
}
|
|
30
33
|
/**
|
|
31
|
-
* The subject a chat author acts as: the principal its identity link
|
|
32
|
-
*
|
|
34
|
+
* The subject a chat author acts as: the principal its identity link names, or
|
|
35
|
+
* anonymous when there is no link. Never throws.
|
|
33
36
|
*/
|
|
34
37
|
async function subjectFromChat(author, options) {
|
|
35
38
|
return {
|
package/dist/chat-sdk/index.d.ts
CHANGED
|
@@ -1,17 +1,20 @@
|
|
|
1
|
-
import { n as ApprovalUrl, t as ApprovalPrompt } from "../approval-prompt-
|
|
2
|
-
import { l as ChatAuthor, n as ChatActionResult, o as ChatPermDock } from "../create-
|
|
3
|
-
import { n as ChatTransport } from "../types-
|
|
1
|
+
import { n as ApprovalUrl, t as ApprovalPrompt } from "../approval-prompt-PYagyQUj.js";
|
|
2
|
+
import { l as ChatAuthor, n as ChatActionResult, o as ChatPermDock } from "../create-BVq1lNQE.js";
|
|
3
|
+
import { n as ChatTransport } from "../types-yUuPR5Hy.js";
|
|
4
4
|
import { ActionEvent, Author, CardElement } from "chat";
|
|
5
5
|
//#region src/chat-sdk/author.d.ts
|
|
6
6
|
type ChatSdkAuthorOptions = {
|
|
7
|
-
/**
|
|
7
|
+
/**
|
|
8
|
+
* The platform workspace the bot is installed in, matched against identity
|
|
9
|
+
* links.
|
|
10
|
+
*/
|
|
8
11
|
readonly workspace?: string;
|
|
9
12
|
};
|
|
10
13
|
/**
|
|
11
14
|
* 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
|
-
*
|
|
14
|
-
*
|
|
15
|
+
* (`adapter.name`, such as `slack`). `null` for a bot, this bot, the platform
|
|
16
|
+
* itself or an empty id. Reads only `userId`: the email and display name never
|
|
17
|
+
* identify anyone.
|
|
15
18
|
*/
|
|
16
19
|
export declare function chatSdkAuthor(user: Pick<Author, "userId" | "isBot" | "isMe" | "isSystem">, adapter: {
|
|
17
20
|
readonly name: string;
|
|
@@ -23,17 +26,23 @@ export declare const APPROVE_ACTION = "permdock:approve";
|
|
|
23
26
|
/** The `actionId` of the card's reject button; its `value` is the request id. */
|
|
24
27
|
export declare const REJECT_ACTION = "permdock:reject";
|
|
25
28
|
type ApprovalCardOptions = {
|
|
26
|
-
/**
|
|
29
|
+
/**
|
|
30
|
+
* The app's approval page: a base URL the request id is appended to, or a
|
|
31
|
+
* function of the prompt. Must be https.
|
|
32
|
+
*/
|
|
27
33
|
readonly approvalUrl: ApprovalUrl;
|
|
28
|
-
/**
|
|
34
|
+
/**
|
|
35
|
+
* `false` leaves out the approve and reject buttons, so the page is the only
|
|
36
|
+
* place to decide. Defaults to `true`.
|
|
37
|
+
*/
|
|
29
38
|
readonly buttons?: boolean;
|
|
30
39
|
};
|
|
31
40
|
/**
|
|
32
|
-
* A Chat SDK card for an approval prompt: the detail, who asked, the
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
41
|
+
* A Chat SDK card for an approval prompt: the detail, who asked, the permission
|
|
42
|
+
* and the expiry, a link to the approval page, and approve and reject buttons
|
|
43
|
+
* that carry the request id, never its token. A click is applied by
|
|
44
|
+
* `approvalActions` as the verified clicking user. Throws a `TypeError` for an
|
|
45
|
+
* approval page that is not https.
|
|
37
46
|
*/
|
|
38
47
|
export declare function approvalCard(prompt: ApprovalPrompt, options: ApprovalCardOptions): CardElement;
|
|
39
48
|
//#endregion
|
|
@@ -46,31 +55,40 @@ type ApprovalActionsOptions = ChatSdkAuthorOptions & {
|
|
|
46
55
|
readonly onResult?: (result: ChatActionResult, event: ActionEvent) => void | Promise<void>;
|
|
47
56
|
};
|
|
48
57
|
type ApprovalActions = {
|
|
49
|
-
/**
|
|
58
|
+
/**
|
|
59
|
+
* The action ids to register: `chat.onAction(actions.actionIds,
|
|
60
|
+
* actions.onAction)`.
|
|
61
|
+
*/
|
|
50
62
|
readonly actionIds: readonly [typeof APPROVE_ACTION, typeof REJECT_ACTION];
|
|
51
63
|
readonly onAction: (event: ActionEvent) => Promise<void>;
|
|
52
64
|
};
|
|
53
65
|
/**
|
|
54
|
-
* Applies the approve and reject buttons of `approvalCard`. The clicking
|
|
55
|
-
*
|
|
56
|
-
* `ChatPermDock.resolveAction`; the button value names the request by id.
|
|
57
|
-
*
|
|
66
|
+
* Applies the approve and reject buttons of `approvalCard`. The clicking user,
|
|
67
|
+
* as the Chat SDK adapter verified them, is resolved through
|
|
68
|
+
* `ChatPermDock.resolveAction`; the button value names the request by id. A
|
|
69
|
+
* click from an unlinked user, the requester or a bot records nothing.
|
|
58
70
|
*/
|
|
59
71
|
export declare function approvalActions(permdock: ChatPermDock, options?: ApprovalActionsOptions): ApprovalActions;
|
|
60
72
|
//#endregion
|
|
61
73
|
//#region src/chat-sdk/transport.d.ts
|
|
62
74
|
/** The part of a Chat SDK `Chat` the transport calls; a `new Chat(...)` fits. */
|
|
63
75
|
type ChatSdkClient = {
|
|
64
|
-
openDM(user: string)
|
|
65
|
-
post(message: string | CardElement)
|
|
76
|
+
openDM: (user: string) => Promise<{
|
|
77
|
+
post: (message: string | CardElement) => Promise<{
|
|
66
78
|
readonly id: string;
|
|
67
79
|
}>;
|
|
68
80
|
}>;
|
|
69
81
|
};
|
|
70
82
|
type ChatSdkTransportOptions = {
|
|
71
|
-
/**
|
|
83
|
+
/**
|
|
84
|
+
* The adapter name recipients are on (`slack`, `teams`, …); a target for
|
|
85
|
+
* another provider is rejected.
|
|
86
|
+
*/
|
|
72
87
|
readonly provider: string;
|
|
73
|
-
/**
|
|
88
|
+
/**
|
|
89
|
+
* The workspace the bot is installed in; a target for another workspace is
|
|
90
|
+
* rejected.
|
|
91
|
+
*/
|
|
74
92
|
readonly workspace?: string;
|
|
75
93
|
/** Keys this transport remembers to skip a repeat post. Defaults to 1000. */
|
|
76
94
|
readonly remember?: number;
|
|
@@ -78,9 +96,9 @@ type ChatSdkTransportOptions = {
|
|
|
78
96
|
/**
|
|
79
97
|
* The chat channel of `permdock/delivery` over the Chat SDK: opens a direct
|
|
80
98
|
* 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
|
-
*
|
|
83
|
-
*
|
|
99
|
+
* approval card when the message carries an approval prompt. The Chat SDK takes
|
|
100
|
+
* no idempotency key, so the transport skips a key it already sent, per
|
|
101
|
+
* instance and in memory only.
|
|
84
102
|
*/
|
|
85
103
|
export declare function chatSdkTransport(chat: ChatSdkClient, options: ChatSdkTransportOptions): ChatTransport;
|
|
86
104
|
//#endregion
|