permdock 0.4.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (514) hide show
  1. package/README.md +37 -35
  2. package/dist/{schema-Bol6gqXA.js → 2020-C9VN-x8c.js} +5 -130
  3. package/dist/a2a/index.d.ts +6 -6
  4. package/dist/a2a/index.js +14 -17
  5. package/dist/{adapter-context-mlWsVGGg.js → adapter-context-CRhqyzCk.js} +1 -1
  6. package/dist/adoption-scan-B4R5fnMU.js +107 -0
  7. package/dist/agent/index.d.ts +3 -0
  8. package/dist/agent/index.js +1 -0
  9. package/dist/ai-sdk/index.d.ts +18 -35
  10. package/dist/ai-sdk/index.js +37 -23
  11. package/dist/{app-data-CV8pqqMi.js → app-data-MuyzVqX8.js} +2 -1
  12. package/dist/approval-header-CJACtHkv.js +23 -0
  13. package/dist/approval-prompt-Dg5LeAcT.js +62 -0
  14. package/dist/approval-prompt-Djo_PyZc.d.ts +57 -0
  15. package/dist/approvals/index.d.ts +5 -3
  16. package/dist/approvals/index.js +8 -5
  17. package/dist/approvals-DJ6Yd5z1.js +995 -0
  18. package/dist/arazzo-B6lebmiQ.js +36 -0
  19. package/dist/{arazzo-C4BcskbX.js → arazzo-BWhNF-k0.js} +20 -14
  20. package/dist/args-IIolxxKA.js +197 -0
  21. package/dist/astro/index.d.ts +43 -0
  22. package/dist/astro/index.js +27 -0
  23. package/dist/audience-Dg8XsRaO.js +55 -0
  24. package/dist/auth-DRLEizbL.js +178 -0
  25. package/dist/authzen/index.d.ts +26 -6
  26. package/dist/authzen/index.js +94 -79
  27. package/dist/automation-BMZPIVUM.d.ts +114 -0
  28. package/dist/automation-DVjOckjV.js +157 -0
  29. package/dist/better-auth/index.d.ts +8 -6
  30. package/dist/better-auth/index.js +9 -8
  31. package/dist/better-supabase/index.d.ts +357 -30
  32. package/dist/better-supabase/index.js +936 -194
  33. package/dist/{bind-BzqG8SMb.d.ts → bind--9EFVYWF.d.ts} +12 -10
  34. package/dist/{bind-kk-uyCwH.js → bind-CZzhx-Vj.js} +14 -10
  35. package/dist/body-CH5of8Ne.js +10 -0
  36. package/dist/body-text-QcXok_SI.js +52 -0
  37. package/dist/{build-instance-DIIV9DbC.js → build-instance-BMnAudHn.js} +4 -3
  38. package/dist/{canonical-json-CFKyFOke.js → canonical-json-BC8_nMTw.js} +5 -3
  39. package/dist/{capability-CksyCWDH.d.ts → capability-BSslw1QV.d.ts} +44 -25
  40. package/dist/{capability-txATtKV4.js → capability-N1K9IpqS.js} +68 -42
  41. package/dist/casbin-Cr7RLtA3.js +30 -0
  42. package/dist/casbin-Dyu2gnUD.js +234 -0
  43. package/dist/casl-64gpT-8x.js +24 -0
  44. package/dist/casl-DjEDhTCP.js +299 -0
  45. package/dist/catalog/index.d.ts +74 -2
  46. package/dist/catalog/index.js +51 -2
  47. package/dist/{catalog-tZUyOfOv.js → catalog-BECMPrwc.js} +51 -6
  48. package/dist/catalog-DjhMYYCq.js +1 -0
  49. package/dist/catalog-R_A__RsH.js +52 -0
  50. package/dist/{catalog-doc-DWtg0gGR.js → catalog-doc-C9wjsfNY.js} +45 -23
  51. package/dist/catalog-fingerprint-CCP0-yQS.js +153 -0
  52. package/dist/chat/index.d.ts +2 -0
  53. package/dist/chat/index.js +224 -0
  54. package/dist/chat-sdk/index.d.ts +87 -0
  55. package/dist/chat-sdk/index.js +197 -0
  56. package/dist/claims-map-7oQ3ue4X.js +13 -0
  57. package/dist/claims-map-Ca-QX8C6.d.ts +32 -0
  58. package/dist/claude-agent/index.d.ts +7 -14
  59. package/dist/claude-agent/index.js +24 -27
  60. package/dist/clerk/index.d.ts +9 -8
  61. package/dist/clerk/index.js +9 -14
  62. package/dist/cli/bin.js +36 -17
  63. package/dist/cli/index.d.ts +19 -5
  64. package/dist/cli/index.js +164 -4
  65. package/dist/cloud/index.d.ts +102 -63
  66. package/dist/cloud/index.js +239 -340
  67. package/dist/cloud-CIoHNevm.js +87 -0
  68. package/dist/codemod-Bmj9dWMH.js +37 -0
  69. package/dist/codemod-Cxvvc70T.js +2084 -0
  70. package/dist/{collect-2SrB7lfk.js → collect-CrZJJnEF.js} +75 -11
  71. package/dist/collect-DloHbDVa.js +55 -0
  72. package/dist/collect-FlXJlhus.js +1 -0
  73. package/dist/command-L8EstFNm.js +6 -0
  74. package/dist/compile/index.d.ts +1 -1
  75. package/dist/compile/index.js +1 -2
  76. package/dist/{compile-CcEu2ZQ1.js → compile-CMqMx_IN.js} +11 -8
  77. package/dist/{compile-CtTP7eur.d.ts → compile-Ckm2HqBZ.d.ts} +5 -3
  78. package/dist/completion-BqhRBJD8.js +143 -0
  79. package/dist/config-B46rm9sc.js +26 -0
  80. package/dist/{config-BIjREpyE.js → config-bs_kZeYq.js} +12 -7
  81. package/dist/{config-report--Xb9APJS.js → config-report-DUgj62Ai.js} +15 -5
  82. package/dist/{connection-DUsczpB5.js → connection-DjhIJSs2.js} +6 -5
  83. package/dist/{context-DieZVJXu.js → context-bbFHR-0D.js} +2 -2
  84. package/dist/convex/index.d.ts +11 -10
  85. package/dist/convex/index.js +6 -4
  86. package/dist/create-0VZ7Pdiu.d.ts +107 -0
  87. package/dist/create-BDS7wc3y.d.ts +138 -0
  88. package/dist/create-BFfm17UA.d.ts +110 -0
  89. package/dist/create-BWRSXgOF.js +403 -0
  90. package/dist/create-C3b4B5eF.js +130 -0
  91. package/dist/{create-BBO24vj6.js → create-DnrmLnLW.js} +31 -32
  92. package/dist/{credential-kue0qpbm.js → credential-DM2um3ha.js} +152 -31
  93. package/dist/credentials-DPyHmYz5.js +74 -0
  94. package/dist/delegation-DaXVdDhM.js +286 -0
  95. package/dist/delivery/index.d.ts +5 -0
  96. package/dist/delivery/index.js +5 -0
  97. package/dist/delivery-DCAgNyCn.js +499 -0
  98. package/dist/delivery-event-xX4obB8F.js +40 -0
  99. package/dist/{denied-text-DfRk15uw.d.ts → denied-text-D8jDHgsl.d.ts} +5 -5
  100. package/dist/{describe-C3ldA9os.d.ts → describe-BZUsixiL.d.ts} +2 -2
  101. package/dist/{describe-Cgkp7eP0.js → describe-BybMRY7A.js} +6 -2
  102. package/dist/device-BARQ8eYG.js +193 -0
  103. package/dist/diff-CxZo9pTq.js +37 -0
  104. package/dist/{diff-rpqoe7Ag.js → diff-DCePiN6M.js} +60 -54
  105. package/dist/doctor-CxiwSfqH.js +44 -0
  106. package/dist/{doctor-owlv6ddh.js → doctor-DFjUxf2f.js} +245 -50
  107. package/dist/drizzle/index.d.ts +5 -3
  108. package/dist/drizzle/index.js +2 -2
  109. package/dist/elysia/index.d.ts +16 -13
  110. package/dist/elysia/index.js +13 -12
  111. package/dist/env-DJZrPjRi.js +8 -0
  112. package/dist/errors-BDUwg2qC.js +27 -0
  113. package/dist/{errors-drnfxYtm.js → errors-BKy0EfhN.js} +5 -9
  114. package/dist/errors-BWXBMaKK.d.ts +11 -0
  115. package/dist/{errors-OD_4c__H.d.ts → errors-C2PXIv4c.d.ts} +2 -2
  116. package/dist/errors-CWTY6uih.js +143 -0
  117. package/dist/evaluate-_R8QkWaf.js +1732 -0
  118. package/dist/evaluations-16UqqQ6W.d.ts +32 -0
  119. package/dist/{evaluations-C9YJsv3H.js → evaluations-DZ2CbV5k.js} +145 -34
  120. package/dist/eve/index.d.ts +12 -16
  121. package/dist/eve/index.js +22 -28
  122. package/dist/event-time-CsegxXxB.js +23 -0
  123. package/dist/expiry-D4_YKRKD.js +52 -0
  124. package/dist/express/index.d.ts +13 -10
  125. package/dist/express/index.js +12 -11
  126. package/dist/fastify/index.d.ts +25 -22
  127. package/dist/fastify/index.js +13 -12
  128. package/dist/fetch-adapter-g0ypLkID.js +120 -0
  129. package/dist/fetch-adapter-qKJBuRqy.d.ts +31 -0
  130. package/dist/fields-D9tPVUUS.js +203 -0
  131. package/dist/files-C5ZI27eV.js +124 -0
  132. package/dist/{fixtures-h2eG2OZV.js → fixtures-B7XrLeY7.js} +8 -7
  133. package/dist/flags-C3DktBDY.js +86 -0
  134. package/dist/{from-snapshot-7REQZe0H.js → from-snapshot-D2lZt4Dd.js} +55 -52
  135. package/dist/{grantee-CXY-0C87.js → grantee-Cn1HyUsI.js} +3 -3
  136. package/dist/{grantee-conditions-MQs5NIuX.js → grantee-conditions-CcXf8hMM.js} +4 -3
  137. package/dist/{grantee-match-fxYp9Nmt.js → grantee-match-DHArqY82.js} +5 -4
  138. package/dist/h3/index.d.ts +37 -0
  139. package/dist/h3/index.js +35 -0
  140. package/dist/headers-BIjfMaoC.js +8 -0
  141. package/dist/headers-CIbDTUTK.d.ts +7 -0
  142. package/dist/{helpers-C9YmyBIa.js → helpers-DTcZOzhF.js} +45 -38
  143. package/dist/hono/index.d.ts +12 -9
  144. package/dist/hono/index.js +13 -12
  145. package/dist/hosted-BZIAYvon.js +315 -0
  146. package/dist/hosted-DBDX0M-P.d.ts +78 -0
  147. package/dist/{http-DPuDaChb.d.ts → http-B_LphE5Y.d.ts} +1 -2
  148. package/dist/http-DXJ37RDA.js +46 -0
  149. package/dist/{http-BEbdMZ05.js → http-ujKm0JXE.js} +1 -2
  150. package/dist/{import-UHk1N7vH.js → import-CNV7I2Dw.js} +25 -20
  151. package/dist/{import-BFIlhetD.js → import-DMmOG27O.js} +190 -53
  152. package/dist/index-BcHcPyIo.d.ts +110 -0
  153. package/dist/index-CaxrMD1A.d.ts +1 -0
  154. package/dist/index-Chrs5fQ-.d.ts +210 -0
  155. package/dist/index-CxGUswIC.d.ts +431 -0
  156. package/dist/index-D8EovfsP.d.ts +91 -0
  157. package/dist/{index-UdVQgq48.d.ts → index-DOVf7RJv.d.ts} +431 -81
  158. package/dist/{index-BwMe94Xq.d.ts → index-SGdIQyzc.d.ts} +34 -16
  159. package/dist/index.d.ts +19 -15
  160. package/dist/index.js +31 -21
  161. package/dist/init-DeMYsnYJ.js +96 -0
  162. package/dist/init-GG6Jh8HD.js +95 -0
  163. package/dist/{instance-options-plkrsAog.d.ts → instance-options-Omfd793B.d.ts} +2 -2
  164. package/dist/instance-snapshot-Cxq4ygFc.js +600 -0
  165. package/dist/instant-BluqDvyS.js +19 -0
  166. package/dist/internals-Dk8A8fX3.js +17 -0
  167. package/dist/{json-schema-DBkdUuCO.js → json-schema-B-vAwlde.js} +45 -6
  168. package/dist/json-schema-CN_iLFH2.d.ts +40 -0
  169. package/dist/jwt/index.d.ts +18 -11
  170. package/dist/jwt/index.js +156 -135
  171. package/dist/{kernel-CB3LrIJM.js → kernel-5JatXyND.js} +52 -24
  172. package/dist/kysely/index.d.ts +5 -3
  173. package/dist/kysely/index.js +2 -2
  174. package/dist/load-BxEtwlBS.js +1 -0
  175. package/dist/{load-C3_oTHyO.js → load-DFS_ry0W.js} +22 -6
  176. package/dist/{load-jose-BL6LH4bL.js → load-jose-DZ4dnjri.js} +1 -4
  177. package/dist/login-Dfe5RlYk.js +68 -0
  178. package/dist/login-imhuwvn3.js +254 -0
  179. package/dist/manifest-C8IzW3Do.js +42 -0
  180. package/dist/manifest-CtKR3GXL.js +370 -0
  181. package/dist/manifest-json-CAGzls-C.js +9 -0
  182. package/dist/{manifest-uDS9y5de.d.ts → manifest-mx5ghSFM.d.ts} +9 -2
  183. package/dist/manifest-schema-C0kK_8V0.js +399 -0
  184. package/dist/{map-claims-AVlBaJoa.js → map-claims-D3oRmTk0.js} +13 -10
  185. package/dist/{map-error-BE27PYkE.js → map-error-TCAdw-eW.js} +3 -3
  186. package/dist/{markers-CiwAOZtO.js → markers-C6joDI3o.js} +2 -1
  187. package/dist/mcp/index.d.ts +22 -12
  188. package/dist/mcp/index.js +57 -39
  189. package/dist/{migrate-BwlB5-Wk.js → migrate-BShP7Vf4.js} +53 -14
  190. package/dist/nest/index.d.ts +12 -9
  191. package/dist/nest/index.js +15 -14
  192. package/dist/next/index.d.ts +18 -21
  193. package/dist/next/index.js +13 -11
  194. package/dist/next/plugin.d.ts +1 -1
  195. package/dist/next/plugin.js +2 -2
  196. package/dist/node/index.d.ts +10 -10
  197. package/dist/node/index.js +7 -9
  198. package/dist/{ocsf-uYFXGVw2.js → ocsf-BFp-PZZA.js} +22 -11
  199. package/dist/openai/index.d.ts +9 -16
  200. package/dist/openai/index.js +17 -24
  201. package/dist/openapi/index.d.ts +3 -3
  202. package/dist/openapi/index.js +1 -1
  203. package/dist/{openapi-DBzHQbov.js → openapi-B7HZ0f-r.js} +8 -8
  204. package/dist/{openapi-BJdBmYDG.js → openapi-DTaEmTSW.js} +10 -9
  205. package/dist/openapi-ahr8rHu3.js +138 -0
  206. package/dist/operation-findings-DgATDpvh.js +36 -0
  207. package/dist/operations-CxybZErY.d.ts +59 -0
  208. package/dist/orpc/index.d.ts +13 -10
  209. package/dist/orpc/index.js +20 -15
  210. package/dist/otel/index.d.ts +3 -2
  211. package/dist/otel/index.js +30 -7
  212. package/dist/output-Dyw8fyPF.js +88 -0
  213. package/dist/output-files-B3IZJksC.js +1 -0
  214. package/dist/{output-files-CgIsvdSa.js → output-files-DhRBBE4n.js} +24 -26
  215. package/dist/{permission-keys-B26jeyUv.js → ownership-BatFgAA4.js} +1698 -869
  216. package/dist/{package-root-DtNnpmUd.js → package-root-Dk_ETdkp.js} +1 -1
  217. package/dist/{parse-CVFQHk6c.js → parse-Cxq0WxrA.js} +2 -2
  218. package/dist/{parse-local-manifest-C-q02Pal.js → parse-local-manifest-CVSs6J9I.js} +1 -1
  219. package/dist/{parse-local-manifest-DvYUR0QL.d.ts → parse-local-manifest-DgqtruPn.d.ts} +1 -1
  220. package/dist/parse-request-D_tUXG6M.js +26 -0
  221. package/dist/paths-DXSHAMIa.js +42 -0
  222. package/dist/pdp/index.d.ts +7 -3
  223. package/dist/pdp/index.js +45 -26
  224. package/dist/{peer-BOr_kJE1.js → peer-C8swJ2GH.js} +23 -4
  225. package/dist/peer-CRvC7Hg1.js +1 -0
  226. package/dist/permdock-B9JxkBwC.js +868 -0
  227. package/dist/permdock-D7eeLJER.d.ts +502 -0
  228. package/dist/{permission-registry-BsblpB-z.js → permission-registry-Br4jSNVi.js} +3 -3
  229. package/dist/permissions-B-wCP5ZC.js +30 -0
  230. package/dist/{permissions-CCJ6lmxB.js → permissions-CZKiUfFM.js} +4 -3
  231. package/dist/{permissions-COH-KRgT.d.ts → permissions-oEWfl-kl.d.ts} +1 -2
  232. package/dist/policies-CO1oOymN.js +295 -0
  233. package/dist/{policy-ur0BBK_e.d.ts → policy-Czo4n3Hs.d.ts} +2 -2
  234. package/dist/{hosted-CBHgkzDl.js → policy-DLZJ5gAp.js} +17 -273
  235. package/dist/policy-from-catalog-DzhEc3Y9.js +450 -0
  236. package/dist/policy-module-CTlwMvLI.js +89 -0
  237. package/dist/{policy-types-sp9P1iIV.d.ts → policy-types-DzwivBgR.d.ts} +434 -631
  238. package/dist/postgrest-CW0IqC-U.js +566 -0
  239. package/dist/postgrest-NUqZT-RB.d.ts +100 -0
  240. package/dist/powersync-BHfuehf3.js +62 -0
  241. package/dist/powersync-CbzkqL_M.js +1 -0
  242. package/dist/{powersync-cZe4kzhL.js → powersync-bYUDLOAO.js} +23 -24
  243. package/dist/preset/index.d.ts +146 -0
  244. package/dist/preset/index.js +1 -0
  245. package/dist/preset-DZdU0tne.js +1768 -0
  246. package/dist/principal-source-pHneukrx.js +103 -0
  247. package/dist/prisma/index.d.ts +6 -3
  248. package/dist/prisma/index.js +2 -2
  249. package/dist/{problem-CnWraVhC.js → problem-CTviyH5L.js} +13 -23
  250. package/dist/{problem-details-rIIo8B2C.d.ts → problem-details-DXlt-vks.d.ts} +1 -1
  251. package/dist/{problem-details-DECUnXAn.js → problem-details-cn5X30gZ.js} +43 -40
  252. package/dist/problem-types-CJ2325SZ.js +5 -0
  253. package/dist/{prompt-CXYhLfsS.js → prompt-DfZLJLIn.js} +2 -2
  254. package/dist/{protected-B3_P7xuw.d.ts → protected-DEPHc2xV.d.ts} +16 -8
  255. package/dist/{protected-BN7BUdY1.js → protected-DfjY5mLA.js} +21 -4
  256. package/dist/{provider-Bi-0HNL3.js → provider-CC-u3bYP.js} +2 -2
  257. package/dist/{provider-kwHC9CZD.d.ts → provider-DMVt6yYn.d.ts} +1 -1
  258. package/dist/{provider-store-Ctt-81Ni.js → provider-store-B5Yrkhzr.js} +2 -2
  259. package/dist/pull-BgIfno6w.js +256 -0
  260. package/dist/pull-ByOks_Tg.js +1 -0
  261. package/dist/push-CmFVBOeI.js +116 -0
  262. package/dist/pushed-policy-BImMTTIM.d.ts +57 -0
  263. package/dist/pushed-policy-DobP7AHI.js +238 -0
  264. package/dist/react/index.d.ts +8 -8
  265. package/dist/react/index.js +6 -6
  266. package/dist/react/provider-client.d.ts +1 -1
  267. package/dist/react/provider-client.js +1 -2
  268. package/dist/react-native/index.d.ts +24 -72
  269. package/dist/react-native/index.js +24 -22
  270. package/dist/{refs-f3imMjNW.js → refs-K6eWUJ0H.js} +1 -1
  271. package/dist/{relation-walk-BXnlLtg2.js → relation-walk-3OyDBF0S.js} +2 -2
  272. package/dist/{relations-CvmSpG67.js → relations-BnCWnJGI.js} +3 -3
  273. package/dist/renames-CGj7YwcQ.js +175 -0
  274. package/dist/{replay-COpmZUfx.d.ts → replay-D7iKcLFe.d.ts} +1 -1
  275. package/dist/{replay-BsOyTrdV.js → replay-Du1tJjG7.js} +2 -1
  276. package/dist/{request-context-BVM7aWNs.js → request-context-BTRTG7OT.js} +3 -3
  277. package/dist/request-schema-CMreVuFM.js +148 -0
  278. package/dist/resend/index.d.ts +126 -0
  279. package/dist/resend/index.js +379 -0
  280. package/dist/{resource-relations-D1Un3pcz.js → resource-relations-D_jw0BFx.js} +1 -1
  281. package/dist/{retire-BFcxL6un.js → retire-CALjIQ7e.js} +2 -2
  282. package/dist/{revocations-Cy06JNx2.d.ts → revocations-R07lFBnX.d.ts} +2 -0
  283. package/dist/rls-BA8an5Ap.js +336 -0
  284. package/dist/{rls-BEktUaqg.js → rls-j6t43t7n.js} +287 -689
  285. package/dist/{role-builder-B4GbKM-i.js → role-builder-CXbis5-X.js} +14 -207
  286. package/dist/{rpc-nYC3cR_u.js → rpc-aPyNi6tA.js} +7 -7
  287. package/dist/run-CNsApDpd.js +1 -0
  288. package/dist/run-DOfMtc9V.js +723 -0
  289. package/dist/run-ticket-BjhTOi6u.d.ts +124 -0
  290. package/dist/run-ticket-sxFI6LAk.js +337 -0
  291. package/dist/{runtime-D_tMXnsq.js → runtime-D3VTAiCA.js} +1 -1
  292. package/dist/{saas-DtaA4JuW.js → saas-FO-Q8oj0.js} +16 -14
  293. package/dist/scan-BOI5tJ-6.js +29 -0
  294. package/dist/{schema-DjQBcAP9.js → schema-B4v0Qrac.js} +102 -8
  295. package/dist/schema-yLuBWWsh.js +130 -0
  296. package/dist/scim/index.d.ts +2 -2
  297. package/dist/scim/index.js +1 -2
  298. package/dist/{scim-vFR1O5oG.js → scim-ClHtpyV3.js} +208 -76
  299. package/dist/{scopes-tvpa34ep.js → scopes-CUPSjo9q.js} +12 -7
  300. package/dist/server/index.d.ts +12 -143
  301. package/dist/server/index.js +12 -9
  302. package/dist/server-DqCT4CgZ.js +453 -0
  303. package/dist/{server-types-DdqBwZN_.d.ts → server-types-BLd4MnBX.d.ts} +51 -68
  304. package/dist/{sha256-BO0swRXL.js → sha256-D9ihqmvd.js} +8 -1
  305. package/dist/{shared-1uhI-e-b.js → shared-CD11nBbC.js} +18 -8
  306. package/dist/{shared-JhMeOsDF.js → shared-DvvFzYXe.js} +8 -9
  307. package/dist/signals-D3NcTKUS.js +32 -0
  308. package/dist/sink-BEZSlMS_.js +957 -0
  309. package/dist/sink-Bj_lDUDq.d.ts +225 -0
  310. package/dist/{skills-BZdRQkxs.js → skills-B6lVdD_W.js} +13 -6
  311. package/dist/skills-CTYwkl44.js +51 -0
  312. package/dist/snapshot-CXUWfsNy.js +269 -0
  313. package/dist/{snapshot-cache-Cod40D-X.js → snapshot-cache-DZHQ0KF6.js} +11 -5
  314. package/dist/{snapshot-cache-J5T7t_vD.d.ts → snapshot-cache-DqK9eDmM.d.ts} +7 -5
  315. package/dist/solid/index.d.ts +11 -12
  316. package/dist/solid/index.js +7 -7
  317. package/dist/solid-start/index.d.ts +52 -0
  318. package/dist/solid-start/index.js +49 -0
  319. package/dist/{sources-Dljy06zL.d.ts → sources-BV9j0DeZ.d.ts} +7 -13
  320. package/dist/{sources-B1-b-R0t.js → sources-vs5dGOsS.js} +125 -119
  321. package/dist/{sql-t8teWOfo.js → sql-B5T1IL83.js} +13 -1
  322. package/dist/src-DLfUWFAI.js +1851 -0
  323. package/dist/ssf/index.d.ts +4 -4
  324. package/dist/ssf/index.js +384 -47
  325. package/dist/standard-webhooks-6lg8v_is.d.ts +88 -0
  326. package/dist/standard-webhooks-DgFFD-Ga.js +228 -0
  327. package/dist/storage-C2bWdvJH.js +132 -0
  328. package/dist/{store-ILkLUj_o.js → store-4u_hxjWa.js} +40 -53
  329. package/dist/{store-options-CbUHDoSe.js → store-options-BqEakYRa.js} +26 -21
  330. package/dist/{stores-BHXdSbw9.js → stores-BbsD4fAR.js} +2 -2
  331. package/dist/{stores-Cxz_80g-.d.ts → stores-ClZUgeoP.d.ts} +7 -8
  332. package/dist/{stream-Dwsg6WwE.d.ts → stream-7-xmnf3U.d.ts} +2 -2
  333. package/dist/{stream-BMui98KK.js → stream-CvdUS9V1.js} +9 -2
  334. package/dist/style-DiKWnAvn.js +1 -0
  335. package/dist/{style-CTm1AXDT.js → style-Uao76wO7.js} +3 -2
  336. package/dist/subject-BGoM5o8B.js +17 -0
  337. package/dist/supabase/index.d.ts +23 -106
  338. package/dist/supabase/index.js +5 -4
  339. package/dist/supabase/middleware.d.ts +7 -6
  340. package/dist/supabase/middleware.js +13 -11
  341. package/dist/supabase-9pqI57pW.js +92 -0
  342. package/dist/{supabase-C1TWlnYt.js → supabase-Dxlp8A94.js} +98 -205
  343. package/dist/supabase-hook-CXcGpHqq.js +1 -0
  344. package/dist/{supabase-hook-Cva3ikXz.js → supabase-hook-DdDQhMlw.js} +951 -60
  345. package/dist/support-session-C6xJQYut.js +158 -0
  346. package/dist/svelte/Protected.svelte +4 -4
  347. package/dist/svelte/index.d.ts +7 -7
  348. package/dist/svelte/index.js +10 -10
  349. package/dist/svelte/runtime.d.ts +3 -3
  350. package/dist/svelte/runtime.js +3 -3
  351. package/dist/svelte/source.d.ts +7 -7
  352. package/dist/svelte/source.js +4 -4
  353. package/dist/sveltekit/index.d.ts +51 -0
  354. package/dist/sveltekit/index.js +27 -0
  355. package/dist/tanstack-start/index.d.ts +51 -0
  356. package/dist/tanstack-start/index.js +40 -0
  357. package/dist/target-Bw37TFNA.js +51 -0
  358. package/dist/{tenancy-DshjqY0n.js → tenancy-DN2QAx9z.js} +5 -5
  359. package/dist/terminal/index.d.ts +11 -9
  360. package/dist/terminal/index.js +23 -287
  361. package/dist/testing/index.d.ts +311 -38
  362. package/dist/testing/index.js +3475 -201
  363. package/dist/testing/saas/index.d.ts +9 -8
  364. package/dist/testing/saas/index.js +2 -2
  365. package/dist/testing/saas/permissions.d.ts +1 -1
  366. package/dist/testing/saas/permissions.js +1 -2
  367. package/dist/text-BMFRfBqc.js +8 -0
  368. package/dist/{text-diff-BdkkYSbi.js → text-diff-BQcUapOb.js} +1 -1
  369. package/dist/thenable-yD7SabqG.js +31 -0
  370. package/dist/time-DkWjdL98.js +71 -0
  371. package/dist/{token-Bx9qy30p.js → token-BLZcjQgt.js} +15 -6
  372. package/dist/{tool-refusal-CQ7OEia9.js → tool-refusal-CMLN5xhn.js} +2 -2
  373. package/dist/trpc/index.d.ts +12 -9
  374. package/dist/trpc/index.js +16 -14
  375. package/dist/{types-7rJVLWe5.d.ts → types-5Ut_pbKy.d.ts} +61 -11
  376. package/dist/{store-9KO4BlkB.d.ts → types-BNORmDM8.d.ts} +100 -75
  377. package/dist/types-BjV-fqcA.d.ts +57 -0
  378. package/dist/{types-CUcFZfpU.d.ts → types-BqAKcRNW.d.ts} +2 -1
  379. package/dist/types-C8-KNsFf.d.ts +107 -0
  380. package/dist/{types-Br9IXUBG.d.ts → types-CCpc2Dcv.d.ts} +77 -17
  381. package/dist/{types-DpWfQdSh.d.ts → types-CZTnPFzM.d.ts} +46 -11
  382. package/dist/{types-CqrjB9o6.d.ts → types-CdlxsYQh.d.ts} +23 -11
  383. package/dist/{types-CIlTojhq.d.ts → types-ClZaWzfb.d.ts} +9 -6
  384. package/dist/types-DX0LaKTb.d.ts +157 -0
  385. package/dist/types-DiQjupG2.d.ts +332 -0
  386. package/dist/types-DqzsnlSA.js +67 -0
  387. package/dist/types-_sHy8BQf.d.ts +65 -0
  388. package/dist/{types-ByUo56un.d.ts → types-fbZ7JEXr.d.ts} +23 -22
  389. package/dist/{types-DHrmBJLH.d.ts → types-tIgIeIKJ.d.ts} +7 -7
  390. package/dist/unplugin/index.d.ts +1 -1
  391. package/dist/unplugin/index.js +2 -2
  392. package/dist/usage-CHOtwL19.js +1 -0
  393. package/dist/usage-DHtE8j4E.js +32 -0
  394. package/dist/{usage-CG9nOYZw.js → usage-T5mXq98v.js} +54 -11
  395. package/dist/{validation-error-BSSw0l_8.d.ts → validation-error-Bg5Tpluk.d.ts} +1 -1
  396. package/dist/{validity-dVrUEPJt.js → validity-CZ7-y0Cj.js} +32 -15
  397. package/dist/{verifier-DMr_Zmb_.js → verifier-DHuh-okk.js} +18 -7
  398. package/dist/{verify-BztUB3GX.js → verify-DbCL9bnB.js} +645 -50
  399. package/dist/{version-BEogC-rB.js → version-CEbQ5UeM.js} +4 -3
  400. package/dist/version-DXkYUISx.js +1 -0
  401. package/dist/{views-CJsrBS1f.js → views-DTIIO-oQ.js} +22 -5
  402. package/dist/{permission-types-Dg39z9Kv.d.ts → vocabulary-D6lPdb4Z.d.ts} +65 -2
  403. package/dist/vue/index.d.ts +9 -10
  404. package/dist/vue/index.js +8 -8
  405. package/dist/waiter-BGUtGYoU.js +67 -0
  406. package/dist/waiter-CKy4MQSY.d.ts +36 -0
  407. package/dist/watch-Cb-NcaUw.js +1 -0
  408. package/dist/{watch-zeucB7eF.js → watch-CszoTJMq.js} +44 -5
  409. package/dist/webmcp/index.d.ts +2 -2
  410. package/dist/webmcp/index.js +3 -3
  411. package/dist/where-scope-Dv-WTP-w.js +306 -0
  412. package/dist/who-can-D0QoYbEb.js +364 -0
  413. package/dist/wire-delegation-Cv3W2eaM.js +36 -0
  414. package/dist/wire-denial-C7PaVYEM.js +27 -0
  415. package/dist/workflow/index.d.ts +5 -0
  416. package/dist/workflow/index.js +223 -0
  417. package/dist/workflow-sdk/index.d.ts +56 -0
  418. package/dist/workflow-sdk/index.js +78 -0
  419. package/dist/{wrap-Cr93qqdP.d.ts → wrap-Bd1Tejur.d.ts} +2 -1
  420. package/dist/{wrap-DWsU_5Bd.js → wrap-gX61EtpB.js} +7 -6
  421. package/package.json +136 -37
  422. package/schemas/access-event-v1.json +118 -0
  423. package/schemas/approval-request-v1.json +34 -1
  424. package/schemas/approval-signature-v1.json +94 -0
  425. package/schemas/automation-event-v1.json +113 -0
  426. package/schemas/capability-v1.json +84 -0
  427. package/schemas/catalog-event-v1.json +87 -0
  428. package/schemas/catalog-v1.json +123 -12
  429. package/schemas/cli-commands-v1.json +164 -0
  430. package/schemas/cli-result-v1.json +96 -0
  431. package/schemas/cloud-api-v1.json +5407 -0
  432. package/schemas/connector-v1.json +408 -0
  433. package/schemas/credential-event-v1.json +81 -0
  434. package/schemas/credential-v1.json +134 -0
  435. package/schemas/decision-event-v1.json +288 -0
  436. package/schemas/delivery-event-v1.json +117 -0
  437. package/schemas/directory-event-v1.json +85 -0
  438. package/schemas/evidence-export-v1.json +54 -0
  439. package/schemas/membership-event-v1.json +93 -0
  440. package/schemas/policy-v1.json +68 -0
  441. package/schemas/pushed-policy-v1.json +236 -0
  442. package/schemas/run-v1.json +162 -0
  443. package/schemas/snapshot-v1.json +138 -0
  444. package/schemas/supabase-claims-v1.json +4 -4
  445. package/schemas/supabase-manifest-v1.json +5 -1
  446. package/schemas/support-session-v1.json +111 -0
  447. package/skills/permdock/SKILL.md +16 -12
  448. package/skills/permdock-agents/SKILL.md +40 -23
  449. package/skills/permdock-agents/references/operations-automations-chat.md +221 -0
  450. package/skills/permdock-agents/references/runtimes.md +22 -18
  451. package/skills/permdock-approvals/SKILL.md +29 -13
  452. package/skills/permdock-approvals/references/delivery-and-waiters.md +172 -0
  453. package/skills/permdock-approvals/references/stores-and-resume.md +21 -7
  454. package/skills/permdock-audit/SKILL.md +3 -3
  455. package/skills/permdock-credentials/SKILL.md +5 -5
  456. package/skills/permdock-credentials/references/tokens-keys-links.md +14 -10
  457. package/skills/permdock-data/SKILL.md +6 -6
  458. package/skills/permdock-data/references/queries-and-rls.md +9 -8
  459. package/skills/permdock-data/references/relationships.md +3 -3
  460. package/skills/permdock-tenancy/SKILL.md +20 -7
  461. package/skills/permdock-tenancy/references/contacts-and-support-sessions.md +122 -0
  462. package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +5 -4
  463. package/skills/permdock-wire/SKILL.md +17 -11
  464. package/skills/permdock-wire/references/adapters.md +139 -51
  465. package/skills/permdock-wire/references/policy-options.md +5 -5
  466. package/skills/permdock-wire/references/presets-and-recipes.md +58 -0
  467. package/dist/approvals-DZL76lKW.js +0 -240
  468. package/dist/arazzo-CD8d0WLb.js +0 -54
  469. package/dist/catalog-6yWAX6Ps.js +0 -2
  470. package/dist/catalog-WHG4kBq7.js +0 -48
  471. package/dist/cloud-C7bSDgX4.js +0 -50
  472. package/dist/cloud-PeBN3IEn.js +0 -118
  473. package/dist/collect-Bw2Jdq1q.js +0 -2
  474. package/dist/collect-CQx4hX4N.js +0 -83
  475. package/dist/commands-Cpip4ULx.js +0 -97
  476. package/dist/config-DLt6BvV7.js +0 -36
  477. package/dist/diff-Cnghh_Ip.js +0 -48
  478. package/dist/doctor-CuVJvhV_.js +0 -53
  479. package/dist/duration-xK2jGFVc.js +0 -25
  480. package/dist/errors-CWfoNg9N.js +0 -47
  481. package/dist/errors-DRnGZHzF.js +0 -30
  482. package/dist/expiry-BoBJ8Tvc.js +0 -7
  483. package/dist/fields-fwfXN01n.js +0 -1016
  484. package/dist/headers-BZSDieNT.js +0 -6
  485. package/dist/headers-Cf-zWvsO.d.ts +0 -6
  486. package/dist/ids-DC4V4CFu.js +0 -18
  487. package/dist/index-DgM7w96K.d.ts +0 -6
  488. package/dist/index-Dz7didpC.d.ts +0 -201
  489. package/dist/load-B_shHrmd.js +0 -2
  490. package/dist/manifest-BngWKryL.js +0 -770
  491. package/dist/may-use-BOn_dR_w.js +0 -78
  492. package/dist/openapi-DcQ1Kg40.js +0 -164
  493. package/dist/ownership-BgnbOJFT.js +0 -851
  494. package/dist/permdock-L26udHSk.js +0 -3646
  495. package/dist/powersync-BFSbSElQ.js +0 -62
  496. package/dist/powersync-DCDgZgfZ.js +0 -2
  497. package/dist/rls-55DQTuf5.js +0 -250
  498. package/dist/run-DMcNW_8T.js +0 -174
  499. package/dist/server-ZYEHtNHS.js +0 -268
  500. package/dist/sink-BTtmfPnE.js +0 -141
  501. package/dist/sink-CPN4zLfs.d.ts +0 -104
  502. package/dist/skills-Dle4ZoLF.js +0 -56
  503. package/dist/snapshot-Dc9CHPME.js +0 -1078
  504. package/dist/src-Bb7no-hS.js +0 -639
  505. package/dist/subject-C6dLxqHU.js +0 -24
  506. package/dist/supabase-Dbqr141s.js +0 -83
  507. package/dist/supabase-hook-BULg7Ut_.js +0 -2
  508. package/dist/thenable-QSmvt-vZ.js +0 -65
  509. package/dist/types-C0dee0Qf.d.ts +0 -197
  510. package/dist/types-DvupZE0w.d.ts +0 -9
  511. package/dist/usage-4G6t643F.js +0 -42
  512. package/dist/usage-iFLJ0-rr.js +0 -2
  513. package/dist/vocabulary-hhEFLFoL.d.ts +0 -65
  514. package/dist/watch-C8TpsAl4.js +0 -2
