@vellumai/credential-executor 0.4.55 → 0.4.56

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 (762) hide show
  1. package/Dockerfile +6 -2
  2. package/node_modules/@vellumai/ces-contracts/bun.lock +29 -0
  3. package/node_modules/@vellumai/ces-contracts/package.json +24 -0
  4. package/node_modules/@vellumai/ces-contracts/src/__tests__/contracts.test.ts +293 -0
  5. package/node_modules/@vellumai/ces-contracts/src/__tests__/grants.test.ts +686 -0
  6. package/node_modules/@vellumai/ces-contracts/src/error.ts +25 -0
  7. package/node_modules/@vellumai/ces-contracts/src/grants.ts +184 -0
  8. package/node_modules/@vellumai/ces-contracts/src/handles.ts +213 -0
  9. package/node_modules/@vellumai/ces-contracts/src/index.ts +147 -0
  10. package/node_modules/@vellumai/ces-contracts/src/rendering.ts +135 -0
  11. package/node_modules/@vellumai/ces-contracts/src/rpc.ts +511 -0
  12. package/node_modules/@vellumai/ces-contracts/tsconfig.json +20 -0
  13. package/node_modules/@vellumai/credential-storage/bun.lock +24 -0
  14. package/node_modules/@vellumai/credential-storage/package.json +17 -0
  15. package/node_modules/@vellumai/credential-storage/src/__tests__/package-boundary.test.ts +151 -0
  16. package/node_modules/@vellumai/credential-storage/src/index.ts +213 -0
  17. package/node_modules/@vellumai/credential-storage/src/oauth-runtime.ts +340 -0
  18. package/node_modules/@vellumai/credential-storage/src/static-credentials.ts +365 -0
  19. package/node_modules/@vellumai/credential-storage/tsconfig.json +20 -0
  20. package/node_modules/@vellumai/egress-proxy/bun.lock +24 -0
  21. package/node_modules/@vellumai/egress-proxy/package.json +17 -0
  22. package/node_modules/@vellumai/egress-proxy/src/__tests__/package-boundary.test.ts +131 -0
  23. package/node_modules/@vellumai/egress-proxy/src/index.ts +54 -0
  24. package/node_modules/@vellumai/egress-proxy/src/session-core.ts +466 -0
  25. package/node_modules/@vellumai/egress-proxy/src/types.ts +227 -0
  26. package/node_modules/@vellumai/egress-proxy/tsconfig.json +20 -0
  27. package/node_modules/zod/LICENSE +21 -0
  28. package/node_modules/zod/README.md +208 -0
  29. package/node_modules/zod/index.cjs +33 -0
  30. package/node_modules/zod/index.d.cts +4 -0
  31. package/node_modules/zod/index.d.ts +4 -0
  32. package/node_modules/zod/index.js +4 -0
  33. package/node_modules/zod/locales/index.cjs +17 -0
  34. package/node_modules/zod/locales/index.d.cts +1 -0
  35. package/node_modules/zod/locales/index.d.ts +1 -0
  36. package/node_modules/zod/locales/index.js +1 -0
  37. package/node_modules/zod/locales/package.json +6 -0
  38. package/node_modules/zod/mini/index.cjs +32 -0
  39. package/node_modules/zod/mini/index.d.cts +3 -0
  40. package/node_modules/zod/mini/index.d.ts +3 -0
  41. package/node_modules/zod/mini/index.js +3 -0
  42. package/node_modules/zod/mini/package.json +6 -0
  43. package/node_modules/zod/package.json +135 -0
  44. package/node_modules/zod/src/index.ts +4 -0
  45. package/node_modules/zod/src/locales/index.ts +1 -0
  46. package/node_modules/zod/src/mini/index.ts +3 -0
  47. package/node_modules/zod/src/v3/ZodError.ts +330 -0
  48. package/node_modules/zod/src/v3/benchmarks/datetime.ts +58 -0
  49. package/node_modules/zod/src/v3/benchmarks/discriminatedUnion.ts +80 -0
  50. package/node_modules/zod/src/v3/benchmarks/index.ts +59 -0
  51. package/node_modules/zod/src/v3/benchmarks/ipv4.ts +57 -0
  52. package/node_modules/zod/src/v3/benchmarks/object.ts +69 -0
  53. package/node_modules/zod/src/v3/benchmarks/primitives.ts +162 -0
  54. package/node_modules/zod/src/v3/benchmarks/realworld.ts +63 -0
  55. package/node_modules/zod/src/v3/benchmarks/string.ts +55 -0
  56. package/node_modules/zod/src/v3/benchmarks/union.ts +80 -0
  57. package/node_modules/zod/src/v3/errors.ts +13 -0
  58. package/node_modules/zod/src/v3/external.ts +6 -0
  59. package/node_modules/zod/src/v3/helpers/enumUtil.ts +17 -0
  60. package/node_modules/zod/src/v3/helpers/errorUtil.ts +8 -0
  61. package/node_modules/zod/src/v3/helpers/parseUtil.ts +176 -0
  62. package/node_modules/zod/src/v3/helpers/partialUtil.ts +34 -0
  63. package/node_modules/zod/src/v3/helpers/typeAliases.ts +2 -0
  64. package/node_modules/zod/src/v3/helpers/util.ts +224 -0
  65. package/node_modules/zod/src/v3/index.ts +4 -0
  66. package/node_modules/zod/src/v3/locales/en.ts +124 -0
  67. package/node_modules/zod/src/v3/standard-schema.ts +113 -0
  68. package/node_modules/zod/src/v3/tests/Mocker.ts +54 -0
  69. package/node_modules/zod/src/v3/tests/all-errors.test.ts +157 -0
  70. package/node_modules/zod/src/v3/tests/anyunknown.test.ts +28 -0
  71. package/node_modules/zod/src/v3/tests/array.test.ts +71 -0
  72. package/node_modules/zod/src/v3/tests/async-parsing.test.ts +388 -0
  73. package/node_modules/zod/src/v3/tests/async-refinements.test.ts +46 -0
  74. package/node_modules/zod/src/v3/tests/base.test.ts +29 -0
  75. package/node_modules/zod/src/v3/tests/bigint.test.ts +55 -0
  76. package/node_modules/zod/src/v3/tests/branded.test.ts +53 -0
  77. package/node_modules/zod/src/v3/tests/catch.test.ts +220 -0
  78. package/node_modules/zod/src/v3/tests/coerce.test.ts +133 -0
  79. package/node_modules/zod/src/v3/tests/complex.test.ts +70 -0
  80. package/node_modules/zod/src/v3/tests/custom.test.ts +31 -0
  81. package/node_modules/zod/src/v3/tests/date.test.ts +32 -0
  82. package/node_modules/zod/src/v3/tests/deepmasking.test.ts +186 -0
  83. package/node_modules/zod/src/v3/tests/default.test.ts +112 -0
  84. package/node_modules/zod/src/v3/tests/description.test.ts +33 -0
  85. package/node_modules/zod/src/v3/tests/discriminated-unions.test.ts +315 -0
  86. package/node_modules/zod/src/v3/tests/enum.test.ts +80 -0
  87. package/node_modules/zod/src/v3/tests/error.test.ts +551 -0
  88. package/node_modules/zod/src/v3/tests/firstparty.test.ts +87 -0
  89. package/node_modules/zod/src/v3/tests/firstpartyschematypes.test.ts +21 -0
  90. package/node_modules/zod/src/v3/tests/function.test.ts +261 -0
  91. package/node_modules/zod/src/v3/tests/generics.test.ts +48 -0
  92. package/node_modules/zod/src/v3/tests/instanceof.test.ts +37 -0
  93. package/node_modules/zod/src/v3/tests/intersection.test.ts +110 -0
  94. package/node_modules/zod/src/v3/tests/language-server.source.ts +76 -0
  95. package/node_modules/zod/src/v3/tests/language-server.test.ts +207 -0
  96. package/node_modules/zod/src/v3/tests/literal.test.ts +36 -0
  97. package/node_modules/zod/src/v3/tests/map.test.ts +110 -0
  98. package/node_modules/zod/src/v3/tests/masking.test.ts +4 -0
  99. package/node_modules/zod/src/v3/tests/mocker.test.ts +19 -0
  100. package/node_modules/zod/src/v3/tests/nan.test.ts +24 -0
  101. package/node_modules/zod/src/v3/tests/nativeEnum.test.ts +87 -0
  102. package/node_modules/zod/src/v3/tests/nullable.test.ts +42 -0
  103. package/node_modules/zod/src/v3/tests/number.test.ts +176 -0
  104. package/node_modules/zod/src/v3/tests/object-augmentation.test.ts +29 -0
  105. package/node_modules/zod/src/v3/tests/object-in-es5-env.test.ts +29 -0
  106. package/node_modules/zod/src/v3/tests/object.test.ts +434 -0
  107. package/node_modules/zod/src/v3/tests/optional.test.ts +42 -0
  108. package/node_modules/zod/src/v3/tests/parseUtil.test.ts +23 -0
  109. package/node_modules/zod/src/v3/tests/parser.test.ts +41 -0
  110. package/node_modules/zod/src/v3/tests/partials.test.ts +243 -0
  111. package/node_modules/zod/src/v3/tests/pickomit.test.ts +111 -0
  112. package/node_modules/zod/src/v3/tests/pipeline.test.ts +29 -0
  113. package/node_modules/zod/src/v3/tests/preprocess.test.ts +186 -0
  114. package/node_modules/zod/src/v3/tests/primitive.test.ts +440 -0
  115. package/node_modules/zod/src/v3/tests/promise.test.ts +90 -0
  116. package/node_modules/zod/src/v3/tests/readonly.test.ts +194 -0
  117. package/node_modules/zod/src/v3/tests/record.test.ts +171 -0
  118. package/node_modules/zod/src/v3/tests/recursive.test.ts +197 -0
  119. package/node_modules/zod/src/v3/tests/refine.test.ts +313 -0
  120. package/node_modules/zod/src/v3/tests/safeparse.test.ts +27 -0
  121. package/node_modules/zod/src/v3/tests/set.test.ts +142 -0
  122. package/node_modules/zod/src/v3/tests/standard-schema.test.ts +83 -0
  123. package/node_modules/zod/src/v3/tests/string.test.ts +916 -0
  124. package/node_modules/zod/src/v3/tests/transformer.test.ts +233 -0
  125. package/node_modules/zod/src/v3/tests/tuple.test.ts +90 -0
  126. package/node_modules/zod/src/v3/tests/unions.test.ts +57 -0
  127. package/node_modules/zod/src/v3/tests/validations.test.ts +133 -0
  128. package/node_modules/zod/src/v3/tests/void.test.ts +15 -0
  129. package/node_modules/zod/src/v3/types.ts +5138 -0
  130. package/node_modules/zod/src/v4/classic/checks.ts +32 -0
  131. package/node_modules/zod/src/v4/classic/coerce.ts +27 -0
  132. package/node_modules/zod/src/v4/classic/compat.ts +70 -0
  133. package/node_modules/zod/src/v4/classic/errors.ts +82 -0
  134. package/node_modules/zod/src/v4/classic/external.ts +51 -0
  135. package/node_modules/zod/src/v4/classic/from-json-schema.ts +643 -0
  136. package/node_modules/zod/src/v4/classic/index.ts +5 -0
  137. package/node_modules/zod/src/v4/classic/iso.ts +90 -0
  138. package/node_modules/zod/src/v4/classic/parse.ts +82 -0
  139. package/node_modules/zod/src/v4/classic/schemas.ts +2409 -0
  140. package/node_modules/zod/src/v4/classic/tests/anyunknown.test.ts +26 -0
  141. package/node_modules/zod/src/v4/classic/tests/apply.test.ts +59 -0
  142. package/node_modules/zod/src/v4/classic/tests/array.test.ts +264 -0
  143. package/node_modules/zod/src/v4/classic/tests/assignability.test.ts +210 -0
  144. package/node_modules/zod/src/v4/classic/tests/async-parsing.test.ts +381 -0
  145. package/node_modules/zod/src/v4/classic/tests/async-refinements.test.ts +68 -0
  146. package/node_modules/zod/src/v4/classic/tests/base.test.ts +7 -0
  147. package/node_modules/zod/src/v4/classic/tests/bigint.test.ts +54 -0
  148. package/node_modules/zod/src/v4/classic/tests/brand.test.ts +106 -0
  149. package/node_modules/zod/src/v4/classic/tests/catch.test.ts +276 -0
  150. package/node_modules/zod/src/v4/classic/tests/coalesce.test.ts +20 -0
  151. package/node_modules/zod/src/v4/classic/tests/codec-examples.test.ts +573 -0
  152. package/node_modules/zod/src/v4/classic/tests/codec.test.ts +562 -0
  153. package/node_modules/zod/src/v4/classic/tests/coerce.test.ts +160 -0
  154. package/node_modules/zod/src/v4/classic/tests/continuability.test.ts +374 -0
  155. package/node_modules/zod/src/v4/classic/tests/custom.test.ts +40 -0
  156. package/node_modules/zod/src/v4/classic/tests/date.test.ts +62 -0
  157. package/node_modules/zod/src/v4/classic/tests/datetime.test.ts +302 -0
  158. package/node_modules/zod/src/v4/classic/tests/default.test.ts +365 -0
  159. package/node_modules/zod/src/v4/classic/tests/describe-meta-checks.test.ts +27 -0
  160. package/node_modules/zod/src/v4/classic/tests/description.test.ts +32 -0
  161. package/node_modules/zod/src/v4/classic/tests/discriminated-unions.test.ts +661 -0
  162. package/node_modules/zod/src/v4/classic/tests/enum.test.ts +285 -0
  163. package/node_modules/zod/src/v4/classic/tests/error-utils.test.ts +595 -0
  164. package/node_modules/zod/src/v4/classic/tests/error.test.ts +711 -0
  165. package/node_modules/zod/src/v4/classic/tests/file.test.ts +96 -0
  166. package/node_modules/zod/src/v4/classic/tests/firstparty.test.ts +179 -0
  167. package/node_modules/zod/src/v4/classic/tests/fix-json-issue.test.ts +26 -0
  168. package/node_modules/zod/src/v4/classic/tests/from-json-schema.test.ts +734 -0
  169. package/node_modules/zod/src/v4/classic/tests/function.test.ts +360 -0
  170. package/node_modules/zod/src/v4/classic/tests/generics.test.ts +72 -0
  171. package/node_modules/zod/src/v4/classic/tests/hash.test.ts +68 -0
  172. package/node_modules/zod/src/v4/classic/tests/index.test.ts +939 -0
  173. package/node_modules/zod/src/v4/classic/tests/instanceof.test.ts +60 -0
  174. package/node_modules/zod/src/v4/classic/tests/intersection.test.ts +198 -0
  175. package/node_modules/zod/src/v4/classic/tests/json.test.ts +109 -0
  176. package/node_modules/zod/src/v4/classic/tests/lazy.test.ts +227 -0
  177. package/node_modules/zod/src/v4/classic/tests/literal.test.ts +117 -0
  178. package/node_modules/zod/src/v4/classic/tests/map.test.ts +330 -0
  179. package/node_modules/zod/src/v4/classic/tests/nan.test.ts +21 -0
  180. package/node_modules/zod/src/v4/classic/tests/nested-refine.test.ts +168 -0
  181. package/node_modules/zod/src/v4/classic/tests/nonoptional.test.ts +101 -0
  182. package/node_modules/zod/src/v4/classic/tests/nullable.test.ts +22 -0
  183. package/node_modules/zod/src/v4/classic/tests/number.test.ts +270 -0
  184. package/node_modules/zod/src/v4/classic/tests/object.test.ts +640 -0
  185. package/node_modules/zod/src/v4/classic/tests/optional.test.ts +223 -0
  186. package/node_modules/zod/src/v4/classic/tests/partial.test.ts +427 -0
  187. package/node_modules/zod/src/v4/classic/tests/pickomit.test.ts +211 -0
  188. package/node_modules/zod/src/v4/classic/tests/pipe.test.ts +101 -0
  189. package/node_modules/zod/src/v4/classic/tests/prefault.test.ts +74 -0
  190. package/node_modules/zod/src/v4/classic/tests/preprocess.test.ts +282 -0
  191. package/node_modules/zod/src/v4/classic/tests/primitive.test.ts +175 -0
  192. package/node_modules/zod/src/v4/classic/tests/promise.test.ts +81 -0
  193. package/node_modules/zod/src/v4/classic/tests/prototypes.test.ts +23 -0
  194. package/node_modules/zod/src/v4/classic/tests/readonly.test.ts +252 -0
  195. package/node_modules/zod/src/v4/classic/tests/record.test.ts +632 -0
  196. package/node_modules/zod/src/v4/classic/tests/recursive-types.test.ts +582 -0
  197. package/node_modules/zod/src/v4/classic/tests/refine.test.ts +570 -0
  198. package/node_modules/zod/src/v4/classic/tests/registries.test.ts +243 -0
  199. package/node_modules/zod/src/v4/classic/tests/set.test.ts +181 -0
  200. package/node_modules/zod/src/v4/classic/tests/standard-schema.test.ts +134 -0
  201. package/node_modules/zod/src/v4/classic/tests/string-formats.test.ts +125 -0
  202. package/node_modules/zod/src/v4/classic/tests/string.test.ts +1175 -0
  203. package/node_modules/zod/src/v4/classic/tests/stringbool.test.ts +106 -0
  204. package/node_modules/zod/src/v4/classic/tests/template-literal.test.ts +771 -0
  205. package/node_modules/zod/src/v4/classic/tests/to-json-schema-methods.test.ts +438 -0
  206. package/node_modules/zod/src/v4/classic/tests/to-json-schema.test.ts +2990 -0
  207. package/node_modules/zod/src/v4/classic/tests/transform.test.ts +361 -0
  208. package/node_modules/zod/src/v4/classic/tests/tuple.test.ts +183 -0
  209. package/node_modules/zod/src/v4/classic/tests/union.test.ts +219 -0
  210. package/node_modules/zod/src/v4/classic/tests/url.test.ts +13 -0
  211. package/node_modules/zod/src/v4/classic/tests/validations.test.ts +283 -0
  212. package/node_modules/zod/src/v4/classic/tests/void.test.ts +12 -0
  213. package/node_modules/zod/src/v4/core/api.ts +1798 -0
  214. package/node_modules/zod/src/v4/core/checks.ts +1293 -0
  215. package/node_modules/zod/src/v4/core/config.ts +15 -0
  216. package/node_modules/zod/src/v4/core/core.ts +138 -0
  217. package/node_modules/zod/src/v4/core/doc.ts +44 -0
  218. package/node_modules/zod/src/v4/core/errors.ts +448 -0
  219. package/node_modules/zod/src/v4/core/index.ts +16 -0
  220. package/node_modules/zod/src/v4/core/json-schema-generator.ts +126 -0
  221. package/node_modules/zod/src/v4/core/json-schema-processors.ts +667 -0
  222. package/node_modules/zod/src/v4/core/json-schema.ts +147 -0
  223. package/node_modules/zod/src/v4/core/parse.ts +195 -0
  224. package/node_modules/zod/src/v4/core/regexes.ts +183 -0
  225. package/node_modules/zod/src/v4/core/registries.ts +105 -0
  226. package/node_modules/zod/src/v4/core/schemas.ts +4538 -0
  227. package/node_modules/zod/src/v4/core/standard-schema.ts +159 -0
  228. package/node_modules/zod/src/v4/core/tests/extend.test.ts +59 -0
  229. package/node_modules/zod/src/v4/core/tests/index.test.ts +46 -0
  230. package/node_modules/zod/src/v4/core/tests/locales/be.test.ts +124 -0
  231. package/node_modules/zod/src/v4/core/tests/locales/en.test.ts +22 -0
  232. package/node_modules/zod/src/v4/core/tests/locales/es.test.ts +181 -0
  233. package/node_modules/zod/src/v4/core/tests/locales/he.test.ts +379 -0
  234. package/node_modules/zod/src/v4/core/tests/locales/nl.test.ts +46 -0
  235. package/node_modules/zod/src/v4/core/tests/locales/ru.test.ts +128 -0
  236. package/node_modules/zod/src/v4/core/tests/locales/tr.test.ts +69 -0
  237. package/node_modules/zod/src/v4/core/tests/locales/uz.test.ts +83 -0
  238. package/node_modules/zod/src/v4/core/tests/record-constructor.test.ts +67 -0
  239. package/node_modules/zod/src/v4/core/tests/recursive-tuples.test.ts +45 -0
  240. package/node_modules/zod/src/v4/core/to-json-schema.ts +613 -0
  241. package/node_modules/zod/src/v4/core/util.ts +966 -0
  242. package/node_modules/zod/src/v4/core/versions.ts +5 -0
  243. package/node_modules/zod/src/v4/core/zsf.ts +323 -0
  244. package/node_modules/zod/src/v4/index.ts +4 -0
  245. package/node_modules/zod/src/v4/locales/ar.ts +115 -0
  246. package/node_modules/zod/src/v4/locales/az.ts +111 -0
  247. package/node_modules/zod/src/v4/locales/be.ts +176 -0
  248. package/node_modules/zod/src/v4/locales/bg.ts +128 -0
  249. package/node_modules/zod/src/v4/locales/ca.ts +116 -0
  250. package/node_modules/zod/src/v4/locales/cs.ts +118 -0
  251. package/node_modules/zod/src/v4/locales/da.ts +123 -0
  252. package/node_modules/zod/src/v4/locales/de.ts +116 -0
  253. package/node_modules/zod/src/v4/locales/en.ts +119 -0
  254. package/node_modules/zod/src/v4/locales/eo.ts +118 -0
  255. package/node_modules/zod/src/v4/locales/es.ts +141 -0
  256. package/node_modules/zod/src/v4/locales/fa.ts +126 -0
  257. package/node_modules/zod/src/v4/locales/fi.ts +121 -0
  258. package/node_modules/zod/src/v4/locales/fr-CA.ts +116 -0
  259. package/node_modules/zod/src/v4/locales/fr.ts +116 -0
  260. package/node_modules/zod/src/v4/locales/he.ts +246 -0
  261. package/node_modules/zod/src/v4/locales/hu.ts +117 -0
  262. package/node_modules/zod/src/v4/locales/hy.ts +164 -0
  263. package/node_modules/zod/src/v4/locales/id.ts +115 -0
  264. package/node_modules/zod/src/v4/locales/index.ts +49 -0
  265. package/node_modules/zod/src/v4/locales/is.ts +119 -0
  266. package/node_modules/zod/src/v4/locales/it.ts +116 -0
  267. package/node_modules/zod/src/v4/locales/ja.ts +114 -0
  268. package/node_modules/zod/src/v4/locales/ka.ts +123 -0
  269. package/node_modules/zod/src/v4/locales/kh.ts +7 -0
  270. package/node_modules/zod/src/v4/locales/km.ts +119 -0
  271. package/node_modules/zod/src/v4/locales/ko.ts +121 -0
  272. package/node_modules/zod/src/v4/locales/lt.ts +239 -0
  273. package/node_modules/zod/src/v4/locales/mk.ts +118 -0
  274. package/node_modules/zod/src/v4/locales/ms.ts +115 -0
  275. package/node_modules/zod/src/v4/locales/nl.ts +121 -0
  276. package/node_modules/zod/src/v4/locales/no.ts +116 -0
  277. package/node_modules/zod/src/v4/locales/ota.ts +117 -0
  278. package/node_modules/zod/src/v4/locales/pl.ts +118 -0
  279. package/node_modules/zod/src/v4/locales/ps.ts +126 -0
  280. package/node_modules/zod/src/v4/locales/pt.ts +116 -0
  281. package/node_modules/zod/src/v4/locales/ru.ts +176 -0
  282. package/node_modules/zod/src/v4/locales/sl.ts +118 -0
  283. package/node_modules/zod/src/v4/locales/sv.ts +119 -0
  284. package/node_modules/zod/src/v4/locales/ta.ts +118 -0
  285. package/node_modules/zod/src/v4/locales/th.ts +119 -0
  286. package/node_modules/zod/src/v4/locales/tr.ts +111 -0
  287. package/node_modules/zod/src/v4/locales/ua.ts +7 -0
  288. package/node_modules/zod/src/v4/locales/uk.ts +117 -0
  289. package/node_modules/zod/src/v4/locales/ur.ts +119 -0
  290. package/node_modules/zod/src/v4/locales/uz.ts +116 -0
  291. package/node_modules/zod/src/v4/locales/vi.ts +117 -0
  292. package/node_modules/zod/src/v4/locales/yo.ts +124 -0
  293. package/node_modules/zod/src/v4/locales/zh-CN.ts +116 -0
  294. package/node_modules/zod/src/v4/locales/zh-TW.ts +115 -0
  295. package/node_modules/zod/src/v4/mini/checks.ts +32 -0
  296. package/node_modules/zod/src/v4/mini/coerce.ts +27 -0
  297. package/node_modules/zod/src/v4/mini/external.ts +40 -0
  298. package/node_modules/zod/src/v4/mini/index.ts +3 -0
  299. package/node_modules/zod/src/v4/mini/iso.ts +66 -0
  300. package/node_modules/zod/src/v4/mini/parse.ts +14 -0
  301. package/node_modules/zod/src/v4/mini/schemas.ts +1916 -0
  302. package/node_modules/zod/src/v4/mini/tests/apply.test.ts +24 -0
  303. package/node_modules/zod/src/v4/mini/tests/assignability.test.ts +129 -0
  304. package/node_modules/zod/src/v4/mini/tests/brand.test.ts +94 -0
  305. package/node_modules/zod/src/v4/mini/tests/checks.test.ts +144 -0
  306. package/node_modules/zod/src/v4/mini/tests/codec.test.ts +529 -0
  307. package/node_modules/zod/src/v4/mini/tests/computed.test.ts +36 -0
  308. package/node_modules/zod/src/v4/mini/tests/error.test.ts +22 -0
  309. package/node_modules/zod/src/v4/mini/tests/functions.test.ts +5 -0
  310. package/node_modules/zod/src/v4/mini/tests/index.test.ts +963 -0
  311. package/node_modules/zod/src/v4/mini/tests/number.test.ts +95 -0
  312. package/node_modules/zod/src/v4/mini/tests/object.test.ts +227 -0
  313. package/node_modules/zod/src/v4/mini/tests/prototypes.test.ts +43 -0
  314. package/node_modules/zod/src/v4/mini/tests/recursive-types.test.ts +275 -0
  315. package/node_modules/zod/src/v4/mini/tests/standard-schema.test.ts +50 -0
  316. package/node_modules/zod/src/v4/mini/tests/string.test.ts +347 -0
  317. package/node_modules/zod/src/v4-mini/index.ts +3 -0
  318. package/node_modules/zod/v3/ZodError.cjs +138 -0
  319. package/node_modules/zod/v3/ZodError.d.cts +164 -0
  320. package/node_modules/zod/v3/ZodError.d.ts +164 -0
  321. package/node_modules/zod/v3/ZodError.js +133 -0
  322. package/node_modules/zod/v3/errors.cjs +17 -0
  323. package/node_modules/zod/v3/errors.d.cts +5 -0
  324. package/node_modules/zod/v3/errors.d.ts +5 -0
  325. package/node_modules/zod/v3/errors.js +9 -0
  326. package/node_modules/zod/v3/external.cjs +22 -0
  327. package/node_modules/zod/v3/external.d.cts +6 -0
  328. package/node_modules/zod/v3/external.d.ts +6 -0
  329. package/node_modules/zod/v3/external.js +6 -0
  330. package/node_modules/zod/v3/helpers/enumUtil.cjs +2 -0
  331. package/node_modules/zod/v3/helpers/enumUtil.d.cts +8 -0
  332. package/node_modules/zod/v3/helpers/enumUtil.d.ts +8 -0
  333. package/node_modules/zod/v3/helpers/enumUtil.js +1 -0
  334. package/node_modules/zod/v3/helpers/errorUtil.cjs +9 -0
  335. package/node_modules/zod/v3/helpers/errorUtil.d.cts +9 -0
  336. package/node_modules/zod/v3/helpers/errorUtil.d.ts +9 -0
  337. package/node_modules/zod/v3/helpers/errorUtil.js +6 -0
  338. package/node_modules/zod/v3/helpers/parseUtil.cjs +124 -0
  339. package/node_modules/zod/v3/helpers/parseUtil.d.cts +78 -0
  340. package/node_modules/zod/v3/helpers/parseUtil.d.ts +78 -0
  341. package/node_modules/zod/v3/helpers/parseUtil.js +109 -0
  342. package/node_modules/zod/v3/helpers/partialUtil.cjs +2 -0
  343. package/node_modules/zod/v3/helpers/partialUtil.d.cts +8 -0
  344. package/node_modules/zod/v3/helpers/partialUtil.d.ts +8 -0
  345. package/node_modules/zod/v3/helpers/partialUtil.js +1 -0
  346. package/node_modules/zod/v3/helpers/typeAliases.cjs +2 -0
  347. package/node_modules/zod/v3/helpers/typeAliases.d.cts +2 -0
  348. package/node_modules/zod/v3/helpers/typeAliases.d.ts +2 -0
  349. package/node_modules/zod/v3/helpers/typeAliases.js +1 -0
  350. package/node_modules/zod/v3/helpers/util.cjs +137 -0
  351. package/node_modules/zod/v3/helpers/util.d.cts +85 -0
  352. package/node_modules/zod/v3/helpers/util.d.ts +85 -0
  353. package/node_modules/zod/v3/helpers/util.js +133 -0
  354. package/node_modules/zod/v3/index.cjs +33 -0
  355. package/node_modules/zod/v3/index.d.cts +4 -0
  356. package/node_modules/zod/v3/index.d.ts +4 -0
  357. package/node_modules/zod/v3/index.js +4 -0
  358. package/node_modules/zod/v3/locales/en.cjs +112 -0
  359. package/node_modules/zod/v3/locales/en.d.cts +3 -0
  360. package/node_modules/zod/v3/locales/en.d.ts +3 -0
  361. package/node_modules/zod/v3/locales/en.js +109 -0
  362. package/node_modules/zod/v3/package.json +6 -0
  363. package/node_modules/zod/v3/standard-schema.cjs +2 -0
  364. package/node_modules/zod/v3/standard-schema.d.cts +102 -0
  365. package/node_modules/zod/v3/standard-schema.d.ts +102 -0
  366. package/node_modules/zod/v3/standard-schema.js +1 -0
  367. package/node_modules/zod/v3/types.cjs +3777 -0
  368. package/node_modules/zod/v3/types.d.cts +1034 -0
  369. package/node_modules/zod/v3/types.d.ts +1034 -0
  370. package/node_modules/zod/v3/types.js +3695 -0
  371. package/node_modules/zod/v4/classic/checks.cjs +33 -0
  372. package/node_modules/zod/v4/classic/checks.d.cts +1 -0
  373. package/node_modules/zod/v4/classic/checks.d.ts +1 -0
  374. package/node_modules/zod/v4/classic/checks.js +1 -0
  375. package/node_modules/zod/v4/classic/coerce.cjs +47 -0
  376. package/node_modules/zod/v4/classic/coerce.d.cts +17 -0
  377. package/node_modules/zod/v4/classic/coerce.d.ts +17 -0
  378. package/node_modules/zod/v4/classic/coerce.js +17 -0
  379. package/node_modules/zod/v4/classic/compat.cjs +61 -0
  380. package/node_modules/zod/v4/classic/compat.d.cts +50 -0
  381. package/node_modules/zod/v4/classic/compat.d.ts +50 -0
  382. package/node_modules/zod/v4/classic/compat.js +31 -0
  383. package/node_modules/zod/v4/classic/errors.cjs +74 -0
  384. package/node_modules/zod/v4/classic/errors.d.cts +30 -0
  385. package/node_modules/zod/v4/classic/errors.d.ts +30 -0
  386. package/node_modules/zod/v4/classic/errors.js +48 -0
  387. package/node_modules/zod/v4/classic/external.cjs +73 -0
  388. package/node_modules/zod/v4/classic/external.d.cts +15 -0
  389. package/node_modules/zod/v4/classic/external.d.ts +15 -0
  390. package/node_modules/zod/v4/classic/external.js +20 -0
  391. package/node_modules/zod/v4/classic/from-json-schema.cjs +610 -0
  392. package/node_modules/zod/v4/classic/from-json-schema.d.cts +12 -0
  393. package/node_modules/zod/v4/classic/from-json-schema.d.ts +12 -0
  394. package/node_modules/zod/v4/classic/from-json-schema.js +584 -0
  395. package/node_modules/zod/v4/classic/index.cjs +33 -0
  396. package/node_modules/zod/v4/classic/index.d.cts +4 -0
  397. package/node_modules/zod/v4/classic/index.d.ts +4 -0
  398. package/node_modules/zod/v4/classic/index.js +4 -0
  399. package/node_modules/zod/v4/classic/iso.cjs +60 -0
  400. package/node_modules/zod/v4/classic/iso.d.cts +22 -0
  401. package/node_modules/zod/v4/classic/iso.d.ts +22 -0
  402. package/node_modules/zod/v4/classic/iso.js +30 -0
  403. package/node_modules/zod/v4/classic/package.json +6 -0
  404. package/node_modules/zod/v4/classic/parse.cjs +41 -0
  405. package/node_modules/zod/v4/classic/parse.d.cts +31 -0
  406. package/node_modules/zod/v4/classic/parse.d.ts +31 -0
  407. package/node_modules/zod/v4/classic/parse.js +15 -0
  408. package/node_modules/zod/v4/classic/schemas.cjs +1272 -0
  409. package/node_modules/zod/v4/classic/schemas.d.cts +739 -0
  410. package/node_modules/zod/v4/classic/schemas.d.ts +739 -0
  411. package/node_modules/zod/v4/classic/schemas.js +1157 -0
  412. package/node_modules/zod/v4/core/api.cjs +1222 -0
  413. package/node_modules/zod/v4/core/api.d.cts +304 -0
  414. package/node_modules/zod/v4/core/api.d.ts +304 -0
  415. package/node_modules/zod/v4/core/api.js +1082 -0
  416. package/node_modules/zod/v4/core/checks.cjs +601 -0
  417. package/node_modules/zod/v4/core/checks.d.cts +278 -0
  418. package/node_modules/zod/v4/core/checks.d.ts +278 -0
  419. package/node_modules/zod/v4/core/checks.js +575 -0
  420. package/node_modules/zod/v4/core/core.cjs +83 -0
  421. package/node_modules/zod/v4/core/core.d.cts +70 -0
  422. package/node_modules/zod/v4/core/core.d.ts +70 -0
  423. package/node_modules/zod/v4/core/core.js +76 -0
  424. package/node_modules/zod/v4/core/doc.cjs +39 -0
  425. package/node_modules/zod/v4/core/doc.d.cts +14 -0
  426. package/node_modules/zod/v4/core/doc.d.ts +14 -0
  427. package/node_modules/zod/v4/core/doc.js +35 -0
  428. package/node_modules/zod/v4/core/errors.cjs +213 -0
  429. package/node_modules/zod/v4/core/errors.d.cts +220 -0
  430. package/node_modules/zod/v4/core/errors.d.ts +220 -0
  431. package/node_modules/zod/v4/core/errors.js +182 -0
  432. package/node_modules/zod/v4/core/index.cjs +47 -0
  433. package/node_modules/zod/v4/core/index.d.cts +16 -0
  434. package/node_modules/zod/v4/core/index.d.ts +16 -0
  435. package/node_modules/zod/v4/core/index.js +16 -0
  436. package/node_modules/zod/v4/core/json-schema-generator.cjs +99 -0
  437. package/node_modules/zod/v4/core/json-schema-generator.d.cts +65 -0
  438. package/node_modules/zod/v4/core/json-schema-generator.d.ts +65 -0
  439. package/node_modules/zod/v4/core/json-schema-generator.js +95 -0
  440. package/node_modules/zod/v4/core/json-schema-processors.cjs +648 -0
  441. package/node_modules/zod/v4/core/json-schema-processors.d.cts +49 -0
  442. package/node_modules/zod/v4/core/json-schema-processors.d.ts +49 -0
  443. package/node_modules/zod/v4/core/json-schema-processors.js +605 -0
  444. package/node_modules/zod/v4/core/json-schema.cjs +2 -0
  445. package/node_modules/zod/v4/core/json-schema.d.cts +88 -0
  446. package/node_modules/zod/v4/core/json-schema.d.ts +88 -0
  447. package/node_modules/zod/v4/core/json-schema.js +1 -0
  448. package/node_modules/zod/v4/core/package.json +6 -0
  449. package/node_modules/zod/v4/core/parse.cjs +131 -0
  450. package/node_modules/zod/v4/core/parse.d.cts +49 -0
  451. package/node_modules/zod/v4/core/parse.d.ts +49 -0
  452. package/node_modules/zod/v4/core/parse.js +93 -0
  453. package/node_modules/zod/v4/core/regexes.cjs +166 -0
  454. package/node_modules/zod/v4/core/regexes.d.cts +79 -0
  455. package/node_modules/zod/v4/core/regexes.d.ts +79 -0
  456. package/node_modules/zod/v4/core/regexes.js +133 -0
  457. package/node_modules/zod/v4/core/registries.cjs +56 -0
  458. package/node_modules/zod/v4/core/registries.d.cts +35 -0
  459. package/node_modules/zod/v4/core/registries.d.ts +35 -0
  460. package/node_modules/zod/v4/core/registries.js +51 -0
  461. package/node_modules/zod/v4/core/schemas.cjs +2124 -0
  462. package/node_modules/zod/v4/core/schemas.d.cts +1146 -0
  463. package/node_modules/zod/v4/core/schemas.d.ts +1146 -0
  464. package/node_modules/zod/v4/core/schemas.js +2093 -0
  465. package/node_modules/zod/v4/core/standard-schema.cjs +2 -0
  466. package/node_modules/zod/v4/core/standard-schema.d.cts +126 -0
  467. package/node_modules/zod/v4/core/standard-schema.d.ts +126 -0
  468. package/node_modules/zod/v4/core/standard-schema.js +1 -0
  469. package/node_modules/zod/v4/core/to-json-schema.cjs +446 -0
  470. package/node_modules/zod/v4/core/to-json-schema.d.cts +114 -0
  471. package/node_modules/zod/v4/core/to-json-schema.d.ts +114 -0
  472. package/node_modules/zod/v4/core/to-json-schema.js +437 -0
  473. package/node_modules/zod/v4/core/util.cjs +710 -0
  474. package/node_modules/zod/v4/core/util.d.cts +199 -0
  475. package/node_modules/zod/v4/core/util.d.ts +199 -0
  476. package/node_modules/zod/v4/core/util.js +651 -0
  477. package/node_modules/zod/v4/core/versions.cjs +8 -0
  478. package/node_modules/zod/v4/core/versions.d.cts +5 -0
  479. package/node_modules/zod/v4/core/versions.d.ts +5 -0
  480. package/node_modules/zod/v4/core/versions.js +5 -0
  481. package/node_modules/zod/v4/index.cjs +22 -0
  482. package/node_modules/zod/v4/index.d.cts +3 -0
  483. package/node_modules/zod/v4/index.d.ts +3 -0
  484. package/node_modules/zod/v4/index.js +3 -0
  485. package/node_modules/zod/v4/locales/ar.cjs +133 -0
  486. package/node_modules/zod/v4/locales/ar.d.cts +5 -0
  487. package/node_modules/zod/v4/locales/ar.d.ts +4 -0
  488. package/node_modules/zod/v4/locales/ar.js +106 -0
  489. package/node_modules/zod/v4/locales/az.cjs +132 -0
  490. package/node_modules/zod/v4/locales/az.d.cts +5 -0
  491. package/node_modules/zod/v4/locales/az.d.ts +4 -0
  492. package/node_modules/zod/v4/locales/az.js +105 -0
  493. package/node_modules/zod/v4/locales/be.cjs +183 -0
  494. package/node_modules/zod/v4/locales/be.d.cts +5 -0
  495. package/node_modules/zod/v4/locales/be.d.ts +4 -0
  496. package/node_modules/zod/v4/locales/be.js +156 -0
  497. package/node_modules/zod/v4/locales/bg.cjs +147 -0
  498. package/node_modules/zod/v4/locales/bg.d.cts +5 -0
  499. package/node_modules/zod/v4/locales/bg.d.ts +4 -0
  500. package/node_modules/zod/v4/locales/bg.js +120 -0
  501. package/node_modules/zod/v4/locales/ca.cjs +134 -0
  502. package/node_modules/zod/v4/locales/ca.d.cts +5 -0
  503. package/node_modules/zod/v4/locales/ca.d.ts +4 -0
  504. package/node_modules/zod/v4/locales/ca.js +107 -0
  505. package/node_modules/zod/v4/locales/cs.cjs +138 -0
  506. package/node_modules/zod/v4/locales/cs.d.cts +5 -0
  507. package/node_modules/zod/v4/locales/cs.d.ts +4 -0
  508. package/node_modules/zod/v4/locales/cs.js +111 -0
  509. package/node_modules/zod/v4/locales/da.cjs +142 -0
  510. package/node_modules/zod/v4/locales/da.d.cts +5 -0
  511. package/node_modules/zod/v4/locales/da.d.ts +4 -0
  512. package/node_modules/zod/v4/locales/da.js +115 -0
  513. package/node_modules/zod/v4/locales/de.cjs +135 -0
  514. package/node_modules/zod/v4/locales/de.d.cts +5 -0
  515. package/node_modules/zod/v4/locales/de.d.ts +4 -0
  516. package/node_modules/zod/v4/locales/de.js +108 -0
  517. package/node_modules/zod/v4/locales/en.cjs +136 -0
  518. package/node_modules/zod/v4/locales/en.d.cts +5 -0
  519. package/node_modules/zod/v4/locales/en.d.ts +4 -0
  520. package/node_modules/zod/v4/locales/en.js +109 -0
  521. package/node_modules/zod/v4/locales/eo.cjs +136 -0
  522. package/node_modules/zod/v4/locales/eo.d.cts +5 -0
  523. package/node_modules/zod/v4/locales/eo.d.ts +4 -0
  524. package/node_modules/zod/v4/locales/eo.js +109 -0
  525. package/node_modules/zod/v4/locales/es.cjs +159 -0
  526. package/node_modules/zod/v4/locales/es.d.cts +5 -0
  527. package/node_modules/zod/v4/locales/es.d.ts +4 -0
  528. package/node_modules/zod/v4/locales/es.js +132 -0
  529. package/node_modules/zod/v4/locales/fa.cjs +141 -0
  530. package/node_modules/zod/v4/locales/fa.d.cts +5 -0
  531. package/node_modules/zod/v4/locales/fa.d.ts +4 -0
  532. package/node_modules/zod/v4/locales/fa.js +114 -0
  533. package/node_modules/zod/v4/locales/fi.cjs +139 -0
  534. package/node_modules/zod/v4/locales/fi.d.cts +5 -0
  535. package/node_modules/zod/v4/locales/fi.d.ts +4 -0
  536. package/node_modules/zod/v4/locales/fi.js +112 -0
  537. package/node_modules/zod/v4/locales/fr-CA.cjs +134 -0
  538. package/node_modules/zod/v4/locales/fr-CA.d.cts +5 -0
  539. package/node_modules/zod/v4/locales/fr-CA.d.ts +4 -0
  540. package/node_modules/zod/v4/locales/fr-CA.js +107 -0
  541. package/node_modules/zod/v4/locales/fr.cjs +135 -0
  542. package/node_modules/zod/v4/locales/fr.d.cts +5 -0
  543. package/node_modules/zod/v4/locales/fr.d.ts +4 -0
  544. package/node_modules/zod/v4/locales/fr.js +108 -0
  545. package/node_modules/zod/v4/locales/he.cjs +241 -0
  546. package/node_modules/zod/v4/locales/he.d.cts +5 -0
  547. package/node_modules/zod/v4/locales/he.d.ts +4 -0
  548. package/node_modules/zod/v4/locales/he.js +214 -0
  549. package/node_modules/zod/v4/locales/hu.cjs +135 -0
  550. package/node_modules/zod/v4/locales/hu.d.cts +5 -0
  551. package/node_modules/zod/v4/locales/hu.d.ts +4 -0
  552. package/node_modules/zod/v4/locales/hu.js +108 -0
  553. package/node_modules/zod/v4/locales/hy.cjs +174 -0
  554. package/node_modules/zod/v4/locales/hy.d.cts +5 -0
  555. package/node_modules/zod/v4/locales/hy.d.ts +4 -0
  556. package/node_modules/zod/v4/locales/hy.js +147 -0
  557. package/node_modules/zod/v4/locales/id.cjs +133 -0
  558. package/node_modules/zod/v4/locales/id.d.cts +5 -0
  559. package/node_modules/zod/v4/locales/id.d.ts +4 -0
  560. package/node_modules/zod/v4/locales/id.js +106 -0
  561. package/node_modules/zod/v4/locales/index.cjs +104 -0
  562. package/node_modules/zod/v4/locales/index.d.cts +49 -0
  563. package/node_modules/zod/v4/locales/index.d.ts +49 -0
  564. package/node_modules/zod/v4/locales/index.js +49 -0
  565. package/node_modules/zod/v4/locales/is.cjs +136 -0
  566. package/node_modules/zod/v4/locales/is.d.cts +5 -0
  567. package/node_modules/zod/v4/locales/is.d.ts +4 -0
  568. package/node_modules/zod/v4/locales/is.js +109 -0
  569. package/node_modules/zod/v4/locales/it.cjs +135 -0
  570. package/node_modules/zod/v4/locales/it.d.cts +5 -0
  571. package/node_modules/zod/v4/locales/it.d.ts +4 -0
  572. package/node_modules/zod/v4/locales/it.js +108 -0
  573. package/node_modules/zod/v4/locales/ja.cjs +134 -0
  574. package/node_modules/zod/v4/locales/ja.d.cts +5 -0
  575. package/node_modules/zod/v4/locales/ja.d.ts +4 -0
  576. package/node_modules/zod/v4/locales/ja.js +107 -0
  577. package/node_modules/zod/v4/locales/ka.cjs +139 -0
  578. package/node_modules/zod/v4/locales/ka.d.cts +5 -0
  579. package/node_modules/zod/v4/locales/ka.d.ts +4 -0
  580. package/node_modules/zod/v4/locales/ka.js +112 -0
  581. package/node_modules/zod/v4/locales/kh.cjs +12 -0
  582. package/node_modules/zod/v4/locales/kh.d.cts +5 -0
  583. package/node_modules/zod/v4/locales/kh.d.ts +5 -0
  584. package/node_modules/zod/v4/locales/kh.js +5 -0
  585. package/node_modules/zod/v4/locales/km.cjs +137 -0
  586. package/node_modules/zod/v4/locales/km.d.cts +5 -0
  587. package/node_modules/zod/v4/locales/km.d.ts +4 -0
  588. package/node_modules/zod/v4/locales/km.js +110 -0
  589. package/node_modules/zod/v4/locales/ko.cjs +138 -0
  590. package/node_modules/zod/v4/locales/ko.d.cts +5 -0
  591. package/node_modules/zod/v4/locales/ko.d.ts +4 -0
  592. package/node_modules/zod/v4/locales/ko.js +111 -0
  593. package/node_modules/zod/v4/locales/lt.cjs +230 -0
  594. package/node_modules/zod/v4/locales/lt.d.cts +5 -0
  595. package/node_modules/zod/v4/locales/lt.d.ts +4 -0
  596. package/node_modules/zod/v4/locales/lt.js +203 -0
  597. package/node_modules/zod/v4/locales/mk.cjs +136 -0
  598. package/node_modules/zod/v4/locales/mk.d.cts +5 -0
  599. package/node_modules/zod/v4/locales/mk.d.ts +4 -0
  600. package/node_modules/zod/v4/locales/mk.js +109 -0
  601. package/node_modules/zod/v4/locales/ms.cjs +134 -0
  602. package/node_modules/zod/v4/locales/ms.d.cts +5 -0
  603. package/node_modules/zod/v4/locales/ms.d.ts +4 -0
  604. package/node_modules/zod/v4/locales/ms.js +107 -0
  605. package/node_modules/zod/v4/locales/nl.cjs +137 -0
  606. package/node_modules/zod/v4/locales/nl.d.cts +5 -0
  607. package/node_modules/zod/v4/locales/nl.d.ts +4 -0
  608. package/node_modules/zod/v4/locales/nl.js +110 -0
  609. package/node_modules/zod/v4/locales/no.cjs +135 -0
  610. package/node_modules/zod/v4/locales/no.d.cts +5 -0
  611. package/node_modules/zod/v4/locales/no.d.ts +4 -0
  612. package/node_modules/zod/v4/locales/no.js +108 -0
  613. package/node_modules/zod/v4/locales/ota.cjs +136 -0
  614. package/node_modules/zod/v4/locales/ota.d.cts +5 -0
  615. package/node_modules/zod/v4/locales/ota.d.ts +4 -0
  616. package/node_modules/zod/v4/locales/ota.js +109 -0
  617. package/node_modules/zod/v4/locales/package.json +6 -0
  618. package/node_modules/zod/v4/locales/pl.cjs +136 -0
  619. package/node_modules/zod/v4/locales/pl.d.cts +5 -0
  620. package/node_modules/zod/v4/locales/pl.d.ts +4 -0
  621. package/node_modules/zod/v4/locales/pl.js +109 -0
  622. package/node_modules/zod/v4/locales/ps.cjs +141 -0
  623. package/node_modules/zod/v4/locales/ps.d.cts +5 -0
  624. package/node_modules/zod/v4/locales/ps.d.ts +4 -0
  625. package/node_modules/zod/v4/locales/ps.js +114 -0
  626. package/node_modules/zod/v4/locales/pt.cjs +135 -0
  627. package/node_modules/zod/v4/locales/pt.d.cts +5 -0
  628. package/node_modules/zod/v4/locales/pt.d.ts +4 -0
  629. package/node_modules/zod/v4/locales/pt.js +108 -0
  630. package/node_modules/zod/v4/locales/ru.cjs +183 -0
  631. package/node_modules/zod/v4/locales/ru.d.cts +5 -0
  632. package/node_modules/zod/v4/locales/ru.d.ts +4 -0
  633. package/node_modules/zod/v4/locales/ru.js +156 -0
  634. package/node_modules/zod/v4/locales/sl.cjs +136 -0
  635. package/node_modules/zod/v4/locales/sl.d.cts +5 -0
  636. package/node_modules/zod/v4/locales/sl.d.ts +4 -0
  637. package/node_modules/zod/v4/locales/sl.js +109 -0
  638. package/node_modules/zod/v4/locales/sv.cjs +137 -0
  639. package/node_modules/zod/v4/locales/sv.d.cts +5 -0
  640. package/node_modules/zod/v4/locales/sv.d.ts +4 -0
  641. package/node_modules/zod/v4/locales/sv.js +110 -0
  642. package/node_modules/zod/v4/locales/ta.cjs +137 -0
  643. package/node_modules/zod/v4/locales/ta.d.cts +5 -0
  644. package/node_modules/zod/v4/locales/ta.d.ts +4 -0
  645. package/node_modules/zod/v4/locales/ta.js +110 -0
  646. package/node_modules/zod/v4/locales/th.cjs +137 -0
  647. package/node_modules/zod/v4/locales/th.d.cts +5 -0
  648. package/node_modules/zod/v4/locales/th.d.ts +4 -0
  649. package/node_modules/zod/v4/locales/th.js +110 -0
  650. package/node_modules/zod/v4/locales/tr.cjs +132 -0
  651. package/node_modules/zod/v4/locales/tr.d.cts +5 -0
  652. package/node_modules/zod/v4/locales/tr.d.ts +4 -0
  653. package/node_modules/zod/v4/locales/tr.js +105 -0
  654. package/node_modules/zod/v4/locales/ua.cjs +12 -0
  655. package/node_modules/zod/v4/locales/ua.d.cts +5 -0
  656. package/node_modules/zod/v4/locales/ua.d.ts +5 -0
  657. package/node_modules/zod/v4/locales/ua.js +5 -0
  658. package/node_modules/zod/v4/locales/uk.cjs +135 -0
  659. package/node_modules/zod/v4/locales/uk.d.cts +5 -0
  660. package/node_modules/zod/v4/locales/uk.d.ts +4 -0
  661. package/node_modules/zod/v4/locales/uk.js +108 -0
  662. package/node_modules/zod/v4/locales/ur.cjs +137 -0
  663. package/node_modules/zod/v4/locales/ur.d.cts +5 -0
  664. package/node_modules/zod/v4/locales/ur.d.ts +4 -0
  665. package/node_modules/zod/v4/locales/ur.js +110 -0
  666. package/node_modules/zod/v4/locales/uz.cjs +136 -0
  667. package/node_modules/zod/v4/locales/uz.d.cts +5 -0
  668. package/node_modules/zod/v4/locales/uz.d.ts +4 -0
  669. package/node_modules/zod/v4/locales/uz.js +109 -0
  670. package/node_modules/zod/v4/locales/vi.cjs +135 -0
  671. package/node_modules/zod/v4/locales/vi.d.cts +5 -0
  672. package/node_modules/zod/v4/locales/vi.d.ts +4 -0
  673. package/node_modules/zod/v4/locales/vi.js +108 -0
  674. package/node_modules/zod/v4/locales/yo.cjs +134 -0
  675. package/node_modules/zod/v4/locales/yo.d.cts +5 -0
  676. package/node_modules/zod/v4/locales/yo.d.ts +4 -0
  677. package/node_modules/zod/v4/locales/yo.js +107 -0
  678. package/node_modules/zod/v4/locales/zh-CN.cjs +136 -0
  679. package/node_modules/zod/v4/locales/zh-CN.d.cts +5 -0
  680. package/node_modules/zod/v4/locales/zh-CN.d.ts +4 -0
  681. package/node_modules/zod/v4/locales/zh-CN.js +109 -0
  682. package/node_modules/zod/v4/locales/zh-TW.cjs +134 -0
  683. package/node_modules/zod/v4/locales/zh-TW.d.cts +5 -0
  684. package/node_modules/zod/v4/locales/zh-TW.d.ts +4 -0
  685. package/node_modules/zod/v4/locales/zh-TW.js +107 -0
  686. package/node_modules/zod/v4/mini/checks.cjs +34 -0
  687. package/node_modules/zod/v4/mini/checks.d.cts +1 -0
  688. package/node_modules/zod/v4/mini/checks.d.ts +1 -0
  689. package/node_modules/zod/v4/mini/checks.js +1 -0
  690. package/node_modules/zod/v4/mini/coerce.cjs +52 -0
  691. package/node_modules/zod/v4/mini/coerce.d.cts +7 -0
  692. package/node_modules/zod/v4/mini/coerce.d.ts +7 -0
  693. package/node_modules/zod/v4/mini/coerce.js +22 -0
  694. package/node_modules/zod/v4/mini/external.cjs +63 -0
  695. package/node_modules/zod/v4/mini/external.d.cts +12 -0
  696. package/node_modules/zod/v4/mini/external.d.ts +12 -0
  697. package/node_modules/zod/v4/mini/external.js +14 -0
  698. package/node_modules/zod/v4/mini/index.cjs +32 -0
  699. package/node_modules/zod/v4/mini/index.d.cts +3 -0
  700. package/node_modules/zod/v4/mini/index.d.ts +3 -0
  701. package/node_modules/zod/v4/mini/index.js +3 -0
  702. package/node_modules/zod/v4/mini/iso.cjs +64 -0
  703. package/node_modules/zod/v4/mini/iso.d.cts +22 -0
  704. package/node_modules/zod/v4/mini/iso.d.ts +22 -0
  705. package/node_modules/zod/v4/mini/iso.js +34 -0
  706. package/node_modules/zod/v4/mini/package.json +6 -0
  707. package/node_modules/zod/v4/mini/parse.cjs +16 -0
  708. package/node_modules/zod/v4/mini/parse.d.cts +1 -0
  709. package/node_modules/zod/v4/mini/parse.d.ts +1 -0
  710. package/node_modules/zod/v4/mini/parse.js +1 -0
  711. package/node_modules/zod/v4/mini/schemas.cjs +1046 -0
  712. package/node_modules/zod/v4/mini/schemas.d.cts +427 -0
  713. package/node_modules/zod/v4/mini/schemas.d.ts +427 -0
  714. package/node_modules/zod/v4/mini/schemas.js +925 -0
  715. package/node_modules/zod/v4/package.json +6 -0
  716. package/node_modules/zod/v4-mini/index.cjs +32 -0
  717. package/node_modules/zod/v4-mini/index.d.cts +3 -0
  718. package/node_modules/zod/v4-mini/index.d.ts +3 -0
  719. package/node_modules/zod/v4-mini/index.js +3 -0
  720. package/node_modules/zod/v4-mini/package.json +6 -0
  721. package/package.json +3 -2
  722. package/src/__tests__/command-executor.test.ts +575 -60
  723. package/src/__tests__/command-validator.test.ts +697 -0
  724. package/src/__tests__/command-workspace.test.ts +30 -0
  725. package/src/__tests__/grant-store.test.ts +151 -33
  726. package/src/__tests__/http-executor.test.ts +106 -16
  727. package/src/__tests__/http-policy.test.ts +121 -22
  728. package/src/__tests__/local-materializers.test.ts +34 -0
  729. package/src/__tests__/managed-integration.test.ts +633 -0
  730. package/src/__tests__/managed-lazy-getters.test.ts +245 -0
  731. package/src/__tests__/managed-materializers.test.ts +107 -38
  732. package/src/__tests__/managed-rejection.test.ts +43 -0
  733. package/src/__tests__/toolstore.test.ts +207 -18
  734. package/src/__tests__/transport.test.ts +26 -6
  735. package/src/commands/auth-adapters.ts +2 -2
  736. package/src/commands/egress-hooks.ts +203 -0
  737. package/src/commands/executor.ts +403 -87
  738. package/src/commands/profiles.ts +4 -0
  739. package/src/commands/validator.ts +267 -3
  740. package/src/commands/workspace.ts +59 -21
  741. package/src/grants/index.ts +1 -1
  742. package/src/grants/persistent-store.ts +79 -17
  743. package/src/grants/rpc-handlers.ts +67 -43
  744. package/src/grants/temporary-store.ts +26 -19
  745. package/src/http/executor.ts +170 -25
  746. package/src/http/path-template.ts +75 -9
  747. package/src/http/policy.ts +9 -27
  748. package/src/index.ts +3 -0
  749. package/src/main.ts +102 -43
  750. package/src/managed-errors.ts +9 -0
  751. package/src/managed-lazy-getters.ts +70 -0
  752. package/src/managed-main.ts +191 -65
  753. package/src/materializers/local-oauth-lookup.ts +97 -0
  754. package/src/materializers/local-secure-key-backend.ts +254 -0
  755. package/src/materializers/local-token-refresh.ts +263 -0
  756. package/src/materializers/local.ts +21 -5
  757. package/src/materializers/managed-platform.ts +50 -25
  758. package/src/paths.ts +28 -10
  759. package/src/server.ts +147 -11
  760. package/src/subjects/managed.ts +33 -12
  761. package/src/subjects/policy.ts +79 -0
  762. package/src/toolstore/publish.ts +236 -7
