permdock 0.3.1 → 0.4.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 (323) hide show
  1. package/dist/a2a/index.d.ts +7 -5
  2. package/dist/a2a/index.js +14 -21
  3. package/dist/ai-sdk/index.d.ts +18 -6
  4. package/dist/ai-sdk/index.js +8 -5
  5. package/dist/app-data-CV8pqqMi.js +59 -0
  6. package/dist/approvals/index.d.ts +2 -2
  7. package/dist/approvals/index.js +3 -3
  8. package/dist/{approvals-DbYAuNkG.js → approvals-DZL76lKW.js} +35 -19
  9. package/dist/{approvers-DT4AVyIg.js → approvers-CqPOLD-o.js} +1 -1
  10. package/dist/{arazzo-BAgw9ap6.js → arazzo-C4BcskbX.js} +6 -5
  11. package/dist/{arazzo-C9chp3ST.js → arazzo-CD8d0WLb.js} +2 -2
  12. package/dist/authzen/index.d.ts +3 -3
  13. package/dist/authzen/index.js +161 -23
  14. package/dist/better-auth/index.d.ts +2 -2
  15. package/dist/better-auth/index.js +6 -19
  16. package/dist/better-supabase/index.d.ts +112 -87
  17. package/dist/better-supabase/index.js +257 -156
  18. package/dist/{bind-C_ob3LKa.d.ts → bind-BzqG8SMb.d.ts} +16 -5
  19. package/dist/{bind-CuzGytRf.js → bind-kk-uyCwH.js} +14 -6
  20. package/dist/build-instance-DIIV9DbC.js +51 -0
  21. package/dist/{canonical-json-DemiK4Vp.js → canonical-json-CFKyFOke.js} +1 -3
  22. package/dist/{capability-2kYTMWDv.d.ts → capability-CksyCWDH.d.ts} +2 -2
  23. package/dist/{capability-4qPdO9gk.js → capability-txATtKV4.js} +3 -2
  24. package/dist/catalog/index.d.ts +1 -1
  25. package/dist/catalog/index.js +1 -1
  26. package/dist/catalog-6yWAX6Ps.js +2 -0
  27. package/dist/{catalog-CYj-mX2O.js → catalog-WHG4kBq7.js} +2 -2
  28. package/dist/{catalog-doc-DdGm82XT.js → catalog-doc-DWtg0gGR.js} +17 -10
  29. package/dist/{catalog-DWF5cYqB.js → catalog-tZUyOfOv.js} +4 -4
  30. package/dist/claude-agent/index.d.ts +4 -4
  31. package/dist/claude-agent/index.js +4 -5
  32. package/dist/clerk/index.d.ts +3 -3
  33. package/dist/clerk/index.js +8 -33
  34. package/dist/cli/bin.js +1 -1
  35. package/dist/cli/index.d.ts +3 -3
  36. package/dist/cli/index.js +3 -3
  37. package/dist/cloud/index.d.ts +4 -4
  38. package/dist/cloud/index.js +9 -15
  39. package/dist/{cloud-CfwZ39Rl.js → cloud-C7bSDgX4.js} +2 -2
  40. package/dist/{cloud-DWLXO2af.js → cloud-PeBN3IEn.js} +5 -5
  41. package/dist/{collect-DSTE3ml9.js → collect-2SrB7lfk.js} +6 -8
  42. package/dist/collect-Bw2Jdq1q.js +2 -0
  43. package/dist/{collect-CHB22Sx4.js → collect-CQx4hX4N.js} +3 -3
  44. package/dist/{commands-BeaGNj_o.js → commands-Cpip4ULx.js} +13 -13
  45. package/dist/{compact-y6vfu2_f.js → compact-CAf557ZB.js} +11 -1
  46. package/dist/compile/index.d.ts +1 -1
  47. package/dist/compile/index.js +1 -1
  48. package/dist/{compile-Ba4blROR.js → compile-CcEu2ZQ1.js} +6 -5
  49. package/dist/{compile-BkRyBDBw.d.ts → compile-CtTP7eur.d.ts} +2 -2
  50. package/dist/{config-BJiM-xAm.js → config-BIjREpyE.js} +4 -4
  51. package/dist/{config-ir40y8m0.js → config-DLt6BvV7.js} +2 -2
  52. package/dist/{config-report-CdCgbRnV.js → config-report--Xb9APJS.js} +5 -6
  53. package/dist/{connection-CU8MQxRi.js → connection-DUsczpB5.js} +3 -2
  54. package/dist/constants-DcJABbLW.js +20 -0
  55. package/dist/{context-Bcy85rGi.js → context-DieZVJXu.js} +16 -5
  56. package/dist/convex/index.d.ts +4 -4
  57. package/dist/convex/index.js +14 -16
  58. package/dist/create-BBO24vj6.js +324 -0
  59. package/dist/{credential-8P81ff4u.js → credential-kue0qpbm.js} +4 -4
  60. package/dist/deciding-columns-Sq12mEA6.js +123 -0
  61. package/dist/delegation-input-FTxMK3ji.js +19 -0
  62. package/dist/denied-text-DfRk15uw.d.ts +19 -0
  63. package/dist/{describe-DMYiCjJV.d.ts → describe-C3ldA9os.d.ts} +11 -2
  64. package/dist/{describe-B_gVZEVi.js → describe-Cgkp7eP0.js} +5 -4
  65. package/dist/{diff-C9RDjjhs.js → diff-Cnghh_Ip.js} +2 -2
  66. package/dist/{diff-2VaeChzX.js → diff-rpqoe7Ag.js} +9 -9
  67. package/dist/{doctor-Djh6JDEk.js → doctor-CuVJvhV_.js} +2 -2
  68. package/dist/doctor-owlv6ddh.js +2166 -0
  69. package/dist/drizzle/index.d.ts +2 -2
  70. package/dist/drizzle/index.js +6 -14
  71. package/dist/elysia/index.d.ts +4 -4
  72. package/dist/elysia/index.js +7 -7
  73. package/dist/{errors-DPdqI50v.d.ts → errors-OD_4c__H.d.ts} +2 -2
  74. package/dist/{errors-Cz5zn0mW.js → errors-drnfxYtm.js} +3 -3
  75. package/dist/{evaluations-tz6D9A2G.js → evaluations-C9YJsv3H.js} +45 -7
  76. package/dist/eve/index.d.ts +5 -5
  77. package/dist/eve/index.js +5 -5
  78. package/dist/express/index.d.ts +4 -4
  79. package/dist/express/index.js +8 -7
  80. package/dist/fastify/index.d.ts +15 -5
  81. package/dist/fastify/index.js +9 -29
  82. package/dist/fields-fwfXN01n.js +1016 -0
  83. package/dist/{files-DWUN9PzI.js → files-D_JIzUrP.js} +12 -3
  84. package/dist/{fixtures-ht28Cplr.js → fixtures-h2eG2OZV.js} +5 -6
  85. package/dist/{from-snapshot-CTLijvdm.js → from-snapshot-7REQZe0H.js} +32 -22
  86. package/dist/{generate-CH7ThJ14.js → generate-CNU1pIOo.js} +1 -3
  87. package/dist/grantee-CXY-0C87.js +254 -0
  88. package/dist/grantee-conditions-MQs5NIuX.js +270 -0
  89. package/dist/grantee-match-fxYp9Nmt.js +141 -0
  90. package/dist/{helpers-H_KARDVC.js → helpers-C9YmyBIa.js} +7 -6
  91. package/dist/hono/index.d.ts +4 -4
  92. package/dist/hono/index.js +8 -8
  93. package/dist/hosted-CBHgkzDl.js +655 -0
  94. package/dist/{http-SO7qGttf.js → http-BBoKefeS.js} +35 -2
  95. package/dist/{http-BIhmLfCc.js → http-BEbdMZ05.js} +2 -24
  96. package/dist/{rls-import-4lLW_pbb.js → import-BFIlhetD.js} +86 -80
  97. package/dist/{openapi-import-cmwetbzw.js → import-UHk1N7vH.js} +6 -7
  98. package/dist/{index-C8z4RjQV.d.ts → index-BwMe94Xq.d.ts} +1 -1
  99. package/dist/{index-0nNqHspG.d.ts → index-DgM7w96K.d.ts} +2 -2
  100. package/dist/{index-C7Tw7MaW.d.ts → index-Dz7didpC.d.ts} +3 -3
  101. package/dist/{index-BNc7Wer_.d.ts → index-UdVQgq48.d.ts} +105 -38
  102. package/dist/index.d.ts +15 -13
  103. package/dist/index.js +22 -22
  104. package/dist/{instance-options-jARdwfPN.d.ts → instance-options-plkrsAog.d.ts} +1 -1
  105. package/dist/{json-schema-BsAflUGW.js → json-schema-DBkdUuCO.js} +1 -3
  106. package/dist/jwt/index.d.ts +4 -4
  107. package/dist/jwt/index.js +13 -13
  108. package/dist/{kernel-_RRHmnMY.js → kernel-CB3LrIJM.js} +81 -32
  109. package/dist/kysely/index.d.ts +2 -2
  110. package/dist/kysely/index.js +6 -14
  111. package/dist/{live-options-H2eG8dfJ.js → live-options-BaAFCIiu.js} +16 -3
  112. package/dist/load-B_shHrmd.js +2 -0
  113. package/dist/{load-DhWEB9P1.js → load-C3_oTHyO.js} +11 -3
  114. package/dist/{manifest-iaoBXHKc.js → manifest-BngWKryL.js} +5 -18
  115. package/dist/{map-claims-Z4QZOiFF.js → map-claims-AVlBaJoa.js} +7 -16
  116. package/dist/{map-error-pgUWNNtG.js → map-error-BE27PYkE.js} +5 -5
  117. package/dist/{markers-B0hYLvMD.js → markers-CiwAOZtO.js} +6 -2
  118. package/dist/{may-use-DndQ5tQ-.js → may-use-BOn_dR_w.js} +4 -3
  119. package/dist/mcp/index.d.ts +26 -9
  120. package/dist/mcp/index.js +456 -446
  121. package/dist/{rls-migrate-CN4TlJTO.js → migrate-BwlB5-Wk.js} +75 -15
  122. package/dist/nest/index.d.ts +4 -4
  123. package/dist/nest/index.js +11 -12
  124. package/dist/next/index.d.ts +31 -8
  125. package/dist/next/index.js +29 -33
  126. package/dist/next/plugin.d.ts +1 -1
  127. package/dist/next/plugin.js +1 -1
  128. package/dist/node/index.d.ts +4 -4
  129. package/dist/node/index.js +4 -4
  130. package/dist/ocsf-uYFXGVw2.js +115 -0
  131. package/dist/openai/index.d.ts +5 -5
  132. package/dist/openai/index.js +4 -4
  133. package/dist/openapi/index.d.ts +3 -3
  134. package/dist/openapi/index.js +1 -1
  135. package/dist/{openapi-CqqEbHsL.js → openapi-BJdBmYDG.js} +19 -23
  136. package/dist/{openapi-BqRBvAng.js → openapi-DBzHQbov.js} +2 -5
  137. package/dist/{openapi-CQTsgKoB.js → openapi-DcQ1Kg40.js} +3 -3
  138. package/dist/orpc/index.d.ts +5 -5
  139. package/dist/orpc/index.js +9 -11
  140. package/dist/otel/index.d.ts +2 -2
  141. package/dist/otel/index.js +26 -23
  142. package/dist/output-files-CgIsvdSa.js +140 -0
  143. package/dist/{rls-ownership-DcYlZ09B.js → ownership-BgnbOJFT.js} +387 -379
  144. package/dist/{package-root-zGkxO3oN.js → package-root-DtNnpmUd.js} +3 -2
  145. package/dist/{parse-BuyjxhZV.js → parse-CVFQHk6c.js} +3 -3
  146. package/dist/{parse-local-manifest-BrMozJCo.js → parse-local-manifest-C-q02Pal.js} +2 -4
  147. package/dist/{parse-local-manifest-JLnaBH0S.d.ts → parse-local-manifest-DvYUR0QL.d.ts} +1 -1
  148. package/dist/pdp/index.d.ts +2 -2
  149. package/dist/pdp/index.js +8 -9
  150. package/dist/{permdock-CbgvLnuo.js → permdock-L26udHSk.js} +1387 -1220
  151. package/dist/{rls-fields-CZOMlwHl.js → permission-keys-B26jeyUv.js} +1268 -2053
  152. package/dist/permission-registry-BsblpB-z.js +385 -0
  153. package/dist/{permissions-DttnqqxC.d.ts → permission-types-Dg39z9Kv.d.ts} +59 -31
  154. package/dist/{permissions-RJrovw98.js → permissions-CCJ6lmxB.js} +3 -3
  155. package/dist/{permissions-CDgvKG5L.d.ts → permissions-COH-KRgT.d.ts} +2 -2
  156. package/dist/{policy-IB6yxpC3.d.ts → policy-types-sp9P1iIV.d.ts} +661 -582
  157. package/dist/{policy-D2W7uv19.d.ts → policy-ur0BBK_e.d.ts} +2 -2
  158. package/dist/{powersync-DE19b9dT.js → powersync-BFSbSElQ.js} +2 -2
  159. package/dist/powersync-DCDgZgfZ.js +2 -0
  160. package/dist/{powersync-Dv1_aWF7.js → powersync-cZe4kzhL.js} +26 -27
  161. package/dist/prisma/index.d.ts +1 -1
  162. package/dist/prisma/index.js +6 -12
  163. package/dist/{problem-B43ztKIm.js → problem-CnWraVhC.js} +8 -7
  164. package/dist/{problem-details-_AMOYz-w.js → problem-details-DECUnXAn.js} +2 -2
  165. package/dist/{problem-details-DX075l9V.d.ts → problem-details-rIIo8B2C.d.ts} +1 -1
  166. package/dist/{protected-BdnIEFkY.d.ts → protected-B3_P7xuw.d.ts} +9 -6
  167. package/dist/{protected-utU-SLuy.js → protected-BN7BUdY1.js} +20 -8
  168. package/dist/{provider-CSQd7m92.js → provider-Bi-0HNL3.js} +23 -10
  169. package/dist/{provider-DZY281jO.d.ts → provider-kwHC9CZD.d.ts} +1 -1
  170. package/dist/{provider-store-Cfbvo4DE.js → provider-store-Ctt-81Ni.js} +6 -3
  171. package/dist/react/index.d.ts +7 -7
  172. package/dist/react/index.js +5 -5
  173. package/dist/react/provider-client.d.ts +1 -1
  174. package/dist/react/provider-client.js +1 -1
  175. package/dist/react-native/index.d.ts +20 -11
  176. package/dist/react-native/index.js +33 -17
  177. package/dist/{refs-KYb4ntaz.js → refs-f3imMjNW.js} +1 -1
  178. package/dist/relation-walk-BXnlLtg2.js +186 -0
  179. package/dist/relations-CvmSpG67.js +163 -0
  180. package/dist/{replay-CYyiLiwO.d.ts → replay-COpmZUfx.d.ts} +1 -1
  181. package/dist/request-context-BVM7aWNs.js +71 -0
  182. package/dist/request-context-C2_1lchh.d.ts +5 -0
  183. package/dist/resource-relations-D1Un3pcz.js +243 -0
  184. package/dist/retire-BFcxL6un.js +240 -0
  185. package/dist/{rls-P-BeBx0n.js → rls-55DQTuf5.js} +14 -2
  186. package/dist/{rls-DiinlRML.js → rls-BEktUaqg.js} +884 -484
  187. package/dist/{policy-xyWg7QdR.js → role-builder-B4GbKM-i.js} +235 -541
  188. package/dist/{rpc-DL9Sqvb1.js → rpc-nYC3cR_u.js} +15 -5
  189. package/dist/{run-BWc9qqvE.js → run-DMcNW_8T.js} +3 -3
  190. package/dist/{runtime-CB8gQFvS.js → runtime-D_tMXnsq.js} +1 -1
  191. package/dist/{saas-DhpJjnBA.js → saas-DtaA4JuW.js} +9 -8
  192. package/dist/{openapi-schema--ARjyfQr.js → schema-Bol6gqXA.js} +3 -5
  193. package/dist/{schema-D3MnDMxa.js → schema-DjQBcAP9.js} +4 -2
  194. package/dist/scim/index.d.ts +1 -1
  195. package/dist/scim/index.js +1 -1
  196. package/dist/{scim-BFGBBAqR.js → scim-vFR1O5oG.js} +6 -12
  197. package/dist/{scopes-CVdPrWN-.js → scopes-tvpa34ep.js} +10 -2
  198. package/dist/server/index.d.ts +18 -8
  199. package/dist/server/index.js +8 -8
  200. package/dist/{server-DlZ28Oz5.js → server-ZYEHtNHS.js} +4 -4
  201. package/dist/{create-B1d519XK.d.ts → server-types-DdqBwZN_.d.ts} +69 -33
  202. package/dist/shared-1uhI-e-b.js +294 -0
  203. package/dist/{shared-DRu8VFVM.js → shared-JhMeOsDF.js} +1 -1
  204. package/dist/{sink-Bd9PSyfq.js → sink-BTtmfPnE.js} +1 -1
  205. package/dist/{sink-B1fZzIMf.d.ts → sink-CPN4zLfs.d.ts} +1 -1
  206. package/dist/{skills-Biq5uup3.js → skills-BZdRQkxs.js} +4 -3
  207. package/dist/{skills-C5CbhhpG.js → skills-Dle4ZoLF.js} +2 -2
  208. package/dist/{snapshot-Enxd0n-s.js → snapshot-Dc9CHPME.js} +116 -13
  209. package/dist/{snapshot-cache-D6jLelln.js → snapshot-cache-Cod40D-X.js} +1 -1
  210. package/dist/{snapshot-cache-B-LxUahj.d.ts → snapshot-cache-J5T7t_vD.d.ts} +1 -1
  211. package/dist/solid/index.d.ts +22 -22
  212. package/dist/solid/index.js +40 -10
  213. package/dist/{sources-4p0-4xQm.js → sources-B1-b-R0t.js} +25 -26
  214. package/dist/{sources-BdOYLw9j.d.ts → sources-Dljy06zL.d.ts} +6 -2
  215. package/dist/{sql-xdg5f4Fi.js → sql-t8teWOfo.js} +19 -3
  216. package/dist/{src-BDwEZWrZ.js → src-Bb7no-hS.js} +194 -123
  217. package/dist/ssf/index.d.ts +3 -3
  218. package/dist/ssf/index.js +58 -61
  219. package/dist/store-9KO4BlkB.d.ts +147 -0
  220. package/dist/{store-DMAWwAJV.js → store-ILkLUj_o.js} +4 -4
  221. package/dist/{store-options-ByhZq1jV.js → store-options-CbUHDoSe.js} +16 -7
  222. package/dist/{stores-BT2pSCub.js → stores-BHXdSbw9.js} +7 -3
  223. package/dist/stores-Cxz_80g-.d.ts +31 -0
  224. package/dist/{stream-DDpvynSB.js → stream-BMui98KK.js} +2 -1
  225. package/dist/{stream-D1RXubw2.d.ts → stream-Dwsg6WwE.d.ts} +2 -2
  226. package/dist/{subject-settings-BwBmCdTR.js → subject-settings-CkEwrw3W.js} +23 -5
  227. package/dist/supabase/index.d.ts +4 -4
  228. package/dist/supabase/index.js +3 -3
  229. package/dist/supabase/middleware.d.ts +11 -5
  230. package/dist/supabase/middleware.js +10 -7
  231. package/dist/{supabase-C0qESOa-.js → supabase-C1TWlnYt.js} +36 -52
  232. package/dist/{supabase-s4o9s1O1.js → supabase-Dbqr141s.js} +2 -2
  233. package/dist/supabase-hook-BULg7Ut_.js +2 -0
  234. package/dist/{supabase-hook-ntETYCQu.js → supabase-hook-Cva3ikXz.js} +730 -781
  235. package/dist/{supautils-u8jXTGrt.js → supautils-B6HYL9eL.js} +2 -2
  236. package/dist/svelte/Protected.svelte +9 -2
  237. package/dist/svelte/index.d.ts +6 -6
  238. package/dist/svelte/index.js +25 -11
  239. package/dist/svelte/runtime.d.ts +10 -3
  240. package/dist/svelte/runtime.js +4 -3
  241. package/dist/svelte/source.d.ts +6 -6
  242. package/dist/svelte/source.js +4 -4
  243. package/dist/{validity-uOp8UpYn.js → tenancy-DshjqY0n.js} +3 -39
  244. package/dist/terminal/index.d.ts +5 -5
  245. package/dist/terminal/index.js +18 -34
  246. package/dist/testing/index.d.ts +89 -77
  247. package/dist/testing/index.js +1276 -1262
  248. package/dist/testing/saas/index.d.ts +4 -4
  249. package/dist/testing/saas/index.js +2 -2
  250. package/dist/testing/saas/permissions.d.ts +1 -1
  251. package/dist/testing/saas/permissions.js +1 -1
  252. package/dist/thenable-QSmvt-vZ.js +65 -0
  253. package/dist/{token-CIWxJOCh.js → token-Bx9qy30p.js} +1 -1
  254. package/dist/tool-refusal-CQ7OEia9.js +41 -0
  255. package/dist/trpc/index.d.ts +5 -5
  256. package/dist/trpc/index.js +7 -8
  257. package/dist/{types-DbjRN55U.d.ts → types-7rJVLWe5.d.ts} +82 -4
  258. package/dist/{types-aqOHTHcp.d.ts → types-Br9IXUBG.d.ts} +1 -1
  259. package/dist/types-ByUo56un.d.ts +88 -0
  260. package/dist/{types-Cq_H8N_X.d.ts → types-C0dee0Qf.d.ts} +2 -2
  261. package/dist/{types-DxiCGmmd.d.ts → types-CIlTojhq.d.ts} +2 -2
  262. package/dist/{types-QCuYJh4q.d.ts → types-CUcFZfpU.d.ts} +1 -1
  263. package/dist/{types-C97IskBw.d.ts → types-CqrjB9o6.d.ts} +1 -1
  264. package/dist/{types-BnIEz1sU.d.ts → types-DHrmBJLH.d.ts} +24 -6
  265. package/dist/{types-Dnemwd77.d.ts → types-DpWfQdSh.d.ts} +5 -1
  266. package/dist/{types-Bvc4oWT6.d.ts → types-DvupZE0w.d.ts} +1 -1
  267. package/dist/unplugin/index.d.ts +1 -1
  268. package/dist/unplugin/index.js +1 -1
  269. package/dist/{usage-B0YuTQRO.js → usage-4G6t643F.js} +2 -2
  270. package/dist/{usage-ItS7nLcl.js → usage-CG9nOYZw.js} +7 -7
  271. package/dist/usage-iFLJ0-rr.js +2 -0
  272. package/dist/{validation-error-Ba264OaJ.d.ts → validation-error-BSSw0l_8.d.ts} +1 -1
  273. package/dist/{validation-error-CnjZ4t92.js → validation-error-ZfUHbKvf.js} +1 -1
  274. package/dist/validity-dVrUEPJt.js +62 -0
  275. package/dist/{verifier-BxBo6I44.js → verifier-DMr_Zmb_.js} +51 -15
  276. package/dist/{rls-verify-CMv9H3wV.js → verify-BztUB3GX.js} +668 -239
  277. package/dist/{version-BvacVTZR.js → version-BEogC-rB.js} +1 -1
  278. package/dist/{views-Soe7bGSC.js → views-CJsrBS1f.js} +23 -1
  279. package/dist/{vocabulary-DA8a8zif.d.ts → vocabulary-hhEFLFoL.d.ts} +15 -6
  280. package/dist/vue/index.d.ts +24 -19
  281. package/dist/vue/index.js +24 -8
  282. package/dist/watch-C8TpsAl4.js +2 -0
  283. package/dist/{watch-DVBJ9cBq.js → watch-zeucB7eF.js} +6 -6
  284. package/dist/webmcp/index.d.ts +2 -2
  285. package/dist/webmcp/index.js +13 -37
  286. package/dist/wrap-Cr93qqdP.d.ts +14 -0
  287. package/dist/wrap-DWsU_5Bd.js +26 -0
  288. package/package.json +8 -8
  289. package/schemas/catalog-v1.json +6 -0
  290. package/skills/permdock-credentials/SKILL.md +1 -1
  291. package/skills/permdock-credentials/references/tokens-keys-links.md +7 -2
  292. package/skills/permdock-data/references/queries-and-rls.md +4 -0
  293. package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +1 -0
  294. package/skills/permdock-wire/SKILL.md +2 -2
  295. package/skills/permdock-wire/references/adapters.md +9 -1
  296. package/skills/permdock-wire/references/policy-options.md +10 -1
  297. package/dist/catalog-CRW5Mx_B.js +0 -2
  298. package/dist/collect-DSWOk19R.js +0 -2
  299. package/dist/create-CMwIl-w2.js +0 -253
  300. package/dist/delegation-D8pUEuce.js +0 -103
  301. package/dist/doctor-DvH0IQff.js +0 -1194
  302. package/dist/doctor-collect-CjdO0wQX.js +0 -665
  303. package/dist/evaluation-items-CfCCejQd.js +0 -40
  304. package/dist/fields-BMl1RxoX.js +0 -26
  305. package/dist/grantee-Cv5Sogfv.js +0 -602
  306. package/dist/hosted-DJQw46hn.js +0 -266
  307. package/dist/instance-options-Dhhcnm3y.js +0 -22
  308. package/dist/load-DwJUafYN.js +0 -2
  309. package/dist/map-AcxK9o_D.js +0 -147
  310. package/dist/permissions-DVoF6dMt.js +0 -662
  311. package/dist/powersync-CrBX8hY6.js +0 -2
  312. package/dist/protected-xAr24FEC.d.ts +0 -40
  313. package/dist/relations-cjOL01hZ.js +0 -505
  314. package/dist/rls-graph-CHwx0V8q.js +0 -435
  315. package/dist/rls-shared-Cewd_-zI.js +0 -495
  316. package/dist/store-jOBYpiXC.d.ts +0 -36
  317. package/dist/stores-C0IMQrGI.d.ts +0 -52
  318. package/dist/supabase-config-Bj3iDH2I.js +0 -472
  319. package/dist/supabase-hook-gd3s8bxB.js +0 -2
  320. package/dist/thenable-okc2xDsj.js +0 -10
  321. package/dist/types-CKNSyIf_.d.ts +0 -52
  322. package/dist/usage-DorAJiU_.js +0 -2
  323. package/dist/watch-BwxLTYMZ.js +0 -2
