@defai.digital/ax-cli 3.8.8 → 3.8.10
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/README.md +23 -1
- package/config-defaults/prompts.yaml +96 -12
- package/dist/agent/llm-agent.js +2 -0
- package/dist/agent/llm-agent.js.map +1 -1
- package/dist/agent/specialized/analysis-agent.js +7 -16
- package/dist/agent/specialized/analysis-agent.js.map +1 -1
- package/dist/agent/specialized/debug-agent.js +7 -16
- package/dist/agent/specialized/debug-agent.js.map +1 -1
- package/dist/agent/specialized/documentation-agent.js +7 -16
- package/dist/agent/specialized/documentation-agent.js.map +1 -1
- package/dist/agent/specialized/performance-agent.js +7 -16
- package/dist/agent/specialized/performance-agent.js.map +1 -1
- package/dist/agent/specialized/refactoring-agent.js +7 -16
- package/dist/agent/specialized/refactoring-agent.js.map +1 -1
- package/dist/agent/specialized/testing-agent.js +7 -16
- package/dist/agent/specialized/testing-agent.js.map +1 -1
- package/dist/agent/subagent-types.d.ts +6 -0
- package/dist/agent/subagent-types.js +43 -56
- package/dist/agent/subagent-types.js.map +1 -1
- package/dist/commands/init.js +6 -5
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/memory.js +8 -8
- package/dist/commands/memory.js.map +1 -1
- package/dist/commands/setup.js +3 -3
- package/dist/commands/setup.js.map +1 -1
- package/dist/constants.d.ts +38 -0
- package/dist/constants.js +41 -2
- package/dist/constants.js.map +1 -1
- package/dist/llm/tools.d.ts +30 -3
- package/dist/llm/tools.js +112 -47
- package/dist/llm/tools.js.map +1 -1
- package/dist/schemas/yaml-schemas.d.ts +47 -0
- package/dist/schemas/yaml-schemas.js +1 -0
- package/dist/schemas/yaml-schemas.js.map +1 -1
- package/dist/tools/text-editor.d.ts +9 -0
- package/dist/tools/text-editor.js +224 -82
- package/dist/tools/text-editor.js.map +1 -1
- package/dist/utils/config-loader.d.ts +1 -0
- package/dist/utils/config-loader.js.map +1 -1
- package/dist/utils/history-manager.js +6 -6
- package/dist/utils/history-manager.js.map +1 -1
- package/dist/utils/prompt-builder.js +4 -0
- package/dist/utils/prompt-builder.js.map +1 -1
- package/dist/utils/settings-manager.js +4 -4
- package/dist/utils/settings-manager.js.map +1 -1
- package/dist/utils/template-manager.js +9 -8
- package/dist/utils/template-manager.js.map +1 -1
- package/node_modules/@ax-cli/schemas/README.md +388 -0
- package/node_modules/@ax-cli/schemas/package.json +54 -0
- package/node_modules/zod/LICENSE +21 -0
- package/node_modules/zod/README.md +208 -0
- package/node_modules/zod/index.cjs +33 -0
- package/node_modules/zod/index.d.cts +4 -0
- package/node_modules/zod/index.d.ts +4 -0
- package/node_modules/zod/index.js +4 -0
- package/node_modules/zod/package.json +118 -0
- package/node_modules/zod/src/index.ts +4 -0
- package/node_modules/zod/src/v3/ZodError.ts +330 -0
- package/node_modules/zod/src/v3/benchmarks/datetime.ts +58 -0
- package/node_modules/zod/src/v3/benchmarks/discriminatedUnion.ts +80 -0
- package/node_modules/zod/src/v3/benchmarks/index.ts +59 -0
- package/node_modules/zod/src/v3/benchmarks/ipv4.ts +57 -0
- package/node_modules/zod/src/v3/benchmarks/object.ts +69 -0
- package/node_modules/zod/src/v3/benchmarks/primitives.ts +162 -0
- package/node_modules/zod/src/v3/benchmarks/realworld.ts +63 -0
- package/node_modules/zod/src/v3/benchmarks/string.ts +55 -0
- package/node_modules/zod/src/v3/benchmarks/union.ts +80 -0
- package/node_modules/zod/src/v3/errors.ts +13 -0
- package/node_modules/zod/src/v3/external.ts +6 -0
- package/node_modules/zod/src/v3/helpers/enumUtil.ts +17 -0
- package/node_modules/zod/src/v3/helpers/errorUtil.ts +8 -0
- package/node_modules/zod/src/v3/helpers/parseUtil.ts +176 -0
- package/node_modules/zod/src/v3/helpers/partialUtil.ts +34 -0
- package/node_modules/zod/src/v3/helpers/typeAliases.ts +2 -0
- package/node_modules/zod/src/v3/helpers/util.ts +224 -0
- package/node_modules/zod/src/v3/index.ts +4 -0
- package/node_modules/zod/src/v3/locales/en.ts +124 -0
- package/node_modules/zod/src/v3/standard-schema.ts +113 -0
- package/node_modules/zod/src/v3/tests/Mocker.ts +54 -0
- package/node_modules/zod/src/v3/tests/all-errors.test.ts +157 -0
- package/node_modules/zod/src/v3/tests/anyunknown.test.ts +28 -0
- package/node_modules/zod/src/v3/tests/array.test.ts +71 -0
- package/node_modules/zod/src/v3/tests/async-parsing.test.ts +388 -0
- package/node_modules/zod/src/v3/tests/async-refinements.test.ts +46 -0
- package/node_modules/zod/src/v3/tests/base.test.ts +29 -0
- package/node_modules/zod/src/v3/tests/bigint.test.ts +55 -0
- package/node_modules/zod/src/v3/tests/branded.test.ts +53 -0
- package/node_modules/zod/src/v3/tests/catch.test.ts +220 -0
- package/node_modules/zod/src/v3/tests/coerce.test.ts +133 -0
- package/node_modules/zod/src/v3/tests/complex.test.ts +56 -0
- package/node_modules/zod/src/v3/tests/custom.test.ts +31 -0
- package/node_modules/zod/src/v3/tests/date.test.ts +32 -0
- package/node_modules/zod/src/v3/tests/deepmasking.test.ts +186 -0
- package/node_modules/zod/src/v3/tests/default.test.ts +112 -0
- package/node_modules/zod/src/v3/tests/description.test.ts +33 -0
- package/node_modules/zod/src/v3/tests/discriminated-unions.test.ts +315 -0
- package/node_modules/zod/src/v3/tests/enum.test.ts +80 -0
- package/node_modules/zod/src/v3/tests/error.test.ts +551 -0
- package/node_modules/zod/src/v3/tests/firstparty.test.ts +87 -0
- package/node_modules/zod/src/v3/tests/firstpartyschematypes.test.ts +21 -0
- package/node_modules/zod/src/v3/tests/function.test.ts +257 -0
- package/node_modules/zod/src/v3/tests/generics.test.ts +48 -0
- package/node_modules/zod/src/v3/tests/instanceof.test.ts +37 -0
- package/node_modules/zod/src/v3/tests/intersection.test.ts +110 -0
- package/node_modules/zod/src/v3/tests/language-server.source.ts +76 -0
- package/node_modules/zod/src/v3/tests/language-server.test.ts +207 -0
- package/node_modules/zod/src/v3/tests/literal.test.ts +36 -0
- package/node_modules/zod/src/v3/tests/map.test.ts +110 -0
- package/node_modules/zod/src/v3/tests/masking.test.ts +4 -0
- package/node_modules/zod/src/v3/tests/mocker.test.ts +19 -0
- package/node_modules/zod/src/v3/tests/nan.test.ts +21 -0
- package/node_modules/zod/src/v3/tests/nativeEnum.test.ts +87 -0
- package/node_modules/zod/src/v3/tests/nullable.test.ts +42 -0
- package/node_modules/zod/src/v3/tests/number.test.ts +176 -0
- package/node_modules/zod/src/v3/tests/object-augmentation.test.ts +29 -0
- package/node_modules/zod/src/v3/tests/object-in-es5-env.test.ts +29 -0
- package/node_modules/zod/src/v3/tests/object.test.ts +434 -0
- package/node_modules/zod/src/v3/tests/optional.test.ts +42 -0
- package/node_modules/zod/src/v3/tests/parseUtil.test.ts +23 -0
- package/node_modules/zod/src/v3/tests/parser.test.ts +41 -0
- package/node_modules/zod/src/v3/tests/partials.test.ts +243 -0
- package/node_modules/zod/src/v3/tests/pickomit.test.ts +111 -0
- package/node_modules/zod/src/v3/tests/pipeline.test.ts +29 -0
- package/node_modules/zod/src/v3/tests/preprocess.test.ts +186 -0
- package/node_modules/zod/src/v3/tests/primitive.test.ts +440 -0
- package/node_modules/zod/src/v3/tests/promise.test.ts +90 -0
- package/node_modules/zod/src/v3/tests/readonly.test.ts +194 -0
- package/node_modules/zod/src/v3/tests/record.test.ts +171 -0
- package/node_modules/zod/src/v3/tests/recursive.test.ts +197 -0
- package/node_modules/zod/src/v3/tests/refine.test.ts +313 -0
- package/node_modules/zod/src/v3/tests/safeparse.test.ts +27 -0
- package/node_modules/zod/src/v3/tests/set.test.ts +142 -0
- package/node_modules/zod/src/v3/tests/standard-schema.test.ts +83 -0
- package/node_modules/zod/src/v3/tests/string.test.ts +916 -0
- package/node_modules/zod/src/v3/tests/transformer.test.ts +233 -0
- package/node_modules/zod/src/v3/tests/tuple.test.ts +90 -0
- package/node_modules/zod/src/v3/tests/unions.test.ts +57 -0
- package/node_modules/zod/src/v3/tests/validations.test.ts +133 -0
- package/node_modules/zod/src/v3/tests/void.test.ts +15 -0
- package/node_modules/zod/src/v3/types.ts +5136 -0
- package/node_modules/zod/src/v4/classic/checks.ts +30 -0
- package/node_modules/zod/src/v4/classic/coerce.ts +27 -0
- package/node_modules/zod/src/v4/classic/compat.ts +66 -0
- package/node_modules/zod/src/v4/classic/errors.ts +75 -0
- package/node_modules/zod/src/v4/classic/external.ts +50 -0
- package/node_modules/zod/src/v4/classic/index.ts +5 -0
- package/node_modules/zod/src/v4/classic/iso.ts +90 -0
- package/node_modules/zod/src/v4/classic/parse.ts +33 -0
- package/node_modules/zod/src/v4/classic/schemas.ts +2054 -0
- package/node_modules/zod/src/v4/classic/tests/anyunknown.test.ts +26 -0
- package/node_modules/zod/src/v4/classic/tests/array.test.ts +264 -0
- package/node_modules/zod/src/v4/classic/tests/assignability.test.ts +210 -0
- package/node_modules/zod/src/v4/classic/tests/async-parsing.test.ts +381 -0
- package/node_modules/zod/src/v4/classic/tests/async-refinements.test.ts +68 -0
- package/node_modules/zod/src/v4/classic/tests/base.test.ts +7 -0
- package/node_modules/zod/src/v4/classic/tests/bigint.test.ts +54 -0
- package/node_modules/zod/src/v4/classic/tests/brand.test.ts +63 -0
- package/node_modules/zod/src/v4/classic/tests/catch.test.ts +252 -0
- package/node_modules/zod/src/v4/classic/tests/coalesce.test.ts +20 -0
- package/node_modules/zod/src/v4/classic/tests/coerce.test.ts +160 -0
- package/node_modules/zod/src/v4/classic/tests/continuability.test.ts +352 -0
- package/node_modules/zod/src/v4/classic/tests/custom.test.ts +40 -0
- package/node_modules/zod/src/v4/classic/tests/date.test.ts +31 -0
- package/node_modules/zod/src/v4/classic/tests/datetime.test.ts +296 -0
- package/node_modules/zod/src/v4/classic/tests/default.test.ts +313 -0
- package/node_modules/zod/src/v4/classic/tests/description.test.ts +32 -0
- package/node_modules/zod/src/v4/classic/tests/discriminated-unions.test.ts +619 -0
- package/node_modules/zod/src/v4/classic/tests/enum.test.ts +285 -0
- package/node_modules/zod/src/v4/classic/tests/error-utils.test.ts +527 -0
- package/node_modules/zod/src/v4/classic/tests/error.test.ts +711 -0
- package/node_modules/zod/src/v4/classic/tests/file.test.ts +91 -0
- package/node_modules/zod/src/v4/classic/tests/firstparty.test.ts +175 -0
- package/node_modules/zod/src/v4/classic/tests/function.test.ts +268 -0
- package/node_modules/zod/src/v4/classic/tests/generics.test.ts +72 -0
- package/node_modules/zod/src/v4/classic/tests/index.test.ts +829 -0
- package/node_modules/zod/src/v4/classic/tests/instanceof.test.ts +34 -0
- package/node_modules/zod/src/v4/classic/tests/intersection.test.ts +171 -0
- package/node_modules/zod/src/v4/classic/tests/json.test.ts +108 -0
- package/node_modules/zod/src/v4/classic/tests/lazy.test.ts +227 -0
- package/node_modules/zod/src/v4/classic/tests/literal.test.ts +92 -0
- package/node_modules/zod/src/v4/classic/tests/map.test.ts +196 -0
- package/node_modules/zod/src/v4/classic/tests/nan.test.ts +21 -0
- package/node_modules/zod/src/v4/classic/tests/nested-refine.test.ts +168 -0
- package/node_modules/zod/src/v4/classic/tests/nonoptional.test.ts +86 -0
- package/node_modules/zod/src/v4/classic/tests/nullable.test.ts +22 -0
- package/node_modules/zod/src/v4/classic/tests/number.test.ts +247 -0
- package/node_modules/zod/src/v4/classic/tests/object.test.ts +563 -0
- package/node_modules/zod/src/v4/classic/tests/optional.test.ts +123 -0
- package/node_modules/zod/src/v4/classic/tests/partial.test.ts +147 -0
- package/node_modules/zod/src/v4/classic/tests/pickomit.test.ts +127 -0
- package/node_modules/zod/src/v4/classic/tests/pipe.test.ts +81 -0
- package/node_modules/zod/src/v4/classic/tests/prefault.test.ts +37 -0
- package/node_modules/zod/src/v4/classic/tests/preprocess.test.ts +298 -0
- package/node_modules/zod/src/v4/classic/tests/primitive.test.ts +175 -0
- package/node_modules/zod/src/v4/classic/tests/promise.test.ts +81 -0
- package/node_modules/zod/src/v4/classic/tests/prototypes.test.ts +23 -0
- package/node_modules/zod/src/v4/classic/tests/readonly.test.ts +252 -0
- package/node_modules/zod/src/v4/classic/tests/record.test.ts +342 -0
- package/node_modules/zod/src/v4/classic/tests/recursive-types.test.ts +356 -0
- package/node_modules/zod/src/v4/classic/tests/refine.test.ts +532 -0
- package/node_modules/zod/src/v4/classic/tests/registries.test.ts +204 -0
- package/node_modules/zod/src/v4/classic/tests/set.test.ts +179 -0
- package/node_modules/zod/src/v4/classic/tests/standard-schema.test.ts +57 -0
- package/node_modules/zod/src/v4/classic/tests/string-formats.test.ts +109 -0
- package/node_modules/zod/src/v4/classic/tests/string.test.ts +881 -0
- package/node_modules/zod/src/v4/classic/tests/stringbool.test.ts +66 -0
- package/node_modules/zod/src/v4/classic/tests/template-literal.test.ts +758 -0
- package/node_modules/zod/src/v4/classic/tests/to-json-schema.test.ts +2314 -0
- package/node_modules/zod/src/v4/classic/tests/transform.test.ts +250 -0
- package/node_modules/zod/src/v4/classic/tests/tuple.test.ts +163 -0
- package/node_modules/zod/src/v4/classic/tests/union.test.ts +94 -0
- package/node_modules/zod/src/v4/classic/tests/validations.test.ts +283 -0
- package/node_modules/zod/src/v4/classic/tests/void.test.ts +12 -0
- package/node_modules/zod/src/v4/core/api.ts +1594 -0
- package/node_modules/zod/src/v4/core/checks.ts +1283 -0
- package/node_modules/zod/src/v4/core/config.ts +15 -0
- package/node_modules/zod/src/v4/core/core.ts +134 -0
- package/node_modules/zod/src/v4/core/doc.ts +44 -0
- package/node_modules/zod/src/v4/core/errors.ts +424 -0
- package/node_modules/zod/src/v4/core/function.ts +176 -0
- package/node_modules/zod/src/v4/core/index.ts +15 -0
- package/node_modules/zod/src/v4/core/json-schema.ts +143 -0
- package/node_modules/zod/src/v4/core/parse.ts +94 -0
- package/node_modules/zod/src/v4/core/regexes.ts +135 -0
- package/node_modules/zod/src/v4/core/registries.ts +96 -0
- package/node_modules/zod/src/v4/core/schemas.ts +3842 -0
- package/node_modules/zod/src/v4/core/standard-schema.ts +64 -0
- package/node_modules/zod/src/v4/core/tests/index.test.ts +46 -0
- package/node_modules/zod/src/v4/core/tests/locales/be.test.ts +124 -0
- package/node_modules/zod/src/v4/core/tests/locales/en.test.ts +22 -0
- package/node_modules/zod/src/v4/core/tests/locales/ru.test.ts +128 -0
- package/node_modules/zod/src/v4/core/tests/locales/tr.test.ts +69 -0
- package/node_modules/zod/src/v4/core/to-json-schema.ts +977 -0
- package/node_modules/zod/src/v4/core/util.ts +775 -0
- package/node_modules/zod/src/v4/core/versions.ts +5 -0
- package/node_modules/zod/src/v4/core/zsf.ts +323 -0
- package/node_modules/zod/src/v4/index.ts +4 -0
- package/node_modules/zod/src/v4/locales/ar.ts +125 -0
- package/node_modules/zod/src/v4/locales/az.ts +121 -0
- package/node_modules/zod/src/v4/locales/be.ts +184 -0
- package/node_modules/zod/src/v4/locales/ca.ts +127 -0
- package/node_modules/zod/src/v4/locales/cs.ts +142 -0
- package/node_modules/zod/src/v4/locales/de.ts +124 -0
- package/node_modules/zod/src/v4/locales/en.ts +127 -0
- package/node_modules/zod/src/v4/locales/eo.ts +125 -0
- package/node_modules/zod/src/v4/locales/es.ts +125 -0
- package/node_modules/zod/src/v4/locales/fa.ts +134 -0
- package/node_modules/zod/src/v4/locales/fi.ts +131 -0
- package/node_modules/zod/src/v4/locales/fr-CA.ts +126 -0
- package/node_modules/zod/src/v4/locales/fr.ts +124 -0
- package/node_modules/zod/src/v4/locales/he.ts +125 -0
- package/node_modules/zod/src/v4/locales/hu.ts +126 -0
- package/node_modules/zod/src/v4/locales/id.ts +125 -0
- package/node_modules/zod/src/v4/locales/index.ts +39 -0
- package/node_modules/zod/src/v4/locales/it.ts +125 -0
- package/node_modules/zod/src/v4/locales/ja.ts +122 -0
- package/node_modules/zod/src/v4/locales/kh.ts +126 -0
- package/node_modules/zod/src/v4/locales/ko.ts +131 -0
- package/node_modules/zod/src/v4/locales/mk.ts +127 -0
- package/node_modules/zod/src/v4/locales/ms.ts +124 -0
- package/node_modules/zod/src/v4/locales/nl.ts +126 -0
- package/node_modules/zod/src/v4/locales/no.ts +124 -0
- package/node_modules/zod/src/v4/locales/ota.ts +125 -0
- package/node_modules/zod/src/v4/locales/pl.ts +126 -0
- package/node_modules/zod/src/v4/locales/ps.ts +133 -0
- package/node_modules/zod/src/v4/locales/pt.ts +123 -0
- package/node_modules/zod/src/v4/locales/ru.ts +184 -0
- package/node_modules/zod/src/v4/locales/sl.ts +126 -0
- package/node_modules/zod/src/v4/locales/sv.ts +127 -0
- package/node_modules/zod/src/v4/locales/ta.ts +125 -0
- package/node_modules/zod/src/v4/locales/th.ts +126 -0
- package/node_modules/zod/src/v4/locales/tr.ts +121 -0
- package/node_modules/zod/src/v4/locales/ua.ts +126 -0
- package/node_modules/zod/src/v4/locales/ur.ts +126 -0
- package/node_modules/zod/src/v4/locales/vi.ts +125 -0
- package/node_modules/zod/src/v4/locales/zh-CN.ts +123 -0
- package/node_modules/zod/src/v4/locales/zh-TW.ts +125 -0
- package/node_modules/zod/src/v4/mini/checks.ts +32 -0
- package/node_modules/zod/src/v4/mini/coerce.ts +22 -0
- package/node_modules/zod/src/v4/mini/external.ts +40 -0
- package/node_modules/zod/src/v4/mini/index.ts +3 -0
- package/node_modules/zod/src/v4/mini/iso.ts +62 -0
- package/node_modules/zod/src/v4/mini/parse.ts +1 -0
- package/node_modules/zod/src/v4/mini/schemas.ts +1579 -0
- package/node_modules/zod/src/v4/mini/tests/assignability.test.ts +129 -0
- package/node_modules/zod/src/v4/mini/tests/brand.test.ts +51 -0
- package/node_modules/zod/src/v4/mini/tests/checks.test.ts +144 -0
- package/node_modules/zod/src/v4/mini/tests/computed.test.ts +36 -0
- package/node_modules/zod/src/v4/mini/tests/error.test.ts +22 -0
- package/node_modules/zod/src/v4/mini/tests/functions.test.ts +43 -0
- package/node_modules/zod/src/v4/mini/tests/index.test.ts +871 -0
- package/node_modules/zod/src/v4/mini/tests/number.test.ts +95 -0
- package/node_modules/zod/src/v4/mini/tests/object.test.ts +185 -0
- package/node_modules/zod/src/v4/mini/tests/prototypes.test.ts +43 -0
- package/node_modules/zod/src/v4/mini/tests/recursive-types.test.ts +275 -0
- package/node_modules/zod/src/v4/mini/tests/string.test.ts +299 -0
- package/node_modules/zod/src/v4-mini/index.ts +1 -0
- package/node_modules/zod/v3/ZodError.cjs +138 -0
- package/node_modules/zod/v3/ZodError.d.cts +164 -0
- package/node_modules/zod/v3/ZodError.d.ts +164 -0
- package/node_modules/zod/v3/ZodError.js +133 -0
- package/node_modules/zod/v3/errors.cjs +17 -0
- package/node_modules/zod/v3/errors.d.cts +5 -0
- package/node_modules/zod/v3/errors.d.ts +5 -0
- package/node_modules/zod/v3/errors.js +9 -0
- package/node_modules/zod/v3/external.cjs +22 -0
- package/node_modules/zod/v3/external.d.cts +6 -0
- package/node_modules/zod/v3/external.d.ts +6 -0
- package/node_modules/zod/v3/external.js +6 -0
- package/node_modules/zod/v3/helpers/enumUtil.cjs +2 -0
- package/node_modules/zod/v3/helpers/enumUtil.d.cts +8 -0
- package/node_modules/zod/v3/helpers/enumUtil.d.ts +8 -0
- package/node_modules/zod/v3/helpers/enumUtil.js +1 -0
- package/node_modules/zod/v3/helpers/errorUtil.cjs +9 -0
- package/node_modules/zod/v3/helpers/errorUtil.d.cts +9 -0
- package/node_modules/zod/v3/helpers/errorUtil.d.ts +9 -0
- package/node_modules/zod/v3/helpers/errorUtil.js +6 -0
- package/node_modules/zod/v3/helpers/parseUtil.cjs +124 -0
- package/node_modules/zod/v3/helpers/parseUtil.d.cts +78 -0
- package/node_modules/zod/v3/helpers/parseUtil.d.ts +78 -0
- package/node_modules/zod/v3/helpers/parseUtil.js +109 -0
- package/node_modules/zod/v3/helpers/partialUtil.cjs +2 -0
- package/node_modules/zod/v3/helpers/partialUtil.d.cts +8 -0
- package/node_modules/zod/v3/helpers/partialUtil.d.ts +8 -0
- package/node_modules/zod/v3/helpers/partialUtil.js +1 -0
- package/node_modules/zod/v3/helpers/typeAliases.cjs +2 -0
- package/node_modules/zod/v3/helpers/typeAliases.d.cts +2 -0
- package/node_modules/zod/v3/helpers/typeAliases.d.ts +2 -0
- package/node_modules/zod/v3/helpers/typeAliases.js +1 -0
- package/node_modules/zod/v3/helpers/util.cjs +137 -0
- package/node_modules/zod/v3/helpers/util.d.cts +85 -0
- package/node_modules/zod/v3/helpers/util.d.ts +85 -0
- package/node_modules/zod/v3/helpers/util.js +133 -0
- package/node_modules/zod/v3/index.cjs +33 -0
- package/node_modules/zod/v3/index.d.cts +4 -0
- package/node_modules/zod/v3/index.d.ts +4 -0
- package/node_modules/zod/v3/index.js +4 -0
- package/node_modules/zod/v3/locales/en.cjs +111 -0
- package/node_modules/zod/v3/locales/en.d.cts +3 -0
- package/node_modules/zod/v3/locales/en.d.ts +3 -0
- package/node_modules/zod/v3/locales/en.js +109 -0
- package/node_modules/zod/v3/standard-schema.cjs +2 -0
- package/node_modules/zod/v3/standard-schema.d.cts +102 -0
- package/node_modules/zod/v3/standard-schema.d.ts +102 -0
- package/node_modules/zod/v3/standard-schema.js +1 -0
- package/node_modules/zod/v3/types.cjs +3775 -0
- package/node_modules/zod/v3/types.d.cts +1031 -0
- package/node_modules/zod/v3/types.d.ts +1031 -0
- package/node_modules/zod/v3/types.js +3693 -0
- package/node_modules/zod/v4/classic/checks.cjs +32 -0
- package/node_modules/zod/v4/classic/checks.d.cts +1 -0
- package/node_modules/zod/v4/classic/checks.d.ts +1 -0
- package/node_modules/zod/v4/classic/checks.js +1 -0
- package/node_modules/zod/v4/classic/coerce.cjs +47 -0
- package/node_modules/zod/v4/classic/coerce.d.cts +17 -0
- package/node_modules/zod/v4/classic/coerce.d.ts +17 -0
- package/node_modules/zod/v4/classic/coerce.js +17 -0
- package/node_modules/zod/v4/classic/compat.cjs +57 -0
- package/node_modules/zod/v4/classic/compat.d.cts +46 -0
- package/node_modules/zod/v4/classic/compat.d.ts +46 -0
- package/node_modules/zod/v4/classic/compat.js +27 -0
- package/node_modules/zod/v4/classic/errors.cjs +67 -0
- package/node_modules/zod/v4/classic/errors.d.cts +30 -0
- package/node_modules/zod/v4/classic/errors.d.ts +30 -0
- package/node_modules/zod/v4/classic/errors.js +41 -0
- package/node_modules/zod/v4/classic/external.cjs +70 -0
- package/node_modules/zod/v4/classic/external.d.cts +13 -0
- package/node_modules/zod/v4/classic/external.d.ts +13 -0
- package/node_modules/zod/v4/classic/external.js +18 -0
- package/node_modules/zod/v4/classic/index.cjs +33 -0
- package/node_modules/zod/v4/classic/index.d.cts +4 -0
- package/node_modules/zod/v4/classic/index.d.ts +4 -0
- package/node_modules/zod/v4/classic/index.js +4 -0
- package/node_modules/zod/v4/classic/iso.cjs +60 -0
- package/node_modules/zod/v4/classic/iso.d.cts +22 -0
- package/node_modules/zod/v4/classic/iso.d.ts +22 -0
- package/node_modules/zod/v4/classic/iso.js +30 -0
- package/node_modules/zod/v4/classic/parse.cjs +32 -0
- package/node_modules/zod/v4/classic/parse.d.cts +23 -0
- package/node_modules/zod/v4/classic/parse.d.ts +23 -0
- package/node_modules/zod/v4/classic/parse.js +6 -0
- package/node_modules/zod/v4/classic/schemas.cjs +1109 -0
- package/node_modules/zod/v4/classic/schemas.d.cts +630 -0
- package/node_modules/zod/v4/classic/schemas.d.ts +630 -0
- package/node_modules/zod/v4/classic/schemas.js +1006 -0
- package/node_modules/zod/v4/core/api.cjs +1039 -0
- package/node_modules/zod/v4/core/api.d.cts +284 -0
- package/node_modules/zod/v4/core/api.d.ts +284 -0
- package/node_modules/zod/v4/core/api.js +906 -0
- package/node_modules/zod/v4/core/checks.cjs +591 -0
- package/node_modules/zod/v4/core/checks.d.cts +278 -0
- package/node_modules/zod/v4/core/checks.d.ts +278 -0
- package/node_modules/zod/v4/core/checks.js +565 -0
- package/node_modules/zod/v4/core/core.cjs +67 -0
- package/node_modules/zod/v4/core/core.d.cts +49 -0
- package/node_modules/zod/v4/core/core.d.ts +49 -0
- package/node_modules/zod/v4/core/core.js +61 -0
- package/node_modules/zod/v4/core/doc.cjs +39 -0
- package/node_modules/zod/v4/core/doc.d.cts +14 -0
- package/node_modules/zod/v4/core/doc.d.ts +14 -0
- package/node_modules/zod/v4/core/doc.js +35 -0
- package/node_modules/zod/v4/core/errors.cjs +226 -0
- package/node_modules/zod/v4/core/errors.d.cts +208 -0
- package/node_modules/zod/v4/core/errors.d.ts +208 -0
- package/node_modules/zod/v4/core/errors.js +195 -0
- package/node_modules/zod/v4/core/function.cjs +102 -0
- package/node_modules/zod/v4/core/function.d.cts +52 -0
- package/node_modules/zod/v4/core/function.d.ts +52 -0
- package/node_modules/zod/v4/core/function.js +75 -0
- package/node_modules/zod/v4/core/index.cjs +44 -0
- package/node_modules/zod/v4/core/index.d.cts +15 -0
- package/node_modules/zod/v4/core/index.d.ts +15 -0
- package/node_modules/zod/v4/core/index.js +15 -0
- package/node_modules/zod/v4/core/json-schema.cjs +2 -0
- package/node_modules/zod/v4/core/json-schema.d.cts +87 -0
- package/node_modules/zod/v4/core/json-schema.d.ts +87 -0
- package/node_modules/zod/v4/core/json-schema.js +1 -0
- package/node_modules/zod/v4/core/parse.cjs +87 -0
- package/node_modules/zod/v4/core/parse.d.cts +25 -0
- package/node_modules/zod/v4/core/parse.d.ts +25 -0
- package/node_modules/zod/v4/core/parse.js +57 -0
- package/node_modules/zod/v4/core/regexes.cjs +103 -0
- package/node_modules/zod/v4/core/regexes.d.cts +62 -0
- package/node_modules/zod/v4/core/regexes.d.ts +62 -0
- package/node_modules/zod/v4/core/regexes.js +95 -0
- package/node_modules/zod/v4/core/registries.cjs +56 -0
- package/node_modules/zod/v4/core/registries.d.cts +35 -0
- package/node_modules/zod/v4/core/registries.d.ts +35 -0
- package/node_modules/zod/v4/core/registries.js +51 -0
- package/node_modules/zod/v4/core/schemas.cjs +1748 -0
- package/node_modules/zod/v4/core/schemas.d.cts +1041 -0
- package/node_modules/zod/v4/core/schemas.d.ts +1041 -0
- package/node_modules/zod/v4/core/schemas.js +1717 -0
- package/node_modules/zod/v4/core/standard-schema.cjs +2 -0
- package/node_modules/zod/v4/core/standard-schema.d.cts +55 -0
- package/node_modules/zod/v4/core/standard-schema.d.ts +55 -0
- package/node_modules/zod/v4/core/standard-schema.js +1 -0
- package/node_modules/zod/v4/core/to-json-schema.cjs +854 -0
- package/node_modules/zod/v4/core/to-json-schema.d.cts +88 -0
- package/node_modules/zod/v4/core/to-json-schema.d.ts +88 -0
- package/node_modules/zod/v4/core/to-json-schema.js +849 -0
- package/node_modules/zod/v4/core/util.cjs +539 -0
- package/node_modules/zod/v4/core/util.d.cts +183 -0
- package/node_modules/zod/v4/core/util.d.ts +183 -0
- package/node_modules/zod/v4/core/util.js +493 -0
- package/node_modules/zod/v4/core/versions.cjs +8 -0
- package/node_modules/zod/v4/core/versions.d.cts +5 -0
- package/node_modules/zod/v4/core/versions.d.ts +5 -0
- package/node_modules/zod/v4/core/versions.js +5 -0
- package/node_modules/zod/v4/index.cjs +22 -0
- package/node_modules/zod/v4/index.d.cts +3 -0
- package/node_modules/zod/v4/index.d.ts +3 -0
- package/node_modules/zod/v4/index.js +3 -0
- package/node_modules/zod/v4/locales/ar.cjs +142 -0
- package/node_modules/zod/v4/locales/ar.d.cts +4 -0
- package/node_modules/zod/v4/locales/ar.d.ts +4 -0
- package/node_modules/zod/v4/locales/ar.js +116 -0
- package/node_modules/zod/v4/locales/az.cjs +141 -0
- package/node_modules/zod/v4/locales/az.d.cts +4 -0
- package/node_modules/zod/v4/locales/az.d.ts +4 -0
- package/node_modules/zod/v4/locales/az.js +115 -0
- package/node_modules/zod/v4/locales/be.cjs +190 -0
- package/node_modules/zod/v4/locales/be.d.cts +4 -0
- package/node_modules/zod/v4/locales/be.d.ts +4 -0
- package/node_modules/zod/v4/locales/be.js +164 -0
- package/node_modules/zod/v4/locales/ca.cjs +144 -0
- package/node_modules/zod/v4/locales/ca.d.cts +4 -0
- package/node_modules/zod/v4/locales/ca.d.ts +4 -0
- package/node_modules/zod/v4/locales/ca.js +118 -0
- package/node_modules/zod/v4/locales/cs.cjs +161 -0
- package/node_modules/zod/v4/locales/cs.d.cts +4 -0
- package/node_modules/zod/v4/locales/cs.d.ts +4 -0
- package/node_modules/zod/v4/locales/cs.js +135 -0
- package/node_modules/zod/v4/locales/de.cjs +142 -0
- package/node_modules/zod/v4/locales/de.d.cts +4 -0
- package/node_modules/zod/v4/locales/de.d.ts +4 -0
- package/node_modules/zod/v4/locales/de.js +116 -0
- package/node_modules/zod/v4/locales/en.cjs +145 -0
- package/node_modules/zod/v4/locales/en.d.cts +5 -0
- package/node_modules/zod/v4/locales/en.d.ts +5 -0
- package/node_modules/zod/v4/locales/en.js +117 -0
- package/node_modules/zod/v4/locales/eo.cjs +144 -0
- package/node_modules/zod/v4/locales/eo.d.cts +5 -0
- package/node_modules/zod/v4/locales/eo.d.ts +5 -0
- package/node_modules/zod/v4/locales/eo.js +116 -0
- package/node_modules/zod/v4/locales/es.cjs +143 -0
- package/node_modules/zod/v4/locales/es.d.cts +4 -0
- package/node_modules/zod/v4/locales/es.d.ts +4 -0
- package/node_modules/zod/v4/locales/es.js +117 -0
- package/node_modules/zod/v4/locales/fa.cjs +148 -0
- package/node_modules/zod/v4/locales/fa.d.cts +4 -0
- package/node_modules/zod/v4/locales/fa.d.ts +4 -0
- package/node_modules/zod/v4/locales/fa.js +122 -0
- package/node_modules/zod/v4/locales/fi.cjs +148 -0
- package/node_modules/zod/v4/locales/fi.d.cts +4 -0
- package/node_modules/zod/v4/locales/fi.d.ts +4 -0
- package/node_modules/zod/v4/locales/fi.js +122 -0
- package/node_modules/zod/v4/locales/fr-CA.cjs +143 -0
- package/node_modules/zod/v4/locales/fr-CA.d.cts +4 -0
- package/node_modules/zod/v4/locales/fr-CA.d.ts +4 -0
- package/node_modules/zod/v4/locales/fr-CA.js +117 -0
- package/node_modules/zod/v4/locales/fr.cjs +142 -0
- package/node_modules/zod/v4/locales/fr.d.cts +4 -0
- package/node_modules/zod/v4/locales/fr.d.ts +4 -0
- package/node_modules/zod/v4/locales/fr.js +116 -0
- package/node_modules/zod/v4/locales/he.cjs +143 -0
- package/node_modules/zod/v4/locales/he.d.cts +4 -0
- package/node_modules/zod/v4/locales/he.d.ts +4 -0
- package/node_modules/zod/v4/locales/he.js +117 -0
- package/node_modules/zod/v4/locales/hu.cjs +143 -0
- package/node_modules/zod/v4/locales/hu.d.cts +4 -0
- package/node_modules/zod/v4/locales/hu.d.ts +4 -0
- package/node_modules/zod/v4/locales/hu.js +117 -0
- package/node_modules/zod/v4/locales/id.cjs +142 -0
- package/node_modules/zod/v4/locales/id.d.cts +4 -0
- package/node_modules/zod/v4/locales/id.d.ts +4 -0
- package/node_modules/zod/v4/locales/id.js +116 -0
- package/node_modules/zod/v4/locales/index.cjs +84 -0
- package/node_modules/zod/v4/locales/index.d.cts +39 -0
- package/node_modules/zod/v4/locales/index.d.ts +39 -0
- package/node_modules/zod/v4/locales/index.js +39 -0
- package/node_modules/zod/v4/locales/it.cjs +143 -0
- package/node_modules/zod/v4/locales/it.d.cts +4 -0
- package/node_modules/zod/v4/locales/it.d.ts +4 -0
- package/node_modules/zod/v4/locales/it.js +117 -0
- package/node_modules/zod/v4/locales/ja.cjs +141 -0
- package/node_modules/zod/v4/locales/ja.d.cts +4 -0
- package/node_modules/zod/v4/locales/ja.d.ts +4 -0
- package/node_modules/zod/v4/locales/ja.js +115 -0
- package/node_modules/zod/v4/locales/kh.cjs +143 -0
- package/node_modules/zod/v4/locales/kh.d.cts +4 -0
- package/node_modules/zod/v4/locales/kh.d.ts +4 -0
- package/node_modules/zod/v4/locales/kh.js +117 -0
- package/node_modules/zod/v4/locales/ko.cjs +147 -0
- package/node_modules/zod/v4/locales/ko.d.cts +4 -0
- package/node_modules/zod/v4/locales/ko.d.ts +4 -0
- package/node_modules/zod/v4/locales/ko.js +121 -0
- package/node_modules/zod/v4/locales/mk.cjs +144 -0
- package/node_modules/zod/v4/locales/mk.d.cts +4 -0
- package/node_modules/zod/v4/locales/mk.d.ts +4 -0
- package/node_modules/zod/v4/locales/mk.js +118 -0
- package/node_modules/zod/v4/locales/ms.cjs +142 -0
- package/node_modules/zod/v4/locales/ms.d.cts +4 -0
- package/node_modules/zod/v4/locales/ms.d.ts +4 -0
- package/node_modules/zod/v4/locales/ms.js +116 -0
- package/node_modules/zod/v4/locales/nl.cjs +143 -0
- package/node_modules/zod/v4/locales/nl.d.cts +4 -0
- package/node_modules/zod/v4/locales/nl.d.ts +4 -0
- package/node_modules/zod/v4/locales/nl.js +117 -0
- package/node_modules/zod/v4/locales/no.cjs +142 -0
- package/node_modules/zod/v4/locales/no.d.cts +4 -0
- package/node_modules/zod/v4/locales/no.d.ts +4 -0
- package/node_modules/zod/v4/locales/no.js +116 -0
- package/node_modules/zod/v4/locales/ota.cjs +143 -0
- package/node_modules/zod/v4/locales/ota.d.cts +4 -0
- package/node_modules/zod/v4/locales/ota.d.ts +4 -0
- package/node_modules/zod/v4/locales/ota.js +117 -0
- package/node_modules/zod/v4/locales/pl.cjs +143 -0
- package/node_modules/zod/v4/locales/pl.d.cts +4 -0
- package/node_modules/zod/v4/locales/pl.d.ts +4 -0
- package/node_modules/zod/v4/locales/pl.js +117 -0
- package/node_modules/zod/v4/locales/ps.cjs +148 -0
- package/node_modules/zod/v4/locales/ps.d.cts +4 -0
- package/node_modules/zod/v4/locales/ps.d.ts +4 -0
- package/node_modules/zod/v4/locales/ps.js +122 -0
- package/node_modules/zod/v4/locales/pt.cjs +142 -0
- package/node_modules/zod/v4/locales/pt.d.cts +4 -0
- package/node_modules/zod/v4/locales/pt.d.ts +4 -0
- package/node_modules/zod/v4/locales/pt.js +116 -0
- package/node_modules/zod/v4/locales/ru.cjs +190 -0
- package/node_modules/zod/v4/locales/ru.d.cts +4 -0
- package/node_modules/zod/v4/locales/ru.d.ts +4 -0
- package/node_modules/zod/v4/locales/ru.js +164 -0
- package/node_modules/zod/v4/locales/sl.cjs +143 -0
- package/node_modules/zod/v4/locales/sl.d.cts +4 -0
- package/node_modules/zod/v4/locales/sl.d.ts +4 -0
- package/node_modules/zod/v4/locales/sl.js +117 -0
- package/node_modules/zod/v4/locales/sv.cjs +144 -0
- package/node_modules/zod/v4/locales/sv.d.cts +4 -0
- package/node_modules/zod/v4/locales/sv.d.ts +4 -0
- package/node_modules/zod/v4/locales/sv.js +118 -0
- package/node_modules/zod/v4/locales/ta.cjs +143 -0
- package/node_modules/zod/v4/locales/ta.d.cts +4 -0
- package/node_modules/zod/v4/locales/ta.d.ts +4 -0
- package/node_modules/zod/v4/locales/ta.js +117 -0
- package/node_modules/zod/v4/locales/th.cjs +143 -0
- package/node_modules/zod/v4/locales/th.d.cts +4 -0
- package/node_modules/zod/v4/locales/th.d.ts +4 -0
- package/node_modules/zod/v4/locales/th.js +117 -0
- package/node_modules/zod/v4/locales/tr.cjs +143 -0
- package/node_modules/zod/v4/locales/tr.d.cts +5 -0
- package/node_modules/zod/v4/locales/tr.d.ts +5 -0
- package/node_modules/zod/v4/locales/tr.js +115 -0
- package/node_modules/zod/v4/locales/ua.cjs +143 -0
- package/node_modules/zod/v4/locales/ua.d.cts +4 -0
- package/node_modules/zod/v4/locales/ua.d.ts +4 -0
- package/node_modules/zod/v4/locales/ua.js +117 -0
- package/node_modules/zod/v4/locales/ur.cjs +143 -0
- package/node_modules/zod/v4/locales/ur.d.cts +4 -0
- package/node_modules/zod/v4/locales/ur.d.ts +4 -0
- package/node_modules/zod/v4/locales/ur.js +117 -0
- package/node_modules/zod/v4/locales/vi.cjs +142 -0
- package/node_modules/zod/v4/locales/vi.d.cts +4 -0
- package/node_modules/zod/v4/locales/vi.d.ts +4 -0
- package/node_modules/zod/v4/locales/vi.js +116 -0
- package/node_modules/zod/v4/locales/zh-CN.cjs +142 -0
- package/node_modules/zod/v4/locales/zh-CN.d.cts +4 -0
- package/node_modules/zod/v4/locales/zh-CN.d.ts +4 -0
- package/node_modules/zod/v4/locales/zh-CN.js +116 -0
- package/node_modules/zod/v4/locales/zh-TW.cjs +143 -0
- package/node_modules/zod/v4/locales/zh-TW.d.cts +4 -0
- package/node_modules/zod/v4/locales/zh-TW.d.ts +4 -0
- package/node_modules/zod/v4/locales/zh-TW.js +117 -0
- package/node_modules/zod/v4/mini/checks.cjs +34 -0
- package/node_modules/zod/v4/mini/checks.d.cts +1 -0
- package/node_modules/zod/v4/mini/checks.d.ts +1 -0
- package/node_modules/zod/v4/mini/checks.js +1 -0
- package/node_modules/zod/v4/mini/coerce.cjs +47 -0
- package/node_modules/zod/v4/mini/coerce.d.cts +7 -0
- package/node_modules/zod/v4/mini/coerce.d.ts +7 -0
- package/node_modules/zod/v4/mini/coerce.js +17 -0
- package/node_modules/zod/v4/mini/external.cjs +62 -0
- package/node_modules/zod/v4/mini/external.d.cts +11 -0
- package/node_modules/zod/v4/mini/external.d.ts +11 -0
- package/node_modules/zod/v4/mini/external.js +13 -0
- package/node_modules/zod/v4/mini/index.cjs +32 -0
- package/node_modules/zod/v4/mini/index.d.cts +3 -0
- package/node_modules/zod/v4/mini/index.d.ts +3 -0
- package/node_modules/zod/v4/mini/index.js +3 -0
- package/node_modules/zod/v4/mini/iso.cjs +60 -0
- package/node_modules/zod/v4/mini/iso.d.cts +22 -0
- package/node_modules/zod/v4/mini/iso.d.ts +22 -0
- package/node_modules/zod/v4/mini/iso.js +30 -0
- package/node_modules/zod/v4/mini/parse.cjs +8 -0
- package/node_modules/zod/v4/mini/parse.d.cts +1 -0
- package/node_modules/zod/v4/mini/parse.d.ts +1 -0
- package/node_modules/zod/v4/mini/parse.js +1 -0
- package/node_modules/zod/v4/mini/schemas.cjs +839 -0
- package/node_modules/zod/v4/mini/schemas.d.cts +356 -0
- package/node_modules/zod/v4/mini/schemas.d.ts +356 -0
- package/node_modules/zod/v4/mini/schemas.js +732 -0
- package/node_modules/zod/v4-mini/index.cjs +17 -0
- package/node_modules/zod/v4-mini/index.d.cts +1 -0
- package/node_modules/zod/v4-mini/index.d.ts +1 -0
- package/node_modules/zod/v4-mini/index.js +1 -0
- package/package.json +5 -2
|
@@ -0,0 +1,388 @@
|
|
|
1
|
+
# @ax-cli/schemas
|
|
2
|
+
|
|
3
|
+
Single Source of Truth (SSOT) Type System for AX CLI.
|
|
4
|
+
|
|
5
|
+
This package provides centralized Zod schemas, brand types, and enums for the entire ax-cli ecosystem, ensuring type safety and runtime validation across all modules.
|
|
6
|
+
|
|
7
|
+
## Installation
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm install @ax-cli/schemas
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## What is Single Source of Truth (SSOT)?
|
|
14
|
+
|
|
15
|
+
**Single Source of Truth (SSOT)**: All modules (API / MCP / Usage) share the same type definition contract.
|
|
16
|
+
|
|
17
|
+
Before @ax-cli/schemas, type definitions were scattered across the codebase, leading to:
|
|
18
|
+
- Duplicated schema definitions
|
|
19
|
+
- Inconsistent validation logic
|
|
20
|
+
- Type mismatches between modules
|
|
21
|
+
- High refactoring costs
|
|
22
|
+
|
|
23
|
+
### Architecture: Before vs. After
|
|
24
|
+
|
|
25
|
+
**BEFORE** (Distributed, Inconsistent):
|
|
26
|
+
```
|
|
27
|
+
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
|
|
28
|
+
│ API Handler │ │ MCP Adapter │ │ Usage Module │
|
|
29
|
+
├─────────────────┤ ├─────────────────┤ ├─────────────────┤
|
|
30
|
+
│ • Own schemas │ │ • Own schemas │ │ • Own schemas │
|
|
31
|
+
│ • Own types │ │ • Own types │ │ • Own types │
|
|
32
|
+
│ • Own enums │ │ • Own enums │ │ • Own enums │
|
|
33
|
+
└─────────────────┘ └─────────────────┘ └─────────────────┘
|
|
34
|
+
❌ ❌ ❌
|
|
35
|
+
Duplicated Duplicated Duplicated
|
|
36
|
+
Diverges over time Diverges over time Diverges over time
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
**AFTER** (Centralized, Consistent):
|
|
40
|
+
```
|
|
41
|
+
┌──────────────────────────────┐
|
|
42
|
+
│ @ax-cli/schemas │
|
|
43
|
+
├──────────────────────────────┤
|
|
44
|
+
│ • Brand Types (ID safety) │
|
|
45
|
+
│ • Centralized Enums │
|
|
46
|
+
│ • Zod Schemas (validation) │
|
|
47
|
+
│ • TypeScript Types │
|
|
48
|
+
└───────────────┬──────────────┘
|
|
49
|
+
│
|
|
50
|
+
┌─────────────┼─────────────┐
|
|
51
|
+
│ │ │
|
|
52
|
+
▼ ▼ ▼
|
|
53
|
+
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
|
|
54
|
+
│ API Handler │ │ MCP Adapter │ │Usage Module │
|
|
55
|
+
├─────────────┤ ├─────────────┤ ├─────────────┤
|
|
56
|
+
│ import {...}│ │ import {...}│ │ import {...}│
|
|
57
|
+
│ from │ │ from │ │ from │
|
|
58
|
+
│ '@ax-cli/ │ │ '@ax-cli/ │ │ '@ax-cli/ │
|
|
59
|
+
│ schemas' │ │ schemas' │ │ schemas' │
|
|
60
|
+
└─────────────┘ └─────────────┘ └─────────────┘
|
|
61
|
+
✅ ✅ ✅
|
|
62
|
+
Same contract Same contract Same contract
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### Benefits
|
|
66
|
+
|
|
67
|
+
**1. Zero Divergence**
|
|
68
|
+
All modules consume the same source - when you update `ModelId` schema, all consumers get the update automatically.
|
|
69
|
+
|
|
70
|
+
**2. Reduced Refactoring Cost**
|
|
71
|
+
Change once in `@ax-cli/schemas`, propagate everywhere. No need to hunt down all duplicate definitions.
|
|
72
|
+
|
|
73
|
+
**3. Compile-Time Safety**
|
|
74
|
+
TypeScript catches type mismatches across module boundaries:
|
|
75
|
+
```typescript
|
|
76
|
+
// API handler expects ModelId
|
|
77
|
+
function handleRequest(model: ModelId) { ... }
|
|
78
|
+
|
|
79
|
+
// MCP adapter provides ModelId (same type!)
|
|
80
|
+
const mcpModel = ModelIdSchema.parse(input);
|
|
81
|
+
handleRequest(mcpModel); // ✅ Type-safe!
|
|
82
|
+
|
|
83
|
+
// Usage module also uses ModelId (same type!)
|
|
84
|
+
const usageModel = getModelFromDB(); // Returns ModelId
|
|
85
|
+
handleRequest(usageModel); // ✅ Type-safe!
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
**4. Runtime Validation Consistency**
|
|
89
|
+
All modules use the same Zod schemas, ensuring consistent validation rules across API boundaries, MCP adapters, and usage tracking.
|
|
90
|
+
|
|
91
|
+
## Features
|
|
92
|
+
|
|
93
|
+
- **Brand Types**: Compile-time nominal typing for ID types to prevent mixing
|
|
94
|
+
- **Centralized Enums**: Single source of truth for all enum values
|
|
95
|
+
- **Zod Schemas**: Runtime validation with TypeScript type inference
|
|
96
|
+
- **Zero Runtime Cost**: Brand types are compile-time only (erased during compilation)
|
|
97
|
+
- **100% Test Coverage**: Comprehensive test suite (123 tests)
|
|
98
|
+
|
|
99
|
+
## Quick Start
|
|
100
|
+
|
|
101
|
+
### Using Brand Types
|
|
102
|
+
|
|
103
|
+
```typescript
|
|
104
|
+
import { ModelId, ModelIdSchema } from '@ax-cli/schemas';
|
|
105
|
+
|
|
106
|
+
// ✅ Safe: Runtime validation + branding
|
|
107
|
+
const modelId = ModelIdSchema.parse('glm-4.6');
|
|
108
|
+
|
|
109
|
+
// ✅ Type-safe function signatures
|
|
110
|
+
function getModelConfig(id: ModelId) {
|
|
111
|
+
// TypeScript prevents passing other ID types here
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
// ❌ Compile error: Can't pass plain string
|
|
115
|
+
getModelConfig('glm-4.6'); // TypeScript error!
|
|
116
|
+
|
|
117
|
+
// ✅ Correct: Parse first
|
|
118
|
+
getModelConfig(ModelIdSchema.parse('glm-4.6'));
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
### Using Enums
|
|
122
|
+
|
|
123
|
+
```typescript
|
|
124
|
+
import { MessageRoleEnum, type MessageRole } from '@ax-cli/schemas';
|
|
125
|
+
|
|
126
|
+
// ✅ Use in Zod schemas
|
|
127
|
+
const MessageSchema = z.object({
|
|
128
|
+
role: MessageRoleEnum,
|
|
129
|
+
content: z.string(),
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
// ✅ Use type for function signatures
|
|
133
|
+
function handleMessage(role: MessageRole, content: string) {
|
|
134
|
+
// role is typed as 'system' | 'user' | 'assistant' | 'tool'
|
|
135
|
+
}
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
## API Reference
|
|
139
|
+
|
|
140
|
+
### Brand Types
|
|
141
|
+
|
|
142
|
+
All ID types are branded to prevent accidental mixing:
|
|
143
|
+
|
|
144
|
+
```typescript
|
|
145
|
+
import {
|
|
146
|
+
ApiResponseId,
|
|
147
|
+
ToolCallId,
|
|
148
|
+
ModelId,
|
|
149
|
+
MCPServerId,
|
|
150
|
+
// ... and their corresponding schemas
|
|
151
|
+
ApiResponseIdSchema,
|
|
152
|
+
ToolCallIdSchema,
|
|
153
|
+
ModelIdSchema,
|
|
154
|
+
MCPServerIdSchema,
|
|
155
|
+
} from '@ax-cli/schemas';
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
**Available Brand Types:**
|
|
159
|
+
- `ApiResponseId` / `ApiResponseIdSchema`
|
|
160
|
+
- `ToolCallId` / `ToolCallIdSchema`
|
|
161
|
+
- `ModelId` / `ModelIdSchema`
|
|
162
|
+
- `TenantId` / `TenantIdSchema`
|
|
163
|
+
- `ApiKeyId` / `ApiKeyIdSchema`
|
|
164
|
+
- `MCPServerId` / `MCPServerIdSchema`
|
|
165
|
+
- `UsageRecordId` / `UsageRecordIdSchema`
|
|
166
|
+
- `PlanId` / `PlanIdSchema`
|
|
167
|
+
- `SessionId` / `SessionIdSchema`
|
|
168
|
+
- `RequestId` / `RequestIdSchema`
|
|
169
|
+
|
|
170
|
+
### Enums
|
|
171
|
+
|
|
172
|
+
```typescript
|
|
173
|
+
import {
|
|
174
|
+
MessageRoleEnum,
|
|
175
|
+
FinishReasonEnum,
|
|
176
|
+
TransportEnum,
|
|
177
|
+
EditorCommandEnum,
|
|
178
|
+
} from '@ax-cli/schemas';
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
**MessageRoleEnum**: `'system' | 'user' | 'assistant' | 'tool'`
|
|
182
|
+
|
|
183
|
+
**FinishReasonEnum**: `'stop' | 'length' | 'tool_calls' | 'content_filter'`
|
|
184
|
+
|
|
185
|
+
**TransportEnum**: `'stdio' | 'http' | 'sse'`
|
|
186
|
+
|
|
187
|
+
**EditorCommandEnum**: `'view' | 'create' | 'str_replace' | 'insert' | 'undo_edit'`
|
|
188
|
+
|
|
189
|
+
### Brand Type Utilities
|
|
190
|
+
|
|
191
|
+
```typescript
|
|
192
|
+
import {
|
|
193
|
+
brand,
|
|
194
|
+
unbrand,
|
|
195
|
+
isBranded,
|
|
196
|
+
createBrandFactory,
|
|
197
|
+
type Brand,
|
|
198
|
+
} from '@ax-cli/schemas';
|
|
199
|
+
|
|
200
|
+
// Create custom brand types
|
|
201
|
+
const MyIdSchema = z.string().transform((val) => brand<string, 'MyId'>(val));
|
|
202
|
+
type MyId = Brand<string, 'MyId'>;
|
|
203
|
+
|
|
204
|
+
// Remove branding (use sparingly!)
|
|
205
|
+
const plainString = unbrand(brandedId);
|
|
206
|
+
|
|
207
|
+
// Check if value is branded
|
|
208
|
+
if (isBranded(value, 'ModelId')) {
|
|
209
|
+
// TypeScript knows this is a ModelId
|
|
210
|
+
}
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
## Security Best Practices
|
|
214
|
+
|
|
215
|
+
### CRITICAL: Brand Types Are Compile-Time Only
|
|
216
|
+
|
|
217
|
+
Brand types provide **ZERO runtime validation**. You **MUST** validate all external inputs at system boundaries.
|
|
218
|
+
|
|
219
|
+
```typescript
|
|
220
|
+
// ❌ UNSAFE: No runtime validation!
|
|
221
|
+
const tenantId = userInput as TenantId; // DON'T DO THIS!
|
|
222
|
+
|
|
223
|
+
// ✅ SAFE: Validates with Zod
|
|
224
|
+
const result = TenantIdSchema.safeParse(userInput);
|
|
225
|
+
if (result.success) {
|
|
226
|
+
const tenantId = result.data; // Type-safe AND runtime-safe
|
|
227
|
+
}
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
### When to Validate
|
|
231
|
+
|
|
232
|
+
Always validate at these boundaries:
|
|
233
|
+
|
|
234
|
+
- **API boundaries**: HTTP requests, MCP inputs
|
|
235
|
+
- **File I/O**: Reading configs, user settings
|
|
236
|
+
- **Database queries**: WHERE clauses with user IDs
|
|
237
|
+
- **Environment variables**
|
|
238
|
+
- **Command-line arguments**
|
|
239
|
+
|
|
240
|
+
### Safe Validation Pattern
|
|
241
|
+
|
|
242
|
+
```typescript
|
|
243
|
+
import { ModelIdSchema, type ModelId } from '@ax-cli/schemas';
|
|
244
|
+
|
|
245
|
+
function updateModel(modelName: string): void {
|
|
246
|
+
// ✅ Validate at boundary
|
|
247
|
+
const result = ModelIdSchema.safeParse(modelName);
|
|
248
|
+
|
|
249
|
+
if (!result.success) {
|
|
250
|
+
throw new Error(`Invalid model ID: ${result.error.message}`);
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
// Now we have a branded ModelId
|
|
254
|
+
const modelId: ModelId = result.data;
|
|
255
|
+
|
|
256
|
+
// Use in type-safe functions
|
|
257
|
+
processModel(modelId);
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
function processModel(id: ModelId): void {
|
|
261
|
+
// TypeScript ensures only ModelId can be passed here
|
|
262
|
+
// No accidental mixing with other ID types!
|
|
263
|
+
}
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
## Migration Guide
|
|
267
|
+
|
|
268
|
+
### Adding Brand Types to Existing Code
|
|
269
|
+
|
|
270
|
+
**Step 1**: Import the schema
|
|
271
|
+
|
|
272
|
+
```typescript
|
|
273
|
+
import { ModelIdSchema } from '@ax-cli/schemas';
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
**Step 2**: Use `.parse()` at object creation boundaries
|
|
277
|
+
|
|
278
|
+
```typescript
|
|
279
|
+
// Before
|
|
280
|
+
const config = {
|
|
281
|
+
model: 'glm-4.6', // Plain string
|
|
282
|
+
};
|
|
283
|
+
|
|
284
|
+
// After
|
|
285
|
+
const config = {
|
|
286
|
+
model: ModelIdSchema.parse('glm-4.6'), // Branded ModelId
|
|
287
|
+
};
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
**Step 3**: Update function signatures
|
|
291
|
+
|
|
292
|
+
```typescript
|
|
293
|
+
// Before
|
|
294
|
+
function getConfig(model: string) { }
|
|
295
|
+
|
|
296
|
+
// After
|
|
297
|
+
function getConfig(model: ModelId) { }
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
**Step 4**: Fix TypeScript errors by adding `.parse()` at call sites
|
|
301
|
+
|
|
302
|
+
```typescript
|
|
303
|
+
// Before
|
|
304
|
+
getConfig('glm-4.6'); // Now causes TypeScript error
|
|
305
|
+
|
|
306
|
+
// After
|
|
307
|
+
getConfig(ModelIdSchema.parse('glm-4.6')); // Type-safe!
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
### Default Values
|
|
311
|
+
|
|
312
|
+
For constants and defaults, parse at definition:
|
|
313
|
+
|
|
314
|
+
```typescript
|
|
315
|
+
import { ModelIdSchema } from '@ax-cli/schemas';
|
|
316
|
+
|
|
317
|
+
const DEFAULT_CONFIG = {
|
|
318
|
+
model: ModelIdSchema.parse('glm-4.6'),
|
|
319
|
+
// ... other fields
|
|
320
|
+
};
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
## Performance
|
|
324
|
+
|
|
325
|
+
- **Brand types**: Zero runtime cost (compile-time only)
|
|
326
|
+
- **Zod validation**: ~1-2μs per validation (negligible)
|
|
327
|
+
- **Test performance**: 123 tests in <20ms
|
|
328
|
+
|
|
329
|
+
## Testing
|
|
330
|
+
|
|
331
|
+
```bash
|
|
332
|
+
# Run tests
|
|
333
|
+
npm test
|
|
334
|
+
|
|
335
|
+
# Run tests in watch mode
|
|
336
|
+
npm run test:watch
|
|
337
|
+
|
|
338
|
+
# Type checking
|
|
339
|
+
npm run typecheck
|
|
340
|
+
|
|
341
|
+
# Build
|
|
342
|
+
npm run build
|
|
343
|
+
```
|
|
344
|
+
|
|
345
|
+
## Architecture
|
|
346
|
+
|
|
347
|
+
```
|
|
348
|
+
packages/schemas/
|
|
349
|
+
├── src/
|
|
350
|
+
│ ├── index.ts # Public API
|
|
351
|
+
│ ├── public/
|
|
352
|
+
│ │ └── core/
|
|
353
|
+
│ │ ├── brand-types.ts # Brand type utilities
|
|
354
|
+
│ │ ├── enums.ts # Centralized enums
|
|
355
|
+
│ │ └── id-types.ts # ID brand types
|
|
356
|
+
│ └── __tests__/
|
|
357
|
+
│ ├── brand-types.test.ts # 40 tests
|
|
358
|
+
│ ├── enums.test.ts # 31 tests
|
|
359
|
+
│ └── id-types.test.ts # 52 tests
|
|
360
|
+
└── dist/ # Compiled output
|
|
361
|
+
```
|
|
362
|
+
|
|
363
|
+
## Version
|
|
364
|
+
|
|
365
|
+
Current version: 1.0.0
|
|
366
|
+
|
|
367
|
+
## License
|
|
368
|
+
|
|
369
|
+
MIT
|
|
370
|
+
|
|
371
|
+
## Related Packages
|
|
372
|
+
|
|
373
|
+
- `@ax-cli/schemas` (this package): Type system foundation
|
|
374
|
+
- `ax-cli`: Main CLI application
|
|
375
|
+
|
|
376
|
+
## Contributing
|
|
377
|
+
|
|
378
|
+
When adding new brand types or enums:
|
|
379
|
+
|
|
380
|
+
1. Add implementation to `src/public/core/`
|
|
381
|
+
2. Export from `src/index.ts`
|
|
382
|
+
3. Add comprehensive tests
|
|
383
|
+
4. Update this README
|
|
384
|
+
5. Run `npm test` and `npm run typecheck`
|
|
385
|
+
|
|
386
|
+
## Support
|
|
387
|
+
|
|
388
|
+
For issues and questions, please open an issue in the main ax-cli repository.
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@ax-cli/schemas",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Single Source of Truth (SSOT) type system for ax-cli - Zod schemas, brand types, and OpenAPI generation",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"import": "./dist/index.js",
|
|
11
|
+
"types": "./dist/index.d.ts"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"dist",
|
|
16
|
+
"README.md"
|
|
17
|
+
],
|
|
18
|
+
"scripts": {
|
|
19
|
+
"build": "tsc",
|
|
20
|
+
"dev": "tsc --watch",
|
|
21
|
+
"test": "vitest",
|
|
22
|
+
"test:watch": "vitest --watch",
|
|
23
|
+
"test:coverage": "vitest --coverage",
|
|
24
|
+
"typecheck": "tsc --noEmit",
|
|
25
|
+
"lint": "eslint src --ext .ts",
|
|
26
|
+
"clean": "rm -rf dist"
|
|
27
|
+
},
|
|
28
|
+
"keywords": [
|
|
29
|
+
"zod",
|
|
30
|
+
"schemas",
|
|
31
|
+
"validation",
|
|
32
|
+
"types",
|
|
33
|
+
"openapi",
|
|
34
|
+
"brand-types",
|
|
35
|
+
"type-safety"
|
|
36
|
+
],
|
|
37
|
+
"author": "DEFAI Digital <https://defai.digital>",
|
|
38
|
+
"license": "MIT",
|
|
39
|
+
"dependencies": {
|
|
40
|
+
"zod": "^3.22.4"
|
|
41
|
+
},
|
|
42
|
+
"devDependencies": {
|
|
43
|
+
"@types/node": "^20.10.0",
|
|
44
|
+
"@typescript-eslint/eslint-plugin": "^6.13.0",
|
|
45
|
+
"@typescript-eslint/parser": "^6.13.0",
|
|
46
|
+
"@vitest/coverage-v8": "^1.0.0",
|
|
47
|
+
"eslint": "^8.54.0",
|
|
48
|
+
"typescript": "^5.3.0",
|
|
49
|
+
"vitest": "^1.0.0"
|
|
50
|
+
},
|
|
51
|
+
"engines": {
|
|
52
|
+
"node": ">=20.0.0"
|
|
53
|
+
}
|
|
54
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Colin McDonnell
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="logo.svg" width="200px" align="center" alt="Zod logo" />
|
|
3
|
+
<h1 align="center">Zod</h1>
|
|
4
|
+
<p align="center">
|
|
5
|
+
TypeScript-first schema validation with static type inference
|
|
6
|
+
<br/>
|
|
7
|
+
by <a href="https://x.com/colinhacks">@colinhacks</a>
|
|
8
|
+
</p>
|
|
9
|
+
</p>
|
|
10
|
+
<br/>
|
|
11
|
+
|
|
12
|
+
<p align="center">
|
|
13
|
+
<a href="https://github.com/colinhacks/zod/actions?query=branch%3Amaster"><img src="https://github.com/colinhacks/zod/actions/workflows/test.yml/badge.svg?event=push&branch=master" alt="Zod CI status" /></a>
|
|
14
|
+
<a href="https://opensource.org/licenses/MIT" rel="nofollow"><img src="https://img.shields.io/github/license/colinhacks/zod" alt="License"></a>
|
|
15
|
+
<a href="https://www.npmjs.com/package/zod" rel="nofollow"><img src="https://img.shields.io/npm/dw/zod.svg" alt="npm"></a>
|
|
16
|
+
<a href="https://discord.gg/KaSRdyX2vc" rel="nofollow"><img src="https://img.shields.io/discord/893487829802418277?label=Discord&logo=discord&logoColor=white" alt="discord server"></a>
|
|
17
|
+
<a href="https://github.com/colinhacks/zod" rel="nofollow"><img src="https://img.shields.io/github/stars/colinhacks/zod" alt="stars"></a>
|
|
18
|
+
</p>
|
|
19
|
+
|
|
20
|
+
<div align="center">
|
|
21
|
+
<a href="https://zod.dev/api">Docs</a>
|
|
22
|
+
<span> • </span>
|
|
23
|
+
<a href="https://discord.gg/RcG33DQJdf">Discord</a>
|
|
24
|
+
<span> • </span>
|
|
25
|
+
<a href="https://twitter.com/colinhacks">𝕏</a>
|
|
26
|
+
<span> • </span>
|
|
27
|
+
<a href="https://bsky.app/profile/zod.dev">Bluesky</a>
|
|
28
|
+
<br />
|
|
29
|
+
</div>
|
|
30
|
+
|
|
31
|
+
<br/>
|
|
32
|
+
<br/>
|
|
33
|
+
|
|
34
|
+
<h2 align="center">Featured sponsor: Jazz</h2>
|
|
35
|
+
|
|
36
|
+
<div align="center">
|
|
37
|
+
<a href="https://jazz.tools/?utm_source=zod">
|
|
38
|
+
<picture width="85%" >
|
|
39
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/garden-co/jazz/938f6767e46cdfded60e50d99bf3b533f4809c68/homepage/homepage/public/Zod%20sponsor%20message.png">
|
|
40
|
+
<img alt="jazz logo" src="https://raw.githubusercontent.com/garden-co/jazz/938f6767e46cdfded60e50d99bf3b533f4809c68/homepage/homepage/public/Zod%20sponsor%20message.png" width="85%">
|
|
41
|
+
</picture>
|
|
42
|
+
</a>
|
|
43
|
+
<br/>
|
|
44
|
+
<p><sub>Learn more about <a target="_blank" rel="noopener noreferrer" href="mailto:sponsorship@colinhacks.com">featured sponsorships</a></sub></p>
|
|
45
|
+
</div>
|
|
46
|
+
|
|
47
|
+
<br/>
|
|
48
|
+
<br/>
|
|
49
|
+
<br/>
|
|
50
|
+
|
|
51
|
+
### [Read the docs →](https://zod.dev/api)
|
|
52
|
+
|
|
53
|
+
<br/>
|
|
54
|
+
<br/>
|
|
55
|
+
|
|
56
|
+
## What is Zod?
|
|
57
|
+
|
|
58
|
+
Zod is a TypeScript-first validation library. Define a schema and parse some data with it. You'll get back a strongly typed, validated result.
|
|
59
|
+
|
|
60
|
+
```ts
|
|
61
|
+
import * as z from "zod/v4";
|
|
62
|
+
|
|
63
|
+
const User = z.object({
|
|
64
|
+
name: z.string(),
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
// some untrusted data...
|
|
68
|
+
const input = {
|
|
69
|
+
/* stuff */
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
// the parsed result is validated and type safe!
|
|
73
|
+
const data = User.parse(input);
|
|
74
|
+
|
|
75
|
+
// so you can use it with confidence :)
|
|
76
|
+
console.log(data.name);
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
<br/>
|
|
80
|
+
|
|
81
|
+
## Features
|
|
82
|
+
|
|
83
|
+
- Zero external dependencies
|
|
84
|
+
- Works in Node.js and all modern browsers
|
|
85
|
+
- Tiny: `2kb` core bundle (gzipped)
|
|
86
|
+
- Immutable API: methods return a new instance
|
|
87
|
+
- Concise interface
|
|
88
|
+
- Works with TypeScript and plain JS
|
|
89
|
+
- Built-in JSON Schema conversion
|
|
90
|
+
- Extensive ecosystem
|
|
91
|
+
|
|
92
|
+
<br/>
|
|
93
|
+
|
|
94
|
+
## Installation
|
|
95
|
+
|
|
96
|
+
```sh
|
|
97
|
+
npm install zod
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
<br/>
|
|
101
|
+
|
|
102
|
+
## Basic usage
|
|
103
|
+
|
|
104
|
+
Before you can do anything else, you need to define a schema. For the purposes of this guide, we'll use a simple object schema.
|
|
105
|
+
|
|
106
|
+
```ts
|
|
107
|
+
import * as z from "zod/v4";
|
|
108
|
+
|
|
109
|
+
const Player = z.object({
|
|
110
|
+
username: z.string(),
|
|
111
|
+
xp: z.number(),
|
|
112
|
+
});
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### Parsing data
|
|
116
|
+
|
|
117
|
+
Given any Zod schema, use `.parse` to validate an input. If it's valid, Zod returns a strongly-typed _deep clone_ of the input.
|
|
118
|
+
|
|
119
|
+
```ts
|
|
120
|
+
Player.parse({ username: "billie", xp: 100 });
|
|
121
|
+
// => returns { username: "billie", xp: 100 }
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
**Note** — If your schema uses certain asynchronous APIs like `async` [refinements](#refine) or [transforms](#transform), you'll need to use the `.parseAsync()` method instead.
|
|
125
|
+
|
|
126
|
+
```ts
|
|
127
|
+
const schema = z.string().refine(async (val) => val.length <= 8);
|
|
128
|
+
|
|
129
|
+
await schema.parseAsync("hello");
|
|
130
|
+
// => "hello"
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### Handling errors
|
|
134
|
+
|
|
135
|
+
When validation fails, the `.parse()` method will throw a `ZodError` instance with granular information about the validation issues.
|
|
136
|
+
|
|
137
|
+
```ts
|
|
138
|
+
try {
|
|
139
|
+
Player.parse({ username: 42, xp: "100" });
|
|
140
|
+
} catch (err) {
|
|
141
|
+
if (err instanceof z.ZodError) {
|
|
142
|
+
err.issues;
|
|
143
|
+
/* [
|
|
144
|
+
{
|
|
145
|
+
expected: 'string',
|
|
146
|
+
code: 'invalid_type',
|
|
147
|
+
path: [ 'username' ],
|
|
148
|
+
message: 'Invalid input: expected string'
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
expected: 'number',
|
|
152
|
+
code: 'invalid_type',
|
|
153
|
+
path: [ 'xp' ],
|
|
154
|
+
message: 'Invalid input: expected number'
|
|
155
|
+
}
|
|
156
|
+
] */
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
To avoid a `try/catch` block, you can use the `.safeParse()` method to get back a plain result object containing either the successfully parsed data or a `ZodError`. The result type is a [discriminated union](https://www.typescriptlang.org/docs/handbook/2/narrowing.html#discriminated-unions), so you can handle both cases conveniently.
|
|
162
|
+
|
|
163
|
+
```ts
|
|
164
|
+
const result = Player.safeParse({ username: 42, xp: "100" });
|
|
165
|
+
if (!result.success) {
|
|
166
|
+
result.error; // ZodError instance
|
|
167
|
+
} else {
|
|
168
|
+
result.data; // { username: string; xp: number }
|
|
169
|
+
}
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
**Note** — If your schema uses certain asynchronous APIs like `async` [refinements](#refine) or [transforms](#transform), you'll need to use the `.safeParseAsync()` method instead.
|
|
173
|
+
|
|
174
|
+
```ts
|
|
175
|
+
const schema = z.string().refine(async (val) => val.length <= 8);
|
|
176
|
+
|
|
177
|
+
await schema.safeParseAsync("hello");
|
|
178
|
+
// => { success: true; data: "hello" }
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
### Inferring types
|
|
182
|
+
|
|
183
|
+
Zod infers a static type from your schema definitions. You can extract this type with the `z.infer<>` utility and use it however you like.
|
|
184
|
+
|
|
185
|
+
```ts
|
|
186
|
+
const Player = z.object({
|
|
187
|
+
username: z.string(),
|
|
188
|
+
xp: z.number(),
|
|
189
|
+
});
|
|
190
|
+
|
|
191
|
+
// extract the inferred type
|
|
192
|
+
type Player = z.infer<typeof Player>;
|
|
193
|
+
|
|
194
|
+
// use it in your code
|
|
195
|
+
const player: Player = { username: "billie", xp: 100 };
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
In some cases, the input & output types of a schema can diverge. For instance, the `.transform()` API can convert the input from one type to another. In these cases, you can extract the input and output types independently:
|
|
199
|
+
|
|
200
|
+
```ts
|
|
201
|
+
const mySchema = z.string().transform((val) => val.length);
|
|
202
|
+
|
|
203
|
+
type MySchemaIn = z.input<typeof mySchema>;
|
|
204
|
+
// => string
|
|
205
|
+
|
|
206
|
+
type MySchemaOut = z.output<typeof mySchema>; // equivalent to z.infer<typeof mySchema>
|
|
207
|
+
// number
|
|
208
|
+
```
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
26
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
exports.z = void 0;
|
|
30
|
+
const z = __importStar(require("./v3/external.cjs"));
|
|
31
|
+
exports.z = z;
|
|
32
|
+
__exportStar(require("./v3/external.cjs"), exports);
|
|
33
|
+
exports.default = z;
|