permdock 0.0.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.
Files changed (344) hide show
  1. package/README.md +327 -1
  2. package/dist/a2a/index.d.ts +169 -0
  3. package/dist/a2a/index.js +232 -0
  4. package/dist/adapter-context-mlWsVGGg.js +23 -0
  5. package/dist/ai-sdk/index.d.ts +95 -0
  6. package/dist/ai-sdk/index.js +154 -0
  7. package/dist/approval-required-TzNB9oQA.js +6 -0
  8. package/dist/approvals/index.d.ts +3 -0
  9. package/dist/approvals/index.js +5 -0
  10. package/dist/approvals-DbYAuNkG.js +224 -0
  11. package/dist/approvers-DT4AVyIg.js +52 -0
  12. package/dist/arazzo-BAgw9ap6.js +70 -0
  13. package/dist/arazzo-cmvX2jDe.js +54 -0
  14. package/dist/authzen/index.d.ts +39 -0
  15. package/dist/authzen/index.js +302 -0
  16. package/dist/better-auth/index.d.ts +109 -0
  17. package/dist/better-auth/index.js +344 -0
  18. package/dist/better-supabase/index.d.ts +206 -0
  19. package/dist/better-supabase/index.js +620 -0
  20. package/dist/bind-CVy3Espv.d.ts +25 -0
  21. package/dist/bind-VnYn2HKq.js +97 -0
  22. package/dist/boundary-BM8a_P6E.js +13 -0
  23. package/dist/boundary-BmHxVH1J.d.ts +15 -0
  24. package/dist/budget-JqcRqyhK.d.ts +11 -0
  25. package/dist/budget-NbEtbJC_.js +11 -0
  26. package/dist/canonical-json-DemiK4Vp.js +26 -0
  27. package/dist/capability-4qPdO9gk.js +173 -0
  28. package/dist/capability-Dq43tT1u.d.ts +99 -0
  29. package/dist/catalog/index.d.ts +12 -0
  30. package/dist/catalog/index.js +2 -0
  31. package/dist/catalog-BjZSovXQ.js +2 -0
  32. package/dist/catalog-doc-Dsc9y7sd.js +309 -0
  33. package/dist/catalog-h2tlKFkq.js +48 -0
  34. package/dist/catalog-path-CnI0XTFK.js +12 -0
  35. package/dist/catalog-z8q6bi_r.js +55 -0
  36. package/dist/claude-agent/index.d.ts +72 -0
  37. package/dist/claude-agent/index.js +77 -0
  38. package/dist/clerk/index.d.ts +65 -0
  39. package/dist/clerk/index.js +301 -0
  40. package/dist/cli/bin.d.ts +1 -0
  41. package/dist/cli/bin.js +20 -0
  42. package/dist/cli/index.d.ts +46 -0
  43. package/dist/cli/index.js +5 -0
  44. package/dist/clients-C7zLFuWT.d.ts +12 -0
  45. package/dist/clients-DjU5ABMy.js +23 -0
  46. package/dist/cloud/index.d.ts +90 -0
  47. package/dist/cloud/index.js +404 -0
  48. package/dist/cloud-BGhHS-lY.js +50 -0
  49. package/dist/cloud-Bo3e9Ak3.js +118 -0
  50. package/dist/collect-DDDv_ESs.js +502 -0
  51. package/dist/collect-DLlujdHC.js +83 -0
  52. package/dist/collect-rG2IQ3t0.js +2 -0
  53. package/dist/commands-DWOrSQic.js +97 -0
  54. package/dist/compact-y6vfu2_f.js +19 -0
  55. package/dist/compare-pfyVnBjE.js +12 -0
  56. package/dist/compile/index.d.ts +3 -0
  57. package/dist/compile/index.js +2 -0
  58. package/dist/compile-Ba4blROR.js +613 -0
  59. package/dist/compile-CNnl6uIt.d.ts +94 -0
  60. package/dist/config-BJiM-xAm.js +157 -0
  61. package/dist/config-Bn00Z3ks.js +36 -0
  62. package/dist/config-report-Dw_JcUqT.js +44 -0
  63. package/dist/connection-CU8MQxRi.js +194 -0
  64. package/dist/context-Ttp0ekMT.js +82 -0
  65. package/dist/convex/index.d.ts +45 -0
  66. package/dist/convex/index.js +65 -0
  67. package/dist/create-BWyx3jua.d.ts +245 -0
  68. package/dist/create-CPhDL6qx.js +253 -0
  69. package/dist/credential-8P81ff4u.js +306 -0
  70. package/dist/delegation-D8pUEuce.js +103 -0
  71. package/dist/describe-B_gVZEVi.js +94 -0
  72. package/dist/describe-PdoqESvg.d.ts +36 -0
  73. package/dist/diff-B8Tunc3o.js +451 -0
  74. package/dist/diff-CzqLxZ77.js +48 -0
  75. package/dist/digest-B3kc_PgQ.d.ts +19 -0
  76. package/dist/digest-BI-6aa6d.js +27 -0
  77. package/dist/doctor-WpvG6p4k.js +1194 -0
  78. package/dist/doctor-collect-ByfYlNv1.js +664 -0
  79. package/dist/doctor-rOr-4ZfS.js +53 -0
  80. package/dist/drizzle/index.d.ts +73 -0
  81. package/dist/drizzle/index.js +160 -0
  82. package/dist/duration-xK2jGFVc.js +25 -0
  83. package/dist/elysia/index.d.ts +49 -0
  84. package/dist/elysia/index.js +59 -0
  85. package/dist/errors-CWfoNg9N.js +47 -0
  86. package/dist/errors-Cz5zn0mW.js +123 -0
  87. package/dist/errors-DAqevpNk.d.ts +125 -0
  88. package/dist/errors-DRnGZHzF.js +30 -0
  89. package/dist/evaluation-items-CfCCejQd.js +40 -0
  90. package/dist/evaluations-tz6D9A2G.js +461 -0
  91. package/dist/eve/index.d.ts +86 -0
  92. package/dist/eve/index.js +176 -0
  93. package/dist/expiry-BoBJ8Tvc.js +7 -0
  94. package/dist/express/index.d.ts +23 -0
  95. package/dist/express/index.js +78 -0
  96. package/dist/fastify/index.d.ts +33 -0
  97. package/dist/fastify/index.js +92 -0
  98. package/dist/fields-BMl1RxoX.js +26 -0
  99. package/dist/files-DWUN9PzI.js +125 -0
  100. package/dist/fixtures-ht28Cplr.js +67 -0
  101. package/dist/freeze-CrU8nQeX.js +60 -0
  102. package/dist/from-snapshot-C3sHpZNS.js +569 -0
  103. package/dist/generate-CH7ThJ14.js +173 -0
  104. package/dist/grantee-Cv5Sogfv.js +602 -0
  105. package/dist/graph-sql-B-dsAT6j.d.ts +29 -0
  106. package/dist/headers-BZSDieNT.js +6 -0
  107. package/dist/headers-Cf-zWvsO.d.ts +6 -0
  108. package/dist/helpers-H_KARDVC.js +421 -0
  109. package/dist/hono/index.d.ts +48 -0
  110. package/dist/hono/index.js +99 -0
  111. package/dist/hosted-DJQw46hn.js +266 -0
  112. package/dist/http-BIhmLfCc.js +95 -0
  113. package/dist/http-DPuDaChb.d.ts +13 -0
  114. package/dist/http-SO7qGttf.js +44 -0
  115. package/dist/ids-DC4V4CFu.js +18 -0
  116. package/dist/index-A0YNL8jZ.d.ts +177 -0
  117. package/dist/index-CtE07CBF.d.ts +6 -0
  118. package/dist/index-D3vbkoSI.d.ts +483 -0
  119. package/dist/index-D6_cSa1z.d.ts +201 -0
  120. package/dist/index.d.ts +16 -0
  121. package/dist/index.js +26 -0
  122. package/dist/instance-options-BK_rNOSC.d.ts +11 -0
  123. package/dist/instance-options-Dhhcnm3y.js +22 -0
  124. package/dist/json-schema-BsAflUGW.js +106 -0
  125. package/dist/jwt/index.d.ts +91 -0
  126. package/dist/jwt/index.js +590 -0
  127. package/dist/kernel-GSQnMz3O.js +208 -0
  128. package/dist/kysely/index.d.ts +78 -0
  129. package/dist/kysely/index.js +129 -0
  130. package/dist/live-options-H2eG8dfJ.js +60 -0
  131. package/dist/load-DhWEB9P1.js +75 -0
  132. package/dist/load-DwJUafYN.js +2 -0
  133. package/dist/load-jose-BL6LH4bL.js +11 -0
  134. package/dist/lru-8q4WZjBV.js +28 -0
  135. package/dist/manifest-iaoBXHKc.js +783 -0
  136. package/dist/manifest-uDS9y5de.d.ts +206 -0
  137. package/dist/map-AcxK9o_D.js +147 -0
  138. package/dist/map-claims-Z4QZOiFF.js +369 -0
  139. package/dist/map-error-pgUWNNtG.js +23 -0
  140. package/dist/markers-B0hYLvMD.js +60 -0
  141. package/dist/may-use-DndQ5tQ-.js +77 -0
  142. package/dist/mcp/index.d.ts +159 -0
  143. package/dist/mcp/index.js +603 -0
  144. package/dist/nest/index.d.ts +75 -0
  145. package/dist/nest/index.js +261 -0
  146. package/dist/next/client.d.ts +23 -0
  147. package/dist/next/client.js +33 -0
  148. package/dist/next/index.d.ts +93 -0
  149. package/dist/next/index.js +180 -0
  150. package/dist/next/plugin.d.ts +14 -0
  151. package/dist/next/plugin.js +33 -0
  152. package/dist/node/index.d.ts +24 -0
  153. package/dist/node/index.js +34 -0
  154. package/dist/openai/index.d.ts +62 -0
  155. package/dist/openai/index.js +92 -0
  156. package/dist/openapi/index.d.ts +176 -0
  157. package/dist/openapi/index.js +3 -0
  158. package/dist/openapi-Bbg4wGVL.js +164 -0
  159. package/dist/openapi-BqRBvAng.js +538 -0
  160. package/dist/openapi-CqqEbHsL.js +250 -0
  161. package/dist/openapi-import-cmwetbzw.js +5959 -0
  162. package/dist/openapi-schema--ARjyfQr.js +6902 -0
  163. package/dist/orpc/index.d.ts +51 -0
  164. package/dist/orpc/index.js +145 -0
  165. package/dist/otel/index.d.ts +13 -0
  166. package/dist/otel/index.js +202 -0
  167. package/dist/package-root-zGkxO3oN.js +30 -0
  168. package/dist/parse-BuyjxhZV.js +53 -0
  169. package/dist/parse-local-manifest-BkGQNzAh.d.ts +10 -0
  170. package/dist/parse-local-manifest-BrMozJCo.js +36 -0
  171. package/dist/pdp/index.d.ts +22 -0
  172. package/dist/pdp/index.js +682 -0
  173. package/dist/peer-BOr_kJE1.js +31 -0
  174. package/dist/permdock-CzqXjCpU.js +3471 -0
  175. package/dist/permissions-CDgvKG5L.d.ts +52 -0
  176. package/dist/permissions-CpZrivYv.js +142 -0
  177. package/dist/permissions-DVoF6dMt.js +662 -0
  178. package/dist/permissions-DttnqqxC.d.ts +214 -0
  179. package/dist/pins-8ILTftC9.js +12 -0
  180. package/dist/policy-CFZAr_Al.d.ts +2252 -0
  181. package/dist/policy-D8UFyERw.d.ts +20 -0
  182. package/dist/policy-xyWg7QdR.js +1122 -0
  183. package/dist/powersync-A8x_Yyvh.js +2 -0
  184. package/dist/powersync-C7kLglqX.js +540 -0
  185. package/dist/powersync-yW1UUFzp.js +62 -0
  186. package/dist/prisma/index.d.ts +136 -0
  187. package/dist/prisma/index.js +455 -0
  188. package/dist/problem-B43ztKIm.js +191 -0
  189. package/dist/problem-details-CkL50EEf.d.ts +7 -0
  190. package/dist/problem-details-_AMOYz-w.js +144 -0
  191. package/dist/prompt-CXYhLfsS.js +32 -0
  192. package/dist/protected-CNsMzrVd.d.ts +27 -0
  193. package/dist/protected-Cs6kTaHo.js +100 -0
  194. package/dist/protected-bZs6rbT1.d.ts +40 -0
  195. package/dist/provider-Cjr62YMV.d.ts +6 -0
  196. package/dist/provider-DLzpb2Xz.js +52 -0
  197. package/dist/provider-store-DNyC1y48.js +43 -0
  198. package/dist/react/index.d.ts +8 -0
  199. package/dist/react/index.js +7 -0
  200. package/dist/react/provider-client.d.ts +2 -0
  201. package/dist/react/provider-client.js +3 -0
  202. package/dist/react-native/index.d.ts +198 -0
  203. package/dist/react-native/index.js +696 -0
  204. package/dist/refs-KYb4ntaz.js +91 -0
  205. package/dist/relations-cjOL01hZ.js +505 -0
  206. package/dist/replay-BsOyTrdV.js +28 -0
  207. package/dist/replay-sqBGMnNs.d.ts +5 -0
  208. package/dist/resource-ref-CaS9yVPi.js +20 -0
  209. package/dist/revocations-Bhr0aMIC.js +27 -0
  210. package/dist/revocations-Cy06JNx2.d.ts +21 -0
  211. package/dist/rls-BMNydpHk.js +2521 -0
  212. package/dist/rls-CEvs64Kj.js +238 -0
  213. package/dist/rls-fields-BMasREhR.js +3502 -0
  214. package/dist/rls-graph-pc9fuXYm.js +435 -0
  215. package/dist/rls-import-D8F7j35Q.js +943 -0
  216. package/dist/rls-migrate-7wikfrVI.js +367 -0
  217. package/dist/rls-ownership-B5Lkq62W.js +843 -0
  218. package/dist/rls-shared-aOQ4hGTO.js +493 -0
  219. package/dist/rls-verify-D8B7dOTh.js +745 -0
  220. package/dist/row-check-Dt35czLy.d.ts +40 -0
  221. package/dist/rpc-DOK54_CS.js +89 -0
  222. package/dist/run-YXCJDNYk.js +174 -0
  223. package/dist/runtime-CB8gQFvS.js +11 -0
  224. package/dist/saas-Bj_FFkjN.js +1203 -0
  225. package/dist/schema-D3MnDMxa.js +300 -0
  226. package/dist/scim/index.d.ts +2 -0
  227. package/dist/scim/index.js +2 -0
  228. package/dist/scim-BFGBBAqR.js +1445 -0
  229. package/dist/scopes-CVdPrWN-.js +239 -0
  230. package/dist/server/index.d.ts +134 -0
  231. package/dist/server/index.js +11 -0
  232. package/dist/server-DlZ28Oz5.js +268 -0
  233. package/dist/sha256-BO0swRXL.js +150 -0
  234. package/dist/shared-DRu8VFVM.js +123 -0
  235. package/dist/sink-Bd9PSyfq.js +141 -0
  236. package/dist/sink-Gs6TTVa-.d.ts +104 -0
  237. package/dist/skills-Biq5uup3.js +192 -0
  238. package/dist/skills-JaymNCdK.js +56 -0
  239. package/dist/snapshot-Enxd0n-s.js +975 -0
  240. package/dist/snapshot-cache-D6jLelln.js +44 -0
  241. package/dist/snapshot-cache-DwQH8ufx.d.ts +45 -0
  242. package/dist/solid/index.d.ts +93 -0
  243. package/dist/solid/index.js +188 -0
  244. package/dist/sources-B0UvrJ21.js +534 -0
  245. package/dist/sources-BcJgw0lt.d.ts +192 -0
  246. package/dist/sql-xdg5f4Fi.js +27 -0
  247. package/dist/src-CSbUiozF.js +568 -0
  248. package/dist/ssf/index.d.ts +4 -0
  249. package/dist/ssf/index.js +596 -0
  250. package/dist/store-DMAWwAJV.js +371 -0
  251. package/dist/store-D_pjn91-.d.ts +36 -0
  252. package/dist/store-options-yO0V6gRn.js +716 -0
  253. package/dist/stores-4_sqiOA1.js +87 -0
  254. package/dist/stores-DVR5NHLE.d.ts +52 -0
  255. package/dist/stream-DDpvynSB.js +66 -0
  256. package/dist/stream-DlvG2hs-.d.ts +12 -0
  257. package/dist/style-CTm1AXDT.js +22 -0
  258. package/dist/subject-C6dLxqHU.js +24 -0
  259. package/dist/subject-settings-BwBmCdTR.js +128 -0
  260. package/dist/supabase/index.d.ts +183 -0
  261. package/dist/supabase/index.js +5 -0
  262. package/dist/supabase/middleware.d.ts +82 -0
  263. package/dist/supabase/middleware.js +102 -0
  264. package/dist/supabase-CwafwxxF.js +83 -0
  265. package/dist/supabase-DTBaC20O.js +774 -0
  266. package/dist/supabase-config-Bs44dare.js +472 -0
  267. package/dist/supabase-hook-BuxLQLpU.js +1814 -0
  268. package/dist/supabase-hook-D5qVd_D8.js +2 -0
  269. package/dist/supautils-DYZnzRWV.js +91 -0
  270. package/dist/svelte/PermissionBoundary.svelte +37 -0
  271. package/dist/svelte/Protected.svelte +40 -0
  272. package/dist/svelte/index.d.ts +13 -0
  273. package/dist/svelte/index.js +107 -0
  274. package/dist/svelte/runtime.d.ts +7 -0
  275. package/dist/svelte/runtime.js +4 -0
  276. package/dist/svelte/source.d.ts +13 -0
  277. package/dist/svelte/source.js +11 -0
  278. package/dist/terminal/index.d.ts +163 -0
  279. package/dist/terminal/index.js +833 -0
  280. package/dist/testing/index.d.ts +745 -0
  281. package/dist/testing/index.js +3672 -0
  282. package/dist/testing/saas/index.d.ts +194 -0
  283. package/dist/testing/saas/index.js +3 -0
  284. package/dist/testing/saas/permissions.d.ts +2 -0
  285. package/dist/testing/saas/permissions.js +2 -0
  286. package/dist/text-diff-BdkkYSbi.js +15 -0
  287. package/dist/thenable-okc2xDsj.js +10 -0
  288. package/dist/timeout-D51niuQP.js +8 -0
  289. package/dist/token-CIWxJOCh.js +50 -0
  290. package/dist/trpc/index.d.ts +61 -0
  291. package/dist/trpc/index.js +122 -0
  292. package/dist/types-9AWO9EGt.d.ts +197 -0
  293. package/dist/types-BPxgszlT.d.ts +550 -0
  294. package/dist/types-BVyImy5I.d.ts +120 -0
  295. package/dist/types-Bvc4oWT6.d.ts +9 -0
  296. package/dist/types-C3s9xVJG.d.ts +48 -0
  297. package/dist/types-Dnemwd77.d.ts +183 -0
  298. package/dist/types-kxznc7cn.d.ts +52 -0
  299. package/dist/types-vKyAMtcX.d.ts +157 -0
  300. package/dist/types-vNSDF7Dq.d.ts +66 -0
  301. package/dist/types-yF5LmQVD.d.ts +306 -0
  302. package/dist/unplugin/index.d.ts +7 -0
  303. package/dist/unplugin/index.js +31 -0
  304. package/dist/usage-D07N9QJ3.js +42 -0
  305. package/dist/usage-D82l1CwK.js +2 -0
  306. package/dist/usage-DG1oeCca.js +693 -0
  307. package/dist/validation-error-CnjZ4t92.js +33 -0
  308. package/dist/validation-error-CtF23SrC.d.ts +26 -0
  309. package/dist/validity-uOp8UpYn.js +245 -0
  310. package/dist/verifier-BxBo6I44.js +466 -0
  311. package/dist/version-BvacVTZR.js +17 -0
  312. package/dist/views-Soe7bGSC.js +95 -0
  313. package/dist/vocabulary-DA8a8zif.d.ts +56 -0
  314. package/dist/vue/index.d.ts +79 -0
  315. package/dist/vue/index.js +196 -0
  316. package/dist/watch-Etoa_Mvr.js +2 -0
  317. package/dist/watch-UihESpsJ.js +128 -0
  318. package/dist/webmcp/index.d.ts +75 -0
  319. package/dist/webmcp/index.js +307 -0
  320. package/package.json +450 -5
  321. package/rulesets/permdock.yaml +29 -0
  322. package/schemas/approval-request-v1.json +175 -0
  323. package/schemas/catalog-v1.json +535 -0
  324. package/schemas/openapi/oas-3.1.json +1298 -0
  325. package/schemas/openapi/oas-3.2.json +1516 -0
  326. package/schemas/openapi/overlay-1.1.json +79 -0
  327. package/schemas/supabase-claims-v1.json +144 -0
  328. package/schemas/supabase-manifest-v1.json +361 -0
  329. package/skills/permdock/SKILL.md +66 -0
  330. package/skills/permdock-agents/SKILL.md +77 -0
  331. package/skills/permdock-agents/references/runtimes.md +213 -0
  332. package/skills/permdock-approvals/SKILL.md +80 -0
  333. package/skills/permdock-approvals/references/stores-and-resume.md +94 -0
  334. package/skills/permdock-audit/SKILL.md +67 -0
  335. package/skills/permdock-credentials/SKILL.md +55 -0
  336. package/skills/permdock-credentials/references/tokens-keys-links.md +132 -0
  337. package/skills/permdock-data/SKILL.md +57 -0
  338. package/skills/permdock-data/references/queries-and-rls.md +62 -0
  339. package/skills/permdock-data/references/relationships.md +67 -0
  340. package/skills/permdock-tenancy/SKILL.md +80 -0
  341. package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +89 -0
  342. package/skills/permdock-wire/SKILL.md +116 -0
  343. package/skills/permdock-wire/references/adapters.md +492 -0
  344. package/skills/permdock-wire/references/policy-options.md +45 -0