@@ -1,15 +1,15 @@
1
- import { n as validateOverlay, t as validateOpenapi } from "./openapi-schema--ARjyfQr.js";
2
- import { c as getResource, i as findPermission } from "./permissions-DVoF6dMt.js";
3
- import { a as definePolicy } from "./policy-xyWg7QdR.js";
4
- import { a as loadModule, n as asPolicy, o as pickNamed, t as asPermissionTree } from "./load-DhWEB9P1.js";
1
+ import { n as validateOverlay, t as validateOpenapi } from "./schema-Bol6gqXA.js";
2
+ import { r as isRecord } from "./compact-CAf557ZB.js";
3
+ import { a as getResource, n as findPermission } from "./permission-registry-BsblpB-z.js";
4
+ import { o as definePolicy } from "./hosted-CBHgkzDl.js";
5
+ import { i as readJsonFile, s as writeFileEnsuringDir } from "./files-D_JIzUrP.js";
6
+ import { a as loadModule, n as asPolicy, s as pickNamed, t as asPermissionTree } from "./load-C3_oTHyO.js";
5
7
  import { t as shortDiff } from "./text-diff-BdkkYSbi.js";
6
- import { c as openapiVersion, o as createPermDock } from "./openapi-BqRBvAng.js";
7
- import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
8
- import { dirname, resolve } from "node:path";
9
- //#region src/cli/openapi.ts
10
- function isRecord(value) {
11
- return value !== null && typeof value === "object" && !Array.isArray(value);
12
- }
8
+ import { c as openapiVersion, o as createPermDock } from "./openapi-DBzHQbov.js";
9
+ import { r as fileDrift } from "./output-files-CgIsvdSa.js";
10
+ import { existsSync } from "node:fs";
11
+ import { resolve } from "node:path";
12
+ //#region src/cli/openapi/openapi.ts
13
13
  function mergeRecord(base, extra) {
14
14
  const result = {};
15
15
  for (const [key, value] of Object.entries(base)) result[key] = value;
@@ -192,7 +192,7 @@ async function runOpenapi(input) {
192
192
  };
193
193
  let parsed;
194
194
  try {
195
- parsed = JSON.parse(readFileSync(docPath, "utf8"));
195
+ parsed = readJsonFile(docPath);
196
196
  } catch {
197
197
  return {
198
198
  code: 2,
@@ -223,27 +223,23 @@ async function runOpenapi(input) {
223
223
  output: conformance
224
224
  };
225
225
  const text = stableJson(result);
226
- const outPath = resolve(input.cwd, input.out ?? input.doc);
226
+ const outFile = input.out ?? input.doc;
227
+ const outPath = resolve(input.cwd, outFile);
227
228
  if (input.check) {
228
- if (!existsSync(outPath)) return {
229
- code: 1,
230
- output: `openapi drift: missing ${input.out ?? input.doc}`
231
- };
232
- const current = readFileSync(outPath, "utf8");
233
- if (current === text) return {
229
+ const found = fileDrift(outPath, text);
230
+ if (found === void 0) return {
234
231
  code: 0,
235
232
  output: "openapi up to date"
236
233
  };
237
234
  return {
238
235
  code: 1,
239
- output: `openapi drift\n${shortDiff(input.out ?? input.doc, current, text)}`
236
+ output: found.kind === "missing" ? `openapi drift: missing ${outFile}` : `openapi drift\n${shortDiff(outFile, found.onDisk, text)}`
240
237
  };
241
238
  }
242
- mkdirSync(dirname(outPath), { recursive: true });
243
- writeFileSync(outPath, text);
239
+ writeFileEnsuringDir(outPath, text);
244
240
  return {
245
241
  code: 0,
246
- output: `wrote ${input.out ?? input.doc}`
242
+ output: `wrote ${outFile}`
247
243
  };
248
244
  }
249
245
  //#endregion
@@ -1,5 +1,5 @@
1
- import { t as compact } from "./compact-y6vfu2_f.js";
2
- import { _ as listPermissions, i as findPermission, p as isPermission } from "./permissions-DVoF6dMt.js";
1
+ import { r as isRecord, t as compact } from "./compact-CAf557ZB.js";
2
+ import { c as listPermissions, n as findPermission, o as isPermission } from "./permission-registry-BsblpB-z.js";
3
3
  import { n as sha256 } from "./sha256-BO0swRXL.js";
4
4
  import { t as requiresApproval } from "./approval-required-TzNB9oQA.js";
5
5
  import { i as PROFILE_PARAMETERS, n as GNAP_RESERVED, r as PROFILE_NAMES, t as DRAFT_PINS } from "./pins-8ILTftC9.js";
@@ -402,9 +402,6 @@ function operationPermissions(operations, options = {}) {
402
402
  }
403
403
  };
404
404
  }
405
- function isRecord(value) {
406
- return value !== null && typeof value === "object" && !Array.isArray(value);
407
- }
408
405
  /**
409
406
  * The operation permissions an OpenAPI document declares: every operation
410
407
  * whose `x-permdock-permissions` names exactly one permission of `tree`, keyed
@@ -1,4 +1,4 @@
1
- import { a as listArg, i as globalArgs, s as stringArg, t as COMMAND_DESCRIPTIONS } from "./commands-BeaGNj_o.js";
1
+ import { a as listArg, i as globalArgs, s as stringArg, t as COMMAND_DESCRIPTIONS } from "./commands-Cpip4ULx.js";
2
2
  import { defineCommand } from "citty";
3
3
  //#region src/cli/commands/openapi.ts
4
4
  function openapi(ctx) {
@@ -122,7 +122,7 @@ function openapi(ctx) {
122
122
  const doc = listArg(rawArgs, "doc")[0];
123
123
  if (parsed._[0] === "import") {
124
124
  if (doc === void 0) throw new Error("openapi --doc is required");
125
- const { runOpenapiImport } = await import("./openapi-import-cmwetbzw.js");
125
+ const { runOpenapiImport } = await import("./import-UHk1N7vH.js");
126
126
  ctx.report(await runOpenapiImport({
127
127
  cwd: ctx.cwd,
128
128
  doc,
@@ -134,7 +134,7 @@ function openapi(ctx) {
134
134
  }));
135
135
  return;
136
136
  }
137
- const result = await (await import("./openapi-CqqEbHsL.js")).runOpenapi({
137
+ const result = await (await import("./openapi-BJdBmYDG.js")).runOpenapi({
138
138
  cwd: ctx.cwd,
139
139
  config: ctx.config,
140
140
  rest: parsed._,
@@ -1,9 +1,9 @@
1
- import { C as Policy, D as PolicyVocabulary, Nr as Principal, ln as PermDock } from "../policy-IB6yxpC3.js";
2
- import { f as Permission } from "../permissions-DttnqqxC.js";
1
+ import { E as Policy, Or as Principal, j as PolicyVocabulary, jt as PermDock } from "../policy-types-sp9P1iIV.js";
2
+ import { d as Permission } from "../permission-types-Dg39z9Kv.js";
3
3
  import { n as RevocationFeed } from "../revocations-Cy06JNx2.js";
4
- import { A as ConnectionOptions, O as Connection, n as OpenApiHooks } from "../create-B1d519XK.js";
5
- import { t as ServerAdapterOptions } from "../bind-C_ob3LKa.js";
6
- import { t as StreamProtectOptions } from "../stream-D1RXubw2.js";
4
+ import { A as ConnectionOptions, O as Connection, i as OpenApiHooks } from "../server-types-DdqBwZN_.js";
5
+ import { t as ServerAdapterOptions } from "../bind-BzqG8SMb.js";
6
+ import { t as StreamProtectOptions } from "../stream-Dwsg6WwE.js";
7
7
  import { Middleware } from "@orpc/server";
8
8
  //#region src/orpc/create.d.ts
9
9
  type OrpcMiddlewareOpts<TCtx extends object = object, TInput = unknown> = {
@@ -1,10 +1,10 @@
1
- import { t as compact } from "../compact-y6vfu2_f.js";
2
- import { p as isPermission } from "../permissions-DVoF6dMt.js";
3
- import { a as problemMessage } from "../http-SO7qGttf.js";
4
- import { t as problemFromError } from "../map-error-pgUWNNtG.js";
5
- import { n as attached } from "../bind-CuzGytRf.js";
6
- import { a as reloadAfter, r as isAsyncIterable } from "../stream-DDpvynSB.js";
7
- import { i as rpcCode, n as guardStream, r as problemBody, t as bindRpcKernel } from "../rpc-DL9Sqvb1.js";
1
+ import { t as compact } from "../compact-CAf557ZB.js";
2
+ import { o as isPermission } from "../permission-registry-BsblpB-z.js";
3
+ import { o as problemMessage } from "../http-BBoKefeS.js";
4
+ import { t as problemFromError } from "../map-error-BE27PYkE.js";
5
+ import { n as attached } from "../bind-kk-uyCwH.js";
6
+ import { a as reloadAfter, r as isAsyncIterable } from "../stream-BMui98KK.js";
7
+ import { i as rpcCode, n as guardStream, r as problemBody, t as bindRpcKernel } from "../rpc-nYC3cR_u.js";
8
8
  import { ORPCError } from "@orpc/server";
9
9
  //#region src/orpc/create.ts
10
10
  function toOpts(mw, input, next) {
@@ -71,7 +71,7 @@ function permissionOf(procedure) {
71
71
  }
72
72
  }
73
73
  function createPermDock(policy, options) {
74
- const { kernel, bind, attach, scopeOf, connection, evaluate } = bindRpcKernel(policy, options, "orpc", (opts) => opts.context, (opts) => opts.path?.join(".") ?? "orpc");
74
+ const { kernel, bind, attach, scopeOf, connection, evaluate, guard: runGuard } = bindRpcKernel(policy, options, "orpc", (opts) => opts.context, (opts) => opts.path?.join(".") ?? "orpc");
75
75
  /** Instances this factory built, with the tenant each was built for. */
76
76
  const issued = /* @__PURE__ */ new WeakMap();
77
77
  const issue = (instance, scope) => {
@@ -107,9 +107,7 @@ function createPermDock(policy, options) {
107
107
  };
108
108
  const protect = (permission, loadData, protectOptions) => tagged(permission, (async (mwOptions, input) => {
109
109
  const opts = toOpts(mwOptions, input, mwOptions.next);
110
- const request = bind(opts);
111
- const scope = await scopeOf(opts);
112
- const guard = await kernel.protect(permission, loadData === void 0 ? void 0 : () => loadData(opts), protectOptions)(request, scope);
110
+ const { request, scope, guard } = await runGuard(permission, loadData, opts, protectOptions);
113
111
  if (guard.ok) {
114
112
  const nextCtx = {
115
113
  ...opts.context,
@@ -1,5 +1,5 @@
1
- import { D as PolicyVocabulary, ln as PermDock } from "../policy-IB6yxpC3.js";
2
- import { a as OtelOptions, i as OtelApi, n as GEN_AI_TOOL_CALL_ID, o as OtelWrap, r as GEN_AI_TOOL_NAME, s as StructuralLogger, t as GENAI_SEMCONV_PIN } from "../types-QCuYJh4q.js";
1
+ import { j as PolicyVocabulary, jt as PermDock } from "../policy-types-sp9P1iIV.js";
2
+ import { a as OtelOptions, i as OtelApi, n as GEN_AI_TOOL_CALL_ID, o as OtelWrap, r as GEN_AI_TOOL_NAME, s as StructuralLogger, t as GENAI_SEMCONV_PIN } from "../types-CUcFZfpU.js";
3
3
  //#region src/otel/instrument.d.ts
4
4
  /**
5
5
  * Listens on one instance. Spans carry no duration and no histogram is
@@ -1,4 +1,6 @@
1
- import { t as compact } from "../compact-y6vfu2_f.js";
1
+ import { t as compact } from "../compact-CAf557ZB.js";
2
+ import { n as wrapPermDock } from "../wrap-DWsU_5Bd.js";
3
+ import { r as appObligationNames } from "../ocsf-uYFXGVw2.js";
2
4
  //#region src/otel/types.ts
3
5
  const GENAI_SEMCONV_PIN = "1.37.0";
4
6
  const GEN_AI_TOOL_NAME = "gen_ai.tool.name";
@@ -91,6 +93,8 @@ function attributesOf(event, options, parent) {
91
93
  "permdock.actor.kind": event.subject.actor?.kind,
92
94
  "permdock.delegation.scopes": event.subject.delegation?.scopes?.join(","),
93
95
  "permdock.matched.role": event.matched?.role,
96
+ "permdock.matched.name": event.matched?.name,
97
+ "permdock.obligations": appObligationNames(event)?.join(","),
94
98
  "permdock.denials.count": event.denials?.length,
95
99
  "permdock.token": event.token,
96
100
  "permdock.validate": event.trusted ? "trusted" : "boundary",
@@ -170,28 +174,27 @@ function instrument(permdock, options = {}) {
170
174
  return listen(permdock, options, resolveApi(options.api), () => void 0);
171
175
  }
172
176
  function instrumented(permdock, options, api) {
173
- let started;
174
- listen(permdock, options, api, () => started);
175
- const timed = (fn) => (...args) => {
176
- const outer = started === void 0;
177
- if (outer) started = now();
178
- try {
179
- return fn(...args);
180
- } finally {
181
- if (outer) started = void 0;
182
- }
183
- };
184
- return Object.freeze({
185
- ...permdock,
186
- can: timed(permdock.can),
187
- decide: timed(permdock.decide),
188
- assert: timed(permdock.assert),
189
- explain: timed(permdock.explain),
190
- filter: timed(permdock.filter),
191
- pick: timed(permdock.pick),
192
- actions: timed(permdock.actions),
193
- tenant: (id) => instrumented(permdock.tenant(id), options, api),
194
- team: (id) => instrumented(permdock.team(id), options, api)
177
+ return wrapPermDock(permdock, (inner) => {
178
+ let started;
179
+ listen(inner, options, api, () => started);
180
+ const timed = (fn) => (...args) => {
181
+ const outer = started === void 0;
182
+ if (outer) started = now();
183
+ try {
184
+ return fn(...args);
185
+ } finally {
186
+ if (outer) started = void 0;
187
+ }
188
+ };
189
+ return {
190
+ can: timed(inner.can),
191
+ decide: timed(inner.decide),
192
+ assert: timed(inner.assert),
193
+ explain: timed(inner.explain),
194
+ filter: timed(inner.filter),
195
+ pick: timed(inner.pick),
196
+ actions: timed(inner.actions)
197
+ };
195
198
  });
196
199
  }
197
200
  /** Returns an instrumented instance: timed spans and histogram, derived instances included. */
@@ -0,0 +1,140 @@
1
+ import { s as writeFileEnsuringDir } from "./files-D_JIzUrP.js";
2
+ import { t as shortDiff } from "./text-diff-BdkkYSbi.js";
3
+ import { existsSync, readFileSync, readdirSync, statSync } from "node:fs";
4
+ import { resolve } from "node:path";
5
+ /** How `path` on disk differs from `expected`; `undefined` when `same` holds. */
6
+ function fileDrift(path, expected, same = (a, b) => a === b) {
7
+ if (!existsSync(path)) return { kind: "missing" };
8
+ const onDisk = readFileSync(path, "utf8");
9
+ return same(onDisk, expected) ? void 0 : {
10
+ kind: "differs",
11
+ onDisk
12
+ };
13
+ }
14
+ /** `--check`: one entry per file that is missing or differs, naming its part; a differing file carries a short diff. */
15
+ function driftOf(cwd, files) {
16
+ const drift = [];
17
+ for (const file of files) {
18
+ if (file.rel === "-") continue;
19
+ const found = fileDrift(resolve(cwd, file.rel), file.text);
20
+ if (found?.kind === "missing") drift.push(`${file.part}: missing ${file.rel}`);
21
+ else if (found?.kind === "differs") drift.push(`${file.part}: ${file.rel}\n${shortDiff(file.rel, found.onDisk, file.text)}`);
22
+ }
23
+ return drift;
24
+ }
25
+ /** Writes every file but the stdout ones, whose text it returns for printing. */
26
+ function writeOutputFiles(cwd, files) {
27
+ const wrote = [];
28
+ const printed = [];
29
+ for (const file of files) {
30
+ if (file.rel === "-") {
31
+ printed.push(file.text.trimEnd());
32
+ continue;
33
+ }
34
+ const path = resolve(cwd, file.rel);
35
+ writeFileEnsuringDir(path, file.text);
36
+ wrote.push(file.rel);
37
+ }
38
+ return {
39
+ wrote,
40
+ printed: printed.join("\n")
41
+ };
42
+ }
43
+ const PARTS = [
44
+ "helpers",
45
+ "seeds",
46
+ "indexes",
47
+ "policies",
48
+ "hook"
49
+ ];
50
+ /** `--split helpers,seeds,indexes,policies,hook`: the parts in that fixed order, or an error. */
51
+ function parseSplit(raw) {
52
+ if (raw === void 0) return;
53
+ const names = raw.split(",").map((name) => name.trim()).filter((name) => name !== "");
54
+ if (names.filter((name) => !PARTS.some((part) => part === name)).length > 0 || names.length === 0) return `rls generate --split takes helpers, seeds, indexes, policies and hook, got '${raw}'`;
55
+ return PARTS.filter((part) => names.includes(part));
56
+ }
57
+ /** The path of one split part: `{part}` in `out` replaced by the part name. */
58
+ function partPath(out, part) {
59
+ return out.replaceAll("{part}", part);
60
+ }
61
+ /**
62
+ * pg-delta's per-schema, unnumbered layout: pg-delta orders statements by
63
+ * their dependencies, so no file needs a number to apply first.
64
+ */
65
+ function pgDeltaPath(root, part, schema) {
66
+ switch (part) {
67
+ case "helpers":
68
+ case "indexes":
69
+ case "seeds": return `${root}/${schema}/${part}.sql`;
70
+ case "policies": return `${root}/public/policies/permdock.sql`;
71
+ case "hook": return `${root}/${schema}/functions/custom_access_token_hook.sql`;
72
+ default: return part;
73
+ }
74
+ }
75
+ /** Whether `--seeds-out` names a migrations directory: it ends with \`/\` or is an existing directory. */
76
+ function isSeedsDirectory(cwd, out) {
77
+ if (out === "-") return false;
78
+ if (out.endsWith("/")) return true;
79
+ const path = resolve(cwd, out);
80
+ return existsSync(path) && statSync(path).isDirectory();
81
+ }
82
+ /**
83
+ * A generated data migration at `out`: a file, `-` for stdout, or a
84
+ * migrations directory that gets a new versioned file only when the newest
85
+ * one starting with `marker` differs. With `check`, the planned file is
86
+ * always returned, so drift names it.
87
+ */
88
+ function dataMigrationFile(input) {
89
+ if (!isSeedsDirectory(input.cwd, input.out)) return {
90
+ part: input.part,
91
+ rel: input.out,
92
+ text: input.text
93
+ };
94
+ const planned = seedsMigration(input.cwd, input.out, input.marker, input.text, input.now, input.part);
95
+ return !planned.current || input.check ? {
96
+ part: input.part,
97
+ rel: planned.rel,
98
+ text: input.text
99
+ } : void 0;
100
+ }
101
+ /** `YYYYMMDDHHMMSS` in UTC, the Supabase migration version. */
102
+ function migrationVersion(now) {
103
+ return now.toISOString().replaceAll(/[^0-9]/gu, "").slice(0, 14);
104
+ }
105
+ const VERSION_PREFIX = /^\d{14}(?=_)/u;
106
+ /**
107
+ * The version of a new migration that sorts after every migration in
108
+ * `names`: one second past the newest, so the same directory always gives the
109
+ * same name. Only a directory with no versioned migration falls back to `now`.
110
+ */
111
+ function nextMigrationVersion(names, now) {
112
+ const times = names.flatMap((name) => {
113
+ const stamp = VERSION_PREFIX.exec(name)?.[0];
114
+ return stamp === void 0 ? [] : [Date.UTC(Number(stamp.slice(0, 4)), Number(stamp.slice(4, 6)) - 1, Number(stamp.slice(6, 8)), Number(stamp.slice(8, 10)), Number(stamp.slice(10, 12)), Number(stamp.slice(12, 14)))];
115
+ });
116
+ return times.length === 0 ? migrationVersion(now) : migrationVersion(new Date(Math.max(...times) + 1e3));
117
+ }
118
+ /**
119
+ * The seeds part in a migrations directory: the newest migration there that
120
+ * starts with \`marker\` when its text is \`text\` already, otherwise a new
121
+ * \`<version>_permdock_seeds.sql\` one second after the newest migration
122
+ * (\`nextMigrationVersion\`), so a regeneration of the same directory names it
123
+ * the same. \`current\` is false when a new one is due. \`label\` replaces
124
+ * \`seeds\` in the file name for the other generated data migrations.
125
+ */
126
+ function seedsMigration(cwd, dir, marker, text, now, label = "seeds") {
127
+ const base = dir.endsWith("/") ? dir.slice(0, -1) : dir;
128
+ const path = resolve(cwd, base);
129
+ const latest = existsSync(path) ? readdirSync(path).filter((name) => name.endsWith(".sql")).toSorted().toReversed().find((name) => readFileSync(resolve(path, name), "utf8").startsWith(marker)) : void 0;
130
+ if (latest !== void 0 && readFileSync(resolve(path, latest), "utf8") === text) return {
131
+ rel: `${base}/${latest}`,
132
+ current: true
133
+ };
134
+ return {
135
+ rel: `${base}/${nextMigrationVersion(existsSync(path) ? readdirSync(path) : [], now)}_permdock_${label}.sql`,
136
+ current: false
137
+ };
138
+ }
139
+ //#endregion
140
+ export { parseSplit as a, seedsMigration as c, isSeedsDirectory as i, writeOutputFiles as l, driftOf as n, partPath as o, fileDrift as r, pgDeltaPath as s, dataMigrationFile as t };