@ztothez/design-engineering 2.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/LICENSE +15 -0
- package/README.md +448 -0
- package/ROADMAP.md +127 -0
- package/SKILL.md +698 -0
- package/V2-ROADMAP.md +431 -0
- package/V3-ROADMAP.md +605 -0
- package/V4-ROADMAP.md +283 -0
- package/clean-room-ux-design-spec.md +1431 -0
- package/dist/cli/aggregate-gates.d.ts +2 -0
- package/dist/cli/aggregate-gates.js +86 -0
- package/dist/cli/aggregate-gates.js.map +1 -0
- package/dist/cli/assess-maintainer-review.d.ts +2 -0
- package/dist/cli/assess-maintainer-review.js +72 -0
- package/dist/cli/assess-maintainer-review.js.map +1 -0
- package/dist/cli/audit.d.ts +2 -0
- package/dist/cli/audit.js +71 -0
- package/dist/cli/audit.js.map +1 -0
- package/dist/cli/compile-comparison-review.d.ts +2 -0
- package/dist/cli/compile-comparison-review.js +154 -0
- package/dist/cli/compile-comparison-review.js.map +1 -0
- package/dist/cli/compile-plan.d.ts +2 -0
- package/dist/cli/compile-plan.js +66 -0
- package/dist/cli/compile-plan.js.map +1 -0
- package/dist/cli/evaluate-corpus.d.ts +2 -0
- package/dist/cli/evaluate-corpus.js +65 -0
- package/dist/cli/evaluate-corpus.js.map +1 -0
- package/dist/cli/generate-react.d.ts +2 -0
- package/dist/cli/generate-react.js +83 -0
- package/dist/cli/generate-react.js.map +1 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.js +58 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/portfolio.d.ts +2 -0
- package/dist/cli/portfolio.js +316 -0
- package/dist/cli/portfolio.js.map +1 -0
- package/dist/cli/quality-gate.d.ts +2 -0
- package/dist/cli/quality-gate.js +131 -0
- package/dist/cli/quality-gate.js.map +1 -0
- package/dist/cli/repair-react.d.ts +2 -0
- package/dist/cli/repair-react.js +163 -0
- package/dist/cli/repair-react.js.map +1 -0
- package/dist/cli/review-heuristics.d.ts +2 -0
- package/dist/cli/review-heuristics.js +68 -0
- package/dist/cli/review-heuristics.js.map +1 -0
- package/dist/cli/validate-brief.d.ts +2 -0
- package/dist/cli/validate-brief.js +58 -0
- package/dist/cli/validate-brief.js.map +1 -0
- package/dist/cli/validate-comparison.d.ts +2 -0
- package/dist/cli/validate-comparison.js +68 -0
- package/dist/cli/validate-comparison.js.map +1 -0
- package/dist/cli/validate-contract.d.ts +2 -0
- package/dist/cli/validate-contract.js +54 -0
- package/dist/cli/validate-contract.js.map +1 -0
- package/dist/cli/validate-design.d.ts +2 -0
- package/dist/cli/validate-design.js +53 -0
- package/dist/cli/validate-design.js.map +1 -0
- package/dist/cli/validate-information.d.ts +2 -0
- package/dist/cli/validate-information.js +53 -0
- package/dist/cli/validate-information.js.map +1 -0
- package/dist/cli/validate-trust.d.ts +2 -0
- package/dist/cli/validate-trust.js +53 -0
- package/dist/cli/validate-trust.js.map +1 -0
- package/dist/cli/verify-ui.d.ts +2 -0
- package/dist/cli/verify-ui.js +181 -0
- package/dist/cli/verify-ui.js.map +1 -0
- package/dist/src/acceptance/evaluator.d.ts +13 -0
- package/dist/src/acceptance/evaluator.js +201 -0
- package/dist/src/acceptance/evaluator.js.map +1 -0
- package/dist/src/acceptance/loader.d.ts +2 -0
- package/dist/src/acceptance/loader.js +18 -0
- package/dist/src/acceptance/loader.js.map +1 -0
- package/dist/src/acceptance/report.d.ts +2 -0
- package/dist/src/acceptance/report.js +18 -0
- package/dist/src/acceptance/report.js.map +1 -0
- package/dist/src/acceptance/schema.d.ts +64 -0
- package/dist/src/acceptance/schema.js +57 -0
- package/dist/src/acceptance/schema.js.map +1 -0
- package/dist/src/acceptance/types.d.ts +47 -0
- package/dist/src/acceptance/types.js +2 -0
- package/dist/src/acceptance/types.js.map +1 -0
- package/dist/src/aggregate/report.d.ts +2 -0
- package/dist/src/aggregate/report.js +33 -0
- package/dist/src/aggregate/report.js.map +1 -0
- package/dist/src/aggregate/runner.d.ts +2 -0
- package/dist/src/aggregate/runner.js +165 -0
- package/dist/src/aggregate/runner.js.map +1 -0
- package/dist/src/aggregate/schema.d.ts +182 -0
- package/dist/src/aggregate/schema.js +54 -0
- package/dist/src/aggregate/schema.js.map +1 -0
- package/dist/src/aggregate/types.d.ts +57 -0
- package/dist/src/aggregate/types.js +2 -0
- package/dist/src/aggregate/types.js.map +1 -0
- package/dist/src/audit/policy.d.ts +3 -0
- package/dist/src/audit/policy.js +45 -0
- package/dist/src/audit/policy.js.map +1 -0
- package/dist/src/audit/report.d.ts +2 -0
- package/dist/src/audit/report.js +32 -0
- package/dist/src/audit/report.js.map +1 -0
- package/dist/src/audit/rules/accessibility-name.d.ts +2 -0
- package/dist/src/audit/rules/accessibility-name.js +64 -0
- package/dist/src/audit/rules/accessibility-name.js.map +1 -0
- package/dist/src/audit/rules/component-size.d.ts +2 -0
- package/dist/src/audit/rules/component-size.js +27 -0
- package/dist/src/audit/rules/component-size.js.map +1 -0
- package/dist/src/audit/rules/credential-placeholder.d.ts +2 -0
- package/dist/src/audit/rules/credential-placeholder.js +83 -0
- package/dist/src/audit/rules/credential-placeholder.js.map +1 -0
- package/dist/src/audit/rules/helpers.d.ts +16 -0
- package/dist/src/audit/rules/helpers.js +64 -0
- package/dist/src/audit/rules/helpers.js.map +1 -0
- package/dist/src/audit/rules/index.d.ts +2 -0
- package/dist/src/audit/rules/index.js +23 -0
- package/dist/src/audit/rules/index.js.map +1 -0
- package/dist/src/audit/rules/interactive-integrity.d.ts +2 -0
- package/dist/src/audit/rules/interactive-integrity.js +111 -0
- package/dist/src/audit/rules/interactive-integrity.js.map +1 -0
- package/dist/src/audit/rules/mixed-responsibilities.d.ts +2 -0
- package/dist/src/audit/rules/mixed-responsibilities.js +39 -0
- package/dist/src/audit/rules/mixed-responsibilities.js.map +1 -0
- package/dist/src/audit/rules/mock-production-path.d.ts +2 -0
- package/dist/src/audit/rules/mock-production-path.js +39 -0
- package/dist/src/audit/rules/mock-production-path.js.map +1 -0
- package/dist/src/audit/rules/network-state.d.ts +2 -0
- package/dist/src/audit/rules/network-state.js +39 -0
- package/dist/src/audit/rules/network-state.js.map +1 -0
- package/dist/src/audit/rules/operational-claim.d.ts +2 -0
- package/dist/src/audit/rules/operational-claim.js +94 -0
- package/dist/src/audit/rules/operational-claim.js.map +1 -0
- package/dist/src/audit/rules/placeholder-interaction.d.ts +2 -0
- package/dist/src/audit/rules/placeholder-interaction.js +46 -0
- package/dist/src/audit/rules/placeholder-interaction.js.map +1 -0
- package/dist/src/audit/rules/raw-design-values.d.ts +2 -0
- package/dist/src/audit/rules/raw-design-values.js +97 -0
- package/dist/src/audit/rules/raw-design-values.js.map +1 -0
- package/dist/src/audit/scanner.d.ts +2 -0
- package/dist/src/audit/scanner.js +215 -0
- package/dist/src/audit/scanner.js.map +1 -0
- package/dist/src/audit/types.d.ts +62 -0
- package/dist/src/audit/types.js +2 -0
- package/dist/src/audit/types.js.map +1 -0
- package/dist/src/comparison/evaluator.d.ts +2 -0
- package/dist/src/comparison/evaluator.js +478 -0
- package/dist/src/comparison/evaluator.js.map +1 -0
- package/dist/src/comparison/loader.d.ts +3 -0
- package/dist/src/comparison/loader.js +26 -0
- package/dist/src/comparison/loader.js.map +1 -0
- package/dist/src/comparison/maintainer.d.ts +47 -0
- package/dist/src/comparison/maintainer.js +218 -0
- package/dist/src/comparison/maintainer.js.map +1 -0
- package/dist/src/comparison/report.d.ts +2 -0
- package/dist/src/comparison/report.js +48 -0
- package/dist/src/comparison/report.js.map +1 -0
- package/dist/src/comparison/schema.d.ts +464 -0
- package/dist/src/comparison/schema.js +502 -0
- package/dist/src/comparison/schema.js.map +1 -0
- package/dist/src/contracts/archetypes.d.ts +21 -0
- package/dist/src/contracts/archetypes.js +102 -0
- package/dist/src/contracts/archetypes.js.map +1 -0
- package/dist/src/contracts/journeys.d.ts +7 -0
- package/dist/src/contracts/journeys.js +32 -0
- package/dist/src/contracts/journeys.js.map +1 -0
- package/dist/src/contracts/report.d.ts +2 -0
- package/dist/src/contracts/report.js +33 -0
- package/dist/src/contracts/report.js.map +1 -0
- package/dist/src/contracts/schema.d.ts +1038 -0
- package/dist/src/contracts/schema.js +385 -0
- package/dist/src/contracts/schema.js.map +1 -0
- package/dist/src/contracts/validator.d.ts +12 -0
- package/dist/src/contracts/validator.js +303 -0
- package/dist/src/contracts/validator.js.map +1 -0
- package/dist/src/corpus/evaluator.d.ts +2 -0
- package/dist/src/corpus/evaluator.js +203 -0
- package/dist/src/corpus/evaluator.js.map +1 -0
- package/dist/src/corpus/loader.d.ts +2 -0
- package/dist/src/corpus/loader.js +20 -0
- package/dist/src/corpus/loader.js.map +1 -0
- package/dist/src/corpus/report.d.ts +2 -0
- package/dist/src/corpus/report.js +33 -0
- package/dist/src/corpus/report.js.map +1 -0
- package/dist/src/corpus/schema.d.ts +316 -0
- package/dist/src/corpus/schema.js +269 -0
- package/dist/src/corpus/schema.js.map +1 -0
- package/dist/src/design-intelligence/loader.d.ts +2 -0
- package/dist/src/design-intelligence/loader.js +21 -0
- package/dist/src/design-intelligence/loader.js.map +1 -0
- package/dist/src/design-intelligence/report.d.ts +2 -0
- package/dist/src/design-intelligence/report.js +36 -0
- package/dist/src/design-intelligence/report.js.map +1 -0
- package/dist/src/design-intelligence/schema.d.ts +838 -0
- package/dist/src/design-intelligence/schema.js +854 -0
- package/dist/src/design-intelligence/schema.js.map +1 -0
- package/dist/src/design-intelligence/validator.d.ts +2 -0
- package/dist/src/design-intelligence/validator.js +1371 -0
- package/dist/src/design-intelligence/validator.js.map +1 -0
- package/dist/src/design-plan/compiler.d.ts +8 -0
- package/dist/src/design-plan/compiler.js +288 -0
- package/dist/src/design-plan/compiler.js.map +1 -0
- package/dist/src/design-plan/report.d.ts +2 -0
- package/dist/src/design-plan/report.js +28 -0
- package/dist/src/design-plan/report.js.map +1 -0
- package/dist/src/design-plan/schema.d.ts +202 -0
- package/dist/src/design-plan/schema.js +76 -0
- package/dist/src/design-plan/schema.js.map +1 -0
- package/dist/src/generation/loader.d.ts +2 -0
- package/dist/src/generation/loader.js +21 -0
- package/dist/src/generation/loader.js.map +1 -0
- package/dist/src/generation/policy.d.ts +12 -0
- package/dist/src/generation/policy.js +62 -0
- package/dist/src/generation/policy.js.map +1 -0
- package/dist/src/generation/react-typescript.d.ts +6 -0
- package/dist/src/generation/react-typescript.js +538 -0
- package/dist/src/generation/react-typescript.js.map +1 -0
- package/dist/src/generation/report.d.ts +2 -0
- package/dist/src/generation/report.js +21 -0
- package/dist/src/generation/report.js.map +1 -0
- package/dist/src/generation/schema.d.ts +44 -0
- package/dist/src/generation/schema.js +50 -0
- package/dist/src/generation/schema.js.map +1 -0
- package/dist/src/generation/templates/tokens.d.ts +1 -0
- package/dist/src/generation/templates/tokens.js +59 -0
- package/dist/src/generation/templates/tokens.js.map +1 -0
- package/dist/src/heuristics/evaluator.d.ts +2 -0
- package/dist/src/heuristics/evaluator.js +65 -0
- package/dist/src/heuristics/evaluator.js.map +1 -0
- package/dist/src/heuristics/loader.d.ts +2 -0
- package/dist/src/heuristics/loader.js +21 -0
- package/dist/src/heuristics/loader.js.map +1 -0
- package/dist/src/heuristics/report.d.ts +3 -0
- package/dist/src/heuristics/report.js +31 -0
- package/dist/src/heuristics/report.js.map +1 -0
- package/dist/src/heuristics/schema.d.ts +198 -0
- package/dist/src/heuristics/schema.js +197 -0
- package/dist/src/heuristics/schema.js.map +1 -0
- package/dist/src/information-design/loader.d.ts +2 -0
- package/dist/src/information-design/loader.js +21 -0
- package/dist/src/information-design/loader.js.map +1 -0
- package/dist/src/information-design/report.d.ts +2 -0
- package/dist/src/information-design/report.js +27 -0
- package/dist/src/information-design/report.js.map +1 -0
- package/dist/src/information-design/schema.d.ts +370 -0
- package/dist/src/information-design/schema.js +329 -0
- package/dist/src/information-design/schema.js.map +1 -0
- package/dist/src/information-design/validator.d.ts +2 -0
- package/dist/src/information-design/validator.js +242 -0
- package/dist/src/information-design/validator.js.map +1 -0
- package/dist/src/interface-trust/loader.d.ts +2 -0
- package/dist/src/interface-trust/loader.js +21 -0
- package/dist/src/interface-trust/loader.js.map +1 -0
- package/dist/src/interface-trust/report.d.ts +2 -0
- package/dist/src/interface-trust/report.js +26 -0
- package/dist/src/interface-trust/report.js.map +1 -0
- package/dist/src/interface-trust/schema.d.ts +299 -0
- package/dist/src/interface-trust/schema.js +238 -0
- package/dist/src/interface-trust/schema.js.map +1 -0
- package/dist/src/interface-trust/validator.d.ts +2 -0
- package/dist/src/interface-trust/validator.js +283 -0
- package/dist/src/interface-trust/validator.js.map +1 -0
- package/dist/src/portfolio/adapter-report.d.ts +3 -0
- package/dist/src/portfolio/adapter-report.js +38 -0
- package/dist/src/portfolio/adapter-report.js.map +1 -0
- package/dist/src/portfolio/adapters.d.ts +37 -0
- package/dist/src/portfolio/adapters.js +325 -0
- package/dist/src/portfolio/adapters.js.map +1 -0
- package/dist/src/portfolio/evidence.d.ts +9 -0
- package/dist/src/portfolio/evidence.js +233 -0
- package/dist/src/portfolio/evidence.js.map +1 -0
- package/dist/src/portfolio/files.d.ts +8 -0
- package/dist/src/portfolio/files.js +77 -0
- package/dist/src/portfolio/files.js.map +1 -0
- package/dist/src/portfolio/fixture-server.d.ts +11 -0
- package/dist/src/portfolio/fixture-server.js +131 -0
- package/dist/src/portfolio/fixture-server.js.map +1 -0
- package/dist/src/portfolio/loader.d.ts +2 -0
- package/dist/src/portfolio/loader.js +21 -0
- package/dist/src/portfolio/loader.js.map +1 -0
- package/dist/src/portfolio/mcp.d.ts +186 -0
- package/dist/src/portfolio/mcp.js +117 -0
- package/dist/src/portfolio/mcp.js.map +1 -0
- package/dist/src/portfolio/promotion-schema.d.ts +220 -0
- package/dist/src/portfolio/promotion-schema.js +148 -0
- package/dist/src/portfolio/promotion-schema.js.map +1 -0
- package/dist/src/portfolio/promotion.d.ts +4 -0
- package/dist/src/portfolio/promotion.js +160 -0
- package/dist/src/portfolio/promotion.js.map +1 -0
- package/dist/src/portfolio/qualification-schema.d.ts +268 -0
- package/dist/src/portfolio/qualification-schema.js +112 -0
- package/dist/src/portfolio/qualification-schema.js.map +1 -0
- package/dist/src/portfolio/qualification.d.ts +4 -0
- package/dist/src/portfolio/qualification.js +157 -0
- package/dist/src/portfolio/qualification.js.map +1 -0
- package/dist/src/portfolio/registry.d.ts +34 -0
- package/dist/src/portfolio/registry.js +240 -0
- package/dist/src/portfolio/registry.js.map +1 -0
- package/dist/src/portfolio/report.d.ts +4 -0
- package/dist/src/portfolio/report.js +47 -0
- package/dist/src/portfolio/report.js.map +1 -0
- package/dist/src/portfolio/run-schema.d.ts +135 -0
- package/dist/src/portfolio/run-schema.js +81 -0
- package/dist/src/portfolio/run-schema.js.map +1 -0
- package/dist/src/portfolio/runner.d.ts +118 -0
- package/dist/src/portfolio/runner.js +423 -0
- package/dist/src/portfolio/runner.js.map +1 -0
- package/dist/src/portfolio/schema.d.ts +251 -0
- package/dist/src/portfolio/schema.js +317 -0
- package/dist/src/portfolio/schema.js.map +1 -0
- package/dist/src/portfolio/snapshot.d.ts +89 -0
- package/dist/src/portfolio/snapshot.js +548 -0
- package/dist/src/portfolio/snapshot.js.map +1 -0
- package/dist/src/portfolio/taxonomy-schema.d.ts +215 -0
- package/dist/src/portfolio/taxonomy-schema.js +74 -0
- package/dist/src/portfolio/taxonomy-schema.js.map +1 -0
- package/dist/src/portfolio/taxonomy.d.ts +5 -0
- package/dist/src/portfolio/taxonomy.js +236 -0
- package/dist/src/portfolio/taxonomy.js.map +1 -0
- package/dist/src/portfolio/vault.d.ts +53 -0
- package/dist/src/portfolio/vault.js +176 -0
- package/dist/src/portfolio/vault.js.map +1 -0
- package/dist/src/product-brief/loader.d.ts +2 -0
- package/dist/src/product-brief/loader.js +21 -0
- package/dist/src/product-brief/loader.js.map +1 -0
- package/dist/src/product-brief/report.d.ts +2 -0
- package/dist/src/product-brief/report.js +22 -0
- package/dist/src/product-brief/report.js.map +1 -0
- package/dist/src/product-brief/schema.d.ts +367 -0
- package/dist/src/product-brief/schema.js +272 -0
- package/dist/src/product-brief/schema.js.map +1 -0
- package/dist/src/product-brief/validator.d.ts +2 -0
- package/dist/src/product-brief/validator.js +251 -0
- package/dist/src/product-brief/validator.js.map +1 -0
- package/dist/src/product.d.ts +7 -0
- package/dist/src/product.js +28 -0
- package/dist/src/product.js.map +1 -0
- package/dist/src/quality-gate/report.d.ts +2 -0
- package/dist/src/quality-gate/report.js +46 -0
- package/dist/src/quality-gate/report.js.map +1 -0
- package/dist/src/quality-gate/runner.d.ts +2 -0
- package/dist/src/quality-gate/runner.js +175 -0
- package/dist/src/quality-gate/runner.js.map +1 -0
- package/dist/src/quality-gate/schema.d.ts +75 -0
- package/dist/src/quality-gate/schema.js +37 -0
- package/dist/src/quality-gate/schema.js.map +1 -0
- package/dist/src/quality-gate/types.d.ts +49 -0
- package/dist/src/quality-gate/types.js +2 -0
- package/dist/src/quality-gate/types.js.map +1 -0
- package/dist/src/repair/loader.d.ts +2 -0
- package/dist/src/repair/loader.js +11 -0
- package/dist/src/repair/loader.js.map +1 -0
- package/dist/src/repair/policy.d.ts +16 -0
- package/dist/src/repair/policy.js +65 -0
- package/dist/src/repair/policy.js.map +1 -0
- package/dist/src/repair/report.d.ts +2 -0
- package/dist/src/repair/report.js +32 -0
- package/dist/src/repair/report.js.map +1 -0
- package/dist/src/repair/runner.d.ts +17 -0
- package/dist/src/repair/runner.js +511 -0
- package/dist/src/repair/runner.js.map +1 -0
- package/dist/src/repair/schema.d.ts +264 -0
- package/dist/src/repair/schema.js +202 -0
- package/dist/src/repair/schema.js.map +1 -0
- package/dist/src/retrieval/report.d.ts +2 -0
- package/dist/src/retrieval/report.js +21 -0
- package/dist/src/retrieval/report.js.map +1 -0
- package/dist/src/retrieval/schema.d.ts +123 -0
- package/dist/src/retrieval/schema.js +77 -0
- package/dist/src/retrieval/schema.js.map +1 -0
- package/dist/src/retrieval/search.d.ts +26 -0
- package/dist/src/retrieval/search.js +415 -0
- package/dist/src/retrieval/search.js.map +1 -0
- package/dist/src/runtime/advanced-checks.d.ts +6 -0
- package/dist/src/runtime/advanced-checks.js +487 -0
- package/dist/src/runtime/advanced-checks.js.map +1 -0
- package/dist/src/runtime/composition-checks.d.ts +5 -0
- package/dist/src/runtime/composition-checks.js +307 -0
- package/dist/src/runtime/composition-checks.js.map +1 -0
- package/dist/src/runtime/interface-checks.d.ts +12 -0
- package/dist/src/runtime/interface-checks.js +224 -0
- package/dist/src/runtime/interface-checks.js.map +1 -0
- package/dist/src/runtime/policy.d.ts +13 -0
- package/dist/src/runtime/policy.js +97 -0
- package/dist/src/runtime/policy.js.map +1 -0
- package/dist/src/runtime/report.d.ts +2 -0
- package/dist/src/runtime/report.js +48 -0
- package/dist/src/runtime/report.js.map +1 -0
- package/dist/src/runtime/schema.d.ts +406 -0
- package/dist/src/runtime/schema.js +308 -0
- package/dist/src/runtime/schema.js.map +1 -0
- package/dist/src/runtime/types.d.ts +177 -0
- package/dist/src/runtime/types.js +2 -0
- package/dist/src/runtime/types.js.map +1 -0
- package/dist/src/runtime/verifier.d.ts +2 -0
- package/dist/src/runtime/verifier.js +1201 -0
- package/dist/src/runtime/verifier.js.map +1 -0
- package/dist/src/server.d.ts +2 -0
- package/dist/src/server.js +1352 -0
- package/dist/src/server.js.map +1 -0
- package/docs/installation.md +337 -0
- package/knowledge-base/INDEX.md +285 -0
- package/knowledge-base/benchmarks/aegisops/CALIBRATION.md +52 -0
- package/knowledge-base/benchmarks/aegisops/MANIFEST.md +56 -0
- package/knowledge-base/benchmarks/aegisops/SOURCE-EVIDENCE.md +45 -0
- package/knowledge-base/benchmarks/aegisops/acceptance-criteria.md +42 -0
- package/knowledge-base/benchmarks/aegisops/anti-patterns.md +19 -0
- package/knowledge-base/benchmarks/aegisops/attestations.template.yaml +3 -0
- package/knowledge-base/benchmarks/aegisops/attestations.yaml +115 -0
- package/knowledge-base/benchmarks/aegisops/journeys.json +91 -0
- package/knowledge-base/benchmarks/aegisops/product-contract.yaml +328 -0
- package/knowledge-base/benchmarks/azure-optimizer/SOURCE-EVIDENCE.md +26 -0
- package/knowledge-base/benchmarks/azure-optimizer/V2-IMPLEMENTATION.md +39 -0
- package/knowledge-base/benchmarks/azure-optimizer/acceptance-criteria.md +23 -0
- package/knowledge-base/benchmarks/azure-optimizer/anti-patterns.md +13 -0
- package/knowledge-base/benchmarks/azure-optimizer/journeys.json +88 -0
- package/knowledge-base/benchmarks/azure-optimizer/product-contract.yaml +216 -0
- package/knowledge-base/benchmarks/azure-optimizer/v2-human-review-methodology.yaml +171 -0
- package/knowledge-base/benchmarks/azure-optimizer/v2-journeys.json +139 -0
- package/knowledge-base/benchmarks/corpus/PROVENANCE.md +21 -0
- package/knowledge-base/benchmarks/corpus/README.md +30 -0
- package/knowledge-base/benchmarks/corpus/cases/anti-slop-negative/package.json +9 -0
- package/knowledge-base/benchmarks/corpus/cases/anti-slop-negative/src/FakeDashboard.tsx +10 -0
- package/knowledge-base/benchmarks/corpus/cases/anti-slop-positive/package.json +9 -0
- package/knowledge-base/benchmarks/corpus/cases/anti-slop-positive/src/Progress.tsx +15 -0
- package/knowledge-base/benchmarks/corpus/cases/architecture-negative/package.json +9 -0
- package/knowledge-base/benchmarks/corpus/cases/architecture-negative/src/OperationsPanel.tsx +40 -0
- package/knowledge-base/benchmarks/corpus/cases/architecture-positive/package.json +9 -0
- package/knowledge-base/benchmarks/corpus/cases/architecture-positive/src/Dashboard.tsx +17 -0
- package/knowledge-base/benchmarks/corpus/cases/architecture-positive/src/theme.css +15 -0
- package/knowledge-base/benchmarks/corpus/cases/task-incomplete/SOURCE-EVIDENCE.md +3 -0
- package/knowledge-base/benchmarks/corpus/cases/task-incomplete/journeys.json +20 -0
- package/knowledge-base/benchmarks/corpus/cases/task-incomplete/product-contract.yaml +78 -0
- package/knowledge-base/benchmarks/corpus/corpus.schema.yaml +159 -0
- package/knowledge-base/benchmarks/corpus/corpus.yaml +209 -0
- package/knowledge-base/benchmarks/interface-quality/README.md +26 -0
- package/knowledge-base/benchmarks/interface-quality/SOLO-MAINTAINER-TRACK.md +35 -0
- package/knowledge-base/benchmarks/interface-quality/comparison-methodology-v1.1.schema.yaml +288 -0
- package/knowledge-base/benchmarks/interface-quality/comparison-methodology.schema.yaml +235 -0
- package/knowledge-base/benchmarks/interface-quality/comparison-methodology.template.yaml +181 -0
- package/knowledge-base/benchmarks/interface-quality/evidence/example-runtime-report.json +11 -0
- package/knowledge-base/benchmarks/interface-quality/review-session.schema.yaml +14 -0
- package/knowledge-base/benchmarks/interface-quality/review.schema.yaml +296 -0
- package/knowledge-base/benchmarks/interface-quality/review.template.yaml +43 -0
- package/knowledge-base/benchmarks/portfolio-corpus/ADAPTERS.md +68 -0
- package/knowledge-base/benchmarks/portfolio-corpus/PORTFOLIO-RUNNER.md +131 -0
- package/knowledge-base/benchmarks/portfolio-corpus/PRODUCT-TASK-CONTRACTS.md +29 -0
- package/knowledge-base/benchmarks/portfolio-corpus/PROMOTED-RULES.md +31 -0
- package/knowledge-base/benchmarks/portfolio-corpus/archetype-profiles.yaml +26 -0
- package/knowledge-base/benchmarks/portfolio-corpus/product-task-profile.schema.yaml +105 -0
- package/knowledge-base/benchmarks/portfolio-corpus/registry.schema.yaml +188 -0
- package/knowledge-base/benchmarks/portfolio-corpus/registry.template.yaml +63 -0
- package/knowledge-base/benchmarks/portfolio-corpus/rule-fixtures/component-size-abstention.json +10 -0
- package/knowledge-base/benchmarks/portfolio-corpus/rule-fixtures/component-size-negative.json +10 -0
- package/knowledge-base/benchmarks/portfolio-corpus/rule-fixtures/component-size-positive.json +10 -0
- package/knowledge-base/benchmarks/portfolio-corpus/rule-fixtures/interactive-integrity-abstention.json +10 -0
- package/knowledge-base/benchmarks/portfolio-corpus/rule-fixtures/interactive-integrity-negative.json +10 -0
- package/knowledge-base/benchmarks/portfolio-corpus/rule-fixtures/interactive-integrity-positive.json +10 -0
- package/knowledge-base/benchmarks/portfolio-corpus/rule-fixtures/raw-design-values-abstention.json +10 -0
- package/knowledge-base/benchmarks/portfolio-corpus/rule-fixtures/raw-design-values-negative.json +10 -0
- package/knowledge-base/benchmarks/portfolio-corpus/rule-fixtures/raw-design-values-positive.json +10 -0
- package/knowledge-base/benchmarks/portfolio-corpus/rule-holdout-evaluation.template.json +14 -0
- package/knowledge-base/benchmarks/portfolio-corpus/rule-promotion-evidence.template.json +24 -0
- package/knowledge-base/benchmarks/portfolio-corpus/v3-command-evidence.template.json +17 -0
- package/knowledge-base/benchmarks/portfolio-corpus/v3-qualification-evidence.template.json +29 -0
- package/knowledge-base/benchmarks/scenestart/CALIBRATION.md +95 -0
- package/knowledge-base/benchmarks/scenestart/MANIFEST.md +53 -0
- package/knowledge-base/benchmarks/scenestart/SOURCE-EVIDENCE.md +43 -0
- package/knowledge-base/benchmarks/scenestart/acceptance-criteria.md +59 -0
- package/knowledge-base/benchmarks/scenestart/anti-patterns.md +26 -0
- package/knowledge-base/benchmarks/scenestart/attestations.template.yaml +3 -0
- package/knowledge-base/benchmarks/scenestart/attestations.yaml +21 -0
- package/knowledge-base/benchmarks/scenestart/human-review.md +99 -0
- package/knowledge-base/benchmarks/scenestart/human-review.template.md +105 -0
- package/knowledge-base/benchmarks/scenestart/journeys.json +141 -0
- package/knowledge-base/benchmarks/scenestart/product-contract.yaml +427 -0
- package/knowledge-base/dependencies.yaml +69 -0
- package/knowledge-base/design-intelligence/MASTER.md +87 -0
- package/knowledge-base/design-intelligence/asset-generation.md +66 -0
- package/knowledge-base/design-intelligence/brand-systems.md +69 -0
- package/knowledge-base/design-intelligence/closed-loop-repair.md +95 -0
- package/knowledge-base/design-intelligence/design-deliverable.schema.yaml +1194 -0
- package/knowledge-base/design-intelligence/design-deliverable.template.yaml +591 -0
- package/knowledge-base/design-intelligence/design-plan.md +78 -0
- package/knowledge-base/design-intelligence/design-plan.schema.yaml +621 -0
- package/knowledge-base/design-intelligence/figma-production.md +63 -0
- package/knowledge-base/design-intelligence/generation-adapter.md +72 -0
- package/knowledge-base/design-intelligence/generation-adapter.schema.yaml +47 -0
- package/knowledge-base/design-intelligence/iconography.md +46 -0
- package/knowledge-base/design-intelligence/information-design.md +104 -0
- package/knowledge-base/design-intelligence/information-design.schema.yaml +390 -0
- package/knowledge-base/design-intelligence/information-design.template.yaml +281 -0
- package/knowledge-base/design-intelligence/interaction-recovery-verification.md +72 -0
- package/knowledge-base/design-intelligence/interface-trust.md +103 -0
- package/knowledge-base/design-intelligence/interface-trust.schema.yaml +263 -0
- package/knowledge-base/design-intelligence/interface-trust.template.yaml +173 -0
- package/knowledge-base/design-intelligence/licensing-and-provenance.md +59 -0
- package/knowledge-base/design-intelligence/presentation-design.md +56 -0
- package/knowledge-base/design-intelligence/product-design-brief.md +67 -0
- package/knowledge-base/design-intelligence/product-design-brief.schema.yaml +279 -0
- package/knowledge-base/design-intelligence/product-design-brief.template.yaml +225 -0
- package/knowledge-base/design-intelligence/repair-request.schema.yaml +95 -0
- package/knowledge-base/design-intelligence/repair-request.template.yaml +39 -0
- package/knowledge-base/design-intelligence/visual-accessibility.md +56 -0
- package/knowledge-base/design-intelligence/visual-polish.md +172 -0
- package/knowledge-base/maintained/architecture/MASTER.md +22 -0
- package/knowledge-base/maintained/architecture/component-boundaries.md +30 -0
- package/knowledge-base/maintained/architecture/product-platforms.md +25 -0
- package/knowledge-base/maintained/architecture/quality-attributes-and-evaluation.md +35 -0
- package/knowledge-base/maintained/product-patterns/MASTER.md +10 -0
- package/knowledge-base/maintained/product-patterns/ai-workspaces.md +26 -0
- package/knowledge-base/maintained/product-patterns/operational-dashboards.md +22 -0
- package/knowledge-base/provenance.yaml +196 -0
- package/knowledge-base/retrieval-scope.yaml +43 -0
- package/knowledge-base/usability-evaluation/HEURISTIC_EVALUATION.md +115 -0
- package/knowledge-base/usability-evaluation/heuristic-review.schema.yaml +210 -0
- package/knowledge-base/usability-evaluation/heuristic-review.template.yaml +37 -0
- package/package.json +133 -0
|
@@ -0,0 +1,538 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { mkdir, mkdtemp, rename, rm, writeFile } from "node:fs/promises";
|
|
3
|
+
import { dirname, join } from "node:path";
|
|
4
|
+
import { authorizeGenerationTarget } from "./policy.js";
|
|
5
|
+
import { generationManifestSchema, generationReportSchema, } from "./schema.js";
|
|
6
|
+
import { tokenStyles } from "./templates/tokens.js";
|
|
7
|
+
export const REACT_TYPESCRIPT_ADAPTER_VERSION = "1.2.1";
|
|
8
|
+
function digest(content) {
|
|
9
|
+
return createHash("sha256").update(content).digest("hex");
|
|
10
|
+
}
|
|
11
|
+
function json(value) {
|
|
12
|
+
return JSON.stringify(value, null, 2);
|
|
13
|
+
}
|
|
14
|
+
function packageName(plan) {
|
|
15
|
+
return `${plan.id}-fixture`.slice(0, 214);
|
|
16
|
+
}
|
|
17
|
+
function planSource(plan) {
|
|
18
|
+
const route = plan.routes[0];
|
|
19
|
+
const taskComponents = plan.components.filter((entry) => entry.taskRef === route.taskRef);
|
|
20
|
+
const taskStates = plan.stateOwnership.filter((entry) => entry.taskRefs.includes(route.taskRef));
|
|
21
|
+
const summary = {
|
|
22
|
+
product: plan.product,
|
|
23
|
+
planId: plan.id,
|
|
24
|
+
sourceDigest: plan.sourceBrief.digest,
|
|
25
|
+
task: { id: route.taskRef, label: route.purpose, route: route.path },
|
|
26
|
+
informationFlow: plan.informationArchitecture.map(({ id, order, label, purpose }) => ({ id, order, label, purpose })),
|
|
27
|
+
components: taskComponents.map(({ id, boundary, responsibility, ownsState }) => ({ id, boundary, responsibility, ownsState })),
|
|
28
|
+
states: taskStates.map(({ state, behavior, recovery, disclosure }) => ({ state, behavior, recovery, disclosure })),
|
|
29
|
+
verification: plan.verificationObligations
|
|
30
|
+
.filter((entry) => entry.taskRefs.includes(route.taskRef))
|
|
31
|
+
.map(({ id, method, blocking, expectedEvidence }) => ({ id, method, blocking, expectedEvidence })),
|
|
32
|
+
};
|
|
33
|
+
return `export const generatedPlan = ${json(summary)} as const;\n`;
|
|
34
|
+
}
|
|
35
|
+
function generatedFiles(plan) {
|
|
36
|
+
const files = new Map();
|
|
37
|
+
files.set("package.json", `${json({
|
|
38
|
+
name: packageName(plan),
|
|
39
|
+
private: true,
|
|
40
|
+
version: "0.0.0",
|
|
41
|
+
type: "module",
|
|
42
|
+
scripts: {
|
|
43
|
+
build: "tsc -b && vite build",
|
|
44
|
+
test: "vitest run",
|
|
45
|
+
typecheck: "tsc -b --pretty false",
|
|
46
|
+
dev: "vite",
|
|
47
|
+
preview: "vite preview",
|
|
48
|
+
},
|
|
49
|
+
dependencies: { react: "19.1.1", "react-dom": "19.1.1" },
|
|
50
|
+
devDependencies: {
|
|
51
|
+
"@types/react": "19.1.10",
|
|
52
|
+
"@types/react-dom": "19.1.7",
|
|
53
|
+
"@vitejs/plugin-react": "5.0.4",
|
|
54
|
+
typescript: "5.9.3",
|
|
55
|
+
vite: "7.3.6",
|
|
56
|
+
vitest: "3.2.7",
|
|
57
|
+
},
|
|
58
|
+
})}\n`);
|
|
59
|
+
files.set("index.html", `<!doctype html>
|
|
60
|
+
<html lang="en">
|
|
61
|
+
<head>
|
|
62
|
+
<meta charset="UTF-8" />
|
|
63
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
64
|
+
<meta name="color-scheme" content="light dark" />
|
|
65
|
+
<link rel="icon" href="data:," />
|
|
66
|
+
<title>${plan.product.replace(/[<>&"]/g, "")}</title>
|
|
67
|
+
</head>
|
|
68
|
+
<body>
|
|
69
|
+
<div id="root"></div>
|
|
70
|
+
<script type="module" src="/src/main.tsx"></script>
|
|
71
|
+
</body>
|
|
72
|
+
</html>
|
|
73
|
+
`);
|
|
74
|
+
files.set("tsconfig.json", `${json({
|
|
75
|
+
files: [],
|
|
76
|
+
references: [{ path: "./tsconfig.app.json" }, { path: "./tsconfig.node.json" }],
|
|
77
|
+
})}\n`);
|
|
78
|
+
files.set("tsconfig.app.json", `${json({
|
|
79
|
+
compilerOptions: {
|
|
80
|
+
target: "ES2022",
|
|
81
|
+
useDefineForClassFields: true,
|
|
82
|
+
lib: ["ES2022", "DOM", "DOM.Iterable"],
|
|
83
|
+
allowJs: false,
|
|
84
|
+
skipLibCheck: true,
|
|
85
|
+
esModuleInterop: true,
|
|
86
|
+
allowSyntheticDefaultImports: true,
|
|
87
|
+
strict: true,
|
|
88
|
+
forceConsistentCasingInFileNames: true,
|
|
89
|
+
module: "ESNext",
|
|
90
|
+
moduleResolution: "Bundler",
|
|
91
|
+
resolveJsonModule: true,
|
|
92
|
+
isolatedModules: true,
|
|
93
|
+
noEmit: true,
|
|
94
|
+
jsx: "react-jsx",
|
|
95
|
+
noUncheckedIndexedAccess: true,
|
|
96
|
+
},
|
|
97
|
+
include: ["src"],
|
|
98
|
+
})}\n`);
|
|
99
|
+
files.set("tsconfig.node.json", `${json({
|
|
100
|
+
compilerOptions: {
|
|
101
|
+
composite: true,
|
|
102
|
+
skipLibCheck: true,
|
|
103
|
+
module: "ESNext",
|
|
104
|
+
moduleResolution: "Bundler",
|
|
105
|
+
strict: true,
|
|
106
|
+
},
|
|
107
|
+
include: ["vite.config.ts"],
|
|
108
|
+
})}\n`);
|
|
109
|
+
files.set("vite.config.ts", `import { defineConfig, type Plugin } from "vite";
|
|
110
|
+
import react from "@vitejs/plugin-react";
|
|
111
|
+
|
|
112
|
+
const planId = ${JSON.stringify(plan.id)};
|
|
113
|
+
|
|
114
|
+
function targetIdentity(): Plugin {
|
|
115
|
+
return {
|
|
116
|
+
name: "ztothez-design-target-identity",
|
|
117
|
+
configureServer(server) {
|
|
118
|
+
server.middlewares.use((_request, response, next) => {
|
|
119
|
+
response.setHeader("X-ZtotheZ-Design-Plan", planId);
|
|
120
|
+
next();
|
|
121
|
+
});
|
|
122
|
+
},
|
|
123
|
+
configurePreviewServer(server) {
|
|
124
|
+
server.middlewares.use((_request, response, next) => {
|
|
125
|
+
response.setHeader("X-ZtotheZ-Design-Plan", planId);
|
|
126
|
+
next();
|
|
127
|
+
});
|
|
128
|
+
},
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
export default defineConfig({ plugins: [targetIdentity(), react()] });
|
|
133
|
+
`);
|
|
134
|
+
files.set("src/generated/plan.ts", planSource(plan));
|
|
135
|
+
files.set("src/domain/source-mode.ts", `export type DataMode = "demo" | "imported" | "cached" | "live";
|
|
136
|
+
|
|
137
|
+
export type SourceBoundary = {
|
|
138
|
+
label: string;
|
|
139
|
+
origin: string;
|
|
140
|
+
freshness: string;
|
|
141
|
+
connection: "not-required" | "unavailable" | "unknown";
|
|
142
|
+
limitation: string;
|
|
143
|
+
canRunTask: boolean;
|
|
144
|
+
};
|
|
145
|
+
|
|
146
|
+
export const sourceBoundaries: Record<DataMode, SourceBoundary> = {
|
|
147
|
+
demo: {
|
|
148
|
+
label: "Demonstration data",
|
|
149
|
+
origin: "Local synthetic fixture",
|
|
150
|
+
freshness: "Static fixture; no production timestamp",
|
|
151
|
+
connection: "not-required",
|
|
152
|
+
limitation: "Demonstration results cannot establish live service availability or current production state.",
|
|
153
|
+
canRunTask: true,
|
|
154
|
+
},
|
|
155
|
+
imported: {
|
|
156
|
+
label: "Imported data",
|
|
157
|
+
origin: "No file has been imported",
|
|
158
|
+
freshness: "Unknown until an import is validated",
|
|
159
|
+
connection: "not-required",
|
|
160
|
+
limitation: "No imported record is available in this generated fixture.",
|
|
161
|
+
canRunTask: false,
|
|
162
|
+
},
|
|
163
|
+
cached: {
|
|
164
|
+
label: "Cached data",
|
|
165
|
+
origin: "No cached snapshot is available",
|
|
166
|
+
freshness: "Unavailable",
|
|
167
|
+
connection: "not-required",
|
|
168
|
+
limitation: "The interface does not substitute demonstration data for a missing cache.",
|
|
169
|
+
canRunTask: false,
|
|
170
|
+
},
|
|
171
|
+
live: {
|
|
172
|
+
label: "Live data",
|
|
173
|
+
origin: "No production connector configured",
|
|
174
|
+
freshness: "Unverified",
|
|
175
|
+
connection: "unavailable",
|
|
176
|
+
limitation: "Live actions remain unavailable until a real connector supplies authenticated runtime evidence.",
|
|
177
|
+
canRunTask: false,
|
|
178
|
+
},
|
|
179
|
+
};
|
|
180
|
+
`);
|
|
181
|
+
files.set("src/domain/task-state.ts", `import type { DataMode } from "./source-mode";
|
|
182
|
+
import { sourceBoundaries } from "./source-mode";
|
|
183
|
+
|
|
184
|
+
export type TaskPhase = "review" | "running" | "success" | "error";
|
|
185
|
+
|
|
186
|
+
export type TaskState = {
|
|
187
|
+
mode: DataMode;
|
|
188
|
+
phase: TaskPhase;
|
|
189
|
+
selectedRecord: string;
|
|
190
|
+
message: string;
|
|
191
|
+
};
|
|
192
|
+
|
|
193
|
+
export type TaskAction =
|
|
194
|
+
| { type: "select-mode"; mode: DataMode }
|
|
195
|
+
| { type: "start" }
|
|
196
|
+
| { type: "complete" }
|
|
197
|
+
| { type: "retry-source" }
|
|
198
|
+
| { type: "use-demo-fallback" }
|
|
199
|
+
| { type: "return-to-review" };
|
|
200
|
+
|
|
201
|
+
export const initialTaskState: TaskState = {
|
|
202
|
+
mode: "demo",
|
|
203
|
+
phase: "review",
|
|
204
|
+
selectedRecord: "priority-record-01",
|
|
205
|
+
message: "Review the disclosed fixture evidence before recording the bounded decision.",
|
|
206
|
+
};
|
|
207
|
+
|
|
208
|
+
export function taskReducer(state: TaskState, action: TaskAction): TaskState {
|
|
209
|
+
if (action.type === "select-mode") {
|
|
210
|
+
return {
|
|
211
|
+
...state,
|
|
212
|
+
mode: action.mode,
|
|
213
|
+
phase: "review",
|
|
214
|
+
message: sourceBoundaries[action.mode].canRunTask
|
|
215
|
+
? "Review the disclosed fixture evidence before recording the bounded decision."
|
|
216
|
+
: sourceBoundaries[action.mode].limitation,
|
|
217
|
+
};
|
|
218
|
+
}
|
|
219
|
+
if (action.type === "start") {
|
|
220
|
+
if (!sourceBoundaries[state.mode].canRunTask) {
|
|
221
|
+
return { ...state, phase: "error", message: sourceBoundaries[state.mode].limitation };
|
|
222
|
+
}
|
|
223
|
+
return { ...state, phase: "running", message: "Recording the local fixture decision." };
|
|
224
|
+
}
|
|
225
|
+
if (action.type === "complete") {
|
|
226
|
+
if (state.phase !== "running") return state;
|
|
227
|
+
return { ...state, phase: "success", message: "Decision recorded in local demonstration state." };
|
|
228
|
+
}
|
|
229
|
+
if (action.type === "retry-source") {
|
|
230
|
+
return {
|
|
231
|
+
...state,
|
|
232
|
+
phase: "error",
|
|
233
|
+
message: "Connection remains unavailable. The selected record is preserved; use the disclosed demo fallback or return to review.",
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
if (action.type === "use-demo-fallback") {
|
|
237
|
+
return { ...state, mode: "demo", phase: "review", message: "Demonstration fallback selected. Origin remains visible." };
|
|
238
|
+
}
|
|
239
|
+
return { ...state, phase: "review", message: "Selection preserved. Review the evidence before trying again." };
|
|
240
|
+
}
|
|
241
|
+
`);
|
|
242
|
+
files.set("src/domain/task-state.test.ts", `import { describe, expect, it } from "vitest";
|
|
243
|
+
|
|
244
|
+
import { initialTaskState, taskReducer } from "./task-state";
|
|
245
|
+
|
|
246
|
+
describe("taskReducer", () => {
|
|
247
|
+
it("completes the primary demonstration task", () => {
|
|
248
|
+
const running = taskReducer(initialTaskState, { type: "start" });
|
|
249
|
+
expect(taskReducer(running, { type: "complete" }).phase).toBe("success");
|
|
250
|
+
});
|
|
251
|
+
|
|
252
|
+
it("preserves selection and exposes recovery when live data is unavailable", () => {
|
|
253
|
+
const live = taskReducer(initialTaskState, { type: "select-mode", mode: "live" });
|
|
254
|
+
const failed = taskReducer(live, { type: "retry-source" });
|
|
255
|
+
const recovered = taskReducer(failed, { type: "use-demo-fallback" });
|
|
256
|
+
expect(failed.selectedRecord).toBe(initialTaskState.selectedRecord);
|
|
257
|
+
expect(failed.phase).toBe("error");
|
|
258
|
+
expect(recovered.mode).toBe("demo");
|
|
259
|
+
expect(recovered.selectedRecord).toBe(initialTaskState.selectedRecord);
|
|
260
|
+
});
|
|
261
|
+
});
|
|
262
|
+
`);
|
|
263
|
+
files.set("src/components/SourceBoundaryPanel.tsx", `import type { DataMode } from "../domain/source-mode";
|
|
264
|
+
import { sourceBoundaries } from "../domain/source-mode";
|
|
265
|
+
|
|
266
|
+
const modes: DataMode[] = ["demo", "imported", "cached", "live"];
|
|
267
|
+
|
|
268
|
+
export function SourceBoundaryPanel({ mode, onChange }: { mode: DataMode; onChange: (mode: DataMode) => void }) {
|
|
269
|
+
const source = sourceBoundaries[mode];
|
|
270
|
+
return (
|
|
271
|
+
<section className="source-panel" aria-labelledby="source-heading" data-ztothez-design-data-mode={mode} data-ztothez-design-region="source-boundary">
|
|
272
|
+
<div className="section-heading">
|
|
273
|
+
<div>
|
|
274
|
+
<p className="eyebrow">Data boundary</p>
|
|
275
|
+
<h2 id="source-heading">{source.label}</h2>
|
|
276
|
+
</div>
|
|
277
|
+
<span className={\`status status--\${mode}\`} data-ztothez-design-status data-ztothez-design-status-purpose="data-origin" data-ztothez-design-state-visual data-ztothez-design-non-color-cue="visible-text">{mode}</span>
|
|
278
|
+
</div>
|
|
279
|
+
<div className="mode-control" aria-label="Inspect data modes">
|
|
280
|
+
{modes.map((entry) => (
|
|
281
|
+
<button key={entry} type="button" aria-pressed={entry === mode} onClick={() => onChange(entry)}>
|
|
282
|
+
{entry}
|
|
283
|
+
</button>
|
|
284
|
+
))}
|
|
285
|
+
</div>
|
|
286
|
+
<dl className="source-facts">
|
|
287
|
+
<div><dt>Origin</dt><dd>{source.origin}</dd></div>
|
|
288
|
+
<div><dt>Freshness</dt><dd>{source.freshness}</dd></div>
|
|
289
|
+
<div><dt>Connection</dt><dd>{source.connection}</dd></div>
|
|
290
|
+
</dl>
|
|
291
|
+
<p className="limitation"><strong>Limitation:</strong> {source.limitation}</p>
|
|
292
|
+
</section>
|
|
293
|
+
);
|
|
294
|
+
}
|
|
295
|
+
`);
|
|
296
|
+
files.set("src/components/TaskWorkspace.tsx", `import { useReducer } from "react";
|
|
297
|
+
|
|
298
|
+
import { generatedPlan } from "../generated/plan";
|
|
299
|
+
import { sourceBoundaries } from "../domain/source-mode";
|
|
300
|
+
import { initialTaskState, taskReducer } from "../domain/task-state";
|
|
301
|
+
import { SourceBoundaryPanel } from "./SourceBoundaryPanel";
|
|
302
|
+
|
|
303
|
+
export function TaskWorkspace() {
|
|
304
|
+
const [state, dispatch] = useReducer(taskReducer, initialTaskState);
|
|
305
|
+
const source = sourceBoundaries[state.mode];
|
|
306
|
+
|
|
307
|
+
function runTask() {
|
|
308
|
+
dispatch({ type: "start" });
|
|
309
|
+
if (source.canRunTask) queueMicrotask(() => dispatch({ type: "complete" }));
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
return (
|
|
313
|
+
<main className="workspace" data-ztothez-design-composition="1.0" data-ztothez-design-max-primary-actions="1" data-ztothez-design-max-visible-regions="4">
|
|
314
|
+
<header className="product-header" data-ztothez-design-priority="context">
|
|
315
|
+
<div>
|
|
316
|
+
<p className="eyebrow">Operational decision workspace</p>
|
|
317
|
+
<h1>{generatedPlan.product}</h1>
|
|
318
|
+
<p className="lede">{generatedPlan.task.label}</p>
|
|
319
|
+
</div>
|
|
320
|
+
<span className="route-label">Route {generatedPlan.task.route}</span>
|
|
321
|
+
</header>
|
|
322
|
+
|
|
323
|
+
<section className="decision-layout" aria-labelledby="decision-heading">
|
|
324
|
+
<div className="primary-flow" data-ztothez-design-region="primary-decision">
|
|
325
|
+
<div className="section-heading">
|
|
326
|
+
<div>
|
|
327
|
+
<p className="eyebrow">Primary task</p>
|
|
328
|
+
<h2 id="decision-heading">Review and record the bounded decision</h2>
|
|
329
|
+
</div>
|
|
330
|
+
<span className={\`status status--\${state.phase}\`} data-ztothez-design-status data-ztothez-design-status-purpose="task-phase" data-ztothez-design-state-visual data-ztothez-design-non-color-cue="visible-text">{state.phase}</span>
|
|
331
|
+
</div>
|
|
332
|
+
<div className="finding" data-ztothez-design-priority="primary-outcome" data-ztothez-design-visual-claim="selected-record" data-ztothez-design-claim-basis="synthetic" data-ztothez-design-evidence-ref="local-fixture-priority-record-01">
|
|
333
|
+
<p className="finding-label">Selected record</p>
|
|
334
|
+
<h3>{state.selectedRecord}</h3>
|
|
335
|
+
<p>This synthetic record demonstrates the planned decision order without claiming production evidence.</p>
|
|
336
|
+
</div>
|
|
337
|
+
<div className="action-row" data-ztothez-design-priority="next-action">
|
|
338
|
+
<p className="action-boundary"><strong>{source.label}</strong> · {source.origin}</p>
|
|
339
|
+
<button className="primary-action" type="button" data-ztothez-design-primary-action onClick={runTask} disabled={!source.canRunTask || state.phase === "running" || state.phase === "success"}>
|
|
340
|
+
{state.phase === "running" ? "Recording decision" : state.phase === "success" ? "Decision recorded" : "Record decision"}
|
|
341
|
+
</button>
|
|
342
|
+
<button type="button" onClick={() => dispatch({ type: "return-to-review" })}>Return to review</button>
|
|
343
|
+
</div>
|
|
344
|
+
<ol className="answer-flow">
|
|
345
|
+
{generatedPlan.informationFlow.map((entry) => (
|
|
346
|
+
<li key={entry.id}><span>{entry.order}</span><div><strong>{entry.label}</strong><p>{entry.purpose}</p></div></li>
|
|
347
|
+
))}
|
|
348
|
+
</ol>
|
|
349
|
+
</div>
|
|
350
|
+
|
|
351
|
+
<aside className="recovery" aria-labelledby="recovery-heading" data-ztothez-design-region="recovery">
|
|
352
|
+
<p className="eyebrow">Recovery path</p>
|
|
353
|
+
<h2 id="recovery-heading">Preserve context when a source is unavailable</h2>
|
|
354
|
+
<p aria-live="polite" className="task-message">{state.message}</p>
|
|
355
|
+
{!source.canRunTask && (
|
|
356
|
+
<div className="recovery-actions">
|
|
357
|
+
<button type="button" onClick={() => dispatch({ type: "retry-source" })}>Retry source</button>
|
|
358
|
+
<button type="button" onClick={() => dispatch({ type: "use-demo-fallback" })}>Use disclosed demo fallback</button>
|
|
359
|
+
</div>
|
|
360
|
+
)}
|
|
361
|
+
<p className="evidence-boundary">This fixture validates generated structure and state behavior. It does not prove live connectivity, rendered accessibility, product usability, or release readiness.</p>
|
|
362
|
+
</aside>
|
|
363
|
+
</section>
|
|
364
|
+
|
|
365
|
+
<SourceBoundaryPanel mode={state.mode} onChange={(mode) => dispatch({ type: "select-mode", mode })} />
|
|
366
|
+
</main>
|
|
367
|
+
);
|
|
368
|
+
}
|
|
369
|
+
`);
|
|
370
|
+
files.set("src/App.tsx", `import { TaskWorkspace } from "./components/TaskWorkspace";
|
|
371
|
+
|
|
372
|
+
export default function App() {
|
|
373
|
+
return <TaskWorkspace />;
|
|
374
|
+
}
|
|
375
|
+
`);
|
|
376
|
+
files.set("src/main.tsx", `import { StrictMode } from "react";
|
|
377
|
+
import { createRoot } from "react-dom/client";
|
|
378
|
+
|
|
379
|
+
import App from "./App";
|
|
380
|
+
import "./styles/tokens.css";
|
|
381
|
+
import "./styles/app.css";
|
|
382
|
+
|
|
383
|
+
createRoot(document.getElementById("root")!).render(<StrictMode><App /></StrictMode>);
|
|
384
|
+
`);
|
|
385
|
+
files.set("src/styles/tokens.css", tokenStyles);
|
|
386
|
+
files.set("src/styles/app.css", `* { box-sizing: border-box; }
|
|
387
|
+
html { background: var(--color-canvas); font-family: var(--font-sans); color: var(--color-text); }
|
|
388
|
+
body { margin: 0; min-width: 320px; }
|
|
389
|
+
button { min-height: 44px; border: var(--border-width) solid var(--color-border); border-radius: var(--radius-control); background: var(--color-surface); color: var(--color-text); padding: var(--space-2) var(--space-4); font: inherit; font-weight: 700; cursor: pointer; }
|
|
390
|
+
button:hover:not(:disabled) { border-color: var(--color-action); }
|
|
391
|
+
button:focus-visible { outline: var(--focus-width) solid var(--color-focus); outline-offset: var(--space-1); }
|
|
392
|
+
button:disabled { opacity: 0.6; cursor: not-allowed; }
|
|
393
|
+
h1, h2, h3, p { margin-top: 0; }
|
|
394
|
+
h1, h2, h3, p, dd, button { overflow-wrap: anywhere; }
|
|
395
|
+
h1 { margin-bottom: var(--space-2); font-size: var(--font-size-page-title); line-height: 1.15; }
|
|
396
|
+
h2 { margin-bottom: var(--space-3); font-size: var(--font-size-section-title); line-height: 1.3; }
|
|
397
|
+
h3 { margin-bottom: var(--space-2); font-size: var(--font-size-item-title); }
|
|
398
|
+
.workspace { width: min(100% - (2 * var(--space-4)), var(--measure-workspace)); margin-inline: auto; padding-block: var(--space-6) var(--space-7); }
|
|
399
|
+
.product-header, .section-heading, .action-row { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: flex-start; gap: var(--space-4); }
|
|
400
|
+
.product-header > *, .section-heading > *, .action-row > * { min-width: 0; }
|
|
401
|
+
.product-header { margin-bottom: var(--space-5); }
|
|
402
|
+
.eyebrow, .finding-label { margin-bottom: var(--space-2); color: var(--color-text-muted); font-size: var(--font-size-label); font-weight: 800; text-transform: uppercase; }
|
|
403
|
+
.lede { max-width: var(--measure-copy); color: var(--color-text-muted); }
|
|
404
|
+
.route-label, .status { max-width: 100%; border: var(--border-width) solid var(--color-border); border-radius: var(--radius-control); padding: var(--space-2) var(--space-3); font-size: var(--font-size-label); font-weight: 800; white-space: normal; overflow-wrap: anywhere; }
|
|
405
|
+
.source-panel, .primary-flow, .recovery { border: var(--border-width) solid var(--color-border); border-radius: var(--radius-panel); background: var(--color-surface); padding: var(--space-5); }
|
|
406
|
+
.source-panel { margin-bottom: var(--space-4); }
|
|
407
|
+
.mode-control { display: flex; flex-wrap: wrap; gap: var(--space-2); margin-block: var(--space-4); }
|
|
408
|
+
.mode-control button[aria-pressed="true"] { background: var(--color-action); border-color: var(--color-action); color: var(--color-action-text); }
|
|
409
|
+
.source-facts { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-3); margin: 0; }
|
|
410
|
+
.source-facts div { background: var(--color-surface-raised); padding: var(--space-3); }
|
|
411
|
+
.source-facts dt { color: var(--color-text-muted); font-size: var(--font-size-label); font-weight: 700; }
|
|
412
|
+
.source-facts dd { margin: var(--space-1) 0 0; }
|
|
413
|
+
.limitation, .evidence-boundary { margin: var(--space-4) 0 0; color: var(--color-text-muted); }
|
|
414
|
+
.decision-layout { display: grid; grid-template-columns: minmax(0, 2fr) minmax(var(--measure-aside), 1fr); gap: var(--space-4); }
|
|
415
|
+
.finding { margin-block: var(--space-4); border-left: var(--focus-width) solid var(--color-action); background: var(--color-surface-raised); padding: var(--space-4); }
|
|
416
|
+
.answer-flow { display: grid; gap: var(--space-2); padding: 0; list-style: none; }
|
|
417
|
+
.answer-flow li { display: grid; grid-template-columns: var(--size-step) 1fr; gap: var(--space-3); border-top: var(--border-width) solid var(--color-border); padding-top: var(--space-3); }
|
|
418
|
+
.answer-flow li > span { display: grid; place-items: center; width: var(--size-step); height: var(--size-step); border-radius: 50%; background: var(--color-surface-raised); font-weight: 800; }
|
|
419
|
+
.answer-flow p { margin: var(--space-1) 0 0; color: var(--color-text-muted); }
|
|
420
|
+
.action-row { justify-content: flex-start; flex-wrap: wrap; margin-top: var(--space-5); }
|
|
421
|
+
.action-boundary { flex-basis: 100%; margin: 0; color: var(--color-text-muted); }
|
|
422
|
+
.primary-action { background: var(--color-action); border-color: var(--color-action); color: var(--color-action-text); }
|
|
423
|
+
.primary-action:hover:not(:disabled) { background: var(--color-action-hover); }
|
|
424
|
+
.recovery-actions { display: grid; gap: var(--space-2); margin-top: var(--space-4); }
|
|
425
|
+
.task-message { min-height: var(--size-message); padding: var(--space-3); background: var(--color-surface-raised); }
|
|
426
|
+
.status--success, .status--demo { color: var(--color-positive); }
|
|
427
|
+
.status--error, .status--live { color: var(--color-negative); }
|
|
428
|
+
.status--running, .status--cached, .status--imported { color: var(--color-warning); }
|
|
429
|
+
|
|
430
|
+
@media (max-width: 48rem) {
|
|
431
|
+
.decision-layout, .source-facts { grid-template-columns: 1fr; }
|
|
432
|
+
.product-header { display: block; }
|
|
433
|
+
.route-label { display: inline-block; margin-top: var(--space-2); white-space: normal; }
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
437
|
+
button { transition: background-color var(--duration-fast), border-color var(--duration-fast); }
|
|
438
|
+
}
|
|
439
|
+
`);
|
|
440
|
+
files.set("README.md", `# ${plan.product} generated fixture
|
|
441
|
+
|
|
442
|
+
This independent React and TypeScript fixture was generated from design plan \`${plan.id}\` by the project-owned \`react-typescript-vite\` adapter.
|
|
443
|
+
|
|
444
|
+
It implements one local demonstration task and a disconnected-source recovery path. Demo, imported, cached, and live modes have separate disclosures. No production connector, imported file, or cache is implied.
|
|
445
|
+
|
|
446
|
+
## Run
|
|
447
|
+
|
|
448
|
+
\`npm install\`
|
|
449
|
+
|
|
450
|
+
\`npm run typecheck\`
|
|
451
|
+
|
|
452
|
+
\`npm test\`
|
|
453
|
+
|
|
454
|
+
\`npm run dev\`
|
|
455
|
+
|
|
456
|
+
Generation is not release evidence. Run contract, architecture, browser, accessibility, and human-review gates before shipping.
|
|
457
|
+
`);
|
|
458
|
+
return files;
|
|
459
|
+
}
|
|
460
|
+
async function writeGeneratedFiles(root, files) {
|
|
461
|
+
const records = [];
|
|
462
|
+
for (const [path, content] of [...files.entries()].sort(([left], [right]) => left.localeCompare(right))) {
|
|
463
|
+
const absolute = join(root, path);
|
|
464
|
+
await mkdir(dirname(absolute), { recursive: true });
|
|
465
|
+
await writeFile(absolute, content, "utf8");
|
|
466
|
+
records.push({ path, digest: digest(content), bytes: Buffer.byteLength(content) });
|
|
467
|
+
}
|
|
468
|
+
return records;
|
|
469
|
+
}
|
|
470
|
+
export async function generateReactTypescriptFixture(plan, options) {
|
|
471
|
+
if (!plan.implementationReady || plan.status !== "ready") {
|
|
472
|
+
throw new Error("Generation requires a ready design plan with implementationReady set to true");
|
|
473
|
+
}
|
|
474
|
+
if (plan.routes.length === 0 || plan.components.length === 0 || plan.stateOwnership.length === 0) {
|
|
475
|
+
throw new Error("Generation requires a planned route, component boundaries, and explicit state ownership");
|
|
476
|
+
}
|
|
477
|
+
const target = await authorizeGenerationTarget(options);
|
|
478
|
+
const temporary = await mkdtemp(join(target.outputParent, ".ztde-generate-"));
|
|
479
|
+
try {
|
|
480
|
+
const files = generatedFiles(plan);
|
|
481
|
+
const fileRecords = await writeGeneratedFiles(temporary, files);
|
|
482
|
+
const manifest = generationManifestSchema.parse({
|
|
483
|
+
version: "1.0",
|
|
484
|
+
adapter: "react-typescript-vite",
|
|
485
|
+
adapterVersion: REACT_TYPESCRIPT_ADAPTER_VERSION,
|
|
486
|
+
plan: {
|
|
487
|
+
id: plan.id,
|
|
488
|
+
sourceDigest: plan.sourceBrief.digest,
|
|
489
|
+
compilerVersion: plan.compilerVersion,
|
|
490
|
+
},
|
|
491
|
+
outputMode: "new-independent-fixture",
|
|
492
|
+
files: fileRecords,
|
|
493
|
+
guarantees: [
|
|
494
|
+
"The target was absent, contained by the authorized generation root, and separate from every validated portfolio root.",
|
|
495
|
+
"The generated task uses explicit reducer-owned domain state and semantic CSS tokens.",
|
|
496
|
+
"Demonstration, imported, cached, and live source modes retain separate origin, freshness, connection, and limitation disclosures.",
|
|
497
|
+
"The generated task exposes measurable context, outcome, next-action, status-purpose, density, and evidence-basis composition semantics.",
|
|
498
|
+
"Development and preview responses expose the generation plan identifier for repair-target verification.",
|
|
499
|
+
],
|
|
500
|
+
limitations: [
|
|
501
|
+
"This adapter creates a new independent fixture and does not merge into an existing repository.",
|
|
502
|
+
"Generated source and unit tests do not prove rendered accessibility, live integration, usability, or release readiness.",
|
|
503
|
+
],
|
|
504
|
+
});
|
|
505
|
+
const manifestContent = `${json(manifest)}\n`;
|
|
506
|
+
await writeFile(join(temporary, "ztothez-design-generation.json"), manifestContent, "utf8");
|
|
507
|
+
const manifestRecord = {
|
|
508
|
+
path: "ztothez-design-generation.json",
|
|
509
|
+
digest: digest(manifestContent),
|
|
510
|
+
bytes: Buffer.byteLength(manifestContent),
|
|
511
|
+
};
|
|
512
|
+
await rename(temporary, target.outputDirectory);
|
|
513
|
+
return generationReportSchema.parse({
|
|
514
|
+
version: "1.0",
|
|
515
|
+
adapter: "react-typescript-vite",
|
|
516
|
+
adapterVersion: REACT_TYPESCRIPT_ADAPTER_VERSION,
|
|
517
|
+
status: "generated",
|
|
518
|
+
product: plan.product,
|
|
519
|
+
planId: plan.id,
|
|
520
|
+
target: target.portableTarget,
|
|
521
|
+
manifest: `${target.portableTarget}/ztothez-design-generation.json`,
|
|
522
|
+
files: [...fileRecords, manifestRecord],
|
|
523
|
+
capabilities: [
|
|
524
|
+
"One complete local demonstration task with success and disconnected-source recovery paths.",
|
|
525
|
+
"Semantic token layers and reducer-owned domain state.",
|
|
526
|
+
"Truthful source-mode disclosure for demo, imported, cached, and live contexts.",
|
|
527
|
+
"Opt-in rendered composition semantics for responsive, theme, claim, state, and clutter verification.",
|
|
528
|
+
"A runtime plan-identity response header that binds bounded repair evidence to this generated fixture.",
|
|
529
|
+
],
|
|
530
|
+
limitations: manifest.limitations,
|
|
531
|
+
});
|
|
532
|
+
}
|
|
533
|
+
catch (error) {
|
|
534
|
+
await rm(temporary, { recursive: true, force: true });
|
|
535
|
+
throw error;
|
|
536
|
+
}
|
|
537
|
+
}
|
|
538
|
+
//# sourceMappingURL=react-typescript.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"react-typescript.js","sourceRoot":"","sources":["../../../src/generation/react-typescript.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export function formatGenerationReport(report) {
|
|
2
|
+
return [
|
|
3
|
+
"# React And TypeScript Generation Report",
|
|
4
|
+
"",
|
|
5
|
+
`- Product: ${report.product}`,
|
|
6
|
+
`- Plan: ${report.planId}`,
|
|
7
|
+
`- Adapter: ${report.adapter} ${report.adapterVersion}`,
|
|
8
|
+
`- Status: ${report.status}`,
|
|
9
|
+
`- Target: ${report.target}`,
|
|
10
|
+
`- Files: ${report.files.length}`,
|
|
11
|
+
"",
|
|
12
|
+
"## Capabilities",
|
|
13
|
+
...report.capabilities.map((entry) => `- ${entry}`),
|
|
14
|
+
"",
|
|
15
|
+
"## Limitations",
|
|
16
|
+
...report.limitations.map((entry) => `- ${entry}`),
|
|
17
|
+
"",
|
|
18
|
+
`Manifest: ${report.manifest}`,
|
|
19
|
+
].join("\n");
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=report.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report.js","sourceRoot":"","sources":["../../../src/generation/report.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,sBAAsB,CAAC,MAAwB;IAC7D,OAAO;QACL,0CAA0C;QAC1C,EAAE;QACF,cAAc,MAAM,CAAC,OAAO,EAAE;QAC9B,WAAW,MAAM,CAAC,MAAM,EAAE;QAC1B,cAAc,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,cAAc,EAAE;QACvD,aAAa,MAAM,CAAC,MAAM,EAAE;QAC5B,aAAa,MAAM,CAAC,MAAM,EAAE;QAC5B,YAAY,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;QACjC,EAAE;QACF,iBAAiB;QACjB,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,EAAE,CAAC;QACnD,EAAE;QACF,gBAAgB;QAChB,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,EAAE,CAAC;QAClD,EAAE;QACF,aAAa,MAAM,CAAC,QAAQ,EAAE;KAC/B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const generatedFileSchema: z.ZodObject<{
|
|
3
|
+
path: z.ZodString;
|
|
4
|
+
digest: z.ZodString;
|
|
5
|
+
bytes: z.ZodNumber;
|
|
6
|
+
}, z.core.$strict>;
|
|
7
|
+
export declare const generationManifestSchema: z.ZodObject<{
|
|
8
|
+
version: z.ZodLiteral<"1.0">;
|
|
9
|
+
adapter: z.ZodLiteral<"react-typescript-vite">;
|
|
10
|
+
adapterVersion: z.ZodString;
|
|
11
|
+
plan: z.ZodObject<{
|
|
12
|
+
id: z.ZodString;
|
|
13
|
+
sourceDigest: z.ZodString;
|
|
14
|
+
compilerVersion: z.ZodString;
|
|
15
|
+
}, z.core.$strict>;
|
|
16
|
+
outputMode: z.ZodLiteral<"new-independent-fixture">;
|
|
17
|
+
files: z.ZodArray<z.ZodObject<{
|
|
18
|
+
path: z.ZodString;
|
|
19
|
+
digest: z.ZodString;
|
|
20
|
+
bytes: z.ZodNumber;
|
|
21
|
+
}, z.core.$strict>>;
|
|
22
|
+
guarantees: z.ZodArray<z.ZodString>;
|
|
23
|
+
limitations: z.ZodArray<z.ZodString>;
|
|
24
|
+
}, z.core.$strict>;
|
|
25
|
+
export declare const generationReportSchema: z.ZodObject<{
|
|
26
|
+
version: z.ZodLiteral<"1.0">;
|
|
27
|
+
adapter: z.ZodLiteral<"react-typescript-vite">;
|
|
28
|
+
adapterVersion: z.ZodString;
|
|
29
|
+
status: z.ZodLiteral<"generated">;
|
|
30
|
+
product: z.ZodString;
|
|
31
|
+
planId: z.ZodString;
|
|
32
|
+
target: z.ZodString;
|
|
33
|
+
manifest: z.ZodString;
|
|
34
|
+
files: z.ZodArray<z.ZodObject<{
|
|
35
|
+
path: z.ZodString;
|
|
36
|
+
digest: z.ZodString;
|
|
37
|
+
bytes: z.ZodNumber;
|
|
38
|
+
}, z.core.$strict>>;
|
|
39
|
+
capabilities: z.ZodArray<z.ZodString>;
|
|
40
|
+
limitations: z.ZodArray<z.ZodString>;
|
|
41
|
+
}, z.core.$strict>;
|
|
42
|
+
export type GeneratedFile = z.infer<typeof generatedFileSchema>;
|
|
43
|
+
export type GenerationManifest = z.infer<typeof generationManifestSchema>;
|
|
44
|
+
export type GenerationReport = z.infer<typeof generationReportSchema>;
|