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.
Files changed (765) hide show
  1. package/client-v2.d.ts +2 -0
  2. package/client-v2.js +1 -0
  3. package/client.d.ts +2 -0
  4. package/client.js +1 -0
  5. package/dist/client/index.js +10 -0
  6. package/dist/client-v2/812.25692e474e296143.js +10 -0
  7. package/dist/client-v2/index.js +10 -0
  8. package/dist/externalVersion.js +24 -0
  9. package/dist/index.js +48 -0
  10. package/dist/locale/en-US.json +45 -0
  11. package/dist/locale/namespace.js +36 -0
  12. package/dist/locale/vi-VN.json +46 -0
  13. package/dist/locale/zh-CN.json +46 -0
  14. package/dist/node_modules/zod/LICENSE +21 -0
  15. package/dist/node_modules/zod/index.cjs +1 -0
  16. package/dist/node_modules/zod/index.d.cts +4 -0
  17. package/dist/node_modules/zod/index.d.ts +4 -0
  18. package/dist/node_modules/zod/index.js +4 -0
  19. package/dist/node_modules/zod/locales/index.cjs +17 -0
  20. package/dist/node_modules/zod/locales/index.d.cts +1 -0
  21. package/dist/node_modules/zod/locales/index.d.ts +1 -0
  22. package/dist/node_modules/zod/locales/index.js +1 -0
  23. package/dist/node_modules/zod/locales/package.json +6 -0
  24. package/dist/node_modules/zod/mini/index.cjs +17 -0
  25. package/dist/node_modules/zod/mini/index.d.cts +1 -0
  26. package/dist/node_modules/zod/mini/index.d.ts +1 -0
  27. package/dist/node_modules/zod/mini/index.js +1 -0
  28. package/dist/node_modules/zod/mini/package.json +6 -0
  29. package/dist/node_modules/zod/package.json +1 -0
  30. package/dist/node_modules/zod/src/index.ts +4 -0
  31. package/dist/node_modules/zod/src/locales/index.ts +1 -0
  32. package/dist/node_modules/zod/src/mini/index.ts +1 -0
  33. package/dist/node_modules/zod/src/v3/ZodError.ts +330 -0
  34. package/dist/node_modules/zod/src/v3/benchmarks/datetime.ts +58 -0
  35. package/dist/node_modules/zod/src/v3/benchmarks/discriminatedUnion.ts +80 -0
  36. package/dist/node_modules/zod/src/v3/benchmarks/index.ts +59 -0
  37. package/dist/node_modules/zod/src/v3/benchmarks/ipv4.ts +57 -0
  38. package/dist/node_modules/zod/src/v3/benchmarks/object.ts +69 -0
  39. package/dist/node_modules/zod/src/v3/benchmarks/primitives.ts +162 -0
  40. package/dist/node_modules/zod/src/v3/benchmarks/realworld.ts +63 -0
  41. package/dist/node_modules/zod/src/v3/benchmarks/string.ts +55 -0
  42. package/dist/node_modules/zod/src/v3/benchmarks/union.ts +80 -0
  43. package/dist/node_modules/zod/src/v3/errors.ts +13 -0
  44. package/dist/node_modules/zod/src/v3/external.ts +6 -0
  45. package/dist/node_modules/zod/src/v3/helpers/enumUtil.ts +17 -0
  46. package/dist/node_modules/zod/src/v3/helpers/errorUtil.ts +8 -0
  47. package/dist/node_modules/zod/src/v3/helpers/parseUtil.ts +176 -0
  48. package/dist/node_modules/zod/src/v3/helpers/partialUtil.ts +34 -0
  49. package/dist/node_modules/zod/src/v3/helpers/typeAliases.ts +2 -0
  50. package/dist/node_modules/zod/src/v3/helpers/util.ts +224 -0
  51. package/dist/node_modules/zod/src/v3/index.ts +4 -0
  52. package/dist/node_modules/zod/src/v3/locales/en.ts +124 -0
  53. package/dist/node_modules/zod/src/v3/standard-schema.ts +113 -0
  54. package/dist/node_modules/zod/src/v3/tests/Mocker.ts +54 -0
  55. package/dist/node_modules/zod/src/v3/tests/all-errors.test.ts +157 -0
  56. package/dist/node_modules/zod/src/v3/tests/anyunknown.test.ts +28 -0
  57. package/dist/node_modules/zod/src/v3/tests/array.test.ts +71 -0
  58. package/dist/node_modules/zod/src/v3/tests/async-parsing.test.ts +388 -0
  59. package/dist/node_modules/zod/src/v3/tests/async-refinements.test.ts +46 -0
  60. package/dist/node_modules/zod/src/v3/tests/base.test.ts +29 -0
  61. package/dist/node_modules/zod/src/v3/tests/bigint.test.ts +55 -0
  62. package/dist/node_modules/zod/src/v3/tests/branded.test.ts +53 -0
  63. package/dist/node_modules/zod/src/v3/tests/catch.test.ts +220 -0
  64. package/dist/node_modules/zod/src/v3/tests/coerce.test.ts +133 -0
  65. package/dist/node_modules/zod/src/v3/tests/complex.test.ts +70 -0
  66. package/dist/node_modules/zod/src/v3/tests/custom.test.ts +31 -0
  67. package/dist/node_modules/zod/src/v3/tests/date.test.ts +32 -0
  68. package/dist/node_modules/zod/src/v3/tests/deepmasking.test.ts +186 -0
  69. package/dist/node_modules/zod/src/v3/tests/default.test.ts +112 -0
  70. package/dist/node_modules/zod/src/v3/tests/description.test.ts +33 -0
  71. package/dist/node_modules/zod/src/v3/tests/discriminated-unions.test.ts +315 -0
  72. package/dist/node_modules/zod/src/v3/tests/enum.test.ts +80 -0
  73. package/dist/node_modules/zod/src/v3/tests/error.test.ts +551 -0
  74. package/dist/node_modules/zod/src/v3/tests/firstparty.test.ts +87 -0
  75. package/dist/node_modules/zod/src/v3/tests/firstpartyschematypes.test.ts +21 -0
  76. package/dist/node_modules/zod/src/v3/tests/function.test.ts +261 -0
  77. package/dist/node_modules/zod/src/v3/tests/generics.test.ts +48 -0
  78. package/dist/node_modules/zod/src/v3/tests/instanceof.test.ts +37 -0
  79. package/dist/node_modules/zod/src/v3/tests/intersection.test.ts +110 -0
  80. package/dist/node_modules/zod/src/v3/tests/language-server.source.ts +76 -0
  81. package/dist/node_modules/zod/src/v3/tests/language-server.test.ts +207 -0
  82. package/dist/node_modules/zod/src/v3/tests/literal.test.ts +36 -0
  83. package/dist/node_modules/zod/src/v3/tests/map.test.ts +110 -0
  84. package/dist/node_modules/zod/src/v3/tests/masking.test.ts +4 -0
  85. package/dist/node_modules/zod/src/v3/tests/mocker.test.ts +19 -0
  86. package/dist/node_modules/zod/src/v3/tests/nan.test.ts +24 -0
  87. package/dist/node_modules/zod/src/v3/tests/nativeEnum.test.ts +87 -0
  88. package/dist/node_modules/zod/src/v3/tests/nullable.test.ts +42 -0
  89. package/dist/node_modules/zod/src/v3/tests/number.test.ts +176 -0
  90. package/dist/node_modules/zod/src/v3/tests/object-augmentation.test.ts +29 -0
  91. package/dist/node_modules/zod/src/v3/tests/object-in-es5-env.test.ts +29 -0
  92. package/dist/node_modules/zod/src/v3/tests/object.test.ts +434 -0
  93. package/dist/node_modules/zod/src/v3/tests/optional.test.ts +42 -0
  94. package/dist/node_modules/zod/src/v3/tests/parseUtil.test.ts +23 -0
  95. package/dist/node_modules/zod/src/v3/tests/parser.test.ts +41 -0
  96. package/dist/node_modules/zod/src/v3/tests/partials.test.ts +243 -0
  97. package/dist/node_modules/zod/src/v3/tests/pickomit.test.ts +111 -0
  98. package/dist/node_modules/zod/src/v3/tests/pipeline.test.ts +29 -0
  99. package/dist/node_modules/zod/src/v3/tests/preprocess.test.ts +186 -0
  100. package/dist/node_modules/zod/src/v3/tests/primitive.test.ts +440 -0
  101. package/dist/node_modules/zod/src/v3/tests/promise.test.ts +90 -0
  102. package/dist/node_modules/zod/src/v3/tests/readonly.test.ts +194 -0
  103. package/dist/node_modules/zod/src/v3/tests/record.test.ts +171 -0
  104. package/dist/node_modules/zod/src/v3/tests/recursive.test.ts +197 -0
  105. package/dist/node_modules/zod/src/v3/tests/refine.test.ts +313 -0
  106. package/dist/node_modules/zod/src/v3/tests/safeparse.test.ts +27 -0
  107. package/dist/node_modules/zod/src/v3/tests/set.test.ts +142 -0
  108. package/dist/node_modules/zod/src/v3/tests/standard-schema.test.ts +83 -0
  109. package/dist/node_modules/zod/src/v3/tests/string.test.ts +916 -0
  110. package/dist/node_modules/zod/src/v3/tests/transformer.test.ts +233 -0
  111. package/dist/node_modules/zod/src/v3/tests/tuple.test.ts +90 -0
  112. package/dist/node_modules/zod/src/v3/tests/unions.test.ts +57 -0
  113. package/dist/node_modules/zod/src/v3/tests/validations.test.ts +133 -0
  114. package/dist/node_modules/zod/src/v3/tests/void.test.ts +15 -0
  115. package/dist/node_modules/zod/src/v3/types.ts +5138 -0
  116. package/dist/node_modules/zod/src/v4/classic/checks.ts +32 -0
  117. package/dist/node_modules/zod/src/v4/classic/coerce.ts +27 -0
  118. package/dist/node_modules/zod/src/v4/classic/compat.ts +70 -0
  119. package/dist/node_modules/zod/src/v4/classic/errors.ts +82 -0
  120. package/dist/node_modules/zod/src/v4/classic/external.ts +51 -0
  121. package/dist/node_modules/zod/src/v4/classic/from-json-schema.ts +643 -0
  122. package/dist/node_modules/zod/src/v4/classic/index.ts +5 -0
  123. package/dist/node_modules/zod/src/v4/classic/iso.ts +90 -0
  124. package/dist/node_modules/zod/src/v4/classic/parse.ts +82 -0
  125. package/dist/node_modules/zod/src/v4/classic/schemas.ts +2409 -0
  126. package/dist/node_modules/zod/src/v4/classic/tests/anyunknown.test.ts +26 -0
  127. package/dist/node_modules/zod/src/v4/classic/tests/apply.test.ts +59 -0
  128. package/dist/node_modules/zod/src/v4/classic/tests/array.test.ts +264 -0
  129. package/dist/node_modules/zod/src/v4/classic/tests/assignability.test.ts +210 -0
  130. package/dist/node_modules/zod/src/v4/classic/tests/async-parsing.test.ts +381 -0
  131. package/dist/node_modules/zod/src/v4/classic/tests/async-refinements.test.ts +68 -0
  132. package/dist/node_modules/zod/src/v4/classic/tests/base.test.ts +7 -0
  133. package/dist/node_modules/zod/src/v4/classic/tests/bigint.test.ts +54 -0
  134. package/dist/node_modules/zod/src/v4/classic/tests/brand.test.ts +106 -0
  135. package/dist/node_modules/zod/src/v4/classic/tests/catch.test.ts +276 -0
  136. package/dist/node_modules/zod/src/v4/classic/tests/coalesce.test.ts +20 -0
  137. package/dist/node_modules/zod/src/v4/classic/tests/codec-examples.test.ts +573 -0
  138. package/dist/node_modules/zod/src/v4/classic/tests/codec.test.ts +562 -0
  139. package/dist/node_modules/zod/src/v4/classic/tests/coerce.test.ts +160 -0
  140. package/dist/node_modules/zod/src/v4/classic/tests/continuability.test.ts +374 -0
  141. package/dist/node_modules/zod/src/v4/classic/tests/custom.test.ts +40 -0
  142. package/dist/node_modules/zod/src/v4/classic/tests/date.test.ts +62 -0
  143. package/dist/node_modules/zod/src/v4/classic/tests/datetime.test.ts +302 -0
  144. package/dist/node_modules/zod/src/v4/classic/tests/default.test.ts +365 -0
  145. package/dist/node_modules/zod/src/v4/classic/tests/describe-meta-checks.test.ts +27 -0
  146. package/dist/node_modules/zod/src/v4/classic/tests/description.test.ts +32 -0
  147. package/dist/node_modules/zod/src/v4/classic/tests/discriminated-unions.test.ts +661 -0
  148. package/dist/node_modules/zod/src/v4/classic/tests/enum.test.ts +285 -0
  149. package/dist/node_modules/zod/src/v4/classic/tests/error-utils.test.ts +595 -0
  150. package/dist/node_modules/zod/src/v4/classic/tests/error.test.ts +711 -0
  151. package/dist/node_modules/zod/src/v4/classic/tests/file.test.ts +96 -0
  152. package/dist/node_modules/zod/src/v4/classic/tests/firstparty.test.ts +179 -0
  153. package/dist/node_modules/zod/src/v4/classic/tests/fix-json-issue.test.ts +26 -0
  154. package/dist/node_modules/zod/src/v4/classic/tests/from-json-schema.test.ts +734 -0
  155. package/dist/node_modules/zod/src/v4/classic/tests/function.test.ts +360 -0
  156. package/dist/node_modules/zod/src/v4/classic/tests/generics.test.ts +72 -0
  157. package/dist/node_modules/zod/src/v4/classic/tests/hash.test.ts +68 -0
  158. package/dist/node_modules/zod/src/v4/classic/tests/index.test.ts +939 -0
  159. package/dist/node_modules/zod/src/v4/classic/tests/instanceof.test.ts +60 -0
  160. package/dist/node_modules/zod/src/v4/classic/tests/intersection.test.ts +198 -0
  161. package/dist/node_modules/zod/src/v4/classic/tests/json.test.ts +109 -0
  162. package/dist/node_modules/zod/src/v4/classic/tests/lazy.test.ts +227 -0
  163. package/dist/node_modules/zod/src/v4/classic/tests/literal.test.ts +117 -0
  164. package/dist/node_modules/zod/src/v4/classic/tests/map.test.ts +330 -0
  165. package/dist/node_modules/zod/src/v4/classic/tests/nan.test.ts +21 -0
  166. package/dist/node_modules/zod/src/v4/classic/tests/nested-refine.test.ts +168 -0
  167. package/dist/node_modules/zod/src/v4/classic/tests/nonoptional.test.ts +101 -0
  168. package/dist/node_modules/zod/src/v4/classic/tests/nullable.test.ts +22 -0
  169. package/dist/node_modules/zod/src/v4/classic/tests/number.test.ts +270 -0
  170. package/dist/node_modules/zod/src/v4/classic/tests/object.test.ts +640 -0
  171. package/dist/node_modules/zod/src/v4/classic/tests/optional.test.ts +223 -0
  172. package/dist/node_modules/zod/src/v4/classic/tests/partial.test.ts +427 -0
  173. package/dist/node_modules/zod/src/v4/classic/tests/pickomit.test.ts +211 -0
  174. package/dist/node_modules/zod/src/v4/classic/tests/pipe.test.ts +101 -0
  175. package/dist/node_modules/zod/src/v4/classic/tests/prefault.test.ts +74 -0
  176. package/dist/node_modules/zod/src/v4/classic/tests/preprocess.test.ts +282 -0
  177. package/dist/node_modules/zod/src/v4/classic/tests/primitive.test.ts +175 -0
  178. package/dist/node_modules/zod/src/v4/classic/tests/promise.test.ts +81 -0
  179. package/dist/node_modules/zod/src/v4/classic/tests/prototypes.test.ts +23 -0
  180. package/dist/node_modules/zod/src/v4/classic/tests/readonly.test.ts +252 -0
  181. package/dist/node_modules/zod/src/v4/classic/tests/record.test.ts +600 -0
  182. package/dist/node_modules/zod/src/v4/classic/tests/recursive-types.test.ts +582 -0
  183. package/dist/node_modules/zod/src/v4/classic/tests/refine.test.ts +570 -0
  184. package/dist/node_modules/zod/src/v4/classic/tests/registries.test.ts +243 -0
  185. package/dist/node_modules/zod/src/v4/classic/tests/set.test.ts +181 -0
  186. package/dist/node_modules/zod/src/v4/classic/tests/standard-schema.test.ts +134 -0
  187. package/dist/node_modules/zod/src/v4/classic/tests/string-formats.test.ts +125 -0
  188. package/dist/node_modules/zod/src/v4/classic/tests/string.test.ts +1175 -0
  189. package/dist/node_modules/zod/src/v4/classic/tests/stringbool.test.ts +106 -0
  190. package/dist/node_modules/zod/src/v4/classic/tests/template-literal.test.ts +771 -0
  191. package/dist/node_modules/zod/src/v4/classic/tests/to-json-schema-methods.test.ts +438 -0
  192. package/dist/node_modules/zod/src/v4/classic/tests/to-json-schema.test.ts +2975 -0
  193. package/dist/node_modules/zod/src/v4/classic/tests/transform.test.ts +361 -0
  194. package/dist/node_modules/zod/src/v4/classic/tests/tuple.test.ts +183 -0
  195. package/dist/node_modules/zod/src/v4/classic/tests/union.test.ts +219 -0
  196. package/dist/node_modules/zod/src/v4/classic/tests/url.test.ts +13 -0
  197. package/dist/node_modules/zod/src/v4/classic/tests/validations.test.ts +283 -0
  198. package/dist/node_modules/zod/src/v4/classic/tests/void.test.ts +12 -0
  199. package/dist/node_modules/zod/src/v4/core/api.ts +1798 -0
  200. package/dist/node_modules/zod/src/v4/core/checks.ts +1293 -0
  201. package/dist/node_modules/zod/src/v4/core/config.ts +15 -0
  202. package/dist/node_modules/zod/src/v4/core/core.ts +138 -0
  203. package/dist/node_modules/zod/src/v4/core/doc.ts +44 -0
  204. package/dist/node_modules/zod/src/v4/core/errors.ts +448 -0
  205. package/dist/node_modules/zod/src/v4/core/index.ts +16 -0
  206. package/dist/node_modules/zod/src/v4/core/json-schema-generator.ts +126 -0
  207. package/dist/node_modules/zod/src/v4/core/json-schema-processors.ts +667 -0
  208. package/dist/node_modules/zod/src/v4/core/json-schema.ts +147 -0
  209. package/dist/node_modules/zod/src/v4/core/parse.ts +195 -0
  210. package/dist/node_modules/zod/src/v4/core/regexes.ts +183 -0
  211. package/dist/node_modules/zod/src/v4/core/registries.ts +105 -0
  212. package/dist/node_modules/zod/src/v4/core/schemas.ts +4543 -0
  213. package/dist/node_modules/zod/src/v4/core/standard-schema.ts +159 -0
  214. package/dist/node_modules/zod/src/v4/core/tests/extend.test.ts +59 -0
  215. package/dist/node_modules/zod/src/v4/core/tests/index.test.ts +46 -0
  216. package/dist/node_modules/zod/src/v4/core/tests/locales/be.test.ts +124 -0
  217. package/dist/node_modules/zod/src/v4/core/tests/locales/en.test.ts +22 -0
  218. package/dist/node_modules/zod/src/v4/core/tests/locales/es.test.ts +181 -0
  219. package/dist/node_modules/zod/src/v4/core/tests/locales/he.test.ts +379 -0
  220. package/dist/node_modules/zod/src/v4/core/tests/locales/nl.test.ts +46 -0
  221. package/dist/node_modules/zod/src/v4/core/tests/locales/ru.test.ts +128 -0
  222. package/dist/node_modules/zod/src/v4/core/tests/locales/tr.test.ts +69 -0
  223. package/dist/node_modules/zod/src/v4/core/tests/locales/uz.test.ts +83 -0
  224. package/dist/node_modules/zod/src/v4/core/tests/record-constructor.test.ts +67 -0
  225. package/dist/node_modules/zod/src/v4/core/tests/recursive-tuples.test.ts +45 -0
  226. package/dist/node_modules/zod/src/v4/core/to-json-schema.ts +613 -0
  227. package/dist/node_modules/zod/src/v4/core/util.ts +966 -0
  228. package/dist/node_modules/zod/src/v4/core/versions.ts +5 -0
  229. package/dist/node_modules/zod/src/v4/core/zsf.ts +323 -0
  230. package/dist/node_modules/zod/src/v4/index.ts +4 -0
  231. package/dist/node_modules/zod/src/v4/locales/ar.ts +115 -0
  232. package/dist/node_modules/zod/src/v4/locales/az.ts +111 -0
  233. package/dist/node_modules/zod/src/v4/locales/be.ts +176 -0
  234. package/dist/node_modules/zod/src/v4/locales/bg.ts +128 -0
  235. package/dist/node_modules/zod/src/v4/locales/ca.ts +116 -0
  236. package/dist/node_modules/zod/src/v4/locales/cs.ts +118 -0
  237. package/dist/node_modules/zod/src/v4/locales/da.ts +123 -0
  238. package/dist/node_modules/zod/src/v4/locales/de.ts +116 -0
  239. package/dist/node_modules/zod/src/v4/locales/en.ts +119 -0
  240. package/dist/node_modules/zod/src/v4/locales/eo.ts +118 -0
  241. package/dist/node_modules/zod/src/v4/locales/es.ts +141 -0
  242. package/dist/node_modules/zod/src/v4/locales/fa.ts +126 -0
  243. package/dist/node_modules/zod/src/v4/locales/fi.ts +121 -0
  244. package/dist/node_modules/zod/src/v4/locales/fr-CA.ts +116 -0
  245. package/dist/node_modules/zod/src/v4/locales/fr.ts +116 -0
  246. package/dist/node_modules/zod/src/v4/locales/he.ts +246 -0
  247. package/dist/node_modules/zod/src/v4/locales/hu.ts +117 -0
  248. package/dist/node_modules/zod/src/v4/locales/hy.ts +164 -0
  249. package/dist/node_modules/zod/src/v4/locales/id.ts +115 -0
  250. package/dist/node_modules/zod/src/v4/locales/index.ts +49 -0
  251. package/dist/node_modules/zod/src/v4/locales/is.ts +119 -0
  252. package/dist/node_modules/zod/src/v4/locales/it.ts +116 -0
  253. package/dist/node_modules/zod/src/v4/locales/ja.ts +114 -0
  254. package/dist/node_modules/zod/src/v4/locales/ka.ts +123 -0
  255. package/dist/node_modules/zod/src/v4/locales/kh.ts +7 -0
  256. package/dist/node_modules/zod/src/v4/locales/km.ts +119 -0
  257. package/dist/node_modules/zod/src/v4/locales/ko.ts +121 -0
  258. package/dist/node_modules/zod/src/v4/locales/lt.ts +239 -0
  259. package/dist/node_modules/zod/src/v4/locales/mk.ts +118 -0
  260. package/dist/node_modules/zod/src/v4/locales/ms.ts +115 -0
  261. package/dist/node_modules/zod/src/v4/locales/nl.ts +121 -0
  262. package/dist/node_modules/zod/src/v4/locales/no.ts +116 -0
  263. package/dist/node_modules/zod/src/v4/locales/ota.ts +117 -0
  264. package/dist/node_modules/zod/src/v4/locales/pl.ts +118 -0
  265. package/dist/node_modules/zod/src/v4/locales/ps.ts +126 -0
  266. package/dist/node_modules/zod/src/v4/locales/pt.ts +116 -0
  267. package/dist/node_modules/zod/src/v4/locales/ru.ts +176 -0
  268. package/dist/node_modules/zod/src/v4/locales/sl.ts +118 -0
  269. package/dist/node_modules/zod/src/v4/locales/sv.ts +119 -0
  270. package/dist/node_modules/zod/src/v4/locales/ta.ts +118 -0
  271. package/dist/node_modules/zod/src/v4/locales/th.ts +119 -0
  272. package/dist/node_modules/zod/src/v4/locales/tr.ts +111 -0
  273. package/dist/node_modules/zod/src/v4/locales/ua.ts +7 -0
  274. package/dist/node_modules/zod/src/v4/locales/uk.ts +117 -0
  275. package/dist/node_modules/zod/src/v4/locales/ur.ts +119 -0
  276. package/dist/node_modules/zod/src/v4/locales/uz.ts +116 -0
  277. package/dist/node_modules/zod/src/v4/locales/vi.ts +117 -0
  278. package/dist/node_modules/zod/src/v4/locales/yo.ts +124 -0
  279. package/dist/node_modules/zod/src/v4/locales/zh-CN.ts +116 -0
  280. package/dist/node_modules/zod/src/v4/locales/zh-TW.ts +115 -0
  281. package/dist/node_modules/zod/src/v4/mini/checks.ts +32 -0
  282. package/dist/node_modules/zod/src/v4/mini/coerce.ts +27 -0
  283. package/dist/node_modules/zod/src/v4/mini/external.ts +40 -0
  284. package/dist/node_modules/zod/src/v4/mini/index.ts +3 -0
  285. package/dist/node_modules/zod/src/v4/mini/iso.ts +66 -0
  286. package/dist/node_modules/zod/src/v4/mini/parse.ts +14 -0
  287. package/dist/node_modules/zod/src/v4/mini/schemas.ts +1916 -0
  288. package/dist/node_modules/zod/src/v4/mini/tests/apply.test.ts +24 -0
  289. package/dist/node_modules/zod/src/v4/mini/tests/assignability.test.ts +129 -0
  290. package/dist/node_modules/zod/src/v4/mini/tests/brand.test.ts +94 -0
  291. package/dist/node_modules/zod/src/v4/mini/tests/checks.test.ts +144 -0
  292. package/dist/node_modules/zod/src/v4/mini/tests/codec.test.ts +529 -0
  293. package/dist/node_modules/zod/src/v4/mini/tests/computed.test.ts +36 -0
  294. package/dist/node_modules/zod/src/v4/mini/tests/error.test.ts +22 -0
  295. package/dist/node_modules/zod/src/v4/mini/tests/functions.test.ts +5 -0
  296. package/dist/node_modules/zod/src/v4/mini/tests/index.test.ts +963 -0
  297. package/dist/node_modules/zod/src/v4/mini/tests/number.test.ts +95 -0
  298. package/dist/node_modules/zod/src/v4/mini/tests/object.test.ts +227 -0
  299. package/dist/node_modules/zod/src/v4/mini/tests/prototypes.test.ts +43 -0
  300. package/dist/node_modules/zod/src/v4/mini/tests/recursive-types.test.ts +275 -0
  301. package/dist/node_modules/zod/src/v4/mini/tests/standard-schema.test.ts +50 -0
  302. package/dist/node_modules/zod/src/v4/mini/tests/string.test.ts +347 -0
  303. package/dist/node_modules/zod/src/v4-mini/index.ts +1 -0
  304. package/dist/node_modules/zod/v3/ZodError.cjs +138 -0
  305. package/dist/node_modules/zod/v3/ZodError.d.cts +164 -0
  306. package/dist/node_modules/zod/v3/ZodError.d.ts +164 -0
  307. package/dist/node_modules/zod/v3/ZodError.js +133 -0
  308. package/dist/node_modules/zod/v3/errors.cjs +17 -0
  309. package/dist/node_modules/zod/v3/errors.d.cts +5 -0
  310. package/dist/node_modules/zod/v3/errors.d.ts +5 -0
  311. package/dist/node_modules/zod/v3/errors.js +9 -0
  312. package/dist/node_modules/zod/v3/external.cjs +22 -0
  313. package/dist/node_modules/zod/v3/external.d.cts +6 -0
  314. package/dist/node_modules/zod/v3/external.d.ts +6 -0
  315. package/dist/node_modules/zod/v3/external.js +6 -0
  316. package/dist/node_modules/zod/v3/helpers/enumUtil.cjs +2 -0
  317. package/dist/node_modules/zod/v3/helpers/enumUtil.d.cts +8 -0
  318. package/dist/node_modules/zod/v3/helpers/enumUtil.d.ts +8 -0
  319. package/dist/node_modules/zod/v3/helpers/enumUtil.js +1 -0
  320. package/dist/node_modules/zod/v3/helpers/errorUtil.cjs +9 -0
  321. package/dist/node_modules/zod/v3/helpers/errorUtil.d.cts +9 -0
  322. package/dist/node_modules/zod/v3/helpers/errorUtil.d.ts +9 -0
  323. package/dist/node_modules/zod/v3/helpers/errorUtil.js +6 -0
  324. package/dist/node_modules/zod/v3/helpers/parseUtil.cjs +124 -0
  325. package/dist/node_modules/zod/v3/helpers/parseUtil.d.cts +78 -0
  326. package/dist/node_modules/zod/v3/helpers/parseUtil.d.ts +78 -0
  327. package/dist/node_modules/zod/v3/helpers/parseUtil.js +109 -0
  328. package/dist/node_modules/zod/v3/helpers/partialUtil.cjs +2 -0
  329. package/dist/node_modules/zod/v3/helpers/partialUtil.d.cts +8 -0
  330. package/dist/node_modules/zod/v3/helpers/partialUtil.d.ts +8 -0
  331. package/dist/node_modules/zod/v3/helpers/partialUtil.js +1 -0
  332. package/dist/node_modules/zod/v3/helpers/typeAliases.cjs +2 -0
  333. package/dist/node_modules/zod/v3/helpers/typeAliases.d.cts +2 -0
  334. package/dist/node_modules/zod/v3/helpers/typeAliases.d.ts +2 -0
  335. package/dist/node_modules/zod/v3/helpers/typeAliases.js +1 -0
  336. package/dist/node_modules/zod/v3/helpers/util.cjs +137 -0
  337. package/dist/node_modules/zod/v3/helpers/util.d.cts +85 -0
  338. package/dist/node_modules/zod/v3/helpers/util.d.ts +85 -0
  339. package/dist/node_modules/zod/v3/helpers/util.js +133 -0
  340. package/dist/node_modules/zod/v3/index.cjs +33 -0
  341. package/dist/node_modules/zod/v3/index.d.cts +4 -0
  342. package/dist/node_modules/zod/v3/index.d.ts +4 -0
  343. package/dist/node_modules/zod/v3/index.js +4 -0
  344. package/dist/node_modules/zod/v3/locales/en.cjs +112 -0
  345. package/dist/node_modules/zod/v3/locales/en.d.cts +3 -0
  346. package/dist/node_modules/zod/v3/locales/en.d.ts +3 -0
  347. package/dist/node_modules/zod/v3/locales/en.js +109 -0
  348. package/dist/node_modules/zod/v3/package.json +6 -0
  349. package/dist/node_modules/zod/v3/standard-schema.cjs +2 -0
  350. package/dist/node_modules/zod/v3/standard-schema.d.cts +102 -0
  351. package/dist/node_modules/zod/v3/standard-schema.d.ts +102 -0
  352. package/dist/node_modules/zod/v3/standard-schema.js +1 -0
  353. package/dist/node_modules/zod/v3/types.cjs +3777 -0
  354. package/dist/node_modules/zod/v3/types.d.cts +1034 -0
  355. package/dist/node_modules/zod/v3/types.d.ts +1034 -0
  356. package/dist/node_modules/zod/v3/types.js +3695 -0
  357. package/dist/node_modules/zod/v4/classic/checks.cjs +33 -0
  358. package/dist/node_modules/zod/v4/classic/checks.d.cts +1 -0
  359. package/dist/node_modules/zod/v4/classic/checks.d.ts +1 -0
  360. package/dist/node_modules/zod/v4/classic/checks.js +1 -0
  361. package/dist/node_modules/zod/v4/classic/coerce.cjs +47 -0
  362. package/dist/node_modules/zod/v4/classic/coerce.d.cts +17 -0
  363. package/dist/node_modules/zod/v4/classic/coerce.d.ts +17 -0
  364. package/dist/node_modules/zod/v4/classic/coerce.js +17 -0
  365. package/dist/node_modules/zod/v4/classic/compat.cjs +61 -0
  366. package/dist/node_modules/zod/v4/classic/compat.d.cts +50 -0
  367. package/dist/node_modules/zod/v4/classic/compat.d.ts +50 -0
  368. package/dist/node_modules/zod/v4/classic/compat.js +31 -0
  369. package/dist/node_modules/zod/v4/classic/errors.cjs +74 -0
  370. package/dist/node_modules/zod/v4/classic/errors.d.cts +30 -0
  371. package/dist/node_modules/zod/v4/classic/errors.d.ts +30 -0
  372. package/dist/node_modules/zod/v4/classic/errors.js +48 -0
  373. package/dist/node_modules/zod/v4/classic/external.cjs +73 -0
  374. package/dist/node_modules/zod/v4/classic/external.d.cts +15 -0
  375. package/dist/node_modules/zod/v4/classic/external.d.ts +15 -0
  376. package/dist/node_modules/zod/v4/classic/external.js +20 -0
  377. package/dist/node_modules/zod/v4/classic/from-json-schema.cjs +610 -0
  378. package/dist/node_modules/zod/v4/classic/from-json-schema.d.cts +12 -0
  379. package/dist/node_modules/zod/v4/classic/from-json-schema.d.ts +12 -0
  380. package/dist/node_modules/zod/v4/classic/from-json-schema.js +584 -0
  381. package/dist/node_modules/zod/v4/classic/index.cjs +33 -0
  382. package/dist/node_modules/zod/v4/classic/index.d.cts +4 -0
  383. package/dist/node_modules/zod/v4/classic/index.d.ts +4 -0
  384. package/dist/node_modules/zod/v4/classic/index.js +4 -0
  385. package/dist/node_modules/zod/v4/classic/iso.cjs +60 -0
  386. package/dist/node_modules/zod/v4/classic/iso.d.cts +22 -0
  387. package/dist/node_modules/zod/v4/classic/iso.d.ts +22 -0
  388. package/dist/node_modules/zod/v4/classic/iso.js +30 -0
  389. package/dist/node_modules/zod/v4/classic/package.json +6 -0
  390. package/dist/node_modules/zod/v4/classic/parse.cjs +41 -0
  391. package/dist/node_modules/zod/v4/classic/parse.d.cts +31 -0
  392. package/dist/node_modules/zod/v4/classic/parse.d.ts +31 -0
  393. package/dist/node_modules/zod/v4/classic/parse.js +15 -0
  394. package/dist/node_modules/zod/v4/classic/schemas.cjs +1272 -0
  395. package/dist/node_modules/zod/v4/classic/schemas.d.cts +739 -0
  396. package/dist/node_modules/zod/v4/classic/schemas.d.ts +739 -0
  397. package/dist/node_modules/zod/v4/classic/schemas.js +1157 -0
  398. package/dist/node_modules/zod/v4/core/api.cjs +1222 -0
  399. package/dist/node_modules/zod/v4/core/api.d.cts +304 -0
  400. package/dist/node_modules/zod/v4/core/api.d.ts +304 -0
  401. package/dist/node_modules/zod/v4/core/api.js +1082 -0
  402. package/dist/node_modules/zod/v4/core/checks.cjs +601 -0
  403. package/dist/node_modules/zod/v4/core/checks.d.cts +278 -0
  404. package/dist/node_modules/zod/v4/core/checks.d.ts +278 -0
  405. package/dist/node_modules/zod/v4/core/checks.js +575 -0
  406. package/dist/node_modules/zod/v4/core/core.cjs +83 -0
  407. package/dist/node_modules/zod/v4/core/core.d.cts +70 -0
  408. package/dist/node_modules/zod/v4/core/core.d.ts +70 -0
  409. package/dist/node_modules/zod/v4/core/core.js +76 -0
  410. package/dist/node_modules/zod/v4/core/doc.cjs +39 -0
  411. package/dist/node_modules/zod/v4/core/doc.d.cts +14 -0
  412. package/dist/node_modules/zod/v4/core/doc.d.ts +14 -0
  413. package/dist/node_modules/zod/v4/core/doc.js +35 -0
  414. package/dist/node_modules/zod/v4/core/errors.cjs +213 -0
  415. package/dist/node_modules/zod/v4/core/errors.d.cts +220 -0
  416. package/dist/node_modules/zod/v4/core/errors.d.ts +220 -0
  417. package/dist/node_modules/zod/v4/core/errors.js +182 -0
  418. package/dist/node_modules/zod/v4/core/index.cjs +47 -0
  419. package/dist/node_modules/zod/v4/core/index.d.cts +16 -0
  420. package/dist/node_modules/zod/v4/core/index.d.ts +16 -0
  421. package/dist/node_modules/zod/v4/core/index.js +16 -0
  422. package/dist/node_modules/zod/v4/core/json-schema-generator.cjs +99 -0
  423. package/dist/node_modules/zod/v4/core/json-schema-generator.d.cts +65 -0
  424. package/dist/node_modules/zod/v4/core/json-schema-generator.d.ts +65 -0
  425. package/dist/node_modules/zod/v4/core/json-schema-generator.js +95 -0
  426. package/dist/node_modules/zod/v4/core/json-schema-processors.cjs +648 -0
  427. package/dist/node_modules/zod/v4/core/json-schema-processors.d.cts +49 -0
  428. package/dist/node_modules/zod/v4/core/json-schema-processors.d.ts +49 -0
  429. package/dist/node_modules/zod/v4/core/json-schema-processors.js +605 -0
  430. package/dist/node_modules/zod/v4/core/json-schema.cjs +2 -0
  431. package/dist/node_modules/zod/v4/core/json-schema.d.cts +88 -0
  432. package/dist/node_modules/zod/v4/core/json-schema.d.ts +88 -0
  433. package/dist/node_modules/zod/v4/core/json-schema.js +1 -0
  434. package/dist/node_modules/zod/v4/core/package.json +6 -0
  435. package/dist/node_modules/zod/v4/core/parse.cjs +131 -0
  436. package/dist/node_modules/zod/v4/core/parse.d.cts +49 -0
  437. package/dist/node_modules/zod/v4/core/parse.d.ts +49 -0
  438. package/dist/node_modules/zod/v4/core/parse.js +93 -0
  439. package/dist/node_modules/zod/v4/core/regexes.cjs +166 -0
  440. package/dist/node_modules/zod/v4/core/regexes.d.cts +79 -0
  441. package/dist/node_modules/zod/v4/core/regexes.d.ts +79 -0
  442. package/dist/node_modules/zod/v4/core/regexes.js +133 -0
  443. package/dist/node_modules/zod/v4/core/registries.cjs +56 -0
  444. package/dist/node_modules/zod/v4/core/registries.d.cts +35 -0
  445. package/dist/node_modules/zod/v4/core/registries.d.ts +35 -0
  446. package/dist/node_modules/zod/v4/core/registries.js +51 -0
  447. package/dist/node_modules/zod/v4/core/schemas.cjs +2126 -0
  448. package/dist/node_modules/zod/v4/core/schemas.d.cts +1146 -0
  449. package/dist/node_modules/zod/v4/core/schemas.d.ts +1146 -0
  450. package/dist/node_modules/zod/v4/core/schemas.js +2095 -0
  451. package/dist/node_modules/zod/v4/core/standard-schema.cjs +2 -0
  452. package/dist/node_modules/zod/v4/core/standard-schema.d.cts +126 -0
  453. package/dist/node_modules/zod/v4/core/standard-schema.d.ts +126 -0
  454. package/dist/node_modules/zod/v4/core/standard-schema.js +1 -0
  455. package/dist/node_modules/zod/v4/core/to-json-schema.cjs +446 -0
  456. package/dist/node_modules/zod/v4/core/to-json-schema.d.cts +114 -0
  457. package/dist/node_modules/zod/v4/core/to-json-schema.d.ts +114 -0
  458. package/dist/node_modules/zod/v4/core/to-json-schema.js +437 -0
  459. package/dist/node_modules/zod/v4/core/util.cjs +710 -0
  460. package/dist/node_modules/zod/v4/core/util.d.cts +199 -0
  461. package/dist/node_modules/zod/v4/core/util.d.ts +199 -0
  462. package/dist/node_modules/zod/v4/core/util.js +651 -0
  463. package/dist/node_modules/zod/v4/core/versions.cjs +8 -0
  464. package/dist/node_modules/zod/v4/core/versions.d.cts +5 -0
  465. package/dist/node_modules/zod/v4/core/versions.d.ts +5 -0
  466. package/dist/node_modules/zod/v4/core/versions.js +5 -0
  467. package/dist/node_modules/zod/v4/index.cjs +22 -0
  468. package/dist/node_modules/zod/v4/index.d.cts +3 -0
  469. package/dist/node_modules/zod/v4/index.d.ts +3 -0
  470. package/dist/node_modules/zod/v4/index.js +3 -0
  471. package/dist/node_modules/zod/v4/locales/ar.cjs +133 -0
  472. package/dist/node_modules/zod/v4/locales/ar.d.cts +5 -0
  473. package/dist/node_modules/zod/v4/locales/ar.d.ts +4 -0
  474. package/dist/node_modules/zod/v4/locales/ar.js +106 -0
  475. package/dist/node_modules/zod/v4/locales/az.cjs +132 -0
  476. package/dist/node_modules/zod/v4/locales/az.d.cts +5 -0
  477. package/dist/node_modules/zod/v4/locales/az.d.ts +4 -0
  478. package/dist/node_modules/zod/v4/locales/az.js +105 -0
  479. package/dist/node_modules/zod/v4/locales/be.cjs +183 -0
  480. package/dist/node_modules/zod/v4/locales/be.d.cts +5 -0
  481. package/dist/node_modules/zod/v4/locales/be.d.ts +4 -0
  482. package/dist/node_modules/zod/v4/locales/be.js +156 -0
  483. package/dist/node_modules/zod/v4/locales/bg.cjs +147 -0
  484. package/dist/node_modules/zod/v4/locales/bg.d.cts +5 -0
  485. package/dist/node_modules/zod/v4/locales/bg.d.ts +4 -0
  486. package/dist/node_modules/zod/v4/locales/bg.js +120 -0
  487. package/dist/node_modules/zod/v4/locales/ca.cjs +134 -0
  488. package/dist/node_modules/zod/v4/locales/ca.d.cts +5 -0
  489. package/dist/node_modules/zod/v4/locales/ca.d.ts +4 -0
  490. package/dist/node_modules/zod/v4/locales/ca.js +107 -0
  491. package/dist/node_modules/zod/v4/locales/cs.cjs +138 -0
  492. package/dist/node_modules/zod/v4/locales/cs.d.cts +5 -0
  493. package/dist/node_modules/zod/v4/locales/cs.d.ts +4 -0
  494. package/dist/node_modules/zod/v4/locales/cs.js +111 -0
  495. package/dist/node_modules/zod/v4/locales/da.cjs +142 -0
  496. package/dist/node_modules/zod/v4/locales/da.d.cts +5 -0
  497. package/dist/node_modules/zod/v4/locales/da.d.ts +4 -0
  498. package/dist/node_modules/zod/v4/locales/da.js +115 -0
  499. package/dist/node_modules/zod/v4/locales/de.cjs +135 -0
  500. package/dist/node_modules/zod/v4/locales/de.d.cts +5 -0
  501. package/dist/node_modules/zod/v4/locales/de.d.ts +4 -0
  502. package/dist/node_modules/zod/v4/locales/de.js +108 -0
  503. package/dist/node_modules/zod/v4/locales/en.cjs +136 -0
  504. package/dist/node_modules/zod/v4/locales/en.d.cts +5 -0
  505. package/dist/node_modules/zod/v4/locales/en.d.ts +4 -0
  506. package/dist/node_modules/zod/v4/locales/en.js +109 -0
  507. package/dist/node_modules/zod/v4/locales/eo.cjs +136 -0
  508. package/dist/node_modules/zod/v4/locales/eo.d.cts +5 -0
  509. package/dist/node_modules/zod/v4/locales/eo.d.ts +4 -0
  510. package/dist/node_modules/zod/v4/locales/eo.js +109 -0
  511. package/dist/node_modules/zod/v4/locales/es.cjs +159 -0
  512. package/dist/node_modules/zod/v4/locales/es.d.cts +5 -0
  513. package/dist/node_modules/zod/v4/locales/es.d.ts +4 -0
  514. package/dist/node_modules/zod/v4/locales/es.js +132 -0
  515. package/dist/node_modules/zod/v4/locales/fa.cjs +141 -0
  516. package/dist/node_modules/zod/v4/locales/fa.d.cts +5 -0
  517. package/dist/node_modules/zod/v4/locales/fa.d.ts +4 -0
  518. package/dist/node_modules/zod/v4/locales/fa.js +114 -0
  519. package/dist/node_modules/zod/v4/locales/fi.cjs +139 -0
  520. package/dist/node_modules/zod/v4/locales/fi.d.cts +5 -0
  521. package/dist/node_modules/zod/v4/locales/fi.d.ts +4 -0
  522. package/dist/node_modules/zod/v4/locales/fi.js +112 -0
  523. package/dist/node_modules/zod/v4/locales/fr-CA.cjs +134 -0
  524. package/dist/node_modules/zod/v4/locales/fr-CA.d.cts +5 -0
  525. package/dist/node_modules/zod/v4/locales/fr-CA.d.ts +4 -0
  526. package/dist/node_modules/zod/v4/locales/fr-CA.js +107 -0
  527. package/dist/node_modules/zod/v4/locales/fr.cjs +135 -0
  528. package/dist/node_modules/zod/v4/locales/fr.d.cts +5 -0
  529. package/dist/node_modules/zod/v4/locales/fr.d.ts +4 -0
  530. package/dist/node_modules/zod/v4/locales/fr.js +108 -0
  531. package/dist/node_modules/zod/v4/locales/he.cjs +241 -0
  532. package/dist/node_modules/zod/v4/locales/he.d.cts +5 -0
  533. package/dist/node_modules/zod/v4/locales/he.d.ts +4 -0
  534. package/dist/node_modules/zod/v4/locales/he.js +214 -0
  535. package/dist/node_modules/zod/v4/locales/hu.cjs +135 -0
  536. package/dist/node_modules/zod/v4/locales/hu.d.cts +5 -0
  537. package/dist/node_modules/zod/v4/locales/hu.d.ts +4 -0
  538. package/dist/node_modules/zod/v4/locales/hu.js +108 -0
  539. package/dist/node_modules/zod/v4/locales/hy.cjs +174 -0
  540. package/dist/node_modules/zod/v4/locales/hy.d.cts +5 -0
  541. package/dist/node_modules/zod/v4/locales/hy.d.ts +4 -0
  542. package/dist/node_modules/zod/v4/locales/hy.js +147 -0
  543. package/dist/node_modules/zod/v4/locales/id.cjs +133 -0
  544. package/dist/node_modules/zod/v4/locales/id.d.cts +5 -0
  545. package/dist/node_modules/zod/v4/locales/id.d.ts +4 -0
  546. package/dist/node_modules/zod/v4/locales/id.js +106 -0
  547. package/dist/node_modules/zod/v4/locales/index.cjs +104 -0
  548. package/dist/node_modules/zod/v4/locales/index.d.cts +49 -0
  549. package/dist/node_modules/zod/v4/locales/index.d.ts +49 -0
  550. package/dist/node_modules/zod/v4/locales/index.js +49 -0
  551. package/dist/node_modules/zod/v4/locales/is.cjs +136 -0
  552. package/dist/node_modules/zod/v4/locales/is.d.cts +5 -0
  553. package/dist/node_modules/zod/v4/locales/is.d.ts +4 -0
  554. package/dist/node_modules/zod/v4/locales/is.js +109 -0
  555. package/dist/node_modules/zod/v4/locales/it.cjs +135 -0
  556. package/dist/node_modules/zod/v4/locales/it.d.cts +5 -0
  557. package/dist/node_modules/zod/v4/locales/it.d.ts +4 -0
  558. package/dist/node_modules/zod/v4/locales/it.js +108 -0
  559. package/dist/node_modules/zod/v4/locales/ja.cjs +134 -0
  560. package/dist/node_modules/zod/v4/locales/ja.d.cts +5 -0
  561. package/dist/node_modules/zod/v4/locales/ja.d.ts +4 -0
  562. package/dist/node_modules/zod/v4/locales/ja.js +107 -0
  563. package/dist/node_modules/zod/v4/locales/ka.cjs +139 -0
  564. package/dist/node_modules/zod/v4/locales/ka.d.cts +5 -0
  565. package/dist/node_modules/zod/v4/locales/ka.d.ts +4 -0
  566. package/dist/node_modules/zod/v4/locales/ka.js +112 -0
  567. package/dist/node_modules/zod/v4/locales/kh.cjs +12 -0
  568. package/dist/node_modules/zod/v4/locales/kh.d.cts +5 -0
  569. package/dist/node_modules/zod/v4/locales/kh.d.ts +5 -0
  570. package/dist/node_modules/zod/v4/locales/kh.js +5 -0
  571. package/dist/node_modules/zod/v4/locales/km.cjs +137 -0
  572. package/dist/node_modules/zod/v4/locales/km.d.cts +5 -0
  573. package/dist/node_modules/zod/v4/locales/km.d.ts +4 -0
  574. package/dist/node_modules/zod/v4/locales/km.js +110 -0
  575. package/dist/node_modules/zod/v4/locales/ko.cjs +138 -0
  576. package/dist/node_modules/zod/v4/locales/ko.d.cts +5 -0
  577. package/dist/node_modules/zod/v4/locales/ko.d.ts +4 -0
  578. package/dist/node_modules/zod/v4/locales/ko.js +111 -0
  579. package/dist/node_modules/zod/v4/locales/lt.cjs +230 -0
  580. package/dist/node_modules/zod/v4/locales/lt.d.cts +5 -0
  581. package/dist/node_modules/zod/v4/locales/lt.d.ts +4 -0
  582. package/dist/node_modules/zod/v4/locales/lt.js +203 -0
  583. package/dist/node_modules/zod/v4/locales/mk.cjs +136 -0
  584. package/dist/node_modules/zod/v4/locales/mk.d.cts +5 -0
  585. package/dist/node_modules/zod/v4/locales/mk.d.ts +4 -0
  586. package/dist/node_modules/zod/v4/locales/mk.js +109 -0
  587. package/dist/node_modules/zod/v4/locales/ms.cjs +134 -0
  588. package/dist/node_modules/zod/v4/locales/ms.d.cts +5 -0
  589. package/dist/node_modules/zod/v4/locales/ms.d.ts +4 -0
  590. package/dist/node_modules/zod/v4/locales/ms.js +107 -0
  591. package/dist/node_modules/zod/v4/locales/nl.cjs +137 -0
  592. package/dist/node_modules/zod/v4/locales/nl.d.cts +5 -0
  593. package/dist/node_modules/zod/v4/locales/nl.d.ts +4 -0
  594. package/dist/node_modules/zod/v4/locales/nl.js +110 -0
  595. package/dist/node_modules/zod/v4/locales/no.cjs +135 -0
  596. package/dist/node_modules/zod/v4/locales/no.d.cts +5 -0
  597. package/dist/node_modules/zod/v4/locales/no.d.ts +4 -0
  598. package/dist/node_modules/zod/v4/locales/no.js +108 -0
  599. package/dist/node_modules/zod/v4/locales/ota.cjs +136 -0
  600. package/dist/node_modules/zod/v4/locales/ota.d.cts +5 -0
  601. package/dist/node_modules/zod/v4/locales/ota.d.ts +4 -0
  602. package/dist/node_modules/zod/v4/locales/ota.js +109 -0
  603. package/dist/node_modules/zod/v4/locales/package.json +6 -0
  604. package/dist/node_modules/zod/v4/locales/pl.cjs +136 -0
  605. package/dist/node_modules/zod/v4/locales/pl.d.cts +5 -0
  606. package/dist/node_modules/zod/v4/locales/pl.d.ts +4 -0
  607. package/dist/node_modules/zod/v4/locales/pl.js +109 -0
  608. package/dist/node_modules/zod/v4/locales/ps.cjs +141 -0
  609. package/dist/node_modules/zod/v4/locales/ps.d.cts +5 -0
  610. package/dist/node_modules/zod/v4/locales/ps.d.ts +4 -0
  611. package/dist/node_modules/zod/v4/locales/ps.js +114 -0
  612. package/dist/node_modules/zod/v4/locales/pt.cjs +135 -0
  613. package/dist/node_modules/zod/v4/locales/pt.d.cts +5 -0
  614. package/dist/node_modules/zod/v4/locales/pt.d.ts +4 -0
  615. package/dist/node_modules/zod/v4/locales/pt.js +108 -0
  616. package/dist/node_modules/zod/v4/locales/ru.cjs +183 -0
  617. package/dist/node_modules/zod/v4/locales/ru.d.cts +5 -0
  618. package/dist/node_modules/zod/v4/locales/ru.d.ts +4 -0
  619. package/dist/node_modules/zod/v4/locales/ru.js +156 -0
  620. package/dist/node_modules/zod/v4/locales/sl.cjs +136 -0
  621. package/dist/node_modules/zod/v4/locales/sl.d.cts +5 -0
  622. package/dist/node_modules/zod/v4/locales/sl.d.ts +4 -0
  623. package/dist/node_modules/zod/v4/locales/sl.js +109 -0
  624. package/dist/node_modules/zod/v4/locales/sv.cjs +137 -0
  625. package/dist/node_modules/zod/v4/locales/sv.d.cts +5 -0
  626. package/dist/node_modules/zod/v4/locales/sv.d.ts +4 -0
  627. package/dist/node_modules/zod/v4/locales/sv.js +110 -0
  628. package/dist/node_modules/zod/v4/locales/ta.cjs +137 -0
  629. package/dist/node_modules/zod/v4/locales/ta.d.cts +5 -0
  630. package/dist/node_modules/zod/v4/locales/ta.d.ts +4 -0
  631. package/dist/node_modules/zod/v4/locales/ta.js +110 -0
  632. package/dist/node_modules/zod/v4/locales/th.cjs +137 -0
  633. package/dist/node_modules/zod/v4/locales/th.d.cts +5 -0
  634. package/dist/node_modules/zod/v4/locales/th.d.ts +4 -0
  635. package/dist/node_modules/zod/v4/locales/th.js +110 -0
  636. package/dist/node_modules/zod/v4/locales/tr.cjs +132 -0
  637. package/dist/node_modules/zod/v4/locales/tr.d.cts +5 -0
  638. package/dist/node_modules/zod/v4/locales/tr.d.ts +4 -0
  639. package/dist/node_modules/zod/v4/locales/tr.js +105 -0
  640. package/dist/node_modules/zod/v4/locales/ua.cjs +12 -0
  641. package/dist/node_modules/zod/v4/locales/ua.d.cts +5 -0
  642. package/dist/node_modules/zod/v4/locales/ua.d.ts +5 -0
  643. package/dist/node_modules/zod/v4/locales/ua.js +5 -0
  644. package/dist/node_modules/zod/v4/locales/uk.cjs +135 -0
  645. package/dist/node_modules/zod/v4/locales/uk.d.cts +5 -0
  646. package/dist/node_modules/zod/v4/locales/uk.d.ts +4 -0
  647. package/dist/node_modules/zod/v4/locales/uk.js +108 -0
  648. package/dist/node_modules/zod/v4/locales/ur.cjs +137 -0
  649. package/dist/node_modules/zod/v4/locales/ur.d.cts +5 -0
  650. package/dist/node_modules/zod/v4/locales/ur.d.ts +4 -0
  651. package/dist/node_modules/zod/v4/locales/ur.js +110 -0
  652. package/dist/node_modules/zod/v4/locales/uz.cjs +136 -0
  653. package/dist/node_modules/zod/v4/locales/uz.d.cts +5 -0
  654. package/dist/node_modules/zod/v4/locales/uz.d.ts +4 -0
  655. package/dist/node_modules/zod/v4/locales/uz.js +109 -0
  656. package/dist/node_modules/zod/v4/locales/vi.cjs +135 -0
  657. package/dist/node_modules/zod/v4/locales/vi.d.cts +5 -0
  658. package/dist/node_modules/zod/v4/locales/vi.d.ts +4 -0
  659. package/dist/node_modules/zod/v4/locales/vi.js +108 -0
  660. package/dist/node_modules/zod/v4/locales/yo.cjs +134 -0
  661. package/dist/node_modules/zod/v4/locales/yo.d.cts +5 -0
  662. package/dist/node_modules/zod/v4/locales/yo.d.ts +4 -0
  663. package/dist/node_modules/zod/v4/locales/yo.js +107 -0
  664. package/dist/node_modules/zod/v4/locales/zh-CN.cjs +136 -0
  665. package/dist/node_modules/zod/v4/locales/zh-CN.d.cts +5 -0
  666. package/dist/node_modules/zod/v4/locales/zh-CN.d.ts +4 -0
  667. package/dist/node_modules/zod/v4/locales/zh-CN.js +109 -0
  668. package/dist/node_modules/zod/v4/locales/zh-TW.cjs +134 -0
  669. package/dist/node_modules/zod/v4/locales/zh-TW.d.cts +5 -0
  670. package/dist/node_modules/zod/v4/locales/zh-TW.d.ts +4 -0
  671. package/dist/node_modules/zod/v4/locales/zh-TW.js +107 -0
  672. package/dist/node_modules/zod/v4/mini/checks.cjs +34 -0
  673. package/dist/node_modules/zod/v4/mini/checks.d.cts +1 -0
  674. package/dist/node_modules/zod/v4/mini/checks.d.ts +1 -0
  675. package/dist/node_modules/zod/v4/mini/checks.js +1 -0
  676. package/dist/node_modules/zod/v4/mini/coerce.cjs +52 -0
  677. package/dist/node_modules/zod/v4/mini/coerce.d.cts +7 -0
  678. package/dist/node_modules/zod/v4/mini/coerce.d.ts +7 -0
  679. package/dist/node_modules/zod/v4/mini/coerce.js +22 -0
  680. package/dist/node_modules/zod/v4/mini/external.cjs +63 -0
  681. package/dist/node_modules/zod/v4/mini/external.d.cts +12 -0
  682. package/dist/node_modules/zod/v4/mini/external.d.ts +12 -0
  683. package/dist/node_modules/zod/v4/mini/external.js +14 -0
  684. package/dist/node_modules/zod/v4/mini/index.cjs +32 -0
  685. package/dist/node_modules/zod/v4/mini/index.d.cts +3 -0
  686. package/dist/node_modules/zod/v4/mini/index.d.ts +3 -0
  687. package/dist/node_modules/zod/v4/mini/index.js +3 -0
  688. package/dist/node_modules/zod/v4/mini/iso.cjs +64 -0
  689. package/dist/node_modules/zod/v4/mini/iso.d.cts +22 -0
  690. package/dist/node_modules/zod/v4/mini/iso.d.ts +22 -0
  691. package/dist/node_modules/zod/v4/mini/iso.js +34 -0
  692. package/dist/node_modules/zod/v4/mini/package.json +6 -0
  693. package/dist/node_modules/zod/v4/mini/parse.cjs +16 -0
  694. package/dist/node_modules/zod/v4/mini/parse.d.cts +1 -0
  695. package/dist/node_modules/zod/v4/mini/parse.d.ts +1 -0
  696. package/dist/node_modules/zod/v4/mini/parse.js +1 -0
  697. package/dist/node_modules/zod/v4/mini/schemas.cjs +1046 -0
  698. package/dist/node_modules/zod/v4/mini/schemas.d.cts +427 -0
  699. package/dist/node_modules/zod/v4/mini/schemas.d.ts +427 -0
  700. package/dist/node_modules/zod/v4/mini/schemas.js +925 -0
  701. package/dist/node_modules/zod/v4/package.json +6 -0
  702. package/dist/node_modules/zod/v4-mini/index.cjs +17 -0
  703. package/dist/node_modules/zod/v4-mini/index.d.cts +1 -0
  704. package/dist/node_modules/zod/v4-mini/index.d.ts +1 -0
  705. package/dist/node_modules/zod/v4-mini/index.js +1 -0
  706. package/dist/node_modules/zod/v4-mini/package.json +6 -0
  707. package/dist/server/actions/build.js +915 -0
  708. package/dist/server/collections/ai-visualization-build-settings.js +68 -0
  709. package/dist/server/collections/ai-visualization-builds.js +143 -0
  710. package/dist/server/index.js +48 -0
  711. package/dist/server/pipeline/analyzer.js +220 -0
  712. package/dist/server/pipeline/fallback.js +113 -0
  713. package/dist/server/pipeline/generator.js +386 -0
  714. package/dist/server/pipeline/introspector.js +118 -0
  715. package/dist/server/pipeline/validator.js +323 -0
  716. package/dist/server/plugin.js +210 -0
  717. package/dist/server/resource/settings.js +106 -0
  718. package/dist/server/tools/build-visualization-block.js +130 -0
  719. package/dist/server/tools/index.js +46 -0
  720. package/dist/shared/blockSpec.js +76 -0
  721. package/dist/shared/constants.js +67 -0
  722. package/package.json +44 -0
  723. package/server.d.ts +2 -0
  724. package/server.js +1 -0
  725. package/src/client/BuildForm.tsx +376 -0
  726. package/src/client/BuildVisualizationBlockInitializer.tsx +81 -0
  727. package/src/client/PreviewPanel.tsx +136 -0
  728. package/src/client/SettingsPage.tsx +138 -0
  729. package/src/client/components/BuildPhaseTag.tsx +62 -0
  730. package/src/client/components/CollectionMultiSelect.tsx +124 -0
  731. package/src/client/components/LLMServiceSelect.tsx +108 -0
  732. package/src/client/components/ModelSelect.tsx +105 -0
  733. package/src/client/components/index.ts +8 -0
  734. package/src/client/hooks/useBuildPolling.ts +215 -0
  735. package/src/client/index.tsx +2 -0
  736. package/src/client/locale.ts +18 -0
  737. package/src/client/plugin.tsx +90 -0
  738. package/src/client-v2/index.tsx +1 -0
  739. package/src/client-v2/plugin.tsx +24 -0
  740. package/src/index.ts +2 -0
  741. package/src/locale/en-US.json +45 -0
  742. package/src/locale/namespace.ts +6 -0
  743. package/src/locale/vi-VN.json +46 -0
  744. package/src/locale/zh-CN.json +46 -0
  745. package/src/server/__tests__/build-action.test.ts +440 -0
  746. package/src/server/__tests__/plugin.test.ts +187 -0
  747. package/src/server/actions/build.ts +1318 -0
  748. package/src/server/collections/ai-visualization-build-settings.ts +43 -0
  749. package/src/server/collections/ai-visualization-builds.ts +122 -0
  750. package/src/server/index.ts +2 -0
  751. package/src/server/pipeline/__tests__/analyzer.test.ts +226 -0
  752. package/src/server/pipeline/__tests__/generator.test.ts +576 -0
  753. package/src/server/pipeline/__tests__/introspector.test.ts +268 -0
  754. package/src/server/pipeline/__tests__/validator.test.ts +517 -0
  755. package/src/server/pipeline/analyzer.ts +368 -0
  756. package/src/server/pipeline/fallback.ts +157 -0
  757. package/src/server/pipeline/generator.ts +651 -0
  758. package/src/server/pipeline/introspector.ts +206 -0
  759. package/src/server/pipeline/validator.ts +609 -0
  760. package/src/server/plugin.ts +255 -0
  761. package/src/server/resource/settings.ts +97 -0
  762. package/src/server/tools/build-visualization-block.ts +173 -0
  763. package/src/server/tools/index.ts +1 -0
  764. package/src/shared/blockSpec.ts +214 -0
  765. 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;