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,74 @@
1
+ import { n as CliError } from "./errors-CWTY6uih.js";
2
+ //#region src/cli/core/io.ts
3
+ const FRAMES = [
4
+ "⠋",
5
+ "⠙",
6
+ "⠹",
7
+ "⠸",
8
+ "⠼",
9
+ "⠴",
10
+ "⠦",
11
+ "⠧",
12
+ "⠇",
13
+ "⠏"
14
+ ];
15
+ const FRAME_MS = 80;
16
+ /**
17
+ * A spinner on a terminal stderr; a plain line elsewhere, so logs and CI
18
+ * output stay readable. `done` replaces the spinner with a final line.
19
+ */
20
+ function progressReporter(input) {
21
+ return (message) => {
22
+ if (!input.tty) {
23
+ input.write(`${message}\n`);
24
+ return { done: (final) => {
25
+ if (final !== void 0) input.write(`${final}\n`);
26
+ } };
27
+ }
28
+ let frame = 0;
29
+ const draw = () => {
30
+ input.write(`\r${input.style.paint("cyan", FRAMES[frame % FRAMES.length] ?? "")} ${message}`);
31
+ frame += 1;
32
+ };
33
+ draw();
34
+ const timer = setInterval(draw, FRAME_MS);
35
+ timer.unref();
36
+ return { done: (final) => {
37
+ clearInterval(timer);
38
+ input.write(`\r\u001B[2K${final === void 0 ? "" : `${input.style.okMark} ${final}\n`}`);
39
+ } };
40
+ };
41
+ }
42
+ /** The value of a `--*-stdin` secret: stdin up to the first newline, trimmed. */
43
+ async function readSecret(readStdin) {
44
+ if (readStdin === void 0) return;
45
+ const text = (await readStdin()).split(/\r?\n/u, 1)[0]?.trim() ?? "";
46
+ return text === "" ? void 0 : text;
47
+ }
48
+ //#endregion
49
+ //#region src/cli/core/credentials.ts
50
+ const URL_PASSWORD = /\b([a-z][a-z0-9+.-]*:\/\/[^\s:/@]+:)([^\s@/]+)@/giu;
51
+ /** `text` with every registered secret and every URL password masked. */
52
+ function redact(text, secrets) {
53
+ let out = text.replace(URL_PASSWORD, "$1***@");
54
+ for (const secret of secrets) if (secret.length >= 4) out = out.replaceAll(secret, "***");
55
+ return out;
56
+ }
57
+ /**
58
+ * The secret piped in for `--<flag>-stdin`, when it was passed, registered
59
+ * for redaction.
60
+ */
61
+ async function secretInput(ctx, input) {
62
+ let value;
63
+ if (input.stdin) {
64
+ value = await readSecret(ctx.io.readStdin);
65
+ if (value === void 0) throw new CliError("usage", `${ctx.command}: --${input.flag}-stdin read nothing from stdin`, {
66
+ code: "missing_value",
67
+ extensions: { flag: `--${input.flag}-stdin` }
68
+ });
69
+ }
70
+ if (value !== void 0) ctx.addSecret(value);
71
+ return value;
72
+ }
73
+ //#endregion
74
+ export { secretInput as n, progressReporter as r, redact as t };
@@ -0,0 +1,123 @@
1
+ //#region src/cli/sql/statements.ts
2
+ function blankComments(sql) {
3
+ return sql.replaceAll(/--[^\n]*/gu, (comment) => " ".repeat(comment.length)).replaceAll(/\/\*[\s\S]*?\*\//gu, (comment) => comment.replaceAll(/[^\n]/gu, " "));
4
+ }
5
+ /** Split on `;` outside string literals and dollar-quoted bodies. */
6
+ function sqlStatements(sql) {
7
+ const text = blankComments(sql);
8
+ const statements = [];
9
+ const push = (start, end) => {
10
+ const body = text.slice(start, end);
11
+ const lead = body.length - body.trimStart().length;
12
+ const trimmed = body.trim();
13
+ if (trimmed !== "") statements.push({
14
+ line: text.slice(0, start + lead).split("\n").length,
15
+ text: trimmed
16
+ });
17
+ };
18
+ let start = 0;
19
+ let index = 0;
20
+ while (index < text.length) {
21
+ const char = text[index];
22
+ if (char === "'") {
23
+ const end = text.indexOf("'", index + 1);
24
+ index = end === -1 ? text.length : end + 1;
25
+ continue;
26
+ }
27
+ if (char === "$") {
28
+ const tag = /^\$[A-Za-z_]*\$/u.exec(text.slice(index, index + 64));
29
+ if (tag !== null) {
30
+ const end = text.indexOf(tag[0], index + tag[0].length);
31
+ index = end === -1 ? text.length : end + tag[0].length;
32
+ continue;
33
+ }
34
+ }
35
+ if (char === ";") {
36
+ push(start, index);
37
+ start = index + 1;
38
+ }
39
+ index += 1;
40
+ }
41
+ push(start, text.length);
42
+ return statements;
43
+ }
44
+ /** Capture group `index` of a match, or '' when an optional group took no part. */
45
+ function group(match, index) {
46
+ return match[index] ?? "";
47
+ }
48
+ const VIEW = /^create\s+(?:or\s+replace\s+)?view\s+(?<name>\S+?)(?:\s+with\s*\((?<options>[^)]*)\))?\s+as\b/iu;
49
+ const PRIVILEGE = /^(?:grant|revoke)\s[\s\S]*?\son\s+(?<target>[\s\S]+?)\s+(?:to|from)\s/iu;
50
+ const UNDIFFED_TARGET = /^(?:schema|function|procedure|routine|all\s+(?:functions|procedures|routines)\s+in\s+schema)\s/iu;
51
+ function privilegeTable(target) {
52
+ return target.replace(/^table\s+/iu, "").trim();
53
+ }
54
+ function splitUndiffed(sql) {
55
+ const statements = sqlStatements(sql);
56
+ const views = /* @__PURE__ */ new Set();
57
+ const moved = [];
58
+ let kept = sql;
59
+ for (const { text } of statements) {
60
+ const view = VIEW.exec(text)?.groups;
61
+ if (view !== void 0) {
62
+ views.add(view["name"] ?? "");
63
+ if (view["options"] !== void 0) moved.push(`alter view ${view["name"] ?? ""} set (${view["options"]});`);
64
+ continue;
65
+ }
66
+ const target = PRIVILEGE.exec(text)?.groups?.["target"];
67
+ if (target !== void 0 && (UNDIFFED_TARGET.test(target) || views.has(privilegeTable(target)))) {
68
+ moved.push(`${text};`);
69
+ kept = kept.replace(`${text};\n`, "");
70
+ }
71
+ }
72
+ return {
73
+ kept,
74
+ moved
75
+ };
76
+ }
77
+ //#endregion
78
+ //#region src/cli/sql/deciding-columns.ts
79
+ /** `schema.table`, unquoted and lower case; `public` when unqualified. */
80
+ function tableKey(name) {
81
+ const parts = name.split(".").map((part) => part.replaceAll("\"", ""));
82
+ return (parts.length === 1 ? ["public", ...parts] : parts).join(".").toLowerCase();
83
+ }
84
+ /**
85
+ * The columns of each membership source's table that decide who holds which
86
+ * membership (user, scope, id, `within`, role, `via`, expiry), and the id and
87
+ * value columns of a table a role or user column references, keyed by
88
+ * {@link tableKey}. A client that can write one can give itself a membership.
89
+ */
90
+ function membershipColumns(config) {
91
+ const sources = config.supabase?.hook?.memberships ?? config.rls?.membershipSources ?? [];
92
+ const byTable = /* @__PURE__ */ new Map();
93
+ for (const source of sources) {
94
+ const table = tableKey(source.sql.table);
95
+ const columns = byTable.get(table) ?? /* @__PURE__ */ new Set();
96
+ for (const column of source.sql.columns) columns.add(column);
97
+ byTable.set(table, columns);
98
+ for (const through of [...source.sql.throughs, ...source.sql.userThrough === void 0 ? [] : [source.sql.userThrough]]) {
99
+ const keys = tableKey(through.table);
100
+ byTable.set(keys, /* @__PURE__ */ new Set([
101
+ ...byTable.get(keys) ?? [],
102
+ through.id,
103
+ through.key
104
+ ]));
105
+ }
106
+ }
107
+ return byTable;
108
+ }
109
+ /**
110
+ * Every `schema.table.column` a claim or a membership is computed from: the
111
+ * membership columns and the `attrs` table columns. Sorted.
112
+ */
113
+ function decidingColumns(config, attrs) {
114
+ const entries = /* @__PURE__ */ new Set();
115
+ for (const [table, columns] of membershipColumns(config)) for (const column of columns) entries.add(`${table}.${column}`);
116
+ if (attrs?.table !== void 0) {
117
+ const table = tableKey(attrs.table);
118
+ for (const column of attrs.columns) entries.add(`${table}.${column}`);
119
+ }
120
+ return [...entries].toSorted();
121
+ }
122
+ //#endregion
123
+ export { splitUndiffed as a, group as i, membershipColumns as n, sqlStatements as o, tableKey as r, decidingColumns as t };
@@ -0,0 +1,286 @@
1
+ import { n as isReadonlyArray } from "./compact-CAf557ZB.js";
2
+ import { r as ownGet } from "./paths-DXSHAMIa.js";
3
+ import { c as isConditionRef, i as resolveConditionRef, s as isConditionDate, u as parentHop } from "./refs-K6eWUJ0H.js";
4
+ import { o as sameId, t as expiredAt } from "./expiry-D4_YKRKD.js";
5
+ import { g as formerScopes, m as annotationsFor, n as findPermission } from "./permission-registry-Br4jSNVi.js";
6
+ import { o as epochSeconds } from "./time-DkWjdL98.js";
7
+ import { d as scopeList, m as tenantOf, o as resolveScope, p as subjectMemberships } from "./scopes-CUPSjo9q.js";
8
+ import { t as isoInstant } from "./instant-BluqDvyS.js";
9
+ import { o as flattenGrantee } from "./grantee-Cn1HyUsI.js";
10
+ import { t as isActive } from "./validity-CZ7-y0Cj.js";
11
+ import { n as matchGrantee } from "./grantee-match-DHArqY82.js";
12
+ //#region src/conditions/evaluate.ts
13
+ function resolveRef(ref, subject) {
14
+ return resolveConditionRef(ref, subject);
15
+ }
16
+ function unwrap(value, subject) {
17
+ if (isConditionRef(value)) return resolveRef(value.ref, subject);
18
+ if (isConditionDate(value)) return new Date(isoInstant(value.date) ?? NaN);
19
+ if (isReadonlyArray(value)) return value.map((item) => unwrap(item, subject));
20
+ return value;
21
+ }
22
+ function instantOf(value) {
23
+ if (value instanceof Date) {
24
+ const time = value.getTime();
25
+ return Number.isNaN(time) ? void 0 : time;
26
+ }
27
+ if (typeof value === "number") return Number.isFinite(value) ? value : void 0;
28
+ if (typeof value === "string") return isoInstant(value);
29
+ }
30
+ function comparablePair(left, right) {
31
+ if (left instanceof Date || right instanceof Date) {
32
+ const a = instantOf(left);
33
+ const b = instantOf(right);
34
+ return a === void 0 || b === void 0 ? void 0 : [a, b];
35
+ }
36
+ const kind = typeof left;
37
+ if (kind === typeof right && (kind === "string" || kind === "number" || kind === "boolean")) return [left, right];
38
+ }
39
+ function compare(op, left, right) {
40
+ if (left === void 0 || left === null || right === void 0 || right === null) return false;
41
+ const comparable = comparablePair(left, right);
42
+ if (comparable === void 0) return false;
43
+ const [a, b] = comparable;
44
+ switch (op) {
45
+ case "eq": return a === b;
46
+ case "ne": return a !== b;
47
+ case "gt": return a > b;
48
+ case "gte": return a >= b;
49
+ case "lt": return a < b;
50
+ case "lte": return a <= b;
51
+ default: return op;
52
+ }
53
+ }
54
+ function contains(left, right) {
55
+ if (left === void 0 || left === null || right === void 0 || right === null) return false;
56
+ if (typeof left === "string" && typeof right === "string") return left.includes(right);
57
+ if (Array.isArray(left)) return left.includes(right);
58
+ return false;
59
+ }
60
+ function inList(left, right) {
61
+ if (left === void 0 || left === null || !Array.isArray(right)) return false;
62
+ return right.includes(left);
63
+ }
64
+ function matchesParentHop(data, parents, on) {
65
+ for (const parent of parents ?? []) {
66
+ const hop = parentHop(parent);
67
+ if (hop.resource !== void 0 && hop.resource !== on.resource) continue;
68
+ if (sameId(ownGet(data, hop.field), on.id)) return true;
69
+ }
70
+ return false;
71
+ }
72
+ function evaluateMemberOf(condition, data, subject, now, scopes) {
73
+ if (data === null || typeof data !== "object") return false;
74
+ const rowValue = ownGet(data, condition.field);
75
+ if (rowValue === void 0 || rowValue === null) return false;
76
+ const memberships = subjectMemberships(subject.principal?.memberships, scopes);
77
+ const wanted = new Set(condition.roles);
78
+ const active = subject.principal?.tenant === "" ? void 0 : subject.principal?.tenant;
79
+ const scope = condition.scope === "resource" ? void 0 : resolveScope(scopes, condition.scope);
80
+ if (condition.scope !== "resource" && scope === void 0) return false;
81
+ for (const membership of memberships) {
82
+ if (expiredAt(membership, now)) continue;
83
+ if (wanted.size > 0 && !membership.roles.some((role) => wanted.has(role))) continue;
84
+ if (scope !== void 0) {
85
+ if (membership.scope !== scope || !sameId(membership.id, rowValue)) continue;
86
+ const tenant = tenantOf(membership, scopes);
87
+ if (active !== void 0 && tenant !== void 0 && tenant !== active) continue;
88
+ return true;
89
+ }
90
+ if (membership.on === void 0) continue;
91
+ if (condition.resource !== void 0 && membership.on.resource !== condition.resource) {
92
+ if (matchesParentHop(data, condition.parents, membership.on)) return true;
93
+ continue;
94
+ }
95
+ if (sameId(membership.on.id, rowValue)) return true;
96
+ if (matchesParentHop(data, condition.parents, membership.on)) return true;
97
+ }
98
+ return false;
99
+ }
100
+ function evaluateCondition(condition, data, subject, now = epochSeconds(), scopes = scopeList(void 0), related, onOpaque) {
101
+ switch (condition.op) {
102
+ case "and": return condition.conditions.every((child) => evaluateCondition(child, data, subject, now, scopes, related, onOpaque));
103
+ case "or": return condition.conditions.some((child) => evaluateCondition(child, data, subject, now, scopes, related, onOpaque));
104
+ case "not": return !evaluateCondition(condition.condition, data, subject, now, scopes, related, onOpaque);
105
+ case "isNull": {
106
+ if (data === null || typeof data !== "object") return false;
107
+ const value = ownGet(data, condition.field);
108
+ const isNull = value === null || value === void 0;
109
+ return condition.value ? isNull : !isNull;
110
+ }
111
+ case "in":
112
+ case "notIn": {
113
+ if (data === null || typeof data !== "object") return false;
114
+ const left = ownGet(data, condition.field);
115
+ const matched = inList(left, unwrap(condition.value, subject));
116
+ return condition.op === "in" ? matched : !matched && left !== void 0 && left !== null;
117
+ }
118
+ case "contains":
119
+ if (data === null || typeof data !== "object") return false;
120
+ return contains(ownGet(data, condition.field), unwrap(condition.value, subject));
121
+ case "eq":
122
+ case "ne":
123
+ case "gt":
124
+ case "gte":
125
+ case "lt":
126
+ case "lte":
127
+ if (condition.field === "_" && condition.op === "eq") return condition.value === true;
128
+ if (data === null || typeof data !== "object") return false;
129
+ return compare(condition.op, ownGet(data, condition.field), unwrap(condition.value, subject));
130
+ case "memberOf": return evaluateMemberOf(condition, data, subject, now, scopes);
131
+ case "related": return related?.(condition, data) === true;
132
+ case "sqlFunction": return evaluateCondition(condition.twin, data, subject, now, scopes, related, onOpaque);
133
+ case "opaque":
134
+ onOpaque?.();
135
+ return false;
136
+ case "liveSession": return subject.liveSession === true;
137
+ default:
138
+ /* v8 ignore next */
139
+ return condition;
140
+ }
141
+ }
142
+ //#endregion
143
+ //#region src/core/row-pair.ts
144
+ function isRowPair(value) {
145
+ return value !== null && typeof value === "object" && "current" in value && "next" in value;
146
+ }
147
+ /**
148
+ * The row a `where` reads and the row a `check` reads. An instance check
149
+ * takes a `{ current, next }` pair or one row for both; a collection check
150
+ * has no current row, only the input it creates.
151
+ */
152
+ function rowValues(permission, data) {
153
+ if (permission.kind === "collection") return {
154
+ current: void 0,
155
+ next: data
156
+ };
157
+ if (permission.kind === "instance" && isRowPair(data)) return {
158
+ current: data.current,
159
+ next: data.next
160
+ };
161
+ return {
162
+ current: data,
163
+ next: data
164
+ };
165
+ }
166
+ /** The row's id under `field` as a string, or `*` when the row has no string or number there. */
167
+ function rowIdOf(row, field = "id") {
168
+ if (row === null || typeof row !== "object" || !Object.hasOwn(row, field)) return "*";
169
+ const id = Reflect.get(row, field);
170
+ return typeof id === "string" || typeof id === "number" ? String(id) : "*";
171
+ }
172
+ //#endregion
173
+ //#region src/core/delegation.ts
174
+ /** The permission's scope and any scope it was renamed from: tokens issued before a rename keep working. */
175
+ function scopeNames(permission) {
176
+ return [permission.scope, ...formerScopes(permission)];
177
+ }
178
+ /**
179
+ * Whether a delegated caller may use a permission its principal holds, through
180
+ * OAuth `scopes`, RFC 9396 `authorizationDetails` or GNAP `access`.
181
+ * `undefined` means covered; otherwise the denial reason `decide` would add.
182
+ */
183
+ function coveredByDelegation(permission, delegation, resourceId, hasActor = false) {
184
+ const unscoped = hasActor ? "no-delegation" : void 0;
185
+ if (delegation === void 0) return unscoped;
186
+ const hasScopes = delegation.scopes !== void 0;
187
+ const hasDetails = delegation.authorizationDetails !== void 0;
188
+ const hasAccess = delegation.access !== void 0;
189
+ if (!hasScopes && !hasDetails && !hasAccess) return unscoped;
190
+ const emptyScopes = hasScopes && (delegation.scopes?.length ?? 0) === 0;
191
+ const emptyAccess = hasAccess && (delegation.access?.length ?? 0) === 0;
192
+ if (emptyScopes && !hasDetails && !hasAccess) return "no-delegation";
193
+ if (emptyAccess && !hasScopes && !hasDetails) return "no-delegation";
194
+ if (emptyScopes && emptyAccess && !hasDetails) return "no-delegation";
195
+ const scopes = scopeNames(permission);
196
+ const scopeOk = delegation.scopes?.some((scope) => scopes.includes(scope)) ?? false;
197
+ const detailOk = delegation.authorizationDetails?.some((detail) => {
198
+ if (detail.type !== permission.resource) return false;
199
+ const identifier = detail["identifier"];
200
+ if (identifier !== void 0 && (typeof identifier !== "string" || identifier !== resourceId)) return false;
201
+ const actions = detail.actions;
202
+ if (actions === void 0) return true;
203
+ return Array.isArray(actions) && actions.includes(permission.action);
204
+ }) ?? false;
205
+ const accessOk = accessCovers(permission, delegation.access, resourceId);
206
+ if (scopeOk || detailOk || accessOk) return;
207
+ return "not-delegated";
208
+ }
209
+ /** A `readOnly` actor never uses a permission without `readOnlyHint`, delegated or not. */
210
+ function readOnlyActorRefuses(actor, permission) {
211
+ return actor?.readOnly === true && !annotationsFor(permission).readOnlyHint;
212
+ }
213
+ /**
214
+ * Whether an `agent` actor may call the tool `name`: its `tools` list names it.
215
+ * An agent without a `tools` list and any other actor kind are not restricted
216
+ * here; a `tools` value that is not a list of strings refuses every tool.
217
+ */
218
+ function actorMayCallTool(actor, name) {
219
+ if (actor?.kind !== "agent" || !Object.hasOwn(actor, "tools")) return true;
220
+ const tools = actor["tools"];
221
+ return Array.isArray(tools) && tools.some((tool) => typeof tool === "string" && tool === name);
222
+ }
223
+ function coversRequirements(tree, requires, delegation, resourceId, hasActor = false) {
224
+ return (requires ?? []).every((key) => {
225
+ const leaf = findPermission(tree, key);
226
+ return leaf !== void 0 && coveredByDelegation(leaf, delegation, resourceId, hasActor) === void 0;
227
+ });
228
+ }
229
+ function requiresStandIn(grant) {
230
+ return (grant.requires ?? []).length > 0 && annotationsFor(grant.permission).readOnlyHint && !flattenGrantee(grant.to).some((item) => item.kind === "role");
231
+ }
232
+ function accessCovers(permission, access, resourceId) {
233
+ if (access === void 0) return false;
234
+ return access.some((entry) => {
235
+ if (typeof entry === "string") return scopeNames(permission).includes(entry);
236
+ if (entry === null || typeof entry !== "object") return false;
237
+ const type = entry["type"];
238
+ if (typeof type !== "string" || !typeMatches(type, permission.resource)) return false;
239
+ const actions = entry["actions"];
240
+ if (actions !== void 0 && (!Array.isArray(actions) || !actions.includes(permission.action))) return false;
241
+ const identifier = entry["identifier"];
242
+ if (identifier !== void 0 && (typeof identifier !== "string" || identifier !== resourceId)) return false;
243
+ return true;
244
+ });
245
+ }
246
+ function typeMatches(type, resource) {
247
+ if (type === resource) return true;
248
+ return type.endsWith(`/${resource}`);
249
+ }
250
+ /**
251
+ * Whether the subject's principal is a `from` of the delegation: every item
252
+ * matches, with roles checked against the roles the principal holds here
253
+ * (`matchGrantee` leaves role holding to the caller) and nothing that needs a
254
+ * row.
255
+ */
256
+ function handsOver(delegation, subject, heldRoles, now) {
257
+ const items = flattenGrantee(delegation.from);
258
+ if (items.length === 0 || subject.principal === null) return false;
259
+ return items.every((item) => {
260
+ if (item.kind === "role") return heldRoles.has(item.role);
261
+ if (item.kind === "relation") return false;
262
+ const match = matchGrantee(item, subject, now, void 0);
263
+ return match.matched && match.where === void 0;
264
+ });
265
+ }
266
+ /**
267
+ * The permission keys the policy's delegations let `subject.actor` use for
268
+ * `subject.principal` right now: the union over every active delegation whose
269
+ * `to` matches the actor and whose `from` the principal holds. `undefined`
270
+ * when none applies, so the call falls back to the token delegation alone.
271
+ * An actor with `readOnly: true` gets only each delegation's read-only keys.
272
+ * Attenuation only: a key here still needs a matching allow and no deny.
273
+ */
274
+ function delegatedPermissions(delegations, subject, heldRoles, now) {
275
+ const actor = subject.actor;
276
+ if (actor === void 0 || delegations === void 0) return;
277
+ let keys;
278
+ for (const delegation of delegations) {
279
+ if (delegation.to.kind !== actor.kind || delegation.to.id !== void 0 && delegation.to.id !== actor.id || delegation.to.client !== void 0 && delegation.to.client !== actor.client || !isActive(delegation.validity, now) || !handsOver(delegation, subject, heldRoles, now)) continue;
280
+ keys ??= /* @__PURE__ */ new Set();
281
+ for (const key of actor.readOnly === true ? delegation.readOnly : delegation.permissions) keys.add(key);
282
+ }
283
+ return keys;
284
+ }
285
+ //#endregion
286
+ export { readOnlyActorRefuses as a, rowIdOf as c, delegatedPermissions as i, rowValues as l, coveredByDelegation as n, requiresStandIn as o, coversRequirements as r, isRowPair as s, actorMayCallTool as t, evaluateCondition as u };
@@ -0,0 +1,19 @@
1
+ import { t as compact } from "./compact-CAf557ZB.js";
2
+ //#region src/core/delegation-input.ts
3
+ /**
4
+ * RFC 9396 entries a token verifier put in `extra`, under
5
+ * `authorizationDetails` or the claim's own `authorization_details`.
6
+ */
7
+ function authorizationDetailsOf(extra) {
8
+ const details = extra?.["authorizationDetails"] ?? extra?.["authorization_details"];
9
+ return Array.isArray(details) ? details : void 0;
10
+ }
11
+ /** The delegation a verified token's scopes and `extra` carry. */
12
+ function delegationFrom(scopes, extra) {
13
+ return compact({
14
+ scopes,
15
+ authorizationDetails: authorizationDetailsOf(extra)
16
+ });
17
+ }
18
+ //#endregion
19
+ export { delegationFrom as t };
@@ -0,0 +1,5 @@
1
+ import { $t as DeliveryFailureCause, Zt as DeliveryChannel, tn as EmailCategory } from "../policy-types-DzwivBgR.js";
2
+ import { i as approvalUrlFor, n as ApprovalUrl, r as approvalPrompt, t as ApprovalPrompt } from "../approval-prompt-Djo_PyZc.js";
3
+ import { _ as TransportOptions, a as DeliveryReport, c as DeliveryTransport, d as EmailTransport, f as EmailUnsubscribe, g as TransportMessages, h as TransportItem, i as DeliveryMessages, l as DeliveryTransports, m as Recipient, n as ChatTransport, o as DeliveryResult, p as OutgoingEmail, r as DeliverOptions, s as DeliveryTarget, t as ChatMessage, u as EmailMessage, v as WebhookMessage, y as WebhookTransport } from "../types-DX0LaKTb.js";
4
+ import { a as DeliveryPermDock, c as MemoryDelivery, d as memoryDeliveryTransport, f as Audience, g as subscribersFor, h as audience, i as isDeliveryTarget, l as MemoryDeliveryTransport, m as SubscriberEvent, n as webhookTransport, o as DeliveryPermDockOptions, p as AudienceOptions, r as isAddrSpec, s as createPermDock, t as WebhookTransportOptions, u as MemoryDeliveryTransportOptions } from "../index-BcHcPyIo.js";
5
+ export { type ApprovalPrompt, type ApprovalUrl, type Audience, type AudienceOptions, type ChatMessage, type ChatTransport, type DeliverOptions, type DeliveryChannel, type DeliveryFailureCause, type DeliveryMessages, type DeliveryPermDock, type DeliveryPermDockOptions, type DeliveryReport, type DeliveryResult, type DeliveryTarget, type DeliveryTransport, type DeliveryTransports, type EmailCategory, type EmailMessage, type EmailTransport, type EmailUnsubscribe, type MemoryDelivery, type MemoryDeliveryTransport, type MemoryDeliveryTransportOptions, type OutgoingEmail, type Recipient, type SubscriberEvent, type TransportItem, type TransportMessages, type TransportOptions, type WebhookMessage, type WebhookTransport, type WebhookTransportOptions, approvalPrompt, approvalUrlFor, audience, createPermDock, isAddrSpec, isDeliveryTarget, memoryDeliveryTransport, subscribersFor, webhookTransport };
@@ -0,0 +1,5 @@
1
+ import { n as approvalUrlFor, t as approvalPrompt } from "../approval-prompt-Dg5LeAcT.js";
2
+ import { n as subscribersFor, t as audience } from "../audience-Dg8XsRaO.js";
3
+ import { i as isDeliveryTarget, n as isAddrSpec } from "../target-Bw37TFNA.js";
4
+ import { n as createPermDock, r as memoryDeliveryTransport, t as webhookTransport } from "../delivery-DCAgNyCn.js";
5
+ export { approvalPrompt, approvalUrlFor, audience, createPermDock, isAddrSpec, isDeliveryTarget, memoryDeliveryTransport, subscribersFor, webhookTransport };