permdock 0.3.1 → 0.5.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 (552) hide show
  1. package/README.md +37 -35
  2. package/dist/{openapi-schema--ARjyfQr.js → 2020-C9VN-x8c.js} +5 -132
  3. package/dist/a2a/index.d.ts +8 -6
  4. package/dist/a2a/index.js +21 -31
  5. package/dist/{adapter-context-mlWsVGGg.js → adapter-context-CRhqyzCk.js} +1 -1
  6. package/dist/adoption-scan-B4R5fnMU.js +107 -0
  7. package/dist/agent/index.d.ts +3 -0
  8. package/dist/agent/index.js +1 -0
  9. package/dist/ai-sdk/index.d.ts +18 -23
  10. package/dist/ai-sdk/index.js +38 -21
  11. package/dist/app-data-MuyzVqX8.js +60 -0
  12. package/dist/approval-header-CJACtHkv.js +23 -0
  13. package/dist/approval-prompt-Dg5LeAcT.js +62 -0
  14. package/dist/approval-prompt-Djo_PyZc.d.ts +57 -0
  15. package/dist/approvals/index.d.ts +5 -3
  16. package/dist/approvals/index.js +8 -5
  17. package/dist/approvals-DJ6Yd5z1.js +995 -0
  18. package/dist/{approvers-DT4AVyIg.js → approvers-CqPOLD-o.js} +1 -1
  19. package/dist/arazzo-B6lebmiQ.js +36 -0
  20. package/dist/{arazzo-BAgw9ap6.js → arazzo-BWhNF-k0.js} +24 -17
  21. package/dist/args-IIolxxKA.js +197 -0
  22. package/dist/astro/index.d.ts +43 -0
  23. package/dist/astro/index.js +27 -0
  24. package/dist/audience-Dg8XsRaO.js +55 -0
  25. package/dist/auth-DRLEizbL.js +178 -0
  26. package/dist/authzen/index.d.ts +26 -6
  27. package/dist/authzen/index.js +228 -75
  28. package/dist/automation-BMZPIVUM.d.ts +114 -0
  29. package/dist/automation-DVjOckjV.js +157 -0
  30. package/dist/better-auth/index.d.ts +8 -6
  31. package/dist/better-auth/index.js +11 -23
  32. package/dist/better-supabase/index.d.ts +438 -86
  33. package/dist/better-supabase/index.js +1027 -184
  34. package/dist/bind--9EFVYWF.d.ts +38 -0
  35. package/dist/{bind-CuzGytRf.js → bind-CZzhx-Vj.js} +22 -10
  36. package/dist/body-CH5of8Ne.js +10 -0
  37. package/dist/body-text-QcXok_SI.js +52 -0
  38. package/dist/build-instance-BMnAudHn.js +52 -0
  39. package/dist/{canonical-json-DemiK4Vp.js → canonical-json-BC8_nMTw.js} +6 -6
  40. package/dist/{capability-2kYTMWDv.d.ts → capability-BSslw1QV.d.ts} +44 -25
  41. package/dist/{capability-4qPdO9gk.js → capability-N1K9IpqS.js} +69 -42
  42. package/dist/casbin-Cr7RLtA3.js +30 -0
  43. package/dist/casbin-Dyu2gnUD.js +234 -0
  44. package/dist/casl-64gpT-8x.js +24 -0
  45. package/dist/casl-DjEDhTCP.js +299 -0
  46. package/dist/catalog/index.d.ts +74 -2
  47. package/dist/catalog/index.js +51 -2
  48. package/dist/catalog-BECMPrwc.js +100 -0
  49. package/dist/catalog-DjhMYYCq.js +1 -0
  50. package/dist/catalog-R_A__RsH.js +52 -0
  51. package/dist/{catalog-doc-DdGm82XT.js → catalog-doc-C9wjsfNY.js} +54 -25
  52. package/dist/catalog-fingerprint-CCP0-yQS.js +153 -0
  53. package/dist/chat/index.d.ts +2 -0
  54. package/dist/chat/index.js +224 -0
  55. package/dist/chat-sdk/index.d.ts +87 -0
  56. package/dist/chat-sdk/index.js +197 -0
  57. package/dist/claims-map-7oQ3ue4X.js +13 -0
  58. package/dist/claims-map-Ca-QX8C6.d.ts +32 -0
  59. package/dist/claude-agent/index.d.ts +7 -14
  60. package/dist/claude-agent/index.js +26 -30
  61. package/dist/clerk/index.d.ts +9 -8
  62. package/dist/clerk/index.js +15 -45
  63. package/dist/cli/bin.js +36 -17
  64. package/dist/cli/index.d.ts +20 -6
  65. package/dist/cli/index.js +164 -4
  66. package/dist/cloud/index.d.ts +102 -63
  67. package/dist/cloud/index.js +240 -347
  68. package/dist/cloud-CIoHNevm.js +87 -0
  69. package/dist/codemod-Bmj9dWMH.js +37 -0
  70. package/dist/codemod-Cxvvc70T.js +2084 -0
  71. package/dist/{collect-DSTE3ml9.js → collect-CrZJJnEF.js} +79 -17
  72. package/dist/collect-DloHbDVa.js +55 -0
  73. package/dist/collect-FlXJlhus.js +1 -0
  74. package/dist/command-L8EstFNm.js +6 -0
  75. package/dist/{compact-y6vfu2_f.js → compact-CAf557ZB.js} +11 -1
  76. package/dist/compile/index.d.ts +1 -1
  77. package/dist/compile/index.js +1 -2
  78. package/dist/{compile-Ba4blROR.js → compile-CMqMx_IN.js} +13 -9
  79. package/dist/{compile-BkRyBDBw.d.ts → compile-Ckm2HqBZ.d.ts} +5 -3
  80. package/dist/completion-BqhRBJD8.js +143 -0
  81. package/dist/config-B46rm9sc.js +26 -0
  82. package/dist/{config-BJiM-xAm.js → config-bs_kZeYq.js} +15 -10
  83. package/dist/{config-report-CdCgbRnV.js → config-report-DUgj62Ai.js} +17 -8
  84. package/dist/{connection-CU8MQxRi.js → connection-DjhIJSs2.js} +8 -6
  85. package/dist/constants-DcJABbLW.js +20 -0
  86. package/dist/{context-Bcy85rGi.js → context-bbFHR-0D.js} +16 -5
  87. package/dist/convex/index.d.ts +11 -10
  88. package/dist/convex/index.js +18 -18
  89. package/dist/create-0VZ7Pdiu.d.ts +107 -0
  90. package/dist/create-BDS7wc3y.d.ts +138 -0
  91. package/dist/create-BFfm17UA.d.ts +110 -0
  92. package/dist/create-BWRSXgOF.js +403 -0
  93. package/dist/create-C3b4B5eF.js +130 -0
  94. package/dist/create-DnrmLnLW.js +323 -0
  95. package/dist/{credential-8P81ff4u.js → credential-DM2um3ha.js} +153 -32
  96. package/dist/credentials-DPyHmYz5.js +74 -0
  97. package/dist/deciding-columns-Sq12mEA6.js +123 -0
  98. package/dist/delegation-DaXVdDhM.js +286 -0
  99. package/dist/delegation-input-FTxMK3ji.js +19 -0
  100. package/dist/delivery/index.d.ts +5 -0
  101. package/dist/delivery/index.js +5 -0
  102. package/dist/delivery-DCAgNyCn.js +499 -0
  103. package/dist/delivery-event-xX4obB8F.js +40 -0
  104. package/dist/denied-text-D8jDHgsl.d.ts +19 -0
  105. package/dist/{describe-DMYiCjJV.d.ts → describe-BZUsixiL.d.ts} +11 -2
  106. package/dist/{describe-B_gVZEVi.js → describe-BybMRY7A.js} +10 -5
  107. package/dist/device-BARQ8eYG.js +193 -0
  108. package/dist/diff-CxZo9pTq.js +37 -0
  109. package/dist/{diff-2VaeChzX.js → diff-DCePiN6M.js} +61 -55
  110. package/dist/doctor-CxiwSfqH.js +44 -0
  111. package/dist/doctor-DFjUxf2f.js +2361 -0
  112. package/dist/drizzle/index.d.ts +5 -3
  113. package/dist/drizzle/index.js +6 -14
  114. package/dist/elysia/index.d.ts +16 -13
  115. package/dist/elysia/index.js +14 -13
  116. package/dist/env-DJZrPjRi.js +8 -0
  117. package/dist/errors-BDUwg2qC.js +27 -0
  118. package/dist/{errors-Cz5zn0mW.js → errors-BKy0EfhN.js} +6 -10
  119. package/dist/errors-BWXBMaKK.d.ts +11 -0
  120. package/dist/{errors-DPdqI50v.d.ts → errors-C2PXIv4c.d.ts} +2 -2
  121. package/dist/errors-CWTY6uih.js +143 -0
  122. package/dist/evaluate-_R8QkWaf.js +1732 -0
  123. package/dist/evaluations-16UqqQ6W.d.ts +32 -0
  124. package/dist/{evaluations-tz6D9A2G.js → evaluations-DZ2CbV5k.js} +181 -32
  125. package/dist/eve/index.d.ts +12 -16
  126. package/dist/eve/index.js +23 -29
  127. package/dist/event-time-CsegxXxB.js +23 -0
  128. package/dist/expiry-D4_YKRKD.js +52 -0
  129. package/dist/express/index.d.ts +13 -10
  130. package/dist/express/index.js +14 -12
  131. package/dist/fastify/index.d.ts +26 -13
  132. package/dist/fastify/index.js +17 -36
  133. package/dist/fetch-adapter-g0ypLkID.js +120 -0
  134. package/dist/fetch-adapter-qKJBuRqy.d.ts +31 -0
  135. package/dist/fields-D9tPVUUS.js +203 -0
  136. package/dist/files-C5ZI27eV.js +124 -0
  137. package/dist/{files-DWUN9PzI.js → files-D_JIzUrP.js} +12 -3
  138. package/dist/{fixtures-ht28Cplr.js → fixtures-B7XrLeY7.js} +12 -12
  139. package/dist/flags-C3DktBDY.js +86 -0
  140. package/dist/{from-snapshot-CTLijvdm.js → from-snapshot-D2lZt4Dd.js} +78 -65
  141. package/dist/{generate-CH7ThJ14.js → generate-CNU1pIOo.js} +1 -3
  142. package/dist/grantee-Cn1HyUsI.js +254 -0
  143. package/dist/grantee-conditions-CcXf8hMM.js +271 -0
  144. package/dist/grantee-match-DHArqY82.js +142 -0
  145. package/dist/h3/index.d.ts +37 -0
  146. package/dist/h3/index.js +35 -0
  147. package/dist/headers-BIjfMaoC.js +8 -0
  148. package/dist/headers-CIbDTUTK.d.ts +7 -0
  149. package/dist/{helpers-H_KARDVC.js → helpers-DTcZOzhF.js} +47 -39
  150. package/dist/hono/index.d.ts +12 -9
  151. package/dist/hono/index.js +14 -13
  152. package/dist/{hosted-DJQw46hn.js → hosted-BZIAYvon.js} +64 -15
  153. package/dist/hosted-DBDX0M-P.d.ts +78 -0
  154. package/dist/{http-SO7qGttf.js → http-BBoKefeS.js} +35 -2
  155. package/dist/{http-DPuDaChb.d.ts → http-B_LphE5Y.d.ts} +1 -2
  156. package/dist/http-DXJ37RDA.js +46 -0
  157. package/dist/{http-BIhmLfCc.js → http-ujKm0JXE.js} +3 -26
  158. package/dist/{openapi-import-cmwetbzw.js → import-CNV7I2Dw.js} +30 -26
  159. package/dist/{rls-import-4lLW_pbb.js → import-DMmOG27O.js} +271 -128
  160. package/dist/index-BcHcPyIo.d.ts +110 -0
  161. package/dist/index-CaxrMD1A.d.ts +1 -0
  162. package/dist/index-Chrs5fQ-.d.ts +210 -0
  163. package/dist/index-CxGUswIC.d.ts +431 -0
  164. package/dist/index-D8EovfsP.d.ts +91 -0
  165. package/dist/index-DOVf7RJv.d.ts +900 -0
  166. package/dist/{index-C8z4RjQV.d.ts → index-SGdIQyzc.d.ts} +34 -16
  167. package/dist/index.d.ts +20 -14
  168. package/dist/index.js +33 -23
  169. package/dist/init-DeMYsnYJ.js +96 -0
  170. package/dist/init-GG6Jh8HD.js +95 -0
  171. package/dist/{instance-options-jARdwfPN.d.ts → instance-options-Omfd793B.d.ts} +2 -2
  172. package/dist/instance-snapshot-Cxq4ygFc.js +600 -0
  173. package/dist/instant-BluqDvyS.js +19 -0
  174. package/dist/internals-Dk8A8fX3.js +17 -0
  175. package/dist/{json-schema-BsAflUGW.js → json-schema-B-vAwlde.js} +46 -9
  176. package/dist/json-schema-CN_iLFH2.d.ts +40 -0
  177. package/dist/jwt/index.d.ts +18 -11
  178. package/dist/jwt/index.js +166 -145
  179. package/dist/{kernel-_RRHmnMY.js → kernel-5JatXyND.js} +120 -43
  180. package/dist/kysely/index.d.ts +5 -3
  181. package/dist/kysely/index.js +6 -14
  182. package/dist/{live-options-H2eG8dfJ.js → live-options-BaAFCIiu.js} +16 -3
  183. package/dist/load-BxEtwlBS.js +1 -0
  184. package/dist/{load-DhWEB9P1.js → load-DFS_ry0W.js} +31 -7
  185. package/dist/{load-jose-BL6LH4bL.js → load-jose-DZ4dnjri.js} +1 -4
  186. package/dist/login-Dfe5RlYk.js +68 -0
  187. package/dist/login-imhuwvn3.js +254 -0
  188. package/dist/manifest-C8IzW3Do.js +42 -0
  189. package/dist/manifest-CtKR3GXL.js +370 -0
  190. package/dist/manifest-json-CAGzls-C.js +9 -0
  191. package/dist/{manifest-uDS9y5de.d.ts → manifest-mx5ghSFM.d.ts} +9 -2
  192. package/dist/manifest-schema-C0kK_8V0.js +399 -0
  193. package/dist/{map-claims-Z4QZOiFF.js → map-claims-D3oRmTk0.js} +19 -25
  194. package/dist/{map-error-pgUWNNtG.js → map-error-TCAdw-eW.js} +5 -5
  195. package/dist/{markers-B0hYLvMD.js → markers-C6joDI3o.js} +8 -3
  196. package/dist/mcp/index.d.ts +36 -9
  197. package/dist/mcp/index.js +476 -448
  198. package/dist/{rls-migrate-CN4TlJTO.js → migrate-BShP7Vf4.js} +119 -20
  199. package/dist/nest/index.d.ts +12 -9
  200. package/dist/nest/index.js +20 -20
  201. package/dist/next/index.d.ts +40 -20
  202. package/dist/next/index.js +37 -39
  203. package/dist/next/plugin.d.ts +1 -1
  204. package/dist/next/plugin.js +2 -2
  205. package/dist/node/index.d.ts +10 -10
  206. package/dist/node/index.js +7 -9
  207. package/dist/ocsf-BFp-PZZA.js +126 -0
  208. package/dist/openai/index.d.ts +9 -16
  209. package/dist/openai/index.js +18 -25
  210. package/dist/openapi/index.d.ts +3 -3
  211. package/dist/openapi/index.js +1 -1
  212. package/dist/{openapi-BqRBvAng.js → openapi-B7HZ0f-r.js} +9 -12
  213. package/dist/{openapi-CqqEbHsL.js → openapi-DTaEmTSW.js} +23 -26
  214. package/dist/openapi-ahr8rHu3.js +138 -0
  215. package/dist/operation-findings-DgATDpvh.js +36 -0
  216. package/dist/operations-CxybZErY.d.ts +59 -0
  217. package/dist/orpc/index.d.ts +13 -10
  218. package/dist/orpc/index.js +23 -20
  219. package/dist/otel/index.d.ts +3 -2
  220. package/dist/otel/index.js +53 -27
  221. package/dist/output-Dyw8fyPF.js +88 -0
  222. package/dist/output-files-B3IZJksC.js +1 -0
  223. package/dist/output-files-DhRBBE4n.js +138 -0
  224. package/dist/{rls-fields-CZOMlwHl.js → ownership-BatFgAA4.js} +2393 -2349
  225. package/dist/{package-root-zGkxO3oN.js → package-root-Dk_ETdkp.js} +4 -3
  226. package/dist/{parse-BuyjxhZV.js → parse-Cxq0WxrA.js} +3 -3
  227. package/dist/{parse-local-manifest-BrMozJCo.js → parse-local-manifest-CVSs6J9I.js} +2 -4
  228. package/dist/{parse-local-manifest-JLnaBH0S.d.ts → parse-local-manifest-DgqtruPn.d.ts} +1 -1
  229. package/dist/parse-request-D_tUXG6M.js +26 -0
  230. package/dist/paths-DXSHAMIa.js +42 -0
  231. package/dist/pdp/index.d.ts +7 -3
  232. package/dist/pdp/index.js +47 -29
  233. package/dist/{peer-BOr_kJE1.js → peer-C8swJ2GH.js} +23 -4
  234. package/dist/peer-CRvC7Hg1.js +1 -0
  235. package/dist/permdock-B9JxkBwC.js +868 -0
  236. package/dist/permdock-D7eeLJER.d.ts +502 -0
  237. package/dist/permission-registry-Br4jSNVi.js +385 -0
  238. package/dist/permissions-B-wCP5ZC.js +30 -0
  239. package/dist/{permissions-RJrovw98.js → permissions-CZKiUfFM.js} +4 -3
  240. package/dist/{permissions-CDgvKG5L.d.ts → permissions-oEWfl-kl.d.ts} +1 -2
  241. package/dist/policies-CO1oOymN.js +295 -0
  242. package/dist/{policy-D2W7uv19.d.ts → policy-Czo4n3Hs.d.ts} +2 -2
  243. package/dist/policy-DLZJ5gAp.js +399 -0
  244. package/dist/policy-from-catalog-DzhEc3Y9.js +450 -0
  245. package/dist/policy-module-CTlwMvLI.js +89 -0
  246. package/dist/{policy-IB6yxpC3.d.ts → policy-types-DzwivBgR.d.ts} +939 -1057
  247. package/dist/postgrest-CW0IqC-U.js +566 -0
  248. package/dist/postgrest-NUqZT-RB.d.ts +100 -0
  249. package/dist/powersync-BHfuehf3.js +62 -0
  250. package/dist/powersync-CbzkqL_M.js +1 -0
  251. package/dist/{powersync-Dv1_aWF7.js → powersync-bYUDLOAO.js} +30 -32
  252. package/dist/preset/index.d.ts +146 -0
  253. package/dist/preset/index.js +1 -0
  254. package/dist/preset-DZdU0tne.js +1768 -0
  255. package/dist/principal-source-pHneukrx.js +103 -0
  256. package/dist/prisma/index.d.ts +6 -3
  257. package/dist/prisma/index.js +6 -12
  258. package/dist/{problem-B43ztKIm.js → problem-CTviyH5L.js} +18 -27
  259. package/dist/{problem-details-DX075l9V.d.ts → problem-details-DXlt-vks.d.ts} +1 -1
  260. package/dist/{problem-details-_AMOYz-w.js → problem-details-cn5X30gZ.js} +45 -42
  261. package/dist/problem-types-CJ2325SZ.js +5 -0
  262. package/dist/{prompt-CXYhLfsS.js → prompt-DfZLJLIn.js} +2 -2
  263. package/dist/protected-DEPHc2xV.d.ts +38 -0
  264. package/dist/{protected-utU-SLuy.js → protected-DfjY5mLA.js} +37 -8
  265. package/dist/{provider-CSQd7m92.js → provider-CC-u3bYP.js} +23 -10
  266. package/dist/{provider-DZY281jO.d.ts → provider-DMVt6yYn.d.ts} +1 -1
  267. package/dist/{provider-store-Cfbvo4DE.js → provider-store-B5Yrkhzr.js} +6 -3
  268. package/dist/pull-BgIfno6w.js +256 -0
  269. package/dist/pull-ByOks_Tg.js +1 -0
  270. package/dist/push-CmFVBOeI.js +116 -0
  271. package/dist/pushed-policy-BImMTTIM.d.ts +57 -0
  272. package/dist/pushed-policy-DobP7AHI.js +238 -0
  273. package/dist/react/index.d.ts +8 -8
  274. package/dist/react/index.js +6 -6
  275. package/dist/react/provider-client.d.ts +1 -1
  276. package/dist/react/provider-client.js +1 -2
  277. package/dist/react-native/index.d.ts +24 -63
  278. package/dist/react-native/index.js +45 -27
  279. package/dist/{refs-KYb4ntaz.js → refs-K6eWUJ0H.js} +1 -1
  280. package/dist/relation-walk-3OyDBF0S.js +186 -0
  281. package/dist/relations-BnCWnJGI.js +163 -0
  282. package/dist/renames-CGj7YwcQ.js +175 -0
  283. package/dist/{replay-CYyiLiwO.d.ts → replay-D7iKcLFe.d.ts} +1 -1
  284. package/dist/{replay-BsOyTrdV.js → replay-Du1tJjG7.js} +2 -1
  285. package/dist/request-context-BTRTG7OT.js +71 -0
  286. package/dist/request-context-C2_1lchh.d.ts +5 -0
  287. package/dist/request-schema-CMreVuFM.js +148 -0
  288. package/dist/resend/index.d.ts +126 -0
  289. package/dist/resend/index.js +379 -0
  290. package/dist/resource-relations-D_jw0BFx.js +243 -0
  291. package/dist/retire-CALjIQ7e.js +240 -0
  292. package/dist/{revocations-Cy06JNx2.d.ts → revocations-R07lFBnX.d.ts} +2 -0
  293. package/dist/rls-BA8an5Ap.js +336 -0
  294. package/dist/{rls-DiinlRML.js → rls-j6t43t7n.js} +1066 -1068
  295. package/dist/role-builder-CXbis5-X.js +623 -0
  296. package/dist/{rpc-DL9Sqvb1.js → rpc-aPyNi6tA.js} +18 -8
  297. package/dist/run-CNsApDpd.js +1 -0
  298. package/dist/run-DOfMtc9V.js +723 -0
  299. package/dist/run-ticket-BjhTOi6u.d.ts +124 -0
  300. package/dist/run-ticket-sxFI6LAk.js +337 -0
  301. package/dist/{runtime-CB8gQFvS.js → runtime-D3VTAiCA.js} +1 -1
  302. package/dist/{saas-DhpJjnBA.js → saas-FO-Q8oj0.js} +18 -15
  303. package/dist/scan-BOI5tJ-6.js +29 -0
  304. package/dist/{schema-D3MnDMxa.js → schema-B4v0Qrac.js} +106 -10
  305. package/dist/schema-yLuBWWsh.js +130 -0
  306. package/dist/scim/index.d.ts +2 -2
  307. package/dist/scim/index.js +1 -2
  308. package/dist/{scim-BFGBBAqR.js → scim-ClHtpyV3.js} +213 -87
  309. package/dist/{scopes-CVdPrWN-.js → scopes-CUPSjo9q.js} +20 -7
  310. package/dist/server/index.d.ts +13 -134
  311. package/dist/server/index.js +13 -10
  312. package/dist/server-DqCT4CgZ.js +453 -0
  313. package/dist/{create-B1d519XK.d.ts → server-types-BLd4MnBX.d.ts} +89 -70
  314. package/dist/{sha256-BO0swRXL.js → sha256-D9ihqmvd.js} +8 -1
  315. package/dist/shared-CD11nBbC.js +304 -0
  316. package/dist/{shared-DRu8VFVM.js → shared-DvvFzYXe.js} +8 -9
  317. package/dist/signals-D3NcTKUS.js +32 -0
  318. package/dist/sink-BEZSlMS_.js +957 -0
  319. package/dist/sink-Bj_lDUDq.d.ts +225 -0
  320. package/dist/{skills-Biq5uup3.js → skills-B6lVdD_W.js} +16 -8
  321. package/dist/skills-CTYwkl44.js +51 -0
  322. package/dist/snapshot-CXUWfsNy.js +269 -0
  323. package/dist/{snapshot-cache-D6jLelln.js → snapshot-cache-DZHQ0KF6.js} +11 -5
  324. package/dist/{snapshot-cache-B-LxUahj.d.ts → snapshot-cache-DqK9eDmM.d.ts} +7 -5
  325. package/dist/solid/index.d.ts +24 -25
  326. package/dist/solid/index.js +41 -11
  327. package/dist/solid-start/index.d.ts +52 -0
  328. package/dist/solid-start/index.js +49 -0
  329. package/dist/{sources-BdOYLw9j.d.ts → sources-BV9j0DeZ.d.ts} +11 -13
  330. package/dist/{sources-4p0-4xQm.js → sources-vs5dGOsS.js} +147 -142
  331. package/dist/sql-B5T1IL83.js +55 -0
  332. package/dist/src-DLfUWFAI.js +1851 -0
  333. package/dist/ssf/index.d.ts +4 -4
  334. package/dist/ssf/index.js +440 -106
  335. package/dist/standard-webhooks-6lg8v_is.d.ts +88 -0
  336. package/dist/standard-webhooks-DgFFD-Ga.js +228 -0
  337. package/dist/storage-C2bWdvJH.js +132 -0
  338. package/dist/{store-DMAWwAJV.js → store-4u_hxjWa.js} +42 -55
  339. package/dist/{store-options-ByhZq1jV.js → store-options-BqEakYRa.js} +38 -24
  340. package/dist/{stores-BT2pSCub.js → stores-BbsD4fAR.js} +7 -3
  341. package/dist/stores-ClZUgeoP.d.ts +30 -0
  342. package/dist/{stream-D1RXubw2.d.ts → stream-7-xmnf3U.d.ts} +2 -2
  343. package/dist/{stream-DDpvynSB.js → stream-CvdUS9V1.js} +10 -2
  344. package/dist/style-DiKWnAvn.js +1 -0
  345. package/dist/{style-CTm1AXDT.js → style-Uao76wO7.js} +3 -2
  346. package/dist/subject-BGoM5o8B.js +17 -0
  347. package/dist/{subject-settings-BwBmCdTR.js → subject-settings-CkEwrw3W.js} +23 -5
  348. package/dist/supabase/index.d.ts +23 -106
  349. package/dist/supabase/index.js +5 -4
  350. package/dist/supabase/middleware.d.ts +13 -6
  351. package/dist/supabase/middleware.js +16 -11
  352. package/dist/supabase-9pqI57pW.js +92 -0
  353. package/dist/{supabase-C0qESOa-.js → supabase-Dxlp8A94.js} +124 -247
  354. package/dist/supabase-hook-CXcGpHqq.js +1 -0
  355. package/dist/{supabase-hook-ntETYCQu.js → supabase-hook-DdDQhMlw.js} +1659 -819
  356. package/dist/{supautils-u8jXTGrt.js → supautils-B6HYL9eL.js} +2 -2
  357. package/dist/support-session-C6xJQYut.js +158 -0
  358. package/dist/svelte/Protected.svelte +11 -4
  359. package/dist/svelte/index.d.ts +7 -7
  360. package/dist/svelte/index.js +26 -12
  361. package/dist/svelte/runtime.d.ts +10 -3
  362. package/dist/svelte/runtime.js +4 -3
  363. package/dist/svelte/source.d.ts +7 -7
  364. package/dist/svelte/source.js +5 -5
  365. package/dist/sveltekit/index.d.ts +51 -0
  366. package/dist/sveltekit/index.js +27 -0
  367. package/dist/tanstack-start/index.d.ts +51 -0
  368. package/dist/tanstack-start/index.js +40 -0
  369. package/dist/target-Bw37TFNA.js +51 -0
  370. package/dist/{validity-uOp8UpYn.js → tenancy-DN2QAx9z.js} +6 -42
  371. package/dist/terminal/index.d.ts +11 -9
  372. package/dist/terminal/index.js +36 -316
  373. package/dist/testing/index.d.ts +391 -106
  374. package/dist/testing/index.js +4574 -1286
  375. package/dist/testing/saas/index.d.ts +9 -8
  376. package/dist/testing/saas/index.js +2 -2
  377. package/dist/testing/saas/permissions.d.ts +1 -1
  378. package/dist/testing/saas/permissions.js +1 -2
  379. package/dist/text-BMFRfBqc.js +8 -0
  380. package/dist/{text-diff-BdkkYSbi.js → text-diff-BQcUapOb.js} +1 -1
  381. package/dist/thenable-yD7SabqG.js +31 -0
  382. package/dist/time-DkWjdL98.js +71 -0
  383. package/dist/{token-CIWxJOCh.js → token-BLZcjQgt.js} +15 -6
  384. package/dist/tool-refusal-CMLN5xhn.js +41 -0
  385. package/dist/trpc/index.d.ts +12 -9
  386. package/dist/trpc/index.js +18 -17
  387. package/dist/{types-DbjRN55U.d.ts → types-5Ut_pbKy.d.ts} +141 -13
  388. package/dist/types-BNORmDM8.d.ts +172 -0
  389. package/dist/types-BjV-fqcA.d.ts +57 -0
  390. package/dist/{types-QCuYJh4q.d.ts → types-BqAKcRNW.d.ts} +2 -1
  391. package/dist/types-C8-KNsFf.d.ts +107 -0
  392. package/dist/{types-aqOHTHcp.d.ts → types-CCpc2Dcv.d.ts} +77 -17
  393. package/dist/{types-Dnemwd77.d.ts → types-CZTnPFzM.d.ts} +50 -11
  394. package/dist/{types-C97IskBw.d.ts → types-CdlxsYQh.d.ts} +23 -11
  395. package/dist/{types-DxiCGmmd.d.ts → types-ClZaWzfb.d.ts} +9 -6
  396. package/dist/types-DX0LaKTb.d.ts +157 -0
  397. package/dist/types-DiQjupG2.d.ts +332 -0
  398. package/dist/types-DqzsnlSA.js +67 -0
  399. package/dist/types-_sHy8BQf.d.ts +65 -0
  400. package/dist/types-fbZ7JEXr.d.ts +89 -0
  401. package/dist/types-tIgIeIKJ.d.ts +66 -0
  402. package/dist/unplugin/index.d.ts +1 -1
  403. package/dist/unplugin/index.js +2 -2
  404. package/dist/usage-CHOtwL19.js +1 -0
  405. package/dist/usage-DHtE8j4E.js +32 -0
  406. package/dist/{usage-ItS7nLcl.js → usage-T5mXq98v.js} +56 -13
  407. package/dist/{validation-error-Ba264OaJ.d.ts → validation-error-Bg5Tpluk.d.ts} +1 -1
  408. package/dist/{validation-error-CnjZ4t92.js → validation-error-ZfUHbKvf.js} +1 -1
  409. package/dist/validity-CZ7-y0Cj.js +79 -0
  410. package/dist/{verifier-BxBo6I44.js → verifier-DHuh-okk.js} +68 -21
  411. package/dist/verify-DbCL9bnB.js +1770 -0
  412. package/dist/{version-BvacVTZR.js → version-CEbQ5UeM.js} +4 -3
  413. package/dist/version-DXkYUISx.js +1 -0
  414. package/dist/{views-Soe7bGSC.js → views-DTIIO-oQ.js} +41 -2
  415. package/dist/{permissions-DttnqqxC.d.ts → vocabulary-D6lPdb4Z.d.ts} +120 -29
  416. package/dist/vue/index.d.ts +25 -21
  417. package/dist/vue/index.js +25 -9
  418. package/dist/waiter-BGUtGYoU.js +67 -0
  419. package/dist/waiter-CKy4MQSY.d.ts +36 -0
  420. package/dist/watch-Cb-NcaUw.js +1 -0
  421. package/dist/{watch-DVBJ9cBq.js → watch-CszoTJMq.js} +47 -8
  422. package/dist/webmcp/index.d.ts +2 -2
  423. package/dist/webmcp/index.js +13 -37
  424. package/dist/where-scope-Dv-WTP-w.js +306 -0
  425. package/dist/who-can-D0QoYbEb.js +364 -0
  426. package/dist/wire-delegation-Cv3W2eaM.js +36 -0
  427. package/dist/wire-denial-C7PaVYEM.js +27 -0
  428. package/dist/workflow/index.d.ts +5 -0
  429. package/dist/workflow/index.js +223 -0
  430. package/dist/workflow-sdk/index.d.ts +56 -0
  431. package/dist/workflow-sdk/index.js +78 -0
  432. package/dist/wrap-Bd1Tejur.d.ts +15 -0
  433. package/dist/wrap-gX61EtpB.js +27 -0
  434. package/package.json +140 -41
  435. package/schemas/access-event-v1.json +118 -0
  436. package/schemas/approval-request-v1.json +34 -1
  437. package/schemas/approval-signature-v1.json +94 -0
  438. package/schemas/automation-event-v1.json +113 -0
  439. package/schemas/capability-v1.json +84 -0
  440. package/schemas/catalog-event-v1.json +87 -0
  441. package/schemas/catalog-v1.json +129 -12
  442. package/schemas/cli-commands-v1.json +164 -0
  443. package/schemas/cli-result-v1.json +96 -0
  444. package/schemas/cloud-api-v1.json +5407 -0
  445. package/schemas/connector-v1.json +408 -0
  446. package/schemas/credential-event-v1.json +81 -0
  447. package/schemas/credential-v1.json +134 -0
  448. package/schemas/decision-event-v1.json +288 -0
  449. package/schemas/delivery-event-v1.json +117 -0
  450. package/schemas/directory-event-v1.json +85 -0
  451. package/schemas/evidence-export-v1.json +54 -0
  452. package/schemas/membership-event-v1.json +93 -0
  453. package/schemas/policy-v1.json +68 -0
  454. package/schemas/pushed-policy-v1.json +236 -0
  455. package/schemas/run-v1.json +162 -0
  456. package/schemas/snapshot-v1.json +138 -0
  457. package/schemas/supabase-claims-v1.json +4 -4
  458. package/schemas/supabase-manifest-v1.json +5 -1
  459. package/schemas/support-session-v1.json +111 -0
  460. package/skills/permdock/SKILL.md +16 -12
  461. package/skills/permdock-agents/SKILL.md +40 -23
  462. package/skills/permdock-agents/references/operations-automations-chat.md +221 -0
  463. package/skills/permdock-agents/references/runtimes.md +22 -18
  464. package/skills/permdock-approvals/SKILL.md +29 -13
  465. package/skills/permdock-approvals/references/delivery-and-waiters.md +172 -0
  466. package/skills/permdock-approvals/references/stores-and-resume.md +21 -7
  467. package/skills/permdock-audit/SKILL.md +3 -3
  468. package/skills/permdock-credentials/SKILL.md +5 -5
  469. package/skills/permdock-credentials/references/tokens-keys-links.md +19 -10
  470. package/skills/permdock-data/SKILL.md +6 -6
  471. package/skills/permdock-data/references/queries-and-rls.md +13 -8
  472. package/skills/permdock-data/references/relationships.md +3 -3
  473. package/skills/permdock-tenancy/SKILL.md +20 -7
  474. package/skills/permdock-tenancy/references/contacts-and-support-sessions.md +122 -0
  475. package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +6 -4
  476. package/skills/permdock-wire/SKILL.md +18 -12
  477. package/skills/permdock-wire/references/adapters.md +146 -50
  478. package/skills/permdock-wire/references/policy-options.md +15 -6
  479. package/skills/permdock-wire/references/presets-and-recipes.md +58 -0
  480. package/dist/approvals-DbYAuNkG.js +0 -224
  481. package/dist/arazzo-C9chp3ST.js +0 -54
  482. package/dist/bind-C_ob3LKa.d.ts +0 -25
  483. package/dist/catalog-CRW5Mx_B.js +0 -2
  484. package/dist/catalog-CYj-mX2O.js +0 -48
  485. package/dist/catalog-DWF5cYqB.js +0 -55
  486. package/dist/cloud-CfwZ39Rl.js +0 -50
  487. package/dist/cloud-DWLXO2af.js +0 -118
  488. package/dist/collect-CHB22Sx4.js +0 -83
  489. package/dist/collect-DSWOk19R.js +0 -2
  490. package/dist/commands-BeaGNj_o.js +0 -97
  491. package/dist/config-ir40y8m0.js +0 -36
  492. package/dist/create-CMwIl-w2.js +0 -253
  493. package/dist/delegation-D8pUEuce.js +0 -103
  494. package/dist/diff-C9RDjjhs.js +0 -48
  495. package/dist/doctor-Djh6JDEk.js +0 -53
  496. package/dist/doctor-DvH0IQff.js +0 -1194
  497. package/dist/doctor-collect-CjdO0wQX.js +0 -665
  498. package/dist/duration-xK2jGFVc.js +0 -25
  499. package/dist/errors-CWfoNg9N.js +0 -47
  500. package/dist/errors-DRnGZHzF.js +0 -30
  501. package/dist/evaluation-items-CfCCejQd.js +0 -40
  502. package/dist/expiry-BoBJ8Tvc.js +0 -7
  503. package/dist/fields-BMl1RxoX.js +0 -26
  504. package/dist/grantee-Cv5Sogfv.js +0 -602
  505. package/dist/headers-BZSDieNT.js +0 -6
  506. package/dist/headers-Cf-zWvsO.d.ts +0 -6
  507. package/dist/ids-DC4V4CFu.js +0 -18
  508. package/dist/index-0nNqHspG.d.ts +0 -6
  509. package/dist/index-BNc7Wer_.d.ts +0 -483
  510. package/dist/index-C7Tw7MaW.d.ts +0 -201
  511. package/dist/instance-options-Dhhcnm3y.js +0 -22
  512. package/dist/load-DwJUafYN.js +0 -2
  513. package/dist/manifest-iaoBXHKc.js +0 -783
  514. package/dist/map-AcxK9o_D.js +0 -147
  515. package/dist/may-use-DndQ5tQ-.js +0 -77
  516. package/dist/openapi-CQTsgKoB.js +0 -164
  517. package/dist/permdock-CbgvLnuo.js +0 -3479
  518. package/dist/permissions-DVoF6dMt.js +0 -662
  519. package/dist/policy-xyWg7QdR.js +0 -1122
  520. package/dist/powersync-CrBX8hY6.js +0 -2
  521. package/dist/powersync-DE19b9dT.js +0 -62
  522. package/dist/protected-BdnIEFkY.d.ts +0 -27
  523. package/dist/protected-xAr24FEC.d.ts +0 -40
  524. package/dist/relations-cjOL01hZ.js +0 -505
  525. package/dist/rls-P-BeBx0n.js +0 -238
  526. package/dist/rls-graph-CHwx0V8q.js +0 -435
  527. package/dist/rls-ownership-DcYlZ09B.js +0 -843
  528. package/dist/rls-shared-Cewd_-zI.js +0 -495
  529. package/dist/rls-verify-CMv9H3wV.js +0 -746
  530. package/dist/run-BWc9qqvE.js +0 -174
  531. package/dist/server-DlZ28Oz5.js +0 -268
  532. package/dist/sink-B1fZzIMf.d.ts +0 -104
  533. package/dist/sink-Bd9PSyfq.js +0 -141
  534. package/dist/skills-C5CbhhpG.js +0 -56
  535. package/dist/snapshot-Enxd0n-s.js +0 -975
  536. package/dist/sql-xdg5f4Fi.js +0 -27
  537. package/dist/src-BDwEZWrZ.js +0 -568
  538. package/dist/store-jOBYpiXC.d.ts +0 -36
  539. package/dist/stores-C0IMQrGI.d.ts +0 -52
  540. package/dist/subject-C6dLxqHU.js +0 -24
  541. package/dist/supabase-config-Bj3iDH2I.js +0 -472
  542. package/dist/supabase-hook-gd3s8bxB.js +0 -2
  543. package/dist/supabase-s4o9s1O1.js +0 -83
  544. package/dist/thenable-okc2xDsj.js +0 -10
  545. package/dist/types-BnIEz1sU.d.ts +0 -48
  546. package/dist/types-Bvc4oWT6.d.ts +0 -9
  547. package/dist/types-CKNSyIf_.d.ts +0 -52
  548. package/dist/types-Cq_H8N_X.d.ts +0 -197
  549. package/dist/usage-B0YuTQRO.js +0 -42
  550. package/dist/usage-DorAJiU_.js +0 -2
  551. package/dist/vocabulary-DA8a8zif.d.ts +0 -56
  552. package/dist/watch-BwxLTYMZ.js +0 -2
