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
package/dist/openai/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { T as Policy, j as PolicyVocabulary,
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { u as ApprovalRequest } from "../types-
|
|
5
|
-
import { o as AgentAdapterOptions, t as AgentPermDock } from "../create-
|
|
1
|
+
import { T as Policy, j as PolicyVocabulary, sr as Principal } from "../policy-types-CCiDRZBH.js";
|
|
2
|
+
import { u as Permission } from "../permission-types-CAY-GU7e.js";
|
|
3
|
+
import { a as PermDock } from "../permdock-B6Sf4T_S.js";
|
|
4
|
+
import { u as ApprovalRequest } from "../types-B_tiYvk8.js";
|
|
5
|
+
import { o as AgentAdapterOptions, t as AgentPermDock } from "../create-BSNrVuxh.js";
|
|
6
6
|
//#region src/openai/create.d.ts
|
|
7
7
|
/** The app context passed to `run(agent, input, { context })`. */
|
|
8
8
|
type OpenAiContext = {
|
|
@@ -11,7 +11,10 @@ type OpenAiContext = {
|
|
|
11
11
|
readonly permdockApproval?: string;
|
|
12
12
|
readonly [key: string]: unknown;
|
|
13
13
|
};
|
|
14
|
-
/**
|
|
14
|
+
/**
|
|
15
|
+
* Structural `RunContext` from `@openai/agents`: the app context sits under
|
|
16
|
+
* `context`.
|
|
17
|
+
*/
|
|
15
18
|
type OpenAiRunContext = {
|
|
16
19
|
readonly context?: unknown;
|
|
17
20
|
};
|
|
@@ -31,7 +34,10 @@ type OpenAiInterruption = {
|
|
|
31
34
|
readonly arguments?: unknown;
|
|
32
35
|
};
|
|
33
36
|
};
|
|
34
|
-
/**
|
|
37
|
+
/**
|
|
38
|
+
* Structural `RunState` from `@openai/agents`. Its methods take the SDK's own
|
|
39
|
+
* interruption item, so they stay bivariant in `TItem`.
|
|
40
|
+
*/
|
|
35
41
|
type OpenAiRunState<TItem> = {
|
|
36
42
|
approve(item: TItem, options?: {
|
|
37
43
|
alwaysApprove?: boolean;
|
package/dist/openai/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { t as compact } from "../compact-CAf557ZB.js";
|
|
2
|
-
import {
|
|
3
|
-
import { t as approvalTokenOf } from "../kernel-
|
|
4
|
-
import { t as agentRuntime } from "../create-
|
|
2
|
+
import { l as withApp } from "../permdock-L-_I_3zP.js";
|
|
3
|
+
import { t as approvalTokenOf } from "../kernel-C-fYydV2.js";
|
|
4
|
+
import { t as agentRuntime } from "../create-Cq4Uox0f.js";
|
|
5
5
|
//#region src/openai/create.ts
|
|
6
6
|
function appContext(runContext) {
|
|
7
7
|
const context = runContext?.context;
|
package/dist/openapi/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { T as Policy,
|
|
2
|
-
import {
|
|
3
|
-
import { a as ProblemDetails } from "../errors-
|
|
1
|
+
import { T as Policy, mr as Condition, sr as Principal } from "../policy-types-CCiDRZBH.js";
|
|
2
|
+
import { f as PermissionTree, u as Permission } from "../permission-types-CAY-GU7e.js";
|
|
3
|
+
import { a as ProblemDetails } from "../errors-zi_4T-rx.js";
|
|
4
4
|
import { StandardJSONSchemaV1, StandardSchemaV1 } from "@standard-schema/spec";
|
|
5
5
|
//#region src/openapi/types.d.ts
|
|
6
6
|
type OpenApiTarget = "3.1" | "3.2" | "3.3";
|
|
@@ -54,7 +54,10 @@ type OverlayOperation = {
|
|
|
54
54
|
type OpenApiOverlayOptions = {
|
|
55
55
|
readonly extends?: string;
|
|
56
56
|
readonly version?: OverlayVersion;
|
|
57
|
-
/**
|
|
57
|
+
/**
|
|
58
|
+
* The operations to cover; without them, one per permission whose
|
|
59
|
+
* `operationId` is the permission key.
|
|
60
|
+
*/
|
|
58
61
|
readonly operations?: readonly OverlayOperation[];
|
|
59
62
|
};
|
|
60
63
|
type OpenApiPermDock = {
|
|
@@ -67,7 +70,10 @@ type OpenApiPermDock = {
|
|
|
67
70
|
}) => OpenApiDescribe;
|
|
68
71
|
readonly spec: (permission: Permission | readonly Permission[]) => (operation: Readonly<Record<string, unknown>>) => Record<string, unknown>;
|
|
69
72
|
readonly overlay: (options?: OpenApiOverlayOptions) => Record<string, unknown>;
|
|
70
|
-
/**
|
|
73
|
+
/**
|
|
74
|
+
* One requirement per distinct scope set; without `scopeSets`, one per
|
|
75
|
+
* permission.
|
|
76
|
+
*/
|
|
71
77
|
readonly securityProfileRequirements: (scopeSets?: readonly (readonly string[])[]) => Readonly<Record<string, unknown>> | undefined;
|
|
72
78
|
readonly catalog: () => Record<string, unknown>;
|
|
73
79
|
};
|
|
@@ -94,9 +100,9 @@ export declare function openapiVersion(target: OpenApiTarget): string;
|
|
|
94
100
|
//#endregion
|
|
95
101
|
//#region src/openapi/operations.d.ts
|
|
96
102
|
/**
|
|
97
|
-
* One declared operation: a permission, or a permission with the operation id
|
|
98
|
-
*
|
|
99
|
-
*
|
|
103
|
+
* One declared operation: a permission, or a permission with the operation id a
|
|
104
|
+
* tool name uses and the OAuth scopes that reach it, or only OAuth scopes for a
|
|
105
|
+
* route that checks no permission (`protect(null)`).
|
|
100
106
|
*/
|
|
101
107
|
type OperationEntry = Permission | {
|
|
102
108
|
readonly permission: Permission;
|
|
@@ -114,31 +120,34 @@ type OperationEntry = Permission | {
|
|
|
114
120
|
*/
|
|
115
121
|
type OperationPermissions = {
|
|
116
122
|
/**
|
|
117
|
-
* The permission of a request: the declared operation whose method and
|
|
118
|
-
*
|
|
119
|
-
*
|
|
120
|
-
*
|
|
121
|
-
*
|
|
123
|
+
* The permission of a request: the declared operation whose method and path
|
|
124
|
+
* template match, a literal segment winning over a `{param}`. `undefined` for
|
|
125
|
+
* an undeclared operation, which a gate denies, and for an operation that
|
|
126
|
+
* declares only OAuth scopes. A `HEAD` request matches the `GET` entry of its
|
|
127
|
+
* path when no `HEAD` entry matches.
|
|
122
128
|
*/
|
|
123
|
-
forRequest(method: string, path: string)
|
|
124
|
-
/**
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
129
|
+
forRequest: (method: string, path: string) => Permission | undefined;
|
|
130
|
+
/**
|
|
131
|
+
* The permission of an operation id; pass it as `permissionFor` when tool
|
|
132
|
+
* names are operation ids.
|
|
133
|
+
*/
|
|
134
|
+
forOperation: (id: string) => Permission | undefined;
|
|
135
|
+
oauthScopesForRequest: (method: string, path: string) => readonly string[] | undefined;
|
|
136
|
+
oauthScopesForOperation: (id: string) => readonly string[] | undefined;
|
|
128
137
|
};
|
|
129
138
|
/**
|
|
130
|
-
* Operations as `"METHOD /path/{param}"` keys, the OpenAPI path template, to
|
|
131
|
-
*
|
|
139
|
+
* Operations as `"METHOD /path/{param}"` keys, the OpenAPI path template, to a
|
|
140
|
+
* permission. `base` is a prefix requests carry and the keys do not
|
|
132
141
|
* (`/api/v1`). A key that is not a method and a path throws.
|
|
133
142
|
*/
|
|
134
143
|
export declare function operationPermissions(operations: Readonly<Record<string, OperationEntry>>, options?: {
|
|
135
144
|
readonly base?: string;
|
|
136
145
|
}): OperationPermissions;
|
|
137
146
|
/**
|
|
138
|
-
* The operation permissions an OpenAPI document declares: every operation
|
|
139
|
-
*
|
|
140
|
-
*
|
|
141
|
-
*
|
|
147
|
+
* The operation permissions an OpenAPI document declares: every operation whose
|
|
148
|
+
* `x-permdock-permissions` names exactly one permission of `tree`, keyed by its
|
|
149
|
+
* method, path and `operationId`. An operation naming none, several or an
|
|
150
|
+
* unknown key is left out, so a gate denies it.
|
|
142
151
|
*/
|
|
143
152
|
export declare function operationPermissionsFromOpenApi(document: unknown, tree: PermissionTree, options?: {
|
|
144
153
|
readonly base?: string;
|
|
@@ -146,24 +155,44 @@ export declare function operationPermissionsFromOpenApi(document: unknown, tree:
|
|
|
146
155
|
//#endregion
|
|
147
156
|
//#region src/openapi/problem-details.d.ts
|
|
148
157
|
/**
|
|
149
|
-
* The Problem Details body the adapters send on a denial, as a Standard
|
|
150
|
-
*
|
|
158
|
+
* The Problem Details body the adapters send on a denial, as a Standard Schema
|
|
159
|
+
* with a JSON Schema, for `oc.errors({ FORBIDDEN: { data: problemDetails } })`.
|
|
151
160
|
* Extension members pass through: RFC 9457 lets a problem type add them.
|
|
152
161
|
*/
|
|
153
162
|
export declare const problemDetails: StandardSchemaV1<ProblemDetails> & StandardJSONSchemaV1<ProblemDetails>;
|
|
154
163
|
//#endregion
|
|
155
164
|
//#region src/openapi/security.d.ts
|
|
156
165
|
type SecurityForOptions = {
|
|
157
|
-
/**
|
|
166
|
+
/**
|
|
167
|
+
* The security scheme name; defaults to `oauth2`, the name the adapters'
|
|
168
|
+
* `openapi.securitySchemes()` declares.
|
|
169
|
+
*/
|
|
158
170
|
readonly scheme?: string;
|
|
159
|
-
/**
|
|
171
|
+
/**
|
|
172
|
+
* Any one of the permissions suffices: one requirement per scope instead of
|
|
173
|
+
* one with every scope.
|
|
174
|
+
*/
|
|
160
175
|
readonly anyOf?: boolean;
|
|
176
|
+
readonly security?: true;
|
|
177
|
+
};
|
|
178
|
+
/**
|
|
179
|
+
* `security: false` emits only `x-permdock-permissions`, for an API whose
|
|
180
|
+
* `security` is set elsewhere, such as OIDC-only bearer auth.
|
|
181
|
+
*/
|
|
182
|
+
type SecurityExtensionOptions = Omit<SecurityForOptions, "security"> & {
|
|
183
|
+
readonly security: false;
|
|
184
|
+
};
|
|
185
|
+
type SecurityExtensionFor = {
|
|
186
|
+
readonly "x-permdock-permissions": readonly string[];
|
|
161
187
|
};
|
|
162
188
|
type SecurityFor = {
|
|
163
189
|
readonly security: readonly OpenApiSecurityRequirement[];
|
|
164
190
|
readonly "x-permdock-permissions": readonly string[];
|
|
165
191
|
};
|
|
166
|
-
/**
|
|
192
|
+
/**
|
|
193
|
+
* The `x-permdock-permissions` value: the permission keys an operation
|
|
194
|
+
* enforces.
|
|
195
|
+
*/
|
|
167
196
|
export declare function permissionsExtension(permissions: Permission | readonly Permission[]): readonly string[];
|
|
168
197
|
/**
|
|
169
198
|
* An operation's `security` and `x-permdock-permissions`, from permission
|
|
@@ -171,6 +200,8 @@ export declare function permissionsExtension(permissions: Permission | readonly
|
|
|
171
200
|
* Unlike `permdock openapi emit`, it never drops `security` for a public
|
|
172
201
|
* permission: that needs the policy.
|
|
173
202
|
*/
|
|
203
|
+
export declare function securityFor(permission: Permission | readonly Permission[], options: SecurityExtensionOptions): SecurityExtensionFor;
|
|
174
204
|
export declare function securityFor(permission: Permission | readonly Permission[], options?: SecurityForOptions): SecurityFor;
|
|
205
|
+
export declare function securityFor(permission: Permission | readonly Permission[], options?: SecurityForOptions | SecurityExtensionOptions): SecurityFor | SecurityExtensionFor;
|
|
175
206
|
//#endregion
|
|
176
|
-
export type { OpenApiDescribe, OpenApiDocsHints, OpenApiFactory, OpenApiOverlayOptions, OpenApiPermDock, OpenApiPermDockOptions, OpenApiSchemeOptions, OpenApiSecurityRequirement, OpenApiTarget, OperationEntry, OperationPermissions, OverlayOperation, OverlayVersion, SchemeType, SecurityFor, SecurityForOptions, SecurityProfileName };
|
|
207
|
+
export type { OpenApiDescribe, OpenApiDocsHints, OpenApiFactory, OpenApiOverlayOptions, OpenApiPermDock, OpenApiPermDockOptions, OpenApiSchemeOptions, OpenApiSecurityRequirement, OpenApiTarget, OperationEntry, OperationPermissions, OverlayOperation, OverlayVersion, SchemeType, SecurityExtensionFor, SecurityExtensionOptions, SecurityFor, SecurityForOptions, SecurityProfileName };
|
package/dist/openapi/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { n as GNAP_RESERVED, r as PROFILE_NAMES, t as DRAFT_PINS } from "../pins-
|
|
2
|
-
import { a as operationPermissionsFromOpenApi, c as openapiVersion, i as operationPermissions, l as securitySchemesOf, n as securityFor, o as createPermDock, r as problemDetails, s as catalogOf, t as permissionsExtension } from "../openapi-
|
|
1
|
+
import { n as GNAP_RESERVED, r as PROFILE_NAMES, t as DRAFT_PINS } from "../pins-nqarl3oE.js";
|
|
2
|
+
import { a as operationPermissionsFromOpenApi, c as openapiVersion, i as operationPermissions, l as securitySchemesOf, n as securityFor, o as createPermDock, r as problemDetails, s as catalogOf, t as permissionsExtension } from "../openapi-BOsx0xn9.js";
|
|
3
3
|
export { DRAFT_PINS, GNAP_RESERVED, PROFILE_NAMES, catalogOf, createPermDock, openapiVersion, operationPermissions, operationPermissionsFromOpenApi, permissionsExtension, problemDetails, securityFor, securitySchemesOf };
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { r as isRecord, t as compact } from "./compact-CAf557ZB.js";
|
|
2
|
-
import { c as listPermissions, n as findPermission, o as isPermission } from "./permission-registry-
|
|
3
|
-
import { r as sha256Digest } from "./sha256-
|
|
2
|
+
import { c as listPermissions, n as findPermission, o as isPermission } from "./permission-registry-B8tYxPIt.js";
|
|
3
|
+
import { r as sha256Digest } from "./sha256-C-4WXKIu.js";
|
|
4
4
|
import { t as requiresApproval } from "./approval-required-TzNB9oQA.js";
|
|
5
|
-
import { i as PROFILE_PARAMETERS, n as GNAP_RESERVED, r as PROFILE_NAMES, t as DRAFT_PINS } from "./pins-
|
|
5
|
+
import { i as PROFILE_PARAMETERS, n as GNAP_RESERVED, r as PROFILE_NAMES, t as DRAFT_PINS } from "./pins-nqarl3oE.js";
|
|
6
6
|
//#region src/openapi/emit.ts
|
|
7
7
|
function assertScheme(options) {
|
|
8
8
|
if (options.scheme.type === "gnap") throw new TypeError(GNAP_RESERVED);
|
|
@@ -17,7 +17,10 @@ function grantsOf(policy, permissions) {
|
|
|
17
17
|
function grantsAnyone(grant) {
|
|
18
18
|
return (Array.isArray(grant.to) ? grant.to : [grant.to]).some((grantee) => grantee.kind === "anyone");
|
|
19
19
|
}
|
|
20
|
-
/**
|
|
20
|
+
/**
|
|
21
|
+
* Every subject is granted it: an unconditional allow to `anyone()` and no
|
|
22
|
+
* deny.
|
|
23
|
+
*/
|
|
21
24
|
function isPublic(policy, permission) {
|
|
22
25
|
const grants = grantsOf(policy, [permission]);
|
|
23
26
|
return grants.every((grant) => grant.effect === "allow") && grants.some((grant) => grantsAnyone(grant) && grant.where === void 0 && grant.check === void 0 && grant.approval === void 0 && grant.closure === void 0 && grant.limit === void 0 && grant.purpose === void 0 && grant.viaOnly === void 0);
|
|
@@ -137,14 +140,17 @@ const FLOWS = [
|
|
|
137
140
|
"clientCredentials",
|
|
138
141
|
"deviceAuthorization"
|
|
139
142
|
];
|
|
140
|
-
/**
|
|
143
|
+
/**
|
|
144
|
+
* The client authentication methods FAPI 2.0 section 5.3.2.1 allows:
|
|
145
|
+
* sender-constrained, no shared secret.
|
|
146
|
+
*/
|
|
141
147
|
const FAPI2_AUTH_METHODS = ["private_key_jwt", "tls_client_auth"];
|
|
142
148
|
function pascal(value) {
|
|
143
149
|
return value.split(/[^A-Za-z0-9]+/u).filter((part) => part.length > 0).map((part) => `${part.charAt(0).toUpperCase()}${part.slice(1)}`).join("");
|
|
144
150
|
}
|
|
145
151
|
/**
|
|
146
|
-
* One Security Profile Requirement per distinct scope set: `scopeSets` from
|
|
147
|
-
*
|
|
152
|
+
* One Security Profile Requirement per distinct scope set: `scopeSets` from the
|
|
153
|
+
* operations, else one per permission.
|
|
148
154
|
*/
|
|
149
155
|
function securityProfileRequirementsOf(policy, options, scopeSets) {
|
|
150
156
|
if ((options.target ?? "3.2") !== "3.3" || options.securityProfile === void 0) return;
|
|
@@ -188,7 +194,10 @@ function jsonPathString(value) {
|
|
|
188
194
|
function operationTarget(operationId) {
|
|
189
195
|
return `$.paths.*[?@.operationId == ${jsonPathString(operationId)}]`;
|
|
190
196
|
}
|
|
191
|
-
/**
|
|
197
|
+
/**
|
|
198
|
+
* The `sha-256:` digest of the sorted permission keys and scopes, so the same
|
|
199
|
+
* catalog gives the same Overlay.
|
|
200
|
+
*/
|
|
192
201
|
function fingerprint(policy) {
|
|
193
202
|
const lines = listPermissions(policy.permissions).map((leaf) => `${leaf.key} ${leaf.scope}`).toSorted();
|
|
194
203
|
return sha256Digest(lines.join("\n"));
|
|
@@ -318,7 +327,10 @@ function segmentsOf(path) {
|
|
|
318
327
|
function isParam(segment) {
|
|
319
328
|
return segment.startsWith("{") && segment.endsWith("}");
|
|
320
329
|
}
|
|
321
|
-
/**
|
|
330
|
+
/**
|
|
331
|
+
* The number of literal segments that match, or -1 when the template does not
|
|
332
|
+
* match.
|
|
333
|
+
*/
|
|
322
334
|
function score(route, segments) {
|
|
323
335
|
if (route.segments.length !== segments.length) return -1;
|
|
324
336
|
let literal = 0;
|
|
@@ -339,8 +351,8 @@ function scopesOf(key, entry) {
|
|
|
339
351
|
return Object.freeze([...entry.oauthScopes]);
|
|
340
352
|
}
|
|
341
353
|
/**
|
|
342
|
-
* Operations as `"METHOD /path/{param}"` keys, the OpenAPI path template, to
|
|
343
|
-
*
|
|
354
|
+
* Operations as `"METHOD /path/{param}"` keys, the OpenAPI path template, to a
|
|
355
|
+
* permission. `base` is a prefix requests carry and the keys do not
|
|
344
356
|
* (`/api/v1`). A key that is not a method and a path throws.
|
|
345
357
|
*/
|
|
346
358
|
function operationPermissions(operations, options = {}) {
|
|
@@ -400,10 +412,10 @@ function operationPermissions(operations, options = {}) {
|
|
|
400
412
|
};
|
|
401
413
|
}
|
|
402
414
|
/**
|
|
403
|
-
* The operation permissions an OpenAPI document declares: every operation
|
|
404
|
-
*
|
|
405
|
-
*
|
|
406
|
-
*
|
|
415
|
+
* The operation permissions an OpenAPI document declares: every operation whose
|
|
416
|
+
* `x-permdock-permissions` names exactly one permission of `tree`, keyed by its
|
|
417
|
+
* method, path and `operationId`. An operation naming none, several or an
|
|
418
|
+
* unknown key is left out, so a gate denies it.
|
|
407
419
|
*/
|
|
408
420
|
function operationPermissionsFromOpenApi(document, tree, options = {}) {
|
|
409
421
|
const operations = {};
|
|
@@ -491,8 +503,8 @@ function jsonSchema(options) {
|
|
|
491
503
|
return structuredClone(JSON_SCHEMA);
|
|
492
504
|
}
|
|
493
505
|
/**
|
|
494
|
-
* The Problem Details body the adapters send on a denial, as a Standard
|
|
495
|
-
*
|
|
506
|
+
* The Problem Details body the adapters send on a denial, as a Standard Schema
|
|
507
|
+
* with a JSON Schema, for `oc.errors({ FORBIDDEN: { data: problemDetails } })`.
|
|
496
508
|
* Extension members pass through: RFC 9457 lets a problem type add them.
|
|
497
509
|
*/
|
|
498
510
|
const problemDetails = Object.freeze({ "~standard": Object.freeze({
|
|
@@ -512,18 +524,16 @@ function isList(permission) {
|
|
|
512
524
|
function listOf(permission) {
|
|
513
525
|
return isList(permission) ? permission : [permission];
|
|
514
526
|
}
|
|
515
|
-
/**
|
|
527
|
+
/**
|
|
528
|
+
* The `x-permdock-permissions` value: the permission keys an operation
|
|
529
|
+
* enforces.
|
|
530
|
+
*/
|
|
516
531
|
function permissionsExtension(permissions) {
|
|
517
532
|
return Object.freeze(listOf(permissions).map((leaf) => leaf.key));
|
|
518
533
|
}
|
|
519
|
-
/**
|
|
520
|
-
* An operation's `security` and `x-permdock-permissions`, from permission
|
|
521
|
-
* references alone. Needs no policy, so a contract package can import it.
|
|
522
|
-
* Unlike `permdock openapi emit`, it never drops `security` for a public
|
|
523
|
-
* permission: that needs the policy.
|
|
524
|
-
*/
|
|
525
534
|
function securityFor(permission, options = {}) {
|
|
526
535
|
const leaves = listOf(permission);
|
|
536
|
+
if (options.security === false) return Object.freeze({ "x-permdock-permissions": permissionsExtension(leaves) });
|
|
527
537
|
const scheme = options.scheme ?? "oauth2";
|
|
528
538
|
const security = options.anyOf === true && leaves.length > 0 ? leaves.map((leaf) => ({ [scheme]: [leaf.scope] })) : [{ [scheme]: leaves.map((leaf) => leaf.scope) }];
|
|
529
539
|
return Object.freeze({
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { c as missingInput } from "./errors-
|
|
1
|
+
import { c as missingInput } from "./errors-Vpu6rKHl.js";
|
|
2
2
|
import { t as defineLeaf } from "./command-L8EstFNm.js";
|
|
3
|
-
import { c as given, d as policyFlag, f as validatorFlag, l as outFlag, o as fileOut, t as checkFlag } from "./flags-
|
|
3
|
+
import { c as given, d as policyFlag, f as validatorFlag, l as outFlag, o as fileOut, t as checkFlag } from "./flags-DXjoTVbS.js";
|
|
4
4
|
//#region src/cli/commands/openapi.ts
|
|
5
5
|
const docFlag = { doc: {
|
|
6
6
|
type: "string",
|
|
@@ -80,7 +80,7 @@ const emit = defineLeaf({
|
|
|
80
80
|
}
|
|
81
81
|
},
|
|
82
82
|
async run(ctx, { flags }) {
|
|
83
|
-
return (await import("./openapi-
|
|
83
|
+
return (await import("./openapi-VeHHU2l9.js")).runOpenapi({
|
|
84
84
|
cwd: ctx.cwd,
|
|
85
85
|
config: ctx.config,
|
|
86
86
|
rest: ["emit"],
|
|
@@ -122,8 +122,7 @@ const importDocument = defineLeaf({
|
|
|
122
122
|
async run(ctx, { flags }) {
|
|
123
123
|
const doc = given(flags.doc);
|
|
124
124
|
if (doc === void 0) throw missingInput("openapi import", ["--doc"], "the OpenAPI document to import");
|
|
125
|
-
|
|
126
|
-
return runOpenapiImport({
|
|
125
|
+
return (await import("./import-_YqhhwvX.js")).runOpenapiImport({
|
|
127
126
|
cwd: ctx.cwd,
|
|
128
127
|
doc,
|
|
129
128
|
out: fileOut("openapi import", flags.out),
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { r as isRecord } from "./compact-CAf557ZB.js";
|
|
2
|
-
import { a as getResource, n as findPermission } from "./permission-registry-
|
|
3
|
-
import {
|
|
4
|
-
import { i as configError } from "./errors-
|
|
5
|
-
import { i as readJsonFile, s as writeFileEnsuringDir } from "./files-
|
|
6
|
-
import { a as loadModule, n as asPolicy, s as pickNamed, t as asPermissionTree } from "./load-
|
|
7
|
-
import { t as shortDiff } from "./text-diff-
|
|
8
|
-
import { c as openapiVersion, o as createPermDock } from "./openapi-
|
|
9
|
-
import { i as fileDrift } from "./output-files-
|
|
10
|
-
import { n as validateOverlay, t as validateOpenapi } from "./schema-
|
|
2
|
+
import { a as getResource, n as findPermission } from "./permission-registry-B8tYxPIt.js";
|
|
3
|
+
import { r as definePolicy } from "./policy-CLQ8__GF.js";
|
|
4
|
+
import { i as configError } from "./errors-Vpu6rKHl.js";
|
|
5
|
+
import { i as readJsonFile, s as writeFileEnsuringDir } from "./files-BSjrtIHw.js";
|
|
6
|
+
import { a as loadModule, n as asPolicy, s as pickNamed, t as asPermissionTree } from "./load-DjSU5KXO.js";
|
|
7
|
+
import { t as shortDiff } from "./text-diff-BtfSmdUo.js";
|
|
8
|
+
import { c as openapiVersion, o as createPermDock } from "./openapi-BOsx0xn9.js";
|
|
9
|
+
import { i as fileDrift } from "./output-files-BIQ_9pIs.js";
|
|
10
|
+
import { n as validateOverlay, t as validateOpenapi } from "./schema-Dst9I9Gs.js";
|
|
11
11
|
import { existsSync } from "node:fs";
|
|
12
12
|
import { resolve } from "node:path";
|
|
13
13
|
//#region src/cli/openapi/openapi.ts
|
|
@@ -17,7 +17,10 @@ function mergeRecord(base, extra) {
|
|
|
17
17
|
for (const [key, value] of Object.entries(extra)) result[key] = value;
|
|
18
18
|
return result;
|
|
19
19
|
}
|
|
20
|
-
/**
|
|
20
|
+
/**
|
|
21
|
+
* Keeps what the document already says about a scheme (flow URLs, other flows,
|
|
22
|
+
* description); PermDock owns the scopes.
|
|
23
|
+
*/
|
|
21
24
|
function mergeSchemes(existing, emitted) {
|
|
22
25
|
const result = {};
|
|
23
26
|
for (const [name, scheme] of Object.entries(emitted)) {
|
|
@@ -68,7 +71,10 @@ function leavesOf(policy, keys) {
|
|
|
68
71
|
return leaf;
|
|
69
72
|
});
|
|
70
73
|
}
|
|
71
|
-
/**
|
|
74
|
+
/**
|
|
75
|
+
* Operations carrying `x-permdock-permissions`, joined by `operationId`; those
|
|
76
|
+
* without one are findings.
|
|
77
|
+
*/
|
|
72
78
|
function overlayOperations(document, policy) {
|
|
73
79
|
const operations = [];
|
|
74
80
|
const unnamed = [];
|
|
@@ -94,7 +100,10 @@ function overlayOperations(document, policy) {
|
|
|
94
100
|
secured
|
|
95
101
|
};
|
|
96
102
|
}
|
|
97
|
-
/**
|
|
103
|
+
/**
|
|
104
|
+
* `instance` when any listed permission acts on one row; the id is the last
|
|
105
|
+
* path template parameter.
|
|
106
|
+
*/
|
|
98
107
|
function arityOf(policy, leaves, path) {
|
|
99
108
|
if (!leaves.some((leaf) => getResource(policy.permissions, leaf.resource)?.instanceActions.has(leaf.action) === true)) return { kind: "collection" };
|
|
100
109
|
const parameter = [...path.matchAll(/\{([^}]+)\}/gu)].at(-1)?.[1];
|
|
@@ -213,11 +222,11 @@ async function runOpenapi(input) {
|
|
|
213
222
|
code: 1,
|
|
214
223
|
output: `openapi drift: the source already sets security the Overlay replaces on ${covered.secured.join(", ")}`
|
|
215
224
|
};
|
|
216
|
-
const result = covered
|
|
225
|
+
const result = covered === void 0 ? applyDocument(parsed, policy, openapi, input.arity === true, input.target) : openapi.overlay({
|
|
217
226
|
extends: input.doc,
|
|
218
227
|
version: input.overlay,
|
|
219
228
|
operations: covered.operations
|
|
220
|
-
})
|
|
229
|
+
});
|
|
221
230
|
const conformance = outputConformance(parsed, result, input.format, input.overlay);
|
|
222
231
|
if (conformance !== void 0) return {
|
|
223
232
|
code: 1,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { n as OPERATION_RISKS } from "./permissions-
|
|
1
|
+
import { n as OPERATION_RISKS } from "./permissions-CVXmRILq.js";
|
|
2
2
|
//#region src/catalog/operation-findings.ts
|
|
3
3
|
function rank(risk) {
|
|
4
4
|
return OPERATION_RISKS.indexOf(risk ?? "low");
|
|
@@ -8,8 +8,8 @@ function requiresApproval(catalog, permission) {
|
|
|
8
8
|
}
|
|
9
9
|
/**
|
|
10
10
|
* Operations, matched by name, whose `meta.risk` rose or whose permission
|
|
11
|
-
* stopped requiring approval between two catalogs. A new or removed
|
|
12
|
-
*
|
|
11
|
+
* stopped requiring approval between two catalogs. A new or removed operation
|
|
12
|
+
* is not a finding.
|
|
13
13
|
*/
|
|
14
14
|
function operationFindings(previous, next) {
|
|
15
15
|
const before = new Map((previous.operations ?? []).map((operation) => [operation.name, operation]));
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { f as PermissionTree, u as Permission } from "./permission-types-CAY-GU7e.js";
|
|
2
2
|
//#region src/core/operation-risks.d.ts
|
|
3
3
|
type OperationRisk = "low" | "medium" | "high" | "critical";
|
|
4
4
|
/** Every `meta.risk` level, lowest first. */
|
|
@@ -7,7 +7,10 @@ declare function isOperationRisk(value: unknown): value is OperationRisk;
|
|
|
7
7
|
//#endregion
|
|
8
8
|
//#region src/core/operations.d.ts
|
|
9
9
|
type OperationEffect = "read" | "write" | "delete" | "send" | "spend" | "external";
|
|
10
|
-
/**
|
|
10
|
+
/**
|
|
11
|
+
* Plain JSON a host reads to label, confirm or gate an operation; PermDock
|
|
12
|
+
* never decides on it.
|
|
13
|
+
*/
|
|
11
14
|
type OperationMeta = {
|
|
12
15
|
readonly risk?: OperationRisk;
|
|
13
16
|
/** What running the operation does, each effect at most once. */
|
|
@@ -15,9 +18,9 @@ type OperationMeta = {
|
|
|
15
18
|
readonly title?: string;
|
|
16
19
|
};
|
|
17
20
|
/**
|
|
18
|
-
* Loads the row the check runs on from the operation's input, the binding
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
+
* Loads the row the check runs on from the operation's input, the binding every
|
|
22
|
+
* surface shares. The row is validated against the permission's resource schema
|
|
23
|
+
* like any request-derived data (invariant 9).
|
|
21
24
|
*/
|
|
22
25
|
type OperationData<TInput = never> = {
|
|
23
26
|
load(input: TInput): unknown;
|
|
@@ -32,8 +35,8 @@ type OperationDefinition = {
|
|
|
32
35
|
};
|
|
33
36
|
/**
|
|
34
37
|
* A permission-bound action that agent tools, workflow nodes, MCP operations,
|
|
35
|
-
* HTTP routes and chat commands read by name. `TInput` is the parameter type
|
|
36
|
-
*
|
|
38
|
+
* HTTP routes and chat commands read by name. `TInput` is the parameter type of
|
|
39
|
+
* `data`; an operation without `data` takes `undefined`.
|
|
37
40
|
*/
|
|
38
41
|
type Operation<TInput = unknown, TName extends string = string, TPermission extends Permission = Permission> = {
|
|
39
42
|
readonly name: TName;
|
package/dist/orpc/index.d.ts
CHANGED
|
@@ -1,11 +1,44 @@
|
|
|
1
|
-
import { T as Policy, j as PolicyVocabulary,
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import { t as
|
|
8
|
-
import {
|
|
1
|
+
import { T as Policy, j as PolicyVocabulary, sr as Principal } from "../policy-types-CCiDRZBH.js";
|
|
2
|
+
import { u as Permission } from "../permission-types-CAY-GU7e.js";
|
|
3
|
+
import { a as OperationInput, t as Operation } from "../operations-Ci_rT6Uo.js";
|
|
4
|
+
import { a as PermDock } from "../permdock-B6Sf4T_S.js";
|
|
5
|
+
import { n as RevocationFeed } from "../revocations-BaUXHM1N.js";
|
|
6
|
+
import { D as ConnectionOptions, T as Connection, i as OpenApiHooks } from "../server-types-CIlpSA2G.js";
|
|
7
|
+
import { t as ServerAdapterOptions } from "../bind-Cp2hBHzP.js";
|
|
8
|
+
import { t as StreamProtectOptions } from "../stream-ltuLdtTG.js";
|
|
9
|
+
import { AnySchema, MetaPlugin, Middleware, Procedure, Schema } from "@orpc/server";
|
|
10
|
+
import { StandardSchemaV1 } from "@standard-schema/spec";
|
|
11
|
+
//#region src/orpc/operations.d.ts
|
|
12
|
+
type OperationProcedureContext<TCtx extends object, V extends PolicyVocabulary = PolicyVocabulary> = TCtx & {
|
|
13
|
+
readonly permdock: PermDock<V>;
|
|
14
|
+
/** The row the operation's `data` loader read; `undefined` without one. */
|
|
15
|
+
readonly permdockData?: unknown;
|
|
16
|
+
};
|
|
17
|
+
type OperationRoute<TCtx extends object, TInput, V extends PolicyVocabulary = PolicyVocabulary> = {
|
|
18
|
+
readonly handler: (opts: {
|
|
19
|
+
readonly input: TInput;
|
|
20
|
+
readonly context: OperationProcedureContext<TCtx, V>;
|
|
21
|
+
}) => unknown;
|
|
22
|
+
} & ([TInput] extends [undefined] ? {
|
|
23
|
+
readonly input?: StandardSchemaV1<unknown, TInput>;
|
|
24
|
+
} : {
|
|
25
|
+
/** Required: the operation's `data` loader never sees raw input. */
|
|
26
|
+
readonly input: StandardSchemaV1<unknown, TInput>;
|
|
27
|
+
});
|
|
28
|
+
type OperationRoutes<TOperations extends Readonly<Record<string, Operation>>, TCtx extends object, V extends PolicyVocabulary = PolicyVocabulary> = { readonly [TName in keyof TOperations]: OperationRoute<TCtx, OperationInput<TOperations[TName]>, V>; };
|
|
29
|
+
type OperationsRouterOptions = {
|
|
30
|
+
/** oRPC meta plugins per operation, such as `openapi()` from `@orpc/openapi`. */
|
|
31
|
+
readonly meta?: (operation: Operation) => readonly MetaPlugin<AnySchema, AnySchema, Record<never, never>>[];
|
|
32
|
+
};
|
|
33
|
+
type InputSchemaOf<TRoute> = TRoute extends {
|
|
34
|
+
readonly input: infer TSchema extends AnySchema;
|
|
35
|
+
} ? TSchema : Schema<undefined>;
|
|
36
|
+
type OutputOf<TRoute> = TRoute extends {
|
|
37
|
+
readonly handler: (...args: never[]) => infer TResult;
|
|
38
|
+
} ? Awaited<TResult> : never;
|
|
39
|
+
type OperationsRouter<TCtx extends object, TRoutes> = { readonly [TName in keyof TRoutes]: Procedure<TCtx, any, InputSchemaOf<TRoutes[TName]>, Schema<OutputOf<TRoutes[TName]>>, Record<never, never>>; };
|
|
40
|
+
type OperationsRouterOf<TCtx extends object, V extends PolicyVocabulary> = <TOperations extends Readonly<Record<string, Operation>>, const TRoutes extends OperationRoutes<TOperations, TCtx, V>>(operations: TOperations, routes: TRoutes, options?: OperationsRouterOptions) => OperationsRouter<TCtx, TRoutes>;
|
|
41
|
+
//#endregion
|
|
9
42
|
//#region src/orpc/create.d.ts
|
|
10
43
|
type OrpcMiddlewareOpts<TCtx extends object = object, TInput = unknown> = {
|
|
11
44
|
readonly context: TCtx;
|
|
@@ -20,7 +53,10 @@ type OrpcMiddleware<TCtx extends object = object, TInput = unknown, V extends Po
|
|
|
20
53
|
readonly permdockData?: unknown;
|
|
21
54
|
}, TInput, any, Record<never, never>>;
|
|
22
55
|
type OrpcPermDockOptions<TCtx extends object = object, TUser = unknown> = ServerAdapterOptions<OrpcMiddlewareOpts<TCtx>, TUser> & {
|
|
23
|
-
/**
|
|
56
|
+
/**
|
|
57
|
+
* The Web `Request` behind a context; defaults to `context.request` or
|
|
58
|
+
* `context.req`.
|
|
59
|
+
*/
|
|
24
60
|
readonly request?: (context: TCtx) => Request | null | undefined;
|
|
25
61
|
/** Ends or revalidates open event iterators. */
|
|
26
62
|
readonly revocations?: RevocationFeed;
|
|
@@ -31,10 +67,22 @@ type OrpcOpenApiHooks<TCtx extends object = object, V extends PolicyVocabulary =
|
|
|
31
67
|
readonly security: readonly Record<string, readonly string[]>[];
|
|
32
68
|
readonly "x-permdock-permissions": readonly string[];
|
|
33
69
|
};
|
|
70
|
+
/**
|
|
71
|
+
* `security` as the merge function oRPC 2's `openapi({ spec })` takes, with
|
|
72
|
+
* mutable arrays so it type-checks against oRPC's `OperationObject`.
|
|
73
|
+
*/
|
|
74
|
+
readonly spec: (permission: Permission) => <TSpec extends object>(current: TSpec) => TSpec & OrpcSecuritySpec;
|
|
34
75
|
readonly securitySchemes: OpenApiHooks["securitySchemes"];
|
|
35
76
|
};
|
|
77
|
+
type OrpcSecuritySpec = {
|
|
78
|
+
security: Record<string, string[]>[];
|
|
79
|
+
"x-permdock-permissions": string[];
|
|
80
|
+
};
|
|
36
81
|
type OrpcPermDock<TCtx extends object = object, V extends PolicyVocabulary = PolicyVocabulary> = {
|
|
37
|
-
/**
|
|
82
|
+
/**
|
|
83
|
+
* The `PermDock` for one procedure call, for code the middleware does not run
|
|
84
|
+
* before.
|
|
85
|
+
*/
|
|
38
86
|
readonly getPermDock: (opts: OrpcMiddlewareOpts<TCtx>) => Promise<PermDock<V>>;
|
|
39
87
|
readonly middleware: () => OrpcMiddleware<TCtx, unknown, V>;
|
|
40
88
|
readonly protect: (permission: Permission | null, data?: (opts: OrpcMiddlewareOpts<TCtx>) => unknown, protectOptions?: StreamProtectOptions) => OrpcMiddleware<TCtx, unknown, V>;
|
|
@@ -42,13 +90,19 @@ type OrpcPermDock<TCtx extends object = object, V extends PolicyVocabulary = Pol
|
|
|
42
90
|
readonly connection: (opts: OrpcMiddlewareOpts<TCtx>, connectionOptions?: ConnectionOptions) => Promise<Connection>;
|
|
43
91
|
readonly permdockHandler: () => (request: Request) => Promise<Response>;
|
|
44
92
|
readonly openapi: OrpcOpenApiHooks<TCtx, V>;
|
|
93
|
+
/**
|
|
94
|
+
* One procedure per `defineOperations` entry, guarded by the operation's
|
|
95
|
+
* permission and `data` loader; `meta` attaches oRPC meta such as
|
|
96
|
+
* `openapi()`.
|
|
97
|
+
*/
|
|
98
|
+
readonly operationsRouter: OperationsRouterOf<TCtx, V>;
|
|
45
99
|
};
|
|
46
100
|
/**
|
|
47
|
-
* The permission the procedure's first `protect` decides, or `undefined`
|
|
48
|
-
*
|
|
49
|
-
*
|
|
101
|
+
* The permission the procedure's first `protect` decides, or `undefined` when
|
|
102
|
+
* no `protect` is attached. Reads the procedure definition only and never
|
|
103
|
+
* decides.
|
|
50
104
|
*/
|
|
51
105
|
export declare function permissionOf(procedure: unknown): Permission | undefined;
|
|
52
106
|
export declare function createPermDock<TCtx extends object = object, TUser = unknown, TPrincipal extends Principal = Principal, V extends PolicyVocabulary = PolicyVocabulary>(policy: Policy<TUser, TPrincipal, V>, options: OrpcPermDockOptions<TCtx, TUser>): OrpcPermDock<TCtx, V>;
|
|
53
107
|
//#endregion
|
|
54
|
-
export type { OrpcMiddleware, OrpcMiddlewareOpts, OrpcOpenApiHooks, OrpcPermDock, OrpcPermDockOptions };
|
|
108
|
+
export type { OperationProcedureContext, OperationRoute, OperationRoutes, OperationsRouter, OperationsRouterOf, OperationsRouterOptions, OrpcMiddleware, OrpcMiddlewareOpts, OrpcOpenApiHooks, OrpcPermDock, OrpcPermDockOptions, OrpcSecuritySpec };
|