permdock 0.1.0 → 0.2.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 +106 -47
- package/dist/a2a/index.d.ts +7 -16
- package/dist/a2a/index.js +59 -98
- package/dist/adapter-context-mlWsVGGg.js +23 -0
- package/dist/ai-sdk/index.d.ts +37 -16
- package/dist/ai-sdk/index.js +30 -13
- package/dist/approvals/index.d.ts +3 -3
- package/dist/approvals/index.js +5 -4
- package/dist/{approvals-DaxY-Bdg.js → approvals-DbYAuNkG.js} +17 -11
- package/dist/approvers-DT4AVyIg.js +52 -0
- package/dist/{arazzo-CTeVuXr5.js → arazzo-BAgw9ap6.js} +2 -2
- package/dist/{arazzo-aoTkqYsJ.js → arazzo-cmvX2jDe.js} +2 -2
- package/dist/authzen/index.d.ts +4 -13
- package/dist/authzen/index.js +16 -50
- package/dist/better-auth/index.d.ts +20 -3
- package/dist/better-auth/index.js +27 -7
- package/dist/better-supabase/index.d.ts +206 -0
- package/dist/better-supabase/index.js +620 -0
- package/dist/bind-CVy3Espv.d.ts +25 -0
- package/dist/bind-VnYn2HKq.js +97 -0
- package/dist/boundary-BM8a_P6E.js +13 -0
- package/dist/boundary-BmHxVH1J.d.ts +15 -0
- package/dist/canonical-json-DemiK4Vp.js +26 -0
- package/dist/{capability-B68OFnZx.js → capability-4qPdO9gk.js} +7 -5
- package/dist/{capability-BDG_nkxt.d.ts → capability-Dq43tT1u.d.ts} +2 -2
- package/dist/catalog/index.d.ts +1 -1
- package/dist/catalog/index.js +1 -1
- package/dist/catalog-BjZSovXQ.js +2 -0
- package/dist/{catalog-doc-BSo_Q_-6.js → catalog-doc-Dsc9y7sd.js} +23 -12
- package/dist/{catalog-B0E6bggc.js → catalog-h2tlKFkq.js} +2 -2
- package/dist/{catalog-H-vFGwWK.js → catalog-z8q6bi_r.js} +4 -4
- package/dist/claude-agent/index.d.ts +5 -14
- package/dist/claude-agent/index.js +4 -10
- package/dist/clerk/index.d.ts +12 -3
- package/dist/clerk/index.js +26 -5
- package/dist/cli/bin.js +1 -1
- package/dist/cli/index.d.ts +3 -3
- package/dist/cli/index.js +2 -2
- package/dist/clients-C7zLFuWT.d.ts +12 -0
- package/dist/clients-DjU5ABMy.js +23 -0
- package/dist/cloud/index.d.ts +4 -5
- package/dist/cloud/index.js +20 -6
- package/dist/{cloud-BNQTrmrr.js → cloud-BGhHS-lY.js} +2 -2
- package/dist/{cloud-Cuxr6Czw.js → cloud-Bo3e9Ak3.js} +7 -6
- package/dist/{collect-O-tOtbnk.js → collect-DDDv_ESs.js} +194 -42
- package/dist/collect-DLlujdHC.js +83 -0
- package/dist/collect-rG2IQ3t0.js +2 -0
- package/dist/{commands-BMh_Etm2.js → commands-DWOrSQic.js} +16 -12
- package/dist/compile/index.d.ts +3 -0
- package/dist/compile/index.js +2 -0
- package/dist/{compile-D22iwvuV.js → compile-Ba4blROR.js} +85 -30
- package/dist/compile-CNnl6uIt.d.ts +94 -0
- package/dist/config-BJiM-xAm.js +157 -0
- package/dist/config-Bn00Z3ks.js +36 -0
- package/dist/config-report-Dw_JcUqT.js +44 -0
- package/dist/{connection-JvqwHODC.js → connection-CU8MQxRi.js} +1 -1
- package/dist/{context-CKEAabd7.js → context-Ttp0ekMT.js} +36 -27
- package/dist/convex/index.d.ts +9 -4
- package/dist/convex/index.js +14 -4
- package/dist/create-BWyx3jua.d.ts +245 -0
- package/dist/create-CPhDL6qx.js +253 -0
- package/dist/{credential-B_rkUNlY.js → credential-8P81ff4u.js} +26 -46
- package/dist/delegation-D8pUEuce.js +103 -0
- package/dist/{describe-Bt1YD5uS.js → describe-B_gVZEVi.js} +10 -15
- package/dist/{describe-DernyItf.d.ts → describe-PdoqESvg.d.ts} +9 -10
- package/dist/{diff-x5Il8LVa.js → diff-B8Tunc3o.js} +44 -11
- package/dist/{diff-BUzf5Poi.js → diff-CzqLxZ77.js} +2 -2
- package/dist/doctor-WpvG6p4k.js +1194 -0
- package/dist/doctor-collect-ByfYlNv1.js +664 -0
- package/dist/{doctor-Bqo6FwUa.js → doctor-rOr-4ZfS.js} +2 -2
- package/dist/drizzle/index.d.ts +4 -3
- package/dist/drizzle/index.js +3 -3
- package/dist/elysia/index.d.ts +6 -28
- package/dist/elysia/index.js +16 -60
- package/dist/{errors-DSMnAVNa.js → errors-CWfoNg9N.js} +8 -4
- package/dist/{errors-Iy71s7Oj.js → errors-Cz5zn0mW.js} +17 -71
- package/dist/{errors-DbZ1YOnb.d.ts → errors-DAqevpNk.d.ts} +8 -21
- package/dist/{errors-m3u9TmDu.js → errors-DRnGZHzF.js} +4 -1
- package/dist/evaluation-items-CfCCejQd.js +40 -0
- package/dist/{evaluations-DsAU9ppl.js → evaluations-tz6D9A2G.js} +28 -46
- package/dist/eve/index.d.ts +6 -15
- package/dist/eve/index.js +7 -12
- package/dist/expiry-BoBJ8Tvc.js +7 -0
- package/dist/express/index.d.ts +6 -29
- package/dist/express/index.js +28 -58
- package/dist/fastify/index.d.ts +6 -29
- package/dist/fastify/index.js +16 -65
- package/dist/fields-BMl1RxoX.js +26 -0
- package/dist/{files-B_wAGYmt.js → files-DWUN9PzI.js} +5 -1
- package/dist/{fixtures-Cvaw0gDG.js → fixtures-ht28Cplr.js} +5 -2
- package/dist/{freeze-y1_jQL4v.js → freeze-CrU8nQeX.js} +31 -2
- package/dist/{from-snapshot-BMGnhmgv.js → from-snapshot-C3sHpZNS.js} +65 -48
- package/dist/{grantee-Bv04_Vzf.js → grantee-Cv5Sogfv.js} +88 -7
- package/dist/graph-sql-B-dsAT6j.d.ts +29 -0
- package/dist/{headers-B5RRv3Xm.js → headers-BZSDieNT.js} +1 -1
- package/dist/{headers-C8SHQccD.d.ts → headers-Cf-zWvsO.d.ts} +1 -1
- package/dist/helpers-H_KARDVC.js +421 -0
- package/dist/hono/index.d.ts +6 -28
- package/dist/hono/index.js +11 -43
- package/dist/{hosted-BwKQ1BTA.js → hosted-DJQw46hn.js} +6 -5
- package/dist/{http-GgVApX1k.js → http-BIhmLfCc.js} +4 -20
- package/dist/http-SO7qGttf.js +44 -0
- package/dist/ids-DC4V4CFu.js +18 -0
- package/dist/{index-LF_hS-yn.d.ts → index-A0YNL8jZ.d.ts} +1 -1
- package/dist/index-CtE07CBF.d.ts +6 -0
- package/dist/{index-xIxJLwOQ.d.ts → index-D3vbkoSI.d.ts} +75 -7
- package/dist/{index-CltcQ4Bf.d.ts → index-D6_cSa1z.d.ts} +68 -5
- package/dist/index.d.ts +14 -9
- package/dist/index.js +22 -17
- package/dist/instance-options-BK_rNOSC.d.ts +11 -0
- package/dist/instance-options-Dhhcnm3y.js +22 -0
- package/dist/{parse-DPfIvFMU.js → json-schema-BsAflUGW.js} +28 -57
- package/dist/jwt/index.d.ts +10 -6
- package/dist/jwt/index.js +32 -13
- package/dist/kernel-GSQnMz3O.js +208 -0
- package/dist/kysely/index.d.ts +4 -3
- package/dist/kysely/index.js +3 -3
- package/dist/live-options-H2eG8dfJ.js +60 -0
- package/dist/{load-BZ24CpZP.js → load-DhWEB9P1.js} +16 -10
- package/dist/load-DwJUafYN.js +2 -0
- package/dist/manifest-iaoBXHKc.js +783 -0
- package/dist/manifest-uDS9y5de.d.ts +206 -0
- package/dist/{map-DowSO96j.js → map-AcxK9o_D.js} +4 -15
- package/dist/{map-claims-B_6I1Rn-.js → map-claims-Z4QZOiFF.js} +13 -4
- package/dist/map-error-pgUWNNtG.js +23 -0
- package/dist/may-use-DndQ5tQ-.js +77 -0
- package/dist/mcp/index.d.ts +54 -22
- package/dist/mcp/index.js +218 -178
- package/dist/nest/index.d.ts +26 -31
- package/dist/nest/index.js +75 -84
- package/dist/next/client.d.ts +7 -8
- package/dist/next/client.js +11 -9
- package/dist/next/index.d.ts +30 -47
- package/dist/next/index.js +45 -60
- package/dist/next/plugin.d.ts +1 -1
- package/dist/next/plugin.js +32 -1
- package/dist/node/index.d.ts +9 -28
- package/dist/node/index.js +11 -43
- package/dist/openai/index.d.ts +6 -15
- package/dist/openai/index.js +7 -20
- package/dist/openapi/index.d.ts +87 -4
- package/dist/openapi/index.js +3 -3
- package/dist/{openapi-CwePaF7C.js → openapi-Bbg4wGVL.js} +3 -3
- package/dist/{openapi-DcqM8nU7.js → openapi-BqRBvAng.js} +237 -5
- package/dist/{openapi-DWD0Uc_4.js → openapi-CqqEbHsL.js} +5 -5
- package/dist/{openapi-import-BWRUNNeW.js → openapi-import-cmwetbzw.js} +1 -1
- package/dist/{openapi-schema-D8j_T9tO.js → openapi-schema--ARjyfQr.js} +2 -2
- package/dist/orpc/index.d.ts +15 -28
- package/dist/orpc/index.js +74 -117
- package/dist/otel/index.d.ts +2 -2
- package/dist/parse-BuyjxhZV.js +53 -0
- package/dist/parse-local-manifest-BkGQNzAh.d.ts +10 -0
- package/dist/parse-local-manifest-BrMozJCo.js +36 -0
- package/dist/pdp/index.d.ts +2 -2
- package/dist/pdp/index.js +14 -127
- package/dist/{permdock-yoZ7EjxX.js → permdock-CzqXjCpU.js} +641 -126
- package/dist/{permissions-B8vCg_bI.d.ts → permissions-CDgvKG5L.d.ts} +2 -2
- package/dist/{permissions-CofRqesP.js → permissions-CpZrivYv.js} +3 -3
- package/dist/{permissions-DC7GROPA.js → permissions-DVoF6dMt.js} +77 -15
- package/dist/{permissions-B4apnahQ.d.ts → permissions-DttnqqxC.d.ts} +34 -5
- package/dist/{pins-CqE1jZuF.js → pins-8ILTftC9.js} +2 -2
- package/dist/{policy-CInmNGkM.d.ts → policy-CFZAr_Al.d.ts} +330 -37
- package/dist/{policy-Cq2fB8Q5.d.ts → policy-D8UFyERw.d.ts} +2 -2
- package/dist/{policy-ANp36PnI.js → policy-xyWg7QdR.js} +173 -22
- package/dist/powersync-A8x_Yyvh.js +2 -0
- package/dist/powersync-C7kLglqX.js +540 -0
- package/dist/powersync-yW1UUFzp.js +62 -0
- package/dist/prisma/index.d.ts +3 -2
- package/dist/prisma/index.js +45 -20
- package/dist/{problem-Cgp9-KZA.js → problem-B43ztKIm.js} +74 -109
- package/dist/problem-details-CkL50EEf.d.ts +7 -0
- package/dist/problem-details-_AMOYz-w.js +144 -0
- package/dist/{protected-BuPAycJT.d.ts → protected-CNsMzrVd.d.ts} +5 -4
- package/dist/protected-Cs6kTaHo.js +100 -0
- package/dist/protected-bZs6rbT1.d.ts +40 -0
- package/dist/{provider-wTAUda2v.d.ts → provider-Cjr62YMV.d.ts} +1 -1
- package/dist/provider-DLzpb2Xz.js +52 -0
- package/dist/provider-store-DNyC1y48.js +43 -0
- package/dist/react/index.d.ts +7 -5
- package/dist/react/index.js +5 -4
- package/dist/react/provider-client.d.ts +1 -1
- package/dist/react/provider-client.js +1 -1
- package/dist/react-native/index.d.ts +166 -10
- package/dist/react-native/index.js +607 -85
- package/dist/{refs-ChLSxbST.js → refs-KYb4ntaz.js} +4 -3
- package/dist/{relations-r4soIFZB.js → relations-cjOL01hZ.js} +110 -31
- package/dist/replay-BsOyTrdV.js +28 -0
- package/dist/replay-sqBGMnNs.d.ts +5 -0
- package/dist/resource-ref-CaS9yVPi.js +20 -0
- package/dist/revocations-Bhr0aMIC.js +27 -0
- package/dist/rls-BMNydpHk.js +2521 -0
- package/dist/{rls-BOFU3chG.js → rls-CEvs64Kj.js} +8 -3
- package/dist/rls-fields-BMasREhR.js +3502 -0
- package/dist/{rls-graph-DxQ39PJj.js → rls-graph-pc9fuXYm.js} +100 -36
- package/dist/{rls-import-CXV6LBlS.js → rls-import-D8F7j35Q.js} +7 -6
- package/dist/{rls-migrate-DrFPbf8p.js → rls-migrate-7wikfrVI.js} +6 -5
- package/dist/rls-ownership-B5Lkq62W.js +843 -0
- package/dist/rls-shared-aOQ4hGTO.js +493 -0
- package/dist/rls-verify-D8B7dOTh.js +745 -0
- package/dist/{row-check-BajTgQZ-.d.ts → row-check-Dt35czLy.d.ts} +12 -15
- package/dist/rpc-DOK54_CS.js +89 -0
- package/dist/{run-CJ6UvS3a.js → run-YXCJDNYk.js} +31 -12
- package/dist/runtime-CB8gQFvS.js +11 -0
- package/dist/{saas-BRrZzJkM.js → saas-Bj_FFkjN.js} +17 -7
- package/dist/{schema-P8yoma__.js → schema-D3MnDMxa.js} +8 -4
- package/dist/scim/index.d.ts +1 -1
- package/dist/scim/index.js +1 -1
- package/dist/{scim-9NFa0XVZ.js → scim-BFGBBAqR.js} +1 -1
- package/dist/{scopes-cKVp_WTw.js → scopes-CVdPrWN-.js} +35 -8
- package/dist/server/index.d.ts +22 -11
- package/dist/server/index.js +11 -8
- package/dist/{credentials-BgRX3WEg.js → server-DlZ28Oz5.js} +1 -1
- package/dist/shared-DRu8VFVM.js +123 -0
- package/dist/{sink-Cfr9-7YC.d.ts → sink-Gs6TTVa-.d.ts} +1 -1
- package/dist/skills-Biq5uup3.js +192 -0
- package/dist/{skills-C_lpV4Jx.js → skills-JaymNCdK.js} +10 -4
- package/dist/{snapshot-DE8dE_hz.js → snapshot-Enxd0n-s.js} +138 -214
- package/dist/snapshot-cache-D6jLelln.js +44 -0
- package/dist/snapshot-cache-DwQH8ufx.d.ts +45 -0
- package/dist/solid/index.d.ts +39 -9
- package/dist/solid/index.js +76 -85
- package/dist/sources-B0UvrJ21.js +534 -0
- package/dist/sources-BcJgw0lt.d.ts +192 -0
- package/dist/{sql-Bll1d7y0.js → sql-xdg5f4Fi.js} +6 -1
- package/dist/{src-CTNT-PBW.js → src-CSbUiozF.js} +149 -11
- package/dist/ssf/index.d.ts +3 -2
- package/dist/ssf/index.js +3 -29
- package/dist/store-DMAWwAJV.js +371 -0
- package/dist/{store-Bq90395i.d.ts → store-D_pjn91-.d.ts} +13 -4
- package/dist/store-options-yO0V6gRn.js +716 -0
- package/dist/{stores-CkG2HrSg.js → stores-4_sqiOA1.js} +10 -63
- package/dist/{stores-CvOnu_2T.d.ts → stores-DVR5NHLE.d.ts} +20 -9
- package/dist/{stream-Q_xlB6Ko.js → stream-DDpvynSB.js} +16 -2
- package/dist/{stream-BhMfZOwr.d.ts → stream-DlvG2hs-.d.ts} +2 -2
- package/dist/subject-settings-BwBmCdTR.js +128 -0
- package/dist/supabase/index.d.ts +122 -6
- package/dist/supabase/index.js +4 -3
- package/dist/supabase/middleware.d.ts +32 -27
- package/dist/supabase/middleware.js +56 -22
- package/dist/{supabase-D8UlBA7Z.js → supabase-CwafwxxF.js} +3 -3
- package/dist/{supabase-DTxGtYdi.js → supabase-DTBaC20O.js} +345 -367
- package/dist/supabase-config-Bs44dare.js +472 -0
- package/dist/{supabase-hook-D_OqGb_V.js → supabase-hook-BuxLQLpU.js} +994 -708
- package/dist/supabase-hook-D5qVd_D8.js +2 -0
- package/dist/supautils-DYZnzRWV.js +91 -0
- package/dist/svelte/PermissionBoundary.svelte +37 -0
- package/dist/svelte/Protected.svelte +8 -2
- package/dist/svelte/index.d.ts +9 -6
- package/dist/svelte/index.js +61 -7
- package/dist/svelte/runtime.d.ts +4 -3
- package/dist/svelte/runtime.js +4 -3
- package/dist/svelte/source.d.ts +9 -6
- package/dist/svelte/source.js +7 -4
- package/dist/terminal/index.d.ts +6 -14
- package/dist/terminal/index.js +44 -32
- package/dist/testing/index.d.ts +105 -16
- package/dist/testing/index.js +504 -40
- package/dist/testing/saas/index.d.ts +4 -4
- 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/token-CIWxJOCh.js +50 -0
- package/dist/trpc/index.d.ts +7 -26
- package/dist/trpc/index.js +17 -100
- package/dist/types-9AWO9EGt.d.ts +197 -0
- package/dist/{types-D6Z6-rKJ.d.ts → types-BPxgszlT.d.ts} +260 -22
- package/dist/{types-BvBk1wgn.d.ts → types-BVyImy5I.d.ts} +5 -3
- package/dist/{types-CxquUByI.d.ts → types-Bvc4oWT6.d.ts} +1 -1
- package/dist/types-C3s9xVJG.d.ts +48 -0
- package/dist/{types-BBK-exvJ.d.ts → types-Dnemwd77.d.ts} +7 -1
- package/dist/types-kxznc7cn.d.ts +52 -0
- package/dist/{types-B8w5PFtS.d.ts → types-vKyAMtcX.d.ts} +17 -1
- package/dist/{types-B9dmiiab.d.ts → types-vNSDF7Dq.d.ts} +1 -1
- package/dist/{sources-DOpW5Ila.d.ts → types-yF5LmQVD.d.ts} +86 -127
- package/dist/unplugin/index.d.ts +1 -1
- package/dist/unplugin/index.js +10 -9
- package/dist/{usage-1ozMubLY.js → usage-D07N9QJ3.js} +2 -2
- package/dist/usage-D82l1CwK.js +2 -0
- package/dist/{usage-CUnK6Ou9.js → usage-DG1oeCca.js} +225 -62
- package/dist/validation-error-CnjZ4t92.js +33 -0
- package/dist/validation-error-CtF23SrC.d.ts +26 -0
- package/dist/{validity-D0uRmJKJ.js → validity-uOp8UpYn.js} +57 -36
- package/dist/{verifier-B90agnhl.js → verifier-BxBo6I44.js} +10 -5
- package/dist/version-BvacVTZR.js +17 -0
- package/dist/views-Soe7bGSC.js +95 -0
- package/dist/{vocabulary-Dk0fs-Jk.d.ts → vocabulary-DA8a8zif.d.ts} +1 -1
- package/dist/vue/index.d.ts +35 -13
- package/dist/vue/index.js +86 -93
- package/dist/watch-Etoa_Mvr.js +2 -0
- package/dist/watch-UihESpsJ.js +128 -0
- package/dist/webmcp/index.d.ts +2 -2
- package/dist/webmcp/index.js +7 -13
- package/package.json +62 -36
- package/schemas/approval-request-v1.json +175 -0
- package/schemas/catalog-v1.json +29 -1
- package/schemas/supabase-claims-v1.json +6 -1
- package/schemas/supabase-manifest-v1.json +150 -6
- package/skills/permdock/SKILL.md +7 -7
- package/skills/permdock-agents/SKILL.md +5 -5
- package/skills/permdock-agents/references/runtimes.md +12 -10
- package/skills/permdock-approvals/SKILL.md +4 -4
- package/skills/permdock-approvals/references/stores-and-resume.md +15 -4
- package/skills/permdock-audit/SKILL.md +3 -3
- package/skills/permdock-credentials/SKILL.md +4 -4
- package/skills/permdock-credentials/references/tokens-keys-links.md +7 -2
- package/skills/permdock-data/SKILL.md +4 -4
- package/skills/permdock-data/references/queries-and-rls.md +14 -6
- package/skills/permdock-data/references/relationships.md +5 -3
- package/skills/permdock-tenancy/SKILL.md +9 -6
- package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +14 -8
- package/skills/permdock-wire/SKILL.md +4 -4
- package/skills/permdock-wire/references/adapters.md +42 -30
- package/skills/permdock-wire/references/policy-options.md +5 -3
- package/dist/approvers-aH0PJkmf.js +0 -20
- package/dist/catalog-idsHc0vo.js +0 -2
- package/dist/collect-B7_TIfmg.js +0 -49
- package/dist/collect-fRPAQIWb.js +0 -2
- package/dist/compile-CQbvyIBr.d.ts +0 -30
- package/dist/config-BPYmjTOp.js +0 -26
- package/dist/context-gtAwAILx.js +0 -6
- package/dist/create-BKF3dgFk.d.ts +0 -162
- package/dist/create-CSkhDU9T.js +0 -222
- package/dist/doctor-BGle8Gqi.js +0 -1314
- package/dist/helpers-DnSOrhB9.js +0 -682
- package/dist/index-fG6NSXlc.d.ts +0 -9
- package/dist/kernel-YOGCWNLf.js +0 -211
- package/dist/load-QOOm1z70.js +0 -2
- package/dist/manifest-DDQbC6K0.d.ts +0 -118
- package/dist/map-error-RJ3ZsUyA.js +0 -16
- package/dist/may-use-CnFEjVEp.js +0 -37
- package/dist/pg-4GJWDUxG.js +0 -953
- package/dist/plugin-4gr7IxFJ.js +0 -65
- package/dist/protected-B4K3BKoX.js +0 -138
- package/dist/protected-wY7nXhY9.d.ts +0 -23
- package/dist/provider-_wx46HpB.js +0 -48
- package/dist/rls-CJVja9Ww.js +0 -2119
- package/dist/rls-helpers-BxRuif0l.js +0 -1346
- package/dist/runtime-DP9ttFh1.js +0 -27
- package/dist/skills-Dx3QLnMY.js +0 -110
- package/dist/source-DoBBYJi2.js +0 -6
- package/dist/sources-DVHM3Mwq.js +0 -284
- package/dist/store-C6hFW6ta.js +0 -508
- package/dist/subject-settings-xt7V845g.js +0 -82
- package/dist/supabase-hook-DW-xP4hU.js +0 -2
- package/dist/types-DbWdEfcm.d.ts +0 -87
- package/dist/types-bva3i4Gf.d.ts +0 -98
- package/dist/types-i4BAOvdb.d.ts +0 -97
- package/dist/usage-PyEor6GA.js +0 -2
- package/dist/version-CnSh33Fj.js +0 -16
package/dist/kernel-YOGCWNLf.js
DELETED
|
@@ -1,211 +0,0 @@
|
|
|
1
|
-
import { t as compact } from "./compact-y6vfu2_f.js";
|
|
2
|
-
import { t as describe } from "./describe-Bt1YD5uS.js";
|
|
3
|
-
import { o as deniedMessage } from "./errors-Iy71s7Oj.js";
|
|
4
|
-
import { t as createPermDock } from "./permdock-yoZ7EjxX.js";
|
|
5
|
-
import { t as mayUse } from "./may-use-CnFEjVEp.js";
|
|
6
|
-
import { l as storedApprovalToken, s as resumeDecision } from "./helpers-DnSOrhB9.js";
|
|
7
|
-
//#region src/agent/reason.ts
|
|
8
|
-
function modelReason(decision, permission, subjectId) {
|
|
9
|
-
if (decision.outcome === "denied") return deniedMessage(permission?.key ?? "unknown", subjectId, decision.denials, decision.alternatives.map((leaf) => leaf.key));
|
|
10
|
-
return describe(decision).detail;
|
|
11
|
-
}
|
|
12
|
-
function unmappedReason(toolName) {
|
|
13
|
-
return `Denied: unmapped tool ${toolName}.`;
|
|
14
|
-
}
|
|
15
|
-
function thrownReason(toolName) {
|
|
16
|
-
return `Denied: ${toolName} failed closed.`;
|
|
17
|
-
}
|
|
18
|
-
//#endregion
|
|
19
|
-
//#region src/agent/kernel.ts
|
|
20
|
-
function asActor(value) {
|
|
21
|
-
if (value === null || typeof value !== "object" || Array.isArray(value)) return;
|
|
22
|
-
const record = value;
|
|
23
|
-
if (typeof record.id !== "string" || typeof record.kind !== "string") return;
|
|
24
|
-
return {
|
|
25
|
-
id: record.id,
|
|
26
|
-
kind: record.kind
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
async function resolveTenant(tenant, context) {
|
|
30
|
-
if (tenant === void 0 || typeof tenant === "string") return tenant;
|
|
31
|
-
try {
|
|
32
|
-
return await tenant(context);
|
|
33
|
-
} catch {
|
|
34
|
-
return;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
/** The resume token an agent run carries under the namespaced `permdockApproval` key. */
|
|
38
|
-
function approvalTokenOf(context) {
|
|
39
|
-
if (context === null || typeof context !== "object") return;
|
|
40
|
-
const token = context.permdockApproval;
|
|
41
|
-
return typeof token === "string" && token !== "" ? token : void 0;
|
|
42
|
-
}
|
|
43
|
-
function idOf(data) {
|
|
44
|
-
if (data === null || typeof data !== "object") return;
|
|
45
|
-
const id = data.id;
|
|
46
|
-
if (typeof id === "string" || typeof id === "number") return String(id);
|
|
47
|
-
}
|
|
48
|
-
function resourceRef(permission, data) {
|
|
49
|
-
return compact({
|
|
50
|
-
type: permission.resource,
|
|
51
|
-
id: idOf(data)
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
function runDecide(permdock, permission, data, adapter) {
|
|
55
|
-
return permdock.decide(permission, data, compact({
|
|
56
|
-
source: "adapter",
|
|
57
|
-
adapter,
|
|
58
|
-
boundary: "tool-args"
|
|
59
|
-
}));
|
|
60
|
-
}
|
|
61
|
-
function createAgentKernel(policy, options) {
|
|
62
|
-
const cache = /* @__PURE__ */ new WeakMap();
|
|
63
|
-
const instance = (context) => {
|
|
64
|
-
if (typeof context === "object" && context !== null) {
|
|
65
|
-
const hit = cache.get(context);
|
|
66
|
-
if (hit !== void 0) return hit;
|
|
67
|
-
}
|
|
68
|
-
const built = (async () => {
|
|
69
|
-
let user = null;
|
|
70
|
-
try {
|
|
71
|
-
user = await options.subject(context);
|
|
72
|
-
} catch {
|
|
73
|
-
user = null;
|
|
74
|
-
}
|
|
75
|
-
let actor;
|
|
76
|
-
if (options.actor !== void 0) try {
|
|
77
|
-
actor = asActor(await options.actor(context));
|
|
78
|
-
} catch {
|
|
79
|
-
actor = void 0;
|
|
80
|
-
}
|
|
81
|
-
let delegation;
|
|
82
|
-
if (options.delegation !== void 0) try {
|
|
83
|
-
delegation = await options.delegation(context);
|
|
84
|
-
} catch {
|
|
85
|
-
delegation = void 0;
|
|
86
|
-
}
|
|
87
|
-
const tenant = await resolveTenant(options.tenant, context);
|
|
88
|
-
return createPermDock(policy, user, compact({
|
|
89
|
-
tenant,
|
|
90
|
-
actor,
|
|
91
|
-
delegation,
|
|
92
|
-
memberships: options.memberships,
|
|
93
|
-
relations: options.relations,
|
|
94
|
-
entitlements: options.entitlements,
|
|
95
|
-
customRoles: options.customRoles,
|
|
96
|
-
policies: options.policies,
|
|
97
|
-
sink: options.sink,
|
|
98
|
-
limits: options.limits
|
|
99
|
-
}));
|
|
100
|
-
})();
|
|
101
|
-
if (typeof context === "object" && context !== null) {
|
|
102
|
-
cache.set(context, built);
|
|
103
|
-
const release = () => {
|
|
104
|
-
if (cache.get(context) === built) cache.delete(context);
|
|
105
|
-
};
|
|
106
|
-
built.then(release, release);
|
|
107
|
-
}
|
|
108
|
-
return built;
|
|
109
|
-
};
|
|
110
|
-
const evaluate = async (binding, toolName, args, context, decideOptions = {}) => {
|
|
111
|
-
try {
|
|
112
|
-
const permdock = await instance(context);
|
|
113
|
-
let data;
|
|
114
|
-
if (binding.data !== void 0) {
|
|
115
|
-
data = await binding.data(args);
|
|
116
|
-
if (data === null || data === void 0) {
|
|
117
|
-
const decision = {
|
|
118
|
-
outcome: "denied",
|
|
119
|
-
denials: [{
|
|
120
|
-
role: null,
|
|
121
|
-
reason: "validation"
|
|
122
|
-
}],
|
|
123
|
-
alternatives: []
|
|
124
|
-
};
|
|
125
|
-
return {
|
|
126
|
-
outcome: "denied",
|
|
127
|
-
decision,
|
|
128
|
-
permission: binding.permission,
|
|
129
|
-
reason: modelReason(decision, binding.permission, permdock.subject.principal?.id)
|
|
130
|
-
};
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
const raw = runDecide(permdock, binding.permission, data, options.adapter);
|
|
134
|
-
const decision = await resumeDecision({
|
|
135
|
-
decision: raw,
|
|
136
|
-
permission: binding.permission,
|
|
137
|
-
subject: permdock.subject,
|
|
138
|
-
store: options.store,
|
|
139
|
-
resource: resourceRef(binding.permission, data),
|
|
140
|
-
adapter: options.adapter,
|
|
141
|
-
token: decideOptions.resumeToken ?? await storedApprovalToken(options.store, raw, decideOptions.denyPending === true)
|
|
142
|
-
});
|
|
143
|
-
if (decision.outcome === "granted") return {
|
|
144
|
-
outcome: "granted",
|
|
145
|
-
decision,
|
|
146
|
-
permission: binding.permission,
|
|
147
|
-
data
|
|
148
|
-
};
|
|
149
|
-
if (decision.outcome === "approval-required") return {
|
|
150
|
-
outcome: "approval-required",
|
|
151
|
-
decision,
|
|
152
|
-
permission: binding.permission,
|
|
153
|
-
data,
|
|
154
|
-
token: decision.token,
|
|
155
|
-
summary: modelReason(decision, binding.permission, permdock.subject.principal?.id)
|
|
156
|
-
};
|
|
157
|
-
return {
|
|
158
|
-
outcome: "denied",
|
|
159
|
-
decision,
|
|
160
|
-
permission: binding.permission,
|
|
161
|
-
reason: modelReason(decision, binding.permission, permdock.subject.principal?.id)
|
|
162
|
-
};
|
|
163
|
-
} catch {
|
|
164
|
-
return {
|
|
165
|
-
outcome: "denied",
|
|
166
|
-
decision: null,
|
|
167
|
-
permission: binding.permission,
|
|
168
|
-
reason: thrownReason(toolName)
|
|
169
|
-
};
|
|
170
|
-
}
|
|
171
|
-
};
|
|
172
|
-
const tokenFor = async (binding, args, context) => {
|
|
173
|
-
try {
|
|
174
|
-
const permdock = await instance(context);
|
|
175
|
-
let data;
|
|
176
|
-
if (binding.data !== void 0) {
|
|
177
|
-
data = await binding.data(args);
|
|
178
|
-
if (data === null || data === void 0) return;
|
|
179
|
-
}
|
|
180
|
-
const raw = runDecide(permdock, binding.permission, data, options.adapter);
|
|
181
|
-
return raw.outcome === "approval-required" ? raw.token : void 0;
|
|
182
|
-
} catch {
|
|
183
|
-
return;
|
|
184
|
-
}
|
|
185
|
-
};
|
|
186
|
-
const decideTool = (toolName, args, context, decideOptions = {}) => {
|
|
187
|
-
const binding = options.tools[toolName];
|
|
188
|
-
if (binding === void 0) return Promise.resolve({
|
|
189
|
-
outcome: "denied",
|
|
190
|
-
decision: null,
|
|
191
|
-
permission: void 0,
|
|
192
|
-
reason: unmappedReason(toolName)
|
|
193
|
-
});
|
|
194
|
-
return evaluate(binding, toolName, args, context, decideOptions);
|
|
195
|
-
};
|
|
196
|
-
const allowedToolNames = async (context) => {
|
|
197
|
-
const permdock = await instance(context);
|
|
198
|
-
const allowed = /* @__PURE__ */ new Set();
|
|
199
|
-
for (const [name, binding] of Object.entries(options.tools)) if (mayUse(permdock, binding.permission)) allowed.add(name);
|
|
200
|
-
return allowed;
|
|
201
|
-
};
|
|
202
|
-
return {
|
|
203
|
-
instance,
|
|
204
|
-
decideTool,
|
|
205
|
-
evaluate,
|
|
206
|
-
tokenFor,
|
|
207
|
-
allowedToolNames
|
|
208
|
-
};
|
|
209
|
-
}
|
|
210
|
-
//#endregion
|
|
211
|
-
export { createAgentKernel as n, approvalTokenOf as t };
|
package/dist/load-QOOm1z70.js
DELETED
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
//#region src/supabase/manifest.d.ts
|
|
2
|
-
/**
|
|
3
|
-
* What `permdock supabase inspect --json` prints and `--out` writes to
|
|
4
|
-
* `permdock.manifest.json`: the contract between the generated hook and SQL
|
|
5
|
-
* helpers and a package that writes policies or claims next to them
|
|
6
|
-
* (better-supabase). `version` is the major of this shape; a field is only
|
|
7
|
-
* ever added within it. `schemas/supabase-manifest-v1.json` is its JSON Schema.
|
|
8
|
-
*/
|
|
9
|
-
type SupabaseHookManifest = {
|
|
10
|
-
readonly $schema: "https://permdock.dev/schemas/supabase-manifest-v1.json";
|
|
11
|
-
readonly version: 1;
|
|
12
|
-
readonly hook: {
|
|
13
|
-
readonly schema: string;
|
|
14
|
-
readonly function: "custom_access_token_hook";
|
|
15
|
-
readonly out: string;
|
|
16
|
-
};
|
|
17
|
-
readonly helpers: {
|
|
18
|
-
readonly schema: string;
|
|
19
|
-
/**
|
|
20
|
-
* `permdock_has` and, per declared scope, `permitted_<scope>_ids`, each
|
|
21
|
-
* `(p_grant text)`, the membership-only `member_<scope>_ids()` and, for a
|
|
22
|
-
* scope with a membership source, `member_<scope>_ids_for(p_user uuid)`.
|
|
23
|
-
*/
|
|
24
|
-
readonly functions: readonly string[];
|
|
25
|
-
};
|
|
26
|
-
readonly tenantClaim: string;
|
|
27
|
-
readonly budget: {
|
|
28
|
-
readonly bytes: number;
|
|
29
|
-
readonly measure: string;
|
|
30
|
-
};
|
|
31
|
-
readonly claims: readonly SupabaseHookClaim[];
|
|
32
|
-
readonly authzVersion: boolean;
|
|
33
|
-
/**
|
|
34
|
-
* With `authzVersion`, the function that bumps the listed users' `authz_ver`,
|
|
35
|
-
* for a membership source outside the hook. It is `security definer` and no
|
|
36
|
-
* client role may execute it: call it from a trigger owned by the table's owner.
|
|
37
|
-
*/
|
|
38
|
-
readonly authzVersionBump?: {
|
|
39
|
-
readonly schema: string;
|
|
40
|
-
readonly function: "permdock_bump_authz_version_for";
|
|
41
|
-
readonly args: "p_users uuid[]";
|
|
42
|
-
};
|
|
43
|
-
/** The `supabase.hook.memberships` sources, in the order the hook reads them. */
|
|
44
|
-
readonly memberships: readonly SupabaseManifestMembership[];
|
|
45
|
-
readonly rls: SupabaseManifestRls;
|
|
46
|
-
/**
|
|
47
|
-
* Every `schema.table.column` a membership or an `attrs` claim is computed
|
|
48
|
-
* from. A client role that can insert or update one can grant itself access.
|
|
49
|
-
*/
|
|
50
|
-
readonly decidingColumns: readonly string[];
|
|
51
|
-
/** The majors of the `-- permdock:hook` and `-- permdock:grants` marker lines. */
|
|
52
|
-
readonly markers: {
|
|
53
|
-
readonly hook: "v1";
|
|
54
|
-
readonly grants: "v1";
|
|
55
|
-
};
|
|
56
|
-
};
|
|
57
|
-
type SupabaseHookClaim = {
|
|
58
|
-
readonly name: string;
|
|
59
|
-
/** `permdock`, or the `<schema>.<function>` of a `supabase.hook.claims` entry. */
|
|
60
|
-
readonly source: string;
|
|
61
|
-
/** Whether the claim counts toward `budget.bytes`. */
|
|
62
|
-
readonly budget: boolean;
|
|
63
|
-
};
|
|
64
|
-
type SupabaseManifestColumn = {
|
|
65
|
-
readonly column: string;
|
|
66
|
-
};
|
|
67
|
-
/** A column of the source table, or a value every row has. */
|
|
68
|
-
type SupabaseManifestValue = SupabaseManifestColumn | {
|
|
69
|
-
readonly value: string | readonly string[];
|
|
70
|
-
};
|
|
71
|
-
/** One `fromTable` or `fromJunction` source. */
|
|
72
|
-
type SupabaseManifestMembership = {
|
|
73
|
-
/** `schema.table`, `public` when the source names no schema. */
|
|
74
|
-
readonly table: string;
|
|
75
|
-
readonly user: SupabaseManifestColumn;
|
|
76
|
-
/** A column for `fromTable`, the fixed scope for `fromJunction`. */
|
|
77
|
-
readonly scope: SupabaseManifestValue;
|
|
78
|
-
readonly id: SupabaseManifestColumn;
|
|
79
|
-
/** A role column, or the fixed roles every row holds. */
|
|
80
|
-
readonly role: SupabaseManifestValue;
|
|
81
|
-
/** A `jsonb` column of ancestor ids keyed by scope, or one column per ancestor scope. */
|
|
82
|
-
readonly within?: SupabaseManifestColumn | {
|
|
83
|
-
readonly columns: Readonly<Record<string, string>>;
|
|
84
|
-
};
|
|
85
|
-
readonly via?: SupabaseManifestValue;
|
|
86
|
-
readonly expiresAt?: SupabaseManifestColumn;
|
|
87
|
-
/** The columns of `table` that decide the membership. */
|
|
88
|
-
readonly columns: readonly string[];
|
|
89
|
-
};
|
|
90
|
-
type SupabaseManifestHelper = {
|
|
91
|
-
readonly name: string;
|
|
92
|
-
/** The argument list, `p_grant text`, or `''` for none. */
|
|
93
|
-
readonly args: string;
|
|
94
|
-
readonly returns: string;
|
|
95
|
-
/** The roles granted `execute`; a field view `anon` reads adds `anon` to the `authenticated` ones. */
|
|
96
|
-
readonly execute: readonly string[];
|
|
97
|
-
};
|
|
98
|
-
type SupabaseManifestRls = {
|
|
99
|
-
readonly schema: string;
|
|
100
|
-
/** Where the helpers read roles and memberships: the claims (`jwt`) or the tables (`database`). */
|
|
101
|
-
readonly mode: "jwt" | "database";
|
|
102
|
-
readonly tenantClaim: string;
|
|
103
|
-
/** The declared scopes, root first, with the Postgres type of their ids. */
|
|
104
|
-
readonly scopes: readonly {
|
|
105
|
-
readonly name: string;
|
|
106
|
-
readonly type: string;
|
|
107
|
-
readonly within?: string;
|
|
108
|
-
}[];
|
|
109
|
-
readonly helpers: readonly SupabaseManifestHelper[];
|
|
110
|
-
/**
|
|
111
|
-
* The tables `member_<scope>_ids_for` reads: an `rls.memberships` table
|
|
112
|
-
* mapped for the scope, else `rls.membershipSources`, else the hook's
|
|
113
|
-
* `memberships`.
|
|
114
|
-
*/
|
|
115
|
-
readonly memberships: readonly SupabaseManifestMembership[];
|
|
116
|
-
};
|
|
117
|
-
//#endregion
|
|
118
|
-
export { SupabaseManifestMembership as a, SupabaseManifestHelper as i, SupabaseHookManifest as n, SupabaseManifestRls as o, SupabaseManifestColumn as r, SupabaseManifestValue as s, SupabaseHookClaim as t };
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { i as PermDockValidationError, n as PermDockDeniedError, r as PermDockRevokedError, t as PermDockApprovalRequiredError } from "./errors-Iy71s7Oj.js";
|
|
2
|
-
import { o as problemResponse } from "./problem-Cgp9-KZA.js";
|
|
3
|
-
import { r as InvalidSignatureError } from "./evaluations-DsAU9ppl.js";
|
|
4
|
-
//#region src/server/map-error.ts
|
|
5
|
-
/**
|
|
6
|
-
* Turns a thrown PermDock error into its Problem Details response. Returns
|
|
7
|
-
* `undefined` for anything else so the framework's own error path takes over.
|
|
8
|
-
*/
|
|
9
|
-
function problemFromError(error) {
|
|
10
|
-
if (error instanceof InvalidSignatureError) return error.response;
|
|
11
|
-
if (error instanceof PermDockDeniedError || error instanceof PermDockApprovalRequiredError) return problemResponse(error.toProblemDetails(), void 0, error.decision);
|
|
12
|
-
if (error instanceof PermDockRevokedError) return problemResponse(error.toProblemDetails(), void 0, error.decision);
|
|
13
|
-
if (error instanceof PermDockValidationError) return problemResponse(error.toProblemDetails());
|
|
14
|
-
}
|
|
15
|
-
//#endregion
|
|
16
|
-
export { problemFromError as t };
|
package/dist/may-use-CnFEjVEp.js
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { f as tenantOf, u as scopeList } from "./scopes-cKVp_WTw.js";
|
|
2
|
-
import { u as coveredByDelegation } from "./snapshot-DE8dE_hz.js";
|
|
3
|
-
//#region src/core/may-use.ts
|
|
4
|
-
function delegationMayCover(permission, delegation, hasActor) {
|
|
5
|
-
return [void 0, ...[...delegation?.access ?? [], ...delegation?.authorizationDetails ?? []].flatMap((entry) => typeof entry === "object" && entry !== null && typeof entry["identifier"] === "string" ? [entry["identifier"]] : [])].some((id) => coveredByDelegation(permission, delegation, id, hasActor) === void 0);
|
|
6
|
-
}
|
|
7
|
-
function blocksEveryRow(grant) {
|
|
8
|
-
return grant.effect === "deny" && grant.where === void 0 && grant.check === void 0 && grant.portable !== false && grant.fields === void 0 && (grant.scope === void 0 || grant.scope === "tenant");
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* Whether `permission` could be granted to this instance's subject for some
|
|
12
|
-
* row: the grants its snapshot carries for the active tenant, minus an
|
|
13
|
-
* unconditional deny, within its delegation. A listing hint for tools and
|
|
14
|
-
* skills, never a decision; the call itself is decided in full.
|
|
15
|
-
*/
|
|
16
|
-
function mayUse(permdock, permission) {
|
|
17
|
-
try {
|
|
18
|
-
const snapshot = permdock.snapshot();
|
|
19
|
-
if (!("grants" in snapshot)) return false;
|
|
20
|
-
const ceiling = snapshot.delegated;
|
|
21
|
-
if (ceiling !== void 0 && !ceiling.includes(permission.key)) return false;
|
|
22
|
-
if (!delegationMayCover(permission, permdock.subject.delegation, permdock.subject.actor !== void 0 && ceiling === void 0)) return false;
|
|
23
|
-
const tenant = permdock.subject.principal?.tenant;
|
|
24
|
-
const scopes = scopeList(snapshot.scopes);
|
|
25
|
-
const grants = snapshot.grants.filter((grant) => {
|
|
26
|
-
if (grant.permission !== permission.key) return false;
|
|
27
|
-
const owner = grant.membership === void 0 ? void 0 : tenantOf(grant.membership, scopes);
|
|
28
|
-
return owner === void 0 || owner === tenant;
|
|
29
|
-
});
|
|
30
|
-
if (grants.some(blocksEveryRow)) return false;
|
|
31
|
-
return grants.some((grant) => grant.effect === "allow");
|
|
32
|
-
} catch {
|
|
33
|
-
return false;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
//#endregion
|
|
37
|
-
export { mayUse as t };
|