permdock 0.3.1 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (552) hide show
  1. package/README.md +37 -35
  2. package/dist/{openapi-schema--ARjyfQr.js → 2020-C9VN-x8c.js} +5 -132
  3. package/dist/a2a/index.d.ts +8 -6
  4. package/dist/a2a/index.js +21 -31
  5. package/dist/{adapter-context-mlWsVGGg.js → adapter-context-CRhqyzCk.js} +1 -1
  6. package/dist/adoption-scan-B4R5fnMU.js +107 -0
  7. package/dist/agent/index.d.ts +3 -0
  8. package/dist/agent/index.js +1 -0
  9. package/dist/ai-sdk/index.d.ts +18 -23
  10. package/dist/ai-sdk/index.js +38 -21
  11. package/dist/app-data-MuyzVqX8.js +60 -0
  12. package/dist/approval-header-CJACtHkv.js +23 -0
  13. package/dist/approval-prompt-Dg5LeAcT.js +62 -0
  14. package/dist/approval-prompt-Djo_PyZc.d.ts +57 -0
  15. package/dist/approvals/index.d.ts +5 -3
  16. package/dist/approvals/index.js +8 -5
  17. package/dist/approvals-DJ6Yd5z1.js +995 -0
  18. package/dist/{approvers-DT4AVyIg.js → approvers-CqPOLD-o.js} +1 -1
  19. package/dist/arazzo-B6lebmiQ.js +36 -0
  20. package/dist/{arazzo-BAgw9ap6.js → arazzo-BWhNF-k0.js} +24 -17
  21. package/dist/args-IIolxxKA.js +197 -0
  22. package/dist/astro/index.d.ts +43 -0
  23. package/dist/astro/index.js +27 -0
  24. package/dist/audience-Dg8XsRaO.js +55 -0
  25. package/dist/auth-DRLEizbL.js +178 -0
  26. package/dist/authzen/index.d.ts +26 -6
  27. package/dist/authzen/index.js +228 -75
  28. package/dist/automation-BMZPIVUM.d.ts +114 -0
  29. package/dist/automation-DVjOckjV.js +157 -0
  30. package/dist/better-auth/index.d.ts +8 -6
  31. package/dist/better-auth/index.js +11 -23
  32. package/dist/better-supabase/index.d.ts +438 -86
  33. package/dist/better-supabase/index.js +1027 -184
  34. package/dist/bind--9EFVYWF.d.ts +38 -0
  35. package/dist/{bind-CuzGytRf.js → bind-CZzhx-Vj.js} +22 -10
  36. package/dist/body-CH5of8Ne.js +10 -0
  37. package/dist/body-text-QcXok_SI.js +52 -0
  38. package/dist/build-instance-BMnAudHn.js +52 -0
  39. package/dist/{canonical-json-DemiK4Vp.js → canonical-json-BC8_nMTw.js} +6 -6
  40. package/dist/{capability-2kYTMWDv.d.ts → capability-BSslw1QV.d.ts} +44 -25
  41. package/dist/{capability-4qPdO9gk.js → capability-N1K9IpqS.js} +69 -42
  42. package/dist/casbin-Cr7RLtA3.js +30 -0
  43. package/dist/casbin-Dyu2gnUD.js +234 -0
  44. package/dist/casl-64gpT-8x.js +24 -0
  45. package/dist/casl-DjEDhTCP.js +299 -0
  46. package/dist/catalog/index.d.ts +74 -2
  47. package/dist/catalog/index.js +51 -2
  48. package/dist/catalog-BECMPrwc.js +100 -0
  49. package/dist/catalog-DjhMYYCq.js +1 -0
  50. package/dist/catalog-R_A__RsH.js +52 -0
  51. package/dist/{catalog-doc-DdGm82XT.js → catalog-doc-C9wjsfNY.js} +54 -25
  52. package/dist/catalog-fingerprint-CCP0-yQS.js +153 -0
  53. package/dist/chat/index.d.ts +2 -0
  54. package/dist/chat/index.js +224 -0
  55. package/dist/chat-sdk/index.d.ts +87 -0
  56. package/dist/chat-sdk/index.js +197 -0
  57. package/dist/claims-map-7oQ3ue4X.js +13 -0
  58. package/dist/claims-map-Ca-QX8C6.d.ts +32 -0
  59. package/dist/claude-agent/index.d.ts +7 -14
  60. package/dist/claude-agent/index.js +26 -30
  61. package/dist/clerk/index.d.ts +9 -8
  62. package/dist/clerk/index.js +15 -45
  63. package/dist/cli/bin.js +36 -17
  64. package/dist/cli/index.d.ts +20 -6
  65. package/dist/cli/index.js +164 -4
  66. package/dist/cloud/index.d.ts +102 -63
  67. package/dist/cloud/index.js +240 -347
  68. package/dist/cloud-CIoHNevm.js +87 -0
  69. package/dist/codemod-Bmj9dWMH.js +37 -0
  70. package/dist/codemod-Cxvvc70T.js +2084 -0
  71. package/dist/{collect-DSTE3ml9.js → collect-CrZJJnEF.js} +79 -17
  72. package/dist/collect-DloHbDVa.js +55 -0
  73. package/dist/collect-FlXJlhus.js +1 -0
  74. package/dist/command-L8EstFNm.js +6 -0
  75. package/dist/{compact-y6vfu2_f.js → compact-CAf557ZB.js} +11 -1
  76. package/dist/compile/index.d.ts +1 -1
  77. package/dist/compile/index.js +1 -2
  78. package/dist/{compile-Ba4blROR.js → compile-CMqMx_IN.js} +13 -9
  79. package/dist/{compile-BkRyBDBw.d.ts → compile-Ckm2HqBZ.d.ts} +5 -3
  80. package/dist/completion-BqhRBJD8.js +143 -0
  81. package/dist/config-B46rm9sc.js +26 -0
  82. package/dist/{config-BJiM-xAm.js → config-bs_kZeYq.js} +15 -10
  83. package/dist/{config-report-CdCgbRnV.js → config-report-DUgj62Ai.js} +17 -8
  84. package/dist/{connection-CU8MQxRi.js → connection-DjhIJSs2.js} +8 -6
  85. package/dist/constants-DcJABbLW.js +20 -0
  86. package/dist/{context-Bcy85rGi.js → context-bbFHR-0D.js} +16 -5
  87. package/dist/convex/index.d.ts +11 -10
  88. package/dist/convex/index.js +18 -18
  89. package/dist/create-0VZ7Pdiu.d.ts +107 -0
  90. package/dist/create-BDS7wc3y.d.ts +138 -0
  91. package/dist/create-BFfm17UA.d.ts +110 -0
  92. package/dist/create-BWRSXgOF.js +403 -0
  93. package/dist/create-C3b4B5eF.js +130 -0
  94. package/dist/create-DnrmLnLW.js +323 -0
  95. package/dist/{credential-8P81ff4u.js → credential-DM2um3ha.js} +153 -32
  96. package/dist/credentials-DPyHmYz5.js +74 -0
  97. package/dist/deciding-columns-Sq12mEA6.js +123 -0
  98. package/dist/delegation-DaXVdDhM.js +286 -0
  99. package/dist/delegation-input-FTxMK3ji.js +19 -0
  100. package/dist/delivery/index.d.ts +5 -0
  101. package/dist/delivery/index.js +5 -0
  102. package/dist/delivery-DCAgNyCn.js +499 -0
  103. package/dist/delivery-event-xX4obB8F.js +40 -0
  104. package/dist/denied-text-D8jDHgsl.d.ts +19 -0
  105. package/dist/{describe-DMYiCjJV.d.ts → describe-BZUsixiL.d.ts} +11 -2
  106. package/dist/{describe-B_gVZEVi.js → describe-BybMRY7A.js} +10 -5
  107. package/dist/device-BARQ8eYG.js +193 -0
  108. package/dist/diff-CxZo9pTq.js +37 -0
  109. package/dist/{diff-2VaeChzX.js → diff-DCePiN6M.js} +61 -55
  110. package/dist/doctor-CxiwSfqH.js +44 -0
  111. package/dist/doctor-DFjUxf2f.js +2361 -0
  112. package/dist/drizzle/index.d.ts +5 -3
  113. package/dist/drizzle/index.js +6 -14
  114. package/dist/elysia/index.d.ts +16 -13
  115. package/dist/elysia/index.js +14 -13
  116. package/dist/env-DJZrPjRi.js +8 -0
  117. package/dist/errors-BDUwg2qC.js +27 -0
  118. package/dist/{errors-Cz5zn0mW.js → errors-BKy0EfhN.js} +6 -10
  119. package/dist/errors-BWXBMaKK.d.ts +11 -0
  120. package/dist/{errors-DPdqI50v.d.ts → errors-C2PXIv4c.d.ts} +2 -2
  121. package/dist/errors-CWTY6uih.js +143 -0
  122. package/dist/evaluate-_R8QkWaf.js +1732 -0
  123. package/dist/evaluations-16UqqQ6W.d.ts +32 -0
  124. package/dist/{evaluations-tz6D9A2G.js → evaluations-DZ2CbV5k.js} +181 -32
  125. package/dist/eve/index.d.ts +12 -16
  126. package/dist/eve/index.js +23 -29
  127. package/dist/event-time-CsegxXxB.js +23 -0
  128. package/dist/expiry-D4_YKRKD.js +52 -0
  129. package/dist/express/index.d.ts +13 -10
  130. package/dist/express/index.js +14 -12
  131. package/dist/fastify/index.d.ts +26 -13
  132. package/dist/fastify/index.js +17 -36
  133. package/dist/fetch-adapter-g0ypLkID.js +120 -0
  134. package/dist/fetch-adapter-qKJBuRqy.d.ts +31 -0
  135. package/dist/fields-D9tPVUUS.js +203 -0
  136. package/dist/files-C5ZI27eV.js +124 -0
  137. package/dist/{files-DWUN9PzI.js → files-D_JIzUrP.js} +12 -3
  138. package/dist/{fixtures-ht28Cplr.js → fixtures-B7XrLeY7.js} +12 -12
  139. package/dist/flags-C3DktBDY.js +86 -0
  140. package/dist/{from-snapshot-CTLijvdm.js → from-snapshot-D2lZt4Dd.js} +78 -65
  141. package/dist/{generate-CH7ThJ14.js → generate-CNU1pIOo.js} +1 -3
  142. package/dist/grantee-Cn1HyUsI.js +254 -0
  143. package/dist/grantee-conditions-CcXf8hMM.js +271 -0
  144. package/dist/grantee-match-DHArqY82.js +142 -0
  145. package/dist/h3/index.d.ts +37 -0
  146. package/dist/h3/index.js +35 -0
  147. package/dist/headers-BIjfMaoC.js +8 -0
  148. package/dist/headers-CIbDTUTK.d.ts +7 -0
  149. package/dist/{helpers-H_KARDVC.js → helpers-DTcZOzhF.js} +47 -39
  150. package/dist/hono/index.d.ts +12 -9
  151. package/dist/hono/index.js +14 -13
  152. package/dist/{hosted-DJQw46hn.js → hosted-BZIAYvon.js} +64 -15
  153. package/dist/hosted-DBDX0M-P.d.ts +78 -0
  154. package/dist/{http-SO7qGttf.js → http-BBoKefeS.js} +35 -2
  155. package/dist/{http-DPuDaChb.d.ts → http-B_LphE5Y.d.ts} +1 -2
  156. package/dist/http-DXJ37RDA.js +46 -0
  157. package/dist/{http-BIhmLfCc.js → http-ujKm0JXE.js} +3 -26
  158. package/dist/{openapi-import-cmwetbzw.js → import-CNV7I2Dw.js} +30 -26
  159. package/dist/{rls-import-4lLW_pbb.js → import-DMmOG27O.js} +271 -128
  160. package/dist/index-BcHcPyIo.d.ts +110 -0
  161. package/dist/index-CaxrMD1A.d.ts +1 -0
  162. package/dist/index-Chrs5fQ-.d.ts +210 -0
  163. package/dist/index-CxGUswIC.d.ts +431 -0
  164. package/dist/index-D8EovfsP.d.ts +91 -0
  165. package/dist/index-DOVf7RJv.d.ts +900 -0
  166. package/dist/{index-C8z4RjQV.d.ts → index-SGdIQyzc.d.ts} +34 -16
  167. package/dist/index.d.ts +20 -14
  168. package/dist/index.js +33 -23
  169. package/dist/init-DeMYsnYJ.js +96 -0
  170. package/dist/init-GG6Jh8HD.js +95 -0
  171. package/dist/{instance-options-jARdwfPN.d.ts → instance-options-Omfd793B.d.ts} +2 -2
  172. package/dist/instance-snapshot-Cxq4ygFc.js +600 -0
  173. package/dist/instant-BluqDvyS.js +19 -0
  174. package/dist/internals-Dk8A8fX3.js +17 -0
  175. package/dist/{json-schema-BsAflUGW.js → json-schema-B-vAwlde.js} +46 -9
  176. package/dist/json-schema-CN_iLFH2.d.ts +40 -0
  177. package/dist/jwt/index.d.ts +18 -11
  178. package/dist/jwt/index.js +166 -145
  179. package/dist/{kernel-_RRHmnMY.js → kernel-5JatXyND.js} +120 -43
  180. package/dist/kysely/index.d.ts +5 -3
  181. package/dist/kysely/index.js +6 -14
  182. package/dist/{live-options-H2eG8dfJ.js → live-options-BaAFCIiu.js} +16 -3
  183. package/dist/load-BxEtwlBS.js +1 -0
  184. package/dist/{load-DhWEB9P1.js → load-DFS_ry0W.js} +31 -7
  185. package/dist/{load-jose-BL6LH4bL.js → load-jose-DZ4dnjri.js} +1 -4
  186. package/dist/login-Dfe5RlYk.js +68 -0
  187. package/dist/login-imhuwvn3.js +254 -0
  188. package/dist/manifest-C8IzW3Do.js +42 -0
  189. package/dist/manifest-CtKR3GXL.js +370 -0
  190. package/dist/manifest-json-CAGzls-C.js +9 -0
  191. package/dist/{manifest-uDS9y5de.d.ts → manifest-mx5ghSFM.d.ts} +9 -2
  192. package/dist/manifest-schema-C0kK_8V0.js +399 -0
  193. package/dist/{map-claims-Z4QZOiFF.js → map-claims-D3oRmTk0.js} +19 -25
  194. package/dist/{map-error-pgUWNNtG.js → map-error-TCAdw-eW.js} +5 -5
  195. package/dist/{markers-B0hYLvMD.js → markers-C6joDI3o.js} +8 -3
  196. package/dist/mcp/index.d.ts +36 -9
  197. package/dist/mcp/index.js +476 -448
  198. package/dist/{rls-migrate-CN4TlJTO.js → migrate-BShP7Vf4.js} +119 -20
  199. package/dist/nest/index.d.ts +12 -9
  200. package/dist/nest/index.js +20 -20
  201. package/dist/next/index.d.ts +40 -20
  202. package/dist/next/index.js +37 -39
  203. package/dist/next/plugin.d.ts +1 -1
  204. package/dist/next/plugin.js +2 -2
  205. package/dist/node/index.d.ts +10 -10
  206. package/dist/node/index.js +7 -9
  207. package/dist/ocsf-BFp-PZZA.js +126 -0
  208. package/dist/openai/index.d.ts +9 -16
  209. package/dist/openai/index.js +18 -25
  210. package/dist/openapi/index.d.ts +3 -3
  211. package/dist/openapi/index.js +1 -1
  212. package/dist/{openapi-BqRBvAng.js → openapi-B7HZ0f-r.js} +9 -12
  213. package/dist/{openapi-CqqEbHsL.js → openapi-DTaEmTSW.js} +23 -26
  214. package/dist/openapi-ahr8rHu3.js +138 -0
  215. package/dist/operation-findings-DgATDpvh.js +36 -0
  216. package/dist/operations-CxybZErY.d.ts +59 -0
  217. package/dist/orpc/index.d.ts +13 -10
  218. package/dist/orpc/index.js +23 -20
  219. package/dist/otel/index.d.ts +3 -2
  220. package/dist/otel/index.js +53 -27
  221. package/dist/output-Dyw8fyPF.js +88 -0
  222. package/dist/output-files-B3IZJksC.js +1 -0
  223. package/dist/output-files-DhRBBE4n.js +138 -0
  224. package/dist/{rls-fields-CZOMlwHl.js → ownership-BatFgAA4.js} +2393 -2349
  225. package/dist/{package-root-zGkxO3oN.js → package-root-Dk_ETdkp.js} +4 -3
  226. package/dist/{parse-BuyjxhZV.js → parse-Cxq0WxrA.js} +3 -3
  227. package/dist/{parse-local-manifest-BrMozJCo.js → parse-local-manifest-CVSs6J9I.js} +2 -4
  228. package/dist/{parse-local-manifest-JLnaBH0S.d.ts → parse-local-manifest-DgqtruPn.d.ts} +1 -1
  229. package/dist/parse-request-D_tUXG6M.js +26 -0
  230. package/dist/paths-DXSHAMIa.js +42 -0
  231. package/dist/pdp/index.d.ts +7 -3
  232. package/dist/pdp/index.js +47 -29
  233. package/dist/{peer-BOr_kJE1.js → peer-C8swJ2GH.js} +23 -4
  234. package/dist/peer-CRvC7Hg1.js +1 -0
  235. package/dist/permdock-B9JxkBwC.js +868 -0
  236. package/dist/permdock-D7eeLJER.d.ts +502 -0
  237. package/dist/permission-registry-Br4jSNVi.js +385 -0
  238. package/dist/permissions-B-wCP5ZC.js +30 -0
  239. package/dist/{permissions-RJrovw98.js → permissions-CZKiUfFM.js} +4 -3
  240. package/dist/{permissions-CDgvKG5L.d.ts → permissions-oEWfl-kl.d.ts} +1 -2
  241. package/dist/policies-CO1oOymN.js +295 -0
  242. package/dist/{policy-D2W7uv19.d.ts → policy-Czo4n3Hs.d.ts} +2 -2
  243. package/dist/policy-DLZJ5gAp.js +399 -0
  244. package/dist/policy-from-catalog-DzhEc3Y9.js +450 -0
  245. package/dist/policy-module-CTlwMvLI.js +89 -0
  246. package/dist/{policy-IB6yxpC3.d.ts → policy-types-DzwivBgR.d.ts} +939 -1057
  247. package/dist/postgrest-CW0IqC-U.js +566 -0
  248. package/dist/postgrest-NUqZT-RB.d.ts +100 -0
  249. package/dist/powersync-BHfuehf3.js +62 -0
  250. package/dist/powersync-CbzkqL_M.js +1 -0
  251. package/dist/{powersync-Dv1_aWF7.js → powersync-bYUDLOAO.js} +30 -32
  252. package/dist/preset/index.d.ts +146 -0
  253. package/dist/preset/index.js +1 -0
  254. package/dist/preset-DZdU0tne.js +1768 -0
  255. package/dist/principal-source-pHneukrx.js +103 -0
  256. package/dist/prisma/index.d.ts +6 -3
  257. package/dist/prisma/index.js +6 -12
  258. package/dist/{problem-B43ztKIm.js → problem-CTviyH5L.js} +18 -27
  259. package/dist/{problem-details-DX075l9V.d.ts → problem-details-DXlt-vks.d.ts} +1 -1
  260. package/dist/{problem-details-_AMOYz-w.js → problem-details-cn5X30gZ.js} +45 -42
  261. package/dist/problem-types-CJ2325SZ.js +5 -0
  262. package/dist/{prompt-CXYhLfsS.js → prompt-DfZLJLIn.js} +2 -2
  263. package/dist/protected-DEPHc2xV.d.ts +38 -0
  264. package/dist/{protected-utU-SLuy.js → protected-DfjY5mLA.js} +37 -8
  265. package/dist/{provider-CSQd7m92.js → provider-CC-u3bYP.js} +23 -10
  266. package/dist/{provider-DZY281jO.d.ts → provider-DMVt6yYn.d.ts} +1 -1
  267. package/dist/{provider-store-Cfbvo4DE.js → provider-store-B5Yrkhzr.js} +6 -3
  268. package/dist/pull-BgIfno6w.js +256 -0
  269. package/dist/pull-ByOks_Tg.js +1 -0
  270. package/dist/push-CmFVBOeI.js +116 -0
  271. package/dist/pushed-policy-BImMTTIM.d.ts +57 -0
  272. package/dist/pushed-policy-DobP7AHI.js +238 -0
  273. package/dist/react/index.d.ts +8 -8
  274. package/dist/react/index.js +6 -6
  275. package/dist/react/provider-client.d.ts +1 -1
  276. package/dist/react/provider-client.js +1 -2
  277. package/dist/react-native/index.d.ts +24 -63
  278. package/dist/react-native/index.js +45 -27
  279. package/dist/{refs-KYb4ntaz.js → refs-K6eWUJ0H.js} +1 -1
  280. package/dist/relation-walk-3OyDBF0S.js +186 -0
  281. package/dist/relations-BnCWnJGI.js +163 -0
  282. package/dist/renames-CGj7YwcQ.js +175 -0
  283. package/dist/{replay-CYyiLiwO.d.ts → replay-D7iKcLFe.d.ts} +1 -1
  284. package/dist/{replay-BsOyTrdV.js → replay-Du1tJjG7.js} +2 -1
  285. package/dist/request-context-BTRTG7OT.js +71 -0
  286. package/dist/request-context-C2_1lchh.d.ts +5 -0
  287. package/dist/request-schema-CMreVuFM.js +148 -0
  288. package/dist/resend/index.d.ts +126 -0
  289. package/dist/resend/index.js +379 -0
  290. package/dist/resource-relations-D_jw0BFx.js +243 -0
  291. package/dist/retire-CALjIQ7e.js +240 -0
  292. package/dist/{revocations-Cy06JNx2.d.ts → revocations-R07lFBnX.d.ts} +2 -0
  293. package/dist/rls-BA8an5Ap.js +336 -0
  294. package/dist/{rls-DiinlRML.js → rls-j6t43t7n.js} +1066 -1068
  295. package/dist/role-builder-CXbis5-X.js +623 -0
  296. package/dist/{rpc-DL9Sqvb1.js → rpc-aPyNi6tA.js} +18 -8
  297. package/dist/run-CNsApDpd.js +1 -0
  298. package/dist/run-DOfMtc9V.js +723 -0
  299. package/dist/run-ticket-BjhTOi6u.d.ts +124 -0
  300. package/dist/run-ticket-sxFI6LAk.js +337 -0
  301. package/dist/{runtime-CB8gQFvS.js → runtime-D3VTAiCA.js} +1 -1
  302. package/dist/{saas-DhpJjnBA.js → saas-FO-Q8oj0.js} +18 -15
  303. package/dist/scan-BOI5tJ-6.js +29 -0
  304. package/dist/{schema-D3MnDMxa.js → schema-B4v0Qrac.js} +106 -10
  305. package/dist/schema-yLuBWWsh.js +130 -0
  306. package/dist/scim/index.d.ts +2 -2
  307. package/dist/scim/index.js +1 -2
  308. package/dist/{scim-BFGBBAqR.js → scim-ClHtpyV3.js} +213 -87
  309. package/dist/{scopes-CVdPrWN-.js → scopes-CUPSjo9q.js} +20 -7
  310. package/dist/server/index.d.ts +13 -134
  311. package/dist/server/index.js +13 -10
  312. package/dist/server-DqCT4CgZ.js +453 -0
  313. package/dist/{create-B1d519XK.d.ts → server-types-BLd4MnBX.d.ts} +89 -70
  314. package/dist/{sha256-BO0swRXL.js → sha256-D9ihqmvd.js} +8 -1
  315. package/dist/shared-CD11nBbC.js +304 -0
  316. package/dist/{shared-DRu8VFVM.js → shared-DvvFzYXe.js} +8 -9
  317. package/dist/signals-D3NcTKUS.js +32 -0
  318. package/dist/sink-BEZSlMS_.js +957 -0
  319. package/dist/sink-Bj_lDUDq.d.ts +225 -0
  320. package/dist/{skills-Biq5uup3.js → skills-B6lVdD_W.js} +16 -8
  321. package/dist/skills-CTYwkl44.js +51 -0
  322. package/dist/snapshot-CXUWfsNy.js +269 -0
  323. package/dist/{snapshot-cache-D6jLelln.js → snapshot-cache-DZHQ0KF6.js} +11 -5
  324. package/dist/{snapshot-cache-B-LxUahj.d.ts → snapshot-cache-DqK9eDmM.d.ts} +7 -5
  325. package/dist/solid/index.d.ts +24 -25
  326. package/dist/solid/index.js +41 -11
  327. package/dist/solid-start/index.d.ts +52 -0
  328. package/dist/solid-start/index.js +49 -0
  329. package/dist/{sources-BdOYLw9j.d.ts → sources-BV9j0DeZ.d.ts} +11 -13
  330. package/dist/{sources-4p0-4xQm.js → sources-vs5dGOsS.js} +147 -142
  331. package/dist/sql-B5T1IL83.js +55 -0
  332. package/dist/src-DLfUWFAI.js +1851 -0
  333. package/dist/ssf/index.d.ts +4 -4
  334. package/dist/ssf/index.js +440 -106
  335. package/dist/standard-webhooks-6lg8v_is.d.ts +88 -0
  336. package/dist/standard-webhooks-DgFFD-Ga.js +228 -0
  337. package/dist/storage-C2bWdvJH.js +132 -0
  338. package/dist/{store-DMAWwAJV.js → store-4u_hxjWa.js} +42 -55
  339. package/dist/{store-options-ByhZq1jV.js → store-options-BqEakYRa.js} +38 -24
  340. package/dist/{stores-BT2pSCub.js → stores-BbsD4fAR.js} +7 -3
  341. package/dist/stores-ClZUgeoP.d.ts +30 -0
  342. package/dist/{stream-D1RXubw2.d.ts → stream-7-xmnf3U.d.ts} +2 -2
  343. package/dist/{stream-DDpvynSB.js → stream-CvdUS9V1.js} +10 -2
  344. package/dist/style-DiKWnAvn.js +1 -0
  345. package/dist/{style-CTm1AXDT.js → style-Uao76wO7.js} +3 -2
  346. package/dist/subject-BGoM5o8B.js +17 -0
  347. package/dist/{subject-settings-BwBmCdTR.js → subject-settings-CkEwrw3W.js} +23 -5
  348. package/dist/supabase/index.d.ts +23 -106
  349. package/dist/supabase/index.js +5 -4
  350. package/dist/supabase/middleware.d.ts +13 -6
  351. package/dist/supabase/middleware.js +16 -11
  352. package/dist/supabase-9pqI57pW.js +92 -0
  353. package/dist/{supabase-C0qESOa-.js → supabase-Dxlp8A94.js} +124 -247
  354. package/dist/supabase-hook-CXcGpHqq.js +1 -0
  355. package/dist/{supabase-hook-ntETYCQu.js → supabase-hook-DdDQhMlw.js} +1659 -819
  356. package/dist/{supautils-u8jXTGrt.js → supautils-B6HYL9eL.js} +2 -2
  357. package/dist/support-session-C6xJQYut.js +158 -0
  358. package/dist/svelte/Protected.svelte +11 -4
  359. package/dist/svelte/index.d.ts +7 -7
  360. package/dist/svelte/index.js +26 -12
  361. package/dist/svelte/runtime.d.ts +10 -3
  362. package/dist/svelte/runtime.js +4 -3
  363. package/dist/svelte/source.d.ts +7 -7
  364. package/dist/svelte/source.js +5 -5
  365. package/dist/sveltekit/index.d.ts +51 -0
  366. package/dist/sveltekit/index.js +27 -0
  367. package/dist/tanstack-start/index.d.ts +51 -0
  368. package/dist/tanstack-start/index.js +40 -0
  369. package/dist/target-Bw37TFNA.js +51 -0
  370. package/dist/{validity-uOp8UpYn.js → tenancy-DN2QAx9z.js} +6 -42
  371. package/dist/terminal/index.d.ts +11 -9
  372. package/dist/terminal/index.js +36 -316
  373. package/dist/testing/index.d.ts +391 -106
  374. package/dist/testing/index.js +4574 -1286
  375. package/dist/testing/saas/index.d.ts +9 -8
  376. package/dist/testing/saas/index.js +2 -2
  377. package/dist/testing/saas/permissions.d.ts +1 -1
  378. package/dist/testing/saas/permissions.js +1 -2
  379. package/dist/text-BMFRfBqc.js +8 -0
  380. package/dist/{text-diff-BdkkYSbi.js → text-diff-BQcUapOb.js} +1 -1
  381. package/dist/thenable-yD7SabqG.js +31 -0
  382. package/dist/time-DkWjdL98.js +71 -0
  383. package/dist/{token-CIWxJOCh.js → token-BLZcjQgt.js} +15 -6
  384. package/dist/tool-refusal-CMLN5xhn.js +41 -0
  385. package/dist/trpc/index.d.ts +12 -9
  386. package/dist/trpc/index.js +18 -17
  387. package/dist/{types-DbjRN55U.d.ts → types-5Ut_pbKy.d.ts} +141 -13
  388. package/dist/types-BNORmDM8.d.ts +172 -0
  389. package/dist/types-BjV-fqcA.d.ts +57 -0
  390. package/dist/{types-QCuYJh4q.d.ts → types-BqAKcRNW.d.ts} +2 -1
  391. package/dist/types-C8-KNsFf.d.ts +107 -0
  392. package/dist/{types-aqOHTHcp.d.ts → types-CCpc2Dcv.d.ts} +77 -17
  393. package/dist/{types-Dnemwd77.d.ts → types-CZTnPFzM.d.ts} +50 -11
  394. package/dist/{types-C97IskBw.d.ts → types-CdlxsYQh.d.ts} +23 -11
  395. package/dist/{types-DxiCGmmd.d.ts → types-ClZaWzfb.d.ts} +9 -6
  396. package/dist/types-DX0LaKTb.d.ts +157 -0
  397. package/dist/types-DiQjupG2.d.ts +332 -0
  398. package/dist/types-DqzsnlSA.js +67 -0
  399. package/dist/types-_sHy8BQf.d.ts +65 -0
  400. package/dist/types-fbZ7JEXr.d.ts +89 -0
  401. package/dist/types-tIgIeIKJ.d.ts +66 -0
  402. package/dist/unplugin/index.d.ts +1 -1
  403. package/dist/unplugin/index.js +2 -2
  404. package/dist/usage-CHOtwL19.js +1 -0
  405. package/dist/usage-DHtE8j4E.js +32 -0
  406. package/dist/{usage-ItS7nLcl.js → usage-T5mXq98v.js} +56 -13
  407. package/dist/{validation-error-Ba264OaJ.d.ts → validation-error-Bg5Tpluk.d.ts} +1 -1
  408. package/dist/{validation-error-CnjZ4t92.js → validation-error-ZfUHbKvf.js} +1 -1
  409. package/dist/validity-CZ7-y0Cj.js +79 -0
  410. package/dist/{verifier-BxBo6I44.js → verifier-DHuh-okk.js} +68 -21
  411. package/dist/verify-DbCL9bnB.js +1770 -0
  412. package/dist/{version-BvacVTZR.js → version-CEbQ5UeM.js} +4 -3
  413. package/dist/version-DXkYUISx.js +1 -0
  414. package/dist/{views-Soe7bGSC.js → views-DTIIO-oQ.js} +41 -2
  415. package/dist/{permissions-DttnqqxC.d.ts → vocabulary-D6lPdb4Z.d.ts} +120 -29
  416. package/dist/vue/index.d.ts +25 -21
  417. package/dist/vue/index.js +25 -9
  418. package/dist/waiter-BGUtGYoU.js +67 -0
  419. package/dist/waiter-CKy4MQSY.d.ts +36 -0
  420. package/dist/watch-Cb-NcaUw.js +1 -0
  421. package/dist/{watch-DVBJ9cBq.js → watch-CszoTJMq.js} +47 -8
  422. package/dist/webmcp/index.d.ts +2 -2
  423. package/dist/webmcp/index.js +13 -37
  424. package/dist/where-scope-Dv-WTP-w.js +306 -0
  425. package/dist/who-can-D0QoYbEb.js +364 -0
  426. package/dist/wire-delegation-Cv3W2eaM.js +36 -0
  427. package/dist/wire-denial-C7PaVYEM.js +27 -0
  428. package/dist/workflow/index.d.ts +5 -0
  429. package/dist/workflow/index.js +223 -0
  430. package/dist/workflow-sdk/index.d.ts +56 -0
  431. package/dist/workflow-sdk/index.js +78 -0
  432. package/dist/wrap-Bd1Tejur.d.ts +15 -0
  433. package/dist/wrap-gX61EtpB.js +27 -0
  434. package/package.json +140 -41
  435. package/schemas/access-event-v1.json +118 -0
  436. package/schemas/approval-request-v1.json +34 -1
  437. package/schemas/approval-signature-v1.json +94 -0
  438. package/schemas/automation-event-v1.json +113 -0
  439. package/schemas/capability-v1.json +84 -0
  440. package/schemas/catalog-event-v1.json +87 -0
  441. package/schemas/catalog-v1.json +129 -12
  442. package/schemas/cli-commands-v1.json +164 -0
  443. package/schemas/cli-result-v1.json +96 -0
  444. package/schemas/cloud-api-v1.json +5407 -0
  445. package/schemas/connector-v1.json +408 -0
  446. package/schemas/credential-event-v1.json +81 -0
  447. package/schemas/credential-v1.json +134 -0
  448. package/schemas/decision-event-v1.json +288 -0
  449. package/schemas/delivery-event-v1.json +117 -0
  450. package/schemas/directory-event-v1.json +85 -0
  451. package/schemas/evidence-export-v1.json +54 -0
  452. package/schemas/membership-event-v1.json +93 -0
  453. package/schemas/policy-v1.json +68 -0
  454. package/schemas/pushed-policy-v1.json +236 -0
  455. package/schemas/run-v1.json +162 -0
  456. package/schemas/snapshot-v1.json +138 -0
  457. package/schemas/supabase-claims-v1.json +4 -4
  458. package/schemas/supabase-manifest-v1.json +5 -1
  459. package/schemas/support-session-v1.json +111 -0
  460. package/skills/permdock/SKILL.md +16 -12
  461. package/skills/permdock-agents/SKILL.md +40 -23
  462. package/skills/permdock-agents/references/operations-automations-chat.md +221 -0
  463. package/skills/permdock-agents/references/runtimes.md +22 -18
  464. package/skills/permdock-approvals/SKILL.md +29 -13
  465. package/skills/permdock-approvals/references/delivery-and-waiters.md +172 -0
  466. package/skills/permdock-approvals/references/stores-and-resume.md +21 -7
  467. package/skills/permdock-audit/SKILL.md +3 -3
  468. package/skills/permdock-credentials/SKILL.md +5 -5
  469. package/skills/permdock-credentials/references/tokens-keys-links.md +19 -10
  470. package/skills/permdock-data/SKILL.md +6 -6
  471. package/skills/permdock-data/references/queries-and-rls.md +13 -8
  472. package/skills/permdock-data/references/relationships.md +3 -3
  473. package/skills/permdock-tenancy/SKILL.md +20 -7
  474. package/skills/permdock-tenancy/references/contacts-and-support-sessions.md +122 -0
  475. package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +6 -4
  476. package/skills/permdock-wire/SKILL.md +18 -12
  477. package/skills/permdock-wire/references/adapters.md +146 -50
  478. package/skills/permdock-wire/references/policy-options.md +15 -6
  479. package/skills/permdock-wire/references/presets-and-recipes.md +58 -0
  480. package/dist/approvals-DbYAuNkG.js +0 -224
  481. package/dist/arazzo-C9chp3ST.js +0 -54
  482. package/dist/bind-C_ob3LKa.d.ts +0 -25
  483. package/dist/catalog-CRW5Mx_B.js +0 -2
  484. package/dist/catalog-CYj-mX2O.js +0 -48
  485. package/dist/catalog-DWF5cYqB.js +0 -55
  486. package/dist/cloud-CfwZ39Rl.js +0 -50
  487. package/dist/cloud-DWLXO2af.js +0 -118
  488. package/dist/collect-CHB22Sx4.js +0 -83
  489. package/dist/collect-DSWOk19R.js +0 -2
  490. package/dist/commands-BeaGNj_o.js +0 -97
  491. package/dist/config-ir40y8m0.js +0 -36
  492. package/dist/create-CMwIl-w2.js +0 -253
  493. package/dist/delegation-D8pUEuce.js +0 -103
  494. package/dist/diff-C9RDjjhs.js +0 -48
  495. package/dist/doctor-Djh6JDEk.js +0 -53
  496. package/dist/doctor-DvH0IQff.js +0 -1194
  497. package/dist/doctor-collect-CjdO0wQX.js +0 -665
  498. package/dist/duration-xK2jGFVc.js +0 -25
  499. package/dist/errors-CWfoNg9N.js +0 -47
  500. package/dist/errors-DRnGZHzF.js +0 -30
  501. package/dist/evaluation-items-CfCCejQd.js +0 -40
  502. package/dist/expiry-BoBJ8Tvc.js +0 -7
  503. package/dist/fields-BMl1RxoX.js +0 -26
  504. package/dist/grantee-Cv5Sogfv.js +0 -602
  505. package/dist/headers-BZSDieNT.js +0 -6
  506. package/dist/headers-Cf-zWvsO.d.ts +0 -6
  507. package/dist/ids-DC4V4CFu.js +0 -18
  508. package/dist/index-0nNqHspG.d.ts +0 -6
  509. package/dist/index-BNc7Wer_.d.ts +0 -483
  510. package/dist/index-C7Tw7MaW.d.ts +0 -201
  511. package/dist/instance-options-Dhhcnm3y.js +0 -22
  512. package/dist/load-DwJUafYN.js +0 -2
  513. package/dist/manifest-iaoBXHKc.js +0 -783
  514. package/dist/map-AcxK9o_D.js +0 -147
  515. package/dist/may-use-DndQ5tQ-.js +0 -77
  516. package/dist/openapi-CQTsgKoB.js +0 -164
  517. package/dist/permdock-CbgvLnuo.js +0 -3479
  518. package/dist/permissions-DVoF6dMt.js +0 -662
  519. package/dist/policy-xyWg7QdR.js +0 -1122
  520. package/dist/powersync-CrBX8hY6.js +0 -2
  521. package/dist/powersync-DE19b9dT.js +0 -62
  522. package/dist/protected-BdnIEFkY.d.ts +0 -27
  523. package/dist/protected-xAr24FEC.d.ts +0 -40
  524. package/dist/relations-cjOL01hZ.js +0 -505
  525. package/dist/rls-P-BeBx0n.js +0 -238
  526. package/dist/rls-graph-CHwx0V8q.js +0 -435
  527. package/dist/rls-ownership-DcYlZ09B.js +0 -843
  528. package/dist/rls-shared-Cewd_-zI.js +0 -495
  529. package/dist/rls-verify-CMv9H3wV.js +0 -746
  530. package/dist/run-BWc9qqvE.js +0 -174
  531. package/dist/server-DlZ28Oz5.js +0 -268
  532. package/dist/sink-B1fZzIMf.d.ts +0 -104
  533. package/dist/sink-Bd9PSyfq.js +0 -141
  534. package/dist/skills-C5CbhhpG.js +0 -56
  535. package/dist/snapshot-Enxd0n-s.js +0 -975
  536. package/dist/sql-xdg5f4Fi.js +0 -27
  537. package/dist/src-BDwEZWrZ.js +0 -568
  538. package/dist/store-jOBYpiXC.d.ts +0 -36
  539. package/dist/stores-C0IMQrGI.d.ts +0 -52
  540. package/dist/subject-C6dLxqHU.js +0 -24
  541. package/dist/supabase-config-Bj3iDH2I.js +0 -472
  542. package/dist/supabase-hook-gd3s8bxB.js +0 -2
  543. package/dist/supabase-s4o9s1O1.js +0 -83
  544. package/dist/thenable-okc2xDsj.js +0 -10
  545. package/dist/types-BnIEz1sU.d.ts +0 -48
  546. package/dist/types-Bvc4oWT6.d.ts +0 -9
  547. package/dist/types-CKNSyIf_.d.ts +0 -52
  548. package/dist/types-Cq_H8N_X.d.ts +0 -197
  549. package/dist/usage-B0YuTQRO.js +0 -42
  550. package/dist/usage-DorAJiU_.js +0 -2
  551. package/dist/vocabulary-DA8a8zif.d.ts +0 -56
  552. package/dist/watch-BwxLTYMZ.js +0 -2
