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
@@ -0,0 +1,2 @@
1
+ import { i as runSupabase } from "./supabase-hook-BuxLQLpU.js";
2
+ export { runSupabase };
@@ -0,0 +1,91 @@
1
+ import { d as group, p as sqlStatements } from "./supabase-config-Bs44dare.js";
2
+ //#region src/cli/supautils.ts
3
+ /** `supautils.reserved_roles` of supabase/postgres 17.11.0.002 (supautils 3.4.4). */
4
+ const RESERVED_ROLES = /* @__PURE__ */ new Set([
5
+ "supabase_admin",
6
+ "supabase_auth_admin",
7
+ "supabase_storage_admin",
8
+ "supabase_read_only_user",
9
+ "supabase_realtime_admin",
10
+ "supabase_replication_admin",
11
+ "supabase_etl_admin",
12
+ "supabase_privileged_role",
13
+ "dashboard_user",
14
+ "pgbouncer",
15
+ "service_role",
16
+ "authenticator",
17
+ "authenticated",
18
+ "anon"
19
+ ]);
20
+ /** The `*` entries of `reserved_roles`: `postgres` may still `set` or `reset` their settings. */
21
+ const CONFIGURABLE_ROLES = /* @__PURE__ */ new Set([
22
+ "service_role",
23
+ "authenticator",
24
+ "authenticated",
25
+ "anon"
26
+ ]);
27
+ /** `supautils.reserved_memberships` of the same image. */
28
+ const RESERVED_MEMBERSHIPS = /* @__PURE__ */ new Set([
29
+ "pg_read_server_files",
30
+ "pg_write_server_files",
31
+ "pg_execute_server_program",
32
+ "supabase_admin",
33
+ "supabase_auth_admin",
34
+ "supabase_storage_admin",
35
+ "supabase_read_only_user",
36
+ "supabase_realtime_admin",
37
+ "supabase_replication_admin",
38
+ "supabase_etl_admin",
39
+ "dashboard_user",
40
+ "pgbouncer",
41
+ "authenticator"
42
+ ]);
43
+ const ROLE = String.raw`(?:"[^"]+"|\w+)`;
44
+ const ROLES = String.raw`${ROLE}(?:\s*,\s*${ROLE})*`;
45
+ const ALTER_ROLE = new RegExp(String.raw`^alter\s+(role|user|group)\s+(${ROLE})\s+([\s\S]*)$`, "iu");
46
+ const DROP_ROLE = new RegExp(String.raw`^drop\s+(?:role|user|group)\s+(?:if\s+exists\s+)?(${ROLES})\s*$`, "iu");
47
+ const GRANT_ROLE = /^grant\s+([\s\S]+?)\s+to\s/iu;
48
+ const CREATE_IN_ROLE = new RegExp(String.raw`^create\s+(?:role|user|group)\s+${ROLE}\b[\s\S]*?\bin\s+(?:role|group)\s+(${ROLES})`, "iu");
49
+ const CONFIG_CHANGE = /^(?:in\s+database\s+\S+\s+)?(?:set|reset)\s/iu;
50
+ function roleName(name) {
51
+ return name.replaceAll("\"", "").toLowerCase();
52
+ }
53
+ function roleList(list) {
54
+ return list.split(",").map((name) => roleName(name.trim()));
55
+ }
56
+ function rejection(text) {
57
+ const alter = ALTER_ROLE.exec(text);
58
+ if (alter !== null) {
59
+ const role = roleName(group(alter, 2));
60
+ const rest = group(alter, 3);
61
+ if (group(alter, 1).toLowerCase() === "group" && /^add\s/iu.test(rest)) return RESERVED_MEMBERSHIPS.has(role) ? `grants membership in the reserved role ${role}` : void 0;
62
+ if (!RESERVED_ROLES.has(role) || CONFIGURABLE_ROLES.has(role) && CONFIG_CHANGE.test(rest)) return;
63
+ return `changes the reserved role ${role}`;
64
+ }
65
+ const drop = DROP_ROLE.exec(text);
66
+ if (drop !== null) {
67
+ const role = roleList(group(drop, 1)).find((name) => RESERVED_ROLES.has(name));
68
+ return role === void 0 ? void 0 : `drops the reserved role ${role}`;
69
+ }
70
+ const grant = GRANT_ROLE.exec(text);
71
+ const granted = CREATE_IN_ROLE.exec(text)?.[1] ?? (grant === null || /\bon\b/iu.test(group(grant, 1)) ? void 0 : group(grant, 1));
72
+ if (granted === void 0) return;
73
+ const role = roleList(granted).find((name) => RESERVED_MEMBERSHIPS.has(name));
74
+ return role === void 0 ? void 0 : `grants membership in the reserved role ${role}`;
75
+ }
76
+ /**
77
+ * The statements of `sql` that supautils rejects for a non-superuser:
78
+ * changing or dropping a reserved role, other than `set` or `reset` on the
79
+ * four API roles, and granting a reserved membership.
80
+ */
81
+ function supautilsRejections(sql) {
82
+ return sqlStatements(sql).flatMap(({ line, text }) => {
83
+ const reason = rejection(text);
84
+ return reason === void 0 ? [] : [{
85
+ line,
86
+ reason
87
+ }];
88
+ });
89
+ }
90
+ //#endregion
91
+ export { supautilsRejections as t };
@@ -0,0 +1,37 @@
1
+ <script lang="ts">
2
+ import {
3
+ boundaryDigest,
4
+ boundaryFallback,
5
+ type PermissionBoundaryProps,
6
+ type PermissionBoundaryState,
7
+ } from './runtime.js';
8
+
9
+ let { children, denied, approval }: PermissionBoundaryProps = $props();
10
+
11
+ let refused = $state<PermissionBoundaryState | null>(null);
12
+
13
+ // A rethrown error reaches the next boundary up.
14
+ function onerror(error: unknown, reset: () => void): void {
15
+ const digest = boundaryDigest(error);
16
+ if (digest === null) {
17
+ throw error;
18
+ }
19
+ refused = {
20
+ ...digest,
21
+ retry: (): void => {
22
+ refused = null;
23
+ reset();
24
+ },
25
+ };
26
+ }
27
+ </script>
28
+
29
+ <svelte:boundary {onerror}>
30
+ {@render children?.()}
31
+ {#snippet failed()}
32
+ {#if refused !== null}
33
+ {@const fallback = boundaryFallback(refused, { denied, approval })}
34
+ {@render fallback?.(refused)}
35
+ {/if}
36
+ {/snippet}
37
+ </svelte:boundary>
@@ -1,7 +1,12 @@
1
1
  <script lang="ts">
2
2
  import { onDestroy } from 'svelte';
3
3
 
4
- import { getStore, protectedView, type ProtectedProps } from './runtime.js';
4
+ import {
5
+ getStore,
6
+ scopedFor,
7
+ viewFor,
8
+ type ProtectedProps,
9
+ } from './runtime.js';
5
10
 
6
11
  let {
7
12
  permission,
@@ -19,9 +24,10 @@
19
24
  tick += 1;
20
25
  }),
21
26
  );
