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,225 @@
1
+ import { Ct as Credential, Jt as AutomationEvent, Kt as AccessEvent, Yt as CredentialEvent, gt as SupportSession, nn as MembershipEvent, q as DecisionSink, rn as SinkEvent, ut as TokenSigner } from "./policy-types-DzwivBgR.js";
2
+ import { V as AppData } from "./vocabulary-D6lPdb4Z.js";
3
+ import { u as OperationRisk } from "./operations-CxybZErY.js";
4
+ import { t as Automation } from "./automation-BMZPIVUM.js";
5
+ //#region src/core/sink.d.ts
6
+ /**
7
+ * The closed list of CloudEvents `type` values, `com.permdock.<family>` or
8
+ * `com.permdock.<family>.<operation>`. `RESERVED_CLOUD_EVENT_TYPES` are named
9
+ * for later releases and nothing emits them yet.
10
+ */
11
+ declare const CLOUD_EVENT_TYPES: {
12
+ readonly decision: "com.permdock.decision";
13
+ readonly approvalRequested: "com.permdock.approval.requested";
14
+ readonly approvalResolved: "com.permdock.approval.resolved";
15
+ readonly approvalExpired: "com.permdock.approval.expired";
16
+ readonly approvalCancelled: "com.permdock.approval.cancelled";
17
+ readonly membershipAdded: "com.permdock.membership.added";
18
+ readonly membershipRemoved: "com.permdock.membership.removed";
19
+ readonly membershipChanged: "com.permdock.membership.changed";
20
+ readonly credentialCreated: "com.permdock.credential.created";
21
+ readonly credentialUsed: "com.permdock.credential.used";
22
+ readonly credentialRotated: "com.permdock.credential.rotated";
23
+ readonly credentialRevoked: "com.permdock.credential.revoked";
24
+ readonly directoryCreated: "com.permdock.directory.created";
25
+ readonly directoryReplaced: "com.permdock.directory.replaced";
26
+ readonly directoryPatched: "com.permdock.directory.patched";
27
+ readonly directoryDeleted: "com.permdock.directory.deleted";
28
+ readonly catalogPublished: "com.permdock.catalog.published";
29
+ readonly catalogDrifted: "com.permdock.catalog.drifted";
30
+ readonly supportSessionStarted: "com.permdock.support-session.started";
31
+ readonly supportSessionEnded: "com.permdock.support-session.ended";
32
+ readonly automationPublished: "com.permdock.automation.published";
33
+ readonly automationChanged: "com.permdock.automation.changed";
34
+ readonly automationRevoked: "com.permdock.automation.revoked";
35
+ readonly automationRun: "com.permdock.automation.run";
36
+ readonly deliverySent: "com.permdock.delivery.sent";
37
+ readonly deliveryDelivered: "com.permdock.delivery.delivered";
38
+ readonly deliveryBounced: "com.permdock.delivery.bounced";
39
+ readonly deliveryComplained: "com.permdock.delivery.complained";
40
+ readonly deliveryFailed: "com.permdock.delivery.failed";
41
+ };
42
+ type CloudEventType = (typeof CLOUD_EVENT_TYPES)[keyof typeof CLOUD_EVENT_TYPES];
43
+ /** Types named for a later release; a receiver refuses them until then. None are reserved now. */
44
+ declare const RESERVED_CLOUD_EVENT_TYPES: readonly CloudEventType[];
45
+ /** The CloudEvents JSON format media type for one event (structured mode). */
46
+ declare const CLOUDEVENTS_CONTENT_TYPE = "application/cloudevents+json";
47
+ /** The CloudEvents JSON batch format media type: a JSON array of events. */
48
+ declare const CLOUDEVENTS_BATCH_CONTENT_TYPE = "application/cloudevents-batch+json";
49
+ /**
50
+ * Why a published catalog drifted. The first four broke a live hosted grant,
51
+ * which the Cloud then suspends; the `operation-*` codes only report.
52
+ */
53
+ type CatalogFindingCode = "permission-removed" | "not-hostable" | "grantee-removed" | "approval-tightened" | "operation-risk-raised" | "operation-approval-removed";
54
+ /** One drift finding: the permission key and, when one broke, the hosted grant id. */
55
+ type CatalogFinding = {
56
+ readonly code: CatalogFindingCode;
57
+ readonly permission: string;
58
+ readonly grant?: string;
59
+ /** The operation name, on the `operation-*` codes. */
60
+ readonly operation?: string;
61
+ /** `meta.risk` before the publish, on `operation-risk-raised`; an unset risk is `low`. */
62
+ readonly previous?: OperationRisk;
63
+ /** `meta.risk` after the publish, on `operation-risk-raised`. */
64
+ readonly risk?: OperationRisk;
65
+ };
66
+ /** `data` of a `com.permdock.catalog.*` event: a `permdock cloud push` or a drift against live hosted grants. */
67
+ type CatalogEventData = {
68
+ readonly kind: "publish" | "drift";
69
+ /** The catalog fingerprint after the publish, or the one drift was measured against. */
70
+ readonly fingerprint: string;
71
+ readonly previous?: string;
72
+ readonly findings?: readonly CatalogFinding[];
73
+ };
74
+ /** A CloudEvents 1.0 event in the JSON format, with the distributed-tracing extension. */
75
+ type CloudEvent = {
76
+ readonly specversion: "1.0";
77
+ readonly type: CloudEventType;
78
+ /** An absolute URI naming the producer. */
79
+ readonly source: string;
80
+ readonly subject?: string;
81
+ readonly id: string;
82
+ /** An RFC 3339 instant: the sink event's `at`. */
83
+ readonly time: string;
84
+ readonly datacontenttype: "application/json";
85
+ /** The published JSON Schema of `data`, `https://permdock.com/schemas/<family>-event-v1.json`. */
86
+ readonly dataschema: string;
87
+ /** W3C Trace Context `traceparent`, the CloudEvents distributed-tracing extension. */
88
+ readonly traceparent?: string;
89
+ readonly tracestate?: string;
90
+ readonly data: SinkEvent | CatalogEventData;
91
+ };
92
+ type CloudEventOptions = {
93
+ /** An absolute URI naming the producer, such as the app's origin. */
94
+ readonly source: string;
95
+ /** Defaults to a random UUID. */
96
+ readonly id?: string;
97
+ readonly traceparent?: string;
98
+ readonly tracestate?: string;
99
+ };
100
+ type SignDecisionBatchOptions = {
101
+ readonly audience?: string | readonly string[];
102
+ /** An absolute URI naming the producer, the `source` of every CloudEvent. */
103
+ readonly source: string;
104
+ };
105
+ type MemoryDecisionSinkOptions = {
106
+ readonly capacity?: number;
107
+ } & ({
108
+ readonly signer?: undefined;
109
+ readonly audience?: undefined;
110
+ readonly source?: undefined;
111
+ } | {
112
+ /** Signs each write as an evidence export of CloudEvents. */
113
+ readonly signer: TokenSigner;
114
+ readonly audience?: string | readonly string[];
115
+ /** An absolute URI naming the producer, the `source` of every CloudEvent. */
116
+ readonly source: string;
117
+ });
118
+ type MemoryDecisionSink = DecisionSink & {
119
+ readonly events: () => readonly SinkEvent[];
120
+ readonly batches: () => readonly string[];
121
+ };
122
+ /**
123
+ * The CloudEvents `type` of a sink event. A support access event maps onto the
124
+ * `support-session` family, and a consent the tenant pulls early (`revoked`)
125
+ * ends the session like a lapse; `data.operation` keeps the difference.
126
+ */
127
+ declare function cloudEventType(event: SinkEvent): CloudEventType;
128
+ /**
129
+ * An `automation` sink event for `automation`. `run` carries the run id and
130
+ * belongs on `run` events only.
131
+ */
132
+ declare function automationEvent(input: {
133
+ readonly operation: AutomationEvent["operation"];
134
+ readonly automation: Automation;
135
+ readonly run?: string;
136
+ readonly source?: string;
137
+ readonly by?: AutomationEvent["by"];
138
+ /** An RFC 3339 instant; defaults to now. */
139
+ readonly at?: string;
140
+ /** The application's own data; plain JSON, checked here. */
141
+ readonly x?: AppData;
142
+ }): AutomationEvent;
143
+ /**
144
+ * The `access` event of a `SupportSession`: `started` when it begins,
145
+ * `ended` when it lapses, `revoked` when it is ended early. `principal` is
146
+ * the staff member, as for a support membership.
147
+ */
148
+ declare function supportSessionEvent(input: {
149
+ readonly operation: AccessEvent["operation"];
150
+ readonly session: SupportSession;
151
+ readonly source?: string;
152
+ /** An RFC 3339 instant; defaults to now. */
153
+ readonly at?: string;
154
+ /** The application's own data; plain JSON, checked here. */
155
+ readonly x?: AppData;
156
+ }): AccessEvent;
157
+ /**
158
+ * A `credential` sink event for `credential`. `sample` belongs on `used`
159
+ * events only and must be in `(0, 1]`.
160
+ */
161
+ declare function credentialEvent(input: {
162
+ readonly operation: CredentialEvent["operation"];
163
+ readonly credential: Credential;
164
+ readonly source?: string;
165
+ readonly by?: CredentialEvent["by"];
166
+ readonly sample?: number;
167
+ /** An RFC 3339 instant; defaults to now. */
168
+ readonly at?: string;
169
+ /** The application's own data; plain JSON, checked here. */
170
+ readonly x?: AppData;
171
+ }): CredentialEvent;
172
+ declare function membershipEvent(input: {
173
+ readonly source: string;
174
+ readonly operation: MembershipEvent["operation"];
175
+ readonly principal: MembershipEvent["principal"];
176
+ readonly scope?: string;
177
+ readonly id?: string;
178
+ readonly within?: MembershipEvent["within"];
179
+ readonly via?: string;
180
+ /** An RFC 3339 instant, or NumericDate seconds as a `Membership` holds them. */
181
+ readonly expiresAt?: string | number;
182
+ readonly roles: MembershipEvent["roles"];
183
+ readonly by?: MembershipEvent["by"];
184
+ /** An RFC 3339 instant; defaults to now. */
185
+ readonly at?: string;
186
+ /** The application's own data; plain JSON, checked here. */
187
+ readonly x?: AppData;
188
+ }): MembershipEvent;
189
+ /**
190
+ * A support-access lifecycle event. `started` on consent, `ended` when the
191
+ * session lapses, `revoked` when the tenant pulls consent early. It never
192
+ * decides; the app writes and revokes the membership.
193
+ */
194
+ declare function accessEvent(input: {
195
+ readonly source: string;
196
+ readonly operation: AccessEvent["operation"];
197
+ readonly tenant: string;
198
+ readonly principal: AccessEvent["principal"];
199
+ readonly via?: string;
200
+ readonly roles: readonly string[];
201
+ readonly member?: AccessEvent["member"];
202
+ /** An RFC 3339 instant, or NumericDate seconds as a `Membership` holds them. */
203
+ readonly expiresAt?: string | number;
204
+ readonly grantedBy?: string;
205
+ readonly reason?: string;
206
+ readonly actor?: AccessEvent["actor"];
207
+ /** An RFC 3339 instant; defaults to now. */
208
+ readonly at?: string;
209
+ /** The application's own data; plain JSON, checked here. */
210
+ readonly x?: AppData;
211
+ }): AccessEvent;
212
+ /**
213
+ * Wraps a sink event in a CloudEvents 1.0 envelope. Throws a `TypeError` when
214
+ * `source` is not an absolute URI or `traceparent` is not W3C Trace Context.
215
+ */
216
+ declare function toCloudEvent(event: SinkEvent, options: CloudEventOptions): CloudEvent;
217
+ /**
218
+ * Signs sink events as an offline evidence export: a compact JWS with
219
+ * `typ: vnd.permdock.evidence+jwt` whose `events` claim holds CloudEvents.
220
+ * Live deliveries use Standard Webhooks instead.
221
+ */
222
+ declare function signDecisionBatch(events: readonly SinkEvent[], signer: TokenSigner, options: SignDecisionBatchOptions): Promise<string>;
223
+ declare function memoryDecisionSink(options?: MemoryDecisionSinkOptions): MemoryDecisionSink;
224
+ //#endregion
225
+ export { toCloudEvent as S, credentialEvent as _, CatalogFinding as a, signDecisionBatch as b, CloudEventOptions as c, MemoryDecisionSinkOptions as d, RESERVED_CLOUD_EVENT_TYPES as f, cloudEventType as g, automationEvent as h, CatalogEventData as i, CloudEventType as l, accessEvent as m, CLOUDEVENTS_CONTENT_TYPE as n, CatalogFindingCode as o, SignDecisionBatchOptions as p, CLOUD_EVENT_TYPES as r, CloudEvent as s, CLOUDEVENTS_BATCH_CONTENT_TYPE as t, MemoryDecisionSink as u, membershipEvent as v, supportSessionEvent as x, memoryDecisionSink as y };
@@ -1,6 +1,7 @@
1
1
  import { t as byCodePoint } from "./compare-pfyVnBjE.js";
