permdock 0.4.0 → 0.6.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 (515) 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-DCYe60Pi.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-DvSSPQJX.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-p1PGoVjb.js +995 -0
  18. package/dist/arazzo-41WuzHou.js +36 -0
  19. package/dist/{arazzo-C4BcskbX.js → arazzo-CaUVBn7D.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-DabClFLQ.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-BNM3TtDo.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-kk-uyCwH.js → bind-CAvgUuKs.js} +14 -10
  34. package/dist/{bind-BzqG8SMb.d.ts → bind-DOyrv6zi.d.ts} +12 -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-Bu_eDqYw.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-Drg-1YhL.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-BoWglDPI.js +1 -0
  48. package/dist/catalog-DZVbrF-z.js +52 -0
  49. package/dist/{catalog-tZUyOfOv.js → catalog-HD2gf5mY.js} +51 -6
  50. package/dist/{catalog-doc-DWtg0gGR.js → catalog-doc-Cdn7-0pQ.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-ytQ3uviA.js +87 -0
  68. package/dist/codemod-5mpSpnUY.js +37 -0
  69. package/dist/codemod-ua2hHy7w.js +2084 -0
  70. package/dist/collect-Ci6akVwH.js +55 -0
  71. package/dist/collect-D7eQDffE.js +1 -0
  72. package/dist/{collect-2SrB7lfk.js → collect-mLTY4nwb.js} +75 -11
  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-CtTP7eur.d.ts → compile-1bsAezL0.d.ts} +5 -3
  77. package/dist/{compile-CcEu2ZQ1.js → compile-CMqMx_IN.js} +11 -8
  78. package/dist/completion-BTFrHZhX.js +143 -0
  79. package/dist/config-Bj2Ixq3d.js +26 -0
  80. package/dist/{config-BIjREpyE.js → config-bs_kZeYq.js} +12 -7
  81. package/dist/{config-report--Xb9APJS.js → config-report-DSpsLpCE.js} +15 -5
  82. package/dist/{connection-DUsczpB5.js → connection-DjhIJSs2.js} +6 -5
  83. package/dist/{context-DieZVJXu.js → context-B_u3_bDJ.js} +2 -2
  84. package/dist/convex/index.d.ts +11 -10
  85. package/dist/convex/index.js +6 -4
  86. package/dist/create-B30OMUOJ.d.ts +107 -0
  87. package/dist/create-CBMmFie-.d.ts +138 -0
  88. package/dist/create-CGm28gyI.js +130 -0
  89. package/dist/create-CQWIpUG-.js +403 -0
  90. package/dist/{create-BBO24vj6.js → create-DCF2SvoT.js} +31 -32
  91. package/dist/create-D_NmPOdH.d.ts +110 -0
  92. package/dist/{credential-kue0qpbm.js → credential-BcoiejpY.js} +152 -31
  93. package/dist/credentials-DPyHmYz5.js +74 -0
  94. package/dist/delegation-j6-rc37o.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-CiFQNuMV.d.ts} +5 -5
  100. package/dist/{describe-C3ldA9os.d.ts → describe-B5qgDvEW.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-rpqoe7Ag.js → diff-3jbx6Rm4.js} +60 -54
  104. package/dist/diff-CmuSD3vc.js +37 -0
  105. package/dist/doctor-3ZqNHX_G.js +44 -0
  106. package/dist/{doctor-owlv6ddh.js → doctor-BdZw53-k.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-CWTY6uih.js +143 -0
  116. package/dist/{errors-OD_4c__H.d.ts → errors-DH5QEGXh.d.ts} +2 -2
  117. package/dist/evaluate-CNClBvcj.js +1785 -0
  118. package/dist/evaluations-C_1vdSZc.d.ts +32 -0
  119. package/dist/{evaluations-C9YJsv3H.js → evaluations-beAooV0n.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-DD_gfmrC.js +120 -0
  129. package/dist/fetch-adapter-Dw0MTS3D.d.ts +31 -0
  130. package/dist/fields-OYG_JR78.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-CTCMsFZk.js} +55 -52
  135. package/dist/{grantee-conditions-MQs5NIuX.js → grantee-conditions-CcXf8hMM.js} +4 -3
  136. package/dist/{grantee-CXY-0C87.js → grantee-hxrUsbpM.js} +16 -6
  137. package/dist/{grantee-match-fxYp9Nmt.js → grantee-match-DbENBHLB.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-CBYVMjwh.js} +45 -38
  143. package/dist/hono/index.d.ts +12 -9
  144. package/dist/hono/index.js +13 -12
  145. package/dist/hosted-B46-5LYE.js +315 -0
  146. package/dist/hosted-BPk51-kX.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-wyqXUyjm.js} +190 -53
  152. package/dist/index-B8YjkEZ4.d.ts +210 -0
  153. package/dist/index-C-6Letxg.d.ts +431 -0
  154. package/dist/index-CaxrMD1A.d.ts +1 -0
  155. package/dist/{index-BwMe94Xq.d.ts → index-Ch8LpNDp.d.ts} +34 -16
  156. package/dist/index-Cp_ilKi1.d.ts +91 -0
  157. package/dist/index-CueFnxQc.d.ts +110 -0
  158. package/dist/index-DuWxc5dt.d.ts +909 -0
  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-BsVpyGIk.d.ts} +2 -2
  164. package/dist/instance-snapshot-BOEhcqIF.js +601 -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-D0NVb1cK.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-dvL2XEe1.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-Dr70oA_3.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-CIq4-E9F.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-C4dDTVEd.js +138 -0
  205. package/dist/{openapi-BJdBmYDG.js → openapi-DD1SV-5-.js} +10 -9
  206. package/dist/operation-findings-DgATDpvh.js +36 -0
  207. package/dist/operations-X0VM7F3m.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-1im__-08.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-DqaJNJPn.js} +1045 -153
  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-DvYUR0QL.d.ts → parse-local-manifest-5ODwqu8b.d.ts} +1 -1
  219. package/dist/{parse-local-manifest-C-q02Pal.js → parse-local-manifest-CVSs6J9I.js} +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-BrAscV28.js +868 -0
  227. package/dist/permdock-SV8ZINYT.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-BPxlwVhN.js} +4 -3
  231. package/dist/{permissions-COH-KRgT.d.ts → permissions-u_KHg-sN.d.ts} +1 -2
  232. package/dist/policies-DP2nqRoF.js +295 -0
  233. package/dist/{policy-ur0BBK_e.d.ts → policy-77FSAq_V.d.ts} +2 -2
  234. package/dist/{hosted-CBHgkzDl.js → policy-DbM5YYtV.js} +17 -273
  235. package/dist/policy-from-catalog-C2gMa2Dj.js +450 -0
  236. package/dist/policy-module-CTlwMvLI.js +89 -0
  237. package/dist/{policy-types-sp9P1iIV.d.ts → policy-types-n0uRTsW8.d.ts} +460 -632
  238. package/dist/postgrest-CEgRbefE.d.ts +100 -0
  239. package/dist/postgrest-DAjUkF9w.js +575 -0
  240. package/dist/{powersync-cZe4kzhL.js → powersync-BkWWCS1K.js} +23 -24
  241. package/dist/powersync-DISt6SUe.js +62 -0
  242. package/dist/powersync-MMJ2mI2q.js +1 -0
  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-B45V5d2b.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-BN7BUdY1.js → protected-BlF0F6wL.js} +21 -4
  255. package/dist/{protected-B3_P7xuw.d.ts → protected-RFGpakN9.d.ts} +16 -8
  256. package/dist/{provider-Bi-0HNL3.js → provider-B1al-AZz.js} +2 -2
  257. package/dist/{provider-kwHC9CZD.d.ts → provider-DILL9oPK.d.ts} +1 -1
  258. package/dist/{provider-store-Ctt-81Ni.js → provider-store-DM6DNcta.js} +2 -2
  259. package/dist/pull-CvpINcMK.js +1 -0
  260. package/dist/pull-jEwbf80J.js +256 -0
  261. package/dist/push-BD4f15co.js +116 -0
  262. package/dist/pushed-policy-CqtxkV4G.js +238 -0
  263. package/dist/pushed-policy-DCW91KQU.d.ts +57 -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 +29 -25
  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-Bkm-Ne4l.d.ts} +1 -1
  275. package/dist/{replay-BsOyTrdV.js → replay-Du1tJjG7.js} +2 -1
  276. package/dist/{request-context-BVM7aWNs.js → request-context-C81Pip9n.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-BAqP4q66.js +336 -0
  284. package/dist/{rls-BEktUaqg.js → rls-DTvYd-lI.js} +288 -690
  285. package/dist/{role-builder-B4GbKM-i.js → role-builder-uWQZ4v84.js} +14 -207
  286. package/dist/{rpc-nYC3cR_u.js → rpc-VSl5ylaQ.js} +7 -7
  287. package/dist/run-CUKuz0A8.js +723 -0
  288. package/dist/run-DDwUaJDU.js +1 -0
  289. package/dist/run-ticket-DocwaTKn.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-BCXRuXca.js} +16 -14
  293. package/dist/scan-qvOe0hS3.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-C3WXAHZj.js +453 -0
  303. package/dist/{server-types-DdqBwZN_.d.ts → server-types-CKQiCnON.d.ts} +51 -68
  304. package/dist/{sha256-BO0swRXL.js → sha256-D9ihqmvd.js} +8 -1
  305. package/dist/{shared-1uhI-e-b.js → shared-BAK8t4Uo.js} +20 -9
  306. package/dist/{shared-JhMeOsDF.js → shared-DvvFzYXe.js} +8 -9
  307. package/dist/signals-D3NcTKUS.js +32 -0
  308. package/dist/sink-4-eQIRWf.d.ts +225 -0
  309. package/dist/sink-BEZSlMS_.js +957 -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-B7DkYg6g.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-PXI-vGpY.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-Xc4zkszI.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-Cu2m75uo.js +1860 -0
  323. package/dist/ssf/index.d.ts +4 -4
  324. package/dist/ssf/index.js +384 -47
  325. package/dist/standard-webhooks-DgFFD-Ga.js +228 -0
  326. package/dist/standard-webhooks-rbD7LS6h.d.ts +88 -0
  327. package/dist/storage-C2bWdvJH.js +132 -0
  328. package/dist/{store-ILkLUj_o.js → store-BDutJkDL.js} +40 -53
  329. package/dist/{store-options-CbUHDoSe.js → store-options-u0ycEe8s.js} +26 -21
  330. package/dist/{stores-Cxz_80g-.d.ts → stores-BUGNbJTt.d.ts} +7 -8
  331. package/dist/{stores-BHXdSbw9.js → stores-CGhM8BN_.js} +2 -2
  332. package/dist/{stream-Dwsg6WwE.d.ts → stream-CeCMJmBB.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-By_frk3U.js +92 -0
  342. package/dist/{supabase-hook-Cva3ikXz.js → supabase-hook-BMoEhZir.js} +960 -64
  343. package/dist/supabase-hook-CCw5m35C.js +1 -0
  344. package/dist/{supabase-C1TWlnYt.js → supabase-x5JtR2tc.js} +99 -206
  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-8RnwUAvE.d.ts +107 -0
  376. package/dist/{store-9KO4BlkB.d.ts → types-B3_ooZgZ.d.ts} +100 -75
  377. package/dist/{types-Br9IXUBG.d.ts → types-BdtSDbBO.d.ts} +77 -17
  378. package/dist/types-BtHtcKMr.d.ts +157 -0
  379. package/dist/{types-CqrjB9o6.d.ts → types-BzzaHxt3.d.ts} +23 -11
  380. package/dist/types-C791HFu9.d.ts +332 -0
  381. package/dist/types-C863OQiR.d.ts +57 -0
  382. package/dist/{types-ByUo56un.d.ts → types-CVZSNocA.d.ts} +23 -22
  383. package/dist/{types-DHrmBJLH.d.ts → types-CX7AvRqP.d.ts} +7 -7
  384. package/dist/types-C_IiEs64.d.ts +65 -0
  385. package/dist/{types-7rJVLWe5.d.ts → types-Dfv0aTER.d.ts} +63 -11
  386. package/dist/types-DqzsnlSA.js +67 -0
  387. package/dist/{types-DpWfQdSh.d.ts → types-Druu9wLM.d.ts} +46 -11
  388. package/dist/{types-CIlTojhq.d.ts → types-_WhUP7ud.d.ts} +9 -6
  389. package/dist/{types-CUcFZfpU.d.ts → types-lUlG3TVd.d.ts} +2 -1
  390. package/dist/unplugin/index.d.ts +1 -1
  391. package/dist/unplugin/index.js +2 -2
  392. package/dist/usage-CRVl9V3t.js +32 -0
  393. package/dist/usage-CZpSQP6L.js +1 -0
  394. package/dist/{usage-CG9nOYZw.js → usage-SveTRTyr.js} +54 -11
  395. package/dist/{validation-error-BSSw0l_8.d.ts → validation-error-DHUrAkku.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-BaAKx7t6.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-CN8H_9UF.d.ts} +67 -2
  403. package/dist/vue/index.d.ts +9 -10
  404. package/dist/vue/index.js +8 -8
  405. package/dist/waiter-B986w1oK.d.ts +36 -0
  406. package/dist/waiter-BGUtGYoU.js +67 -0
  407. package/dist/watch--ovlPOc0.js +1 -0
  408. package/dist/{watch-zeucB7eF.js → watch-vea54PRw.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-C9vfEphl.js +306 -0
  412. package/dist/who-can-DWBAcaCQ.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-C5jC6sKI.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 +10 -9
  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 +6 -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/index-UdVQgq48.d.ts +0 -550
  490. package/dist/load-B_shHrmd.js +0 -2
  491. package/dist/manifest-BngWKryL.js +0 -770
  492. package/dist/may-use-BOn_dR_w.js +0 -78
  493. package/dist/openapi-DcQ1Kg40.js +0 -164
  494. package/dist/ownership-BgnbOJFT.js +0 -851
  495. package/dist/permdock-L26udHSk.js +0 -3646
  496. package/dist/powersync-BFSbSElQ.js +0 -62
  497. package/dist/powersync-DCDgZgfZ.js +0 -2
  498. package/dist/rls-55DQTuf5.js +0 -250
  499. package/dist/run-DMcNW_8T.js +0 -174
  500. package/dist/server-ZYEHtNHS.js +0 -268
  501. package/dist/sink-BTtmfPnE.js +0 -141
  502. package/dist/sink-CPN4zLfs.d.ts +0 -104
  503. package/dist/skills-Dle4ZoLF.js +0 -56
  504. package/dist/snapshot-Dc9CHPME.js +0 -1078
  505. package/dist/src-Bb7no-hS.js +0 -639
  506. package/dist/subject-C6dLxqHU.js +0 -24
  507. package/dist/supabase-Dbqr141s.js +0 -83
  508. package/dist/supabase-hook-BULg7Ut_.js +0 -2
  509. package/dist/thenable-QSmvt-vZ.js +0 -65
  510. package/dist/types-C0dee0Qf.d.ts +0 -197
  511. package/dist/types-DvupZE0w.d.ts +0 -9
  512. package/dist/usage-4G6t643F.js +0 -42
  513. package/dist/usage-iFLJ0-rr.js +0 -2
  514. package/dist/vocabulary-hhEFLFoL.d.ts +0 -65
  515. package/dist/watch-C8TpsAl4.js +0 -2
@@ -0,0 +1 @@
1
+ export { i as runSupabase } from "./supabase-hook-BMoEhZir.js";
@@ -1,13 +1,14 @@
1
1
  import { r as isRecord, t as compact } from "./compact-CAf557ZB.js";
2
- import { t as canonicalJson } from "./canonical-json-CFKyFOke.js";
3
- import { o as parseCapability } from "./capability-txATtKV4.js";
4
- import { t as ApprovalError } from "./errors-DRnGZHzF.js";
5
- import { a as decodeApprovalCursor, i as approvalPageSize, o as encodeApprovalCursor, t as applyApprovalVerdict } from "./store-ILkLUj_o.js";
6
- import { t as loadJose } from "./load-jose-BL6LH4bL.js";
2
+ import { d as isoNow, i as dateAt, p as nowSeconds, u as isoAt } from "./time-DkWjdL98.js";
3
+ import { t as canonicalJson } from "./canonical-json-BC8_nMTw.js";
4
+ import { s as ApprovalError } from "./types-DqzsnlSA.js";
5
+ import { a as approvalPageSize, o as decodeApprovalCursor, s as encodeApprovalCursor, t as applyApprovalVerdict } from "./store-BDutJkDL.js";
6
+ import { a as parseCapability } from "./capability-N1K9IpqS.js";
7
+ import { t as loadJose } from "./load-jose-DZ4dnjri.js";
7
8
  import "./budget-NbEtbJC_.js";
8
- import { a as quoteSqlIdent, i as quoteQualifiedTable, l as sqlTextArray, o as quoteSqlLiteral, r as qualifySqlTable, s as quoteSqlTable } from "./sql-t8teWOfo.js";
9
- import { c as hookApiNames, d as keptKeys, l as roleColumn } from "./sources-B1-b-R0t.js";
10
- import { i as readMemberships } from "./manifest-BngWKryL.js";
9
+ import { a as quoteQualifiedTable, c as quoteSqlTable, i as qualifySqlTable, o as quoteSqlIdent, s as quoteSqlLiteral, u as sqlTextArray } from "./sql-B5T1IL83.js";
10
+ import { d as keptKeys, l as roleColumn } from "./sources-vs5dGOsS.js";
11
+ import { t as callRpc } from "./postgrest-DAjUkF9w.js";
11
12
  //#region src/supabase/capability.ts
12
13
  const DEFAULT_TTL = 300;
13
14
  const MAX_TTL = 3600;
@@ -29,15 +30,19 @@ async function exchangeCapability(subject, options) {
29
30
  if (principal === null || principal.kind !== "link") return;
30
31
  const capability = parseCapability(principal["capability"]);
31
32
  if (capability?.holder !== "link" || capability.id !== principal.id) return;
32
- const now = Math.floor(options.now ?? Date.now() / 1e3);
33
+ const now = nowSeconds(options.now);
33
34
  const ttl = Math.min(Math.max(1, options.ttl ?? DEFAULT_TTL), MAX_TTL);
34
35
  const exp = Math.min(now + ttl, Math.floor(capability.expiresAt));
35
36
  if (exp <= now) return;
37
+ const { id: _id, expiresAt: _expiresAt, cnf: _cnf, ...claim } = capability;
36
38
  const jose = await loadJose();
37
39
  const key = isSecret(options.key) ? new TextEncoder().encode(options.key.secret) : await jose.importJWK(options.key, alg);
38
40
  const jwt = new jose.SignJWT({
39
41
  role: "anon",
40
- capability
42
+ capability: {
43
+ ...claim,
44
+ expires_at: exp
45
+ }
41
46
  }).setProtectedHeader(secret ? {
42
47
  alg: "HS256",
43
48
  typ: "JWT"
@@ -93,14 +98,14 @@ function checkMembership(item, path, issues) {
93
98
  "tenant",
94
99
  "team",
95
100
  "via",
96
- "grantedBy",
101
+ "granted_by",
97
102
  "reason"
98
103
  ]) optional(item, key, path, issues, isString, "a string");
99
104
  optional(item, "within", path, issues, (value) => isRecord(value) && Object.values(value).every((id) => typeof id === "string"), "an object of string ids");
100
105
  optional(item, "on", path, issues, (value) => isRecord(value) && typeof own(value, "resource") === "string" && typeof own(value, "id") === "string", "an object with string resource and id");
101
- optional(item, "expiresAt", path, issues, (value) => typeof value === "number" && Number.isFinite(value), "a number of seconds since the epoch");
106
+ optional(item, "expires_at", path, issues, (value) => typeof value === "number" && Number.isFinite(value), "a number of seconds since the epoch");
102
107
  optional(item, "member", path, issues, (value) => isRecord(value) && typeof own(value, "group") === "string" && own(value, "group") !== "", "an object with a non-empty string group");
103
- optional(item, "managedBy", path, issues, (value) => value === "idp", "'idp'");
108
+ optional(item, "managed_by", path, issues, (value) => value === "idp", "'idp'");
104
109
  optional(item, "entitlements", path, issues, isStrings, "an array of strings");
105
110
  optional(item, "keep", path, issues, isStrings, "an array of strings");
106
111
  optional(item, "grants", path, issues, isRecord, "an object");
@@ -123,14 +128,20 @@ function checkPermDockClaims(record, tenantClaim, path, issues) {
123
128
  optional(record, "attrs", path, issues, isRecord, "an object");
124
129
  optional(record, "authz_ver", path, issues, (value) => Number.isInteger(value), "an integer");
125
130
  }
126
- /** The outer level's `kind`: none, `support` with a `session_id`, or `impersonation`. */
131
+ /** The outer level's `kind`: none, `support` with a `session_id`, `impersonation`, or `agent` with optional `tools` and `read_only` and no `session_id`. */
127
132
  function checkActKind(level, path, issues) {
128
133
  const marked = own(level, "kind");
129
134
  const kind = marked === void 0 && own(level, "session_id") !== void 0 ? "support" : marked;
130
135
  optional(level, "reason", path, issues, isString, "a string");
131
136
  if (kind === void 0 || kind === "impersonation") return;
137
+ if (kind === "agent") {
138
+ if (own(level, "session_id") !== void 0) issue(issues, [...path, "session_id"], "Expected no session_id on an agent level");
139
+ optional(level, "tools", path, issues, (value) => isStrings(value) && value.every((tool) => tool !== ""), "an array of non-empty strings");
140
+ optional(level, "read_only", path, issues, (value) => typeof value === "boolean", "a boolean");
141
+ return;
142
+ }
132
143
  if (kind !== "support") {
133
- issue(issues, [...path, "kind"], "Expected 'support' or 'impersonation'");
144
+ issue(issues, [...path, "kind"], "Expected 'support', 'impersonation' or 'agent'");
134
145
  return;
135
146
  }
136
147
  const session = own(level, "session_id");
@@ -222,187 +233,6 @@ function supabaseClaims(options = {}) {
222
233
  });
223
234
  }
224
235
  //#endregion
225
- //#region src/supabase/postgrest.ts
226
- function callRpc(client, schema, fn, args) {
227
- return client.schema(schema).rpc(fn, args);
228
- }
229
- function strings(value) {
230
- return Array.isArray(value) ? value.filter((item) => typeof item === "string") : [];
231
- }
232
- function grantOf(value) {
233
- if (!isRecord(value) || typeof value["permission"] !== "string") return;
234
- return compact({
235
- permission: value["permission"],
236
- effect: value["effect"] === "deny" ? "deny" : "allow",
237
- level: typeof value["level"] === "string" ? value["level"] : void 0
238
- });
239
- }
240
- function customRoleOf(value) {
241
- if (!isRecord(value) || typeof value["name"] !== "string") return;
242
- const grants = Array.isArray(value["grants"]) ? value["grants"].flatMap((item) => {
243
- const grant = grantOf(item);
244
- return grant === void 0 ? [] : [grant];
245
- }) : [];
246
- const includes = strings(value["includes"]);
247
- const body = {
248
- name: value["name"],
249
- grants,
250
- ...includes.length === 0 ? {} : { includes }
251
- };
252
- if (value["scope"] === "global") return value["tenant"] === void 0 ? {
253
- ...body,
254
- scope: "global"
255
- } : void 0;
256
- if (typeof value["tenant"] !== "string") return;
257
- return compact({
258
- ...body,
259
- tenant: value["tenant"],
260
- scope: typeof value["scope"] === "string" ? value["scope"] : void 0,
261
- id: typeof value["id"] === "string" ? value["id"] : void 0
262
- });
263
- }
264
- function readMemberEntries(value) {
265
- if (!Array.isArray(value)) return [];
266
- return value.flatMap((item) => {
267
- if (!isRecord(item) || !isRecord(item["principal"])) return [];
268
- const id = item["principal"]["id"];
269
- const [membership] = readMemberships([item["membership"]]).memberships;
270
- return typeof id === "string" && id !== "" && membership !== void 0 ? [{
271
- principal: { id },
272
- membership
273
- }] : [];
274
- });
275
- }
276
- function versionOf(value) {
277
- const version = typeof value === "string" ? Number(value) : value;
278
- return typeof version === "number" && Number.isFinite(version) ? version : void 0;
279
- }
280
- /** Reads `subject_for`'s JSON; anything it cannot read is left out, and a malformed record is no record. */
281
- function readSubjectRecord(value) {
282
- if (!isRecord(value) || typeof value["id"] !== "string") return;
283
- if (value["active"] !== true) return {
284
- id: value["id"],
285
- active: false,
286
- roles: [],
287
- memberships: [],
288
- customRoles: []
289
- };
290
- const version = value["authzVersion"];
291
- return compact({
292
- id: value["id"],
293
- active: true,
294
- roles: strings(value["roles"]),
295
- memberships: readMemberships(value["memberships"]).memberships,
296
- customRoles: Array.isArray(value["customRoles"]) ? value["customRoles"].flatMap((item) => {
297
- const role = customRoleOf(item);
298
- return role === void 0 ? [] : [role];
299
- }) : [],
300
- authzVersion: typeof version === "number" && Number.isFinite(version) ? version : void 0
301
- });
302
- }
303
- /**
304
- * Membership, custom-role and subject sources over the `subject_for(p_user)`,
305
- * `authz_version_for(p_user)` and `members_of(p_scope, p_id)` functions
306
- * `permdock supabase hook generate` writes, for a backend that reaches
307
- * Postgres only through PostgREST. `memberships.version` reads only the
308
- * version, so `claimsFirst` with `onStale: 'reread'` reads the full subject
309
- * only for a stale token; when the version function is missing it falls back
310
- * to `subject_for`. With `policy`, a token that claims a custom role has its
311
- * subject read in one `subject_for` call instead, and custom roles are read
312
- * only for a subject that holds one. Each user and each instance is read once per
313
- * `postgrestSources` call, so create it per request or per job.
314
- */
315
- function postgrestSources(client, options = {}) {
316
- const api = options.api;
317
- const names = api === void 0 ? void 0 : hookApiNames(api.prefix);
318
- const schema = options.schema ?? (api === void 0 ? "permdock" : api.schema ?? "public");
319
- const fn = options.fn ?? names?.subjectFor ?? "subject_for";
320
- const membersFn = options.membersFn ?? names?.membersOf ?? "members_of";
321
- const versionFn = options.versionFn ?? names?.authzVersionFor ?? "authz_version_for";
322
- const declared = options.policy === void 0 ? void 0 : options.policy.index.declaredRoles;
323
- const onlyDeclared = (held) => declared !== void 0 && held?.every((name) => declared.has(name)) === true;
324
- const loaded = /* @__PURE__ */ new Map();
325
- const versions = /* @__PURE__ */ new Map();
326
- const listed = /* @__PURE__ */ new Map();
327
- const list = (query) => {
328
- const key = JSON.stringify([query.scope, query.id]);
329
- const cached = listed.get(key);
330
- if (cached !== void 0) return cached.then((entries) => [...entries]);
331
- const pending = Promise.resolve(callRpc(client, schema, membersFn, {
332
- p_scope: query.scope,
333
- p_id: query.id
334
- })).then((result) => {
335
- if (result.error !== null) throw new Error(`PermDock: ${schema}.${membersFn} failed: ${result.error.message}`);
336
- return readMemberEntries(result.data);
337
- });
338
- listed.set(key, pending);
339
- return pending.then((entries) => [...entries]);
340
- };
341
- const record = (userId) => {
342
- const cached = loaded.get(userId);
343
- if (cached !== void 0) return cached;
344
- const pending = Promise.resolve(callRpc(client, schema, fn, { p_user: userId })).then((result) => {
345
- if (result.error !== null) throw new Error(`PermDock: ${schema}.${fn} failed: ${result.error.message}`);
346
- return readSubjectRecord(result.data);
347
- });
348
- loaded.set(userId, pending);
349
- return pending;
350
- };
351
- const version = (userId) => {
352
- const read = loaded.get(userId);
353
- if (read !== void 0) return read.then((found) => found?.authzVersion);
354
- const cached = versions.get(userId);
355
- if (cached !== void 0) return cached;
356
- const pending = Promise.resolve(callRpc(client, schema, versionFn, { p_user: userId })).then((result) => result.error === null ? versionOf(result.data) : record(userId).then((found) => found?.authzVersion));
357
- versions.set(userId, pending);
358
- return pending;
359
- };
360
- const live = async (userId) => {
361
- const found = await record(userId);
362
- return found?.active === true ? found : void 0;
363
- };
364
- return {
365
- memberships: {
366
- async membershipsFor(principal) {
367
- return [...(await live(principal.id))?.memberships ?? []];
368
- },
369
- version(principal) {
370
- return declared !== void 0 && !onlyDeclared([...principal.roles ?? [], ...(principal.memberships ?? []).flatMap((membership) => membership.roles)]) ? record(principal.id).then((found) => found?.authzVersion) : version(principal.id);
371
- },
372
- list
373
- },
374
- customRoles(principal) {
375
- return {
376
- async rolesFor(tenant, context) {
377
- if (onlyDeclared(context?.held)) return [];
378
- return ((await live(principal.id))?.customRoles ?? []).filter((role) => role.tenant === tenant);
379
- },
380
- async globalRoles(context) {
381
- if (onlyDeclared(context?.held)) return [];
382
- return ((await live(principal.id))?.customRoles ?? []).filter((role) => role.scope === "global");
383
- }
384
- };
385
- },
386
- async subject(userId) {
387
- const found = await live(userId);
388
- if (found === void 0) return {
389
- principal: null,
390
- context: {}
391
- };
392
- return {
393
- principal: compact({
394
- id: found.id,
395
- roles: found.roles,
396
- memberships: found.memberships,
397
- authzVersion: found.authzVersion
398
- }),
399
- context: {}
400
- };
401
- },
402
- record
403
- };
404
- }
405
- //#endregion
406
236
  //#region src/supabase/approval-store.ts
407
237
  /** A stored body as the request it is; the store wrote it from an `ApprovalRequest`. */
408
238
  function requestOf(value) {
@@ -456,10 +286,10 @@ function supabaseApprovalStore(client, options = {}) {
456
286
  if (written === null) throw new ApprovalError("approval-not-pending", "approval is not pending");
457
287
  return written;
458
288
  },
459
- async consume(token, now = /* @__PURE__ */ new Date()) {
289
+ async consume(token, now) {
460
290
  return requestOf(await call("permdock_approval_consume", {
461
291
  p_token: token,
462
- p_now: now.toISOString()
292
+ p_now: dateAt(now).toISOString()
463
293
  }));
464
294
  },
465
295
  async list(query) {
@@ -483,8 +313,8 @@ function supabaseApprovalStore(client, options = {}) {
483
313
  next: encodeApprovalCursor(last)
484
314
  } : { items };
485
315
  },
486
- async expire(now = /* @__PURE__ */ new Date()) {
487
- const count = await call("permdock_approval_expire", { p_now: now.toISOString() });
316
+ async expire(now) {
317
+ const count = await call("permdock_approval_expire", { p_now: dateAt(now).toISOString() });
488
318
  return typeof count === "number" ? count : 0;
489
319
  },
490
320
  async cancel(filter, meta) {
@@ -492,13 +322,76 @@ function supabaseApprovalStore(client, options = {}) {
492
322
  p_filter: filterOf(filter),
493
323
  p_by: meta.by,
494
324
  p_note: meta.note ?? null,
495
- p_now: (/* @__PURE__ */ new Date()).toISOString()
325
+ p_now: isoNow()
496
326
  });
497
327
  return typeof count === "number" ? count : 0;
498
328
  }
499
329
  };
500
330
  }
501
331
  //#endregion
332
+ //#region src/supabase/approval-delegations.ts
333
+ function rowsOf(result) {
334
+ return Array.isArray(result) ? result : result.rows;
335
+ }
336
+ function instant(value) {
337
+ if (value instanceof Date) return Number.isNaN(value.getTime()) ? void 0 : value.toISOString();
338
+ if (typeof value !== "string") return;
339
+ const ms = Date.parse(value);
340
+ return Number.isNaN(ms) ? void 0 : isoAt(ms);
341
+ }
342
+ function list(value) {
343
+ if (value === null || value === void 0) return;
344
+ if (!Array.isArray(value)) return false;
345
+ const items = [];
346
+ for (const item of value) {
347
+ if (typeof item !== "string") return false;
348
+ items.push(item);
349
+ }
350
+ return items;
351
+ }
352
+ function delegationOf(row) {
353
+ const { id, delegator, delegate, tenant } = row;
354
+ const from = instant(row["from"]);
355
+ const until = instant(row["until"]);
356
+ const permissions = list(row["permissions"]);
357
+ const resources = list(row["resources"]);
358
+ if (typeof id !== "string" || typeof delegator !== "string" || typeof delegate !== "string" || tenant !== null && typeof tenant !== "string" || from === void 0 || until === void 0 || permissions === false || resources === false) return;
359
+ return {
360
+ id,
361
+ delegator,
362
+ delegate,
363
+ ...typeof tenant === "string" ? { tenant } : {},
364
+ ...permissions === void 0 ? {} : { permissions },
365
+ ...resources === void 0 ? {} : { resources },
366
+ from,
367
+ until
368
+ };
369
+ }
370
+ /**
371
+ * Approval delegations (out-of-office covers) from the table
372
+ * `rls.approvals.delegations` generates, so `approvalsHandler` and
373
+ * `permdock_is_approver` read the same rows. A cover without a tenant
374
+ * applies everywhere; a malformed row is skipped.
375
+ */
376
+ function tableApprovalDelegationSource(options) {
377
+ const table = quoteQualifiedTable(options.table ?? "permdock.approval_delegations");
378
+ return {
379
+ name: "table",
380
+ async delegationsFor(query) {
381
+ const values = [query.delegate, query.at];
382
+ let tenant = "d.tenant is null";
383
+ if (query.tenant !== void 0) {
384
+ values.push(query.tenant);
385
+ tenant = "(d.tenant is null or d.tenant = $3)";
386
+ }
387
+ return rowsOf(await options.query(`select d.id::text as id, d.delegator::text as delegator, d.delegate::text as delegate, d.tenant::text as tenant, d.permissions, d.resources, d."from", d."until" from ${table} d where d.delegate::text = $1 and d."from" <= $2::timestamptz and $2::timestamptz < d."until" and ${tenant} order by d.id`, values)).flatMap((row) => {
388
+ const entry = delegationOf(row);
389
+ return entry === void 0 ? [] : [entry];
390
+ });
391
+ }
392
+ };
393
+ }
394
+ //#endregion
502
395
  //#region src/supabase/rls.ts
503
396
  function isTable(value) {
504
397
  return value !== null && typeof value === "object" && "table" in value && typeof value.table === "string";
@@ -585,7 +478,7 @@ function claimKept(suspension) {
585
478
  }
586
479
  function customDatabaseBranch(q, scope, memberships, declared, levels, suspension) {
587
480
  const role = tenantRole(memberships);
588
- const match = `c.tenant_id::text = requested_tenant and c.scope = ${literal(scope)} and c.scope_id is null and c.role = ${role.sql}`;
481
+ const match = `case when ${q("permdock_is_shared_role")}(${literal(scope)}, ${role.sql}) then c.tenant_id is null else c.tenant_id::text = requested_tenant end and c.scope = ${literal(scope)} and c.scope_id is null and c.role = ${role.sql}`;
589
482
  const rows = (source, value, extra) => `array(select c.${value} from ${q(source)} c where ${match}${extra})`;
590
483
  return ` or exists (
591
484
  select 1
@@ -656,9 +549,9 @@ ${tenantBranch}
656
549
  and not ${global("deny")};
657
550
  end;`;
658
551
  }
659
- /** A claim membership whose `expiresAt` (epoch seconds) has passed no longer holds its roles. */
660
- const CLAIM_UNEXPIRED = `case jsonb_typeof(m -> 'expiresAt')
661
- when 'number' then (m ->> 'expiresAt')::numeric > extract(epoch from now())
552
+ /** A claim membership whose `expires_at` (epoch seconds) has passed no longer holds its roles. */
553
+ const CLAIM_UNEXPIRED = `case jsonb_typeof(m -> 'expires_at')
554
+ when 'number' then (m ->> 'expires_at')::numeric > extract(epoch from now())
662
555
  else true
663
556
  end`;
664
557
  function jwtBody(q, scope, custom, suspension) {
@@ -757,4 +650,4 @@ grant execute on function ${signature} to authenticated;
757
650
  `;
758
651
  }
759
652
  //#endregion
760
- export { readSubjectRecord as a, postgrestSources as i, supabaseRls as n, supabaseClaims as o, supabaseApprovalStore as r, exchangeCapability as s, authorizeSql as t };
653
+ export { supabaseClaims as a, supabaseApprovalStore as i, supabaseRls as n, exchangeCapability as o, tableApprovalDelegationSource as r, authorizeSql as t };
@@ -0,0 +1,158 @@
1
+ import { t as compact } from "./compact-CAf557ZB.js";
2
+ import { n as freezeDeep } from "./freeze-CrU8nQeX.js";
3
+ import { a as ownRecord } from "./paths-DXSHAMIa.js";
4
+ import { a as isId, r as idList } from "./expiry-D4_YKRKD.js";
5
+ import { n as internalsOf } from "./internals-Dk8A8fX3.js";
6
+ import { c as listPermissions, m as annotationsFor, n as findPermission } from "./permission-registry-Br4jSNVi.js";
7
+ import { g as secondsOf, l as isRfc3339, m as rfc3339, p as nowSeconds } from "./time-DkWjdL98.js";
8
+ import { t as canonicalJson } from "./canonical-json-BC8_nMTw.js";
9
+ import { r as sha256Digest } from "./sha256-D9ihqmvd.js";
10
+ //#region src/core/support-session.ts
11
+ const DEFAULT_TTL = 3600;
12
+ const MAX_TTL = 86400;
13
+ const MAX_REASON = 1e3;
14
+ function isReason(value) {
15
+ return typeof value === "string" && value.trim().length > 0 && value.length <= MAX_REASON;
16
+ }
17
+ /**
18
+ * Validates an untrusted support-session record and returns a frozen copy
19
+ * with only the v1 fields, or `undefined`.
20
+ */
21
+ function parseSupportSession(input) {
22
+ const value = ownRecord(input);
23
+ if (value === void 0 || value["v"] !== 1 || !isId(value["id"]) || !isId(value["principal"]) || !isId(value["actor"]) || value["principal"] === value["actor"] || !isId(value["tenant"]) || !isReason(value["reason"]) || !isRfc3339(value["startedAt"]) || !isRfc3339(value["expiresAt"])) return;
24
+ const permissions = idList(value["permissions"]);
25
+ const { approvedBy, reference } = value;
26
+ if (permissions === void 0 || (secondsOf(value["expiresAt"]) ?? 0) <= (secondsOf(value["startedAt"]) ?? 0) || approvedBy !== void 0 && (!isId(approvedBy) || approvedBy === value["actor"]) || reference !== void 0 && !isId(reference)) return;
27
+ return freezeDeep(compact({
28
+ v: 1,
29
+ id: value["id"],
30
+ principal: value["principal"],
31
+ actor: value["actor"],
32
+ tenant: value["tenant"],
33
+ reason: value["reason"],
34
+ permissions,
35
+ startedAt: value["startedAt"],
36
+ expiresAt: value["expiresAt"],
37
+ approvedBy,
38
+ reference
39
+ }));
40
+ }
41
+ function denied(reason, detail) {
42
+ return freezeDeep({
43
+ outcome: "denied",
44
+ denials: [compact({
45
+ role: null,
46
+ reason,
47
+ detail
48
+ })]
49
+ });
50
+ }
51
+ function sessionToken(request, actor, tenant, permissions, ttl) {
52
+ return sha256Digest(canonicalJson({
53
+ t: "support-session",
54
+ id: request.id,
55
+ principal: request.principal,
56
+ actor,
57
+ tenant,
58
+ reason: request.reason,
59
+ permissions,
60
+ ttl,
61
+ reference: request.reference ?? null
62
+ }));
63
+ }
64
+ /**
65
+ * Decides whether the subject of `permdock` may start the support session
66
+ * in `request`. The actor must be a signed-in person acting for themselves
67
+ * (`exceeds-creator` otherwise), give a `reason` (`reason-required`), be a
68
+ * member of the tenant (`tenant-mismatch`) and be able to use every
69
+ * permission (`exceeds-creator`). Without `permissions` the session gets the
70
+ * actor's read-only permissions. The tenant's `supportSessions` policy then
71
+ * applies, and the result is `approval-required` until `approved` carries
72
+ * its token and `approvedBy` names someone other than the actor.
73
+ */
74
+ /**
75
+ * Decides whether the subject of `permdock` may start the support session
76
+ * in `request` and returns the record to sign: a stated reason, membership
77
+ * of the tenant, the actor's own reach, the tenant's `supportSessions`
78
+ * policy and approval by someone else. An instance built from a snapshot
79
+ * denies with `unsupported`.
80
+ */
81
+ function decideSupportSession(permdock, request, options = {}) {
82
+ const internals = internalsOf(permdock);
83
+ if (internals === void 0) return Promise.resolve(freezeDeep({
84
+ outcome: "denied",
85
+ denials: [{
86
+ role: null,
87
+ reason: "unsupported"
88
+ }]
89
+ }));
90
+ const settings = options.settings ?? internals.env.settings;
91
+ return decideSupportSessionWith(internals.instance, request, settings === void 0 ? options : {
92
+ ...options,
93
+ settings
94
+ });
95
+ }
96
+ async function decideSupportSessionWith(permdock, request, options) {
97
+ const actor = permdock.subject.principal;
98
+ if (actor === null) return denied("anonymous");
99
+ if (actor.kind !== void 0 && actor.kind !== "user") return denied("exceeds-creator", { creator: actor.kind });
100
+ if ("credential" in actor || "runTicket" in actor) return denied("exceeds-creator", { creator: "credential" in actor ? "credential" : "run" });
101
+ if (permdock.subject.actor !== void 0) return denied("exceeds-creator", { creator: "actor" });
102
+ if (!isReason(request.reason)) return denied("reason-required");
103
+ const ttl = request.expiresIn ?? DEFAULT_TTL;
104
+ if (!isId(request.id) || !isId(request.principal) || request.principal === actor.id || !Number.isSafeInteger(ttl) || ttl <= 0 || ttl > MAX_TTL || request.reference !== void 0 && !isId(request.reference)) return denied("validation");
105
+ const tenant = request.tenant ?? actor.tenant;
106
+ if (tenant === void 0) return denied("validation");
107
+ if (!permdock.tenants().includes(tenant)) return denied("tenant-mismatch", { tenant });
108
+ let policy;
109
+ if (options.settings !== void 0) try {
110
+ policy = (await options.settings.settingsFor(tenant))?.supportSessions;
111
+ } catch {
112
+ return denied("unsupported", { rule: "unavailable" });
113
+ }
114
+ if (policy?.disabled === true) return denied("unsupported", { rule: "disabled" });
115
+ if (policy?.maxTtl !== void 0 && ttl > policy.maxTtl) return denied("validation", { rule: "ttl" });
116
+ const leaves = request.permissions === void 0 ? listPermissions(permdock.permissions).filter((leaf) => annotationsFor(leaf).readOnlyHint && permdock.mayUse(leaf)) : request.permissions.map((permission) => findPermission(permdock.permissions, permission.key));
117
+ const keys = [];
118
+ for (const leaf of leaves) {
119
+ if (leaf === void 0) return denied("validation");
120
+ if (!permdock.mayUse(leaf)) return denied("exceeds-creator", { permission: leaf.key });
121
+ if (policy?.readOnly === true && !annotationsFor(leaf).readOnlyHint) return denied("not-delegated", {
122
+ permission: leaf.key,
123
+ rule: "read-only"
124
+ });
125
+ if (!keys.includes(leaf.key)) keys.push(leaf.key);
126
+ }
127
+ if (keys.length === 0) return denied("no-grant");
128
+ const token = sessionToken(request, actor.id, tenant, keys, ttl);
129
+ const approval = options.approval !== false;
130
+ const approved = approval && options.approved === token;
131
+ if (approved && (options.approvedBy === void 0 || options.approvedBy === actor.id)) return denied("approval", "approver-not-distinct");
132
+ const startedAt = nowSeconds(options.now);
133
+ const session = parseSupportSession(compact({
134
+ v: 1,
135
+ id: request.id,
136
+ principal: request.principal,
137
+ actor: actor.id,
138
+ tenant,
139
+ reason: request.reason,
140
+ permissions: keys,
141
+ startedAt: rfc3339(startedAt),
142
+ expiresAt: rfc3339(startedAt + ttl),
143
+ approvedBy: approved ? options.approvedBy : void 0,
144
+ reference: request.reference
145
+ }));
146
+ if (session === void 0) return denied("validation");
147
+ if (approval && !approved) return freezeDeep({
148
+ outcome: "approval-required",
149
+ session,
150
+ token
151
+ });
152
+ return freezeDeep({
153
+ outcome: "granted",
154
+ session
155
+ });
156
+ }
157
+ //#endregion
158
+ export { parseSupportSession as n, decideSupportSession as t };
@@ -16,7 +16,7 @@
16
16
  tenant,
17
17
  children,
18
18
  pending,
19
- fallback,
19
+ denied,
20
20
  approval,
21
21
  }: ProtectedProps = $props();
22
22
 
@@ -33,15 +33,15 @@
33
33
  const generation = tick;
34
34
  return viewFor(store, permission, data, scoped, generation);
35
35
  });
