permdock 0.4.0 → 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 (514) hide show
  1. package/README.md +37 -35
  2. package/dist/{schema-Bol6gqXA.js → 2020-C9VN-x8c.js} +5 -130
  3. package/dist/a2a/index.d.ts +6 -6
  4. package/dist/a2a/index.js +14 -17
  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 -35
  10. package/dist/ai-sdk/index.js +37 -23
  11. package/dist/{app-data-CV8pqqMi.js → app-data-MuyzVqX8.js} +2 -1
  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/arazzo-B6lebmiQ.js +36 -0
  19. package/dist/{arazzo-C4BcskbX.js → arazzo-BWhNF-k0.js} +20 -14
  20. package/dist/args-IIolxxKA.js +197 -0
  21. package/dist/astro/index.d.ts +43 -0
  22. package/dist/astro/index.js +27 -0
  23. package/dist/audience-Dg8XsRaO.js +55 -0
  24. package/dist/auth-DRLEizbL.js +178 -0
  25. package/dist/authzen/index.d.ts +26 -6
  26. package/dist/authzen/index.js +94 -79
  27. package/dist/automation-BMZPIVUM.d.ts +114 -0
  28. package/dist/automation-DVjOckjV.js +157 -0
  29. package/dist/better-auth/index.d.ts +8 -6
  30. package/dist/better-auth/index.js +9 -8
  31. package/dist/better-supabase/index.d.ts +357 -30
  32. package/dist/better-supabase/index.js +936 -194
  33. package/dist/{bind-BzqG8SMb.d.ts → bind--9EFVYWF.d.ts} +12 -10
  34. package/dist/{bind-kk-uyCwH.js → bind-CZzhx-Vj.js} +14 -10
  35. package/dist/body-CH5of8Ne.js +10 -0
  36. package/dist/body-text-QcXok_SI.js +52 -0
  37. package/dist/{build-instance-DIIV9DbC.js → build-instance-BMnAudHn.js} +4 -3
  38. package/dist/{canonical-json-CFKyFOke.js → canonical-json-BC8_nMTw.js} +5 -3
  39. package/dist/{capability-CksyCWDH.d.ts → capability-BSslw1QV.d.ts} +44 -25
  40. package/dist/{capability-txATtKV4.js → capability-N1K9IpqS.js} +68 -42
  41. package/dist/casbin-Cr7RLtA3.js +30 -0
  42. package/dist/casbin-Dyu2gnUD.js +234 -0
  43. package/dist/casl-64gpT-8x.js +24 -0
  44. package/dist/casl-DjEDhTCP.js +299 -0
  45. package/dist/catalog/index.d.ts +74 -2
  46. package/dist/catalog/index.js +51 -2
  47. package/dist/{catalog-tZUyOfOv.js → catalog-BECMPrwc.js} +51 -6
  48. package/dist/catalog-DjhMYYCq.js +1 -0
  49. package/dist/catalog-R_A__RsH.js +52 -0
  50. package/dist/{catalog-doc-DWtg0gGR.js → catalog-doc-C9wjsfNY.js} +45 -23
  51. package/dist/catalog-fingerprint-CCP0-yQS.js +153 -0
  52. package/dist/chat/index.d.ts +2 -0
  53. package/dist/chat/index.js +224 -0
  54. package/dist/chat-sdk/index.d.ts +87 -0
  55. package/dist/chat-sdk/index.js +197 -0
  56. package/dist/claims-map-7oQ3ue4X.js +13 -0
  57. package/dist/claims-map-Ca-QX8C6.d.ts +32 -0
  58. package/dist/claude-agent/index.d.ts +7 -14
  59. package/dist/claude-agent/index.js +24 -27
  60. package/dist/clerk/index.d.ts +9 -8
  61. package/dist/clerk/index.js +9 -14
  62. package/dist/cli/bin.js +36 -17
  63. package/dist/cli/index.d.ts +19 -5
  64. package/dist/cli/index.js +164 -4
  65. package/dist/cloud/index.d.ts +102 -63
  66. package/dist/cloud/index.js +239 -340
  67. package/dist/cloud-CIoHNevm.js +87 -0
  68. package/dist/codemod-Bmj9dWMH.js +37 -0
  69. package/dist/codemod-Cxvvc70T.js +2084 -0
  70. package/dist/{collect-2SrB7lfk.js → collect-CrZJJnEF.js} +75 -11
  71. package/dist/collect-DloHbDVa.js +55 -0
  72. package/dist/collect-FlXJlhus.js +1 -0
  73. package/dist/command-L8EstFNm.js +6 -0
  74. package/dist/compile/index.d.ts +1 -1
  75. package/dist/compile/index.js +1 -2
  76. package/dist/{compile-CcEu2ZQ1.js → compile-CMqMx_IN.js} +11 -8
  77. package/dist/{compile-CtTP7eur.d.ts → compile-Ckm2HqBZ.d.ts} +5 -3
  78. package/dist/completion-BqhRBJD8.js +143 -0
  79. package/dist/config-B46rm9sc.js +26 -0
  80. package/dist/{config-BIjREpyE.js → config-bs_kZeYq.js} +12 -7
  81. package/dist/{config-report--Xb9APJS.js → config-report-DUgj62Ai.js} +15 -5
  82. package/dist/{connection-DUsczpB5.js → connection-DjhIJSs2.js} +6 -5
  83. package/dist/{context-DieZVJXu.js → context-bbFHR-0D.js} +2 -2
  84. package/dist/convex/index.d.ts +11 -10
  85. package/dist/convex/index.js +6 -4
  86. package/dist/create-0VZ7Pdiu.d.ts +107 -0
  87. package/dist/create-BDS7wc3y.d.ts +138 -0
  88. package/dist/create-BFfm17UA.d.ts +110 -0
  89. package/dist/create-BWRSXgOF.js +403 -0
  90. package/dist/create-C3b4B5eF.js +130 -0
  91. package/dist/{create-BBO24vj6.js → create-DnrmLnLW.js} +31 -32
  92. package/dist/{credential-kue0qpbm.js → credential-DM2um3ha.js} +152 -31
  93. package/dist/credentials-DPyHmYz5.js +74 -0
  94. package/dist/delegation-DaXVdDhM.js +286 -0
  95. package/dist/delivery/index.d.ts +5 -0
  96. package/dist/delivery/index.js +5 -0
  97. package/dist/delivery-DCAgNyCn.js +499 -0
  98. package/dist/delivery-event-xX4obB8F.js +40 -0
  99. package/dist/{denied-text-DfRk15uw.d.ts → denied-text-D8jDHgsl.d.ts} +5 -5
  100. package/dist/{describe-C3ldA9os.d.ts → describe-BZUsixiL.d.ts} +2 -2
  101. package/dist/{describe-Cgkp7eP0.js → describe-BybMRY7A.js} +6 -2
  102. package/dist/device-BARQ8eYG.js +193 -0
  103. package/dist/diff-CxZo9pTq.js +37 -0
  104. package/dist/{diff-rpqoe7Ag.js → diff-DCePiN6M.js} +60 -54
  105. package/dist/doctor-CxiwSfqH.js +44 -0
  106. package/dist/{doctor-owlv6ddh.js → doctor-DFjUxf2f.js} +245 -50
  107. package/dist/drizzle/index.d.ts +5 -3
  108. package/dist/drizzle/index.js +2 -2
  109. package/dist/elysia/index.d.ts +16 -13
  110. package/dist/elysia/index.js +13 -12
  111. package/dist/env-DJZrPjRi.js +8 -0
  112. package/dist/errors-BDUwg2qC.js +27 -0
  113. package/dist/{errors-drnfxYtm.js → errors-BKy0EfhN.js} +5 -9
  114. package/dist/errors-BWXBMaKK.d.ts +11 -0
  115. package/dist/{errors-OD_4c__H.d.ts → errors-C2PXIv4c.d.ts} +2 -2
  116. package/dist/errors-CWTY6uih.js +143 -0
  117. package/dist/evaluate-_R8QkWaf.js +1732 -0
  118. package/dist/evaluations-16UqqQ6W.d.ts +32 -0
  119. package/dist/{evaluations-C9YJsv3H.js → evaluations-DZ2CbV5k.js} +145 -34
  120. package/dist/eve/index.d.ts +12 -16
  121. package/dist/eve/index.js +22 -28
  122. package/dist/event-time-CsegxXxB.js +23 -0
  123. package/dist/expiry-D4_YKRKD.js +52 -0
  124. package/dist/express/index.d.ts +13 -10
  125. package/dist/express/index.js +12 -11
  126. package/dist/fastify/index.d.ts +25 -22
  127. package/dist/fastify/index.js +13 -12
  128. package/dist/fetch-adapter-g0ypLkID.js +120 -0
  129. package/dist/fetch-adapter-qKJBuRqy.d.ts +31 -0
  130. package/dist/fields-D9tPVUUS.js +203 -0
  131. package/dist/files-C5ZI27eV.js +124 -0
  132. package/dist/{fixtures-h2eG2OZV.js → fixtures-B7XrLeY7.js} +8 -7
  133. package/dist/flags-C3DktBDY.js +86 -0
  134. package/dist/{from-snapshot-7REQZe0H.js → from-snapshot-D2lZt4Dd.js} +55 -52
  135. package/dist/{grantee-CXY-0C87.js → grantee-Cn1HyUsI.js} +3 -3
  136. package/dist/{grantee-conditions-MQs5NIuX.js → grantee-conditions-CcXf8hMM.js} +4 -3
  137. package/dist/{grantee-match-fxYp9Nmt.js → grantee-match-DHArqY82.js} +5 -4
  138. package/dist/h3/index.d.ts +37 -0
  139. package/dist/h3/index.js +35 -0
  140. package/dist/headers-BIjfMaoC.js +8 -0
  141. package/dist/headers-CIbDTUTK.d.ts +7 -0
  142. package/dist/{helpers-C9YmyBIa.js → helpers-DTcZOzhF.js} +45 -38
  143. package/dist/hono/index.d.ts +12 -9
  144. package/dist/hono/index.js +13 -12
  145. package/dist/hosted-BZIAYvon.js +315 -0
  146. package/dist/hosted-DBDX0M-P.d.ts +78 -0
  147. package/dist/{http-DPuDaChb.d.ts → http-B_LphE5Y.d.ts} +1 -2
  148. package/dist/http-DXJ37RDA.js +46 -0
  149. package/dist/{http-BEbdMZ05.js → http-ujKm0JXE.js} +1 -2
  150. package/dist/{import-UHk1N7vH.js → import-CNV7I2Dw.js} +25 -20
  151. package/dist/{import-BFIlhetD.js → import-DMmOG27O.js} +190 -53
  152. package/dist/index-BcHcPyIo.d.ts +110 -0
  153. package/dist/index-CaxrMD1A.d.ts +1 -0
  154. package/dist/index-Chrs5fQ-.d.ts +210 -0
  155. package/dist/index-CxGUswIC.d.ts +431 -0
  156. package/dist/index-D8EovfsP.d.ts +91 -0
  157. package/dist/{index-UdVQgq48.d.ts → index-DOVf7RJv.d.ts} +431 -81
  158. package/dist/{index-BwMe94Xq.d.ts → index-SGdIQyzc.d.ts} +34 -16
  159. package/dist/index.d.ts +19 -15
  160. package/dist/index.js +31 -21
  161. package/dist/init-DeMYsnYJ.js +96 -0
  162. package/dist/init-GG6Jh8HD.js +95 -0
  163. package/dist/{instance-options-plkrsAog.d.ts → instance-options-Omfd793B.d.ts} +2 -2
  164. package/dist/instance-snapshot-Cxq4ygFc.js +600 -0
  165. package/dist/instant-BluqDvyS.js +19 -0
  166. package/dist/internals-Dk8A8fX3.js +17 -0
  167. package/dist/{json-schema-DBkdUuCO.js → json-schema-B-vAwlde.js} +45 -6
  168. package/dist/json-schema-CN_iLFH2.d.ts +40 -0
  169. package/dist/jwt/index.d.ts +18 -11
  170. package/dist/jwt/index.js +156 -135
  171. package/dist/{kernel-CB3LrIJM.js → kernel-5JatXyND.js} +52 -24
  172. package/dist/kysely/index.d.ts +5 -3
  173. package/dist/kysely/index.js +2 -2
  174. package/dist/load-BxEtwlBS.js +1 -0
  175. package/dist/{load-C3_oTHyO.js → load-DFS_ry0W.js} +22 -6
  176. package/dist/{load-jose-BL6LH4bL.js → load-jose-DZ4dnjri.js} +1 -4
  177. package/dist/login-Dfe5RlYk.js +68 -0
  178. package/dist/login-imhuwvn3.js +254 -0
  179. package/dist/manifest-C8IzW3Do.js +42 -0
  180. package/dist/manifest-CtKR3GXL.js +370 -0
  181. package/dist/manifest-json-CAGzls-C.js +9 -0
  182. package/dist/{manifest-uDS9y5de.d.ts → manifest-mx5ghSFM.d.ts} +9 -2
  183. package/dist/manifest-schema-C0kK_8V0.js +399 -0
  184. package/dist/{map-claims-AVlBaJoa.js → map-claims-D3oRmTk0.js} +13 -10
  185. package/dist/{map-error-BE27PYkE.js → map-error-TCAdw-eW.js} +3 -3
  186. package/dist/{markers-CiwAOZtO.js → markers-C6joDI3o.js} +2 -1
  187. package/dist/mcp/index.d.ts +22 -12
  188. package/dist/mcp/index.js +57 -39
  189. package/dist/{migrate-BwlB5-Wk.js → migrate-BShP7Vf4.js} +53 -14
  190. package/dist/nest/index.d.ts +12 -9
  191. package/dist/nest/index.js +15 -14
  192. package/dist/next/index.d.ts +18 -21
  193. package/dist/next/index.js +13 -11
  194. package/dist/next/plugin.d.ts +1 -1
  195. package/dist/next/plugin.js +2 -2
  196. package/dist/node/index.d.ts +10 -10
  197. package/dist/node/index.js +7 -9
  198. package/dist/{ocsf-uYFXGVw2.js → ocsf-BFp-PZZA.js} +22 -11
  199. package/dist/openai/index.d.ts +9 -16
  200. package/dist/openai/index.js +17 -24
  201. package/dist/openapi/index.d.ts +3 -3
  202. package/dist/openapi/index.js +1 -1
  203. package/dist/{openapi-DBzHQbov.js → openapi-B7HZ0f-r.js} +8 -8
  204. package/dist/{openapi-BJdBmYDG.js → openapi-DTaEmTSW.js} +10 -9
  205. package/dist/openapi-ahr8rHu3.js +138 -0
  206. package/dist/operation-findings-DgATDpvh.js +36 -0
  207. package/dist/operations-CxybZErY.d.ts +59 -0
  208. package/dist/orpc/index.d.ts +13 -10
  209. package/dist/orpc/index.js +20 -15
  210. package/dist/otel/index.d.ts +3 -2
  211. package/dist/otel/index.js +30 -7
  212. package/dist/output-Dyw8fyPF.js +88 -0
  213. package/dist/output-files-B3IZJksC.js +1 -0
  214. package/dist/{output-files-CgIsvdSa.js → output-files-DhRBBE4n.js} +24 -26
  215. package/dist/{permission-keys-B26jeyUv.js → ownership-BatFgAA4.js} +1698 -869
  216. package/dist/{package-root-DtNnpmUd.js → package-root-Dk_ETdkp.js} +1 -1
  217. package/dist/{parse-CVFQHk6c.js → parse-Cxq0WxrA.js} +2 -2
  218. package/dist/{parse-local-manifest-C-q02Pal.js → parse-local-manifest-CVSs6J9I.js} +1 -1
  219. package/dist/{parse-local-manifest-DvYUR0QL.d.ts → parse-local-manifest-DgqtruPn.d.ts} +1 -1
  220. package/dist/parse-request-D_tUXG6M.js +26 -0
  221. package/dist/paths-DXSHAMIa.js +42 -0
  222. package/dist/pdp/index.d.ts +7 -3
  223. package/dist/pdp/index.js +45 -26
  224. package/dist/{peer-BOr_kJE1.js → peer-C8swJ2GH.js} +23 -4
  225. package/dist/peer-CRvC7Hg1.js +1 -0
  226. package/dist/permdock-B9JxkBwC.js +868 -0
  227. package/dist/permdock-D7eeLJER.d.ts +502 -0
  228. package/dist/{permission-registry-BsblpB-z.js → permission-registry-Br4jSNVi.js} +3 -3
  229. package/dist/permissions-B-wCP5ZC.js +30 -0
  230. package/dist/{permissions-CCJ6lmxB.js → permissions-CZKiUfFM.js} +4 -3
  231. package/dist/{permissions-COH-KRgT.d.ts → permissions-oEWfl-kl.d.ts} +1 -2
  232. package/dist/policies-CO1oOymN.js +295 -0
  233. package/dist/{policy-ur0BBK_e.d.ts → policy-Czo4n3Hs.d.ts} +2 -2
  234. package/dist/{hosted-CBHgkzDl.js → policy-DLZJ5gAp.js} +17 -273
  235. package/dist/policy-from-catalog-DzhEc3Y9.js +450 -0
  236. package/dist/policy-module-CTlwMvLI.js +89 -0
  237. package/dist/{policy-types-sp9P1iIV.d.ts → policy-types-DzwivBgR.d.ts} +434 -631
  238. package/dist/postgrest-CW0IqC-U.js +566 -0
  239. package/dist/postgrest-NUqZT-RB.d.ts +100 -0
  240. package/dist/powersync-BHfuehf3.js +62 -0
  241. package/dist/powersync-CbzkqL_M.js +1 -0
  242. package/dist/{powersync-cZe4kzhL.js → powersync-bYUDLOAO.js} +23 -24
  243. package/dist/preset/index.d.ts +146 -0
  244. package/dist/preset/index.js +1 -0
  245. package/dist/preset-DZdU0tne.js +1768 -0
  246. package/dist/principal-source-pHneukrx.js +103 -0
  247. package/dist/prisma/index.d.ts +6 -3
  248. package/dist/prisma/index.js +2 -2
  249. package/dist/{problem-CnWraVhC.js → problem-CTviyH5L.js} +13 -23
  250. package/dist/{problem-details-rIIo8B2C.d.ts → problem-details-DXlt-vks.d.ts} +1 -1
  251. package/dist/{problem-details-DECUnXAn.js → problem-details-cn5X30gZ.js} +43 -40
  252. package/dist/problem-types-CJ2325SZ.js +5 -0
  253. package/dist/{prompt-CXYhLfsS.js → prompt-DfZLJLIn.js} +2 -2
  254. package/dist/{protected-B3_P7xuw.d.ts → protected-DEPHc2xV.d.ts} +16 -8
  255. package/dist/{protected-BN7BUdY1.js → protected-DfjY5mLA.js} +21 -4
  256. package/dist/{provider-Bi-0HNL3.js → provider-CC-u3bYP.js} +2 -2
  257. package/dist/{provider-kwHC9CZD.d.ts → provider-DMVt6yYn.d.ts} +1 -1
  258. package/dist/{provider-store-Ctt-81Ni.js → provider-store-B5Yrkhzr.js} +2 -2
  259. package/dist/pull-BgIfno6w.js +256 -0
  260. package/dist/pull-ByOks_Tg.js +1 -0
  261. package/dist/push-CmFVBOeI.js +116 -0
  262. package/dist/pushed-policy-BImMTTIM.d.ts +57 -0
  263. package/dist/pushed-policy-DobP7AHI.js +238 -0
  264. package/dist/react/index.d.ts +8 -8
  265. package/dist/react/index.js +6 -6
  266. package/dist/react/provider-client.d.ts +1 -1
  267. package/dist/react/provider-client.js +1 -2
  268. package/dist/react-native/index.d.ts +24 -72
  269. package/dist/react-native/index.js +24 -22
  270. package/dist/{refs-f3imMjNW.js → refs-K6eWUJ0H.js} +1 -1
  271. package/dist/{relation-walk-BXnlLtg2.js → relation-walk-3OyDBF0S.js} +2 -2
  272. package/dist/{relations-CvmSpG67.js → relations-BnCWnJGI.js} +3 -3
  273. package/dist/renames-CGj7YwcQ.js +175 -0
  274. package/dist/{replay-COpmZUfx.d.ts → replay-D7iKcLFe.d.ts} +1 -1
  275. package/dist/{replay-BsOyTrdV.js → replay-Du1tJjG7.js} +2 -1
  276. package/dist/{request-context-BVM7aWNs.js → request-context-BTRTG7OT.js} +3 -3
  277. package/dist/request-schema-CMreVuFM.js +148 -0
  278. package/dist/resend/index.d.ts +126 -0
  279. package/dist/resend/index.js +379 -0
  280. package/dist/{resource-relations-D1Un3pcz.js → resource-relations-D_jw0BFx.js} +1 -1
  281. package/dist/{retire-BFcxL6un.js → retire-CALjIQ7e.js} +2 -2
  282. package/dist/{revocations-Cy06JNx2.d.ts → revocations-R07lFBnX.d.ts} +2 -0
  283. package/dist/rls-BA8an5Ap.js +336 -0
  284. package/dist/{rls-BEktUaqg.js → rls-j6t43t7n.js} +287 -689
  285. package/dist/{role-builder-B4GbKM-i.js → role-builder-CXbis5-X.js} +14 -207
  286. package/dist/{rpc-nYC3cR_u.js → rpc-aPyNi6tA.js} +7 -7
  287. package/dist/run-CNsApDpd.js +1 -0
  288. package/dist/run-DOfMtc9V.js +723 -0
  289. package/dist/run-ticket-BjhTOi6u.d.ts +124 -0
  290. package/dist/run-ticket-sxFI6LAk.js +337 -0
  291. package/dist/{runtime-D_tMXnsq.js → runtime-D3VTAiCA.js} +1 -1
  292. package/dist/{saas-DtaA4JuW.js → saas-FO-Q8oj0.js} +16 -14
  293. package/dist/scan-BOI5tJ-6.js +29 -0
  294. package/dist/{schema-DjQBcAP9.js → schema-B4v0Qrac.js} +102 -8
  295. package/dist/schema-yLuBWWsh.js +130 -0
  296. package/dist/scim/index.d.ts +2 -2
  297. package/dist/scim/index.js +1 -2
  298. package/dist/{scim-vFR1O5oG.js → scim-ClHtpyV3.js} +208 -76
  299. package/dist/{scopes-tvpa34ep.js → scopes-CUPSjo9q.js} +12 -7
  300. package/dist/server/index.d.ts +12 -143
  301. package/dist/server/index.js +12 -9
  302. package/dist/server-DqCT4CgZ.js +453 -0
  303. package/dist/{server-types-DdqBwZN_.d.ts → server-types-BLd4MnBX.d.ts} +51 -68
  304. package/dist/{sha256-BO0swRXL.js → sha256-D9ihqmvd.js} +8 -1
  305. package/dist/{shared-1uhI-e-b.js → shared-CD11nBbC.js} +18 -8
  306. package/dist/{shared-JhMeOsDF.js → shared-DvvFzYXe.js} +8 -9
  307. package/dist/signals-D3NcTKUS.js +32 -0
  308. package/dist/sink-BEZSlMS_.js +957 -0
  309. package/dist/sink-Bj_lDUDq.d.ts +225 -0
  310. package/dist/{skills-BZdRQkxs.js → skills-B6lVdD_W.js} +13 -6
  311. package/dist/skills-CTYwkl44.js +51 -0
  312. package/dist/snapshot-CXUWfsNy.js +269 -0
  313. package/dist/{snapshot-cache-Cod40D-X.js → snapshot-cache-DZHQ0KF6.js} +11 -5
  314. package/dist/{snapshot-cache-J5T7t_vD.d.ts → snapshot-cache-DqK9eDmM.d.ts} +7 -5
  315. package/dist/solid/index.d.ts +11 -12
  316. package/dist/solid/index.js +7 -7
  317. package/dist/solid-start/index.d.ts +52 -0
  318. package/dist/solid-start/index.js +49 -0
  319. package/dist/{sources-Dljy06zL.d.ts → sources-BV9j0DeZ.d.ts} +7 -13
  320. package/dist/{sources-B1-b-R0t.js → sources-vs5dGOsS.js} +125 -119
  321. package/dist/{sql-t8teWOfo.js → sql-B5T1IL83.js} +13 -1
  322. package/dist/src-DLfUWFAI.js +1851 -0
  323. package/dist/ssf/index.d.ts +4 -4
  324. package/dist/ssf/index.js +384 -47
  325. package/dist/standard-webhooks-6lg8v_is.d.ts +88 -0
  326. package/dist/standard-webhooks-DgFFD-Ga.js +228 -0
  327. package/dist/storage-C2bWdvJH.js +132 -0
  328. package/dist/{store-ILkLUj_o.js → store-4u_hxjWa.js} +40 -53
  329. package/dist/{store-options-CbUHDoSe.js → store-options-BqEakYRa.js} +26 -21
  330. package/dist/{stores-BHXdSbw9.js → stores-BbsD4fAR.js} +2 -2
  331. package/dist/{stores-Cxz_80g-.d.ts → stores-ClZUgeoP.d.ts} +7 -8
  332. package/dist/{stream-Dwsg6WwE.d.ts → stream-7-xmnf3U.d.ts} +2 -2
  333. package/dist/{stream-BMui98KK.js → stream-CvdUS9V1.js} +9 -2
  334. package/dist/style-DiKWnAvn.js +1 -0
  335. package/dist/{style-CTm1AXDT.js → style-Uao76wO7.js} +3 -2
  336. package/dist/subject-BGoM5o8B.js +17 -0
  337. package/dist/supabase/index.d.ts +23 -106
  338. package/dist/supabase/index.js +5 -4
  339. package/dist/supabase/middleware.d.ts +7 -6
  340. package/dist/supabase/middleware.js +13 -11
  341. package/dist/supabase-9pqI57pW.js +92 -0
  342. package/dist/{supabase-C1TWlnYt.js → supabase-Dxlp8A94.js} +98 -205
  343. package/dist/supabase-hook-CXcGpHqq.js +1 -0
  344. package/dist/{supabase-hook-Cva3ikXz.js → supabase-hook-DdDQhMlw.js} +951 -60
  345. package/dist/support-session-C6xJQYut.js +158 -0
  346. package/dist/svelte/Protected.svelte +4 -4
  347. package/dist/svelte/index.d.ts +7 -7
  348. package/dist/svelte/index.js +10 -10
  349. package/dist/svelte/runtime.d.ts +3 -3
  350. package/dist/svelte/runtime.js +3 -3
  351. package/dist/svelte/source.d.ts +7 -7
  352. package/dist/svelte/source.js +4 -4
  353. package/dist/sveltekit/index.d.ts +51 -0
  354. package/dist/sveltekit/index.js +27 -0
  355. package/dist/tanstack-start/index.d.ts +51 -0
  356. package/dist/tanstack-start/index.js +40 -0
  357. package/dist/target-Bw37TFNA.js +51 -0
  358. package/dist/{tenancy-DshjqY0n.js → tenancy-DN2QAx9z.js} +5 -5
  359. package/dist/terminal/index.d.ts +11 -9
  360. package/dist/terminal/index.js +23 -287
  361. package/dist/testing/index.d.ts +311 -38
  362. package/dist/testing/index.js +3475 -201
  363. package/dist/testing/saas/index.d.ts +9 -8
  364. package/dist/testing/saas/index.js +2 -2
  365. package/dist/testing/saas/permissions.d.ts +1 -1
  366. package/dist/testing/saas/permissions.js +1 -2
  367. package/dist/text-BMFRfBqc.js +8 -0
  368. package/dist/{text-diff-BdkkYSbi.js → text-diff-BQcUapOb.js} +1 -1
  369. package/dist/thenable-yD7SabqG.js +31 -0
  370. package/dist/time-DkWjdL98.js +71 -0
  371. package/dist/{token-Bx9qy30p.js → token-BLZcjQgt.js} +15 -6
  372. package/dist/{tool-refusal-CQ7OEia9.js → tool-refusal-CMLN5xhn.js} +2 -2
  373. package/dist/trpc/index.d.ts +12 -9
  374. package/dist/trpc/index.js +16 -14
  375. package/dist/{types-7rJVLWe5.d.ts → types-5Ut_pbKy.d.ts} +61 -11
  376. package/dist/{store-9KO4BlkB.d.ts → types-BNORmDM8.d.ts} +100 -75
  377. package/dist/types-BjV-fqcA.d.ts +57 -0
  378. package/dist/{types-CUcFZfpU.d.ts → types-BqAKcRNW.d.ts} +2 -1
  379. package/dist/types-C8-KNsFf.d.ts +107 -0
  380. package/dist/{types-Br9IXUBG.d.ts → types-CCpc2Dcv.d.ts} +77 -17
  381. package/dist/{types-DpWfQdSh.d.ts → types-CZTnPFzM.d.ts} +46 -11
  382. package/dist/{types-CqrjB9o6.d.ts → types-CdlxsYQh.d.ts} +23 -11
  383. package/dist/{types-CIlTojhq.d.ts → types-ClZaWzfb.d.ts} +9 -6
  384. package/dist/types-DX0LaKTb.d.ts +157 -0
  385. package/dist/types-DiQjupG2.d.ts +332 -0
  386. package/dist/types-DqzsnlSA.js +67 -0
  387. package/dist/types-_sHy8BQf.d.ts +65 -0
  388. package/dist/{types-ByUo56un.d.ts → types-fbZ7JEXr.d.ts} +23 -22
  389. package/dist/{types-DHrmBJLH.d.ts → types-tIgIeIKJ.d.ts} +7 -7
  390. package/dist/unplugin/index.d.ts +1 -1
  391. package/dist/unplugin/index.js +2 -2
  392. package/dist/usage-CHOtwL19.js +1 -0
  393. package/dist/usage-DHtE8j4E.js +32 -0
  394. package/dist/{usage-CG9nOYZw.js → usage-T5mXq98v.js} +54 -11
  395. package/dist/{validation-error-BSSw0l_8.d.ts → validation-error-Bg5Tpluk.d.ts} +1 -1
  396. package/dist/{validity-dVrUEPJt.js → validity-CZ7-y0Cj.js} +32 -15
  397. package/dist/{verifier-DMr_Zmb_.js → verifier-DHuh-okk.js} +18 -7
  398. package/dist/{verify-BztUB3GX.js → verify-DbCL9bnB.js} +645 -50
  399. package/dist/{version-BEogC-rB.js → version-CEbQ5UeM.js} +4 -3
  400. package/dist/version-DXkYUISx.js +1 -0
  401. package/dist/{views-CJsrBS1f.js → views-DTIIO-oQ.js} +22 -5
  402. package/dist/{permission-types-Dg39z9Kv.d.ts → vocabulary-D6lPdb4Z.d.ts} +65 -2
  403. package/dist/vue/index.d.ts +9 -10
  404. package/dist/vue/index.js +8 -8
  405. package/dist/waiter-BGUtGYoU.js +67 -0
  406. package/dist/waiter-CKy4MQSY.d.ts +36 -0
  407. package/dist/watch-Cb-NcaUw.js +1 -0
  408. package/dist/{watch-zeucB7eF.js → watch-CszoTJMq.js} +44 -5
  409. package/dist/webmcp/index.d.ts +2 -2
  410. package/dist/webmcp/index.js +3 -3
  411. package/dist/where-scope-Dv-WTP-w.js +306 -0
  412. package/dist/who-can-D0QoYbEb.js +364 -0
  413. package/dist/wire-delegation-Cv3W2eaM.js +36 -0
  414. package/dist/wire-denial-C7PaVYEM.js +27 -0
  415. package/dist/workflow/index.d.ts +5 -0
  416. package/dist/workflow/index.js +223 -0
  417. package/dist/workflow-sdk/index.d.ts +56 -0
  418. package/dist/workflow-sdk/index.js +78 -0
  419. package/dist/{wrap-Cr93qqdP.d.ts → wrap-Bd1Tejur.d.ts} +2 -1
  420. package/dist/{wrap-DWsU_5Bd.js → wrap-gX61EtpB.js} +7 -6
  421. package/package.json +136 -37
  422. package/schemas/access-event-v1.json +118 -0
  423. package/schemas/approval-request-v1.json +34 -1
  424. package/schemas/approval-signature-v1.json +94 -0
  425. package/schemas/automation-event-v1.json +113 -0
  426. package/schemas/capability-v1.json +84 -0
  427. package/schemas/catalog-event-v1.json +87 -0
  428. package/schemas/catalog-v1.json +123 -12
  429. package/schemas/cli-commands-v1.json +164 -0
  430. package/schemas/cli-result-v1.json +96 -0
  431. package/schemas/cloud-api-v1.json +5407 -0
  432. package/schemas/connector-v1.json +408 -0
  433. package/schemas/credential-event-v1.json +81 -0
  434. package/schemas/credential-v1.json +134 -0
  435. package/schemas/decision-event-v1.json +288 -0
  436. package/schemas/delivery-event-v1.json +117 -0
  437. package/schemas/directory-event-v1.json +85 -0
  438. package/schemas/evidence-export-v1.json +54 -0
  439. package/schemas/membership-event-v1.json +93 -0
  440. package/schemas/policy-v1.json +68 -0
  441. package/schemas/pushed-policy-v1.json +236 -0
  442. package/schemas/run-v1.json +162 -0
  443. package/schemas/snapshot-v1.json +138 -0
  444. package/schemas/supabase-claims-v1.json +4 -4
  445. package/schemas/supabase-manifest-v1.json +5 -1
  446. package/schemas/support-session-v1.json +111 -0
  447. package/skills/permdock/SKILL.md +16 -12
  448. package/skills/permdock-agents/SKILL.md +40 -23
  449. package/skills/permdock-agents/references/operations-automations-chat.md +221 -0
  450. package/skills/permdock-agents/references/runtimes.md +22 -18
  451. package/skills/permdock-approvals/SKILL.md +29 -13
  452. package/skills/permdock-approvals/references/delivery-and-waiters.md +172 -0
  453. package/skills/permdock-approvals/references/stores-and-resume.md +21 -7
  454. package/skills/permdock-audit/SKILL.md +3 -3
  455. package/skills/permdock-credentials/SKILL.md +5 -5
  456. package/skills/permdock-credentials/references/tokens-keys-links.md +14 -10
  457. package/skills/permdock-data/SKILL.md +6 -6
  458. package/skills/permdock-data/references/queries-and-rls.md +9 -8
  459. package/skills/permdock-data/references/relationships.md +3 -3
  460. package/skills/permdock-tenancy/SKILL.md +20 -7
  461. package/skills/permdock-tenancy/references/contacts-and-support-sessions.md +122 -0
  462. package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +5 -4
  463. package/skills/permdock-wire/SKILL.md +17 -11
  464. package/skills/permdock-wire/references/adapters.md +139 -51
  465. package/skills/permdock-wire/references/policy-options.md +5 -5
  466. package/skills/permdock-wire/references/presets-and-recipes.md +58 -0
  467. package/dist/approvals-DZL76lKW.js +0 -240
  468. package/dist/arazzo-CD8d0WLb.js +0 -54
  469. package/dist/catalog-6yWAX6Ps.js +0 -2
  470. package/dist/catalog-WHG4kBq7.js +0 -48
  471. package/dist/cloud-C7bSDgX4.js +0 -50
  472. package/dist/cloud-PeBN3IEn.js +0 -118
  473. package/dist/collect-Bw2Jdq1q.js +0 -2
  474. package/dist/collect-CQx4hX4N.js +0 -83
  475. package/dist/commands-Cpip4ULx.js +0 -97
  476. package/dist/config-DLt6BvV7.js +0 -36
  477. package/dist/diff-Cnghh_Ip.js +0 -48
  478. package/dist/doctor-CuVJvhV_.js +0 -53
  479. package/dist/duration-xK2jGFVc.js +0 -25
  480. package/dist/errors-CWfoNg9N.js +0 -47
  481. package/dist/errors-DRnGZHzF.js +0 -30
  482. package/dist/expiry-BoBJ8Tvc.js +0 -7
  483. package/dist/fields-fwfXN01n.js +0 -1016
  484. package/dist/headers-BZSDieNT.js +0 -6
  485. package/dist/headers-Cf-zWvsO.d.ts +0 -6
  486. package/dist/ids-DC4V4CFu.js +0 -18
  487. package/dist/index-DgM7w96K.d.ts +0 -6
  488. package/dist/index-Dz7didpC.d.ts +0 -201
  489. package/dist/load-B_shHrmd.js +0 -2
  490. package/dist/manifest-BngWKryL.js +0 -770
  491. package/dist/may-use-BOn_dR_w.js +0 -78
  492. package/dist/openapi-DcQ1Kg40.js +0 -164
  493. package/dist/ownership-BgnbOJFT.js +0 -851
  494. package/dist/permdock-L26udHSk.js +0 -3646
  495. package/dist/powersync-BFSbSElQ.js +0 -62
  496. package/dist/powersync-DCDgZgfZ.js +0 -2
  497. package/dist/rls-55DQTuf5.js +0 -250
  498. package/dist/run-DMcNW_8T.js +0 -174
  499. package/dist/server-ZYEHtNHS.js +0 -268
  500. package/dist/sink-BTtmfPnE.js +0 -141
  501. package/dist/sink-CPN4zLfs.d.ts +0 -104
  502. package/dist/skills-Dle4ZoLF.js +0 -56
  503. package/dist/snapshot-Dc9CHPME.js +0 -1078
  504. package/dist/src-Bb7no-hS.js +0 -639
  505. package/dist/subject-C6dLxqHU.js +0 -24
  506. package/dist/supabase-Dbqr141s.js +0 -83
  507. package/dist/supabase-hook-BULg7Ut_.js +0 -2
  508. package/dist/thenable-QSmvt-vZ.js +0 -65
  509. package/dist/types-C0dee0Qf.d.ts +0 -197
  510. package/dist/types-DvupZE0w.d.ts +0 -9
  511. package/dist/usage-4G6t643F.js +0 -42
  512. package/dist/usage-iFLJ0-rr.js +0 -2
  513. package/dist/vocabulary-hhEFLFoL.d.ts +0 -65
  514. package/dist/watch-C8TpsAl4.js +0 -2
