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,48 @@
1
+ import { Ft as TokenVerifier, Tt as Snapshot, Yn as Decision } from "./policy-CFZAr_Al.js";
2
+ import { f as Permission } from "./permissions-DttnqqxC.js";
3
+ import { ReactNode } from "react";
4
+ //#region src/react/types.d.ts
5
+ type PermDockProviderProps = ({
6
+ readonly snapshot: Snapshot | string;
7
+ readonly snapshotPromise?: never;
8
+ } | {
9
+ /**
10
+ * An unawaited snapshot from a Server Component. Hooks never suspend on it: until it
11
+ * resolves they deny with `status: 'pending'`, then re-render. A rejection fails closed
12
+ * (`server-only`). Set `suspend` to suspend readers through `use()` instead.
13
+ */
14
+ readonly snapshotPromise: PromiseLike<Snapshot | string>;
15
+ readonly snapshot?: never;
16
+ }) & {
17
+ /**
18
+ * With `snapshotPromise`: `true` suspends every hook to the nearest Suspense boundary until it
19
+ * resolves, and a rejection reaches the nearest error boundary. Defaults to `false`.
20
+ */
21
+ readonly suspend?: boolean;
22
+ /**
23
+ * The AuthZEN evaluations endpoint for checks the snapshot cannot answer. `false` never
24
+ * fetches: those checks answer `denied` with reason `server-only`.
25
+ */
26
+ readonly endpoint?: string | false;
27
+ /** Where `refresh()` fetches a fresh snapshot. Defaults to `endpoint`. */
28
+ readonly snapshotUrl?: string;
29
+ readonly approvals?: string;
30
+ readonly tenant?: string;
31
+ readonly fetch?: typeof fetch;
32
+ readonly headers?: Readonly<Record<string, string>>;
33
+ readonly maxAge?: number;
34
+ readonly verifier?: TokenVerifier;
35
+ readonly children: ReactNode;
36
+ };
37
+ type ProtectedProps = {
38
+ readonly permission: Permission;
39
+ readonly data?: unknown;
40
+ readonly tenant?: string;
41
+ readonly pending?: ReactNode;
42
+ readonly fallback?: ReactNode | ((decision: Decision) => ReactNode);
43
+ readonly children: ReactNode | ((decision: Extract<Decision, {
44
+ readonly outcome: "granted";
45
+ }>) => ReactNode);
46
+ };
47
+ //#endregion
48
+ export { ProtectedProps as n, PermDockProviderProps as t };
@@ -0,0 +1,183 @@
1
+ import { S as ResourceRelation } from "./permissions-DttnqqxC.js";
2
+ //#region src/catalog/types.d.ts
3
+ type CatalogUsage = {
4
+ readonly file: string;
5
+ readonly line: number;
6
+ readonly call: string;
7
+ };
8
+ type CatalogPermission = {
9
+ readonly key: string;
10
+ readonly scope: string;
11
+ readonly resource: string;
12
+ readonly action: string;
13
+ readonly arity: "instance" | "collection";
14
+ readonly meta: Readonly<Record<string, unknown>>;
15
+ readonly usages: readonly CatalogUsage[];
16
+ /** Keys the permission was renamed from (`definePermissions` `renamed`), sorted; absent when none. */
17
+ readonly renamedFrom?: readonly string[];
18
+ /** Level names a custom role may pick for the permission (`resource(…, { levels })`); absent when none. */
19
+ readonly levels?: readonly string[];
20
+ /** Present only when the policy lists the permission in `hostable`. */
21
+ readonly hostable?: true;
22
+ /**
23
+ * `true` when a code grant for the key has a condition beyond role and
24
+ * scope, so the SQL helpers alone cannot enforce it, and when the catalog
25
+ * was built without the policy, which leaves it unknown.
26
+ */
27
+ readonly rowConditions: boolean;
28
+ /** The approvals code allows on this permission require; a hosted grant must meet each. */
29
+ readonly approvals?: readonly CatalogApproval[];
30
+ /** Present when a `breakGlass` override targets this permission. */
31
+ readonly breakGlass?: CatalogBreakGlass;
32
+ };
33
+ /** A break-glass override as the catalog carries it. */
34
+ type CatalogBreakGlass = {
35
+ readonly overrides: readonly string[];
36
+ readonly purpose?: readonly string[];
37
+ readonly reason: boolean;
38
+ readonly maxDuration?: string;
39
+ readonly obligations: readonly string[];
40
+ };
41
+ type CatalogApproval = "human" | {
42
+ readonly by?: unknown;
43
+ readonly mode?: "any" | "all" | "sequential";
44
+ readonly stages?: readonly {
45
+ readonly by: unknown;
46
+ readonly quorum?: number;
47
+ }[];
48
+ readonly distinct?: boolean;
49
+ readonly staleOn?: "resource-change";
50
+ readonly quorum?: number;
51
+ readonly ttl?: string;
52
+ readonly escalation?: {
53
+ readonly after: string;
54
+ readonly to: unknown;
55
+ };
56
+ };
57
+ type CatalogResource = {
58
+ readonly id: string;
59
+ readonly schema: unknown;
60
+ readonly definedIn?: string;
61
+ readonly relations?: Readonly<Record<string, ResourceRelation>>;
62
+ /** The row field an `approval: { staleOn: 'resource-change' }` binds to. */
63
+ readonly version?: string;
64
+ /** The boolean column that keeps ancestor grants out of a row. */
65
+ readonly restricted?: string;
66
+ readonly restrictedStops?: readonly string[];
67
+ };
68
+ type CatalogRole = {
69
+ readonly key: string;
70
+ /** A declared scope name, or `resource`; absent for a global role. */
71
+ readonly on?: string;
72
+ readonly assignable?: boolean;
73
+ /** Fewest holders per scope instance; absent when 0. */
74
+ readonly min?: number;
75
+ readonly max?: number;
76
+ readonly transferOnly?: true;
77
+ readonly assigns?: readonly string[];
78
+ /** Membership kinds (`via`) that may hold the role. */
79
+ readonly for?: readonly string[];
80
+ readonly exclusiveWith?: readonly string[];
81
+ readonly audience?: string;
82
+ /** Present when the role is eligible-only and activated with `permdock.activate`. */
83
+ readonly activation?: CatalogActivation;
84
+ /** Present when the role is a `supportAccess` role. */
85
+ readonly supportAccess?: CatalogSupportAccess;
86
+ };
87
+ /** A role activation as the catalog carries it. */
88
+ type CatalogActivation = {
89
+ readonly maxDuration?: string;
90
+ readonly justification: "required" | "optional";
91
+ readonly approval?: boolean;
92
+ readonly assurance?: {
93
+ readonly maxAge?: number;
94
+ readonly acr?: readonly string[];
95
+ readonly amr?: readonly string[];
96
+ };
97
+ };
98
+ /** A support-access role as the catalog carries it. */
99
+ type CatalogSupportAccess = {
100
+ readonly actorRequired: boolean;
101
+ readonly group: string;
102
+ readonly durations: readonly string[];
103
+ };
104
+ /** One declared scope, in declaration order. */
105
+ type CatalogScope = {
106
+ readonly name: string;
107
+ readonly key: string;
108
+ readonly within?: string;
109
+ };
110
+ /** A grant's `validFrom` / `validUntil` window in Unix seconds. */
111
+ type CatalogValidity = {
112
+ readonly from?: number;
113
+ readonly until?: number;
114
+ };
115
+ /**
116
+ * One code grant as the catalog carries it: the normalised shape
117
+ * `definePolicy` produced, minus closures. `permdock diff` compares these;
118
+ * a hosted document is authored against them.
119
+ */
120
+ type CatalogGrant = {
121
+ readonly permission: string;
122
+ readonly effect: "allow" | "deny";
123
+ /** The role binding the grant came from; `null` for a top-level grant. */
124
+ readonly role: string | null;
125
+ /** The grantee selector, or an array for an intersection, in its JSON form. */
126
+ readonly to: unknown;
127
+ /** `global`, a declared scope name, or `{ resource }`. */
128
+ readonly scope: string | {
129
+ readonly resource: string;
130
+ };
131
+ /** Portable condition on the current row; absent on a non-portable grant. */
132
+ readonly where?: unknown;
133
+ /** Portable condition on the next row; absent on a non-portable grant. */
134
+ readonly check?: unknown;
135
+ readonly approval?: CatalogApproval;
136
+ readonly fields?: readonly string[];
137
+ readonly validity?: CatalogValidity;
138
+ readonly name?: string;
139
+ readonly purpose?: readonly string[];
140
+ /** The permission key the subject must also hold through a role on the row's scope instance (`requires`). */
141
+ readonly requires?: string | readonly string[];
142
+ readonly limit?: {
143
+ readonly count: number;
144
+ readonly per: string;
145
+ readonly mode?: "hard" | "soft";
146
+ };
147
+ /** Present when the grant is a closure, reads the relation graph or is opaque; `where` and `check` are then omitted. */
148
+ readonly portable?: false;
149
+ };
150
+ /** `permissions.catalog.json`, validated by `schemas/catalog-v1.json`. */
151
+ type CatalogDocument = {
152
+ readonly $schema: string;
153
+ readonly version: 1;
154
+ readonly generatedAt: string;
155
+ readonly generator: string;
156
+ /** `catalogFingerprint` of this document; what hosted documents pin as `catalog`. */
157
+ readonly fingerprint?: string;
158
+ readonly resources: Readonly<Record<string, CatalogResource>>;
159
+ readonly permissions: readonly CatalogPermission[];
160
+ /** The policy's scopes in order; absent when it declares none. */
161
+ readonly scopes?: readonly CatalogScope[];
162
+ readonly roles?: readonly CatalogRole[];
163
+ readonly plans?: readonly {
164
+ readonly key: string;
165
+ }[];
166
+ /** Every code grant, canonically ordered; present when the catalog was built with the policy. */
167
+ readonly grants?: readonly CatalogGrant[];
168
+ /** The policy's standing delegations, canonically ordered; present when the policy declares any. */
169
+ readonly delegations?: readonly CatalogDelegation[];
170
+ };
171
+ /** One `definePolicy({ delegations })` entry: who hands over, to which actor, which permission keys, and when. */
172
+ type CatalogDelegation = {
173
+ readonly from: unknown;
174
+ readonly to: {
175
+ readonly kind: string;
176
+ readonly id?: string;
177
+ readonly client?: string;
178
+ };
179
+ readonly permissions: readonly string[];
180
+ readonly validity?: CatalogValidity;
181
+ };
182
+ //#endregion
183
+ export { CatalogDocument as a, CatalogResource as c, CatalogSupportAccess as d, CatalogUsage as f, CatalogDelegation as i, CatalogRole as l, CatalogApproval as n, CatalogGrant as o, CatalogValidity as p, CatalogBreakGlass as r, CatalogPermission as s, CatalogActivation as t, CatalogScope as u };
@@ -0,0 +1,52 @@
1
+ import { Cr as Actor, D as PolicyVocabulary, Nr as Principal, Yn as Decision, kr as Delegation, ln as PermDock } from "./policy-CFZAr_Al.js";
2
+ import { f as Permission } from "./permissions-DttnqqxC.js";
3
+ //#region src/client/types.d.ts
4
+ type ClientStatus = "ready" | "pending" | "stale" | "server-only";
5
+ type PermissionState = {
6
+ readonly allowed: boolean;
7
+ readonly status: ClientStatus;
8
+ readonly decision: Decision;
9
+ };
10
+ type PermissionSet = {
11
+ readonly granted: readonly Permission[];
12
+ get(permission: Permission): PermissionState | undefined;
13
+ };
14
+ type ClientPermDock<V extends PolicyVocabulary = PolicyVocabulary> = PermDock<V> & {
15
+ status(permission?: Permission, data?: unknown): ClientStatus;
16
+ invalidate(ref: Permission | {
17
+ readonly [key: string]: unknown;
18
+ }): void;
19
+ refresh(options?: {
20
+ readonly tenant?: string;
21
+ }): Promise<void>;
22
+ clear(): void;
23
+ subscribe(listener: () => void): () => void;
24
+ };
25
+ type ApprovalState = "not-needed" | "required" | "pending" | "approved" | "rejected" | "expired";
26
+ type ApprovalHandle = {
27
+ readonly state: ApprovalState;
28
+ readonly token: string | undefined;
29
+ readonly request: (note?: string) => Promise<void>;
30
+ };
31
+ type SubjectView = {
32
+ readonly principal: Principal | null;
33
+ readonly actor: Actor | undefined;
34
+ readonly delegation: Delegation | undefined;
35
+ readonly expiresAt: number | undefined;
36
+ readonly simulated: boolean;
37
+ };
38
+ type TenantView = {
39
+ readonly tenant: string | null;
40
+ readonly tenants: readonly string[];
41
+ readonly switchTo: (id: string) => Promise<void>;
42
+ readonly status: ClientStatus;
43
+ };
44
+ type FilterResult<T> = readonly T[] & {
45
+ readonly partial: boolean;
46
+ };
47
+ type UseRolesOptions = {
48
+ readonly tenant?: string;
49
+ readonly team?: string;
50
+ };
51
+ //#endregion
52
+ export { FilterResult as a, SubjectView as c, ClientStatus as i, TenantView as l, ApprovalState as n, PermissionSet as o, ClientPermDock as r, PermissionState as s, ApprovalHandle as t, UseRolesOptions as u };
@@ -0,0 +1,157 @@
1
+ import { G as Approver, Mr as Membership, Pr as Subject, dr as RelationGrantee, o as ApprovalStage, r as ApprovalMode } from "./policy-CFZAr_Al.js";
2
+ //#region src/approvals/types.d.ts
3
+ type ApprovalStatus = "pending" | "approved" | "rejected" | "expired";
4
+ type ApprovalApprovers = {
5
+ /** Under `mode: 'any'` (the default). */
6
+ readonly by?: Approver | readonly Approver[];
7
+ readonly mode?: ApprovalMode;
8
+ /** Under `mode: 'all'` or `'sequential'`. */
9
+ readonly stages?: readonly ApprovalStage[];
10
+ /** `false` lets the request's principal approve it; absent means `true`. */
11
+ readonly distinct?: boolean;
12
+ /** Set when the approval no longer applies once the row's `version` changes. */
13
+ readonly staleOn?: "resource-change";
14
+ /** Distinct approvers of `by` needed before `status` becomes `approved`; absent means 1. */
15
+ readonly quorum?: number;
16
+ /** Who else may approve once the request has waited `after` (a duration such as `'4h'`) since `createdAt`. */
17
+ readonly escalation?: {
18
+ readonly after: string;
19
+ readonly to: Approver | readonly Approver[];
20
+ };
21
+ };
22
+ /** One recorded approval: who gave it, when, and under `stages` the index of the stage it counts for. */
23
+ type ApprovalSignature = {
24
+ readonly by: string;
25
+ readonly at: string;
26
+ readonly stage?: number;
27
+ readonly vouched?: string;
28
+ };
29
+ type ApprovalSubjectSummary = {
30
+ readonly principal: {
31
+ readonly id: string;
32
+ readonly roles: readonly string[];
33
+ readonly tenant?: string;
34
+ } | null;
35
+ readonly actor?: {
36
+ readonly id: string;
37
+ readonly kind: string;
38
+ };
39
+ readonly session?: string;
40
+ readonly delegation?: {
41
+ readonly scopes?: readonly string[];
42
+ readonly authorizationDetails?: readonly unknown[];
43
+ };
44
+ };
45
+ type ApprovalRequest = {
46
+ readonly v: 1;
47
+ readonly token: string;
48
+ readonly permission: string;
49
+ readonly scope: string;
50
+ readonly resource: {
51
+ readonly type: string;
52
+ readonly id?: string;
53
+ };
54
+ readonly subject: ApprovalSubjectSummary;
55
+ readonly membership?: Membership;
56
+ readonly approvers?: ApprovalApprovers;
57
+ readonly detail: string;
58
+ readonly adapter?: string;
59
+ readonly createdAt: string;
60
+ readonly expiresAt: string;
61
+ readonly status: ApprovalStatus;
62
+ /** Approvals given so far, oldest first; the request is `approved` once there are `approvers.quorum` of them. */
63
+ readonly approvals?: readonly ApprovalSignature[];
64
+ readonly resolvedAt?: string;
65
+ /** The approver whose verdict resolved the request (the last of `approvals` on a quorum), or `system:<by>` for a cancellation. */
66
+ readonly resolvedBy?: string;
67
+ readonly vouched?: string;
68
+ readonly note?: string;
69
+ readonly consumedAt?: string;
70
+ };
71
+ type ApprovalVerdict = {
72
+ readonly status: "approved" | "rejected";
73
+ readonly by: Subject;
74
+ readonly note?: string;
75
+ /**
76
+ * The relation approvers (by `approverRelationKey`) that `by` holds on the
77
+ * request's resource, as `approverRelations` read them. Server-side input:
78
+ * set it from a `RelationSource`, never from the request body. Absent means
79
+ * none, so relation approvers match nobody.
80
+ */
81
+ readonly relations?: readonly string[];
82
+ /**
83
+ * The `holder(permission)` approvers (by permission key) that `by` holds
84
+ * in the request's tenant, as `approverPermissions` read them from the
85
+ * approver's own instance. Server-side input, never from the request body.
86
+ * Absent means none, so permission approvers match nobody.
87
+ */
88
+ readonly permissions?: readonly string[];
89
+ readonly vouched?: string;
90
+ };
91
+ type ApprovalListFilter = {
92
+ readonly status?: ApprovalStatus;
93
+ readonly principalId?: string;
94
+ readonly actorId?: string;
95
+ readonly tenant?: string;
96
+ readonly session?: string;
97
+ };
98
+ type ApprovalListQuery = ApprovalListFilter & {
99
+ /** Page size, 1 to 200; 50 when omitted. */
100
+ readonly limit?: number;
101
+ /** The `next` of the previous page; opaque to the caller. */
102
+ readonly cursor?: string;
103
+ };
104
+ /**
105
+ * One page, oldest `createdAt` first. `next` is absent on the last page; an
106
+ * unreadable cursor yields an empty last page.
107
+ */
108
+ type ApprovalPage = {
109
+ readonly items: readonly ApprovalRequest[];
110
+ readonly next?: string;
111
+ };
112
+ type ApprovalCancelMeta = {
113
+ readonly by: string;
114
+ readonly note?: string;
115
+ };
116
+ type ApprovalStore = {
117
+ /**
118
+ * How long a request opened against this store stays open, in
119
+ * milliseconds, when the caller sets no `ttl`; absent means
120
+ * `DEFAULT_APPROVAL_TTL_MS`. A grant's `approval.ttl` still caps it.
121
+ */
122
+ readonly ttl?: number;
123
+ create(request: ApprovalRequest): Promise<void> | void;
124
+ get(token: string): Promise<ApprovalRequest | null> | ApprovalRequest | null;
125
+ resolve(token: string, verdict: ApprovalVerdict): Promise<ApprovalRequest> | ApprovalRequest;
126
+ list(query: ApprovalListQuery): Promise<ApprovalPage> | ApprovalPage;
127
+ expire(now?: Date): Promise<number> | number;
128
+ /**
129
+ * Marks an approved, unexpired, unconsumed request consumed and returns it;
130
+ * returns `null` otherwise. Must be atomic: two concurrent calls for one
131
+ * token never both return the request.
132
+ */
133
+ consume(token: string, now?: Date): Promise<ApprovalRequest | null> | ApprovalRequest | null;
134
+ cancel?(filter: ApprovalListFilter, meta: ApprovalCancelMeta): Promise<number> | number;
135
+ };
136
+ type ApprovalResumeFailure = "approval-not-found" | "approval-pending" | "approval-rejected" | "approval-expired" | "approval-consumed";
137
+ type ApprovalInspectResult = {
138
+ readonly ok: true;
139
+ readonly request: ApprovalRequest;
140
+ } | {
141
+ readonly ok: false;
142
+ readonly detail: ApprovalResumeFailure;
143
+ };
144
+ declare const APPROVAL_HEADER: "PermDock-Approval";
145
+ declare const DEFAULT_APPROVAL_TTL_MS: number;
146
+ /** The approvals a request needs in total: `approvers.quorum` (or 1), or the sum of its stages' quorums. */
147
+ declare function approvalQuorum(request: ApprovalRequest): number;
148
+ /**
149
+ * The instant from which `approvers.escalation.to` may approve, in epoch
150
+ * milliseconds, or `undefined` when the request has no escalation or its
151
+ * `after` does not parse (then nobody escalates: fail-closed).
152
+ */
153
+ declare function escalationOpenAt(request: ApprovalRequest): number | undefined;
154
+ /** The key a verdict's `relations` lists a relation approver under. */
155
+ declare function approverRelationKey(item: RelationGrantee): string;
156
+ //#endregion
157
+ export { approverRelationKey as _, ApprovalListFilter as a, ApprovalRequest as c, ApprovalStatus as d, ApprovalStore as f, approvalQuorum as g, DEFAULT_APPROVAL_TTL_MS as h, ApprovalInspectResult as i, ApprovalResumeFailure as l, ApprovalVerdict as m, ApprovalApprovers as n, ApprovalListQuery as o, ApprovalSubjectSummary as p, ApprovalCancelMeta as r, ApprovalPage as s, APPROVAL_HEADER as t, ApprovalSignature as u, escalationOpenAt as v };
@@ -0,0 +1,66 @@
1
+ import { D as PolicyVocabulary, ln as PermDock, rt as DecisionEvent } from "./policy-CFZAr_Al.js";
2
+ //#region src/otel/types.d.ts
3
+ declare const GENAI_SEMCONV_PIN = "1.37.0";
4
+ declare const GEN_AI_TOOL_NAME = "gen_ai.tool.name";
5
+ declare const GEN_AI_TOOL_CALL_ID = "gen_ai.tool.call.id";
6
+ type StructuralLogger = {
7
+ readonly debug?: (message: string, attributes?: Record<string, unknown>) => void;
8
+ readonly info: (message: string, attributes?: Record<string, unknown>) => void;
9
+ readonly warn: (message: string, attributes?: Record<string, unknown>) => void;
10
+ readonly error?: (message: string, attributes?: Record<string, unknown>) => void;
11
+ };
12
+ type OtelSpan = {
13
+ readonly setAttribute?: (key: string, value: unknown) => void;
14
+ readonly setAttributes?: (attributes: Record<string, unknown>) => void;
15
+ readonly addEvent?: (name: string, attributes?: Record<string, unknown>) => void;
16
+ readonly recordException?: (error: unknown) => void;
17
+ readonly setStatus?: (status: {
18
+ readonly code: number;
19
+ }) => void;
20
+ readonly end?: (endTime?: number) => void;
21
+ readonly isRecording?: () => boolean;
22
+ readonly attributes?: Record<string, unknown>;
23
+ };
24
+ type OtelTracer = {
25
+ readonly startSpan: (name: string, options?: {
26
+ readonly startTime?: number;
27
+ }) => OtelSpan;
28
+ };
29
+ type OtelCounter = {
30
+ readonly add: (value: number, attributes?: Record<string, unknown>) => void;
31
+ };
32
+ type OtelHistogram = {
33
+ readonly record: (value: number, attributes?: Record<string, unknown>) => void;
34
+ };
35
+ type OtelMeter = {
36
+ readonly createCounter: (name: string) => OtelCounter;
37
+ readonly createHistogram: (name: string, options?: {
38
+ readonly unit?: string;
39
+ readonly description?: string;
40
+ }) => OtelHistogram;
41
+ };
42
+ type OtelApi = {
43
+ readonly trace: {
44
+ readonly getTracer: (name: string) => OtelTracer;
45
+ readonly getActiveSpan?: () => OtelSpan | undefined;
46
+ };
47
+ readonly metrics?: {
48
+ readonly getMeter: (name: string) => OtelMeter;
49
+ };
50
+ };
51
+ type OtelOptions = {
52
+ readonly tracer?: string;
53
+ readonly logger?: StructuralLogger;
54
+ readonly attributes?: (event: DecisionEvent) => Record<string, unknown>;
55
+ readonly redact?: readonly string[];
56
+ readonly errorOnDeny?: boolean;
57
+ readonly api?: OtelApi;
58
+ };
59
+ /**
60
+ * An adapter's `otel` option: wraps each request-scoped instance, usually
61
+ * `(permdock) => withOtel(permdock, options)` from `permdock/otel`, so an app
62
+ * without it does not bundle the instrumentation.
63
+ */
64
+ type OtelWrap = <V extends PolicyVocabulary>(permdock: PermDock<V>) => PermDock<V>;
65
+ //#endregion
66
+ export { OtelOptions as a, OtelApi as i, GEN_AI_TOOL_CALL_ID as n, OtelWrap as o, GEN_AI_TOOL_NAME as r, StructuralLogger as s, GENAI_SEMCONV_PIN as t };