hardness 1.0.0

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 (840) hide show
  1. package/AGENTS.md +129 -0
  2. package/CHANGELOG.md +27 -0
  3. package/LICENSE +21 -0
  4. package/README.md +269 -0
  5. package/node_modules/@hardness/analyzers/README.md +31 -0
  6. package/node_modules/@hardness/analyzers/dist/generic.d.ts +6 -0
  7. package/node_modules/@hardness/analyzers/dist/generic.js +13 -0
  8. package/node_modules/@hardness/analyzers/dist/generic.js.map +1 -0
  9. package/node_modules/@hardness/analyzers/dist/index.d.ts +26 -0
  10. package/node_modules/@hardness/analyzers/dist/index.js +40 -0
  11. package/node_modules/@hardness/analyzers/dist/index.js.map +1 -0
  12. package/node_modules/@hardness/analyzers/dist/typescript-node.d.ts +6 -0
  13. package/node_modules/@hardness/analyzers/dist/typescript-node.js +110 -0
  14. package/node_modules/@hardness/analyzers/dist/typescript-node.js.map +1 -0
  15. package/node_modules/@hardness/analyzers/package.json +47 -0
  16. package/node_modules/@hardness/core/README.md +20 -0
  17. package/node_modules/@hardness/core/dist/agent/adapter.d.ts +12 -0
  18. package/node_modules/@hardness/core/dist/agent/adapter.js +32 -0
  19. package/node_modules/@hardness/core/dist/agent/adapter.js.map +1 -0
  20. package/node_modules/@hardness/core/dist/agent/context-gen.d.ts +7 -0
  21. package/node_modules/@hardness/core/dist/agent/context-gen.js +12 -0
  22. package/node_modules/@hardness/core/dist/agent/context-gen.js.map +1 -0
  23. package/node_modules/@hardness/core/dist/common/logger.d.ts +17 -0
  24. package/node_modules/@hardness/core/dist/common/logger.js +59 -0
  25. package/node_modules/@hardness/core/dist/common/logger.js.map +1 -0
  26. package/node_modules/@hardness/core/dist/common/paths.d.ts +22 -0
  27. package/node_modules/@hardness/core/dist/common/paths.js +72 -0
  28. package/node_modules/@hardness/core/dist/common/paths.js.map +1 -0
  29. package/node_modules/@hardness/core/dist/common/preflight.d.ts +9 -0
  30. package/node_modules/@hardness/core/dist/common/preflight.js +69 -0
  31. package/node_modules/@hardness/core/dist/common/preflight.js.map +1 -0
  32. package/node_modules/@hardness/core/dist/common/subprocess.d.ts +18 -0
  33. package/node_modules/@hardness/core/dist/common/subprocess.js +79 -0
  34. package/node_modules/@hardness/core/dist/common/subprocess.js.map +1 -0
  35. package/node_modules/@hardness/core/dist/common/types.d.ts +77 -0
  36. package/node_modules/@hardness/core/dist/common/types.js +2 -0
  37. package/node_modules/@hardness/core/dist/common/types.js.map +1 -0
  38. package/node_modules/@hardness/core/dist/config/manager.d.ts +31 -0
  39. package/node_modules/@hardness/core/dist/config/manager.js +97 -0
  40. package/node_modules/@hardness/core/dist/config/manager.js.map +1 -0
  41. package/node_modules/@hardness/core/dist/config/schema.d.ts +210 -0
  42. package/node_modules/@hardness/core/dist/config/schema.js +41 -0
  43. package/node_modules/@hardness/core/dist/config/schema.js.map +1 -0
  44. package/node_modules/@hardness/core/dist/gates/analyzer-gate.d.ts +6 -0
  45. package/node_modules/@hardness/core/dist/gates/analyzer-gate.js +37 -0
  46. package/node_modules/@hardness/core/dist/gates/analyzer-gate.js.map +1 -0
  47. package/node_modules/@hardness/core/dist/gates/dependency.d.ts +5 -0
  48. package/node_modules/@hardness/core/dist/gates/dependency.js +71 -0
  49. package/node_modules/@hardness/core/dist/gates/dependency.js.map +1 -0
  50. package/node_modules/@hardness/core/dist/gates/engine.d.ts +26 -0
  51. package/node_modules/@hardness/core/dist/gates/engine.js +68 -0
  52. package/node_modules/@hardness/core/dist/gates/engine.js.map +1 -0
  53. package/node_modules/@hardness/core/dist/gates/execution.d.ts +9 -0
  54. package/node_modules/@hardness/core/dist/gates/execution.js +88 -0
  55. package/node_modules/@hardness/core/dist/gates/execution.js.map +1 -0
  56. package/node_modules/@hardness/core/dist/gates/generic.d.ts +21 -0
  57. package/node_modules/@hardness/core/dist/gates/generic.js +204 -0
  58. package/node_modules/@hardness/core/dist/gates/generic.js.map +1 -0
  59. package/node_modules/@hardness/core/dist/gates/import-resolver.d.ts +6 -0
  60. package/node_modules/@hardness/core/dist/gates/import-resolver.js +78 -0
  61. package/node_modules/@hardness/core/dist/gates/import-resolver.js.map +1 -0
  62. package/node_modules/@hardness/core/dist/index.d.ts +23 -0
  63. package/node_modules/@hardness/core/dist/index.js +30 -0
  64. package/node_modules/@hardness/core/dist/index.js.map +1 -0
  65. package/node_modules/@hardness/core/dist/locks/harness-guard.d.ts +32 -0
  66. package/node_modules/@hardness/core/dist/locks/harness-guard.js +121 -0
  67. package/node_modules/@hardness/core/dist/locks/harness-guard.js.map +1 -0
  68. package/node_modules/@hardness/core/dist/locks/sprint-lock.d.ts +39 -0
  69. package/node_modules/@hardness/core/dist/locks/sprint-lock.js +143 -0
  70. package/node_modules/@hardness/core/dist/locks/sprint-lock.js.map +1 -0
  71. package/node_modules/@hardness/core/dist/orchestrator.d.ts +8 -0
  72. package/node_modules/@hardness/core/dist/orchestrator.js +160 -0
  73. package/node_modules/@hardness/core/dist/orchestrator.js.map +1 -0
  74. package/node_modules/@hardness/core/dist/security/policy.d.ts +10 -0
  75. package/node_modules/@hardness/core/dist/security/policy.js +32 -0
  76. package/node_modules/@hardness/core/dist/security/policy.js.map +1 -0
  77. package/node_modules/@hardness/core/dist/security/redactor.d.ts +5 -0
  78. package/node_modules/@hardness/core/dist/security/redactor.js +40 -0
  79. package/node_modules/@hardness/core/dist/security/redactor.js.map +1 -0
  80. package/node_modules/@hardness/core/dist/sprint/context.d.ts +27 -0
  81. package/node_modules/@hardness/core/dist/sprint/context.js +119 -0
  82. package/node_modules/@hardness/core/dist/sprint/context.js.map +1 -0
  83. package/node_modules/@hardness/core/dist/sprint/scorer.d.ts +20 -0
  84. package/node_modules/@hardness/core/dist/sprint/scorer.js +109 -0
  85. package/node_modules/@hardness/core/dist/sprint/scorer.js.map +1 -0
  86. package/node_modules/@hardness/core/dist/sprint/status.d.ts +20 -0
  87. package/node_modules/@hardness/core/dist/sprint/status.js +81 -0
  88. package/node_modules/@hardness/core/dist/sprint/status.js.map +1 -0
  89. package/node_modules/@hardness/core/dist/sprint/validator.d.ts +17 -0
  90. package/node_modules/@hardness/core/dist/sprint/validator.js +239 -0
  91. package/node_modules/@hardness/core/dist/sprint/validator.js.map +1 -0
  92. package/node_modules/@hardness/core/package.json +53 -0
  93. package/node_modules/@hardness/prompts/README.md +30 -0
  94. package/node_modules/@hardness/prompts/dist/index.d.ts +21 -0
  95. package/node_modules/@hardness/prompts/dist/index.js +63 -0
  96. package/node_modules/@hardness/prompts/dist/index.js.map +1 -0
  97. package/node_modules/@hardness/prompts/package.json +46 -0
  98. package/node_modules/picocolors/LICENSE +15 -0
  99. package/node_modules/picocolors/README.md +21 -0
  100. package/node_modules/picocolors/package.json +25 -0
  101. package/node_modules/picocolors/picocolors.browser.js +4 -0
  102. package/node_modules/picocolors/picocolors.d.ts +5 -0
  103. package/node_modules/picocolors/picocolors.js +75 -0
  104. package/node_modules/picocolors/types.d.ts +51 -0
  105. package/node_modules/zod/LICENSE +21 -0
  106. package/node_modules/zod/README.md +208 -0
  107. package/node_modules/zod/index.cjs +33 -0
  108. package/node_modules/zod/index.d.cts +4 -0
  109. package/node_modules/zod/index.d.ts +4 -0
  110. package/node_modules/zod/index.js +4 -0
  111. package/node_modules/zod/package.json +118 -0
  112. package/node_modules/zod/src/index.ts +4 -0
  113. package/node_modules/zod/src/v3/ZodError.ts +330 -0
  114. package/node_modules/zod/src/v3/benchmarks/datetime.ts +58 -0
  115. package/node_modules/zod/src/v3/benchmarks/discriminatedUnion.ts +80 -0
  116. package/node_modules/zod/src/v3/benchmarks/index.ts +59 -0
  117. package/node_modules/zod/src/v3/benchmarks/ipv4.ts +57 -0
  118. package/node_modules/zod/src/v3/benchmarks/object.ts +69 -0
  119. package/node_modules/zod/src/v3/benchmarks/primitives.ts +162 -0
  120. package/node_modules/zod/src/v3/benchmarks/realworld.ts +63 -0
  121. package/node_modules/zod/src/v3/benchmarks/string.ts +55 -0
  122. package/node_modules/zod/src/v3/benchmarks/union.ts +80 -0
  123. package/node_modules/zod/src/v3/errors.ts +13 -0
  124. package/node_modules/zod/src/v3/external.ts +6 -0
  125. package/node_modules/zod/src/v3/helpers/enumUtil.ts +17 -0
  126. package/node_modules/zod/src/v3/helpers/errorUtil.ts +8 -0
  127. package/node_modules/zod/src/v3/helpers/parseUtil.ts +176 -0
  128. package/node_modules/zod/src/v3/helpers/partialUtil.ts +34 -0
  129. package/node_modules/zod/src/v3/helpers/typeAliases.ts +2 -0
  130. package/node_modules/zod/src/v3/helpers/util.ts +224 -0
  131. package/node_modules/zod/src/v3/index.ts +4 -0
  132. package/node_modules/zod/src/v3/locales/en.ts +124 -0
  133. package/node_modules/zod/src/v3/standard-schema.ts +113 -0
  134. package/node_modules/zod/src/v3/tests/Mocker.ts +54 -0
  135. package/node_modules/zod/src/v3/tests/all-errors.test.ts +157 -0
  136. package/node_modules/zod/src/v3/tests/anyunknown.test.ts +28 -0
  137. package/node_modules/zod/src/v3/tests/array.test.ts +71 -0
  138. package/node_modules/zod/src/v3/tests/async-parsing.test.ts +388 -0
  139. package/node_modules/zod/src/v3/tests/async-refinements.test.ts +46 -0
  140. package/node_modules/zod/src/v3/tests/base.test.ts +29 -0
  141. package/node_modules/zod/src/v3/tests/bigint.test.ts +55 -0
  142. package/node_modules/zod/src/v3/tests/branded.test.ts +53 -0
  143. package/node_modules/zod/src/v3/tests/catch.test.ts +220 -0
  144. package/node_modules/zod/src/v3/tests/coerce.test.ts +133 -0
  145. package/node_modules/zod/src/v3/tests/complex.test.ts +56 -0
  146. package/node_modules/zod/src/v3/tests/custom.test.ts +31 -0
  147. package/node_modules/zod/src/v3/tests/date.test.ts +32 -0
  148. package/node_modules/zod/src/v3/tests/deepmasking.test.ts +186 -0
  149. package/node_modules/zod/src/v3/tests/default.test.ts +112 -0
  150. package/node_modules/zod/src/v3/tests/description.test.ts +33 -0
  151. package/node_modules/zod/src/v3/tests/discriminated-unions.test.ts +315 -0
  152. package/node_modules/zod/src/v3/tests/enum.test.ts +80 -0
  153. package/node_modules/zod/src/v3/tests/error.test.ts +551 -0
  154. package/node_modules/zod/src/v3/tests/firstparty.test.ts +87 -0
  155. package/node_modules/zod/src/v3/tests/firstpartyschematypes.test.ts +21 -0
  156. package/node_modules/zod/src/v3/tests/function.test.ts +257 -0
  157. package/node_modules/zod/src/v3/tests/generics.test.ts +48 -0
  158. package/node_modules/zod/src/v3/tests/instanceof.test.ts +37 -0
  159. package/node_modules/zod/src/v3/tests/intersection.test.ts +110 -0
  160. package/node_modules/zod/src/v3/tests/language-server.source.ts +76 -0
  161. package/node_modules/zod/src/v3/tests/language-server.test.ts +207 -0
  162. package/node_modules/zod/src/v3/tests/literal.test.ts +36 -0
  163. package/node_modules/zod/src/v3/tests/map.test.ts +110 -0
  164. package/node_modules/zod/src/v3/tests/masking.test.ts +4 -0
  165. package/node_modules/zod/src/v3/tests/mocker.test.ts +19 -0
  166. package/node_modules/zod/src/v3/tests/nan.test.ts +21 -0
  167. package/node_modules/zod/src/v3/tests/nativeEnum.test.ts +87 -0
  168. package/node_modules/zod/src/v3/tests/nullable.test.ts +42 -0
  169. package/node_modules/zod/src/v3/tests/number.test.ts +176 -0
  170. package/node_modules/zod/src/v3/tests/object-augmentation.test.ts +29 -0
  171. package/node_modules/zod/src/v3/tests/object-in-es5-env.test.ts +29 -0
  172. package/node_modules/zod/src/v3/tests/object.test.ts +434 -0
  173. package/node_modules/zod/src/v3/tests/optional.test.ts +42 -0
  174. package/node_modules/zod/src/v3/tests/parseUtil.test.ts +23 -0
  175. package/node_modules/zod/src/v3/tests/parser.test.ts +41 -0
  176. package/node_modules/zod/src/v3/tests/partials.test.ts +243 -0
  177. package/node_modules/zod/src/v3/tests/pickomit.test.ts +111 -0
  178. package/node_modules/zod/src/v3/tests/pipeline.test.ts +29 -0
  179. package/node_modules/zod/src/v3/tests/preprocess.test.ts +186 -0
  180. package/node_modules/zod/src/v3/tests/primitive.test.ts +440 -0
  181. package/node_modules/zod/src/v3/tests/promise.test.ts +90 -0
  182. package/node_modules/zod/src/v3/tests/readonly.test.ts +194 -0
  183. package/node_modules/zod/src/v3/tests/record.test.ts +171 -0
  184. package/node_modules/zod/src/v3/tests/recursive.test.ts +197 -0
  185. package/node_modules/zod/src/v3/tests/refine.test.ts +313 -0
  186. package/node_modules/zod/src/v3/tests/safeparse.test.ts +27 -0
  187. package/node_modules/zod/src/v3/tests/set.test.ts +142 -0
  188. package/node_modules/zod/src/v3/tests/standard-schema.test.ts +83 -0
  189. package/node_modules/zod/src/v3/tests/string.test.ts +916 -0
  190. package/node_modules/zod/src/v3/tests/transformer.test.ts +233 -0
  191. package/node_modules/zod/src/v3/tests/tuple.test.ts +90 -0
  192. package/node_modules/zod/src/v3/tests/unions.test.ts +57 -0
  193. package/node_modules/zod/src/v3/tests/validations.test.ts +133 -0
  194. package/node_modules/zod/src/v3/tests/void.test.ts +15 -0
  195. package/node_modules/zod/src/v3/types.ts +5136 -0
  196. package/node_modules/zod/src/v4/classic/checks.ts +30 -0
  197. package/node_modules/zod/src/v4/classic/coerce.ts +27 -0
  198. package/node_modules/zod/src/v4/classic/compat.ts +66 -0
  199. package/node_modules/zod/src/v4/classic/errors.ts +75 -0
  200. package/node_modules/zod/src/v4/classic/external.ts +50 -0
  201. package/node_modules/zod/src/v4/classic/index.ts +5 -0
  202. package/node_modules/zod/src/v4/classic/iso.ts +90 -0
  203. package/node_modules/zod/src/v4/classic/parse.ts +33 -0
  204. package/node_modules/zod/src/v4/classic/schemas.ts +2054 -0
  205. package/node_modules/zod/src/v4/classic/tests/anyunknown.test.ts +26 -0
  206. package/node_modules/zod/src/v4/classic/tests/array.test.ts +264 -0
  207. package/node_modules/zod/src/v4/classic/tests/assignability.test.ts +210 -0
  208. package/node_modules/zod/src/v4/classic/tests/async-parsing.test.ts +381 -0
  209. package/node_modules/zod/src/v4/classic/tests/async-refinements.test.ts +68 -0
  210. package/node_modules/zod/src/v4/classic/tests/base.test.ts +7 -0
  211. package/node_modules/zod/src/v4/classic/tests/bigint.test.ts +54 -0
  212. package/node_modules/zod/src/v4/classic/tests/brand.test.ts +63 -0
  213. package/node_modules/zod/src/v4/classic/tests/catch.test.ts +252 -0
  214. package/node_modules/zod/src/v4/classic/tests/coalesce.test.ts +20 -0
  215. package/node_modules/zod/src/v4/classic/tests/coerce.test.ts +160 -0
  216. package/node_modules/zod/src/v4/classic/tests/continuability.test.ts +352 -0
  217. package/node_modules/zod/src/v4/classic/tests/custom.test.ts +40 -0
  218. package/node_modules/zod/src/v4/classic/tests/date.test.ts +31 -0
  219. package/node_modules/zod/src/v4/classic/tests/datetime.test.ts +296 -0
  220. package/node_modules/zod/src/v4/classic/tests/default.test.ts +313 -0
  221. package/node_modules/zod/src/v4/classic/tests/description.test.ts +32 -0
  222. package/node_modules/zod/src/v4/classic/tests/discriminated-unions.test.ts +619 -0
  223. package/node_modules/zod/src/v4/classic/tests/enum.test.ts +285 -0
  224. package/node_modules/zod/src/v4/classic/tests/error-utils.test.ts +527 -0
  225. package/node_modules/zod/src/v4/classic/tests/error.test.ts +711 -0
  226. package/node_modules/zod/src/v4/classic/tests/file.test.ts +91 -0
  227. package/node_modules/zod/src/v4/classic/tests/firstparty.test.ts +175 -0
  228. package/node_modules/zod/src/v4/classic/tests/function.test.ts +268 -0
  229. package/node_modules/zod/src/v4/classic/tests/generics.test.ts +72 -0
  230. package/node_modules/zod/src/v4/classic/tests/index.test.ts +829 -0
  231. package/node_modules/zod/src/v4/classic/tests/instanceof.test.ts +34 -0
  232. package/node_modules/zod/src/v4/classic/tests/intersection.test.ts +171 -0
  233. package/node_modules/zod/src/v4/classic/tests/json.test.ts +108 -0
  234. package/node_modules/zod/src/v4/classic/tests/lazy.test.ts +227 -0
  235. package/node_modules/zod/src/v4/classic/tests/literal.test.ts +92 -0
  236. package/node_modules/zod/src/v4/classic/tests/map.test.ts +196 -0
  237. package/node_modules/zod/src/v4/classic/tests/nan.test.ts +21 -0
  238. package/node_modules/zod/src/v4/classic/tests/nested-refine.test.ts +168 -0
  239. package/node_modules/zod/src/v4/classic/tests/nonoptional.test.ts +86 -0
  240. package/node_modules/zod/src/v4/classic/tests/nullable.test.ts +22 -0
  241. package/node_modules/zod/src/v4/classic/tests/number.test.ts +247 -0
  242. package/node_modules/zod/src/v4/classic/tests/object.test.ts +563 -0
  243. package/node_modules/zod/src/v4/classic/tests/optional.test.ts +123 -0
  244. package/node_modules/zod/src/v4/classic/tests/partial.test.ts +147 -0
  245. package/node_modules/zod/src/v4/classic/tests/pickomit.test.ts +127 -0
  246. package/node_modules/zod/src/v4/classic/tests/pipe.test.ts +81 -0
  247. package/node_modules/zod/src/v4/classic/tests/prefault.test.ts +37 -0
  248. package/node_modules/zod/src/v4/classic/tests/preprocess.test.ts +298 -0
  249. package/node_modules/zod/src/v4/classic/tests/primitive.test.ts +175 -0
  250. package/node_modules/zod/src/v4/classic/tests/promise.test.ts +81 -0
  251. package/node_modules/zod/src/v4/classic/tests/prototypes.test.ts +23 -0
  252. package/node_modules/zod/src/v4/classic/tests/readonly.test.ts +252 -0
  253. package/node_modules/zod/src/v4/classic/tests/record.test.ts +342 -0
  254. package/node_modules/zod/src/v4/classic/tests/recursive-types.test.ts +356 -0
  255. package/node_modules/zod/src/v4/classic/tests/refine.test.ts +532 -0
  256. package/node_modules/zod/src/v4/classic/tests/registries.test.ts +204 -0
  257. package/node_modules/zod/src/v4/classic/tests/set.test.ts +179 -0
  258. package/node_modules/zod/src/v4/classic/tests/standard-schema.test.ts +57 -0
  259. package/node_modules/zod/src/v4/classic/tests/string-formats.test.ts +109 -0
  260. package/node_modules/zod/src/v4/classic/tests/string.test.ts +881 -0
  261. package/node_modules/zod/src/v4/classic/tests/stringbool.test.ts +66 -0
  262. package/node_modules/zod/src/v4/classic/tests/template-literal.test.ts +758 -0
  263. package/node_modules/zod/src/v4/classic/tests/to-json-schema.test.ts +2314 -0
  264. package/node_modules/zod/src/v4/classic/tests/transform.test.ts +250 -0
  265. package/node_modules/zod/src/v4/classic/tests/tuple.test.ts +163 -0
  266. package/node_modules/zod/src/v4/classic/tests/union.test.ts +94 -0
  267. package/node_modules/zod/src/v4/classic/tests/validations.test.ts +283 -0
  268. package/node_modules/zod/src/v4/classic/tests/void.test.ts +12 -0
  269. package/node_modules/zod/src/v4/core/api.ts +1594 -0
  270. package/node_modules/zod/src/v4/core/checks.ts +1283 -0
  271. package/node_modules/zod/src/v4/core/config.ts +15 -0
  272. package/node_modules/zod/src/v4/core/core.ts +134 -0
  273. package/node_modules/zod/src/v4/core/doc.ts +44 -0
  274. package/node_modules/zod/src/v4/core/errors.ts +424 -0
  275. package/node_modules/zod/src/v4/core/function.ts +176 -0
  276. package/node_modules/zod/src/v4/core/index.ts +15 -0
  277. package/node_modules/zod/src/v4/core/json-schema.ts +143 -0
  278. package/node_modules/zod/src/v4/core/parse.ts +94 -0
  279. package/node_modules/zod/src/v4/core/regexes.ts +135 -0
  280. package/node_modules/zod/src/v4/core/registries.ts +96 -0
  281. package/node_modules/zod/src/v4/core/schemas.ts +3842 -0
  282. package/node_modules/zod/src/v4/core/standard-schema.ts +64 -0
  283. package/node_modules/zod/src/v4/core/tests/index.test.ts +46 -0
  284. package/node_modules/zod/src/v4/core/tests/locales/be.test.ts +124 -0
  285. package/node_modules/zod/src/v4/core/tests/locales/en.test.ts +22 -0
  286. package/node_modules/zod/src/v4/core/tests/locales/ru.test.ts +128 -0
  287. package/node_modules/zod/src/v4/core/tests/locales/tr.test.ts +69 -0
  288. package/node_modules/zod/src/v4/core/to-json-schema.ts +977 -0
  289. package/node_modules/zod/src/v4/core/util.ts +775 -0
  290. package/node_modules/zod/src/v4/core/versions.ts +5 -0
  291. package/node_modules/zod/src/v4/core/zsf.ts +323 -0
  292. package/node_modules/zod/src/v4/index.ts +4 -0
  293. package/node_modules/zod/src/v4/locales/ar.ts +125 -0
  294. package/node_modules/zod/src/v4/locales/az.ts +121 -0
  295. package/node_modules/zod/src/v4/locales/be.ts +184 -0
  296. package/node_modules/zod/src/v4/locales/ca.ts +127 -0
  297. package/node_modules/zod/src/v4/locales/cs.ts +142 -0
  298. package/node_modules/zod/src/v4/locales/de.ts +124 -0
  299. package/node_modules/zod/src/v4/locales/en.ts +127 -0
  300. package/node_modules/zod/src/v4/locales/eo.ts +125 -0
  301. package/node_modules/zod/src/v4/locales/es.ts +125 -0
  302. package/node_modules/zod/src/v4/locales/fa.ts +134 -0
  303. package/node_modules/zod/src/v4/locales/fi.ts +131 -0
  304. package/node_modules/zod/src/v4/locales/fr-CA.ts +126 -0
  305. package/node_modules/zod/src/v4/locales/fr.ts +124 -0
  306. package/node_modules/zod/src/v4/locales/he.ts +125 -0
  307. package/node_modules/zod/src/v4/locales/hu.ts +126 -0
  308. package/node_modules/zod/src/v4/locales/id.ts +125 -0
  309. package/node_modules/zod/src/v4/locales/index.ts +39 -0
  310. package/node_modules/zod/src/v4/locales/it.ts +125 -0
  311. package/node_modules/zod/src/v4/locales/ja.ts +122 -0
  312. package/node_modules/zod/src/v4/locales/kh.ts +126 -0
  313. package/node_modules/zod/src/v4/locales/ko.ts +131 -0
  314. package/node_modules/zod/src/v4/locales/mk.ts +127 -0
  315. package/node_modules/zod/src/v4/locales/ms.ts +124 -0
  316. package/node_modules/zod/src/v4/locales/nl.ts +126 -0
  317. package/node_modules/zod/src/v4/locales/no.ts +124 -0
  318. package/node_modules/zod/src/v4/locales/ota.ts +125 -0
  319. package/node_modules/zod/src/v4/locales/pl.ts +126 -0
  320. package/node_modules/zod/src/v4/locales/ps.ts +133 -0
  321. package/node_modules/zod/src/v4/locales/pt.ts +123 -0
  322. package/node_modules/zod/src/v4/locales/ru.ts +184 -0
  323. package/node_modules/zod/src/v4/locales/sl.ts +126 -0
  324. package/node_modules/zod/src/v4/locales/sv.ts +127 -0
  325. package/node_modules/zod/src/v4/locales/ta.ts +125 -0
  326. package/node_modules/zod/src/v4/locales/th.ts +126 -0
  327. package/node_modules/zod/src/v4/locales/tr.ts +121 -0
  328. package/node_modules/zod/src/v4/locales/ua.ts +126 -0
  329. package/node_modules/zod/src/v4/locales/ur.ts +126 -0
  330. package/node_modules/zod/src/v4/locales/vi.ts +125 -0
  331. package/node_modules/zod/src/v4/locales/zh-CN.ts +123 -0
  332. package/node_modules/zod/src/v4/locales/zh-TW.ts +125 -0
  333. package/node_modules/zod/src/v4/mini/checks.ts +32 -0
  334. package/node_modules/zod/src/v4/mini/coerce.ts +22 -0
  335. package/node_modules/zod/src/v4/mini/external.ts +40 -0
  336. package/node_modules/zod/src/v4/mini/index.ts +3 -0
  337. package/node_modules/zod/src/v4/mini/iso.ts +62 -0
  338. package/node_modules/zod/src/v4/mini/parse.ts +1 -0
  339. package/node_modules/zod/src/v4/mini/schemas.ts +1579 -0
  340. package/node_modules/zod/src/v4/mini/tests/assignability.test.ts +129 -0
  341. package/node_modules/zod/src/v4/mini/tests/brand.test.ts +51 -0
  342. package/node_modules/zod/src/v4/mini/tests/checks.test.ts +144 -0
  343. package/node_modules/zod/src/v4/mini/tests/computed.test.ts +36 -0
  344. package/node_modules/zod/src/v4/mini/tests/error.test.ts +22 -0
  345. package/node_modules/zod/src/v4/mini/tests/functions.test.ts +43 -0
  346. package/node_modules/zod/src/v4/mini/tests/index.test.ts +871 -0
  347. package/node_modules/zod/src/v4/mini/tests/number.test.ts +95 -0
  348. package/node_modules/zod/src/v4/mini/tests/object.test.ts +185 -0
  349. package/node_modules/zod/src/v4/mini/tests/prototypes.test.ts +43 -0
  350. package/node_modules/zod/src/v4/mini/tests/recursive-types.test.ts +275 -0
  351. package/node_modules/zod/src/v4/mini/tests/string.test.ts +299 -0
  352. package/node_modules/zod/src/v4-mini/index.ts +1 -0
  353. package/node_modules/zod/v3/ZodError.cjs +138 -0
  354. package/node_modules/zod/v3/ZodError.d.cts +164 -0
  355. package/node_modules/zod/v3/ZodError.d.ts +164 -0
  356. package/node_modules/zod/v3/ZodError.js +133 -0
  357. package/node_modules/zod/v3/errors.cjs +17 -0
  358. package/node_modules/zod/v3/errors.d.cts +5 -0
  359. package/node_modules/zod/v3/errors.d.ts +5 -0
  360. package/node_modules/zod/v3/errors.js +9 -0
  361. package/node_modules/zod/v3/external.cjs +22 -0
  362. package/node_modules/zod/v3/external.d.cts +6 -0
  363. package/node_modules/zod/v3/external.d.ts +6 -0
  364. package/node_modules/zod/v3/external.js +6 -0
  365. package/node_modules/zod/v3/helpers/enumUtil.cjs +2 -0
  366. package/node_modules/zod/v3/helpers/enumUtil.d.cts +8 -0
  367. package/node_modules/zod/v3/helpers/enumUtil.d.ts +8 -0
  368. package/node_modules/zod/v3/helpers/enumUtil.js +1 -0
  369. package/node_modules/zod/v3/helpers/errorUtil.cjs +9 -0
  370. package/node_modules/zod/v3/helpers/errorUtil.d.cts +9 -0
  371. package/node_modules/zod/v3/helpers/errorUtil.d.ts +9 -0
  372. package/node_modules/zod/v3/helpers/errorUtil.js +6 -0
  373. package/node_modules/zod/v3/helpers/parseUtil.cjs +124 -0
  374. package/node_modules/zod/v3/helpers/parseUtil.d.cts +78 -0
  375. package/node_modules/zod/v3/helpers/parseUtil.d.ts +78 -0
  376. package/node_modules/zod/v3/helpers/parseUtil.js +109 -0
  377. package/node_modules/zod/v3/helpers/partialUtil.cjs +2 -0
  378. package/node_modules/zod/v3/helpers/partialUtil.d.cts +8 -0
  379. package/node_modules/zod/v3/helpers/partialUtil.d.ts +8 -0
  380. package/node_modules/zod/v3/helpers/partialUtil.js +1 -0
  381. package/node_modules/zod/v3/helpers/typeAliases.cjs +2 -0
  382. package/node_modules/zod/v3/helpers/typeAliases.d.cts +2 -0
  383. package/node_modules/zod/v3/helpers/typeAliases.d.ts +2 -0
  384. package/node_modules/zod/v3/helpers/typeAliases.js +1 -0
  385. package/node_modules/zod/v3/helpers/util.cjs +137 -0
  386. package/node_modules/zod/v3/helpers/util.d.cts +85 -0
  387. package/node_modules/zod/v3/helpers/util.d.ts +85 -0
  388. package/node_modules/zod/v3/helpers/util.js +133 -0
  389. package/node_modules/zod/v3/index.cjs +33 -0
  390. package/node_modules/zod/v3/index.d.cts +4 -0
  391. package/node_modules/zod/v3/index.d.ts +4 -0
  392. package/node_modules/zod/v3/index.js +4 -0
  393. package/node_modules/zod/v3/locales/en.cjs +111 -0
  394. package/node_modules/zod/v3/locales/en.d.cts +3 -0
  395. package/node_modules/zod/v3/locales/en.d.ts +3 -0
  396. package/node_modules/zod/v3/locales/en.js +109 -0
  397. package/node_modules/zod/v3/standard-schema.cjs +2 -0
  398. package/node_modules/zod/v3/standard-schema.d.cts +102 -0
  399. package/node_modules/zod/v3/standard-schema.d.ts +102 -0
  400. package/node_modules/zod/v3/standard-schema.js +1 -0
  401. package/node_modules/zod/v3/types.cjs +3775 -0
  402. package/node_modules/zod/v3/types.d.cts +1031 -0
  403. package/node_modules/zod/v3/types.d.ts +1031 -0
  404. package/node_modules/zod/v3/types.js +3693 -0
  405. package/node_modules/zod/v4/classic/checks.cjs +32 -0
  406. package/node_modules/zod/v4/classic/checks.d.cts +1 -0
  407. package/node_modules/zod/v4/classic/checks.d.ts +1 -0
  408. package/node_modules/zod/v4/classic/checks.js +1 -0
  409. package/node_modules/zod/v4/classic/coerce.cjs +47 -0
  410. package/node_modules/zod/v4/classic/coerce.d.cts +17 -0
  411. package/node_modules/zod/v4/classic/coerce.d.ts +17 -0
  412. package/node_modules/zod/v4/classic/coerce.js +17 -0
  413. package/node_modules/zod/v4/classic/compat.cjs +57 -0
  414. package/node_modules/zod/v4/classic/compat.d.cts +46 -0
  415. package/node_modules/zod/v4/classic/compat.d.ts +46 -0
  416. package/node_modules/zod/v4/classic/compat.js +27 -0
  417. package/node_modules/zod/v4/classic/errors.cjs +67 -0
  418. package/node_modules/zod/v4/classic/errors.d.cts +30 -0
  419. package/node_modules/zod/v4/classic/errors.d.ts +30 -0
  420. package/node_modules/zod/v4/classic/errors.js +41 -0
  421. package/node_modules/zod/v4/classic/external.cjs +70 -0
  422. package/node_modules/zod/v4/classic/external.d.cts +13 -0
  423. package/node_modules/zod/v4/classic/external.d.ts +13 -0
  424. package/node_modules/zod/v4/classic/external.js +18 -0
  425. package/node_modules/zod/v4/classic/index.cjs +33 -0
  426. package/node_modules/zod/v4/classic/index.d.cts +4 -0
  427. package/node_modules/zod/v4/classic/index.d.ts +4 -0
  428. package/node_modules/zod/v4/classic/index.js +4 -0
  429. package/node_modules/zod/v4/classic/iso.cjs +60 -0
  430. package/node_modules/zod/v4/classic/iso.d.cts +22 -0
  431. package/node_modules/zod/v4/classic/iso.d.ts +22 -0
  432. package/node_modules/zod/v4/classic/iso.js +30 -0
  433. package/node_modules/zod/v4/classic/parse.cjs +32 -0
  434. package/node_modules/zod/v4/classic/parse.d.cts +23 -0
  435. package/node_modules/zod/v4/classic/parse.d.ts +23 -0
  436. package/node_modules/zod/v4/classic/parse.js +6 -0
  437. package/node_modules/zod/v4/classic/schemas.cjs +1109 -0
  438. package/node_modules/zod/v4/classic/schemas.d.cts +630 -0
  439. package/node_modules/zod/v4/classic/schemas.d.ts +630 -0
  440. package/node_modules/zod/v4/classic/schemas.js +1006 -0
  441. package/node_modules/zod/v4/core/api.cjs +1039 -0
  442. package/node_modules/zod/v4/core/api.d.cts +284 -0
  443. package/node_modules/zod/v4/core/api.d.ts +284 -0
  444. package/node_modules/zod/v4/core/api.js +906 -0
  445. package/node_modules/zod/v4/core/checks.cjs +591 -0
  446. package/node_modules/zod/v4/core/checks.d.cts +278 -0
  447. package/node_modules/zod/v4/core/checks.d.ts +278 -0
  448. package/node_modules/zod/v4/core/checks.js +565 -0
  449. package/node_modules/zod/v4/core/core.cjs +67 -0
  450. package/node_modules/zod/v4/core/core.d.cts +49 -0
  451. package/node_modules/zod/v4/core/core.d.ts +49 -0
  452. package/node_modules/zod/v4/core/core.js +61 -0
  453. package/node_modules/zod/v4/core/doc.cjs +39 -0
  454. package/node_modules/zod/v4/core/doc.d.cts +14 -0
  455. package/node_modules/zod/v4/core/doc.d.ts +14 -0
  456. package/node_modules/zod/v4/core/doc.js +35 -0
  457. package/node_modules/zod/v4/core/errors.cjs +226 -0
  458. package/node_modules/zod/v4/core/errors.d.cts +208 -0
  459. package/node_modules/zod/v4/core/errors.d.ts +208 -0
  460. package/node_modules/zod/v4/core/errors.js +195 -0
  461. package/node_modules/zod/v4/core/function.cjs +102 -0
  462. package/node_modules/zod/v4/core/function.d.cts +52 -0
  463. package/node_modules/zod/v4/core/function.d.ts +52 -0
  464. package/node_modules/zod/v4/core/function.js +75 -0
  465. package/node_modules/zod/v4/core/index.cjs +44 -0
  466. package/node_modules/zod/v4/core/index.d.cts +15 -0
  467. package/node_modules/zod/v4/core/index.d.ts +15 -0
  468. package/node_modules/zod/v4/core/index.js +15 -0
  469. package/node_modules/zod/v4/core/json-schema.cjs +2 -0
  470. package/node_modules/zod/v4/core/json-schema.d.cts +87 -0
  471. package/node_modules/zod/v4/core/json-schema.d.ts +87 -0
  472. package/node_modules/zod/v4/core/json-schema.js +1 -0
  473. package/node_modules/zod/v4/core/parse.cjs +87 -0
  474. package/node_modules/zod/v4/core/parse.d.cts +25 -0
  475. package/node_modules/zod/v4/core/parse.d.ts +25 -0
  476. package/node_modules/zod/v4/core/parse.js +57 -0
  477. package/node_modules/zod/v4/core/regexes.cjs +103 -0
  478. package/node_modules/zod/v4/core/regexes.d.cts +62 -0
  479. package/node_modules/zod/v4/core/regexes.d.ts +62 -0
  480. package/node_modules/zod/v4/core/regexes.js +95 -0
  481. package/node_modules/zod/v4/core/registries.cjs +56 -0
  482. package/node_modules/zod/v4/core/registries.d.cts +35 -0
  483. package/node_modules/zod/v4/core/registries.d.ts +35 -0
  484. package/node_modules/zod/v4/core/registries.js +51 -0
  485. package/node_modules/zod/v4/core/schemas.cjs +1748 -0
  486. package/node_modules/zod/v4/core/schemas.d.cts +1041 -0
  487. package/node_modules/zod/v4/core/schemas.d.ts +1041 -0
  488. package/node_modules/zod/v4/core/schemas.js +1717 -0
  489. package/node_modules/zod/v4/core/standard-schema.cjs +2 -0
  490. package/node_modules/zod/v4/core/standard-schema.d.cts +55 -0
  491. package/node_modules/zod/v4/core/standard-schema.d.ts +55 -0
  492. package/node_modules/zod/v4/core/standard-schema.js +1 -0
  493. package/node_modules/zod/v4/core/to-json-schema.cjs +854 -0
  494. package/node_modules/zod/v4/core/to-json-schema.d.cts +88 -0
  495. package/node_modules/zod/v4/core/to-json-schema.d.ts +88 -0
  496. package/node_modules/zod/v4/core/to-json-schema.js +849 -0
  497. package/node_modules/zod/v4/core/util.cjs +539 -0
  498. package/node_modules/zod/v4/core/util.d.cts +183 -0
  499. package/node_modules/zod/v4/core/util.d.ts +183 -0
  500. package/node_modules/zod/v4/core/util.js +493 -0
  501. package/node_modules/zod/v4/core/versions.cjs +8 -0
  502. package/node_modules/zod/v4/core/versions.d.cts +5 -0
  503. package/node_modules/zod/v4/core/versions.d.ts +5 -0
  504. package/node_modules/zod/v4/core/versions.js +5 -0
  505. package/node_modules/zod/v4/index.cjs +22 -0
  506. package/node_modules/zod/v4/index.d.cts +3 -0
  507. package/node_modules/zod/v4/index.d.ts +3 -0
  508. package/node_modules/zod/v4/index.js +3 -0
  509. package/node_modules/zod/v4/locales/ar.cjs +142 -0
  510. package/node_modules/zod/v4/locales/ar.d.cts +4 -0
  511. package/node_modules/zod/v4/locales/ar.d.ts +4 -0
  512. package/node_modules/zod/v4/locales/ar.js +116 -0
  513. package/node_modules/zod/v4/locales/az.cjs +141 -0
  514. package/node_modules/zod/v4/locales/az.d.cts +4 -0
  515. package/node_modules/zod/v4/locales/az.d.ts +4 -0
  516. package/node_modules/zod/v4/locales/az.js +115 -0
  517. package/node_modules/zod/v4/locales/be.cjs +190 -0
  518. package/node_modules/zod/v4/locales/be.d.cts +4 -0
  519. package/node_modules/zod/v4/locales/be.d.ts +4 -0
  520. package/node_modules/zod/v4/locales/be.js +164 -0
  521. package/node_modules/zod/v4/locales/ca.cjs +144 -0
  522. package/node_modules/zod/v4/locales/ca.d.cts +4 -0
  523. package/node_modules/zod/v4/locales/ca.d.ts +4 -0
  524. package/node_modules/zod/v4/locales/ca.js +118 -0
  525. package/node_modules/zod/v4/locales/cs.cjs +161 -0
  526. package/node_modules/zod/v4/locales/cs.d.cts +4 -0
  527. package/node_modules/zod/v4/locales/cs.d.ts +4 -0
  528. package/node_modules/zod/v4/locales/cs.js +135 -0
  529. package/node_modules/zod/v4/locales/de.cjs +142 -0
  530. package/node_modules/zod/v4/locales/de.d.cts +4 -0
  531. package/node_modules/zod/v4/locales/de.d.ts +4 -0
  532. package/node_modules/zod/v4/locales/de.js +116 -0
  533. package/node_modules/zod/v4/locales/en.cjs +145 -0
  534. package/node_modules/zod/v4/locales/en.d.cts +5 -0
  535. package/node_modules/zod/v4/locales/en.d.ts +5 -0
  536. package/node_modules/zod/v4/locales/en.js +117 -0
  537. package/node_modules/zod/v4/locales/eo.cjs +144 -0
  538. package/node_modules/zod/v4/locales/eo.d.cts +5 -0
  539. package/node_modules/zod/v4/locales/eo.d.ts +5 -0
  540. package/node_modules/zod/v4/locales/eo.js +116 -0
  541. package/node_modules/zod/v4/locales/es.cjs +143 -0
  542. package/node_modules/zod/v4/locales/es.d.cts +4 -0
  543. package/node_modules/zod/v4/locales/es.d.ts +4 -0
  544. package/node_modules/zod/v4/locales/es.js +117 -0
  545. package/node_modules/zod/v4/locales/fa.cjs +148 -0
  546. package/node_modules/zod/v4/locales/fa.d.cts +4 -0
  547. package/node_modules/zod/v4/locales/fa.d.ts +4 -0
  548. package/node_modules/zod/v4/locales/fa.js +122 -0
  549. package/node_modules/zod/v4/locales/fi.cjs +148 -0
  550. package/node_modules/zod/v4/locales/fi.d.cts +4 -0
  551. package/node_modules/zod/v4/locales/fi.d.ts +4 -0
  552. package/node_modules/zod/v4/locales/fi.js +122 -0
  553. package/node_modules/zod/v4/locales/fr-CA.cjs +143 -0
  554. package/node_modules/zod/v4/locales/fr-CA.d.cts +4 -0
  555. package/node_modules/zod/v4/locales/fr-CA.d.ts +4 -0
  556. package/node_modules/zod/v4/locales/fr-CA.js +117 -0
  557. package/node_modules/zod/v4/locales/fr.cjs +142 -0
  558. package/node_modules/zod/v4/locales/fr.d.cts +4 -0
  559. package/node_modules/zod/v4/locales/fr.d.ts +4 -0
  560. package/node_modules/zod/v4/locales/fr.js +116 -0
  561. package/node_modules/zod/v4/locales/he.cjs +143 -0
  562. package/node_modules/zod/v4/locales/he.d.cts +4 -0
  563. package/node_modules/zod/v4/locales/he.d.ts +4 -0
  564. package/node_modules/zod/v4/locales/he.js +117 -0
  565. package/node_modules/zod/v4/locales/hu.cjs +143 -0
  566. package/node_modules/zod/v4/locales/hu.d.cts +4 -0
  567. package/node_modules/zod/v4/locales/hu.d.ts +4 -0
  568. package/node_modules/zod/v4/locales/hu.js +117 -0
  569. package/node_modules/zod/v4/locales/id.cjs +142 -0
  570. package/node_modules/zod/v4/locales/id.d.cts +4 -0
  571. package/node_modules/zod/v4/locales/id.d.ts +4 -0
  572. package/node_modules/zod/v4/locales/id.js +116 -0
  573. package/node_modules/zod/v4/locales/index.cjs +84 -0
  574. package/node_modules/zod/v4/locales/index.d.cts +39 -0
  575. package/node_modules/zod/v4/locales/index.d.ts +39 -0
  576. package/node_modules/zod/v4/locales/index.js +39 -0
  577. package/node_modules/zod/v4/locales/it.cjs +143 -0
  578. package/node_modules/zod/v4/locales/it.d.cts +4 -0
  579. package/node_modules/zod/v4/locales/it.d.ts +4 -0
  580. package/node_modules/zod/v4/locales/it.js +117 -0
  581. package/node_modules/zod/v4/locales/ja.cjs +141 -0
  582. package/node_modules/zod/v4/locales/ja.d.cts +4 -0
  583. package/node_modules/zod/v4/locales/ja.d.ts +4 -0
  584. package/node_modules/zod/v4/locales/ja.js +115 -0
  585. package/node_modules/zod/v4/locales/kh.cjs +143 -0
  586. package/node_modules/zod/v4/locales/kh.d.cts +4 -0
  587. package/node_modules/zod/v4/locales/kh.d.ts +4 -0
  588. package/node_modules/zod/v4/locales/kh.js +117 -0
  589. package/node_modules/zod/v4/locales/ko.cjs +147 -0
  590. package/node_modules/zod/v4/locales/ko.d.cts +4 -0
  591. package/node_modules/zod/v4/locales/ko.d.ts +4 -0
  592. package/node_modules/zod/v4/locales/ko.js +121 -0
  593. package/node_modules/zod/v4/locales/mk.cjs +144 -0
  594. package/node_modules/zod/v4/locales/mk.d.cts +4 -0
  595. package/node_modules/zod/v4/locales/mk.d.ts +4 -0
  596. package/node_modules/zod/v4/locales/mk.js +118 -0
  597. package/node_modules/zod/v4/locales/ms.cjs +142 -0
  598. package/node_modules/zod/v4/locales/ms.d.cts +4 -0
  599. package/node_modules/zod/v4/locales/ms.d.ts +4 -0
  600. package/node_modules/zod/v4/locales/ms.js +116 -0
  601. package/node_modules/zod/v4/locales/nl.cjs +143 -0
  602. package/node_modules/zod/v4/locales/nl.d.cts +4 -0
  603. package/node_modules/zod/v4/locales/nl.d.ts +4 -0
  604. package/node_modules/zod/v4/locales/nl.js +117 -0
  605. package/node_modules/zod/v4/locales/no.cjs +142 -0
  606. package/node_modules/zod/v4/locales/no.d.cts +4 -0
  607. package/node_modules/zod/v4/locales/no.d.ts +4 -0
  608. package/node_modules/zod/v4/locales/no.js +116 -0
  609. package/node_modules/zod/v4/locales/ota.cjs +143 -0
  610. package/node_modules/zod/v4/locales/ota.d.cts +4 -0
  611. package/node_modules/zod/v4/locales/ota.d.ts +4 -0
  612. package/node_modules/zod/v4/locales/ota.js +117 -0
  613. package/node_modules/zod/v4/locales/pl.cjs +143 -0
  614. package/node_modules/zod/v4/locales/pl.d.cts +4 -0
  615. package/node_modules/zod/v4/locales/pl.d.ts +4 -0
  616. package/node_modules/zod/v4/locales/pl.js +117 -0
  617. package/node_modules/zod/v4/locales/ps.cjs +148 -0
  618. package/node_modules/zod/v4/locales/ps.d.cts +4 -0
  619. package/node_modules/zod/v4/locales/ps.d.ts +4 -0
  620. package/node_modules/zod/v4/locales/ps.js +122 -0
  621. package/node_modules/zod/v4/locales/pt.cjs +142 -0
  622. package/node_modules/zod/v4/locales/pt.d.cts +4 -0
  623. package/node_modules/zod/v4/locales/pt.d.ts +4 -0
  624. package/node_modules/zod/v4/locales/pt.js +116 -0
  625. package/node_modules/zod/v4/locales/ru.cjs +190 -0
  626. package/node_modules/zod/v4/locales/ru.d.cts +4 -0
  627. package/node_modules/zod/v4/locales/ru.d.ts +4 -0
  628. package/node_modules/zod/v4/locales/ru.js +164 -0
  629. package/node_modules/zod/v4/locales/sl.cjs +143 -0
  630. package/node_modules/zod/v4/locales/sl.d.cts +4 -0
  631. package/node_modules/zod/v4/locales/sl.d.ts +4 -0
  632. package/node_modules/zod/v4/locales/sl.js +117 -0
  633. package/node_modules/zod/v4/locales/sv.cjs +144 -0
  634. package/node_modules/zod/v4/locales/sv.d.cts +4 -0
  635. package/node_modules/zod/v4/locales/sv.d.ts +4 -0
  636. package/node_modules/zod/v4/locales/sv.js +118 -0
  637. package/node_modules/zod/v4/locales/ta.cjs +143 -0
  638. package/node_modules/zod/v4/locales/ta.d.cts +4 -0
  639. package/node_modules/zod/v4/locales/ta.d.ts +4 -0
  640. package/node_modules/zod/v4/locales/ta.js +117 -0
  641. package/node_modules/zod/v4/locales/th.cjs +143 -0
  642. package/node_modules/zod/v4/locales/th.d.cts +4 -0
  643. package/node_modules/zod/v4/locales/th.d.ts +4 -0
  644. package/node_modules/zod/v4/locales/th.js +117 -0
  645. package/node_modules/zod/v4/locales/tr.cjs +143 -0
  646. package/node_modules/zod/v4/locales/tr.d.cts +5 -0
  647. package/node_modules/zod/v4/locales/tr.d.ts +5 -0
  648. package/node_modules/zod/v4/locales/tr.js +115 -0
  649. package/node_modules/zod/v4/locales/ua.cjs +143 -0
  650. package/node_modules/zod/v4/locales/ua.d.cts +4 -0
  651. package/node_modules/zod/v4/locales/ua.d.ts +4 -0
  652. package/node_modules/zod/v4/locales/ua.js +117 -0
  653. package/node_modules/zod/v4/locales/ur.cjs +143 -0
  654. package/node_modules/zod/v4/locales/ur.d.cts +4 -0
  655. package/node_modules/zod/v4/locales/ur.d.ts +4 -0
  656. package/node_modules/zod/v4/locales/ur.js +117 -0
  657. package/node_modules/zod/v4/locales/vi.cjs +142 -0
  658. package/node_modules/zod/v4/locales/vi.d.cts +4 -0
  659. package/node_modules/zod/v4/locales/vi.d.ts +4 -0
  660. package/node_modules/zod/v4/locales/vi.js +116 -0
  661. package/node_modules/zod/v4/locales/zh-CN.cjs +142 -0
  662. package/node_modules/zod/v4/locales/zh-CN.d.cts +4 -0
  663. package/node_modules/zod/v4/locales/zh-CN.d.ts +4 -0
  664. package/node_modules/zod/v4/locales/zh-CN.js +116 -0
  665. package/node_modules/zod/v4/locales/zh-TW.cjs +143 -0
  666. package/node_modules/zod/v4/locales/zh-TW.d.cts +4 -0
  667. package/node_modules/zod/v4/locales/zh-TW.d.ts +4 -0
  668. package/node_modules/zod/v4/locales/zh-TW.js +117 -0
  669. package/node_modules/zod/v4/mini/checks.cjs +34 -0
  670. package/node_modules/zod/v4/mini/checks.d.cts +1 -0
  671. package/node_modules/zod/v4/mini/checks.d.ts +1 -0
  672. package/node_modules/zod/v4/mini/checks.js +1 -0
  673. package/node_modules/zod/v4/mini/coerce.cjs +47 -0
  674. package/node_modules/zod/v4/mini/coerce.d.cts +7 -0
  675. package/node_modules/zod/v4/mini/coerce.d.ts +7 -0
  676. package/node_modules/zod/v4/mini/coerce.js +17 -0
  677. package/node_modules/zod/v4/mini/external.cjs +62 -0
  678. package/node_modules/zod/v4/mini/external.d.cts +11 -0
  679. package/node_modules/zod/v4/mini/external.d.ts +11 -0
  680. package/node_modules/zod/v4/mini/external.js +13 -0
  681. package/node_modules/zod/v4/mini/index.cjs +32 -0
  682. package/node_modules/zod/v4/mini/index.d.cts +3 -0
  683. package/node_modules/zod/v4/mini/index.d.ts +3 -0
  684. package/node_modules/zod/v4/mini/index.js +3 -0
  685. package/node_modules/zod/v4/mini/iso.cjs +60 -0
  686. package/node_modules/zod/v4/mini/iso.d.cts +22 -0
  687. package/node_modules/zod/v4/mini/iso.d.ts +22 -0
  688. package/node_modules/zod/v4/mini/iso.js +30 -0
  689. package/node_modules/zod/v4/mini/parse.cjs +8 -0
  690. package/node_modules/zod/v4/mini/parse.d.cts +1 -0
  691. package/node_modules/zod/v4/mini/parse.d.ts +1 -0
  692. package/node_modules/zod/v4/mini/parse.js +1 -0
  693. package/node_modules/zod/v4/mini/schemas.cjs +839 -0
  694. package/node_modules/zod/v4/mini/schemas.d.cts +356 -0
  695. package/node_modules/zod/v4/mini/schemas.d.ts +356 -0
  696. package/node_modules/zod/v4/mini/schemas.js +732 -0
  697. package/node_modules/zod/v4-mini/index.cjs +17 -0
  698. package/node_modules/zod/v4-mini/index.d.cts +1 -0
  699. package/node_modules/zod/v4-mini/index.d.ts +1 -0
  700. package/node_modules/zod/v4-mini/index.js +1 -0
  701. package/package.json +80 -0
  702. package/packages/analyzers/README.md +31 -0
  703. package/packages/analyzers/dist/generic.d.ts +6 -0
  704. package/packages/analyzers/dist/generic.js +13 -0
  705. package/packages/analyzers/dist/generic.js.map +1 -0
  706. package/packages/analyzers/dist/index.d.ts +26 -0
  707. package/packages/analyzers/dist/index.js +40 -0
  708. package/packages/analyzers/dist/index.js.map +1 -0
  709. package/packages/analyzers/dist/typescript-node.d.ts +6 -0
  710. package/packages/analyzers/dist/typescript-node.js +110 -0
  711. package/packages/analyzers/dist/typescript-node.js.map +1 -0
  712. package/packages/analyzers/package.json +47 -0
  713. package/packages/cli/README.md +27 -0
  714. package/packages/cli/dist/commands/audit.d.ts +2 -0
  715. package/packages/cli/dist/commands/audit.js +36 -0
  716. package/packages/cli/dist/commands/audit.js.map +1 -0
  717. package/packages/cli/dist/commands/discover.d.ts +2 -0
  718. package/packages/cli/dist/commands/discover.js +12 -0
  719. package/packages/cli/dist/commands/discover.js.map +1 -0
  720. package/packages/cli/dist/commands/dry-run.d.ts +2 -0
  721. package/packages/cli/dist/commands/dry-run.js +47 -0
  722. package/packages/cli/dist/commands/dry-run.js.map +1 -0
  723. package/packages/cli/dist/commands/init.d.ts +2 -0
  724. package/packages/cli/dist/commands/init.js +93 -0
  725. package/packages/cli/dist/commands/init.js.map +1 -0
  726. package/packages/cli/dist/commands/plan.d.ts +2 -0
  727. package/packages/cli/dist/commands/plan.js +12 -0
  728. package/packages/cli/dist/commands/plan.js.map +1 -0
  729. package/packages/cli/dist/commands/run.d.ts +2 -0
  730. package/packages/cli/dist/commands/run.js +23 -0
  731. package/packages/cli/dist/commands/run.js.map +1 -0
  732. package/packages/cli/dist/commands/score.d.ts +2 -0
  733. package/packages/cli/dist/commands/score.js +51 -0
  734. package/packages/cli/dist/commands/score.js.map +1 -0
  735. package/packages/cli/dist/commands/spec.d.ts +2 -0
  736. package/packages/cli/dist/commands/spec.js +12 -0
  737. package/packages/cli/dist/commands/spec.js.map +1 -0
  738. package/packages/cli/dist/commands/status.d.ts +2 -0
  739. package/packages/cli/dist/commands/status.js +48 -0
  740. package/packages/cli/dist/commands/status.js.map +1 -0
  741. package/packages/cli/dist/commands/validate.d.ts +2 -0
  742. package/packages/cli/dist/commands/validate.js +57 -0
  743. package/packages/cli/dist/commands/validate.js.map +1 -0
  744. package/packages/cli/dist/dispatcher.d.ts +1 -0
  745. package/packages/cli/dist/dispatcher.js +128 -0
  746. package/packages/cli/dist/dispatcher.js.map +1 -0
  747. package/packages/cli/dist/index.d.ts +3 -0
  748. package/packages/cli/dist/index.js +60 -0
  749. package/packages/cli/dist/index.js.map +1 -0
  750. package/packages/cli/package.json +58 -0
  751. package/packages/core/README.md +20 -0
  752. package/packages/core/dist/agent/adapter.d.ts +12 -0
  753. package/packages/core/dist/agent/adapter.js +32 -0
  754. package/packages/core/dist/agent/adapter.js.map +1 -0
  755. package/packages/core/dist/agent/context-gen.d.ts +7 -0
  756. package/packages/core/dist/agent/context-gen.js +12 -0
  757. package/packages/core/dist/agent/context-gen.js.map +1 -0
  758. package/packages/core/dist/common/logger.d.ts +17 -0
  759. package/packages/core/dist/common/logger.js +59 -0
  760. package/packages/core/dist/common/logger.js.map +1 -0
  761. package/packages/core/dist/common/paths.d.ts +22 -0
  762. package/packages/core/dist/common/paths.js +72 -0
  763. package/packages/core/dist/common/paths.js.map +1 -0
  764. package/packages/core/dist/common/preflight.d.ts +9 -0
  765. package/packages/core/dist/common/preflight.js +69 -0
  766. package/packages/core/dist/common/preflight.js.map +1 -0
  767. package/packages/core/dist/common/subprocess.d.ts +18 -0
  768. package/packages/core/dist/common/subprocess.js +79 -0
  769. package/packages/core/dist/common/subprocess.js.map +1 -0
  770. package/packages/core/dist/common/types.d.ts +77 -0
  771. package/packages/core/dist/common/types.js +2 -0
  772. package/packages/core/dist/common/types.js.map +1 -0
  773. package/packages/core/dist/config/manager.d.ts +31 -0
  774. package/packages/core/dist/config/manager.js +97 -0
  775. package/packages/core/dist/config/manager.js.map +1 -0
  776. package/packages/core/dist/config/schema.d.ts +210 -0
  777. package/packages/core/dist/config/schema.js +41 -0
  778. package/packages/core/dist/config/schema.js.map +1 -0
  779. package/packages/core/dist/gates/analyzer-gate.d.ts +6 -0
  780. package/packages/core/dist/gates/analyzer-gate.js +37 -0
  781. package/packages/core/dist/gates/analyzer-gate.js.map +1 -0
  782. package/packages/core/dist/gates/dependency.d.ts +5 -0
  783. package/packages/core/dist/gates/dependency.js +71 -0
  784. package/packages/core/dist/gates/dependency.js.map +1 -0
  785. package/packages/core/dist/gates/engine.d.ts +26 -0
  786. package/packages/core/dist/gates/engine.js +68 -0
  787. package/packages/core/dist/gates/engine.js.map +1 -0
  788. package/packages/core/dist/gates/execution.d.ts +9 -0
  789. package/packages/core/dist/gates/execution.js +88 -0
  790. package/packages/core/dist/gates/execution.js.map +1 -0
  791. package/packages/core/dist/gates/generic.d.ts +21 -0
  792. package/packages/core/dist/gates/generic.js +204 -0
  793. package/packages/core/dist/gates/generic.js.map +1 -0
  794. package/packages/core/dist/gates/import-resolver.d.ts +6 -0
  795. package/packages/core/dist/gates/import-resolver.js +78 -0
  796. package/packages/core/dist/gates/import-resolver.js.map +1 -0
  797. package/packages/core/dist/index.d.ts +23 -0
  798. package/packages/core/dist/index.js +30 -0
  799. package/packages/core/dist/index.js.map +1 -0
  800. package/packages/core/dist/locks/harness-guard.d.ts +32 -0
  801. package/packages/core/dist/locks/harness-guard.js +121 -0
  802. package/packages/core/dist/locks/harness-guard.js.map +1 -0
  803. package/packages/core/dist/locks/sprint-lock.d.ts +39 -0
  804. package/packages/core/dist/locks/sprint-lock.js +143 -0
  805. package/packages/core/dist/locks/sprint-lock.js.map +1 -0
  806. package/packages/core/dist/orchestrator.d.ts +8 -0
  807. package/packages/core/dist/orchestrator.js +160 -0
  808. package/packages/core/dist/orchestrator.js.map +1 -0
  809. package/packages/core/dist/security/policy.d.ts +10 -0
  810. package/packages/core/dist/security/policy.js +32 -0
  811. package/packages/core/dist/security/policy.js.map +1 -0
  812. package/packages/core/dist/security/redactor.d.ts +5 -0
  813. package/packages/core/dist/security/redactor.js +40 -0
  814. package/packages/core/dist/security/redactor.js.map +1 -0
  815. package/packages/core/dist/sprint/context.d.ts +27 -0
  816. package/packages/core/dist/sprint/context.js +119 -0
  817. package/packages/core/dist/sprint/context.js.map +1 -0
  818. package/packages/core/dist/sprint/scorer.d.ts +20 -0
  819. package/packages/core/dist/sprint/scorer.js +109 -0
  820. package/packages/core/dist/sprint/scorer.js.map +1 -0
  821. package/packages/core/dist/sprint/status.d.ts +20 -0
  822. package/packages/core/dist/sprint/status.js +81 -0
  823. package/packages/core/dist/sprint/status.js.map +1 -0
  824. package/packages/core/dist/sprint/validator.d.ts +17 -0
  825. package/packages/core/dist/sprint/validator.js +239 -0
  826. package/packages/core/dist/sprint/validator.js.map +1 -0
  827. package/packages/core/package.json +53 -0
  828. package/packages/prompts/README.md +30 -0
  829. package/packages/prompts/dist/index.d.ts +21 -0
  830. package/packages/prompts/dist/index.js +63 -0
  831. package/packages/prompts/dist/index.js.map +1 -0
  832. package/packages/prompts/package.json +46 -0
  833. package/schemas/config.schema.json +62 -0
  834. package/schemas/context.schema.json +36 -0
  835. package/schemas/index.schema.json +29 -0
  836. package/schemas/sprint.schema.json +109 -0
  837. package/templates/PRD-TEMPLATE.md +36 -0
  838. package/templates/SPEC-TEMPLATE.md +59 -0
  839. package/templates/SPRINT-TEMPLATE.json +62 -0
  840. package/templates/config.example.json +30 -0
