@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
|
@@ -70,6 +70,9 @@ export class MaterializationError extends Error {
|
|
|
70
70
|
/**
|
|
71
71
|
* Shape of the platform's CES token-materialization response.
|
|
72
72
|
*
|
|
73
|
+
* Field names match the platform's ManagedTokenMaterializeResponseSerializer:
|
|
74
|
+
* access_token, token_type, expires_at, provider, handle
|
|
75
|
+
*
|
|
73
76
|
* The platform issues a short-lived access token for the specified
|
|
74
77
|
* connection. The token is pre-authorized for the scopes granted on
|
|
75
78
|
* the connection.
|
|
@@ -77,8 +80,10 @@ export class MaterializationError extends Error {
|
|
|
77
80
|
interface PlatformTokenResponse {
|
|
78
81
|
access_token: string;
|
|
79
82
|
token_type?: string;
|
|
80
|
-
/**
|
|
81
|
-
|
|
83
|
+
/** ISO-8601 datetime when the token expires (null if no expiry). */
|
|
84
|
+
expires_at?: string | null;
|
|
85
|
+
provider?: string;
|
|
86
|
+
handle?: string;
|
|
82
87
|
}
|
|
83
88
|
|
|
84
89
|
// ---------------------------------------------------------------------------
|
|
@@ -94,6 +99,11 @@ export interface ManagedMaterializerOptions {
|
|
|
94
99
|
* Assistant API key for authenticating with the platform.
|
|
95
100
|
*/
|
|
96
101
|
assistantApiKey: string;
|
|
102
|
+
/**
|
|
103
|
+
* Platform-assigned assistant UUID. Required for building the
|
|
104
|
+
* platform materialize URL: /v1/assistants/<id>/oauth/managed/materialize/
|
|
105
|
+
*/
|
|
106
|
+
assistantId: string;
|
|
97
107
|
/**
|
|
98
108
|
* Optional custom fetch implementation (for testing).
|
|
99
109
|
*/
|
|
@@ -109,7 +119,9 @@ export interface ManagedMaterializerOptions {
|
|
|
109
119
|
* by calling the platform's token-materialization endpoint.
|
|
110
120
|
*
|
|
111
121
|
* The endpoint is:
|
|
112
|
-
* POST {platformBaseUrl}/v1/
|
|
122
|
+
* POST {platformBaseUrl}/v1/assistants/{assistantId}/oauth/managed/materialize/
|
|
123
|
+
*
|
|
124
|
+
* The request body contains `{ connection_id: <uuid> }`.
|
|
113
125
|
*
|
|
114
126
|
* The platform validates the assistant API key, checks that the connection
|
|
115
127
|
* is active, and returns a fresh access token (refreshing upstream if
|
|
@@ -120,7 +132,7 @@ export interface ManagedMaterializerOptions {
|
|
|
120
132
|
*/
|
|
121
133
|
export async function materializeManagedToken(
|
|
122
134
|
subject: ManagedSubject,
|
|
123
|
-
options: ManagedMaterializerOptions
|
|
135
|
+
options: ManagedMaterializerOptions
|
|
124
136
|
): Promise<MaterializeResult> {
|
|
125
137
|
// -- Validate prerequisites -----------------------------------------------
|
|
126
138
|
if (!options.platformBaseUrl) {
|
|
@@ -128,7 +140,7 @@ export async function materializeManagedToken(
|
|
|
128
140
|
ok: false,
|
|
129
141
|
error: new MaterializationError(
|
|
130
142
|
"MISSING_PLATFORM_URL",
|
|
131
|
-
"Platform base URL is required for managed token materialization"
|
|
143
|
+
"Platform base URL is required for managed token materialization"
|
|
132
144
|
),
|
|
133
145
|
};
|
|
134
146
|
}
|
|
@@ -138,15 +150,28 @@ export async function materializeManagedToken(
|
|
|
138
150
|
ok: false,
|
|
139
151
|
error: new MaterializationError(
|
|
140
152
|
"MISSING_API_KEY",
|
|
141
|
-
"Assistant API key is required for managed token materialization"
|
|
153
|
+
"Assistant API key is required for managed token materialization"
|
|
154
|
+
),
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
if (!options.assistantId) {
|
|
159
|
+
return {
|
|
160
|
+
ok: false,
|
|
161
|
+
error: new MaterializationError(
|
|
162
|
+
"MISSING_ASSISTANT_ID",
|
|
163
|
+
"Assistant ID is required for managed token materialization"
|
|
142
164
|
),
|
|
143
165
|
};
|
|
144
166
|
}
|
|
145
167
|
|
|
146
168
|
// -- Call platform token endpoint -----------------------------------------
|
|
147
169
|
const fetchFn = options.fetch ?? globalThis.fetch;
|
|
148
|
-
const materializeUrl =
|
|
149
|
-
|
|
170
|
+
const materializeUrl = `${
|
|
171
|
+
options.platformBaseUrl
|
|
172
|
+
}/v1/assistants/${encodeURIComponent(
|
|
173
|
+
options.assistantId
|
|
174
|
+
)}/oauth/managed/materialize/`;
|
|
150
175
|
|
|
151
176
|
let response: Response;
|
|
152
177
|
try {
|
|
@@ -157,7 +182,7 @@ export async function materializeManagedToken(
|
|
|
157
182
|
Accept: "application/json",
|
|
158
183
|
"Content-Type": "application/json",
|
|
159
184
|
},
|
|
160
|
-
body: JSON.stringify({}),
|
|
185
|
+
body: JSON.stringify({ connection_id: subject.connectionId }),
|
|
161
186
|
});
|
|
162
187
|
} catch (err) {
|
|
163
188
|
const message = err instanceof Error ? err.message : String(err);
|
|
@@ -165,7 +190,7 @@ export async function materializeManagedToken(
|
|
|
165
190
|
ok: false,
|
|
166
191
|
error: new MaterializationError(
|
|
167
192
|
"PLATFORM_UNREACHABLE",
|
|
168
|
-
`Failed to reach platform token endpoint: ${sanitizeError(message)}
|
|
193
|
+
`Failed to reach platform token endpoint: ${sanitizeError(message)}`
|
|
169
194
|
),
|
|
170
195
|
};
|
|
171
196
|
}
|
|
@@ -187,7 +212,7 @@ export async function materializeManagedToken(
|
|
|
187
212
|
ok: false,
|
|
188
213
|
error: new MaterializationError(
|
|
189
214
|
"INVALID_TOKEN_RESPONSE",
|
|
190
|
-
"Platform token endpoint returned invalid JSON"
|
|
215
|
+
"Platform token endpoint returned invalid JSON"
|
|
191
216
|
),
|
|
192
217
|
};
|
|
193
218
|
}
|
|
@@ -197,13 +222,13 @@ export async function materializeManagedToken(
|
|
|
197
222
|
ok: false,
|
|
198
223
|
error: new MaterializationError(
|
|
199
224
|
"INVALID_TOKEN_RESPONSE",
|
|
200
|
-
"Platform token response missing access_token"
|
|
225
|
+
"Platform token response missing access_token"
|
|
201
226
|
),
|
|
202
227
|
};
|
|
203
228
|
}
|
|
204
229
|
|
|
205
230
|
// -- Build materialized token ---------------------------------------------
|
|
206
|
-
const expiresAt =
|
|
231
|
+
const expiresAt = parseExpiresAt(body.expires_at);
|
|
207
232
|
|
|
208
233
|
const token: MaterializedToken = {
|
|
209
234
|
accessToken: body.access_token,
|
|
@@ -225,41 +250,41 @@ export async function materializeManagedToken(
|
|
|
225
250
|
*/
|
|
226
251
|
function mapPlatformError(
|
|
227
252
|
status: number,
|
|
228
|
-
connectionId: string
|
|
253
|
+
connectionId: string
|
|
229
254
|
): MaterializationError {
|
|
230
255
|
switch (status) {
|
|
231
256
|
case 401:
|
|
232
257
|
return new MaterializationError(
|
|
233
258
|
"PLATFORM_AUTH_FAILED",
|
|
234
|
-
"Assistant API key is invalid or expired (HTTP 401)"
|
|
259
|
+
"Assistant API key is invalid or expired (HTTP 401)"
|
|
235
260
|
);
|
|
236
261
|
case 403:
|
|
237
262
|
return new MaterializationError(
|
|
238
263
|
"PLATFORM_FORBIDDEN",
|
|
239
|
-
"Assistant is not authorized to materialize this connection (HTTP 403)"
|
|
264
|
+
"Assistant is not authorized to materialize this connection (HTTP 403)"
|
|
240
265
|
);
|
|
241
266
|
case 404:
|
|
242
267
|
return new MaterializationError(
|
|
243
268
|
"CONNECTION_NOT_FOUND",
|
|
244
|
-
`Connection ${connectionId} not found on the platform (HTTP 404)
|
|
269
|
+
`Connection ${connectionId} not found on the platform (HTTP 404)`
|
|
245
270
|
);
|
|
246
271
|
default:
|
|
247
272
|
return new MaterializationError(
|
|
248
273
|
`PLATFORM_HTTP_${status}`,
|
|
249
|
-
`Platform token endpoint returned HTTP ${status}
|
|
274
|
+
`Platform token endpoint returned HTTP ${status}`
|
|
250
275
|
);
|
|
251
276
|
}
|
|
252
277
|
}
|
|
253
278
|
|
|
254
279
|
/**
|
|
255
|
-
*
|
|
256
|
-
* Returns null if the value is missing or
|
|
280
|
+
* Parse an ISO-8601 `expires_at` datetime string into epoch milliseconds.
|
|
281
|
+
* Returns null if the value is missing or invalid.
|
|
257
282
|
*/
|
|
258
|
-
function
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
if (
|
|
262
|
-
return
|
|
283
|
+
function parseExpiresAt(expiresAt: string | null | undefined): number | null {
|
|
284
|
+
if (expiresAt == null) return null;
|
|
285
|
+
const ts = new Date(expiresAt).getTime();
|
|
286
|
+
if (Number.isNaN(ts)) return null;
|
|
287
|
+
return ts;
|
|
263
288
|
}
|
|
264
289
|
|
|
265
290
|
/**
|
package/src/paths.ts
CHANGED
|
@@ -11,9 +11,9 @@
|
|
|
11
11
|
* - **Local**: CES private state lives under the Vellum root's `protected/`
|
|
12
12
|
* directory at `<rootDir>/protected/credential-executor/`.
|
|
13
13
|
*
|
|
14
|
-
* - **Managed**: CES private state lives at `/ces-data
|
|
15
|
-
*
|
|
16
|
-
* this
|
|
14
|
+
* - **Managed**: CES private state lives at `/ces-data` by default
|
|
15
|
+
* (overridable via `CES_DATA_DIR` env var). The assistant container never
|
|
16
|
+
* sees this path.
|
|
17
17
|
*
|
|
18
18
|
* The assistant-visible data root (where workspace, embeddings, etc. live)
|
|
19
19
|
* is a separate path and must never be used for CES-private writes.
|
|
@@ -51,19 +51,27 @@ function getVellumRootDir(): string {
|
|
|
51
51
|
return join(baseDataDir || homedir(), ".vellum");
|
|
52
52
|
}
|
|
53
53
|
|
|
54
|
-
/**
|
|
55
|
-
|
|
54
|
+
/**
|
|
55
|
+
* Default managed CES data root.
|
|
56
|
+
*
|
|
57
|
+
* Defaults to `/ces-data` — the platform template provisions this path
|
|
58
|
+
* via the `CES_DATA_DIR` env var and a dedicated PVC.
|
|
59
|
+
*/
|
|
60
|
+
const DEFAULT_MANAGED_CES_DATA_ROOT = "/ces-data";
|
|
56
61
|
|
|
57
62
|
/**
|
|
58
63
|
* Return the CES-private data root.
|
|
59
64
|
*
|
|
60
65
|
* - Local: `<vellumRoot>/protected/credential-executor/`
|
|
61
|
-
* - Managed: `/ces-data`
|
|
66
|
+
* - Managed: `CES_DATA_DIR` env var, or `/ces-data` by default
|
|
62
67
|
*/
|
|
63
68
|
export function getCesDataRoot(mode?: CesMode): string {
|
|
64
69
|
const resolvedMode = mode ?? getCesMode();
|
|
65
70
|
if (resolvedMode === "managed") {
|
|
66
|
-
return
|
|
71
|
+
return (
|
|
72
|
+
process.env["CES_DATA_DIR"] ??
|
|
73
|
+
DEFAULT_MANAGED_CES_DATA_ROOT
|
|
74
|
+
);
|
|
67
75
|
}
|
|
68
76
|
return join(getVellumRootDir(), "protected", "credential-executor");
|
|
69
77
|
}
|
|
@@ -92,7 +100,7 @@ export function getCesToolStoreDir(mode?: CesMode): string {
|
|
|
92
100
|
// ---------------------------------------------------------------------------
|
|
93
101
|
|
|
94
102
|
/** Default directory for the bootstrap Unix socket shared volume. */
|
|
95
|
-
const BOOTSTRAP_SOCKET_DIR = "/run/ces";
|
|
103
|
+
const BOOTSTRAP_SOCKET_DIR = "/run/ces-bootstrap";
|
|
96
104
|
|
|
97
105
|
/** Default bootstrap socket filename. */
|
|
98
106
|
const BOOTSTRAP_SOCKET_NAME = "ces.sock";
|
|
@@ -104,9 +112,19 @@ const BOOTSTRAP_SOCKET_NAME = "ces.sock";
|
|
|
104
112
|
* connection, then unlinks it. The path is on a shared `emptyDir` volume
|
|
105
113
|
* visible to both containers.
|
|
106
114
|
*
|
|
107
|
-
*
|
|
115
|
+
* Priority:
|
|
116
|
+
* 1. `CES_BOOTSTRAP_SOCKET_DIR` env var (directory) — appends `ces.sock`
|
|
117
|
+
* 2. `CES_BOOTSTRAP_SOCKET` env var (full file path override)
|
|
118
|
+
* 3. Hardcoded default: `/run/ces-bootstrap/ces.sock`
|
|
119
|
+
*
|
|
120
|
+
* The pod template exports `CES_BOOTSTRAP_SOCKET_DIR`; the full-path
|
|
121
|
+
* override is kept for local testing convenience.
|
|
108
122
|
*/
|
|
109
123
|
export function getBootstrapSocketPath(): string {
|
|
124
|
+
const dir = process.env["CES_BOOTSTRAP_SOCKET_DIR"];
|
|
125
|
+
if (dir) {
|
|
126
|
+
return join(dir, BOOTSTRAP_SOCKET_NAME);
|
|
127
|
+
}
|
|
110
128
|
return (
|
|
111
129
|
process.env["CES_BOOTSTRAP_SOCKET"] ??
|
|
112
130
|
join(BOOTSTRAP_SOCKET_DIR, BOOTSTRAP_SOCKET_NAME)
|
|
@@ -118,7 +136,7 @@ export function getBootstrapSocketPath(): string {
|
|
|
118
136
|
// ---------------------------------------------------------------------------
|
|
119
137
|
|
|
120
138
|
/** Default health probe port for managed CES. */
|
|
121
|
-
const DEFAULT_HEALTH_PORT =
|
|
139
|
+
const DEFAULT_HEALTH_PORT = 8090;
|
|
122
140
|
|
|
123
141
|
/**
|
|
124
142
|
* Return the health probe port for managed mode.
|
package/src/server.ts
CHANGED
|
@@ -20,6 +20,8 @@ import {
|
|
|
20
20
|
CES_PROTOCOL_VERSION,
|
|
21
21
|
CesRpcMethod,
|
|
22
22
|
CesRpcSchemas,
|
|
23
|
+
hashProposal,
|
|
24
|
+
type CommandGrantProposal,
|
|
23
25
|
type HandshakeAck,
|
|
24
26
|
type HandshakeRequest,
|
|
25
27
|
type MakeAuthenticatedRequest,
|
|
@@ -32,12 +34,16 @@ import {
|
|
|
32
34
|
TransportMessageSchema,
|
|
33
35
|
} from "@vellumai/ces-contracts";
|
|
34
36
|
|
|
37
|
+
import { resolve } from "node:path";
|
|
38
|
+
|
|
35
39
|
import {
|
|
36
40
|
executeAuthenticatedCommand,
|
|
37
41
|
type CommandExecutorDeps,
|
|
38
42
|
type ExecuteCommandRequest,
|
|
39
43
|
} from "./commands/executor.js";
|
|
40
44
|
|
|
45
|
+
import { validateContainedPath } from "./commands/workspace.js";
|
|
46
|
+
|
|
41
47
|
import {
|
|
42
48
|
executeAuthenticatedHttpRequest,
|
|
43
49
|
type HttpExecutorDeps,
|
|
@@ -47,6 +53,15 @@ import {
|
|
|
47
53
|
// Types
|
|
48
54
|
// ---------------------------------------------------------------------------
|
|
49
55
|
|
|
56
|
+
/**
|
|
57
|
+
* Mutable reference to the current session ID. Allows handlers that are
|
|
58
|
+
* registered before the RPC handshake to read the actual handshake session
|
|
59
|
+
* ID at call time (after the handshake completes and sets `.current`).
|
|
60
|
+
*/
|
|
61
|
+
export interface SessionIdRef {
|
|
62
|
+
current: string;
|
|
63
|
+
}
|
|
64
|
+
|
|
50
65
|
/**
|
|
51
66
|
* Handler function for a single RPC method. Receives the validated
|
|
52
67
|
* request payload and returns the response payload (or throws).
|
|
@@ -73,6 +88,10 @@ export interface CesServerOptions {
|
|
|
73
88
|
logger?: Pick<Console, "log" | "warn" | "error">;
|
|
74
89
|
/** Optional abort signal to shut down the server. */
|
|
75
90
|
signal?: AbortSignal;
|
|
91
|
+
/** Callback invoked when the handshake completes with the negotiated session ID and optional API key. */
|
|
92
|
+
onHandshakeComplete?: (sessionId: string, assistantApiKey?: string) => void;
|
|
93
|
+
/** Callback invoked when the assistant pushes an updated API key after hatch. */
|
|
94
|
+
onApiKeyUpdate?: (assistantApiKey: string) => void;
|
|
76
95
|
}
|
|
77
96
|
|
|
78
97
|
// ---------------------------------------------------------------------------
|
|
@@ -85,6 +104,7 @@ export class CesRpcServer {
|
|
|
85
104
|
private readonly handlers: RpcHandlerRegistry;
|
|
86
105
|
private readonly logger: Pick<Console, "log" | "warn" | "error">;
|
|
87
106
|
private readonly signal?: AbortSignal;
|
|
107
|
+
private readonly onHandshakeComplete?: (sessionId: string, assistantApiKey?: string) => void;
|
|
88
108
|
|
|
89
109
|
private handshakeComplete = false;
|
|
90
110
|
private sessionId: string | null = null;
|
|
@@ -97,6 +117,17 @@ export class CesRpcServer {
|
|
|
97
117
|
this.handlers = options.handlers;
|
|
98
118
|
this.logger = options.logger ?? console;
|
|
99
119
|
this.signal = options.signal;
|
|
120
|
+
this.onHandshakeComplete = options.onHandshakeComplete;
|
|
121
|
+
|
|
122
|
+
// Auto-register the update_managed_credential handler if a callback is provided.
|
|
123
|
+
if (options.onApiKeyUpdate) {
|
|
124
|
+
const onUpdate = options.onApiKeyUpdate;
|
|
125
|
+
this.handlers[CesRpcMethod.UpdateManagedCredential] = (request: unknown) => {
|
|
126
|
+
const { assistantApiKey } = request as { assistantApiKey: string };
|
|
127
|
+
onUpdate(assistantApiKey);
|
|
128
|
+
return { updated: true };
|
|
129
|
+
};
|
|
130
|
+
}
|
|
100
131
|
}
|
|
101
132
|
|
|
102
133
|
/**
|
|
@@ -154,9 +185,14 @@ export class CesRpcServer {
|
|
|
154
185
|
return this.sessionId;
|
|
155
186
|
}
|
|
156
187
|
|
|
157
|
-
/** Shut down the server gracefully. */
|
|
188
|
+
/** Shut down the server gracefully, destroying transport streams. */
|
|
158
189
|
close(): void {
|
|
190
|
+
if (this.closed) return;
|
|
159
191
|
this.closed = true;
|
|
192
|
+
this.input.destroy();
|
|
193
|
+
if (typeof (this.output as any).destroy === "function") {
|
|
194
|
+
this.output.destroy();
|
|
195
|
+
}
|
|
160
196
|
}
|
|
161
197
|
|
|
162
198
|
// -----------------------------------------------------------------------
|
|
@@ -195,9 +231,23 @@ export class CesRpcServer {
|
|
|
195
231
|
const msg = msgResult.data as TransportMessage;
|
|
196
232
|
|
|
197
233
|
if (msg.type === "handshake_request") {
|
|
234
|
+
if (this.handshakeComplete) {
|
|
235
|
+
this.logger.warn("[ces-server] Duplicate handshake_request after session established; rejecting");
|
|
236
|
+
const ack: HandshakeAck = {
|
|
237
|
+
type: "handshake_ack",
|
|
238
|
+
protocolVersion: CES_PROTOCOL_VERSION,
|
|
239
|
+
sessionId: (msg as HandshakeRequest).sessionId,
|
|
240
|
+
accepted: false,
|
|
241
|
+
reason: "Session already established",
|
|
242
|
+
};
|
|
243
|
+
this.sendMessage(ack);
|
|
244
|
+
return;
|
|
245
|
+
}
|
|
198
246
|
this.handleHandshake(msg as HandshakeRequest);
|
|
199
247
|
} else if (msg.type === "rpc") {
|
|
200
|
-
this.handleRpcEnvelope(msg as unknown as RpcEnvelope)
|
|
248
|
+
this.handleRpcEnvelope(msg as unknown as RpcEnvelope).catch((err) => {
|
|
249
|
+
this.logger.error(`[ces-server] Unhandled error in RPC handler: ${err}`);
|
|
250
|
+
});
|
|
201
251
|
} else {
|
|
202
252
|
this.logger.warn("[ces-server] Unexpected message type:", msg.type);
|
|
203
253
|
}
|
|
@@ -217,6 +267,7 @@ export class CesRpcServer {
|
|
|
217
267
|
this.handshakeComplete = true;
|
|
218
268
|
this.sessionId = req.sessionId;
|
|
219
269
|
this.logger.log(`[ces-server] Handshake accepted for session ${req.sessionId}`);
|
|
270
|
+
this.onHandshakeComplete?.(req.sessionId, req.assistantApiKey);
|
|
220
271
|
} else {
|
|
221
272
|
this.logger.warn(
|
|
222
273
|
`[ces-server] Handshake rejected: version mismatch (got ${req.protocolVersion}, expected ${CES_PROTOCOL_VERSION})`,
|
|
@@ -406,14 +457,46 @@ export function createRunAuthenticatedCommandHandler(
|
|
|
406
457
|
};
|
|
407
458
|
}
|
|
408
459
|
|
|
460
|
+
// Validate cwd when inputs or outputs are present — the workspace
|
|
461
|
+
// staging/copyback pipeline resolves paths relative to workspaceDir,
|
|
462
|
+
// so an unvalidated cwd could let a caller read/write outside the
|
|
463
|
+
// assistant workspace.
|
|
464
|
+
const workspaceDir = request.cwd ?? options.defaultWorkspaceDir;
|
|
465
|
+
const hasWorkspaceIO =
|
|
466
|
+
(request.inputs && request.inputs.length > 0) ||
|
|
467
|
+
(request.outputs && request.outputs.length > 0);
|
|
468
|
+
|
|
469
|
+
if (hasWorkspaceIO && request.cwd) {
|
|
470
|
+
const resolvedCwd = resolve(request.cwd);
|
|
471
|
+
const cwdError = validateContainedPath(
|
|
472
|
+
resolvedCwd,
|
|
473
|
+
options.defaultWorkspaceDir,
|
|
474
|
+
"Command cwd",
|
|
475
|
+
);
|
|
476
|
+
if (cwdError) {
|
|
477
|
+
return {
|
|
478
|
+
success: false,
|
|
479
|
+
error: {
|
|
480
|
+
code: "INVALID_CWD",
|
|
481
|
+
message:
|
|
482
|
+
`cwd cannot be used with inputs/outputs when it resolves outside ` +
|
|
483
|
+
`the workspace directory: ${cwdError}`,
|
|
484
|
+
},
|
|
485
|
+
};
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
|
|
409
489
|
const execRequest: ExecuteCommandRequest = {
|
|
410
490
|
bundleDigest: parseResult.bundleDigest,
|
|
411
491
|
profileName: parseResult.profileName,
|
|
412
492
|
credentialHandle: request.credentialHandle,
|
|
413
493
|
argv: parseResult.argv,
|
|
414
|
-
workspaceDir
|
|
494
|
+
workspaceDir,
|
|
495
|
+
inputs: request.inputs,
|
|
496
|
+
outputs: request.outputs,
|
|
415
497
|
purpose: request.purpose,
|
|
416
498
|
grantId: request.grantId,
|
|
499
|
+
conversationId: request.conversationId,
|
|
417
500
|
};
|
|
418
501
|
|
|
419
502
|
const result = await executeAuthenticatedCommand(
|
|
@@ -421,6 +504,35 @@ export function createRunAuthenticatedCommandHandler(
|
|
|
421
504
|
options.executorDeps,
|
|
422
505
|
);
|
|
423
506
|
|
|
507
|
+
// If the failure was due to a missing grant, return a structured
|
|
508
|
+
// APPROVAL_REQUIRED response with the proposal so the approval
|
|
509
|
+
// bridge can activate.
|
|
510
|
+
if (!result.success && result.approvalRequired) {
|
|
511
|
+
const { credentialHandle, bundleDigest, profileName, command, purpose } =
|
|
512
|
+
result.approvalRequired;
|
|
513
|
+
|
|
514
|
+
const proposal: CommandGrantProposal = {
|
|
515
|
+
type: "command",
|
|
516
|
+
credentialHandle,
|
|
517
|
+
command,
|
|
518
|
+
purpose,
|
|
519
|
+
allowedCommandPatterns: [`${credentialHandle}:${bundleDigest}:${profileName}`],
|
|
520
|
+
};
|
|
521
|
+
|
|
522
|
+
return {
|
|
523
|
+
success: false,
|
|
524
|
+
error: {
|
|
525
|
+
code: "APPROVAL_REQUIRED",
|
|
526
|
+
message: `No active grant covers this command. Approval is required.`,
|
|
527
|
+
details: {
|
|
528
|
+
proposal,
|
|
529
|
+
proposalHash: hashProposal(proposal),
|
|
530
|
+
},
|
|
531
|
+
},
|
|
532
|
+
auditId: result.auditId,
|
|
533
|
+
};
|
|
534
|
+
}
|
|
535
|
+
|
|
424
536
|
return {
|
|
425
537
|
success: result.success,
|
|
426
538
|
exitCode: result.exitCode,
|
|
@@ -561,6 +673,8 @@ export function createManageSecureCommandToolHandler(
|
|
|
561
673
|
if (!request.sourceUrl) missing.push("sourceUrl");
|
|
562
674
|
if (!request.sha256) missing.push("sha256");
|
|
563
675
|
if (!request.credentialHandle) missing.push("credentialHandle");
|
|
676
|
+
if (!request.description) missing.push("description");
|
|
677
|
+
if (!request.secureCommandManifest) missing.push("secureCommandManifest");
|
|
564
678
|
if (missing.length > 0) {
|
|
565
679
|
return {
|
|
566
680
|
success: false,
|
|
@@ -571,6 +685,29 @@ export function createManageSecureCommandToolHandler(
|
|
|
571
685
|
};
|
|
572
686
|
}
|
|
573
687
|
|
|
688
|
+
// Validate HTTPS before downloading — CES is the security boundary
|
|
689
|
+
// and must not rely on the caller for URL scheme validation.
|
|
690
|
+
try {
|
|
691
|
+
const parsed = new URL(request.sourceUrl!);
|
|
692
|
+
if (parsed.protocol !== "https:") {
|
|
693
|
+
return {
|
|
694
|
+
success: false,
|
|
695
|
+
error: {
|
|
696
|
+
code: "INVALID_SOURCE_URL",
|
|
697
|
+
message: "sourceUrl must use HTTPS for secure bundle downloads.",
|
|
698
|
+
},
|
|
699
|
+
};
|
|
700
|
+
}
|
|
701
|
+
} catch {
|
|
702
|
+
return {
|
|
703
|
+
success: false,
|
|
704
|
+
error: {
|
|
705
|
+
code: "INVALID_SOURCE_URL",
|
|
706
|
+
message: "sourceUrl is not a valid URL.",
|
|
707
|
+
},
|
|
708
|
+
};
|
|
709
|
+
}
|
|
710
|
+
|
|
574
711
|
// Download the bundle
|
|
575
712
|
let bundleBytes: Buffer | Uint8Array;
|
|
576
713
|
try {
|
|
@@ -585,6 +722,11 @@ export function createManageSecureCommandToolHandler(
|
|
|
585
722
|
};
|
|
586
723
|
}
|
|
587
724
|
|
|
725
|
+
// The caller provides the full secure command manifest via the RPC
|
|
726
|
+
// payload. Cast to the internal type — publishBundle() validates it.
|
|
727
|
+
const secureCommandManifest =
|
|
728
|
+
request.secureCommandManifest as unknown as import("./commands/profiles.js").SecureCommandManifest;
|
|
729
|
+
|
|
588
730
|
// Publish into the immutable toolstore (includes digest verification)
|
|
589
731
|
const publishResult = deps.publishBundle({
|
|
590
732
|
bundleBytes,
|
|
@@ -592,13 +734,7 @@ export function createManageSecureCommandToolHandler(
|
|
|
592
734
|
bundleId: request.bundleId!,
|
|
593
735
|
version: request.version!,
|
|
594
736
|
sourceUrl: request.sourceUrl!,
|
|
595
|
-
|
|
596
|
-
// pass a minimal manifest with declared profiles.
|
|
597
|
-
secureCommandManifest: {
|
|
598
|
-
commandProfiles: Object.fromEntries(
|
|
599
|
-
(request.profiles ?? []).map((p) => [p, { command: request.toolName }]),
|
|
600
|
-
),
|
|
601
|
-
} as unknown as import("./commands/profiles.js").SecureCommandManifest,
|
|
737
|
+
secureCommandManifest,
|
|
602
738
|
});
|
|
603
739
|
|
|
604
740
|
if (!publishResult.success) {
|
|
@@ -615,7 +751,7 @@ export function createManageSecureCommandToolHandler(
|
|
|
615
751
|
deps.registerTool({
|
|
616
752
|
toolName: request.toolName,
|
|
617
753
|
credentialHandle: request.credentialHandle!,
|
|
618
|
-
description: request.description
|
|
754
|
+
description: request.description!,
|
|
619
755
|
bundleDigest: request.sha256!,
|
|
620
756
|
});
|
|
621
757
|
|
package/src/subjects/managed.ts
CHANGED
|
@@ -83,12 +83,16 @@ export interface ManagedSubject extends ResolvedSubject {
|
|
|
83
83
|
/**
|
|
84
84
|
* Shape of a single connection entry in the platform catalog response.
|
|
85
85
|
* Only non-secret fields are parsed; token values are never included.
|
|
86
|
+
*
|
|
87
|
+
* Field names match the platform's ManagedConnectionCatalogEntrySerializer:
|
|
88
|
+
* handle, connection_id, provider, account_label, scopes_granted, status
|
|
86
89
|
*/
|
|
87
90
|
export interface PlatformCatalogEntry {
|
|
88
|
-
|
|
91
|
+
handle: string;
|
|
92
|
+
connection_id: string;
|
|
89
93
|
provider: string;
|
|
90
|
-
|
|
91
|
-
|
|
94
|
+
account_label?: string | null;
|
|
95
|
+
scopes_granted?: string[];
|
|
92
96
|
status?: string;
|
|
93
97
|
}
|
|
94
98
|
|
|
@@ -120,6 +124,11 @@ export interface ManagedSubjectResolverOptions {
|
|
|
120
124
|
* Assistant API key for authenticating with the platform.
|
|
121
125
|
*/
|
|
122
126
|
assistantApiKey: string;
|
|
127
|
+
/**
|
|
128
|
+
* Platform-assigned assistant UUID. Required for building the
|
|
129
|
+
* platform catalog URL: /v1/assistants/<id>/oauth/managed/catalog/
|
|
130
|
+
*/
|
|
131
|
+
assistantId: string;
|
|
123
132
|
/**
|
|
124
133
|
* Optional custom fetch implementation (for testing).
|
|
125
134
|
*/
|
|
@@ -191,9 +200,19 @@ export async function resolveManagedSubject(
|
|
|
191
200
|
};
|
|
192
201
|
}
|
|
193
202
|
|
|
203
|
+
if (!options.assistantId) {
|
|
204
|
+
return {
|
|
205
|
+
ok: false,
|
|
206
|
+
error: new SubjectResolutionError(
|
|
207
|
+
"MISSING_ASSISTANT_ID",
|
|
208
|
+
"Assistant ID is required for managed subject resolution",
|
|
209
|
+
),
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
|
|
194
213
|
// -- Fetch catalog entry --------------------------------------------------
|
|
195
214
|
const fetchFn = options.fetch ?? globalThis.fetch;
|
|
196
|
-
const catalogUrl = `${options.platformBaseUrl}/v1/
|
|
215
|
+
const catalogUrl = `${options.platformBaseUrl}/v1/assistants/${encodeURIComponent(options.assistantId)}/oauth/managed/catalog/`;
|
|
197
216
|
|
|
198
217
|
let response: Response;
|
|
199
218
|
try {
|
|
@@ -226,9 +245,11 @@ export async function resolveManagedSubject(
|
|
|
226
245
|
}
|
|
227
246
|
|
|
228
247
|
// -- Parse response -------------------------------------------------------
|
|
229
|
-
|
|
248
|
+
// The platform returns a flat JSON array of catalog entries
|
|
249
|
+
// (serialized with many=True), not a wrapper object.
|
|
250
|
+
let entries: PlatformCatalogEntry[];
|
|
230
251
|
try {
|
|
231
|
-
|
|
252
|
+
entries = (await response.json()) as PlatformCatalogEntry[];
|
|
232
253
|
} catch {
|
|
233
254
|
return {
|
|
234
255
|
ok: false,
|
|
@@ -239,7 +260,7 @@ export async function resolveManagedSubject(
|
|
|
239
260
|
};
|
|
240
261
|
}
|
|
241
262
|
|
|
242
|
-
if (!
|
|
263
|
+
if (!Array.isArray(entries)) {
|
|
243
264
|
return {
|
|
244
265
|
ok: false,
|
|
245
266
|
error: new SubjectResolutionError(
|
|
@@ -250,8 +271,8 @@ export async function resolveManagedSubject(
|
|
|
250
271
|
}
|
|
251
272
|
|
|
252
273
|
// -- Find matching connection ---------------------------------------------
|
|
253
|
-
const entry =
|
|
254
|
-
(c) => c.
|
|
274
|
+
const entry = entries.find(
|
|
275
|
+
(c) => c.connection_id === platformHandle.connectionId,
|
|
255
276
|
);
|
|
256
277
|
|
|
257
278
|
if (!entry) {
|
|
@@ -269,9 +290,9 @@ export async function resolveManagedSubject(
|
|
|
269
290
|
source: "managed",
|
|
270
291
|
handle,
|
|
271
292
|
provider: entry.provider,
|
|
272
|
-
connectionId: entry.
|
|
273
|
-
accountInfo: entry.
|
|
274
|
-
grantedScopes: entry.
|
|
293
|
+
connectionId: entry.connection_id,
|
|
294
|
+
accountInfo: entry.account_label ?? null,
|
|
295
|
+
grantedScopes: entry.scopes_granted ?? [],
|
|
275
296
|
status: entry.status ?? "unknown",
|
|
276
297
|
};
|
|
277
298
|
|