@@ -937,6 +937,36 @@ describe("validateContainedPath", () => {
937
937
  expect(err).toBeDefined();
938
938
  expect(err).toContain("escapes");
939
939
  });
940
+
941
+ test("accepts multi-level non-existent path under symlinked root", () => {
942
+ // On macOS /tmp is a symlink to /private/tmp. Create a real directory
943
+ // under /tmp so the root resolves through the symlink, then validate a
944
+ // path with multiple non-existent levels (e.g., reports/output.json where
945
+ // reports/ also doesn't exist). This exercises the while-loop in the
946
+ // catch branch iterating more than once before finding an existing ancestor.
947
+ const base = join("/tmp", `ces-test-multilevel-${randomUUID()}`);
948
+ mkdirSync(base, { recursive: true });
949
+ try {
950
+ // Neither "reports/" nor "reports/output.json" exist on disk
951
+ const deepPath = join(base, "reports", "output.json");
952
+ const err = validateContainedPath(deepPath, base, "test");
953
+ expect(err).toBeUndefined();
954
+
955
+ // Verify it also works with even deeper non-existent paths
956
+ const deeperPath = join(base, "a", "b", "c", "file.txt");
957
+ const err2 = validateContainedPath(deeperPath, base, "test");
958
+ expect(err2).toBeUndefined();
959
+
960
+ // Verify escape detection still works with multi-level non-existent paths
961
+ // under a symlinked root — path outside the root should still be rejected
962
+ const outsidePath = join("/tmp", `ces-test-other-${randomUUID()}`, "a", "b", "file.txt");
963
+ const err3 = validateContainedPath(outsidePath, base, "test");
964
+ expect(err3).toBeDefined();
965
+ expect(err3).toContain("escapes");
966
+ } finally {
967
+ rmSync(base, { recursive: true, force: true });
968
+ }
969
+ });
940
970
  });
