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,124 @@
1
+ import { $n as Delegation, Rt as Instant, Yn as AuthorizationDetail, dt as TokenVerifier, ir as Subject, lt as TokenFailureCause, qn as Actor, qt as AuthEvent, rr as Principal, ut as TokenSigner } from "./policy-types-DzwivBgR.js";
2
+ import { p as PrincipalSource } from "./permdock-D7eeLJER.js";
3
+ //#region src/server/run-ticket.d.ts
4
+ /** What started the run: a saved automation, a background job, or a caller's own request. */
5
+ type RunKind = "automation" | "job" | "caller";
6
+ /** RFC 8693 `act`: the party running the work, with the chain of earlier actors. */
7
+ type RunActClaim = {
8
+ readonly sub: string;
9
+ readonly kind?: string;
10
+ readonly act?: RunActClaim;
11
+ };
12
+ /** The connector and tools a run may reach; carried for the adapter, never a grant. */
13
+ type RunBinding = {
14
+ readonly connector?: string;
15
+ readonly tools?: readonly string[];
16
+ };
17
+ type RunAutomation = {
18
+ readonly id: string;
19
+ readonly version: number | string;
20
+ };
21
+ /** The v1 claims of a `vnd.permdock.run+jwt`. At least one of `scope` and `authorization_details` is present. */
22
+ type RunTicket = {
23
+ readonly v: 1;
24
+ readonly iss: string;
25
+ readonly sub: string;
26
+ readonly aud: string | readonly string[];
27
+ readonly jti: string;
28
+ readonly iat: number;
29
+ readonly exp: number;
30
+ readonly kind: RunKind;
31
+ readonly act?: RunActClaim;
32
+ readonly scope?: string;
33
+ readonly authorization_details?: readonly AuthorizationDetail[];
34
+ /** Present exactly when `kind` is `automation`. */
35
+ readonly automation?: RunAutomation;
36
+ readonly tenant?: string;
37
+ /** The event that started the run, as JSON. Evaluation never reads it as a grant. */
38
+ readonly trigger?: Readonly<Record<string, unknown>>;
39
+ readonly binding?: RunBinding;
40
+ };
41
+ type RunTicketInput = {
42
+ /** The principal the run acts for (`sub`). */
43
+ readonly principal: string;
44
+ readonly kind: RunKind;
45
+ /** Becomes `act`; a nested `act` on the actor is kept as the chain. */
46
+ readonly actor?: Actor;
47
+ /** The run's ceiling. Required: a ticket never carries the principal's full authority. */
48
+ readonly delegation: Delegation;
49
+ readonly automation?: RunAutomation;
50
+ readonly tenant?: string;
51
+ readonly trigger?: Readonly<Record<string, unknown>>;
52
+ readonly binding?: RunBinding;
53
+ /** `jti`; a fresh UUID when absent. */
54
+ readonly id?: string;
55
+ /** Lifetime in whole seconds. Exactly one of `expiresIn` and `expiresAt`. */
56
+ readonly expiresIn?: number;
57
+ readonly expiresAt?: Instant;
58
+ };
59
+ type RunTicketOptions = {
60
+ readonly audience?: string | readonly string[];
61
+ readonly now?: Instant;
62
+ };
63
+ /** The live record of an automation, read on every use of its ticket. */
64
+ type RunTicketAutomations = {
65
+ automation(id: string, options: {
66
+ readonly tenant?: string;
67
+ }): {
68
+ readonly id: string;
69
+ readonly version: number | string;
70
+ readonly revoked?: boolean;
71
+ } | null | Promise<{
72
+ readonly id: string;
73
+ readonly version: number | string;
74
+ readonly revoked?: boolean;
75
+ } | null>;
76
+ };
77
+ /** `on('auth')` causes: a verification failure, or one of the run checks. */
78
+ type RunTicketFailureCause = TokenFailureCause | "automation-unavailable" | "automation-changed" | "owner-unavailable";
79
+ type RunTicketSubjectOptions = {
80
+ readonly verifier: TokenVerifier;
81
+ readonly principals: PrincipalSource;
82
+ /** Required to accept a `kind: 'automation'` ticket. */
83
+ readonly automations?: RunTicketAutomations;
84
+ readonly audience?: string | readonly string[];
85
+ readonly issuer?: string;
86
+ readonly clockTolerance?: number;
87
+ readonly onAuth?: (event: AuthEvent) => void;
88
+ readonly requestId?: string;
89
+ };
90
+ /** `subject.context.run` of a subject resolved from a run ticket. */
91
+ type RunContext = {
92
+ readonly id: string;
93
+ readonly kind: RunKind;
94
+ readonly automation?: RunAutomation;
95
+ readonly binding?: RunBinding;
96
+ };
97
+ /** The principal of a run subject, with the verified ticket attached. */
98
+ type RunPrincipal = Principal & {
99
+ readonly runTicket: RunTicket;
100
+ };
101
+ /**
102
+ * Validates untrusted run-ticket claims and returns a frozen copy with only
103
+ * the v1 fields, or `undefined`. Unknown claims are dropped; a wrong type in
104
+ * a known claim, a missing delegation, or an `automation` that does not match
105
+ * `kind` rejects the whole ticket.
106
+ */
107
+ declare function parseRunTicket(claims: unknown): RunTicket | undefined;
108
+ /**
109
+ * Signs a `vnd.permdock.run+jwt` for one run. Throws a `TypeError` on input a
110
+ * verifier would refuse: no delegation, an `automation` that does not match
111
+ * `kind`, a non-JSON `trigger`, or an expiry that is not in the future.
112
+ */
113
+ declare function signRunTicket(input: RunTicketInput, signer: TokenSigner, options?: RunTicketOptions): Promise<string>;
114
+ /**
115
+ * Resolves a `vnd.permdock.run+jwt` into the subject the run acts as: the
116
+ * principal loaded live from `principals`, the ticket's actor and its
117
+ * delegation as the ceiling, with `context.trigger` and `context.run`. Every
118
+ * failure (verification, malformed claims, an automation that is missing,
119
+ * revoked or changed, a principal that is gone, a throwing source) is the
120
+ * anonymous subject, never a throw.
121
+ */
122
+ declare function subjectFromRunTicket(token: string | undefined | null, options: RunTicketSubjectOptions): Promise<Subject<RunPrincipal>>;
123
+ //#endregion
124
+ export { RunKind as a, RunTicketAutomations as c, RunTicketOptions as d, RunTicketSubjectOptions as f, subjectFromRunTicket as h, RunContext as i, RunTicketFailureCause as l, signRunTicket as m, RunAutomation as n, RunPrincipal as o, parseRunTicket as p, RunBinding as r, RunTicket as s, RunActClaim as t, RunTicketInput as u };
@@ -0,0 +1,337 @@
1
+ import { t as compact } from "./compact-CAf557ZB.js";
2
+ import { n as freezeDeep } from "./freeze-CrU8nQeX.js";
3
+ import { a as ownRecord, n as isForbiddenKey } from "./paths-DXSHAMIa.js";
4
+ import { a as isId } from "./expiry-D4_YKRKD.js";
5
+ import { o as epochSeconds, p as nowSeconds } from "./time-DkWjdL98.js";
6
+ import { n as toWireDelegation, t as fromWireDelegation } from "./wire-delegation-Cv3W2eaM.js";
7
+ import { t as anonymousSubject } from "./subject-BGoM5o8B.js";
8
+ //#region src/server/run-ticket.ts
9
+ const RUN_TICKET_TYP = "vnd.permdock.run+jwt";
10
+ const RUN_KINDS = [
11
+ "automation",
12
+ "job",
13
+ "caller"
14
+ ];
15
+ const MAX_ACT_DEPTH = 8;
16
+ const MAX_JSON_DEPTH = 16;
17
+ const MAX_JSON_ENTRIES = 256;
18
+ const MAX_TOOLS = 64;
19
+ function isRunKind(value) {
20
+ return RUN_KINDS.some((kind) => kind === value);
21
+ }
22
+ function isVersion(value) {
23
+ return typeof value === "number" && Number.isSafeInteger(value) && value >= 0 || isId(value);
24
+ }
25
+ function isNumericDate(value) {
26
+ return typeof value === "number" && Number.isSafeInteger(value) && value > 0;
27
+ }
28
+ function jsonCopy(value, depth, budget) {
29
+ budget.n -= 1;
30
+ if (budget.n < 0 || depth > MAX_JSON_DEPTH) return;
31
+ if (value === null || typeof value === "string" || typeof value === "boolean" || typeof value === "number" && Number.isFinite(value)) return value;
32
+ if (Array.isArray(value)) {
33
+ const out = [];
34
+ for (const item of value) {
35
+ const copied = jsonCopy(item, depth + 1, budget);
36
+ if (copied === void 0) return;
37
+ out.push(copied);
38
+ }
39
+ return out;
40
+ }
41
+ if (typeof value !== "object") return;
42
+ const prototype = Object.getPrototypeOf(value);
43
+ if (prototype !== Object.prototype && prototype !== null) return;
44
+ const out = {};
45
+ for (const [key, item] of Object.entries(value)) {
46
+ if (isForbiddenKey(key)) return;
47
+ const copied = jsonCopy(item, depth + 1, budget);
48
+ if (copied === void 0) return;
49
+ out[key] = copied;
50
+ }
51
+ return out;
52
+ }
53
+ function parseTrigger(value) {
54
+ if (value === null || typeof value !== "object" || Array.isArray(value)) return;
55
+ const copied = jsonCopy(value, 0, { n: MAX_JSON_ENTRIES });
56
+ return ownRecord(copied);
57
+ }
58
+ function parseAct(value, depth) {
59
+ const record = ownRecord(value);
60
+ if (record === void 0 || depth > MAX_ACT_DEPTH || !isId(record["sub"])) return;
61
+ const kind = record["kind"];
62
+ if (kind !== void 0 && !isId(kind)) return;
63
+ const inner = record["act"] === void 0 ? void 0 : parseAct(record["act"], depth + 1);
64
+ if (record["act"] !== void 0 && inner === void 0) return;
65
+ return compact({
66
+ sub: record["sub"],
67
+ kind,
68
+ act: inner
69
+ });
70
+ }
71
+ function parseAutomation(value) {
72
+ const record = ownRecord(value);
73
+ if (record === void 0 || !isId(record["id"]) || !isVersion(record["version"])) return;
74
+ return {
75
+ id: record["id"],
76
+ version: record["version"]
77
+ };
78
+ }
79
+ function parseBinding(value) {
80
+ const record = ownRecord(value);
81
+ if (record === void 0) return;
82
+ const connector = record["connector"];
83
+ const tools = record["tools"];
84
+ if (connector !== void 0 && !isId(connector)) return;
85
+ if (tools !== void 0 && !(Array.isArray(tools) && tools.length <= MAX_TOOLS && tools.every(isId) && new Set(tools).size === tools.length)) return;
86
+ return compact({
87
+ connector,
88
+ tools: tools === void 0 ? void 0 : [...tools]
89
+ });
90
+ }
91
+ function parseAudience(value) {
92
+ if (isId(value)) return value;
93
+ if (Array.isArray(value) && value.length > 0 && value.every(isId)) return [...value];
94
+ }
95
+ function parseDetails(value) {
96
+ if (!Array.isArray(value)) return;
97
+ const out = [];
98
+ for (const item of value) {
99
+ const copied = parseTrigger(item);
100
+ if (copied === void 0 || typeof copied["type"] !== "string") return;
101
+ out.push(copied);
102
+ }
103
+ return out;
104
+ }
105
+ function optional(record, key, parse) {
106
+ const raw = record[key];
107
+ if (raw === void 0) return { ok: true };
108
+ const value = parse(raw);
109
+ return value === void 0 ? { ok: false } : {
110
+ ok: true,
111
+ value
112
+ };
113
+ }
114
+ function parseBody(record) {
115
+ const { sub, kind, tenant, scope } = record;
116
+ if (record["v"] !== 1 || !isId(sub) || !isRunKind(kind) || tenant !== void 0 && !isId(tenant) || scope !== void 0 && typeof scope !== "string") return;
117
+ const act = optional(record, "act", (value) => parseAct(value, 0));
118
+ const details = optional(record, "authorization_details", parseDetails);
119
+ const automation = optional(record, "automation", parseAutomation);
120
+ const trigger = optional(record, "trigger", parseTrigger);
121
+ const binding = optional(record, "binding", parseBinding);
122
+ if (!act.ok || !details.ok || !automation.ok || !trigger.ok || !binding.ok || scope === void 0 && details.value === void 0 || kind === "automation" !== (automation.value !== void 0)) return;
123
+ return compact({
124
+ v: 1,
125
+ sub,
126
+ kind,
127
+ act: act.value,
128
+ scope,
129
+ authorization_details: details.value,
130
+ automation: automation.value,
131
+ tenant,
132
+ trigger: trigger.value,
133
+ binding: binding.value
134
+ });
135
+ }
136
+ /**
137
+ * Validates untrusted run-ticket claims and returns a frozen copy with only
138
+ * the v1 fields, or `undefined`. Unknown claims are dropped; a wrong type in
139
+ * a known claim, a missing delegation, or an `automation` that does not match
140
+ * `kind` rejects the whole ticket.
141
+ */
142
+ function parseRunTicket(claims) {
143
+ const record = ownRecord(claims);
144
+ if (record === void 0) return;
145
+ const { iss, jti, iat, exp } = record;
146
+ const aud = parseAudience(record["aud"]);
147
+ const body = parseBody(record);
148
+ if (body === void 0 || !isId(iss) || !isId(jti) || !isNumericDate(iat) || !isNumericDate(exp) || exp <= iat || aud === void 0) return;
149
+ return freezeDeep({
150
+ ...body,
151
+ iss,
152
+ aud,
153
+ jti,
154
+ iat,
155
+ exp
156
+ });
157
+ }
158
+ function actClaim(actor, depth) {
159
+ if (!isId(actor.id) || !isId(actor.kind)) return;
160
+ const nested = actor["act"];
161
+ const chain = nested === void 0 ? void 0 : parseAct(nested, depth + 1);
162
+ if (nested !== void 0 && chain === void 0) return;
163
+ return compact({
164
+ sub: actor.id,
165
+ kind: actor.kind,
166
+ act: chain
167
+ });
168
+ }
169
+ function expiryOf(input, issuedAt) {
170
+ if (input.expiresIn === void 0 === (input.expiresAt === void 0)) return;
171
+ if (input.expiresIn !== void 0) return Number.isSafeInteger(input.expiresIn) && input.expiresIn > 0 ? issuedAt + input.expiresIn : void 0;
172
+ const at = nowSeconds(input.expiresAt);
173
+ return at > issuedAt ? at : void 0;
174
+ }
175
+ function invalid(message) {
176
+ throw new TypeError(`PermDock: run ticket ${message}`);
177
+ }
178
+ /**
179
+ * Signs a `vnd.permdock.run+jwt` for one run. Throws a `TypeError` on input a
180
+ * verifier would refuse: no delegation, an `automation` that does not match
181
+ * `kind`, a non-JSON `trigger`, or an expiry that is not in the future.
182
+ */
183
+ function signRunTicket(input, signer, options = {}) {
184
+ const issuedAt = nowSeconds(options.now);
185
+ const expiresAt = expiryOf(input, issuedAt);
186
+ if (expiresAt === void 0) invalid("needs exactly one future expiresIn or expiresAt");
187
+ const act = input.actor === void 0 ? void 0 : actClaim(input.actor, 0);
188
+ if (input.actor !== void 0 && act === void 0) invalid("actor needs an id and a kind");
189
+ const wire = toWireDelegation(input.delegation);
190
+ const body = parseBody(compact({
191
+ v: 1,
192
+ sub: input.principal,
193
+ kind: input.kind,
194
+ act,
195
+ scope: wire?.scope,
196
+ authorization_details: wire?.authorization_details,
197
+ automation: input.automation,
198
+ tenant: input.tenant,
199
+ trigger: input.trigger,
200
+ binding: input.binding
201
+ }));
202
+ if (body === void 0) invalid("is invalid: check principal, kind, automation, delegation, trigger and binding");
203
+ if (input.id !== void 0 && !isId(input.id)) invalid("id must be a non-empty string");
204
+ return signer.sign(body, compact({
205
+ typ: RUN_TICKET_TYP,
206
+ audience: options.audience,
207
+ expiresAt,
208
+ issuedAt,
209
+ jti: input.id ?? globalThis.crypto.randomUUID()
210
+ }));
211
+ }
212
+ function isPrincipalRecord(value) {
213
+ return value !== null && typeof value === "object" && !Array.isArray(value) && Object.hasOwn(value, "id") && "id" in value && typeof value.id === "string";
214
+ }
215
+ function actorOf(ticket) {
216
+ if (ticket.act === void 0) return;
217
+ return {
218
+ id: ticket.act.sub,
219
+ kind: ticket.act.kind ?? ticket.kind
220
+ };
221
+ }
222
+ function delegationOf(ticket) {
223
+ const delegation = fromWireDelegation(compact({
224
+ scope: ticket.scope,
225
+ authorization_details: ticket.authorization_details
226
+ })) ?? { scopes: [] };
227
+ return ticket.act?.act === void 0 ? delegation : {
228
+ ...delegation,
229
+ chain: ticket.act
230
+ };
231
+ }
232
+ function mediaType(typ) {
233
+ const lower = typ?.toLowerCase();
234
+ return lower?.startsWith("application/") === true ? lower.slice(12) : lower;
235
+ }
236
+ async function checkAutomation(ticket, automations) {
237
+ const expected = ticket.automation;
238
+ if (expected === void 0) return;
239
+ if (automations === void 0) return "automation-unavailable";
240
+ try {
241
+ const record = await automations.automation(expected.id, ticket.tenant === void 0 ? {} : { tenant: ticket.tenant });
242
+ const live = ownRecord(record);
243
+ if (live === void 0 || live["id"] !== expected.id || live["revoked"] === true) return "automation-unavailable";
244
+ return live["version"] === expected.version ? void 0 : "automation-changed";
245
+ } catch {
246
+ return "automation-unavailable";
247
+ }
248
+ }
249
+ async function loadPrincipal(ticket, principals) {
250
+ try {
251
+ const loaded = await principals.principal(ticket.sub, ticket.tenant === void 0 ? {} : { tenant: ticket.tenant });
252
+ if (!isPrincipalRecord(loaded) || loaded.id !== ticket.sub) return {
253
+ ok: false,
254
+ cause: "owner-unavailable"
255
+ };
256
+ return {
257
+ ok: true,
258
+ principal: ticket.tenant === void 0 ? loaded : {
259
+ ...loaded,
260
+ tenant: ticket.tenant
261
+ }
262
+ };
263
+ } catch {
264
+ return {
265
+ ok: false,
266
+ cause: "owner-unavailable"
267
+ };
268
+ }
269
+ }
270
+ function anonymous() {
271
+ return anonymousSubject();
272
+ }
273
+ /**
274
+ * Resolves a `vnd.permdock.run+jwt` into the subject the run acts as: the
275
+ * principal loaded live from `principals`, the ticket's actor and its
276
+ * delegation as the ceiling, with `context.trigger` and `context.run`. Every
277
+ * failure (verification, malformed claims, an automation that is missing,
278
+ * revoked or changed, a principal that is gone, a throwing source) is the
279
+ * anonymous subject, never a throw.
280
+ */
281
+ async function subjectFromRunTicket(token, options) {
282
+ if (typeof token !== "string" || token.length === 0) return anonymous();
283
+ const deny = (cause) => {
284
+ try {
285
+ options.onAuth?.(compact({
286
+ reason: "invalid-token",
287
+ cause,
288
+ source: "run-ticket",
289
+ typ: RUN_TICKET_TYP,
290
+ issuer: options.issuer,
291
+ requestId: options.requestId
292
+ }));
293
+ } catch {}
294
+ return anonymous();
295
+ };
296
+ let ticket;
297
+ try {
298
+ const verified = await options.verifier.verify(token, compact({
299
+ typ: RUN_TICKET_TYP,
300
+ audience: options.audience,
301
+ issuer: options.issuer,
302
+ clockTolerance: options.clockTolerance
303
+ }));
304
+ if (!verified.ok) return deny(verified.cause);
305
+ if (mediaType(verified.header.typ) !== RUN_TICKET_TYP) return deny("wrong-token-type");
306
+ ticket = parseRunTicket(verified.claims);
307
+ } catch {
308
+ return deny("malformed");
309
+ }
310
+ if (ticket === void 0) return deny("invalid-claims");
311
+ if (ticket.exp <= epochSeconds()) return deny("expired");
312
+ const automation = await checkAutomation(ticket, options.automations);
313
+ if (automation !== void 0) return deny(automation);
314
+ const loaded = await loadPrincipal(ticket, options.principals);
315
+ if (!loaded.ok) return deny(loaded.cause);
316
+ const run = compact({
317
+ id: ticket.jti,
318
+ kind: ticket.kind,
319
+ automation: ticket.automation,
320
+ binding: ticket.binding
321
+ });
322
+ return Object.freeze(compact({
323
+ principal: Object.freeze({
324
+ ...loaded.principal,
325
+ runTicket: ticket
326
+ }),
327
+ actor: actorOf(ticket),
328
+ delegation: delegationOf(ticket),
329
+ context: Object.freeze(compact({
330
+ trigger: ticket.trigger,
331
+ run
332
+ })),
333
+ expiresAt: ticket.exp
334
+ }));
335
+ }
336
+ //#endregion
337
+ export { signRunTicket as n, subjectFromRunTicket as r, parseRunTicket as t };
@@ -1,4 +1,4 @@
1
- import { c as scopedTenant, o as protectedView } from "./views-CJsrBS1f.js";
1
+ import { l as scopedTenant, s as protectedView } from "./views-DTIIO-oQ.js";
2
2
  //#region src/svelte/protected.ts
