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,45 +1,15 @@
|
|
|
1
1
|
import { r as isRecord } from "./compact-CAf557ZB.js";
|
|
2
|
-
import { n as isForbiddenKey } from "./paths-
|
|
3
|
-
import { t as byCodePoint } from "./compare-
|
|
4
|
-
import { i as configError } from "./errors-
|
|
5
|
-
import { a as quoteQualifiedTable, c as quoteSqlTable, o as quoteSqlIdent, s as quoteSqlLiteral, t as SQL_IDENT } from "./sql-
|
|
6
|
-
import "./
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
return quoteSqlIdent(name, CLI);
|
|
10
|
-
}
|
|
11
|
-
function quoteTable(name) {
|
|
12
|
-
return quoteSqlTable(name, CLI);
|
|
13
|
-
}
|
|
14
|
-
/** A table name with `public.` added when it names no schema, quoted. */
|
|
15
|
-
function quoteQualified(name) {
|
|
16
|
-
return quoteQualifiedTable(name, CLI);
|
|
17
|
-
}
|
|
18
|
-
function helperSchema(ctx) {
|
|
19
|
-
return ctx.schema ?? "permdock";
|
|
20
|
-
}
|
|
21
|
-
function qualified(ctx, name) {
|
|
22
|
-
return `${quoteIdent(helperSchema(ctx))}.${name}`;
|
|
23
|
-
}
|
|
24
|
-
function quoteLiteral(value) {
|
|
25
|
-
return quoteSqlLiteral(value);
|
|
26
|
-
}
|
|
27
|
-
const CLI = "PermDock CLI";
|
|
28
|
-
function declaredArray(values) {
|
|
29
|
-
return values.length === 0 ? `'{}'::text[]` : `array[${values.map(quoteLiteral).join(", ")}]::text[]`;
|
|
30
|
-
}
|
|
2
|
+
import { n as isForbiddenKey } from "./paths-CUvURzHp.js";
|
|
3
|
+
import { t as byCodePoint } from "./compare-DTfyUunF.js";
|
|
4
|
+
import { i as configError } from "./errors-Vpu6rKHl.js";
|
|
5
|
+
import { a as quoteQualifiedTable, c as quoteSqlTable, o as quoteSqlIdent, s as quoteSqlLiteral, t as SQL_IDENT } from "./sql-0WjxIp9g.js";
|
|
6
|
+
import { t as byScope } from "./compile-EzEMB-7v.js";
|
|
7
|
+
import "./sources-CMAM-2A3.js";
|
|
8
|
+
//#region src/cli/sql/columns.ts
|
|
31
9
|
/**
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
* reads as `NULL`, is double-quoted and escaped, so one element can never
|
|
35
|
-
* split into several.
|
|
10
|
+
* The Postgres type a JSON Schema property compares as; `undefined` for text or
|
|
11
|
+
* an unknown shape.
|
|
36
12
|
*/
|
|
37
|
-
function textArrayLiteral(values) {
|
|
38
|
-
return quoteLiteral(`{${values.map((value) => value === "" || /[\s,{}"\\]/u.test(value) || /^null$/iu.test(value) ? `"${value.replaceAll("\\", "\\\\").replaceAll("\"", "\\\"")}"` : value).join(",")}}`);
|
|
39
|
-
}
|
|
40
|
-
//#endregion
|
|
41
|
-
//#region src/cli/sql/columns.ts
|
|
42
|
-
/** The Postgres type a JSON Schema property compares as; `undefined` for text or an unknown shape. */
|
|
43
13
|
function columnTypeOf(property) {
|
|
44
14
|
if (!isRecord(property)) return;
|
|
45
15
|
const variants = [property["anyOf"], property["oneOf"]].find(Array.isArray);
|
|
@@ -101,14 +71,55 @@ function sqlType(name) {
|
|
|
101
71
|
function tenantTypeOf(ctx) {
|
|
102
72
|
return sqlType(ctx.tenantType ?? "uuid");
|
|
103
73
|
}
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
74
|
+
/**
|
|
75
|
+
* Postgres type of scope `name`'s id: `scopeTypes` by name or by its `tenant` /
|
|
76
|
+
* `team` alias, then the tenant type.
|
|
77
|
+
*/
|
|
108
78
|
function scopeTypeOf(ctx, name) {
|
|
109
|
-
const declared = ctx.scopeTypes
|
|
110
|
-
|
|
111
|
-
|
|
79
|
+
const declared = byScope(ctx.scopeTypes, ctx.scopes, name);
|
|
80
|
+
return declared === void 0 ? tenantTypeOf(ctx) : sqlType(declared);
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* The tenant type `rls.scopeTypes` gives the first scope, else `uuid`: the type
|
|
84
|
+
* the tenant claim and the custom-role tenant arguments are cast to.
|
|
85
|
+
*/
|
|
86
|
+
function firstScopeType(scopeTypes, scopes) {
|
|
87
|
+
const first = scopes[0]?.name;
|
|
88
|
+
return (first === void 0 ? void 0 : byScope(scopeTypes, scopes, first)) ?? scopeTypes?.["tenant"] ?? "uuid";
|
|
89
|
+
}
|
|
90
|
+
//#endregion
|
|
91
|
+
//#region src/cli/sql/quote.ts
|
|
92
|
+
function quoteIdent(name) {
|
|
93
|
+
return quoteSqlIdent(name, CLI);
|
|
94
|
+
}
|
|
95
|
+
function quoteTable(name) {
|
|
96
|
+
return quoteSqlTable(name, CLI);
|
|
97
|
+
}
|
|
98
|
+
/** A table name with `public.` added when it names no schema, quoted. */
|
|
99
|
+
function quoteQualified(name) {
|
|
100
|
+
return quoteQualifiedTable(name, CLI);
|
|
101
|
+
}
|
|
102
|
+
function helperSchema(ctx) {
|
|
103
|
+
return ctx.schema ?? "permdock";
|
|
104
|
+
}
|
|
105
|
+
function qualified(ctx, name) {
|
|
106
|
+
return `${quoteIdent(helperSchema(ctx))}.${name}`;
|
|
107
|
+
}
|
|
108
|
+
function quoteLiteral(value) {
|
|
109
|
+
return quoteSqlLiteral(value);
|
|
110
|
+
}
|
|
111
|
+
const CLI = "PermDock CLI";
|
|
112
|
+
function declaredArray(values) {
|
|
113
|
+
return values.length === 0 ? `'{}'::text[]` : `array[${values.map(quoteLiteral).join(", ")}]::text[]`;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* A text array as a Postgres literal (`'{admin,owner}'`). An element that holds
|
|
117
|
+
* a delimiter, a brace, a quote, a backslash, whitespace, or that reads as
|
|
118
|
+
* `NULL`, is double-quoted and escaped, so one element can never split into
|
|
119
|
+
* several.
|
|
120
|
+
*/
|
|
121
|
+
function textArrayLiteral(values) {
|
|
122
|
+
return quoteLiteral(`{${values.map((value) => value === "" || /[\s,{}"\\]/u.test(value) || /^null$/iu.test(value) ? `"${value.replaceAll("\\", "\\\\").replaceAll("\"", "\\\"")}"` : value).join(",")}}`);
|
|
112
123
|
}
|
|
113
124
|
//#endregion
|
|
114
125
|
//#region src/cli/sql/context.ts
|
|
@@ -118,21 +129,21 @@ function parseMembershipsFlag(raw) {
|
|
|
118
129
|
const colon = raw.indexOf(":");
|
|
119
130
|
const table = colon === -1 ? raw : raw.slice(0, colon);
|
|
120
131
|
const cols = (colon === -1 ? "" : raw.slice(colon + 1)).split(",").map((item) => item.trim()).filter((item) => item !== "");
|
|
121
|
-
return { tenant: {
|
|
132
|
+
return { scopes: { tenant: {
|
|
122
133
|
table,
|
|
123
|
-
tenant: cols[0] ?? "tenant_id",
|
|
134
|
+
columns: { tenant: cols[0] ?? "tenant_id" },
|
|
124
135
|
user: cols[1] ?? "user_id",
|
|
125
136
|
role: cols[2] ?? "role",
|
|
126
137
|
...cols[3] === void 0 ? {} : { expiresAt: cols[3] }
|
|
127
|
-
} };
|
|
138
|
+
} } };
|
|
128
139
|
}
|
|
129
140
|
//#endregion
|
|
130
141
|
//#region src/cli/sql/subject.ts
|
|
131
142
|
/**
|
|
132
|
-
* A role with `for` counts only on a membership of one of those kinds:
|
|
133
|
-
*
|
|
134
|
-
*
|
|
135
|
-
*
|
|
143
|
+
* A role with `for` counts only on a membership of one of those kinds: `case
|
|
144
|
+
* role when 'admin' then via = any(...) ... else true end`. A missing kind
|
|
145
|
+
* (`viaExpr` null) holds none of them. A constant kind folds into the roles it
|
|
146
|
+
* excludes, or no filter. `undefined` when nothing is filtered.
|
|
136
147
|
*/
|
|
137
148
|
function kindFilterSql(ctx, roleExpr, viaExpr) {
|
|
138
149
|
const kinds = Object.entries(ctx.ownership?.kinds ?? {}).toSorted(([a], [b]) => byCodePoint(a, b));
|
|
@@ -143,7 +154,10 @@ function kindFilterSql(ctx, roleExpr, viaExpr) {
|
|
|
143
154
|
}
|
|
144
155
|
return `case ${roleExpr} ${kinds.map(([role, allowed]) => `when ${quoteLiteral(role)} then coalesce(${viaExpr}, '') = any(array[${allowed.map(quoteLiteral).join(", ")}]::text[])`).join(" ")} else true end`;
|
|
145
156
|
}
|
|
146
|
-
/**
|
|
157
|
+
/**
|
|
158
|
+
* The kind check for one known role; `undefined` when it has no `for` or a
|
|
159
|
+
* constant kind it allows.
|
|
160
|
+
*/
|
|
147
161
|
function roleKindSql(ctx, role, viaExpr) {
|
|
148
162
|
const allowed = ctx.ownership?.kinds[role];
|
|
149
163
|
if (allowed === void 0) return;
|
|
@@ -161,7 +175,10 @@ function keyTenantSql(ctx, tenant) {
|
|
|
161
175
|
const named = `nullif(${subjectClaimJsonSql(ctx, keys.claim)} ->> ${quoteLiteral(keys.tenant)}, '')`;
|
|
162
176
|
return tenant === void 0 ? `${named} is null` : `(${named} is null or (${tenant})::text = ${named})`;
|
|
163
177
|
}
|
|
164
|
-
/**
|
|
178
|
+
/**
|
|
179
|
+
* The active-tenant claim cast to the tenant column's type, so the comparison
|
|
180
|
+
* uses the column's index.
|
|
181
|
+
*/
|
|
165
182
|
function tenantClaimSql(ctx) {
|
|
166
183
|
return `${subjectClaimSql(ctx, ctx.tenantClaim)}::${tenantTypeOf(ctx)}`;
|
|
167
184
|
}
|
|
@@ -170,7 +187,10 @@ function userIdHelperSql(ctx) {
|
|
|
170
187
|
return qualified(ctx, USER_ID_HELPER);
|
|
171
188
|
}
|
|
172
189
|
const SESSION_LIVE_HELPER = "permdock_session_live";
|
|
173
|
-
/**
|
|
190
|
+
/**
|
|
191
|
+
* `{ subject: { session: { live: true } } }` in a policy; only Supabase has
|
|
192
|
+
* `auth.sessions`.
|
|
193
|
+
*/
|
|
174
194
|
function liveSessionSql(ctx) {
|
|
175
195
|
if (ctx.dialect !== "supabase") throw configError(`PermDock CLI: { subject: { session: { live: true } } } reads auth.sessions, which only the supabase dialect has (got ${ctx.dialect})`);
|
|
176
196
|
return `(select ${qualified(ctx, SESSION_LIVE_HELPER)}())`;
|
|
@@ -245,7 +265,10 @@ function subjectClaimJsonSql(ctx, claim) {
|
|
|
245
265
|
function viaAllowed(value, allowed) {
|
|
246
266
|
return allowed.includes(value ?? "");
|
|
247
267
|
}
|
|
248
|
-
/**
|
|
268
|
+
/**
|
|
269
|
+
* The membership kind of a row `m` of `table`: its column as text, or its
|
|
270
|
+
* constant (`null` without one).
|
|
271
|
+
*/
|
|
249
272
|
function memberVia(table) {
|
|
250
273
|
const via = table.via;
|
|
251
274
|
if (via === void 0) return { value: null };
|
|
@@ -267,7 +290,10 @@ const HELPERS = {
|
|
|
267
290
|
has: "permdock_has",
|
|
268
291
|
hasFor: "permdock_has_for"
|
|
269
292
|
};
|
|
270
|
-
/**
|
|
293
|
+
/**
|
|
294
|
+
* Objects `--custom-roles` adds next to the helpers. Names are part of the SQL
|
|
295
|
+
* contract.
|
|
296
|
+
*/
|
|
271
297
|
const CUSTOM_ROLES = {
|
|
272
298
|
permissions: "custom_role_permissions",
|
|
273
299
|
includes: "custom_role_includes",
|
|
@@ -275,31 +301,44 @@ const CUSTOM_ROLES = {
|
|
|
275
301
|
keys: "permdock_custom_keys",
|
|
276
302
|
beyond: "permdock_custom_role_beyond",
|
|
277
303
|
guard: "permdock_custom_role_guard",
|
|
304
|
+
syncGuard: "permdock_sync_custom_role_guard",
|
|
278
305
|
beyondFor: "permdock_custom_role_beyond_for",
|
|
279
306
|
guardFor: "permdock_custom_role_guard_for",
|
|
280
307
|
shape: "permdock_custom_role_shape",
|
|
281
308
|
entries: "permdock_custom_role_entries",
|
|
309
|
+
entryProblem: "permdock_custom_role_entry_problem",
|
|
282
310
|
replace: "permdock_replace_custom_role_grants",
|
|
283
311
|
rename: "permdock_rename_custom_role_grants",
|
|
284
312
|
remove: "permdock_delete_custom_role_grants",
|
|
285
313
|
trustedReplace: "permdock_trusted_replace_custom_role_grants",
|
|
286
314
|
trustedRename: "permdock_trusted_rename_custom_role_grants",
|
|
287
315
|
trustedRemove: "permdock_trusted_delete_custom_role_grants",
|
|
316
|
+
replaceById: "permdock_replace_custom_role_grants_by_id",
|
|
317
|
+
trustedReplaceById: "permdock_trusted_replace_custom_role_grants_by_id",
|
|
318
|
+
trustedReadById: "permdock_trusted_role_permissions_by_id",
|
|
288
319
|
cascade: "permdock_cascade_custom_role",
|
|
320
|
+
nameGuard: "permdock_custom_role_name_guard",
|
|
321
|
+
sync: "permdock_sync_custom_role",
|
|
289
322
|
shared: "permdock_is_shared_role"
|
|
290
323
|
};
|
|
291
324
|
/** The function `rls.roles` adds. The name is part of the SQL contract. */
|
|
292
325
|
const GLOBAL_ROLES = { replace: "permdock_replace_global_roles" };
|
|
293
|
-
/**
|
|
326
|
+
/**
|
|
327
|
+
* `user` is the SQL for the user id: the dialect's (the default) or the
|
|
328
|
+
* `p_user` parameter of a `_for` helper.
|
|
329
|
+
*/
|
|
294
330
|
function signedIn(ctx, user = subjectIdSql(ctx)) {
|
|
295
331
|
return `coalesce(${user}::text, '') <> ''`;
|
|
296
332
|
}
|
|
297
333
|
function rootName(ctx) {
|
|
298
334
|
return ctx.scopes[0]?.name ?? "tenant";
|
|
299
335
|
}
|
|
300
|
-
/**
|
|
336
|
+
/**
|
|
337
|
+
* The stored allow as `permissions` hands it to `permdock_custom_keys`: `key`,
|
|
338
|
+
* or `key@level` with levels.
|
|
339
|
+
*/
|
|
301
340
|
function allowEntry(ctx) {
|
|
302
341
|
return ctx.customRoles?.levels === true ? "permission || coalesce('@' || c.level, '')" : "permission";
|
|
303
342
|
}
|
|
304
343
|
//#endregion
|
|
305
|
-
export {
|
|
344
|
+
export { quoteQualified as A, parseMembershipsFlag as C, qualified as D, helperSchema as E, firstScopeType as F, scopeTypeOf as I, sqlType as L, textArrayLiteral as M, arrayColumnsOf as N, quoteIdent as O, columnTypesOf as P, tenantTypeOf as R, CLAIM as S, declaredArray as T, subjectClaimJsonSql as _, customRolesOn as a, tenantClaimSql as b, SESSION_LIVE_HELPER as c, keyTenantSql as d, kindFilterSql as f, sessionLiveHelperSql as g, roleKindSql as h, allowEntry as i, quoteTable as j, quoteLiteral as k, USER_ID_HELPER as l, memberVia as m, GLOBAL_ROLES as n, rootName as o, liveSessionSql as p, HELPERS as r, signedIn as s, CUSTOM_ROLES as t, globalKindFilterSql as u, subjectClaimSql as v, CLI as w, userIdHelperSql as x, subjectIdSql as y };
|
|
@@ -1,9 +1,12 @@
|
|
|
1
|
-
import { a as durationOf, f as nowMillis } from "./time-
|
|
2
|
-
import { t as decisionToken } from "./token-
|
|
1
|
+
import { a as durationOf, f as nowMillis } from "./time-nR1JesoH.js";
|
|
2
|
+
import { t as decisionToken } from "./token-DC9EQiet.js";
|
|
3
3
|
//#region src/pdp/shared.ts
|
|
4
4
|
const MAX_CACHE_TTL = 30;
|
|
5
5
|
const CACHE_MAX = 1e3;
|
|
6
|
-
/**
|
|
6
|
+
/**
|
|
7
|
+
* Milliseconds from `ttl` seconds, clamped to 30 s; a `ttl` that is not a whole
|
|
8
|
+
* number of seconds above 0 disables the cache.
|
|
9
|
+
*/
|
|
7
10
|
function ttlMs(cache) {
|
|
8
11
|
const ttl = durationOf(cache?.ttl);
|
|
9
12
|
return ttl === void 0 ? 0 : Math.min(ttl, MAX_CACHE_TTL) * 1e3;
|
|
@@ -48,9 +51,9 @@ function granted(provider, permission, subject, data) {
|
|
|
48
51
|
};
|
|
49
52
|
}
|
|
50
53
|
/**
|
|
51
|
-
* The request that would be sent, plus what a custom mapping may drop
|
|
52
|
-
*
|
|
53
|
-
*
|
|
54
|
+
* The request that would be sent, plus what a custom mapping may drop (issuer,
|
|
55
|
+
* tenant, actor): a tenant switch or a changed row never reuses a cached
|
|
56
|
+
* answer.
|
|
54
57
|
*/
|
|
55
58
|
function cacheKey(subject, permission, body) {
|
|
56
59
|
return JSON.stringify([
|
|
@@ -6,8 +6,8 @@ const EXIT_CODES = {
|
|
|
6
6
|
/** How long a signalled run may take to clean up before the process exits. */
|
|
7
7
|
const GRACE_MS = 2e3;
|
|
8
8
|
/**
|
|
9
|
-
* Turns SIGINT and SIGTERM into an aborted signal and the 128 + n exit code.
|
|
10
|
-
*
|
|
9
|
+
* Turns SIGINT and SIGTERM into an aborted signal and the 128 + n exit code. A
|
|
10
|
+
* second signal, or a run still busy after the grace period, exits at once.
|
|
11
11
|
*/
|
|
12
12
|
function trapSignals() {
|
|
13
13
|
const controller = new AbortController();
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import { t as compact } from "./compact-CAf557ZB.js";
|
|
2
|
-
import { n as freezeDeep } from "./freeze-
|
|
3
|
-
import { t as assertAppData } from "./app-data-
|
|
4
|
-
import { d as isoNow, n as RFC3339_PATTERN } from "./time-
|
|
5
|
-
import { n as requireEventInstant } from "./event-time-
|
|
2
|
+
import { n as freezeDeep } from "./freeze-jjan0lCv.js";
|
|
3
|
+
import { t as assertAppData } from "./app-data-UNNm07jV.js";
|
|
4
|
+
import { d as isoNow, n as RFC3339_PATTERN } from "./time-nR1JesoH.js";
|
|
5
|
+
import { n as requireEventInstant } from "./event-time-BGy48400.js";
|
|
6
6
|
//#region src/core/event-schemas.ts
|
|
7
7
|
const SCHEMA = "https://json-schema.org/draft/2020-12/schema";
|
|
8
|
-
/**
|
|
8
|
+
/**
|
|
9
|
+
* The URL each event family's schema is published at, and its CloudEvents
|
|
10
|
+
* `dataschema`.
|
|
11
|
+
*/
|
|
9
12
|
const EVENT_SCHEMA_IDS = Object.freeze({
|
|
10
13
|
decision: "https://permdock.com/schemas/decision-event-v1.json",
|
|
11
14
|
directory: "https://permdock.com/schemas/directory-event-v1.json",
|
|
@@ -671,7 +674,10 @@ const CLOUD_EVENT_TYPES = Object.freeze({
|
|
|
671
674
|
deliveryComplained: "com.permdock.delivery.complained",
|
|
672
675
|
deliveryFailed: "com.permdock.delivery.failed"
|
|
673
676
|
});
|
|
674
|
-
/**
|
|
677
|
+
/**
|
|
678
|
+
* Types named for a later release; a receiver refuses them until then. None are
|
|
679
|
+
* reserved now.
|
|
680
|
+
*/
|
|
675
681
|
const RESERVED_CLOUD_EVENT_TYPES = Object.freeze([]);
|
|
676
682
|
/** The CloudEvents JSON format media type for one event (structured mode). */
|
|
677
683
|
const CLOUDEVENTS_CONTENT_TYPE = "application/cloudevents+json";
|
|
@@ -768,7 +774,10 @@ function cloudEventSubject(event) {
|
|
|
768
774
|
if (event.type === "automation") return event.automation.id;
|
|
769
775
|
return event.permission;
|
|
770
776
|
}
|
|
771
|
-
/**
|
|
777
|
+
/**
|
|
778
|
+
* `x` as given, after checking it is a plain JSON object; a builder throws on
|
|
779
|
+
* bad input.
|
|
780
|
+
*/
|
|
772
781
|
function checkedX(x) {
|
|
773
782
|
if (x !== void 0) assertAppData(x, "x of a sink event");
|
|
774
783
|
return x;
|
|
@@ -802,9 +811,9 @@ function automationEvent(input) {
|
|
|
802
811
|
});
|
|
803
812
|
}
|
|
804
813
|
/**
|
|
805
|
-
* The `access` event of a `SupportSession`: `started` when it begins,
|
|
806
|
-
*
|
|
807
|
-
*
|
|
814
|
+
* The `access` event of a `SupportSession`: `started` when it begins, `ended`
|
|
815
|
+
* when it lapses, `revoked` when it is ended early. `principal` is the staff
|
|
816
|
+
* member, as for a support membership.
|
|
808
817
|
*/
|
|
809
818
|
function supportSessionEvent(input) {
|
|
810
819
|
const { session } = input;
|
|
@@ -829,8 +838,8 @@ function supportSessionEvent(input) {
|
|
|
829
838
|
});
|
|
830
839
|
}
|
|
831
840
|
/**
|
|
832
|
-
* A `credential` sink event for `credential`. `sample` belongs on `used`
|
|
833
|
-
*
|
|
841
|
+
* A `credential` sink event for `credential`. `sample` belongs on `used` events
|
|
842
|
+
* only and must be in `(0, 1]`.
|
|
834
843
|
*/
|
|
835
844
|
function credentialEvent(input) {
|
|
836
845
|
const sample = input.sample;
|
|
@@ -917,9 +926,9 @@ function toCloudEvent(event, options) {
|
|
|
917
926
|
});
|
|
918
927
|
}
|
|
919
928
|
/**
|
|
920
|
-
* Signs sink events as an offline evidence export: a compact JWS with
|
|
921
|
-
*
|
|
922
|
-
*
|
|
929
|
+
* Signs sink events as an offline evidence export: a compact JWS with `typ:
|
|
930
|
+
* vnd.permdock.evidence+jwt` whose `events` claim holds CloudEvents. Live
|
|
931
|
+
* deliveries use Standard Webhooks instead.
|
|
923
932
|
*/
|
|
924
933
|
function signDecisionBatch(events, signer, options) {
|
|
925
934
|
const source = options.source;
|
|
@@ -938,12 +947,14 @@ function memoryDecisionSink(options = {}) {
|
|
|
938
947
|
buffer.push(...events);
|
|
939
948
|
if (buffer.length > capacity) buffer.splice(0, buffer.length - capacity);
|
|
940
949
|
if (options.signer === void 0) return;
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
950
|
+
const { signer } = options;
|
|
951
|
+
const sign = async () => {
|
|
952
|
+
signed.push(await signDecisionBatch(events, signer, compact({
|
|
953
|
+
audience: options.audience,
|
|
954
|
+
source: options.source
|
|
955
|
+
})));
|
|
956
|
+
};
|
|
957
|
+
return sign().catch(() => void 0);
|
|
947
958
|
},
|
|
948
959
|
events() {
|
|
949
960
|
return [...buffer];
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { u as OperationRisk } from "./operations-
|
|
4
|
-
import { t as Automation } from "./automation-
|
|
1
|
+
import { $t as CredentialEvent, Ct as Credential, Qt as AutomationEvent, Xt as AccessEvent, gt as SupportSession, on as MembershipEvent, q as DecisionSink, sn as SinkEvent, ut as TokenSigner } from "./policy-types-CCiDRZBH.js";
|
|
2
|
+
import { M as AppData } from "./permission-types-CAY-GU7e.js";
|
|
3
|
+
import { u as OperationRisk } from "./operations-Ci_rT6Uo.js";
|
|
4
|
+
import { t as Automation } from "./automation-DqEoWHBc.js";
|
|
5
5
|
//#region src/core/sink.d.ts
|
|
6
6
|
/**
|
|
7
7
|
* The closed list of CloudEvents `type` values, `com.permdock.<family>` or
|
|
@@ -40,7 +40,10 @@ declare const CLOUD_EVENT_TYPES: {
|
|
|
40
40
|
readonly deliveryFailed: "com.permdock.delivery.failed";
|
|
41
41
|
};
|
|
42
42
|
type CloudEventType = (typeof CLOUD_EVENT_TYPES)[keyof typeof CLOUD_EVENT_TYPES];
|
|
43
|
-
/**
|
|
43
|
+
/**
|
|
44
|
+
* Types named for a later release; a receiver refuses them until then. None are
|
|
45
|
+
* reserved now.
|
|
46
|
+
*/
|
|
44
47
|
declare const RESERVED_CLOUD_EVENT_TYPES: readonly CloudEventType[];
|
|
45
48
|
/** The CloudEvents JSON format media type for one event (structured mode). */
|
|
46
49
|
declare const CLOUDEVENTS_CONTENT_TYPE = "application/cloudevents+json";
|
|
@@ -51,27 +54,42 @@ declare const CLOUDEVENTS_BATCH_CONTENT_TYPE = "application/cloudevents-batch+js
|
|
|
51
54
|
* which the Cloud then suspends; the `operation-*` codes only report.
|
|
52
55
|
*/
|
|
53
56
|
type CatalogFindingCode = "permission-removed" | "not-hostable" | "grantee-removed" | "approval-tightened" | "operation-risk-raised" | "operation-approval-removed";
|
|
54
|
-
/**
|
|
57
|
+
/**
|
|
58
|
+
* One drift finding: the permission key and, when one broke, the hosted grant
|
|
59
|
+
* id.
|
|
60
|
+
*/
|
|
55
61
|
type CatalogFinding = {
|
|
56
62
|
readonly code: CatalogFindingCode;
|
|
57
63
|
readonly permission: string;
|
|
58
64
|
readonly grant?: string;
|
|
59
65
|
/** The operation name, on the `operation-*` codes. */
|
|
60
66
|
readonly operation?: string;
|
|
61
|
-
/**
|
|
67
|
+
/**
|
|
68
|
+
* `meta.risk` before the publish, on `operation-risk-raised`; an unset risk
|
|
69
|
+
* is `low`.
|
|
70
|
+
*/
|
|
62
71
|
readonly previous?: OperationRisk;
|
|
63
72
|
/** `meta.risk` after the publish, on `operation-risk-raised`. */
|
|
64
73
|
readonly risk?: OperationRisk;
|
|
65
74
|
};
|
|
66
|
-
/**
|
|
75
|
+
/**
|
|
76
|
+
* `data` of a `com.permdock.catalog.*` event: a `permdock cloud push` or a
|
|
77
|
+
* drift against live hosted grants.
|
|
78
|
+
*/
|
|
67
79
|
type CatalogEventData = {
|
|
68
80
|
readonly kind: "publish" | "drift";
|
|
69
|
-
/**
|
|
81
|
+
/**
|
|
82
|
+
* The catalog fingerprint after the publish, or the one drift was measured
|
|
83
|
+
* against.
|
|
84
|
+
*/
|
|
70
85
|
readonly fingerprint: string;
|
|
71
86
|
readonly previous?: string;
|
|
72
87
|
readonly findings?: readonly CatalogFinding[];
|
|
73
88
|
};
|
|
74
|
-
/**
|
|
89
|
+
/**
|
|
90
|
+
* A CloudEvents 1.0 event in the JSON format, with the distributed-tracing
|
|
91
|
+
* extension.
|
|
92
|
+
*/
|
|
75
93
|
type CloudEvent = {
|
|
76
94
|
readonly specversion: "1.0";
|
|
77
95
|
readonly type: CloudEventType;
|
|
@@ -82,9 +100,15 @@ type CloudEvent = {
|
|
|
82
100
|
/** An RFC 3339 instant: the sink event's `at`. */
|
|
83
101
|
readonly time: string;
|
|
84
102
|
readonly datacontenttype: "application/json";
|
|
85
|
-
/**
|
|
103
|
+
/**
|
|
104
|
+
* The published JSON Schema of `data`,
|
|
105
|
+
* `https://permdock.com/schemas/<family>-event-v1.json`.
|
|
106
|
+
*/
|
|
86
107
|
readonly dataschema: string;
|
|
87
|
-
/**
|
|
108
|
+
/**
|
|
109
|
+
* W3C Trace Context `traceparent`, the CloudEvents distributed-tracing
|
|
110
|
+
* extension.
|
|
111
|
+
*/
|
|
88
112
|
readonly traceparent?: string;
|
|
89
113
|
readonly tracestate?: string;
|
|
90
114
|
readonly data: SinkEvent | CatalogEventData;
|
|
@@ -141,9 +165,9 @@ declare function automationEvent(input: {
|
|
|
141
165
|
readonly x?: AppData;
|
|
142
166
|
}): AutomationEvent;
|
|
143
167
|
/**
|
|
144
|
-
* The `access` event of a `SupportSession`: `started` when it begins,
|
|
145
|
-
*
|
|
146
|
-
*
|
|
168
|
+
* The `access` event of a `SupportSession`: `started` when it begins, `ended`
|
|
169
|
+
* when it lapses, `revoked` when it is ended early. `principal` is the staff
|
|
170
|
+
* member, as for a support membership.
|
|
147
171
|
*/
|
|
148
172
|
declare function supportSessionEvent(input: {
|
|
149
173
|
readonly operation: AccessEvent["operation"];
|
|
@@ -155,8 +179,8 @@ declare function supportSessionEvent(input: {
|
|
|
155
179
|
readonly x?: AppData;
|
|
156
180
|
}): AccessEvent;
|
|
157
181
|
/**
|
|
158
|
-
* A `credential` sink event for `credential`. `sample` belongs on `used`
|
|
159
|
-
*
|
|
182
|
+
* A `credential` sink event for `credential`. `sample` belongs on `used` events
|
|
183
|
+
* only and must be in `(0, 1]`.
|
|
160
184
|
*/
|
|
161
185
|
declare function credentialEvent(input: {
|
|
162
186
|
readonly operation: CredentialEvent["operation"];
|
|
@@ -215,9 +239,9 @@ declare function accessEvent(input: {
|
|
|
215
239
|
*/
|
|
216
240
|
declare function toCloudEvent(event: SinkEvent, options: CloudEventOptions): CloudEvent;
|
|
217
241
|
/**
|
|
218
|
-
* Signs sink events as an offline evidence export: a compact JWS with
|
|
219
|
-
*
|
|
220
|
-
*
|
|
242
|
+
* Signs sink events as an offline evidence export: a compact JWS with `typ:
|
|
243
|
+
* vnd.permdock.evidence+jwt` whose `events` claim holds CloudEvents. Live
|
|
244
|
+
* deliveries use Standard Webhooks instead.
|
|
221
245
|
*/
|
|
222
246
|
declare function signDecisionBatch(events: readonly SinkEvent[], signer: TokenSigner, options: SignDecisionBatchOptions): Promise<string>;
|
|
223
247
|
declare function memoryDecisionSink(options?: MemoryDecisionSinkOptions): MemoryDecisionSink;
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
import { t as byCodePoint } from "./compare-
|
|
2
|
-
import { i as readJsonFile } from "./files-
|
|
3
|
-
import {
|
|
4
|
-
import { t as didYouMean } from "./args-
|
|
1
|
+
import { t as byCodePoint } from "./compare-DTfyUunF.js";
|
|
2
|
+
import { i as readJsonFile } from "./files-BSjrtIHw.js";
|
|
3
|
+
import { l as packageRoot } from "./version-DMQ0dnN5.js";
|
|
4
|
+
import { t as didYouMean } from "./args-0FrVs5EH.js";
|
|
5
|
+
import { a as nonEmptyOr } from "./output-tkju6U7R.js";
|
|
5
6
|
import { cpSync, existsSync, lstatSync, mkdirSync, readFileSync, readdirSync, readlinkSync, realpathSync, writeFileSync } from "node:fs";
|
|
6
7
|
import { basename, dirname, join, relative, resolve } from "node:path";
|
|
7
|
-
import {
|
|
8
|
+
import { pathToFileURL } from "node:url";
|
|
9
|
+
import { findPackageJSON } from "node:module";
|
|
8
10
|
//#region src/cli/skills.ts
|
|
9
11
|
const SKILL_NAMES = [
|
|
10
12
|
"permdock",
|
|
@@ -23,7 +25,10 @@ const AGENT_FOLDERS = {
|
|
|
23
25
|
};
|
|
24
26
|
/** The `--for` names `skills install` knows, with the folder each writes. */
|
|
25
27
|
const SKILL_AGENTS = AGENT_FOLDERS;
|
|
26
|
-
/**
|
|
28
|
+
/**
|
|
29
|
+
* Agents whose config folder (`.claude`, `.cursor`, `.agents`) the project
|
|
30
|
+
* already has.
|
|
31
|
+
*/
|
|
27
32
|
function detectedAgents(cwd) {
|
|
28
33
|
return Object.entries(AGENT_FOLDERS).filter(([, folder]) => existsSync(join(cwd, dirname(folder)))).map(([agent]) => agent);
|
|
29
34
|
}
|
|
@@ -79,13 +84,13 @@ function runSkillsInstall(input) {
|
|
|
79
84
|
const links = linked.length === 0 ? "" : `; linked ${linked.join(", ")}`;
|
|
80
85
|
return {
|
|
81
86
|
code: 0,
|
|
82
|
-
output: `installed ${copied.join(", ")
|
|
87
|
+
output: `installed ${nonEmptyOr(copied.join(", "), "no skills")}${links} (permdock@${version})`
|
|
83
88
|
};
|
|
84
89
|
}
|
|
85
90
|
/**
|
|
86
91
|
* Compares the installed skills with the ones this version ships and writes
|
|
87
|
-
* nothing: exit 1 lists every file that is missing or differs. Without
|
|
88
|
-
*
|
|
92
|
+
* nothing: exit 1 lists every file that is missing or differs. Without agents
|
|
93
|
+
* it checks the agent folders the project has, else every folder.
|
|
89
94
|
*/
|
|
90
95
|
function runSkillsCheck(input) {
|
|
91
96
|
const source = resolveSkillsRoot(input.cwd, input.bundled ?? join(packageRoot(), "skills"));
|
|
@@ -183,9 +188,8 @@ function resolveTargets(agents) {
|
|
|
183
188
|
}
|
|
184
189
|
function resolveSkillsRoot(cwd, bundled) {
|
|
185
190
|
try {
|
|
186
|
-
const pkg =
|
|
187
|
-
|
|
188
|
-
if (existsSync(root)) return root;
|
|
191
|
+
const pkg = findPackageJSON("permdock", pathToFileURL(resolve(cwd, "package.json")));
|
|
192
|
+
if (pkg !== void 0 && existsSync(join(dirname(pkg), "skills"))) return join(dirname(pkg), "skills");
|
|
189
193
|
} catch {}
|
|
190
194
|
const local = join(cwd, "node_modules/permdock/skills");
|
|
191
195
|
if (existsSync(local)) return local;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { t as defineLeaf } from "./command-L8EstFNm.js";
|
|
2
|
-
import { t as checkFlag } from "./flags-
|
|
3
|
-
import { r as pick, t as CANCELLED } from "./prompt-
|
|
4
|
-
import { n as detectedAgents, r as runSkills, t as SKILL_AGENTS } from "./skills-
|
|
2
|
+
import { t as checkFlag } from "./flags-DXjoTVbS.js";
|
|
3
|
+
import { r as pick, t as CANCELLED } from "./prompt-BYc6drYW.js";
|
|
4
|
+
import { n as detectedAgents, r as runSkills, t as SKILL_AGENTS } from "./skills-Bjj7BNEQ.js";
|
|
5
5
|
//#region src/cli/commands/skills.ts
|
|
6
6
|
const forFlag = { for: {
|
|
7
7
|
type: "string",
|