@@ -0,0 +1,364 @@
1
+ import { t as compact } from "./compact-CAf557ZB.js";
2
+ import { n as freezeDeep } from "./freeze-CrU8nQeX.js";
3
+ import { r as ownGet } from "./paths-DXSHAMIa.js";
4
+ import { n as internalsOf } from "./internals-Dk8A8fX3.js";
5
+ import { a as getResource } from "./permission-registry-Br4jSNVi.js";
6
+ import { a as expandRelation, c as isEdgeRelation, l as isFieldRelation, u as isPrincipalRelation } from "./resource-relations-D_jw0BFx.js";
7
+ import { s as instantAt } from "./time-DkWjdL98.js";
8
+ import { a as normalizeMemberships, c as rootScope, d as scopeList, o as resolveScope } from "./scopes-CUPSjo9q.js";
9
+ import { o as flattenGrantee } from "./grantee-Cn1HyUsI.js";
10
+ import { r as relationCondition } from "./grantee-conditions-CcXf8hMM.js";
11
+ import { c as nowSeconds, p as scopeField } from "./tenancy-DN2QAx9z.js";
12
+ import { t as byCodePoint } from "./compare-pfyVnBjE.js";
13
+ import { C as emptyListeners, t as evaluate } from "./evaluate-_R8QkWaf.js";
14
+ import { n as relationId, t as pendingRelations } from "./relations-BnCWnJGI.js";
15
+ import { t as relationWalk } from "./relation-walk-3OyDBF0S.js";
16
+ //#region src/core/who-can.ts
17
+ const MAX_ROUNDS = 48;
18
+ async function settle(cache) {
19
+ for (let round = 0; round < MAX_ROUNDS; round += 1) {
20
+ const pending = pendingRelations(cache);
21
+ if (pending.length === 0) return;
22
+ await Promise.all(pending);
23
+ }
24
+ }
25
+ /** The holders on each instance a graph relation reads, or `undefined` when the graph cannot say. */
26
+ async function walkHolders(condition, row, reader, cache) {
27
+ let walk = relationWalk(condition, row, reader);
28
+ if (walk === "relation-unavailable") {
29
+ await settle(cache);
30
+ walk = relationWalk(condition, row, reader);
31
+ }
32
+ if (walk === void 0) return [];
33
+ if (walk === "relation-depth" || walk === "relation-unavailable") return;
34
+ const { ids } = walk;
35
+ const read = () => ids.map((id) => reader.holders({
36
+ resource: condition.resource,
37
+ id,
38
+ relation: condition.relation
39
+ }));
40
+ let answers = read();
41
+ if (answers.includes("pending")) {
42
+ await settle(cache);
43
+ answers = read();
44
+ }
45
+ const out = [];
46
+ for (const [index, answer] of answers.entries()) {
47
+ const id = ids[index];
48
+ if (answer === "pending" || answer === "failed" || id === void 0) return;
49
+ out.push({
50
+ id,
51
+ holders: answer
52
+ });
53
+ }
54
+ return out;
55
+ }
56
+ async function discoverRole(item, allow, ctx) {
57
+ if (typeof item.scope !== "string" || item.scope === "global") {
58
+ ctx.incomplete();
59
+ return;
60
+ }
61
+ const key = scopeField(ctx.resource, item.scope, ctx.scopes);
62
+ const id = key === void 0 ? void 0 : relationId(ownGet(ctx.row, key));
63
+ if (id === void 0) return;
64
+ const members = await ctx.list(item.scope, id);
65
+ if (members === null) {
66
+ ctx.incomplete();
67
+ return;
68
+ }
69
+ for (const member of members.filter((entry) => entry.membership.roles.includes(item.role))) ctx.add(member.id, allow ? {
70
+ kind: "role",
71
+ role: item.role,
72
+ membership: member.membership
73
+ } : void 0, member.membership);
74
+ }
75
+ function holderVia(holder, at, share, group) {
76
+ if (!share) return {
77
+ kind: "relation",
78
+ ...at
79
+ };
80
+ return compact({
81
+ kind: "share",
82
+ ...at,
83
+ expiresAt: holder.expiresAt,
84
+ group
85
+ });
86
+ }
87
+ /**
88
+ * Principals holding `group`'s relation, through at most `budget` more groups
89
+ * of its resource; `undefined` when a read failed. `memo` keeps each group's
90
+ * members per budget across one discovery, so a group shared by many paths is
91
+ * read once; a result cut short by a cycle is path-specific and not kept.
92
+ */
93
+ async function groupMembers(group, ctx, budget, seen, memo) {
94
+ const key = JSON.stringify([
95
+ group.resource,
96
+ group.id,
97
+ group.relation
98
+ ]);
99
+ const memoKey = `${budget}:${key}`;
100
+ const known = memo.get(memoKey);
101
+ if (known !== void 0) return {
102
+ members: known,
103
+ cut: false
104
+ };
105
+ let holders = ctx.reader.holders(group);
106
+ if (holders === "pending") {
107
+ await settle(ctx.cache);
108
+ holders = ctx.reader.holders(group);
109
+ }
110
+ if (holders === "pending" || holders === "failed") return;
111
+ const path = new Set(seen).add(key);
112
+ const out = /* @__PURE__ */ new Set();
113
+ let cut = false;
114
+ for (const holder of holders) {
115
+ if ("principal" in holder) {
116
+ out.add(holder.principal.id);
117
+ continue;
118
+ }
119
+ const nested = JSON.stringify([
120
+ holder.group.resource,
121
+ holder.group.id,
122
+ holder.group.relation
123
+ ]);
124
+ const same = holder.group.resource === group.resource;
125
+ if (path.has(nested)) {
126
+ cut = true;
127
+ continue;
128
+ }
129
+ if (same && budget <= 0) continue;
130
+ const walk = await groupMembers(holder.group, ctx, same ? budget - 1 : 16, path, memo);
131
+ if (walk === void 0) return;
132
+ cut ||= walk.cut;
133
+ for (const member of walk.members) out.add(member);
134
+ }
135
+ const members = [...out];
136
+ if (!cut) memo.set(memoKey, members);
137
+ return {
138
+ members,
139
+ cut
140
+ };
141
+ }
142
+ async function discoverGraph(condition, allow, ctx) {
143
+ const nodes = await walkHolders(condition, ctx.row, ctx.reader, ctx.cache);
144
+ if (nodes === void 0) {
145
+ ctx.incomplete();
146
+ return;
147
+ }
148
+ const node = ctx.policy.resources.get(condition.resource);
149
+ const memo = /* @__PURE__ */ new Map();
150
+ for (const entry of nodes) for (const holder of entry.holders) {
151
+ const at = {
152
+ resource: condition.resource,
153
+ relation: holder.relation,
154
+ id: entry.id
155
+ };
156
+ const share = isEdgeRelation(node?.relations[holder.relation]);
157
+ if ("principal" in holder) {
158
+ ctx.add(holder.principal.id, allow ? holderVia(holder, at, share) : void 0);
159
+ continue;
160
+ }
161
+ const walk = await groupMembers(holder.group, ctx, holder.group.resource === condition.resource ? 15 : 16, /* @__PURE__ */ new Set(), memo);
162
+ if (walk === void 0) {
163
+ ctx.incomplete();
164
+ continue;
165
+ }
166
+ for (const member of walk.members) ctx.add(member, allow ? holderVia(holder, at, share, holder.group) : void 0);
167
+ }
168
+ }
169
+ async function discoverRelation(item, allow, ctx, expanded = false) {
170
+ const condition = relationCondition(item, ctx.resource, ctx.scopes, { resources: ctx.policy.resources });
171
+ if (condition?.op === "related") {
172
+ await discoverGraph(condition, allow, ctx);
173
+ return;
174
+ }
175
+ const spec = ctx.resource?.relations[item.relation];
176
+ if (spec?.includes !== void 0 && !expanded) {
177
+ for (const name of expandRelation(ctx.resource, item.relation)) await discoverRelation({
178
+ ...item,
179
+ relation: name
180
+ }, allow, ctx, true);
181
+ return;
182
+ }
183
+ const via = allow ? {
184
+ kind: "relation",
185
+ resource: ctx.permission.resource,
186
+ relation: item.relation,
187
+ id: relationId(ownGet(ctx.row, ctx.resource?.id ?? "id")) ?? ""
188
+ } : void 0;
189
+ if (isFieldRelation(spec) && spec.memberOf !== void 0) {
190
+ const scope = resolveScope(ctx.scopes, spec.memberOf);
191
+ const id = relationId(ownGet(ctx.row, spec.field));
192
+ const members = scope === void 0 || id === void 0 ? [] : await ctx.list(scope, id);
193
+ if (members === null) {
194
+ ctx.incomplete();
195
+ return;
196
+ }
197
+ for (const member of members) ctx.add(member.id, via, member.membership);
198
+ return;
199
+ }
200
+ const column = isFieldRelation(spec) ? spec.field : isPrincipalRelation(spec) ? spec.principal : void 0;
201
+ const holder = column === void 0 ? void 0 : relationId(ownGet(ctx.row, column));
202
+ if (holder !== void 0) ctx.add(holder, via);
203
+ }
204
+ function discover(grant, item, ctx) {
205
+ const allow = grant.effect === "allow";
206
+ switch (item.kind) {
207
+ case "role": return discoverRole(item, allow, ctx);
208
+ case "relation": return discoverRelation(item, allow, ctx);
209
+ case "anyone":
210
+ case "authenticated":
211
+ case "plan":
212
+ case "actor":
213
+ case "assurance":
214
+ case "inherit":
215
+ ctx.incomplete();
216
+ return Promise.resolve();
217
+ default: return unknownKind(item, ctx);
218
+ }
219
+ }
220
+ /** Holders of a grantee kind this build does not know cannot be listed. */
221
+ function unknownKind(_item, ctx) {
222
+ ctx.incomplete();
223
+ return Promise.resolve();
224
+ }
225
+ function memberLister(source, scopes) {
226
+ const listed = /* @__PURE__ */ new Map();
227
+ const load = async (scope, id) => {
228
+ if (source?.list === void 0) return null;
229
+ try {
230
+ return (await source.list({
231
+ scope,
232
+ id
233
+ })).flatMap((entry) => typeof entry.principal?.id === "string" ? normalizeMemberships([entry.membership], scopes).map((membership) => ({
234
+ id: entry.principal.id,
235
+ membership
236
+ })) : []);
237
+ } catch {
238
+ return null;
239
+ }
240
+ };
241
+ return (scope, id) => {
242
+ const key = JSON.stringify([scope, id]);
243
+ const known = listed.get(key) ?? load(scope, id);
244
+ listed.set(key, known);
245
+ return known;
246
+ };
247
+ }
248
+ /**
249
+ * Who holds `permission` on `resource` for the instance's policy and how
250
+ * (role, relation or share), from `MembershipSource.list` and
251
+ * `RelationSource.related`. It lists and never grants; `complete: false`
252
+ * means some holders could not be listed. An instance built from a
253
+ * snapshot answers an empty, incomplete list.
254
+ */
255
+ function whoCan(permdock, permission, resource) {
256
+ const internals = internalsOf(permdock);
257
+ if (internals === void 0) return Promise.resolve(freezeDeep({
258
+ permission: permission.key,
259
+ holders: [],
260
+ complete: false
261
+ }));
262
+ return whoCanWith({
263
+ policy: internals.policy,
264
+ permission,
265
+ row: resource,
266
+ memberships: internals.env.memberships,
267
+ reader: internals.relations,
268
+ cache: internals.relationCache,
269
+ customGrants: internals.customGrants,
270
+ team: internals.team
271
+ });
272
+ }
273
+ async function whoCanWith(input) {
274
+ const { policy, permission, row } = input;
275
+ if (permission.kind !== "instance" || row === null || typeof row !== "object") return freezeDeep({
276
+ permission: permission.key,
277
+ holders: [],
278
+ complete: false
279
+ });
280
+ const scopes = scopeList(policy.scopes);
281
+ let complete = !input.customGrants.some((item) => item.grant.permission.key === permission.key);
282
+ const found = /* @__PURE__ */ new Map();
283
+ const ctx = {
284
+ policy,
285
+ scopes,
286
+ resource: getResource(policy.permissions, permission.resource),
287
+ permission,
288
+ row,
289
+ reader: input.reader,
290
+ cache: input.cache,
291
+ list: memberLister(input.memberships, scopes),
292
+ add(id, via, membership) {
293
+ const entry = found.get(id) ?? {
294
+ memberships: [],
295
+ via: []
296
+ };
297
+ found.set(id, entry);
298
+ if (via !== void 0) entry.via.push(via);
299
+ if (membership !== void 0) entry.memberships.push(membership);
300
+ },
301
+ incomplete() {
302
+ complete = false;
303
+ }
304
+ };
305
+ await Promise.all((policy.index.grantsByKey.get(permission.key) ?? []).flatMap((grant) => flattenGrantee(grant.to).map((item) => discover(grant, item, ctx))));
306
+ const root = rootScope(scopes);
307
+ const tenantKey = root === void 0 ? void 0 : scopeField(getResource(policy.permissions, permission.resource), root, scopes);
308
+ const tenant = tenantKey === void 0 ? void 0 : relationId(ownGet(row, tenantKey));
309
+ const env = {
310
+ emit: false,
311
+ simulated: true,
312
+ skipAlternatives: true,
313
+ customRoles: [],
314
+ customGrants: [],
315
+ listeners: emptyListeners(),
316
+ sink: void 0,
317
+ limits: void 0,
318
+ limitCache: /* @__PURE__ */ new Map(),
319
+ team: input.team,
320
+ relations: input.reader
321
+ };
322
+ const now = nowSeconds();
323
+ const ordered = [...found.entries()].toSorted(([a], [b]) => byCodePoint(a, b));
324
+ const decideAll = () => ordered.map(([id, entry]) => {
325
+ const subject = freezeDeep({
326
+ principal: {
327
+ id,
328
+ roles: [],
329
+ memberships: entry.memberships,
330
+ ...tenant === void 0 ? {} : { tenant }
331
+ },
332
+ context: {}
333
+ });
334
+ return evaluate(policy, subject, permission, row, {
335
+ call: "simulate",
336
+ trusted: true,
337
+ now: instantAt(now)
338
+ }, env);
339
+ });
340
+ let decisions = decideAll();
341
+ if (pendingRelations(input.cache).length > 0) {
342
+ await settle(input.cache);
343
+ decisions = decideAll();
344
+ }
345
+ const holders = [];
346
+ for (const [index, [id, entry]] of ordered.entries()) {
347
+ const decision = decisions[index];
348
+ if (decision === void 0 || decision.outcome === "denied") {
349
+ if (decision?.outcome === "denied" && decision.denials.some((denial) => denial.reason === "relation-unavailable" || denial.reason === "relation-depth")) complete = false;
350
+ continue;
351
+ }
352
+ holders.push({
353
+ principal: { id },
354
+ via: entry.via
355
+ });
356
+ }
357
+ return freezeDeep({
358
+ permission: permission.key,
359
+ holders,
360
+ complete
361
+ });
362
+ }
363
+ //#endregion
364
+ export { whoCan as t };
@@ -0,0 +1,36 @@
1
+ import { r as isRecord, t as compact } from "./compact-CAf557ZB.js";
2
+ //#region src/core/wire-delegation.ts
3
+ function toWireDelegation(delegation) {
4
+ if (delegation === void 0) return;
5
+ return compact({
6
+ scope: delegation.scopes?.join(" "),
7
+ authorization_details: delegation.authorizationDetails,
8
+ access: delegation.access
9
+ });
10
+ }
11
+ function scopeList(value) {
12
+ if (typeof value !== "string") return;
13
+ return value.split(" ").filter((item) => item.length > 0);
14
+ }
15
+ /**
16
+ * The runtime `Delegation` of a wire delegation. A field of the wrong type
17
+ * becomes an empty scope list, so a malformed delegation narrows to nothing.
18
+ */
19
+ function fromWireDelegation(value) {
20
+ if (value === void 0) return;
21
+ if (!isRecord(value)) return { scopes: [] };
22
+ const scope = value["scope"];
23
+ const details = value["authorization_details"];
24
+ const access = value["access"];
25
+ if (scope !== void 0 && typeof scope !== "string" || details !== void 0 && !(Array.isArray(details) && details.every(isDetail)) || access !== void 0 && !Array.isArray(access)) return { scopes: [] };
26
+ return compact({
27
+ scopes: scopeList(scope),
28
+ authorizationDetails: details,
29
+ access
30
+ });
31
+ }
32
+ function isDetail(value) {
33
+ return isRecord(value) && typeof value["type"] === "string";
34
+ }
35
+ //#endregion
36
+ export { toWireDelegation as n, fromWireDelegation as t };
@@ -0,0 +1,27 @@
1
+ import { t as compact } from "./compact-CAf557ZB.js";
2
+ //#region src/core/wire-denial.ts
3
+ const IN_PROCESS = /* @__PURE__ */ new Set(["closure-error", "validation"]);
4
+ function jsonDetail(value) {
5
+ if (value === void 0 || value === null || value instanceof Error) return;
6
+ if (typeof value === "string" || typeof value === "boolean") return value;
7
+ if (typeof value === "number") return Number.isFinite(value) ? value : void 0;
8
+ if (typeof value !== "object") return;
9
+ try {
10
+ return JSON.parse(JSON.stringify(value));
11
+ } catch {
12
+ return;
13
+ }
14
+ }
15
+ function wireDenial(denial) {
16
+ return compact({
17
+ role: denial.role,
18
+ reason: denial.reason,
19
+ to: denial.to,
20
+ detail: IN_PROCESS.has(denial.reason) ? void 0 : jsonDetail(denial.detail)
21
+ });
22
+ }
23
+ function wireDenials(denials) {
24
+ return denials.map(wireDenial);
25
+ }
26
+ //#endregion
27
+ export { wireDenials as t };
@@ -0,0 +1,5 @@
1
+ import { a as AutomationSource, i as AutomationRequest, l as memoryAutomationSource, n as AutomationDecision, r as AutomationMode, s as MemoryAutomationSource, t as Automation, u as parseAutomation } from "../automation-BMZPIVUM.js";
2
+ import { i as pollingApprovalWaiter, n as ApprovalWaiter, r as PollingApprovalWaiterOptions, t as ApprovalWaitOptions } from "../waiter-CKy4MQSY.js";
3
+ import { a as WorkflowPermDockOptions, i as WorkflowPermDock, n as AwaitApprovalOptions, o as createPermDock, r as StartAutomationResult, t as AutomationOptions } from "../create-BFfm17UA.js";
4
+ import "../index-CaxrMD1A.js";
5
+ export { type ApprovalWaitOptions, type ApprovalWaiter, type Automation, type AutomationDecision, type AutomationMode, type AutomationOptions, type AutomationRequest, type AutomationSource, type AwaitApprovalOptions, type MemoryAutomationSource, type PollingApprovalWaiterOptions, type StartAutomationResult, type WorkflowPermDock, type WorkflowPermDockOptions, createPermDock, memoryAutomationSource, parseAutomation, pollingApprovalWaiter };
@@ -0,0 +1,223 @@
1
+ import { t as compact } from "../compact-CAf557ZB.js";
2
+ import { n as freezeDeep } from "../freeze-CrU8nQeX.js";
3
+ import { n as findPermission } from "../permission-registry-Br4jSNVi.js";
4
+ import { n as isThenable } from "../thenable-yD7SabqG.js";
5
+ import { n as memoryAutomationSource, r as parseAutomation } from "../automation-DVjOckjV.js";
6
+ import { c as withApp, t as getPermDock } from "../permdock-B9JxkBwC.js";
7
+ import { o as automationEvent } from "../sink-BEZSlMS_.js";
8
+ import { a as requestApproval, s as resumeDecision } from "../helpers-DTcZOzhF.js";
9
+ import { n as signRunTicket, r as subjectFromRunTicket } from "../run-ticket-sxFI6LAk.js";
10
+ import { t as pollingApprovalWaiter } from "../waiter-BGUtGYoU.js";
11
+ //#region src/workflow/create.ts
12
+ function writeQuietly(sink, event) {
13
+ try {
14
+ const written = sink.write([event]);
15
+ if (isThenable(written)) Promise.resolve(written).catch(() => void 0);
16
+ } catch {}
17
+ }
18
+ const DEFAULT_TTL = 86400;
19
+ function deniedStart(reason, detail) {
20
+ return freezeDeep({
21
+ outcome: "denied",
22
+ denials: [compact({
23
+ role: null,
24
+ reason,
25
+ detail
26
+ })]
27
+ });
28
+ }
29
+ async function readAutomation(source, id, tenant) {
30
+ try {
31
+ const found = await source.automation(id, compact({ tenant }));
32
+ const parsed = found === null ? void 0 : parseAutomation(found);
33
+ return parsed === void 0 || parsed.revoked === true ? void 0 : parsed;
34
+ } catch {
35
+ return;
36
+ }
37
+ }
38
+ function idOf(row) {
39
+ if (row === null || typeof row !== "object") return;
40
+ const id = Reflect.get(row, "id");
41
+ return typeof id === "string" ? id : void 0;
42
+ }
43
+ function targetOf(permission, data, resource) {
44
+ return resource ?? compact({
45
+ type: permission.resource,
46
+ id: idOf(data)
47
+ });
48
+ }
49
+ /**
50
+ * Creates the PermDock for durable runs of published automations. A run
51
+ * acts as the automation's principal with that principal's rights at each
52
+ * step, narrowed to the automation's operations; the trigger is recorded
53
+ * and never grants.
54
+ */
55
+ function createPermDock(policy, given) {
56
+ const { signer, verifier, principals, automations, store: approvals, waiter, audience, issuer, expiresIn = DEFAULT_TTL, onAuth, ...permdockOptions } = withApp(policy, given);
57
+ const instanceFor = (subject) => getPermDock(policy, subject, permdockOptions);
58
+ const publisherCanAssign = async (automation) => {
59
+ const publisher = await principals.principal(automation.publishedBy, compact({ tenant: automation.tenant }));
60
+ if (publisher === null) return false;
61
+ const instance = await instanceFor({
62
+ principal: publisher,
63
+ context: {}
64
+ });
65
+ const roles = new Set(instance.assignableRoles(compact({ tenant: automation.tenant })).map((role) => role.key));
66
+ const ceiling = new Set(instance.assignablePermissions(compact({ tenant: automation.tenant })).map((leaf) => leaf.key));
67
+ return (automation.roles ?? []).every((role) => roles.has(role)) && automation.permissions.every((key) => ceiling.has(key));
68
+ };
69
+ const getPermDock$1 = async (ticket) => {
70
+ let current;
71
+ const tracked = { async automation(id, readOptions) {
72
+ current = await readAutomation(automations, id, readOptions?.tenant);
73
+ return current ?? null;
74
+ } };
75
+ const live = { async principal(id, readOptions) {
76
+ if (current === void 0) return principals.principal(id, readOptions);
77
+ if (id !== current.principal) return null;
78
+ if (current.mode === "publisher") return principals.principal(id, readOptions);
79
+ if (current.tenant === void 0 || !await publisherCanAssign(current)) return null;
80
+ return freezeDeep({
81
+ id: current.principal,
82
+ kind: "service",
83
+ tenant: current.tenant,
84
+ memberships: [{
85
+ tenant: current.tenant,
86
+ roles: current.roles ?? []
87
+ }]
88
+ });
89
+ } };
90
+ let subject;
91
+ try {
92
+ subject = await subjectFromRunTicket(ticket, compact({
93
+ verifier,
94
+ principals: live,
95
+ automations: tracked,
96
+ audience,
97
+ issuer,
98
+ onAuth
99
+ }));
100
+ } catch {
101
+ subject = {
102
+ principal: null,
103
+ context: {}
104
+ };
105
+ }
106
+ return instanceFor(subject);
107
+ };
108
+ const start = async (id, startOptions = {}) => {
109
+ const automation = await readAutomation(automations, id, startOptions.tenant);
110
+ if (automation === void 0) return deniedStart("validation", { cause: "automation-unavailable" });
111
+ const { caller } = startOptions;
112
+ if (caller !== void 0) {
113
+ const run = automation.run === void 0 ? void 0 : findPermission(policy.permissions, automation.run);
114
+ if (run === void 0) return deniedStart("no-grant", { permission: automation.run ?? null });
115
+ const decision = caller.decide(run, startOptions.row);
116
+ if (decision.outcome !== "granted") return freezeDeep({
117
+ outcome: "denied",
118
+ denials: decision.outcome === "denied" ? decision.denials : [{
119
+ role: null,
120
+ reason: "approval"
121
+ }]
122
+ });
123
+ }
124
+ const scopes = [];
125
+ for (const key of automation.permissions) {
126
+ const leaf = findPermission(policy.permissions, key);
127
+ if (leaf === void 0) return deniedStart("validation", { permission: key });
128
+ scopes.push(leaf.scope);
129
+ }
130
+ const runId = startOptions.id ?? globalThis.crypto.randomUUID();
131
+ const runAutomation = {
132
+ id: automation.id,
133
+ version: automation.version
134
+ };
135
+ const signed = await signRunTicket(compact({
136
+ principal: automation.principal,
137
+ kind: "automation",
138
+ actor: {
139
+ id: automation.id,
140
+ kind: "automation"
141
+ },
142
+ delegation: { scopes },
143
+ automation: runAutomation,
144
+ tenant: automation.tenant,
145
+ trigger: startOptions.trigger,
146
+ binding: startOptions.binding,
147
+ id: runId,
148
+ expiresIn
149
+ }), signer, compact({
150
+ audience,
151
+ now: startOptions.now
152
+ }));
153
+ if (permdockOptions.sink !== void 0) writeQuietly(permdockOptions.sink, automationEvent({
154
+ operation: "run",
155
+ automation,
156
+ run: runId
157
+ }));
158
+ return freezeDeep({
159
+ outcome: "started",
160
+ ticket: signed,
161
+ run: {
162
+ id: runId,
163
+ automation: runAutomation
164
+ }
165
+ });
166
+ };
167
+ const opened = async (ticket, permission, data, decideOptions) => {
168
+ const { resource, ttl, signal: _signal, ...rest } = decideOptions;
169
+ const first = await getPermDock$1(ticket);
170
+ const decision = first.decide(permission, data, rest);
171
+ if (decision.outcome !== "approval-required" || approvals === void 0) return { decision };
172
+ return {
173
+ decision,
174
+ expiresAt: (await requestApproval(approvals, decision, compact({
175
+ permission,
176
+ resource: targetOf(permission, data, resource),
177
+ subject: first.subject,
178
+ adapter: "workflow",
179
+ ttl
180
+ }))).expiresAt
181
+ };
182
+ };
183
+ const openApproval = async (ticket, permission, data, decideOptions = {}) => (await opened(ticket, permission, data, decideOptions)).decision;
184
+ const resumeApproval = async (ticket, permission, token, data, decideOptions = {}) => {
185
+ const { resource, ttl: _ttl, signal: _signal, ...rest } = decideOptions;
186
+ const run = await getPermDock$1(ticket);
187
+ const decision = run.decide(permission, data, rest);
188
+ if (approvals === void 0) return decision;
189
+ return resumeDecision({
190
+ decision,
191
+ permission,
192
+ subject: run.subject,
193
+ store: approvals,
194
+ resource: targetOf(permission, data, resource),
195
+ adapter: "workflow",
196
+ token
197
+ });
198
+ };
199
+ const awaitApproval = async (ticket, permission, data, decideOptions = {}) => {
200
+ if (waiter === void 0) {
201
+ const { resource: _resource, ttl: _ttl, signal: _signal, ...rest } = decideOptions;
202
+ return (await getPermDock$1(ticket)).decide(permission, data, rest);
203
+ }
204
+ const { decision, expiresAt } = await opened(ticket, permission, data, decideOptions);
205
+ if (decision.outcome !== "approval-required" || expiresAt === void 0) return decision;
206
+ try {
207
+ await waiter.wait(decision.token, compact({
208
+ expiresAt: { epochMilliseconds: Date.parse(expiresAt) },
209
+ signal: decideOptions.signal
210
+ }));
211
+ } catch {}
212
+ return resumeApproval(ticket, permission, decision.token, data, decideOptions);
213
+ };
214
+ return Object.freeze({
215
+ start,
216
+ getPermDock: getPermDock$1,
217
+ awaitApproval,
218
+ openApproval,
219
+ resumeApproval
220
+ });
221
+ }
222
+ //#endregion
223
+ export { createPermDock, memoryAutomationSource, parseAutomation, pollingApprovalWaiter };