@vellumai/cli 0.11.6 → 0.11.7-staging.2
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/AGENTS.md +3 -1
- package/knip.json +1 -0
- package/node_modules/@vellumai/avatar-manifest/package.json +18 -0
- package/node_modules/@vellumai/avatar-manifest/src/__tests__/manifest.test.ts +173 -0
- package/node_modules/@vellumai/avatar-manifest/src/__tests__/read.test.ts +114 -0
- package/node_modules/@vellumai/avatar-manifest/src/index.ts +29 -0
- package/node_modules/@vellumai/avatar-manifest/src/layout.ts +18 -0
- package/node_modules/@vellumai/avatar-manifest/src/manifest.ts +156 -0
- package/node_modules/@vellumai/avatar-manifest/src/read.ts +109 -0
- package/node_modules/@vellumai/avatar-manifest/tsconfig.json +20 -0
- package/node_modules/@vellumai/environments/package.json +2 -1
- package/node_modules/@vellumai/environments/src/shell.test.ts +56 -0
- package/node_modules/@vellumai/environments/src/shell.ts +65 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/avatar-manifest/package.json +18 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/avatar-manifest/src/__tests__/manifest.test.ts +173 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/avatar-manifest/src/__tests__/read.test.ts +114 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/avatar-manifest/src/index.ts +29 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/avatar-manifest/src/layout.ts +18 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/avatar-manifest/src/manifest.ts +156 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/avatar-manifest/src/read.ts +109 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/avatar-manifest/tsconfig.json +20 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/environments/package.json +2 -1
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/environments/src/shell.test.ts +56 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/environments/src/shell.ts +65 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/LICENSE +21 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/README.md +208 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/index.cjs +33 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/index.d.cts +4 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/index.d.ts +4 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/index.js +4 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/locales/index.cjs +17 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/locales/index.d.cts +1 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/locales/index.d.ts +1 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/locales/index.js +1 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/locales/package.json +6 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/mini/index.cjs +32 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/mini/index.d.cts +3 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/mini/index.d.ts +3 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/mini/index.js +3 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/mini/package.json +6 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/package.json +135 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/index.ts +4 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/locales/index.ts +1 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/mini/index.ts +3 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/ZodError.ts +330 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/benchmarks/datetime.ts +58 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/benchmarks/discriminatedUnion.ts +80 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/benchmarks/index.ts +59 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/benchmarks/ipv4.ts +57 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/benchmarks/object.ts +69 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/benchmarks/primitives.ts +162 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/benchmarks/realworld.ts +63 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/benchmarks/string.ts +55 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/benchmarks/union.ts +80 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/errors.ts +13 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/external.ts +6 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/helpers/enumUtil.ts +17 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/helpers/errorUtil.ts +8 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/helpers/parseUtil.ts +176 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/helpers/partialUtil.ts +34 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/helpers/typeAliases.ts +2 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/helpers/util.ts +224 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/index.ts +4 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/locales/en.ts +124 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/standard-schema.ts +113 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/Mocker.ts +54 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/all-errors.test.ts +157 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/anyunknown.test.ts +28 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/array.test.ts +71 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/async-parsing.test.ts +388 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/async-refinements.test.ts +46 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/base.test.ts +29 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/bigint.test.ts +55 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/branded.test.ts +53 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/catch.test.ts +220 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/coerce.test.ts +133 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/complex.test.ts +70 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/custom.test.ts +31 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/date.test.ts +32 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/deepmasking.test.ts +186 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/default.test.ts +112 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/description.test.ts +33 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/discriminated-unions.test.ts +315 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/enum.test.ts +80 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/error.test.ts +551 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/firstparty.test.ts +87 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/firstpartyschematypes.test.ts +21 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/function.test.ts +261 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/generics.test.ts +48 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/instanceof.test.ts +37 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/intersection.test.ts +110 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/language-server.source.ts +76 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/language-server.test.ts +207 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/literal.test.ts +36 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/map.test.ts +110 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/masking.test.ts +4 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/mocker.test.ts +19 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/nan.test.ts +24 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/nativeEnum.test.ts +87 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/nullable.test.ts +42 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/number.test.ts +176 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/object-augmentation.test.ts +29 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/object-in-es5-env.test.ts +29 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/object.test.ts +434 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/optional.test.ts +42 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/parseUtil.test.ts +23 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/parser.test.ts +41 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/partials.test.ts +243 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/pickomit.test.ts +111 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/pipeline.test.ts +29 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/preprocess.test.ts +186 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/primitive.test.ts +440 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/promise.test.ts +90 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/readonly.test.ts +194 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/record.test.ts +171 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/recursive.test.ts +197 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/refine.test.ts +313 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/safeparse.test.ts +27 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/set.test.ts +142 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/standard-schema.test.ts +83 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/string.test.ts +916 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/transformer.test.ts +233 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/tuple.test.ts +90 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/unions.test.ts +57 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/validations.test.ts +133 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/void.test.ts +15 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/types.ts +5138 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/checks.ts +32 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/coerce.ts +27 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/compat.ts +70 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/errors.ts +82 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/external.ts +51 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/from-json-schema.ts +643 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/index.ts +5 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/iso.ts +90 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/parse.ts +82 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/schemas.ts +2409 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/anyunknown.test.ts +26 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/apply.test.ts +59 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/array.test.ts +264 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/assignability.test.ts +210 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/async-parsing.test.ts +381 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/async-refinements.test.ts +68 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/base.test.ts +7 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/bigint.test.ts +54 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/brand.test.ts +106 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/catch.test.ts +276 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/coalesce.test.ts +20 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/codec-examples.test.ts +573 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/codec.test.ts +562 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/coerce.test.ts +160 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/continuability.test.ts +374 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/custom.test.ts +40 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/date.test.ts +62 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/datetime.test.ts +302 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/default.test.ts +365 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/describe-meta-checks.test.ts +27 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/description.test.ts +32 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/discriminated-unions.test.ts +661 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/enum.test.ts +285 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/error-utils.test.ts +595 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/error.test.ts +711 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/file.test.ts +96 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/firstparty.test.ts +179 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/fix-json-issue.test.ts +26 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/from-json-schema.test.ts +734 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/function.test.ts +360 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/generics.test.ts +72 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/hash.test.ts +68 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/index.test.ts +939 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/instanceof.test.ts +60 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/intersection.test.ts +198 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/json.test.ts +109 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/lazy.test.ts +227 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/literal.test.ts +117 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/map.test.ts +330 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/nan.test.ts +21 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/nested-refine.test.ts +168 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/nonoptional.test.ts +101 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/nullable.test.ts +22 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/number.test.ts +270 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/object.test.ts +640 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/optional.test.ts +223 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/partial.test.ts +427 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/pickomit.test.ts +211 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/pipe.test.ts +101 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/prefault.test.ts +74 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/preprocess.test.ts +282 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/primitive.test.ts +175 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/promise.test.ts +81 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/prototypes.test.ts +23 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/readonly.test.ts +252 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/record.test.ts +632 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/recursive-types.test.ts +582 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/refine.test.ts +570 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/registries.test.ts +243 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/set.test.ts +181 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/standard-schema.test.ts +134 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/string-formats.test.ts +125 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/string.test.ts +1175 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/stringbool.test.ts +106 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/template-literal.test.ts +771 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/to-json-schema-methods.test.ts +438 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/to-json-schema.test.ts +2990 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/transform.test.ts +361 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/tuple.test.ts +183 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/union.test.ts +219 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/url.test.ts +13 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/validations.test.ts +283 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/void.test.ts +12 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/core/api.ts +1798 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/core/checks.ts +1293 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/core/config.ts +15 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/core/core.ts +138 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/core/doc.ts +44 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/core/errors.ts +448 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/core/index.ts +16 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/core/json-schema-generator.ts +126 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/core/json-schema-processors.ts +667 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/core/json-schema.ts +147 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/core/parse.ts +195 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/core/regexes.ts +183 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/core/registries.ts +105 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/core/schemas.ts +4538 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/core/standard-schema.ts +159 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/core/tests/extend.test.ts +59 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/core/tests/index.test.ts +46 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/core/tests/locales/be.test.ts +124 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/core/tests/locales/en.test.ts +22 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/core/tests/locales/es.test.ts +181 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/core/tests/locales/he.test.ts +379 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/core/tests/locales/nl.test.ts +46 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/core/tests/locales/ru.test.ts +128 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/core/tests/locales/tr.test.ts +69 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/core/tests/locales/uz.test.ts +83 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/core/tests/record-constructor.test.ts +67 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/core/tests/recursive-tuples.test.ts +45 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/core/to-json-schema.ts +613 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/core/util.ts +966 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/core/versions.ts +5 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/core/zsf.ts +323 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/index.ts +4 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/ar.ts +115 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/az.ts +111 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/be.ts +176 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/bg.ts +128 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/ca.ts +116 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/cs.ts +118 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/da.ts +123 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/de.ts +116 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/en.ts +119 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/eo.ts +118 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/es.ts +141 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/fa.ts +126 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/fi.ts +121 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/fr-CA.ts +116 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/fr.ts +116 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/he.ts +246 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/hu.ts +117 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/hy.ts +164 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/id.ts +115 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/index.ts +49 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/is.ts +119 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/it.ts +116 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/ja.ts +114 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/ka.ts +123 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/kh.ts +7 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/km.ts +119 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/ko.ts +121 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/lt.ts +239 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/mk.ts +118 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/ms.ts +115 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/nl.ts +121 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/no.ts +116 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/ota.ts +117 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/pl.ts +118 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/ps.ts +126 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/pt.ts +116 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/ru.ts +176 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/sl.ts +118 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/sv.ts +119 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/ta.ts +118 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/th.ts +119 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/tr.ts +111 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/ua.ts +7 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/uk.ts +117 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/ur.ts +119 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/uz.ts +116 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/vi.ts +117 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/yo.ts +124 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/zh-CN.ts +116 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/zh-TW.ts +115 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/mini/checks.ts +32 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/mini/coerce.ts +27 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/mini/external.ts +40 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/mini/index.ts +3 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/mini/iso.ts +66 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/mini/parse.ts +14 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/mini/schemas.ts +1916 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/mini/tests/apply.test.ts +24 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/mini/tests/assignability.test.ts +129 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/mini/tests/brand.test.ts +94 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/mini/tests/checks.test.ts +144 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/mini/tests/codec.test.ts +529 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/mini/tests/computed.test.ts +36 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/mini/tests/error.test.ts +22 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/mini/tests/functions.test.ts +5 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/mini/tests/index.test.ts +963 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/mini/tests/number.test.ts +95 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/mini/tests/object.test.ts +227 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/mini/tests/prototypes.test.ts +43 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/mini/tests/recursive-types.test.ts +275 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/mini/tests/standard-schema.test.ts +50 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/mini/tests/string.test.ts +347 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4-mini/index.ts +3 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/ZodError.cjs +138 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/ZodError.d.cts +164 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/ZodError.d.ts +164 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/ZodError.js +133 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/errors.cjs +17 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/errors.d.cts +5 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/errors.d.ts +5 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/errors.js +9 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/external.cjs +22 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/external.d.cts +6 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/external.d.ts +6 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/external.js +6 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/helpers/enumUtil.cjs +2 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/helpers/enumUtil.d.cts +8 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/helpers/enumUtil.d.ts +8 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/helpers/enumUtil.js +1 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/helpers/errorUtil.cjs +9 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/helpers/errorUtil.d.cts +9 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/helpers/errorUtil.d.ts +9 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/helpers/errorUtil.js +6 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/helpers/parseUtil.cjs +124 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/helpers/parseUtil.d.cts +78 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/helpers/parseUtil.d.ts +78 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/helpers/parseUtil.js +109 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/helpers/partialUtil.cjs +2 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/helpers/partialUtil.d.cts +8 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/helpers/partialUtil.d.ts +8 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/helpers/partialUtil.js +1 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/helpers/typeAliases.cjs +2 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/helpers/typeAliases.d.cts +2 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/helpers/typeAliases.d.ts +2 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/helpers/typeAliases.js +1 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/helpers/util.cjs +137 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/helpers/util.d.cts +85 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/helpers/util.d.ts +85 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/helpers/util.js +133 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/index.cjs +33 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/index.d.cts +4 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/index.d.ts +4 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/index.js +4 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/locales/en.cjs +112 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/locales/en.d.cts +3 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/locales/en.d.ts +3 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/locales/en.js +109 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/package.json +6 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/standard-schema.cjs +2 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/standard-schema.d.cts +102 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/standard-schema.d.ts +102 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/standard-schema.js +1 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/types.cjs +3777 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/types.d.cts +1034 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/types.d.ts +1034 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/types.js +3695 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/checks.cjs +33 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/checks.d.cts +1 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/checks.d.ts +1 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/checks.js +1 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/coerce.cjs +47 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/coerce.d.cts +17 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/coerce.d.ts +17 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/coerce.js +17 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/compat.cjs +61 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/compat.d.cts +50 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/compat.d.ts +50 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/compat.js +31 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/errors.cjs +74 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/errors.d.cts +30 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/errors.d.ts +30 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/errors.js +48 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/external.cjs +73 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/external.d.cts +15 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/external.d.ts +15 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/external.js +20 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/from-json-schema.cjs +610 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/from-json-schema.d.cts +12 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/from-json-schema.d.ts +12 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/from-json-schema.js +584 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/index.cjs +33 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/index.d.cts +4 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/index.d.ts +4 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/index.js +4 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/iso.cjs +60 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/iso.d.cts +22 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/iso.d.ts +22 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/iso.js +30 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/package.json +6 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/parse.cjs +41 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/parse.d.cts +31 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/parse.d.ts +31 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/parse.js +15 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/schemas.cjs +1272 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/schemas.d.cts +739 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/schemas.d.ts +739 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/schemas.js +1157 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/api.cjs +1222 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/api.d.cts +304 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/api.d.ts +304 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/api.js +1082 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/checks.cjs +601 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/checks.d.cts +278 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/checks.d.ts +278 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/checks.js +575 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/core.cjs +83 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/core.d.cts +70 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/core.d.ts +70 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/core.js +76 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/doc.cjs +39 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/doc.d.cts +14 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/doc.d.ts +14 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/doc.js +35 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/errors.cjs +213 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/errors.d.cts +220 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/errors.d.ts +220 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/errors.js +182 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/index.cjs +47 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/index.d.cts +16 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/index.d.ts +16 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/index.js +16 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/json-schema-generator.cjs +99 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/json-schema-generator.d.cts +65 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/json-schema-generator.d.ts +65 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/json-schema-generator.js +95 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/json-schema-processors.cjs +648 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/json-schema-processors.d.cts +49 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/json-schema-processors.d.ts +49 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/json-schema-processors.js +605 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/json-schema.cjs +2 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/json-schema.d.cts +88 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/json-schema.d.ts +88 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/json-schema.js +1 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/package.json +6 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/parse.cjs +131 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/parse.d.cts +49 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/parse.d.ts +49 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/parse.js +93 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/regexes.cjs +166 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/regexes.d.cts +79 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/regexes.d.ts +79 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/regexes.js +133 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/registries.cjs +56 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/registries.d.cts +35 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/registries.d.ts +35 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/registries.js +51 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/schemas.cjs +2124 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/schemas.d.cts +1146 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/schemas.d.ts +1146 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/schemas.js +2093 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/standard-schema.cjs +2 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/standard-schema.d.cts +126 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/standard-schema.d.ts +126 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/standard-schema.js +1 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/to-json-schema.cjs +446 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/to-json-schema.d.cts +114 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/to-json-schema.d.ts +114 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/to-json-schema.js +437 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/util.cjs +710 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/util.d.cts +199 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/util.d.ts +199 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/util.js +651 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/versions.cjs +8 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/versions.d.cts +5 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/versions.d.ts +5 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/versions.js +5 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/index.cjs +22 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/index.d.cts +3 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/index.d.ts +3 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/index.js +3 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ar.cjs +133 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ar.d.cts +5 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ar.d.ts +4 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ar.js +106 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/az.cjs +132 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/az.d.cts +5 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/az.d.ts +4 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/az.js +105 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/be.cjs +183 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/be.d.cts +5 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/be.d.ts +4 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/be.js +156 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/bg.cjs +147 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/bg.d.cts +5 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/bg.d.ts +4 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/bg.js +120 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ca.cjs +134 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ca.d.cts +5 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ca.d.ts +4 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ca.js +107 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/cs.cjs +138 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/cs.d.cts +5 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/cs.d.ts +4 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/cs.js +111 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/da.cjs +142 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/da.d.cts +5 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/da.d.ts +4 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/da.js +115 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/de.cjs +135 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/de.d.cts +5 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/de.d.ts +4 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/de.js +108 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/en.cjs +136 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/en.d.cts +5 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/en.d.ts +4 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/en.js +109 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/eo.cjs +136 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/eo.d.cts +5 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/eo.d.ts +4 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/eo.js +109 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/es.cjs +159 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/es.d.cts +5 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/es.d.ts +4 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/es.js +132 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/fa.cjs +141 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/fa.d.cts +5 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/fa.d.ts +4 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/fa.js +114 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/fi.cjs +139 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/fi.d.cts +5 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/fi.d.ts +4 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/fi.js +112 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/fr-CA.cjs +134 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/fr-CA.d.cts +5 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/fr-CA.d.ts +4 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/fr-CA.js +107 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/fr.cjs +135 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/fr.d.cts +5 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/fr.d.ts +4 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/fr.js +108 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/he.cjs +241 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/he.d.cts +5 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/he.d.ts +4 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/he.js +214 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/hu.cjs +135 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/hu.d.cts +5 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/hu.d.ts +4 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/hu.js +108 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/hy.cjs +174 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/hy.d.cts +5 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/hy.d.ts +4 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/hy.js +147 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/id.cjs +133 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/id.d.cts +5 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/id.d.ts +4 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/id.js +106 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/index.cjs +104 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/index.d.cts +49 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/index.d.ts +49 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/index.js +49 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/is.cjs +136 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/is.d.cts +5 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/is.d.ts +4 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/is.js +109 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/it.cjs +135 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/it.d.cts +5 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/it.d.ts +4 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/it.js +108 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ja.cjs +134 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ja.d.cts +5 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ja.d.ts +4 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ja.js +107 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ka.cjs +139 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ka.d.cts +5 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ka.d.ts +4 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ka.js +112 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/kh.cjs +12 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/kh.d.cts +5 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/kh.d.ts +5 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/kh.js +5 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/km.cjs +137 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/km.d.cts +5 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/km.d.ts +4 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/km.js +110 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ko.cjs +138 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ko.d.cts +5 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ko.d.ts +4 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ko.js +111 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/lt.cjs +230 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/lt.d.cts +5 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/lt.d.ts +4 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/lt.js +203 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/mk.cjs +136 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/mk.d.cts +5 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/mk.d.ts +4 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/mk.js +109 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ms.cjs +134 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ms.d.cts +5 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ms.d.ts +4 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ms.js +107 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/nl.cjs +137 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/nl.d.cts +5 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/nl.d.ts +4 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/nl.js +110 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/no.cjs +135 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/no.d.cts +5 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/no.d.ts +4 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/no.js +108 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ota.cjs +136 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ota.d.cts +5 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ota.d.ts +4 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ota.js +109 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/package.json +6 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/pl.cjs +136 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/pl.d.cts +5 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/pl.d.ts +4 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/pl.js +109 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ps.cjs +141 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ps.d.cts +5 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ps.d.ts +4 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ps.js +114 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/pt.cjs +135 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/pt.d.cts +5 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/pt.d.ts +4 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/pt.js +108 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ru.cjs +183 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ru.d.cts +5 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ru.d.ts +4 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ru.js +156 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/sl.cjs +136 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/sl.d.cts +5 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/sl.d.ts +4 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/sl.js +109 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/sv.cjs +137 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/sv.d.cts +5 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/sv.d.ts +4 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/sv.js +110 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ta.cjs +137 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ta.d.cts +5 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ta.d.ts +4 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ta.js +110 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/th.cjs +137 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/th.d.cts +5 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/th.d.ts +4 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/th.js +110 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/tr.cjs +132 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/tr.d.cts +5 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/tr.d.ts +4 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/tr.js +105 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ua.cjs +12 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ua.d.cts +5 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ua.d.ts +5 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ua.js +5 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/uk.cjs +135 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/uk.d.cts +5 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/uk.d.ts +4 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/uk.js +108 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ur.cjs +137 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ur.d.cts +5 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ur.d.ts +4 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ur.js +110 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/uz.cjs +136 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/uz.d.cts +5 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/uz.d.ts +4 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/uz.js +109 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/vi.cjs +135 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/vi.d.cts +5 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/vi.d.ts +4 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/vi.js +108 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/yo.cjs +134 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/yo.d.cts +5 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/yo.d.ts +4 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/yo.js +107 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/zh-CN.cjs +136 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/zh-CN.d.cts +5 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/zh-CN.d.ts +4 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/zh-CN.js +109 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/zh-TW.cjs +134 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/zh-TW.d.cts +5 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/zh-TW.d.ts +4 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/zh-TW.js +107 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/mini/checks.cjs +34 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/mini/checks.d.cts +1 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/mini/checks.d.ts +1 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/mini/checks.js +1 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/mini/coerce.cjs +52 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/mini/coerce.d.cts +7 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/mini/coerce.d.ts +7 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/mini/coerce.js +22 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/mini/external.cjs +63 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/mini/external.d.cts +12 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/mini/external.d.ts +12 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/mini/external.js +14 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/mini/index.cjs +32 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/mini/index.d.cts +3 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/mini/index.d.ts +3 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/mini/index.js +3 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/mini/iso.cjs +64 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/mini/iso.d.cts +22 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/mini/iso.d.ts +22 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/mini/iso.js +34 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/mini/package.json +6 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/mini/parse.cjs +16 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/mini/parse.d.cts +1 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/mini/parse.d.ts +1 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/mini/parse.js +1 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/mini/schemas.cjs +1046 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/mini/schemas.d.cts +427 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/mini/schemas.d.ts +427 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/mini/schemas.js +925 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/package.json +6 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4-mini/index.cjs +32 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4-mini/index.d.cts +3 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4-mini/index.d.ts +3 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4-mini/index.js +3 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4-mini/package.json +6 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/package.json +37 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/src/__tests__/attachment-naming.test.ts +104 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/src/__tests__/channels.test.ts +36 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/src/__tests__/contracts.test.ts +299 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/src/__tests__/conversation-handle.test.ts +316 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/src/__tests__/ingress.test.ts +280 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/src/__tests__/package-boundary.test.ts +151 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/src/__tests__/redacted-credential.test.ts +200 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/src/__tests__/remote-web-pairing.test.ts +389 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/src/__tests__/secret-detection.test.ts +449 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/src/__tests__/stripe-currency.test.ts +37 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/src/__tests__/url-normalization.test.ts +135 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/src/attachment-naming.ts +118 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/src/channels.ts +92 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/src/client-metadata.ts +46 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/src/conversation-handle.ts +246 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/src/credential-rpc.ts +21 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/src/error.ts +26 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/src/handles.ts +212 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/src/index.ts +32 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/src/ingress.ts +175 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/src/redacted-credential.ts +226 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/src/remote-web-pairing.ts +816 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/src/rpc.ts +408 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/src/secret-detection.ts +468 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/src/stripe-currency.ts +55 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/src/transport.ts +133 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/src/trust-rules.ts +116 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/src/twilio-ingress.ts +73 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/src/url-normalization.ts +107 -0
- package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/tsconfig.json +20 -0
- package/node_modules/@vellumai/local-mode/package.json +3 -1
- package/node_modules/@vellumai/local-mode/src/__tests__/guardian-token.test.ts +45 -0
- package/node_modules/@vellumai/local-mode/src/__tests__/package-boundary.test.ts +32 -14
- package/node_modules/@vellumai/local-mode/src/__tests__/pair.test.ts +1535 -155
- package/node_modules/@vellumai/local-mode/src/__tests__/status.test.ts +71 -1
- package/node_modules/@vellumai/local-mode/src/avatar.test.ts +404 -0
- package/node_modules/@vellumai/local-mode/src/avatar.ts +151 -0
- package/node_modules/@vellumai/local-mode/src/devices.test.ts +62 -0
- package/node_modules/@vellumai/local-mode/src/devices.ts +12 -0
- package/node_modules/@vellumai/local-mode/src/guardian-token.ts +27 -34
- package/node_modules/@vellumai/local-mode/src/index.ts +26 -3
- package/node_modules/@vellumai/local-mode/src/lockfile-contract.ts +1 -1
- package/node_modules/@vellumai/local-mode/src/lockfile.test.ts +1 -0
- package/node_modules/@vellumai/local-mode/src/lockfile.ts +6 -3
- package/node_modules/@vellumai/local-mode/src/pair.ts +1099 -129
- package/node_modules/@vellumai/local-mode/src/status.ts +67 -22
- package/node_modules/@vellumai/service-contracts/src/__tests__/ingress.test.ts +37 -0
- package/node_modules/@vellumai/service-contracts/src/__tests__/remote-web-pairing.test.ts +389 -0
- package/node_modules/@vellumai/service-contracts/src/ingress.ts +22 -0
- package/node_modules/@vellumai/service-contracts/src/remote-web-pairing.ts +508 -18
- package/node_modules/@vellumai/service-contracts/src/rpc.ts +174 -0
- package/package.json +3 -1
- package/src/__tests__/connect-import.test.ts +512 -172
- package/src/__tests__/detached-process.test.ts +152 -0
- package/src/__tests__/devices.test.ts +12 -0
- package/src/__tests__/hatch-provider-secrets.test.ts +95 -0
- package/src/__tests__/pair.test.ts +319 -305
- package/src/__tests__/provider-secrets.test.ts +158 -0
- package/src/__tests__/tunnel.test.ts +200 -23
- package/src/__tests__/wake.test.ts +51 -1
- package/src/adapters/install.sh +2 -1
- package/src/adapters/openclaw.ts +2 -1
- package/src/commands/client.ts +81 -58
- package/src/commands/connect/import.ts +248 -52
- package/src/commands/connect.ts +1 -1
- package/src/commands/devices.ts +4 -0
- package/src/commands/pair.ts +173 -298
- package/src/commands/tunnel.ts +162 -54
- package/src/commands/voice.ts +370 -0
- package/src/components/DefaultMainScreen.tsx +0 -144
- package/src/index.ts +5 -2
- package/src/lib/detached-process.ts +81 -0
- package/src/lib/docker.ts +21 -4
- package/src/lib/guardian-token.ts +19 -2
- package/src/lib/hatch-local.ts +23 -5
- package/src/lib/live-voice/client.test.ts +316 -0
- package/src/lib/live-voice/client.ts +363 -0
- package/src/lib/live-voice/connection.ts +133 -0
- package/src/lib/live-voice/pcm-player.test.ts +101 -0
- package/src/lib/live-voice/pcm-player.ts +356 -0
- package/src/lib/live-voice/protocol.test.ts +53 -0
- package/src/lib/live-voice/protocol.ts +193 -0
- package/src/lib/local.ts +2 -1
- package/src/lib/provider-secrets.ts +195 -0
- package/src/lib/shell-arg.test.ts +24 -0
- package/src/lib/shell-arg.ts +17 -0
- package/src/lib/tunnel-edge.ts +31 -2
- package/src/shared/provider-env-vars.ts +1 -0
|
@@ -0,0 +1,816 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wire contracts for the remote-web pairing flow — the RFC 8628-style
|
|
3
|
+
* device-code exchange that connects a browser (or the iOS app) to a
|
|
4
|
+
* self-hosted assistant over its public ingress URL.
|
|
5
|
+
*
|
|
6
|
+
* The gateway routes are the authoritative serving side:
|
|
7
|
+
* - `POST /v1/remote-web/pairing-challenge` mint a challenge
|
|
8
|
+
* (`gateway/src/http/routes/remote-web-pairing-challenge.ts`,
|
|
9
|
+
* `gateway/src/remote-web/pairing-challenge-store.ts`)
|
|
10
|
+
* - `POST /v1/remote-web/pairing-verification` approve by user code
|
|
11
|
+
* (`gateway/src/http/routes/remote-web-pairing-verification.ts`)
|
|
12
|
+
* (loopback-only)
|
|
13
|
+
* - `POST /v1/remote-web/pairing-token` poll + exchange device code
|
|
14
|
+
* (`gateway/src/http/routes/remote-web-pairing-token.ts`): a browser
|
|
15
|
+
* receives its refresh token as an `HttpOnly` cookie; a request that
|
|
16
|
+
* carries a `deviceId` receives a device-bound one in the body instead
|
|
17
|
+
* - `GET /v1/remote-web/pairing-requests` list pending challenges
|
|
18
|
+
* (loopback-only)
|
|
19
|
+
* - `POST /v1/remote-web/pairing-requests/approve` approve by request id
|
|
20
|
+
* (loopback-only)
|
|
21
|
+
* - `POST /v1/remote-web/pairing-requests/deny` deny (delete) by request id
|
|
22
|
+
* (loopback-only)
|
|
23
|
+
*
|
|
24
|
+
* These shapes mirror those handlers' request/response bodies exactly so the
|
|
25
|
+
* gateway, the `vellum pair` CLI (`cli/src/commands/pair.ts`), the host-side
|
|
26
|
+
* pairing sessions (`packages/local-mode/src/pair.ts`), and the web SPA
|
|
27
|
+
* (`clients/web/src/lib/auth/remote-gateway-session.ts`) share one definition
|
|
28
|
+
* and cannot silently drift.
|
|
29
|
+
*
|
|
30
|
+
* Timestamps are ISO-8601 strings — every gateway response serializes them via
|
|
31
|
+
* `Date#toISOString()`.
|
|
32
|
+
*/
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Pairing-challenge TTL in milliseconds (10 minutes): the gateway's challenge
|
|
36
|
+
* store enforces it and the `vellum pair` CLI renders it in user-facing copy.
|
|
37
|
+
*/
|
|
38
|
+
export const REMOTE_WEB_PAIRING_CODE_TTL_MS = 10 * 60 * 1000;
|
|
39
|
+
|
|
40
|
+
/** `POST /v1/remote-web/pairing-challenge` request body. */
|
|
41
|
+
export interface RemoteWebPairingChallengeRequest {
|
|
42
|
+
/** Public https base URL the scanning device can reach the assistant at. */
|
|
43
|
+
publicBaseUrl: string;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/** `POST /v1/remote-web/pairing-challenge` success response body (200). */
|
|
47
|
+
export interface RemoteWebPairingChallengeResponse {
|
|
48
|
+
/** Opaque secret the paired device exchanges for a token. */
|
|
49
|
+
deviceCode: string;
|
|
50
|
+
/** Short human-readable code the host approves out of band. */
|
|
51
|
+
userCode: string;
|
|
52
|
+
/** URL the device opens to complete pairing. */
|
|
53
|
+
verificationUri: string;
|
|
54
|
+
/** ISO-8601 instant the challenge expires. */
|
|
55
|
+
expiresAt: string;
|
|
56
|
+
/** Seconds until the challenge expires. */
|
|
57
|
+
expiresInSeconds: number;
|
|
58
|
+
/** Recommended poll interval (seconds) for the token-exchange endpoint. */
|
|
59
|
+
intervalSeconds: number;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/** `POST /v1/remote-web/pairing-verification` request body. */
|
|
63
|
+
export interface RemoteWebPairingVerificationRequest {
|
|
64
|
+
/** The `userCode` from the challenge, entered/scanned on the host. */
|
|
65
|
+
userCode: string;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* `POST /v1/remote-web/pairing-verification` success response body (200).
|
|
70
|
+
*
|
|
71
|
+
* The gateway maps the `expired` / `invalid` outcomes to error responses, so
|
|
72
|
+
* the only success shape on the wire is the approved variant.
|
|
73
|
+
*/
|
|
74
|
+
export interface RemoteWebPairingVerificationResponse {
|
|
75
|
+
status: "approved";
|
|
76
|
+
verificationUri: string;
|
|
77
|
+
/** ISO-8601 instant the approved challenge expires. */
|
|
78
|
+
expiresAt: string;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* One pending challenge as shown on a host approval surface.
|
|
83
|
+
*
|
|
84
|
+
* The requesting device already sees the plaintext `userCode` in its own
|
|
85
|
+
* challenge response ({@link RemoteWebPairingChallengeResponse.userCode});
|
|
86
|
+
* the loopback-gated list route is the only host-side re-exposure. Displaying
|
|
87
|
+
* it there is what lets the approver match the code against the requesting
|
|
88
|
+
* device's screen: the device-flow anti-phishing binding.
|
|
89
|
+
*/
|
|
90
|
+
export interface RemoteWebPairingRequestSummary {
|
|
91
|
+
/** Opaque server-side id used to approve or deny this request. */
|
|
92
|
+
requestId: string;
|
|
93
|
+
/** The human-readable code the requesting device is displaying (e.g. "ABCD-EFGH"). */
|
|
94
|
+
userCode: string;
|
|
95
|
+
/** Public base URL the challenge was minted for. */
|
|
96
|
+
publicBaseUrl: string;
|
|
97
|
+
/** ISO-8601 instant the challenge was minted. */
|
|
98
|
+
requestedAt: string;
|
|
99
|
+
/** ISO-8601 instant the challenge expires. */
|
|
100
|
+
expiresAt: string;
|
|
101
|
+
/**
|
|
102
|
+
* Client IP of the mint request: the loopback/host address when minted
|
|
103
|
+
* locally, or the edge-observed client address when the mint arrived
|
|
104
|
+
* through the nginx tunnel edge (which stamps it via `proxy_set_header`,
|
|
105
|
+
* so a remote client cannot smuggle a value).
|
|
106
|
+
*/
|
|
107
|
+
requesterIp: string;
|
|
108
|
+
/** User-Agent header of the mint request, or null when absent. */
|
|
109
|
+
requesterUserAgent: string | null;
|
|
110
|
+
/**
|
|
111
|
+
* Whether the mint arrived through the public tunnel edge rather than the
|
|
112
|
+
* host itself.
|
|
113
|
+
*/
|
|
114
|
+
viaEdgeProxy: boolean;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/** `GET /v1/remote-web/pairing-requests` success response body (200). */
|
|
118
|
+
export interface RemoteWebPairingRequestListResponse {
|
|
119
|
+
requests: RemoteWebPairingRequestSummary[];
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* Request body for the pairing-request approve and deny routes. The approve
|
|
124
|
+
* route's success body reuses {@link RemoteWebPairingVerificationResponse}.
|
|
125
|
+
*/
|
|
126
|
+
export interface RemoteWebPairingRequestActionRequest {
|
|
127
|
+
requestId: string;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/** `POST /v1/remote-web/pairing-requests/deny` success response body (200). */
|
|
131
|
+
export interface RemoteWebPairingRequestDenyResponse {
|
|
132
|
+
status: "denied";
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* Platforms a device-bound pairing exchange may declare for itself. The value
|
|
137
|
+
* is what the host's `Paired devices` list renders for the new pairing.
|
|
138
|
+
*/
|
|
139
|
+
export const REMOTE_WEB_PAIRING_PLATFORMS = [
|
|
140
|
+
"cli",
|
|
141
|
+
"desktop",
|
|
142
|
+
"ios",
|
|
143
|
+
"android",
|
|
144
|
+
] as const;
|
|
145
|
+
|
|
146
|
+
export type RemoteWebPairingPlatform =
|
|
147
|
+
(typeof REMOTE_WEB_PAIRING_PLATFORMS)[number];
|
|
148
|
+
|
|
149
|
+
/** Platform recorded when an exchange names none the gateway recognizes. */
|
|
150
|
+
export const DEFAULT_REMOTE_WEB_PAIRING_PLATFORM: RemoteWebPairingPlatform =
|
|
151
|
+
"desktop";
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* A requested platform coerced to a known value. The pairing-token route is
|
|
155
|
+
* publicly reachable and the platform renders verbatim in the host's
|
|
156
|
+
* paired-devices list, so an unrecognized value never reaches the DB.
|
|
157
|
+
*/
|
|
158
|
+
export function resolveRemoteWebPairingPlatform(
|
|
159
|
+
raw: unknown,
|
|
160
|
+
): RemoteWebPairingPlatform {
|
|
161
|
+
return (
|
|
162
|
+
REMOTE_WEB_PAIRING_PLATFORMS.find((platform) => platform === raw) ??
|
|
163
|
+
DEFAULT_REMOTE_WEB_PAIRING_PLATFORM
|
|
164
|
+
);
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
/** `POST /v1/remote-web/pairing-token` request body. */
|
|
168
|
+
export interface RemoteWebPairingTokenRequest {
|
|
169
|
+
/** The `deviceCode` from the challenge. */
|
|
170
|
+
deviceCode: string;
|
|
171
|
+
/**
|
|
172
|
+
* Client-generated device id, sent only by a trusted host completing the
|
|
173
|
+
* exchange for itself. It switches the gateway to a device-bound, per-device
|
|
174
|
+
* revocable credential whose refresh token comes back in the response body.
|
|
175
|
+
* Browsers omit it and keep the cookie delivery.
|
|
176
|
+
*/
|
|
177
|
+
deviceId?: string;
|
|
178
|
+
/** Platform to record for the device. Ignored without a `deviceId`. */
|
|
179
|
+
platform?: RemoteWebPairingPlatform;
|
|
180
|
+
/**
|
|
181
|
+
* Optional self-reported device name, for example "Vellum iOS app". The gateway
|
|
182
|
+
* stores it verbatim (capped) and never trusts it for authorization. Absent from
|
|
183
|
+
* clients that predate this field.
|
|
184
|
+
*/
|
|
185
|
+
clientReportedName?: string;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
/**
|
|
189
|
+
* `POST /v1/remote-web/pairing-token` still-pending response body (202) — the
|
|
190
|
+
* challenge exists but has not been approved yet, so the client keeps polling.
|
|
191
|
+
*/
|
|
192
|
+
export interface RemoteWebPairingTokenPendingResponse {
|
|
193
|
+
status: "pending";
|
|
194
|
+
/** ISO-8601 instant the challenge expires. */
|
|
195
|
+
expiresAt: string;
|
|
196
|
+
/** Recommended poll interval (seconds) before the next exchange attempt. */
|
|
197
|
+
intervalSeconds: number;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
/**
|
|
201
|
+
* `POST /v1/remote-web/pairing-token` approved response body (200) — carries
|
|
202
|
+
* the minted session credentials. A browser exchange (no `deviceId`) receives
|
|
203
|
+
* its refresh token out of band as an `HttpOnly` cookie and so omits the two
|
|
204
|
+
* refresh fields below; a device-bound exchange receives it here instead.
|
|
205
|
+
*/
|
|
206
|
+
export interface RemoteWebPairingTokenApprovedResponse {
|
|
207
|
+
status: "approved";
|
|
208
|
+
accessToken: string;
|
|
209
|
+
/** ISO-8601 instant the access token expires. */
|
|
210
|
+
accessTokenExpiresAt: string;
|
|
211
|
+
/** ISO-8601 instant after which the client should refresh the session. */
|
|
212
|
+
refreshAfter: string;
|
|
213
|
+
guardianId: string;
|
|
214
|
+
assistantId: string;
|
|
215
|
+
/** Device-bound refresh token, present only for a `deviceId` exchange. */
|
|
216
|
+
refreshToken?: string;
|
|
217
|
+
/** ISO-8601 instant the device-bound refresh token expires. */
|
|
218
|
+
refreshTokenExpiresAt?: string;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
/** Union of the two terminal `pairing-token` response bodies. */
|
|
222
|
+
export type RemoteWebPairingTokenResponse =
|
|
223
|
+
| RemoteWebPairingTokenPendingResponse
|
|
224
|
+
| RemoteWebPairingTokenApprovedResponse;
|
|
225
|
+
|
|
226
|
+
// ── Shared pairing URL helpers ──────────────────────────────────────────────
|
|
227
|
+
//
|
|
228
|
+
// Every surface that mints a pairing (the `vellum pair` CLI, the web
|
|
229
|
+
// settings "Pair a device" card) must accept the same public URLs and build
|
|
230
|
+
// the same scannable links. The helpers are environment-neutral (WHATWG URL
|
|
231
|
+
// only) so both Node and browser callers share one implementation.
|
|
232
|
+
|
|
233
|
+
/** Why a public base URL can't be advertised in a pairing challenge. */
|
|
234
|
+
export type PublicBaseUrlRejection =
|
|
235
|
+
| "unparseable"
|
|
236
|
+
| "loopback"
|
|
237
|
+
| "private-address"
|
|
238
|
+
| "non-https"
|
|
239
|
+
| "service-website";
|
|
240
|
+
|
|
241
|
+
export type PublicBaseUrlResult =
|
|
242
|
+
| { ok: true; url: string }
|
|
243
|
+
| { ok: false; reason: PublicBaseUrlRejection };
|
|
244
|
+
|
|
245
|
+
/**
|
|
246
|
+
* Hosts that are a tunnel/ingress vendor's own website, not a user's assistant
|
|
247
|
+
* endpoint. These are the tunnel vendors our docs mention, and their sites are
|
|
248
|
+
* exactly where a lost user grabs a URL from — e.g. a Tailscale admin invite
|
|
249
|
+
* link (`login.tailscale.com/admin/invite/…`), which is https and non-loopback
|
|
250
|
+
* and so clears every other check. Pairing refuses them with a targeted message
|
|
251
|
+
* rather than minting a challenge the scanning device can never reach.
|
|
252
|
+
*/
|
|
253
|
+
export const TUNNEL_PROVIDER_WEBSITE_HOSTS = [
|
|
254
|
+
"login.tailscale.com",
|
|
255
|
+
"tailscale.com",
|
|
256
|
+
"www.tailscale.com",
|
|
257
|
+
"ngrok.com",
|
|
258
|
+
"dashboard.ngrok.com",
|
|
259
|
+
"dash.cloudflare.com",
|
|
260
|
+
"cloudflare.com",
|
|
261
|
+
"www.cloudflare.com",
|
|
262
|
+
] as const;
|
|
263
|
+
|
|
264
|
+
/**
|
|
265
|
+
* A hostname with any trailing DNS root dot removed. `example.com.` and
|
|
266
|
+
* `example.com` name the same host, and a resolver reads `localhost.` as the
|
|
267
|
+
* loopback name, so every host comparison below runs on the stripped form.
|
|
268
|
+
* Bracketed IPv6 literals never carry one.
|
|
269
|
+
*/
|
|
270
|
+
function hostnameWithoutRootDot(hostname: string): string {
|
|
271
|
+
return hostname.replace(/\.+$/, "");
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
/**
|
|
275
|
+
* A URL whose exact host is a tunnel/ingress vendor's own website (see
|
|
276
|
+
* {@link TUNNEL_PROVIDER_WEBSITE_HOSTS}). Exact-host only: a user's real
|
|
277
|
+
* Tailscale endpoint (`*.ts.net`) or Cloudflare-fronted domain is never a
|
|
278
|
+
* listed host, so a legitimate address is never mistaken for a vendor site.
|
|
279
|
+
*/
|
|
280
|
+
export function isTunnelProviderWebsiteUrl(url: string): boolean {
|
|
281
|
+
let hostname: string;
|
|
282
|
+
try {
|
|
283
|
+
// WHATWG URL lowercases the hostname during parsing.
|
|
284
|
+
hostname = hostnameWithoutRootDot(new URL(url).hostname);
|
|
285
|
+
} catch {
|
|
286
|
+
return false;
|
|
287
|
+
}
|
|
288
|
+
return (TUNNEL_PROVIDER_WEBSITE_HOSTS as readonly string[]).includes(
|
|
289
|
+
hostname,
|
|
290
|
+
);
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
/**
|
|
294
|
+
* The display name of the tunnel/ingress vendor a service-website URL points
|
|
295
|
+
* at (`"Tailscale"` / `"ngrok"` / `"Cloudflare"`), or null when the host is not
|
|
296
|
+
* a known vendor site. Drives the "This is <Name>'s website" pairing guidance.
|
|
297
|
+
*/
|
|
298
|
+
export function tunnelProviderWebsiteName(url: string): string | null {
|
|
299
|
+
let hostname: string;
|
|
300
|
+
try {
|
|
301
|
+
hostname = hostnameWithoutRootDot(new URL(url).hostname);
|
|
302
|
+
} catch {
|
|
303
|
+
return null;
|
|
304
|
+
}
|
|
305
|
+
if (
|
|
306
|
+
!(TUNNEL_PROVIDER_WEBSITE_HOSTS as readonly string[]).includes(hostname)
|
|
307
|
+
) {
|
|
308
|
+
return null;
|
|
309
|
+
}
|
|
310
|
+
if (hostname.includes("tailscale")) return "Tailscale";
|
|
311
|
+
if (hostname.includes("ngrok")) return "ngrok";
|
|
312
|
+
if (hostname.includes("cloudflare")) return "Cloudflare";
|
|
313
|
+
return null;
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
/**
|
|
317
|
+
* A URL's comparable host: root dot stripped and IPv6 brackets removed, or
|
|
318
|
+
* null when the value is not a parseable URL.
|
|
319
|
+
*/
|
|
320
|
+
function comparableHost(url: string): string | null {
|
|
321
|
+
try {
|
|
322
|
+
// WHATWG URL canonicalizes hostnames: IPv6 loopback is always "[::1]", a
|
|
323
|
+
// bare "0" is "0.0.0.0", and encoded IPv4 literals become dotted quads.
|
|
324
|
+
return hostnameWithoutRootDot(new URL(url).hostname).replace(
|
|
325
|
+
/^\[|\]$/g,
|
|
326
|
+
"",
|
|
327
|
+
);
|
|
328
|
+
} catch {
|
|
329
|
+
return null;
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
/**
|
|
334
|
+
* Hosts that reach the dialing machine without a resolver having to agree:
|
|
335
|
+
* `localhost`, `127.x.x.x`, `[::1]`, and the wildcard binds `0.0.0.0` / `[::]`,
|
|
336
|
+
* in their dotted, hex, and IPv4-mapped spellings.
|
|
337
|
+
*/
|
|
338
|
+
function isDnsIndependentLoopbackHost(host: string): boolean {
|
|
339
|
+
return (
|
|
340
|
+
host === "localhost" ||
|
|
341
|
+
host === "::1" ||
|
|
342
|
+
host === "0:0:0:0:0:0:0:1" ||
|
|
343
|
+
/^127(?:\.\d{1,3}){3}$/.test(host) ||
|
|
344
|
+
// A wildcard host reaches a local listener when dialed, so it counts as
|
|
345
|
+
// local for the pairing and refresh-channel guards alike.
|
|
346
|
+
host === "0.0.0.0" ||
|
|
347
|
+
host === "0" ||
|
|
348
|
+
host === "::" ||
|
|
349
|
+
host === "0:0:0:0:0:0:0:0" ||
|
|
350
|
+
// IPv4-mapped loopback and wildcard, in dotted and hex encodings.
|
|
351
|
+
/^(?:0:0:0:0:0|:):ffff:127(?:\.\d{1,3}){3}$/.test(host) ||
|
|
352
|
+
/^(?:0:0:0:0:0|:):ffff:7f[0-9a-f]{2}:[0-9a-f]{1,4}$/.test(host) ||
|
|
353
|
+
/^(?:0:0:0:0:0|:):ffff:0\.0\.0\.0$/.test(host) ||
|
|
354
|
+
/^(?:0:0:0:0:0|:):ffff:0:0$/.test(host)
|
|
355
|
+
);
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
/**
|
|
359
|
+
* A URL that reaches a listener on the machine dialing it, judged wide: the
|
|
360
|
+
* literals {@link isDnsIndependentLoopbackHost} covers PLUS the whole reserved
|
|
361
|
+
* `localhost` namespace (RFC 6761, so `foo.localhost` counts). A pairing link
|
|
362
|
+
* that encodes one is unreachable from the scanning device, and a host that
|
|
363
|
+
* POSTs to one is calling a service on its own machine.
|
|
364
|
+
*
|
|
365
|
+
* This is the one loopback predicate the whole pairing path reads (the pasted
|
|
366
|
+
* address, and the gatewayUrl an import registers), so the same address class
|
|
367
|
+
* can never be refused by one entry point and accepted by another. Every read
|
|
368
|
+
* of it REFUSES the address it matches, which is why it is the wide one.
|
|
369
|
+
* A guard that GRANTS something to loopback reads
|
|
370
|
+
* {@link isDnsIndependentLoopbackUrl} instead.
|
|
371
|
+
*/
|
|
372
|
+
export function isLoopbackPublicUrl(url: string): boolean {
|
|
373
|
+
const host = comparableHost(url);
|
|
374
|
+
if (host === null) {
|
|
375
|
+
return false;
|
|
376
|
+
}
|
|
377
|
+
return host.endsWith(".localhost") || isDnsIndependentLoopbackHost(host);
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
/**
|
|
381
|
+
* A URL that reaches this machine whatever the resolver does, judged narrow:
|
|
382
|
+
* exact `localhost` and the loopback/wildcard IP literals, and NOT the
|
|
383
|
+
* reserved `.localhost` namespace. RFC 6761 says a resolver should map that
|
|
384
|
+
* namespace to loopback, but glibc does not by default, so `evil.localhost`
|
|
385
|
+
* is an ordinary DNS name that can answer with any address at all.
|
|
386
|
+
*
|
|
387
|
+
* Read this wherever loopback EARNS a privilege a public host does not get,
|
|
388
|
+
* such as accepting a plaintext channel as confidential; read the wider
|
|
389
|
+
* {@link isLoopbackPublicUrl} wherever loopback is refused. Both directions
|
|
390
|
+
* then fail safe on a name that only might be local.
|
|
391
|
+
*/
|
|
392
|
+
export function isDnsIndependentLoopbackUrl(url: string): boolean {
|
|
393
|
+
const host = comparableHost(url);
|
|
394
|
+
return host !== null && isDnsIndependentLoopbackHost(host);
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
/** Canonical dotted-quad as its four octets, or null when it is not one. */
|
|
398
|
+
function parseIpv4Literal(hostname: string): number[] | null {
|
|
399
|
+
const match = /^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/.exec(hostname);
|
|
400
|
+
if (!match) {
|
|
401
|
+
return null;
|
|
402
|
+
}
|
|
403
|
+
const octets = match.slice(1).map(Number);
|
|
404
|
+
return octets.every((octet) => octet <= 255) ? octets : null;
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
/** Bracketed IPv6 literal as its eight 16-bit pieces, or null. */
|
|
408
|
+
function parseIpv6Literal(hostname: string): number[] | null {
|
|
409
|
+
if (!hostname.startsWith("[") || !hostname.endsWith("]")) {
|
|
410
|
+
return null;
|
|
411
|
+
}
|
|
412
|
+
const halves = hostname.slice(1, -1).split("::");
|
|
413
|
+
if (halves.length > 2) {
|
|
414
|
+
return null;
|
|
415
|
+
}
|
|
416
|
+
const toPieces = (part: string): number[] | null => {
|
|
417
|
+
if (!part) {
|
|
418
|
+
return [];
|
|
419
|
+
}
|
|
420
|
+
const pieces: number[] = [];
|
|
421
|
+
const labels = part.split(":");
|
|
422
|
+
for (const [index, label] of labels.entries()) {
|
|
423
|
+
// A trailing dotted-quad is legal IPv6 text. The WHATWG serializer never
|
|
424
|
+
// emits one, but a hand-built literal can still reach this parser.
|
|
425
|
+
if (index === labels.length - 1 && label.includes(".")) {
|
|
426
|
+
const octets = parseIpv4Literal(label);
|
|
427
|
+
if (!octets) {
|
|
428
|
+
return null;
|
|
429
|
+
}
|
|
430
|
+
pieces.push(
|
|
431
|
+
((octets[0] ?? 0) << 8) | (octets[1] ?? 0),
|
|
432
|
+
((octets[2] ?? 0) << 8) | (octets[3] ?? 0),
|
|
433
|
+
);
|
|
434
|
+
continue;
|
|
435
|
+
}
|
|
436
|
+
if (!/^[0-9a-f]{1,4}$/i.test(label)) {
|
|
437
|
+
return null;
|
|
438
|
+
}
|
|
439
|
+
pieces.push(Number.parseInt(label, 16));
|
|
440
|
+
}
|
|
441
|
+
return pieces;
|
|
442
|
+
};
|
|
443
|
+
const head = toPieces(halves[0] ?? "");
|
|
444
|
+
const tail = halves.length === 2 ? toPieces(halves[1] ?? "") : [];
|
|
445
|
+
if (!head || !tail) {
|
|
446
|
+
return null;
|
|
447
|
+
}
|
|
448
|
+
if (halves.length === 1) {
|
|
449
|
+
return head.length === 8 ? head : null;
|
|
450
|
+
}
|
|
451
|
+
const gap = 8 - head.length - tail.length;
|
|
452
|
+
return gap >= 1 ? [...head, ...Array<number>(gap).fill(0), ...tail] : null;
|
|
453
|
+
}
|
|
454
|
+
|
|
455
|
+
/**
|
|
456
|
+
* IPv4 ranges that are not publicly routable, judged from the four octets of a
|
|
457
|
+
* canonical dotted-quad. Loopback (127/8) is included so the predicate is
|
|
458
|
+
* complete on its own; `resolvePublicBaseUrl` still reports it as `loopback`
|
|
459
|
+
* because it checks that first.
|
|
460
|
+
*
|
|
461
|
+
* 100.64.0.0/10 is DELIBERATELY ABSENT. Tailscale hands out CGNAT addresses
|
|
462
|
+
* from that range and a Tailscale endpoint is a supported pairing target.
|
|
463
|
+
*/
|
|
464
|
+
function isPrivateIpv4(octets: readonly number[]): boolean {
|
|
465
|
+
const a = octets[0] ?? 0;
|
|
466
|
+
const b = octets[1] ?? 0;
|
|
467
|
+
const c = octets[2] ?? 0;
|
|
468
|
+
return (
|
|
469
|
+
a === 0 || // 0/8 "this network"
|
|
470
|
+
a === 10 || // 10/8 private
|
|
471
|
+
a === 127 || // 127/8 loopback
|
|
472
|
+
(a === 169 && b === 254) || // 169.254/16 link-local, incl. cloud metadata
|
|
473
|
+
(a === 172 && b >= 16 && b <= 31) || // 172.16/12 private
|
|
474
|
+
(a === 192 && b === 0 && c === 0) || // 192.0.0/24 protocol assignments
|
|
475
|
+
(a === 192 && b === 168) || // 192.168/16 private
|
|
476
|
+
(a === 198 && (b === 18 || b === 19)) || // 198.18/15 benchmarking
|
|
477
|
+
a >= 224 // 224/4 multicast, 240/4 reserved, 255.255.255.255 broadcast
|
|
478
|
+
);
|
|
479
|
+
}
|
|
480
|
+
|
|
481
|
+
/**
|
|
482
|
+
* A URL whose hostname is an IP literal outside publicly routable space:
|
|
483
|
+
* private, loopback, link-local (which is where the cloud instance metadata
|
|
484
|
+
* endpoint 169.254.169.254 lives), multicast, or reserved, in either address
|
|
485
|
+
* family. Pairing POSTs to whatever address the user pasted, so a literal
|
|
486
|
+
* aimed at the host's own network is refused before any request is made.
|
|
487
|
+
*
|
|
488
|
+
* Only literals written directly in the address are checked. Hostnames are
|
|
489
|
+
* NEVER resolved and resolved addresses are NEVER filtered, deliberately:
|
|
490
|
+
* Tailscale endpoints (`*.ts.net`) are a supported pairing target and resolve
|
|
491
|
+
* into the 100.64.0.0/10 CGNAT range, so post-DNS filtering would refuse them
|
|
492
|
+
* outright. It would also be TOCTOU-prone, since a name can resolve
|
|
493
|
+
* differently between the check and the connection.
|
|
494
|
+
*/
|
|
495
|
+
export function isPrivateNetworkPublicUrl(url: string): boolean {
|
|
496
|
+
let hostname: string;
|
|
497
|
+
try {
|
|
498
|
+
// WHATWG URL canonicalizes IP literals: decimal, octal, and hex IPv4 forms
|
|
499
|
+
// collapse to a dotted-quad, and IPv6 to a bracketed lowercase literal.
|
|
500
|
+
hostname = hostnameWithoutRootDot(new URL(url).hostname);
|
|
501
|
+
} catch {
|
|
502
|
+
return false;
|
|
503
|
+
}
|
|
504
|
+
const ipv4 = parseIpv4Literal(hostname);
|
|
505
|
+
if (ipv4) {
|
|
506
|
+
return isPrivateIpv4(ipv4);
|
|
507
|
+
}
|
|
508
|
+
const ipv6 = parseIpv6Literal(hostname);
|
|
509
|
+
if (!ipv6) {
|
|
510
|
+
return false;
|
|
511
|
+
}
|
|
512
|
+
// IPv4-mapped (::ffff:a.b.c.d) and IPv4-compatible (::a.b.c.d) literals carry
|
|
513
|
+
// an IPv4 destination, so they are unwrapped and judged as IPv4.
|
|
514
|
+
const low = ipv6[5] ?? 0;
|
|
515
|
+
if (
|
|
516
|
+
ipv6.slice(0, 5).every((piece) => piece === 0) &&
|
|
517
|
+
(low === 0xffff || low === 0)
|
|
518
|
+
) {
|
|
519
|
+
const mapped = ipv6[6] ?? 0;
|
|
520
|
+
const trailing = ipv6[7] ?? 0;
|
|
521
|
+
return isPrivateIpv4([
|
|
522
|
+
mapped >> 8,
|
|
523
|
+
mapped & 0xff,
|
|
524
|
+
trailing >> 8,
|
|
525
|
+
trailing & 0xff,
|
|
526
|
+
]);
|
|
527
|
+
}
|
|
528
|
+
const top = ipv6[0] ?? 0;
|
|
529
|
+
return (
|
|
530
|
+
(top & 0xfe00) === 0xfc00 || // fc00::/7 unique-local
|
|
531
|
+
(top & 0xffc0) === 0xfe80 || // fe80::/10 link-local
|
|
532
|
+
(top & 0xff00) === 0xff00 // ff00::/8 multicast
|
|
533
|
+
);
|
|
534
|
+
}
|
|
535
|
+
|
|
536
|
+
/**
|
|
537
|
+
* Normalize an address to the public base a scanning device opens:
|
|
538
|
+
* query/hash stripped, the `assistant` path segment (and everything after it)
|
|
539
|
+
* removed so a pasted pair-page URL collapses to its base, and trailing
|
|
540
|
+
* slashes trimmed. Throws if the value is not a parseable URL.
|
|
541
|
+
*/
|
|
542
|
+
export function normalizePairingBaseUrl(value: string): string {
|
|
543
|
+
const url = new URL(value);
|
|
544
|
+
url.search = "";
|
|
545
|
+
url.hash = "";
|
|
546
|
+
const parts = url.pathname.split("/").filter(Boolean);
|
|
547
|
+
const assistantIndex = parts.indexOf("assistant");
|
|
548
|
+
if (assistantIndex >= 0) {
|
|
549
|
+
parts.splice(assistantIndex);
|
|
550
|
+
}
|
|
551
|
+
url.pathname = parts.length ? `/${parts.join("/")}` : "/";
|
|
552
|
+
return url.toString().replace(/\/+$/, "");
|
|
553
|
+
}
|
|
554
|
+
|
|
555
|
+
/**
|
|
556
|
+
* Resolve an address to the public https base URL to advertise in a pairing
|
|
557
|
+
* challenge, or report why it can't be used. Loopback, private-network IP
|
|
558
|
+
* literals, and non-https links are refused with a specific reason callers
|
|
559
|
+
* turn into their own guidance.
|
|
560
|
+
*
|
|
561
|
+
* Hosts POST to this address during pairing, so the refusals are the SSRF
|
|
562
|
+
* containment for every pairing surface. See
|
|
563
|
+
* {@link isPrivateNetworkPublicUrl} for why resolved addresses are left alone.
|
|
564
|
+
*/
|
|
565
|
+
export function resolvePublicBaseUrl(raw: string): PublicBaseUrlResult {
|
|
566
|
+
let normalized: string;
|
|
567
|
+
try {
|
|
568
|
+
normalized = normalizePairingBaseUrl(raw);
|
|
569
|
+
} catch {
|
|
570
|
+
return { ok: false, reason: "unparseable" };
|
|
571
|
+
}
|
|
572
|
+
if (isLoopbackPublicUrl(normalized)) {
|
|
573
|
+
return { ok: false, reason: "loopback" };
|
|
574
|
+
}
|
|
575
|
+
if (isPrivateNetworkPublicUrl(normalized)) {
|
|
576
|
+
return { ok: false, reason: "private-address" };
|
|
577
|
+
}
|
|
578
|
+
if (isTunnelProviderWebsiteUrl(normalized)) {
|
|
579
|
+
return { ok: false, reason: "service-website" };
|
|
580
|
+
}
|
|
581
|
+
if (new URL(normalized).protocol !== "https:") {
|
|
582
|
+
return { ok: false, reason: "non-https" };
|
|
583
|
+
}
|
|
584
|
+
return { ok: true, url: normalized };
|
|
585
|
+
}
|
|
586
|
+
|
|
587
|
+
/**
|
|
588
|
+
* The scannable pair URL: the challenge's verification URI with the device
|
|
589
|
+
* code carried in the fragment (`#device_code=…`), matching what the pair
|
|
590
|
+
* page reads on load. Fragments never reach the wire.
|
|
591
|
+
*/
|
|
592
|
+
export function buildRemoteWebPairingUrl(
|
|
593
|
+
challenge: Pick<
|
|
594
|
+
RemoteWebPairingChallengeResponse,
|
|
595
|
+
"verificationUri" | "deviceCode"
|
|
596
|
+
>,
|
|
597
|
+
): string {
|
|
598
|
+
const url = new URL(challenge.verificationUri);
|
|
599
|
+
url.hash = new URLSearchParams({
|
|
600
|
+
device_code: challenge.deviceCode,
|
|
601
|
+
}).toString();
|
|
602
|
+
return url.toString();
|
|
603
|
+
}
|
|
604
|
+
|
|
605
|
+
/**
|
|
606
|
+
* Base that makes a relative pairing link parseable. Only the query and
|
|
607
|
+
* fragment are read off the result, so it never reaches a caller.
|
|
608
|
+
*/
|
|
609
|
+
const RELATIVE_PAIRING_LINK_BASE = "https://pairing.invalid";
|
|
610
|
+
|
|
611
|
+
/** The device/user codes a pairing link can carry. */
|
|
612
|
+
export interface RemoteWebPairingParams {
|
|
613
|
+
deviceCode: string | null;
|
|
614
|
+
userCode: string | null;
|
|
615
|
+
}
|
|
616
|
+
|
|
617
|
+
function firstParam(
|
|
618
|
+
params: URLSearchParams,
|
|
619
|
+
...names: string[]
|
|
620
|
+
): string | null {
|
|
621
|
+
for (const name of names) {
|
|
622
|
+
const value = params.get(name)?.trim();
|
|
623
|
+
if (value) {
|
|
624
|
+
return value;
|
|
625
|
+
}
|
|
626
|
+
}
|
|
627
|
+
return null;
|
|
628
|
+
}
|
|
629
|
+
|
|
630
|
+
/**
|
|
631
|
+
* Query parameters merged with fragment parameters, query winning on a clash.
|
|
632
|
+
* Pairing links carry the device code in the fragment so it never reaches the
|
|
633
|
+
* wire, but hand-assembled links put it in the query.
|
|
634
|
+
*/
|
|
635
|
+
function pairingLinkParams(url: URL): URLSearchParams {
|
|
636
|
+
const merged = new URLSearchParams(url.search);
|
|
637
|
+
const hash = url.hash.startsWith("#") ? url.hash.slice(1) : url.hash;
|
|
638
|
+
for (const [key, value] of new URLSearchParams(hash)) {
|
|
639
|
+
if (!merged.has(key)) {
|
|
640
|
+
merged.set(key, value);
|
|
641
|
+
}
|
|
642
|
+
}
|
|
643
|
+
return merged;
|
|
644
|
+
}
|
|
645
|
+
|
|
646
|
+
/**
|
|
647
|
+
* Read the pairing codes off a link, accepting either casing (`device_code` /
|
|
648
|
+
* `deviceCode`) from either the query string or the fragment. Relative values
|
|
649
|
+
* are accepted so a router can pass `pathname + search + hash` straight in.
|
|
650
|
+
*/
|
|
651
|
+
export function parseRemoteWebPairingParams(
|
|
652
|
+
value: string | URL,
|
|
653
|
+
): RemoteWebPairingParams {
|
|
654
|
+
const url =
|
|
655
|
+
typeof value === "string"
|
|
656
|
+
? new URL(value, RELATIVE_PAIRING_LINK_BASE)
|
|
657
|
+
: value;
|
|
658
|
+
const params = pairingLinkParams(url);
|
|
659
|
+
return {
|
|
660
|
+
deviceCode: firstParam(params, "deviceCode", "device_code"),
|
|
661
|
+
userCode: firstParam(params, "userCode", "user_code"),
|
|
662
|
+
};
|
|
663
|
+
}
|
|
664
|
+
|
|
665
|
+
/** Outcome of {@link parsePairingAddress}. */
|
|
666
|
+
export type ParsePairingAddressResult =
|
|
667
|
+
| { ok: true; publicBaseUrl: string; deviceCode: string | null }
|
|
668
|
+
| { ok: false; reason: PublicBaseUrlRejection };
|
|
669
|
+
|
|
670
|
+
/**
|
|
671
|
+
* The inverse of {@link buildRemoteWebPairingUrl}: what a pasted pairing
|
|
672
|
+
* address means. A full pairing link yields its base plus the device code it
|
|
673
|
+
* carries; a bare `https://host` address yields a null device code, leaving
|
|
674
|
+
* the caller to mint its own challenge. The base goes through
|
|
675
|
+
* {@link resolvePublicBaseUrl}, so loopback, private-network literals,
|
|
676
|
+
* non-https, and tunnel-vendor websites are refused with the same reasons
|
|
677
|
+
* every other pairing surface reports.
|
|
678
|
+
*/
|
|
679
|
+
export function parsePairingAddress(raw: string): ParsePairingAddressResult {
|
|
680
|
+
const resolved = resolvePublicBaseUrl(raw);
|
|
681
|
+
if (!resolved.ok) {
|
|
682
|
+
return resolved;
|
|
683
|
+
}
|
|
684
|
+
return {
|
|
685
|
+
ok: true,
|
|
686
|
+
publicBaseUrl: resolved.url,
|
|
687
|
+
deviceCode: parseRemoteWebPairingParams(raw).deviceCode,
|
|
688
|
+
};
|
|
689
|
+
}
|
|
690
|
+
|
|
691
|
+
/**
|
|
692
|
+
* What a pairing attempt failed on, for callers picking recovery copy. Every
|
|
693
|
+
* pairing surface reports one of these: the host-side sessions in
|
|
694
|
+
* `@vellumai/local-mode`, the Electron bridge, the desktop connect dialog, and
|
|
695
|
+
* the `vellum connect import` CLI.
|
|
696
|
+
*/
|
|
697
|
+
export type PairingFailureReason =
|
|
698
|
+
/** The pasted address is not a usable assistant address. */
|
|
699
|
+
| "invalid-address"
|
|
700
|
+
/** No live session for this handle: it was cancelled or never existed. */
|
|
701
|
+
| "unknown-session"
|
|
702
|
+
/** The device code expired, was denied, or was already spent. */
|
|
703
|
+
| "expired"
|
|
704
|
+
/** The assistant could not be reached. */
|
|
705
|
+
| "unreachable"
|
|
706
|
+
/**
|
|
707
|
+
* The assistant refused the request with a status that left the device code
|
|
708
|
+
* exchangeable, so the same session is worth another attempt.
|
|
709
|
+
*/
|
|
710
|
+
| "gateway-retryable"
|
|
711
|
+
/**
|
|
712
|
+
* The assistant answered, but with a reply this device cannot use. The code
|
|
713
|
+
* behind it is spent or unknowable, so the attempt is settled.
|
|
714
|
+
*/
|
|
715
|
+
| "gateway"
|
|
716
|
+
/** The credentials arrived, but registering them locally was refused. */
|
|
717
|
+
| "import"
|
|
718
|
+
/**
|
|
719
|
+
* The local destination was refused BEFORE the exchange, so the one-time
|
|
720
|
+
* code is untouched and the session is still pollable. Only a caller that
|
|
721
|
+
* changes what it asked for (a different `name`) can get past it, so it is
|
|
722
|
+
* not worth another identical attempt.
|
|
723
|
+
*/
|
|
724
|
+
| "import-precheck";
|
|
725
|
+
|
|
726
|
+
/**
|
|
727
|
+
* Every reason, mapped to whether another attempt against the same session can
|
|
728
|
+
* still succeed. Two classes leave the device code exchangeable host-side:
|
|
729
|
+
*
|
|
730
|
+
* - `unreachable`, the transport class (a thrown fetch, a timeout, a refused
|
|
731
|
+
* redirect, a body that errored mid-stream). Nothing reached the assistant,
|
|
732
|
+
* so the session and the code are untouched.
|
|
733
|
+
* - `gateway-retryable`, a non-200 the assistant answered with. The gateway
|
|
734
|
+
* releases the challenge before a repairable failure (a transient error, or
|
|
735
|
+
* the `GUARDIAN_REPAIR_REQUIRED` 503), so the same code stays exchangeable.
|
|
736
|
+
*
|
|
737
|
+
* Everything else ends the attempt. `invalid-address` and `unknown-session`
|
|
738
|
+
* cannot resolve by waiting; `expired` and `import` mean the one-time code is
|
|
739
|
+
* already spent; `gateway` means the assistant answered with something this
|
|
740
|
+
* device cannot use (an over-cap body, credentials it cannot persist, a 200
|
|
741
|
+
* that is not a pairing reply), past which the code is spent rather than
|
|
742
|
+
* released; and `import-precheck` refused the local destination before the
|
|
743
|
+
* exchange, so an identical attempt is refused identically.
|
|
744
|
+
*
|
|
745
|
+
* `import-precheck` is the one of those that leaves the SESSION alive, which
|
|
746
|
+
* is a separate question from whether to retry: see
|
|
747
|
+
* {@link pairingSessionSurvives}.
|
|
748
|
+
*
|
|
749
|
+
* The `satisfies` clause keeps the map exhaustive, so a new reason does not
|
|
750
|
+
* compile until it is classified here.
|
|
751
|
+
*/
|
|
752
|
+
const PAIRING_REASON_RETRYABLE = {
|
|
753
|
+
"invalid-address": false,
|
|
754
|
+
"unknown-session": false,
|
|
755
|
+
expired: false,
|
|
756
|
+
unreachable: true,
|
|
757
|
+
"gateway-retryable": true,
|
|
758
|
+
gateway: false,
|
|
759
|
+
import: false,
|
|
760
|
+
"import-precheck": false,
|
|
761
|
+
} satisfies Record<PairingFailureReason, boolean>;
|
|
762
|
+
|
|
763
|
+
/** The reasons {@link isRetryablePairingReason} accepts. */
|
|
764
|
+
export const RETRYABLE_PAIRING_REASONS: ReadonlySet<PairingFailureReason> =
|
|
765
|
+
new Set(
|
|
766
|
+
(Object.keys(PAIRING_REASON_RETRYABLE) as PairingFailureReason[]).filter(
|
|
767
|
+
(reason) => PAIRING_REASON_RETRYABLE[reason],
|
|
768
|
+
),
|
|
769
|
+
);
|
|
770
|
+
|
|
771
|
+
/**
|
|
772
|
+
* Whether a refused pairing step is worth another attempt. An unlabelled
|
|
773
|
+
* failure reads as settled, so a host too old to name a reason ends the
|
|
774
|
+
* attempt rather than being spun against until the code expires.
|
|
775
|
+
*/
|
|
776
|
+
export function isRetryablePairingReason(
|
|
777
|
+
reason: PairingFailureReason | null | undefined,
|
|
778
|
+
): boolean {
|
|
779
|
+
return reason != null && RETRYABLE_PAIRING_REASONS.has(reason);
|
|
780
|
+
}
|
|
781
|
+
|
|
782
|
+
/**
|
|
783
|
+
* Every reason, mapped to whether the pairing session it came from is still
|
|
784
|
+
* live host-side. A caller holding the handle reads this to decide whether to
|
|
785
|
+
* release the session: releasing a live one throws away a device code that is
|
|
786
|
+
* still good and costs the user a fresh pairing link.
|
|
787
|
+
*
|
|
788
|
+
* This is deliberately NOT the retryable map. `import-precheck` is the reason
|
|
789
|
+
* the two disagree on: nothing was spent and the same handle still polls, but
|
|
790
|
+
* only once the caller changes the name it asked for, so a blind retry is
|
|
791
|
+
* futile while dropping the session is destructive.
|
|
792
|
+
*
|
|
793
|
+
* `invalid-address` never had a session to begin with, so it reads false the
|
|
794
|
+
* same way a dead one does: there is nothing to hold onto either way.
|
|
795
|
+
*/
|
|
796
|
+
const PAIRING_REASON_SESSION_LIVE = {
|
|
797
|
+
"invalid-address": false,
|
|
798
|
+
"unknown-session": false,
|
|
799
|
+
expired: false,
|
|
800
|
+
unreachable: true,
|
|
801
|
+
"gateway-retryable": true,
|
|
802
|
+
gateway: false,
|
|
803
|
+
import: false,
|
|
804
|
+
"import-precheck": true,
|
|
805
|
+
} satisfies Record<PairingFailureReason, boolean>;
|
|
806
|
+
|
|
807
|
+
/**
|
|
808
|
+
* Whether the session behind a refused pairing step is still pollable. An
|
|
809
|
+
* unlabelled failure reads as settled, so a host too old to name a reason has
|
|
810
|
+
* its session released rather than left to time out.
|
|
811
|
+
*/
|
|
812
|
+
export function pairingSessionSurvives(
|
|
813
|
+
reason: PairingFailureReason | null | undefined,
|
|
814
|
+
): boolean {
|
|
815
|
+
return reason != null && PAIRING_REASON_SESSION_LIVE[reason] === true;
|
|
816
|
+
}
|