27
+ const scoped = $derived(scopedFor(store, tenant, tick));
22
28
  const view = $derived.by(() => {
23
29
  const generation = tick;
24
- return protectedView(store, permission, data, tenant, generation);
30
+ return viewFor(store, permission, data, scoped, generation);
25
31
  });
26
32
  </script>
27
33
 
@@ -1,10 +1,13 @@
1
- import { a as requiredPlans, i as describe } from "../describe-DernyItf.js";
2
- import { t as approvalHeaders } from "../headers-C8SHQccD.js";
3
- import { a as FilterResult, c as PermissionState, d as TenantView, f as UseRolesOptions, i as ClientStatus, n as ApprovalState, r as ClientPermDock, s as PermissionSet, t as ApprovalHandle, u as SubjectView } from "../types-DbWdEfcm.js";
4
- import { a as getPermDock, c as permissions, d as subject, f as tenant, i as filtered, l as roles, n as assignable, o as memberships, p as PermDockSvelteOptions, r as assignablePermissions, s as permission, t as approval, u as setPermDock } from "../stores-CvOnu_2T.js";
5
- import { t as ProtectedProps } from "../protected-wY7nXhY9.js";
1
+ import { n as requiredPlans } from "../problem-details-CkL50EEf.js";
2
+ import { i as describe } from "../describe-PdoqESvg.js";
3
+ import { t as PermissionBoundaryState } from "../boundary-BmHxVH1J.js";
4
+ import { t as approvalHeaders } from "../headers-Cf-zWvsO.js";
5
+ import { a as FilterResult, c as SubjectView, i as ClientStatus, l as TenantView, n as ApprovalState, o as PermissionSet, r as ClientPermDock, s as PermissionState, t as ApprovalHandle, u as UseRolesOptions } from "../types-kxznc7cn.js";
6
+ import { i as PermissionBoundaryProps, t as ProtectedProps } from "../protected-bZs6rbT1.js";
7
+ import { a as getPermDock, c as permissions, d as subject, f as tenant, i as filtered, l as roles, n as assignable, o as memberships, p as PermDockSvelteOptions, r as assignablePermissions, s as permission, t as approval, u as setPermDock } from "../stores-DVR5NHLE.js";
6
8
  import { Component } from "svelte";
