@pixel-point/toolcraft 0.0.15 → 0.0.16
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/package.json +1 -1
- package/src/cli-package-manager-flow.test.mjs +9 -2
- package/src/cli.test.mjs +11 -16
- package/src/create-command.mjs +10 -4
- package/src/generate-demand-only-lifecycle.test.mjs +102 -0
- package/src/generate-performance-iteration-execution.test.mjs +105 -0
- package/src/generate-test-assertions.mjs +2 -0
- package/src/generate-test-browser-execution-ledger.mjs +138 -0
- package/src/generate-test-browser-execution-ledger.test.mjs +87 -0
- package/src/generate-test-delivery-architecture-assertions.mjs +137 -0
- package/src/generate-test-demand-only-lifecycle.mjs +303 -0
- package/src/generate-test-dependency-sandbox.mjs +158 -0
- package/src/generate-test-doc-assertions.mjs +286 -10
- package/src/generate-test-doc-assertions.test.mjs +43 -0
- package/src/generate-test-file-assertions.mjs +244 -6
- package/src/generate-test-fs-utils.mjs +4 -1
- package/src/generate-test-integrity-assertions.mjs +70 -3
- package/src/generate-test-integrity-framework-assertions.mjs +31 -1
- package/src/generate-test-integrity-manifest-assertions.mjs +58 -0
- package/src/generate-test-integrity-ownership-assertions.mjs +35 -2
- package/src/generate-test-managed-process.mjs +287 -0
- package/src/generate-test-managed-process.test.mjs +340 -0
- package/src/generate-test-package-assertions.mjs +75 -11
- package/src/generate-test-product-fixture.mjs +85 -7
- package/src/generate-test-product-fixture.test.mjs +227 -0
- package/src/generate-test-product-iteration.mjs +278 -0
- package/src/generate-test-product-iteration.test.mjs +241 -0
- package/src/generate-test-standalone-assertions.mjs +87 -149
- package/src/generate-test-standalone-delivery-stages.mjs +186 -0
- package/src/generate-test-windows-job-native.cs +496 -0
- package/src/generate-test-windows-job-wrapper.mjs +40 -0
- package/src/generate-test-windows-job.mjs +47 -0
- package/src/generate-test-windows-job.ps1 +17 -0
- package/src/generate.mjs +26 -0
- package/src/generate.test.mjs +76 -14
- package/src/generated-integrity-manifest.test.mjs +51 -2
- package/src/generated-source-policy.mjs +1 -1
- package/src/generated-source-policy.test.mjs +15 -2
- package/src/import-map.mjs +12 -0
- package/src/package-json.mjs +7 -6
- package/src/package-json.test.mjs +55 -31
- package/src/package-manager.mjs +71 -33
- package/src/package-manager.test.mjs +101 -18
- package/src/packaged-template-fallback.test.mjs +4 -0
- package/src/rewrite-imports.mjs +3 -0
- package/src/rewrite-imports.test.mjs +16 -1
- package/templates/runtime/contracts/component-contracts.choices.test.ts +49 -6
- package/templates/runtime/contracts/component-contracts.choices.ts +53 -10
- package/templates/runtime/contracts/component-contracts.inputs.test.ts +2 -2
- package/templates/runtime/contracts/component-contracts.inputs.ts +2 -2
- package/templates/runtime/contracts/component-contracts.media-custom.test.ts +19 -0
- package/templates/runtime/contracts/component-contracts.media-custom.ts +18 -2
- package/templates/runtime/contracts/component-contracts.runtime-acceptance.test.ts +57 -83
- package/templates/runtime/contracts/component-contracts.runtime-labels.test.ts +1 -1
- package/templates/runtime/contracts/component-contracts.runtime-panels.test.ts +16 -2
- package/templates/runtime/contracts/component-contracts.runtime-shell.test.ts +24 -8
- package/templates/runtime/contracts/component-contracts.runtime.ts +80 -39
- package/templates/runtime/contracts/component-contracts.test.ts +6 -1
- package/templates/runtime/contracts/component-contracts.visual.test.ts +44 -5
- package/templates/runtime/contracts/component-contracts.visual.ts +64 -17
- package/templates/runtime/contracts/decision-contracts.test.ts +106 -11
- package/templates/runtime/contracts/decision-contracts.ts +83 -6
- package/templates/runtime/contracts/index.ts +2 -0
- package/templates/runtime/contracts/performance-request-classifier-descriptions.ts +39 -0
- package/templates/runtime/contracts/performance-request-classifier-rules.ts +181 -0
- package/templates/runtime/contracts/performance-request-classifier-types.ts +50 -0
- package/templates/runtime/contracts/performance-request-classifier.test.ts +269 -0
- package/templates/runtime/contracts/performance-request-classifier.ts +224 -0
- package/templates/runtime/contracts/performance-request-evidence-policy.d.mts +21 -0
- package/templates/runtime/contracts/performance-request-evidence-policy.mjs +39 -0
- package/templates/runtime/contracts/performance-verification-policy.test.ts +129 -0
- package/templates/runtime/contracts/performance-verification-policy.ts +49 -0
- package/templates/runtime/contracts/segmented-control-fit.test.ts +71 -0
- package/templates/runtime/contracts/segmented-control-fit.ts +38 -0
- package/templates/runtime/export/export-frame.test.ts +80 -0
- package/templates/runtime/export/export-frame.ts +107 -0
- package/templates/runtime/export/export-sizing.ts +136 -0
- package/templates/runtime/export/export.test.ts +70 -1
- package/templates/runtime/export/export.ts +31 -146
- package/templates/runtime/export/index.ts +2 -0
- package/templates/runtime/index.ts +10 -0
- package/templates/runtime/model-import/canonical/index.ts +39 -0
- package/templates/runtime/model-import/canonical/model-appearance-data-uri.test.ts +43 -0
- package/templates/runtime/model-import/canonical/model-appearance-data-uri.ts +79 -0
- package/templates/runtime/model-import/canonical/model-appearance-image.ts +111 -0
- package/templates/runtime/model-import/canonical/model-appearance-input-snapshot.ts +189 -0
- package/templates/runtime/model-import/canonical/model-appearance-resource.test.ts +116 -0
- package/templates/runtime/model-import/canonical/model-appearance-resource.ts +165 -0
- package/templates/runtime/model-import/canonical/model-appearance-validation.test.ts +197 -0
- package/templates/runtime/model-import/canonical/model-appearance-validation.ts +458 -0
- package/templates/runtime/model-import/canonical/model-document-codec-adversarial.test.ts +151 -0
- package/templates/runtime/model-import/canonical/model-document-codec-appearance-metadata.ts +336 -0
- package/templates/runtime/model-import/canonical/model-document-codec-closure.test.ts +125 -0
- package/templates/runtime/model-import/canonical/model-document-codec-envelope.ts +363 -0
- package/templates/runtime/model-import/canonical/model-document-codec-error.ts +57 -0
- package/templates/runtime/model-import/canonical/model-document-codec-format.ts +83 -0
- package/templates/runtime/model-import/canonical/model-document-codec-layout.ts +163 -0
- package/templates/runtime/model-import/canonical/model-document-codec-metadata-adversarial.test.ts +169 -0
- package/templates/runtime/model-import/canonical/model-document-codec-metadata-preflight.ts +371 -0
- package/templates/runtime/model-import/canonical/model-document-codec-metadata-reader.ts +142 -0
- package/templates/runtime/model-import/canonical/model-document-codec-metadata.ts +420 -0
- package/templates/runtime/model-import/canonical/model-document-codec-payload.ts +311 -0
- package/templates/runtime/model-import/canonical/model-document-codec.test.ts +450 -0
- package/templates/runtime/model-import/canonical/model-document-codec.ts +161 -0
- package/templates/runtime/model-import/canonical/model-document-digest.ts +13 -0
- package/templates/runtime/model-import/canonical/model-document-hostile-decode.test.ts +100 -0
- package/templates/runtime/model-import/canonical/model-document-hostile-input.test.ts +140 -0
- package/templates/runtime/model-import/canonical/model-document-input-reader.ts +153 -0
- package/templates/runtime/model-import/canonical/model-document-input-snapshot.ts +413 -0
- package/templates/runtime/model-import/canonical/model-document-limit-options.test.ts +155 -0
- package/templates/runtime/model-import/canonical/model-document-limits.ts +151 -0
- package/templates/runtime/model-import/canonical/model-document-owned-geometry.test.ts +138 -0
- package/templates/runtime/model-import/canonical/model-document-safe-typed-array.ts +154 -0
- package/templates/runtime/model-import/canonical/model-document-test-support.ts +163 -0
- package/templates/runtime/model-import/canonical/model-document-validation-geometry.ts +330 -0
- package/templates/runtime/model-import/canonical/model-document-validation-helpers.ts +22 -0
- package/templates/runtime/model-import/canonical/model-document-validation-hierarchy.ts +314 -0
- package/templates/runtime/model-import/canonical/model-document-validation-provenance.ts +153 -0
- package/templates/runtime/model-import/canonical/model-document-validation-result.ts +118 -0
- package/templates/runtime/model-import/canonical/model-document-validation.test.ts +497 -0
- package/templates/runtime/model-import/canonical/model-document-validation.ts +276 -0
- package/templates/runtime/model-import/canonical/model-document-worker-memory.test.ts +95 -0
- package/templates/runtime/model-import/canonical/model-document-worker-memory.ts +365 -0
- package/templates/runtime/model-import/canonical/model-document.ts +187 -0
- package/templates/runtime/model-import/canonical/sha256.ts +144 -0
- package/templates/runtime/model-import/default-model-source-assets.test.ts +212 -0
- package/templates/runtime/model-import/default-model-source-assets.ts +235 -0
- package/templates/runtime/model-import/formats/fbx-appearance-test-fixtures.ts +144 -0
- package/templates/runtime/model-import/formats/fbx-ascii-appearance-test-fixtures.ts +123 -0
- package/templates/runtime/model-import/formats/fbx-binary-preflight-reader.ts +179 -0
- package/templates/runtime/model-import/formats/fbx-binary-preflight.ts +277 -0
- package/templates/runtime/model-import/formats/fbx-binary-test-fixture-builder.ts +129 -0
- package/templates/runtime/model-import/formats/fbx-model-format-adapter.test-fixtures.ts +119 -0
- package/templates/runtime/model-import/formats/fbx-model-format-adapter.test.ts +316 -0
- package/templates/runtime/model-import/formats/fbx-model-format-adapter.ts +96 -0
- package/templates/runtime/model-import/formats/fbx-model-format-preflight.ts +122 -0
- package/templates/runtime/model-import/formats/fbx-static-appearance.test.ts +93 -0
- package/templates/runtime/model-import/formats/fbx-static-appearance.ts +403 -0
- package/templates/runtime/model-import/formats/gltf-accessor-preflight.ts +321 -0
- package/templates/runtime/model-import/formats/gltf-attribute-encoding.ts +65 -0
- package/templates/runtime/model-import/formats/gltf-buffer-preflight.ts +320 -0
- package/templates/runtime/model-import/formats/gltf-canonical-appearance.ts +422 -0
- package/templates/runtime/model-import/formats/gltf-canonical-geometry.ts +276 -0
- package/templates/runtime/model-import/formats/gltf-canonical-hierarchy.ts +180 -0
- package/templates/runtime/model-import/formats/gltf-canonical-metadata.ts +100 -0
- package/templates/runtime/model-import/formats/gltf-decode-safety.ts +84 -0
- package/templates/runtime/model-import/formats/gltf-decoded-count-validation.ts +38 -0
- package/templates/runtime/model-import/formats/gltf-document-canonicalizer.ts +328 -0
- package/templates/runtime/model-import/formats/gltf-document-sanitizer.ts +269 -0
- package/templates/runtime/model-import/formats/gltf-extension-policy.ts +59 -0
- package/templates/runtime/model-import/formats/gltf-glb-document.ts +93 -0
- package/templates/runtime/model-import/formats/gltf-json-inspection.ts +152 -0
- package/templates/runtime/model-import/formats/gltf-json-preflight.ts +128 -0
- package/templates/runtime/model-import/formats/gltf-missing-appearance.ts +158 -0
- package/templates/runtime/model-import/formats/gltf-model-format-adapter-appearance.test.ts +181 -0
- package/templates/runtime/model-import/formats/gltf-model-format-adapter-resource-limits.test.ts +236 -0
- package/templates/runtime/model-import/formats/gltf-model-format-adapter-validation.test.ts +274 -0
- package/templates/runtime/model-import/formats/gltf-model-format-adapter.test.ts +229 -0
- package/templates/runtime/model-import/formats/gltf-model-format-adapter.ts +161 -0
- package/templates/runtime/model-import/formats/gltf-node-preflight.ts +218 -0
- package/templates/runtime/model-import/formats/gltf-primitive-preflight.ts +295 -0
- package/templates/runtime/model-import/formats/gltf-source-document.ts +234 -0
- package/templates/runtime/model-import/formats/gltf-source-snapshot.ts +187 -0
- package/templates/runtime/model-import/formats/gltf-texture-resource.ts +252 -0
- package/templates/runtime/model-import/formats/index.ts +28 -0
- package/templates/runtime/model-import/formats/model-format-adapter.test.ts +165 -0
- package/templates/runtime/model-import/formats/model-format-adapter.ts +165 -0
- package/templates/runtime/model-import/formats/obj-material-library.test.ts +124 -0
- package/templates/runtime/model-import/formats/obj-material-library.ts +432 -0
- package/templates/runtime/model-import/formats/obj-model-format-adapter.test.ts +251 -0
- package/templates/runtime/model-import/formats/obj-model-format-adapter.ts +85 -0
- package/templates/runtime/model-import/formats/obj-stl-ply-model-format-adapter-support.ts +335 -0
- package/templates/runtime/model-import/formats/ply-model-format-adapter.test.ts +151 -0
- package/templates/runtime/model-import/formats/ply-model-format-adapter.ts +195 -0
- package/templates/runtime/model-import/formats/production-model-format-main-bundle.test.ts +123 -0
- package/templates/runtime/model-import/formats/production-model-format-manifest.ts +135 -0
- package/templates/runtime/model-import/formats/production-model-format-registry.test.ts +253 -0
- package/templates/runtime/model-import/formats/production-model-format-registry.ts +16 -0
- package/templates/runtime/model-import/formats/production-model-format-worker-registry.ts +68 -0
- package/templates/runtime/model-import/formats/stl-model-format-adapter.test.ts +110 -0
- package/templates/runtime/model-import/formats/stl-model-format-adapter.ts +125 -0
- package/templates/runtime/model-import/formats/three-static-appearance-canonicalizer.ts +305 -0
- package/templates/runtime/model-import/formats/three-static-geometry-canonicalizer.test.ts +245 -0
- package/templates/runtime/model-import/formats/three-static-geometry-canonicalizer.ts +434 -0
- package/templates/runtime/model-import/formats/three-static-source-bundle.ts +146 -0
- package/templates/runtime/model-import/formats/vendor/draco/LICENSE +252 -0
- package/templates/runtime/model-import/formats/vendor/draco/README.md +15 -0
- package/templates/runtime/model-import/formats/vendor/draco/draco_decoder_gltf.wasm.json +1 -0
- package/templates/runtime/model-import/formats/vendor/draco/draco_wasm_wrapper.cjs +117 -0
- package/templates/runtime/model-import/formats/vendor/draco/draco_wasm_wrapper.d.cts +9 -0
- package/templates/runtime/model-import/index.ts +125 -0
- package/templates/runtime/model-import/model-analysis-summary.test.ts +179 -0
- package/templates/runtime/model-import/model-analysis-summary.ts +164 -0
- package/templates/runtime/model-import/model-asset-metadata.ts +71 -0
- package/templates/runtime/model-import/model-import-limit-values.ts +41 -0
- package/templates/runtime/model-import/model-import-limits.test.ts +125 -0
- package/templates/runtime/model-import/model-import-limits.ts +165 -0
- package/templates/runtime/model-import/model-import-types.ts +215 -0
- package/templates/runtime/model-import/model-package-path.ts +106 -0
- package/templates/runtime/model-import/model-package-types.ts +55 -0
- package/templates/runtime/model-import/model-package-zip-preflight.ts +405 -0
- package/templates/runtime/model-import/model-package-zip.test.ts +252 -0
- package/templates/runtime/model-import/model-package-zip.ts +227 -0
- package/templates/runtime/model-import/model-persistence-appearance-resources.test.ts +69 -0
- package/templates/runtime/model-import/model-persistence-hydration-appearance.test.ts +146 -0
- package/templates/runtime/model-import/model-persistence-hydration-resources.ts +281 -0
- package/templates/runtime/model-import/model-persistence-hydration-test-support.ts +97 -0
- package/templates/runtime/model-import/model-persistence-hydration.test.ts +370 -0
- package/templates/runtime/model-import/model-persistence-hydration.ts +323 -0
- package/templates/runtime/model-import/model-source-asset-coordinator.test.ts +414 -0
- package/templates/runtime/model-import/model-source-asset-handler-appearance-resources.ts +20 -0
- package/templates/runtime/model-import/model-source-asset-handler-appearance.test.ts +169 -0
- package/templates/runtime/model-import/model-source-asset-handler-repair-controller.ts +294 -0
- package/templates/runtime/model-import/model-source-asset-handler-repair.ts +233 -0
- package/templates/runtime/model-import/model-source-asset-handler-resources.ts +54 -0
- package/templates/runtime/model-import/model-source-asset-handler.ingestion.test.ts +236 -0
- package/templates/runtime/model-import/model-source-asset-handler.lifecycle.test.ts +176 -0
- package/templates/runtime/model-import/model-source-asset-handler.test-support.ts +231 -0
- package/templates/runtime/model-import/model-source-asset-handler.ts +479 -0
- package/templates/runtime/model-import/model-source-asset-repair-coordinator.test.ts +431 -0
- package/templates/runtime/model-import/model-source-bundle-codec.test.ts +423 -0
- package/templates/runtime/model-import/model-source-bundle-codec.ts +259 -0
- package/templates/runtime/model-import/model-source-bundle-descriptor-fields.ts +369 -0
- package/templates/runtime/model-import/model-source-bundle-descriptor-validation.ts +402 -0
- package/templates/runtime/model-import/model-source-bundle-error.ts +28 -0
- package/templates/runtime/model-import/model-source-bundle-limits.ts +108 -0
- package/templates/runtime/model-import/model-source-bundle-mime-type.test.ts +21 -0
- package/templates/runtime/model-import/model-source-bundle-preflight-test-support.ts +435 -0
- package/templates/runtime/model-import/model-source-bundle-security-test-support.ts +417 -0
- package/templates/runtime/model-import/model-source-bundle-test-support.ts +83 -0
- package/templates/runtime/model-import/model-source-bundle.test.ts +427 -0
- package/templates/runtime/model-import/model-source-bundle.ts +377 -0
- package/templates/runtime/model-import/model-source-bytes.ts +78 -0
- package/templates/runtime/model-import/model-source-data-uri.ts +74 -0
- package/templates/runtime/model-import/model-source-digest.test.ts +25 -0
- package/templates/runtime/model-import/model-source-digest.ts +288 -0
- package/templates/runtime/model-import/model-source-gltf.ts +184 -0
- package/templates/runtime/model-import/model-source-json-preflight.ts +382 -0
- package/templates/runtime/model-import/model-source-lookup.ts +134 -0
- package/templates/runtime/model-import/model-source-package-normalization.test.ts +106 -0
- package/templates/runtime/model-import/model-source-path.ts +233 -0
- package/templates/runtime/model-import/test-fixtures/gltf-appearance-fixtures.ts +188 -0
- package/templates/runtime/model-import/test-fixtures/model-fixtures.ts +612 -0
- package/templates/runtime/model-import/test-fixtures/obj-appearance-fixtures.ts +76 -0
- package/templates/runtime/model-import/topology/apply-model-repair.test.ts +236 -0
- package/templates/runtime/model-import/topology/apply-model-repair.ts +31 -0
- package/templates/runtime/model-import/topology/model-repair-execution.ts +364 -0
- package/templates/runtime/model-import/topology/model-repair-geometry.ts +60 -0
- package/templates/runtime/model-import/topology/model-repair-plan-codec.test.ts +125 -0
- package/templates/runtime/model-import/topology/model-repair-plan-codec.ts +96 -0
- package/templates/runtime/model-import/topology/model-repair-plan-envelope.ts +13 -0
- package/templates/runtime/model-import/topology/model-repair-plan-validation.ts +325 -0
- package/templates/runtime/model-import/topology/model-repair-plan.ts +275 -0
- package/templates/runtime/model-import/topology/model-topology-analysis.test.ts +448 -0
- package/templates/runtime/model-import/topology/model-topology-analysis.ts +426 -0
- package/templates/runtime/model-import/topology/model-topology-digest.ts +117 -0
- package/templates/runtime/model-import/topology/model-topology-graph.ts +455 -0
- package/templates/runtime/model-import/topology/model-topology-math.ts +140 -0
- package/templates/runtime/model-import/topology/model-topology-resources.ts +126 -0
- package/templates/runtime/model-import/topology/model-topology-test-support.ts +163 -0
- package/templates/runtime/model-import/topology/model-topology-types.ts +14 -0
- package/templates/runtime/model-import/worker/bounded-worker-cache.test.ts +47 -0
- package/templates/runtime/model-import/worker/bounded-worker-cache.ts +147 -0
- package/templates/runtime/model-import/worker/cooperative-buffer-snapshot.ts +195 -0
- package/templates/runtime/model-import/worker/model-import-worker-appearance-receipt.test.ts +273 -0
- package/templates/runtime/model-import/worker/model-import-worker-client-draft-verification.ts +39 -0
- package/templates/runtime/model-import/worker/model-import-worker-client-receipt.test.ts +217 -0
- package/templates/runtime/model-import/worker/model-import-worker-client-repair-validation.test.ts +357 -0
- package/templates/runtime/model-import/worker/model-import-worker-client-repair-verification.ts +44 -0
- package/templates/runtime/model-import/worker/model-import-worker-client-result-verification.ts +68 -0
- package/templates/runtime/model-import/worker/model-import-worker-client-snapshot.test.ts +368 -0
- package/templates/runtime/model-import/worker/model-import-worker-client-snapshot.ts +478 -0
- package/templates/runtime/model-import/worker/model-import-worker-client-test-support.ts +198 -0
- package/templates/runtime/model-import/worker/model-import-worker-client-validation.test.ts +301 -0
- package/templates/runtime/model-import/worker/model-import-worker-client.test.ts +484 -0
- package/templates/runtime/model-import/worker/model-import-worker-client.ts +715 -0
- package/templates/runtime/model-import/worker/model-import-worker-diagnostics.ts +298 -0
- package/templates/runtime/model-import/worker/model-import-worker-protocol-validation.ts +714 -0
- package/templates/runtime/model-import/worker/model-import-worker-protocol.ts +192 -0
- package/templates/runtime/model-import/worker/model-import-worker-receipt.ts +221 -0
- package/templates/runtime/model-import/worker/model-import-worker-result-verification.ts +22 -0
- package/templates/runtime/model-import/worker/model-import-worker-runtime-appearance.test.ts +81 -0
- package/templates/runtime/model-import/worker/model-import-worker-runtime-envelope.test.ts +126 -0
- package/templates/runtime/model-import/worker/model-import-worker-runtime-lifecycle.test.ts +342 -0
- package/templates/runtime/model-import/worker/model-import-worker-runtime-package.test.ts +85 -0
- package/templates/runtime/model-import/worker/model-import-worker-runtime-production.test.ts +51 -0
- package/templates/runtime/model-import/worker/model-import-worker-runtime-repair.test.ts +75 -0
- package/templates/runtime/model-import/worker/model-import-worker-runtime-test-support.ts +126 -0
- package/templates/runtime/model-import/worker/model-import-worker-runtime.test.ts +472 -0
- package/templates/runtime/model-import/worker/model-import-worker-runtime.ts +804 -0
- package/templates/runtime/model-import/worker/model-import-worker-trust-boundary.test.ts +243 -0
- package/templates/runtime/model-import/worker/model-import-worker-vite-smoke.test.ts +132 -0
- package/templates/runtime/model-import/worker/model-import.worker.bundle.js +3691 -0
- package/templates/runtime/model-import/worker/model-import.worker.ts +25 -0
- package/templates/runtime/performance/index.ts +1 -0
- package/templates/runtime/performance/profile-catalog-manifest.d.mts +27 -0
- package/templates/runtime/performance/profile-catalog-manifest.mjs +42 -0
- package/templates/runtime/performance/profile-catalog.test.ts +49 -0
- package/templates/runtime/performance/profile-catalog.ts +56 -0
- package/templates/runtime/react/app-shell/runtime-public-api.test.tsx +388 -5
- package/templates/runtime/react/app-shell/settings-transfer-canvas.ts +68 -0
- package/templates/runtime/react/app-shell/settings-transfer.test.ts +94 -1
- package/templates/runtime/react/app-shell/settings-transfer.ts +61 -89
- package/templates/runtime/react/app-shell/storage-key-migration.test.ts +40 -0
- package/templates/runtime/react/app-shell/storage-key-migration.ts +13 -9
- package/templates/runtime/react/app-shell/toolbar-panel.tsx +31 -13
- package/templates/runtime/react/app-shell/toolcraft-app-panel-workspace.test.tsx +125 -0
- package/templates/runtime/react/app-shell/toolcraft-app-test-utils.tsx +72 -0
- package/templates/runtime/react/app-shell/toolcraft-app.integration.test.tsx +21 -1
- package/templates/runtime/react/app-shell/toolcraft-app.scene-export.test.tsx +68 -0
- package/templates/runtime/react/app-shell/toolcraft-app.test.tsx +10 -55
- package/templates/runtime/react/app-shell/toolcraft-app.tsx +73 -15
- package/templates/runtime/react/app-shell/toolcraft-media-presentation.test.tsx +135 -0
- package/templates/runtime/react/app-shell/toolcraft-media-presentation.tsx +190 -0
- package/templates/runtime/react/app-shell/toolcraft-model-presentation-composition.test.tsx +99 -0
- package/templates/runtime/react/app-shell/toolcraft-persistence-bootstrap.ts +111 -0
- package/templates/runtime/react/app-shell/toolcraft-pipeline-context.test.tsx +252 -0
- package/templates/runtime/react/app-shell/toolcraft-pipeline-context.tsx +44 -0
- package/templates/runtime/react/app-shell/toolcraft-pipeline-evidence.tsx +41 -0
- package/templates/runtime/react/app-shell/toolcraft-pipeline-initialization.test.tsx +301 -0
- package/templates/runtime/react/app-shell/toolcraft-playback-persistence.test.tsx +116 -0
- package/templates/runtime/react/app-shell/toolcraft-render-isolation.test.tsx +418 -0
- package/templates/runtime/react/app-shell/toolcraft-root-persistence-migration.test.tsx +297 -0
- package/templates/runtime/react/app-shell/toolcraft-root-persistence-test-utils.tsx +163 -0
- package/templates/runtime/react/app-shell/toolcraft-root-persistence.test.tsx +357 -0
- package/templates/runtime/react/app-shell/toolcraft-root.test.tsx +57 -6
- package/templates/runtime/react/app-shell/toolcraft-root.tsx +106 -94
- package/templates/runtime/react/app-shell/toolcraft-selector-lanes.test.tsx +338 -0
- package/templates/runtime/react/app-shell/toolcraft-selectors.test.tsx +241 -0
- package/templates/runtime/react/app-shell/toolcraft-selectors.ts +133 -0
- package/templates/runtime/react/app-shell/toolcraft-source-asset-context.test.tsx +467 -0
- package/templates/runtime/react/app-shell/toolcraft-source-asset-context.tsx +646 -0
- package/templates/runtime/react/app-shell/toolcraft-store-context.tsx +18 -0
- package/templates/runtime/react/app-shell/use-toolcraft-persistence.ts +203 -0
- package/templates/runtime/react/app-shell/use-toolcraft-pipeline-pass.test.tsx +220 -0
- package/templates/runtime/react/app-shell/use-toolcraft-pipeline-pass.ts +175 -0
- package/templates/runtime/react/app-shell/use-toolcraft-pipeline.ts +10 -0
- package/templates/runtime/react/app-shell/use-toolcraft-values.test.tsx +288 -0
- package/templates/runtime/react/app-shell/use-toolcraft.ts +188 -7
- package/templates/runtime/react/canvas/canvas-default-media-layer.tsx +52 -14
- package/templates/runtime/react/canvas/canvas-media-transform.ts +2 -1
- package/templates/runtime/react/canvas/canvas-scene-surface.test.tsx +51 -0
- package/templates/runtime/react/canvas/canvas-scene-surface.tsx +54 -0
- package/templates/runtime/react/canvas/canvas-shell-interactions.test.tsx +225 -3
- package/templates/runtime/react/canvas/canvas-shell-media-rendering.test.tsx +83 -0
- package/templates/runtime/react/canvas/canvas-shell-rendering.test.tsx +88 -0
- package/templates/runtime/react/canvas/canvas-shell-test-utils.tsx +42 -2
- package/templates/runtime/react/canvas/canvas-shell-upload.test.tsx +231 -16
- package/templates/runtime/react/canvas/canvas-shell.tsx +154 -63
- package/templates/runtime/react/canvas/canvas-source-asset-feedback.test.tsx +211 -0
- package/templates/runtime/react/canvas/canvas-upload-routing.ts +65 -56
- package/templates/runtime/react/canvas/canvas-viewport-world.tsx +66 -0
- package/templates/runtime/react/canvas/media-file.test.ts +102 -0
- package/templates/runtime/react/canvas/media-file.ts +80 -35
- package/templates/runtime/react/canvas/runtime-scene-export.test.ts +279 -0
- package/templates/runtime/react/canvas/runtime-scene-export.ts +167 -0
- package/templates/runtime/react/canvas/scene-element-presentation-rect.ts +35 -0
- package/templates/runtime/react/canvas/use-canvas-drop-import.ts +65 -94
- package/templates/runtime/react/canvas/use-canvas-viewport-interactions.ts +52 -17
- package/templates/runtime/react/canvas/use-toolcraft-canvas-frame.ts +20 -0
- package/templates/runtime/react/canvas-handles/canvas-handle-layer-registry.test.ts +33 -0
- package/templates/runtime/react/canvas-handles/canvas-handle-layer-registry.tsx +64 -0
- package/templates/runtime/react/controls-panel/__tests__/actions-control-loading.test.tsx +59 -0
- package/templates/runtime/react/controls-panel/__tests__/controls-panel-filedrop-reorder.test.tsx +29 -11
- package/templates/runtime/react/controls-panel/__tests__/controls-panel.control-visibility.test.tsx +52 -0
- package/templates/runtime/react/controls-panel/__tests__/controls-panel.dependency-isolation.test.tsx +332 -0
- package/templates/runtime/react/controls-panel/__tests__/controls-panel.extensions-live-state.test.tsx +135 -0
- package/templates/runtime/react/controls-panel/__tests__/controls-panel.footer-actions.test.tsx +50 -0
- package/templates/runtime/react/controls-panel/__tests__/controls-panel.inline-layout.test.tsx +25 -9
- package/templates/runtime/react/controls-panel/__tests__/controls-panel.media-upload-files.test.tsx +35 -3
- package/templates/runtime/react/controls-panel/__tests__/controls-panel.media-upload-image.test.tsx +11 -5
- package/templates/runtime/react/controls-panel/__tests__/controls-panel.media-upload-multi-image.test.tsx +167 -5
- package/templates/runtime/react/controls-panel/__tests__/controls-panel.render-isolation.test.tsx +496 -0
- package/templates/runtime/react/controls-panel/__tests__/controls-panel.reset-dependency-isolation.test.tsx +226 -0
- package/templates/runtime/react/controls-panel/__tests__/controls-panel.scene-export-actions.test.tsx +187 -0
- package/templates/runtime/react/controls-panel/__tests__/controls-panel.section-isolation.test.tsx +441 -0
- package/templates/runtime/react/controls-panel/__tests__/controls-panel.section-navigation-overflow.test.tsx +247 -0
- package/templates/runtime/react/controls-panel/__tests__/controls-panel.section-navigation.test.tsx +486 -0
- package/templates/runtime/react/controls-panel/__tests__/controls-panel.section-shell.test.tsx +24 -2
- package/templates/runtime/react/controls-panel/__tests__/controls-panel.setup-controls.test.tsx +10 -5
- package/templates/runtime/react/controls-panel/__tests__/controls-panel.tabs.test.tsx +93 -0
- package/templates/runtime/react/controls-panel/__tests__/file-drop-folder-selection.test.tsx +62 -0
- package/templates/runtime/react/controls-panel/__tests__/file-drop-presentation-accessibility.test.tsx +45 -0
- package/templates/runtime/react/controls-panel/__tests__/file-drop-presentation.test.tsx +459 -0
- package/templates/runtime/react/controls-panel/actions/controls-panel-actions.ts +159 -12
- package/templates/runtime/react/controls-panel/actions/panel-action-feedback.tsx +24 -0
- package/templates/runtime/react/controls-panel/conditions/control-condition-dependencies.ts +39 -0
- package/templates/runtime/react/controls-panel/conditions/control-conditions.ts +40 -0
- package/templates/runtime/react/controls-panel/controls-panel.tsx +286 -170
- package/templates/runtime/react/controls-panel/keyframes/controls-panel-keyframes.tsx +27 -20
- package/templates/runtime/react/controls-panel/layout/controls-panel-control-group.tsx +509 -0
- package/templates/runtime/react/controls-panel/layout/controls-panel-inline-layout.tsx +5 -3
- package/templates/runtime/react/controls-panel/layout/controls-panel-layout.tsx +33 -5
- package/templates/runtime/react/controls-panel/layout/controls-panel-section-navigation-layout.ts +169 -0
- package/templates/runtime/react/controls-panel/layout/controls-panel-section-navigation.tsx +458 -0
- package/templates/runtime/react/controls-panel/layout/controls-panel-section.tsx +324 -324
- package/templates/runtime/react/controls-panel/live-custom-control.tsx +52 -0
- package/templates/runtime/react/controls-panel/renderers/controls-panel-basic-renderers.tsx +15 -0
- package/templates/runtime/react/controls-panel/renderers/controls-panel-media-renderer.test.tsx +242 -0
- package/templates/runtime/react/controls-panel/renderers/controls-panel-media-renderer.tsx +203 -129
- package/templates/runtime/react/controls-panel/renderers/controls-panel-renderer-registry.test.ts +26 -0
- package/templates/runtime/react/controls-panel/renderers/controls-panel-renderer-registry.ts +29 -0
- package/templates/runtime/react/controls-panel/renderers/controls-panel-settings-transfer-renderer.tsx +4 -4
- package/templates/runtime/react/controls-panel/testing/controls-panel-test-utils.tsx +8 -2
- package/templates/runtime/react/controls-panel/values/controls-panel-value-labels.ts +1 -0
- package/templates/runtime/react/index.ts +32 -1
- package/templates/runtime/react/layers/layer-tree.ts +5 -32
- package/templates/runtime/react/layers/layers-panel-test-utils.tsx +3 -1
- package/templates/runtime/react/layers/layers-panel.tsx +44 -30
- package/templates/runtime/react/model-rendering/lazy-three-model-render-binding.test.ts +92 -0
- package/templates/runtime/react/model-rendering/lazy-three-model-render-binding.ts +49 -0
- package/templates/runtime/react/model-rendering/model-canvas-layer.test.tsx +491 -0
- package/templates/runtime/react/model-rendering/model-canvas-layer.tsx +459 -0
- package/templates/runtime/react/model-rendering/model-display-fit.test.ts +57 -0
- package/templates/runtime/react/model-rendering/model-display-fit.ts +110 -0
- package/templates/runtime/react/model-rendering/model-export.test.ts +179 -0
- package/templates/runtime/react/model-rendering/model-export.ts +90 -0
- package/templates/runtime/react/model-rendering/model-presentation-consumer.test.tsx +225 -0
- package/templates/runtime/react/model-rendering/model-presentation-consumer.tsx +189 -0
- package/templates/runtime/react/model-rendering/model-presentation-feedback.ts +15 -0
- package/templates/runtime/react/model-rendering/model-presentation-mode.ts +112 -0
- package/templates/runtime/react/model-rendering/model-presentation-resource-manager.test.ts +244 -0
- package/templates/runtime/react/model-rendering/model-presentation-resource-manager.ts +426 -0
- package/templates/runtime/react/model-rendering/model-render-binding.ts +233 -0
- package/templates/runtime/react/model-rendering/model-render-host.ts +339 -0
- package/templates/runtime/react/model-rendering/model-render-provider.test.tsx +457 -0
- package/templates/runtime/react/model-rendering/model-render-provider.tsx +172 -0
- package/templates/runtime/react/model-rendering/model-render-registry.test.ts +86 -0
- package/templates/runtime/react/model-rendering/model-render-registry.ts +64 -0
- package/templates/runtime/react/model-rendering/model-render-state.ts +79 -0
- package/templates/runtime/react/model-rendering/three-canonical-geometry.ts +346 -0
- package/templates/runtime/react/model-rendering/three-canonical-model.ts +150 -0
- package/templates/runtime/react/model-rendering/three-model-appearance.test.ts +125 -0
- package/templates/runtime/react/model-rendering/three-model-appearance.ts +199 -0
- package/templates/runtime/react/model-rendering/three-model-prewarm.ts +61 -0
- package/templates/runtime/react/model-rendering/three-model-render-adapter-lifecycle.test.ts +293 -0
- package/templates/runtime/react/model-rendering/three-model-render-adapter.test-support.ts +70 -0
- package/templates/runtime/react/model-rendering/three-model-render-adapter.test.ts +379 -0
- package/templates/runtime/react/model-rendering/three-model-render-adapter.ts +484 -0
- package/templates/runtime/react/orientation-gizmo/model-orbit-interaction.integration.test.tsx +129 -0
- package/templates/runtime/react/orientation-gizmo/orientation-gizmo-layer.tsx +44 -0
- package/templates/runtime/react/orientation-gizmo/orientation-gizmo-math.test.ts +217 -0
- package/templates/runtime/react/orientation-gizmo/orientation-gizmo-math.ts +299 -0
- package/templates/runtime/react/orientation-gizmo/orientation-gizmo-public-api.test.ts +12 -0
- package/templates/runtime/react/orientation-gizmo/orientation-gizmo-selection.test.ts +115 -0
- package/templates/runtime/react/orientation-gizmo/orientation-gizmo-selection.ts +46 -0
- package/templates/runtime/react/orientation-gizmo/orientation-gizmo-snap.integration.test.tsx +179 -0
- package/templates/runtime/react/orientation-gizmo/orientation-gizmo-test-harness.tsx +208 -0
- package/templates/runtime/react/orientation-gizmo/orientation-gizmo.integration.test.tsx +167 -0
- package/templates/runtime/react/orientation-gizmo/orientation-gizmo.tsx +544 -0
- package/templates/runtime/react/orientation-gizmo/orientation-interaction-coordinator.ts +112 -0
- package/templates/runtime/react/orientation-gizmo/orientation-quaternion.ts +264 -0
- package/templates/runtime/react/orientation-gizmo/use-toolcraft-model-orbit-interaction.ts +233 -0
- package/templates/runtime/react/orientation-gizmo/use-toolcraft-orientation-control-selection.ts +78 -0
- package/templates/runtime/react/panel-host/panel-host-geometry.test.ts +38 -1
- package/templates/runtime/react/panel-host/panel-host-geometry.ts +64 -6
- package/templates/runtime/react/panel-host/panel-host-runtime-placement.test.tsx +198 -0
- package/templates/runtime/react/panel-host/panel-host-types.ts +13 -2
- package/templates/runtime/react/panel-host/panel-host.test.tsx +13 -1
- package/templates/runtime/react/panel-host/panel-host.tsx +105 -20
- package/templates/runtime/react/panel-host/use-toolcraft-panel-binding.test.tsx +161 -0
- package/templates/runtime/react/panel-host/use-toolcraft-panel-binding.ts +55 -0
- package/templates/runtime/react/timeline/timeline-expanded-content.tsx +3 -0
- package/templates/runtime/react/timeline/timeline-panel-header.tsx +6 -0
- package/templates/runtime/react/timeline/timeline-panel-test-utils.tsx +1 -0
- package/templates/runtime/react/timeline/timeline-panel-transport.test.tsx +176 -2
- package/templates/runtime/react/timeline/timeline-panel.tsx +72 -19
- package/templates/runtime/react/timeline/timeline-playback-hooks.ts +58 -21
- package/templates/runtime/react/timeline/timeline-scrub-lifecycle.test.tsx +154 -0
- package/templates/runtime/rendering/index.ts +3 -0
- package/templates/runtime/rendering/renderer-pipeline-cache.ts +171 -0
- package/templates/runtime/rendering/renderer-pipeline-pass-generation.test.ts +151 -0
- package/templates/runtime/rendering/renderer-pipeline-pass-generation.ts +267 -0
- package/templates/runtime/rendering/renderer-pipeline-registration.test.ts +356 -0
- package/templates/runtime/rendering/renderer-pipeline-registration.ts +760 -0
- package/templates/runtime/rendering/renderer-pipeline-resource-lifecycle.test.ts +248 -0
- package/templates/runtime/rendering/renderer-pipeline-runtime-owner-inspection.ts +23 -0
- package/templates/runtime/rendering/renderer-pipeline-runtime-owner.test.ts +353 -0
- package/templates/runtime/rendering/renderer-pipeline-runtime-owner.ts +369 -0
- package/templates/runtime/rendering/renderer-pipeline-runtime.lifecycle.test.ts +440 -0
- package/templates/runtime/rendering/renderer-pipeline-runtime.test.ts +495 -0
- package/templates/runtime/rendering/renderer-pipeline-runtime.ts +611 -0
- package/templates/runtime/rendering/renderer-pipeline-runtime.types.test.ts +93 -0
- package/templates/runtime/rendering/renderer-pipeline-source-invalidation.test.ts +208 -0
- package/templates/runtime/rendering/structured-key-trie.test.ts +31 -0
- package/templates/runtime/rendering/structured-key-trie.ts +91 -0
- package/templates/runtime/scene/index.ts +1 -0
- package/templates/runtime/scene/scene-bounds.test.ts +242 -0
- package/templates/runtime/scene/scene-bounds.ts +190 -0
- package/templates/runtime/schema/additional-value-targets.ts +15 -0
- package/templates/runtime/schema/app-capabilities.test.ts +70 -0
- package/templates/runtime/schema/app-capabilities.ts +28 -0
- package/templates/runtime/schema/app-identity.test.ts +68 -0
- package/templates/runtime/schema/app-identity.ts +30 -0
- package/templates/runtime/schema/assembly-contract.ts +18 -2
- package/templates/runtime/schema/control-schema-normalization.ts +144 -3
- package/templates/runtime/schema/controls-panel-actions.ts +111 -44
- package/templates/runtime/schema/controls-panel-layout-groups.ts +17 -6
- package/templates/runtime/schema/controls-panel-normalization.ts +42 -7
- package/templates/runtime/schema/controls-panel-section-id.test.ts +418 -0
- package/templates/runtime/schema/controls-panel-section-id.ts +208 -0
- package/templates/runtime/schema/controls-panel-section-layout.ts +62 -23
- package/templates/runtime/schema/controls-panel-section-roundtrip.test.ts +157 -0
- package/templates/runtime/schema/controls-panel-section-titles.ts +19 -7
- package/templates/runtime/schema/define-toolcraft.assembly.test.ts +73 -0
- package/templates/runtime/schema/define-toolcraft.control-sections.test-support.ts +46 -0
- package/templates/runtime/schema/define-toolcraft.control-sections.test.ts +2 -4
- package/templates/runtime/schema/define-toolcraft.file-drop-normalization.test.ts +177 -0
- package/templates/runtime/schema/define-toolcraft.model-file-drop-formats.test.ts +181 -0
- package/templates/runtime/schema/define-toolcraft.model-file-drop-limits.test.ts +175 -0
- package/templates/runtime/schema/define-toolcraft.segmented-control-fit.test.ts +167 -0
- package/templates/runtime/schema/define-toolcraft.setup-background.test.ts +142 -0
- package/templates/runtime/schema/define-toolcraft.setup-canvas.test.ts +38 -0
- package/templates/runtime/schema/define-toolcraft.setup-persistence.test.ts +39 -31
- package/templates/runtime/schema/define-toolcraft.setup-render-scale-timeline.test.ts +33 -13
- package/templates/runtime/schema/define-toolcraft.setup-settings-transfer.test.ts +61 -1
- package/templates/runtime/schema/define-toolcraft.ts +32 -55
- package/templates/runtime/schema/keyframe-capability.test.ts +16 -5
- package/templates/runtime/schema/panels-schema-normalization.ts +17 -2
- package/templates/runtime/schema/persistence-plan.test.ts +201 -0
- package/templates/runtime/schema/persistence-plan.ts +70 -0
- package/templates/runtime/schema/runtime-setup-background.ts +158 -0
- package/templates/runtime/schema/runtime-setup-section.ts +122 -57
- package/templates/runtime/schema/runtime-targets.ts +14 -0
- package/templates/runtime/schema/schema-resolvers.ts +0 -18
- package/templates/runtime/schema/types.ts +167 -17
- package/templates/runtime/source-assets/binary-media-hydration.ts +73 -0
- package/templates/runtime/source-assets/default-binary-media-hydration.test.ts +92 -0
- package/templates/runtime/source-assets/default-model-hydration.test.ts +200 -0
- package/templates/runtime/source-assets/file-source-asset-handler.ts +157 -0
- package/templates/runtime/source-assets/image-file-source-asset-handler.test.ts +78 -0
- package/templates/runtime/source-assets/image-source-asset-handler.test.ts +202 -0
- package/templates/runtime/source-assets/image-source-asset-handler.ts +123 -0
- package/templates/runtime/source-assets/index.ts +20 -0
- package/templates/runtime/source-assets/media-resource-ref.test.ts +33 -0
- package/templates/runtime/source-assets/media-resource-ref.ts +49 -0
- package/templates/runtime/source-assets/production-source-asset-registry.ts +18 -0
- package/templates/runtime/source-assets/repository/binary-asset-dependencies.test.ts +184 -0
- package/templates/runtime/source-assets/repository/binary-asset-reachability.ts +26 -0
- package/templates/runtime/source-assets/repository/binary-asset-repository.ts +139 -0
- package/templates/runtime/source-assets/repository/indexeddb-binary-asset-lifecycle.test.ts +111 -0
- package/templates/runtime/source-assets/repository/indexeddb-binary-asset-lifecycle.ts +248 -0
- package/templates/runtime/source-assets/repository/indexeddb-binary-asset-liveness.test.ts +68 -0
- package/templates/runtime/source-assets/repository/indexeddb-binary-asset-liveness.ts +156 -0
- package/templates/runtime/source-assets/repository/indexeddb-binary-asset-metadata.ts +242 -0
- package/templates/runtime/source-assets/repository/indexeddb-binary-asset-options.ts +130 -0
- package/templates/runtime/source-assets/repository/indexeddb-binary-asset-repository-leases.test.ts +305 -0
- package/templates/runtime/source-assets/repository/indexeddb-binary-asset-repository-liveness.test.ts +217 -0
- package/templates/runtime/source-assets/repository/indexeddb-binary-asset-repository-migration.test.ts +198 -0
- package/templates/runtime/source-assets/repository/indexeddb-binary-asset-repository.test-support.ts +48 -0
- package/templates/runtime/source-assets/repository/indexeddb-binary-asset-repository.test.ts +242 -0
- package/templates/runtime/source-assets/repository/indexeddb-binary-asset-repository.ts +390 -0
- package/templates/runtime/source-assets/repository/indexeddb-binary-asset-storage.ts +238 -0
- package/templates/runtime/source-assets/repository/indexeddb-binary-asset-test-support.ts +163 -0
- package/templates/runtime/source-assets/repository/memory-binary-asset-repository.test.ts +211 -0
- package/templates/runtime/source-assets/repository/memory-binary-asset-repository.ts +149 -0
- package/templates/runtime/source-assets/repository/resource-manifest.test.ts +67 -0
- package/templates/runtime/source-assets/repository/resource-manifest.ts +122 -0
- package/templates/runtime/source-assets/repository/resource-reachability.test.ts +227 -0
- package/templates/runtime/source-assets/repository/resource-reachability.ts +153 -0
- package/templates/runtime/source-assets/repository/unavailable-binary-asset-repository.ts +24 -0
- package/templates/runtime/source-assets/source-asset-admission.ts +63 -0
- package/templates/runtime/source-assets/source-asset-batch-preparation.ts +42 -0
- package/templates/runtime/source-assets/source-asset-binary-media-hydrator.ts +137 -0
- package/templates/runtime/source-assets/source-asset-cleanup-manager.ts +110 -0
- package/templates/runtime/source-assets/source-asset-coordinator-admission.test.ts +365 -0
- package/templates/runtime/source-assets/source-asset-coordinator-lifecycle.test.ts +230 -0
- package/templates/runtime/source-assets/source-asset-coordinator-planning.test.ts +121 -0
- package/templates/runtime/source-assets/source-asset-coordinator-presentation-reachability.test.ts +54 -0
- package/templates/runtime/source-assets/source-asset-coordinator-test-support.ts +197 -0
- package/templates/runtime/source-assets/source-asset-coordinator.test.ts +495 -0
- package/templates/runtime/source-assets/source-asset-coordinator.ts +328 -0
- package/templates/runtime/source-assets/source-asset-feedback.ts +40 -0
- package/templates/runtime/source-assets/source-asset-handler-cancellation.test.ts +157 -0
- package/templates/runtime/source-assets/source-asset-import-runner.ts +462 -0
- package/templates/runtime/source-assets/source-asset-job-manager.ts +186 -0
- package/templates/runtime/source-assets/source-asset-model-hydrator.ts +241 -0
- package/templates/runtime/source-assets/source-asset-operation-store.test.ts +53 -0
- package/templates/runtime/source-assets/source-asset-operation-store.ts +132 -0
- package/templates/runtime/source-assets/source-asset-prepared-result.ts +108 -0
- package/templates/runtime/source-assets/source-asset-presentation-feedback.test.ts +34 -0
- package/templates/runtime/source-assets/source-asset-presentation-resources.test.ts +43 -0
- package/templates/runtime/source-assets/source-asset-presentation-resources.ts +144 -0
- package/templates/runtime/source-assets/source-asset-presentation.test.ts +196 -0
- package/templates/runtime/source-assets/source-asset-presentation.ts +182 -0
- package/templates/runtime/source-assets/source-asset-registry.test.ts +282 -0
- package/templates/runtime/source-assets/source-asset-registry.ts +165 -0
- package/templates/runtime/source-assets/source-asset-resource-resolver.test.ts +47 -0
- package/templates/runtime/source-assets/source-asset-resource-resolver.ts +86 -0
- package/templates/runtime/source-assets/source-asset-types.ts +173 -0
- package/templates/runtime/state/canvas-background-state.ts +73 -0
- package/templates/runtime/state/canvas-control-target-reducer.test.ts +272 -0
- package/templates/runtime/state/canvas-control-target-reducer.ts +349 -0
- package/templates/runtime/state/canvas-frame.test.ts +68 -0
- package/templates/runtime/state/canvas-frame.ts +79 -0
- package/templates/runtime/state/canvas-reducer.ts +90 -5
- package/templates/runtime/state/control-value-normalization.test.ts +141 -0
- package/templates/runtime/state/control-value-normalization.ts +222 -0
- package/templates/runtime/state/controls-reducer.ts +45 -145
- package/templates/runtime/state/create-template-state.test.ts +43 -2
- package/templates/runtime/state/create-template-state.ts +36 -5
- package/templates/runtime/state/history-patch-metadata.test.ts +36 -0
- package/templates/runtime/state/history-patch-metadata.ts +74 -0
- package/templates/runtime/state/history-patches.ts +49 -12
- package/templates/runtime/state/layer-visibility.ts +36 -0
- package/templates/runtime/state/media-defaults.ts +93 -6
- package/templates/runtime/state/media-discriminated-union.test.ts +204 -0
- package/templates/runtime/state/media-import-allocation.ts +129 -0
- package/templates/runtime/state/media-reducer.ts +395 -99
- package/templates/runtime/state/media-resource-state.ts +34 -0
- package/templates/runtime/state/media-state.ts +1 -1
- package/templates/runtime/state/panels-reducer.ts +80 -27
- package/templates/runtime/state/persistence-additional-value-targets.test.ts +67 -0
- package/templates/runtime/state/persistence-controller.test.ts +187 -0
- package/templates/runtime/state/persistence-controller.ts +195 -0
- package/templates/runtime/state/persistence-legacy-section-collapse.test.ts +75 -0
- package/templates/runtime/state/persistence-legacy-section-collapse.ts +138 -0
- package/templates/runtime/state/persistence-media-migration.test.ts +163 -0
- package/templates/runtime/state/persistence-migrations.test.ts +51 -0
- package/templates/runtime/state/persistence-migrations.ts +101 -0
- package/templates/runtime/state/persistence-reader-canvas.ts +4 -0
- package/templates/runtime/state/persistence-reader-media.ts +298 -39
- package/templates/runtime/state/persistence-reader-panels.ts +52 -5
- package/templates/runtime/state/persistence-reader-values.ts +19 -21
- package/templates/runtime/state/persistence-readers.ts +1 -1
- package/templates/runtime/state/persistence-snapshot.ts +15 -4
- package/templates/runtime/state/persistence.test.ts +228 -3
- package/templates/runtime/state/persistence.ts +53 -14
- package/templates/runtime/state/reducer-canvas-panels.test.ts +63 -0
- package/templates/runtime/state/reducer-controls.test.ts +114 -0
- package/templates/runtime/state/reducer-media-import-batch.test.ts +90 -0
- package/templates/runtime/state/reducer-media-import-sizing.test.ts +5 -3
- package/templates/runtime/state/reducer-media-reset.test.ts +18 -2
- package/templates/runtime/state/reducer-media-test-utils.ts +11 -6
- package/templates/runtime/state/reducer-media-transform.test.ts +11 -3
- package/templates/runtime/state/reducer-model-lifecycle.test.ts +307 -0
- package/templates/runtime/state/reducer.ts +9 -0
- package/templates/runtime/state/scene-element-frame.test.ts +32 -0
- package/templates/runtime/state/scene-element-frame.ts +46 -0
- package/templates/runtime/state/toolcraft-external-store-cross-lane.test.ts +475 -0
- package/templates/runtime/state/toolcraft-external-store-dependencies.test.ts +226 -0
- package/templates/runtime/state/toolcraft-external-store-dependencies.ts +291 -0
- package/templates/runtime/state/toolcraft-external-store-field-intent.test.ts +202 -0
- package/templates/runtime/state/toolcraft-external-store-history-boundary.test.ts +243 -0
- package/templates/runtime/state/toolcraft-external-store-history.ts +254 -0
- package/templates/runtime/state/toolcraft-external-store-publication.test.ts +135 -0
- package/templates/runtime/state/toolcraft-external-store-transition.ts +143 -0
- package/templates/runtime/state/toolcraft-external-store.test.ts +330 -0
- package/templates/runtime/state/toolcraft-external-store.ts +401 -0
- package/templates/runtime/state/toolcraft-keyframe-equality.ts +78 -0
- package/templates/runtime/state/types.ts +215 -13
- package/templates/runtime/testing/model-import-performance-workload.test.ts +265 -0
- package/templates/runtime/testing/model-import-performance-workload.ts +468 -0
- package/templates/runtime/testing/performance-config.ts +7 -0
- package/templates/runtime/testing/performance-control-classification.ts +3 -59
- package/templates/runtime/testing/performance-coverage-policy.ts +13 -0
- package/templates/runtime/testing/performance-coverage-validator.ts +39 -24
- package/templates/runtime/testing/performance-envelope-validation-context.ts +33 -0
- package/templates/runtime/testing/performance-fixture-adapter-types.ts +74 -0
- package/templates/runtime/testing/performance-fixture-adapters.ts +24 -0
- package/templates/runtime/testing/performance-fixture-cost-model.ts +216 -0
- package/templates/runtime/testing/performance-fixture-dimensions.ts +83 -0
- package/templates/runtime/testing/performance-fixture-discrete-adapters.ts +150 -0
- package/templates/runtime/testing/performance-fixture-discrete-domain.test.ts +274 -0
- package/templates/runtime/testing/performance-fixture-discrete-search.test.ts +119 -0
- package/templates/runtime/testing/performance-fixture-discrete-search.ts +96 -0
- package/templates/runtime/testing/performance-fixture-execution.test.ts +248 -0
- package/templates/runtime/testing/performance-fixture-execution.ts +109 -0
- package/templates/runtime/testing/performance-fixture-numeric.test.ts +15 -0
- package/templates/runtime/testing/performance-fixture-numeric.ts +24 -0
- package/templates/runtime/testing/performance-fixture-plan-analysis.ts +385 -0
- package/templates/runtime/testing/performance-fixture-plan.test-fixtures.ts +115 -0
- package/templates/runtime/testing/performance-fixture-plan.test.ts +443 -0
- package/templates/runtime/testing/performance-fixture-plan.ts +105 -0
- package/templates/runtime/testing/performance-fixture-reachable-values.test.ts +406 -0
- package/templates/runtime/testing/performance-fixture-record.ts +14 -0
- package/templates/runtime/testing/performance-fixture-registry-validation.ts +341 -0
- package/templates/runtime/testing/performance-fixture-validation-pure.test.ts +378 -0
- package/templates/runtime/testing/performance-interaction-policy.test.ts +35 -0
- package/templates/runtime/testing/performance-interaction-policy.ts +9 -0
- package/templates/runtime/testing/performance-no-legacy-semantics.test.ts +109 -0
- package/templates/runtime/testing/performance-path-codec.d.mts +42 -0
- package/templates/runtime/testing/performance-path-codec.mjs +112 -0
- package/templates/runtime/testing/performance-path-codec.test.ts +96 -0
- package/templates/runtime/testing/performance-path-coverage-policy.ts +111 -0
- package/templates/runtime/testing/performance-path-coverage.test.ts +219 -0
- package/templates/runtime/testing/performance-path-model.ts +15 -0
- package/templates/runtime/testing/performance-paths.test-fixtures.ts +165 -0
- package/templates/runtime/testing/performance-paths.test.ts +208 -0
- package/templates/runtime/testing/performance-paths.ts +84 -0
- package/templates/runtime/testing/performance-profile-validation.test.ts +42 -0
- package/templates/runtime/testing/performance-profile-validation.ts +19 -0
- package/templates/runtime/testing/performance-render-plan-assessment.test.ts +492 -0
- package/templates/runtime/testing/performance-render-plan-assessment.ts +121 -0
- package/templates/runtime/testing/performance-render-plan-benchmark-evidence.test.ts +225 -0
- package/templates/runtime/testing/performance-render-plan-benchmark-evidence.ts +185 -0
- package/templates/runtime/testing/performance-render-plan-integration.test.ts +250 -0
- package/templates/runtime/testing/performance-render-plan-model.ts +91 -0
- package/templates/runtime/testing/performance-render-plan-pass-assessment.ts +353 -0
- package/templates/runtime/testing/performance-render-plan-registration.test.ts +78 -0
- package/templates/runtime/testing/performance-render-plan-test-fixtures.ts +123 -0
- package/templates/runtime/testing/performance-render-plan-utils.ts +65 -0
- package/templates/runtime/testing/performance-renderer-pipeline-parser.ts +202 -0
- package/templates/runtime/testing/performance-renderer-pipeline-validation.ts +93 -98
- package/templates/runtime/testing/performance-renderer-technique-validation.ts +0 -155
- package/templates/runtime/testing/performance-scenario-common-validation.ts +101 -0
- package/templates/runtime/testing/performance-scenario-validation.ts +3 -40
- package/templates/runtime/testing/performance-schema-queries.ts +3 -1
- package/templates/runtime/testing/performance-test-fixtures/index.ts +0 -2
- package/templates/runtime/testing/performance-test-fixtures/renderer-pipelines.ts +0 -14
- package/templates/runtime/testing/performance-types.ts +128 -182
- package/templates/runtime/testing/performance-workload-envelope-derived-validation.test.ts +152 -0
- package/templates/runtime/testing/performance-workload-envelope-derived-validation.ts +109 -0
- package/templates/runtime/testing/performance-workload-envelope-schema-validation.test.ts +384 -0
- package/templates/runtime/testing/performance-workload-envelope-schema-validation.ts +201 -0
- package/templates/runtime/testing/performance-workload-envelope-shared.ts +97 -0
- package/templates/runtime/testing/performance-workload-envelope-test-fixtures.ts +102 -0
- package/templates/runtime/testing/performance-workload-envelope-validation.test.ts +293 -0
- package/templates/runtime/testing/performance-workload-envelope-validation.ts +222 -0
- package/templates/runtime/testing/performance-workload-types.test.ts +65 -0
- package/templates/runtime/testing/performance-workload-types.ts +34 -0
- package/templates/runtime/testing/performance.ts +47 -5
- package/templates/starter/AGENTS.md +45 -37
- package/templates/starter/docs/toolcraft/README.md +14 -16
- package/templates/starter/docs/toolcraft/acceptance-testing.md +86 -33
- package/templates/starter/docs/toolcraft/agent-worklog.md +121 -22
- package/templates/starter/docs/toolcraft/assembly-workflow.md +29 -13
- package/templates/starter/docs/toolcraft/component-rules.md +43 -5
- package/templates/starter/docs/toolcraft/core/control-selection.md +66 -0
- package/templates/starter/docs/toolcraft/core/layout.md +5 -3
- package/templates/starter/docs/toolcraft/core/media-upload.md +44 -1
- package/templates/starter/docs/toolcraft/core/performance.md +100 -67
- package/templates/starter/docs/toolcraft/core/runtime-boundary.md +14 -2
- package/templates/starter/docs/toolcraft/core/setup-export.md +40 -16
- package/templates/starter/docs/toolcraft/core/timeline-animation.md +2 -1
- package/templates/starter/docs/toolcraft/custom-controls.md +7 -1
- package/templates/starter/docs/toolcraft/decision-contract.md +8 -4
- package/templates/starter/docs/toolcraft/performance.md +115 -143
- package/templates/starter/docs/toolcraft/renderer-technique.md +90 -25
- package/templates/starter/docs/toolcraft/schema-reference.md +200 -44
- package/templates/starter/docs/toolcraft/workflow.md +35 -20
- package/templates/starter/e2e/app-browser-control-coverage.spec.ts +0 -54
- package/templates/starter/e2e/app-browser-infinity-canvas-evidence.spec.ts +86 -0
- package/templates/starter/e2e/app-browser-model-appearance-evidence.spec.ts +214 -0
- package/templates/starter/e2e/app-browser-model-import-evidence.spec.ts +422 -0
- package/templates/starter/e2e/app-browser-model-performance.spec.ts +140 -0
- package/templates/starter/e2e/app-browser-model-runtime-requirements.spec.ts +71 -0
- package/templates/starter/e2e/app-browser-orientation-evidence.spec.ts +276 -0
- package/templates/starter/e2e/app-browser-performance-evidence.spec.ts +164 -90
- package/templates/starter/e2e/app-browser-performance-probe.spec.ts +61 -0
- package/templates/starter/e2e/app-browser-proof-session.spec.ts +19 -0
- package/templates/starter/e2e/app-browser-render-scale-evidence.spec.ts +193 -0
- package/templates/starter/e2e/app-browser-render-scale-requirements.spec.ts +71 -0
- package/templates/starter/e2e/app-browser-runtime-provenance.spec.ts +12 -64
- package/templates/starter/e2e/app-browser-runtime-reporter.spec.ts +100 -50
- package/templates/starter/e2e/app-browser-runtime-requirements.spec.ts +179 -46
- package/templates/starter/e2e/app-browser-semantic-evidence.spec.ts +34 -56
- package/templates/starter/e2e/app-controls.spec.ts +1 -1
- package/templates/starter/e2e/app-kernel-benchmarks.ts +3 -0
- package/templates/starter/e2e/app-performance-path-adapters.ts +4 -0
- package/templates/starter/e2e/app-performance.spec.ts +49 -0
- package/templates/starter/e2e/app-persistence.spec.ts +209 -0
- package/templates/starter/e2e/browser-acceptance-outcome-helpers.ts +5 -1
- package/templates/starter/e2e/browser-conditional-output-evidence-helpers.ts +5 -0
- package/templates/starter/e2e/browser-execution-ledger.spec.ts +79 -0
- package/templates/starter/e2e/browser-execution-ledger.ts +115 -0
- package/templates/starter/e2e/browser-infinity-canvas-evidence.ts +729 -0
- package/templates/starter/e2e/browser-layer-evidence-helpers.ts +66 -9
- package/templates/starter/e2e/browser-model-appearance-evidence-helpers.ts +65 -0
- package/templates/starter/e2e/browser-model-appearance-evidence.ts +171 -0
- package/templates/starter/e2e/browser-model-import-evidence-helpers.ts +426 -0
- package/templates/starter/e2e/browser-orientation-gizmo-actions.ts +256 -0
- package/templates/starter/e2e/browser-orientation-gizmo-evidence-helpers.ts +433 -0
- package/templates/starter/e2e/browser-performance-evidence.ts +22 -0
- package/templates/starter/e2e/browser-performance-measurement-evidence.ts +25 -0
- package/templates/starter/e2e/browser-performance-measurement-report.spec.ts +73 -0
- package/templates/starter/e2e/browser-performance-measurement-report.ts +218 -0
- package/templates/starter/e2e/browser-performance-report.ts +246 -0
- package/templates/starter/e2e/browser-performance-reporter-evaluation.ts +317 -0
- package/templates/starter/e2e/browser-performance-reporter.spec.ts +456 -0
- package/templates/starter/e2e/browser-performance-targeted-selection.spec.ts +145 -0
- package/templates/starter/e2e/browser-proof-session.ts +31 -1
- package/templates/starter/e2e/browser-render-scale-evidence.ts +245 -0
- package/templates/starter/e2e/browser-runtime-evidence-reporter-test-fixtures.ts +55 -0
- package/templates/starter/e2e/browser-runtime-evidence-reporter.ts +146 -4
- package/templates/starter/e2e/browser-runtime-evidence-requirements.ts +133 -52
- package/templates/starter/e2e/browser-semantic-evidence-test-helpers.ts +57 -0
- package/templates/starter/e2e/browser-state-evidence-helpers.ts +7 -1
- package/templates/starter/e2e/browser-timeline-evidence-helpers.ts +4 -0
- package/templates/starter/e2e/canvas-handle-helpers.ts +3 -3
- package/templates/starter/e2e/kernel-benchmark-contract.ts +19 -0
- package/templates/starter/e2e/model-import-evidence-test-support.ts +125 -0
- package/templates/starter/e2e/performance-budget-helpers.ts +3 -107
- package/templates/starter/e2e/performance-canvas-helpers.ts +8 -8
- package/templates/starter/e2e/performance-checkpoint-report.ts +89 -0
- package/templates/starter/e2e/performance-compiled-fixture-runtime.ts +120 -0
- package/templates/starter/e2e/performance-control-helpers.ts +1 -1
- package/templates/starter/e2e/performance-control-layout-helpers.ts +24 -0
- package/templates/starter/e2e/performance-environment-evidence.ts +205 -0
- package/templates/starter/e2e/performance-fixture-helpers.ts +37 -210
- package/templates/starter/e2e/performance-fixture-selection.spec.ts +167 -0
- package/templates/starter/e2e/performance-fixture-selection.ts +82 -0
- package/templates/starter/e2e/performance-frame-metrics.spec.ts +21 -0
- package/templates/starter/e2e/performance-frame-metrics.ts +50 -0
- package/templates/starter/e2e/performance-frame-probe.ts +74 -49
- package/templates/starter/e2e/performance-helpers.ts +1 -0
- package/templates/starter/e2e/performance-interaction-measurement.ts +5 -11
- package/templates/starter/e2e/performance-measurement-evidence.ts +52 -8
- package/templates/starter/e2e/performance-model-appearance-contract.ts +11 -0
- package/templates/starter/e2e/performance-model-import-appearance-fixture-support.ts +32 -0
- package/templates/starter/e2e/performance-model-import-appearance-fixtures.spec.ts +56 -0
- package/templates/starter/e2e/performance-model-import-appearance-fixtures.ts +434 -0
- package/templates/starter/e2e/performance-model-import-binary-appearance-fixtures.ts +39 -0
- package/templates/starter/e2e/performance-model-import-fixtures.spec.ts +133 -0
- package/templates/starter/e2e/performance-model-import-fixtures.ts +439 -0
- package/templates/starter/e2e/performance-model-import-geometry-fixtures.ts +158 -0
- package/templates/starter/e2e/performance-model-import-helpers.ts +409 -0
- package/templates/starter/e2e/performance-model-import-zip-fixtures.ts +57 -0
- package/templates/starter/e2e/performance-model-orientation-helpers.ts +34 -0
- package/templates/starter/e2e/performance-model-pixel-helpers.ts +135 -0
- package/templates/starter/e2e/performance-output-action-helpers.ts +4 -4
- package/templates/starter/e2e/performance-path-adapter-contract.ts +55 -0
- package/templates/starter/e2e/performance-path-helpers.spec.ts +171 -0
- package/templates/starter/e2e/performance-path-helpers.ts +291 -0
- package/templates/starter/e2e/performance-pipeline-browser-helper.spec.ts +175 -0
- package/templates/starter/e2e/performance-pipeline-cache-fallback.spec.ts +204 -0
- package/templates/starter/e2e/performance-pipeline-evidence-continuity.spec.ts +134 -0
- package/templates/starter/e2e/performance-pipeline-evidence-test-fixtures.ts +409 -0
- package/templates/starter/e2e/performance-pipeline-evidence.spec.ts +441 -0
- package/templates/starter/e2e/performance-pipeline-evidence.ts +175 -0
- package/templates/starter/e2e/performance-pipeline-invariants.ts +359 -0
- package/templates/starter/e2e/performance-pipeline-resource-evidence.spec.ts +119 -0
- package/templates/starter/e2e/performance-profile-helpers.spec.ts +103 -0
- package/templates/starter/e2e/performance-profile-helpers.ts +52 -0
- package/templates/starter/e2e/performance-render-scale-runner.spec.ts +266 -0
- package/templates/starter/e2e/performance-slider-helpers.ts +7 -123
- package/templates/starter/e2e/product-observable-helpers.ts +109 -103
- package/templates/starter/e2e/toolcraft-delivery-catalog-reporter.ts +31 -0
- package/templates/starter/e2e/toolcraft-kernel-benchmark.spec.ts +107 -0
- package/templates/starter/e2e/toolcraft-product-test.spec.ts +14 -0
- package/templates/starter/e2e/toolcraft-product-test.ts +33 -0
- package/templates/starter/index.html +8 -0
- package/templates/starter/package.json +14 -11
- package/templates/starter/playwright.config.ts +124 -2
- package/templates/starter/scripts/check-toolcraft-code-health.mjs +66 -19
- package/templates/starter/scripts/check-toolcraft-code-health.test.mjs +151 -0
- package/templates/starter/scripts/check-toolcraft-docs.mjs +49 -3
- package/templates/starter/scripts/check-toolcraft-integrity.mjs +229 -117
- package/templates/starter/scripts/check-toolcraft-integrity.test.mjs +271 -0
- package/templates/starter/scripts/playwright-containing-file.mjs +48 -0
- package/templates/starter/scripts/playwright-test-shim-fixture.mjs +204 -0
- package/templates/starter/scripts/playwright-test-shim-fixture.test.mjs +69 -0
- package/templates/starter/scripts/playwright-test-title-selection-performance-path.test.mjs +129 -0
- package/templates/starter/scripts/playwright-test-title-selection.mjs +350 -0
- package/templates/starter/scripts/playwright-test-title-selection.test.mjs +465 -0
- package/templates/starter/scripts/run-browser-performance-test-helpers.mjs +335 -0
- package/templates/starter/scripts/run-browser-performance.mjs +71 -98
- package/templates/starter/scripts/run-browser-performance.test.mjs +266 -27
- package/templates/starter/scripts/run-delivery-verification-test-helpers.mjs +210 -0
- package/templates/starter/scripts/run-delivery-verification.mjs +47 -0
- package/templates/starter/scripts/run-delivery-verification.test.mjs +101 -0
- package/templates/starter/scripts/run-kernel-benchmarks.mjs +104 -0
- package/templates/starter/scripts/toolcraft-browser-impact-selection.mjs +26 -0
- package/templates/starter/scripts/toolcraft-checkpoint-bundle.mjs +198 -0
- package/templates/starter/scripts/toolcraft-checkpoint-bundle.test.mjs +297 -0
- package/templates/starter/scripts/toolcraft-checkpoint-capability-invariants.test.mjs +389 -0
- package/templates/starter/scripts/toolcraft-checkpoint-delivery-state.mjs +106 -0
- package/templates/starter/scripts/toolcraft-checkpoint-delivery-state.test.mjs +279 -0
- package/templates/starter/scripts/toolcraft-checkpoint-durability.test.mjs +49 -0
- package/templates/starter/scripts/toolcraft-checkpoint-durable-fs.mjs +90 -0
- package/templates/starter/scripts/toolcraft-checkpoint-ownership-policy.mjs +217 -0
- package/templates/starter/scripts/toolcraft-checkpoint-paths.mjs +35 -0
- package/templates/starter/scripts/toolcraft-checkpoint-transaction-test-helpers.mjs +12 -0
- package/templates/starter/scripts/toolcraft-checkpoint-transaction.mjs +125 -0
- package/templates/starter/scripts/toolcraft-checkpoint-transaction.test.mjs +167 -0
- package/templates/starter/scripts/toolcraft-checkpoint-write-capability.mjs +196 -0
- package/templates/starter/scripts/toolcraft-code-health-core.d.mts +46 -0
- package/templates/starter/scripts/toolcraft-code-health-core.mjs +80 -99
- package/templates/starter/scripts/toolcraft-code-health-line-budget.mjs +80 -0
- package/templates/starter/scripts/toolcraft-contract-doc-integrity.mjs +7 -3
- package/templates/starter/scripts/toolcraft-contract-doc-integrity.test.mjs +16 -0
- package/templates/starter/scripts/toolcraft-contract-manifest.json +42 -0
- package/templates/starter/scripts/toolcraft-contract-manifest.mjs +8 -0
- package/templates/starter/scripts/toolcraft-contract-manifest.test.mjs +40 -0
- package/templates/starter/scripts/toolcraft-css-source-evidence.mjs +192 -0
- package/templates/starter/scripts/toolcraft-css-source-evidence.test.mjs +336 -0
- package/templates/starter/scripts/toolcraft-css-url-graph-evidence.test.mjs +157 -0
- package/templates/starter/scripts/toolcraft-css-url-scanner.mjs +333 -0
- package/templates/starter/scripts/toolcraft-css-url-scanner.test.mjs +210 -0
- package/templates/starter/scripts/toolcraft-delivery-anchor.d.mts +46 -0
- package/templates/starter/scripts/toolcraft-delivery-anchor.mjs +84 -0
- package/templates/starter/scripts/toolcraft-delivery-anchor.test.mjs +131 -0
- package/templates/starter/scripts/toolcraft-delivery-architecture-inventory.mjs +86 -0
- package/templates/starter/scripts/toolcraft-delivery-architecture-policy.d.mts +51 -0
- package/templates/starter/scripts/toolcraft-delivery-architecture-policy.mjs +248 -0
- package/templates/starter/scripts/toolcraft-delivery-architecture-test-helpers.mjs +40 -0
- package/templates/starter/scripts/toolcraft-delivery-catalog-collector.mjs +55 -0
- package/templates/starter/scripts/toolcraft-delivery-catalog-collector.test.mjs +167 -0
- package/templates/starter/scripts/toolcraft-delivery-evidence.mjs +187 -0
- package/templates/starter/scripts/toolcraft-delivery-evidence.test.mjs +268 -0
- package/templates/starter/scripts/toolcraft-delivery-executor.mjs +294 -0
- package/templates/starter/scripts/toolcraft-delivery-executor.test.mjs +463 -0
- package/templates/starter/scripts/toolcraft-delivery-framework-refresh.test.mjs +141 -0
- package/templates/starter/scripts/toolcraft-delivery-functional-changed.test.mjs +468 -0
- package/templates/starter/scripts/toolcraft-delivery-functional-context.d.mts +72 -0
- package/templates/starter/scripts/toolcraft-delivery-functional-context.mjs +56 -0
- package/templates/starter/scripts/toolcraft-delivery-functional-context.test.mjs +231 -0
- package/templates/starter/scripts/toolcraft-delivery-functional-initial.test.mjs +212 -0
- package/templates/starter/scripts/toolcraft-delivery-functional-model-lifecycle.test.mjs +254 -0
- package/templates/starter/scripts/toolcraft-delivery-functional-semantic-regression.test.mjs +135 -0
- package/templates/starter/scripts/toolcraft-delivery-lifecycle-state.mjs +226 -0
- package/templates/starter/scripts/toolcraft-delivery-lifecycle-state.test.mjs +83 -0
- package/templates/starter/scripts/toolcraft-delivery-lifecycle.mjs +340 -0
- package/templates/starter/scripts/toolcraft-delivery-module-graph.test.mjs +393 -0
- package/templates/starter/scripts/toolcraft-delivery-performance-iteration-authority.test.mjs +88 -0
- package/templates/starter/scripts/toolcraft-delivery-performance-iteration-durability.test.mjs +329 -0
- package/templates/starter/scripts/toolcraft-delivery-performance-iteration-evidence.test.mjs +104 -0
- package/templates/starter/scripts/toolcraft-delivery-performance-iteration-lifecycle.test.mjs +478 -0
- package/templates/starter/scripts/toolcraft-delivery-performance-iteration-test-helpers.mjs +19 -0
- package/templates/starter/scripts/toolcraft-delivery-plan-authority.test.mjs +282 -0
- package/templates/starter/scripts/toolcraft-delivery-plan-construction.mjs +166 -0
- package/templates/starter/scripts/toolcraft-delivery-plan-errors.test.mjs +425 -0
- package/templates/starter/scripts/toolcraft-delivery-plan-functional-model.test.mjs +358 -0
- package/templates/starter/scripts/toolcraft-delivery-plan.d.mts +155 -0
- package/templates/starter/scripts/toolcraft-delivery-plan.mjs +334 -0
- package/templates/starter/scripts/toolcraft-delivery-plan.test.mjs +487 -0
- package/templates/starter/scripts/toolcraft-delivery-receipt-performance.test.mjs +156 -0
- package/templates/starter/scripts/toolcraft-delivery-receipt-strictness.test.mjs +220 -0
- package/templates/starter/scripts/toolcraft-delivery-receipt-test-helpers.mjs +226 -0
- package/templates/starter/scripts/toolcraft-delivery-receipt.d.mts +83 -0
- package/templates/starter/scripts/toolcraft-delivery-receipt.mjs +216 -0
- package/templates/starter/scripts/toolcraft-delivery-receipt.test.mjs +195 -0
- package/templates/starter/scripts/toolcraft-delivery-receipt.types.test.mts +161 -0
- package/templates/starter/scripts/toolcraft-dependency-source-record.mjs +59 -0
- package/templates/starter/scripts/toolcraft-fixture-module-closure.mjs +279 -0
- package/templates/starter/scripts/toolcraft-fixture-module-closure.test.mjs +184 -0
- package/templates/starter/scripts/toolcraft-full-performance-test-helpers.mjs +67 -0
- package/templates/starter/scripts/toolcraft-functional-proof-model.d.mts +47 -0
- package/templates/starter/scripts/toolcraft-functional-proof-model.mjs +198 -0
- package/templates/starter/scripts/toolcraft-functional-proof-model.test.mjs +453 -0
- package/templates/starter/scripts/toolcraft-functional-proof-model.types.test.mts +102 -0
- package/templates/starter/scripts/toolcraft-functional-proof-primitives.d.mts +6 -0
- package/templates/starter/scripts/toolcraft-functional-proof-primitives.mjs +98 -0
- package/templates/starter/scripts/toolcraft-functional-proof-primitives.test.mjs +67 -0
- package/templates/starter/scripts/toolcraft-functional-proof-regression-fixtures.mjs +298 -0
- package/templates/starter/scripts/toolcraft-graph-reachability.mjs +73 -0
- package/templates/starter/scripts/toolcraft-integrity-manifest.mjs +5 -2
- package/templates/starter/scripts/toolcraft-integrity-policy.d.mts +6 -0
- package/templates/starter/scripts/toolcraft-integrity-policy.mjs +14 -6
- package/templates/starter/scripts/toolcraft-integrity-test-utils.mjs +84 -0
- package/templates/starter/scripts/toolcraft-kernel-benchmark-receipt.d.mts +47 -0
- package/templates/starter/scripts/toolcraft-kernel-benchmark-receipt.mjs +306 -0
- package/templates/starter/scripts/toolcraft-kernel-benchmark-receipt.test.mjs +169 -0
- package/templates/starter/scripts/toolcraft-layer-evidence-facade.test.mjs +256 -0
- package/templates/starter/scripts/toolcraft-layer-evidence-reporter.test.mjs +106 -0
- package/templates/starter/scripts/toolcraft-local-dependency-evidence.test.mjs +453 -0
- package/templates/starter/scripts/toolcraft-local-dependency-graph.mjs +344 -0
- package/templates/starter/scripts/toolcraft-local-dependency-graph.test.mjs +372 -0
- package/templates/starter/scripts/toolcraft-performance-authority-policy.d.mts +40 -0
- package/templates/starter/scripts/toolcraft-performance-authority-policy.mjs +274 -0
- package/templates/starter/scripts/toolcraft-performance-checkpoint-runner.mjs +87 -0
- package/templates/starter/scripts/toolcraft-performance-checkpoint-runner.test.mjs +50 -0
- package/templates/starter/scripts/toolcraft-performance-escalation-policy.mjs +72 -0
- package/templates/starter/scripts/toolcraft-performance-escalation-policy.test.mjs +393 -0
- package/templates/starter/scripts/toolcraft-performance-iteration-comparison.mjs +127 -0
- package/templates/starter/scripts/toolcraft-performance-iteration-comparison.test.mjs +133 -0
- package/templates/starter/scripts/toolcraft-performance-receipt-policy.mjs +127 -0
- package/templates/starter/scripts/toolcraft-performance-receipt-validation.test.mjs +214 -0
- package/templates/starter/scripts/toolcraft-performance-report.d.mts +34 -0
- package/templates/starter/scripts/toolcraft-performance-report.mjs +244 -0
- package/templates/starter/scripts/toolcraft-performance-report.test.mjs +138 -0
- package/templates/starter/scripts/toolcraft-performance-request-authority.mjs +64 -0
- package/templates/starter/scripts/toolcraft-performance-request-authority.test.mjs +488 -0
- package/templates/starter/scripts/toolcraft-plan-execution-authority.mjs +143 -0
- package/templates/starter/scripts/toolcraft-playwright-evidence-authority.mjs +96 -0
- package/templates/starter/scripts/toolcraft-playwright-evidence-authority.test.mjs +94 -0
- package/templates/starter/scripts/toolcraft-product-boundary-ast.mjs +65 -51
- package/templates/starter/scripts/toolcraft-product-boundary-graph-evidence.test.mjs +161 -0
- package/templates/starter/scripts/toolcraft-product-boundary.mjs +104 -129
- package/templates/starter/scripts/toolcraft-product-boundary.test.mjs +46 -0
- package/templates/starter/scripts/toolcraft-product-dependency-resolution.mjs +61 -118
- package/templates/starter/scripts/toolcraft-product-evidence-boundary-ast.mjs +97 -31
- package/templates/starter/scripts/toolcraft-product-evidence-boundary.test.mjs +204 -1
- package/templates/starter/scripts/toolcraft-product-model-presentation-boundary.test.mjs +49 -0
- package/templates/starter/scripts/toolcraft-product-observable-facade.test.mjs +223 -0
- package/templates/starter/scripts/toolcraft-product-style-boundary.mjs +0 -136
- package/templates/starter/scripts/toolcraft-proof-process.mjs +199 -0
- package/templates/starter/scripts/toolcraft-proof-process.test.mjs +466 -0
- package/templates/starter/scripts/toolcraft-protected-browser-build.mjs +32 -0
- package/templates/starter/scripts/toolcraft-readonly-adjacency.mjs +44 -0
- package/templates/starter/scripts/toolcraft-receipt-boundary.test.mjs +285 -0
- package/templates/starter/scripts/toolcraft-receipt-file-io.mjs +16 -0
- package/templates/starter/scripts/toolcraft-source-inventory.mjs +100 -1
- package/templates/starter/scripts/toolcraft-source-inventory.test.mjs +106 -0
- package/templates/starter/scripts/toolcraft-source-ownership.mjs +15 -0
- package/templates/starter/scripts/toolcraft-source-ownership.test.mjs +31 -1
- package/templates/starter/scripts/toolcraft-state-evidence-facade.test.mjs +258 -0
- package/templates/starter/scripts/toolcraft-state-evidence-reporter.test.mjs +78 -0
- package/templates/starter/scripts/toolcraft-static-string.mjs +234 -28
- package/templates/starter/scripts/toolcraft-targeted-performance-execution.mjs +274 -0
- package/templates/starter/scripts/toolcraft-targeted-performance-execution.test.mjs +225 -0
- package/templates/starter/scripts/toolcraft-targeted-performance-report-combination.mjs +83 -0
- package/templates/starter/scripts/toolcraft-targeted-performance-report-combination.test.mjs +131 -0
- package/templates/starter/scripts/toolcraft-targeted-performance-report.d.mts +89 -0
- package/templates/starter/scripts/toolcraft-targeted-performance-report.mjs +321 -0
- package/templates/starter/scripts/toolcraft-targeted-performance-report.test.mjs +225 -0
- package/templates/starter/scripts/toolcraft-targeted-performance-report.types.test.mts +71 -0
- package/templates/starter/scripts/toolcraft-typescript-analysis.mjs +334 -0
- package/templates/starter/scripts/toolcraft-typescript-architecture-invariants.test.mjs +202 -0
- package/templates/starter/scripts/toolcraft-typescript-callables.mjs +83 -0
- package/templates/starter/scripts/toolcraft-typescript-module-shape.mjs +156 -0
- package/templates/starter/scripts/toolcraft-typescript-semantic-evidence.mjs +66 -0
- package/templates/starter/scripts/toolcraft-typescript-source-evidence-structure.test.mjs +44 -0
- package/templates/starter/scripts/toolcraft-typescript-source-evidence.d.mts +86 -0
- package/templates/starter/scripts/toolcraft-typescript-source-evidence.mjs +334 -0
- package/templates/starter/scripts/toolcraft-unavailable-resource-evidence-facade.test.mjs +439 -0
- package/templates/starter/scripts/toolcraft-verification-impact-inventory.d.mts +62 -0
- package/templates/starter/scripts/toolcraft-verification-impact-inventory.mjs +344 -0
- package/templates/starter/scripts/toolcraft-verification-impact-inventory.test.mjs +204 -0
- package/templates/starter/scripts/toolcraft-verification-impact-performance-candidates.test.mjs +210 -0
- package/templates/starter/scripts/toolcraft-verification-impact-resolution.mjs +344 -0
- package/templates/starter/scripts/toolcraft-verification-impact-resolution.test.mjs +270 -0
- package/templates/starter/scripts/toolcraft-verification-impact-semantic-resolution.test.mjs +449 -0
- package/templates/starter/scripts/toolcraft-verification-impact-support-resolution.test.mjs +195 -0
- package/templates/starter/scripts/toolcraft-verification-impact.d.mts +132 -0
- package/templates/starter/scripts/toolcraft-verification-impact.mjs +169 -0
- package/templates/starter/scripts/toolcraft-verification-impact.test.mjs +300 -0
- package/templates/starter/scripts/toolcraft-verification-input-roles.d.mts +60 -0
- package/templates/starter/scripts/toolcraft-verification-input-roles.mjs +197 -0
- package/templates/starter/scripts/toolcraft-verification-input-roles.test.mjs +225 -0
- package/templates/starter/scripts/toolcraft-verification-inventory.mjs +138 -42
- package/templates/starter/scripts/toolcraft-verification-lock.mjs +64 -0
- package/templates/starter/scripts/toolcraft-verification-receipt-test-helpers.mjs +245 -0
- package/templates/starter/scripts/toolcraft-verification-receipt.d.mts +40 -6
- package/templates/starter/scripts/toolcraft-verification-receipt.mjs +95 -229
- package/templates/starter/scripts/toolcraft-verification-receipt.test.mjs +325 -210
- package/templates/starter/scripts/toolcraft-vite-env-activation.test.mjs +131 -0
- package/templates/starter/scripts/toolcraft-vitest-runtime-contract.mjs +18 -0
- package/templates/starter/scripts/toolcraft-vitest-runtime-contract.test.mjs +36 -0
- package/templates/starter/scripts/toolcraft-vitest-runtime-evidence-reporter.test.mjs +7 -0
- package/templates/starter/scripts/toolcraft-worklog-decision-trail.d.mts +14 -0
- package/templates/starter/scripts/toolcraft-worklog-decision-trail.mjs +170 -0
- package/templates/starter/src/app/acceptance/canvas-coverage.ts +18 -0
- package/templates/starter/src/app/acceptance/canvas-handle-acceptance.ts +5 -14
- package/templates/starter/src/app/acceptance/condition-exclusivity.test.ts +60 -0
- package/templates/starter/src/app/acceptance/condition-exclusivity.ts +221 -0
- package/templates/starter/src/app/acceptance/control-acceptance-context.ts +20 -6
- package/templates/starter/src/app/acceptance/control-acceptance-coverage.ts +60 -10
- package/templates/starter/src/app/acceptance/control-acceptance-kind-rules.ts +55 -7
- package/templates/starter/src/app/acceptance/control-acceptance.ts +3 -0
- package/templates/starter/src/app/acceptance/control-component-rules.ts +0 -32
- package/templates/starter/src/app/acceptance/control-layout-entity-rules.ts +7 -4
- package/templates/starter/src/app/acceptance/control-layout-model.ts +12 -4
- package/templates/starter/src/app/acceptance/control-section-inventory.test.ts +136 -0
- package/templates/starter/src/app/acceptance/control-section-inventory.ts +69 -24
- package/templates/starter/src/app/acceptance/controls.ts +4 -0
- package/templates/starter/src/app/acceptance/infinity-canvas.ts +81 -0
- package/templates/starter/src/app/acceptance/inline-layout.ts +14 -3
- package/templates/starter/src/app/acceptance/interaction-ownership-intent.ts +31 -0
- package/templates/starter/src/app/acceptance/interaction-ownership.ts +283 -0
- package/templates/starter/src/app/acceptance/interaction-targets.ts +18 -0
- package/templates/starter/src/app/acceptance/media-upload.ts +115 -10
- package/templates/starter/src/app/acceptance/model-import-coverage.ts +42 -0
- package/templates/starter/src/app/acceptance/orientation-gizmo.ts +176 -0
- package/templates/starter/src/app/acceptance/output-background-rules.ts +58 -18
- package/templates/starter/src/app/acceptance/output-export-layout-rules.ts +4 -8
- package/templates/starter/src/app/acceptance/output-export-model.ts +17 -7
- package/templates/starter/src/app/acceptance/reference-study-types.ts +60 -0
- package/templates/starter/src/app/acceptance/render-scale.ts +107 -0
- package/templates/starter/src/app/acceptance/runtime-coverage.ts +45 -0
- package/templates/starter/src/app/acceptance/runtime-setup.ts +4 -2
- package/templates/starter/src/app/acceptance/types.ts +66 -63
- package/templates/starter/src/app/acceptance/validate-coverage.ts +76 -4
- package/templates/starter/src/app/acceptance/validation-pipeline.test.ts +5 -1
- package/templates/starter/src/app/acceptance/validation-pipeline.ts +2 -0
- package/templates/starter/src/app/acceptance/view-interaction-intent.ts +23 -0
- package/templates/starter/src/app/acceptance/view-interaction.ts +148 -0
- package/templates/starter/src/app/starter-acceptance-data.ts +28 -1
- package/templates/starter/src/app/starter-acceptance.animation-intent.test.ts +7 -4
- package/templates/starter/src/app/starter-acceptance.background-export.test.ts +17 -14
- package/templates/starter/src/app/starter-acceptance.base-coverage.test.ts +3 -0
- package/templates/starter/src/app/starter-acceptance.canvas-sizing.test.ts +133 -4
- package/templates/starter/src/app/starter-acceptance.compound-part-coverage.test.ts +6 -4
- package/templates/starter/src/app/starter-acceptance.contract-fixtures.test.ts +40 -0
- package/templates/starter/src/app/starter-acceptance.contract-fixtures.ts +20 -2
- package/templates/starter/src/app/starter-acceptance.control-label-context.test.ts +7 -5
- package/templates/starter/src/app/starter-acceptance.control-labels.test.ts +10 -8
- package/templates/starter/src/app/starter-acceptance.control-naming-rules.test.ts +6 -7
- package/templates/starter/src/app/starter-acceptance.control-order.test.ts +110 -2
- package/templates/starter/src/app/starter-acceptance.control-state.test.ts +6 -7
- package/templates/starter/src/app/starter-acceptance.curves-rules.test.ts +4 -5
- package/templates/starter/src/app/starter-acceptance.custom-control-collections.test.ts +7 -5
- package/templates/starter/src/app/starter-acceptance.custom-control-coverage.test.ts +3 -4
- package/templates/starter/src/app/starter-acceptance.custom-control-fit-check.test.ts +6 -4
- package/templates/starter/src/app/starter-acceptance.custom-control-valid.test.ts +5 -3
- package/templates/starter/src/app/starter-acceptance.image-video-export-settings.test.ts +5 -6
- package/templates/starter/src/app/starter-acceptance.interaction-ownership.test.ts +408 -0
- package/templates/starter/src/app/starter-acceptance.keyframes.test.ts +3 -2
- package/templates/starter/src/app/starter-acceptance.layers.test.ts +2 -0
- package/templates/starter/src/app/starter-acceptance.media-upload.fixtures.ts +34 -4
- package/templates/starter/src/app/starter-acceptance.media-upload.test.ts +225 -2
- package/templates/starter/src/app/starter-acceptance.orientation-gizmo.test.ts +265 -0
- package/templates/starter/src/app/starter-acceptance.output-export-rules.test.ts +14 -24
- package/templates/starter/src/app/starter-acceptance.persistence-coverage.test.ts +50 -0
- package/templates/starter/src/app/starter-acceptance.product-output-export.test.ts +7 -7
- package/templates/starter/src/app/starter-acceptance.product-readiness.test.ts +2 -0
- package/templates/starter/src/app/starter-acceptance.product-worklog.test.ts +1 -7
- package/templates/starter/src/app/starter-acceptance.range-slider-rules.test.ts +3 -4
- package/templates/starter/src/app/starter-acceptance.reference-foundation.test.ts +2 -2
- package/templates/starter/src/app/starter-acceptance.render-scale.test.ts +305 -0
- package/templates/starter/src/app/starter-acceptance.schema-test-utils.ts +1 -1
- package/templates/starter/src/app/starter-acceptance.section-cohesion.test.ts +5 -5
- package/templates/starter/src/app/starter-acceptance.section-dependencies.test.ts +11 -5
- package/templates/starter/src/app/starter-acceptance.section-titles.test.ts +4 -5
- package/templates/starter/src/app/starter-acceptance.setup-readiness.test.ts +26 -9
- package/templates/starter/src/app/starter-acceptance.slider-rules.test.ts +9 -7
- package/templates/starter/src/app/starter-acceptance.slider-unit-rules.test.ts +2 -3
- package/templates/starter/src/app/starter-acceptance.text-control-kind.test.ts +3 -4
- package/templates/starter/src/app/starter-acceptance.toggle-pair-layout.test.ts +5 -6
- package/templates/starter/src/app/starter-acceptance.toggle-parameter-layout.test.ts +63 -7
- package/templates/starter/src/app/starter-acceptance.ts +29 -0
- package/templates/starter/src/app/starter-acceptance.video-reference-study.test.ts +3 -3
- package/templates/starter/src/app/starter-acceptance.view-interaction.test.ts +282 -0
- package/templates/starter/src/app/starter-acceptance.worklog-command-authority.test.ts +123 -0
- package/templates/starter/src/app/starter-acceptance.worklog-performance-command-cases.ts +34 -0
- package/templates/starter/src/app/starter-acceptance.worklog-performance-intent-test-utils.ts +98 -0
- package/templates/starter/src/app/starter-acceptance.worklog-performance-intent.test.ts +299 -0
- package/templates/starter/src/app/starter-acceptance.worklog-test-utils.ts +76 -173
- package/templates/starter/src/app/starter-acceptance.worklog.test.ts +92 -114
- package/templates/starter/src/app/starter-automated-runtime-evidence.test.ts +0 -8
- package/templates/starter/src/app/starter-composition.tsx +1 -0
- package/templates/starter/src/app/starter-identity.ts +4 -0
- package/templates/starter/src/app/starter-performance-test-utils.ts +0 -87
- package/templates/starter/src/app/starter-performance.fixture-helper.test.ts +191 -0
- package/templates/starter/src/app/starter-performance.gates.test.ts +385 -39
- package/templates/starter/src/app/starter-performance.ts +8 -13
- package/templates/starter/src/app/starter-schema.test.ts +26 -2
- package/templates/starter/src/app/starter-schema.ts +3 -0
- package/templates/starter/src/app/starter-verification-impact.json +15 -0
- package/templates/starter/src/app/test-evidence/browser-performance-contract.ts +387 -0
- package/templates/starter/src/app/test-evidence/browser-performance-measurement-contract.ts +258 -0
- package/templates/starter/src/app/test-evidence/browser-runtime-contract.ts +31 -2
- package/templates/starter/src/router.tsx +3 -0
- package/templates/starter/src/routes/index.tsx +3 -0
- package/templates/starter/tsconfig.json +7 -1
- package/templates/ui/components/composites/tabs.tsx +10 -0
- package/templates/ui/components/controls/actions/actions-control.tsx +17 -1
- package/templates/ui/components/controls/actions/index.ts +1 -0
- package/templates/ui/components/controls/boolean/boolean-controls.tsx +5 -0
- package/templates/ui/components/controls/file-drop/file-drop-control.test.tsx +96 -0
- package/templates/ui/components/controls/file-drop/file-drop-control.tsx +325 -104
- package/templates/ui/components/controls/file-drop/file-drop-empty-state.tsx +51 -17
- package/templates/ui/components/controls/file-drop/file-drop-file-list.tsx +85 -61
- package/templates/ui/components/controls/file-drop/file-drop-folder-input.tsx +39 -0
- package/templates/ui/components/controls/file-drop/file-drop-image-grid.tsx +64 -43
- package/templates/ui/components/controls/file-drop/file-drop-presentation-messages.tsx +57 -0
- package/templates/ui/components/controls/file-drop/file-drop-presentation.test.ts +58 -0
- package/templates/ui/components/controls/file-drop/{file-drop-model.tsx → file-drop-presentation.tsx} +128 -2
- package/templates/ui/components/controls/file-drop/file-drop-single-preview.tsx +32 -25
- package/templates/ui/components/controls/file-drop/file-drop-types.ts +99 -8
- package/templates/ui/components/controls/file-drop/index.ts +5 -1
- package/templates/ui/components/controls/font-picker/font-catalog.node-import.test.ts +24 -0
- package/templates/ui/components/controls/font-picker/font-catalog.ts +1 -1
- package/templates/ui/components/controls/index.ts +7 -0
- package/templates/ui/components/controls/tabs/index.ts +4 -0
- package/templates/ui/components/controls/tabs/tabs-control.tsx +166 -0
- package/templates/ui/components/panel/panel-section.tsx +6 -1
- package/templates/ui/components/panel/panel.tsx +6 -2
- package/templates/ui/components/primitives/index.ts +1 -0
- package/templates/ui/components/primitives/scroll-fade-render.tsx +11 -2
- package/templates/ui/components/primitives/scroll-fade-types.ts +2 -0
- package/templates/ui/components/primitives/scroll-fade.test.tsx +63 -0
- package/templates/ui/components/primitives/scroll-fade.tsx +2 -0
- package/templates/ui/index.ts +1 -0
- package/templates/runtime/react/controls-panel/layout/controls-panel-collapse-storage.ts +0 -131
- package/templates/runtime/testing/performance-browser-policy.test.ts +0 -81
- package/templates/runtime/testing/performance-browser-policy.ts +0 -102
- package/templates/runtime/testing/performance-budget-validation.ts +0 -84
- package/templates/runtime/testing/performance-control-classification.test.ts +0 -106
- package/templates/runtime/testing/performance-coverage-context.ts +0 -44
- package/templates/runtime/testing/performance-coverage-renderer-policy.ts +0 -221
- package/templates/runtime/testing/performance-coverage-scenario-policy.ts +0 -147
- package/templates/runtime/testing/performance-coverage-target-policy.ts +0 -121
- package/templates/runtime/testing/performance-export-coverage.test.ts +0 -234
- package/templates/runtime/testing/performance-fixture-load-profile.test.ts +0 -360
- package/templates/runtime/testing/performance-fixture-media.test.ts +0 -80
- package/templates/runtime/testing/performance-fixture-stress.test.ts +0 -314
- package/templates/runtime/testing/performance-fixture-validation.ts +0 -255
- package/templates/runtime/testing/performance-fixture-values.ts +0 -275
- package/templates/runtime/testing/performance-fixture-workload.test.ts +0 -140
- package/templates/runtime/testing/performance-load-profile-validation.ts +0 -467
- package/templates/runtime/testing/performance-renderer-coverage.test.ts +0 -325
- package/templates/runtime/testing/performance-renderer-pipeline-coverage.test.ts +0 -115
- package/templates/runtime/testing/performance-renderer-pipeline-interactions.test.ts +0 -201
- package/templates/runtime/testing/performance-renderer-pipeline-passes.test.ts +0 -247
- package/templates/runtime/testing/performance-renderer-technique.test.ts +0 -275
- package/templates/runtime/testing/performance-renderer-validation.ts +0 -2
- package/templates/runtime/testing/performance-scenario-coverage.test.ts +0 -303
- package/templates/runtime/testing/performance-schema-derived-workloads.test.ts +0 -231
- package/templates/runtime/testing/performance-test-fixtures/scenarios.ts +0 -172
- package/templates/runtime/testing/performance-test-fixtures/stress-fixtures.ts +0 -133
- package/templates/starter/e2e/performance-render-scale-helpers.ts +0 -55
- package/templates/starter/scripts/check-ai-skills.mjs +0 -136
- package/templates/starter/scripts/check-ai-skills.test.mjs +0 -64
- package/templates/starter/scripts/toolcraft-product-boundary-ast-utils.mjs +0 -23
- package/templates/starter/scripts/toolcraft-product-dependency-graph.mjs +0 -176
- package/templates/starter/scripts/toolcraft-product-dependency-graph.test.mjs +0 -196
- package/templates/starter/src/app/starter-acceptance.video-export-test-utils.ts +0 -37
- package/templates/starter/src/app/starter-performance.budgets.test.ts +0 -374
- package/templates/starter/src/app/starter-performance.renderer-source.test.ts +0 -136
- package/templates/starter/src/app/starter-performance.renderer-technique.test.ts +0 -291
- package/templates/starter/src/app/starter-performance.scenarios.test.ts +0 -355
|
@@ -8,15 +8,15 @@ Edit `src/app/app-schema.ts` as the public product surface. Use `defineToolcraft
|
|
|
8
8
|
|
|
9
9
|
Top-level schema fields:
|
|
10
10
|
|
|
11
|
-
| Field
|
|
12
|
-
|
|
|
13
|
-
| `canvas`
|
|
14
|
-
| `media`
|
|
15
|
-
| `panels`
|
|
16
|
-
| `toolbar`
|
|
17
|
-
| `persistence`
|
|
18
|
-
| `settingsTransfer` | Runtime-owned Export Settings / Import Settings identity.
|
|
19
|
-
| `panelActions`
|
|
11
|
+
| Field | Purpose | Detailed rules |
|
|
12
|
+
| ------------------ | ---------------------------------------------------------------------- | -------------------------------------------------------------------------- |
|
|
13
|
+
| `canvas` | Product workspace, output size, upload/drop support, render scale. | `core/runtime-boundary.md`, `core/setup-export.md`, `core/media-upload.md` |
|
|
14
|
+
| `media` | Predefined attached files, images, and models shown in `fileDrop`. | `core/media-upload.md` |
|
|
15
|
+
| `panels` | Controls, layers, timeline. | `core/runtime-boundary.md`, `core/timeline-animation.md` |
|
|
16
|
+
| `toolbar` | History, radar, theme, zoom. | `assembly-workflow.md` |
|
|
17
|
+
| `persistence` | Intentional reload persistence for runtime slices. | `performance.md`, `acceptance-testing.md` |
|
|
18
|
+
| `settingsTransfer` | Runtime-owned Export Settings / Import Settings identity. | `core/setup-export.md` |
|
|
19
|
+
| `panelActions` | Sticky product delivery actions such as export, copy, generate, apply. | `core/setup-export.md`, `core/control-selection.md` |
|
|
20
20
|
|
|
21
21
|
Schema controls always bind to a `target`, use `defaultValue` for reset behavior, and include `performanceRole` / `performanceReason` on visible non-action controls. Use built-in control `type` values before `controlRenderers`.
|
|
22
22
|
|
|
@@ -24,32 +24,105 @@ Schema controls always bind to a `target`, use `defaultValue` for reset behavior
|
|
|
24
24
|
|
|
25
25
|
Canvas sizing modes:
|
|
26
26
|
|
|
27
|
-
- `editable-output`: product/export apps. Runtime `Setup` shows `Aspect ratio`, `Canvas width`, `Canvas height`, optional `Resolution scale`, and optional `Timeline`.
|
|
27
|
+
- `editable-output`: product/export apps. Runtime `Setup` shows Background beside Infinity canvas, then Background color, `Aspect ratio`, `Canvas width`, `Canvas height`, optional `Resolution scale`, and finally optional `Timeline`. With the standard Background pair, Background off restores finite mode and disables Infinity; an enabled infinite viewport uses the selected Background color.
|
|
28
28
|
- `intrinsic-media`: explicit media-viewer/source-native products where imported media intentionally owns `canvas.size`.
|
|
29
29
|
- `fixed-output`: non-product/internal fixtures where users must not edit output size.
|
|
30
30
|
|
|
31
31
|
Product-output, exportable, shader, procedural, and reference-clone apps use `editable-output`. Uploaded background/source images inside a product canvas also use `editable-output`: keep the current canvas size and render the image as cover/crop inside current canvas bounds.
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
`canvas.mode` is runtime state with values `"finite"` and `"infinite"`; it is not a second schema sizing mode. `canvas.infinity` is the reserved built-in Setup target. Infinite mode preserves `canvas.size` only for later finite restoration and never uses that dormant size for layout or export.
|
|
34
|
+
|
|
35
|
+
Editable-output apps may opt into Infinity for a fresh workspace and Reset with
|
|
36
|
+
`canvas.sizing: { defaultMode: "infinite", mode: "editable-output" }`. Omitting
|
|
37
|
+
`defaultMode` keeps the runtime default finite. A valid persisted or explicitly
|
|
38
|
+
provided initial canvas mode takes precedence over the schema default.
|
|
39
|
+
|
|
40
|
+
Custom product output declares bounds on the composition:
|
|
41
|
+
|
|
42
|
+
```tsx
|
|
43
|
+
export const appComposition: ToolcraftAppComposition = {
|
|
44
|
+
canvasContent: <ProductCanvas />,
|
|
45
|
+
sceneBoundsProvider: ({ state, timeRange }) => [
|
|
46
|
+
getVisibleProductSceneRect(state, timeRange),
|
|
47
|
+
],
|
|
48
|
+
schema: appSchema,
|
|
49
|
+
};
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
The provider returns world-space `{ x, y, width, height }` rectangles. Runtime unions them once with visible image/model frames. It is called only for infinite export; video passes the requested time range so the provider can return one complete animation envelope. Product code does not read DOM bounds or the dormant finite size.
|
|
53
|
+
|
|
54
|
+
Use `canvas.renderScale: true` only for non-vector raster previews such as Canvas 2D, WebGL, or WebGPU. Do not enable it for DOM/SVG/vector-native previews. Enabling it requires one browser runtime acceptance row targeting `canvas.renderScale` with `renderScaleCoverage.kind: "selected-backing-pixels"` and exact sorted states `["interaction", "steady"]`, plus `"playback"` when timeline is enabled. The fixed `canvas-render-scale-backing` recipe proves actual backing pixels rather than timing.
|
|
34
55
|
|
|
35
56
|
## Media Defaults
|
|
36
57
|
|
|
37
|
-
Use `media.defaultAssets` for predefined files,
|
|
58
|
+
Use `media.defaultAssets` for predefined files, images, or model packages with complete local appearance dependencies:
|
|
38
59
|
|
|
39
60
|
```ts
|
|
40
61
|
media: {
|
|
41
62
|
defaultAssets: [
|
|
42
63
|
{
|
|
43
64
|
id: "default-source",
|
|
44
|
-
|
|
65
|
+
assetKind: "image",
|
|
66
|
+
dataUrl: "data:image/png;base64,...",
|
|
67
|
+
fileName: "source.png",
|
|
45
68
|
sourceTarget: "source.image",
|
|
46
|
-
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
id: "default-model",
|
|
72
|
+
assetKind: "model",
|
|
73
|
+
fileName: "scene.gltf",
|
|
74
|
+
sourceTarget: "source.model",
|
|
75
|
+
sourceFiles: [
|
|
76
|
+
{
|
|
77
|
+
dataUrl: "data:model/gltf+json;base64,...",
|
|
78
|
+
path: "scene/scene.gltf",
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
dataUrl: "data:application/octet-stream;base64,...",
|
|
82
|
+
path: "scene/geometry.bin",
|
|
83
|
+
},
|
|
84
|
+
],
|
|
47
85
|
},
|
|
48
86
|
],
|
|
49
87
|
}
|
|
50
88
|
```
|
|
51
89
|
|
|
52
|
-
`sourceTarget` must match a `fileDrop` control target. Runtime shows the asset as an attached file, users can remove it, and Reset restores it.
|
|
90
|
+
`sourceTarget` must match a compatible `fileDrop` control target. Runtime shows the asset as an attached file, users can remove it, and Reset restores it. Model defaults require `assetKind: "model"`, a root `fileName`, and complete local `sourceFiles`; each source uses a serializable `dataUrl` plus its bundle-relative `path`. Runtime restores default models through the same validation, analysis, repair, repository, and rendering pipeline as a user upload. Persisted empty media remains empty until Reset and must not silently resurrect defaults.
|
|
91
|
+
|
|
92
|
+
For a multi-item `fileDrop`, `recommendedMaxItems` is advisory. `hardMaxItems`, when present, must be a finite nonnegative safe integer and is enforced before decode or storage allocation. Additive imports count current assets with the same `sourceTarget` plus the incoming logical batch; replacement imports count only the incoming batch.
|
|
93
|
+
|
|
94
|
+
## Model FileDrop
|
|
95
|
+
|
|
96
|
+
Declare appearance-preserving 3D import through the built-in control:
|
|
97
|
+
|
|
98
|
+
```ts
|
|
99
|
+
model: {
|
|
100
|
+
type: "fileDrop",
|
|
101
|
+
assetKind: "model",
|
|
102
|
+
target: "source.model",
|
|
103
|
+
label: "Model",
|
|
104
|
+
topologyProfile: "realtime-mesh",
|
|
105
|
+
modelFormats: ["glb", "gltf", "fbx", "obj", "stl", "ply"],
|
|
106
|
+
modelLimits: {
|
|
107
|
+
maxTriangles: 1_000_000,
|
|
108
|
+
},
|
|
109
|
+
performanceRole: "workload",
|
|
110
|
+
performanceReason: "Imported topology controls decode, analysis, repair, and render cost.",
|
|
111
|
+
}
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
`modelFormats` may narrow the production adapters but cannot advertise an unavailable format. `modelLimits` may narrow normalized runtime admission limits; do not widen protected ceilings in product code. `topologyProfile` is `"realtime-mesh"` or `"solid-mesh"`. Model upload is one package (`multiple: false`): a standalone root, a folder batch with relative paths, or one bounded ZIP. Runtime preserves the supported authored appearance subset, selects the first normalized supported root, and uses the Blender-compatible fallback only when authored appearance is absent. Product code does not add loaders, topology state, repair actions, material reconstruction, or a second model store/cache.
|
|
115
|
+
|
|
116
|
+
Composition declares the presentation owner:
|
|
117
|
+
|
|
118
|
+
```ts
|
|
119
|
+
export const appComposition: ToolcraftAppComposition = {
|
|
120
|
+
modelPresentation: { mode: "runtime" },
|
|
121
|
+
schema: appSchema,
|
|
122
|
+
};
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
For a true custom model canvas, use `mode: "custom"` with unique `{ id, sourceTarget, orientationTarget? }` declarations and mount `useToolcraftModelPresentationConsumer` for each declaration. Custom consumers acquire and release presentation leases; they never parse source files or call format loaders. `renderDefaultCanvasMedia: false` does not suppress runtime model presentation.
|
|
53
126
|
|
|
54
127
|
## Panels
|
|
55
128
|
|
|
@@ -72,36 +145,36 @@ toolbar: {
|
|
|
72
145
|
}
|
|
73
146
|
```
|
|
74
147
|
|
|
75
|
-
History owns undo/redo and keyboard shortcuts. Do not add route-local undo/redo listeners.
|
|
148
|
+
History owns undo/redo and keyboard shortcuts. Do not add route-local undo/redo listeners. Standard shortcuts operate from focused non-text controls such as sliders and switches; active text-entry fields retain native text undo until editing ends.
|
|
76
149
|
|
|
77
150
|
## Control Fields
|
|
78
151
|
|
|
79
152
|
Common control fields:
|
|
80
153
|
|
|
81
|
-
| Field
|
|
82
|
-
|
|
|
83
|
-
| `type`
|
|
84
|
-
| `target`
|
|
85
|
-
| `defaultValue`
|
|
86
|
-
| `label`
|
|
87
|
-
| `description`
|
|
88
|
-
| `visibleWhen`
|
|
89
|
-
| `orderRole`
|
|
90
|
-
| `semanticGroup`
|
|
91
|
-
| `sliderValueKind`
|
|
92
|
-
| `textValueKind`
|
|
93
|
-
| `curveIntent`
|
|
94
|
-
| `performanceRole`
|
|
95
|
-
| `performanceReason` | Why the role fits this app.
|
|
96
|
-
| `commitMode`
|
|
97
|
-
| `keyframeable`
|
|
98
|
-
| `variant`
|
|
154
|
+
| Field | Purpose |
|
|
155
|
+
| ------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
|
|
156
|
+
| `type` | Built-in type or registered custom renderer type. |
|
|
157
|
+
| `target` | Runtime state target. |
|
|
158
|
+
| `defaultValue` | Initial value and reset value. |
|
|
159
|
+
| `label` | Short UI label, `false`, or omitted. |
|
|
160
|
+
| `description` | Product-specific help text only when it adds meaning beyond the label. |
|
|
161
|
+
| `visibleWhen` | Mode/type/source/include/variant/count visibility. Hidden values are preserved. |
|
|
162
|
+
| `orderRole` | Makes section order testable. |
|
|
163
|
+
| `semanticGroup` | Language-independent product sub-entity/workflow grouping, required on every control in sections larger than seven controls. |
|
|
164
|
+
| `sliderValueKind` | `slider` intent: `"continuous"` or `"discrete"`. |
|
|
165
|
+
| `textValueKind` | `text`/`code` intent: `"single-line"`, `"multiline"`, or `"structured"`. |
|
|
166
|
+
| `curveIntent` | `curves` composition: `"single-value-map"` or `"color-channels"`. |
|
|
167
|
+
| `performanceRole` | `"workload"` or `"responsiveness"` for coverage derivation. |
|
|
168
|
+
| `performanceReason` | Why the role fits this app. |
|
|
169
|
+
| `commitMode` | `text` controls: `"content"` applies while typing, `"setting"` commits on blur/Enter. |
|
|
170
|
+
| `keyframeable` | Timeline/keyframe capability override when structurally needed. |
|
|
171
|
+
| `variant` | Component-specific variant. |
|
|
99
172
|
|
|
100
173
|
Use `visibleWhen` for product availability. Do not use `disabled`, `disabledWhen`, or inert visible controls for generated product branches.
|
|
101
174
|
|
|
102
175
|
Conditions support `equals`, `notEquals`, `oneOf`, `notOneOf`, `greaterThan`, `greaterThanOrEqual`, `lessThan`, and `lessThanOrEqual`.
|
|
103
176
|
|
|
104
|
-
Reserved runtime targets include `runtime.settingsTransfer`, `canvas.aspectRatio`, `canvas.size.width`, `canvas.size.height`, `canvas.renderScale`, and `panels.timeline.extended`. Product sections must not declare those controls.
|
|
177
|
+
Reserved runtime targets include `runtime.settingsTransfer`, `canvas.infinity`, `canvas.aspectRatio`, `canvas.size.width`, `canvas.size.height`, `canvas.renderScale`, and `panels.timeline.extended`. Product sections must not declare those controls.
|
|
105
178
|
|
|
106
179
|
## Built-In Control Types
|
|
107
180
|
|
|
@@ -116,6 +189,7 @@ Reserved runtime targets include `runtime.settingsTransfer`, `canvas.aspectRatio
|
|
|
116
189
|
| `code` | `CodeTextarea` |
|
|
117
190
|
| `select` | `Select` |
|
|
118
191
|
| `segmented` | `Segmented` |
|
|
192
|
+
| `tabs` | `TabsControl` |
|
|
119
193
|
| `switch` | `Switch` |
|
|
120
194
|
| `checkbox` | `Checkbox` |
|
|
121
195
|
| `actions` | `Actions` |
|
|
@@ -124,6 +198,7 @@ Reserved runtime targets include `runtime.settingsTransfer`, `canvas.aspectRatio
|
|
|
124
198
|
| `colorOpacity` | `ColorOpacity` |
|
|
125
199
|
| `palette` | `Palette` |
|
|
126
200
|
| `vector` | `Vector` |
|
|
201
|
+
| `orientationGizmo` | `ToolcraftOrientationGizmo` |
|
|
127
202
|
| `color` | `Color` |
|
|
128
203
|
| `gradient` | `Gradient` |
|
|
129
204
|
| `fontPicker` | `FontPicker` |
|
|
@@ -137,6 +212,81 @@ Reserved runtime targets include `runtime.settingsTransfer`, `canvas.aspectRatio
|
|
|
137
212
|
|
|
138
213
|
Use `component-rules.md` for component-specific fit, labels, variants, units, parser behavior, and exceptions. Use `core/control-selection.md` before deciding a custom control is needed.
|
|
139
214
|
|
|
215
|
+
`orientationGizmo` uses a non-degenerate `{ position: [x, y, z], up: [x, y, z] }` default, `label: false`, and `keyframeable: false`. Declare one target for the active/selected model and keep it beside at least one visible product control in the semantic model/view section; runtime renders the handle on the canvas rather than in the controls panel. Multiple declarations require statically provable mutually exclusive combined section/control visibility conditions, because runtime permits at most one active orientation handle.
|
|
216
|
+
|
|
217
|
+
## Product View Interaction
|
|
218
|
+
|
|
219
|
+
Product-mode `starterProductReadiness` always declares the spatial view decision
|
|
220
|
+
before schema controls or renderer code:
|
|
221
|
+
|
|
222
|
+
```ts
|
|
223
|
+
export const starterProductReadiness: ToolcraftProductReadiness = {
|
|
224
|
+
interactionOwnership: [],
|
|
225
|
+
mode: "product",
|
|
226
|
+
productName: "Model Studio",
|
|
227
|
+
productSummary: "An editable three-dimensional product scene.",
|
|
228
|
+
requestedBehavior: "Rotate the model and export the selected view.",
|
|
229
|
+
viewInteraction: {
|
|
230
|
+
mode: "orbit",
|
|
231
|
+
orientationTargets: ["view.orbit"],
|
|
232
|
+
},
|
|
233
|
+
};
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
## Interaction Surface Ownership
|
|
237
|
+
|
|
238
|
+
Product readiness declares `interactionOwnership` before controls or canvas
|
|
239
|
+
interactions. Each operation uses one primary surface while distinct operations
|
|
240
|
+
may edit related state across surfaces:
|
|
241
|
+
|
|
242
|
+
```ts
|
|
243
|
+
interactionOwnership: [
|
|
244
|
+
{
|
|
245
|
+
alternative: {
|
|
246
|
+
reason: "A panel copy would separate the same drag from visible output.",
|
|
247
|
+
surface: "panel",
|
|
248
|
+
},
|
|
249
|
+
capability: "direct-spatial-edit",
|
|
250
|
+
evidence: {
|
|
251
|
+
detail: "The inspected reference exposes draggable handles over output.",
|
|
252
|
+
source: "reference",
|
|
253
|
+
},
|
|
254
|
+
id: "output-position-drag",
|
|
255
|
+
reason: "Canvas drag preserves spatial correspondence and immediate feedback.",
|
|
256
|
+
surface: "canvas",
|
|
257
|
+
target: "output.position",
|
|
258
|
+
},
|
|
259
|
+
{
|
|
260
|
+
alternative: {
|
|
261
|
+
reason: "The canvas would obscure output with persistent property chrome.",
|
|
262
|
+
surface: "canvas",
|
|
263
|
+
},
|
|
264
|
+
capability: "property-edit",
|
|
265
|
+
evidence: {
|
|
266
|
+
detail: "A usability comparison keeps non-spatial properties discoverable.",
|
|
267
|
+
source: "usability-analysis",
|
|
268
|
+
},
|
|
269
|
+
id: "output-position-properties",
|
|
270
|
+
reason: "The panel exposes useful properties without duplicating direct drag.",
|
|
271
|
+
surface: "panel",
|
|
272
|
+
target: "output.position",
|
|
273
|
+
},
|
|
274
|
+
]
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
Capabilities are `direct-spatial-edit`, `spatial-selection`,
|
|
278
|
+
`structured-selection`, `property-edit`, `precise-value-entry`,
|
|
279
|
+
`collection-edit`, and `command`. Evidence sources are `user-request`,
|
|
280
|
+
`reference`, and `usability-analysis`. Canvas handles and custom interactions
|
|
281
|
+
reference the inventory through acceptance `interactionId`; a built-in panel
|
|
282
|
+
control also references it when its target overlaps a canvas handle.
|
|
283
|
+
|
|
284
|
+
Use `non-spatial` only when no visible three-dimensional scene/model exists.
|
|
285
|
+
Use `fixed-camera` or `timeline-camera` only with `source:
|
|
286
|
+
"explicit-user-request" | "inspected-reference"` and non-empty `evidence`.
|
|
287
|
+
Timeline camera also requires timeline playback/keyframes. Orbit targets must
|
|
288
|
+
exactly match schema `orientationGizmo` targets.
|
|
289
|
+
|
|
140
290
|
## Control Section Inventory
|
|
141
291
|
|
|
142
292
|
Before writing `panels.controls.sections`, export `starterControlSectionInventory` beside `starterAcceptance`:
|
|
@@ -167,9 +317,9 @@ Video references declare `videoReferenceStudy` before implementation. Animated p
|
|
|
167
317
|
|
|
168
318
|
## Export And Actions
|
|
169
319
|
|
|
170
|
-
Product apps expose delivery through sticky `panelActions`, not canvas UI or ordinary body controls.
|
|
320
|
+
Product apps expose delivery through sticky `panelActions`, not canvas UI or ordinary body controls. Every product exposes `Export PNG`; products whose requested delivery includes animation also expose `Export Video`. A playback or keyframe timeline may drive interactive preview without inventing video delivery.
|
|
171
321
|
|
|
172
|
-
Every app with `Export PNG` includes `Image Export` controls with `export.image.format` and `export.image.resolution`.
|
|
322
|
+
Every app with `Export PNG` includes `Image Export` controls with `export.image.format` and `export.image.resolution`. Apps with `Export Video` also include `Video Export` controls with `export.video.format` and `export.video.resolution`.
|
|
173
323
|
|
|
174
324
|
Use standard helpers:
|
|
175
325
|
|
|
@@ -181,25 +331,31 @@ Detailed Setup, Background, Image Export, Video Export, sticky action, icon, and
|
|
|
181
331
|
|
|
182
332
|
## Persistence
|
|
183
333
|
|
|
184
|
-
|
|
334
|
+
Generated apps persist their runtime workspace locally by default. The resolved base plan contains `"canvas"`, `"panels"`, and `"values"`; enabled timeline, layers, and media capabilities add `"timeline"`, `"layers"`, and `"media"` automatically. Most apps do not need a `persistence` field.
|
|
335
|
+
|
|
336
|
+
Use an explicit localStorage configuration only to customize the key/version or request additional compatible slices:
|
|
185
337
|
|
|
186
338
|
```ts
|
|
187
339
|
persistence: {
|
|
188
340
|
storage: "localStorage",
|
|
189
|
-
key: "my-
|
|
190
|
-
version:
|
|
191
|
-
include: ["
|
|
341
|
+
key: "toolcraft:my-app:state:v3",
|
|
342
|
+
version: 3,
|
|
343
|
+
include: ["timeline"], additionalValueTargets: ["composition.layout"],
|
|
192
344
|
}
|
|
193
345
|
```
|
|
194
346
|
|
|
195
|
-
|
|
347
|
+
Explicit `include` augments rather than removes capability-derived slices. Control-backed values persist automatically; `additionalValueTargets` opts product-owned non-control state into persistence after trimming and deduplication, while empty entries and undeclared values remain excluded. `{ storage: "none" }` is the only opt-out; record why losing the workspace on reload is intentional.
|
|
348
|
+
|
|
349
|
+
localStorage contains only small versioned JSON metadata. Image, file, and model bytes live in the Toolcraft binary repository backed by IndexedDB; persisted media records contain resource references, never data URLs. Product code must not read or write either storage API directly. Reset restores schema defaults, Settings Transfer remains the portable JSON boundary, and unavailable binary resources become typed per-asset failures without discarding other restored slices.
|
|
350
|
+
|
|
351
|
+
Every local app declares `persistenceCoverage: "reload"`, `evidence: "persistence-state"`, and `persistenceSlices` exactly equal to the resolved `schema.persistence.include`, then proves the visible workspace after a real browser reload.
|
|
196
352
|
|
|
197
353
|
## Settings Transfer
|
|
198
354
|
|
|
199
355
|
`settingsTransfer` customizes runtime-owned settings import/export identity:
|
|
200
356
|
|
|
201
357
|
```ts
|
|
202
|
-
settingsTransfer: "auto"
|
|
358
|
+
settingsTransfer: { enabled: "auto", additionalValueTargets: ["composition.layout"] };
|
|
203
359
|
```
|
|
204
360
|
|
|
205
|
-
Allowed values are `"auto"`, `true`, `false`, or `{ enabled, appId, fileName }`. None of these hide mandatory runtime `Setup`;
|
|
361
|
+
Allowed values are `"auto"`, `true`, `false`, or `{ enabled, appId, fileName, additionalValueTargets }`. Control-backed values transfer automatically; `additionalValueTargets` opts product-owned non-control state into settings JSON while undeclared values stay excluded. Transfer and persistence allowlists are independent; both are trimmed and deduplicated during resolution. None of these options hide mandatory runtime `Setup`; do not implement settings import/export through `panelActions`, hidden file inputs, or route-local handlers.
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
# Toolcraft Workflow
|
|
2
2
|
|
|
3
|
+
<!-- toolcraft-performance-lifecycle: first-delivery=functional; later-delivery=functional-targeted; complaint=one-authority-targeted-performance-iteration; full-audit=explicit-only -->
|
|
4
|
+
<!-- toolcraft-performance-iteration: authority=exact-request-evidence+canonical-path-ids; fixture=reachable-development; after-pass=return-app-to-user+stop -->
|
|
5
|
+
<!-- toolcraft-performance-full-authority: automatic=forbidden; recommendation=two-compatible-iterations-or-broad-unlocalizable-problem; command=pnpm verify:perf; authority=explicit-user-request-or-accepted-offer -->
|
|
6
|
+
|
|
3
7
|
This file is the app-local routing layer for Toolcraft work. It does not replace the detailed contracts; it tells an agent which contract to read and which verification path to use before editing.
|
|
4
8
|
|
|
5
9
|
## Required Preflight
|
|
@@ -13,13 +17,15 @@ Before planning or editing app code, runtime code, controls, canvas, panels, ren
|
|
|
13
17
|
- **Runtime/template source**: use root `AGENTS.md` and runtime contracts.
|
|
14
18
|
3. Classify the task type.
|
|
15
19
|
4. Read the task-specific docs below.
|
|
16
|
-
5.
|
|
20
|
+
5. Record the coherent user-visible delivery batch and its focused development checks before implementation.
|
|
17
21
|
|
|
18
22
|
Do not edit implementation files until this preflight is complete.
|
|
19
23
|
|
|
24
|
+
Renderer and performance work also completes this pre-code sequence: reachable controls and inputs; workload dimensions and enforced boundaries; pass cost, frequency, lifecycle, and invalidation; render-plan assessment and protected kernel benchmark when required; derived paths and combined fixtures. Keep `src/app/app-verification-impact.json` current while implementing. Development uses impact-derived functional and browser checks without minting delivery evidence. First and later functional delivery run no measured performance; only exact request authority creates one targeted iteration. Full certification is a separate operator/CI action described in the canonical performance docs.
|
|
25
|
+
|
|
20
26
|
## Local Contract Authority
|
|
21
27
|
|
|
22
|
-
The signed local `AGENTS.md` plus `docs/toolcraft/*` are sufficient and mandatory workflow input for a standalone generated app. External workflow skills should be used when available, but missing skills never invalidate `--no-skills` generation and never justify skipping the equivalent local spec, plan, debugging, browser, or verification requirement. `pnpm ai:check` enforces local code health and
|
|
28
|
+
The signed local `AGENTS.md` plus `docs/toolcraft/*` are sufficient and mandatory workflow input for a standalone generated app. External workflow skills should be used when available, but missing skills never invalidate `--no-skills` generation and never justify skipping the equivalent local spec, plan, debugging, browser, or verification requirement. `pnpm ai:check` enforces local code health and the product AST boundary only; it neither discovers nor validates workflow skill installations.
|
|
23
29
|
|
|
24
30
|
Core modules are required reading when listed by the routing table. Read each listed module fully, one phase at a time. Open exactly one listed document per terminal or tool read, even when several documents belong to the same route and phase. Do not concatenate documents or rely on a truncated excerpt; finish the current phase, then open the next phase when the work reaches it. The signed host and runtime validators enforce platform boundaries, while product organization remains open inside those boundaries.
|
|
25
31
|
|
|
@@ -46,24 +52,26 @@ Use the smallest route set that covers the changed surface. When a task matches
|
|
|
46
52
|
|
|
47
53
|
For product app work, update `docs/toolcraft/agent-worklog.md` before reporting completion. Record:
|
|
48
54
|
|
|
49
|
-
- `Decision Trail`
|
|
55
|
+
- one `Decision Trail` entry for each coherent user-visible delivery batch, including:
|
|
50
56
|
- request;
|
|
51
57
|
- task type;
|
|
52
58
|
- user-visible result;
|
|
53
59
|
- source/reference checked;
|
|
54
|
-
- docs/contracts read;
|
|
55
|
-
-
|
|
60
|
+
- docs/contracts read and contract rules applied;
|
|
61
|
+
- typed view interaction mode, evidence, and orientation target mapping when the product has a spatial scene;
|
|
62
|
+
- typed interaction ownership for operations that could live on canvas or in the panel, including evidence, selected surface, rejected duplicate surface, and complementary operations;
|
|
56
63
|
- decision;
|
|
57
64
|
- alternatives rejected;
|
|
58
65
|
- state/output mapping from controls, commands, timeline, layers, media, or renderer to the visible product;
|
|
59
|
-
-
|
|
60
|
-
- verification;
|
|
61
|
-
- skipped checks with reason;
|
|
66
|
+
- one bare-delivery verification narrative;
|
|
62
67
|
- risks or follow-ups.
|
|
63
|
-
-
|
|
68
|
+
- for a performance complaint only, an exact request quote and the canonical affected performance path IDs.
|
|
69
|
+
- updated high-level decisions for renderer, view interaction, interaction ownership, timeline, layers, controls, export, and performance when those choices change.
|
|
64
70
|
|
|
65
71
|
If the folder is still the neutral starter, do not invent product decisions. Once it becomes a product, switch the worklog to product mode and keep it concrete.
|
|
66
72
|
|
|
73
|
+
Protected receipts, not the worklog, own changed files, the derived plan, executed checks, reports, measurements, and pass/fail evidence. Each Decision Trail entry mentions only that one bare `pnpm verify:delivery` will derive and run the protected proof.
|
|
74
|
+
|
|
67
75
|
## Runtime Boundary
|
|
68
76
|
|
|
69
77
|
Use the runtime extension points described in the current contracts:
|
|
@@ -78,20 +86,27 @@ Do not recreate controls, panels, toolbar, timeline, layers, canvas shell, or ru
|
|
|
78
86
|
|
|
79
87
|
Browser verification is outcome-based. Protected helpers attach versioned evidence only after a persistent observable change, an observed fixture application, a decoded non-empty export inspection, a completed output action, an immutable scenario measurement, and its matching budget check. The signed reporter derives required evidence from acceptance and performance config and fails skipped, missing, duplicate, transient, unmeasured, or unbudgeted scenarios.
|
|
80
88
|
|
|
81
|
-
##
|
|
89
|
+
## Automatic Delivery Lifecycle
|
|
90
|
+
|
|
91
|
+
The normal product loop is:
|
|
82
92
|
|
|
83
|
-
|
|
93
|
+
```text
|
|
94
|
+
assemble/change
|
|
95
|
+
→ focused functional feedback
|
|
96
|
+
→ one coherent delivery boundary
|
|
97
|
+
→ protected functional delivery
|
|
98
|
+
→ user evaluation
|
|
99
|
+
```
|
|
84
100
|
|
|
85
|
-
|
|
86
|
-
- Tier 2: `pnpm verify:quick` plus relevant browser acceptance.
|
|
87
|
-
- Tier 3: `pnpm verify:quick`, targeted browser acceptance, and targeted performance scenarios only for touched workload/viewport/export paths.
|
|
88
|
-
- Tier 4: run `node scripts/check-toolcraft-integrity.mjs` directly. For the first working product version, run the browser performance checkpoint and record its current-source receipt first, then run `pnpm verify:final`, then start `pnpm dev` for the local URL.
|
|
101
|
+
Use the smallest focused unit and browser checks while implementation is changing. Do not rerun the aggregate, export, or performance matrix after every edit. At the coherent delivery boundary, run one bare `pnpm verify:delivery` and use the automatic sequence:
|
|
89
102
|
|
|
90
|
-
|
|
103
|
+
1. **First product delivery:** bare `pnpm verify:delivery` proves complete product contracts, performs one production build, runs full functional acceptance, and runs no measured performance.
|
|
104
|
+
2. **Later functional-targeted delivery:** bare `pnpm verify:delivery` compares the immediate previous and current semantic functional proof models. It selects exact changed acceptance contracts, their direct owners and domains, and tests reached through the affected product-unit dependency graph.
|
|
105
|
+
3. **Performance complaint:** record domain authority in the worklog—an exact request quote plus canonical affected path IDs—then run one bare `pnpm verify:delivery`. It executes one targeted iteration against the reachable development fixture, returns the verified app, and waits for user evaluation.
|
|
106
|
+
4. **Full audit:** only an explicit operator request or accepted offer authorizes `pnpm verify:perf`. It performs one fresh build and the complete maximum-fixture performance matrix without advancing the delivery anchor.
|
|
91
107
|
|
|
92
|
-
|
|
93
|
-
- the user explicitly asks to optimize performance, fix lag, remove jank, speed up animation, stabilize drag/zoom, or otherwise complains about performance.
|
|
108
|
+
The unchanged `sourceHash` fast path does not collect the catalog, dependency graph, or functional proof model and does not execute proof. For a changed source, the current catalog, input roles, ownership inventory, and semantic model are collected once and remain the immutable basis for that delivery plan. `workflow-observation.md` is a post-delivery summary, not execution authority, so it stays outside this hash; `agent-worklog.md` remains included.
|
|
94
109
|
|
|
95
|
-
|
|
110
|
+
After two consecutive compatible targeted iterations, offer the slower full audit if the user remains unsatisfied. A complaint, filename, or touched subsystem never authorizes it. Canonical classification details, failure behavior, and evidence wording live in `core/performance.md` and `performance.md`.
|
|
96
111
|
|
|
97
|
-
The app is not complete when required checks are failed, incomplete, pending, blocked, or listed as skipped.
|
|
112
|
+
The app is not complete when required checks are failed, incomplete, pending, blocked, or listed as skipped. Resolve benchmark requirements with the protected internal kernel check before accepting the renderer. The delivery runner executes integrity and lifecycle-specific proof atomically, binds evidence to current source, and advances the delivery anchor only after success. Product prose and command arguments cannot select or broaden that proof.
|
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
import { expect, test } from "@playwright/test";
|
|
2
|
-
import type { ToolcraftPerformanceConfig } from "@repo/toolcraft-runtime";
|
|
3
|
-
|
|
4
|
-
import { parseToolcraftBrowserRuntimeEvidence } from "../src/app/test-evidence/browser-runtime-contract";
|
|
5
2
|
import { expectToolcraftExportedArtifact } from "./browser-acceptance-outcome-helpers";
|
|
6
3
|
import {
|
|
7
|
-
dragToolcraftSliderToPerformanceStressValue,
|
|
8
4
|
expectToolcraftSegmentedControlCellsPreservePadding,
|
|
9
5
|
getToolcraftFieldByLabel,
|
|
10
6
|
} from "./performance-helpers";
|
|
@@ -49,56 +45,6 @@ test("performance helpers match control labels literally", async ({ page }) => {
|
|
|
49
45
|
);
|
|
50
46
|
});
|
|
51
47
|
|
|
52
|
-
test("slider stress helper applies the declared value and emits runtime evidence", async ({
|
|
53
|
-
page,
|
|
54
|
-
}, testInfo) => {
|
|
55
|
-
await page.setContent(`
|
|
56
|
-
<div data-slot="toolcraft-runtime-app">
|
|
57
|
-
<div class="contents" data-toolcraft-control-target="density.value">
|
|
58
|
-
<div data-slot="field">Density
|
|
59
|
-
<input data-slot="slider" role="slider" type="range" min="0" max="10" value="0" style="width:200px;height:20px;" />
|
|
60
|
-
</div>
|
|
61
|
-
</div>
|
|
62
|
-
</div>
|
|
63
|
-
`);
|
|
64
|
-
const config = {
|
|
65
|
-
rendererStrategy: "none",
|
|
66
|
-
rendererWorkload: "none",
|
|
67
|
-
scenarios: [{
|
|
68
|
-
automated: true,
|
|
69
|
-
automatedTestName: "perf: density stress",
|
|
70
|
-
browser: true,
|
|
71
|
-
browserTestName: "browser perf: density stress",
|
|
72
|
-
budget: { maxInteractionMs: 500 },
|
|
73
|
-
expectedObservable: "Density drag completes.",
|
|
74
|
-
fixture: "Density stress fixture.",
|
|
75
|
-
id: "density-stress",
|
|
76
|
-
interaction: "control-drag",
|
|
77
|
-
stressFixture: { kind: "max-value", reason: "Maximum density.", value: 9 },
|
|
78
|
-
target: "density.value",
|
|
79
|
-
workload: true,
|
|
80
|
-
}],
|
|
81
|
-
usesCustomRenderer: false,
|
|
82
|
-
workloadTargets: ["density.value"],
|
|
83
|
-
} as const satisfies ToolcraftPerformanceConfig;
|
|
84
|
-
|
|
85
|
-
await dragToolcraftSliderToPerformanceStressValue(
|
|
86
|
-
page,
|
|
87
|
-
"Density",
|
|
88
|
-
config,
|
|
89
|
-
"density-stress",
|
|
90
|
-
);
|
|
91
|
-
|
|
92
|
-
expect(
|
|
93
|
-
testInfo.attachments.map((attachment) =>
|
|
94
|
-
parseToolcraftBrowserRuntimeEvidence(attachment)?.evidenceType,
|
|
95
|
-
),
|
|
96
|
-
).toEqual(expect.arrayContaining([
|
|
97
|
-
"performance-control-drag",
|
|
98
|
-
"performance-stress-fixture",
|
|
99
|
-
]));
|
|
100
|
-
});
|
|
101
|
-
|
|
102
48
|
test("export acceptance rejects a verifier that does not return an artifact observation", async () => {
|
|
103
49
|
await expect(
|
|
104
50
|
expectToolcraftExportedArtifact(
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { test } from "@playwright/test";
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
expectInfiniteCanvasObservation,
|
|
5
|
+
expectToolcraftInfinityCanvasBackgroundEvidence,
|
|
6
|
+
expectToolcraftInfinityCanvasVideoExportEvidence,
|
|
7
|
+
observeInfinityCanvas,
|
|
8
|
+
} from "./browser-infinity-canvas-evidence";
|
|
9
|
+
|
|
10
|
+
test("toolcraft Infinity canvas observation reads runtime-owned geometry", async ({
|
|
11
|
+
page,
|
|
12
|
+
}) => {
|
|
13
|
+
await page.setContent(`
|
|
14
|
+
<div data-toolcraft-canvas-world data-toolcraft-canvas-offset-x="12" data-toolcraft-canvas-offset-y="-8">
|
|
15
|
+
<div data-toolcraft-canvas-mode="infinite" style="overflow: visible">
|
|
16
|
+
<div data-scene style="position:absolute;left:-320px;top:-200px;width:640px;height:400px"></div>
|
|
17
|
+
</div>
|
|
18
|
+
</div>
|
|
19
|
+
`);
|
|
20
|
+
|
|
21
|
+
expectInfiniteCanvasObservation(
|
|
22
|
+
await observeInfinityCanvas(page, "[data-scene]"),
|
|
23
|
+
{ height: 400, width: 640, x: -320, y: -200 },
|
|
24
|
+
);
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
test("toolcraft Infinity canvas video evidence compares decoded envelopes", async () => {
|
|
28
|
+
await expectToolcraftInfinityCanvasVideoExportEvidence(
|
|
29
|
+
{
|
|
30
|
+
finite: {
|
|
31
|
+
byteLength: 1024,
|
|
32
|
+
durationMs: 1000,
|
|
33
|
+
height: 1350,
|
|
34
|
+
width: 1080,
|
|
35
|
+
},
|
|
36
|
+
infinite: {
|
|
37
|
+
byteLength: 768,
|
|
38
|
+
durationMs: 1000,
|
|
39
|
+
height: 640,
|
|
40
|
+
width: 640,
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
expectedFiniteSize: { height: 1350, width: 1080 },
|
|
45
|
+
expectedInfiniteSize: { height: 640, width: 640 },
|
|
46
|
+
requirementId: "fixture.infinity.video",
|
|
47
|
+
target: "canvas.infinity",
|
|
48
|
+
},
|
|
49
|
+
);
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
test("toolcraft Infinity canvas background evidence proves viewport color and dependency", async () => {
|
|
53
|
+
await expectToolcraftInfinityCanvasBackgroundEvidence(
|
|
54
|
+
{
|
|
55
|
+
backgroundExcluded: {
|
|
56
|
+
backgroundEnabled: false,
|
|
57
|
+
canvasMode: "finite",
|
|
58
|
+
infinityDisabled: true,
|
|
59
|
+
runtimeBackgroundColor: null,
|
|
60
|
+
viewportBackgroundColor: "rgb(20, 20, 20)",
|
|
61
|
+
viewportMatchesRuntimeColor: false,
|
|
62
|
+
},
|
|
63
|
+
backgroundRestored: {
|
|
64
|
+
backgroundEnabled: true,
|
|
65
|
+
canvasMode: "finite",
|
|
66
|
+
infinityDisabled: false,
|
|
67
|
+
runtimeBackgroundColor: null,
|
|
68
|
+
viewportBackgroundColor: "rgb(20, 20, 20)",
|
|
69
|
+
viewportMatchesRuntimeColor: false,
|
|
70
|
+
},
|
|
71
|
+
infinite: {
|
|
72
|
+
backgroundEnabled: true,
|
|
73
|
+
canvasMode: "infinite",
|
|
74
|
+
infinityDisabled: false,
|
|
75
|
+
runtimeBackgroundColor: "#D4CECA",
|
|
76
|
+
viewportBackgroundColor: "rgb(212, 206, 202)",
|
|
77
|
+
viewportMatchesRuntimeColor: true,
|
|
78
|
+
},
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
expectedBackgroundColor: "#D4CECA",
|
|
82
|
+
requirementId: "fixture.background",
|
|
83
|
+
target: "export.includeBackground",
|
|
84
|
+
},
|
|
85
|
+
);
|
|
86
|
+
});
|