@@ -0,0 +1,172 @@
1
+ import { $n as Delegation, Nn as Decision, Vt as Snapshot, dt as TokenVerifier, j as PolicyVocabulary, qn as Actor, rr as Principal } from "./policy-types-DzwivBgR.js";
2
+ import { w as Permission } from "./vocabulary-D6lPdb4Z.js";
3
+ import { r as PermDock } from "./permdock-D7eeLJER.js";
4
+ import { n as DescribeMessages, t as DecisionDescription } from "./describe-BZUsixiL.js";
5
+ //#region src/client/request.d.ts
6
+ type StoreHeaders = Readonly<Record<string, string>>;
7
+ //#endregion
8
+ //#region src/client/store.d.ts
9
+ type ClientStoreOptions = {
10
+ readonly snapshot: Snapshot | string;
11
+ readonly endpoint?: string;
12
+ readonly snapshotUrl?: string;
13
+ readonly approvals?: string;
14
+ readonly tenant?: string;
15
+ readonly fetch?: typeof fetch;
16
+ /** Request headers, or a getter read on every request so a rotated token needs no new store. */
17
+ readonly headers?: StoreHeaders | (() => StoreHeaders | undefined);
18
+ readonly maxAge?: number;
19
+ readonly verifier?: TokenVerifier;
20
+ /** `raw` is the compact JWS the snapshot was verified from, so a signed snapshot can be persisted signed. */
21
+ readonly onSnapshot?: (snapshot: Snapshot, tenant: string | undefined, raw: string | undefined) => void;
22
+ readonly onClear?: () => void;
23
+ /** Called once per key the snapshot cannot answer when there is no `endpoint` to ask. */
24
+ readonly onServerOnly?: (permission: Permission) => void;
25
+ /**
26
+ * `true` while rendering on the server: endpoint checks answer `pending`
27
+ * without a request. Defaults to `typeof window === 'undefined'`.
28
+ */
29
+ readonly server?: boolean;
30
+ /** Milliseconds between approval status polls. Defaults to 2000. */
31
+ readonly approvalInterval?: number;
32
+ /** Start `pending`: the snapshot arrives later through `track()`. */
33
+ readonly awaiting?: boolean;
34
+ /**
35
+ * The first snapshot that hydrates with a principal is a persisted copy:
36
+ * `stale` until a refresh or a `replace()` lands.
37
+ */
38
+ readonly stale?: boolean;
39
+ /**
40
+ * Reuse decisions for the same row object until the next microtask. Only for
41
+ * renderers that do not track the fields a check reads (React): Vue, Svelte
42
+ * and Solid would stop re-running when a reactive row changes in place.
43
+ */
44
+ readonly passCache?: boolean;
45
+ };
46
+ type ClientStore = {
47
+ get(): ClientPermDock;
48
+ subscribe(listener: () => void): () => void;
49
+ permissionState(permission: Permission, data?: unknown): PermissionState;
50
+ requestApproval(decision: Decision, note?: string): Promise<void>;
51
+ /** Hydrate from a pushed snapshot; a compact JWS goes through the verifier. */
52
+ replace(value: unknown): void;
53
+ /** Stay `pending` until `value` settles, then hydrate; a rejection fails closed. */
54
+ follow(value: PromiseLike<Snapshot | string>): void;
55
+ /**
56
+ * `follow()` once per `value`, without suspending. A thenable React already
57
+ * settled (`status: 'fulfilled'`) hydrates at once.
58
+ */
59
+ track(value: PromiseLike<Snapshot | string>): void;
60
+ /**
61
+ * The approval state for a decision. While something subscribes, an
62
+ * `approval-required` decision is polled at `<approvals>/<token>`.
63
+ */
64
+ approvalState(decision: Decision): ApprovalState;
65
+ /**
66
+ * Hydrate from a resolved `snapshotPromise` during render. Idempotent per `source`;
67
+ * subscribers are notified in a microtask, never synchronously inside render.
68
+ */
69
+ adopt(value: Snapshot | string, source: object): void;
70
+ snapshot(): Snapshot;
71
+ /** The tenant the store currently answers for. */
72
+ tenant(): string | undefined;
73
+ /** Stops polls, drops in-flight results and persistence; the store keeps answering from its last snapshot. */
74
+ dispose(): void;
75
+ };
76
+ //#endregion
77
+ //#region src/client/types.d.ts
78
+ type ClientStatus = "ready" | "pending" | "stale" | "server-only";
79
+ type PermissionState = {
80
+ readonly allowed: boolean;
81
+ readonly status: ClientStatus;
82
+ readonly decision: Decision;
83
+ };
84
+ type PermissionSet = {
85
+ readonly granted: readonly Permission[];
86
+ get(permission: Permission): PermissionState | undefined;
87
+ };
88
+ type ClientPermDock<V extends PolicyVocabulary = PolicyVocabulary> = PermDock<V> & {
89
+ status(permission?: Permission, data?: unknown): ClientStatus;
90
+ invalidate(ref: Permission | {
91
+ readonly [key: string]: unknown;
92
+ }): void;
93
+ refresh(options?: {
94
+ readonly tenant?: string;
95
+ }): Promise<void>;
96
+ clear(): void;
97
+ subscribe(listener: () => void): () => void;
98
+ };
99
+ type ApprovalState = "not-needed" | "required" | "pending" | "approved" | "rejected" | "expired";
100
+ type ApprovalHandle = {
101
+ readonly state: ApprovalState;
102
+ readonly token: string | undefined;
103
+ readonly request: (note?: string) => Promise<void>;
104
+ };
105
+ type SubjectView = {
106
+ readonly principal: Principal | null;
107
+ readonly actor: Actor | undefined;
108
+ readonly delegation: Delegation | undefined;
109
+ readonly expiresAt: number | undefined;
110
+ readonly simulated: boolean;
111
+ };
112
+ type TenantView = {
113
+ readonly tenant: string | null;
114
+ readonly tenants: readonly string[];
115
+ readonly switchTo: (id: string) => Promise<void>;
116
+ readonly status: ClientStatus;
117
+ };
118
+ type FilterResult<T> = readonly T[] & {
119
+ readonly partial: boolean;
120
+ };
121
+ type RolesOptions = {
122
+ readonly tenant?: string;
123
+ readonly team?: string;
124
+ };
125
+ /** The provider options Vue, Svelte and Solid share; each adds its own reactive `snapshot`, `tenant`, `headers`, `verifier` and `defaults`. */
126
+ type ProviderOptionsBase = {
127
+ /**
128
+ * The AuthZEN evaluations endpoint for checks the snapshot cannot answer.
129
+ * `false` never calls one: such a check is denied with reason `server-only`.
130
+ */
131
+ readonly endpoint?: string | false;
132
+ /** Where `refresh()` fetches a fresh snapshot. Defaults to `endpoint`. */
133
+ readonly snapshotUrl?: string;
134
+ readonly approvals?: string;
135
+ /** Read on every request, so a new `fetch` applies without a new store. */
136
+ readonly fetch?: typeof fetch;
137
+ readonly maxAge?: number;
138
+ /** Localised text for the describe helper. */
139
+ readonly messages?: DescribeMessages;
140
+ /** Called with each snapshot the store accepts. */
141
+ readonly onSnapshot?: NonNullable<ClientStoreOptions["onSnapshot"]>;
142
+ /** Called when the store drops its snapshot. */
143
+ readonly onClear?: () => void;
144
+ /** Milliseconds between approval status polls. Defaults to 2000. */
145
+ readonly approvalInterval?: number;
146
+ };
147
+ /** How a control shows a permission it cannot use: hidden, or disabled with a reason. */
148
+ type GateMode = "hide" | "disable";
149
+ /**
150
+ * Everything a permission-gated control renders from, in one value: a
151
+ * button, a menu item or a link reads these fields and decides nothing
152
+ * itself. The client is a hint; the server checks again.
153
+ */
154
+ type GateView = {
155
+ /** The decision granted the action. */
156
+ readonly allowed: boolean;
157
+ /** The snapshot is loading; render the control disabled, not hidden. */
158
+ readonly pending: boolean;
159
+ /** `mode: "hide"` and the action is not available: render nothing. */
160
+ readonly hidden: boolean;
161
+ /** The control cannot run the action now (denied, pending or awaiting approval). */
162
+ readonly disabled: boolean;
163
+ /** The decision needs a person's approval first; offer to request it. */
164
+ readonly needsApproval: boolean;
165
+ /** The plans that would grant the action, for an upgrade prompt; empty otherwise. */
166
+ readonly upgrade: readonly string[];
167
+ /** Title and detail for a tooltip or an accessible description. */
168
+ readonly reason: DecisionDescription;
169
+ readonly decision: Decision;
170
+ };
171
+ //#endregion
172
+ export { FilterResult as a, PermissionSet as c, RolesOptions as d, SubjectView as f, ClientStoreOptions as h, ClientStatus as i, PermissionState as l, ClientStore as m, ApprovalState as n, GateMode as o, TenantView as p, ClientPermDock as r, GateView as s, ApprovalHandle as t, ProviderOptionsBase as u };
@@ -0,0 +1,57 @@
1
+ import { Vt as Snapshot, dt as TokenVerifier, ot as SnapshotSource } from "./policy-types-DzwivBgR.js";
2
+ import { n as DescribeMessages } from "./describe-BZUsixiL.js";
3
+ import { h as ClientStoreOptions } from "./types-BNORmDM8.js";
4
+ import { t as PermDockDefaults } from "./types-tIgIeIKJ.js";
5
+ import { ReactNode } from "react";
6
+ //#region src/react-native/types.d.ts
7
+ type SnapshotStorage = {
8
+ /** Names the implementation in errors and events. */
9
+ readonly name?: string;
10
+ getItem(key: string): string | null | Promise<string | null>;
11
+ setItem(key: string, value: string): void | Promise<void>;
12
+ removeItem(key: string): void | Promise<void>;
13
+ };
14
+ type NativeRevalidate = "launch" | "focus" | number;
15
+ /**
16
+ * Calls `listener` when the app changes state; `active` is `false` when it
17
+ * goes to the background. A listener called without an argument counts as
18
+ * a return to the foreground.
19
+ */
20
+ type SubscribeForeground = (listener: (active?: boolean) => void) => () => void;
21
+ /** Calls `listener` with `false` when the device loses connectivity and `true` when it returns. */
22
+ type SubscribeOnline = (listener: (online: boolean) => void) => () => void;
23
+ type ReactNativePermDockProviderProps = {
24
+ readonly storage: SnapshotStorage;
25
+ /**
26
+ * The signed-in principal's id, or `null` when nobody is signed in. Only a
27
+ * persisted snapshot for this id is read or written; `null` clears storage.
28
+ */
29
+ readonly subjectId: string | null;
30
+ readonly snapshot?: Snapshot | string;
31
+ readonly snapshotUrl?: string;
32
+ /** Hydrates from the device's own rows (`localSnapshot`); with `snapshotUrl` too, the latest answer wins. */
33
+ readonly source?: SnapshotSource;
34
+ readonly endpoint?: string;
35
+ readonly approvals?: string;
36
+ readonly tenant?: string;
37
+ readonly revalidate?: NativeRevalidate;
38
+ readonly subscribeForeground?: SubscribeForeground;
39
+ readonly subscribeOnline?: SubscribeOnline;
40
+ readonly fetch?: typeof fetch;
41
+ readonly headers?: Readonly<Record<string, string>>;
42
+ readonly maxAge?: number;
43
+ readonly verifier?: TokenVerifier;
44
+ /** What every `<Protected>` below renders for a slot it leaves out. */
45
+ readonly defaults?: PermDockDefaults;
46
+ /** Localised text for `useDescribe()`. */
47
+ readonly messages?: DescribeMessages;
48
+ /** Called with each snapshot the store accepts, after it is persisted. */
49
+ readonly onSnapshot?: NonNullable<ClientStoreOptions["onSnapshot"]>;
50
+ /** Called when the store drops its snapshot, after storage is cleared. */
51
+ readonly onClear?: () => void;
52
+ /** Milliseconds between approval status polls. Defaults to 2000. */
53
+ readonly approvalInterval?: number;
54
+ readonly children: ReactNode;
55
+ };
56
+ //#endregion
57
+ export { SubscribeOnline as a, SubscribeForeground as i, ReactNativePermDockProviderProps as n, SnapshotStorage as r, NativeRevalidate as t };
@@ -1,4 +1,5 @@
1
- import { D as PolicyVocabulary, ln as PermDock, rt as DecisionEvent } from "./policy-IB6yxpC3.js";
1
+ import { Xt as DecisionEvent, j as PolicyVocabulary } from "./policy-types-DzwivBgR.js";
2
+ import { r as PermDock } from "./permdock-D7eeLJER.js";
2
3
  //#region src/otel/types.d.ts