@@ -0,0 +1,403 @@
1
+ import { r as isRecord, t as compact } from "./compact-CAf557ZB.js";
2
+ import { n as freezeDeep } from "./freeze-CrU8nQeX.js";
3
+ import { i as dateAt, p as nowSeconds } from "./time-DkWjdL98.js";
4
+ import { s as policyDocumentFromClaims } from "./hosted-BZIAYvon.js";
5
+ import { l as isApprovalErrorCode, s as ApprovalError, t as APPROVAL_HEADER } from "./types-DqzsnlSA.js";
6
+ import { h as toCloudEvent, l as isAbsoluteUri } from "./sink-BEZSlMS_.js";
7
+ import { n as parseCatalogEventData, t as catalogFingerprint } from "./catalog-fingerprint-CCP0-yQS.js";
8
+ import { t as parseApprovalRequest } from "./parse-request-D_tUXG6M.js";
9
+ import { t as timeoutSignal } from "./timeout-D51niuQP.js";
10
+ //#region src/cloud/approver.ts
11
+ const APPROVER_HEADER = "PermDock-Approver";
12
+ /** The RFC 9396 `authorization_details` type that binds an approver token to one verdict. */
13
+ const APPROVAL_DETAIL_TYPE = "permdock_approval";
14
+ /** Seconds an approver token lives: it proves one resolve call, and the Cloud refuses a replayed `jti`. */
15
+ const APPROVER_TTL = 60;
16
+ async function facts(read, request, verdict, fallback) {
17
+ if (read === void 0) return fallback ?? [];
18
+ try {
19
+ return (await read(request, verdict.by)).filter((item) => typeof item === "string");
20
+ } catch {
21
+ return [];
22
+ }
23
+ }
24
+ function unauthenticated(detail) {
25
+ return new ApprovalError("approver-unauthenticated", detail);
26
+ }
27
+ /** A rejection only denies, so the Cloud takes a `system` one without an approver token. */
28
+ function isSystemRejection(verdict) {
29
+ return verdict.status === "rejected" && verdict.by.actor?.kind === "system";
30
+ }
31
+ /**
32
+ * The `PermDock-Approver` header for `verdict`: an RFC 9068 `at+jwt` whose
33
+ * `sub` is the approver, signed by `options.signer` for `<issuer>/approvals`,
34
+ * with a fresh `jti` and one `permdock_approval` authorization detail naming
35
+ * the request id, the verdict status, `vouched`, and the approver's
36
+ * `permissions` and `relations`. With the `roles`, `memberships` and `tenant`
37
+ * claims they are the only facts the Cloud checks a request's `approvers`
38
+ * against in bring-your-own mode. `target` runs only after the
39
+ * approver checks pass. Throws an `ApprovalError` before any resolve when the
40
+ * approver cannot be proven: no signer, no principal, an actor, a failed
41
+ * lookup or a signer failure.
42
+ */
43
+ async function approverHeaders(verdict, options, issuer, target) {
44
+ if (isSystemRejection(verdict)) return {};
45
+ if (verdict.by.actor !== void 0) throw new ApprovalError("approver-not-eligible", "PermDock Cloud: a person approves; a verdict with an actor has no approver token");
46
+ const principal = verdict.by.principal;
47
+ if (principal === null || principal.id === "") throw unauthenticated("PermDock Cloud: the approver has no principal id");
48
+ if (options === void 0) throw unauthenticated("PermDock Cloud: cloud() needs approver.signer to prove who resolves an approval");
49
+ const { request, etag } = await target();
50
+ const permissions = await facts(options.permissions, request, verdict, verdict.permissions);
51
+ const relations = await facts(options.relations, request, verdict, verdict.relations);
52
+ const issuedAt = nowSeconds();
53
+ try {
54
+ const token = await options.signer.sign({
55
+ sub: principal.id,
56
+ roles: principal.roles,
57
+ ...principal.memberships === void 0 ? {} : { memberships: principal.memberships },
58
+ ...principal.tenant === void 0 ? {} : { tenant: principal.tenant },
59
+ authorization_details: [{
60
+ type: APPROVAL_DETAIL_TYPE,
61
+ id: request.id,
62
+ status: verdict.status,
63
+ permissions,
64
+ relations,
65
+ ...etag === void 0 ? {} : { etag },
66
+ ...verdict.vouched === void 0 ? {} : { vouched: verdict.vouched }
67
+ }]
68
+ }, {
69
+ typ: "at+jwt",
70
+ audience: options.audience ?? `${issuer}/approvals`,
71
+ issuedAt,
72
+ expiresAt: issuedAt + APPROVER_TTL,
73
+ jti: globalThis.crypto.randomUUID()
74
+ });
75
+ return { [APPROVER_HEADER]: token };
76
+ } catch {
77
+ throw unauthenticated("PermDock Cloud: the approver signer failed");
78
+ }
79
+ }
80
+ //#endregion
81
+ //#region src/cloud/request.ts
82
+ /** Milliseconds a PermDock Cloud request may take; a slower one fails like an unreachable Cloud. */
83
+ const CLOUD_TIMEOUT_MS = 1e4;
84
+ function readEnv(name) {
85
+ const value = globalThis.process?.env?.[name];
86
+ return typeof value === "string" ? value : "";
87
+ }
88
+ function firstNonEmpty(...values) {
89
+ for (const value of values) if (value !== void 0 && value !== "") return value;
90
+ return "";
91
+ }
92
+ function trimSlash(value) {
93
+ return value.endsWith("/") ? value.slice(0, -1) : value;
94
+ }
95
+ /**
96
+ * The environment URL and JWK Set URL `cloud()` uses, resolved with the same
97
+ * fallbacks (`PERMDOCK_CLOUD_URL`; `PERMDOCK_CLOUD_ENV`, `VERCEL_ENV`, `production`).
98
+ */
99
+ function cloudEndpoints(options = {}) {
100
+ const url = trimSlash(firstNonEmpty(options.url, readEnv("PERMDOCK_CLOUD_URL")));
101
+ if (url === "") throw new Error("PermDock: cloud() requires url and key.");
102
+ const environment = firstNonEmpty(options.environment, readEnv("PERMDOCK_CLOUD_ENV"), readEnv("VERCEL_ENV"), "production");
103
+ const issuer = `${url}/v1/environments/${encodeURIComponent(environment)}`;
104
+ return Object.freeze({
105
+ issuer,
106
+ jwks: `${issuer}/.well-known/jwks.json`
107
+ });
108
+ }
109
+ /** The authenticated connection every `permdock/cloud` client shares. Throws without a URL or key. */
110
+ function cloudConnection(options) {
111
+ const key = firstNonEmpty(options.key, readEnv("PERMDOCK_CLOUD_KEY"));
112
+ if (key === "") throw new Error("PermDock: cloud() requires url and key.");
113
+ const endpoints = cloudEndpoints(options);
114
+ const fetchFn = options.fetch ?? globalThis.fetch.bind(globalThis);
115
+ const request = (path, init = {}, accept, contentType) => {
116
+ const headers = new Headers();
117
+ headers.set("authorization", `Bearer ${key}`);
118
+ headers.set("content-type", "application/json");
119
+ for (const [name, value] of new Headers(init.headers)) headers.set(name, value);
120
+ if (accept !== void 0) headers.set("accept", accept);
121
+ if (contentType !== void 0) headers.set("content-type", contentType);
122
+ return fetchFn(`${endpoints.issuer}${path}`, {
123
+ ...init,
124
+ headers,
125
+ signal: timeoutSignal(CLOUD_TIMEOUT_MS, init.signal)
126
+ });
127
+ };
128
+ return Object.freeze({
129
+ ...endpoints,
130
+ request
131
+ });
132
+ }
133
+ /** `true` for a compact JWS: three dot-separated parts, not JSON. */
134
+ function isCompactJws(value) {
135
+ return !value.startsWith("{") && value.split(".").length === 3;
136
+ }
137
+ //#endregion
138
+ //#region src/cloud/create.ts
139
+ /** Carries the `at+jwt` that names the subject of `GET /snapshot`. */
140
+ const SUBJECT_HEADER = "PermDock-Subject";
141
+ function catalogPushOf(value) {
142
+ if (!isRecord(value) || !Number.isSafeInteger(value["version"]) || typeof value["fingerprint"] !== "string") return null;
143
+ const version = Number(value["version"]);
144
+ const fingerprint = value["fingerprint"];
145
+ if (value["unchanged"] === true) return {
146
+ version,
147
+ fingerprint,
148
+ unchanged: true
149
+ };
150
+ const data = parseCatalogEventData({
151
+ kind: "drift",
152
+ fingerprint,
153
+ findings: value["findings"]
154
+ });
155
+ return data?.findings === void 0 ? null : {
156
+ version,
157
+ fingerprint,
158
+ findings: data.findings
159
+ };
160
+ }
161
+ function asApproval(value) {
162
+ if (!isRecord(value) || value["v"] !== 1 || typeof value["token"] !== "string") return null;
163
+ return value;
164
+ }
165
+ /** The refusal PermDock Cloud names in its body, else the one its status implies. */
166
+ async function approvalErrorFrom(response) {
167
+ let body;
168
+ try {
169
+ body = await response.json();
170
+ } catch {
171
+ return approvalErrorFromStatus(response.status);
172
+ }
173
+ if (body === null || typeof body !== "object" || !("code" in body)) return approvalErrorFromStatus(response.status);
174
+ const code = body.code;
175
+ if (!isApprovalErrorCode(code)) return approvalErrorFromStatus(response.status);
176
+ const detail = "detail" in body ? body.detail : void 0;
177
+ return new ApprovalError(code, typeof detail === "string" && detail.length > 0 ? detail : code);
178
+ }
179
+ function approvalErrorFromStatus(status) {
180
+ if (status === 409) return new ApprovalError("approval-not-pending", "approval is not pending");
181
+ if (status === 410) return new ApprovalError("approval-expired", "approval has expired");
182
+ return new ApprovalError("approval-not-found", "approval was not found");
183
+ }
184
+ function cloud(options = {}) {
185
+ const { issuer: root, jwks, request } = cloudConnection(options);
186
+ const flushAt = options.flushAt ?? 32;
187
+ const waitUntil = options.waitUntil;
188
+ const approvals = {
189
+ async create(record) {
190
+ if (!(await request("/approvals", {
191
+ method: "POST",
192
+ body: JSON.stringify(record)
193
+ })).ok) throw new Error("PermDock Cloud rejected the approval create");
194
+ },
195
+ async get(token) {
196
+ try {
197
+ const response = await request("/approvals/by-token", { headers: { [APPROVAL_HEADER]: token } });
198
+ if (!response.ok) return null;
199
+ return asApproval(await response.json());
200
+ } catch {
201
+ return null;
202
+ }
203
+ },
204
+ async getById(id) {
205
+ try {
206
+ const response = await request(`/approvals/${encodeURIComponent(id)}`);
207
+ if (!response.ok) return null;
208
+ return asApproval(await response.json());
209
+ } catch {
210
+ return null;
211
+ }
212
+ },
213
+ async resolve(token, verdict) {
214
+ const approver = await approverHeaders(verdict, options.approver, root, async () => {
215
+ const response = await request("/approvals/by-token", { headers: { [APPROVAL_HEADER]: token } });
216
+ if (!response.ok) throw await approvalErrorFrom(response);
217
+ const found = parseApprovalRequest(await response.json());
218
+ if (found === null) throw new ApprovalError("approval-not-found", "PermDock Cloud returned an unknown approval shape");
219
+ const etag = response.headers.get("etag");
220
+ return etag === null ? { request: found } : {
221
+ request: found,
222
+ etag
223
+ };
224
+ });
225
+ const response = await request("/approvals/by-token/resolve", {
226
+ method: "POST",
227
+ headers: {
228
+ [APPROVAL_HEADER]: token,
229
+ ...approver
230
+ },
231
+ body: JSON.stringify(verdict)
232
+ });
233
+ if (!response.ok) throw await approvalErrorFrom(response);
234
+ const parsed = asApproval(await response.json());
235
+ if (parsed === null) throw new ApprovalError("approval-not-found", "PermDock Cloud returned an unknown approval shape");
236
+ return parsed;
237
+ },
238
+ async consume(token, now) {
239
+ try {
240
+ const response = await request("/approvals/by-token/consume", {
241
+ method: "POST",
242
+ headers: { [APPROVAL_HEADER]: token },
243
+ body: JSON.stringify(compact({ now: now === void 0 ? void 0 : dateAt(now).toISOString() }))
244
+ });
245
+ if (!response.ok) return null;
246
+ return asApproval(await response.json());
247
+ } catch {
248
+ return null;
249
+ }
250
+ },
251
+ async list(query) {
252
+ const params = new URLSearchParams(compact({
253
+ status: query.status,
254
+ principalId: query.principalId,
255
+ actorId: query.actorId,
256
+ tenant: query.tenant,
257
+ session: query.session,
258
+ limit: query.limit === void 0 ? void 0 : String(query.limit),
259
+ cursor: query.cursor
260
+ }));
261
+ const suffix = params.size === 0 ? "" : `?${params.toString()}`;
262
+ try {
263
+ const response = await request(`/approvals${suffix}`);
264
+ if (!response.ok) return { items: [] };
265
+ const body = await response.json();
266
+ if (!isRecord(body) || !Array.isArray(body["items"])) return { items: [] };
267
+ const items = body["items"].flatMap((item) => {
268
+ const parsed = asApproval(item);
269
+ return parsed === null ? [] : [parsed];
270
+ });
271
+ return typeof body["next"] === "string" && body["next"] !== "" ? {
272
+ items,
273
+ next: body["next"]
274
+ } : { items };
275
+ } catch {
276
+ return { items: [] };
277
+ }
278
+ },
279
+ async cancel(filter, meta) {
280
+ const response = await request("/approvals/cancel", {
281
+ method: "POST",
282
+ body: JSON.stringify(compact({
283
+ filter,
284
+ by: meta.by,
285
+ note: meta.note
286
+ }))
287
+ });
288
+ if (!response.ok) throw new Error("PermDock Cloud rejected the approval cancel");
289
+ const body = await response.json();
290
+ if (!isRecord(body) || typeof body["cancelled"] !== "number") throw new Error("PermDock Cloud returned an unknown cancel shape");
291
+ return body["cancelled"];
292
+ },
293
+ async expire(now) {
294
+ try {
295
+ const response = await request("/approvals/expire", {
296
+ method: "POST",
297
+ body: JSON.stringify(compact({ now: now === void 0 ? void 0 : dateAt(now).toISOString() }))
298
+ });
299
+ if (!response.ok) return 0;
300
+ const body = await response.json();
301
+ if (!isRecord(body) || typeof body["expired"] !== "number") return 0;
302
+ return body["expired"];
303
+ } catch {
304
+ return 0;
305
+ }
306
+ }
307
+ };
308
+ const capacity = options.capacity ?? 1e4;
309
+ const source = options.source ?? root;
310
+ if (!isAbsoluteUri(source)) throw new TypeError("PermDock: cloud() source is an absolute URI");
311
+ const pending = [];
312
+ const bound = () => {
313
+ if (pending.length > capacity) pending.splice(0, pending.length - capacity);
314
+ };
315
+ const flush = async () => {
316
+ if (pending.length === 0) return;
317
+ const events = pending.splice(0);
318
+ try {
319
+ if (!(await request("/decisions", {
320
+ method: "POST",
321
+ body: JSON.stringify(events.map((event) => toCloudEvent(event, { source })))
322
+ }, void 0, "application/cloudevents-batch+json")).ok) pending.unshift(...events);
323
+ } catch {
324
+ pending.unshift(...events);
325
+ }
326
+ bound();
327
+ };
328
+ const sink = {
329
+ write(events) {
330
+ pending.push(...events);
331
+ bound();
332
+ if (pending.length >= flushAt) return flush();
333
+ if (waitUntil !== void 0 && pending.length > 0) waitUntil(flush());
334
+ },
335
+ flush
336
+ };
337
+ const snapshotsFor = (subject) => ({ async get() {
338
+ const response = await request("/snapshot", { headers: { [SUBJECT_HEADER]: subject } }, "application/jwt");
339
+ if (!response.ok) throw new Error("PermDock Cloud snapshot request failed");
340
+ const text = (await response.text()).trim();
341
+ if (!isCompactJws(text)) throw new Error("PermDock Cloud served an unsigned snapshot");
342
+ return text;
343
+ } });
344
+ let document = null;
345
+ return freezeDeep({
346
+ approvals,
347
+ sink,
348
+ snapshotsFor,
349
+ policies: {
350
+ current() {
351
+ return document;
352
+ },
353
+ async refresh() {
354
+ const verifier = options.verifier;
355
+ if (verifier === void 0) return;
356
+ let response;
357
+ try {
358
+ response = await request("/policy");
359
+ } catch {
360
+ return;
361
+ }
362
+ if (response.status === 404) {
363
+ document = null;
364
+ return;
365
+ }
366
+ if (!response.ok) return;
367
+ const token = (await response.text()).trim();
368
+ if (!isCompactJws(token)) return;
369
+ const verified = await verifier.verify(token, {
370
+ typ: "vnd.permdock.policy+jwt",
371
+ issuer: root,
372
+ audience: root
373
+ });
374
+ if (!verified.ok) return;
375
+ let next;
376
+ try {
377
+ next = policyDocumentFromClaims(verified.claims);
378
+ } catch {
379
+ return;
380
+ }
381
+ document = next;
382
+ }
383
+ },
384
+ catalog: { async push(value) {
385
+ const fingerprint = catalogFingerprint(value);
386
+ const response = await request("/catalog", {
387
+ method: "POST",
388
+ body: JSON.stringify({
389
+ fingerprint,
390
+ catalog: value
391
+ })
392
+ });
393
+ if (!response.ok) throw new Error(`PermDock Cloud rejected the catalog: HTTP ${String(response.status)}`);
394
+ const parsed = catalogPushOf(await response.json());
395
+ if (parsed === null) throw new Error("PermDock Cloud answered the catalog push in an unknown shape");
396
+ return parsed;
397
+ } },
398
+ issuer: root,
399
+ jwks
400
+ });
401
+ }
402
+ //#endregion
403
+ export { approverHeaders as a, isCompactJws as i, cloudConnection as n, cloudEndpoints as r, cloud as t };
@@ -0,0 +1,130 @@
1
+ import { t as compact } from "./compact-CAf557ZB.js";
2
+ import { n as freezeDeep } from "./freeze-CrU8nQeX.js";
3
+ import { a as deniedFor } from "./where-scope-Dv-WTP-w.js";
4
+ import { c as withApp } from "./permdock-B9JxkBwC.js";
5
+ import { t as composeWraps } from "./wrap-gX61EtpB.js";
6
+ import { r as instanceOptions } from "./build-instance-BMnAudHn.js";
7
+ import { n as createAgentKernel } from "./kernel-5JatXyND.js";
8
+ //#region src/agent/create.ts
9
+ function modelRow(modelId) {
10
+ return { id: modelId };
11
+ }
12
+ function unlistedModel(modelId) {
13
+ return freezeDeep({
14
+ outcome: "denied",
15
+ denials: [{
16
+ role: null,
17
+ reason: "no-grant",
18
+ detail: { model: modelId }
19
+ }],
20
+ alternatives: []
21
+ });
22
+ }
23
+ function decideModelOn(permdock, models, modelId, adapter) {
24
+ const permission = models !== void 0 && Object.hasOwn(models, modelId) ? models[modelId] : void 0;
25
+ if (permission === void 0) return unlistedModel(modelId);
26
+ try {
27
+ return permdock.decide(permission, permission.kind === "instance" ? modelRow(modelId) : void 0, {
28
+ trusted: true,
29
+ adapter,
30
+ call: "adapter",
31
+ model: modelId
32
+ });
33
+ } catch {
34
+ return deniedFor(permission, "closure-error");
35
+ }
36
+ }
37
+ /** Builds the agent contract and its kernel for an adapter named `adapter`. */
38
+ function agentRuntime(policy, options, adapter) {
39
+ const kernel = createAgentKernel(policy, {
40
+ ...compact({
41
+ actor: options.actor,
42
+ delegation: options.delegation,
43
+ tenant: options.tenant,
44
+ store: options.store,
45
+ context: options.context,
46
+ wrap: composeWraps(options.otel, options.wrap),
47
+ deniedText: options.deniedText
48
+ }),
49
+ ...instanceOptions(options),
50
+ subject: options.subject,
51
+ tools: options.operations,
52
+ adapter
53
+ });
54
+ const operations = options.operations;
55
+ const bindingOf = (name) => Object.hasOwn(operations, name) ? operations[name] : void 0;
56
+ const decideModel = async (modelId, context) => {
57
+ try {
58
+ return decideModelOn(await kernel.instance(context), options.models, modelId, adapter);
59
+ } catch {
60
+ return unlistedModel(modelId);
61
+ }
62
+ };
63
+ const permittedModels = async (context) => {
64
+ if (options.models === void 0) return [];
65
+ let permdock;
66
+ try {
67
+ permdock = await kernel.instance(context);
68
+ } catch {
69
+ return [];
70
+ }
71
+ return Object.keys(options.models).filter((modelId) => decideModelOn(permdock, options.models, modelId, adapter).outcome === "granted");
72
+ };
73
+ const filterResults = async (name, rows, context) => {
74
+ const binding = bindingOf(name);
75
+ if (binding === void 0) return [];
76
+ if (binding.results === void 0) return [...rows];
77
+ try {
78
+ const permdock = await kernel.instance(context);
79
+ const results = binding.results;
80
+ if (results.kind !== "instance") return permdock.can(results, void 0) ? [...rows] : [];
81
+ await permdock.prefetchRelations(results, rows);
82
+ return permdock.filter(results, rows, {
83
+ adapter,
84
+ call: "filter"
85
+ });
86
+ } catch {
87
+ return [];
88
+ }
89
+ };
90
+ const gatewayOptions = async (context) => {
91
+ let permdock;
92
+ try {
93
+ permdock = await kernel.instance(context);
94
+ } catch {
95
+ return { gateway: {} };
96
+ }
97
+ const { principal, actor } = permdock.subject;
98
+ const tags = [...principal?.tenant === void 0 ? [] : [`tenant:${principal.tenant}`], ...actor === void 0 ? [] : [`actor:${actor.kind}`]];
99
+ return { gateway: compact({
100
+ user: principal?.id,
101
+ tags: tags.length > 0 ? tags : void 0
102
+ }) };
103
+ };
104
+ return {
105
+ agent: Object.freeze({
106
+ getPermDock: (context) => kernel.instance(context),
107
+ decideOperation: (name, input, context, decideOptions) => kernel.decideTool(name, input, context, decideOptions),
108
+ allowedOperations: (context) => kernel.allowedToolNames(context),
109
+ tokenFor: (name, input, context) => {
110
+ const binding = bindingOf(name);
111
+ return binding === void 0 ? Promise.resolve(void 0) : kernel.tokenFor(binding, input, context);
112
+ },
113
+ decideModel,
114
+ permittedModels,
115
+ filterResults,
116
+ gatewayOptions
117
+ }),
118
+ kernel
119
+ };
120
+ }
121
+ /**
122
+ * The agent contract for a runtime PermDock has no adapter for: decide
123
+ * operations by name, gate models and filter results. The subject comes from
124
+ * `subject(context)` on the server, never from model output.
125
+ */
126
+ function createPermDock(policy, given) {
127
+ return agentRuntime(policy, withApp(policy, given), "agent").agent;
128
+ }
129
+ //#endregion
130
+ export { createPermDock as n, agentRuntime as t };