7
9
  //#region src/svelte/index.d.ts
8
10
  export declare const Protected: Component<ProtectedProps>;
11
+ export declare const PermissionBoundary: Component<PermissionBoundaryProps>;
9
12
  //#endregion
10
- export { type ApprovalHandle, type ApprovalState, type ClientPermDock, type ClientStatus, type FilterResult, type PermDockSvelteOptions, type PermissionSet, type PermissionState, type ProtectedProps, type SubjectView, type TenantView, type UseRolesOptions, approval, approvalHeaders, assignable, assignablePermissions, describe, filtered, getPermDock, memberships, permission, permissions, requiredPlans, roles, setPermDock, subject, tenant };
13
+ export { type ApprovalHandle, type ApprovalState, type ClientPermDock, type ClientStatus, type FilterResult, type PermDockSvelteOptions, type PermissionBoundaryProps, type PermissionBoundaryState, type PermissionSet, type PermissionState, type ProtectedProps, type SubjectView, type TenantView, type UseRolesOptions, approval, approvalHeaders, assignable, assignablePermissions, describe, filtered, getPermDock, memberships, permission, permissions, requiredPlans, roles, setPermDock, subject, tenant };
@@ -1,11 +1,63 @@
1
- import { n as requiredPlans, t as describe } from "../describe-Bt1YD5uS.js";
2
- import { t as approvalHeaders } from "../headers-B5RRv3Xm.js";
3
- import { t as getStore } from "../context-CKEAabd7.js";
4
- import { t as protectedView } from "../runtime-DP9ttFh1.js";
5
- import { a as getPermDock, c as permissions, d as subject, f as tenant, i as filtered, l as roles, n as assignable, o as memberships, r as assignablePermissions, s as permission, t as approval, u as setPermDock } from "../stores-CkG2HrSg.js";
1
+ import { r as requiredPlans } from "../problem-details-_AMOYz-w.js";
2
+ import { t as describe } from "../describe-B_gVZEVi.js";
3
+ import { t as approvalHeaders } from "../headers-BZSDieNT.js";
4
+ import { n as boundaryFallback, t as boundaryDigest } from "../boundary-BM8a_P6E.js";
5
+ import { t as getStore } from "../context-Ttp0ekMT.js";
6
+ import { n as viewFor, t as scopedFor } from "../runtime-CB8gQFvS.js";
7
+ import { a as getPermDock, c as permissions, d as subject, f as tenant, i as filtered, l as roles, n as assignable, o as memberships, r as assignablePermissions, s as permission, t as approval, u as setPermDock } from "../stores-4_sqiOA1.js";
6
8
  import "svelte/internal/disclose-version";
7
9
  import * as $ from "svelte/internal/client";
8
10
  import { onDestroy } from "svelte";