3
4
  declare const GENAI_SEMCONV_PIN = "1.37.0";
4
5
  declare const GEN_AI_TOOL_NAME = "gen_ai.tool.name";
@@ -0,0 +1,107 @@
1
+ import { dt as TokenVerifier, ir as Subject, ot as SnapshotSource, q as DecisionSink, ut as TokenSigner } from "./policy-types-DzwivBgR.js";
2
+ import { o as PolicySource } from "./hosted-DBDX0M-P.js";
3
+ import { m as ApprovalStore, u as ApprovalRequest } from "./types-CCpc2Dcv.js";
4
+ import { a as CatalogDocument } from "./types-CZTnPFzM.js";
5
+ import { a as CatalogFinding } from "./sink-Bj_lDUDq.js";
6
+ //#region src/cloud/types.d.ts
7
+ type CloudEndpointOptions = {
8
+ readonly url?: string;
9
+ readonly environment?: string;
10
+ };
11
+ type CloudEndpoints = {
12
+ /** The environment URL, `<url>/v1/environments/<env>`: `iss` and `aud` of the policy document. */
13
+ readonly issuer: string;
14
+ /** The environment's JWK Set URL, for `joseTokenVerifier({ jwks })`. */
15
+ readonly jwks: string;
16
+ };
17
+ /** What every `permdock/cloud` client needs to reach one environment. */
18
+ type CloudConnectionOptions = CloudEndpointOptions & {
19
+ /** The environment key; defaults to `PERMDOCK_CLOUD_KEY`. */
20
+ readonly key?: string;
21
+ readonly fetch?: typeof fetch;
22
+ };
23
+ /** Who signs the `PermDock-Approver` token `approvals.resolve` sends. */
24
+ type CloudApproverOptions = {
25
+ /**
26
+ * Signs the token with a key the environment trusts as an issuer, such as
27
+ * `joseTokenSigner` over your own key. Never `cloudSigner`: a client key
28
+ * that could mint approver tokens could forge any approver.
29
+ */
30
+ readonly signer: TokenSigner;
31
+ /** `aud` of the token; defaults to `<issuer>/approvals`, the environment URL plus `/approvals`. */
32
+ readonly audience?: string | readonly string[];
33
+ /**
34
+ * The `holder(permission)` approvers of `request` that `approver` holds,
35
+ * typically `approverPermissions(request, permdockFor(approver))`. Signed
36
+ * into the token as `permissions`; without it the verdict's own
37
+ * `permissions` are signed. A throw signs none.
38
+ */
39
+ readonly permissions?: (request: ApprovalRequest, approver: Subject) => readonly string[] | Promise<readonly string[]>;
40
+ /**
41
+ * The relation approvers of `request` that `approver` holds, typically
42
+ * `approverRelations(request, approver, { relations, permissions })`.
43
+ * Signed into the token as `relations`; without it the verdict's own
44
+ * `relations` are signed. A throw signs none.
45
+ */
46
+ readonly relations?: (request: ApprovalRequest, approver: Subject) => readonly string[] | Promise<readonly string[]>;
47
+ };
48
+ type CloudOptions = CloudConnectionOptions & {
49
+ /**
50
+ * Proves the approver on `approvals.resolve`. Without it, every resolve but
51
+ * a `system` rejection throws `approver-unauthenticated` and sends nothing.
52
+ */
53
+ readonly approver?: CloudApproverOptions;
54
+ readonly flushAt?: number;
55
+ /** Most events the sink holds while the Cloud is unreachable (default 10 000); the oldest are dropped first. */
56
+ readonly capacity?: number;
57
+ readonly waitUntil?: (task: Promise<void>) => void;
58
+ /** The CloudEvents `source` of every event the sink sends, an absolute URI; defaults to the environment URL. */
59
+ readonly source?: string;
60
+ /**
61
+ * Verifies the environment's signed policy document, typically
62
+ * `joseTokenVerifier({ jwks: cloudEndpoints().jwks })`. Without one,
63
+ * `policies.current()` stays `null`: an unverifiable document is never applied.
64
+ */
65
+ readonly verifier?: TokenVerifier;
66
+ };
67
+ /**
68
+ * What `POST /catalog` answers: `201` with the new version and the drift
69
+ * findings against the previous one, or `200` with `unchanged: true` when
70
+ * the fingerprint is already published.
71
+ */
72
+ type CloudCatalogPush = {
73
+ readonly version: number;
74
+ readonly fingerprint: string;
75
+ readonly findings: readonly CatalogFinding[];
76
+ } | {
77
+ readonly version: number;
78
+ readonly fingerprint: string;
79
+ readonly unchanged: true;
80
+ };
81
+ type CloudCatalog = {
82
+ /**
83
+ * Posts the catalog, its `operations` included, to the environment.
84
+ * Throws when the Cloud refuses it or answers another shape. The Cloud
85
+ * shows and diffs it; it never decides with it.
86
+ */
87
+ push(catalog: CatalogDocument): Promise<CloudCatalogPush>;
88
+ };
89
+ type CloudClient = CloudEndpoints & {
90
+ readonly approvals: ApprovalStore;
91
+ readonly sink: DecisionSink;
92
+ /**
93
+ * A `SnapshotSource` for the subject `token` proves: an `at+jwt` the
94
+ * environment issued, or one a trusted issuer registered for `subject`
95
+ * signed. Sent as `PermDock-Subject`; the Cloud never takes a subject from
96
+ * anything else.
97
+ */
98
+ snapshotsFor(token: string): SnapshotSource;
99
+ readonly policies: PolicySource;
100
+ readonly catalog: CloudCatalog;
101
+ };
102
+ type CloudSignerOptions = CloudConnectionOptions & {
103
+ /** `aud` when a `sign` call names none; signing without either throws. */
104
+ readonly audience?: string | readonly string[];
105
+ };
106
+ //#endregion
107
+ export { CloudConnectionOptions as a, CloudOptions as c, CloudClient as i, CloudSignerOptions as l, CloudCatalog as n, CloudEndpointOptions as o, CloudCatalogPush as r, CloudEndpoints as s, CloudApproverOptions as t };
@@ -1,4 +1,5 @@
1
- import { G as Approver, Mr as Membership, Pr as Subject, dr as RelationGrantee, o as ApprovalStage, r as ApprovalMode } from "./policy-IB6yxpC3.js";
1
+ import { Cn as RelationGrantee, Rt as Instant, fn as Approver, ir as Subject, nr as Membership, o as ApprovalStage, on as WireDelegation, r as ApprovalMode, sr as AdapterId } from "./policy-types-DzwivBgR.js";
2
+ import { V as AppData } from "./vocabulary-D6lPdb4Z.js";
2
3
  //#region src/approvals/types.d.ts