package/AGENTS.md ADDED
@@ -0,0 +1,129 @@
1
+ # AGENTS.md
2
+
3
+ > Manual for AI agents operating inside a Hardness-managed repository.
4
+ > This document is the single source of truth for how an agent must behave
5
+ > when invoked by the Hardness orchestrator. English only — by design.
6
+
7
+ ## Your role
8
+
9
+ You are the **executor** inside the Hardness loop. The orchestrator will:
10
+
11
+ 1. Hand you a `context.json` file (path substituted into `{context_file}`).
12
+ 2. Wait for you to exit.
13
+ 3. Re-verify the sprint contract (SHA-256 lock).
14
+ 4. Run mechanical **gates** on the codebase.
15
+ 5. Advance the feature only if every gate is green.
16
+
17
+ You are **not** in charge of:
18
+ - Deciding what to work on next.
19
+ - Marking features as `done`.
20
+ - Mutating sprint JSONs or anything under `.hardness/`.
21
+ - Skipping gates or declaring success on your own.
22
+
23
+ You **are** in charge of:
24
+ - Reading `context.json` and implementing the current feature.
25
+ - Editing **only** the files listed in `feature.files`.
26
+ - Following `feature.hints` and `feature.acceptanceCriteria`.
27
+ - Leaving the codebase in a state where gates will pass.
28
+
29
+ ## The contract you must respect
30
+
31
+ ### `feature.files` is an allowlist
32
+
33
+ You may **only** create or modify files listed in `feature.files` for the current feature. Touching anything else is a violation. The import-resolver and dependency gates will catch undeclared side effects.
34
+
35
+ ### `.hardness/` is read-only to you
36
+
37
+ Everything under `.hardness/` — including `config.json`, `current.txt`, sprint JSONs, `context.json`, logs and prompts — is **protected by harness-guard**. Do not write, rename, move or delete anything there. The orchestrator owns this folder. If you attempt to mutate it, the run will fail and your changes will be reverted.
38
+
39
+ ### Sprint JSONs are immutable during a run
40
+
41
+ The sprint contract is SHA-256 locked before the orchestrator calls you and re-verified after you return. If you modify the sprint JSON (fields, status, order, anything), the sprint-lock gate will fail and the feature status will be rolled back to `pending`. There is no legitimate reason for you to edit a sprint JSON.
42
+
43
+ ### Sensitive commands are policy-gated
44
+
45
+ `security.blockedPatterns` and `security.allowlist` in `config.json` are enforced by the orchestrator's subprocess layer, not by you. Don't try to work around them. If a command you need is blocked, surface it in your output and stop — do not attempt to shell out to alternatives.
46
+
47
+ ## Reading `context.json`
48
+
49
+ The orchestrator generates `context.json` for the current feature. It contains, at minimum:
50
+
51
+ - `feature` — the full feature object (`id`, `title`, `description`, `specLines`, `files`, `acceptanceCriteria`, `hints`, `verification`).
52
+ - `sprint` — metadata about the active sprint.
53
+ - `specExcerpt` — the lines of `SPEC.md` referenced by `feature.specLines`.
54
+ - `rules` — project-wide rules compiled from `prompts/`.
55
+ - `existingFiles` — snapshots of files in `feature.files` that already exist (so you can edit in place rather than recreate).
56
+
57
+ Read it carefully. Your `agentCommand` receives the **path** to this file via `{context_file}`. A typical invocation looks like:
58
+
59
+ ```
60
+ claude -p "$(cat {context_file})"
61
+ ```
62
+
63
+ ## Gates you will be measured against
64
+
65
+ The orchestrator runs these gates after you return. You don't invoke them — but you must produce code that passes them.
66
+
67
+ | Gate | What it checks |
68
+ |---|---|
69
+ | `typecheck` | `tsc --noEmit` succeeds (when `feature.verification.typecheck` is true) |
70
+ | `smoke` | The configured smoke command exits 0 (when `feature.verification.smoke` is set) |
71
+ | `grep` | Required patterns from acceptance criteria are present in the edited files |
72
+ | `anti-empty` | Edited files are not empty / not just comments |
73
+ | `paths` | No absolute paths, no path traversal outside the project |
74
+ | `unicode` | No hidden Unicode (zero-width, BOM, RTL overrides) sneaked into source |
75
+ | `dependency` | Declared imports resolve to `package.json` dependencies |
76
+ | `import-resolver` | Imports resolve on disk (TypeScript/Node profile) |
77
+
78
+ If any gate is red, the feature stays `in-progress` and you will be called again with the same context. Don't try to "make the gate pass" by editing the contract or the gate definitions — those are locked too.
79
+
80
+ ## What "done" means
81
+
82
+ A feature is `done` **only** when:
83
+
84
+ 1. All gates the feature opted into are green.
85
+ 2. You did not touch any file outside `feature.files`.
86
+ 3. The sprint-lock is intact.
87
+
88
+ Declaring "I'm done" in your output means nothing to Hardness. Only the gates' exit codes matter. If you genuinely cannot complete the feature, leave the code in the best state you can and exit non-zero — the orchestrator will surface the failure to the human.
89
+
90
+ ## Output expectations
91
+
92
+ - Be terse. The orchestrator does not parse your prose; it reads the filesystem and runs gates.
93
+ - Do not emit JSON, status objects, or "I finished feature X" markers. They are ignored.
94
+ - If you hit a blocker that requires a human (e.g. a blocked command that is genuinely needed), print a single clear sentence explaining the blocker and exit non-zero.
95
+ - Do not print secrets. Logs are run through a redactor, but don't rely on that — never log tokens, keys, or environment values.
96
+
97
+ ## Failure modes and how to recover
98
+
99
+ | Situation | What to do |
100
+ |---|---|
101
+ | Gate `typecheck` fails | Fix the TypeScript errors in `feature.files` only. Re-run will happen on next `hardness run`. |
102
+ | Gate `smoke` fails | Read the smoke command output, fix the failing test/code, exit. Do not modify the smoke command itself. |
103
+ | `sprint-lock violation` | You edited the sprint JSON. Restore it from git and never do that again. |
104
+ | `harness-guard failure` | You wrote under `.hardness/`. Restore from git. Never write there. |
105
+ | `command blocked by policy` | The command you tried is in `security.blockedPatterns`. Surface it to the human and stop. |
106
+ | `context.json` references files you don't think exist | Check `existingFiles` in the context — they may have been pre-seeded. Do not recreate from scratch if a snapshot is present. |
107
+
108
+ ## Anti-patterns (do not do these)
109
+
110
+ - ❌ Editing `.hardness/sprints/*.json` to change `status`, `acceptanceCriteria`, or `files`.
111
+ - ❌ Editing `.hardness/config.json` to widen `security.allowlist` or change `agentCommand`.
112
+ - ❌ Creating files outside `feature.files` "to help" — the import-resolver gate will flag them.
113
+ - ❌ Committing on behalf of the orchestrator. Hardness does not commit; you should not either unless the human explicitly asks.
114
+ - ❌ "Pre-validating" by running `tsc` yourself and then massaging errors into warnings. The gates are authoritative.
115
+ - ❌ Leaving `console.log` / `print` / `println!` debugging statements. Stack-specific analyzers flag these in audit.
116
+ - ❌ Renaming or deleting files in `feature.files` because you "refactored". If a file is listed, edit it in place.
117
+
118
+ ## Quick checklist before you exit
119
+
120
+ - [ ] I edited only files in `feature.files`.
121
+ - [ ] I did not touch anything under `.hardness/`.
122
+ - [ ] I did not edit any sprint JSON.
123
+ - [ ] My changes satisfy every item in `feature.acceptanceCriteria`.
124
+ - [ ] `npm run typecheck` (or the project's equivalent) passes locally if `verification.typecheck` is true.
125
+ - [ ] `feature.verification.smoke.command` passes locally if a smoke is configured.
126
+ - [ ] I removed all debugging output (`console.log`, `print`, etc.).
127
+ - [ ] I left no hidden Unicode or absolute paths in source.
128
+
129
+ If you can honestly tick every box, exit 0. The gates will confirm.
package/CHANGELOG.md ADDED
@@ -0,0 +1,27 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [1.0.0] — 2026-07-04
9
+
10
+ ### Added
11
+ - Initial public release of Hardness — Universal Agentic Development Harness.
12
+ - **CLI** (`hardness`): `init`, `validate`, `score`, `status`, `run`, `audit`, `dry-run`, plus stubs for `discover`, `spec`, `plan` (M4).
13
+ - **Core engine**: orchestrator, gate engine (typecheck, smoke, grep, anti-empty, unicode, paths, dependency, import-resolver), sprint validator, scorer, context generator, status manager.
14
+ - **Locks**: sprint-lock (immutable contract enforcement via SHA-256) and harness-guard (protects `.hardness/` internals).
15
+ - **Security**: command policy (allowlist + blocklist) and log redactor (secrets masking).
16
+ - **Analyzers**: TypeScript/Node analyzer (undeclared deps, console.log) and generic analyzer (fallback). Extensible registry.
17
+ - **Prompts**: role-based template renderer (implementer, reviewer, auditor).
18
+ - **Config**: typed config via Zod schema with agent presets (`claude-code`, `codex`, `manual`).
19
+ - **Templates**: PRD, SPEC, SPRINT, and config.example.
20
+ - **Schemas**: JSON Schema (draft-07) for config, sprint, sprint-index, and agent context.
21
+ - **Docs**: ARCHITECTURE, OPERATING-GUIDE, COMPATIBILITY, CONTRIBUTING.
22
+ - **CI**: GitHub Actions matrix (ubuntu/windows/macos × Node 20/22).
23
+
24
+ ### Philosophy
25
+ - Hardness trusts contracts, policies, gates, locks, evidence and audit — never the model.
26
+ - Tool/model/IDE agnostic: bring your own agent via `agentCommand`.
27
+ - Cross-platform: Windows, macOS, Linux.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 cmt-t
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,269 @@
1
+ # Hardness
2
+
3
+ [English](./README.md) | [Português](./docs/translations/README.pt-BR.md) | [Español](./docs/translations/README.es.md) | [Français](./docs/translations/README.fr.md) | [Deutsch](./docs/translations/README.de.md) | [Русский](./docs/translations/README.ru.md) | [中文](./docs/translations/README.zh.md) | [日本語](./docs/translations/README.ja.md) | [한국어](./docs/translations/README.ko.md)
4
+
5
+ > **Universal Agentic Development Harness** — give your AI agent a contract, not a blank check.
6
+
7
+ [![CI](https://github.com/cmt-t/HardNess/actions/workflows/ci.yml/badge.svg)](https://github.com/cmt-t/HardNess/actions/workflows/ci.yml)
8
+ [![npm version](https://img.shields.io/npm/v/hardness.svg)](https://www.npmjs.com/package/hardness)
9
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
10
+ [![Node](https://img.shields.io/badge/node-%3E%3D20-brightgreen)](https://nodejs.org)
11
+ [![TypeScript](https://img.shields.io/badge/TypeScript-5.4-blue)](https://www.typescriptlang.org/)
12
+
13
+ ---
14
+
15
+ ## What is Hardness?
16
+
17
+ Hardness is a **thin governance layer** that sits between you and your AI coding agent. Instead of letting an autonomous agent edit your codebase freely and hoping for the best, Hardness splits the work into small **sprints** and **features**, hands each feature to the agent with a precise **context**, and then **mechanically verifies** the result before moving on.
18
+
19
+ It doesn't trust what the agent *claims* it did — it trusts what the **gates** can prove.
20
+
21
+ ```
22
+ you ──▶ Hardness ──▶ agent ──▶ gates ──▶ next feature
23
+ ▲ │
24
+ └── retry ────┘ (if gates fail)
25
+ ```
26
+
27
+ ## Why would I want this?
28
+
29
+ If you've ever let Claude Code, Codex or another agent run for an hour and come back to a half-broken codebase that "looked done", Hardness is for you.
30
+
31
+ - **No more "it looks finished"** — gates run typecheck, smoke tests, import resolution, dependency checks and more. If they're red, the feature stays `in-progress`.
32
+ - **No silent contract changes** — every sprint JSON is locked with SHA-256. If the agent tampers with the contract, the orchestrator reverts it.
33
+ - **Bring your own agent** — point `agentCommand` at Claude Code, Codex, a manual workflow, or your own script. Hardness is agent-, model-, tool- and IDE-agnostic.
34
+ - **Cross-platform** — Windows, macOS and Linux, all tested in CI.
35
+ - **Auditable** — every run produces evidence. A final `audit` command runs static analysis per stack profile.
36
+
37
+ ## Installation
38
+
39
+ ```bash
40
+ # Run instantly — no install required
41
+ npx hardness@latest init --preset manual
42
+
43
+ # Or install globally
44
+ npm install -g hardness
45
+ hardness init --preset manual
46
+ ```
47
+
48
+ > Requires Node.js 20 or newer.
49
+
50
+ ## Quick start
51
+
52
+ ```bash
53
+ # 1. Initialize Hardness in your project
54
+ npx hardness@latest init --preset manual
55
+
56
+ # 2. Write your sprints under .hardness/sprints/
57
+ # 3. Point .hardness/current.txt to the first sprint
58
+
59
+ npx hardness validate # check sprint structure
60
+ npx hardness score # quality score 0–10
61
+ npx hardness status # where am I?
62
+ npx hardness dry-run # simulate without invoking the agent
63
+ npx hardness run # real loop: agent → gates → advance
64
+ npx hardness audit # final static-analysis report
65
+ ```
66
+
67
+ ## The 6-phase pipeline
68
+
69
+ ```
70
+ [1. Discover] → [2. Spec] → [3. Plan] → [4. Validate] → [5. Run] → [6. Audit]
71
+ ```
72
+
73
+ | Phase | Command | What happens |
74
+ |---|---|---|
75
+ | Discover | `hardness discover` | Interview → `PRD.md` *(planned, M4)* |
76
+ | Spec | `hardness spec` | `PRD.md` → `SPEC.md` *(planned, M4)* |
77
+ | Plan | `hardness plan` | `SPEC.md` → sprint JSON files *(planned, M4)* |
78
+ | Validate | `hardness validate` | Mechanical structural validation of sprints |
79
+ | Run | `hardness run` | Orchestrator loop: agent → gates → advance |
80
+ | Audit | `hardness audit` | Static analysis per stack profile, Markdown + JSON report |
81
+
82
+ Today `validate`, `score`, `status`, `run`, `audit` and `dry-run` are fully implemented. `discover`, `spec`, `plan` are stubs landing in M4 — for now you can write `SPEC.md` and sprint JSONs by hand using the templates in `templates/`.
83
+
84
+ ## Commands
85
+
86
+ Running `hardness` with **no arguments** triggers an intelligent dispatcher:
87
+
88
+ 1. **Hardness already initialized** (`.hardness/config.json` exists) — shows current sprint, progress and suggested next step (`status`, `run`, `dry-run`...).
89
+ 2. **Existing project detected** (a `package.json`, `go.mod`, `Cargo.toml`, `pyproject.toml` or source files are present) — presents an **adequacy plan**: detected stack, recommended `stackProfile`, and the sequence `init → validate → run → audit`.
90
+ 3. **Empty / new directory** — launches the **PRD interview** (`discover`), an interactive questionnaire that captures business rules and produces `PRD.md`, then proceeds automatically to `spec` (PRD→SPEC), `plan` (SPEC→sprints), `validate`, `run` and `audit`.
91
+
92
+ > The PRD interview (`discover`) and automated `spec`/`plan` are landing in M4. Today the dispatcher prints a guided manual path for the empty-directory case.
93
+
94
+ | Command | Description |
95
+ |---|---|
96
+ | `hardness` *(no args)* | Dispatcher: detect project state and suggest next steps |
97
+ | `hardness init --preset <name>` | Create the `.hardness/` structure with config, sprints/, logs/, prompts/ |
98
+ | `hardness validate` | Validate structural consistency of all sprint JSONs (naming, fields, paths, placeholders, gates) |
99
+ | `hardness score` | Compute a 0–10 quality score; use `--block` to fail below `scoring.minScore` |
100
+ | `hardness status` | Show active sprint, current feature and progress |
101
+ | `hardness dry-run` | Simulate the orchestrator without invoking the agent or touching files |
102
+ | `hardness run` | Execute the real loop: agent → gates → advance |
103
+ | `hardness audit` | Run static analyzers for the configured `stackProfile`; `--json` for JSON output |
104
+
105
+ ## Configuring your agent
106
+
107
+ Hardness is agent-agnostic. You tell it how to invoke your agent via a single `agentCommand` template in `.hardness/config.json`:
108
+
109
+ ```json
110
+ {
111
+ "agent": {
112
+ "agentCommand": "claude -p \"$(cat {context_file})\"",
113
+ "thinkingLevel": "high",
114
+ "timeout": 1800,
115
+ "retries": 3
116
+ }
117
+ }
118
+ ```
119
+
120
+ ### Placeholders available in `agentCommand`
121
+
122
+ | Placeholder | Meaning |
123
+ |---|---|
124
+ | `{context_file}` | Path to the generated `context.json` |
125
+ | `{cwd}` | Project root |
126
+ | `{timeout}` | Timeout in seconds |
127
+
128
+ ### Built-in presets
129
+
130
+ | Preset | Generated command |
131
+ |---|---|
132
+ | `claude-code` | `claude -p "$(cat {context_file})"` |
133
+ | `codex` | `codex exec "$(cat {context_file})"` |
134
+ | `manual` | Pauses and waits for human input |
135
+
136
+ To use a custom agent, just edit `agentCommand` directly.
137
+
138
+ ## How a feature looks
139
+
140
+ Sprints are JSON files under `.hardness/sprints/`. Each one lists small, verifiable **features**:
141
+
142
+ ```json
143
+ {
144
+ "id": "feat-001",
145
+ "title": "Initialize monorepo",
146
+ "description": "Create root package.json, tsconfig and packages structure.",
147
+ "specLines": "1-5",
148
+ "status": "pending",
149
+ "files": ["package.json", "tsconfig.base.json"],
150
+ "acceptanceCriteria": [
151
+ "npm install runs without errors",
152
+ "npm run build compiles all packages"
153
+ ],
154
+ "hints": ["Use npm workspaces", "Enable strict mode in tsconfig"],
155
+ "verification": {
156
+ "typecheck": true,
157
+ "smoke": { "command": "npm test", "executedBy": "workflow", "timeoutSeconds": 60 }
158
+ }
159
+ }
160
+ ```
161
+
162
+ | Field | Why it matters |
163
+ |---|---|
164
+ | `specLines` | Lines in `SPEC.md` this feature implements (e.g. `"10-25"`, `"1,3,5-7"`) |
165
+ | `files` | The **only** files the agent is allowed to create or modify |
166
+ | `acceptanceCriteria` | What "done" means in human terms |
167
+ | `hints` | Guidance the agent receives |
168
+ | `verification` | Which mechanical gates apply to this feature |
169
+
170
+ ## How the orchestrator works
171
+
172
+ ```
173
+ .hardness/current.txt
174
+
175
+
176
+ orchestrator
177
+ ├── reads the active sprint JSON
178
+ ├── verifies sprint-lock (immutability of the contract)
179
+ ├── resolves next feature (in-progress > pending)
180
+ ├── writes context.json (spec excerpt + rules + existing files)
181
+ ├── invokes agentCommand (configurable, agent-agnostic)
182
+ ├── re-verifies sprint-lock (agent cannot mutate the contract)
183
+ ├── runs gates (typecheck / smoke / grep / paths / unicode / dependency)
184
+ └── advances: done + gates green → next feature; gates red → keep in-progress
185
+ ```
186
+
187
+ When all features in a sprint are `done`, the sprint closes and `current.txt` advances.
188
+
189
+ ## When a gate fails
190
+
191
+ 1. Read the gate output: `✗ [Gate: <name>] <message>`.
192
+ 2. Fix the underlying issue in your code (not in the sprint contract).
193
+ 3. Re-run `hardness run` — the orchestrator will retry the feature.
194
+
195
+ If the agent tampered with the sprint JSON, the sprint-lock will fail and the orchestrator will revert the feature status to `pending`.
196
+
197
+ ## Stack profiles (v1.0)
198
+
199
+ | Profile | Analyzers | Stack-specific gates |
200
+ |---|---|---|
201
+ | `typescript-node` | TypeScriptNode + Generic | typecheck, dependency, import-resolver |
202
+ | `generic` | Generic | none |
203
+
204
+ > Python, Go and Rust are planned as future extensions via the analyzer registry.
205
+
206
+ ## Architecture
207
+
208
+ ```
209
+ hardness/
210
+ ├── packages/
211
+ │ ├── cli/ # NPX entry point + subcommands
212
+ │ ├── core/ # orchestrator, gates, locks, config, security
213
+ │ ├── analyzers/ # static-analysis registry per stack
214
+ │ └── prompts/ # role-based prompt templates
215
+ ├── templates/ # PRD, SPEC, SPRINT, config.example
216
+ ├── schemas/ # JSON Schemas (draft-07)
217
+ └── docs/ # ARCHITECTURE, OPERATING-GUIDE, COMPATIBILITY, CONTRIBUTING
218
+ ```
219
+
220
+ | Package | What it does |
221
+ |---|---|
222
+ | [`@hardness/cli`](packages/cli) | Entry point & subcommands |
223
+ | [`@hardness/core`](packages/core) | Orchestrator, gates, locks, config, security |
224
+ | [`@hardness/analyzers`](packages/analyzers) | Static analyzers per stack profile |
225
+ | [`@hardness/prompts`](packages/prompts) | Role-based prompt templates & renderer |
226
+
227
+ ## Compatibility
228
+
229
+ - **OS** — Windows 10+, macOS 12+, Linux (Ubuntu 20.04+); all tested in CI.
230
+ - **Node.js** — minimum 20, recommended 22 (ESM).
231
+ - **Agents** — bring your own via `agentCommand` (Claude Code, Codex, manual, custom).
232
+ - **Models** — any LLM/provider; Hardness is model-agnostic.
233
+
234
+ See [`docs/COMPATIBILITY.md`](docs/COMPATIBILITY.md) for details.
235
+
236
+ ## Philosophy
237
+
238
+ > Hardness trusts contracts, not models. The intelligence suggests, edits, explains and declares intent. Gates validate. Policy approves sensitive commands. Mechanical evidence closes features. The audit engine audits.
239
+
240
+ ## Install from source
241
+
242
+ ```bash
243
+ git clone https://github.com/cmt-t/HardNess.git
244
+ cd HardNess
245
+ npm install
246
+ npm run build
247
+ npm test
248
+ ```
249
+
250
+ ## Documentation
251
+
252
+ - [Operating Guide](docs/OPERATING-GUIDE.md)
253
+ - [Architecture](docs/ARCHITECTURE.md)
254
+ - [Compatibility](docs/COMPATIBILITY.md)
255
+ - [Contributing](docs/CONTRIBUTING.md)
256
+ - [Changelog](CHANGELOG.md)
257
+ - [Translations](docs/translations/)
258
+
259
+ ## Extending
260
+
261
+ - **Add an analyzer** — implement `Analyzer`, call `globalAnalyzerRegistry.register(...)`.
262
+ - **Add a gate** — implement `Gate`, register in `gates/engine.ts`.
263
+ - **Add an agent preset** — add a `case` to `getPresetConfig()` in `config/manager.ts`.
264
+
265
+ See [`CONTRIBUTING.md`](docs/CONTRIBUTING.md) for details.
266
+
267
+ ## License
268
+
269
+ [MIT](LICENSE) © 2026 cmt-t
@@ -0,0 +1,31 @@
1
+ # @hardness/analyzers
2
+
3
+ Static-analysis registry for [Hardness](https://github.com/cmt-t/HardNess), organized per stack profile.
4
+
5
+ ## Built-in analyzers
6
+
7
+ - `typescript-node` — detects undeclared dependencies and discourages `console.log`
8
+ - `generic` — fallback analyzer (todos, generic secret patterns, duplication)
9
+
10
+ ## Add a custom analyzer
11
+
12
+ ```typescript
13
+ import { globalAnalyzerRegistry, Analyzer } from '@hardness/analyzers';
14
+
15
+ const myAnalyzer: Analyzer = {
16
+ name: 'my-stack',
17
+ supportedProfiles: ['my-stack'],
18
+ async analyze(projectRoot) {
19
+ // ... return Diagnostic[]
20
+ return [];
21
+ },
22
+ };
23
+
24
+ globalAnalyzerRegistry.register(myAnalyzer);
25
+ ```
26
+
27
+ See the [main repo](https://github.com/cmt-t/HardNess#readme) for full documentation.
28
+
29
+ ## License
30
+
31
+ MIT © 2026 cmt-t
@@ -0,0 +1,6 @@
1
+ import { Analyzer } from './index.js';
2
+ /**
3
+ * Generic analyzer for any project type.
4
+ * Runs on all stacks.
5
+ */
6
+ export declare const GenericAnalyzer: Analyzer;
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Generic analyzer for any project type.
3
+ * Runs on all stacks.
4
+ */
5
+ export const GenericAnalyzer = {
6
+ name: 'generic',
7
+ supportedProfiles: ['*'],
8
+ async analyze() {
9
+ // Returns empty by default, serving as a stub/base for other generic stacks
10
+ return [];
11
+ }
12
+ };
13
+ //# sourceMappingURL=generic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generic.js","sourceRoot":"","sources":["../src/generic.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAa;IACvC,IAAI,EAAE,SAAS;IACf,iBAAiB,EAAE,CAAC,GAAG,CAAC;IACxB,KAAK,CAAC,OAAO;QACX,4EAA4E;QAC5E,OAAO,EAAE,CAAC;IACZ,CAAC;CACF,CAAC"}
@@ -0,0 +1,26 @@
1
+ export interface Diagnostic {
2
+ file: string;
3
+ line?: number;
4
+ ruleId: string;
5
+ message: string;
6
+ severity: 'error' | 'warning';
7
+ }
8
+ export interface Analyzer {
9
+ name: string;
10
+ supportedProfiles: string[];
11
+ analyze(projectRoot: string): Promise<Diagnostic[]>;
12
+ }
13
+ /**
14
+ * Registry of available static code analyzers in the system.
15
+ */
16
+ export declare class AnalyzerRegistry {
17
+ private analyzers;
18
+ register(analyzer: Analyzer): void;
19
+ getForProfile(profile: string): Analyzer[];
20
+ runAll(profile: string, projectRoot: string): Promise<Diagnostic[]>;
21
+ }
22
+ export declare const globalAnalyzerRegistry: AnalyzerRegistry;
23
+ export declare const name = "@hardness/analyzers";
24
+ import { TypeScriptNodeAnalyzer } from './typescript-node.js';
25
+ import { GenericAnalyzer } from './generic.js';
26
+ export { TypeScriptNodeAnalyzer, GenericAnalyzer };
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Registry of available static code analyzers in the system.
3
+ */
4
+ export class AnalyzerRegistry {
5
+ analyzers = [];
6
+ register(analyzer) {
7
+ this.analyzers.push(analyzer);
8
+ }
9
+ getForProfile(profile) {
10
+ return this.analyzers.filter(a => a.supportedProfiles.includes(profile) || a.supportedProfiles.includes('*'));
11
+ }
12
+ async runAll(profile, projectRoot) {
13
+ const matched = this.getForProfile(profile);
14
+ const diagnostics = [];
15
+ for (const analyzer of matched) {
16
+ try {
17
+ const res = await analyzer.analyze(projectRoot);
18
+ diagnostics.push(...res);
19
+ }
20
+ catch (err) {
21
+ diagnostics.push({
22
+ file: 'project',
23
+ ruleId: 'analyzer-failure',
24
+ message: `Analyzer "${analyzer.name}" failed: ${err.message}`,
25
+ severity: 'error'
26
+ });
27
+ }
28
+ }
29
+ return diagnostics;
30
+ }
31
+ }
32
+ export const globalAnalyzerRegistry = new AnalyzerRegistry();
33
+ export const name = '@hardness/analyzers';
34
+ // Import and register default analyzers
35
+ import { TypeScriptNodeAnalyzer } from './typescript-node.js';
36
+ import { GenericAnalyzer } from './generic.js';
37
+ globalAnalyzerRegistry.register(TypeScriptNodeAnalyzer);
38
+ globalAnalyzerRegistry.register(GenericAnalyzer);
39
+ export { TypeScriptNodeAnalyzer, GenericAnalyzer };
40
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAcA;;GAEG;AACH,MAAM,OAAO,gBAAgB;IACnB,SAAS,GAAe,EAAE,CAAC;IAEnC,QAAQ,CAAC,QAAkB;QACzB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IAED,aAAa,CAAC,OAAe;QAC3B,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;IAChH,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAAe,EAAE,WAAmB;QAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC5C,MAAM,WAAW,GAAiB,EAAE,CAAC;QACrC,KAAK,MAAM,QAAQ,IAAI,OAAO,EAAE,CAAC;YAC/B,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;gBAChD,WAAW,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;YAC3B,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,WAAW,CAAC,IAAI,CAAC;oBACf,IAAI,EAAE,SAAS;oBACf,MAAM,EAAE,kBAAkB;oBAC1B,OAAO,EAAE,aAAa,QAAQ,CAAC,IAAI,aAAc,GAAa,CAAC,OAAO,EAAE;oBACxE,QAAQ,EAAE,OAAO;iBAClB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;CACF;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,gBAAgB,EAAE,CAAC;AAC7D,MAAM,CAAC,MAAM,IAAI,GAAG,qBAAqB,CAAC;AAE1C,wCAAwC;AACxC,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,sBAAsB,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC;AACxD,sBAAsB,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;AAEjD,OAAO,EAAE,sBAAsB,EAAE,eAAe,EAAE,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { Analyzer } from './index.js';
2
+ /**
3
+ * Static analyzer for TypeScript and Node.js projects.
4
+ * Checks for undeclared dependencies in package.json and discourages console.log without a logger.
5
+ */
6
+ export declare const TypeScriptNodeAnalyzer: Analyzer;