permdock 0.1.0 → 0.2.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 (349) hide show
  1. package/README.md +106 -47
  2. package/dist/a2a/index.d.ts +7 -16
  3. package/dist/a2a/index.js +59 -98
  4. package/dist/adapter-context-mlWsVGGg.js +23 -0
  5. package/dist/ai-sdk/index.d.ts +37 -16
  6. package/dist/ai-sdk/index.js +30 -13
  7. package/dist/approvals/index.d.ts +3 -3
  8. package/dist/approvals/index.js +5 -4
  9. package/dist/{approvals-DaxY-Bdg.js → approvals-DbYAuNkG.js} +17 -11
  10. package/dist/approvers-DT4AVyIg.js +52 -0
  11. package/dist/{arazzo-CTeVuXr5.js → arazzo-BAgw9ap6.js} +2 -2
  12. package/dist/{arazzo-aoTkqYsJ.js → arazzo-cmvX2jDe.js} +2 -2
  13. package/dist/authzen/index.d.ts +4 -13
  14. package/dist/authzen/index.js +16 -50
  15. package/dist/better-auth/index.d.ts +20 -3
  16. package/dist/better-auth/index.js +27 -7
  17. package/dist/better-supabase/index.d.ts +206 -0
  18. package/dist/better-supabase/index.js +620 -0
  19. package/dist/bind-CVy3Espv.d.ts +25 -0
  20. package/dist/bind-VnYn2HKq.js +97 -0
  21. package/dist/boundary-BM8a_P6E.js +13 -0
  22. package/dist/boundary-BmHxVH1J.d.ts +15 -0
  23. package/dist/canonical-json-DemiK4Vp.js +26 -0
  24. package/dist/{capability-B68OFnZx.js → capability-4qPdO9gk.js} +7 -5
  25. package/dist/{capability-BDG_nkxt.d.ts → capability-Dq43tT1u.d.ts} +2 -2
  26. package/dist/catalog/index.d.ts +1 -1
  27. package/dist/catalog/index.js +1 -1
  28. package/dist/catalog-BjZSovXQ.js +2 -0
  29. package/dist/{catalog-doc-BSo_Q_-6.js → catalog-doc-Dsc9y7sd.js} +23 -12
  30. package/dist/{catalog-B0E6bggc.js → catalog-h2tlKFkq.js} +2 -2
  31. package/dist/{catalog-H-vFGwWK.js → catalog-z8q6bi_r.js} +4 -4
  32. package/dist/claude-agent/index.d.ts +5 -14
  33. package/dist/claude-agent/index.js +4 -10
  34. package/dist/clerk/index.d.ts +12 -3
  35. package/dist/clerk/index.js +26 -5
  36. package/dist/cli/bin.js +1 -1
  37. package/dist/cli/index.d.ts +3 -3
  38. package/dist/cli/index.js +2 -2
  39. package/dist/clients-C7zLFuWT.d.ts +12 -0
  40. package/dist/clients-DjU5ABMy.js +23 -0
  41. package/dist/cloud/index.d.ts +4 -5
  42. package/dist/cloud/index.js +20 -6
  43. package/dist/{cloud-BNQTrmrr.js → cloud-BGhHS-lY.js} +2 -2
  44. package/dist/{cloud-Cuxr6Czw.js → cloud-Bo3e9Ak3.js} +7 -6
  45. package/dist/{collect-O-tOtbnk.js → collect-DDDv_ESs.js} +194 -42
  46. package/dist/collect-DLlujdHC.js +83 -0
  47. package/dist/collect-rG2IQ3t0.js +2 -0
  48. package/dist/{commands-BMh_Etm2.js → commands-DWOrSQic.js} +16 -12
  49. package/dist/compile/index.d.ts +3 -0
  50. package/dist/compile/index.js +2 -0
  51. package/dist/{compile-D22iwvuV.js → compile-Ba4blROR.js} +85 -30
  52. package/dist/compile-CNnl6uIt.d.ts +94 -0
  53. package/dist/config-BJiM-xAm.js +157 -0
  54. package/dist/config-Bn00Z3ks.js +36 -0
  55. package/dist/config-report-Dw_JcUqT.js +44 -0
  56. package/dist/{connection-JvqwHODC.js → connection-CU8MQxRi.js} +1 -1
  57. package/dist/{context-CKEAabd7.js → context-Ttp0ekMT.js} +36 -27
  58. package/dist/convex/index.d.ts +9 -4
  59. package/dist/convex/index.js +14 -4
  60. package/dist/create-BWyx3jua.d.ts +245 -0
  61. package/dist/create-CPhDL6qx.js +253 -0
  62. package/dist/{credential-B_rkUNlY.js → credential-8P81ff4u.js} +26 -46
  63. package/dist/delegation-D8pUEuce.js +103 -0
  64. package/dist/{describe-Bt1YD5uS.js → describe-B_gVZEVi.js} +10 -15
  65. package/dist/{describe-DernyItf.d.ts → describe-PdoqESvg.d.ts} +9 -10
  66. package/dist/{diff-x5Il8LVa.js → diff-B8Tunc3o.js} +44 -11
  67. package/dist/{diff-BUzf5Poi.js → diff-CzqLxZ77.js} +2 -2
  68. package/dist/doctor-WpvG6p4k.js +1194 -0
  69. package/dist/doctor-collect-ByfYlNv1.js +664 -0
  70. package/dist/{doctor-Bqo6FwUa.js → doctor-rOr-4ZfS.js} +2 -2
  71. package/dist/drizzle/index.d.ts +4 -3
  72. package/dist/drizzle/index.js +3 -3
  73. package/dist/elysia/index.d.ts +6 -28
  74. package/dist/elysia/index.js +16 -60
  75. package/dist/{errors-DSMnAVNa.js → errors-CWfoNg9N.js} +8 -4
  76. package/dist/{errors-Iy71s7Oj.js → errors-Cz5zn0mW.js} +17 -71
  77. package/dist/{errors-DbZ1YOnb.d.ts → errors-DAqevpNk.d.ts} +8 -21
  78. package/dist/{errors-m3u9TmDu.js → errors-DRnGZHzF.js} +4 -1
  79. package/dist/evaluation-items-CfCCejQd.js +40 -0
  80. package/dist/{evaluations-DsAU9ppl.js → evaluations-tz6D9A2G.js} +28 -46
  81. package/dist/eve/index.d.ts +6 -15
  82. package/dist/eve/index.js +7 -12
  83. package/dist/expiry-BoBJ8Tvc.js +7 -0
  84. package/dist/express/index.d.ts +6 -29
  85. package/dist/express/index.js +28 -58
  86. package/dist/fastify/index.d.ts +6 -29
  87. package/dist/fastify/index.js +16 -65
  88. package/dist/fields-BMl1RxoX.js +26 -0
  89. package/dist/{files-B_wAGYmt.js → files-DWUN9PzI.js} +5 -1
  90. package/dist/{fixtures-Cvaw0gDG.js → fixtures-ht28Cplr.js} +5 -2
  91. package/dist/{freeze-y1_jQL4v.js → freeze-CrU8nQeX.js} +31 -2
  92. package/dist/{from-snapshot-BMGnhmgv.js → from-snapshot-C3sHpZNS.js} +65 -48
  93. package/dist/{grantee-Bv04_Vzf.js → grantee-Cv5Sogfv.js} +88 -7
  94. package/dist/graph-sql-B-dsAT6j.d.ts +29 -0
  95. package/dist/{headers-B5RRv3Xm.js → headers-BZSDieNT.js} +1 -1
  96. package/dist/{headers-C8SHQccD.d.ts → headers-Cf-zWvsO.d.ts} +1 -1
  97. package/dist/helpers-H_KARDVC.js +421 -0
  98. package/dist/hono/index.d.ts +6 -28
  99. package/dist/hono/index.js +11 -43
  100. package/dist/{hosted-BwKQ1BTA.js → hosted-DJQw46hn.js} +6 -5
  101. package/dist/{http-GgVApX1k.js → http-BIhmLfCc.js} +4 -20
  102. package/dist/http-SO7qGttf.js +44 -0
  103. package/dist/ids-DC4V4CFu.js +18 -0
  104. package/dist/{index-LF_hS-yn.d.ts → index-A0YNL8jZ.d.ts} +1 -1
  105. package/dist/index-CtE07CBF.d.ts +6 -0
  106. package/dist/{index-xIxJLwOQ.d.ts → index-D3vbkoSI.d.ts} +75 -7
  107. package/dist/{index-CltcQ4Bf.d.ts → index-D6_cSa1z.d.ts} +68 -5
  108. package/dist/index.d.ts +14 -9
  109. package/dist/index.js +22 -17
  110. package/dist/instance-options-BK_rNOSC.d.ts +11 -0
  111. package/dist/instance-options-Dhhcnm3y.js +22 -0
  112. package/dist/{parse-DPfIvFMU.js → json-schema-BsAflUGW.js} +28 -57
  113. package/dist/jwt/index.d.ts +10 -6
  114. package/dist/jwt/index.js +32 -13
  115. package/dist/kernel-GSQnMz3O.js +208 -0
  116. package/dist/kysely/index.d.ts +4 -3
  117. package/dist/kysely/index.js +3 -3
  118. package/dist/live-options-H2eG8dfJ.js +60 -0
  119. package/dist/{load-BZ24CpZP.js → load-DhWEB9P1.js} +16 -10
  120. package/dist/load-DwJUafYN.js +2 -0
  121. package/dist/manifest-iaoBXHKc.js +783 -0
  122. package/dist/manifest-uDS9y5de.d.ts +206 -0
  123. package/dist/{map-DowSO96j.js → map-AcxK9o_D.js} +4 -15
  124. package/dist/{map-claims-B_6I1Rn-.js → map-claims-Z4QZOiFF.js} +13 -4
  125. package/dist/map-error-pgUWNNtG.js +23 -0
  126. package/dist/may-use-DndQ5tQ-.js +77 -0
  127. package/dist/mcp/index.d.ts +54 -22
  128. package/dist/mcp/index.js +218 -178
  129. package/dist/nest/index.d.ts +26 -31
  130. package/dist/nest/index.js +75 -84
  131. package/dist/next/client.d.ts +7 -8
  132. package/dist/next/client.js +11 -9
  133. package/dist/next/index.d.ts +30 -47
  134. package/dist/next/index.js +45 -60
  135. package/dist/next/plugin.d.ts +1 -1
  136. package/dist/next/plugin.js +32 -1
  137. package/dist/node/index.d.ts +9 -28
  138. package/dist/node/index.js +11 -43
  139. package/dist/openai/index.d.ts +6 -15
  140. package/dist/openai/index.js +7 -20
  141. package/dist/openapi/index.d.ts +87 -4
  142. package/dist/openapi/index.js +3 -3
  143. package/dist/{openapi-CwePaF7C.js → openapi-Bbg4wGVL.js} +3 -3
  144. package/dist/{openapi-DcqM8nU7.js → openapi-BqRBvAng.js} +237 -5
  145. package/dist/{openapi-DWD0Uc_4.js → openapi-CqqEbHsL.js} +5 -5
  146. package/dist/{openapi-import-BWRUNNeW.js → openapi-import-cmwetbzw.js} +1 -1
  147. package/dist/{openapi-schema-D8j_T9tO.js → openapi-schema--ARjyfQr.js} +2 -2
  148. package/dist/orpc/index.d.ts +15 -28
  149. package/dist/orpc/index.js +74 -117
  150. package/dist/otel/index.d.ts +2 -2
  151. package/dist/parse-BuyjxhZV.js +53 -0
  152. package/dist/parse-local-manifest-BkGQNzAh.d.ts +10 -0
  153. package/dist/parse-local-manifest-BrMozJCo.js +36 -0
  154. package/dist/pdp/index.d.ts +2 -2
  155. package/dist/pdp/index.js +14 -127
  156. package/dist/{permdock-yoZ7EjxX.js → permdock-CzqXjCpU.js} +641 -126
  157. package/dist/{permissions-B8vCg_bI.d.ts → permissions-CDgvKG5L.d.ts} +2 -2
  158. package/dist/{permissions-CofRqesP.js → permissions-CpZrivYv.js} +3 -3
  159. package/dist/{permissions-DC7GROPA.js → permissions-DVoF6dMt.js} +77 -15
  160. package/dist/{permissions-B4apnahQ.d.ts → permissions-DttnqqxC.d.ts} +34 -5
  161. package/dist/{pins-CqE1jZuF.js → pins-8ILTftC9.js} +2 -2
  162. package/dist/{policy-CInmNGkM.d.ts → policy-CFZAr_Al.d.ts} +330 -37
  163. package/dist/{policy-Cq2fB8Q5.d.ts → policy-D8UFyERw.d.ts} +2 -2
  164. package/dist/{policy-ANp36PnI.js → policy-xyWg7QdR.js} +173 -22
  165. package/dist/powersync-A8x_Yyvh.js +2 -0
  166. package/dist/powersync-C7kLglqX.js +540 -0
  167. package/dist/powersync-yW1UUFzp.js +62 -0
  168. package/dist/prisma/index.d.ts +3 -2
  169. package/dist/prisma/index.js +45 -20
  170. package/dist/{problem-Cgp9-KZA.js → problem-B43ztKIm.js} +74 -109
  171. package/dist/problem-details-CkL50EEf.d.ts +7 -0
  172. package/dist/problem-details-_AMOYz-w.js +144 -0
  173. package/dist/{protected-BuPAycJT.d.ts → protected-CNsMzrVd.d.ts} +5 -4
  174. package/dist/protected-Cs6kTaHo.js +100 -0
  175. package/dist/protected-bZs6rbT1.d.ts +40 -0
  176. package/dist/{provider-wTAUda2v.d.ts → provider-Cjr62YMV.d.ts} +1 -1
  177. package/dist/provider-DLzpb2Xz.js +52 -0
  178. package/dist/provider-store-DNyC1y48.js +43 -0
  179. package/dist/react/index.d.ts +7 -5
  180. package/dist/react/index.js +5 -4
  181. package/dist/react/provider-client.d.ts +1 -1
  182. package/dist/react/provider-client.js +1 -1
  183. package/dist/react-native/index.d.ts +166 -10
  184. package/dist/react-native/index.js +607 -85
  185. package/dist/{refs-ChLSxbST.js → refs-KYb4ntaz.js} +4 -3
  186. package/dist/{relations-r4soIFZB.js → relations-cjOL01hZ.js} +110 -31
  187. package/dist/replay-BsOyTrdV.js +28 -0
  188. package/dist/replay-sqBGMnNs.d.ts +5 -0
  189. package/dist/resource-ref-CaS9yVPi.js +20 -0
  190. package/dist/revocations-Bhr0aMIC.js +27 -0
  191. package/dist/rls-BMNydpHk.js +2521 -0
  192. package/dist/{rls-BOFU3chG.js → rls-CEvs64Kj.js} +8 -3
  193. package/dist/rls-fields-BMasREhR.js +3502 -0
  194. package/dist/{rls-graph-DxQ39PJj.js → rls-graph-pc9fuXYm.js} +100 -36
  195. package/dist/{rls-import-CXV6LBlS.js → rls-import-D8F7j35Q.js} +7 -6
  196. package/dist/{rls-migrate-DrFPbf8p.js → rls-migrate-7wikfrVI.js} +6 -5
  197. package/dist/rls-ownership-B5Lkq62W.js +843 -0
  198. package/dist/rls-shared-aOQ4hGTO.js +493 -0
  199. package/dist/rls-verify-D8B7dOTh.js +745 -0
  200. package/dist/{row-check-BajTgQZ-.d.ts → row-check-Dt35czLy.d.ts} +12 -15
  201. package/dist/rpc-DOK54_CS.js +89 -0
  202. package/dist/{run-CJ6UvS3a.js → run-YXCJDNYk.js} +31 -12
  203. package/dist/runtime-CB8gQFvS.js +11 -0
  204. package/dist/{saas-BRrZzJkM.js → saas-Bj_FFkjN.js} +17 -7
  205. package/dist/{schema-P8yoma__.js → schema-D3MnDMxa.js} +8 -4
  206. package/dist/scim/index.d.ts +1 -1
  207. package/dist/scim/index.js +1 -1
  208. package/dist/{scim-9NFa0XVZ.js → scim-BFGBBAqR.js} +1 -1
  209. package/dist/{scopes-cKVp_WTw.js → scopes-CVdPrWN-.js} +35 -8
  210. package/dist/server/index.d.ts +22 -11
  211. package/dist/server/index.js +11 -8
  212. package/dist/{credentials-BgRX3WEg.js → server-DlZ28Oz5.js} +1 -1
  213. package/dist/shared-DRu8VFVM.js +123 -0
  214. package/dist/{sink-Cfr9-7YC.d.ts → sink-Gs6TTVa-.d.ts} +1 -1
  215. package/dist/skills-Biq5uup3.js +192 -0
  216. package/dist/{skills-C_lpV4Jx.js → skills-JaymNCdK.js} +10 -4
  217. package/dist/{snapshot-DE8dE_hz.js → snapshot-Enxd0n-s.js} +138 -214
  218. package/dist/snapshot-cache-D6jLelln.js +44 -0
  219. package/dist/snapshot-cache-DwQH8ufx.d.ts +45 -0
  220. package/dist/solid/index.d.ts +39 -9
  221. package/dist/solid/index.js +76 -85
  222. package/dist/sources-B0UvrJ21.js +534 -0
  223. package/dist/sources-BcJgw0lt.d.ts +192 -0
  224. package/dist/{sql-Bll1d7y0.js → sql-xdg5f4Fi.js} +6 -1
  225. package/dist/{src-CTNT-PBW.js → src-CSbUiozF.js} +149 -11
  226. package/dist/ssf/index.d.ts +3 -2
  227. package/dist/ssf/index.js +3 -29
  228. package/dist/store-DMAWwAJV.js +371 -0
  229. package/dist/{store-Bq90395i.d.ts → store-D_pjn91-.d.ts} +13 -4
  230. package/dist/store-options-yO0V6gRn.js +716 -0
  231. package/dist/{stores-CkG2HrSg.js → stores-4_sqiOA1.js} +10 -63
  232. package/dist/{stores-CvOnu_2T.d.ts → stores-DVR5NHLE.d.ts} +20 -9
  233. package/dist/{stream-Q_xlB6Ko.js → stream-DDpvynSB.js} +16 -2
  234. package/dist/{stream-BhMfZOwr.d.ts → stream-DlvG2hs-.d.ts} +2 -2
  235. package/dist/subject-settings-BwBmCdTR.js +128 -0
  236. package/dist/supabase/index.d.ts +122 -6
  237. package/dist/supabase/index.js +4 -3
  238. package/dist/supabase/middleware.d.ts +32 -27
  239. package/dist/supabase/middleware.js +56 -22
  240. package/dist/{supabase-D8UlBA7Z.js → supabase-CwafwxxF.js} +3 -3
  241. package/dist/{supabase-DTxGtYdi.js → supabase-DTBaC20O.js} +345 -367
  242. package/dist/supabase-config-Bs44dare.js +472 -0
  243. package/dist/{supabase-hook-D_OqGb_V.js → supabase-hook-BuxLQLpU.js} +994 -708
  244. package/dist/supabase-hook-D5qVd_D8.js +2 -0
  245. package/dist/supautils-DYZnzRWV.js +91 -0
  246. package/dist/svelte/PermissionBoundary.svelte +37 -0
  247. package/dist/svelte/Protected.svelte +8 -2
  248. package/dist/svelte/index.d.ts +9 -6
  249. package/dist/svelte/index.js +61 -7
  250. package/dist/svelte/runtime.d.ts +4 -3
  251. package/dist/svelte/runtime.js +4 -3
  252. package/dist/svelte/source.d.ts +9 -6
  253. package/dist/svelte/source.js +7 -4
  254. package/dist/terminal/index.d.ts +6 -14
  255. package/dist/terminal/index.js +44 -32
  256. package/dist/testing/index.d.ts +105 -16
  257. package/dist/testing/index.js +504 -40
  258. package/dist/testing/saas/index.d.ts +4 -4
  259. package/dist/testing/saas/index.js +2 -2
  260. package/dist/testing/saas/permissions.d.ts +1 -1
  261. package/dist/testing/saas/permissions.js +1 -1
  262. package/dist/token-CIWxJOCh.js +50 -0
  263. package/dist/trpc/index.d.ts +7 -26
  264. package/dist/trpc/index.js +17 -100
  265. package/dist/types-9AWO9EGt.d.ts +197 -0
  266. package/dist/{types-D6Z6-rKJ.d.ts → types-BPxgszlT.d.ts} +260 -22
  267. package/dist/{types-BvBk1wgn.d.ts → types-BVyImy5I.d.ts} +5 -3
  268. package/dist/{types-CxquUByI.d.ts → types-Bvc4oWT6.d.ts} +1 -1
  269. package/dist/types-C3s9xVJG.d.ts +48 -0
  270. package/dist/{types-BBK-exvJ.d.ts → types-Dnemwd77.d.ts} +7 -1
  271. package/dist/types-kxznc7cn.d.ts +52 -0
  272. package/dist/{types-B8w5PFtS.d.ts → types-vKyAMtcX.d.ts} +17 -1
  273. package/dist/{types-B9dmiiab.d.ts → types-vNSDF7Dq.d.ts} +1 -1
  274. package/dist/{sources-DOpW5Ila.d.ts → types-yF5LmQVD.d.ts} +86 -127
  275. package/dist/unplugin/index.d.ts +1 -1
  276. package/dist/unplugin/index.js +10 -9
  277. package/dist/{usage-1ozMubLY.js → usage-D07N9QJ3.js} +2 -2
  278. package/dist/usage-D82l1CwK.js +2 -0
  279. package/dist/{usage-CUnK6Ou9.js → usage-DG1oeCca.js} +225 -62
  280. package/dist/validation-error-CnjZ4t92.js +33 -0
  281. package/dist/validation-error-CtF23SrC.d.ts +26 -0
  282. package/dist/{validity-D0uRmJKJ.js → validity-uOp8UpYn.js} +57 -36
  283. package/dist/{verifier-B90agnhl.js → verifier-BxBo6I44.js} +10 -5
  284. package/dist/version-BvacVTZR.js +17 -0
  285. package/dist/views-Soe7bGSC.js +95 -0
  286. package/dist/{vocabulary-Dk0fs-Jk.d.ts → vocabulary-DA8a8zif.d.ts} +1 -1
  287. package/dist/vue/index.d.ts +35 -13
  288. package/dist/vue/index.js +86 -93
  289. package/dist/watch-Etoa_Mvr.js +2 -0
  290. package/dist/watch-UihESpsJ.js +128 -0
  291. package/dist/webmcp/index.d.ts +2 -2
  292. package/dist/webmcp/index.js +7 -13
  293. package/package.json +62 -36
  294. package/schemas/approval-request-v1.json +175 -0
  295. package/schemas/catalog-v1.json +29 -1
  296. package/schemas/supabase-claims-v1.json +6 -1
  297. package/schemas/supabase-manifest-v1.json +150 -6
  298. package/skills/permdock/SKILL.md +7 -7
  299. package/skills/permdock-agents/SKILL.md +5 -5
  300. package/skills/permdock-agents/references/runtimes.md +12 -10
  301. package/skills/permdock-approvals/SKILL.md +4 -4
  302. package/skills/permdock-approvals/references/stores-and-resume.md +15 -4
  303. package/skills/permdock-audit/SKILL.md +3 -3
  304. package/skills/permdock-credentials/SKILL.md +4 -4
  305. package/skills/permdock-credentials/references/tokens-keys-links.md +7 -2
  306. package/skills/permdock-data/SKILL.md +4 -4
  307. package/skills/permdock-data/references/queries-and-rls.md +14 -6
  308. package/skills/permdock-data/references/relationships.md +5 -3
  309. package/skills/permdock-tenancy/SKILL.md +9 -6
  310. package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +14 -8
  311. package/skills/permdock-wire/SKILL.md +4 -4
  312. package/skills/permdock-wire/references/adapters.md +42 -30
  313. package/skills/permdock-wire/references/policy-options.md +5 -3
  314. package/dist/approvers-aH0PJkmf.js +0 -20
  315. package/dist/catalog-idsHc0vo.js +0 -2
  316. package/dist/collect-B7_TIfmg.js +0 -49
  317. package/dist/collect-fRPAQIWb.js +0 -2
  318. package/dist/compile-CQbvyIBr.d.ts +0 -30
  319. package/dist/config-BPYmjTOp.js +0 -26
  320. package/dist/context-gtAwAILx.js +0 -6
  321. package/dist/create-BKF3dgFk.d.ts +0 -162
  322. package/dist/create-CSkhDU9T.js +0 -222
  323. package/dist/doctor-BGle8Gqi.js +0 -1314
  324. package/dist/helpers-DnSOrhB9.js +0 -682
  325. package/dist/index-fG6NSXlc.d.ts +0 -9
  326. package/dist/kernel-YOGCWNLf.js +0 -211
  327. package/dist/load-QOOm1z70.js +0 -2
  328. package/dist/manifest-DDQbC6K0.d.ts +0 -118
  329. package/dist/map-error-RJ3ZsUyA.js +0 -16
  330. package/dist/may-use-CnFEjVEp.js +0 -37
  331. package/dist/pg-4GJWDUxG.js +0 -953
  332. package/dist/plugin-4gr7IxFJ.js +0 -65
  333. package/dist/protected-B4K3BKoX.js +0 -138
  334. package/dist/protected-wY7nXhY9.d.ts +0 -23
  335. package/dist/provider-_wx46HpB.js +0 -48
  336. package/dist/rls-CJVja9Ww.js +0 -2119
  337. package/dist/rls-helpers-BxRuif0l.js +0 -1346
  338. package/dist/runtime-DP9ttFh1.js +0 -27
  339. package/dist/skills-Dx3QLnMY.js +0 -110
  340. package/dist/source-DoBBYJi2.js +0 -6
  341. package/dist/sources-DVHM3Mwq.js +0 -284
  342. package/dist/store-C6hFW6ta.js +0 -508
  343. package/dist/subject-settings-xt7V845g.js +0 -82
  344. package/dist/supabase-hook-DW-xP4hU.js +0 -2
  345. package/dist/types-DbWdEfcm.d.ts +0 -87
  346. package/dist/types-bva3i4Gf.d.ts +0 -98
  347. package/dist/types-i4BAOvdb.d.ts +0 -97
  348. package/dist/usage-PyEor6GA.js +0 -2
  349. package/dist/version-CnSh33Fj.js +0 -16
