permdock 0.4.0 → 0.6.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 (515) 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-DCYe60Pi.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-DvSSPQJX.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-p1PGoVjb.js +995 -0
  18. package/dist/arazzo-41WuzHou.js +36 -0
  19. package/dist/{arazzo-C4BcskbX.js → arazzo-CaUVBn7D.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-DabClFLQ.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-BNM3TtDo.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-kk-uyCwH.js → bind-CAvgUuKs.js} +14 -10
  34. package/dist/{bind-BzqG8SMb.d.ts → bind-DOyrv6zi.d.ts} +12 -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-Bu_eDqYw.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-Drg-1YhL.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-BoWglDPI.js +1 -0
  48. package/dist/catalog-DZVbrF-z.js +52 -0
  49. package/dist/{catalog-tZUyOfOv.js → catalog-HD2gf5mY.js} +51 -6
  50. package/dist/{catalog-doc-DWtg0gGR.js → catalog-doc-Cdn7-0pQ.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-ytQ3uviA.js +87 -0
  68. package/dist/codemod-5mpSpnUY.js +37 -0
  69. package/dist/codemod-ua2hHy7w.js +2084 -0
  70. package/dist/collect-Ci6akVwH.js +55 -0
  71. package/dist/collect-D7eQDffE.js +1 -0
  72. package/dist/{collect-2SrB7lfk.js → collect-mLTY4nwb.js} +75 -11
  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-CtTP7eur.d.ts → compile-1bsAezL0.d.ts} +5 -3
  77. package/dist/{compile-CcEu2ZQ1.js → compile-CMqMx_IN.js} +11 -8
  78. package/dist/completion-BTFrHZhX.js +143 -0
  79. package/dist/config-Bj2Ixq3d.js +26 -0
  80. package/dist/{config-BIjREpyE.js → config-bs_kZeYq.js} +12 -7
  81. package/dist/{config-report--Xb9APJS.js → config-report-DSpsLpCE.js} +15 -5
  82. package/dist/{connection-DUsczpB5.js → connection-DjhIJSs2.js} +6 -5
  83. package/dist/{context-DieZVJXu.js → context-B_u3_bDJ.js} +2 -2
  84. package/dist/convex/index.d.ts +11 -10
  85. package/dist/convex/index.js +6 -4
  86. package/dist/create-B30OMUOJ.d.ts +107 -0
  87. package/dist/create-CBMmFie-.d.ts +138 -0
  88. package/dist/create-CGm28gyI.js +130 -0
  89. package/dist/create-CQWIpUG-.js +403 -0
  90. package/dist/{create-BBO24vj6.js → create-DCF2SvoT.js} +31 -32
  91. package/dist/create-D_NmPOdH.d.ts +110 -0
  92. package/dist/{credential-kue0qpbm.js → credential-BcoiejpY.js} +152 -31
  93. package/dist/credentials-DPyHmYz5.js +74 -0
  94. package/dist/delegation-j6-rc37o.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-CiFQNuMV.d.ts} +5 -5
  100. package/dist/{describe-C3ldA9os.d.ts → describe-B5qgDvEW.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-rpqoe7Ag.js → diff-3jbx6Rm4.js} +60 -54
  104. package/dist/diff-CmuSD3vc.js +37 -0
  105. package/dist/doctor-3ZqNHX_G.js +44 -0
  106. package/dist/{doctor-owlv6ddh.js → doctor-BdZw53-k.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-CWTY6uih.js +143 -0
  116. package/dist/{errors-OD_4c__H.d.ts → errors-DH5QEGXh.d.ts} +2 -2
  117. package/dist/evaluate-CNClBvcj.js +1785 -0
  118. package/dist/evaluations-C_1vdSZc.d.ts +32 -0
  119. package/dist/{evaluations-C9YJsv3H.js → evaluations-beAooV0n.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-DD_gfmrC.js +120 -0
  129. package/dist/fetch-adapter-Dw0MTS3D.d.ts +31 -0
  130. package/dist/fields-OYG_JR78.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-CTCMsFZk.js} +55 -52
  135. package/dist/{grantee-conditions-MQs5NIuX.js → grantee-conditions-CcXf8hMM.js} +4 -3
  136. package/dist/{grantee-CXY-0C87.js → grantee-hxrUsbpM.js} +16 -6
  137. package/dist/{grantee-match-fxYp9Nmt.js → grantee-match-DbENBHLB.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-CBYVMjwh.js} +45 -38
  143. package/dist/hono/index.d.ts +12 -9
  144. package/dist/hono/index.js +13 -12
  145. package/dist/hosted-B46-5LYE.js +315 -0
  146. package/dist/hosted-BPk51-kX.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-wyqXUyjm.js} +190 -53
  152. package/dist/index-B8YjkEZ4.d.ts +210 -0
  153. package/dist/index-C-6Letxg.d.ts +431 -0
  154. package/dist/index-CaxrMD1A.d.ts +1 -0
  155. package/dist/{index-BwMe94Xq.d.ts → index-Ch8LpNDp.d.ts} +34 -16
  156. package/dist/index-Cp_ilKi1.d.ts +91 -0
  157. package/dist/index-CueFnxQc.d.ts +110 -0
  158. package/dist/index-DuWxc5dt.d.ts +909 -0
  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-BsVpyGIk.d.ts} +2 -2
  164. package/dist/instance-snapshot-BOEhcqIF.js +601 -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-D0NVb1cK.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-dvL2XEe1.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-Dr70oA_3.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-CIq4-E9F.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-C4dDTVEd.js +138 -0
  205. package/dist/{openapi-BJdBmYDG.js → openapi-DD1SV-5-.js} +10 -9
  206. package/dist/operation-findings-DgATDpvh.js +36 -0
  207. package/dist/operations-X0VM7F3m.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-1im__-08.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-DqaJNJPn.js} +1045 -153
  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-DvYUR0QL.d.ts → parse-local-manifest-5ODwqu8b.d.ts} +1 -1
  219. package/dist/{parse-local-manifest-C-q02Pal.js → parse-local-manifest-CVSs6J9I.js} +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-BrAscV28.js +868 -0
  227. package/dist/permdock-SV8ZINYT.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-BPxlwVhN.js} +4 -3
  231. package/dist/{permissions-COH-KRgT.d.ts → permissions-u_KHg-sN.d.ts} +1 -2
  232. package/dist/policies-DP2nqRoF.js +295 -0
  233. package/dist/{policy-ur0BBK_e.d.ts → policy-77FSAq_V.d.ts} +2 -2
  234. package/dist/{hosted-CBHgkzDl.js → policy-DbM5YYtV.js} +17 -273
  235. package/dist/policy-from-catalog-C2gMa2Dj.js +450 -0
  236. package/dist/policy-module-CTlwMvLI.js +89 -0
  237. package/dist/{policy-types-sp9P1iIV.d.ts → policy-types-n0uRTsW8.d.ts} +460 -632
  238. package/dist/postgrest-CEgRbefE.d.ts +100 -0
  239. package/dist/postgrest-DAjUkF9w.js +575 -0
  240. package/dist/{powersync-cZe4kzhL.js → powersync-BkWWCS1K.js} +23 -24
  241. package/dist/powersync-DISt6SUe.js +62 -0
  242. package/dist/powersync-MMJ2mI2q.js +1 -0
  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-B45V5d2b.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-BN7BUdY1.js → protected-BlF0F6wL.js} +21 -4
  255. package/dist/{protected-B3_P7xuw.d.ts → protected-RFGpakN9.d.ts} +16 -8
  256. package/dist/{provider-Bi-0HNL3.js → provider-B1al-AZz.js} +2 -2
  257. package/dist/{provider-kwHC9CZD.d.ts → provider-DILL9oPK.d.ts} +1 -1
  258. package/dist/{provider-store-Ctt-81Ni.js → provider-store-DM6DNcta.js} +2 -2
  259. package/dist/pull-CvpINcMK.js +1 -0
  260. package/dist/pull-jEwbf80J.js +256 -0
  261. package/dist/push-BD4f15co.js +116 -0
  262. package/dist/pushed-policy-CqtxkV4G.js +238 -0
  263. package/dist/pushed-policy-DCW91KQU.d.ts +57 -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 +29 -25
  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-Bkm-Ne4l.d.ts} +1 -1
  275. package/dist/{replay-BsOyTrdV.js → replay-Du1tJjG7.js} +2 -1
  276. package/dist/{request-context-BVM7aWNs.js → request-context-C81Pip9n.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-BAqP4q66.js +336 -0
  284. package/dist/{rls-BEktUaqg.js → rls-DTvYd-lI.js} +288 -690
  285. package/dist/{role-builder-B4GbKM-i.js → role-builder-uWQZ4v84.js} +14 -207
  286. package/dist/{rpc-nYC3cR_u.js → rpc-VSl5ylaQ.js} +7 -7
  287. package/dist/run-CUKuz0A8.js +723 -0
  288. package/dist/run-DDwUaJDU.js +1 -0
  289. package/dist/run-ticket-DocwaTKn.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-BCXRuXca.js} +16 -14
  293. package/dist/scan-qvOe0hS3.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-C3WXAHZj.js +453 -0
  303. package/dist/{server-types-DdqBwZN_.d.ts → server-types-CKQiCnON.d.ts} +51 -68
  304. package/dist/{sha256-BO0swRXL.js → sha256-D9ihqmvd.js} +8 -1
  305. package/dist/{shared-1uhI-e-b.js → shared-BAK8t4Uo.js} +20 -9
  306. package/dist/{shared-JhMeOsDF.js → shared-DvvFzYXe.js} +8 -9
  307. package/dist/signals-D3NcTKUS.js +32 -0
  308. package/dist/sink-4-eQIRWf.d.ts +225 -0
  309. package/dist/sink-BEZSlMS_.js +957 -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-B7DkYg6g.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-PXI-vGpY.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-Xc4zkszI.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-Cu2m75uo.js +1860 -0
  323. package/dist/ssf/index.d.ts +4 -4
  324. package/dist/ssf/index.js +384 -47
  325. package/dist/standard-webhooks-DgFFD-Ga.js +228 -0
  326. package/dist/standard-webhooks-rbD7LS6h.d.ts +88 -0
  327. package/dist/storage-C2bWdvJH.js +132 -0
  328. package/dist/{store-ILkLUj_o.js → store-BDutJkDL.js} +40 -53
  329. package/dist/{store-options-CbUHDoSe.js → store-options-u0ycEe8s.js} +26 -21
  330. package/dist/{stores-Cxz_80g-.d.ts → stores-BUGNbJTt.d.ts} +7 -8
  331. package/dist/{stores-BHXdSbw9.js → stores-CGhM8BN_.js} +2 -2
  332. package/dist/{stream-Dwsg6WwE.d.ts → stream-CeCMJmBB.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-By_frk3U.js +92 -0
  342. package/dist/{supabase-hook-Cva3ikXz.js → supabase-hook-BMoEhZir.js} +960 -64
  343. package/dist/supabase-hook-CCw5m35C.js +1 -0
  344. package/dist/{supabase-C1TWlnYt.js → supabase-x5JtR2tc.js} +99 -206
  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-8RnwUAvE.d.ts +107 -0
  376. package/dist/{store-9KO4BlkB.d.ts → types-B3_ooZgZ.d.ts} +100 -75
  377. package/dist/{types-Br9IXUBG.d.ts → types-BdtSDbBO.d.ts} +77 -17
  378. package/dist/types-BtHtcKMr.d.ts +157 -0
  379. package/dist/{types-CqrjB9o6.d.ts → types-BzzaHxt3.d.ts} +23 -11
  380. package/dist/types-C791HFu9.d.ts +332 -0
  381. package/dist/types-C863OQiR.d.ts +57 -0
  382. package/dist/{types-ByUo56un.d.ts → types-CVZSNocA.d.ts} +23 -22
  383. package/dist/{types-DHrmBJLH.d.ts → types-CX7AvRqP.d.ts} +7 -7
  384. package/dist/types-C_IiEs64.d.ts +65 -0
  385. package/dist/{types-7rJVLWe5.d.ts → types-Dfv0aTER.d.ts} +63 -11
  386. package/dist/types-DqzsnlSA.js +67 -0
  387. package/dist/{types-DpWfQdSh.d.ts → types-Druu9wLM.d.ts} +46 -11
  388. package/dist/{types-CIlTojhq.d.ts → types-_WhUP7ud.d.ts} +9 -6
  389. package/dist/{types-CUcFZfpU.d.ts → types-lUlG3TVd.d.ts} +2 -1
  390. package/dist/unplugin/index.d.ts +1 -1
  391. package/dist/unplugin/index.js +2 -2
  392. package/dist/usage-CRVl9V3t.js +32 -0
  393. package/dist/usage-CZpSQP6L.js +1 -0
  394. package/dist/{usage-CG9nOYZw.js → usage-SveTRTyr.js} +54 -11
  395. package/dist/{validation-error-BSSw0l_8.d.ts → validation-error-DHUrAkku.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-BaAKx7t6.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-CN8H_9UF.d.ts} +67 -2
  403. package/dist/vue/index.d.ts +9 -10
  404. package/dist/vue/index.js +8 -8
  405. package/dist/waiter-B986w1oK.d.ts +36 -0
  406. package/dist/waiter-BGUtGYoU.js +67 -0
  407. package/dist/watch--ovlPOc0.js +1 -0
  408. package/dist/{watch-zeucB7eF.js → watch-vea54PRw.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-C9vfEphl.js +306 -0
  412. package/dist/who-can-DWBAcaCQ.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-C5jC6sKI.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 +10 -9
  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 +6 -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/index-UdVQgq48.d.ts +0 -550
  490. package/dist/load-B_shHrmd.js +0 -2
  491. package/dist/manifest-BngWKryL.js +0 -770
  492. package/dist/may-use-BOn_dR_w.js +0 -78
  493. package/dist/openapi-DcQ1Kg40.js +0 -164
  494. package/dist/ownership-BgnbOJFT.js +0 -851
  495. package/dist/permdock-L26udHSk.js +0 -3646
  496. package/dist/powersync-BFSbSElQ.js +0 -62
  497. package/dist/powersync-DCDgZgfZ.js +0 -2
  498. package/dist/rls-55DQTuf5.js +0 -250
  499. package/dist/run-DMcNW_8T.js +0 -174
  500. package/dist/server-ZYEHtNHS.js +0 -268
  501. package/dist/sink-BTtmfPnE.js +0 -141
  502. package/dist/sink-CPN4zLfs.d.ts +0 -104
  503. package/dist/skills-Dle4ZoLF.js +0 -56
  504. package/dist/snapshot-Dc9CHPME.js +0 -1078
  505. package/dist/src-Bb7no-hS.js +0 -639
  506. package/dist/subject-C6dLxqHU.js +0 -24
  507. package/dist/supabase-Dbqr141s.js +0 -83
  508. package/dist/supabase-hook-BULg7Ut_.js +0 -2
  509. package/dist/thenable-QSmvt-vZ.js +0 -65
  510. package/dist/types-C0dee0Qf.d.ts +0 -197
  511. package/dist/types-DvupZE0w.d.ts +0 -9
  512. package/dist/usage-4G6t643F.js +0 -42
  513. package/dist/usage-iFLJ0-rr.js +0 -2
  514. package/dist/vocabulary-hhEFLFoL.d.ts +0 -65
  515. package/dist/watch-C8TpsAl4.js +0 -2
@@ -0,0 +1,224 @@
1
+ import { t as compact } from "../compact-CAf557ZB.js";
2
+ import { n as freezeDeep } from "../freeze-CrU8nQeX.js";
3
+ import { n as loadPrincipalByIdentity } from "../principal-source-pHneukrx.js";
4
+ import { f as nowMillis } from "../time-DkWjdL98.js";
5
+ import { c as withApp, t as getPermDock } from "../permdock-BrAscV28.js";
6
+ import { c as isApprovalError } from "../types-DqzsnlSA.js";
7
+ import { a as requestApproval, o as resolveApproval, s as resumeDecision } from "../helpers-CBYVMjwh.js";
8
+ import { t as approvalPrompt } from "../approval-prompt-Dg5LeAcT.js";
9
+ //#region src/chat/subject.ts
10
+ function nonEmpty(value) {
11
+ return typeof value === "string" && value !== "";
12
+ }
13
+ function isChatAuthor(value) {
14
+ if (typeof value !== "object" || value === null) return false;
15
+ const provider = Reflect.get(value, "provider");
16
+ const userId = Reflect.get(value, "userId");
17
+ const workspace = Reflect.get(value, "workspace");
18
+ return nonEmpty(provider) && nonEmpty(userId) && (workspace === void 0 || nonEmpty(workspace));
19
+ }
20
+ /** The principal linked to `author`, or `null` for an unlinked or malformed author. Never throws. */
21
+ function principalFromChat(author, principals) {
22
+ if (!isChatAuthor(author)) return Promise.resolve(null);
23
+ return loadPrincipalByIdentity(principals, compact({
24
+ kind: "chat",
25
+ provider: author.provider,
26
+ value: author.userId,
27
+ workspace: author.workspace
28
+ }));
29
+ }
30
+ /**
31
+ * The subject a chat author acts as: the principal its identity link
32
+ * names, or anonymous when there is no link. Never throws.
33
+ */
34
+ async function subjectFromChat(author, options) {
35
+ return {
36
+ principal: await principalFromChat(author, options.principals),
37
+ context: {}
38
+ };
39
+ }
40
+ //#endregion
41
+ //#region src/chat/create.ts
42
+ const ADAPTER = "chat";
43
+ function denied(reason, permission) {
44
+ return freezeDeep({
45
+ outcome: "denied",
46
+ denials: [{
47
+ role: null,
48
+ reason,
49
+ detail: { permission: permission.key }
50
+ }],
51
+ alternatives: []
52
+ });
53
+ }
54
+ function idOf(row) {
55
+ if (row === null || typeof row !== "object") return;
56
+ const id = Reflect.get(row, "id");
57
+ return typeof id === "string" || typeof id === "number" ? String(id) : void 0;
58
+ }
59
+ function isLive(request, now) {
60
+ return request.status !== "expired" && Date.parse(request.expiresAt) > now;
61
+ }
62
+ async function findRequest(store, id) {
63
+ if (store.getById !== void 0) return store.getById(id);
64
+ let cursor;
65
+ do {
66
+ const page = await store.list(compact({ cursor }));
67
+ const found = page.items.find((request) => request.id === id);
68
+ if (found !== void 0) return found;
69
+ cursor = page.next;
70
+ } while (cursor !== void 0);
71
+ return null;
72
+ }
73
+ /**
74
+ * Creates the chat PermDock. Every command and action is decided as the
75
+ * principal the author's chat identity links to, loaded live; an unlinked
76
+ * author is anonymous and denied.
77
+ */
78
+ function createPermDock(policy, given) {
79
+ const options = withApp(policy, given);
80
+ const { store: approvals, ...permdockOptions } = options;
81
+ const instanceFor = (subject) => getPermDock(policy, subject, permdockOptions);
82
+ const getPermDock$1 = async (author) => instanceFor(await subjectFromChat(author, { principals: options.principals }));
83
+ const parked = async (operation, decision, permdock, row) => {
84
+ if (approvals === void 0) return null;
85
+ const resource = compact({
86
+ type: operation.permission.resource,
87
+ id: idOf(row)
88
+ });
89
+ const current = await approvals.get(decision.token);
90
+ if (current !== null && isLive(current, nowMillis())) {
91
+ if (current.status === "pending") return approvalPrompt(current, { operation });
92
+ return resumeDecision({
93
+ decision,
94
+ permission: operation.permission,
95
+ subject: permdock.subject,
96
+ store: approvals,
97
+ resource,
98
+ adapter: ADAPTER,
99
+ token: decision.token
100
+ });
101
+ }
102
+ const request = await requestApproval(approvals, decision, {
103
+ permission: operation.permission,
104
+ resource,
105
+ subject: permdock.subject,
106
+ adapter: ADAPTER
107
+ });
108
+ return approvalPrompt(request, { operation });
109
+ };
110
+ const protect = (operation, handler) => {
111
+ const { permission } = operation;
112
+ return async (author, input) => {
113
+ const permdock = await getPermDock$1(author);
114
+ let row;
115
+ if (operation.data !== void 0) {
116
+ try {
117
+ row = await operation.data(input);
118
+ } catch {
119
+ return {
120
+ outcome: "denied",
121
+ decision: denied("closure-error", permission)
122
+ };
123
+ }
124
+ if (permission.kind === "instance" && (row === null || row === void 0)) return {
125
+ outcome: "denied",
126
+ decision: denied("validation", permission)
127
+ };
128
+ }
129
+ let decision = permdock.decide(permission, row, {
130
+ adapter: ADAPTER,
131
+ call: "adapter",
132
+ operation: {
133
+ name: operation.name,
134
+ meta: operation.meta
135
+ }
136
+ });
137
+ if (decision.outcome === "approval-required") {
138
+ const resolved = await parked(operation, decision, permdock, row);
139
+ if (resolved === null || "v" in resolved) return {
140
+ outcome: "approval-required",
141
+ decision,
142
+ prompt: resolved
143
+ };
144
+ decision = resolved;
145
+ }
146
+ switch (decision.outcome) {
147
+ case "granted": break;
148
+ case "denied": return {
149
+ outcome: "denied",
150
+ decision
151
+ };
152
+ case "approval-required": return {
153
+ outcome: "approval-required",
154
+ decision,
155
+ prompt: null
156
+ };
157
+ default: return decision;
158
+ }
159
+ if (!isChatAuthor(author)) return {
160
+ outcome: "denied",
161
+ decision: denied("validation", permission)
162
+ };
163
+ return {
164
+ outcome: "granted",
165
+ value: await handler({
166
+ author,
167
+ input,
168
+ row,
169
+ permdock,
170
+ decision
171
+ })
172
+ };
173
+ };
174
+ };
175
+ const resolveAction = async (author, action) => {
176
+ const status = action.status;
177
+ if (status !== "approved" && status !== "rejected" || typeof action.approval !== "string" || action.approval === "") return {
178
+ ok: false,
179
+ cause: "invalid-action"
180
+ };
181
+ const subject = await subjectFromChat(author, { principals: options.principals });
182
+ if (subject.principal === null) return {
183
+ ok: false,
184
+ cause: "approver-unauthenticated"
185
+ };
186
+ if (approvals === void 0) return {
187
+ ok: false,
188
+ cause: "approval-not-found"
189
+ };
190
+ try {
191
+ const request = await findRequest(approvals, action.approval);
192
+ if (request === null) return {
193
+ ok: false,
194
+ cause: "approval-not-found"
195
+ };
196
+ const resolved = await resolveApproval(approvals, request.token, compact({
197
+ status,
198
+ by: subject,
199
+ note: action.note
200
+ }), compact({
201
+ relations: permdockOptions.relations,
202
+ requireDistinctApprover: true,
203
+ permdockFor: (approver) => instanceFor(approver)
204
+ }));
205
+ return {
206
+ ok: true,
207
+ id: resolved.id,
208
+ status: resolved.status
209
+ };
210
+ } catch (error) {
211
+ return {
212
+ ok: false,
213
+ cause: isApprovalError(error) ? error.code : "approval-not-found"
214
+ };
215
+ }
216
+ };
217
+ return Object.freeze({
218
+ getPermDock: getPermDock$1,
219
+ protect,
220
+ resolveAction
221
+ });
222
+ }
223
+ //#endregion
224
+ export { createPermDock, isChatAuthor, subjectFromChat };
@@ -0,0 +1,87 @@
1
+ import { n as ApprovalUrl, t as ApprovalPrompt } from "../approval-prompt-DvSSPQJX.js";
2
+ import { l as ChatAuthor, n as ChatActionResult, o as ChatPermDock } from "../create-B30OMUOJ.js";
3
+ import { n as ChatTransport } from "../types-BtHtcKMr.js";
4
+ import { ActionEvent, Author, CardElement } from "chat";
5
+ //#region src/chat-sdk/author.d.ts
6
+ type ChatSdkAuthorOptions = {
7
+ /** The platform workspace the bot is installed in, matched against identity links. */
8
+ readonly workspace?: string;
9
+ };
10
+ /**
11
+ * The `ChatAuthor` of a Chat SDK message or action, named by its adapter
12
+ * (`adapter.name`, such as `slack`). `null` for a bot, this bot, the
13
+ * platform itself or an empty id. Reads only `userId`: the email and display
14
+ * name never identify anyone.
15
+ */
16
+ export declare function chatSdkAuthor(user: Pick<Author, "userId" | "isBot" | "isMe" | "isSystem">, adapter: {
17
+ readonly name: string;
18
+ } | string, options?: ChatSdkAuthorOptions): ChatAuthor | null;
19
+ //#endregion
20
+ //#region src/chat-sdk/card.d.ts
21
+ /** The `actionId` of the card's approve button; its `value` is the request id. */
22
+ export declare const APPROVE_ACTION = "permdock:approve";
23
+ /** The `actionId` of the card's reject button; its `value` is the request id. */
24
+ export declare const REJECT_ACTION = "permdock:reject";
25
+ type ApprovalCardOptions = {
26
+ /** The app's approval page: a base URL the request id is appended to, or a function of the prompt. Must be https. */
27
+ readonly approvalUrl: ApprovalUrl;
28
+ /** `false` leaves out the approve and reject buttons, so the page is the only place to decide. Defaults to `true`. */
29
+ readonly buttons?: boolean;
30
+ };
31
+ /**
32
+ * A Chat SDK card for an approval prompt: the detail, who asked, the
33
+ * permission and the expiry, a link to the approval page, and approve and
34
+ * reject buttons that carry the request id, never its token. A click is
35
+ * applied by `approvalActions` as the verified clicking user. Throws a
36
+ * `TypeError` for an approval page that is not https.
37
+ */
38
+ export declare function approvalCard(prompt: ApprovalPrompt, options: ApprovalCardOptions): CardElement;
39
+ //#endregion
40
+ //#region src/chat-sdk/actions.d.ts
41
+ type ApprovalActionsOptions = ChatSdkAuthorOptions & {
42
+ /**
43
+ * Receives every verdict instead of the default replies: the outcome posted
44
+ * to the thread, a refusal shown only to the clicking user.
45
+ */
46
+ readonly onResult?: (result: ChatActionResult, event: ActionEvent) => void | Promise<void>;
47
+ };
48
+ type ApprovalActions = {
49
+ /** The action ids to register: `chat.onAction(actions.actionIds, actions.onAction)`. */
50
+ readonly actionIds: readonly [typeof APPROVE_ACTION, typeof REJECT_ACTION];
51
+ readonly onAction: (event: ActionEvent) => Promise<void>;
52
+ };
53
+ /**
54
+ * Applies the approve and reject buttons of `approvalCard`. The clicking
55
+ * user, as the Chat SDK adapter verified them, is resolved through
56
+ * `ChatPermDock.resolveAction`; the button value names the request by id.
57
+ * A click from an unlinked user, the requester or a bot records nothing.
58
+ */
59
+ export declare function approvalActions(permdock: ChatPermDock, options?: ApprovalActionsOptions): ApprovalActions;
60
+ //#endregion
61
+ //#region src/chat-sdk/transport.d.ts
62
+ /** The part of a Chat SDK `Chat` the transport calls; a `new Chat(...)` fits. */
63
+ type ChatSdkClient = {
64
+ openDM(user: string): Promise<{
65
+ post(message: string | CardElement): Promise<{
66
+ readonly id: string;
67
+ }>;
68
+ }>;
69
+ };
70
+ type ChatSdkTransportOptions = {
71
+ /** The adapter name recipients are on (`slack`, `teams`, …); a target for another provider is rejected. */
72
+ readonly provider: string;
73
+ /** The workspace the bot is installed in; a target for another workspace is rejected. */
74
+ readonly workspace?: string;
75
+ /** Keys this transport remembers to skip a repeat post. Defaults to 1000. */
76
+ readonly remember?: number;
77
+ };
78
+ /**
79
+ * The chat channel of `permdock/delivery` over the Chat SDK: opens a direct
80
+ * message with the target's platform user id and posts the text, or the
81
+ * approval card when the message carries an approval prompt. The Chat SDK
82
+ * takes no idempotency key, so the transport skips a key it already sent,
83
+ * per instance and in memory only.
84
+ */
85
+ export declare function chatSdkTransport(chat: ChatSdkClient, options: ChatSdkTransportOptions): ChatTransport;
86
+ //#endregion
87
+ export type { ApprovalActions, ApprovalActionsOptions, ApprovalCardOptions, ChatSdkAuthorOptions, ChatSdkClient, ChatSdkTransportOptions };
@@ -0,0 +1,197 @@
1
+ import { t as compact } from "../compact-CAf557ZB.js";
2
+ import { n as approvalUrlFor } from "../approval-prompt-Dg5LeAcT.js";
3
+ import { i as isDeliveryTarget } from "../target-Bw37TFNA.js";
4
+ import { Actions, Button, Card, CardText, Field, Fields, LinkButton } from "chat";
5
+ //#region src/chat-sdk/author.ts
6
+ /**
7
+ * The `ChatAuthor` of a Chat SDK message or action, named by its adapter
8
+ * (`adapter.name`, such as `slack`). `null` for a bot, this bot, the
9
+ * platform itself or an empty id. Reads only `userId`: the email and display
10
+ * name never identify anyone.
11
+ */
12
+ function chatSdkAuthor(user, adapter, options = {}) {
13
+ const provider = typeof adapter === "string" ? adapter : adapter.name;
14
+ if (typeof provider !== "string" || provider === "" || typeof user.userId !== "string" || user.userId === "" || user.isBot === true || user.isMe || user.isSystem === true) return null;
15
+ return compact({
16
+ provider,
17
+ userId: user.userId,
18
+ workspace: options.workspace === void 0 || options.workspace === "" ? void 0 : options.workspace
19
+ });
20
+ }
21
+ //#endregion
22
+ //#region src/chat-sdk/card.ts
23
+ /** The `actionId` of the card's approve button; its `value` is the request id. */
24
+ const APPROVE_ACTION = "permdock:approve";
25
+ /** The `actionId` of the card's reject button; its `value` is the request id. */
26
+ const REJECT_ACTION = "permdock:reject";
27
+ function oneLine(value) {
28
+ return value.replaceAll(/\s+/gu, " ").trim();
29
+ }
30
+ /**
31
+ * A Chat SDK card for an approval prompt: the detail, who asked, the
32
+ * permission and the expiry, a link to the approval page, and approve and
33
+ * reject buttons that carry the request id, never its token. A click is
34
+ * applied by `approvalActions` as the verified clicking user. Throws a
35
+ * `TypeError` for an approval page that is not https.
36
+ */
37
+ function approvalCard(prompt, options) {
38
+ const url = approvalUrlFor(prompt, options.approvalUrl);
39
+ const requester = prompt.requester.principal?.id ?? "an anonymous caller";
40
+ const actor = prompt.requester.actor;
41
+ const fields = [
42
+ Field({
43
+ label: "Requested by",
44
+ value: actor === void 0 ? requester : `${requester} through ${actor.kind} ${actor.id}`
45
+ }),
46
+ Field({
47
+ label: "Permission",
48
+ value: prompt.permission
49
+ }),
50
+ Field({
51
+ label: "Resource",
52
+ value: prompt.resource.id === void 0 ? prompt.resource.type : `${prompt.resource.type} ${prompt.resource.id}`
53
+ }),
54
+ ...prompt.operation?.risk === void 0 ? [] : [Field({
55
+ label: "Risk",
56
+ value: prompt.operation.risk
57
+ })],
58
+ Field({
59
+ label: "Expires",
60
+ value: prompt.expiresAt
61
+ })
62
+ ];
63
+ const review = LinkButton({
64
+ url,
65
+ label: "Review"
66
+ });
67
+ const children = [
68
+ CardText(oneLine(prompt.detail)),
69
+ Fields(fields),
70
+ Actions(options.buttons === false ? [review] : [
71
+ Button({
72
+ id: APPROVE_ACTION,
73
+ label: "Approve",
74
+ style: "primary",
75
+ value: prompt.id
76
+ }),
77
+ Button({
78
+ id: REJECT_ACTION,
79
+ label: "Reject",
80
+ style: "danger",
81
+ value: prompt.id
82
+ }),
83
+ review
84
+ ])
85
+ ];
86
+ return Card({
87
+ title: `Approval needed: ${oneLine(prompt.operation?.title ?? prompt.detail)}`,
88
+ children
89
+ });
90
+ }
91
+ //#endregion
92
+ //#region src/chat-sdk/actions.ts
93
+ async function reply(result, event) {
94
+ const { thread } = event;
95
+ if (thread === null) return;
96
+ if (result.ok) {
97
+ const verdict = result.status === "approved" ? "Approved" : "Rejected";
98
+ await thread.post(`${verdict} by ${event.user.userName}.`);
99
+ return;
100
+ }
101
+ await thread.postEphemeral(event.user, `The approval was not recorded: ${result.cause}.`, { fallbackToDM: false });
102
+ }
103
+ /**
104
+ * Applies the approve and reject buttons of `approvalCard`. The clicking
105
+ * user, as the Chat SDK adapter verified them, is resolved through
106
+ * `ChatPermDock.resolveAction`; the button value names the request by id.
107
+ * A click from an unlinked user, the requester or a bot records nothing.
108
+ */
109
+ function approvalActions(permdock, options = {}) {
110
+ const onAction = async (event) => {
111
+ if (event.actionId !== "permdock:approve" && event.actionId !== "permdock:reject") return;
112
+ const author = chatSdkAuthor(event.user, event.adapter, options);
113
+ const result = await permdock.resolveAction(author, {
114
+ approval: event.value ?? "",
115
+ status: event.actionId === "permdock:approve" ? "approved" : "rejected"
116
+ });
117
+ await (options.onResult ?? reply)(result, event);
118
+ };
119
+ return Object.freeze({
120
+ actionIds: [APPROVE_ACTION, REJECT_ACTION],
121
+ onAction
122
+ });
123
+ }
124
+ //#endregion
125
+ //#region src/chat-sdk/transport.ts
126
+ const DEFAULT_REMEMBER = 1e3;
127
+ function failed(cause, retryable, reason) {
128
+ return reason === void 0 ? {
129
+ status: "failed",
130
+ cause,
131
+ retryable
132
+ } : {
133
+ status: "failed",
134
+ cause,
135
+ retryable,
136
+ reason
137
+ };
138
+ }
139
+ /** Maps a Chat SDK throw by its `ChatError` code; anything else is retryable. */
140
+ function chatSdkFailure(error) {
141
+ switch (typeof error === "object" && error !== null ? Reflect.get(error, "code") : void 0) {
142
+ case "RATE_LIMITED": return failed("rate-limited", true);
143
+ case "NOT_IMPLEMENTED": return failed("rejected", false, "the adapter cannot open a direct message");
144
+ default: return failed("unavailable", true);
145
+ }
146
+ }
147
+ /**
148
+ * The chat channel of `permdock/delivery` over the Chat SDK: opens a direct
149
+ * message with the target's platform user id and posts the text, or the
150
+ * approval card when the message carries an approval prompt. The Chat SDK
151
+ * takes no idempotency key, so the transport skips a key it already sent,
152
+ * per instance and in memory only.
153
+ */
154
+ function chatSdkTransport(chat, options) {
155
+ const remember = options.remember ?? DEFAULT_REMEMBER;
156
+ const sent = /* @__PURE__ */ new Map();
157
+ const record = (key, result) => {
158
+ sent.set(key, result);
159
+ if (sent.size > remember) {
160
+ const oldest = sent.keys().next();
161
+ if (oldest.done !== true) sent.delete(oldest.value);
162
+ }
163
+ };
164
+ const deliver = async (target, message, deliveryOptions) => {
165
+ if (!isDeliveryTarget(target, "chat")) return failed("invalid-recipient", false);
166
+ if (target.provider !== void 0 && target.provider !== options.provider || target.workspace !== void 0 && options.workspace !== void 0 && target.workspace !== options.workspace) return failed("rejected", false, "the target is on another platform or workspace");
167
+ const previous = sent.get(deliveryOptions.idempotencyKey);
168
+ if (previous !== void 0) return previous;
169
+ let body;
170
+ try {
171
+ body = message.approval === void 0 ? message.text : approvalCard(message.approval.prompt, { approvalUrl: message.approval.url });
172
+ } catch {
173
+ return {
174
+ status: "failed",
175
+ cause: "invalid-message",
176
+ retryable: false
177
+ };
178
+ }
179
+ try {
180
+ const result = {
181
+ status: "sent",
182
+ providerId: (await (await chat.openDM(target.address)).post(body)).id
183
+ };
184
+ record(deliveryOptions.idempotencyKey, result);
185
+ return result;
186
+ } catch (error) {
187
+ return chatSdkFailure(error);
188
+ }
189
+ };
190
+ return Object.freeze({
191
+ channel: "chat",
192
+ name: "chat-sdk",
193
+ deliver
194
+ });
195
+ }
196
+ //#endregion
197
+ export { APPROVE_ACTION, REJECT_ACTION, approvalActions, approvalCard, chatSdkAuthor, chatSdkTransport };
@@ -0,0 +1,13 @@
1
+ import { o as readPath } from "./paths-DXSHAMIa.js";
2
+ //#region src/core/claims-map.ts
3
+ /** The value at `path`; a function that throws reads as absent, so a bad mapping fails closed. */
4
+ function readClaim(claims, path) {
5
+ if (typeof path === "string") return readPath(claims, path);
6
+ try {
7
+ return path(claims);
8
+ } catch {
9
+ return;
10
+ }
11
+ }
12
+ //#endregion
13
+ export { readClaim as t };
@@ -0,0 +1,32 @@
1
+ //#region src/core/claims-map.d.ts
2
+ /** Where a value lives in verified claims: a dotted path (`app_metadata.roles`), or a function over the claims. */
3
+ type ClaimPath = string | ((claims: Readonly<Record<string, unknown>>) => unknown);
4
+ /**
5
+ * How one provider's verified claims map to a principal. Every subject
6
+ * provider takes it as `claims`; each field it leaves out keeps that
7
+ * provider's default. Mapping only: core never verifies a token, and a claim
8
+ * becomes a principal field only after the provider verified the token.
9
+ */
10
+ type ClaimsMap = {
11
+ readonly id?: ClaimPath;
12
+ readonly roles?: ClaimPath;
13
+ readonly groups?: ClaimPath;
14
+ readonly entitlements?: ClaimPath;
15
+ readonly plans?: ClaimPath;
16
+ /** The active tenant. */
17
+ readonly tenant?: ClaimPath;
18
+ /** `[{ scope, id, within?, roles }]` carried in the token. */
19
+ readonly memberships?: ClaimPath;
20
+ /** `'user'`, `'service'` or `'workload'`, or the path that holds one. */
21
+ readonly kind?: string;
22
+ readonly assurance?: string | {
23
+ readonly acr?: string;
24
+ readonly amr?: string;
25
+ readonly authTime?: string;
26
+ /** OpenID Connect for Identity Assurance; default `verified_claims`. */
27
+ readonly verified?: string;
28
+ };
29
+ readonly session?: ClaimPath;
30
+ };
31
+ //#endregion
32
+ export { ClaimsMap as t };
@@ -1,7 +1,6 @@
1
- import { E as Policy, Or as Principal, j as PolicyVocabulary, jt as PermDock, wr as Delegation } from "../policy-types-sp9P1iIV.js";
2
- import { f as ApprovalStore } from "../types-Br9IXUBG.js";
3
- import { t as InstanceOptions } from "../instance-options-plkrsAog.js";
4
- import { t as ToolMap } from "../types-DvupZE0w.js";
1
+ import { T as Policy, j as PolicyVocabulary, rr as Principal } from "../policy-types-n0uRTsW8.js";
2
+ import { r as PermDock } from "../permdock-SV8ZINYT.js";
3
+ import { o as AgentAdapterOptions, t as AgentPermDock } from "../create-CBMmFie-.js";
5
4
  //#region src/claude-agent/create.d.ts
6
5
  /** Structural `McpServerProvenance` from `@anthropic-ai/claude-agent-sdk`. */
7
6
  type ClaudeMcpServer = {
@@ -19,15 +18,9 @@ type ClaudeAgentContext = {
19
18
  readonly sessionId?: string;
20
19
  readonly agentId?: string;
21
20
  };
22
- type ClaudeAgentPermDockOptions<TUser = unknown> = InstanceOptions & {
23
- readonly subject: (context: ClaudeAgentContext) => TUser | Promise<TUser>;
24
- readonly actor?: (context: ClaudeAgentContext) => unknown;
25
- readonly delegation?: (context: ClaudeAgentContext) => Delegation | undefined | Promise<Delegation | undefined>;
26
- readonly tenant?: string | ((context: ClaudeAgentContext) => string | undefined | Promise<string | undefined>);
27
- readonly tools: ToolMap;
21
+ type ClaudeAgentPermDockOptions<TUser = unknown> = AgentAdapterOptions<ClaudeAgentContext, TUser> & {
28
22
  /** MCP server sources whose `mcp__*` tools may be decided; default `['sdk']`. */
29
23
  readonly mcpSources?: readonly string[];
30
- readonly store?: ApprovalStore;
31
24
  };
32
25
  type PermissionResult = {
33
26
  readonly behavior: "allow";
@@ -58,15 +51,15 @@ type PermissionRequestHookOutput = {
58
51
  readonly decision: PermissionResult;
59
52
  };
60
53
  } | Record<string, never>;
61
- type ClaudeAgentPermDock<V extends PolicyVocabulary = PolicyVocabulary> = {
54
+ type ClaudeAgentPermDock<V extends PolicyVocabulary = PolicyVocabulary> = AgentPermDock<ClaudeAgentContext, V> & {
62
55
  /** A `CanUseTool`: pass it as the query's `canUseTool` option. */
63
56
  readonly canUseTool: (toolName: string, input: Record<string, unknown>, options?: CanUseToolOptions) => Promise<PermissionResult>;
64
57
  /** A `HookCallback` for the `PermissionRequest` event. */
65
58
  readonly permissionRequestHook: (input: PermissionRequestHookInput, toolUseID?: string, options?: {
66
59
  readonly signal?: AbortSignal;
67
60
  }) => Promise<PermissionRequestHookOutput>;
68
- readonly permdock: (context: ClaudeAgentContext) => Promise<PermDock<V>>;
61
+ readonly getPermDock: (context: ClaudeAgentContext) => Promise<PermDock<V>>;
69
62
  };
70
- export declare function createPermDock<TUser, TPrincipal extends Principal = Principal, V extends PolicyVocabulary = PolicyVocabulary>(policy: Policy<TUser, TPrincipal, V>, options: ClaudeAgentPermDockOptions<TUser>): ClaudeAgentPermDock<V>;
63
+ export declare function createPermDock<TUser, TPrincipal extends Principal = Principal, V extends PolicyVocabulary = PolicyVocabulary>(policy: Policy<TUser, TPrincipal, V>, given: ClaudeAgentPermDockOptions<TUser>): ClaudeAgentPermDock<V>;
71
64
  //#endregion
72
65
  export type { CanUseToolOptions, ClaudeAgentContext, ClaudeAgentPermDock, ClaudeAgentPermDockOptions, ClaudeMcpServer, PermissionRequestHookInput, PermissionRequestHookOutput, PermissionResult };
@@ -1,6 +1,6 @@
1
1
  import { r as isRecord, t as compact } from "../compact-CAf557ZB.js";
2
- import { r as instanceOptions } from "../build-instance-DIIV9DbC.js";
3
- import { n as createAgentKernel } from "../kernel-CB3LrIJM.js";
2
+ import { c as withApp } from "../permdock-BrAscV28.js";
3
+ import { t as agentRuntime } from "../create-CGm28gyI.js";
4
4
  //#region src/claude-agent/create.ts
5
5
  const MCP_PREFIX = "mcp__";
6
6
  function asInput(input) {
@@ -27,50 +27,47 @@ function toResult(verdict, input) {
27
27
  message: `${verdict.summary} Approval ${verdict.token} is pending; retry the call once it is approved.`
28
28
  };
29
29
  }
30
- function createPermDock(policy, options) {
30
+ function createPermDock(policy, given) {
31
+ const options = withApp(policy, given);
31
32
  const sources = options.mcpSources ?? ["sdk"];
32
- const kernel = createAgentKernel(policy, {
33
- ...compact({
34
- actor: options.actor,
35
- delegation: options.delegation,
36
- tenant: options.tenant,
37
- store: options.store
38
- }),
39
- ...instanceOptions(options),
40
- subject: options.subject,
41
- tools: options.tools,
42
- adapter: "claude-agent"
43
- });
33
+ const { agent, kernel } = agentRuntime(policy, options, "claude-agent");
34
+ /** `null`: an unmapped tool under `unmapped: 'allow'`, which PermDock does not decide. */
44
35
  const decide = async (context, input) => {
45
36
  const untrusted = untrustedServer(context, sources);
46
37
  if (untrusted !== void 0) return {
47
38
  behavior: "deny",
48
39
  message: untrusted
49
40
  };
41
+ if (options.unmapped === "allow" && !Object.hasOwn(options.operations, context.toolName)) return null;
50
42
  return toResult(await kernel.decideTool(context.toolName, input, context), input);
51
43
  };
52
- const canUseTool = (toolName, input, sdkOptions = {}) => decide(compact({
44
+ const canUseTool = async (toolName, input, sdkOptions = {}) => await decide(compact({
53
45
  toolName,
54
46
  mcpServer: sdkOptions.mcpServer,
55
47
  agentId: sdkOptions.agentID
56
- }), input);
48
+ }), input) ?? {
49
+ behavior: "allow",
50
+ updatedInput: input
51
+ };
57
52
  const permissionRequestHook = async (input) => {
58
53
  if (input.hook_event_name !== "PermissionRequest" || typeof input.tool_name !== "string") return {};
54
+ const decision = await decide(compact({
55
+ toolName: input.tool_name,
56
+ mcpServer: input.mcp_server,
57
+ sessionId: input.session_id,
58
+ agentId: input.agent_id
59
+ }), input.tool_input);
60
+ if (decision === null) return {};
59
61
  return { hookSpecificOutput: {
60
62
  hookEventName: "PermissionRequest",
61
- decision: await decide(compact({
62
- toolName: input.tool_name,
63
- mcpServer: input.mcp_server,
64
- sessionId: input.session_id,
65
- agentId: input.agent_id
66
- }), input.tool_input)
63
+ decision
67
64
  } };
68
65
  };
69
- return {
66
+ return Object.freeze({
67
+ ...agent,
70
68
  canUseTool,
71
- permissionRequestHook,
72
- permdock: (context) => kernel.instance(context)
73
- };
69
+ permissionRequestHook
70
+ });
74
71
  }
75
72
  //#endregion
76
73
  export { createPermDock };