2
2
  import { i as readJsonFile } from "./files-D_JIzUrP.js";
3
- import { t as packageRoot } from "./package-root-DtNnpmUd.js";
3
+ import { t as packageRoot } from "./package-root-Dk_ETdkp.js";
4
+ import { t as didYouMean } from "./args-IIolxxKA.js";
4
5
  import { cpSync, existsSync, lstatSync, mkdirSync, readFileSync, readdirSync, readlinkSync, realpathSync, writeFileSync } from "node:fs";
5
6
  import { basename, dirname, join, relative, resolve } from "node:path";
6
7
  import { createRequire } from "node:module";
@@ -20,13 +21,22 @@ const AGENT_FOLDERS = {
20
21
  claude: ".claude/skills",
21
22
  cursor: ".cursor/skills"
22
23
  };
23
- /** The `--agent` names `skills install` knows, with the folder each writes. */
24
+ /** The `--for` names `skills install` knows, with the folder each writes. */
24
25
  const SKILL_AGENTS = AGENT_FOLDERS;
25
26
  /** Agents whose config folder (`.claude`, `.cursor`, `.agents`) the project already has. */
26
27
  function detectedAgents(cwd) {
27
28
  return Object.entries(AGENT_FOLDERS).filter(([, folder]) => existsSync(join(cwd, dirname(folder)))).map(([agent]) => agent);
28
29
  }