@@ -0,0 +1,228 @@
1
+ import { m as rfc3339, p as nowSeconds } from "./time-DkWjdL98.js";
2
+ import { n as readBodyText } from "./body-text-QcXok_SI.js";
3
+ //#region src/server/standard-webhooks.ts
4
+ const DEFAULT_TOLERANCE = 300;
5
+ const JWKS_TTL_SECONDS = 300;
6
+ const encoder = /* @__PURE__ */ new TextEncoder();
7
+ function decodeBase64(value) {
8
+ if (!/^[A-Za-z0-9+/]*={0,2}$/u.test(value) || value.length % 4 !== 0) return;
9
+ try {
10
+ const binary = atob(value);
11
+ const bytes = new Uint8Array(binary.length);
12
+ for (let index = 0; index < binary.length; index += 1) bytes[index] = binary.codePointAt(index) ?? 0;
13
+ return bytes;
14
+ } catch {
15
+ return;
16
+ }
17
+ }
18
+ function encodeBase64(bytes) {
19
+ let binary = "";
20
+ for (const byte of new Uint8Array(bytes)) binary += String.fromCodePoint(byte);
21
+ return btoa(binary);
22
+ }
23
+ function secretBytes(secret) {
24
+ const bytes = decodeBase64(secret.startsWith("whsec_") ? secret.slice(6) : secret);
25
+ if (bytes === void 0 || bytes.length < 24 || bytes.length > 64) throw new TypeError("PermDock: a v1 webhook secret is whsec_ followed by 24 to 64 bytes in base64");
26
+ return bytes;
27
+ }
28
+ function hmacKey(secret, usage) {
29
+ return crypto.subtle.importKey("raw", secretBytes(secret), {
30
+ name: "HMAC",
31
+ hash: "SHA-256"
32
+ }, false, [usage]);
33
+ }
34
+ function isEd25519(jwk) {
35
+ return jwk.kty === "OKP" && jwk.crv === "Ed25519" && typeof jwk.x === "string";
36
+ }
37
+ function signedContent(id, timestamp, body) {
38
+ return encoder.encode(`${id}.${timestamp}.${body}`);
39
+ }
40
+ function validId(id) {
41
+ return id.length > 0 && id.length <= 256 && !/\s/u.test(id);
42
+ }
43
+ /**
44
+ * Signs Standard Webhooks deliveries: `v1` HMAC-SHA256 with a `whsec_`
45
+ * secret, `v1a` Ed25519 with a private JWK. Throws on an invalid key or id,
46
+ * because both come from the sender's own configuration.
47
+ */
48
+ function webhookSigner(options) {
49
+ if (options.keys.length === 0) throw new TypeError("PermDock: webhookSigner() needs at least one key");
50
+ const keys = options.keys.map(async (key) => {
51
+ switch (key.alg) {
52
+ case "v1": return {
53
+ alg: key.alg,
54
+ key: await hmacKey(key.secret, "sign")
55
+ };
56
+ case "v1a":
57
+ if (!isEd25519(key.privateKey) || typeof key.privateKey.d !== "string") throw new TypeError("PermDock: a v1a webhook key is an Ed25519 private JWK");
58
+ return {
59
+ alg: key.alg,
60
+ key: await importEd25519(key.privateKey, "sign")
61
+ };
62
+ default: return key;
63
+ }
64
+ });
65
+ for (const pending of keys) pending.catch(() => void 0);
66
+ return { async sign(message) {
67
+ if (!validId(message.id)) throw new TypeError("PermDock: a webhook id is 1 to 256 characters without whitespace");
68
+ const timestamp = String(nowSeconds(message.now));
69
+ const content = signedContent(message.id, timestamp, message.body);
70
+ const signatures = await Promise.all(keys.map(async (pending) => {
71
+ const { alg, key } = await pending;
72
+ return `${alg},${encodeBase64(await crypto.subtle.sign(alg === "v1" ? "HMAC" : "Ed25519", key, content))}`;
73
+ }));
74
+ return {
75
+ "webhook-id": message.id,
76
+ "webhook-timestamp": timestamp,
77
+ "webhook-signature": signatures.join(" ")
78
+ };
79
+ } };
80
+ }
81
+ function header(input, name) {
82
+ const headers = input.headers;
83
+ if (headers instanceof Headers) return headers.get(name) ?? void 0;
84
+ return Object.hasOwn(headers, name) ? headers[name] : void 0;
85
+ }
86
+ async function bodyOf(input) {
87
+ if (input instanceof Request) {
88
+ const read = await readBodyText(input);
89
+ return read.ok ? read.text : void 0;
90
+ }
91
+ return input.body;
92
+ }
93
+ function parseSignatures(value) {
94
+ const parsed = [];
95
+ for (const entry of value.split(" ")) {
96
+ const comma = entry.indexOf(",");
97
+ const alg = entry.slice(0, comma);
98
+ if (comma <= 0 || alg !== "v1" && alg !== "v1a") continue;
99
+ const bytes = decodeBase64(entry.slice(comma + 1));
100
+ if (bytes?.length === (alg === "v1" ? 32 : 64)) parsed.push({
101
+ alg,
102
+ bytes
103
+ });
104
+ }
105
+ return parsed;
106
+ }
107
+ function importEd25519(jwk, usage) {
108
+ const material = usage === "sign" ? {
109
+ kty: "OKP",
110
+ crv: "Ed25519",
111
+ x: jwk.x,
112
+ d: jwk.d
113
+ } : {
114
+ kty: "OKP",
115
+ crv: "Ed25519",
116
+ x: jwk.x
117
+ };
118
+ return crypto.subtle.importKey("jwk", material, "Ed25519", false, [usage]);
119
+ }
120
+ async function publicKeys(jwks) {
121
+ return (await Promise.all(jwks.keys.filter(isEd25519).map((jwk) => importEd25519(jwk, "verify").catch(() => void 0)))).filter((key) => key !== void 0);
122
+ }
123
+ async function anyVerifies(algorithm, keys, signatures, content) {
124
+ return (await Promise.all(keys.flatMap((key) => signatures.map((signature) => crypto.subtle.verify(algorithm, key, signature.bytes, content))))).includes(true);
125
+ }
126
+ function isJwks(value) {
127
+ return typeof value === "object" && value !== null && "keys" in value && Array.isArray(value.keys);
128
+ }
129
+ /**
130
+ * Verifies Standard Webhooks deliveries signed `v1` with one of `secret` or
131
+ * `v1a` with a key from `jwks`, within `tolerance` seconds, and records each
132
+ * `webhook-id` in `replay`. Throws only on an invalid `secret`.
133
+ */
134
+ function webhookVerifier(options) {
135
+ const secrets = options.secret === void 0 ? [] : typeof options.secret === "string" ? [options.secret] : options.secret;
136
+ for (const secret of secrets) secretBytes(secret);
137
+ const hmacKeys = Promise.all(secrets.map((secret) => hmacKey(secret, "verify")));
138
+ const tolerance = options.tolerance ?? DEFAULT_TOLERANCE;
139
+ const jwks = options.jwks;
140
+ let cached;
141
+ async function ed25519Keys(now) {
142
+ if (jwks === void 0) return [];
143
+ if (isJwks(jwks)) {
144
+ cached ??= {
145
+ keys: await publicKeys(jwks),
146
+ until: Number.POSITIVE_INFINITY
147
+ };
148
+ return cached.keys;
149
+ }
150
+ if (cached !== void 0 && cached.until > now) return cached.keys;
151
+ try {
152
+ const response = await (options.fetch ?? fetch)(String(jwks), { headers: { accept: "application/jwk-set+json, application/json" } });
153
+ const parsed = response.ok ? await response.json() : void 0;
154
+ if (!isJwks(parsed)) return;
155
+ cached = {
156
+ keys: await publicKeys(parsed),
157
+ until: now + JWKS_TTL_SECONDS
158
+ };
159
+ return cached.keys;
160
+ } catch {
161
+ return;
162
+ }
163
+ }
164
+ async function signatureValid(signatures, content, now) {
165
+ const v1 = signatures.filter((signature) => signature.alg === "v1");
166
+ const v1a = signatures.filter((signature) => signature.alg === "v1a");
167
+ if (v1.length > 0 && await anyVerifies("HMAC", await hmacKeys, v1, content)) return;
168
+ if (v1a.length === 0) return "invalid-signature";
169
+ const keys = await ed25519Keys(now);
170
+ if (keys === void 0) return "keys-unavailable";
171
+ if (await anyVerifies("Ed25519", keys, v1a, content)) return;
172
+ return "invalid-signature";
173
+ }
174
+ async function claim(id, expiresAt) {
175
+ const key = `webhook:${id}`;
176
+ try {
177
+ if (options.replay.claim !== void 0) return await options.replay.claim(key, expiresAt);
178
+ if (await options.replay.seen(key)) return false;
179
+ await options.replay.remember(key, expiresAt);
180
+ return true;
181
+ } catch {
182
+ return false;
183
+ }
184
+ }
185
+ return { async verify(input) {
186
+ const id = header(input, "webhook-id");
187
+ const timestamp = header(input, "webhook-timestamp");
188
+ const signature = header(input, "webhook-signature");
189
+ if (id === void 0 || timestamp === void 0 || signature === void 0) return {
190
+ ok: false,
191
+ cause: "missing-headers"
192
+ };
193
+ const body = await bodyOf(input);
194
+ const signatures = parseSignatures(signature);
195
+ if (body === void 0 || !validId(id) || !/^\d{1,12}$/u.test(timestamp) || signatures.length === 0) return {
196
+ ok: false,
197
+ cause: "malformed"
198
+ };
199
+ const now = nowSeconds(options.now?.());
200
+ const sent = Number(timestamp);
201
+ if (Math.abs(now - sent) > tolerance) return {
202
+ ok: false,
203
+ cause: "timestamp-out-of-range"
204
+ };
205
+ let failure;
206
+ try {
207
+ failure = await signatureValid(signatures, signedContent(id, timestamp, body), now);
208
+ } catch {
209
+ failure = "invalid-signature";
210
+ }
211
+ if (failure !== void 0) return {
212
+ ok: false,
213
+ cause: failure
214
+ };
215
+ if (!await claim(id, sent + tolerance)) return {
216
+ ok: false,
217
+ cause: "replayed"
218
+ };
219
+ return {
220
+ ok: true,
221
+ id,
222
+ timestamp: rfc3339(sent),
223
+ body
224
+ };
225
+ } };
226
+ }
227
+ //#endregion
228
+ export { webhookVerifier as n, webhookSigner as t };
@@ -0,0 +1,132 @@
1
+ import { r as isRecord, t as compact } from "./compact-CAf557ZB.js";
2
+ import { mkdirSync, readFileSync, statSync, unlinkSync, writeFileSync } from "node:fs";
3
+ import path from "node:path";
4
+ import { homedir } from "node:os";
5
+ //#region src/terminal/storage.ts
6
+ const FILE_MODE = 384;
7
+ const DIR_MODE = 448;
8
+ const GROUP_OR_WORLD = 63;
9
+ function credentialsPath(service, runtime) {
10
+ if (runtime.configDir !== void 0) return path.join(runtime.configDir, "credentials.json");
11
+ const home = runtime.homedir ?? homedir;
12
+ const env = runtime.env ?? process.env;
13
+ if ((runtime.platform ?? process.platform) === "win32") {
14
+ const appData = env["APPDATA"] ?? path.join(home(), "AppData", "Roaming");
15
+ return path.join(appData, service, "credentials.json");
16
+ }
17
+ const xdg = env["XDG_CONFIG_HOME"] ?? path.join(home(), ".config");
18
+ return path.join(xdg, service, "credentials.json");
19
+ }
20
+ function parseCredential(value) {
21
+ if (!isRecord(value) || typeof value["access_token"] !== "string") return null;
22
+ return compact({
23
+ access_token: value["access_token"],
24
+ refresh_token: typeof value["refresh_token"] === "string" ? value["refresh_token"] : void 0,
25
+ expires_at: typeof value["expires_at"] === "number" ? value["expires_at"] : void 0,
26
+ token_type: typeof value["token_type"] === "string" ? value["token_type"] : void 0,
27
+ scope: typeof value["scope"] === "string" ? value["scope"] : void 0
28
+ });
29
+ }
30
+ function keyringEntry(storage, profile) {
31
+ if (storage.keyring === void 0) return null;
32
+ try {
33
+ return new storage.keyring(storage.service, profile);
34
+ } catch {
35
+ return null;
36
+ }
37
+ }
38
+ function readKeyring(storage, profile) {
39
+ const entry = keyringEntry(storage, profile);
40
+ if (entry === null) return null;
41
+ try {
42
+ const raw = entry.getPassword();
43
+ return typeof raw === "string" ? parseCredential(JSON.parse(raw)) : null;
44
+ } catch {
45
+ return null;
46
+ }
47
+ }
48
+ function readCredentials(storage, profile, runtime) {
49
+ return readKeyring(storage, profile) ?? readFile(storage.service, profile, runtime);
50
+ }
51
+ function readFile(service, profile, runtime) {
52
+ const file = credentialsPath(service, runtime);
53
+ let raw;
54
+ try {
55
+ const stat = statSync(file);
56
+ if ((runtime.platform ?? process.platform) !== "win32" && (stat.mode & GROUP_OR_WORLD) !== 0) return null;
57
+ raw = readFileSync(file, "utf8");
58
+ } catch {
59
+ return null;
60
+ }
61
+ try {
62
+ const parsed = JSON.parse(raw);
63
+ if (!isRecord(parsed) || !isRecord(parsed["profiles"])) return null;
64
+ return parseCredential(parsed["profiles"][profile]);
65
+ } catch {
66
+ return null;
67
+ }
68
+ }
69
+ /**
70
+ * The OS keychain when `storage.keyring` is set and works; otherwise the
71
+ * mode-0600 file. Answers the store it wrote.
72
+ */
73
+ function writeCredentials(storage, profile, credential, runtime) {
74
+ const entry = keyringEntry(storage, profile);
75
+ if (entry !== null) try {
76
+ entry.setPassword(JSON.stringify(credential));
77
+ deleteFile(storage.service, profile, runtime);
78
+ return "keychain";
79
+ } catch {}
80
+ writeFile(storage.service, profile, credential, runtime);
81
+ return "file";
82
+ }
83
+ function writeFile(service, profile, credential, runtime) {
84
+ const file = credentialsPath(service, runtime);
85
+ mkdirSync(path.dirname(file), {
86
+ recursive: true,
87
+ mode: DIR_MODE
88
+ });
89
+ let profiles = {};
90
+ try {
91
+ const existing = JSON.parse(readFileSync(file, "utf8"));
92
+ if (isRecord(existing) && isRecord(existing["profiles"])) profiles = existing["profiles"];
93
+ } catch {
94
+ profiles = {};
95
+ }
96
+ profiles[profile] = credential;
97
+ writeFileSync(file, `${JSON.stringify({ profiles }, null, 2)}\n`, {
98
+ encoding: "utf8",
99
+ mode: FILE_MODE
100
+ });
101
+ }
102
+ function deleteCredentials(storage, profile, runtime) {
103
+ const entry = keyringEntry(storage, profile);
104
+ if (entry !== null) try {
105
+ entry.deletePassword();
106
+ } catch {}
107
+ deleteFile(storage.service, profile, runtime);
108
+ }
109
+ function deleteFile(service, profile, runtime) {
110
+ const file = credentialsPath(service, runtime);
111
+ let parsed;
112
+ try {
113
+ parsed = JSON.parse(readFileSync(file, "utf8"));
114
+ } catch {
115
+ return;
116
+ }
117
+ if (!isRecord(parsed) || !isRecord(parsed["profiles"])) return;
118
+ const profiles = {};
119
+ for (const key of Object.keys(parsed["profiles"])) if (key !== profile) profiles[key] = parsed["profiles"][key];
120
+ if (Object.keys(profiles).length === 0) {
121
+ try {
122
+ unlinkSync(file);
123
+ } catch {}
124
+ return;
125
+ }
126
+ writeFileSync(file, `${JSON.stringify({ profiles }, null, 2)}\n`, {
127
+ encoding: "utf8",
128
+ mode: FILE_MODE
129
+ });
130
+ }
131
+ //#endregion
132
+ export { writeCredentials as i, deleteCredentials as n, readCredentials as r, credentialsPath as t };
@@ -1,46 +1,10 @@
1
1
  import { t as compact } from "./compact-CAf557ZB.js";