@@ -1,27 +0,0 @@
1
- //#region src/svelte/protected.ts
2
- function protectedView(store, reference, data, tenant, _generation) {
3
- const local = store.permissionState(reference, data);
4
- return tenant === void 0 ? {
5
- allowed: local.allowed,
6
- status: local.status,
7
- decision: local.decision,
8
- slot: slotOf(local.allowed, local.status, local.decision)
9
- } : tenantView(store.get().tenant(tenant), reference, data);
10
- }
11
- function tenantView(permdock, reference, data) {
12
- const decision = permdock.decide(reference, data);
13
- const allowed = decision.outcome === "granted";
14
- return {
15
- allowed,
16
- status: "ready",
17
- decision,
18
- slot: slotOf(allowed, "ready", decision)
19
- };
20
- }
21
- function slotOf(allowed, status, decision) {
22
- if (status === "pending") return "pending";
23
- if (!allowed || decision.outcome !== "granted") return "fallback";
24
- return "default";
25
- }
26
- //#endregion
27
- export { protectedView as t };
@@ -1,110 +0,0 @@
1
- import { t as packageRoot } from "./package-root-zGkxO3oN.js";
2
- import { cpSync, existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
3
- import { dirname, join, resolve } from "node:path";
4
- import { createRequire } from "node:module";
5
- //#region src/cli/skills.ts
6
- const SKILL_NAMES = [
7
- "permdock",
8
- "permdock-wire",
9
- "permdock-audit",
10
- "permdock-agents",
11
- "permdock-approvals",
12
- "permdock-tenancy",
13
- "permdock-data",
14
- "permdock-credentials"
15
- ];
16
- const AGENT_FOLDERS = {
17
- agents: ".agents/skills",
18
- claude: ".claude/skills",
19
- cursor: ".cursor/skills"
20
- };
21
- /** The `--agent` names `skills install` knows, with the folder each writes. */
22
- const SKILL_AGENTS = AGENT_FOLDERS;
23
- /** Agents whose config folder (`.claude`, `.cursor`, `.agents`) the project already has. */
24
- function detectedAgents(cwd) {
25
- return Object.entries(AGENT_FOLDERS).filter(([, folder]) => existsSync(join(cwd, dirname(folder)))).map(([agent]) => agent);
26
- }
27
- function runSkills(input) {
28
- switch (input.action) {
29
- case void 0:
30
- case "install":
31
- case "update": return runSkillsInstall({
32
- cwd: input.cwd,
33
- agents: input.agents
34
- });
35
- case "list": return listSkills(input.cwd);
36
- default: return {
37
- code: 2,
38
- output: `unknown skills command '${input.action}'. Use install, list or update.`
39
- };
40
- }
41
- }
42
- function runSkillsInstall(input) {
43
- const source = resolveSkillsRoot(input.cwd, input.bundled ?? join(packageRoot(), "skills"));
44
- if (source === void 0) return {
45
- code: 2,
46
- output: "PermDock CLI: permdock package with skills/ not found. Add permdock as a dependency."
47
- };
48
- const version = readPermdockVersion(source);
49
- const targets = resolveTargets(input.agents);
50
- const copied = [];
51
- for (const folder of targets) {
52
- const destRoot = join(input.cwd, folder);
53
- for (const name of SKILL_NAMES) {
54
- const from = join(source, name);
55
- if (!existsSync(from)) continue;
56
- copyDir(from, join(destRoot, name));
57
- copied.push(`${folder}/${name}`);
58
- }
59
- }
60
- mkdirSync(join(input.cwd, ".permdock"), { recursive: true });
61
- writeFileSync(join(input.cwd, ".permdock/skills-lock.json"), `${JSON.stringify({
62
- version,
63
- skills: [...SKILL_NAMES]
64
- }, null, 2)}\n`);
65
- return {
66
- code: 0,
67
- output: `installed ${copied.join(", ") || "no skills"} (permdock@${version})`
68
- };
69
- }
70
- function listSkills(cwd) {
71
- const lockPath = join(cwd, ".permdock/skills-lock.json");
72
- const lock = existsSync(lockPath) ? JSON.parse(readFileSync(lockPath, "utf8")) : {};
73
- const lines = ["permdock skills", ""];
74
- for (const name of SKILL_NAMES) {
75
- const places = Object.values(AGENT_FOLDERS).filter((folder) => existsSync(join(cwd, folder, name, "SKILL.md")));
76
- lines.push(` ${name} ${places.length > 0 ? places.join(", ") : "not installed"}`);
77
- }
78
- if (lock.version !== void 0) lines.push("", ` lock ${lock.version}`);
79
- return {
80
- code: 0,
81
- output: `${lines.join("\n")}\n`
82
- };
83
- }
84
- function resolveTargets(agents) {
85
- if (agents.length === 0) return Object.values(AGENT_FOLDERS);
86
- return agents.map((agent) => {
87
- const key = agent === "agent" ? "agents" : agent;
88
- return AGENT_FOLDERS[key] ?? `.${key}/skills`;
89
- });
90
- }
91
- function resolveSkillsRoot(cwd, bundled) {
92
- try {
93
- const pkg = createRequire(resolve(cwd, "package.json")).resolve("permdock/package.json");
94
- const root = join(dirname(pkg), "skills");
95
- if (existsSync(root)) return root;
96
- } catch {}
97
- const local = join(cwd, "node_modules/permdock/skills");
98
- if (existsSync(local)) return local;
99
- return existsSync(bundled) ? bundled : void 0;
100
- }
101
- function readPermdockVersion(skillsRoot) {
102
- const pkg = join(dirname(skillsRoot), "package.json");
103
- if (!existsSync(pkg)) return "0.0.0";
104
- return JSON.parse(readFileSync(pkg, "utf8")).version;
105
- }
106
- function copyDir(from, to) {
107
- cpSync(from, to, { recursive: true });
108
- }
109
- //#endregion
110
- export { runSkillsInstall as i, detectedAgents as n, runSkills as r, SKILL_AGENTS as t };
@@ -1,6 +0,0 @@
1
- //#region src/react/source.ts
2
- function isPromiseLike(value) {
3
- return typeof value === "object" && value !== null && "then" in value && typeof value.then === "function";
4
- }
5
- //#endregion
6
- export { isPromiseLike as t };
@@ -1,284 +0,0 @@
1
- import { t as compact } from "./compact-y6vfu2_f.js";
2
- import { a as quoteSqlTable, i as quoteSqlLiteral, r as quoteSqlIdent } from "./sql-Bll1d7y0.js";
3
- //#region src/supabase/sources.ts
4
- const ident = (name) => quoteSqlIdent(name);
5
- const literal = quoteSqlLiteral;
6
- function qualifiedName(name) {
7
- return name.includes(".") ? name : `public.${name}`;
8
- }
9
- function qualified(name) {
10
- return quoteSqlTable(qualifiedName(name));
11
- }
12
- function col(name) {
13
- return `m.${ident(name)}`;
14
- }
15
- function activeRow(row, id) {
16
- const parts = [`s.${ident(row.id)}::text = (${id})::text`];
17
- if (row.disabledAt !== void 0) parts.push(`s.${ident(row.disabledAt)} is null`);
18
- if (row.status !== void 0) {
19
- const values = row.active ?? [];
20
- if (values.length === 0) throw new TypeError("PermDock: a suspension status column needs its active values");
21
- parts.push(`s.${ident(row.status)}::text = any(array[${values.map(literal).join(", ")}]::text[])`);
22
- }
23
- if (row.disabledAt === void 0 && row.status === void 0) throw new TypeError("PermDock: a suspension table needs disabledAt or status");
24
- return `exists (select 1 from ${qualified(row.table)} s where ${parts.join(" and ")})`;
25
- }
26
- function filters(shape, owner) {
27
- const lines = [owner];
28
- if (shape.expiresAt !== void 0) {
29
- const expires = col(shape.expiresAt);
30
- lines.push(`(${expires} is null or ${expires} > now())`);
31
- }
32
- const users = shape.suspension?.users;
33
- if (users !== void 0) lines.push(activeRow(users, col(shape.user)));
34
- for (const [name, row] of Object.entries(shape.suspension?.scopes ?? {})) {
35
- const id = shape.idOf(name);
36
- if (id !== void 0) lines.push(`(${id} is null or ${activeRow(row, id)})`);
37
- }
38
- return lines;
39
- }
40
- function selectOf(shape, where, user) {
41
- const fields = [
42
- ...user ? [`${col(shape.user)}::text as user_id`] : [],
43
- `${shape.scope} as scope`,
44
- `${shape.id} as id`,
45
- `${shape.within} as within`,
46
- `${shape.roles} as roles`,
47
- `${shape.via} as via`,
48
- `${shape.expiresAt === void 0 ? "null::bigint" : `floor(extract(epoch from ${col(shape.expiresAt)}))::bigint`} as expires_at`,
49
- `${shape.grantedBy} as granted_by`,
50
- `${shape.reason} as reason`,
51
- `${shape.memberGroup} as member_group`,
52
- `${shape.managed} as managed_by`,
53
- `${shape.seats} as seats`
54
- ];
55
- const group = [...user ? [col(shape.user)] : [], ...shape.groupBy];
56
- return `select ${fields.join(", ")}
57
- from ${qualified(shape.table)} m
58
- where ${where.join("\n and ")}
59
- group by ${group.join(", ")}`;
60
- }
61
- function sqlOf(shape) {
62
- const suspension = shape.suspension;
63
- return compact({
64
- table: shape.table,
65
- user: shape.user,
66
- userType: `${qualified(shape.table)}.${ident(shape.user)}%type`,
67
- reads: [...new Set([suspension?.users, ...Object.values(suspension?.scopes ?? {})].flatMap((row) => row === void 0 ? [] : [row.table]))],
68
- managed: shape.managedColumn,
69
- columns: [...new Set(shape.columns)],
70
- manifest: {
71
- table: qualifiedName(shape.table),
72
- ...shape.manifest,
73
- columns: [...new Set(shape.columns)]
74
- },
75
- select: (user) => selectOf(shape, filters(shape, `${col(shape.user)} = ${user}`), false),
76
- list: () => selectOf(shape, filters(shape, `${shape.scope} = $1::text and ${shape.id} = $2::text`), true)
77
- });
78
- }
79
- function rowsOf(result) {
80
- return Array.isArray(result) ? result : result.rows;
81
- }
82
- function strings(value) {
83
- return Array.isArray(value) ? value.filter((item) => typeof item === "string" && item !== "") : [];
84
- }
85
- function membershipOf(row) {
86
- const roles = strings(row["roles"]);
87
- if (typeof row["scope"] !== "string" || typeof row["id"] !== "string") return;
88
- if (roles.length === 0) return;
89
- const within = row["within"] !== null && typeof row["within"] === "object" && !Array.isArray(row["within"]) ? Object.fromEntries(Object.entries(row["within"]).filter((entry) => typeof entry[1] === "string")) : void 0;
90
- const expires = typeof row["expires_at"] === "number" ? row["expires_at"] : typeof row["expires_at"] === "string" && row["expires_at"] !== "" ? Number(row["expires_at"]) : void 0;
91
- const seats = strings(row["seats"]);
92
- return compact({
93
- scope: row["scope"],
94
- id: row["id"],
95
- within: within === void 0 || Object.keys(within).length === 0 ? void 0 : within,
96
- roles: [...roles].toSorted(),
97
- via: typeof row["via"] === "string" ? row["via"] : void 0,
98
- expiresAt: Number.isFinite(expires) ? expires : void 0,
99
- grantedBy: typeof row["granted_by"] === "string" && row["granted_by"] !== "" ? row["granted_by"] : void 0,
100
- reason: typeof row["reason"] === "string" && row["reason"] !== "" ? row["reason"] : void 0,
101
- member: typeof row["member_group"] === "string" && row["member_group"] !== "" ? { group: row["member_group"] } : void 0,
102
- managedBy: row["managed_by"] === "idp" ? "idp" : void 0,
103
- entitlements: seats.length === 0 ? void 0 : seats
104
- });
105
- }
106
- function sourceOf(sql, query) {
107
- const run = async (text, values) => {
108
- if (query === void 0) throw new TypeError(`PermDock: the ${sql.table} membership source needs query to resolve memberships`);
109
- return rowsOf(await query(text, values));
110
- };
111
- return {
112
- sql,
113
- async membershipsFor(principal) {
114
- return (await run(sql.select("$1"), [principal.id])).flatMap((row) => {
115
- const membership = membershipOf(row);
116
- return membership === void 0 ? [] : [membership];
117
- });
118
- },
119
- async list(scope) {
120
- return (await run(sql.list(), [scope.scope, scope.id])).flatMap((row) => {
121
- const membership = membershipOf(row);
122
- return membership === void 0 || typeof row["user_id"] !== "string" ? [] : [{
123
- principal: { id: row["user_id"] },
124
- membership
125
- }];
126
- });
127
- }
128
- };
129
- }
130
- /**
131
- * Memberships from one table holding every scope: a row per user, scope,
132
- * instance and role (`user_id, scope, scope_id, role`), with optional
133
- * `within`, `via`, expiry, owner and seat columns. Rows of the same instance
134
- * merge into one membership.
135
- */
136
- function fromTable(options) {
137
- const c = options.columns ?? {};
138
- const scope = `${col(c.scope ?? "scope")}::text`;
139
- const id = `${col(c.id ?? "scope_id")}::text`;
140
- const within = c.within === void 0 ? "null::jsonb" : col(c.within);
141
- const optional = (name, cast) => name === void 0 ? `null::${cast}` : `${col(name)}::${cast}`;
142
- return sourceOf(sqlOf({
143
- table: options.table,
144
- user: c.user ?? "user_id",
145
- scope,
146
- id,
147
- within,
148
- roles: `jsonb_agg(distinct ${col(c.role ?? "role")}::text order by ${col(c.role ?? "role")}::text)`,
149
- via: optional(c.via, "text"),
150
- expiresAt: c.expiresAt,
151
- grantedBy: optional(c.grantedBy, "text"),
152
- reason: optional(c.reason, "text"),
153
- memberGroup: optional(c.group, "text"),
154
- managed: optional(c.managedBy, "text"),
155
- managedColumn: c.managedBy,
156
- seats: c.seats === void 0 ? "null::jsonb" : `to_jsonb(${col(c.seats)})`,
157
- idOf: (name) => `coalesce(case when ${scope} = ${literal(name)} then ${id} end${c.within === void 0 ? "" : `, ${within} ->> ${literal(name)}`})`,
158
- groupBy: [
159
- scope,
160
- id,
161
- ...c.within === void 0 ? [] : [within],
162
- ...[
163
- c.via,
164
- c.expiresAt,
165
- c.grantedBy,
166
- c.reason,
167
- c.group,
168
- c.managedBy,
169
- c.seats
170
- ].filter((name) => name !== void 0).map(col)
171
- ],
172
- suspension: options.suspension,
173
- columns: [
174
- c.user ?? "user_id",
175
- c.scope ?? "scope",
176
- c.id ?? "scope_id",
177
- c.role ?? "role",
178
- ...[
179
- c.within,
180
- c.via,
181
- c.expiresAt
182
- ].filter((name) => name !== void 0)
183
- ],
184
- manifest: compact({
185
- user: { column: c.user ?? "user_id" },
186
- scope: { column: c.scope ?? "scope" },
187
- id: { column: c.id ?? "scope_id" },
188
- role: { column: c.role ?? "role" },
189
- within: c.within === void 0 ? void 0 : { column: c.within },
190
- via: c.via === void 0 ? void 0 : { column: c.via },
191
- expiresAt: c.expiresAt === void 0 ? void 0 : { column: c.expiresAt }
192
- })
193
- }), options.query);
194
- }
195
- /**
196
- * Memberships from a table of one scope (`customer_contacts`): every row is a
197
- * membership of `scope`, with roles from a column or fixed (`['contact']`), a
198
- * fixed `via`, and ancestor ids from `within` columns.
199
- */
200
- function fromJunction(options) {
201
- if (!/^[a-z][a-z0-9_]*$/u.test(options.scope)) throw new TypeError(`PermDock: unsafe scope name '${options.scope}'`);
202
- const idColumn = options.id ?? `${options.scope}_id`;
203
- const withinEntries = Object.entries(options.within ?? {});
204
- const fixed = typeof options.roles === "string" ? void 0 : options.roles;
205
- if (fixed?.length === 0) throw new TypeError("PermDock: fromJunction needs at least one role");
206
- const managedColumn = options.managedBy === void 0 ? void 0 : options.managedBy === "idp" ? "" : options.managedBy.column;
207
- const groupColumn = options.group === void 0 || typeof options.group === "string" ? void 0 : options.group.column;
208
- const shape = {
209
- table: options.table,
210
- user: options.user ?? "user_id",
211
- scope: `${literal(options.scope)}::text`,
212
- id: `${col(idColumn)}::text`,
213
- within: withinEntries.length === 0 ? "null::jsonb" : `jsonb_build_object(${withinEntries.map(([name, column]) => `${literal(name)}, ${col(column)}::text`).join(", ")})`,
214
- roles: fixed === void 0 ? `jsonb_agg(distinct ${col(options.roles)}::text order by ${col(options.roles)}::text)` : `jsonb_build_array(${fixed.map(literal).join(", ")})`,
215
- via: options.via === void 0 ? "null::text" : `${literal(options.via)}::text`,
216
- expiresAt: options.expiresAt,
217
- grantedBy: options.grantedBy === void 0 ? "null::text" : `${col(options.grantedBy)}::text`,
218
- reason: options.reason === void 0 ? "null::text" : `${col(options.reason)}::text`,
219
- memberGroup: options.group === void 0 ? "null::text" : typeof options.group === "string" ? `${literal(options.group)}::text` : `${col(options.group.column)}::text`,
220
- managed: managedColumn === void 0 ? "null::text" : managedColumn === "" ? `'idp'::text` : `${col(managedColumn)}::text`,
221
- managedColumn,
222
- seats: options.seats === void 0 ? "null::jsonb" : `to_jsonb(${col(options.seats)})`,
223
- idOf: (name) => {
224
- if (name === options.scope) return `${col(idColumn)}::text`;
225
- const column = options.within?.[name];
226
- return column === void 0 ? void 0 : `${col(column)}::text`;
227
- },
228
- groupBy: [
229
- col(idColumn),
230
- ...withinEntries.map(([, column]) => col(column)),
231
- ...[
232
- options.expiresAt,
233
- options.grantedBy,
234
- options.reason,
235
- groupColumn,
236
- managedColumn === "" ? void 0 : managedColumn,
237
- options.seats
238
- ].filter((name) => name !== void 0).map(col)
239
- ],
240
- suspension: options.suspension,
241
- columns: [
242
- options.user ?? "user_id",
243
- idColumn,
244
- ...withinEntries.map(([, column]) => column),
245
- ...[typeof options.roles === "string" ? options.roles : void 0, options.expiresAt].filter((name) => name !== void 0)
246
- ],
247
- manifest: compact({
248
- user: { column: options.user ?? "user_id" },
249
- scope: { value: options.scope },
250
- id: { column: idColumn },
251
- role: typeof options.roles === "string" ? { column: options.roles } : { value: [...options.roles] },
252
- within: withinEntries.length === 0 ? void 0 : { columns: Object.fromEntries(withinEntries) },
253
- via: options.via === void 0 ? void 0 : { value: options.via },
254
- expiresAt: options.expiresAt === void 0 ? void 0 : { column: options.expiresAt }
255
- })
256
- };
257
- return sourceOf({
258
- ...sqlOf(shape),
259
- scope: options.scope,
260
- holds: [options.scope, ...withinEntries.map(([name]) => name)],
261
- list: () => selectOf(shape, filters(shape, `$1::text = ${literal(options.scope)} and ${col(idColumn)}::text = $2::text`), true)
262
- }, options.query);
263
- }
264
- const AUTHZ_VERSION_TABLE = "permdock_authz_version";
265
- /**
266
- * The default schema of everything PermDock generates: helpers, seeds, the
267
- * RBAC scaffold, the hook and the version table. Keep it out of the Data
268
- * API's exposed schemas, so the `security definer` functions are not RPCs.
269
- */
270
- const PERMDOCK_SCHEMA = "permdock";
271
- /**
272
- * Reads the authorization version `permdock supabase hook generate` keeps in
273
- * `<schema>.permdock_authz_version`: pass it to `claimsFirst(sources, { version })`.
274
- */
275
- function authzVersion(options) {
276
- const table = qualified(`${options.schema ?? "permdock"}.${AUTHZ_VERSION_TABLE}`);
277
- return async (principal) => {
278
- const value = rowsOf(await options.query(`select version from ${table} where user_id = $1`, [principal.id]))[0]?.["version"];
279
- const version = typeof value === "number" ? value : value === void 0 ? 0 : Number(value);
280
- return Number.isFinite(version) ? version : void 0;
281
- };
282
- }
283
- //#endregion
284
- export { fromTable as a, fromJunction as i, PERMDOCK_SCHEMA as n, authzVersion as r, AUTHZ_VERSION_TABLE as t };