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.
- package/AGENTS.md +129 -0
- package/CHANGELOG.md +27 -0
- package/LICENSE +21 -0
- package/README.md +269 -0
- package/node_modules/@hardness/analyzers/README.md +31 -0
- package/node_modules/@hardness/analyzers/dist/generic.d.ts +6 -0
- package/node_modules/@hardness/analyzers/dist/generic.js +13 -0
- package/node_modules/@hardness/analyzers/dist/generic.js.map +1 -0
- package/node_modules/@hardness/analyzers/dist/index.d.ts +26 -0
- package/node_modules/@hardness/analyzers/dist/index.js +40 -0
- package/node_modules/@hardness/analyzers/dist/index.js.map +1 -0
- package/node_modules/@hardness/analyzers/dist/typescript-node.d.ts +6 -0
- package/node_modules/@hardness/analyzers/dist/typescript-node.js +110 -0
- package/node_modules/@hardness/analyzers/dist/typescript-node.js.map +1 -0
- package/node_modules/@hardness/analyzers/package.json +47 -0
- package/node_modules/@hardness/core/README.md +20 -0
- package/node_modules/@hardness/core/dist/agent/adapter.d.ts +12 -0
- package/node_modules/@hardness/core/dist/agent/adapter.js +32 -0
- package/node_modules/@hardness/core/dist/agent/adapter.js.map +1 -0
- package/node_modules/@hardness/core/dist/agent/context-gen.d.ts +7 -0
- package/node_modules/@hardness/core/dist/agent/context-gen.js +12 -0
- package/node_modules/@hardness/core/dist/agent/context-gen.js.map +1 -0
- package/node_modules/@hardness/core/dist/common/logger.d.ts +17 -0
- package/node_modules/@hardness/core/dist/common/logger.js +59 -0
- package/node_modules/@hardness/core/dist/common/logger.js.map +1 -0
- package/node_modules/@hardness/core/dist/common/paths.d.ts +22 -0
- package/node_modules/@hardness/core/dist/common/paths.js +72 -0
- package/node_modules/@hardness/core/dist/common/paths.js.map +1 -0
- package/node_modules/@hardness/core/dist/common/preflight.d.ts +9 -0
- package/node_modules/@hardness/core/dist/common/preflight.js +69 -0
- package/node_modules/@hardness/core/dist/common/preflight.js.map +1 -0
- package/node_modules/@hardness/core/dist/common/subprocess.d.ts +18 -0
- package/node_modules/@hardness/core/dist/common/subprocess.js +79 -0
- package/node_modules/@hardness/core/dist/common/subprocess.js.map +1 -0
- package/node_modules/@hardness/core/dist/common/types.d.ts +77 -0
- package/node_modules/@hardness/core/dist/common/types.js +2 -0
- package/node_modules/@hardness/core/dist/common/types.js.map +1 -0
- package/node_modules/@hardness/core/dist/config/manager.d.ts +31 -0
- package/node_modules/@hardness/core/dist/config/manager.js +97 -0
- package/node_modules/@hardness/core/dist/config/manager.js.map +1 -0
- package/node_modules/@hardness/core/dist/config/schema.d.ts +210 -0
- package/node_modules/@hardness/core/dist/config/schema.js +41 -0
- package/node_modules/@hardness/core/dist/config/schema.js.map +1 -0
- package/node_modules/@hardness/core/dist/gates/analyzer-gate.d.ts +6 -0
- package/node_modules/@hardness/core/dist/gates/analyzer-gate.js +37 -0
- package/node_modules/@hardness/core/dist/gates/analyzer-gate.js.map +1 -0
- package/node_modules/@hardness/core/dist/gates/dependency.d.ts +5 -0
- package/node_modules/@hardness/core/dist/gates/dependency.js +71 -0
- package/node_modules/@hardness/core/dist/gates/dependency.js.map +1 -0
- package/node_modules/@hardness/core/dist/gates/engine.d.ts +26 -0
- package/node_modules/@hardness/core/dist/gates/engine.js +68 -0
- package/node_modules/@hardness/core/dist/gates/engine.js.map +1 -0
- package/node_modules/@hardness/core/dist/gates/execution.d.ts +9 -0
- package/node_modules/@hardness/core/dist/gates/execution.js +88 -0
- package/node_modules/@hardness/core/dist/gates/execution.js.map +1 -0
- package/node_modules/@hardness/core/dist/gates/generic.d.ts +21 -0
- package/node_modules/@hardness/core/dist/gates/generic.js +204 -0
- package/node_modules/@hardness/core/dist/gates/generic.js.map +1 -0
- package/node_modules/@hardness/core/dist/gates/import-resolver.d.ts +6 -0
- package/node_modules/@hardness/core/dist/gates/import-resolver.js +78 -0
- package/node_modules/@hardness/core/dist/gates/import-resolver.js.map +1 -0
- package/node_modules/@hardness/core/dist/index.d.ts +23 -0
- package/node_modules/@hardness/core/dist/index.js +30 -0
- package/node_modules/@hardness/core/dist/index.js.map +1 -0
- package/node_modules/@hardness/core/dist/locks/harness-guard.d.ts +32 -0
- package/node_modules/@hardness/core/dist/locks/harness-guard.js +121 -0
- package/node_modules/@hardness/core/dist/locks/harness-guard.js.map +1 -0
- package/node_modules/@hardness/core/dist/locks/sprint-lock.d.ts +39 -0
- package/node_modules/@hardness/core/dist/locks/sprint-lock.js +143 -0
- package/node_modules/@hardness/core/dist/locks/sprint-lock.js.map +1 -0
- package/node_modules/@hardness/core/dist/orchestrator.d.ts +8 -0
- package/node_modules/@hardness/core/dist/orchestrator.js +160 -0
- package/node_modules/@hardness/core/dist/orchestrator.js.map +1 -0
- package/node_modules/@hardness/core/dist/security/policy.d.ts +10 -0
- package/node_modules/@hardness/core/dist/security/policy.js +32 -0
- package/node_modules/@hardness/core/dist/security/policy.js.map +1 -0
- package/node_modules/@hardness/core/dist/security/redactor.d.ts +5 -0
- package/node_modules/@hardness/core/dist/security/redactor.js +40 -0
- package/node_modules/@hardness/core/dist/security/redactor.js.map +1 -0
- package/node_modules/@hardness/core/dist/sprint/context.d.ts +27 -0
- package/node_modules/@hardness/core/dist/sprint/context.js +119 -0
- package/node_modules/@hardness/core/dist/sprint/context.js.map +1 -0
- package/node_modules/@hardness/core/dist/sprint/scorer.d.ts +20 -0
- package/node_modules/@hardness/core/dist/sprint/scorer.js +109 -0
- package/node_modules/@hardness/core/dist/sprint/scorer.js.map +1 -0
- package/node_modules/@hardness/core/dist/sprint/status.d.ts +20 -0
- package/node_modules/@hardness/core/dist/sprint/status.js +81 -0
- package/node_modules/@hardness/core/dist/sprint/status.js.map +1 -0
- package/node_modules/@hardness/core/dist/sprint/validator.d.ts +17 -0
- package/node_modules/@hardness/core/dist/sprint/validator.js +239 -0
- package/node_modules/@hardness/core/dist/sprint/validator.js.map +1 -0
- package/node_modules/@hardness/core/package.json +53 -0
- package/node_modules/@hardness/prompts/README.md +30 -0
- package/node_modules/@hardness/prompts/dist/index.d.ts +21 -0
- package/node_modules/@hardness/prompts/dist/index.js +63 -0
- package/node_modules/@hardness/prompts/dist/index.js.map +1 -0
- package/node_modules/@hardness/prompts/package.json +46 -0
- package/node_modules/picocolors/LICENSE +15 -0
- package/node_modules/picocolors/README.md +21 -0
- package/node_modules/picocolors/package.json +25 -0
- package/node_modules/picocolors/picocolors.browser.js +4 -0
- package/node_modules/picocolors/picocolors.d.ts +5 -0
- package/node_modules/picocolors/picocolors.js +75 -0
- package/node_modules/picocolors/types.d.ts +51 -0
- package/node_modules/zod/LICENSE +21 -0
- package/node_modules/zod/README.md +208 -0
- package/node_modules/zod/index.cjs +33 -0
- package/node_modules/zod/index.d.cts +4 -0
- package/node_modules/zod/index.d.ts +4 -0
- package/node_modules/zod/index.js +4 -0
- package/node_modules/zod/package.json +118 -0
- package/node_modules/zod/src/index.ts +4 -0
- package/node_modules/zod/src/v3/ZodError.ts +330 -0
- package/node_modules/zod/src/v3/benchmarks/datetime.ts +58 -0
- package/node_modules/zod/src/v3/benchmarks/discriminatedUnion.ts +80 -0
- package/node_modules/zod/src/v3/benchmarks/index.ts +59 -0
- package/node_modules/zod/src/v3/benchmarks/ipv4.ts +57 -0
- package/node_modules/zod/src/v3/benchmarks/object.ts +69 -0
- package/node_modules/zod/src/v3/benchmarks/primitives.ts +162 -0
- package/node_modules/zod/src/v3/benchmarks/realworld.ts +63 -0
- package/node_modules/zod/src/v3/benchmarks/string.ts +55 -0
- package/node_modules/zod/src/v3/benchmarks/union.ts +80 -0
- package/node_modules/zod/src/v3/errors.ts +13 -0
- package/node_modules/zod/src/v3/external.ts +6 -0
- package/node_modules/zod/src/v3/helpers/enumUtil.ts +17 -0
- package/node_modules/zod/src/v3/helpers/errorUtil.ts +8 -0
- package/node_modules/zod/src/v3/helpers/parseUtil.ts +176 -0
- package/node_modules/zod/src/v3/helpers/partialUtil.ts +34 -0
- package/node_modules/zod/src/v3/helpers/typeAliases.ts +2 -0
- package/node_modules/zod/src/v3/helpers/util.ts +224 -0
- package/node_modules/zod/src/v3/index.ts +4 -0
- package/node_modules/zod/src/v3/locales/en.ts +124 -0
- package/node_modules/zod/src/v3/standard-schema.ts +113 -0
- package/node_modules/zod/src/v3/tests/Mocker.ts +54 -0
- package/node_modules/zod/src/v3/tests/all-errors.test.ts +157 -0
- package/node_modules/zod/src/v3/tests/anyunknown.test.ts +28 -0
- package/node_modules/zod/src/v3/tests/array.test.ts +71 -0
- package/node_modules/zod/src/v3/tests/async-parsing.test.ts +388 -0
- package/node_modules/zod/src/v3/tests/async-refinements.test.ts +46 -0
- package/node_modules/zod/src/v3/tests/base.test.ts +29 -0
- package/node_modules/zod/src/v3/tests/bigint.test.ts +55 -0
- package/node_modules/zod/src/v3/tests/branded.test.ts +53 -0
- package/node_modules/zod/src/v3/tests/catch.test.ts +220 -0
- package/node_modules/zod/src/v3/tests/coerce.test.ts +133 -0
- package/node_modules/zod/src/v3/tests/complex.test.ts +56 -0
- package/node_modules/zod/src/v3/tests/custom.test.ts +31 -0
- package/node_modules/zod/src/v3/tests/date.test.ts +32 -0
- package/node_modules/zod/src/v3/tests/deepmasking.test.ts +186 -0
- package/node_modules/zod/src/v3/tests/default.test.ts +112 -0
- package/node_modules/zod/src/v3/tests/description.test.ts +33 -0
- package/node_modules/zod/src/v3/tests/discriminated-unions.test.ts +315 -0
- package/node_modules/zod/src/v3/tests/enum.test.ts +80 -0
- package/node_modules/zod/src/v3/tests/error.test.ts +551 -0
- package/node_modules/zod/src/v3/tests/firstparty.test.ts +87 -0
- package/node_modules/zod/src/v3/tests/firstpartyschematypes.test.ts +21 -0
- package/node_modules/zod/src/v3/tests/function.test.ts +257 -0
- package/node_modules/zod/src/v3/tests/generics.test.ts +48 -0
- package/node_modules/zod/src/v3/tests/instanceof.test.ts +37 -0
- package/node_modules/zod/src/v3/tests/intersection.test.ts +110 -0
- package/node_modules/zod/src/v3/tests/language-server.source.ts +76 -0
- package/node_modules/zod/src/v3/tests/language-server.test.ts +207 -0
- package/node_modules/zod/src/v3/tests/literal.test.ts +36 -0
- package/node_modules/zod/src/v3/tests/map.test.ts +110 -0
- package/node_modules/zod/src/v3/tests/masking.test.ts +4 -0
- package/node_modules/zod/src/v3/tests/mocker.test.ts +19 -0
- package/node_modules/zod/src/v3/tests/nan.test.ts +21 -0
- package/node_modules/zod/src/v3/tests/nativeEnum.test.ts +87 -0
- package/node_modules/zod/src/v3/tests/nullable.test.ts +42 -0
- package/node_modules/zod/src/v3/tests/number.test.ts +176 -0
- package/node_modules/zod/src/v3/tests/object-augmentation.test.ts +29 -0
- package/node_modules/zod/src/v3/tests/object-in-es5-env.test.ts +29 -0
- package/node_modules/zod/src/v3/tests/object.test.ts +434 -0
- package/node_modules/zod/src/v3/tests/optional.test.ts +42 -0
- package/node_modules/zod/src/v3/tests/parseUtil.test.ts +23 -0
- package/node_modules/zod/src/v3/tests/parser.test.ts +41 -0
- package/node_modules/zod/src/v3/tests/partials.test.ts +243 -0
- package/node_modules/zod/src/v3/tests/pickomit.test.ts +111 -0
- package/node_modules/zod/src/v3/tests/pipeline.test.ts +29 -0
- package/node_modules/zod/src/v3/tests/preprocess.test.ts +186 -0
- package/node_modules/zod/src/v3/tests/primitive.test.ts +440 -0
- package/node_modules/zod/src/v3/tests/promise.test.ts +90 -0
- package/node_modules/zod/src/v3/tests/readonly.test.ts +194 -0
- package/node_modules/zod/src/v3/tests/record.test.ts +171 -0
- package/node_modules/zod/src/v3/tests/recursive.test.ts +197 -0
- package/node_modules/zod/src/v3/tests/refine.test.ts +313 -0
- package/node_modules/zod/src/v3/tests/safeparse.test.ts +27 -0
- package/node_modules/zod/src/v3/tests/set.test.ts +142 -0
- package/node_modules/zod/src/v3/tests/standard-schema.test.ts +83 -0
- package/node_modules/zod/src/v3/tests/string.test.ts +916 -0
- package/node_modules/zod/src/v3/tests/transformer.test.ts +233 -0
- package/node_modules/zod/src/v3/tests/tuple.test.ts +90 -0
- package/node_modules/zod/src/v3/tests/unions.test.ts +57 -0
- package/node_modules/zod/src/v3/tests/validations.test.ts +133 -0
- package/node_modules/zod/src/v3/tests/void.test.ts +15 -0
- package/node_modules/zod/src/v3/types.ts +5136 -0
- package/node_modules/zod/src/v4/classic/checks.ts +30 -0
- package/node_modules/zod/src/v4/classic/coerce.ts +27 -0
- package/node_modules/zod/src/v4/classic/compat.ts +66 -0
- package/node_modules/zod/src/v4/classic/errors.ts +75 -0
- package/node_modules/zod/src/v4/classic/external.ts +50 -0
- package/node_modules/zod/src/v4/classic/index.ts +5 -0
- package/node_modules/zod/src/v4/classic/iso.ts +90 -0
- package/node_modules/zod/src/v4/classic/parse.ts +33 -0
- package/node_modules/zod/src/v4/classic/schemas.ts +2054 -0
- package/node_modules/zod/src/v4/classic/tests/anyunknown.test.ts +26 -0
- package/node_modules/zod/src/v4/classic/tests/array.test.ts +264 -0
- package/node_modules/zod/src/v4/classic/tests/assignability.test.ts +210 -0
- package/node_modules/zod/src/v4/classic/tests/async-parsing.test.ts +381 -0
- package/node_modules/zod/src/v4/classic/tests/async-refinements.test.ts +68 -0
- package/node_modules/zod/src/v4/classic/tests/base.test.ts +7 -0
- package/node_modules/zod/src/v4/classic/tests/bigint.test.ts +54 -0
- package/node_modules/zod/src/v4/classic/tests/brand.test.ts +63 -0
- package/node_modules/zod/src/v4/classic/tests/catch.test.ts +252 -0
- package/node_modules/zod/src/v4/classic/tests/coalesce.test.ts +20 -0
- package/node_modules/zod/src/v4/classic/tests/coerce.test.ts +160 -0
- package/node_modules/zod/src/v4/classic/tests/continuability.test.ts +352 -0
- package/node_modules/zod/src/v4/classic/tests/custom.test.ts +40 -0
- package/node_modules/zod/src/v4/classic/tests/date.test.ts +31 -0
- package/node_modules/zod/src/v4/classic/tests/datetime.test.ts +296 -0
- package/node_modules/zod/src/v4/classic/tests/default.test.ts +313 -0
- package/node_modules/zod/src/v4/classic/tests/description.test.ts +32 -0
- package/node_modules/zod/src/v4/classic/tests/discriminated-unions.test.ts +619 -0
- package/node_modules/zod/src/v4/classic/tests/enum.test.ts +285 -0
- package/node_modules/zod/src/v4/classic/tests/error-utils.test.ts +527 -0
- package/node_modules/zod/src/v4/classic/tests/error.test.ts +711 -0
- package/node_modules/zod/src/v4/classic/tests/file.test.ts +91 -0
- package/node_modules/zod/src/v4/classic/tests/firstparty.test.ts +175 -0
- package/node_modules/zod/src/v4/classic/tests/function.test.ts +268 -0
- package/node_modules/zod/src/v4/classic/tests/generics.test.ts +72 -0
- package/node_modules/zod/src/v4/classic/tests/index.test.ts +829 -0
- package/node_modules/zod/src/v4/classic/tests/instanceof.test.ts +34 -0
- package/node_modules/zod/src/v4/classic/tests/intersection.test.ts +171 -0
- package/node_modules/zod/src/v4/classic/tests/json.test.ts +108 -0
- package/node_modules/zod/src/v4/classic/tests/lazy.test.ts +227 -0
- package/node_modules/zod/src/v4/classic/tests/literal.test.ts +92 -0
- package/node_modules/zod/src/v4/classic/tests/map.test.ts +196 -0
- package/node_modules/zod/src/v4/classic/tests/nan.test.ts +21 -0
- package/node_modules/zod/src/v4/classic/tests/nested-refine.test.ts +168 -0
- package/node_modules/zod/src/v4/classic/tests/nonoptional.test.ts +86 -0
- package/node_modules/zod/src/v4/classic/tests/nullable.test.ts +22 -0
- package/node_modules/zod/src/v4/classic/tests/number.test.ts +247 -0
- package/node_modules/zod/src/v4/classic/tests/object.test.ts +563 -0
- package/node_modules/zod/src/v4/classic/tests/optional.test.ts +123 -0
- package/node_modules/zod/src/v4/classic/tests/partial.test.ts +147 -0
- package/node_modules/zod/src/v4/classic/tests/pickomit.test.ts +127 -0
- package/node_modules/zod/src/v4/classic/tests/pipe.test.ts +81 -0
- package/node_modules/zod/src/v4/classic/tests/prefault.test.ts +37 -0
- package/node_modules/zod/src/v4/classic/tests/preprocess.test.ts +298 -0
- package/node_modules/zod/src/v4/classic/tests/primitive.test.ts +175 -0
- package/node_modules/zod/src/v4/classic/tests/promise.test.ts +81 -0
- package/node_modules/zod/src/v4/classic/tests/prototypes.test.ts +23 -0
- package/node_modules/zod/src/v4/classic/tests/readonly.test.ts +252 -0
- package/node_modules/zod/src/v4/classic/tests/record.test.ts +342 -0
- package/node_modules/zod/src/v4/classic/tests/recursive-types.test.ts +356 -0
- package/node_modules/zod/src/v4/classic/tests/refine.test.ts +532 -0
- package/node_modules/zod/src/v4/classic/tests/registries.test.ts +204 -0
- package/node_modules/zod/src/v4/classic/tests/set.test.ts +179 -0
- package/node_modules/zod/src/v4/classic/tests/standard-schema.test.ts +57 -0
- package/node_modules/zod/src/v4/classic/tests/string-formats.test.ts +109 -0
- package/node_modules/zod/src/v4/classic/tests/string.test.ts +881 -0
- package/node_modules/zod/src/v4/classic/tests/stringbool.test.ts +66 -0
- package/node_modules/zod/src/v4/classic/tests/template-literal.test.ts +758 -0
- package/node_modules/zod/src/v4/classic/tests/to-json-schema.test.ts +2314 -0
- package/node_modules/zod/src/v4/classic/tests/transform.test.ts +250 -0
- package/node_modules/zod/src/v4/classic/tests/tuple.test.ts +163 -0
- package/node_modules/zod/src/v4/classic/tests/union.test.ts +94 -0
- package/node_modules/zod/src/v4/classic/tests/validations.test.ts +283 -0
- package/node_modules/zod/src/v4/classic/tests/void.test.ts +12 -0
- package/node_modules/zod/src/v4/core/api.ts +1594 -0
- package/node_modules/zod/src/v4/core/checks.ts +1283 -0
- package/node_modules/zod/src/v4/core/config.ts +15 -0
- package/node_modules/zod/src/v4/core/core.ts +134 -0
- package/node_modules/zod/src/v4/core/doc.ts +44 -0
- package/node_modules/zod/src/v4/core/errors.ts +424 -0
- package/node_modules/zod/src/v4/core/function.ts +176 -0
- package/node_modules/zod/src/v4/core/index.ts +15 -0
- package/node_modules/zod/src/v4/core/json-schema.ts +143 -0
- package/node_modules/zod/src/v4/core/parse.ts +94 -0
- package/node_modules/zod/src/v4/core/regexes.ts +135 -0
- package/node_modules/zod/src/v4/core/registries.ts +96 -0
- package/node_modules/zod/src/v4/core/schemas.ts +3842 -0
- package/node_modules/zod/src/v4/core/standard-schema.ts +64 -0
- package/node_modules/zod/src/v4/core/tests/index.test.ts +46 -0
- package/node_modules/zod/src/v4/core/tests/locales/be.test.ts +124 -0
- package/node_modules/zod/src/v4/core/tests/locales/en.test.ts +22 -0
- package/node_modules/zod/src/v4/core/tests/locales/ru.test.ts +128 -0
- package/node_modules/zod/src/v4/core/tests/locales/tr.test.ts +69 -0
- package/node_modules/zod/src/v4/core/to-json-schema.ts +977 -0
- package/node_modules/zod/src/v4/core/util.ts +775 -0
- package/node_modules/zod/src/v4/core/versions.ts +5 -0
- package/node_modules/zod/src/v4/core/zsf.ts +323 -0
- package/node_modules/zod/src/v4/index.ts +4 -0
- package/node_modules/zod/src/v4/locales/ar.ts +125 -0
- package/node_modules/zod/src/v4/locales/az.ts +121 -0
- package/node_modules/zod/src/v4/locales/be.ts +184 -0
- package/node_modules/zod/src/v4/locales/ca.ts +127 -0
- package/node_modules/zod/src/v4/locales/cs.ts +142 -0
- package/node_modules/zod/src/v4/locales/de.ts +124 -0
- package/node_modules/zod/src/v4/locales/en.ts +127 -0
- package/node_modules/zod/src/v4/locales/eo.ts +125 -0
- package/node_modules/zod/src/v4/locales/es.ts +125 -0
- package/node_modules/zod/src/v4/locales/fa.ts +134 -0
- package/node_modules/zod/src/v4/locales/fi.ts +131 -0
- package/node_modules/zod/src/v4/locales/fr-CA.ts +126 -0
- package/node_modules/zod/src/v4/locales/fr.ts +124 -0
- package/node_modules/zod/src/v4/locales/he.ts +125 -0
- package/node_modules/zod/src/v4/locales/hu.ts +126 -0
- package/node_modules/zod/src/v4/locales/id.ts +125 -0
- package/node_modules/zod/src/v4/locales/index.ts +39 -0
- package/node_modules/zod/src/v4/locales/it.ts +125 -0
- package/node_modules/zod/src/v4/locales/ja.ts +122 -0
- package/node_modules/zod/src/v4/locales/kh.ts +126 -0
- package/node_modules/zod/src/v4/locales/ko.ts +131 -0
- package/node_modules/zod/src/v4/locales/mk.ts +127 -0
- package/node_modules/zod/src/v4/locales/ms.ts +124 -0
- package/node_modules/zod/src/v4/locales/nl.ts +126 -0
- package/node_modules/zod/src/v4/locales/no.ts +124 -0
- package/node_modules/zod/src/v4/locales/ota.ts +125 -0
- package/node_modules/zod/src/v4/locales/pl.ts +126 -0
- package/node_modules/zod/src/v4/locales/ps.ts +133 -0
- package/node_modules/zod/src/v4/locales/pt.ts +123 -0
- package/node_modules/zod/src/v4/locales/ru.ts +184 -0
- package/node_modules/zod/src/v4/locales/sl.ts +126 -0
- package/node_modules/zod/src/v4/locales/sv.ts +127 -0
- package/node_modules/zod/src/v4/locales/ta.ts +125 -0
- package/node_modules/zod/src/v4/locales/th.ts +126 -0
- package/node_modules/zod/src/v4/locales/tr.ts +121 -0
- package/node_modules/zod/src/v4/locales/ua.ts +126 -0
- package/node_modules/zod/src/v4/locales/ur.ts +126 -0
- package/node_modules/zod/src/v4/locales/vi.ts +125 -0
- package/node_modules/zod/src/v4/locales/zh-CN.ts +123 -0
- package/node_modules/zod/src/v4/locales/zh-TW.ts +125 -0
- package/node_modules/zod/src/v4/mini/checks.ts +32 -0
- package/node_modules/zod/src/v4/mini/coerce.ts +22 -0
- package/node_modules/zod/src/v4/mini/external.ts +40 -0
- package/node_modules/zod/src/v4/mini/index.ts +3 -0
- package/node_modules/zod/src/v4/mini/iso.ts +62 -0
- package/node_modules/zod/src/v4/mini/parse.ts +1 -0
- package/node_modules/zod/src/v4/mini/schemas.ts +1579 -0
- package/node_modules/zod/src/v4/mini/tests/assignability.test.ts +129 -0
- package/node_modules/zod/src/v4/mini/tests/brand.test.ts +51 -0
- package/node_modules/zod/src/v4/mini/tests/checks.test.ts +144 -0
- package/node_modules/zod/src/v4/mini/tests/computed.test.ts +36 -0
- package/node_modules/zod/src/v4/mini/tests/error.test.ts +22 -0
- package/node_modules/zod/src/v4/mini/tests/functions.test.ts +43 -0
- package/node_modules/zod/src/v4/mini/tests/index.test.ts +871 -0
- package/node_modules/zod/src/v4/mini/tests/number.test.ts +95 -0
- package/node_modules/zod/src/v4/mini/tests/object.test.ts +185 -0
- package/node_modules/zod/src/v4/mini/tests/prototypes.test.ts +43 -0
- package/node_modules/zod/src/v4/mini/tests/recursive-types.test.ts +275 -0
- package/node_modules/zod/src/v4/mini/tests/string.test.ts +299 -0
- package/node_modules/zod/src/v4-mini/index.ts +1 -0
- package/node_modules/zod/v3/ZodError.cjs +138 -0
- package/node_modules/zod/v3/ZodError.d.cts +164 -0
- package/node_modules/zod/v3/ZodError.d.ts +164 -0
- package/node_modules/zod/v3/ZodError.js +133 -0
- package/node_modules/zod/v3/errors.cjs +17 -0
- package/node_modules/zod/v3/errors.d.cts +5 -0
- package/node_modules/zod/v3/errors.d.ts +5 -0
- package/node_modules/zod/v3/errors.js +9 -0
- package/node_modules/zod/v3/external.cjs +22 -0
- package/node_modules/zod/v3/external.d.cts +6 -0
- package/node_modules/zod/v3/external.d.ts +6 -0
- package/node_modules/zod/v3/external.js +6 -0
- package/node_modules/zod/v3/helpers/enumUtil.cjs +2 -0
- package/node_modules/zod/v3/helpers/enumUtil.d.cts +8 -0
- package/node_modules/zod/v3/helpers/enumUtil.d.ts +8 -0
- package/node_modules/zod/v3/helpers/enumUtil.js +1 -0
- package/node_modules/zod/v3/helpers/errorUtil.cjs +9 -0
- package/node_modules/zod/v3/helpers/errorUtil.d.cts +9 -0
- package/node_modules/zod/v3/helpers/errorUtil.d.ts +9 -0
- package/node_modules/zod/v3/helpers/errorUtil.js +6 -0
- package/node_modules/zod/v3/helpers/parseUtil.cjs +124 -0
- package/node_modules/zod/v3/helpers/parseUtil.d.cts +78 -0
- package/node_modules/zod/v3/helpers/parseUtil.d.ts +78 -0
- package/node_modules/zod/v3/helpers/parseUtil.js +109 -0
- package/node_modules/zod/v3/helpers/partialUtil.cjs +2 -0
- package/node_modules/zod/v3/helpers/partialUtil.d.cts +8 -0
- package/node_modules/zod/v3/helpers/partialUtil.d.ts +8 -0
- package/node_modules/zod/v3/helpers/partialUtil.js +1 -0
- package/node_modules/zod/v3/helpers/typeAliases.cjs +2 -0
- package/node_modules/zod/v3/helpers/typeAliases.d.cts +2 -0
- package/node_modules/zod/v3/helpers/typeAliases.d.ts +2 -0
- package/node_modules/zod/v3/helpers/typeAliases.js +1 -0
- package/node_modules/zod/v3/helpers/util.cjs +137 -0
- package/node_modules/zod/v3/helpers/util.d.cts +85 -0
- package/node_modules/zod/v3/helpers/util.d.ts +85 -0
- package/node_modules/zod/v3/helpers/util.js +133 -0
- package/node_modules/zod/v3/index.cjs +33 -0
- package/node_modules/zod/v3/index.d.cts +4 -0
- package/node_modules/zod/v3/index.d.ts +4 -0
- package/node_modules/zod/v3/index.js +4 -0
- package/node_modules/zod/v3/locales/en.cjs +111 -0
- package/node_modules/zod/v3/locales/en.d.cts +3 -0
- package/node_modules/zod/v3/locales/en.d.ts +3 -0
- package/node_modules/zod/v3/locales/en.js +109 -0
- package/node_modules/zod/v3/standard-schema.cjs +2 -0
- package/node_modules/zod/v3/standard-schema.d.cts +102 -0
- package/node_modules/zod/v3/standard-schema.d.ts +102 -0
- package/node_modules/zod/v3/standard-schema.js +1 -0
- package/node_modules/zod/v3/types.cjs +3775 -0
- package/node_modules/zod/v3/types.d.cts +1031 -0
- package/node_modules/zod/v3/types.d.ts +1031 -0
- package/node_modules/zod/v3/types.js +3693 -0
- package/node_modules/zod/v4/classic/checks.cjs +32 -0
- package/node_modules/zod/v4/classic/checks.d.cts +1 -0
- package/node_modules/zod/v4/classic/checks.d.ts +1 -0
- package/node_modules/zod/v4/classic/checks.js +1 -0
- package/node_modules/zod/v4/classic/coerce.cjs +47 -0
- package/node_modules/zod/v4/classic/coerce.d.cts +17 -0
- package/node_modules/zod/v4/classic/coerce.d.ts +17 -0
- package/node_modules/zod/v4/classic/coerce.js +17 -0
- package/node_modules/zod/v4/classic/compat.cjs +57 -0
- package/node_modules/zod/v4/classic/compat.d.cts +46 -0
- package/node_modules/zod/v4/classic/compat.d.ts +46 -0
- package/node_modules/zod/v4/classic/compat.js +27 -0
- package/node_modules/zod/v4/classic/errors.cjs +67 -0
- package/node_modules/zod/v4/classic/errors.d.cts +30 -0
- package/node_modules/zod/v4/classic/errors.d.ts +30 -0
- package/node_modules/zod/v4/classic/errors.js +41 -0
- package/node_modules/zod/v4/classic/external.cjs +70 -0
- package/node_modules/zod/v4/classic/external.d.cts +13 -0
- package/node_modules/zod/v4/classic/external.d.ts +13 -0
- package/node_modules/zod/v4/classic/external.js +18 -0
- package/node_modules/zod/v4/classic/index.cjs +33 -0
- package/node_modules/zod/v4/classic/index.d.cts +4 -0
- package/node_modules/zod/v4/classic/index.d.ts +4 -0
- package/node_modules/zod/v4/classic/index.js +4 -0
- package/node_modules/zod/v4/classic/iso.cjs +60 -0
- package/node_modules/zod/v4/classic/iso.d.cts +22 -0
- package/node_modules/zod/v4/classic/iso.d.ts +22 -0
- package/node_modules/zod/v4/classic/iso.js +30 -0
- package/node_modules/zod/v4/classic/parse.cjs +32 -0
- package/node_modules/zod/v4/classic/parse.d.cts +23 -0
- package/node_modules/zod/v4/classic/parse.d.ts +23 -0
- package/node_modules/zod/v4/classic/parse.js +6 -0
- package/node_modules/zod/v4/classic/schemas.cjs +1109 -0
- package/node_modules/zod/v4/classic/schemas.d.cts +630 -0
- package/node_modules/zod/v4/classic/schemas.d.ts +630 -0
- package/node_modules/zod/v4/classic/schemas.js +1006 -0
- package/node_modules/zod/v4/core/api.cjs +1039 -0
- package/node_modules/zod/v4/core/api.d.cts +284 -0
- package/node_modules/zod/v4/core/api.d.ts +284 -0
- package/node_modules/zod/v4/core/api.js +906 -0
- package/node_modules/zod/v4/core/checks.cjs +591 -0
- package/node_modules/zod/v4/core/checks.d.cts +278 -0
- package/node_modules/zod/v4/core/checks.d.ts +278 -0
- package/node_modules/zod/v4/core/checks.js +565 -0
- package/node_modules/zod/v4/core/core.cjs +67 -0
- package/node_modules/zod/v4/core/core.d.cts +49 -0
- package/node_modules/zod/v4/core/core.d.ts +49 -0
- package/node_modules/zod/v4/core/core.js +61 -0
- package/node_modules/zod/v4/core/doc.cjs +39 -0
- package/node_modules/zod/v4/core/doc.d.cts +14 -0
- package/node_modules/zod/v4/core/doc.d.ts +14 -0
- package/node_modules/zod/v4/core/doc.js +35 -0
- package/node_modules/zod/v4/core/errors.cjs +226 -0
- package/node_modules/zod/v4/core/errors.d.cts +208 -0
- package/node_modules/zod/v4/core/errors.d.ts +208 -0
- package/node_modules/zod/v4/core/errors.js +195 -0
- package/node_modules/zod/v4/core/function.cjs +102 -0
- package/node_modules/zod/v4/core/function.d.cts +52 -0
- package/node_modules/zod/v4/core/function.d.ts +52 -0
- package/node_modules/zod/v4/core/function.js +75 -0
- package/node_modules/zod/v4/core/index.cjs +44 -0
- package/node_modules/zod/v4/core/index.d.cts +15 -0
- package/node_modules/zod/v4/core/index.d.ts +15 -0
- package/node_modules/zod/v4/core/index.js +15 -0
- package/node_modules/zod/v4/core/json-schema.cjs +2 -0
- package/node_modules/zod/v4/core/json-schema.d.cts +87 -0
- package/node_modules/zod/v4/core/json-schema.d.ts +87 -0
- package/node_modules/zod/v4/core/json-schema.js +1 -0
- package/node_modules/zod/v4/core/parse.cjs +87 -0
- package/node_modules/zod/v4/core/parse.d.cts +25 -0
- package/node_modules/zod/v4/core/parse.d.ts +25 -0
- package/node_modules/zod/v4/core/parse.js +57 -0
- package/node_modules/zod/v4/core/regexes.cjs +103 -0
- package/node_modules/zod/v4/core/regexes.d.cts +62 -0
- package/node_modules/zod/v4/core/regexes.d.ts +62 -0
- package/node_modules/zod/v4/core/regexes.js +95 -0
- package/node_modules/zod/v4/core/registries.cjs +56 -0
- package/node_modules/zod/v4/core/registries.d.cts +35 -0
- package/node_modules/zod/v4/core/registries.d.ts +35 -0
- package/node_modules/zod/v4/core/registries.js +51 -0
- package/node_modules/zod/v4/core/schemas.cjs +1748 -0
- package/node_modules/zod/v4/core/schemas.d.cts +1041 -0
- package/node_modules/zod/v4/core/schemas.d.ts +1041 -0
- package/node_modules/zod/v4/core/schemas.js +1717 -0
- package/node_modules/zod/v4/core/standard-schema.cjs +2 -0
- package/node_modules/zod/v4/core/standard-schema.d.cts +55 -0
- package/node_modules/zod/v4/core/standard-schema.d.ts +55 -0
- package/node_modules/zod/v4/core/standard-schema.js +1 -0
- package/node_modules/zod/v4/core/to-json-schema.cjs +854 -0
- package/node_modules/zod/v4/core/to-json-schema.d.cts +88 -0
- package/node_modules/zod/v4/core/to-json-schema.d.ts +88 -0
- package/node_modules/zod/v4/core/to-json-schema.js +849 -0
- package/node_modules/zod/v4/core/util.cjs +539 -0
- package/node_modules/zod/v4/core/util.d.cts +183 -0
- package/node_modules/zod/v4/core/util.d.ts +183 -0
- package/node_modules/zod/v4/core/util.js +493 -0
- package/node_modules/zod/v4/core/versions.cjs +8 -0
- package/node_modules/zod/v4/core/versions.d.cts +5 -0
- package/node_modules/zod/v4/core/versions.d.ts +5 -0
- package/node_modules/zod/v4/core/versions.js +5 -0
- package/node_modules/zod/v4/index.cjs +22 -0
- package/node_modules/zod/v4/index.d.cts +3 -0
- package/node_modules/zod/v4/index.d.ts +3 -0
- package/node_modules/zod/v4/index.js +3 -0
- package/node_modules/zod/v4/locales/ar.cjs +142 -0
- package/node_modules/zod/v4/locales/ar.d.cts +4 -0
- package/node_modules/zod/v4/locales/ar.d.ts +4 -0
- package/node_modules/zod/v4/locales/ar.js +116 -0
- package/node_modules/zod/v4/locales/az.cjs +141 -0
- package/node_modules/zod/v4/locales/az.d.cts +4 -0
- package/node_modules/zod/v4/locales/az.d.ts +4 -0
- package/node_modules/zod/v4/locales/az.js +115 -0
- package/node_modules/zod/v4/locales/be.cjs +190 -0
- package/node_modules/zod/v4/locales/be.d.cts +4 -0
- package/node_modules/zod/v4/locales/be.d.ts +4 -0
- package/node_modules/zod/v4/locales/be.js +164 -0
- package/node_modules/zod/v4/locales/ca.cjs +144 -0
- package/node_modules/zod/v4/locales/ca.d.cts +4 -0
- package/node_modules/zod/v4/locales/ca.d.ts +4 -0
- package/node_modules/zod/v4/locales/ca.js +118 -0
- package/node_modules/zod/v4/locales/cs.cjs +161 -0
- package/node_modules/zod/v4/locales/cs.d.cts +4 -0
- package/node_modules/zod/v4/locales/cs.d.ts +4 -0
- package/node_modules/zod/v4/locales/cs.js +135 -0
- package/node_modules/zod/v4/locales/de.cjs +142 -0
- package/node_modules/zod/v4/locales/de.d.cts +4 -0
- package/node_modules/zod/v4/locales/de.d.ts +4 -0
- package/node_modules/zod/v4/locales/de.js +116 -0
- package/node_modules/zod/v4/locales/en.cjs +145 -0
- package/node_modules/zod/v4/locales/en.d.cts +5 -0
- package/node_modules/zod/v4/locales/en.d.ts +5 -0
- package/node_modules/zod/v4/locales/en.js +117 -0
- package/node_modules/zod/v4/locales/eo.cjs +144 -0
- package/node_modules/zod/v4/locales/eo.d.cts +5 -0
- package/node_modules/zod/v4/locales/eo.d.ts +5 -0
- package/node_modules/zod/v4/locales/eo.js +116 -0
- package/node_modules/zod/v4/locales/es.cjs +143 -0
- package/node_modules/zod/v4/locales/es.d.cts +4 -0
- package/node_modules/zod/v4/locales/es.d.ts +4 -0
- package/node_modules/zod/v4/locales/es.js +117 -0
- package/node_modules/zod/v4/locales/fa.cjs +148 -0
- package/node_modules/zod/v4/locales/fa.d.cts +4 -0
- package/node_modules/zod/v4/locales/fa.d.ts +4 -0
- package/node_modules/zod/v4/locales/fa.js +122 -0
- package/node_modules/zod/v4/locales/fi.cjs +148 -0
- package/node_modules/zod/v4/locales/fi.d.cts +4 -0
- package/node_modules/zod/v4/locales/fi.d.ts +4 -0
- package/node_modules/zod/v4/locales/fi.js +122 -0
- package/node_modules/zod/v4/locales/fr-CA.cjs +143 -0
- package/node_modules/zod/v4/locales/fr-CA.d.cts +4 -0
- package/node_modules/zod/v4/locales/fr-CA.d.ts +4 -0
- package/node_modules/zod/v4/locales/fr-CA.js +117 -0
- package/node_modules/zod/v4/locales/fr.cjs +142 -0
- package/node_modules/zod/v4/locales/fr.d.cts +4 -0
- package/node_modules/zod/v4/locales/fr.d.ts +4 -0
- package/node_modules/zod/v4/locales/fr.js +116 -0
- package/node_modules/zod/v4/locales/he.cjs +143 -0
- package/node_modules/zod/v4/locales/he.d.cts +4 -0
- package/node_modules/zod/v4/locales/he.d.ts +4 -0
- package/node_modules/zod/v4/locales/he.js +117 -0
- package/node_modules/zod/v4/locales/hu.cjs +143 -0
- package/node_modules/zod/v4/locales/hu.d.cts +4 -0
- package/node_modules/zod/v4/locales/hu.d.ts +4 -0
- package/node_modules/zod/v4/locales/hu.js +117 -0
- package/node_modules/zod/v4/locales/id.cjs +142 -0
- package/node_modules/zod/v4/locales/id.d.cts +4 -0
- package/node_modules/zod/v4/locales/id.d.ts +4 -0
- package/node_modules/zod/v4/locales/id.js +116 -0
- package/node_modules/zod/v4/locales/index.cjs +84 -0
- package/node_modules/zod/v4/locales/index.d.cts +39 -0
- package/node_modules/zod/v4/locales/index.d.ts +39 -0
- package/node_modules/zod/v4/locales/index.js +39 -0
- package/node_modules/zod/v4/locales/it.cjs +143 -0
- package/node_modules/zod/v4/locales/it.d.cts +4 -0
- package/node_modules/zod/v4/locales/it.d.ts +4 -0
- package/node_modules/zod/v4/locales/it.js +117 -0
- package/node_modules/zod/v4/locales/ja.cjs +141 -0
- package/node_modules/zod/v4/locales/ja.d.cts +4 -0
- package/node_modules/zod/v4/locales/ja.d.ts +4 -0
- package/node_modules/zod/v4/locales/ja.js +115 -0
- package/node_modules/zod/v4/locales/kh.cjs +143 -0
- package/node_modules/zod/v4/locales/kh.d.cts +4 -0
- package/node_modules/zod/v4/locales/kh.d.ts +4 -0
- package/node_modules/zod/v4/locales/kh.js +117 -0
- package/node_modules/zod/v4/locales/ko.cjs +147 -0
- package/node_modules/zod/v4/locales/ko.d.cts +4 -0
- package/node_modules/zod/v4/locales/ko.d.ts +4 -0
- package/node_modules/zod/v4/locales/ko.js +121 -0
- package/node_modules/zod/v4/locales/mk.cjs +144 -0
- package/node_modules/zod/v4/locales/mk.d.cts +4 -0
- package/node_modules/zod/v4/locales/mk.d.ts +4 -0
- package/node_modules/zod/v4/locales/mk.js +118 -0
- package/node_modules/zod/v4/locales/ms.cjs +142 -0
- package/node_modules/zod/v4/locales/ms.d.cts +4 -0
- package/node_modules/zod/v4/locales/ms.d.ts +4 -0
- package/node_modules/zod/v4/locales/ms.js +116 -0
- package/node_modules/zod/v4/locales/nl.cjs +143 -0
- package/node_modules/zod/v4/locales/nl.d.cts +4 -0
- package/node_modules/zod/v4/locales/nl.d.ts +4 -0
- package/node_modules/zod/v4/locales/nl.js +117 -0
- package/node_modules/zod/v4/locales/no.cjs +142 -0
- package/node_modules/zod/v4/locales/no.d.cts +4 -0
- package/node_modules/zod/v4/locales/no.d.ts +4 -0
- package/node_modules/zod/v4/locales/no.js +116 -0
- package/node_modules/zod/v4/locales/ota.cjs +143 -0
- package/node_modules/zod/v4/locales/ota.d.cts +4 -0
- package/node_modules/zod/v4/locales/ota.d.ts +4 -0
- package/node_modules/zod/v4/locales/ota.js +117 -0
- package/node_modules/zod/v4/locales/pl.cjs +143 -0
- package/node_modules/zod/v4/locales/pl.d.cts +4 -0
- package/node_modules/zod/v4/locales/pl.d.ts +4 -0
- package/node_modules/zod/v4/locales/pl.js +117 -0
- package/node_modules/zod/v4/locales/ps.cjs +148 -0
- package/node_modules/zod/v4/locales/ps.d.cts +4 -0
- package/node_modules/zod/v4/locales/ps.d.ts +4 -0
- package/node_modules/zod/v4/locales/ps.js +122 -0
- package/node_modules/zod/v4/locales/pt.cjs +142 -0
- package/node_modules/zod/v4/locales/pt.d.cts +4 -0
- package/node_modules/zod/v4/locales/pt.d.ts +4 -0
- package/node_modules/zod/v4/locales/pt.js +116 -0
- package/node_modules/zod/v4/locales/ru.cjs +190 -0
- package/node_modules/zod/v4/locales/ru.d.cts +4 -0
- package/node_modules/zod/v4/locales/ru.d.ts +4 -0
- package/node_modules/zod/v4/locales/ru.js +164 -0
- package/node_modules/zod/v4/locales/sl.cjs +143 -0
- package/node_modules/zod/v4/locales/sl.d.cts +4 -0
- package/node_modules/zod/v4/locales/sl.d.ts +4 -0
- package/node_modules/zod/v4/locales/sl.js +117 -0
- package/node_modules/zod/v4/locales/sv.cjs +144 -0
- package/node_modules/zod/v4/locales/sv.d.cts +4 -0
- package/node_modules/zod/v4/locales/sv.d.ts +4 -0
- package/node_modules/zod/v4/locales/sv.js +118 -0
- package/node_modules/zod/v4/locales/ta.cjs +143 -0
- package/node_modules/zod/v4/locales/ta.d.cts +4 -0
- package/node_modules/zod/v4/locales/ta.d.ts +4 -0
- package/node_modules/zod/v4/locales/ta.js +117 -0
- package/node_modules/zod/v4/locales/th.cjs +143 -0
- package/node_modules/zod/v4/locales/th.d.cts +4 -0
- package/node_modules/zod/v4/locales/th.d.ts +4 -0
- package/node_modules/zod/v4/locales/th.js +117 -0
- package/node_modules/zod/v4/locales/tr.cjs +143 -0
- package/node_modules/zod/v4/locales/tr.d.cts +5 -0
- package/node_modules/zod/v4/locales/tr.d.ts +5 -0
- package/node_modules/zod/v4/locales/tr.js +115 -0
- package/node_modules/zod/v4/locales/ua.cjs +143 -0
- package/node_modules/zod/v4/locales/ua.d.cts +4 -0
- package/node_modules/zod/v4/locales/ua.d.ts +4 -0
- package/node_modules/zod/v4/locales/ua.js +117 -0
- package/node_modules/zod/v4/locales/ur.cjs +143 -0
- package/node_modules/zod/v4/locales/ur.d.cts +4 -0
- package/node_modules/zod/v4/locales/ur.d.ts +4 -0
- package/node_modules/zod/v4/locales/ur.js +117 -0
- package/node_modules/zod/v4/locales/vi.cjs +142 -0
- package/node_modules/zod/v4/locales/vi.d.cts +4 -0
- package/node_modules/zod/v4/locales/vi.d.ts +4 -0
- package/node_modules/zod/v4/locales/vi.js +116 -0
- package/node_modules/zod/v4/locales/zh-CN.cjs +142 -0
- package/node_modules/zod/v4/locales/zh-CN.d.cts +4 -0
- package/node_modules/zod/v4/locales/zh-CN.d.ts +4 -0
- package/node_modules/zod/v4/locales/zh-CN.js +116 -0
- package/node_modules/zod/v4/locales/zh-TW.cjs +143 -0
- package/node_modules/zod/v4/locales/zh-TW.d.cts +4 -0
- package/node_modules/zod/v4/locales/zh-TW.d.ts +4 -0
- package/node_modules/zod/v4/locales/zh-TW.js +117 -0
- package/node_modules/zod/v4/mini/checks.cjs +34 -0
- package/node_modules/zod/v4/mini/checks.d.cts +1 -0
- package/node_modules/zod/v4/mini/checks.d.ts +1 -0
- package/node_modules/zod/v4/mini/checks.js +1 -0
- package/node_modules/zod/v4/mini/coerce.cjs +47 -0
- package/node_modules/zod/v4/mini/coerce.d.cts +7 -0
- package/node_modules/zod/v4/mini/coerce.d.ts +7 -0
- package/node_modules/zod/v4/mini/coerce.js +17 -0
- package/node_modules/zod/v4/mini/external.cjs +62 -0
- package/node_modules/zod/v4/mini/external.d.cts +11 -0
- package/node_modules/zod/v4/mini/external.d.ts +11 -0
- package/node_modules/zod/v4/mini/external.js +13 -0
- package/node_modules/zod/v4/mini/index.cjs +32 -0
- package/node_modules/zod/v4/mini/index.d.cts +3 -0
- package/node_modules/zod/v4/mini/index.d.ts +3 -0
- package/node_modules/zod/v4/mini/index.js +3 -0
- package/node_modules/zod/v4/mini/iso.cjs +60 -0
- package/node_modules/zod/v4/mini/iso.d.cts +22 -0
- package/node_modules/zod/v4/mini/iso.d.ts +22 -0
- package/node_modules/zod/v4/mini/iso.js +30 -0
- package/node_modules/zod/v4/mini/parse.cjs +8 -0
- package/node_modules/zod/v4/mini/parse.d.cts +1 -0
- package/node_modules/zod/v4/mini/parse.d.ts +1 -0
- package/node_modules/zod/v4/mini/parse.js +1 -0
- package/node_modules/zod/v4/mini/schemas.cjs +839 -0
- package/node_modules/zod/v4/mini/schemas.d.cts +356 -0
- package/node_modules/zod/v4/mini/schemas.d.ts +356 -0
- package/node_modules/zod/v4/mini/schemas.js +732 -0
- package/node_modules/zod/v4-mini/index.cjs +17 -0
- package/node_modules/zod/v4-mini/index.d.cts +1 -0
- package/node_modules/zod/v4-mini/index.d.ts +1 -0
- package/node_modules/zod/v4-mini/index.js +1 -0
- package/package.json +80 -0
- package/packages/analyzers/README.md +31 -0
- package/packages/analyzers/dist/generic.d.ts +6 -0
- package/packages/analyzers/dist/generic.js +13 -0
- package/packages/analyzers/dist/generic.js.map +1 -0
- package/packages/analyzers/dist/index.d.ts +26 -0
- package/packages/analyzers/dist/index.js +40 -0
- package/packages/analyzers/dist/index.js.map +1 -0
- package/packages/analyzers/dist/typescript-node.d.ts +6 -0
- package/packages/analyzers/dist/typescript-node.js +110 -0
- package/packages/analyzers/dist/typescript-node.js.map +1 -0
- package/packages/analyzers/package.json +47 -0
- package/packages/cli/README.md +27 -0
- package/packages/cli/dist/commands/audit.d.ts +2 -0
- package/packages/cli/dist/commands/audit.js +36 -0
- package/packages/cli/dist/commands/audit.js.map +1 -0
- package/packages/cli/dist/commands/discover.d.ts +2 -0
- package/packages/cli/dist/commands/discover.js +12 -0
- package/packages/cli/dist/commands/discover.js.map +1 -0
- package/packages/cli/dist/commands/dry-run.d.ts +2 -0
- package/packages/cli/dist/commands/dry-run.js +47 -0
- package/packages/cli/dist/commands/dry-run.js.map +1 -0
- package/packages/cli/dist/commands/init.d.ts +2 -0
- package/packages/cli/dist/commands/init.js +93 -0
- package/packages/cli/dist/commands/init.js.map +1 -0
- package/packages/cli/dist/commands/plan.d.ts +2 -0
- package/packages/cli/dist/commands/plan.js +12 -0
- package/packages/cli/dist/commands/plan.js.map +1 -0
- package/packages/cli/dist/commands/run.d.ts +2 -0
- package/packages/cli/dist/commands/run.js +23 -0
- package/packages/cli/dist/commands/run.js.map +1 -0
- package/packages/cli/dist/commands/score.d.ts +2 -0
- package/packages/cli/dist/commands/score.js +51 -0
- package/packages/cli/dist/commands/score.js.map +1 -0
- package/packages/cli/dist/commands/spec.d.ts +2 -0
- package/packages/cli/dist/commands/spec.js +12 -0
- package/packages/cli/dist/commands/spec.js.map +1 -0
- package/packages/cli/dist/commands/status.d.ts +2 -0
- package/packages/cli/dist/commands/status.js +48 -0
- package/packages/cli/dist/commands/status.js.map +1 -0
- package/packages/cli/dist/commands/validate.d.ts +2 -0
- package/packages/cli/dist/commands/validate.js +57 -0
- package/packages/cli/dist/commands/validate.js.map +1 -0
- package/packages/cli/dist/dispatcher.d.ts +1 -0
- package/packages/cli/dist/dispatcher.js +128 -0
- package/packages/cli/dist/dispatcher.js.map +1 -0
- package/packages/cli/dist/index.d.ts +3 -0
- package/packages/cli/dist/index.js +60 -0
- package/packages/cli/dist/index.js.map +1 -0
- package/packages/cli/package.json +58 -0
- package/packages/core/README.md +20 -0
- package/packages/core/dist/agent/adapter.d.ts +12 -0
- package/packages/core/dist/agent/adapter.js +32 -0
- package/packages/core/dist/agent/adapter.js.map +1 -0
- package/packages/core/dist/agent/context-gen.d.ts +7 -0
- package/packages/core/dist/agent/context-gen.js +12 -0
- package/packages/core/dist/agent/context-gen.js.map +1 -0
- package/packages/core/dist/common/logger.d.ts +17 -0
- package/packages/core/dist/common/logger.js +59 -0
- package/packages/core/dist/common/logger.js.map +1 -0
- package/packages/core/dist/common/paths.d.ts +22 -0
- package/packages/core/dist/common/paths.js +72 -0
- package/packages/core/dist/common/paths.js.map +1 -0
- package/packages/core/dist/common/preflight.d.ts +9 -0
- package/packages/core/dist/common/preflight.js +69 -0
- package/packages/core/dist/common/preflight.js.map +1 -0
- package/packages/core/dist/common/subprocess.d.ts +18 -0
- package/packages/core/dist/common/subprocess.js +79 -0
- package/packages/core/dist/common/subprocess.js.map +1 -0
- package/packages/core/dist/common/types.d.ts +77 -0
- package/packages/core/dist/common/types.js +2 -0
- package/packages/core/dist/common/types.js.map +1 -0
- package/packages/core/dist/config/manager.d.ts +31 -0
- package/packages/core/dist/config/manager.js +97 -0
- package/packages/core/dist/config/manager.js.map +1 -0
- package/packages/core/dist/config/schema.d.ts +210 -0
- package/packages/core/dist/config/schema.js +41 -0
- package/packages/core/dist/config/schema.js.map +1 -0
- package/packages/core/dist/gates/analyzer-gate.d.ts +6 -0
- package/packages/core/dist/gates/analyzer-gate.js +37 -0
- package/packages/core/dist/gates/analyzer-gate.js.map +1 -0
- package/packages/core/dist/gates/dependency.d.ts +5 -0
- package/packages/core/dist/gates/dependency.js +71 -0
- package/packages/core/dist/gates/dependency.js.map +1 -0
- package/packages/core/dist/gates/engine.d.ts +26 -0
- package/packages/core/dist/gates/engine.js +68 -0
- package/packages/core/dist/gates/engine.js.map +1 -0
- package/packages/core/dist/gates/execution.d.ts +9 -0
- package/packages/core/dist/gates/execution.js +88 -0
- package/packages/core/dist/gates/execution.js.map +1 -0
- package/packages/core/dist/gates/generic.d.ts +21 -0
- package/packages/core/dist/gates/generic.js +204 -0
- package/packages/core/dist/gates/generic.js.map +1 -0
- package/packages/core/dist/gates/import-resolver.d.ts +6 -0
- package/packages/core/dist/gates/import-resolver.js +78 -0
- package/packages/core/dist/gates/import-resolver.js.map +1 -0
- package/packages/core/dist/index.d.ts +23 -0
- package/packages/core/dist/index.js +30 -0
- package/packages/core/dist/index.js.map +1 -0
- package/packages/core/dist/locks/harness-guard.d.ts +32 -0
- package/packages/core/dist/locks/harness-guard.js +121 -0
- package/packages/core/dist/locks/harness-guard.js.map +1 -0
- package/packages/core/dist/locks/sprint-lock.d.ts +39 -0
- package/packages/core/dist/locks/sprint-lock.js +143 -0
- package/packages/core/dist/locks/sprint-lock.js.map +1 -0
- package/packages/core/dist/orchestrator.d.ts +8 -0
- package/packages/core/dist/orchestrator.js +160 -0
- package/packages/core/dist/orchestrator.js.map +1 -0
- package/packages/core/dist/security/policy.d.ts +10 -0
- package/packages/core/dist/security/policy.js +32 -0
- package/packages/core/dist/security/policy.js.map +1 -0
- package/packages/core/dist/security/redactor.d.ts +5 -0
- package/packages/core/dist/security/redactor.js +40 -0
- package/packages/core/dist/security/redactor.js.map +1 -0
- package/packages/core/dist/sprint/context.d.ts +27 -0
- package/packages/core/dist/sprint/context.js +119 -0
- package/packages/core/dist/sprint/context.js.map +1 -0
- package/packages/core/dist/sprint/scorer.d.ts +20 -0
- package/packages/core/dist/sprint/scorer.js +109 -0
- package/packages/core/dist/sprint/scorer.js.map +1 -0
- package/packages/core/dist/sprint/status.d.ts +20 -0
- package/packages/core/dist/sprint/status.js +81 -0
- package/packages/core/dist/sprint/status.js.map +1 -0
- package/packages/core/dist/sprint/validator.d.ts +17 -0
- package/packages/core/dist/sprint/validator.js +239 -0
- package/packages/core/dist/sprint/validator.js.map +1 -0
- package/packages/core/package.json +53 -0
- package/packages/prompts/README.md +30 -0
- package/packages/prompts/dist/index.d.ts +21 -0
- package/packages/prompts/dist/index.js +63 -0
- package/packages/prompts/dist/index.js.map +1 -0
- package/packages/prompts/package.json +46 -0
- package/schemas/config.schema.json +62 -0
- package/schemas/context.schema.json +36 -0
- package/schemas/index.schema.json +29 -0
- package/schemas/sprint.schema.json +109 -0
- package/templates/PRD-TEMPLATE.md +36 -0
- package/templates/SPEC-TEMPLATE.md +59 -0
- package/templates/SPRINT-TEMPLATE.json +62 -0
- 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
|
+
[](https://github.com/cmt-t/HardNess/actions/workflows/ci.yml)
|
|
8
|
+
[](https://www.npmjs.com/package/hardness)
|
|
9
|
+
[](https://opensource.org/licenses/MIT)
|
|
10
|
+
[](https://nodejs.org)
|
|
11
|
+
[](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,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"}
|