36
- const own = $derived({ pending, fallback, approval });
36
+ const own = $derived({ pending, denied, approval });
37
37
  </script>
38
38
 
39
39
  {#if view.slot === 'pending'}
40
40
  {@render slotContent('pending', own, defaults)?.()}
41
41
  {:else if view.slot === 'approval'}
42
42
  {@render slotContent('approval', own, defaults)?.(view.decision)}
43
- {:else if view.slot === 'fallback'}
44
- {@render slotContent('fallback', own, defaults)?.(view.decision)}
43
+ {:else if view.slot === 'denied'}
44
+ {@render slotContent('denied', own, defaults)?.(view.decision)}
45
45
  {:else}
46
46
  {@render children?.(view.decision)}
47
47
  {/if}
@@ -1,13 +1,13 @@
1
- import { n as requiredPlans } from "../problem-details-rIIo8B2C.js";
2
- import { i as describe } from "../describe-C3ldA9os.js";
1
+ import { n as requiredPlans } from "../problem-details-B45V5d2b.js";
2
+ import { i as describe } from "../describe-B5qgDvEW.js";
3
3
  import { t as PermissionBoundaryState } from "../boundary-BmHxVH1J.js";
4
- import { t as approvalHeaders } from "../headers-Cf-zWvsO.js";
5
- import { a as ClientPermDock, c as PermissionSet, d as SubjectView, f as TenantView, i as ApprovalState, l as PermissionState, o as ClientStatus, p as UseRolesOptions, r as ApprovalHandle, s as FilterResult } from "../store-9KO4BlkB.js";
6
- import { n as PermDockSvelteOptions, r as ProtectedProps, s as PermissionBoundaryProps, t as PermDockDefaults } from "../types-ByUo56un.js";
7
- import { a as getDescribe, c as permission, d as setPermDock, f as subject, i as filtered, l as permissions, n as assignable, o as getPermDock, p as tenant, r as assignablePermissions, s as memberships, t as approval, u as roles } from "../stores-Cxz_80g-.js";
4
+ import { t as approvalHeaders } from "../headers-CIbDTUTK.js";
5
+ import { a as FilterResult, c as PermissionSet, d as RolesOptions, f as SubjectView, i as ClientStatus, l as PermissionState, n as ApprovalState, p as TenantView, r as ClientPermDock, t as ApprovalHandle } from "../types-B3_ooZgZ.js";
6
+ import { n as SveltePermDockOptions, o as PermissionBoundaryProps, r as ProtectedProps, t as PermDockDefaults } from "../types-CVZSNocA.js";
7
+ import { a as getDescribe, c as permission, d as setPermDock, f as subject, i as filtered, l as permissions, n as assignable, o as getPermDock, p as tenant, r as assignablePermissions, s as memberships, t as approval, u as roles } from "../stores-BUGNbJTt.js";
8
8
  import { Component } from "svelte";
9
9
  //#region src/svelte/index.d.ts
10
10
  export declare const Protected: Component<ProtectedProps>;
11
11
  export declare const PermissionBoundary: Component<PermissionBoundaryProps>;
12
12
  //#endregion
13
- export { type ApprovalHandle, type ApprovalState, type ClientPermDock, type ClientStatus, type FilterResult, type PermDockDefaults, type PermDockSvelteOptions, type PermissionBoundaryProps, type PermissionBoundaryState, type PermissionSet, type PermissionState, type ProtectedProps, type SubjectView, type TenantView, type UseRolesOptions, approval, approvalHeaders, assignable, assignablePermissions, describe, filtered, getDescribe, getPermDock, memberships, permission, permissions, requiredPlans, roles, setPermDock, subject, tenant };
13
+ export { type ApprovalHandle, type ApprovalState, type ClientPermDock, type ClientStatus, type FilterResult, type PermDockDefaults, type PermissionBoundaryProps, type PermissionBoundaryState, type PermissionSet, type PermissionState, type ProtectedProps, type RolesOptions, type SubjectView, type SveltePermDockOptions, type TenantView, approval, approvalHeaders, assignable, assignablePermissions, describe, filtered, getDescribe, getPermDock, memberships, permission, permissions, requiredPlans, roles, setPermDock, subject, tenant };
@@ -1,11 +1,11 @@
1
- import { r as requiredPlans } from "../problem-details-DECUnXAn.js";
2
- import { t as describe } from "../describe-Cgkp7eP0.js";
3
- import { t as approvalHeaders } from "../headers-BZSDieNT.js";
4
- import { l as slotContent } from "../views-CJsrBS1f.js";
1
+ import { r as requiredPlans } from "../problem-details-cn5X30gZ.js";
2
+ import { t as describe } from "../describe-BybMRY7A.js";
5
3
  import { n as boundaryFallback, t as boundaryDigest } from "../boundary-BM8a_P6E.js";
6
- import { n as getUi, t as getStore } from "../context-DieZVJXu.js";
7
- import { n as viewFor, t as scopedFor } from "../runtime-D_tMXnsq.js";
8
- import { a as getDescribe, c as permission, d as setPermDock, f as subject, i as filtered, l as permissions, n as assignable, o as getPermDock, p as tenant, r as assignablePermissions, s as memberships, t as approval, u as roles } from "../stores-BHXdSbw9.js";
4
+ import { t as approvalHeaders } from "../headers-BIjfMaoC.js";
5
+ import { u as slotContent } from "../views-DTIIO-oQ.js";
6
+ import { n as getUi, t as getStore } from "../context-B_u3_bDJ.js";
7
+ import { n as viewFor, t as scopedFor } from "../runtime-D3VTAiCA.js";
8
+ import { a as getDescribe, c as permission, d as setPermDock, f as subject, i as filtered, l as permissions, n as assignable, o as getPermDock, p as tenant, r as assignablePermissions, s as memberships, t as approval, u as roles } from "../stores-CGhM8BN_.js";
9
9
  import "svelte/internal/disclose-version";
10
10
  import * as $ from "svelte/internal/client";
11
11
  import { onDestroy } from "svelte";
@@ -75,7 +75,7 @@ function Protected$1($$anchor, $$props) {
75
75
  });