3
3
  /** The instance for `tenant`, built once per store change rather than once per check. */
4
4
  function scopedFor(store, tenant, _generation) {
@@ -1,11 +1,12 @@
1
1
  import { r as isRecord } from "./compact-CAf557ZB.js";
2
- import { r as principal } from "./refs-f3imMjNW.js";
3
- import { a as deny, n as role, r as allow, u as memoryLimitStore } from "./role-builder-B4GbKM-i.js";
4
- import { f as memoryRelations, g as memoryRoleSource } from "./src-Bb7no-hS.js";
5
- import { l as relation, n as anyone } from "./grantee-CXY-0C87.js";
6
- import { o as definePolicy } from "./hosted-CBHgkzDl.js";
7
- import { o as quoteSqlLiteral } from "./sql-t8teWOfo.js";
8
- import { a as saasPlans, i as saasPermissions, o as saasRoles } from "./permissions-CCJ6lmxB.js";
2
+ import { r as principal } from "./refs-K6eWUJ0H.js";
3
+ import { a as deny, n as role, r as allow } from "./role-builder-CXbis5-X.js";
4
+ import { E as memoryCustomRoleSource, _ as limits, g as memoryRelationSource, v as memoryLimitStore } from "./src-DLfUWFAI.js";
5
+ import { h as secondsAt } from "./time-DkWjdL98.js";
6
+ import { l as relation, n as anyone } from "./grantee-Cn1HyUsI.js";
7
+ import { n as definePolicy } from "./policy-DLZJ5gAp.js";
8
+ import { s as quoteSqlLiteral } from "./sql-B5T1IL83.js";
9
+ import { a as saasPlans, i as saasPermissions, o as saasRoles } from "./permissions-CZKiUfFM.js";
9
10
  //#region src/testing/saas/policy.ts
10
11
  function isSubject(user) {
11
12
  return user !== null && "context" in user && "principal" in user;
@@ -67,7 +68,7 @@ const saasPolicy = definePolicy({
67
68
  to,
68
69
  limit: {
69
70
  count: 5,
70
- per: "day"
71
+ per: 86400
71
72
  }
72
73
  })),
73
74
  allow(p.apiKey.revokeAll, {
@@ -400,7 +401,7 @@ function saasRelations(seed = saasSeed) {
400
401
  principal: share.user,
401
402
  expiresAt: share.expiresAt
402
403
  });
403
- return memoryRelations(saasPermissions, {
404
+ return memoryRelationSource(saasPermissions, {
404
405
  rows: { folder: seed.folders },
405
406
  edges: { folder: {
406
407
  viewer: edges("viewer"),
@@ -598,7 +599,7 @@ function encodeJson(value) {
598
599
  }
599
600
  /** Signs an ES256 access token for `sub` with WebCrypto; no dependency. */
600
601
  async function signSaasToken(sub, options = {}) {
601
- const iat = options.now ?? Math.floor(Date.now() / 1e3);
602
+ const iat = secondsAt(options.now);
602
603
  const memberships = options.memberships === false ? void 0 : options.memberships ?? saasMemberships(sub);
603
604
  const header = {
604
605
  alg: "ES256",
@@ -643,11 +644,12 @@ function parseSegment(segment) {
643
644
  * and returns its `sub`, or `null`; never throws. Identity only: memberships
644
645
  * and plans come from the seed, never from the token.
645
646
  */
646
- async function verifySaasToken(token, now = Math.floor(Date.now() / 1e3)) {
647
+ async function verifySaasToken(token, now) {
647
648
  return (await verifySaasSession(token, now))?.sub ?? null;
648
649
  }
649
650
  /** `verifySaasToken` plus the token's `exp` as `expiresAt` (epoch seconds). */
650
- async function verifySaasSession(token, now = Math.floor(Date.now() / 1e3)) {
651
+ async function verifySaasSession(token, at) {
652
+ const now = secondsAt(at);
651
653
  const parts = typeof token === "string" ? token.split(".") : [];
652
654
  const [head, body, signature] = parts;
653
655
  if (parts.length !== 3 || head === void 0 || body === void 0 || signature === void 0) return null;
@@ -715,8 +717,8 @@ function saasLimitStore(used = 0) {
715
717
  function saasScenarioOptions(scenario) {
716
718
  return {
717
719
  ...scenario.tenant === void 0 ? {} : { tenant: scenario.tenant },
718
- customRoles: memoryRoleSource(saasCustomRoles),
719
- limits: saasLimitStore(scenario.quotaUsed),
720
+ customRoles: memoryCustomRoleSource(saasCustomRoles),
721
+ limits: limits(saasLimitStore(scenario.quotaUsed)),
720
722
  relations: saasRelations()
721
723
  };
722
724
  }
@@ -0,0 +1,29 @@
1
+ import { t as defineLeaf } from "./command-L8EstFNm.js";
2
+ //#region src/cli/commands/scan.ts
3
+ const scan = defineLeaf({
4
+ flags: {
5
+ pattern: {
6
+ type: "string",
7
+ repeatable: true,
8
+ description: "An extra regular expression to report",
9
+ valueHint: "regex"
10
+ },
11
+ src: {
12
+ type: "string",
13
+ repeatable: true,
14
+ description: "Directories to scan (default collect.srcPath or src)",
15
+ valueHint: "dir"
16
+ }
17
+ },
18
+ async run(ctx, { flags }) {
19
+ const { runAdoptionScan } = await import("./adoption-scan-B4R5fnMU.js");
20
+ return runAdoptionScan({
21
+ cwd: ctx.cwd,
22
+ srcPath: flags.src.length > 0 ? flags.src : ctx.config.collect?.srcPath ?? ["src"],
23
+ patterns: flags.pattern,
24
+ json: ctx.json
25
+ });
26
+ }
27
+ });
28
+ //#endregion
29
+ export { scan };