2
2
  import { n as freezeDeep } from "./freeze-CrU8nQeX.js";
3
3
  import { i as flattenApprovers } from "./approvers-CqPOLD-o.js";
4
- import { s as rootMembershipId } from "./scopes-tvpa34ep.js";
5
- import { t as parseDuration } from "./duration-xK2jGFVc.js";
6
- import { n as matchGrantee } from "./grantee-match-fxYp9Nmt.js";
7
- import { t as ApprovalError } from "./errors-DRnGZHzF.js";
8
- //#region src/approvals/types.ts
9
- const APPROVAL_HEADER = "PermDock-Approval";
10
- const DEFAULT_APPROVAL_TTL_MS = 36e5;
11
- /** The approvals a request needs in total: `approvers.quorum` (or 1), or the sum of its stages' quorums. */
12
- function approvalQuorum(request) {
13
- const stages = request.approvers?.stages;
14
- if (stages !== void 0) return stages.reduce((sum, stage) => sum + (stage.quorum ?? 1), 0);
15
- return request.approvers?.quorum ?? 1;
16
- }
17
- /**
18
- * The instant from which `approvers.escalation.to` may approve, in epoch
19
- * milliseconds, or `undefined` when the request has no escalation or its
20
- * `after` does not parse (then nobody escalates: fail-closed).
21
- */
22
- function escalationOpenAt(request) {
23
- const after = request.approvers?.escalation?.after;
24
- const seconds = parseDuration(after);
25
- if (seconds === void 0) return;
26
- return Date.parse(request.createdAt) + seconds * 1e3;
27
- }
28
- /** The instant from which a stage's own `escalation.to` may approve it, in epoch milliseconds; `undefined` when it has none or `after` does not parse. */
29
- function stageEscalationOpenAt(request, stage) {
30
- const seconds = parseDuration(stage.escalation?.after);
31
- if (seconds === void 0) return;
32
- return Date.parse(request.createdAt) + seconds * 1e3;
33
- }
34
- /** The key a verdict's `relations` lists a relation approver under. */
35
- function approverRelationKey(item) {
36
- return JSON.stringify([
37
- item.resource,
38
- item.relation,
39
- item.through ?? null,
40
- item.depth ?? null
41
- ]);
42
- }
43
- //#endregion
4
+ import { a as durationOf, i as dateAt } from "./time-DkWjdL98.js";
5
+ import { s as rootMembershipId } from "./scopes-CUPSjo9q.js";
6
+ import { n as matchGrantee } from "./grantee-match-DHArqY82.js";
7
+ import { a as escalationOpenAt, i as approverRelationKey, o as stageEscalationOpenAt, r as approvalQuorum, s as ApprovalError } from "./types-DqzsnlSA.js";
44
8
  //#region src/approvals/page.ts