11
+ //#region src/svelte/PermissionBoundary.svelte
12
+ function PermissionBoundary$1($$anchor, $$props) {
13
+ $.push($$props, true);
14
+ let refused = $.state(null);
15
+ function onerror(error, reset) {
16
+ const digest = boundaryDigest(error);
17
+ if (digest === null) throw error;
18
+ $.set(refused, {
19
+ ...digest,
20
+ retry: () => {
21
+ $.set(refused, null);
22
+ reset();
23
+ }
24
+ }, true);
25
+ }
26
+ var fragment = $.comment();
27
+ var node = $.first_child(fragment);
28
+ {
29
+ const failed = ($$anchor) => {
30
+ var fragment_1 = $.comment();
31
+ var node_1 = $.first_child(fragment_1);
32
+ var consequent = ($$anchor) => {
33
+ const fallback = $.derived(() => boundaryFallback($.get(refused), {
34
+ denied: $$props.denied,
35
+ approval: $$props.approval
36
+ }));
37
+ var fragment_2 = $.comment();
38
+ var node_2 = $.first_child(fragment_2);
39
+ $.snippet(node_2, () => $.get(fallback) ?? $.noop, () => $.get(refused));
40
+ $.append($$anchor, fragment_2);
41
+ };
42
+ $.if(node_1, ($$render) => {
43
+ if ($.get(refused) !== null) $$render(consequent);
44
+ });
45
+ $.append($$anchor, fragment_1);
46
+ };
47
+ $.boundary(node, {
48
+ onerror,
49
+ failed
50
+ }, ($$anchor) => {
51
+ var fragment_3 = $.comment();
52
+ var node_3 = $.first_child(fragment_3);
53
+ $.snippet(node_3, () => $$props.children ?? $.noop);
54
+ $.append($$anchor, fragment_3);
55
+ });
56
+ }
57
+ $.append($$anchor, fragment);
58
+ $.pop();
59
+ }
60
+ //#endregion
9
61
  //#region src/svelte/Protected.svelte