3
4
  type ApprovalStatus = "pending" | "approved" | "rejected" | "expired";
4
5
  type ApprovalApprovers = {
@@ -13,9 +14,9 @@ type ApprovalApprovers = {
13
14
  readonly staleOn?: "resource-change";
14
15
  /** Distinct approvers of `by` needed before `status` becomes `approved`; absent means 1. */
15
16
  readonly quorum?: number;
16
- /** Who else may approve once the request has waited `after` (a duration such as `'4h'`) since `createdAt`. */
17
+ /** Who else may approve once the request has waited `after` seconds since `createdAt`. */
17
18
  readonly escalation?: {
18
- readonly after: string;
19
+ readonly after: number;
19
20
  readonly to: Approver | readonly Approver[];
20
21
  };
21
22
  };
@@ -25,6 +26,43 @@ type ApprovalSignature = {
25
26
  readonly at: string;
26
27
  readonly stage?: number;
27
28
  readonly vouched?: string;
29
+ /** The principal `by` approved for, when `by` acted under an `ApprovalDelegation`. */
30
+ readonly onBehalfOf?: string;
31
+ /** The `ApprovalDelegation` id `onBehalfOf` was read from. */
32
+ readonly delegation?: string;
33
+ };
34
+ /**
35
+ * One out-of-office delegation: `delegate` may approve what `delegator`
36
+ * could approve, from `from` until `until`. Both instants are required, so
37
+ * a delegation cannot be open-ended. `permissions` and `resources` narrow
38
+ * it; absent, it covers every request. `tenant` holds it to one tenant.
39
+ */
40
+ type ApprovalDelegation = {
41
+ readonly id: string;
42
+ readonly delegator: string;
43
+ readonly delegate: string;
44
+ readonly tenant?: string;
45
+ readonly permissions?: readonly string[];
46
+ readonly resources?: readonly string[];
47
+ /** RFC 3339. Inclusive. */
48
+ readonly from: string;
49
+ /** RFC 3339. Exclusive. */
50
+ readonly until: string;
51
+ };
52
+ /**
53
+ * Active approval delegations for one delegate, a subject input the handler
54
+ * reads when the caller is not an approver on their own. A throw matches
55
+ * nobody. One hop: the handler never reads the delegator's own delegations.
56
+ */
57
+ type ApprovalDelegationSource = {
58
+ /** Names the implementation in errors and events. */
59
+ readonly name?: string;
60
+ delegationsFor(query: {
61
+ readonly delegate: string;
62
+ readonly tenant?: string;
63
+ /** RFC 3339. The source returns delegations active at this instant. */
64
+ readonly at: string;
65
+ }): readonly ApprovalDelegation[] | Promise<readonly ApprovalDelegation[]>;
28
66
  };
29
67
  type ApprovalSubjectSummary = {
30
68
  readonly principal: {
@@ -37,13 +75,13 @@ type ApprovalSubjectSummary = {
37
75
  readonly kind: string;
38
76
  };
39
77
  readonly session?: string;
40
- readonly delegation?: {
41
- readonly scopes?: readonly string[];
42
- readonly authorizationDetails?: readonly unknown[];
43
- };
78
+ /** OAuth `scope` (space-separated) and RFC 9396 `authorization_details`. */
79
+ readonly delegation?: WireDelegation;
44
80
  };
45
81
  type ApprovalRequest = {
46
82
  readonly v: 1;
83
+ /** The request id: the signature's `jti`. */
84
+ readonly id: string;
47
85
  readonly token: string;
48
86
  readonly permission: string;
49
87
  readonly scope: string;
@@ -55,7 +93,7 @@ type ApprovalRequest = {
55
93
  readonly membership?: Membership;
56
94
  readonly approvers?: ApprovalApprovers;
57
95
  readonly detail: string;
58
- readonly adapter?: string;
96
+ readonly adapter?: AdapterId;
59
97
  readonly createdAt: string;
60
98
  readonly expiresAt: string;
61
99
  readonly status: ApprovalStatus;
@@ -67,6 +105,8 @@ type ApprovalRequest = {
67
105
  readonly vouched?: string;
68
106
  readonly note?: string;
69
107
  readonly consumedAt?: string;
108
+ /** The application's own data, set when the request opens; plain JSON, never read by a decision. */
109
+ readonly x?: AppData;
70
110
  };
71
111
  type ApprovalVerdict = {
72
112
  readonly status: "approved" | "rejected";
@@ -87,6 +127,18 @@ type ApprovalVerdict = {
87
127
  */
88
128
  readonly permissions?: readonly string[];
89
129
  readonly vouched?: string;
130
+ /**
131
+ * Set when `by` is not an approver and acts for this principal under an
132
+ * `ApprovalDelegation`. Server-side input: the handler resolves the
133
+ * delegator, and `applyApprovalVerdict` checks them again. `relations`
134
+ * and `permissions` are that principal's facts, never the delegate's.
135
+ */
136
+ readonly onBehalfOf?: {
137
+ readonly subject: Subject;
138
+ readonly delegation: string;
139
+ readonly relations?: readonly string[];
140
+ readonly permissions?: readonly string[];
141
+ };
90
142
  };
91
143
  type ApprovalListFilter = {
92
144
  readonly status?: ApprovalStatus;
@@ -114,35 +166,43 @@ type ApprovalCancelMeta = {
114
166
  readonly note?: string;
115
167
  };
116
168
  type ApprovalStore = {
169
+ /** Names the implementation in errors and events. */
170
+ readonly name?: string;
117
171
  /**
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.
172
+ * Seconds a request opened against this store stays open when the
173
+ * caller sets no `ttl`; absent means `DEFAULT_APPROVAL_TTL`. A grant's
174
+ * `approval.ttl` still caps it.
121
175
  */
122
176
  readonly ttl?: number;
123
177
  create(request: ApprovalRequest): Promise<void> | void;
124
178
  get(token: string): Promise<ApprovalRequest | null> | ApprovalRequest | null;
179
+ /**
180
+ * The request with this `id`, for `approvalsHandler`, which routes by id.
181
+ * Without it the handler pages through `list` to find the id.
182
+ */
183
+ getById?(id: string): Promise<ApprovalRequest | null> | ApprovalRequest | null;
125
184
  resolve(token: string, verdict: ApprovalVerdict): Promise<ApprovalRequest> | ApprovalRequest;
126
185
  list(query: ApprovalListQuery): Promise<ApprovalPage> | ApprovalPage;
127
- expire(now?: Date): Promise<number> | number;
186
+ expire(now?: Instant): Promise<number> | number;
128
187
  /**
129
188
  * Marks an approved, unexpired, unconsumed request consumed and returns it;
130
189
  * returns `null` otherwise. Must be atomic: two concurrent calls for one
131
190
  * token never both return the request.
132
191
  */
133
- consume(token: string, now?: Date): Promise<ApprovalRequest | null> | ApprovalRequest | null;
192
+ consume(token: string, now?: Instant): Promise<ApprovalRequest | null> | ApprovalRequest | null;
134
193
  cancel?(filter: ApprovalListFilter, meta: ApprovalCancelMeta): Promise<number> | number;
135
194
  };
136
- type ApprovalResumeFailure = "approval-not-found" | "approval-pending" | "approval-rejected" | "approval-expired" | "approval-consumed";
195
+ type ApprovalResumeFailureCause = "approval-not-found" | "approval-pending" | "approval-rejected" | "approval-expired" | "approval-consumed";
137
196
  type ApprovalInspectResult = {
138
197
  readonly ok: true;
139
198
  readonly request: ApprovalRequest;
140
199
  } | {
141
200
  readonly ok: false;
142
- readonly detail: ApprovalResumeFailure;
201
+ readonly cause: ApprovalResumeFailureCause;
143
202
  };
144
203
  declare const APPROVAL_HEADER: "PermDock-Approval";
145
- declare const DEFAULT_APPROVAL_TTL_MS: number;
204
+ /** Seconds a request stays open when neither the store nor the call sets a `ttl`. */
205
+ declare const DEFAULT_APPROVAL_TTL: number;
146
206
  /** The approvals a request needs in total: `approvers.quorum` (or 1), or the sum of its stages' quorums. */
147
207
  declare function approvalQuorum(request: ApprovalRequest): number;
148
208
  /**
@@ -154,4 +214,4 @@ declare function escalationOpenAt(request: ApprovalRequest): number | undefined;
154
214
  /** The key a verdict's `relations` lists a relation approver under. */
155
215
  declare function approverRelationKey(item: RelationGrantee): string;
156
216
  //#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 };
217
+ export { DEFAULT_APPROVAL_TTL as _, ApprovalDelegationSource as a, escalationOpenAt as b, ApprovalListQuery as c, ApprovalResumeFailureCause as d, ApprovalSignature as f, ApprovalVerdict as g, ApprovalSubjectSummary as h, ApprovalDelegation as i, ApprovalPage as l, ApprovalStore as m, ApprovalApprovers as n, ApprovalInspectResult as o, ApprovalStatus as p, ApprovalCancelMeta as r, ApprovalListFilter as s, APPROVAL_HEADER as t, ApprovalRequest as u, approvalQuorum as v, approverRelationKey as y };
@@ -1,4 +1,5 @@
1
- import { S as ResourceRelation } from "./permissions-DttnqqxC.js";
1
+ import { I as ResourceRelation } from "./vocabulary-D6lPdb4Z.js";
2
+ import { s as OperationMeta } from "./operations-CxybZErY.js";
2
3
  //#region src/catalog/types.d.ts
3
4
  type CatalogUsage = {
4
5
  readonly file: string;
@@ -35,7 +36,8 @@ type CatalogBreakGlass = {
35
36
  readonly overrides: readonly string[];
36
37
  readonly purpose?: readonly string[];
37
38
  readonly reason: boolean;
38
- readonly maxDuration?: string;
39
+ /** Seconds. */
40
+ readonly maxDuration?: number;
39
41
  readonly obligations: readonly string[];
40
42
  };
41
43
  type CatalogApproval = "human" | {
@@ -48,9 +50,11 @@ type CatalogApproval = "human" | {
48
50
  readonly distinct?: boolean;
49
51
  readonly staleOn?: "resource-change";
50
52
  readonly quorum?: number;
51
- readonly ttl?: string;
53
+ /** Seconds. */
54
+ readonly ttl?: number;
55
+ /** `after` is seconds from the request's creation. */
52
56
  readonly escalation?: {
53
- readonly after: string;
57
+ readonly after: number;
54
58
  readonly to: unknown;
55
59
  };
56
60
  };
@@ -58,12 +62,26 @@ type CatalogResource = {
58
62
  readonly id: string;
59
63
  readonly schema: unknown;
60
64
  readonly definedIn?: string;
65
+ /** `resource(…, { parent })`: the row field that holds the parent row's id. */
66
+ readonly parent?: {
67
+ readonly field: string;
68
+ readonly resource: string;
69
+ };
70
+ /** `resource(…, { links })`: to-one links `through` walks; absent when none. */
71
+ readonly links?: Readonly<Record<string, {
72
+ readonly field: string;
73
+ readonly resource: string;
74
+ }>>;
75
+ /** `'hide'` answers a denied check on a loaded row as if the row did not exist; absent for `'reveal'`. */
76
+ readonly disclosure?: "hide";
61
77
  readonly relations?: Readonly<Record<string, ResourceRelation>>;
62
78
  /** The row field an `approval: { staleOn: 'resource-change' }` binds to. */
63
79
  readonly version?: string;
64
80
  /** The boolean column that keeps ancestor grants out of a row. */
65
81
  readonly restricted?: string;
66
82
  readonly restrictedStops?: readonly string[];
83
+ /** `resource(…, { meta })`: titles plus the app's own `x`; absent when empty. */
84
+ readonly meta?: Readonly<Record<string, unknown>>;
67
85
  };
68
86
  type CatalogRole = {
69
87
  readonly key: string;
@@ -86,7 +104,8 @@ type CatalogRole = {
86
104
  };
87
105
  /** A role activation as the catalog carries it. */
88
106
  type CatalogActivation = {
89
- readonly maxDuration?: string;
107
+ /** Seconds. */
108
+ readonly maxDuration?: number;
90
109
  readonly justification: "required" | "optional";
91
110
  readonly approval?: boolean;
92
111
  readonly assurance?: {
@@ -99,7 +118,8 @@ type CatalogActivation = {
99
118
  type CatalogSupportAccess = {
100
119
  readonly actorRequired: boolean;
101
120
  readonly group: string;
102
- readonly durations: readonly string[];
121
+ /** Seconds. */
122
+ readonly durations: readonly number[];
103
123
  };
104
124
  /** One declared scope, in declaration order. */
105
125
  type CatalogScope = {
@@ -107,10 +127,10 @@ type CatalogScope = {
107
127
  readonly key: string;
108
128
  readonly within?: string;
109
129
  };
110
- /** A grant's `validFrom` / `validUntil` window in Unix seconds. */
130
+ /** A grant's `validFrom` / `validUntil` window in RFC 3339. */
111
131
  type CatalogValidity = {
112
- readonly from?: number;
113
- readonly until?: number;
132
+ readonly from?: string;
133
+ readonly until?: string;
114
134
  };
115
135
  /**
116
136
  * One code grant as the catalog carries it: the normalised shape
@@ -141,11 +161,14 @@ type CatalogGrant = {
141
161
  readonly requires?: string | readonly string[];
142
162
  readonly limit?: {
143
163
  readonly count: number;
144
- readonly per: string;
164
+ /** Seconds. */
165
+ readonly per: number;
145
166
  readonly mode?: "hard" | "soft";
146
167
  };
147
168
  /** Present when the grant is a closure, reads the relation graph or is opaque; `where` and `check` are then omitted. */
148
169
  readonly portable?: false;
170
+ /** The grant's `meta`: a description plus the app's own `x`; absent when empty. */
171
+ readonly meta?: Readonly<Record<string, unknown>>;
149
172
  };
150
173
  /** `permissions.catalog.json`, validated by `schemas/catalog-v1.json`. */
151
174
  type CatalogDocument = {
@@ -167,6 +190,22 @@ type CatalogDocument = {
167
190
  readonly grants?: readonly CatalogGrant[];
168
191
  /** The policy's standing delegations, canonically ordered; present when the policy declares any. */
169
192
  readonly delegations?: readonly CatalogDelegation[];
193
+ /** The `defineOperations` map in definition order; present when the config names an `operations` module. */
194
+ readonly operations?: readonly CatalogOperation[];
195
+ /** The policy's coarse OAuth scopes, sorted by scope; present when the policy declares any. */
196
+ readonly oauthScopes?: readonly CatalogOAuthScope[];
197
+ };
198
+ /** One `definePolicy({ oauthScopes })` entry: the coarse scope an authorization server issues and the permission keys it covers, sorted by code point. */
199
+ type CatalogOAuthScope = {
200
+ readonly scope: string;
201
+ readonly permissions: readonly string[];
202
+ };
203
+ /** One `defineOperations` entry: its name, the permission keys it is bound to, and its meta. */
204
+ type CatalogOperation = {
205
+ readonly name: string;
206
+ readonly permission: string;
207
+ readonly results?: string;
208
+ readonly meta: OperationMeta;
170
209
  };
171
210
  /** One `definePolicy({ delegations })` entry: who hands over, to which actor, which permission keys, and when. */
172
211
  type CatalogDelegation = {
@@ -180,4 +219,4 @@ type CatalogDelegation = {
180
219
  readonly validity?: CatalogValidity;
181
220
  };
182
221
  //#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 };
222
+ export { CatalogDocument as a, CatalogOperation as c, CatalogRole as d, CatalogScope as f, CatalogValidity as h, CatalogDelegation as i, CatalogPermission as l, CatalogUsage as m, CatalogApproval as n, CatalogGrant as o, CatalogSupportAccess as p, CatalogBreakGlass as r, CatalogOAuthScope as s, CatalogActivation as t, CatalogResource as u };