45
9
  const DEFAULT_PAGE_SIZE = 50;
46
10
  const MAX_PAGE_SIZE = 200;
@@ -187,12 +151,14 @@ function matchesFilter(request, filter) {
187
151
  function assertSeparateApprover(request, by, requireDistinctApprover) {
188
152
  const principal = by.principal;
189
153
  if (principal === null) throw new ApprovalError("approver-unauthenticated", "approver must be authenticated");
154
+ if (principal.kind === "link" || principal.kind === "feed" || principal.kind === "contact") throw new ApprovalError("approver-not-eligible", "a link, a feed or a contact cannot approve");
155
+ if (by.actor?.kind === "support") throw new ApprovalError("approver-not-eligible", "a support session cannot approve");
190
156
  if (request.subject.actor !== void 0 && principal.id === request.subject.actor.id) throw new ApprovalError("approver-is-actor", "approver is the actor of this request");
191
157
  if ((requireDistinctApprover || request.approvers?.distinct !== false) && request.subject.principal !== null && principal.id === request.subject.principal.id) throw new ApprovalError("approver-is-principal", "approver is the principal of this request");
192
158
  return principal;
193
159
  }
194
160
  function assertNotRepeated(request, id) {
195
- if ((request.approvals ?? []).some((item) => item.by === id)) throw new ApprovalError("approver-repeated", "approver has already approved this request");
161
+ if ((request.approvals ?? []).some((item) => item.by === id || item.onBehalfOf === id)) throw new ApprovalError("approver-repeated", "approver has already approved this request");
196
162
  }
197
163
  function vouchedRule(verdict) {
198
164
  return typeof verdict.vouched === "string" && verdict.vouched !== "" ? verdict.vouched : void 0;
@@ -207,7 +173,8 @@ function vouchedRule(verdict) {
207
173
  * two stages. `relations` are the relation approvers `by` holds on the
208
174
  * request's resource (see `ApprovalVerdict.relations`).
209
175
  */
210
- function assertApprover(request, by, requireDistinctApprover, now = /* @__PURE__ */ new Date(), relations = [], permissions = []) {
176
+ function assertApprover(request, by, requireDistinctApprover, at, relations = [], permissions = []) {
177
+ const now = dateAt(at);
211
178
  const principal = assertSeparateApprover(request, by, requireDistinctApprover);
212
179
  const tenant = request.subject.principal?.tenant;
213
180
  if (tenant !== void 0 && !belongsToTenant(by, tenant)) throw new ApprovalError("approver-not-eligible", "approver does not belong to the request tenant");
@@ -251,13 +218,24 @@ function isSystemSubject(by) {
251
218
  * should write the result only when the stored row is still pending with the
252
219
  * same number of approvals, so two approvers racing both count.
253
220
  */
254
- function applyApprovalVerdict(request, verdict, now = /* @__PURE__ */ new Date()) {
221
+ function applyApprovalVerdict(request, verdict, at) {
222
+ const now = dateAt(at);
255
223
  const principal = verdict.by.principal;
256
224
  if (principal === null) throw new ApprovalError("approver-unauthenticated", "approver must be authenticated");
257
225
  if (request.status !== "pending") throw new ApprovalError("approval-not-pending", "approval is not pending");
258
226
  if (Date.parse(request.expiresAt) <= now.getTime()) throw new ApprovalError("approval-expired", "approval has expired");
259
227
  const vouched = vouchedRule(verdict);
260
- const stage = verdict.status === "rejected" && isSystemSubject(verdict.by) || vouched !== void 0 ? void 0 : assertApprover(request, verdict.by, false, now, verdict.relations, verdict.permissions);
228
+ const behalf = vouched === void 0 ? verdict.onBehalfOf : void 0;
229
+ let stage;
230
+ if (verdict.status === "rejected" && isSystemSubject(verdict.by) || vouched !== void 0) stage = void 0;
231
+ else if (behalf === void 0) stage = assertApprover(request, verdict.by, false, { epochMilliseconds: now.getTime() }, verdict.relations, verdict.permissions);
232
+ else {
233
+ const delegate = assertSeparateApprover(request, verdict.by, false);
234
+ const tenant = request.subject.principal?.tenant;
235
+ if (tenant !== void 0 && !belongsToTenant(verdict.by, tenant)) throw new ApprovalError("approver-not-eligible", "approver does not belong to the request tenant");
236
+ assertNotRepeated(request, delegate.id);
237
+ stage = assertApprover(request, behalf.subject, false, { epochMilliseconds: now.getTime() }, behalf.relations ?? [], behalf.permissions ?? []);
238
+ }
261
239
  if (vouched !== void 0) assertNotRepeated(request, assertSeparateApprover(request, verdict.by, false).id);
262
240
  if (verdict.status === "rejected") return freezeDeep(compact({
263
241
  ...request,
@@ -271,7 +249,9 @@ function applyApprovalVerdict(request, verdict, now = /* @__PURE__ */ new Date()
271
249
  by: principal.id,
272
250
  at: now.toISOString(),
273
251
  stage,
274
- vouched
252
+ vouched,
253
+ onBehalfOf: behalf === void 0 ? void 0 : behalf.subject.principal?.id,
254
+ delegation: behalf?.delegation
275
255
  })];
276
256
  if (vouched === void 0 && !isComplete(request, approvals)) return freezeDeep(compact({
277
257
  ...request,
@@ -302,26 +282,32 @@ function isStale(request, now) {
302
282
  return request.status === "expired" || Date.parse(request.expiresAt) <= now.getTime();
303
283
  }
304
284
  function memoryApprovalStore(options = {}) {
305
- const ttl = options.ttl ?? 36e5;
285
+ if (options.ttl !== void 0 && durationOf(options.ttl) === void 0) throw new RangeError(`PermDock: memoryApprovalStore ttl must be a whole number of seconds above 0, got ${String(options.ttl)}`);
286
+ const ttl = options.ttl ?? 3600;
306
287
  const records = /* @__PURE__ */ new Map();
288
+ const clock = (at) => dateAt(at ?? options.now?.());
307
289
  return {
308
290
  ttl,
309
291
  create(request) {
310
292
  const current = records.get(request.token);
311
- if (current !== void 0 && !isStale(current, /* @__PURE__ */ new Date())) return;
293
+ if (current !== void 0 && !isStale(current, clock())) return;
312
294
  records.set(request.token, freezeDeep(request));
313
295
  },
314
296
  get(token) {
315
297
  return records.get(token) ?? null;
316
298
  },
299
+ getById(id) {
300
+ return records.values().find((request) => request.id === id) ?? null;
301
+ },
317
302
  resolve(token, verdict) {
318
303
  const current = records.get(token);
319
304
  if (current === void 0) throw new ApprovalError("approval-not-found", "approval was not found");
320
- const next = applyApprovalVerdict(current, verdict, /* @__PURE__ */ new Date());
305
+ const next = applyApprovalVerdict(current, verdict);
321
306
  records.set(token, next);
322
307
  return next;
323
308
  },
324
- consume(token, now = /* @__PURE__ */ new Date()) {
309
+ consume(token, at) {
310
+ const now = clock(at);
325
311
  const current = records.get(token);
326
312
  if (current?.status !== "approved" || current.consumedAt !== void 0 || Date.parse(current.expiresAt) <= now.getTime()) return null;
327
313
  const next = freezeDeep({
@@ -336,12 +322,13 @@ function memoryApprovalStore(options = {}) {
336
322
  for (const request of records.values()) if (matchesFilter(request, query)) matching.push(request);
337
323
  return pageApprovals(matching, query);
338
324
  },
339
- expire(now = /* @__PURE__ */ new Date()) {
325
+ expire(at) {
326
+ const now = clock(at);
340
327
  let count = 0;
341
328
  const instant = now.getTime();
342
329
  for (const [token, request] of records) {
343
330
  const deadline = Date.parse(request.expiresAt);
344
- if (request.status !== "pending" && deadline + ttl <= instant) {
331
+ if (request.status !== "pending" && deadline + ttl * 1e3 <= instant) {
345
332
  records.delete(token);
346
333
  continue;
347
334
  }
@@ -356,7 +343,7 @@ function memoryApprovalStore(options = {}) {
356
343
  return count;
357
344
  },
358
345
  cancel(filter, meta) {
359
- const now = /* @__PURE__ */ new Date();
346
+ const now = clock();
360
347
  let count = 0;
361
348
  for (const [token, request] of records) {
362
349
  if (request.status !== "pending" || !matchesFilter(request, filter)) continue;
@@ -368,4 +355,4 @@ function memoryApprovalStore(options = {}) {
368
355
  };
369
356
  }
370
357
  //#endregion
371
- export { decodeApprovalCursor as a, pageApprovals as c, approvalQuorum as d, approverRelationKey as f, approvalPageSize as i, APPROVAL_HEADER as l, assertApprover as n, encodeApprovalCursor as o, escalationOpenAt as p, memoryApprovalStore as r, listAllApprovals as s, applyApprovalVerdict as t, DEFAULT_APPROVAL_TTL_MS as u };
358
+ export { approvalPageSize as a, listAllApprovals as c, memoryApprovalStore as i, pageApprovals as l, assertApprover as n, decodeApprovalCursor as o, matchesApprovers as r, encodeApprovalCursor as s, applyApprovalVerdict as t };
@@ -1,9 +1,22 @@
1
1
  import { t as compact } from "./compact-CAf557ZB.js";
2
- import { f as rowIdOf, n as parseSnapshot } from "./snapshot-Dc9CHPME.js";
3
- import { c as nowSeconds } from "./tenancy-DshjqY0n.js";
4
- import { n as payloadDigest } from "./token-Bx9qy30p.js";
5
- import { n as fromSnapshot, t as emptySnapshot } from "./from-snapshot-7REQZe0H.js";
2
+ import { g as secondsOf } from "./time-DkWjdL98.js";
3
+ import { c as rowIdOf } from "./delegation-DaXVdDhM.js";
4
+ import { c as nowSeconds } from "./tenancy-DN2QAx9z.js";
5
+ import { n as payloadDigest } from "./token-BLZcjQgt.js";
6
+ import { n as parseSnapshot } from "./snapshot-CXUWfsNy.js";
7
+ import { s as snapshotClaim } from "./where-scope-Dv-WTP-w.js";
8
+ import { n as fromSnapshot, t as emptySnapshot } from "./from-snapshot-D2lZt4Dd.js";
6
9
  import { t as timeoutSignal } from "./timeout-D51niuQP.js";
10
+ //#region src/client/source.ts
11
+ /** A compact JWS: three non-empty dot-separated parts. */
12
+ function isJws(value) {
13
+ const parts = value.split(".");
14
+ return parts.length === 3 && parts.every((part) => part.length > 0);
15
+ }
16
+ function isPromiseLike(value) {
17
+ return typeof value === "object" && value !== null && "then" in value && typeof value.then === "function";
18
+ }
19
+ //#endregion
7
20
  //#region src/client/approvals.ts
8
21
  /** Ceiling for the approval poll backoff after a failed status request. */
9
22
  const APPROVAL_BACKOFF_CAP_MS = 6e4;
@@ -237,16 +250,6 @@ function storeRequest(fetchImpl, headers) {
237
250
  });
238
251
  }
239
252
  //#endregion
240
- //#region src/client/source.ts
241
- /** A compact JWS: three non-empty dot-separated parts. */
242
- function isJws(value) {
243
- const parts = value.split(".");
244
- return parts.length === 3 && parts.every((part) => part.length > 0);
245
- }
246
- function isPromiseLike(value) {
247
- return typeof value === "object" && value !== null && "then" in value && typeof value.then === "function";
248
- }
249
- //#endregion
250
253
  //#region src/client/store.ts
251
254
  function withTenant(source, tenant) {
252
255
  if (tenant === void 0) return source;
@@ -380,11 +383,13 @@ function createClientStore(options) {
380
383
  return "ready";
381
384
  };
382
385
  const isStale = () => {
383
- const maxAge = snapshot.issuedAt > 0 ? options.maxAge : void 0;
384
- if (snapshot.expiresAt === void 0 && maxAge === void 0) return false;
386
+ const issuedAt = secondsOf(snapshot.issuedAt) ?? 0;
387
+ const expiresAt = secondsOf(snapshot.expiresAt);
388
+ const maxAge = issuedAt > 0 ? options.maxAge : void 0;
389
+ if (expiresAt === void 0 && maxAge === void 0) return false;
385
390
  const now = nowSeconds();
386
- if (snapshot.expiresAt !== void 0 && snapshot.expiresAt <= now) return true;
387
- return maxAge !== void 0 && now - snapshot.issuedAt > maxAge;
391
+ if (expiresAt !== void 0 && expiresAt <= now) return true;
392
+ return maxAge !== void 0 && now - issuedAt > maxAge;
388
393
  };
389
394
  const serverOnly = () => {
390
395
  hydrate(emptySnapshot());
@@ -401,8 +406,8 @@ function createClientStore(options) {
401
406
  const verifyJws = async (raw) => {
402
407
  if (options.verifier === void 0) return;
403
408
  try {
404
- const verified = await options.verifier.verify(raw, { typ: "permdock-snapshot+jwt" });
405
- return verified.ok ? verified.claims["snapshot"] : void 0;
409
+ const verified = await options.verifier.verify(raw, { typ: "vnd.permdock.snapshot+jwt" });
410
+ return verified.ok ? snapshotClaim(verified.claims) : void 0;
406
411
  } catch {
407
412
  return;
408
413
  }
@@ -565,7 +570,7 @@ function createClientStore(options) {
565
570
  signed = body;
566
571
  body = await verifyJws(body);
567
572
  ok = body !== void 0;
568
- }
573
+ } else if (ok && options.verifier !== void 0) ok = false;
569
574
  refreshing -= 1;
570
575
  if (started !== generation || seq !== refreshSeq) {
571
576
  emit();
@@ -1,5 +1,5 @@
1
- import { a as permissionSet, d as tenantView, i as livePermDock, n as describeWith, r as filterResult, s as rolesView, t as approvalHandle, u as subjectView } from "./views-CJsrBS1f.js";
2
- import { n as getUi, r as providePermDock, t as getStore } from "./context-DieZVJXu.js";
1
+ import { a as livePermDock, c as rolesView, d as subjectView, f as tenantView, n as describeWith, o as permissionSet, r as filterResult, t as approvalHandle } from "./views-DTIIO-oQ.js";
2
+ import { n as getUi, r as providePermDock, t as getStore } from "./context-bbFHR-0D.js";
3
3
  import { readable, toStore } from "svelte/store";
4
4
  //#region src/svelte/stores.ts
5
5
  function fromStore(store, compute) {
@@ -1,12 +1,11 @@
1
- import { Dr as Membership, ir as Decision } from "./policy-types-sp9P1iIV.js";
2
- import { d as Permission } from "./permission-types-Dg39z9Kv.js";
3
- import { r as Role } from "./vocabulary-hhEFLFoL.js";
4
- import { r as DescribeOptions, t as DecisionDescription } from "./describe-C3ldA9os.js";
5
- import { a as ClientPermDock, c as PermissionSet, d as SubjectView, f as TenantView, l as PermissionState, p as UseRolesOptions, r as ApprovalHandle, s as FilterResult } from "./store-9KO4BlkB.js";
6
- import { n as PermDockSvelteOptions } from "./types-ByUo56un.js";
1
+ import { Nn as Decision, nr as Membership } from "./policy-types-DzwivBgR.js";
2
+ import { r as Role, w as Permission } from "./vocabulary-D6lPdb4Z.js";
3
+ import { r as DescribeOptions, t as DecisionDescription } from "./describe-BZUsixiL.js";
4
+ import { a as FilterResult, c as PermissionSet, d as RolesOptions, f as SubjectView, l as PermissionState, p as TenantView, r as ClientPermDock, t as ApprovalHandle } from "./types-BNORmDM8.js";
5
+ import { n as SveltePermDockOptions } from "./types-fbZ7JEXr.js";
7
6
  import { Readable } from "svelte/store";
8
7
  //#region src/svelte/stores.d.ts
9
- declare function setPermDock(options: PermDockSvelteOptions): ClientPermDock;
8
+ declare function setPermDock(options: SveltePermDockOptions): ClientPermDock;
10
9
  declare function getPermDock(): ClientPermDock;
11
10
  /** `describe` with the provider's `messages`; a call's own `messages` win. Call it during component init. */
12
11
  declare function getDescribe(): (decision: Decision, options?: DescribeOptions) => DecisionDescription;
@@ -15,7 +14,7 @@ declare function permissions(references: () => readonly Permission[], data?: ()
15
14
  declare function filtered<T>(reference: Permission<string, T, "instance">, rows: () => readonly T[]): Readable<FilterResult<T>>;
16
15
  declare function tenant(): Readable<TenantView>;
17
16
  declare function memberships(): Readable<readonly Membership[]>;
18
- declare function roles(options?: () => UseRolesOptions): Readable<{
17
+ declare function roles(options?: () => RolesOptions): Readable<{
19
18
  readonly roles: readonly Role[];
20
19
  }>;
21
20
  declare function assignable(): Readable<readonly Role[]>;
@@ -1,5 +1,5 @@
1
- import { d as Permission } from "./permission-types-Dg39z9Kv.js";
2
- import { o as ProtectOptions } from "./server-types-DdqBwZN_.js";
1
+ import { w as Permission } from "./vocabulary-D6lPdb4Z.js";
2
+ import { o as ProtectOptions } from "./server-types-BLd4MnBX.js";
3
3
  //#region src/server/stream.d.ts
4
4
  type StreamProtectOptions = ProtectOptions & {
5
5
  /**