10
62
  function Protected$1($$anchor, $$props) {
11
63
  $.push($$props, true);
@@ -14,9 +66,10 @@ function Protected$1($$anchor, $$props) {
14
66
  onDestroy(store.subscribe(() => {
15
67
  $.set(tick, $.get(tick) + 1);
16
68
  }));
69
+ const scoped = $.derived(() => scopedFor(store, $$props.tenant, $.get(tick)));
17
70
  const view = $.derived(() => {
18
71
  const generation = $.get(tick);
19
- return protectedView(store, $$props.permission, $$props.data, $$props.tenant, generation);
72
+ return viewFor(store, $$props.permission, $$props.data, $.get(scoped), generation);
20
73
  });
21
74
  var fragment = $.comment();
22
75
  var node = $.first_child(fragment);
@@ -49,5 +102,6 @@ function Protected$1($$anchor, $$props) {
49
102
  //#endregion
50
103
  //#region src/svelte/index.ts
51
104
  const Protected = Protected$1;
105
+ const PermissionBoundary = PermissionBoundary$1;
52
106
  //#endregion
53
- export { Protected, approval, approvalHeaders, assignable, assignablePermissions, describe, filtered, getPermDock, memberships, permission, permissions, requiredPlans, roles, setPermDock, subject, tenant };
107
+ export { PermissionBoundary, Protected, approval, approvalHeaders, assignable, assignablePermissions, describe, filtered, getPermDock, memberships, permission, permissions, requiredPlans, roles, setPermDock, subject, tenant };
@@ -1,6 +1,7 @@
1
- import { t as ClientStore } from "../store-Bq90395i.js";
2
- import { n as protectedView, t as ProtectedProps } from "../protected-wY7nXhY9.js";
1
+ import { n as boundaryDigest, r as boundaryFallback, t as PermissionBoundaryState } from "../boundary-BmHxVH1J.js";
2
+ import { t as ClientStore } from "../store-D_pjn91-.js";
3
+ import { i as PermissionBoundaryProps, n as scopedFor, r as viewFor, t as ProtectedProps } from "../protected-bZs6rbT1.js";
3
4
  //#region src/svelte/context.d.ts
4
5
  export declare function getStore(): ClientStore;
5
6
  //#endregion
6
- export { type ProtectedProps, protectedView };
7
+ export { type PermissionBoundaryProps, type PermissionBoundaryState, type ProtectedProps, boundaryDigest, boundaryFallback, scopedFor, viewFor };
@@ -1,3 +1,4 @@
1
- import { t as getStore } from "../context-CKEAabd7.js";
2
- import { t as protectedView } from "../runtime-DP9ttFh1.js";
3
- export { getStore, protectedView };
1
+ import { n as boundaryFallback, t as boundaryDigest } from "../boundary-BM8a_P6E.js";
2
+ import { t as getStore } from "../context-Ttp0ekMT.js";
3
+ import { n as viewFor, t as scopedFor } from "../runtime-CB8gQFvS.js";
4
+ export { boundaryDigest, boundaryFallback, getStore, scopedFor, viewFor };
@@ -1,10 +1,13 @@
1
- import { i as describe } from "../describe-DernyItf.js";
2
- import { t as approvalHeaders } from "../headers-C8SHQccD.js";
3
- import { a as FilterResult, c as PermissionState, d as TenantView, f as UseRolesOptions, i as ClientStatus, n as ApprovalState, r as ClientPermDock, s as PermissionSet, t as ApprovalHandle, u as SubjectView } from "../types-DbWdEfcm.js";
4
- import { a as getPermDock, c as permissions, d as subject, f as tenant, i as filtered, l as roles, n as assignable, o as memberships, p as PermDockSvelteOptions, r as assignablePermissions, s as permission, t as approval, u as setPermDock } from "../stores-CvOnu_2T.js";
5
- import { t as ProtectedProps } from "../protected-wY7nXhY9.js";
1
+ import { n as requiredPlans } from "../problem-details-CkL50EEf.js";
2
+ import { i as describe } from "../describe-PdoqESvg.js";
3
+ import { t as PermissionBoundaryState } from "../boundary-BmHxVH1J.js";
4
+ import { t as approvalHeaders } from "../headers-Cf-zWvsO.js";
5
+ import { a as FilterResult, c as SubjectView, i as ClientStatus, l as TenantView, n as ApprovalState, o as PermissionSet, r as ClientPermDock, s as PermissionState, t as ApprovalHandle, u as UseRolesOptions } from "../types-kxznc7cn.js";
6
+ import { i as PermissionBoundaryProps, t as ProtectedProps } from "../protected-bZs6rbT1.js";
7
+ import { a as getPermDock, c as permissions, d as subject, f as tenant, i as filtered, l as roles, n as assignable, o as memberships, p as PermDockSvelteOptions, r as assignablePermissions, s as permission, t as approval, u as setPermDock } from "../stores-DVR5NHLE.js";
6
8
  import { Component } from "svelte";
7
9
  //#region src/svelte/source.d.ts
8
10
  export declare const Protected: Component<ProtectedProps>;
11
+ export declare const PermissionBoundary: Component<PermissionBoundaryProps>;
9
12
  //#endregion
10
- export { type ApprovalHandle, type ApprovalState, type ClientPermDock, type ClientStatus, type FilterResult, type PermDockSvelteOptions, type PermissionSet, type PermissionState, type ProtectedProps, type SubjectView, type TenantView, type UseRolesOptions, approval, approvalHeaders, assignable, assignablePermissions, describe, filtered, getPermDock, memberships, permission, permissions, roles, setPermDock, subject, tenant };
13
+ export { type ApprovalHandle, type ApprovalState, type ClientPermDock, type ClientStatus, type FilterResult, type PermDockSvelteOptions, type PermissionBoundaryProps, type PermissionBoundaryState, type PermissionSet, type PermissionState, type ProtectedProps, type SubjectView, type TenantView, type UseRolesOptions, approval, approvalHeaders, assignable, assignablePermissions, describe, filtered, getPermDock, memberships, permission, permissions, requiredPlans, roles, setPermDock, subject, tenant };
@@ -1,8 +1,11 @@
1
- import { t as describe } from "../describe-Bt1YD5uS.js";
2
- import { t as approvalHeaders } from "../headers-B5RRv3Xm.js";
3
- import { a as getPermDock, c as permissions, d as subject, f as tenant, i as filtered, l as roles, n as assignable, o as memberships, r as assignablePermissions, s as permission, t as approval, u as setPermDock } from "../stores-CkG2HrSg.js";
1
+ import { r as requiredPlans } from "../problem-details-_AMOYz-w.js";
2
+ import { t as describe } from "../describe-B_gVZEVi.js";
3
+ import { t as approvalHeaders } from "../headers-BZSDieNT.js";
4
+ import { a as getPermDock, c as permissions, d as subject, f as tenant, i as filtered, l as roles, n as assignable, o as memberships, r as assignablePermissions, s as permission, t as approval, u as setPermDock } from "../stores-4_sqiOA1.js";
5
+ import PermissionBoundaryComponent from "./PermissionBoundary.svelte";
4
6
  import ProtectedComponent from "./Protected.svelte";
5
7
  //#region src/svelte/source.ts
6
8
  const Protected = ProtectedComponent;
9
+ const PermissionBoundary = PermissionBoundaryComponent;
7
10
  //#endregion
8
- export { Protected, approval, approvalHeaders, assignable, assignablePermissions, describe, filtered, getPermDock, memberships, permission, permissions, roles, setPermDock, subject, tenant };
11
+ export { PermissionBoundary, Protected, approval, approvalHeaders, assignable, assignablePermissions, describe, filtered, getPermDock, memberships, permission, permissions, requiredPlans, roles, setPermDock, subject, tenant };
@@ -1,7 +1,8 @@
1
- import { $ as DecisionSink, C as Policy, E as PolicyVocabulary, Mn as Decision, Zt as PermDock, at as LimitStore, ct as MembershipSource, ft as RelationSource, hr as Subject, mr as Principal, pt as RoleSource, sn as PolicySource, tt as EntitlementSource } from "../policy-CInmNGkM.js";
2
- import { d as Permission } from "../permissions-B4apnahQ.js";
3
- import { f as ApprovalStore } from "../types-B8w5PFtS.js";
4
- import { o as ProblemDetails, t as ApprovalHint } from "../errors-DbZ1YOnb.js";
1
+ import { C as Policy, D as PolicyVocabulary, Nr as Principal, Pr as Subject, Yn as Decision, ln as PermDock } from "../policy-CFZAr_Al.js";
2
+ import { f as Permission } from "../permissions-DttnqqxC.js";
3
+ import { f as ApprovalStore } from "../types-vKyAMtcX.js";
4
+ import { a as ProblemDetails, t as ApprovalHint } from "../errors-DAqevpNk.js";
5
+ import { t as InstanceOptions } from "../instance-options-BK_rNOSC.js";
5
6
  //#region src/terminal/types.d.ts
6
7
  type TokenSourceName = "device" | "keychain" | "env" | "ci-oidc";
7
8
  type TokenSource = TokenSourceName | {
@@ -78,20 +79,11 @@ type TerminalStorageOptions = {
78
79
  */
79
80
  readonly keyring?: new (service: string, account: string) => KeyringEntry;
80
81
  };
81
- type TerminalPermDockOptions<TUser = unknown> = {
82
+ type TerminalPermDockOptions<TUser = unknown> = InstanceOptions & {
82
83
  readonly subject: (context: TokenContext) => TUser | Promise<TUser>;
83
84
  readonly actor?: (context: TokenContext) => unknown;
84
85
  readonly tenant?: string;
85
- readonly memberships?: MembershipSource | readonly MembershipSource[];
86
- /** The object graph for relation grants that walk a parent chain; without it they deny. */
87
- readonly relations?: RelationSource;
88
- readonly entitlements?: EntitlementSource;
89
- readonly customRoles?: RoleSource;
90
- /** Hosted grants, read once per instance; see `PolicySource`. */
91
- readonly policies?: PolicySource;
92
86
  readonly store?: ApprovalStore;
93
- readonly sink?: DecisionSink;
94
- readonly limits?: LimitStore;
95
87
  readonly storage?: TerminalStorageOptions;
96
88
  readonly device?: DeviceFlowOptions;
97
89
  readonly interactive?: boolean | {
@@ -1,9 +1,11 @@
1
1
  import { t as compact } from "../compact-y6vfu2_f.js";
2
- import { a as approvalMessage, n as PermDockDeniedError, o as deniedMessage, t as PermDockApprovalRequiredError } from "../errors-Iy71s7Oj.js";
3
- import { t as createPermDock$1 } from "../permdock-yoZ7EjxX.js";
2
+ import { a as deniedMessage, i as approvalMessage, n as PermDockDeniedError, t as PermDockApprovalRequiredError } from "../errors-Cz5zn0mW.js";
3
+ import { t as createPermDock$1 } from "../permdock-CzqXjCpU.js";
4
+ import { n as resourceRef } from "../resource-ref-CaS9yVPi.js";
4
5
  import { i as isSubject } from "../subject-C6dLxqHU.js";
5
- import { l as storedApprovalToken, s as resumeDecision } from "../helpers-DnSOrhB9.js";
6
+ import { l as storedApprovalToken, s as resumeDecision } from "../helpers-H_KARDVC.js";
6
7
  import { t as timeoutSignal } from "../timeout-D51niuQP.js";
8
+ import { t as instanceOptions } from "../instance-options-Dhhcnm3y.js";
7
9
  import { mkdirSync, readFileSync, statSync, unlinkSync, writeFileSync } from "node:fs";
8
10
  import path from "node:path";
9
11
  import { createInterface } from "node:readline";
@@ -492,6 +494,15 @@ async function resolveToken(sources, options) {
492
494
  }
493
495
  //#endregion
494
496
  //#region src/terminal/create.ts
497
+ /** A thrown subject, loader or decision, or an instance check without a row. */
498
+ const FAILED_CLOSED = {
499
+ outcome: "denied",
500
+ denials: [{
501
+ role: null,
502
+ reason: "validation"
503
+ }],
504
+ alternatives: []
505
+ };
495
506
  function writeOf(options) {
496
507
  return options.runtime?.write ?? ((text) => {
497
508
  process.stderr.write(text);
@@ -542,16 +553,6 @@ function actorFromResolved(value) {
542
553
  if (typeof value === "object" && value !== null && "id" in value && "kind" in value && typeof value.id === "string" && typeof value.kind === "string") return { actor: value };
543
554
  return {};
544
555
  }
545
- function resourceRef(permission, data) {
546
- if (data !== null && typeof data === "object" && "id" in data) {
547
- const id = data.id;
548
- if (typeof id === "string" || typeof id === "number") return {
549
- type: permission.resource,
550
- id: String(id)
551
- };
552
- }
553
- return { type: permission.resource };
554
- }
555
556
  function defaultConfirm(input) {
556
557
  const rl = createInterface({
557
558
  input: process.stdin,
@@ -625,13 +626,7 @@ function createPermDock(policy, options) {
625
626
  tenant: options.tenant,
626
627
  actor,
627
628
  delegation,
628
- memberships: options.memberships,
629
- relations: options.relations,
630
- entitlements: options.entitlements,
631
- customRoles: options.customRoles,
632
- policies: options.policies,
633
- sink: options.sink,
634
- limits: options.limits
629
+ ...instanceOptions(options)
635
630
  }));
636
631
  last = built;
637
632
  return built;
@@ -652,18 +647,35 @@ function createPermDock(policy, options) {
652
647
  return filterCommandEntries(next.permdock ?? last, entries, next);
653
648
  };
654
649
  const protect = (permission, load) => (action) => async (...args) => {
655
- const instance = await permdock();
656
- let data;
657
- if (load !== void 0) data = await load(...args);
658
- const decide = instance.decide;
659
650
  const dryRun = flag(options, options.dryRun, ["--dry-run"]);
660
- const first = decide(permission, data, dryRun ? {
661
- source: "simulate",
662
- adapter: "terminal"
663
- } : {
664
- source: "adapter",
665
- adapter: "terminal"
666
- });
651
+ let instance;
652
+ let data;
653
+ let decide;
654
+ let first;
655
+ try {
656
+ instance = await permdock();
657
+ if (load !== void 0) {
658
+ data = await load(...args);
659
+ if (permission.kind === "instance" && (data === null || data === void 0)) {
660
+ write(format(FAILED_CLOSED, {
661
+ permission,
662
+ subject: instance.subject
663
+ }));
664
+ return exit(exitCode(FAILED_CLOSED));
665
+ }
666
+ }
667
+ decide = instance.decide;
668
+ first = decide(permission, data, dryRun ? {
669
+ source: "simulate",
670
+ adapter: "terminal"
671
+ } : {
672
+ source: "adapter",
673
+ adapter: "terminal"
674
+ });
675
+ } catch {
676
+ write(format(FAILED_CLOSED, { permission }));
677
+ return exit(exitCode(FAILED_CLOSED));
678
+ }
667
679
  if (dryRun) {
668
680
  write(first.outcome === "granted" ? jsonOutput(options) ? `${JSON.stringify({
669
681
  outcome: "granted",
@@ -766,7 +778,7 @@ function createPermDock(policy, options) {
766
778
  store: options.store,
767
779
  resource: resourceRef(permission, data),
768
780
  adapter: "terminal",
769
- token: await storedApprovalToken(options.store, first, false)
781
+ token: await storedApprovalToken(options.store, first)
770
782
  });
771
783
  if (resumed.outcome !== "granted") {
772
784
  write(format(resumed, {