29
30
  function runSkills(input) {
31
+ const names = /* @__PURE__ */ new Set([...Object.keys(AGENT_FOLDERS), "agent"]);
32
+ const unknown = input.agents.find((agent) => !names.has(agent));
33
+ if (unknown !== void 0) {
34
+ const suggestion = didYouMean(unknown, Object.keys(AGENT_FOLDERS));
35
+ return {
36
+ code: 2,
37
+ output: `skills: unknown --for '${unknown}'.${suggestion === void 0 ? "" : ` Did you mean ${suggestion}?`} Use ${Object.keys(AGENT_FOLDERS).join(", ")}.`
38
+ };
39
+ }
30
40
  switch (input.action) {
31
41
  case void 0:
32
42
  case "install":
@@ -169,10 +179,7 @@ function listSkills(cwd) {
169
179
  }
170
180
  function resolveTargets(agents) {
171
181
  if (agents.length === 0) return Object.values(AGENT_FOLDERS);
172
- return agents.map((agent) => {
173
- const key = agent === "agent" ? "agents" : agent;
174
- return AGENT_FOLDERS[key] ?? `.${key}/skills`;
175
- });
182
+ return agents.map((agent) => AGENT_FOLDERS[agent === "agent" ? "agents" : agent] ?? ".agents/skills");
176
183
  }
177
184
  function resolveSkillsRoot(cwd, bundled) {
178
185
  try {
@@ -0,0 +1,51 @@
1
+ import { t as defineLeaf } from "./command-L8EstFNm.js";
2
+ import { t as checkFlag } from "./flags-C3DktBDY.js";
3
+ import { r as pick, t as CANCELLED } from "./prompt-DfZLJLIn.js";
4
+ import { n as detectedAgents, r as runSkills, t as SKILL_AGENTS } from "./skills-B6lVdD_W.js";
5
+ //#region src/cli/commands/skills.ts
6
+ const forFlag = { for: {
7
+ type: "string",
8
+ repeatable: true,
9
+ description: "Agent folders to write: agents, claude or cursor",
10
+ valueHint: "name",
11
+ complete: () => Object.keys(SKILL_AGENTS)
12
+ } };
13
+ async function installTo(ctx, action, clients, check) {
14
+ let agents = clients;
15
+ if (ctx.interactive && !ctx.yes && !check && agents.length === 0) {
16
+ const detected = detectedAgents(ctx.cwd);
17
+ const picked = await pick("Which agents should get the PermDock skills?", Object.entries(SKILL_AGENTS).map(([value, hint]) => ({
18
+ value,
19
+ hint
20
+ })), detected.length > 0 ? detected : Object.keys(SKILL_AGENTS));
21
+ if (picked === void 0) return CANCELLED;
22
+ agents = picked;
23
+ }
24
+ return runSkills({
25
+ cwd: ctx.cwd,
26
+ action,
27
+ agents,
28
+ check
29
+ });
30
+ }
31
+ const install = defineLeaf({
32
+ flags: {
33
+ ...forFlag,
34
+ ...checkFlag
35
+ },
36
+ run: (ctx, { flags }) => installTo(ctx, "install", flags.for, flags.check)
37
+ });
38
+ const update = defineLeaf({
39
+ flags: { ...forFlag },
40
+ run: (ctx, { flags }) => installTo(ctx, "update", flags.for, false)
41
+ });
42
+ const list = defineLeaf({
43
+ flags: {},
44
+ run: (ctx) => runSkills({
45
+ cwd: ctx.cwd,
46
+ action: "list",
47
+ agents: []
48
+ })
49
+ });
50
+ //#endregion
51
+ export { install, list, update };
@@ -0,0 +1,269 @@
1
+ import { t as compact } from "./compact-CAf557ZB.js";
2
+ import { n as freezeDeep } from "./freeze-CrU8nQeX.js";
3
+ import { n as isForbiddenKey } from "./paths-DXSHAMIa.js";
4
+ import { c as isConditionRef, i as resolveConditionRef } from "./refs-K6eWUJ0H.js";
5
+ import { l as isRfc3339, m as rfc3339, p as nowSeconds } from "./time-DkWjdL98.js";
6
+ import { d as scopeList } from "./scopes-CUPSjo9q.js";
7
+ import { _ as listPlans, v as listRoles } from "./grantee-Cn1HyUsI.js";
8
+ import { i as wireValidity } from "./validity-CZ7-y0Cj.js";
9
+ import { m as tenantsOf } from "./tenancy-DN2QAx9z.js";
10
+ import { n as toWireDelegation } from "./wire-delegation-Cv3W2eaM.js";
11
+ //#region src/conditions/bind.ts
12
+ function isPrimitive(value) {
13
+ return typeof value === "string" || typeof value === "number" || typeof value === "boolean";
14
+ }
15
+ const ALWAYS = {
16
+ op: "eq",
17
+ field: "_",
18
+ value: true
19
+ };
20
+ const NEVER = {
21
+ op: "or",
22
+ conditions: []
23
+ };
24
+ function bindValue(value, subject, only) {
25
+ if (isConditionRef(value) && only !== void 0 && !only(value.ref)) return value;
26
+ if (isConditionRef(value)) {
27
+ const resolved = resolveConditionRef(value.ref, subject);
28
+ if (Array.isArray(resolved)) return resolved.filter((item) => isPrimitive(item));
29
+ return isPrimitive(resolved) ? resolved : null;
30
+ }
31
+ if (Array.isArray(value)) return value.map((item) => bindValue(item, subject, only));
32
+ return value;
33
+ }
34
+ function bindArg(arg, subject, only) {
35
+ return arg !== null && typeof arg === "object" && "field" in arg && !isConditionRef(arg) ? arg : bindValue(arg, subject, only);
36
+ }
37
+ /**
38
+ * Replaces every `principal.*` / `context.*` ref with the subject's value, and
39
+ * a `liveSession` node with a constant, so a `where()` result compiles the
40
+ * same without the subject. A ref the subject
41
+ * does not hold binds to `null` (or `[]` in a list), which never matches, as
42
+ * in `evaluateCondition`. With `only`, refs it rejects stay refs.
43
+ */
44
+ function bindConditionRefs(condition, subject, only) {
45
+ switch (condition.op) {
46
+ case "and":
47
+ case "or": return {
48
+ op: condition.op,
49
+ conditions: condition.conditions.map((child) => bindConditionRefs(child, subject, only))
50
+ };
51
+ case "not": return {
52
+ op: "not",
53
+ condition: bindConditionRefs(condition.condition, subject, only)
54
+ };
55
+ case "in":
56
+ case "notIn": {
57
+ const value = condition.value;
58
+ if (isConditionRef(value) && only !== void 0 && !only(value.ref)) return condition;
59
+ const bound = bindValue(value, subject, only);
60
+ return {
61
+ ...condition,
62
+ value: Array.isArray(bound) ? bound : []
63
+ };
64
+ }
65
+ case "eq":
66
+ case "ne":
67
+ case "gt":
68
+ case "gte":
69
+ case "lt":
70
+ case "lte":
71
+ case "contains": return {
72
+ ...condition,
73
+ value: bindValue(condition.value, subject, only)
74
+ };
75
+ case "sqlFunction": return {
76
+ ...condition,
77
+ args: condition.args.map((arg) => bindArg(arg, subject, only)),
78
+ twin: bindConditionRefs(condition.twin, subject, only)
79
+ };
80
+ case "liveSession": return subject.liveSession === true ? ALWAYS : NEVER;
81
+ case "isNull":
82
+ case "memberOf":
83
+ case "related":
84
+ case "opaque": return condition;
85
+ default: return condition;
86
+ }
87
+ }
88
+ //#endregion
89
+ //#region src/core/snapshot.ts
90
+ function plainPermission(leaf) {
91
+ return {
92
+ key: leaf.key,
93
+ scope: leaf.scope,
94
+ resource: leaf.resource,
95
+ action: leaf.action,
96
+ meta: leaf.meta,
97
+ kind: leaf.kind
98
+ };
99
+ }
100
+ function plainRole(leaf) {
101
+ return compact({
102
+ key: leaf.key,
103
+ on: leaf.on,
104
+ assignable: leaf.assignable,
105
+ meta: leaf.meta,
106
+ kind: leaf.kind
107
+ });
108
+ }
109
+ function plainPlan(leaf) {
110
+ return {
111
+ key: leaf.key,
112
+ meta: leaf.meta,
113
+ kind: leaf.kind
114
+ };
115
+ }
116
+ function snapshotGrant(grant, membership) {
117
+ const scope = grant.scope === "global" ? void 0 : typeof grant.scope === "string" ? grant.scope : { resource: grant.scope.resource };
118
+ const entry = compact({
119
+ permission: grant.permission.key,
120
+ effect: grant.effect,
121
+ role: grant.role,
122
+ to: grant.to,
123
+ where: grant.portable ? grant.where : void 0,
124
+ check: grant.portable ? grant.check : void 0,
125
+ approval: grant.approval,
126
+ scope,
127
+ membership,
128
+ portable: grant.portable ? void 0 : false,
129
+ fields: grant.fields,
130
+ validity: wireValidity(grant.validity),
131
+ name: grant.name,
132
+ meta: grant.meta,
133
+ obligations: grant.obligations
134
+ });
135
+ return freezeDeep(entry);
136
+ }
137
+ const CARRIED = /* @__PURE__ */ new Set([
138
+ "id",
139
+ "roles",
140
+ "plans",
141
+ "tenant",
142
+ "memberships"
143
+ ]);
144
+ /** Principal refs the snapshot principal does not carry (`claims`, `teamIds`, …) are bound to the subject's values. */
145
+ function isClaimRef(ref) {
146
+ const [root, head] = ref.split(".", 2);
147
+ return root === "principal" && !CARRIED.has(String(head));
148
+ }
149
+ function bindClaims(grant, subject) {
150
+ if (grant.where === void 0 && grant.check === void 0) return grant;
151
+ return freezeDeep(compact({
152
+ ...grant,
153
+ where: grant.where === void 0 ? void 0 : bindConditionRefs(grant.where, subject, isClaimRef),
154
+ check: grant.check === void 0 ? void 0 : bindConditionRefs(grant.check, subject, isClaimRef)
155
+ }));
156
+ }
157
+ function notEntitledOf(items) {
158
+ const seen = /* @__PURE__ */ new Map();
159
+ for (const { grant } of items) {
160
+ const key = `${grant.permission.key}\u0000${grant.role ?? ""}`;
161
+ if (!seen.has(key)) seen.set(key, {
162
+ permission: grant.permission.key,
163
+ role: grant.role,
164
+ to: grant.to
165
+ });
166
+ }
167
+ return seen.size === 0 ? void 0 : [...seen.values()];
168
+ }
169
+ function buildSnapshot(input) {
170
+ const now = input.now ?? nowSeconds();
171
+ const principal = input.subject.principal;
172
+ const allTenants = tenantsOf(principal, scopeList(input.scopes));
173
+ const tenants = input.tenants === "all" ? allTenants : principal?.tenant === void 0 ? [] : [principal.tenant];
174
+ const include = input.include;
175
+ const included = (permission) => include === void 0 || include.length === 0 || include.some((prefix) => permission.key === prefix || permission.key.startsWith(`${prefix}.`) || permission.resource === prefix);
176
+ const grants = input.grants.filter((item) => included(item.grant.permission)).map((item) => bindClaims(snapshotGrant(item.grant, item.membership), input.subject));
177
+ const ids = {};
178
+ for (const item of input.grants) {
179
+ const name = item.grant.permission.resource;
180
+ const field = input.idOf?.(name);
181
+ if (field !== void 0 && field !== "id" && included(item.grant.permission)) ids[name] = field;
182
+ }
183
+ const assignableFor = input.assignable;
184
+ const assignable = assignableFor === void 0 ? [] : tenants.map((tenant) => {
185
+ const entry = assignableFor(tenant);
186
+ const permissions = entry.permissions.filter(included).map(plainPermission);
187
+ if (entry.levels === void 0) return {
188
+ ...entry,
189
+ permissions
190
+ };
191
+ const keys = new Set(permissions.map((leaf) => leaf.key));
192
+ const levels = Object.fromEntries(Object.entries(entry.levels).filter(([key]) => keys.has(key)));
193
+ return compact({
194
+ ...entry,
195
+ permissions,
196
+ levels: Object.keys(levels).length === 0 ? void 0 : levels
197
+ });
198
+ });
199
+ return freezeDeep(compact({
200
+ v: 1,
201
+ issuedAt: rfc3339(now),
202
+ subject: compact({
203
+ principal: principal === null ? null : compact({
204
+ id: principal.id,
205
+ roles: principal.roles ?? [],
206
+ plans: principal.plans,
207
+ tenant: principal.tenant,
208
+ memberships: principal.memberships
209
+ }),
210
+ delegation: toWireDelegation(snapshotDelegation(input.subject, input.delegated !== void 0)),
211
+ context: input.subject.context
212
+ }),
213
+ roles: input.roles,
214
+ audiences: input.audiences,
215
+ grants,
216
+ tenants,
217
+ include,
218
+ simulated: input.simulated === true ? true : void 0,
219
+ expiresAt: input.subject.expiresAt === void 0 ? void 0 : rfc3339(input.subject.expiresAt),
220
+ scopes: input.scopes,
221
+ ids: Object.keys(ids).length === 0 ? void 0 : ids,
222
+ assignable: assignable.length > 0 ? assignable : void 0,
223
+ delegated: input.delegated === void 0 ? void 0 : [...input.delegated].toSorted(),
224
+ notEntitled: notEntitledOf((input.notEntitled ?? []).filter((item) => included(item.grant.permission))),
225
+ vocabulary: input.vocabulary === void 0 ? void 0 : compact({
226
+ roles: listRoles(input.vocabulary.roles).length === 0 ? void 0 : Object.fromEntries(listRoles(input.vocabulary.roles).map((leaf) => [leaf.key, plainRole(leaf)])),
227
+ plans: listPlans(input.vocabulary.plans).length === 0 ? void 0 : Object.fromEntries(listPlans(input.vocabulary.plans).map((leaf) => [leaf.key, plainPlan(leaf)]))
228
+ })
229
+ }));
230
+ }
231
+ /**
232
+ * The token delegation as the client sees it. An actor with no token
233
+ * delegation gets an empty `scopes` list so the client ceiling agrees with
234
+ * `no-delegation`, unless a policy delegation applies (`delegated`), which
235
+ * then is the ceiling.
236
+ */
237
+ function snapshotDelegation(subject, delegated) {
238
+ const delegation = subject.delegation;
239
+ if (subject.actor === void 0 || delegated) return delegation;
240
+ if (delegation?.scopes === void 0 && delegation?.authorizationDetails === void 0 && delegation?.access === void 0) return {
241
+ ...delegation,
242
+ scopes: []
243
+ };
244
+ return delegation;
245
+ }
246
+ function rejectUnsafe(value, path) {
247
+ if (value === null || typeof value !== "object") return;
248
+ if (Array.isArray(value)) {
249
+ for (const [index, item] of value.entries()) rejectUnsafe(item, `${path}[${index}]`);
250
+ return;
251
+ }
252
+ for (const key of Object.keys(value)) {
253
+ if (isForbiddenKey(key)) throw new Error(`PermDock: unsafe snapshot key '${key}' at ${path}`);
254
+ rejectUnsafe(value[key], `${path}.${key}`);
255
+ }
256
+ }
257
+ function parseSnapshot(json) {
258
+ const input = typeof json === "string" ? JSON.parse(json) : json;
259
+ if (input === null || typeof input !== "object" || Array.isArray(input)) throw new Error("PermDock: snapshot must be an object");
260
+ const value = typeof json === "string" || Object.isFrozen(input) ? input : JSON.parse(JSON.stringify(input));
261
+ rejectUnsafe(value, "$");
262
+ const record = value;
263
+ const version = record["v"];
264
+ if (version !== 1) throw new Error(`PermDock: unsupported snapshot version '${String(version)}'`);
265
+ if (!isRfc3339(record["issuedAt"]) || record["expiresAt"] !== void 0 && !isRfc3339(record["expiresAt"])) throw new Error("PermDock: snapshot times must be RFC 3339");
266
+ return freezeDeep(value);
267
+ }
268
+ //#endregion
269
+ export { bindConditionRefs as i, parseSnapshot as n, snapshotGrant as r, buildSnapshot as t };
@@ -1,5 +1,10 @@
1
- import { n as payloadDigest } from "./token-Bx9qy30p.js";
1
+ import { g as secondsOf, p as nowSeconds } from "./time-DkWjdL98.js";
2
+ import { n as payloadDigest } from "./token-BLZcjQgt.js";
2
3
  //#region src/core/snapshot-cache.ts
4
+ /** Seconds since the epoch of a NumericDate or an RFC 3339 instant. */
5
+ function epochSeconds(value) {
6
+ return typeof value === "number" ? value : secondsOf(value);
7
+ }
3
8
  /**
4
9
  * `{ stale }` in seconds: `max` when the value never expires, otherwise the seconds left, clamped
5
10
  * to `[min, max]`. A value with less than `min` seconds left gets its real remainder, so Next.js
@@ -8,10 +13,11 @@ import { n as payloadDigest } from "./token-Bx9qy30p.js";
8
13
  function cacheLifeFor(value, options = {}) {
9
14
  const min = options.min ?? 30;
10
15
  const max = Math.max(options.max ?? 300, min);
11
- const expiresAt = value?.expiresAt;
12
- if (expiresAt === void 0 || expiresAt === null) return { stale: max };
13
- const issuedAt = value?.issuedAt !== void 0 && value.issuedAt > 0 ? value.issuedAt : void 0;
14
- const now = options.now ?? issuedAt ?? Math.floor(Date.now() / 1e3);
16
+ const expiresAt = epochSeconds(value?.expiresAt);
17
+ if (expiresAt === void 0) return { stale: max };
18
+ const issued = epochSeconds(value?.issuedAt);
19
+ const issuedAt = issued !== void 0 && issued > 0 ? issued : void 0;
20
+ const now = options.now === void 0 ? issuedAt ?? nowSeconds() : nowSeconds(options.now);
15
21
  const remaining = Math.floor(expiresAt - now);
16
22
  if (remaining < min) return { stale: Math.max(0, remaining) };
17
23
  return { stale: Math.min(max, remaining) };
@@ -1,12 +1,12 @@
1
- import { an as Snapshot } from "./policy-types-sp9P1iIV.js";
1
+ import { Rt as Instant, Vt as Snapshot } from "./policy-types-DzwivBgR.js";
2
2
  //#region src/core/snapshot-cache.d.ts
3
3
  type CacheLifeForOptions = {
4
4
  /** Lower bound in seconds. Next.js includes a private entry in per-link prefetches from 30. */
5
5
  readonly min?: number;
6
6
  /** Upper bound in seconds. Next.js keeps a per-session App Shell entry from 300. */
7
7
  readonly max?: number;
8
- /** Seconds since the epoch; defaults to the snapshot's `issuedAt`, then the clock. */
9
- readonly now?: number;
8
+ /** Defaults to the snapshot's `issuedAt`, then the clock. */
9
+ readonly now?: Instant;
10
10
  };
11
11
  /**
12
12
  * `{ stale }` in seconds: `max` when the value never expires, otherwise the seconds left, clamped
@@ -14,8 +14,10 @@ type CacheLifeForOptions = {
14
14
  * leaves it out of prefetches and an HTTP cache does not serve it past `expiresAt`.
15
15
  */
16
16
  declare function cacheLifeFor(value: {
17
- readonly expiresAt?: number | null;
18
- readonly issuedAt?: number;
17
+ /** RFC 3339, or a NumericDate. */
18
+ readonly expiresAt?: number | string | null;
19
+ /** RFC 3339, or a NumericDate. */
20
+ readonly issuedAt?: number | string;
19
21
  } | null, options?: CacheLifeForOptions): {
20
22
  readonly stale: number;
21
23
  };