941
971
 
942
972
  describe("checkSymlinkEscape", () => {
@@ -4,7 +4,7 @@
4
4
  * Covers:
5
5
  * - Persistent store: initialization, duplicate prevention by canonical grant
6
6
  * hash, fail-closed behavior on corrupt/unreadable files.
7
- * - Temporary store: allow_once consumption, allow_10m expiry, allow_thread
7
+ * - Temporary store: allow_once consumption, allow_10m expiry, allow_conversation
8
8
  * scoping by conversation ID, clearConversation cleanup.
9
9
  */
10
10
 
@@ -40,6 +40,9 @@ function makeGrant(overrides?: Partial<PersistentGrant>): PersistentGrant {
40
40
  pattern: overrides?.pattern ?? "npm install",
41
41
  scope: overrides?.scope ?? "/project",
42
42
  createdAt: overrides?.createdAt ?? Date.now(),
43
+ sessionId: overrides?.sessionId ?? "test-session",
44
+ revokedAt: overrides?.revokedAt,
45
+ revokedReason: overrides?.revokedReason,
43
46
  };
44
47
  }
45
48
 
@@ -133,6 +136,121 @@ describe("PersistentGrantStore", () => {
133
136
  });
134
137
  });
135
138
 
139
+ describe("reactivation of revoked grants", () => {
140
+ test("adding a grant with same ID as revoked returns true and reactivates", () => {
141
+ const store = new PersistentGrantStore(tmpDir);
142
+ store.init();
143
+
144
+ const grant = makeGrant({ id: "revoke-reactivate" });
145
+ store.add(grant);
146
+ store.markRevoked("revoke-reactivate", "test revocation");
147
+
148
+ // Revoked grant should not appear in getAll
149
+ expect(store.getAll()).toHaveLength(0);
150
+
151
+ // Re-add with same ID — should reactivate
152
+ const reactivated = store.add(
153
+ makeGrant({ id: "revoke-reactivate", pattern: "bun install" }),
154
+ );
155
+ expect(reactivated).toBe(true);
156
+ });
157
+
158
+ test("reactivated grant appears in getAll()", () => {
159
+ const store = new PersistentGrantStore(tmpDir);
160
+ store.init();
161
+
162
+ store.add(makeGrant({ id: "revoke-visible" }));
163
+ store.markRevoked("revoke-visible");
164
+ store.add(makeGrant({ id: "revoke-visible" }));
165
+
166
+ const all = store.getAll();
167
+ expect(all).toHaveLength(1);
168
+ expect(all[0].id).toBe("revoke-visible");
169
+ expect(all[0].revokedAt).toBeUndefined();
170
+ expect(all[0].revokedReason).toBeUndefined();
171
+ });
172
+
173
+ test("reactivated grant fields are updated from the new grant", () => {
174
+ const store = new PersistentGrantStore(tmpDir);
175
+ store.init();
176
+
177
+ store.add(
178
+ makeGrant({
179
+ id: "revoke-update",
180
+ tool: "host_bash",
181
+ pattern: "npm install",
182
+ scope: "/old-project",
183
+ sessionId: "session-1",
184
+ }),
185
+ );
186
+ store.markRevoked("revoke-update", "no longer needed");
187
+
188
+ const newGrant = makeGrant({
189
+ id: "revoke-update",
190
+ tool: "command",
191
+ pattern: "bun install",
192
+ scope: "/new-project",
193
+ sessionId: "session-2",
194
+ });
195
+ store.add(newGrant);
196
+
197
+ const result = store.getById("revoke-update");
198
+ expect(result).toBeDefined();
199
+ expect(result!.tool).toBe("command");
200
+ expect(result!.pattern).toBe("bun install");
201
+ expect(result!.scope).toBe("/new-project");
202
+ expect(result!.sessionId).toBe("session-2");
203
+ expect(result!.revokedAt).toBeUndefined();
204
+ expect(result!.revokedReason).toBeUndefined();
205
+ });
206
+
207
+ test("reactivated grant round-trips through serialization", () => {
208
+ const store = new PersistentGrantStore(tmpDir);
209
+ store.init();
210
+
211
+ store.add(makeGrant({ id: "revoke-persist" }));
212
+ store.markRevoked("revoke-persist", "reason");
213
+ store.add(makeGrant({ id: "revoke-persist", pattern: "bun test" }));
214
+
215
+ // Load from a fresh store instance to verify serialization
216
+ const store2 = new PersistentGrantStore(tmpDir);
217
+ const grants = store2.getAll();
218
+ expect(grants).toHaveLength(1);
219
+ expect(grants[0].id).toBe("revoke-persist");
220
+ expect(grants[0].pattern).toBe("bun test");
221
+ expect(grants[0].revokedAt).toBeUndefined();
222
+ expect(grants[0].revokedReason).toBeUndefined();
223
+ });
224
+ });
225
+
226
+ describe("legacy sessionId migration", () => {
227
+ test("backfills sessionId on legacy grants during init", () => {
228
+ // Write a grants file with a grant missing sessionId (legacy format)
229
+ const legacyGrant = {
230
+ id: "legacy-grant",
231
+ tool: "host_bash",
232
+ pattern: "npm install",
233
+ scope: "/project",
234
+ createdAt: Date.now(),
235
+ };
236
+ writeFileSync(
237
+ join(tmpDir, "grants.json"),
238
+ JSON.stringify({ version: 1, grants: [legacyGrant] }, null, 2),
239
+ );
240
+
241
+ const store = new PersistentGrantStore(tmpDir);
242
+ store.init();
243
+
244
+ const grants = store.getAll();
245
+ expect(grants).toHaveLength(1);
246
+ expect(grants[0].sessionId).toBe("unknown");
247
+
248
+ // Verify it was persisted
249
+ const raw = JSON.parse(readFileSync(join(tmpDir, "grants.json"), "utf-8"));
250
+ expect(raw.grants[0].sessionId).toBe("unknown");
251
+ });
252
+ });
253
+
136
254
  describe("getById and has", () => {
137
255
  test("returns grant by ID", () => {
138
256
  const store = new PersistentGrantStore(tmpDir);
@@ -339,35 +457,35 @@ describe("TemporaryGrantStore", () => {
339
457
  });
340
458
  });
341
459
 
342
- describe("allow_thread", () => {
460
+ describe("allow_conversation", () => {
343
461
  test("requires conversationId", () => {
344
- expect(() => store.add("allow_thread", "hash-t", {})).toThrow(
462
+ expect(() => store.add("allow_conversation", "hash-t", {})).toThrow(
345
463
  /conversationId/,
346
464
  );
347
465
  });
348
466
 
349
467
  test("scoped to conversation ID", () => {
350
- store.add("allow_thread", "hash-t", { conversationId: "conv-1" });
468
+ store.add("allow_conversation", "hash-t", { conversationId: "conv-1" });
351
469
 
352
- expect(store.check("allow_thread", "hash-t", "conv-1")).toBe(true);
470
+ expect(store.check("allow_conversation", "hash-t", "conv-1")).toBe(true);
353
471
  // Different conversation should not match
354
- expect(store.check("allow_thread", "hash-t", "conv-2")).toBe(false);
472
+ expect(store.check("allow_conversation", "hash-t", "conv-2")).toBe(false);
355
473
  });
356
474
 
357
475
  test("same proposal hash in different conversations are independent", () => {
358
- store.add("allow_thread", "hash-t", { conversationId: "conv-a" });
359
- store.add("allow_thread", "hash-t", { conversationId: "conv-b" });
476
+ store.add("allow_conversation", "hash-t", { conversationId: "conv-a" });
477
+ store.add("allow_conversation", "hash-t", { conversationId: "conv-b" });
360
478
 
361
- expect(store.check("allow_thread", "hash-t", "conv-a")).toBe(true);
362
- expect(store.check("allow_thread", "hash-t", "conv-b")).toBe(true);
479
+ expect(store.check("allow_conversation", "hash-t", "conv-a")).toBe(true);
480
+ expect(store.check("allow_conversation", "hash-t", "conv-b")).toBe(true);
363
481
  });
364
482
 
365
- test("not consumed on check (persists within thread)", () => {
366
- store.add("allow_thread", "hash-t", { conversationId: "conv-1" });
483
+ test("not consumed on check (persists within conversation)", () => {
484
+ store.add("allow_conversation", "hash-t", { conversationId: "conv-1" });
367
485
 
368
- expect(store.check("allow_thread", "hash-t", "conv-1")).toBe(true);
369
- expect(store.check("allow_thread", "hash-t", "conv-1")).toBe(true);
370
- expect(store.check("allow_thread", "hash-t", "conv-1")).toBe(true);
486
+ expect(store.check("allow_conversation", "hash-t", "conv-1")).toBe(true);
487
+ expect(store.check("allow_conversation", "hash-t", "conv-1")).toBe(true);
488
+ expect(store.check("allow_conversation", "hash-t", "conv-1")).toBe(true);
371
489
  });
372
490
  });
373
491
 
@@ -384,9 +502,9 @@ describe("TemporaryGrantStore", () => {
384
502
  expect(store.checkAny("hash-any-t")).toBe("allow_10m");
385
503
  });
386
504
 
387
- test("finds allow_thread grant with conversationId", () => {
388
- store.add("allow_thread", "hash-any-th", { conversationId: "conv-x" });
389
- expect(store.checkAny("hash-any-th", "conv-x")).toBe("allow_thread");
505
+ test("finds allow_conversation grant with conversationId", () => {
506
+ store.add("allow_conversation", "hash-any-th", { conversationId: "conv-x" });
507
+ expect(store.checkAny("hash-any-th", "conv-x")).toBe("allow_conversation");
390
508
  });
391
509
 
392
510
  test("returns undefined when no grants match", () => {
@@ -414,28 +532,28 @@ describe("TemporaryGrantStore", () => {
414
532
  });
415
533
 
416
534
  describe("clearConversation", () => {
417
- test("removes all thread grants for a conversation", () => {
418
- store.add("allow_thread", "hash-1", { conversationId: "conv-clear" });
419
- store.add("allow_thread", "hash-2", { conversationId: "conv-clear" });
420
- store.add("allow_thread", "hash-3", { conversationId: "conv-keep" });
535
+ test("removes all conversation grants for a conversation", () => {
536
+ store.add("allow_conversation", "hash-1", { conversationId: "conv-clear" });
537
+ store.add("allow_conversation", "hash-2", { conversationId: "conv-clear" });
538
+ store.add("allow_conversation", "hash-3", { conversationId: "conv-keep" });
421
539
 
422
540
  store.clearConversation("conv-clear");
423
541
 
424
- expect(store.check("allow_thread", "hash-1", "conv-clear")).toBe(false);
425
- expect(store.check("allow_thread", "hash-2", "conv-clear")).toBe(false);
542
+ expect(store.check("allow_conversation", "hash-1", "conv-clear")).toBe(false);
543
+ expect(store.check("allow_conversation", "hash-2", "conv-clear")).toBe(false);
426
544
  // Other conversation unaffected
427
- expect(store.check("allow_thread", "hash-3", "conv-keep")).toBe(true);
545
+ expect(store.check("allow_conversation", "hash-3", "conv-keep")).toBe(true);
428
546
  });
429
547
 
430
- test("does not affect non-thread grants", () => {
431
- store.add("allow_once", "hash-non-thread");
432
- store.add("allow_10m", "hash-non-thread-t");
548
+ test("does not affect non-conversation grants", () => {
549
+ store.add("allow_once", "hash-non-conv");
550
+ store.add("allow_10m", "hash-non-conv-t");
433
551
 
434
552
  store.clearConversation("any-conv");
435
553
 
436
- // Non-thread grants unaffected
437
- expect(store.check("allow_once", "hash-non-thread")).toBe(true);
438
- expect(store.check("allow_10m", "hash-non-thread-t")).toBe(true);
554
+ // Non-conversation grants unaffected
555
+ expect(store.check("allow_once", "hash-non-conv")).toBe(true);
556
+ expect(store.check("allow_10m", "hash-non-conv-t")).toBe(true);
439
557
  });
440
558
  });
441
559
 
@@ -443,7 +561,7 @@ describe("TemporaryGrantStore", () => {
443
561
  test("removes all grants", () => {
444
562
  store.add("allow_once", "h1");
445
563
  store.add("allow_10m", "h2");
446
- store.add("allow_thread", "h3", { conversationId: "c1" });
564
+ store.add("allow_conversation", "h3", { conversationId: "c1" });
447
565
 
448
566
  store.clear();
449
567
  expect(store.size).toBe(0);
@@ -454,7 +572,7 @@ describe("TemporaryGrantStore", () => {
454
572
  test("grants do not survive new store instance", () => {
455
573
  store.add("allow_once", "hash-restart");
456
574
  store.add("allow_10m", "hash-restart-t");
457
- store.add("allow_thread", "hash-restart-th", {
575
+ store.add("allow_conversation", "hash-restart-th", {
458
576
  conversationId: "conv-r",
459
577
  });
460
578
 
@@ -43,6 +43,7 @@ import { PersistentGrantStore } from "../grants/persistent-store.js";
43
43
  import { TemporaryGrantStore } from "../grants/temporary-store.js";
44
44
  import { LocalMaterialiser } from "../materializers/local.js";
45
45
  import type { OAuthConnectionLookup, LocalSubjectResolverDeps } from "../subjects/local.js";
46
+ import { AuditStore } from "../audit/store.js";
46
47
 
47
48
  // ---------------------------------------------------------------------------
48
49
  // Test helpers
@@ -89,7 +90,7 @@ function buildStaticRecord(
89
90
  credentialId: overrides.credentialId ?? "cred-uuid-1",
90
91
  service: overrides.service ?? "github",
91
92
  field: overrides.field ?? "api_key",
92
- allowedTools: overrides.allowedTools ?? [],
93
+ allowedTools: overrides.allowedTools ?? ["make_authenticated_request"],
93
94
  allowedDomains: overrides.allowedDomains ?? [],
94
95
  createdAt: overrides.createdAt ?? Date.now(),
95
96
  updatedAt: overrides.updatedAt ?? Date.now(),
@@ -281,9 +282,10 @@ function buildDeps(
281
282
  metadataStore: fixture.metadataStore,
282
283
  oauthConnections: createOAuthLookup(oauthConnections),
283
284
  },
284
- sessionId: "test-session",
285
+ sessionId: { current: "test-session" },
285
286
  logger: silentLogger,
286
287
  ...overrides,
288
+ auditStore: overrides.auditStore ?? new AuditStore(fixture.tmpDir),
287
289
  };
288
290
  }
289
291
 
@@ -317,6 +319,7 @@ describe("HTTP executor: local static secrets", () => {
317
319
  pattern: "GET https://api.github.com/repos/owner/repo",
318
320
  scope: handle,
319
321
  createdAt: Date.now(),
322
+ sessionId: "test-session",
320
323
  });
321
324
 
322
325
  const { fetch: fetchFn, requests } = mockFetchRecorder(
@@ -356,6 +359,7 @@ describe("HTTP executor: local static secrets", () => {
356
359
  pattern: "GET https://api.github.com/user",
357
360
  scope: handle,
358
361
  createdAt: Date.now(),
362
+ sessionId: "test-session",
359
363
  });
360
364
 
361
365
  // Simulate API echoing back the token in response
@@ -390,6 +394,7 @@ describe("HTTP executor: local static secrets", () => {
390
394
  pattern: "GET https://api.github.com/data",
391
395
  scope: handle,
392
396
  createdAt: Date.now(),
397
+ sessionId: "test-session",
393
398
  });
394
399
 
395
400
  const fetchFn = mockFetch(200, '{"ok": true}', {
@@ -454,6 +459,7 @@ describe("HTTP executor: local OAuth", () => {
454
459
  pattern: "GET https://www.googleapis.com/calendar/v3/calendars/primary/events",
455
460
  scope: handle,
456
461
  createdAt: Date.now(),
462
+ sessionId: "test-session",
457
463
  });
458
464
 
459
465
  const { fetch: fetchFn, requests } = mockFetchRecorder(
@@ -494,6 +500,7 @@ describe("HTTP executor: local OAuth", () => {
494
500
  pattern: "GET https://www.googleapis.com/oauth2/v1/tokeninfo",
495
501
  scope: handle,
496
502
  createdAt: Date.now(),
503
+ sessionId: "test-session",
497
504
  });
498
505
 
499
506
  // Simulate tokeninfo endpoint echoing the token
@@ -545,6 +552,7 @@ describe("HTTP executor: platform_oauth handles", () => {
545
552
  pattern: "GET https://api.slack.com/api/conversations.list",
546
553
  scope: handle,
547
554
  createdAt: Date.now(),
555
+ sessionId: "test-session",
548
556
  });
549
557
 
550
558
  // Mock the platform catalog response
@@ -555,30 +563,31 @@ describe("HTTP executor: platform_oauth handles", () => {
555
563
  const urlStr = url.toString();
556
564
 
557
565
  // Platform catalog
558
- if (urlStr.includes("/v1/ces/catalog")) {
566
+ if (urlStr.includes("/oauth/managed/catalog")) {
559
567
  return new Response(
560
- JSON.stringify({
561
- connections: [
562
- {
563
- id: "conn-platform-1",
564
- provider: "slack",
565
- account_info: "workspace@slack.com",
566
- granted_scopes: ["channels:read"],
567
- status: "active",
568
- },
569
- ],
570
- }),
568
+ JSON.stringify([
569
+ {
570
+ handle: "platform_oauth:conn-platform-1",
571
+ connection_id: "conn-platform-1",
572
+ provider: "slack",
573
+ account_label: "workspace@slack.com",
574
+ scopes_granted: ["channels:read"],
575
+ status: "active",
576
+ },
577
+ ]),
571
578
  { status: 200, headers: { "Content-Type": "application/json" } },
572
579
  );
573
580
  }
574
581
 
575
582
  // Platform token materialization
576
- if (urlStr.includes("/v1/ces/connections/conn-platform-1/materialize")) {
583
+ if (urlStr.includes("/oauth/managed/materialize")) {
577
584
  return new Response(
578
585
  JSON.stringify({
579
586
  access_token: "xoxp-platform-token-12345678",
580
587
  token_type: "Bearer",
581
- expires_in: 3600,
588
+ expires_at: new Date(Date.now() + 3600_000).toISOString(),
589
+ provider: "slack",
590
+ handle: "platform_oauth:conn-platform-1",
582
591
  }),
583
592
  { status: 200, headers: { "Content-Type": "application/json" } },
584
593
  );
@@ -603,11 +612,13 @@ describe("HTTP executor: platform_oauth handles", () => {
603
612
  managedSubjectOptions: {
604
613
  platformBaseUrl: "https://api.vellum.ai",
605
614
  assistantApiKey: "test-api-key",
615
+ assistantId: "test-assistant-id",
606
616
  fetch: platformCatalogFetch,
607
617
  },
608
618
  managedMaterializerOptions: {
609
619
  platformBaseUrl: "https://api.vellum.ai",
610
620
  assistantApiKey: "test-api-key",
621
+ assistantId: "test-assistant-id",
611
622
  fetch: platformCatalogFetch,
612
623
  },
613
624
  });
@@ -640,6 +651,7 @@ describe("HTTP executor: platform_oauth handles", () => {
640
651
  pattern: "GET https://api.slack.com/data",
641
652
  scope: handle,
642
653
  createdAt: Date.now(),
654
+ sessionId: "test-session",
643
655
  });
644
656
 
645
657
  // No managedSubjectOptions or managedMaterializerOptions
@@ -772,6 +784,7 @@ describe("HTTP executor: forbidden header rejection", () => {
772
784
  pattern: "GET https://api.github.com/user",
773
785
  scope: handle,
774
786
  createdAt: Date.now(),
787
+ sessionId: "test-session",
775
788
  });
776
789
 
777
790
  const { fetch: fetchFn, requests } = mockFetchRecorder(200, '{"ok": true}');
@@ -803,6 +816,7 @@ describe("HTTP executor: forbidden header rejection", () => {
803
816
  pattern: "GET https://api.github.com/user",
804
817
  scope: handle,
805
818
  createdAt: Date.now(),
819
+ sessionId: "test-session",
806
820
  });
807
821
 
808
822
  const { fetch: fetchFn, requests } = mockFetchRecorder(200, '{"ok": true}');
@@ -833,6 +847,7 @@ describe("HTTP executor: forbidden header rejection", () => {
833
847
  pattern: "GET https://api.github.com/user",
834
848
  scope: handle,
835
849
  createdAt: Date.now(),
850
+ sessionId: "test-session",
836
851
  });
837
852
 
838
853
  const deps = buildDeps(fixture, []);
@@ -882,6 +897,7 @@ describe("HTTP executor: redirect denial", () => {
882
897
  pattern: "GET https://api.github.com/repos/owner/repo",
883
898
  scope: handle,
884
899
  createdAt: Date.now(),
900
+ sessionId: "test-session",
885
901
  });
886
902
 
887
903
  // Redirect to an evil domain
@@ -910,6 +926,73 @@ describe("HTTP executor: redirect denial", () => {
910
926
  expect(result.error!.message).toContain("denied");
911
927
  });
912
928
 
929
+ test("303 redirect evaluates policy against GET, not original method", async () => {
930
+ const handle = localStaticHandle("github", "api_key");
931
+
932
+ // Grant only covers GET — no POST grant exists
933
+ fixture.persistentStore.add({
934
+ id: "grant-github-get-only",
935
+ tool: "http",
936
+ pattern: "GET https://api.github.com/repos/owner/repo/result",
937
+ scope: handle,
938
+ createdAt: Date.now(),
939
+ sessionId: "test-session",
940
+ });
941
+
942
+ // Also add a grant for the original POST endpoint
943
+ fixture.persistentStore.add({
944
+ id: "grant-github-post",
945
+ tool: "http",
946
+ pattern: "POST https://api.github.com/repos/owner/repo/action",
947
+ scope: handle,
948
+ createdAt: Date.now(),
949
+ sessionId: "test-session",
950
+ });
951
+
952
+ // POST -> 303 redirect to a GET-only granted endpoint
953
+ let callCount = 0;
954
+ const requests: Array<{ url: string; method: string }> = [];
955
+ const fetchFn = asFetch(async (
956
+ url: string | URL | Request,
957
+ init?: RequestInit,
958
+ ) => {
959
+ callCount++;
960
+ requests.push({ url: url.toString(), method: init?.method ?? "GET" });
961
+ if (callCount === 1) {
962
+ return new Response(null, {
963
+ status: 303,
964
+ headers: { Location: "https://api.github.com/repos/owner/repo/result" },
965
+ });
966
+ }
967
+ return new Response('{"status": "done"}', {
968
+ status: 200,
969
+ headers: { "Content-Type": "application/json" },
970
+ });
971
+ });
972
+
973
+ const deps = buildDeps(fixture, [], { fetch: fetchFn });
974
+
975
+ const result = await executeAuthenticatedHttpRequest(
976
+ {
977
+ credentialHandle: handle,
978
+ method: "POST",
979
+ url: "https://api.github.com/repos/owner/repo/action",
980
+ body: '{"trigger": true}',
981
+ purpose: "Trigger action",
982
+ },
983
+ deps,
984
+ );
985
+
986
+ // Should succeed — policy evaluates GET (post-303 method) against the grant
987
+ expect(result.success).toBe(true);
988
+ expect(result.statusCode).toBe(200);
989
+
990
+ // Verify the redirect hop actually used GET
991
+ expect(requests).toHaveLength(2);
992
+ expect(requests[0].method).toBe("POST");
993
+ expect(requests[1].method).toBe("GET");
994
+ });
995
+
913
996
  test("allows redirect to path covered by same grant", async () => {
914
997
  const handle = localStaticHandle("github", "api_key");
915
998
 
@@ -920,6 +1003,7 @@ describe("HTTP executor: redirect denial", () => {
920
1003
  pattern: "GET https://api.github.com/repos/owner/repo",
921
1004
  scope: handle,
922
1005
  createdAt: Date.now(),
1006
+ sessionId: "test-session",
923
1007
  });
924
1008
 
925
1009
  // Redirect to the same domain/path that matches the grant
@@ -986,6 +1070,7 @@ describe("HTTP executor: filtered response behaviour", () => {
986
1070
  pattern: "GET https://api.example.com/protected",
987
1071
  scope: handle,
988
1072
  createdAt: Date.now(),
1073
+ sessionId: "test-session",
989
1074
  });
990
1075
 
991
1076
  const fetchFn = mockFetch(401, '{"error": "unauthorized"}', {
@@ -1020,6 +1105,7 @@ describe("HTTP executor: filtered response behaviour", () => {
1020
1105
  pattern: "GET https://api.example.com/data",
1021
1106
  scope: handle,
1022
1107
  createdAt: Date.now(),
1108
+ sessionId: "test-session",
1023
1109
  });
1024
1110
 
1025
1111
  const fetchFn = mockFetch(200, '{"ok": true}', {
@@ -1077,6 +1163,7 @@ describe("HTTP executor: audit summary integrity", () => {
1077
1163
  pattern: "GET https://api.github.com/user",
1078
1164
  scope: handle,
1079
1165
  createdAt: Date.now(),
1166
+ sessionId: "test-session",
1080
1167
  });
1081
1168
 
1082
1169
  const fetchFn = mockFetch(200, '{"login": "octocat"}');
@@ -1110,6 +1197,7 @@ describe("HTTP executor: audit summary integrity", () => {
1110
1197
  pattern: "GET https://api.github.com/user",
1111
1198
  scope: badHandle,
1112
1199
  createdAt: Date.now(),
1200
+ sessionId: "test-session",
1113
1201
  });
1114
1202
 
1115
1203
  const deps = buildDeps(fixture, []);
@@ -1191,6 +1279,7 @@ describe("HTTP executor: network error handling", () => {
1191
1279
  pattern: "GET https://api.example.com/data",
1192
1280
  scope: handle,
1193
1281
  createdAt: Date.now(),
1282
+ sessionId: "test-session",
1194
1283
  });
1195
1284
 
1196
1285
  const fetchFn = asFetch(async () => {
@@ -1224,6 +1313,7 @@ describe("HTTP executor: network error handling", () => {
1224
1313
  pattern: "GET https://api.example.com/data",
1225
1314
  scope: handle,
1226
1315
  createdAt: Date.now(),
1316
+ sessionId: "test-session",
1227
1317
  });
1228
1318
 
1229
1319
  const fetchFn = asFetch(async () => {