plugin-build-visualization-block 0.1.1
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/client-v2.d.ts +2 -0
- package/client-v2.js +1 -0
- package/client.d.ts +2 -0
- package/client.js +1 -0
- package/dist/client/index.js +10 -0
- package/dist/client-v2/812.25692e474e296143.js +10 -0
- package/dist/client-v2/index.js +10 -0
- package/dist/externalVersion.js +24 -0
- package/dist/index.js +48 -0
- package/dist/locale/en-US.json +45 -0
- package/dist/locale/namespace.js +36 -0
- package/dist/locale/vi-VN.json +46 -0
- package/dist/locale/zh-CN.json +46 -0
- package/dist/node_modules/zod/LICENSE +21 -0
- package/dist/node_modules/zod/index.cjs +1 -0
- package/dist/node_modules/zod/index.d.cts +4 -0
- package/dist/node_modules/zod/index.d.ts +4 -0
- package/dist/node_modules/zod/index.js +4 -0
- package/dist/node_modules/zod/locales/index.cjs +17 -0
- package/dist/node_modules/zod/locales/index.d.cts +1 -0
- package/dist/node_modules/zod/locales/index.d.ts +1 -0
- package/dist/node_modules/zod/locales/index.js +1 -0
- package/dist/node_modules/zod/locales/package.json +6 -0
- package/dist/node_modules/zod/mini/index.cjs +17 -0
- package/dist/node_modules/zod/mini/index.d.cts +1 -0
- package/dist/node_modules/zod/mini/index.d.ts +1 -0
- package/dist/node_modules/zod/mini/index.js +1 -0
- package/dist/node_modules/zod/mini/package.json +6 -0
- package/dist/node_modules/zod/package.json +1 -0
- package/dist/node_modules/zod/src/index.ts +4 -0
- package/dist/node_modules/zod/src/locales/index.ts +1 -0
- package/dist/node_modules/zod/src/mini/index.ts +1 -0
- package/dist/node_modules/zod/src/v3/ZodError.ts +330 -0
- package/dist/node_modules/zod/src/v3/benchmarks/datetime.ts +58 -0
- package/dist/node_modules/zod/src/v3/benchmarks/discriminatedUnion.ts +80 -0
- package/dist/node_modules/zod/src/v3/benchmarks/index.ts +59 -0
- package/dist/node_modules/zod/src/v3/benchmarks/ipv4.ts +57 -0
- package/dist/node_modules/zod/src/v3/benchmarks/object.ts +69 -0
- package/dist/node_modules/zod/src/v3/benchmarks/primitives.ts +162 -0
- package/dist/node_modules/zod/src/v3/benchmarks/realworld.ts +63 -0
- package/dist/node_modules/zod/src/v3/benchmarks/string.ts +55 -0
- package/dist/node_modules/zod/src/v3/benchmarks/union.ts +80 -0
- package/dist/node_modules/zod/src/v3/errors.ts +13 -0
- package/dist/node_modules/zod/src/v3/external.ts +6 -0
- package/dist/node_modules/zod/src/v3/helpers/enumUtil.ts +17 -0
- package/dist/node_modules/zod/src/v3/helpers/errorUtil.ts +8 -0
- package/dist/node_modules/zod/src/v3/helpers/parseUtil.ts +176 -0
- package/dist/node_modules/zod/src/v3/helpers/partialUtil.ts +34 -0
- package/dist/node_modules/zod/src/v3/helpers/typeAliases.ts +2 -0
- package/dist/node_modules/zod/src/v3/helpers/util.ts +224 -0
- package/dist/node_modules/zod/src/v3/index.ts +4 -0
- package/dist/node_modules/zod/src/v3/locales/en.ts +124 -0
- package/dist/node_modules/zod/src/v3/standard-schema.ts +113 -0
- package/dist/node_modules/zod/src/v3/tests/Mocker.ts +54 -0
- package/dist/node_modules/zod/src/v3/tests/all-errors.test.ts +157 -0
- package/dist/node_modules/zod/src/v3/tests/anyunknown.test.ts +28 -0
- package/dist/node_modules/zod/src/v3/tests/array.test.ts +71 -0
- package/dist/node_modules/zod/src/v3/tests/async-parsing.test.ts +388 -0
- package/dist/node_modules/zod/src/v3/tests/async-refinements.test.ts +46 -0
- package/dist/node_modules/zod/src/v3/tests/base.test.ts +29 -0
- package/dist/node_modules/zod/src/v3/tests/bigint.test.ts +55 -0
- package/dist/node_modules/zod/src/v3/tests/branded.test.ts +53 -0
- package/dist/node_modules/zod/src/v3/tests/catch.test.ts +220 -0
- package/dist/node_modules/zod/src/v3/tests/coerce.test.ts +133 -0
- package/dist/node_modules/zod/src/v3/tests/complex.test.ts +70 -0
- package/dist/node_modules/zod/src/v3/tests/custom.test.ts +31 -0
- package/dist/node_modules/zod/src/v3/tests/date.test.ts +32 -0
- package/dist/node_modules/zod/src/v3/tests/deepmasking.test.ts +186 -0
- package/dist/node_modules/zod/src/v3/tests/default.test.ts +112 -0
- package/dist/node_modules/zod/src/v3/tests/description.test.ts +33 -0
- package/dist/node_modules/zod/src/v3/tests/discriminated-unions.test.ts +315 -0
- package/dist/node_modules/zod/src/v3/tests/enum.test.ts +80 -0
- package/dist/node_modules/zod/src/v3/tests/error.test.ts +551 -0
- package/dist/node_modules/zod/src/v3/tests/firstparty.test.ts +87 -0
- package/dist/node_modules/zod/src/v3/tests/firstpartyschematypes.test.ts +21 -0
- package/dist/node_modules/zod/src/v3/tests/function.test.ts +261 -0
- package/dist/node_modules/zod/src/v3/tests/generics.test.ts +48 -0
- package/dist/node_modules/zod/src/v3/tests/instanceof.test.ts +37 -0
- package/dist/node_modules/zod/src/v3/tests/intersection.test.ts +110 -0
- package/dist/node_modules/zod/src/v3/tests/language-server.source.ts +76 -0
- package/dist/node_modules/zod/src/v3/tests/language-server.test.ts +207 -0
- package/dist/node_modules/zod/src/v3/tests/literal.test.ts +36 -0
- package/dist/node_modules/zod/src/v3/tests/map.test.ts +110 -0
- package/dist/node_modules/zod/src/v3/tests/masking.test.ts +4 -0
- package/dist/node_modules/zod/src/v3/tests/mocker.test.ts +19 -0
- package/dist/node_modules/zod/src/v3/tests/nan.test.ts +24 -0
- package/dist/node_modules/zod/src/v3/tests/nativeEnum.test.ts +87 -0
- package/dist/node_modules/zod/src/v3/tests/nullable.test.ts +42 -0
- package/dist/node_modules/zod/src/v3/tests/number.test.ts +176 -0
- package/dist/node_modules/zod/src/v3/tests/object-augmentation.test.ts +29 -0
- package/dist/node_modules/zod/src/v3/tests/object-in-es5-env.test.ts +29 -0
- package/dist/node_modules/zod/src/v3/tests/object.test.ts +434 -0
- package/dist/node_modules/zod/src/v3/tests/optional.test.ts +42 -0
- package/dist/node_modules/zod/src/v3/tests/parseUtil.test.ts +23 -0
- package/dist/node_modules/zod/src/v3/tests/parser.test.ts +41 -0
- package/dist/node_modules/zod/src/v3/tests/partials.test.ts +243 -0
- package/dist/node_modules/zod/src/v3/tests/pickomit.test.ts +111 -0
- package/dist/node_modules/zod/src/v3/tests/pipeline.test.ts +29 -0
- package/dist/node_modules/zod/src/v3/tests/preprocess.test.ts +186 -0
- package/dist/node_modules/zod/src/v3/tests/primitive.test.ts +440 -0
- package/dist/node_modules/zod/src/v3/tests/promise.test.ts +90 -0
- package/dist/node_modules/zod/src/v3/tests/readonly.test.ts +194 -0
- package/dist/node_modules/zod/src/v3/tests/record.test.ts +171 -0
- package/dist/node_modules/zod/src/v3/tests/recursive.test.ts +197 -0
- package/dist/node_modules/zod/src/v3/tests/refine.test.ts +313 -0
- package/dist/node_modules/zod/src/v3/tests/safeparse.test.ts +27 -0
- package/dist/node_modules/zod/src/v3/tests/set.test.ts +142 -0
- package/dist/node_modules/zod/src/v3/tests/standard-schema.test.ts +83 -0
- package/dist/node_modules/zod/src/v3/tests/string.test.ts +916 -0
- package/dist/node_modules/zod/src/v3/tests/transformer.test.ts +233 -0
- package/dist/node_modules/zod/src/v3/tests/tuple.test.ts +90 -0
- package/dist/node_modules/zod/src/v3/tests/unions.test.ts +57 -0
- package/dist/node_modules/zod/src/v3/tests/validations.test.ts +133 -0
- package/dist/node_modules/zod/src/v3/tests/void.test.ts +15 -0
- package/dist/node_modules/zod/src/v3/types.ts +5138 -0
- package/dist/node_modules/zod/src/v4/classic/checks.ts +32 -0
- package/dist/node_modules/zod/src/v4/classic/coerce.ts +27 -0
- package/dist/node_modules/zod/src/v4/classic/compat.ts +70 -0
- package/dist/node_modules/zod/src/v4/classic/errors.ts +82 -0
- package/dist/node_modules/zod/src/v4/classic/external.ts +51 -0
- package/dist/node_modules/zod/src/v4/classic/from-json-schema.ts +643 -0
- package/dist/node_modules/zod/src/v4/classic/index.ts +5 -0
- package/dist/node_modules/zod/src/v4/classic/iso.ts +90 -0
- package/dist/node_modules/zod/src/v4/classic/parse.ts +82 -0
- package/dist/node_modules/zod/src/v4/classic/schemas.ts +2409 -0
- package/dist/node_modules/zod/src/v4/classic/tests/anyunknown.test.ts +26 -0
- package/dist/node_modules/zod/src/v4/classic/tests/apply.test.ts +59 -0
- package/dist/node_modules/zod/src/v4/classic/tests/array.test.ts +264 -0
- package/dist/node_modules/zod/src/v4/classic/tests/assignability.test.ts +210 -0
- package/dist/node_modules/zod/src/v4/classic/tests/async-parsing.test.ts +381 -0
- package/dist/node_modules/zod/src/v4/classic/tests/async-refinements.test.ts +68 -0
- package/dist/node_modules/zod/src/v4/classic/tests/base.test.ts +7 -0
- package/dist/node_modules/zod/src/v4/classic/tests/bigint.test.ts +54 -0
- package/dist/node_modules/zod/src/v4/classic/tests/brand.test.ts +106 -0
- package/dist/node_modules/zod/src/v4/classic/tests/catch.test.ts +276 -0
- package/dist/node_modules/zod/src/v4/classic/tests/coalesce.test.ts +20 -0
- package/dist/node_modules/zod/src/v4/classic/tests/codec-examples.test.ts +573 -0
- package/dist/node_modules/zod/src/v4/classic/tests/codec.test.ts +562 -0
- package/dist/node_modules/zod/src/v4/classic/tests/coerce.test.ts +160 -0
- package/dist/node_modules/zod/src/v4/classic/tests/continuability.test.ts +374 -0
- package/dist/node_modules/zod/src/v4/classic/tests/custom.test.ts +40 -0
- package/dist/node_modules/zod/src/v4/classic/tests/date.test.ts +62 -0
- package/dist/node_modules/zod/src/v4/classic/tests/datetime.test.ts +302 -0
- package/dist/node_modules/zod/src/v4/classic/tests/default.test.ts +365 -0
- package/dist/node_modules/zod/src/v4/classic/tests/describe-meta-checks.test.ts +27 -0
- package/dist/node_modules/zod/src/v4/classic/tests/description.test.ts +32 -0
- package/dist/node_modules/zod/src/v4/classic/tests/discriminated-unions.test.ts +661 -0
- package/dist/node_modules/zod/src/v4/classic/tests/enum.test.ts +285 -0
- package/dist/node_modules/zod/src/v4/classic/tests/error-utils.test.ts +595 -0
- package/dist/node_modules/zod/src/v4/classic/tests/error.test.ts +711 -0
- package/dist/node_modules/zod/src/v4/classic/tests/file.test.ts +96 -0
- package/dist/node_modules/zod/src/v4/classic/tests/firstparty.test.ts +179 -0
- package/dist/node_modules/zod/src/v4/classic/tests/fix-json-issue.test.ts +26 -0
- package/dist/node_modules/zod/src/v4/classic/tests/from-json-schema.test.ts +734 -0
- package/dist/node_modules/zod/src/v4/classic/tests/function.test.ts +360 -0
- package/dist/node_modules/zod/src/v4/classic/tests/generics.test.ts +72 -0
- package/dist/node_modules/zod/src/v4/classic/tests/hash.test.ts +68 -0
- package/dist/node_modules/zod/src/v4/classic/tests/index.test.ts +939 -0
- package/dist/node_modules/zod/src/v4/classic/tests/instanceof.test.ts +60 -0
- package/dist/node_modules/zod/src/v4/classic/tests/intersection.test.ts +198 -0
- package/dist/node_modules/zod/src/v4/classic/tests/json.test.ts +109 -0
- package/dist/node_modules/zod/src/v4/classic/tests/lazy.test.ts +227 -0
- package/dist/node_modules/zod/src/v4/classic/tests/literal.test.ts +117 -0
- package/dist/node_modules/zod/src/v4/classic/tests/map.test.ts +330 -0
- package/dist/node_modules/zod/src/v4/classic/tests/nan.test.ts +21 -0
- package/dist/node_modules/zod/src/v4/classic/tests/nested-refine.test.ts +168 -0
- package/dist/node_modules/zod/src/v4/classic/tests/nonoptional.test.ts +101 -0
- package/dist/node_modules/zod/src/v4/classic/tests/nullable.test.ts +22 -0
- package/dist/node_modules/zod/src/v4/classic/tests/number.test.ts +270 -0
- package/dist/node_modules/zod/src/v4/classic/tests/object.test.ts +640 -0
- package/dist/node_modules/zod/src/v4/classic/tests/optional.test.ts +223 -0
- package/dist/node_modules/zod/src/v4/classic/tests/partial.test.ts +427 -0
- package/dist/node_modules/zod/src/v4/classic/tests/pickomit.test.ts +211 -0
- package/dist/node_modules/zod/src/v4/classic/tests/pipe.test.ts +101 -0
- package/dist/node_modules/zod/src/v4/classic/tests/prefault.test.ts +74 -0
- package/dist/node_modules/zod/src/v4/classic/tests/preprocess.test.ts +282 -0
- package/dist/node_modules/zod/src/v4/classic/tests/primitive.test.ts +175 -0
- package/dist/node_modules/zod/src/v4/classic/tests/promise.test.ts +81 -0
- package/dist/node_modules/zod/src/v4/classic/tests/prototypes.test.ts +23 -0
- package/dist/node_modules/zod/src/v4/classic/tests/readonly.test.ts +252 -0
- package/dist/node_modules/zod/src/v4/classic/tests/record.test.ts +600 -0
- package/dist/node_modules/zod/src/v4/classic/tests/recursive-types.test.ts +582 -0
- package/dist/node_modules/zod/src/v4/classic/tests/refine.test.ts +570 -0
- package/dist/node_modules/zod/src/v4/classic/tests/registries.test.ts +243 -0
- package/dist/node_modules/zod/src/v4/classic/tests/set.test.ts +181 -0
- package/dist/node_modules/zod/src/v4/classic/tests/standard-schema.test.ts +134 -0
- package/dist/node_modules/zod/src/v4/classic/tests/string-formats.test.ts +125 -0
- package/dist/node_modules/zod/src/v4/classic/tests/string.test.ts +1175 -0
- package/dist/node_modules/zod/src/v4/classic/tests/stringbool.test.ts +106 -0
- package/dist/node_modules/zod/src/v4/classic/tests/template-literal.test.ts +771 -0
- package/dist/node_modules/zod/src/v4/classic/tests/to-json-schema-methods.test.ts +438 -0
- package/dist/node_modules/zod/src/v4/classic/tests/to-json-schema.test.ts +2975 -0
- package/dist/node_modules/zod/src/v4/classic/tests/transform.test.ts +361 -0
- package/dist/node_modules/zod/src/v4/classic/tests/tuple.test.ts +183 -0
- package/dist/node_modules/zod/src/v4/classic/tests/union.test.ts +219 -0
- package/dist/node_modules/zod/src/v4/classic/tests/url.test.ts +13 -0
- package/dist/node_modules/zod/src/v4/classic/tests/validations.test.ts +283 -0
- package/dist/node_modules/zod/src/v4/classic/tests/void.test.ts +12 -0
- package/dist/node_modules/zod/src/v4/core/api.ts +1798 -0
- package/dist/node_modules/zod/src/v4/core/checks.ts +1293 -0
- package/dist/node_modules/zod/src/v4/core/config.ts +15 -0
- package/dist/node_modules/zod/src/v4/core/core.ts +138 -0
- package/dist/node_modules/zod/src/v4/core/doc.ts +44 -0
- package/dist/node_modules/zod/src/v4/core/errors.ts +448 -0
- package/dist/node_modules/zod/src/v4/core/index.ts +16 -0
- package/dist/node_modules/zod/src/v4/core/json-schema-generator.ts +126 -0
- package/dist/node_modules/zod/src/v4/core/json-schema-processors.ts +667 -0
- package/dist/node_modules/zod/src/v4/core/json-schema.ts +147 -0
- package/dist/node_modules/zod/src/v4/core/parse.ts +195 -0
- package/dist/node_modules/zod/src/v4/core/regexes.ts +183 -0
- package/dist/node_modules/zod/src/v4/core/registries.ts +105 -0
- package/dist/node_modules/zod/src/v4/core/schemas.ts +4543 -0
- package/dist/node_modules/zod/src/v4/core/standard-schema.ts +159 -0
- package/dist/node_modules/zod/src/v4/core/tests/extend.test.ts +59 -0
- package/dist/node_modules/zod/src/v4/core/tests/index.test.ts +46 -0
- package/dist/node_modules/zod/src/v4/core/tests/locales/be.test.ts +124 -0
- package/dist/node_modules/zod/src/v4/core/tests/locales/en.test.ts +22 -0
- package/dist/node_modules/zod/src/v4/core/tests/locales/es.test.ts +181 -0
- package/dist/node_modules/zod/src/v4/core/tests/locales/he.test.ts +379 -0
- package/dist/node_modules/zod/src/v4/core/tests/locales/nl.test.ts +46 -0
- package/dist/node_modules/zod/src/v4/core/tests/locales/ru.test.ts +128 -0
- package/dist/node_modules/zod/src/v4/core/tests/locales/tr.test.ts +69 -0
- package/dist/node_modules/zod/src/v4/core/tests/locales/uz.test.ts +83 -0
- package/dist/node_modules/zod/src/v4/core/tests/record-constructor.test.ts +67 -0
- package/dist/node_modules/zod/src/v4/core/tests/recursive-tuples.test.ts +45 -0
- package/dist/node_modules/zod/src/v4/core/to-json-schema.ts +613 -0
- package/dist/node_modules/zod/src/v4/core/util.ts +966 -0
- package/dist/node_modules/zod/src/v4/core/versions.ts +5 -0
- package/dist/node_modules/zod/src/v4/core/zsf.ts +323 -0
- package/dist/node_modules/zod/src/v4/index.ts +4 -0
- package/dist/node_modules/zod/src/v4/locales/ar.ts +115 -0
- package/dist/node_modules/zod/src/v4/locales/az.ts +111 -0
- package/dist/node_modules/zod/src/v4/locales/be.ts +176 -0
- package/dist/node_modules/zod/src/v4/locales/bg.ts +128 -0
- package/dist/node_modules/zod/src/v4/locales/ca.ts +116 -0
- package/dist/node_modules/zod/src/v4/locales/cs.ts +118 -0
- package/dist/node_modules/zod/src/v4/locales/da.ts +123 -0
- package/dist/node_modules/zod/src/v4/locales/de.ts +116 -0
- package/dist/node_modules/zod/src/v4/locales/en.ts +119 -0
- package/dist/node_modules/zod/src/v4/locales/eo.ts +118 -0
- package/dist/node_modules/zod/src/v4/locales/es.ts +141 -0
- package/dist/node_modules/zod/src/v4/locales/fa.ts +126 -0
- package/dist/node_modules/zod/src/v4/locales/fi.ts +121 -0
- package/dist/node_modules/zod/src/v4/locales/fr-CA.ts +116 -0
- package/dist/node_modules/zod/src/v4/locales/fr.ts +116 -0
- package/dist/node_modules/zod/src/v4/locales/he.ts +246 -0
- package/dist/node_modules/zod/src/v4/locales/hu.ts +117 -0
- package/dist/node_modules/zod/src/v4/locales/hy.ts +164 -0
- package/dist/node_modules/zod/src/v4/locales/id.ts +115 -0
- package/dist/node_modules/zod/src/v4/locales/index.ts +49 -0
- package/dist/node_modules/zod/src/v4/locales/is.ts +119 -0
- package/dist/node_modules/zod/src/v4/locales/it.ts +116 -0
- package/dist/node_modules/zod/src/v4/locales/ja.ts +114 -0
- package/dist/node_modules/zod/src/v4/locales/ka.ts +123 -0
- package/dist/node_modules/zod/src/v4/locales/kh.ts +7 -0
- package/dist/node_modules/zod/src/v4/locales/km.ts +119 -0
- package/dist/node_modules/zod/src/v4/locales/ko.ts +121 -0
- package/dist/node_modules/zod/src/v4/locales/lt.ts +239 -0
- package/dist/node_modules/zod/src/v4/locales/mk.ts +118 -0
- package/dist/node_modules/zod/src/v4/locales/ms.ts +115 -0
- package/dist/node_modules/zod/src/v4/locales/nl.ts +121 -0
- package/dist/node_modules/zod/src/v4/locales/no.ts +116 -0
- package/dist/node_modules/zod/src/v4/locales/ota.ts +117 -0
- package/dist/node_modules/zod/src/v4/locales/pl.ts +118 -0
- package/dist/node_modules/zod/src/v4/locales/ps.ts +126 -0
- package/dist/node_modules/zod/src/v4/locales/pt.ts +116 -0
- package/dist/node_modules/zod/src/v4/locales/ru.ts +176 -0
- package/dist/node_modules/zod/src/v4/locales/sl.ts +118 -0
- package/dist/node_modules/zod/src/v4/locales/sv.ts +119 -0
- package/dist/node_modules/zod/src/v4/locales/ta.ts +118 -0
- package/dist/node_modules/zod/src/v4/locales/th.ts +119 -0
- package/dist/node_modules/zod/src/v4/locales/tr.ts +111 -0
- package/dist/node_modules/zod/src/v4/locales/ua.ts +7 -0
- package/dist/node_modules/zod/src/v4/locales/uk.ts +117 -0
- package/dist/node_modules/zod/src/v4/locales/ur.ts +119 -0
- package/dist/node_modules/zod/src/v4/locales/uz.ts +116 -0
- package/dist/node_modules/zod/src/v4/locales/vi.ts +117 -0
- package/dist/node_modules/zod/src/v4/locales/yo.ts +124 -0
- package/dist/node_modules/zod/src/v4/locales/zh-CN.ts +116 -0
- package/dist/node_modules/zod/src/v4/locales/zh-TW.ts +115 -0
- package/dist/node_modules/zod/src/v4/mini/checks.ts +32 -0
- package/dist/node_modules/zod/src/v4/mini/coerce.ts +27 -0
- package/dist/node_modules/zod/src/v4/mini/external.ts +40 -0
- package/dist/node_modules/zod/src/v4/mini/index.ts +3 -0
- package/dist/node_modules/zod/src/v4/mini/iso.ts +66 -0
- package/dist/node_modules/zod/src/v4/mini/parse.ts +14 -0
- package/dist/node_modules/zod/src/v4/mini/schemas.ts +1916 -0
- package/dist/node_modules/zod/src/v4/mini/tests/apply.test.ts +24 -0
- package/dist/node_modules/zod/src/v4/mini/tests/assignability.test.ts +129 -0
- package/dist/node_modules/zod/src/v4/mini/tests/brand.test.ts +94 -0
- package/dist/node_modules/zod/src/v4/mini/tests/checks.test.ts +144 -0
- package/dist/node_modules/zod/src/v4/mini/tests/codec.test.ts +529 -0
- package/dist/node_modules/zod/src/v4/mini/tests/computed.test.ts +36 -0
- package/dist/node_modules/zod/src/v4/mini/tests/error.test.ts +22 -0
- package/dist/node_modules/zod/src/v4/mini/tests/functions.test.ts +5 -0
- package/dist/node_modules/zod/src/v4/mini/tests/index.test.ts +963 -0
- package/dist/node_modules/zod/src/v4/mini/tests/number.test.ts +95 -0
- package/dist/node_modules/zod/src/v4/mini/tests/object.test.ts +227 -0
- package/dist/node_modules/zod/src/v4/mini/tests/prototypes.test.ts +43 -0
- package/dist/node_modules/zod/src/v4/mini/tests/recursive-types.test.ts +275 -0
- package/dist/node_modules/zod/src/v4/mini/tests/standard-schema.test.ts +50 -0
- package/dist/node_modules/zod/src/v4/mini/tests/string.test.ts +347 -0
- package/dist/node_modules/zod/src/v4-mini/index.ts +1 -0
- package/dist/node_modules/zod/v3/ZodError.cjs +138 -0
- package/dist/node_modules/zod/v3/ZodError.d.cts +164 -0
- package/dist/node_modules/zod/v3/ZodError.d.ts +164 -0
- package/dist/node_modules/zod/v3/ZodError.js +133 -0
- package/dist/node_modules/zod/v3/errors.cjs +17 -0
- package/dist/node_modules/zod/v3/errors.d.cts +5 -0
- package/dist/node_modules/zod/v3/errors.d.ts +5 -0
- package/dist/node_modules/zod/v3/errors.js +9 -0
- package/dist/node_modules/zod/v3/external.cjs +22 -0
- package/dist/node_modules/zod/v3/external.d.cts +6 -0
- package/dist/node_modules/zod/v3/external.d.ts +6 -0
- package/dist/node_modules/zod/v3/external.js +6 -0
- package/dist/node_modules/zod/v3/helpers/enumUtil.cjs +2 -0
- package/dist/node_modules/zod/v3/helpers/enumUtil.d.cts +8 -0
- package/dist/node_modules/zod/v3/helpers/enumUtil.d.ts +8 -0
- package/dist/node_modules/zod/v3/helpers/enumUtil.js +1 -0
- package/dist/node_modules/zod/v3/helpers/errorUtil.cjs +9 -0
- package/dist/node_modules/zod/v3/helpers/errorUtil.d.cts +9 -0
- package/dist/node_modules/zod/v3/helpers/errorUtil.d.ts +9 -0
- package/dist/node_modules/zod/v3/helpers/errorUtil.js +6 -0
- package/dist/node_modules/zod/v3/helpers/parseUtil.cjs +124 -0
- package/dist/node_modules/zod/v3/helpers/parseUtil.d.cts +78 -0
- package/dist/node_modules/zod/v3/helpers/parseUtil.d.ts +78 -0
- package/dist/node_modules/zod/v3/helpers/parseUtil.js +109 -0
- package/dist/node_modules/zod/v3/helpers/partialUtil.cjs +2 -0
- package/dist/node_modules/zod/v3/helpers/partialUtil.d.cts +8 -0
- package/dist/node_modules/zod/v3/helpers/partialUtil.d.ts +8 -0
- package/dist/node_modules/zod/v3/helpers/partialUtil.js +1 -0
- package/dist/node_modules/zod/v3/helpers/typeAliases.cjs +2 -0
- package/dist/node_modules/zod/v3/helpers/typeAliases.d.cts +2 -0
- package/dist/node_modules/zod/v3/helpers/typeAliases.d.ts +2 -0
- package/dist/node_modules/zod/v3/helpers/typeAliases.js +1 -0
- package/dist/node_modules/zod/v3/helpers/util.cjs +137 -0
- package/dist/node_modules/zod/v3/helpers/util.d.cts +85 -0
- package/dist/node_modules/zod/v3/helpers/util.d.ts +85 -0
- package/dist/node_modules/zod/v3/helpers/util.js +133 -0
- package/dist/node_modules/zod/v3/index.cjs +33 -0
- package/dist/node_modules/zod/v3/index.d.cts +4 -0
- package/dist/node_modules/zod/v3/index.d.ts +4 -0
- package/dist/node_modules/zod/v3/index.js +4 -0
- package/dist/node_modules/zod/v3/locales/en.cjs +112 -0
- package/dist/node_modules/zod/v3/locales/en.d.cts +3 -0
- package/dist/node_modules/zod/v3/locales/en.d.ts +3 -0
- package/dist/node_modules/zod/v3/locales/en.js +109 -0
- package/dist/node_modules/zod/v3/package.json +6 -0
- package/dist/node_modules/zod/v3/standard-schema.cjs +2 -0
- package/dist/node_modules/zod/v3/standard-schema.d.cts +102 -0
- package/dist/node_modules/zod/v3/standard-schema.d.ts +102 -0
- package/dist/node_modules/zod/v3/standard-schema.js +1 -0
- package/dist/node_modules/zod/v3/types.cjs +3777 -0
- package/dist/node_modules/zod/v3/types.d.cts +1034 -0
- package/dist/node_modules/zod/v3/types.d.ts +1034 -0
- package/dist/node_modules/zod/v3/types.js +3695 -0
- package/dist/node_modules/zod/v4/classic/checks.cjs +33 -0
- package/dist/node_modules/zod/v4/classic/checks.d.cts +1 -0
- package/dist/node_modules/zod/v4/classic/checks.d.ts +1 -0
- package/dist/node_modules/zod/v4/classic/checks.js +1 -0
- package/dist/node_modules/zod/v4/classic/coerce.cjs +47 -0
- package/dist/node_modules/zod/v4/classic/coerce.d.cts +17 -0
- package/dist/node_modules/zod/v4/classic/coerce.d.ts +17 -0
- package/dist/node_modules/zod/v4/classic/coerce.js +17 -0
- package/dist/node_modules/zod/v4/classic/compat.cjs +61 -0
- package/dist/node_modules/zod/v4/classic/compat.d.cts +50 -0
- package/dist/node_modules/zod/v4/classic/compat.d.ts +50 -0
- package/dist/node_modules/zod/v4/classic/compat.js +31 -0
- package/dist/node_modules/zod/v4/classic/errors.cjs +74 -0
- package/dist/node_modules/zod/v4/classic/errors.d.cts +30 -0
- package/dist/node_modules/zod/v4/classic/errors.d.ts +30 -0
- package/dist/node_modules/zod/v4/classic/errors.js +48 -0
- package/dist/node_modules/zod/v4/classic/external.cjs +73 -0
- package/dist/node_modules/zod/v4/classic/external.d.cts +15 -0
- package/dist/node_modules/zod/v4/classic/external.d.ts +15 -0
- package/dist/node_modules/zod/v4/classic/external.js +20 -0
- package/dist/node_modules/zod/v4/classic/from-json-schema.cjs +610 -0
- package/dist/node_modules/zod/v4/classic/from-json-schema.d.cts +12 -0
- package/dist/node_modules/zod/v4/classic/from-json-schema.d.ts +12 -0
- package/dist/node_modules/zod/v4/classic/from-json-schema.js +584 -0
- package/dist/node_modules/zod/v4/classic/index.cjs +33 -0
- package/dist/node_modules/zod/v4/classic/index.d.cts +4 -0
- package/dist/node_modules/zod/v4/classic/index.d.ts +4 -0
- package/dist/node_modules/zod/v4/classic/index.js +4 -0
- package/dist/node_modules/zod/v4/classic/iso.cjs +60 -0
- package/dist/node_modules/zod/v4/classic/iso.d.cts +22 -0
- package/dist/node_modules/zod/v4/classic/iso.d.ts +22 -0
- package/dist/node_modules/zod/v4/classic/iso.js +30 -0
- package/dist/node_modules/zod/v4/classic/package.json +6 -0
- package/dist/node_modules/zod/v4/classic/parse.cjs +41 -0
- package/dist/node_modules/zod/v4/classic/parse.d.cts +31 -0
- package/dist/node_modules/zod/v4/classic/parse.d.ts +31 -0
- package/dist/node_modules/zod/v4/classic/parse.js +15 -0
- package/dist/node_modules/zod/v4/classic/schemas.cjs +1272 -0
- package/dist/node_modules/zod/v4/classic/schemas.d.cts +739 -0
- package/dist/node_modules/zod/v4/classic/schemas.d.ts +739 -0
- package/dist/node_modules/zod/v4/classic/schemas.js +1157 -0
- package/dist/node_modules/zod/v4/core/api.cjs +1222 -0
- package/dist/node_modules/zod/v4/core/api.d.cts +304 -0
- package/dist/node_modules/zod/v4/core/api.d.ts +304 -0
- package/dist/node_modules/zod/v4/core/api.js +1082 -0
- package/dist/node_modules/zod/v4/core/checks.cjs +601 -0
- package/dist/node_modules/zod/v4/core/checks.d.cts +278 -0
- package/dist/node_modules/zod/v4/core/checks.d.ts +278 -0
- package/dist/node_modules/zod/v4/core/checks.js +575 -0
- package/dist/node_modules/zod/v4/core/core.cjs +83 -0
- package/dist/node_modules/zod/v4/core/core.d.cts +70 -0
- package/dist/node_modules/zod/v4/core/core.d.ts +70 -0
- package/dist/node_modules/zod/v4/core/core.js +76 -0
- package/dist/node_modules/zod/v4/core/doc.cjs +39 -0
- package/dist/node_modules/zod/v4/core/doc.d.cts +14 -0
- package/dist/node_modules/zod/v4/core/doc.d.ts +14 -0
- package/dist/node_modules/zod/v4/core/doc.js +35 -0
- package/dist/node_modules/zod/v4/core/errors.cjs +213 -0
- package/dist/node_modules/zod/v4/core/errors.d.cts +220 -0
- package/dist/node_modules/zod/v4/core/errors.d.ts +220 -0
- package/dist/node_modules/zod/v4/core/errors.js +182 -0
- package/dist/node_modules/zod/v4/core/index.cjs +47 -0
- package/dist/node_modules/zod/v4/core/index.d.cts +16 -0
- package/dist/node_modules/zod/v4/core/index.d.ts +16 -0
- package/dist/node_modules/zod/v4/core/index.js +16 -0
- package/dist/node_modules/zod/v4/core/json-schema-generator.cjs +99 -0
- package/dist/node_modules/zod/v4/core/json-schema-generator.d.cts +65 -0
- package/dist/node_modules/zod/v4/core/json-schema-generator.d.ts +65 -0
- package/dist/node_modules/zod/v4/core/json-schema-generator.js +95 -0
- package/dist/node_modules/zod/v4/core/json-schema-processors.cjs +648 -0
- package/dist/node_modules/zod/v4/core/json-schema-processors.d.cts +49 -0
- package/dist/node_modules/zod/v4/core/json-schema-processors.d.ts +49 -0
- package/dist/node_modules/zod/v4/core/json-schema-processors.js +605 -0
- package/dist/node_modules/zod/v4/core/json-schema.cjs +2 -0
- package/dist/node_modules/zod/v4/core/json-schema.d.cts +88 -0
- package/dist/node_modules/zod/v4/core/json-schema.d.ts +88 -0
- package/dist/node_modules/zod/v4/core/json-schema.js +1 -0
- package/dist/node_modules/zod/v4/core/package.json +6 -0
- package/dist/node_modules/zod/v4/core/parse.cjs +131 -0
- package/dist/node_modules/zod/v4/core/parse.d.cts +49 -0
- package/dist/node_modules/zod/v4/core/parse.d.ts +49 -0
- package/dist/node_modules/zod/v4/core/parse.js +93 -0
- package/dist/node_modules/zod/v4/core/regexes.cjs +166 -0
- package/dist/node_modules/zod/v4/core/regexes.d.cts +79 -0
- package/dist/node_modules/zod/v4/core/regexes.d.ts +79 -0
- package/dist/node_modules/zod/v4/core/regexes.js +133 -0
- package/dist/node_modules/zod/v4/core/registries.cjs +56 -0
- package/dist/node_modules/zod/v4/core/registries.d.cts +35 -0
- package/dist/node_modules/zod/v4/core/registries.d.ts +35 -0
- package/dist/node_modules/zod/v4/core/registries.js +51 -0
- package/dist/node_modules/zod/v4/core/schemas.cjs +2126 -0
- package/dist/node_modules/zod/v4/core/schemas.d.cts +1146 -0
- package/dist/node_modules/zod/v4/core/schemas.d.ts +1146 -0
- package/dist/node_modules/zod/v4/core/schemas.js +2095 -0
- package/dist/node_modules/zod/v4/core/standard-schema.cjs +2 -0
- package/dist/node_modules/zod/v4/core/standard-schema.d.cts +126 -0
- package/dist/node_modules/zod/v4/core/standard-schema.d.ts +126 -0
- package/dist/node_modules/zod/v4/core/standard-schema.js +1 -0
- package/dist/node_modules/zod/v4/core/to-json-schema.cjs +446 -0
- package/dist/node_modules/zod/v4/core/to-json-schema.d.cts +114 -0
- package/dist/node_modules/zod/v4/core/to-json-schema.d.ts +114 -0
- package/dist/node_modules/zod/v4/core/to-json-schema.js +437 -0
- package/dist/node_modules/zod/v4/core/util.cjs +710 -0
- package/dist/node_modules/zod/v4/core/util.d.cts +199 -0
- package/dist/node_modules/zod/v4/core/util.d.ts +199 -0
- package/dist/node_modules/zod/v4/core/util.js +651 -0
- package/dist/node_modules/zod/v4/core/versions.cjs +8 -0
- package/dist/node_modules/zod/v4/core/versions.d.cts +5 -0
- package/dist/node_modules/zod/v4/core/versions.d.ts +5 -0
- package/dist/node_modules/zod/v4/core/versions.js +5 -0
- package/dist/node_modules/zod/v4/index.cjs +22 -0
- package/dist/node_modules/zod/v4/index.d.cts +3 -0
- package/dist/node_modules/zod/v4/index.d.ts +3 -0
- package/dist/node_modules/zod/v4/index.js +3 -0
- package/dist/node_modules/zod/v4/locales/ar.cjs +133 -0
- package/dist/node_modules/zod/v4/locales/ar.d.cts +5 -0
- package/dist/node_modules/zod/v4/locales/ar.d.ts +4 -0
- package/dist/node_modules/zod/v4/locales/ar.js +106 -0
- package/dist/node_modules/zod/v4/locales/az.cjs +132 -0
- package/dist/node_modules/zod/v4/locales/az.d.cts +5 -0
- package/dist/node_modules/zod/v4/locales/az.d.ts +4 -0
- package/dist/node_modules/zod/v4/locales/az.js +105 -0
- package/dist/node_modules/zod/v4/locales/be.cjs +183 -0
- package/dist/node_modules/zod/v4/locales/be.d.cts +5 -0
- package/dist/node_modules/zod/v4/locales/be.d.ts +4 -0
- package/dist/node_modules/zod/v4/locales/be.js +156 -0
- package/dist/node_modules/zod/v4/locales/bg.cjs +147 -0
- package/dist/node_modules/zod/v4/locales/bg.d.cts +5 -0
- package/dist/node_modules/zod/v4/locales/bg.d.ts +4 -0
- package/dist/node_modules/zod/v4/locales/bg.js +120 -0
- package/dist/node_modules/zod/v4/locales/ca.cjs +134 -0
- package/dist/node_modules/zod/v4/locales/ca.d.cts +5 -0
- package/dist/node_modules/zod/v4/locales/ca.d.ts +4 -0
- package/dist/node_modules/zod/v4/locales/ca.js +107 -0
- package/dist/node_modules/zod/v4/locales/cs.cjs +138 -0
- package/dist/node_modules/zod/v4/locales/cs.d.cts +5 -0
- package/dist/node_modules/zod/v4/locales/cs.d.ts +4 -0
- package/dist/node_modules/zod/v4/locales/cs.js +111 -0
- package/dist/node_modules/zod/v4/locales/da.cjs +142 -0
- package/dist/node_modules/zod/v4/locales/da.d.cts +5 -0
- package/dist/node_modules/zod/v4/locales/da.d.ts +4 -0
- package/dist/node_modules/zod/v4/locales/da.js +115 -0
- package/dist/node_modules/zod/v4/locales/de.cjs +135 -0
- package/dist/node_modules/zod/v4/locales/de.d.cts +5 -0
- package/dist/node_modules/zod/v4/locales/de.d.ts +4 -0
- package/dist/node_modules/zod/v4/locales/de.js +108 -0
- package/dist/node_modules/zod/v4/locales/en.cjs +136 -0
- package/dist/node_modules/zod/v4/locales/en.d.cts +5 -0
- package/dist/node_modules/zod/v4/locales/en.d.ts +4 -0
- package/dist/node_modules/zod/v4/locales/en.js +109 -0
- package/dist/node_modules/zod/v4/locales/eo.cjs +136 -0
- package/dist/node_modules/zod/v4/locales/eo.d.cts +5 -0
- package/dist/node_modules/zod/v4/locales/eo.d.ts +4 -0
- package/dist/node_modules/zod/v4/locales/eo.js +109 -0
- package/dist/node_modules/zod/v4/locales/es.cjs +159 -0
- package/dist/node_modules/zod/v4/locales/es.d.cts +5 -0
- package/dist/node_modules/zod/v4/locales/es.d.ts +4 -0
- package/dist/node_modules/zod/v4/locales/es.js +132 -0
- package/dist/node_modules/zod/v4/locales/fa.cjs +141 -0
- package/dist/node_modules/zod/v4/locales/fa.d.cts +5 -0
- package/dist/node_modules/zod/v4/locales/fa.d.ts +4 -0
- package/dist/node_modules/zod/v4/locales/fa.js +114 -0
- package/dist/node_modules/zod/v4/locales/fi.cjs +139 -0
- package/dist/node_modules/zod/v4/locales/fi.d.cts +5 -0
- package/dist/node_modules/zod/v4/locales/fi.d.ts +4 -0
- package/dist/node_modules/zod/v4/locales/fi.js +112 -0
- package/dist/node_modules/zod/v4/locales/fr-CA.cjs +134 -0
- package/dist/node_modules/zod/v4/locales/fr-CA.d.cts +5 -0
- package/dist/node_modules/zod/v4/locales/fr-CA.d.ts +4 -0
- package/dist/node_modules/zod/v4/locales/fr-CA.js +107 -0
- package/dist/node_modules/zod/v4/locales/fr.cjs +135 -0
- package/dist/node_modules/zod/v4/locales/fr.d.cts +5 -0
- package/dist/node_modules/zod/v4/locales/fr.d.ts +4 -0
- package/dist/node_modules/zod/v4/locales/fr.js +108 -0
- package/dist/node_modules/zod/v4/locales/he.cjs +241 -0
- package/dist/node_modules/zod/v4/locales/he.d.cts +5 -0
- package/dist/node_modules/zod/v4/locales/he.d.ts +4 -0
- package/dist/node_modules/zod/v4/locales/he.js +214 -0
- package/dist/node_modules/zod/v4/locales/hu.cjs +135 -0
- package/dist/node_modules/zod/v4/locales/hu.d.cts +5 -0
- package/dist/node_modules/zod/v4/locales/hu.d.ts +4 -0
- package/dist/node_modules/zod/v4/locales/hu.js +108 -0
- package/dist/node_modules/zod/v4/locales/hy.cjs +174 -0
- package/dist/node_modules/zod/v4/locales/hy.d.cts +5 -0
- package/dist/node_modules/zod/v4/locales/hy.d.ts +4 -0
- package/dist/node_modules/zod/v4/locales/hy.js +147 -0
- package/dist/node_modules/zod/v4/locales/id.cjs +133 -0
- package/dist/node_modules/zod/v4/locales/id.d.cts +5 -0
- package/dist/node_modules/zod/v4/locales/id.d.ts +4 -0
- package/dist/node_modules/zod/v4/locales/id.js +106 -0
- package/dist/node_modules/zod/v4/locales/index.cjs +104 -0
- package/dist/node_modules/zod/v4/locales/index.d.cts +49 -0
- package/dist/node_modules/zod/v4/locales/index.d.ts +49 -0
- package/dist/node_modules/zod/v4/locales/index.js +49 -0
- package/dist/node_modules/zod/v4/locales/is.cjs +136 -0
- package/dist/node_modules/zod/v4/locales/is.d.cts +5 -0
- package/dist/node_modules/zod/v4/locales/is.d.ts +4 -0
- package/dist/node_modules/zod/v4/locales/is.js +109 -0
- package/dist/node_modules/zod/v4/locales/it.cjs +135 -0
- package/dist/node_modules/zod/v4/locales/it.d.cts +5 -0
- package/dist/node_modules/zod/v4/locales/it.d.ts +4 -0
- package/dist/node_modules/zod/v4/locales/it.js +108 -0
- package/dist/node_modules/zod/v4/locales/ja.cjs +134 -0
- package/dist/node_modules/zod/v4/locales/ja.d.cts +5 -0
- package/dist/node_modules/zod/v4/locales/ja.d.ts +4 -0
- package/dist/node_modules/zod/v4/locales/ja.js +107 -0
- package/dist/node_modules/zod/v4/locales/ka.cjs +139 -0
- package/dist/node_modules/zod/v4/locales/ka.d.cts +5 -0
- package/dist/node_modules/zod/v4/locales/ka.d.ts +4 -0
- package/dist/node_modules/zod/v4/locales/ka.js +112 -0
- package/dist/node_modules/zod/v4/locales/kh.cjs +12 -0
- package/dist/node_modules/zod/v4/locales/kh.d.cts +5 -0
- package/dist/node_modules/zod/v4/locales/kh.d.ts +5 -0
- package/dist/node_modules/zod/v4/locales/kh.js +5 -0
- package/dist/node_modules/zod/v4/locales/km.cjs +137 -0
- package/dist/node_modules/zod/v4/locales/km.d.cts +5 -0
- package/dist/node_modules/zod/v4/locales/km.d.ts +4 -0
- package/dist/node_modules/zod/v4/locales/km.js +110 -0
- package/dist/node_modules/zod/v4/locales/ko.cjs +138 -0
- package/dist/node_modules/zod/v4/locales/ko.d.cts +5 -0
- package/dist/node_modules/zod/v4/locales/ko.d.ts +4 -0
- package/dist/node_modules/zod/v4/locales/ko.js +111 -0
- package/dist/node_modules/zod/v4/locales/lt.cjs +230 -0
- package/dist/node_modules/zod/v4/locales/lt.d.cts +5 -0
- package/dist/node_modules/zod/v4/locales/lt.d.ts +4 -0
- package/dist/node_modules/zod/v4/locales/lt.js +203 -0
- package/dist/node_modules/zod/v4/locales/mk.cjs +136 -0
- package/dist/node_modules/zod/v4/locales/mk.d.cts +5 -0
- package/dist/node_modules/zod/v4/locales/mk.d.ts +4 -0
- package/dist/node_modules/zod/v4/locales/mk.js +109 -0
- package/dist/node_modules/zod/v4/locales/ms.cjs +134 -0
- package/dist/node_modules/zod/v4/locales/ms.d.cts +5 -0
- package/dist/node_modules/zod/v4/locales/ms.d.ts +4 -0
- package/dist/node_modules/zod/v4/locales/ms.js +107 -0
- package/dist/node_modules/zod/v4/locales/nl.cjs +137 -0
- package/dist/node_modules/zod/v4/locales/nl.d.cts +5 -0
- package/dist/node_modules/zod/v4/locales/nl.d.ts +4 -0
- package/dist/node_modules/zod/v4/locales/nl.js +110 -0
- package/dist/node_modules/zod/v4/locales/no.cjs +135 -0
- package/dist/node_modules/zod/v4/locales/no.d.cts +5 -0
- package/dist/node_modules/zod/v4/locales/no.d.ts +4 -0
- package/dist/node_modules/zod/v4/locales/no.js +108 -0
- package/dist/node_modules/zod/v4/locales/ota.cjs +136 -0
- package/dist/node_modules/zod/v4/locales/ota.d.cts +5 -0
- package/dist/node_modules/zod/v4/locales/ota.d.ts +4 -0
- package/dist/node_modules/zod/v4/locales/ota.js +109 -0
- package/dist/node_modules/zod/v4/locales/package.json +6 -0
- package/dist/node_modules/zod/v4/locales/pl.cjs +136 -0
- package/dist/node_modules/zod/v4/locales/pl.d.cts +5 -0
- package/dist/node_modules/zod/v4/locales/pl.d.ts +4 -0
- package/dist/node_modules/zod/v4/locales/pl.js +109 -0
- package/dist/node_modules/zod/v4/locales/ps.cjs +141 -0
- package/dist/node_modules/zod/v4/locales/ps.d.cts +5 -0
- package/dist/node_modules/zod/v4/locales/ps.d.ts +4 -0
- package/dist/node_modules/zod/v4/locales/ps.js +114 -0
- package/dist/node_modules/zod/v4/locales/pt.cjs +135 -0
- package/dist/node_modules/zod/v4/locales/pt.d.cts +5 -0
- package/dist/node_modules/zod/v4/locales/pt.d.ts +4 -0
- package/dist/node_modules/zod/v4/locales/pt.js +108 -0
- package/dist/node_modules/zod/v4/locales/ru.cjs +183 -0
- package/dist/node_modules/zod/v4/locales/ru.d.cts +5 -0
- package/dist/node_modules/zod/v4/locales/ru.d.ts +4 -0
- package/dist/node_modules/zod/v4/locales/ru.js +156 -0
- package/dist/node_modules/zod/v4/locales/sl.cjs +136 -0
- package/dist/node_modules/zod/v4/locales/sl.d.cts +5 -0
- package/dist/node_modules/zod/v4/locales/sl.d.ts +4 -0
- package/dist/node_modules/zod/v4/locales/sl.js +109 -0
- package/dist/node_modules/zod/v4/locales/sv.cjs +137 -0
- package/dist/node_modules/zod/v4/locales/sv.d.cts +5 -0
- package/dist/node_modules/zod/v4/locales/sv.d.ts +4 -0
- package/dist/node_modules/zod/v4/locales/sv.js +110 -0
- package/dist/node_modules/zod/v4/locales/ta.cjs +137 -0
- package/dist/node_modules/zod/v4/locales/ta.d.cts +5 -0
- package/dist/node_modules/zod/v4/locales/ta.d.ts +4 -0
- package/dist/node_modules/zod/v4/locales/ta.js +110 -0
- package/dist/node_modules/zod/v4/locales/th.cjs +137 -0
- package/dist/node_modules/zod/v4/locales/th.d.cts +5 -0
- package/dist/node_modules/zod/v4/locales/th.d.ts +4 -0
- package/dist/node_modules/zod/v4/locales/th.js +110 -0
- package/dist/node_modules/zod/v4/locales/tr.cjs +132 -0
- package/dist/node_modules/zod/v4/locales/tr.d.cts +5 -0
- package/dist/node_modules/zod/v4/locales/tr.d.ts +4 -0
- package/dist/node_modules/zod/v4/locales/tr.js +105 -0
- package/dist/node_modules/zod/v4/locales/ua.cjs +12 -0
- package/dist/node_modules/zod/v4/locales/ua.d.cts +5 -0
- package/dist/node_modules/zod/v4/locales/ua.d.ts +5 -0
- package/dist/node_modules/zod/v4/locales/ua.js +5 -0
- package/dist/node_modules/zod/v4/locales/uk.cjs +135 -0
- package/dist/node_modules/zod/v4/locales/uk.d.cts +5 -0
- package/dist/node_modules/zod/v4/locales/uk.d.ts +4 -0
- package/dist/node_modules/zod/v4/locales/uk.js +108 -0
- package/dist/node_modules/zod/v4/locales/ur.cjs +137 -0
- package/dist/node_modules/zod/v4/locales/ur.d.cts +5 -0
- package/dist/node_modules/zod/v4/locales/ur.d.ts +4 -0
- package/dist/node_modules/zod/v4/locales/ur.js +110 -0
- package/dist/node_modules/zod/v4/locales/uz.cjs +136 -0
- package/dist/node_modules/zod/v4/locales/uz.d.cts +5 -0
- package/dist/node_modules/zod/v4/locales/uz.d.ts +4 -0
- package/dist/node_modules/zod/v4/locales/uz.js +109 -0
- package/dist/node_modules/zod/v4/locales/vi.cjs +135 -0
- package/dist/node_modules/zod/v4/locales/vi.d.cts +5 -0
- package/dist/node_modules/zod/v4/locales/vi.d.ts +4 -0
- package/dist/node_modules/zod/v4/locales/vi.js +108 -0
- package/dist/node_modules/zod/v4/locales/yo.cjs +134 -0
- package/dist/node_modules/zod/v4/locales/yo.d.cts +5 -0
- package/dist/node_modules/zod/v4/locales/yo.d.ts +4 -0
- package/dist/node_modules/zod/v4/locales/yo.js +107 -0
- package/dist/node_modules/zod/v4/locales/zh-CN.cjs +136 -0
- package/dist/node_modules/zod/v4/locales/zh-CN.d.cts +5 -0
- package/dist/node_modules/zod/v4/locales/zh-CN.d.ts +4 -0
- package/dist/node_modules/zod/v4/locales/zh-CN.js +109 -0
- package/dist/node_modules/zod/v4/locales/zh-TW.cjs +134 -0
- package/dist/node_modules/zod/v4/locales/zh-TW.d.cts +5 -0
- package/dist/node_modules/zod/v4/locales/zh-TW.d.ts +4 -0
- package/dist/node_modules/zod/v4/locales/zh-TW.js +107 -0
- package/dist/node_modules/zod/v4/mini/checks.cjs +34 -0
- package/dist/node_modules/zod/v4/mini/checks.d.cts +1 -0
- package/dist/node_modules/zod/v4/mini/checks.d.ts +1 -0
- package/dist/node_modules/zod/v4/mini/checks.js +1 -0
- package/dist/node_modules/zod/v4/mini/coerce.cjs +52 -0
- package/dist/node_modules/zod/v4/mini/coerce.d.cts +7 -0
- package/dist/node_modules/zod/v4/mini/coerce.d.ts +7 -0
- package/dist/node_modules/zod/v4/mini/coerce.js +22 -0
- package/dist/node_modules/zod/v4/mini/external.cjs +63 -0
- package/dist/node_modules/zod/v4/mini/external.d.cts +12 -0
- package/dist/node_modules/zod/v4/mini/external.d.ts +12 -0
- package/dist/node_modules/zod/v4/mini/external.js +14 -0
- package/dist/node_modules/zod/v4/mini/index.cjs +32 -0
- package/dist/node_modules/zod/v4/mini/index.d.cts +3 -0
- package/dist/node_modules/zod/v4/mini/index.d.ts +3 -0
- package/dist/node_modules/zod/v4/mini/index.js +3 -0
- package/dist/node_modules/zod/v4/mini/iso.cjs +64 -0
- package/dist/node_modules/zod/v4/mini/iso.d.cts +22 -0
- package/dist/node_modules/zod/v4/mini/iso.d.ts +22 -0
- package/dist/node_modules/zod/v4/mini/iso.js +34 -0
- package/dist/node_modules/zod/v4/mini/package.json +6 -0
- package/dist/node_modules/zod/v4/mini/parse.cjs +16 -0
- package/dist/node_modules/zod/v4/mini/parse.d.cts +1 -0
- package/dist/node_modules/zod/v4/mini/parse.d.ts +1 -0
- package/dist/node_modules/zod/v4/mini/parse.js +1 -0
- package/dist/node_modules/zod/v4/mini/schemas.cjs +1046 -0
- package/dist/node_modules/zod/v4/mini/schemas.d.cts +427 -0
- package/dist/node_modules/zod/v4/mini/schemas.d.ts +427 -0
- package/dist/node_modules/zod/v4/mini/schemas.js +925 -0
- package/dist/node_modules/zod/v4/package.json +6 -0
- package/dist/node_modules/zod/v4-mini/index.cjs +17 -0
- package/dist/node_modules/zod/v4-mini/index.d.cts +1 -0
- package/dist/node_modules/zod/v4-mini/index.d.ts +1 -0
- package/dist/node_modules/zod/v4-mini/index.js +1 -0
- package/dist/node_modules/zod/v4-mini/package.json +6 -0
- package/dist/server/actions/build.js +915 -0
- package/dist/server/collections/ai-visualization-build-settings.js +68 -0
- package/dist/server/collections/ai-visualization-builds.js +143 -0
- package/dist/server/index.js +48 -0
- package/dist/server/pipeline/analyzer.js +220 -0
- package/dist/server/pipeline/fallback.js +113 -0
- package/dist/server/pipeline/generator.js +386 -0
- package/dist/server/pipeline/introspector.js +118 -0
- package/dist/server/pipeline/validator.js +323 -0
- package/dist/server/plugin.js +210 -0
- package/dist/server/resource/settings.js +106 -0
- package/dist/server/tools/build-visualization-block.js +130 -0
- package/dist/server/tools/index.js +46 -0
- package/dist/shared/blockSpec.js +76 -0
- package/dist/shared/constants.js +67 -0
- package/package.json +44 -0
- package/server.d.ts +2 -0
- package/server.js +1 -0
- package/src/client/BuildForm.tsx +376 -0
- package/src/client/BuildVisualizationBlockInitializer.tsx +81 -0
- package/src/client/PreviewPanel.tsx +136 -0
- package/src/client/SettingsPage.tsx +138 -0
- package/src/client/components/BuildPhaseTag.tsx +62 -0
- package/src/client/components/CollectionMultiSelect.tsx +124 -0
- package/src/client/components/LLMServiceSelect.tsx +108 -0
- package/src/client/components/ModelSelect.tsx +105 -0
- package/src/client/components/index.ts +8 -0
- package/src/client/hooks/useBuildPolling.ts +215 -0
- package/src/client/index.tsx +2 -0
- package/src/client/locale.ts +18 -0
- package/src/client/plugin.tsx +90 -0
- package/src/client-v2/index.tsx +1 -0
- package/src/client-v2/plugin.tsx +24 -0
- package/src/index.ts +2 -0
- package/src/locale/en-US.json +45 -0
- package/src/locale/namespace.ts +6 -0
- package/src/locale/vi-VN.json +46 -0
- package/src/locale/zh-CN.json +46 -0
- package/src/server/__tests__/build-action.test.ts +440 -0
- package/src/server/__tests__/plugin.test.ts +187 -0
- package/src/server/actions/build.ts +1318 -0
- package/src/server/collections/ai-visualization-build-settings.ts +43 -0
- package/src/server/collections/ai-visualization-builds.ts +122 -0
- package/src/server/index.ts +2 -0
- package/src/server/pipeline/__tests__/analyzer.test.ts +226 -0
- package/src/server/pipeline/__tests__/generator.test.ts +576 -0
- package/src/server/pipeline/__tests__/introspector.test.ts +268 -0
- package/src/server/pipeline/__tests__/validator.test.ts +517 -0
- package/src/server/pipeline/analyzer.ts +368 -0
- package/src/server/pipeline/fallback.ts +157 -0
- package/src/server/pipeline/generator.ts +651 -0
- package/src/server/pipeline/introspector.ts +206 -0
- package/src/server/pipeline/validator.ts +609 -0
- package/src/server/plugin.ts +255 -0
- package/src/server/resource/settings.ts +97 -0
- package/src/server/tools/build-visualization-block.ts +173 -0
- package/src/server/tools/index.ts +1 -0
- package/src/shared/blockSpec.ts +214 -0
- package/src/shared/constants.ts +46 -0
|
@@ -0,0 +1,368 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AI Analyzer pipeline stage for `plugin-build-visualization-block`.
|
|
3
|
+
*
|
|
4
|
+
* This module is built incrementally:
|
|
5
|
+
* - Task 4.1 (this file) implements the pure output-cleaning and JSON-extraction
|
|
6
|
+
* helpers ported from `plugin-build-guide-block`'s `build.ts`:
|
|
7
|
+
* `stripThink`, `stripFence`, `toPlainText`, and `extractJsonObject`.
|
|
8
|
+
* - Task 4.2 adds the LLM provider invocation (prompt + `chatModel.invoke`).
|
|
9
|
+
* - Task 4.3 adds `JSON.parse` + `blockSpecSchema.safeParse` and the fallback.
|
|
10
|
+
*
|
|
11
|
+
* The helpers below are intentionally pure string functions with no imports
|
|
12
|
+
* from `@nocobase/*` or `zod`, so they can be unit-tested in isolation and
|
|
13
|
+
* reused by the parse/fallback logic in task 4.3.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Remove `<think>...</think>` reasoning blocks from model output.
|
|
18
|
+
*
|
|
19
|
+
* Handles an unclosed `<think>` tag (matches through end of string) and is
|
|
20
|
+
* case-insensitive. Ported from `plugin-build-guide-block`'s `build.ts`.
|
|
21
|
+
*/
|
|
22
|
+
export function stripThink(text: string): string {
|
|
23
|
+
return text.replace(/<think>[\s\S]*?(?:<\/think>|$)/gi, '').trim();
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Strip a leading code fence (```json / ```markdown / ```md / ```html / ```)
|
|
28
|
+
* and a trailing closing fence from model output. Ported from
|
|
29
|
+
* `plugin-build-guide-block`'s `build.ts`.
|
|
30
|
+
*/
|
|
31
|
+
export function stripFence(text: string): string {
|
|
32
|
+
return text
|
|
33
|
+
.replace(/^```(?:json|markdown|md|html)?\s*/i, '')
|
|
34
|
+
.replace(/```\s*$/i, '')
|
|
35
|
+
.trim();
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Coerce LangChain message content into plain text.
|
|
40
|
+
*
|
|
41
|
+
* Message content can be a plain string, an array of content parts (strings or
|
|
42
|
+
* objects exposing `text`/`content`), or an object exposing `text`/`content`.
|
|
43
|
+
* Anything else falls back to a JSON serialization. Ported from
|
|
44
|
+
* `plugin-build-guide-block`'s `build.ts` (`toPlainText`), narrowed to avoid
|
|
45
|
+
* `any`.
|
|
46
|
+
*/
|
|
47
|
+
export function toPlainText(value: unknown): string {
|
|
48
|
+
if (typeof value === 'string') {
|
|
49
|
+
return value;
|
|
50
|
+
}
|
|
51
|
+
if (Array.isArray(value)) {
|
|
52
|
+
return value
|
|
53
|
+
.map((item) => {
|
|
54
|
+
if (typeof item === 'string') {
|
|
55
|
+
return item;
|
|
56
|
+
}
|
|
57
|
+
if (item && typeof item === 'object') {
|
|
58
|
+
const part = item as { text?: unknown; content?: unknown };
|
|
59
|
+
if (typeof part.text === 'string') {
|
|
60
|
+
return part.text;
|
|
61
|
+
}
|
|
62
|
+
if (typeof part.content === 'string') {
|
|
63
|
+
return part.content;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return '';
|
|
67
|
+
})
|
|
68
|
+
.filter(Boolean)
|
|
69
|
+
.join('\n');
|
|
70
|
+
}
|
|
71
|
+
if (value && typeof value === 'object') {
|
|
72
|
+
const obj = value as { text?: unknown; content?: unknown };
|
|
73
|
+
const text = obj.text ?? obj.content;
|
|
74
|
+
if (typeof text === 'string') {
|
|
75
|
+
return text;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return JSON.stringify(value);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Clean raw model output and extract the JSON object substring.
|
|
83
|
+
*
|
|
84
|
+
* Applies `stripThink` then `stripFence`, then returns the substring from the
|
|
85
|
+
* first `{` to the last `}` (inclusive). When no balanced brace pair is found,
|
|
86
|
+
* returns the cleaned text unchanged. Mirrors the brace-extraction logic in
|
|
87
|
+
* `plugin-build-guide-block`'s `normalizePlan`.
|
|
88
|
+
*/
|
|
89
|
+
export function extractJsonObject(text: string): string {
|
|
90
|
+
const cleanText = stripFence(stripThink(text));
|
|
91
|
+
const jsonStart = cleanText.indexOf('{');
|
|
92
|
+
const jsonEnd = cleanText.lastIndexOf('}');
|
|
93
|
+
return jsonStart >= 0 && jsonEnd > jsonStart ? cleanText.slice(jsonStart, jsonEnd + 1) : cleanText;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/*
|
|
97
|
+
* Task 4.2: LLM provider acquisition + prompt construction + timed invocation.
|
|
98
|
+
*
|
|
99
|
+
* These exports are kept separate so task 4.3 can compose them (together with
|
|
100
|
+
* the cleaning helpers above) into the full `analyze(...)` stage that adds
|
|
101
|
+
* `JSON.parse` + `blockSpecSchema.safeParse` and the fallback.
|
|
102
|
+
*/
|
|
103
|
+
|
|
104
|
+
import type { Application } from '@nocobase/server';
|
|
105
|
+
import { HumanMessage, SystemMessage } from '@langchain/core/messages';
|
|
106
|
+
import { BlockSpec, SchemaSummary, blockSpecSchema } from '../../shared/blockSpec';
|
|
107
|
+
import { LLM_TIMEOUT_MS } from '../../shared/constants';
|
|
108
|
+
import { buildFallbackSpec } from './fallback';
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* The messages sent to a chat model: a system message establishing the
|
|
112
|
+
* JSON-only contract followed by a human message carrying the request.
|
|
113
|
+
*/
|
|
114
|
+
export type AnalyzerMessage = SystemMessage | HumanMessage;
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* The minimal LLM provider surface this stage relies on. The AI plugin's
|
|
118
|
+
* `getLLMService` returns a richer provider; we narrow to just the chat model
|
|
119
|
+
* `invoke` call so our own code stays typed without depending on `any`.
|
|
120
|
+
*/
|
|
121
|
+
export interface LLMProvider {
|
|
122
|
+
chatModel: {
|
|
123
|
+
invoke(messages: AnalyzerMessage[]): Promise<{ content: unknown }>;
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
interface AIPluginLike {
|
|
128
|
+
aiManager: {
|
|
129
|
+
getLLMService(args: { llmService: string; model: string }): Promise<{ provider: LLMProvider }>;
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* Inputs to {@link buildAnalyzerMessages}.
|
|
135
|
+
*/
|
|
136
|
+
export interface BuildAnalyzerMessagesParams {
|
|
137
|
+
/** The user's natural-language requirement. */
|
|
138
|
+
requirement: string;
|
|
139
|
+
/** The introspected schema for the selected collections. */
|
|
140
|
+
summary: SchemaSummary;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* Resolve the chat-model provider from the AI plugin.
|
|
145
|
+
*
|
|
146
|
+
* Ported from `plugin-build-guide-block`'s `build.ts`: looks up the `ai`
|
|
147
|
+
* plugin, asks its `aiManager` for the configured LLM service, and returns the
|
|
148
|
+
* provider. Throws when the AI plugin is not installed/available.
|
|
149
|
+
*/
|
|
150
|
+
export async function getLLMProvider(app: Application, llmService: string, model: string): Promise<LLMProvider> {
|
|
151
|
+
const aiPlugin = app.pm.get('ai') as AIPluginLike | undefined;
|
|
152
|
+
if (!aiPlugin) {
|
|
153
|
+
throw new Error('Plugin AI is not available');
|
|
154
|
+
}
|
|
155
|
+
const serviceData = await aiPlugin.aiManager.getLLMService({ llmService, model });
|
|
156
|
+
return serviceData.provider;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* Produce a compact, token-friendly serialization of the schema summary. Only
|
|
161
|
+
* the fields the model needs to choose collections/fields are included
|
|
162
|
+
* (collection name + field name/type/interface + relation name/type/target).
|
|
163
|
+
*/
|
|
164
|
+
function compactSummary(summary: SchemaSummary): unknown {
|
|
165
|
+
return {
|
|
166
|
+
dataSource: summary.dataSource,
|
|
167
|
+
collections: summary.collections.map((collection) => ({
|
|
168
|
+
name: collection.name,
|
|
169
|
+
...(collection.introspectionFailed ? { introspectionFailed: true } : {}),
|
|
170
|
+
fields: collection.fields.map((field) => ({
|
|
171
|
+
name: field.name,
|
|
172
|
+
type: field.type,
|
|
173
|
+
interface: field.interface,
|
|
174
|
+
})),
|
|
175
|
+
relations: collection.relations.map((relation) => ({
|
|
176
|
+
name: relation.name,
|
|
177
|
+
type: relation.type,
|
|
178
|
+
target: relation.target,
|
|
179
|
+
})),
|
|
180
|
+
})),
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
/**
|
|
185
|
+
* The system prompt: establishes the assistant's role and the strict
|
|
186
|
+
* JSON-only contract describing the {@link import('../../shared/blockSpec').BlockSpec}
|
|
187
|
+
* shape the model must return.
|
|
188
|
+
*/
|
|
189
|
+
const SYSTEM_PROMPT = `You are a NocoBase block designer. Given a natural-language requirement and a JSON description of the available collections (with their fields and relations), design exactly one block: a chart, a table, or a form.
|
|
190
|
+
|
|
191
|
+
Return ONLY one JSON object. Do not include any prose, explanation, Markdown, or code fences. The JSON object must conform to this BlockSpec shape:
|
|
192
|
+
|
|
193
|
+
{
|
|
194
|
+
"version": 1,
|
|
195
|
+
"blockType": "chart" | "table" | "form",
|
|
196
|
+
"title": string,
|
|
197
|
+
"primaryCollection": string, // a collection name from the provided schema; the block is bound to it
|
|
198
|
+
"dataSource": string, // the provided dataSource
|
|
199
|
+
// include exactly one of the following payloads, matching blockType:
|
|
200
|
+
// when blockType === "chart":
|
|
201
|
+
"charts": [
|
|
202
|
+
{
|
|
203
|
+
"key": string,
|
|
204
|
+
"title": string,
|
|
205
|
+
"chartType": string, // e.g. "ant-design-charts.pie", "ant-design-charts.column", "antd.statistic"
|
|
206
|
+
"measures": [
|
|
207
|
+
{ "field": string, "aggregation": "count" | "sum" | "avg" | "max" | "min", "alias": string }
|
|
208
|
+
],
|
|
209
|
+
"dimensions": [ { "field": string } ]
|
|
210
|
+
}
|
|
211
|
+
],
|
|
212
|
+
// when blockType === "table":
|
|
213
|
+
"table": { "fields": [string] },
|
|
214
|
+
// when blockType === "form":
|
|
215
|
+
"form": { "fields": [string] }
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
Rules:
|
|
219
|
+
- Use ONLY collections, fields, and relations that appear in the provided schema. Never invent field names.
|
|
220
|
+
- "primaryCollection" must be one of the provided collection names.
|
|
221
|
+
- "dataSource" must equal the provided dataSource.
|
|
222
|
+
- Always set "version" to 1.
|
|
223
|
+
- Choose the blockType that best satisfies the requirement and include only that type's payload.
|
|
224
|
+
- Output the single JSON object and nothing else.`;
|
|
225
|
+
|
|
226
|
+
/**
|
|
227
|
+
* Build the `[SystemMessage, HumanMessage]` pair for the analyzer. The human
|
|
228
|
+
* message carries the requirement and a compact JSON serialization of the
|
|
229
|
+
* schema summary.
|
|
230
|
+
*/
|
|
231
|
+
export function buildAnalyzerMessages(params: BuildAnalyzerMessagesParams): AnalyzerMessage[] {
|
|
232
|
+
const { requirement, summary } = params;
|
|
233
|
+
const schemaJson = JSON.stringify(compactSummary(summary));
|
|
234
|
+
return [
|
|
235
|
+
new SystemMessage(SYSTEM_PROMPT),
|
|
236
|
+
new HumanMessage(`Requirement:
|
|
237
|
+
${requirement}
|
|
238
|
+
|
|
239
|
+
Available schema (JSON):
|
|
240
|
+
${schemaJson}
|
|
241
|
+
|
|
242
|
+
Return ONLY the BlockSpec JSON object.`),
|
|
243
|
+
];
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
/**
|
|
247
|
+
* Invoke the chat model with a hard timeout of {@link LLM_TIMEOUT_MS}.
|
|
248
|
+
*
|
|
249
|
+
* Races the model call against a timer that rejects with a clear error, so a
|
|
250
|
+
* hung provider can never block the build worker indefinitely. The raw model
|
|
251
|
+
* output is cleaned (`stripThink`/`stripFence`) and reduced to the outermost
|
|
252
|
+
* JSON object via {@link extractJsonObject}; parsing/validation/fallback are
|
|
253
|
+
* handled by task 4.3.
|
|
254
|
+
*/
|
|
255
|
+
export async function invokeLLM(provider: LLMProvider, messages: AnalyzerMessage[]): Promise<string> {
|
|
256
|
+
let timer: ReturnType<typeof setTimeout> | undefined;
|
|
257
|
+
const timeout = new Promise<never>((_resolve, reject) => {
|
|
258
|
+
timer = setTimeout(() => reject(new Error(`LLM invocation timed out after ${LLM_TIMEOUT_MS}ms`)), LLM_TIMEOUT_MS);
|
|
259
|
+
});
|
|
260
|
+
try {
|
|
261
|
+
const response = await Promise.race([provider.chatModel.invoke(messages), timeout]);
|
|
262
|
+
return extractJsonObject(toPlainText(response.content));
|
|
263
|
+
} finally {
|
|
264
|
+
if (timer) {
|
|
265
|
+
clearTimeout(timer);
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
/*
|
|
271
|
+
* Task 4.3: full analyzer entry — compose provider acquisition + invocation
|
|
272
|
+
* (task 4.2), output cleaning + JSON extraction (task 4.1), shape validation,
|
|
273
|
+
* and the grounded fallback (task 4.4) into a single `analyze(...)` stage.
|
|
274
|
+
*/
|
|
275
|
+
|
|
276
|
+
/**
|
|
277
|
+
* The result of running the AI Analyzer stage.
|
|
278
|
+
*
|
|
279
|
+
* `spec` is always a usable {@link BlockSpec}: either the model's validated
|
|
280
|
+
* output, or — when the model output cannot be parsed/validated or the LLM call
|
|
281
|
+
* fails (timeout/transport) — the grounded fallback from
|
|
282
|
+
* {@link buildFallbackSpec}. `usedFallback` records which path produced `spec`,
|
|
283
|
+
* and `error` carries a concise human-readable reason for the fallback so the
|
|
284
|
+
* caller (task 7.2) can persist it on the Build_Record. `analyze` performs no
|
|
285
|
+
* DB writes itself.
|
|
286
|
+
*/
|
|
287
|
+
export interface AnalyzeResult {
|
|
288
|
+
spec: BlockSpec;
|
|
289
|
+
usedFallback: boolean;
|
|
290
|
+
error?: string;
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
/**
|
|
294
|
+
* Inputs to {@link analyze}.
|
|
295
|
+
*/
|
|
296
|
+
export interface AnalyzeParams {
|
|
297
|
+
/** The user's natural-language requirement. */
|
|
298
|
+
requirement: string;
|
|
299
|
+
/** The introspected schema for the selected collections. */
|
|
300
|
+
summary: SchemaSummary;
|
|
301
|
+
/** The configured AI plugin LLM service name. */
|
|
302
|
+
llmService: string;
|
|
303
|
+
/** The model to invoke within that service. */
|
|
304
|
+
model: string;
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
/**
|
|
308
|
+
* Parse and shape-validate raw LLM output into a {@link BlockSpec}.
|
|
309
|
+
*
|
|
310
|
+
* Runs `JSON.parse` followed by `blockSpecSchema.safeParse`. On either failure
|
|
311
|
+
* returns `{ ok: false, error }` with a concise message describing what went
|
|
312
|
+
* wrong (Req 5.5); the caller turns that into a fallback. The input is expected
|
|
313
|
+
* to already be the extracted JSON-object substring produced by
|
|
314
|
+
* {@link invokeLLM} / {@link extractJsonObject}.
|
|
315
|
+
*/
|
|
316
|
+
export function parseBlockSpec(raw: string): { ok: true; spec: BlockSpec } | { ok: false; error: string } {
|
|
317
|
+
let parsed: unknown;
|
|
318
|
+
try {
|
|
319
|
+
parsed = JSON.parse(raw);
|
|
320
|
+
} catch (err) {
|
|
321
|
+
const reason = err instanceof Error ? err.message : String(err);
|
|
322
|
+
return { ok: false, error: `Failed to parse LLM output as JSON: ${reason}` };
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
const result = blockSpecSchema.safeParse(parsed);
|
|
326
|
+
if (!result.success) {
|
|
327
|
+
const reason = result.error.issues
|
|
328
|
+
.map((issue) => `${issue.path.join('.') || '<root>'}: ${issue.message}`)
|
|
329
|
+
.join('; ');
|
|
330
|
+
return { ok: false, error: `LLM output did not match BlockSpec shape: ${reason}` };
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
return { ok: true, spec: result.data as BlockSpec };
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
/**
|
|
337
|
+
* Run the AI Analyzer stage: invoke the configured LLM with a prompt built from
|
|
338
|
+
* the requirement + schema summary, then parse and shape-validate the output
|
|
339
|
+
* into a {@link BlockSpec}.
|
|
340
|
+
*
|
|
341
|
+
* Failure handling (the result is always usable):
|
|
342
|
+
* - parse/shape failure (Req 5.5) → grounded fallback with the parse error.
|
|
343
|
+
* - LLM error / timeout / transport failure (Req 5.6) → grounded fallback with
|
|
344
|
+
* the underlying error message.
|
|
345
|
+
*
|
|
346
|
+
* `analyze` never writes to the database; it returns `error` so the caller
|
|
347
|
+
* (task 7.2) can record it on the Build_Record.
|
|
348
|
+
*/
|
|
349
|
+
export async function analyze(app: Application, params: AnalyzeParams): Promise<AnalyzeResult> {
|
|
350
|
+
const { requirement, summary, llmService, model } = params;
|
|
351
|
+
|
|
352
|
+
let raw: string;
|
|
353
|
+
try {
|
|
354
|
+
const provider = await getLLMProvider(app, llmService, model);
|
|
355
|
+
const messages = buildAnalyzerMessages({ requirement, summary });
|
|
356
|
+
raw = await invokeLLM(provider, messages);
|
|
357
|
+
} catch (err) {
|
|
358
|
+
const error = err instanceof Error ? err.message : String(err);
|
|
359
|
+
return { spec: buildFallbackSpec(summary), usedFallback: true, error };
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
const parsed = parseBlockSpec(raw);
|
|
363
|
+
if (parsed.ok) {
|
|
364
|
+
return { spec: parsed.spec, usedFallback: false };
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
return { spec: buildFallbackSpec(summary), usedFallback: true, error: parsed.error };
|
|
368
|
+
}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fallback spec builder for `plugin-build-visualization-block`.
|
|
3
|
+
*
|
|
4
|
+
* When the AI Analyzer cannot produce a usable {@link BlockSpec} (parse failure,
|
|
5
|
+
* shape mismatch, LLM timeout/transport error) or the Spec Validator gives up on
|
|
6
|
+
* a model-produced spec, the pipeline falls back to a generic "collection
|
|
7
|
+
* overview" chart. {@link buildFallbackSpec} mirrors the
|
|
8
|
+
* `genericCollectionOverviewTemplate` from `plugin-visualization-templates`, but
|
|
9
|
+
* is *grounded in the live schema*: it only ever references fields that actually
|
|
10
|
+
* exist in the chosen collection, so the result is guaranteed to pass the
|
|
11
|
+
* {@link validate} stage without triggering a further fallback (Correctness
|
|
12
|
+
* Property 3 — "Fallback always valid").
|
|
13
|
+
*
|
|
14
|
+
* The builder is a pure function over the introspected {@link SchemaSummary};
|
|
15
|
+
* it performs no I/O and never mutates its input.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
import type { BlockSpec, ChartSpecItem, CollectionSummary, FieldMeta, SchemaSummary } from '../../shared/blockSpec';
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Field names that identify a record, preferred as the `count` measure target.
|
|
22
|
+
* Mirrors the `record` role's `matchNames` in `plugin-visualization-templates`.
|
|
23
|
+
*/
|
|
24
|
+
const RECORD_MATCH_NAMES = new Set<string>(['id', 'uid', 'uuid', 'key']);
|
|
25
|
+
|
|
26
|
+
/** Field names that indicate a status-like field, used for the pie breakdown. */
|
|
27
|
+
const STATUS_MATCH_NAMES = new Set<string>(['status', 'state', 'stage', 'workflowstatus']);
|
|
28
|
+
|
|
29
|
+
/** Field names that indicate a created-at-like date field, used for the trend. */
|
|
30
|
+
const CREATED_AT_MATCH_NAMES = new Set<string>(['createdat', 'createat', 'creationdate', 'createdon']);
|
|
31
|
+
|
|
32
|
+
/** Field interfaces typically used for a categorical status field. */
|
|
33
|
+
const STATUS_INTERFACES = new Set<string>(['select', 'radiogroup', 'input', 'multipleselect']);
|
|
34
|
+
|
|
35
|
+
/** Field types/interfaces that indicate a temporal field. */
|
|
36
|
+
const DATE_FIELD_TYPES = new Set<string>(['date', 'dateonly', 'datetime']);
|
|
37
|
+
const DATE_INTERFACES = new Set<string>(['createdat', 'updatedat', 'datetime', 'date']);
|
|
38
|
+
|
|
39
|
+
/** The default measure field used when a collection exposes no fields at all. */
|
|
40
|
+
const DEFAULT_MEASURE_FIELD = 'id';
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Normalize a field name (and interface/type tokens) for loose matching: drop
|
|
44
|
+
* every non-alphanumeric character and lower-case the rest. Kept in sync with
|
|
45
|
+
* `normalizeFieldName` in the validator so the two stages agree on identity.
|
|
46
|
+
*/
|
|
47
|
+
const normalize = (value = ''): string => value.replace(/[^a-zA-Z0-9]/g, '').toLowerCase();
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Choose the collection the fallback block binds to: the first collection that
|
|
51
|
+
* exposes at least one readable field, falling back to the first collection in
|
|
52
|
+
* the summary. Returns `undefined` only when the summary lists no collections.
|
|
53
|
+
*/
|
|
54
|
+
function pickPrimaryCollection(summary: SchemaSummary): CollectionSummary | undefined {
|
|
55
|
+
const withFields = summary.collections.find(
|
|
56
|
+
(collection) => !collection.introspectionFailed && collection.fields.length > 0,
|
|
57
|
+
);
|
|
58
|
+
return withFields ?? summary.collections[0];
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Pick the field a `count` measure is taken over: a record-identifying field
|
|
63
|
+
* (`id`/`uid`/`uuid`/`key`) when present, otherwise the first available field.
|
|
64
|
+
* Falls back to the literal `'id'` for a collection with no fields (the safest
|
|
65
|
+
* default — see the edge case documented on {@link buildFallbackSpec}).
|
|
66
|
+
*/
|
|
67
|
+
function pickMeasureField(fields: FieldMeta[]): string {
|
|
68
|
+
const record = fields.find((field) => RECORD_MATCH_NAMES.has(normalize(field.name)));
|
|
69
|
+
return record?.name ?? fields[0]?.name ?? DEFAULT_MEASURE_FIELD;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/** Whether a field reads like a categorical status field (name or type/iface). */
|
|
73
|
+
function isStatusLike(field: FieldMeta): boolean {
|
|
74
|
+
if (STATUS_MATCH_NAMES.has(normalize(field.name))) {
|
|
75
|
+
return true;
|
|
76
|
+
}
|
|
77
|
+
return field.type === 'string' && STATUS_INTERFACES.has(normalize(field.interface));
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/** Whether a field reads like a created-at-style date field. */
|
|
81
|
+
function isCreatedAtLike(field: FieldMeta): boolean {
|
|
82
|
+
if (CREATED_AT_MATCH_NAMES.has(normalize(field.name))) {
|
|
83
|
+
return true;
|
|
84
|
+
}
|
|
85
|
+
return DATE_FIELD_TYPES.has(normalize(field.type)) || DATE_INTERFACES.has(normalize(field.interface));
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Build a generic "collection overview" chart {@link BlockSpec} for the primary
|
|
90
|
+
* collection of `summary`.
|
|
91
|
+
*
|
|
92
|
+
* The spec always contains a "Total records" statistic (a `count` measure over a
|
|
93
|
+
* record-identifying or first available field). It additionally includes a
|
|
94
|
+
* "Records by status" pie chart **only** when a status-like field exists, and a
|
|
95
|
+
* "Created trend" line chart **only** when a created-at-like date field exists —
|
|
96
|
+
* so every field the spec references is guaranteed to exist in the collection
|
|
97
|
+
* and the result validates without a further fallback (Property 3).
|
|
98
|
+
*
|
|
99
|
+
* Edge case: when the chosen collection exposes no fields at all (e.g. all
|
|
100
|
+
* collections failed introspection), the measure falls back to the literal
|
|
101
|
+
* `'id'` field — the safest default for a `count`. Such a spec only validates if
|
|
102
|
+
* the collection in fact has an `id` column; Property 3 is scoped to collections
|
|
103
|
+
* that do, and a genuinely field-less collection is handled upstream by the
|
|
104
|
+
* validator (which would flag a further fallback).
|
|
105
|
+
*/
|
|
106
|
+
export function buildFallbackSpec(summary: SchemaSummary): BlockSpec {
|
|
107
|
+
const collection = pickPrimaryCollection(summary);
|
|
108
|
+
const fields = collection?.fields ?? [];
|
|
109
|
+
const measureField = pickMeasureField(fields);
|
|
110
|
+
|
|
111
|
+
const charts: ChartSpecItem[] = [
|
|
112
|
+
{
|
|
113
|
+
key: 'total-records',
|
|
114
|
+
title: 'Total records',
|
|
115
|
+
chartType: 'antd.statistic',
|
|
116
|
+
measures: [{ field: measureField, aggregation: 'count', alias: 'value' }],
|
|
117
|
+
config: { field: 'value', title: 'Total records' },
|
|
118
|
+
},
|
|
119
|
+
];
|
|
120
|
+
|
|
121
|
+
const statusField = fields.find(isStatusLike);
|
|
122
|
+
if (statusField) {
|
|
123
|
+
charts.push({
|
|
124
|
+
key: 'records-by-status',
|
|
125
|
+
title: 'Records by status',
|
|
126
|
+
chartType: 'ant-design-charts.pie',
|
|
127
|
+
measures: [{ field: measureField, aggregation: 'count', alias: 'value' }],
|
|
128
|
+
dimensions: [{ field: statusField.name, alias: 'status' }],
|
|
129
|
+
config: { angleField: 'value', colorField: 'status' },
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
const createdAtField = fields.find(isCreatedAtLike);
|
|
134
|
+
if (createdAtField) {
|
|
135
|
+
charts.push({
|
|
136
|
+
key: 'created-trend',
|
|
137
|
+
title: 'Created trend',
|
|
138
|
+
chartType: 'ant-design-charts.line',
|
|
139
|
+
measures: [{ field: measureField, aggregation: 'count', alias: 'value' }],
|
|
140
|
+
dimensions: [{ field: createdAtField.name, format: 'YYYY-MM-DD', alias: 'createdAt' }],
|
|
141
|
+
config: { xField: 'createdAt', yField: 'value', smooth: true },
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
return {
|
|
146
|
+
version: 1,
|
|
147
|
+
blockType: 'chart',
|
|
148
|
+
title: 'Overview',
|
|
149
|
+
primaryCollection: collection?.name ?? '',
|
|
150
|
+
dataSource: summary.dataSource,
|
|
151
|
+
charts,
|
|
152
|
+
rationale:
|
|
153
|
+
'Fallback collection overview generated automatically because a tailored ' + 'specification was not available.',
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
export default buildFallbackSpec;
|