76
76
  const own = $.derived(() => ({
77
77
  pending: $$props.pending,
78
- fallback: $$props.fallback,
78
+ denied: $$props.denied,
79
79
  approval: $$props.approval
80
80
  }));
81
81
  var fragment = $.comment();
@@ -95,7 +95,7 @@ function Protected$1($$anchor, $$props) {
95
95
  var consequent_2 = ($$anchor) => {
96
96
  var fragment_3 = $.comment();
97
97
  var node_3 = $.first_child(fragment_3);
98
- $.snippet(node_3, () => slotContent("fallback", $.get(own), defaults) ?? $.noop, () => $.get(view).decision);
98
+ $.snippet(node_3, () => slotContent("denied", $.get(own), defaults) ?? $.noop, () => $.get(view).decision);
99
99
  $.append($$anchor, fragment_3);
100
100
  };
101
101
  var alternate = ($$anchor) => {
@@ -107,7 +107,7 @@ function Protected$1($$anchor, $$props) {
107
107
  $.if(node, ($$render) => {
108
108
  if ($.get(view).slot === "pending") $$render(consequent);
109
109
  else if ($.get(view).slot === "approval") $$render(consequent_1, 1);
110
- else if ($.get(view).slot === "fallback") $$render(consequent_2, 2);
110
+ else if ($.get(view).slot === "denied") $$render(consequent_2, 2);
111
111
  else $$render(alternate, -1);
112
112
  });
113
113
  $.append($$anchor, fragment);