@@ -0,0 +1,79 @@
1
+ import { Ft as TokenVerifier, Mr as Membership, Tt as Snapshot, Yn as Decision } from "../policy-CFZAr_Al.js";
2
+ import { f as Permission } from "../permissions-DttnqqxC.js";
3
+ import { r as Role } from "../vocabulary-DA8a8zif.js";
4
+ import { n as requiredPlans } from "../problem-details-CkL50EEf.js";
5
+ import { i as describe } from "../describe-PdoqESvg.js";
6
+ import { t as PermissionBoundaryState } from "../boundary-BmHxVH1J.js";
7
+ import { t as approvalHeaders } from "../headers-Cf-zWvsO.js";
8
+ import { a as FilterResult, c as SubjectView, i as ClientStatus, l as TenantView, n as ApprovalState, o as PermissionSet, r as ClientPermDock, s as PermissionState, t as ApprovalHandle, u as UseRolesOptions } from "../types-kxznc7cn.js";
9
+ import { ComputedRef, DefineComponent, MaybeRefOrGetter, Plugin } from "vue";
10
+ //#region src/vue/types.d.ts
11
+ type PermDockPluginOptions = {
12
+ /**
13
+ * A ref or getter re-hydrates the store when it changes; a promise keeps
14
+ * the store `pending` until it settles (await the same promise in an async
15
+ * `setup` under `<Suspense>`).
16
+ */
17
+ readonly snapshot: MaybeRefOrGetter<Snapshot | string> | PromiseLike<Snapshot | string>;
18
+ /**
19
+ * The AuthZEN evaluations endpoint for checks the snapshot cannot answer.
20
+ * `false` never calls one: such a check is denied with reason `server-only`.
21
+ */
22
+ readonly endpoint?: string | false;
23
+ /** Where `refresh()` fetches a fresh snapshot. Defaults to `endpoint`. */
24
+ readonly snapshotUrl?: string;
25
+ readonly approvals?: string;
26
+ /** A ref or getter switches the active tenant (`refresh({ tenant })`) when it changes. */
27
+ readonly tenant?: MaybeRefOrGetter<string | undefined>;
28
+ readonly fetch?: typeof fetch;
29
+ /** Read on every request: a ref or getter carries a rotated token without rebuilding the store. */
30
+ readonly headers?: MaybeRefOrGetter<Readonly<Record<string, string>> | undefined>;
31
+ readonly maxAge?: number;
32
+ /** Read on every verification; set it at install to verify signed snapshots. */
33
+ readonly verifier?: MaybeRefOrGetter<TokenVerifier | undefined>;
34
+ };
35
+ //#endregion
36
+ //#region src/vue/composables.d.ts
37
+ export declare function usePermDock(): ClientPermDock;
38
+ export declare function usePermission(permission: MaybeRefOrGetter<Permission>, data?: MaybeRefOrGetter<unknown>): {
39
+ readonly allowed: ComputedRef<boolean>;
40
+ readonly status: ComputedRef<PermissionState["status"]>;
41
+ readonly decision: ComputedRef<Decision>;
42
+ };
43
+ export declare function usePermissions(permissions: MaybeRefOrGetter<readonly Permission[]>, data?: MaybeRefOrGetter<unknown>): ComputedRef<PermissionSet>;
44
+ export declare function useFilter<T>(permission: Permission<string, T, "instance">, rows: MaybeRefOrGetter<readonly T[]>): ComputedRef<FilterResult<T>>;
45
+ export declare function useTenant(): ComputedRef<TenantView>;
46
+ export declare function useMemberships(): ComputedRef<readonly Membership[]>;
47
+ export declare function useRoles(options?: MaybeRefOrGetter<UseRolesOptions>): ComputedRef<{
48
+ readonly roles: readonly Role[];
49
+ }>;
50
+ export declare function useAssignableRoles(): ComputedRef<readonly Role[]>;
51
+ export declare function useAssignablePermissions(options?: MaybeRefOrGetter<{
52
+ readonly tenant?: string;
53
+ }>): ComputedRef<readonly Permission[]>;
54
+ export declare function useSubject(): ComputedRef<SubjectView>;
55
+ export declare function useApproval(decision: MaybeRefOrGetter<Decision>): ComputedRef<ApprovalHandle>;
56
+ //#endregion
57
+ //#region src/vue/boundary.d.ts
58
+ /**
59
+ * Catches `PermDockDeniedError` and `PermDockApprovalRequiredError` thrown
60
+ * by a descendant and renders the `denied` slot, or the `approval` slot for
61
+ * an approval request (default `denied`). The slots receive the refused
62
+ * permission and `retry()`. Any other error propagates.
63
+ */
64
+ export declare const PermissionBoundary: DefineComponent;
65
+ /** Inside a `PermissionBoundary`: what was refused and `retry()`, or `null` while the children render. */
66
+ export declare function usePermissionBoundary(): PermissionBoundaryState | null;
67
+ //#endregion
68
+ //#region src/vue/plugin.d.ts
69
+ export declare const permdockPlugin: Plugin<PermDockPluginOptions>;
70
+ //#endregion
71
+ //#region src/vue/protected.d.ts
72
+ type ProtectedProps = {
73
+ readonly permission: Permission;
74
+ readonly data?: unknown;
75
+ readonly tenant?: string;
76
+ };
77
+ export declare const Protected: DefineComponent<ProtectedProps>;
78
+ //#endregion
79
+ export { type ApprovalHandle, type ApprovalState, type ClientPermDock, type ClientStatus, type FilterResult, type PermDockPluginOptions, type PermissionBoundaryState, type PermissionSet, type PermissionState, type ProtectedProps, type SubjectView, type TenantView, type UseRolesOptions, approvalHeaders, describe, requiredPlans };
@@ -0,0 +1,196 @@
1
+ import { r as requiredPlans } from "../problem-details-_AMOYz-w.js";
2
+ import { t as describe } from "../describe-B_gVZEVi.js";
3
+ import { t as approvalHeaders } from "../headers-BZSDieNT.js";
4
+ import { i as isPromiseLike } from "../store-options-yO0V6gRn.js";
5
+ import { a as protectedView, c as subjectView, i as permissionSet, l as tenantView, n as filterResult, o as rolesView, r as livePermDock, s as scopedTenant, t as approvalHandle } from "../views-Soe7bGSC.js";
6
+ import { n as boundaryFallback, t as boundaryDigest } from "../boundary-BM8a_P6E.js";
7
+ import { n as switchTenant, t as providerStore } from "../provider-store-DNyC1y48.js";
8
+ import { computed, defineComponent, effectScope, getCurrentScope, inject, isRef, onErrorCaptured, onScopeDispose, provide, shallowRef, toValue, watch } from "vue";
9
+ //#region src/vue/context.ts
10
+ const permDockKey = Symbol("permdock");
11
+ //#endregion
12
+ //#region src/vue/composables.ts
13
+ function useStore() {
14
+ const store = inject(permDockKey);
15
+ if (store === void 0) throw new Error("PermDock: composables require permdockPlugin.");
16
+ return store;
17
+ }
18
+ function useTick(store) {
19
+ if (getCurrentScope() === void 0) throw new Error("PermDock: call composables in setup() or an effectScope, which removes their store subscription.");
20
+ const tick = shallowRef(0);
21
+ onScopeDispose(store.subscribe(() => {
22
+ tick.value += 1;
23
+ }));
24
+ return computed(() => {
25
+ tick.value;
26
+ return store.get();
27
+ });
28
+ }
29
+ function usePermDock() {
30
+ const permdock = useTick(useStore());
31
+ return livePermDock(() => permdock.value);
32
+ }
33
+ function usePermission(permission, data) {
34
+ const store = useStore();
35
+ const permdock = useTick(store);
36
+ const state = computed(() => {
37
+ permdock.value;
38
+ return store.permissionState(toValue(permission), toValue(data));
39
+ });
40
+ return {
41
+ allowed: computed(() => state.value.allowed),
42
+ status: computed(() => state.value.status),
43
+ decision: computed(() => state.value.decision)
44
+ };
45
+ }
46
+ function usePermissions(permissions, data) {
47
+ const store = useStore();
48
+ const permdock = useTick(store);
49
+ return computed(() => {
50
+ permdock.value;
51
+ return permissionSet(store, toValue(permissions), toValue(data));
52
+ });
53
+ }
54
+ function useFilter(permission, rows) {
55
+ const permdock = useTick(useStore());
56
+ return computed(() => filterResult(permdock.value, permission, toValue(rows)));
57
+ }
58
+ function useTenant() {
59
+ const permdock = useTick(useStore());
60
+ return computed(() => tenantView(permdock.value));
61
+ }
62
+ function useMemberships() {
63
+ const permdock = useTick(useStore());
64
+ return computed(() => permdock.value.memberships());
65
+ }
66
+ function useRoles(options = {}) {
67
+ const permdock = useTick(useStore());
68
+ return computed(() => rolesView(permdock.value, toValue(options)));
69
+ }
70
+ function useAssignableRoles() {
71
+ const permdock = useTick(useStore());
72
+ return computed(() => permdock.value.assignableRoles());
73
+ }
74
+ function useAssignablePermissions(options = {}) {
75
+ const permdock = useTick(useStore());
76
+ return computed(() => permdock.value.assignablePermissions(toValue(options)));
77
+ }
78
+ function useSubject() {
79
+ const permdock = useTick(useStore());
80
+ return computed(() => subjectView(permdock.value));
81
+ }
82
+ function useApproval(decision) {
83
+ const store = useStore();
84
+ const permdock = useTick(store);
85
+ return computed(() => {
86
+ permdock.value;
87
+ return approvalHandle(store, toValue(decision));
88
+ });
89
+ }
90
+ //#endregion
91
+ //#region src/vue/boundary.ts
92
+ const boundaryKey = Symbol("permdock-boundary");
93
+ /**
94
+ * Catches `PermDockDeniedError` and `PermDockApprovalRequiredError` thrown
95
+ * by a descendant and renders the `denied` slot, or the `approval` slot for
96
+ * an approval request (default `denied`). The slots receive the refused
97
+ * permission and `retry()`. Any other error propagates.
98
+ */
99
+ const PermissionBoundary = defineComponent({
100
+ name: "PermissionBoundary",
101
+ setup(_props, { slots }) {
102
+ const state = shallowRef(null);
103
+ provide(boundaryKey, state);
104
+ onErrorCaptured((error) => {
105
+ const digest = boundaryDigest(error);
106
+ if (digest === null) return;
107
+ state.value = {
108
+ ...digest,
109
+ retry: () => {
110
+ state.value = null;
111
+ }
112
+ };
113
+ return false;
114
+ });
115
+ return () => {
116
+ const current = state.value;
117
+ if (current === null) return slots["default"]?.() ?? null;
118
+ return boundaryFallback(current, {
119
+ denied: slots["denied"],
120
+ approval: slots["approval"]
121
+ })?.(current) ?? null;
122
+ };
123
+ }
124
+ });
125
+ /** Inside a `PermissionBoundary`: what was refused and `retry()`, or `null` while the children render. */
126
+ function usePermissionBoundary() {
127
+ return inject(boundaryKey, null)?.value ?? null;
128
+ }
129
+ //#endregion
130
+ //#region src/vue/plugin.ts
131
+ const permdockPlugin = { install(app, options) {
132
+ const source = options.snapshot;
133
+ const promised = isPromiseLike(source);
134
+ const store = providerStore({
135
+ ...options,
136
+ tenant: toValue(options.tenant)
137
+ }, () => ({
138
+ headers: toValue(options.headers),
139
+ fetch: options.fetch,
140
+ verifier: toValue(options.verifier)
141
+ }), promised ? source : toValue(source));
142
+ const scope = effectScope(true);
143
+ scope.run(() => {
144
+ if (!promised && (isRef(source) || typeof source === "function")) watch(() => toValue(source), (next) => {
145
+ store.replace(next);
146
+ });
147
+ const tenant = options.tenant;
148
+ if (isRef(tenant) || typeof tenant === "function") watch(() => toValue(tenant), (next) => {
149
+ switchTenant(store, next);
150
+ });
151
+ });
152
+ app.onUnmount(() => {
153
+ scope.stop();
154
+ store.dispose();
155
+ });
156
+ app.provide(permDockKey, store);
157
+ } };
158
+ //#endregion
159
+ //#region src/vue/protected.ts
160
+ const Protected = defineComponent({
161
+ name: "Protected",
162
+ props: {
163
+ permission: {
164
+ type: Object,
165
+ required: true
166
+ },
167
+ data: {
168
+ type: null,
169
+ required: false
170
+ },
171
+ tenant: {
172
+ type: String,
173
+ required: false
174
+ }
175
+ },
176
+ setup(props, { slots }) {
177
+ const local = usePermission(() => props.permission, () => props.data);
178
+ const root = usePermDock();
179
+ const scoped = computed(() => scopedTenant(root, props.tenant));
180
+ return () => {
181
+ const view = protectedView({
182
+ allowed: local.allowed.value,
183
+ status: local.status.value,
184
+ decision: local.decision.value
185
+ }, root, props.permission, props.data, scoped.value);
186
+ switch (view.slot) {
187
+ case "pending": return slots["pending"]?.() ?? null;
188
+ case "fallback": return slots["fallback"]?.({ decision: view.decision }) ?? null;
189
+ case "default": return slots["default"]?.({ decision: view.decision }) ?? null;
190
+ default: return view;
191
+ }
192
+ };
193
+ }
194
+ });
195
+ //#endregion
196
+ export { PermissionBoundary, Protected, approvalHeaders, describe, permdockPlugin, requiredPlans, useApproval, useAssignablePermissions, useAssignableRoles, useFilter, useMemberships, usePermDock, usePermission, usePermissionBoundary, usePermissions, useRoles, useSubject, useTenant };
@@ -0,0 +1,2 @@
1
+ import { n as createCollectScheduler } from "./watch-UihESpsJ.js";
2
+ export { createCollectScheduler };
@@ -0,0 +1,128 @@
1
+ import { i as describeError } from "./errors-CWfoNg9N.js";
2
+ import { t as defaultSrcPath } from "./files-DWUN9PzI.js";
3
+ import { r as runCollect } from "./collect-DDDv_ESs.js";
4
+ import { n as isConfigFile, r as loadConfig } from "./config-BJiM-xAm.js";
5
+ import { watch } from "node:fs";
6
+ import { basename, dirname, relative, resolve, sep } from "node:path";
7
+ //#region src/cli/watch.ts
8
+ const DEBOUNCE_MS = 50;
9
+ function report(message) {
10
+ if (message !== void 0) process.stderr.write(`permdock: ${message}\n`);
11
+ }
12
+ function watchRoot(cwd, entry) {
13
+ const wildcard = entry.search(/[*?[{]/u);
14
+ return resolve(cwd, wildcard === -1 ? entry : dirname(`${entry.slice(0, wildcard)}x`));
15
+ }
16
+ function within(dirs, file) {
17
+ return dirs.some((dir) => {
18
+ const path = relative(dir, file);
19
+ return path !== "" && !path.startsWith("..") && !path.startsWith(sep);
20
+ });
21
+ }
22
+ async function collectOnce(cwd, options, check, fresh, configFile) {
23
+ const config = await loadConfig(cwd, configFile, { fresh });
24
+ const collect = {
25
+ ...config.collect,
26
+ ...options?.collect
27
+ };
28
+ const result = await runCollect({
29
+ cwd,
30
+ config,
31
+ collect,
32
+ check,
33
+ now: /* @__PURE__ */ new Date(),
34
+ fresh
35
+ });
36
+ const inputs = [
37
+ configFile,
38
+ config.permissions,
39
+ config.policy
40
+ ].filter((path) => path !== void 0).map((path) => resolve(cwd, path));
41
+ const sources = (collect.srcPath ?? defaultSrcPath()).map((entry) => watchRoot(cwd, entry));
42
+ const run = {
43
+ written: result.written ?? [],
44
+ inputs,
45
+ sources
46
+ };
47
+ if (result.code === 0) return {
48
+ message: void 0,
49
+ ...run
50
+ };
51
+ if (check && options?.onDrift !== "warn" && result.code === 1) throw new Error(result.message);
52
+ return {
53
+ message: result.message,
54
+ ...run
55
+ };
56
+ }
57
+ function createCollectScheduler(cwd, options, settings) {
58
+ const log = settings?.report ?? report;
59
+ let loaded = false;
60
+ let ignored = /* @__PURE__ */ new Set();
61
+ let inputs = [];
62
+ let sources = (options?.collect?.srcPath ?? defaultSrcPath()).map((entry) => watchRoot(cwd, entry));
63
+ let running = false;
64
+ let pending = false;
65
+ let timer;
66
+ const watchers = [];
67
+ async function run(check) {
68
+ const fresh = loaded;
69
+ loaded = true;
70
+ const result = await collectOnce(cwd, options, check, fresh, settings?.configFile);
71
+ ignored = new Set(result.written);
72
+ inputs = result.inputs;
73
+ sources = result.sources;
74
+ return result.message;
75
+ }
76
+ async function drain() {
77
+ running = true;
78
+ while (pending) {
79
+ pending = false;
80
+ try {
81
+ log(await run(false));
82
+ } catch (error) {
83
+ log(describeError(error));
84
+ }
85
+ }
86
+ running = false;
87
+ }
88
+ function changed(file) {
89
+ if (file !== void 0 && ignored.has(resolve(cwd, file))) return;
90
+ pending = true;
91
+ if (running) return;
92
+ clearTimeout(timer);
93
+ timer = setTimeout(() => {
94
+ drain();
95
+ }, DEBOUNCE_MS);
96
+ }
97
+ function watchDir(dir, recursive, accept) {
98
+ try {
99
+ watchers.push(watch(dir, { recursive }, (_event, name) => {
100
+ if (name === null) {
101
+ changed(void 0);
102
+ return;
103
+ }
104
+ const file = resolve(dir, name);
105
+ if (accept(file)) changed(file);
106
+ }));
107
+ } catch {}
108
+ }
109
+ function startWatch() {
110
+ if (watchers.length > 0) return;
111
+ for (const dir of sources) watchDir(dir, true, () => true);
112
+ const loose = inputs.filter((file) => !within(sources, file));
113
+ const dirs = /* @__PURE__ */ new Set([cwd, ...loose.map((file) => dirname(file))]);
114
+ for (const dir of dirs) watchDir(dir, false, (file) => loose.includes(file) || dir === cwd && isConfigFile(basename(file)));
115
+ }
116
+ function close() {
117
+ clearTimeout(timer);
118
+ for (const watcher of watchers.splice(0)) watcher.close();
119
+ }
120
+ return {
121
+ run,
122
+ changed,
123
+ watch: startWatch,
124
+ close
125
+ };
126
+ }
127
+ //#endregion
128
+ export { createCollectScheduler as n, report as r, collectOnce as t };
@@ -0,0 +1,75 @@
1
+ import { Tt as Snapshot, Yn as Decision } from "../policy-CFZAr_Al.js";
2
+ import { f as Permission, m as PermissionTree } from "../permissions-DttnqqxC.js";
3
+ import { StandardSchemaV1 } from "@standard-schema/spec";
4
+ //#region src/webmcp/types.d.ts
5
+ type WebMcpClientStatus = "ready" | "pending" | "stale" | "server-only";
6
+ type WebMcpPermDock = {
7
+ can(permission: Permission, data?: unknown): boolean;
8
+ decide(permission: Permission, data?: unknown): Decision;
9
+ snapshot(): Snapshot | string | Promise<Snapshot | string>;
10
+ tenant?(id: string): WebMcpPermDock;
11
+ subscribe?(listener: () => void): () => void;
12
+ status?(permission?: Permission, data?: unknown): WebMcpClientStatus;
13
+ };
14
+ type WebMcpToolContent = {
15
+ readonly type: "text";
16
+ readonly text: string;
17
+ };
18
+ type WebMcpToolResult = {
19
+ readonly isError?: boolean;
20
+ readonly content: readonly WebMcpToolContent[];
21
+ readonly structuredContent?: Readonly<Record<string, unknown>>;
22
+ };
23
+ type WebMcpToolCall = {
24
+ /** Validated arguments with the tenant key bound. */
25
+ readonly input: unknown;
26
+ /** The decision token; send it as `PermDock-Approval` so the server resumes. */
27
+ readonly token: string | undefined;
28
+ };
29
+ type WebMcpToolHandler = (call: WebMcpToolCall) => Promise<unknown>;
30
+ type WebMcpToolAnnotations = {
31
+ readonly readOnlyHint?: boolean;
32
+ readonly untrustedContentHint?: boolean;
33
+ };
34
+ type WebMcpRegisteredTool = {
35
+ readonly name: string;
36
+ readonly title?: string;
37
+ readonly description?: string;
38
+ readonly inputSchema?: Readonly<Record<string, unknown>>;
39
+ readonly annotations?: WebMcpToolAnnotations;
40
+ execute(input: unknown): Promise<WebMcpToolResult>;
41
+ };
42
+ type ModelContext = {
43
+ registerTool(tool: WebMcpRegisteredTool, options?: {
44
+ readonly signal?: AbortSignal;
45
+ }): {
46
+ readonly unregister?: () => void;
47
+ };
48
+ };
49
+ type WebMcpApprovalRequest = {
50
+ readonly permission: Permission;
51
+ readonly decision: Extract<Decision, {
52
+ readonly outcome: "approval-required";
53
+ }>;
54
+ readonly input: unknown;
55
+ };
56
+ type RegisterToolsOptions = {
57
+ readonly permdock: WebMcpPermDock;
58
+ readonly handlers?: Readonly<Record<string, WebMcpToolHandler>>;
59
+ readonly signal?: AbortSignal;
60
+ readonly tenant?: string;
61
+ readonly tenantKey?: string;
62
+ readonly schema?: StandardSchemaV1;
63
+ readonly untrustedContentHint?: boolean;
64
+ readonly onApprovalRequired?: (request: WebMcpApprovalRequest) => Promise<boolean | undefined>;
65
+ readonly warn?: (message: string) => void;
66
+ };
67
+ type RegisterToolsHandle = {
68
+ readonly unregister: () => void;
69
+ };
70
+ type PermissionGroup = PermissionTree | Permission;
71
+ //#endregion
72
+ //#region src/webmcp/register.d.ts
73
+ export declare function registerTools(modelContext: ModelContext | null | undefined, group: PermissionGroup, options: RegisterToolsOptions): RegisterToolsHandle;
74
+ //#endregion
75
+ export type { ModelContext, PermissionGroup, RegisterToolsHandle, RegisterToolsOptions, WebMcpApprovalRequest, WebMcpClientStatus, WebMcpPermDock, WebMcpRegisteredTool, WebMcpToolAnnotations, WebMcpToolCall, WebMcpToolHandler, WebMcpToolResult };