@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.
- package/Dockerfile +6 -2
- package/node_modules/@vellumai/ces-contracts/bun.lock +29 -0
- package/node_modules/@vellumai/ces-contracts/package.json +24 -0
- package/node_modules/@vellumai/ces-contracts/src/__tests__/contracts.test.ts +293 -0
- package/node_modules/@vellumai/ces-contracts/src/__tests__/grants.test.ts +686 -0
- package/node_modules/@vellumai/ces-contracts/src/error.ts +25 -0
- package/node_modules/@vellumai/ces-contracts/src/grants.ts +184 -0
- package/node_modules/@vellumai/ces-contracts/src/handles.ts +213 -0
- package/node_modules/@vellumai/ces-contracts/src/index.ts +147 -0
- package/node_modules/@vellumai/ces-contracts/src/rendering.ts +135 -0
- package/node_modules/@vellumai/ces-contracts/src/rpc.ts +511 -0
- package/node_modules/@vellumai/ces-contracts/tsconfig.json +20 -0
- package/node_modules/@vellumai/credential-storage/bun.lock +24 -0
- package/node_modules/@vellumai/credential-storage/package.json +17 -0
- package/node_modules/@vellumai/credential-storage/src/__tests__/package-boundary.test.ts +151 -0
- package/node_modules/@vellumai/credential-storage/src/index.ts +213 -0
- package/node_modules/@vellumai/credential-storage/src/oauth-runtime.ts +340 -0
- package/node_modules/@vellumai/credential-storage/src/static-credentials.ts +365 -0
- package/node_modules/@vellumai/credential-storage/tsconfig.json +20 -0
- package/node_modules/@vellumai/egress-proxy/bun.lock +24 -0
- package/node_modules/@vellumai/egress-proxy/package.json +17 -0
- package/node_modules/@vellumai/egress-proxy/src/__tests__/package-boundary.test.ts +131 -0
- package/node_modules/@vellumai/egress-proxy/src/index.ts +54 -0
- package/node_modules/@vellumai/egress-proxy/src/session-core.ts +466 -0
- package/node_modules/@vellumai/egress-proxy/src/types.ts +227 -0
- package/node_modules/@vellumai/egress-proxy/tsconfig.json +20 -0
- package/node_modules/zod/LICENSE +21 -0
- package/node_modules/zod/README.md +208 -0
- package/node_modules/zod/index.cjs +33 -0
- package/node_modules/zod/index.d.cts +4 -0
- package/node_modules/zod/index.d.ts +4 -0
- package/node_modules/zod/index.js +4 -0
- package/node_modules/zod/locales/index.cjs +17 -0
- package/node_modules/zod/locales/index.d.cts +1 -0
- package/node_modules/zod/locales/index.d.ts +1 -0
- package/node_modules/zod/locales/index.js +1 -0
- package/node_modules/zod/locales/package.json +6 -0
- package/node_modules/zod/mini/index.cjs +32 -0
- package/node_modules/zod/mini/index.d.cts +3 -0
- package/node_modules/zod/mini/index.d.ts +3 -0
- package/node_modules/zod/mini/index.js +3 -0
- package/node_modules/zod/mini/package.json +6 -0
- package/node_modules/zod/package.json +135 -0
- package/node_modules/zod/src/index.ts +4 -0
- package/node_modules/zod/src/locales/index.ts +1 -0
- package/node_modules/zod/src/mini/index.ts +3 -0
- package/node_modules/zod/src/v3/ZodError.ts +330 -0
- package/node_modules/zod/src/v3/benchmarks/datetime.ts +58 -0
- package/node_modules/zod/src/v3/benchmarks/discriminatedUnion.ts +80 -0
- package/node_modules/zod/src/v3/benchmarks/index.ts +59 -0
- package/node_modules/zod/src/v3/benchmarks/ipv4.ts +57 -0
- package/node_modules/zod/src/v3/benchmarks/object.ts +69 -0
- package/node_modules/zod/src/v3/benchmarks/primitives.ts +162 -0
- package/node_modules/zod/src/v3/benchmarks/realworld.ts +63 -0
- package/node_modules/zod/src/v3/benchmarks/string.ts +55 -0
- package/node_modules/zod/src/v3/benchmarks/union.ts +80 -0
- package/node_modules/zod/src/v3/errors.ts +13 -0
- package/node_modules/zod/src/v3/external.ts +6 -0
- package/node_modules/zod/src/v3/helpers/enumUtil.ts +17 -0
- package/node_modules/zod/src/v3/helpers/errorUtil.ts +8 -0
- package/node_modules/zod/src/v3/helpers/parseUtil.ts +176 -0
- package/node_modules/zod/src/v3/helpers/partialUtil.ts +34 -0
- package/node_modules/zod/src/v3/helpers/typeAliases.ts +2 -0
- package/node_modules/zod/src/v3/helpers/util.ts +224 -0
- package/node_modules/zod/src/v3/index.ts +4 -0
- package/node_modules/zod/src/v3/locales/en.ts +124 -0
- package/node_modules/zod/src/v3/standard-schema.ts +113 -0
- package/node_modules/zod/src/v3/tests/Mocker.ts +54 -0
- package/node_modules/zod/src/v3/tests/all-errors.test.ts +157 -0
- package/node_modules/zod/src/v3/tests/anyunknown.test.ts +28 -0
- package/node_modules/zod/src/v3/tests/array.test.ts +71 -0
- package/node_modules/zod/src/v3/tests/async-parsing.test.ts +388 -0
- package/node_modules/zod/src/v3/tests/async-refinements.test.ts +46 -0
- package/node_modules/zod/src/v3/tests/base.test.ts +29 -0
- package/node_modules/zod/src/v3/tests/bigint.test.ts +55 -0
- package/node_modules/zod/src/v3/tests/branded.test.ts +53 -0
- package/node_modules/zod/src/v3/tests/catch.test.ts +220 -0
- package/node_modules/zod/src/v3/tests/coerce.test.ts +133 -0
- package/node_modules/zod/src/v3/tests/complex.test.ts +70 -0
- package/node_modules/zod/src/v3/tests/custom.test.ts +31 -0
- package/node_modules/zod/src/v3/tests/date.test.ts +32 -0
- package/node_modules/zod/src/v3/tests/deepmasking.test.ts +186 -0
- package/node_modules/zod/src/v3/tests/default.test.ts +112 -0
- package/node_modules/zod/src/v3/tests/description.test.ts +33 -0
- package/node_modules/zod/src/v3/tests/discriminated-unions.test.ts +315 -0
- package/node_modules/zod/src/v3/tests/enum.test.ts +80 -0
- package/node_modules/zod/src/v3/tests/error.test.ts +551 -0
- package/node_modules/zod/src/v3/tests/firstparty.test.ts +87 -0
- package/node_modules/zod/src/v3/tests/firstpartyschematypes.test.ts +21 -0
- package/node_modules/zod/src/v3/tests/function.test.ts +261 -0
- package/node_modules/zod/src/v3/tests/generics.test.ts +48 -0
- package/node_modules/zod/src/v3/tests/instanceof.test.ts +37 -0
- package/node_modules/zod/src/v3/tests/intersection.test.ts +110 -0
- package/node_modules/zod/src/v3/tests/language-server.source.ts +76 -0
- package/node_modules/zod/src/v3/tests/language-server.test.ts +207 -0
- package/node_modules/zod/src/v3/tests/literal.test.ts +36 -0
- package/node_modules/zod/src/v3/tests/map.test.ts +110 -0
- package/node_modules/zod/src/v3/tests/masking.test.ts +4 -0
- package/node_modules/zod/src/v3/tests/mocker.test.ts +19 -0
- package/node_modules/zod/src/v3/tests/nan.test.ts +24 -0
- package/node_modules/zod/src/v3/tests/nativeEnum.test.ts +87 -0
- package/node_modules/zod/src/v3/tests/nullable.test.ts +42 -0
- package/node_modules/zod/src/v3/tests/number.test.ts +176 -0
- package/node_modules/zod/src/v3/tests/object-augmentation.test.ts +29 -0
- package/node_modules/zod/src/v3/tests/object-in-es5-env.test.ts +29 -0
- package/node_modules/zod/src/v3/tests/object.test.ts +434 -0
- package/node_modules/zod/src/v3/tests/optional.test.ts +42 -0
- package/node_modules/zod/src/v3/tests/parseUtil.test.ts +23 -0
- package/node_modules/zod/src/v3/tests/parser.test.ts +41 -0
- package/node_modules/zod/src/v3/tests/partials.test.ts +243 -0
- package/node_modules/zod/src/v3/tests/pickomit.test.ts +111 -0
- package/node_modules/zod/src/v3/tests/pipeline.test.ts +29 -0
- package/node_modules/zod/src/v3/tests/preprocess.test.ts +186 -0
- package/node_modules/zod/src/v3/tests/primitive.test.ts +440 -0
- package/node_modules/zod/src/v3/tests/promise.test.ts +90 -0
- package/node_modules/zod/src/v3/tests/readonly.test.ts +194 -0
- package/node_modules/zod/src/v3/tests/record.test.ts +171 -0
- package/node_modules/zod/src/v3/tests/recursive.test.ts +197 -0
- package/node_modules/zod/src/v3/tests/refine.test.ts +313 -0
- package/node_modules/zod/src/v3/tests/safeparse.test.ts +27 -0
- package/node_modules/zod/src/v3/tests/set.test.ts +142 -0
- package/node_modules/zod/src/v3/tests/standard-schema.test.ts +83 -0
- package/node_modules/zod/src/v3/tests/string.test.ts +916 -0
- package/node_modules/zod/src/v3/tests/transformer.test.ts +233 -0
- package/node_modules/zod/src/v3/tests/tuple.test.ts +90 -0
- package/node_modules/zod/src/v3/tests/unions.test.ts +57 -0
- package/node_modules/zod/src/v3/tests/validations.test.ts +133 -0
- package/node_modules/zod/src/v3/tests/void.test.ts +15 -0
- package/node_modules/zod/src/v3/types.ts +5138 -0
- package/node_modules/zod/src/v4/classic/checks.ts +32 -0
- package/node_modules/zod/src/v4/classic/coerce.ts +27 -0
- package/node_modules/zod/src/v4/classic/compat.ts +70 -0
- package/node_modules/zod/src/v4/classic/errors.ts +82 -0
- package/node_modules/zod/src/v4/classic/external.ts +51 -0
- package/node_modules/zod/src/v4/classic/from-json-schema.ts +643 -0
- package/node_modules/zod/src/v4/classic/index.ts +5 -0
- package/node_modules/zod/src/v4/classic/iso.ts +90 -0
- package/node_modules/zod/src/v4/classic/parse.ts +82 -0
- package/node_modules/zod/src/v4/classic/schemas.ts +2409 -0
- package/node_modules/zod/src/v4/classic/tests/anyunknown.test.ts +26 -0
- package/node_modules/zod/src/v4/classic/tests/apply.test.ts +59 -0
- package/node_modules/zod/src/v4/classic/tests/array.test.ts +264 -0
- package/node_modules/zod/src/v4/classic/tests/assignability.test.ts +210 -0
- package/node_modules/zod/src/v4/classic/tests/async-parsing.test.ts +381 -0
- package/node_modules/zod/src/v4/classic/tests/async-refinements.test.ts +68 -0
- package/node_modules/zod/src/v4/classic/tests/base.test.ts +7 -0
- package/node_modules/zod/src/v4/classic/tests/bigint.test.ts +54 -0
- package/node_modules/zod/src/v4/classic/tests/brand.test.ts +106 -0
- package/node_modules/zod/src/v4/classic/tests/catch.test.ts +276 -0
- package/node_modules/zod/src/v4/classic/tests/coalesce.test.ts +20 -0
- package/node_modules/zod/src/v4/classic/tests/codec-examples.test.ts +573 -0
- package/node_modules/zod/src/v4/classic/tests/codec.test.ts +562 -0
- package/node_modules/zod/src/v4/classic/tests/coerce.test.ts +160 -0
- package/node_modules/zod/src/v4/classic/tests/continuability.test.ts +374 -0
- package/node_modules/zod/src/v4/classic/tests/custom.test.ts +40 -0
- package/node_modules/zod/src/v4/classic/tests/date.test.ts +62 -0
- package/node_modules/zod/src/v4/classic/tests/datetime.test.ts +302 -0
- package/node_modules/zod/src/v4/classic/tests/default.test.ts +365 -0
- package/node_modules/zod/src/v4/classic/tests/describe-meta-checks.test.ts +27 -0
- package/node_modules/zod/src/v4/classic/tests/description.test.ts +32 -0
- package/node_modules/zod/src/v4/classic/tests/discriminated-unions.test.ts +661 -0
- package/node_modules/zod/src/v4/classic/tests/enum.test.ts +285 -0
- package/node_modules/zod/src/v4/classic/tests/error-utils.test.ts +595 -0
- package/node_modules/zod/src/v4/classic/tests/error.test.ts +711 -0
- package/node_modules/zod/src/v4/classic/tests/file.test.ts +96 -0
- package/node_modules/zod/src/v4/classic/tests/firstparty.test.ts +179 -0
- package/node_modules/zod/src/v4/classic/tests/fix-json-issue.test.ts +26 -0
- package/node_modules/zod/src/v4/classic/tests/from-json-schema.test.ts +734 -0
- package/node_modules/zod/src/v4/classic/tests/function.test.ts +360 -0
- package/node_modules/zod/src/v4/classic/tests/generics.test.ts +72 -0
- package/node_modules/zod/src/v4/classic/tests/hash.test.ts +68 -0
- package/node_modules/zod/src/v4/classic/tests/index.test.ts +939 -0
- package/node_modules/zod/src/v4/classic/tests/instanceof.test.ts +60 -0
- package/node_modules/zod/src/v4/classic/tests/intersection.test.ts +198 -0
- package/node_modules/zod/src/v4/classic/tests/json.test.ts +109 -0
- package/node_modules/zod/src/v4/classic/tests/lazy.test.ts +227 -0
- package/node_modules/zod/src/v4/classic/tests/literal.test.ts +117 -0
- package/node_modules/zod/src/v4/classic/tests/map.test.ts +330 -0
- package/node_modules/zod/src/v4/classic/tests/nan.test.ts +21 -0
- package/node_modules/zod/src/v4/classic/tests/nested-refine.test.ts +168 -0
- package/node_modules/zod/src/v4/classic/tests/nonoptional.test.ts +101 -0
- package/node_modules/zod/src/v4/classic/tests/nullable.test.ts +22 -0
- package/node_modules/zod/src/v4/classic/tests/number.test.ts +270 -0
- package/node_modules/zod/src/v4/classic/tests/object.test.ts +640 -0
- package/node_modules/zod/src/v4/classic/tests/optional.test.ts +223 -0
- package/node_modules/zod/src/v4/classic/tests/partial.test.ts +427 -0
- package/node_modules/zod/src/v4/classic/tests/pickomit.test.ts +211 -0
- package/node_modules/zod/src/v4/classic/tests/pipe.test.ts +101 -0
- package/node_modules/zod/src/v4/classic/tests/prefault.test.ts +74 -0
- package/node_modules/zod/src/v4/classic/tests/preprocess.test.ts +282 -0
- package/node_modules/zod/src/v4/classic/tests/primitive.test.ts +175 -0
- package/node_modules/zod/src/v4/classic/tests/promise.test.ts +81 -0
- package/node_modules/zod/src/v4/classic/tests/prototypes.test.ts +23 -0
- package/node_modules/zod/src/v4/classic/tests/readonly.test.ts +252 -0
- package/node_modules/zod/src/v4/classic/tests/record.test.ts +632 -0
- package/node_modules/zod/src/v4/classic/tests/recursive-types.test.ts +582 -0
- package/node_modules/zod/src/v4/classic/tests/refine.test.ts +570 -0
- package/node_modules/zod/src/v4/classic/tests/registries.test.ts +243 -0
- package/node_modules/zod/src/v4/classic/tests/set.test.ts +181 -0
- package/node_modules/zod/src/v4/classic/tests/standard-schema.test.ts +134 -0
- package/node_modules/zod/src/v4/classic/tests/string-formats.test.ts +125 -0
- package/node_modules/zod/src/v4/classic/tests/string.test.ts +1175 -0
- package/node_modules/zod/src/v4/classic/tests/stringbool.test.ts +106 -0
- package/node_modules/zod/src/v4/classic/tests/template-literal.test.ts +771 -0
- package/node_modules/zod/src/v4/classic/tests/to-json-schema-methods.test.ts +438 -0
- package/node_modules/zod/src/v4/classic/tests/to-json-schema.test.ts +2990 -0
- package/node_modules/zod/src/v4/classic/tests/transform.test.ts +361 -0
- package/node_modules/zod/src/v4/classic/tests/tuple.test.ts +183 -0
- package/node_modules/zod/src/v4/classic/tests/union.test.ts +219 -0
- package/node_modules/zod/src/v4/classic/tests/url.test.ts +13 -0
- package/node_modules/zod/src/v4/classic/tests/validations.test.ts +283 -0
- package/node_modules/zod/src/v4/classic/tests/void.test.ts +12 -0
- package/node_modules/zod/src/v4/core/api.ts +1798 -0
- package/node_modules/zod/src/v4/core/checks.ts +1293 -0
- package/node_modules/zod/src/v4/core/config.ts +15 -0
- package/node_modules/zod/src/v4/core/core.ts +138 -0
- package/node_modules/zod/src/v4/core/doc.ts +44 -0
- package/node_modules/zod/src/v4/core/errors.ts +448 -0
- package/node_modules/zod/src/v4/core/index.ts +16 -0
- package/node_modules/zod/src/v4/core/json-schema-generator.ts +126 -0
- package/node_modules/zod/src/v4/core/json-schema-processors.ts +667 -0
- package/node_modules/zod/src/v4/core/json-schema.ts +147 -0
- package/node_modules/zod/src/v4/core/parse.ts +195 -0
- package/node_modules/zod/src/v4/core/regexes.ts +183 -0
- package/node_modules/zod/src/v4/core/registries.ts +105 -0
- package/node_modules/zod/src/v4/core/schemas.ts +4538 -0
- package/node_modules/zod/src/v4/core/standard-schema.ts +159 -0
- package/node_modules/zod/src/v4/core/tests/extend.test.ts +59 -0
- package/node_modules/zod/src/v4/core/tests/index.test.ts +46 -0
- package/node_modules/zod/src/v4/core/tests/locales/be.test.ts +124 -0
- package/node_modules/zod/src/v4/core/tests/locales/en.test.ts +22 -0
- package/node_modules/zod/src/v4/core/tests/locales/es.test.ts +181 -0
- package/node_modules/zod/src/v4/core/tests/locales/he.test.ts +379 -0
- package/node_modules/zod/src/v4/core/tests/locales/nl.test.ts +46 -0
- package/node_modules/zod/src/v4/core/tests/locales/ru.test.ts +128 -0
- package/node_modules/zod/src/v4/core/tests/locales/tr.test.ts +69 -0
- package/node_modules/zod/src/v4/core/tests/locales/uz.test.ts +83 -0
- package/node_modules/zod/src/v4/core/tests/record-constructor.test.ts +67 -0
- package/node_modules/zod/src/v4/core/tests/recursive-tuples.test.ts +45 -0
- package/node_modules/zod/src/v4/core/to-json-schema.ts +613 -0
- package/node_modules/zod/src/v4/core/util.ts +966 -0
- package/node_modules/zod/src/v4/core/versions.ts +5 -0
- package/node_modules/zod/src/v4/core/zsf.ts +323 -0
- package/node_modules/zod/src/v4/index.ts +4 -0
- package/node_modules/zod/src/v4/locales/ar.ts +115 -0
- package/node_modules/zod/src/v4/locales/az.ts +111 -0
- package/node_modules/zod/src/v4/locales/be.ts +176 -0
- package/node_modules/zod/src/v4/locales/bg.ts +128 -0
- package/node_modules/zod/src/v4/locales/ca.ts +116 -0
- package/node_modules/zod/src/v4/locales/cs.ts +118 -0
- package/node_modules/zod/src/v4/locales/da.ts +123 -0
- package/node_modules/zod/src/v4/locales/de.ts +116 -0
- package/node_modules/zod/src/v4/locales/en.ts +119 -0
- package/node_modules/zod/src/v4/locales/eo.ts +118 -0
- package/node_modules/zod/src/v4/locales/es.ts +141 -0
- package/node_modules/zod/src/v4/locales/fa.ts +126 -0
- package/node_modules/zod/src/v4/locales/fi.ts +121 -0
- package/node_modules/zod/src/v4/locales/fr-CA.ts +116 -0
- package/node_modules/zod/src/v4/locales/fr.ts +116 -0
- package/node_modules/zod/src/v4/locales/he.ts +246 -0
- package/node_modules/zod/src/v4/locales/hu.ts +117 -0
- package/node_modules/zod/src/v4/locales/hy.ts +164 -0
- package/node_modules/zod/src/v4/locales/id.ts +115 -0
- package/node_modules/zod/src/v4/locales/index.ts +49 -0
- package/node_modules/zod/src/v4/locales/is.ts +119 -0
- package/node_modules/zod/src/v4/locales/it.ts +116 -0
- package/node_modules/zod/src/v4/locales/ja.ts +114 -0
- package/node_modules/zod/src/v4/locales/ka.ts +123 -0
- package/node_modules/zod/src/v4/locales/kh.ts +7 -0
- package/node_modules/zod/src/v4/locales/km.ts +119 -0
- package/node_modules/zod/src/v4/locales/ko.ts +121 -0
- package/node_modules/zod/src/v4/locales/lt.ts +239 -0
- package/node_modules/zod/src/v4/locales/mk.ts +118 -0
- package/node_modules/zod/src/v4/locales/ms.ts +115 -0
- package/node_modules/zod/src/v4/locales/nl.ts +121 -0
- package/node_modules/zod/src/v4/locales/no.ts +116 -0
- package/node_modules/zod/src/v4/locales/ota.ts +117 -0
- package/node_modules/zod/src/v4/locales/pl.ts +118 -0
- package/node_modules/zod/src/v4/locales/ps.ts +126 -0
- package/node_modules/zod/src/v4/locales/pt.ts +116 -0
- package/node_modules/zod/src/v4/locales/ru.ts +176 -0
- package/node_modules/zod/src/v4/locales/sl.ts +118 -0
- package/node_modules/zod/src/v4/locales/sv.ts +119 -0
- package/node_modules/zod/src/v4/locales/ta.ts +118 -0
- package/node_modules/zod/src/v4/locales/th.ts +119 -0
- package/node_modules/zod/src/v4/locales/tr.ts +111 -0
- package/node_modules/zod/src/v4/locales/ua.ts +7 -0
- package/node_modules/zod/src/v4/locales/uk.ts +117 -0
- package/node_modules/zod/src/v4/locales/ur.ts +119 -0
- package/node_modules/zod/src/v4/locales/uz.ts +116 -0
- package/node_modules/zod/src/v4/locales/vi.ts +117 -0
- package/node_modules/zod/src/v4/locales/yo.ts +124 -0
- package/node_modules/zod/src/v4/locales/zh-CN.ts +116 -0
- package/node_modules/zod/src/v4/locales/zh-TW.ts +115 -0
- package/node_modules/zod/src/v4/mini/checks.ts +32 -0
- package/node_modules/zod/src/v4/mini/coerce.ts +27 -0
- package/node_modules/zod/src/v4/mini/external.ts +40 -0
- package/node_modules/zod/src/v4/mini/index.ts +3 -0
- package/node_modules/zod/src/v4/mini/iso.ts +66 -0
- package/node_modules/zod/src/v4/mini/parse.ts +14 -0
- package/node_modules/zod/src/v4/mini/schemas.ts +1916 -0
- package/node_modules/zod/src/v4/mini/tests/apply.test.ts +24 -0
- package/node_modules/zod/src/v4/mini/tests/assignability.test.ts +129 -0
- package/node_modules/zod/src/v4/mini/tests/brand.test.ts +94 -0
- package/node_modules/zod/src/v4/mini/tests/checks.test.ts +144 -0
- package/node_modules/zod/src/v4/mini/tests/codec.test.ts +529 -0
- package/node_modules/zod/src/v4/mini/tests/computed.test.ts +36 -0
- package/node_modules/zod/src/v4/mini/tests/error.test.ts +22 -0
- package/node_modules/zod/src/v4/mini/tests/functions.test.ts +5 -0
- package/node_modules/zod/src/v4/mini/tests/index.test.ts +963 -0
- package/node_modules/zod/src/v4/mini/tests/number.test.ts +95 -0
- package/node_modules/zod/src/v4/mini/tests/object.test.ts +227 -0
- package/node_modules/zod/src/v4/mini/tests/prototypes.test.ts +43 -0
- package/node_modules/zod/src/v4/mini/tests/recursive-types.test.ts +275 -0
- package/node_modules/zod/src/v4/mini/tests/standard-schema.test.ts +50 -0
- package/node_modules/zod/src/v4/mini/tests/string.test.ts +347 -0
- package/node_modules/zod/src/v4-mini/index.ts +3 -0
- package/node_modules/zod/v3/ZodError.cjs +138 -0
- package/node_modules/zod/v3/ZodError.d.cts +164 -0
- package/node_modules/zod/v3/ZodError.d.ts +164 -0
- package/node_modules/zod/v3/ZodError.js +133 -0
- package/node_modules/zod/v3/errors.cjs +17 -0
- package/node_modules/zod/v3/errors.d.cts +5 -0
- package/node_modules/zod/v3/errors.d.ts +5 -0
- package/node_modules/zod/v3/errors.js +9 -0
- package/node_modules/zod/v3/external.cjs +22 -0
- package/node_modules/zod/v3/external.d.cts +6 -0
- package/node_modules/zod/v3/external.d.ts +6 -0
- package/node_modules/zod/v3/external.js +6 -0
- package/node_modules/zod/v3/helpers/enumUtil.cjs +2 -0
- package/node_modules/zod/v3/helpers/enumUtil.d.cts +8 -0
- package/node_modules/zod/v3/helpers/enumUtil.d.ts +8 -0
- package/node_modules/zod/v3/helpers/enumUtil.js +1 -0
- package/node_modules/zod/v3/helpers/errorUtil.cjs +9 -0
- package/node_modules/zod/v3/helpers/errorUtil.d.cts +9 -0
- package/node_modules/zod/v3/helpers/errorUtil.d.ts +9 -0
- package/node_modules/zod/v3/helpers/errorUtil.js +6 -0
- package/node_modules/zod/v3/helpers/parseUtil.cjs +124 -0
- package/node_modules/zod/v3/helpers/parseUtil.d.cts +78 -0
- package/node_modules/zod/v3/helpers/parseUtil.d.ts +78 -0
- package/node_modules/zod/v3/helpers/parseUtil.js +109 -0
- package/node_modules/zod/v3/helpers/partialUtil.cjs +2 -0
- package/node_modules/zod/v3/helpers/partialUtil.d.cts +8 -0
- package/node_modules/zod/v3/helpers/partialUtil.d.ts +8 -0
- package/node_modules/zod/v3/helpers/partialUtil.js +1 -0
- package/node_modules/zod/v3/helpers/typeAliases.cjs +2 -0
- package/node_modules/zod/v3/helpers/typeAliases.d.cts +2 -0
- package/node_modules/zod/v3/helpers/typeAliases.d.ts +2 -0
- package/node_modules/zod/v3/helpers/typeAliases.js +1 -0
- package/node_modules/zod/v3/helpers/util.cjs +137 -0
- package/node_modules/zod/v3/helpers/util.d.cts +85 -0
- package/node_modules/zod/v3/helpers/util.d.ts +85 -0
- package/node_modules/zod/v3/helpers/util.js +133 -0
- package/node_modules/zod/v3/index.cjs +33 -0
- package/node_modules/zod/v3/index.d.cts +4 -0
- package/node_modules/zod/v3/index.d.ts +4 -0
- package/node_modules/zod/v3/index.js +4 -0
- package/node_modules/zod/v3/locales/en.cjs +112 -0
- package/node_modules/zod/v3/locales/en.d.cts +3 -0
- package/node_modules/zod/v3/locales/en.d.ts +3 -0
- package/node_modules/zod/v3/locales/en.js +109 -0
- package/node_modules/zod/v3/package.json +6 -0
- package/node_modules/zod/v3/standard-schema.cjs +2 -0
- package/node_modules/zod/v3/standard-schema.d.cts +102 -0
- package/node_modules/zod/v3/standard-schema.d.ts +102 -0
- package/node_modules/zod/v3/standard-schema.js +1 -0
- package/node_modules/zod/v3/types.cjs +3777 -0
- package/node_modules/zod/v3/types.d.cts +1034 -0
- package/node_modules/zod/v3/types.d.ts +1034 -0
- package/node_modules/zod/v3/types.js +3695 -0
- package/node_modules/zod/v4/classic/checks.cjs +33 -0
- package/node_modules/zod/v4/classic/checks.d.cts +1 -0
- package/node_modules/zod/v4/classic/checks.d.ts +1 -0
- package/node_modules/zod/v4/classic/checks.js +1 -0
- package/node_modules/zod/v4/classic/coerce.cjs +47 -0
- package/node_modules/zod/v4/classic/coerce.d.cts +17 -0
- package/node_modules/zod/v4/classic/coerce.d.ts +17 -0
- package/node_modules/zod/v4/classic/coerce.js +17 -0
- package/node_modules/zod/v4/classic/compat.cjs +61 -0
- package/node_modules/zod/v4/classic/compat.d.cts +50 -0
- package/node_modules/zod/v4/classic/compat.d.ts +50 -0
- package/node_modules/zod/v4/classic/compat.js +31 -0
- package/node_modules/zod/v4/classic/errors.cjs +74 -0
- package/node_modules/zod/v4/classic/errors.d.cts +30 -0
- package/node_modules/zod/v4/classic/errors.d.ts +30 -0
- package/node_modules/zod/v4/classic/errors.js +48 -0
- package/node_modules/zod/v4/classic/external.cjs +73 -0
- package/node_modules/zod/v4/classic/external.d.cts +15 -0
- package/node_modules/zod/v4/classic/external.d.ts +15 -0
- package/node_modules/zod/v4/classic/external.js +20 -0
- package/node_modules/zod/v4/classic/from-json-schema.cjs +610 -0
- package/node_modules/zod/v4/classic/from-json-schema.d.cts +12 -0
- package/node_modules/zod/v4/classic/from-json-schema.d.ts +12 -0
- package/node_modules/zod/v4/classic/from-json-schema.js +584 -0
- package/node_modules/zod/v4/classic/index.cjs +33 -0
- package/node_modules/zod/v4/classic/index.d.cts +4 -0
- package/node_modules/zod/v4/classic/index.d.ts +4 -0
- package/node_modules/zod/v4/classic/index.js +4 -0
- package/node_modules/zod/v4/classic/iso.cjs +60 -0
- package/node_modules/zod/v4/classic/iso.d.cts +22 -0
- package/node_modules/zod/v4/classic/iso.d.ts +22 -0
- package/node_modules/zod/v4/classic/iso.js +30 -0
- package/node_modules/zod/v4/classic/package.json +6 -0
- package/node_modules/zod/v4/classic/parse.cjs +41 -0
- package/node_modules/zod/v4/classic/parse.d.cts +31 -0
- package/node_modules/zod/v4/classic/parse.d.ts +31 -0
- package/node_modules/zod/v4/classic/parse.js +15 -0
- package/node_modules/zod/v4/classic/schemas.cjs +1272 -0
- package/node_modules/zod/v4/classic/schemas.d.cts +739 -0
- package/node_modules/zod/v4/classic/schemas.d.ts +739 -0
- package/node_modules/zod/v4/classic/schemas.js +1157 -0
- package/node_modules/zod/v4/core/api.cjs +1222 -0
- package/node_modules/zod/v4/core/api.d.cts +304 -0
- package/node_modules/zod/v4/core/api.d.ts +304 -0
- package/node_modules/zod/v4/core/api.js +1082 -0
- package/node_modules/zod/v4/core/checks.cjs +601 -0
- package/node_modules/zod/v4/core/checks.d.cts +278 -0
- package/node_modules/zod/v4/core/checks.d.ts +278 -0
- package/node_modules/zod/v4/core/checks.js +575 -0
- package/node_modules/zod/v4/core/core.cjs +83 -0
- package/node_modules/zod/v4/core/core.d.cts +70 -0
- package/node_modules/zod/v4/core/core.d.ts +70 -0
- package/node_modules/zod/v4/core/core.js +76 -0
- package/node_modules/zod/v4/core/doc.cjs +39 -0
- package/node_modules/zod/v4/core/doc.d.cts +14 -0
- package/node_modules/zod/v4/core/doc.d.ts +14 -0
- package/node_modules/zod/v4/core/doc.js +35 -0
- package/node_modules/zod/v4/core/errors.cjs +213 -0
- package/node_modules/zod/v4/core/errors.d.cts +220 -0
- package/node_modules/zod/v4/core/errors.d.ts +220 -0
- package/node_modules/zod/v4/core/errors.js +182 -0
- package/node_modules/zod/v4/core/index.cjs +47 -0
- package/node_modules/zod/v4/core/index.d.cts +16 -0
- package/node_modules/zod/v4/core/index.d.ts +16 -0
- package/node_modules/zod/v4/core/index.js +16 -0
- package/node_modules/zod/v4/core/json-schema-generator.cjs +99 -0
- package/node_modules/zod/v4/core/json-schema-generator.d.cts +65 -0
- package/node_modules/zod/v4/core/json-schema-generator.d.ts +65 -0
- package/node_modules/zod/v4/core/json-schema-generator.js +95 -0
- package/node_modules/zod/v4/core/json-schema-processors.cjs +648 -0
- package/node_modules/zod/v4/core/json-schema-processors.d.cts +49 -0
- package/node_modules/zod/v4/core/json-schema-processors.d.ts +49 -0
- package/node_modules/zod/v4/core/json-schema-processors.js +605 -0
- package/node_modules/zod/v4/core/json-schema.cjs +2 -0
- package/node_modules/zod/v4/core/json-schema.d.cts +88 -0
- package/node_modules/zod/v4/core/json-schema.d.ts +88 -0
- package/node_modules/zod/v4/core/json-schema.js +1 -0
- package/node_modules/zod/v4/core/package.json +6 -0
- package/node_modules/zod/v4/core/parse.cjs +131 -0
- package/node_modules/zod/v4/core/parse.d.cts +49 -0
- package/node_modules/zod/v4/core/parse.d.ts +49 -0
- package/node_modules/zod/v4/core/parse.js +93 -0
- package/node_modules/zod/v4/core/regexes.cjs +166 -0
- package/node_modules/zod/v4/core/regexes.d.cts +79 -0
- package/node_modules/zod/v4/core/regexes.d.ts +79 -0
- package/node_modules/zod/v4/core/regexes.js +133 -0
- package/node_modules/zod/v4/core/registries.cjs +56 -0
- package/node_modules/zod/v4/core/registries.d.cts +35 -0
- package/node_modules/zod/v4/core/registries.d.ts +35 -0
- package/node_modules/zod/v4/core/registries.js +51 -0
- package/node_modules/zod/v4/core/schemas.cjs +2124 -0
- package/node_modules/zod/v4/core/schemas.d.cts +1146 -0
- package/node_modules/zod/v4/core/schemas.d.ts +1146 -0
- package/node_modules/zod/v4/core/schemas.js +2093 -0
- package/node_modules/zod/v4/core/standard-schema.cjs +2 -0
- package/node_modules/zod/v4/core/standard-schema.d.cts +126 -0
- package/node_modules/zod/v4/core/standard-schema.d.ts +126 -0
- package/node_modules/zod/v4/core/standard-schema.js +1 -0
- package/node_modules/zod/v4/core/to-json-schema.cjs +446 -0
- package/node_modules/zod/v4/core/to-json-schema.d.cts +114 -0
- package/node_modules/zod/v4/core/to-json-schema.d.ts +114 -0
- package/node_modules/zod/v4/core/to-json-schema.js +437 -0
- package/node_modules/zod/v4/core/util.cjs +710 -0
- package/node_modules/zod/v4/core/util.d.cts +199 -0
- package/node_modules/zod/v4/core/util.d.ts +199 -0
- package/node_modules/zod/v4/core/util.js +651 -0
- package/node_modules/zod/v4/core/versions.cjs +8 -0
- package/node_modules/zod/v4/core/versions.d.cts +5 -0
- package/node_modules/zod/v4/core/versions.d.ts +5 -0
- package/node_modules/zod/v4/core/versions.js +5 -0
- package/node_modules/zod/v4/index.cjs +22 -0
- package/node_modules/zod/v4/index.d.cts +3 -0
- package/node_modules/zod/v4/index.d.ts +3 -0
- package/node_modules/zod/v4/index.js +3 -0
- package/node_modules/zod/v4/locales/ar.cjs +133 -0
- package/node_modules/zod/v4/locales/ar.d.cts +5 -0
- package/node_modules/zod/v4/locales/ar.d.ts +4 -0
- package/node_modules/zod/v4/locales/ar.js +106 -0
- package/node_modules/zod/v4/locales/az.cjs +132 -0
- package/node_modules/zod/v4/locales/az.d.cts +5 -0
- package/node_modules/zod/v4/locales/az.d.ts +4 -0
- package/node_modules/zod/v4/locales/az.js +105 -0
- package/node_modules/zod/v4/locales/be.cjs +183 -0
- package/node_modules/zod/v4/locales/be.d.cts +5 -0
- package/node_modules/zod/v4/locales/be.d.ts +4 -0
- package/node_modules/zod/v4/locales/be.js +156 -0
- package/node_modules/zod/v4/locales/bg.cjs +147 -0
- package/node_modules/zod/v4/locales/bg.d.cts +5 -0
- package/node_modules/zod/v4/locales/bg.d.ts +4 -0
- package/node_modules/zod/v4/locales/bg.js +120 -0
- package/node_modules/zod/v4/locales/ca.cjs +134 -0
- package/node_modules/zod/v4/locales/ca.d.cts +5 -0
- package/node_modules/zod/v4/locales/ca.d.ts +4 -0
- package/node_modules/zod/v4/locales/ca.js +107 -0
- package/node_modules/zod/v4/locales/cs.cjs +138 -0
- package/node_modules/zod/v4/locales/cs.d.cts +5 -0
- package/node_modules/zod/v4/locales/cs.d.ts +4 -0
- package/node_modules/zod/v4/locales/cs.js +111 -0
- package/node_modules/zod/v4/locales/da.cjs +142 -0
- package/node_modules/zod/v4/locales/da.d.cts +5 -0
- package/node_modules/zod/v4/locales/da.d.ts +4 -0
- package/node_modules/zod/v4/locales/da.js +115 -0
- package/node_modules/zod/v4/locales/de.cjs +135 -0
- package/node_modules/zod/v4/locales/de.d.cts +5 -0
- package/node_modules/zod/v4/locales/de.d.ts +4 -0
- package/node_modules/zod/v4/locales/de.js +108 -0
- package/node_modules/zod/v4/locales/en.cjs +136 -0
- package/node_modules/zod/v4/locales/en.d.cts +5 -0
- package/node_modules/zod/v4/locales/en.d.ts +4 -0
- package/node_modules/zod/v4/locales/en.js +109 -0
- package/node_modules/zod/v4/locales/eo.cjs +136 -0
- package/node_modules/zod/v4/locales/eo.d.cts +5 -0
- package/node_modules/zod/v4/locales/eo.d.ts +4 -0
- package/node_modules/zod/v4/locales/eo.js +109 -0
- package/node_modules/zod/v4/locales/es.cjs +159 -0
- package/node_modules/zod/v4/locales/es.d.cts +5 -0
- package/node_modules/zod/v4/locales/es.d.ts +4 -0
- package/node_modules/zod/v4/locales/es.js +132 -0
- package/node_modules/zod/v4/locales/fa.cjs +141 -0
- package/node_modules/zod/v4/locales/fa.d.cts +5 -0
- package/node_modules/zod/v4/locales/fa.d.ts +4 -0
- package/node_modules/zod/v4/locales/fa.js +114 -0
- package/node_modules/zod/v4/locales/fi.cjs +139 -0
- package/node_modules/zod/v4/locales/fi.d.cts +5 -0
- package/node_modules/zod/v4/locales/fi.d.ts +4 -0
- package/node_modules/zod/v4/locales/fi.js +112 -0
- package/node_modules/zod/v4/locales/fr-CA.cjs +134 -0
- package/node_modules/zod/v4/locales/fr-CA.d.cts +5 -0
- package/node_modules/zod/v4/locales/fr-CA.d.ts +4 -0
- package/node_modules/zod/v4/locales/fr-CA.js +107 -0
- package/node_modules/zod/v4/locales/fr.cjs +135 -0
- package/node_modules/zod/v4/locales/fr.d.cts +5 -0
- package/node_modules/zod/v4/locales/fr.d.ts +4 -0
- package/node_modules/zod/v4/locales/fr.js +108 -0
- package/node_modules/zod/v4/locales/he.cjs +241 -0
- package/node_modules/zod/v4/locales/he.d.cts +5 -0
- package/node_modules/zod/v4/locales/he.d.ts +4 -0
- package/node_modules/zod/v4/locales/he.js +214 -0
- package/node_modules/zod/v4/locales/hu.cjs +135 -0
- package/node_modules/zod/v4/locales/hu.d.cts +5 -0
- package/node_modules/zod/v4/locales/hu.d.ts +4 -0
- package/node_modules/zod/v4/locales/hu.js +108 -0
- package/node_modules/zod/v4/locales/hy.cjs +174 -0
- package/node_modules/zod/v4/locales/hy.d.cts +5 -0
- package/node_modules/zod/v4/locales/hy.d.ts +4 -0
- package/node_modules/zod/v4/locales/hy.js +147 -0
- package/node_modules/zod/v4/locales/id.cjs +133 -0
- package/node_modules/zod/v4/locales/id.d.cts +5 -0
- package/node_modules/zod/v4/locales/id.d.ts +4 -0
- package/node_modules/zod/v4/locales/id.js +106 -0
- package/node_modules/zod/v4/locales/index.cjs +104 -0
- package/node_modules/zod/v4/locales/index.d.cts +49 -0
- package/node_modules/zod/v4/locales/index.d.ts +49 -0
- package/node_modules/zod/v4/locales/index.js +49 -0
- package/node_modules/zod/v4/locales/is.cjs +136 -0
- package/node_modules/zod/v4/locales/is.d.cts +5 -0
- package/node_modules/zod/v4/locales/is.d.ts +4 -0
- package/node_modules/zod/v4/locales/is.js +109 -0
- package/node_modules/zod/v4/locales/it.cjs +135 -0
- package/node_modules/zod/v4/locales/it.d.cts +5 -0
- package/node_modules/zod/v4/locales/it.d.ts +4 -0
- package/node_modules/zod/v4/locales/it.js +108 -0
- package/node_modules/zod/v4/locales/ja.cjs +134 -0
- package/node_modules/zod/v4/locales/ja.d.cts +5 -0
- package/node_modules/zod/v4/locales/ja.d.ts +4 -0
- package/node_modules/zod/v4/locales/ja.js +107 -0
- package/node_modules/zod/v4/locales/ka.cjs +139 -0
- package/node_modules/zod/v4/locales/ka.d.cts +5 -0
- package/node_modules/zod/v4/locales/ka.d.ts +4 -0
- package/node_modules/zod/v4/locales/ka.js +112 -0
- package/node_modules/zod/v4/locales/kh.cjs +12 -0
- package/node_modules/zod/v4/locales/kh.d.cts +5 -0
- package/node_modules/zod/v4/locales/kh.d.ts +5 -0
- package/node_modules/zod/v4/locales/kh.js +5 -0
- package/node_modules/zod/v4/locales/km.cjs +137 -0
- package/node_modules/zod/v4/locales/km.d.cts +5 -0
- package/node_modules/zod/v4/locales/km.d.ts +4 -0
- package/node_modules/zod/v4/locales/km.js +110 -0
- package/node_modules/zod/v4/locales/ko.cjs +138 -0
- package/node_modules/zod/v4/locales/ko.d.cts +5 -0
- package/node_modules/zod/v4/locales/ko.d.ts +4 -0
- package/node_modules/zod/v4/locales/ko.js +111 -0
- package/node_modules/zod/v4/locales/lt.cjs +230 -0
- package/node_modules/zod/v4/locales/lt.d.cts +5 -0
- package/node_modules/zod/v4/locales/lt.d.ts +4 -0
- package/node_modules/zod/v4/locales/lt.js +203 -0
- package/node_modules/zod/v4/locales/mk.cjs +136 -0
- package/node_modules/zod/v4/locales/mk.d.cts +5 -0
- package/node_modules/zod/v4/locales/mk.d.ts +4 -0
- package/node_modules/zod/v4/locales/mk.js +109 -0
- package/node_modules/zod/v4/locales/ms.cjs +134 -0
- package/node_modules/zod/v4/locales/ms.d.cts +5 -0
- package/node_modules/zod/v4/locales/ms.d.ts +4 -0
- package/node_modules/zod/v4/locales/ms.js +107 -0
- package/node_modules/zod/v4/locales/nl.cjs +137 -0
- package/node_modules/zod/v4/locales/nl.d.cts +5 -0
- package/node_modules/zod/v4/locales/nl.d.ts +4 -0
- package/node_modules/zod/v4/locales/nl.js +110 -0
- package/node_modules/zod/v4/locales/no.cjs +135 -0
- package/node_modules/zod/v4/locales/no.d.cts +5 -0
- package/node_modules/zod/v4/locales/no.d.ts +4 -0
- package/node_modules/zod/v4/locales/no.js +108 -0
- package/node_modules/zod/v4/locales/ota.cjs +136 -0
- package/node_modules/zod/v4/locales/ota.d.cts +5 -0
- package/node_modules/zod/v4/locales/ota.d.ts +4 -0
- package/node_modules/zod/v4/locales/ota.js +109 -0
- package/node_modules/zod/v4/locales/package.json +6 -0
- package/node_modules/zod/v4/locales/pl.cjs +136 -0
- package/node_modules/zod/v4/locales/pl.d.cts +5 -0
- package/node_modules/zod/v4/locales/pl.d.ts +4 -0
- package/node_modules/zod/v4/locales/pl.js +109 -0
- package/node_modules/zod/v4/locales/ps.cjs +141 -0
- package/node_modules/zod/v4/locales/ps.d.cts +5 -0
- package/node_modules/zod/v4/locales/ps.d.ts +4 -0
- package/node_modules/zod/v4/locales/ps.js +114 -0
- package/node_modules/zod/v4/locales/pt.cjs +135 -0
- package/node_modules/zod/v4/locales/pt.d.cts +5 -0
- package/node_modules/zod/v4/locales/pt.d.ts +4 -0
- package/node_modules/zod/v4/locales/pt.js +108 -0
- package/node_modules/zod/v4/locales/ru.cjs +183 -0
- package/node_modules/zod/v4/locales/ru.d.cts +5 -0
- package/node_modules/zod/v4/locales/ru.d.ts +4 -0
- package/node_modules/zod/v4/locales/ru.js +156 -0
- package/node_modules/zod/v4/locales/sl.cjs +136 -0
- package/node_modules/zod/v4/locales/sl.d.cts +5 -0
- package/node_modules/zod/v4/locales/sl.d.ts +4 -0
- package/node_modules/zod/v4/locales/sl.js +109 -0
- package/node_modules/zod/v4/locales/sv.cjs +137 -0
- package/node_modules/zod/v4/locales/sv.d.cts +5 -0
- package/node_modules/zod/v4/locales/sv.d.ts +4 -0
- package/node_modules/zod/v4/locales/sv.js +110 -0
- package/node_modules/zod/v4/locales/ta.cjs +137 -0
- package/node_modules/zod/v4/locales/ta.d.cts +5 -0
- package/node_modules/zod/v4/locales/ta.d.ts +4 -0
- package/node_modules/zod/v4/locales/ta.js +110 -0
- package/node_modules/zod/v4/locales/th.cjs +137 -0
- package/node_modules/zod/v4/locales/th.d.cts +5 -0
- package/node_modules/zod/v4/locales/th.d.ts +4 -0
- package/node_modules/zod/v4/locales/th.js +110 -0
- package/node_modules/zod/v4/locales/tr.cjs +132 -0
- package/node_modules/zod/v4/locales/tr.d.cts +5 -0
- package/node_modules/zod/v4/locales/tr.d.ts +4 -0
- package/node_modules/zod/v4/locales/tr.js +105 -0
- package/node_modules/zod/v4/locales/ua.cjs +12 -0
- package/node_modules/zod/v4/locales/ua.d.cts +5 -0
- package/node_modules/zod/v4/locales/ua.d.ts +5 -0
- package/node_modules/zod/v4/locales/ua.js +5 -0
- package/node_modules/zod/v4/locales/uk.cjs +135 -0
- package/node_modules/zod/v4/locales/uk.d.cts +5 -0
- package/node_modules/zod/v4/locales/uk.d.ts +4 -0
- package/node_modules/zod/v4/locales/uk.js +108 -0
- package/node_modules/zod/v4/locales/ur.cjs +137 -0
- package/node_modules/zod/v4/locales/ur.d.cts +5 -0
- package/node_modules/zod/v4/locales/ur.d.ts +4 -0
- package/node_modules/zod/v4/locales/ur.js +110 -0
- package/node_modules/zod/v4/locales/uz.cjs +136 -0
- package/node_modules/zod/v4/locales/uz.d.cts +5 -0
- package/node_modules/zod/v4/locales/uz.d.ts +4 -0
- package/node_modules/zod/v4/locales/uz.js +109 -0
- package/node_modules/zod/v4/locales/vi.cjs +135 -0
- package/node_modules/zod/v4/locales/vi.d.cts +5 -0
- package/node_modules/zod/v4/locales/vi.d.ts +4 -0
- package/node_modules/zod/v4/locales/vi.js +108 -0
- package/node_modules/zod/v4/locales/yo.cjs +134 -0
- package/node_modules/zod/v4/locales/yo.d.cts +5 -0
- package/node_modules/zod/v4/locales/yo.d.ts +4 -0
- package/node_modules/zod/v4/locales/yo.js +107 -0
- package/node_modules/zod/v4/locales/zh-CN.cjs +136 -0
- package/node_modules/zod/v4/locales/zh-CN.d.cts +5 -0
- package/node_modules/zod/v4/locales/zh-CN.d.ts +4 -0
- package/node_modules/zod/v4/locales/zh-CN.js +109 -0
- package/node_modules/zod/v4/locales/zh-TW.cjs +134 -0
- package/node_modules/zod/v4/locales/zh-TW.d.cts +5 -0
- package/node_modules/zod/v4/locales/zh-TW.d.ts +4 -0
- package/node_modules/zod/v4/locales/zh-TW.js +107 -0
- package/node_modules/zod/v4/mini/checks.cjs +34 -0
- package/node_modules/zod/v4/mini/checks.d.cts +1 -0
- package/node_modules/zod/v4/mini/checks.d.ts +1 -0
- package/node_modules/zod/v4/mini/checks.js +1 -0
- package/node_modules/zod/v4/mini/coerce.cjs +52 -0
- package/node_modules/zod/v4/mini/coerce.d.cts +7 -0
- package/node_modules/zod/v4/mini/coerce.d.ts +7 -0
- package/node_modules/zod/v4/mini/coerce.js +22 -0
- package/node_modules/zod/v4/mini/external.cjs +63 -0
- package/node_modules/zod/v4/mini/external.d.cts +12 -0
- package/node_modules/zod/v4/mini/external.d.ts +12 -0
- package/node_modules/zod/v4/mini/external.js +14 -0
- package/node_modules/zod/v4/mini/index.cjs +32 -0
- package/node_modules/zod/v4/mini/index.d.cts +3 -0
- package/node_modules/zod/v4/mini/index.d.ts +3 -0
- package/node_modules/zod/v4/mini/index.js +3 -0
- package/node_modules/zod/v4/mini/iso.cjs +64 -0
- package/node_modules/zod/v4/mini/iso.d.cts +22 -0
- package/node_modules/zod/v4/mini/iso.d.ts +22 -0
- package/node_modules/zod/v4/mini/iso.js +34 -0
- package/node_modules/zod/v4/mini/package.json +6 -0
- package/node_modules/zod/v4/mini/parse.cjs +16 -0
- package/node_modules/zod/v4/mini/parse.d.cts +1 -0
- package/node_modules/zod/v4/mini/parse.d.ts +1 -0
- package/node_modules/zod/v4/mini/parse.js +1 -0
- package/node_modules/zod/v4/mini/schemas.cjs +1046 -0
- package/node_modules/zod/v4/mini/schemas.d.cts +427 -0
- package/node_modules/zod/v4/mini/schemas.d.ts +427 -0
- package/node_modules/zod/v4/mini/schemas.js +925 -0
- package/node_modules/zod/v4/package.json +6 -0
- package/node_modules/zod/v4-mini/index.cjs +32 -0
- package/node_modules/zod/v4-mini/index.d.cts +3 -0
- package/node_modules/zod/v4-mini/index.d.ts +3 -0
- package/node_modules/zod/v4-mini/index.js +3 -0
- package/node_modules/zod/v4-mini/package.json +6 -0
- package/package.json +3 -2
- package/src/__tests__/command-executor.test.ts +575 -60
- package/src/__tests__/command-validator.test.ts +697 -0
- package/src/__tests__/command-workspace.test.ts +30 -0
- package/src/__tests__/grant-store.test.ts +151 -33
- package/src/__tests__/http-executor.test.ts +106 -16
- package/src/__tests__/http-policy.test.ts +121 -22
- package/src/__tests__/local-materializers.test.ts +34 -0
- package/src/__tests__/managed-integration.test.ts +633 -0
- package/src/__tests__/managed-lazy-getters.test.ts +245 -0
- package/src/__tests__/managed-materializers.test.ts +107 -38
- package/src/__tests__/managed-rejection.test.ts +43 -0
- package/src/__tests__/toolstore.test.ts +207 -18
- package/src/__tests__/transport.test.ts +26 -6
- package/src/commands/auth-adapters.ts +2 -2
- package/src/commands/egress-hooks.ts +203 -0
- package/src/commands/executor.ts +403 -87
- package/src/commands/profiles.ts +4 -0
- package/src/commands/validator.ts +267 -3
- package/src/commands/workspace.ts +59 -21
- package/src/grants/index.ts +1 -1
- package/src/grants/persistent-store.ts +79 -17
- package/src/grants/rpc-handlers.ts +67 -43
- package/src/grants/temporary-store.ts +26 -19
- package/src/http/executor.ts +170 -25
- package/src/http/path-template.ts +75 -9
- package/src/http/policy.ts +9 -27
- package/src/index.ts +3 -0
- package/src/main.ts +102 -43
- package/src/managed-errors.ts +9 -0
- package/src/managed-lazy-getters.ts +70 -0
- package/src/managed-main.ts +191 -65
- package/src/materializers/local-oauth-lookup.ts +97 -0
- package/src/materializers/local-secure-key-backend.ts +254 -0
- package/src/materializers/local-token-refresh.ts +263 -0
- package/src/materializers/local.ts +21 -5
- package/src/materializers/managed-platform.ts +50 -25
- package/src/paths.ts +28 -10
- package/src/server.ts +147 -11
- package/src/subjects/managed.ts +33 -12
- package/src/subjects/policy.ts +79 -0
- 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,
|
|
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("
|
|
460
|
+
describe("allow_conversation", () => {
|
|
343
461
|
test("requires conversationId", () => {
|
|
344
|
-
expect(() => store.add("
|
|
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("
|
|
468
|
+
store.add("allow_conversation", "hash-t", { conversationId: "conv-1" });
|
|
351
469
|
|
|
352
|
-
expect(store.check("
|
|
470
|
+
expect(store.check("allow_conversation", "hash-t", "conv-1")).toBe(true);
|
|
353
471
|
// Different conversation should not match
|
|
354
|
-
expect(store.check("
|
|
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("
|
|
359
|
-
store.add("
|
|
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("
|
|
362
|
-
expect(store.check("
|
|
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
|
|
366
|
-
store.add("
|
|
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("
|
|
369
|
-
expect(store.check("
|
|
370
|
-
expect(store.check("
|
|
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
|
|
388
|
-
store.add("
|
|
389
|
-
expect(store.checkAny("hash-any-th", "conv-x")).toBe("
|
|
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
|
|
418
|
-
store.add("
|
|
419
|
-
store.add("
|
|
420
|
-
store.add("
|
|
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("
|
|
425
|
-
expect(store.check("
|
|
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("
|
|
545
|
+
expect(store.check("allow_conversation", "hash-3", "conv-keep")).toBe(true);
|
|
428
546
|
});
|
|
429
547
|
|
|
430
|
-
test("does not affect non-
|
|
431
|
-
store.add("allow_once", "hash-non-
|
|
432
|
-
store.add("allow_10m", "hash-non-
|
|
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-
|
|
437
|
-
expect(store.check("allow_once", "hash-non-
|
|
438
|
-
expect(store.check("allow_10m", "hash-non-
|
|
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("
|
|
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("
|
|
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("/
|
|
566
|
+
if (urlStr.includes("/oauth/managed/catalog")) {
|
|
559
567
|
return new Response(
|
|
560
|
-
JSON.stringify(
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
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("/
|
|
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
|
-
|
|
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 () => {
|