@tangle-network/browser-agent-driver 0.33.3 → 0.35.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +42 -1
- package/discovery/llms.txt +27 -0
- package/discovery/tangle-agent.json +36 -0
- package/dist/brain/action-parse.d.ts +16 -0
- package/dist/brain/action-parse.d.ts.map +1 -0
- package/dist/brain/action-parse.js +191 -0
- package/dist/brain/action-parse.js.map +1 -0
- package/dist/brain/decide.d.ts +58 -0
- package/dist/brain/decide.d.ts.map +1 -0
- package/dist/brain/decide.js +418 -0
- package/dist/brain/decide.js.map +1 -0
- package/dist/brain/history-compact.d.ts +19 -0
- package/dist/brain/history-compact.d.ts.map +1 -0
- package/dist/brain/history-compact.js +153 -0
- package/dist/brain/history-compact.js.map +1 -0
- package/dist/brain/index.d.ts +78 -152
- package/dist/brain/index.d.ts.map +1 -1
- package/dist/brain/index.js +62 -2268
- package/dist/brain/index.js.map +1 -1
- package/dist/brain/model-client.d.ts +101 -0
- package/dist/brain/model-client.d.ts.map +1 -0
- package/dist/brain/model-client.js +391 -0
- package/dist/brain/model-client.js.map +1 -0
- package/dist/brain/plan.d.ts +57 -0
- package/dist/brain/plan.d.ts.map +1 -0
- package/dist/brain/plan.js +194 -0
- package/dist/brain/plan.js.map +1 -0
- package/dist/brain/prompts.d.ts +37 -0
- package/dist/brain/prompts.d.ts.map +1 -0
- package/dist/brain/prompts.js +455 -0
- package/dist/brain/prompts.js.map +1 -0
- package/dist/brain/provider-fetch.d.ts +26 -0
- package/dist/brain/provider-fetch.d.ts.map +1 -0
- package/dist/brain/provider-fetch.js +45 -0
- package/dist/brain/provider-fetch.js.map +1 -0
- package/dist/brain/snapshot-budget.d.ts +20 -0
- package/dist/brain/snapshot-budget.d.ts.map +1 -0
- package/dist/brain/snapshot-budget.js +202 -0
- package/dist/brain/snapshot-budget.js.map +1 -0
- package/dist/brain/system-prompt.d.ts +67 -0
- package/dist/brain/system-prompt.d.ts.map +1 -0
- package/dist/brain/system-prompt.js +128 -0
- package/dist/brain/system-prompt.js.map +1 -0
- package/dist/brain/tasks/design-audit.d.ts +33 -0
- package/dist/brain/tasks/design-audit.d.ts.map +1 -0
- package/dist/brain/tasks/design-audit.js +100 -0
- package/dist/brain/tasks/design-audit.js.map +1 -0
- package/dist/brain/tasks/evaluate.d.ts +25 -0
- package/dist/brain/tasks/evaluate.d.ts.map +1 -0
- package/dist/brain/tasks/evaluate.js +55 -0
- package/dist/brain/tasks/evaluate.js.map +1 -0
- package/dist/brain/tasks/goal-verification.d.ts +32 -0
- package/dist/brain/tasks/goal-verification.d.ts.map +1 -0
- package/dist/brain/tasks/goal-verification.js +68 -0
- package/dist/brain/tasks/goal-verification.js.map +1 -0
- package/dist/brain/tasks/knowledge.d.ts +26 -0
- package/dist/brain/tasks/knowledge.d.ts.map +1 -0
- package/dist/brain/tasks/knowledge.js +56 -0
- package/dist/brain/tasks/knowledge.js.map +1 -0
- package/dist/brain/tasks/link-scout.d.ts +37 -0
- package/dist/brain/tasks/link-scout.d.ts.map +1 -0
- package/dist/brain/tasks/link-scout.js +69 -0
- package/dist/brain/tasks/link-scout.js.map +1 -0
- package/dist/brain/types.d.ts +55 -0
- package/dist/brain/types.d.ts.map +1 -0
- package/dist/brain/types.js +7 -0
- package/dist/brain/types.js.map +1 -0
- package/dist/browser/stealth-init-script.d.ts +9 -0
- package/dist/browser/stealth-init-script.d.ts.map +1 -0
- package/dist/browser/stealth-init-script.js +128 -0
- package/dist/browser/stealth-init-script.js.map +1 -0
- package/dist/browser/storage-state.d.ts +29 -0
- package/dist/browser/storage-state.d.ts.map +1 -0
- package/dist/browser/storage-state.js +47 -0
- package/dist/browser/storage-state.js.map +1 -0
- package/dist/browser-launch.d.ts +6 -0
- package/dist/browser-launch.d.ts.map +1 -1
- package/dist/browser-launch.js +3 -0
- package/dist/browser-launch.js.map +1 -1
- package/dist/cli/args.d.ts +141 -0
- package/dist/cli/args.d.ts.map +1 -0
- package/dist/cli/args.js +167 -0
- package/dist/cli/args.js.map +1 -0
- package/dist/cli/benchmark-sync.d.ts +9 -0
- package/dist/cli/benchmark-sync.d.ts.map +1 -0
- package/dist/cli/benchmark-sync.js +43 -0
- package/dist/cli/benchmark-sync.js.map +1 -0
- package/dist/cli/build-config.d.ts +11 -0
- package/dist/cli/build-config.d.ts.map +1 -0
- package/dist/cli/build-config.js +355 -0
- package/dist/cli/build-config.js.map +1 -0
- package/dist/cli/commands/auth.d.ts +3 -0
- package/dist/cli/commands/auth.d.ts.map +1 -0
- package/dist/cli/commands/auth.js +36 -0
- package/dist/cli/commands/auth.js.map +1 -0
- package/dist/cli/commands/chrome-debug.d.ts +7 -0
- package/dist/cli/commands/chrome-debug.d.ts.map +1 -0
- package/dist/cli/commands/chrome-debug.js +11 -0
- package/dist/cli/commands/chrome-debug.js.map +1 -0
- package/dist/cli/commands/design-audit.d.ts +3 -0
- package/dist/cli/commands/design-audit.d.ts.map +1 -0
- package/dist/cli/commands/design-audit.js +68 -0
- package/dist/cli/commands/design-audit.js.map +1 -0
- package/dist/cli/commands/preview.d.ts +14 -0
- package/dist/cli/commands/preview.d.ts.map +1 -0
- package/dist/cli/commands/preview.js +31 -0
- package/dist/cli/commands/preview.js.map +1 -0
- package/dist/cli/commands/run.d.ts +3 -0
- package/dist/cli/commands/run.d.ts.map +1 -0
- package/dist/cli/commands/run.js +740 -0
- package/dist/cli/commands/run.js.map +1 -0
- package/dist/cli/commands/runs.d.ts +8 -0
- package/dist/cli/commands/runs.d.ts.map +1 -0
- package/dist/cli/commands/runs.js +35 -0
- package/dist/cli/commands/runs.js.map +1 -0
- package/dist/cli/commands/share.d.ts +10 -0
- package/dist/cli/commands/share.d.ts.map +1 -0
- package/dist/cli/commands/share.js +32 -0
- package/dist/cli/commands/share.js.map +1 -0
- package/dist/cli/commands/showcase.d.ts +17 -0
- package/dist/cli/commands/showcase.d.ts.map +1 -0
- package/dist/cli/commands/showcase.js +20 -0
- package/dist/cli/commands/showcase.js.map +1 -0
- package/dist/cli/commands/snapshot.d.ts +12 -0
- package/dist/cli/commands/snapshot.d.ts.map +1 -0
- package/dist/cli/commands/snapshot.js +24 -0
- package/dist/cli/commands/snapshot.js.map +1 -0
- package/dist/cli/commands/view.d.ts +7 -0
- package/dist/cli/commands/view.d.ts.map +1 -0
- package/dist/cli/commands/view.js +23 -0
- package/dist/cli/commands/view.js.map +1 -0
- package/dist/cli/constants.d.ts +6 -0
- package/dist/cli/constants.d.ts.map +1 -0
- package/dist/cli/constants.js +3 -0
- package/dist/cli/constants.js.map +1 -0
- package/dist/cli/version.d.ts +7 -0
- package/dist/cli/version.d.ts.map +1 -0
- package/dist/cli/version.js +16 -0
- package/dist/cli/version.js.map +1 -0
- package/dist/cli-design-audit.d.ts +44 -36
- package/dist/cli-design-audit.d.ts.map +1 -1
- package/dist/cli-design-audit.js +137 -1646
- package/dist/cli-design-audit.js.map +1 -1
- package/dist/cli-jobs.js +2 -1
- package/dist/cli-jobs.js.map +1 -1
- package/dist/cli.js +66 -1697
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +12 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +20 -2
- package/dist/config.js.map +1 -1
- package/dist/design/audit/evolve/agent.d.ts +23 -0
- package/dist/design/audit/evolve/agent.d.ts.map +1 -0
- package/dist/design/audit/evolve/agent.js +273 -0
- package/dist/design/audit/evolve/agent.js.map +1 -0
- package/dist/design/audit/evolve/css.d.ts +10 -0
- package/dist/design/audit/evolve/css.d.ts.map +1 -0
- package/dist/design/audit/evolve/css.js +206 -0
- package/dist/design/audit/evolve/css.js.map +1 -0
- package/dist/design/audit/evolve/index.d.ts +13 -0
- package/dist/design/audit/evolve/index.d.ts.map +1 -0
- package/dist/design/audit/evolve/index.js +12 -0
- package/dist/design/audit/evolve/index.js.map +1 -0
- package/dist/design/audit/evolve/report.d.ts +3 -0
- package/dist/design/audit/evolve/report.d.ts.map +1 -0
- package/dist/design/audit/evolve/report.js +45 -0
- package/dist/design/audit/evolve/report.js.map +1 -0
- package/dist/design/audit/evolve/types.d.ts +14 -0
- package/dist/design/audit/evolve/types.d.ts.map +1 -0
- package/dist/design/audit/evolve/types.js +2 -0
- package/dist/design/audit/evolve/types.js.map +1 -0
- package/dist/design/audit/pipeline.d.ts +12 -0
- package/dist/design/audit/pipeline.d.ts.map +1 -1
- package/dist/design/audit/pipeline.js +43 -27
- package/dist/design/audit/pipeline.js.map +1 -1
- package/dist/design/audit/reference/artifact/build.d.ts +33 -0
- package/dist/design/audit/reference/artifact/build.d.ts.map +1 -0
- package/dist/design/audit/reference/artifact/build.js +64 -0
- package/dist/design/audit/reference/artifact/build.js.map +1 -0
- package/dist/design/audit/reference/artifact/render.d.ts +39 -0
- package/dist/design/audit/reference/artifact/render.d.ts.map +1 -0
- package/dist/design/audit/reference/artifact/render.js +213 -0
- package/dist/design/audit/reference/artifact/render.js.map +1 -0
- package/dist/design/audit/reference/artifact/text.d.ts +11 -0
- package/dist/design/audit/reference/artifact/text.d.ts.map +1 -0
- package/dist/design/audit/reference/artifact/text.js +20 -0
- package/dist/design/audit/reference/artifact/text.js.map +1 -0
- package/dist/design/audit/reference/artifact/to-findings.d.ts +57 -0
- package/dist/design/audit/reference/artifact/to-findings.d.ts.map +1 -0
- package/dist/design/audit/reference/artifact/to-findings.js +314 -0
- package/dist/design/audit/reference/artifact/to-findings.js.map +1 -0
- package/dist/design/audit/reference/config.d.ts +50 -0
- package/dist/design/audit/reference/config.d.ts.map +1 -0
- package/dist/design/audit/reference/config.js +108 -0
- package/dist/design/audit/reference/config.js.map +1 -0
- package/dist/design/audit/reference/contracts.d.ts +1030 -0
- package/dist/design/audit/reference/contracts.d.ts.map +1 -0
- package/dist/design/audit/reference/contracts.js +28 -0
- package/dist/design/audit/reference/contracts.js.map +1 -0
- package/dist/design/audit/reference/corpus/build.d.ts +115 -0
- package/dist/design/audit/reference/corpus/build.d.ts.map +1 -0
- package/dist/design/audit/reference/corpus/build.js +152 -0
- package/dist/design/audit/reference/corpus/build.js.map +1 -0
- package/dist/design/audit/reference/corpus/schema.d.ts +33 -0
- package/dist/design/audit/reference/corpus/schema.d.ts.map +1 -0
- package/dist/design/audit/reference/corpus/schema.js +249 -0
- package/dist/design/audit/reference/corpus/schema.js.map +1 -0
- package/dist/design/audit/reference/corpus/store.d.ts +26 -0
- package/dist/design/audit/reference/corpus/store.d.ts.map +1 -0
- package/dist/design/audit/reference/corpus/store.js +104 -0
- package/dist/design/audit/reference/corpus/store.js.map +1 -0
- package/dist/design/audit/reference/dna/delta.d.ts +21 -0
- package/dist/design/audit/reference/dna/delta.d.ts.map +1 -0
- package/dist/design/audit/reference/dna/delta.js +126 -0
- package/dist/design/audit/reference/dna/delta.js.map +1 -0
- package/dist/design/audit/reference/dna/derive.d.ts +31 -0
- package/dist/design/audit/reference/dna/derive.d.ts.map +1 -0
- package/dist/design/audit/reference/dna/derive.js +381 -0
- package/dist/design/audit/reference/dna/derive.js.map +1 -0
- package/dist/design/audit/reference/dna/descriptor.d.ts +36 -0
- package/dist/design/audit/reference/dna/descriptor.d.ts.map +1 -0
- package/dist/design/audit/reference/dna/descriptor.js +209 -0
- package/dist/design/audit/reference/dna/descriptor.js.map +1 -0
- package/dist/design/audit/reference/dna/page-adapter.d.ts +17 -0
- package/dist/design/audit/reference/dna/page-adapter.d.ts.map +1 -0
- package/dist/design/audit/reference/dna/page-adapter.js +35 -0
- package/dist/design/audit/reference/dna/page-adapter.js.map +1 -0
- package/dist/design/audit/reference/dna/scroll-capture.d.ts +93 -0
- package/dist/design/audit/reference/dna/scroll-capture.d.ts.map +1 -0
- package/dist/design/audit/reference/dna/scroll-capture.js +374 -0
- package/dist/design/audit/reference/dna/scroll-capture.js.map +1 -0
- package/dist/design/audit/reference/engine/budget.d.ts +63 -0
- package/dist/design/audit/reference/engine/budget.d.ts.map +1 -0
- package/dist/design/audit/reference/engine/budget.js +110 -0
- package/dist/design/audit/reference/engine/budget.js.map +1 -0
- package/dist/design/audit/reference/engine/core.d.ts +32 -0
- package/dist/design/audit/reference/engine/core.d.ts.map +1 -0
- package/dist/design/audit/reference/engine/core.js +261 -0
- package/dist/design/audit/reference/engine/core.js.map +1 -0
- package/dist/design/audit/reference/engine/guard.d.ts +43 -0
- package/dist/design/audit/reference/engine/guard.d.ts.map +1 -0
- package/dist/design/audit/reference/engine/guard.js +43 -0
- package/dist/design/audit/reference/engine/guard.js.map +1 -0
- package/dist/design/audit/reference/engine/score-core.d.ts +48 -0
- package/dist/design/audit/reference/engine/score-core.d.ts.map +1 -0
- package/dist/design/audit/reference/engine/score-core.js +134 -0
- package/dist/design/audit/reference/engine/score-core.js.map +1 -0
- package/dist/design/audit/reference/engine/wiring.d.ts +35 -0
- package/dist/design/audit/reference/engine/wiring.d.ts.map +1 -0
- package/dist/design/audit/reference/engine/wiring.js +80 -0
- package/dist/design/audit/reference/engine/wiring.js.map +1 -0
- package/dist/design/audit/reference/eval/taste-core.d.ts +77 -0
- package/dist/design/audit/reference/eval/taste-core.d.ts.map +1 -0
- package/dist/design/audit/reference/eval/taste-core.js +95 -0
- package/dist/design/audit/reference/eval/taste-core.js.map +1 -0
- package/dist/design/audit/reference/generate/generator.d.ts +49 -0
- package/dist/design/audit/reference/generate/generator.d.ts.map +1 -0
- package/dist/design/audit/reference/generate/generator.js +100 -0
- package/dist/design/audit/reference/generate/generator.js.map +1 -0
- package/dist/design/audit/reference/generate/parse.d.ts +28 -0
- package/dist/design/audit/reference/generate/parse.d.ts.map +1 -0
- package/dist/design/audit/reference/generate/parse.js +220 -0
- package/dist/design/audit/reference/generate/parse.js.map +1 -0
- package/dist/design/audit/reference/generate/prompt.d.ts +36 -0
- package/dist/design/audit/reference/generate/prompt.d.ts.map +1 -0
- package/dist/design/audit/reference/generate/prompt.js +172 -0
- package/dist/design/audit/reference/generate/prompt.js.map +1 -0
- package/dist/design/audit/reference/index.d.ts +26 -0
- package/dist/design/audit/reference/index.d.ts.map +1 -0
- package/dist/design/audit/reference/index.js +31 -0
- package/dist/design/audit/reference/index.js.map +1 -0
- package/dist/design/audit/reference/judge/image-clamp.d.ts +34 -0
- package/dist/design/audit/reference/judge/image-clamp.d.ts.map +1 -0
- package/dist/design/audit/reference/judge/image-clamp.js +88 -0
- package/dist/design/audit/reference/judge/image-clamp.js.map +1 -0
- package/dist/design/audit/reference/judge/pairwise.d.ts +34 -0
- package/dist/design/audit/reference/judge/pairwise.d.ts.map +1 -0
- package/dist/design/audit/reference/judge/pairwise.js +105 -0
- package/dist/design/audit/reference/judge/pairwise.js.map +1 -0
- package/dist/design/audit/reference/judge/parse.d.ts +31 -0
- package/dist/design/audit/reference/judge/parse.d.ts.map +1 -0
- package/dist/design/audit/reference/judge/parse.js +113 -0
- package/dist/design/audit/reference/judge/parse.js.map +1 -0
- package/dist/design/audit/reference/judge/prompt.d.ts +38 -0
- package/dist/design/audit/reference/judge/prompt.d.ts.map +1 -0
- package/dist/design/audit/reference/judge/prompt.js +123 -0
- package/dist/design/audit/reference/judge/prompt.js.map +1 -0
- package/dist/design/audit/reference/judge/quality.d.ts +28 -0
- package/dist/design/audit/reference/judge/quality.d.ts.map +1 -0
- package/dist/design/audit/reference/judge/quality.js +62 -0
- package/dist/design/audit/reference/judge/quality.js.map +1 -0
- package/dist/design/audit/reference/judge/rank.d.ts +41 -0
- package/dist/design/audit/reference/judge/rank.d.ts.map +1 -0
- package/dist/design/audit/reference/judge/rank.js +196 -0
- package/dist/design/audit/reference/judge/rank.js.map +1 -0
- package/dist/design/audit/reference/judge/text-judge.d.ts +31 -0
- package/dist/design/audit/reference/judge/text-judge.d.ts.map +1 -0
- package/dist/design/audit/reference/judge/text-judge.js +43 -0
- package/dist/design/audit/reference/judge/text-judge.js.map +1 -0
- package/dist/design/audit/reference/judge/vision-judge.d.ts +59 -0
- package/dist/design/audit/reference/judge/vision-judge.d.ts.map +1 -0
- package/dist/design/audit/reference/judge/vision-judge.js +150 -0
- package/dist/design/audit/reference/judge/vision-judge.js.map +1 -0
- package/dist/design/audit/reference/judge/vision-model.d.ts +65 -0
- package/dist/design/audit/reference/judge/vision-model.d.ts.map +1 -0
- package/dist/design/audit/reference/judge/vision-model.js +110 -0
- package/dist/design/audit/reference/judge/vision-model.js.map +1 -0
- package/dist/design/audit/reference/pipeline/evaluate-reference.d.ts +68 -0
- package/dist/design/audit/reference/pipeline/evaluate-reference.d.ts.map +1 -0
- package/dist/design/audit/reference/pipeline/evaluate-reference.js +52 -0
- package/dist/design/audit/reference/pipeline/evaluate-reference.js.map +1 -0
- package/dist/design/audit/reference/reference-context.d.ts +31 -0
- package/dist/design/audit/reference/reference-context.d.ts.map +1 -0
- package/dist/design/audit/reference/reference-context.js +73 -0
- package/dist/design/audit/reference/reference-context.js.map +1 -0
- package/dist/design/audit/reference/retrieval/embedding-hash.d.ts +30 -0
- package/dist/design/audit/reference/retrieval/embedding-hash.d.ts.map +1 -0
- package/dist/design/audit/reference/retrieval/embedding-hash.js +87 -0
- package/dist/design/audit/reference/retrieval/embedding-hash.js.map +1 -0
- package/dist/design/audit/reference/retrieval/embedding-openai.d.ts +38 -0
- package/dist/design/audit/reference/retrieval/embedding-openai.d.ts.map +1 -0
- package/dist/design/audit/reference/retrieval/embedding-openai.js +73 -0
- package/dist/design/audit/reference/retrieval/embedding-openai.js.map +1 -0
- package/dist/design/audit/reference/retrieval/matcher.d.ts +34 -0
- package/dist/design/audit/reference/retrieval/matcher.d.ts.map +1 -0
- package/dist/design/audit/reference/retrieval/matcher.js +107 -0
- package/dist/design/audit/reference/retrieval/matcher.js.map +1 -0
- package/dist/design/audit/reference/run.d.ts +59 -0
- package/dist/design/audit/reference/run.d.ts.map +1 -0
- package/dist/design/audit/reference/run.js +99 -0
- package/dist/design/audit/reference/run.js.map +1 -0
- package/dist/design/audit/report.d.ts +35 -0
- package/dist/design/audit/report.d.ts.map +1 -0
- package/dist/design/audit/report.js +195 -0
- package/dist/design/audit/report.js.map +1 -0
- package/dist/design/audit/tokens/extract.d.ts +71 -0
- package/dist/design/audit/tokens/extract.d.ts.map +1 -0
- package/dist/design/audit/tokens/extract.js +1034 -0
- package/dist/design/audit/tokens/extract.js.map +1 -0
- package/dist/design/audit/types.d.ts +8 -0
- package/dist/design/audit/types.d.ts.map +1 -1
- package/dist/design/compare.d.ts.map +1 -1
- package/dist/design/compare.js +2 -6
- package/dist/design/compare.js.map +1 -1
- package/dist/design/cookie-consent.d.ts +3 -0
- package/dist/design/cookie-consent.d.ts.map +1 -0
- package/dist/design/cookie-consent.js +26 -0
- package/dist/design/cookie-consent.js.map +1 -0
- package/dist/design/viewports.d.ts +18 -0
- package/dist/design/viewports.d.ts.map +1 -0
- package/dist/design/viewports.js +10 -0
- package/dist/design/viewports.js.map +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/memory/store.d.ts +19 -1
- package/dist/memory/store.d.ts.map +1 -1
- package/dist/memory/store.js +47 -0
- package/dist/memory/store.js.map +1 -1
- package/dist/provider-defaults.d.ts +18 -0
- package/dist/provider-defaults.d.ts.map +1 -1
- package/dist/provider-defaults.js +33 -0
- package/dist/provider-defaults.js.map +1 -1
- package/dist/runner/allowed-domains.d.ts +11 -0
- package/dist/runner/allowed-domains.d.ts.map +1 -0
- package/dist/runner/allowed-domains.js +14 -0
- package/dist/runner/allowed-domains.js.map +1 -0
- package/dist/runner/batch-fill.d.ts +28 -0
- package/dist/runner/batch-fill.d.ts.map +1 -0
- package/dist/runner/batch-fill.js +80 -0
- package/dist/runner/batch-fill.js.map +1 -0
- package/dist/runner/completion-policy.d.ts +26 -0
- package/dist/runner/completion-policy.d.ts.map +1 -0
- package/dist/runner/completion-policy.js +76 -0
- package/dist/runner/completion-policy.js.map +1 -0
- package/dist/runner/constants.d.ts +14 -0
- package/dist/runner/constants.d.ts.map +1 -0
- package/dist/runner/constants.js +23 -0
- package/dist/runner/constants.js.map +1 -0
- package/dist/runner/decision-screenshot.d.ts +24 -0
- package/dist/runner/decision-screenshot.d.ts.map +1 -0
- package/dist/runner/decision-screenshot.js +23 -0
- package/dist/runner/decision-screenshot.js.map +1 -0
- package/dist/runner/domain-boundary.d.ts +36 -0
- package/dist/runner/domain-boundary.d.ts.map +1 -0
- package/dist/runner/domain-boundary.js +81 -0
- package/dist/runner/domain-boundary.js.map +1 -0
- package/dist/runner/effect-verify.d.ts +28 -0
- package/dist/runner/effect-verify.d.ts.map +1 -0
- package/dist/runner/effect-verify.js +42 -0
- package/dist/runner/effect-verify.js.map +1 -0
- package/dist/runner/execute-plan.d.ts +58 -0
- package/dist/runner/execute-plan.d.ts.map +1 -0
- package/dist/runner/execute-plan.js +426 -0
- package/dist/runner/execute-plan.js.map +1 -0
- package/dist/runner/max-turns-extension.d.ts +19 -0
- package/dist/runner/max-turns-extension.d.ts.map +1 -0
- package/dist/runner/max-turns-extension.js +25 -0
- package/dist/runner/max-turns-extension.js.map +1 -0
- package/dist/runner/micro-plan.d.ts +11 -0
- package/dist/runner/micro-plan.d.ts.map +1 -0
- package/dist/runner/micro-plan.js +29 -0
- package/dist/runner/micro-plan.js.map +1 -0
- package/dist/runner/prompt-snippets.d.ts +5 -0
- package/dist/runner/prompt-snippets.d.ts.map +1 -0
- package/dist/runner/prompt-snippets.js +13 -0
- package/dist/runner/prompt-snippets.js.map +1 -0
- package/dist/runner/replay/contracts.d.ts +300 -0
- package/dist/runner/replay/contracts.d.ts.map +1 -0
- package/dist/runner/replay/contracts.js +42 -0
- package/dist/runner/replay/contracts.js.map +1 -0
- package/dist/runner/replay/controller.d.ts +27 -0
- package/dist/runner/replay/controller.d.ts.map +1 -0
- package/dist/runner/replay/controller.js +197 -0
- package/dist/runner/replay/controller.js.map +1 -0
- package/dist/runner/replay/guard.d.ts +28 -0
- package/dist/runner/replay/guard.d.ts.map +1 -0
- package/dist/runner/replay/guard.js +100 -0
- package/dist/runner/replay/guard.js.map +1 -0
- package/dist/runner/runner.d.ts +44 -51
- package/dist/runner/runner.d.ts.map +1 -1
- package/dist/runner/runner.js +155 -851
- package/dist/runner/runner.js.map +1 -1
- package/dist/runner/scout-feedback.d.ts +51 -0
- package/dist/runner/scout-feedback.d.ts.map +1 -0
- package/dist/runner/scout-feedback.js +149 -0
- package/dist/runner/scout-feedback.js.map +1 -0
- package/dist/skills/macro-loader.d.ts +1 -1
- package/dist/test-runner.d.ts.map +1 -1
- package/dist/test-runner.js +27 -1
- package/dist/test-runner.js.map +1 -1
- package/dist/types/actions.d.ts +241 -0
- package/dist/types/actions.d.ts.map +1 -0
- package/dist/types/actions.js +5 -0
- package/dist/types/actions.js.map +1 -0
- package/dist/types/config.d.ts +211 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +2 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/design-audit.d.ts +92 -0
- package/dist/types/design-audit.d.ts.map +1 -0
- package/dist/types/design-audit.js +5 -0
- package/dist/types/design-audit.js.map +1 -0
- package/dist/types/design-tokens.d.ts +138 -0
- package/dist/types/design-tokens.d.ts.map +1 -0
- package/dist/types/design-tokens.js +5 -0
- package/dist/types/design-tokens.js.map +1 -0
- package/dist/types/page.d.ts +16 -0
- package/dist/types/page.d.ts.map +1 -0
- package/dist/types/page.js +2 -0
- package/dist/types/page.js.map +1 -0
- package/dist/types/plan.d.ts +50 -0
- package/dist/types/plan.d.ts.map +1 -0
- package/dist/types/plan.js +2 -0
- package/dist/types/plan.js.map +1 -0
- package/dist/types/preview.d.ts +9 -0
- package/dist/types/preview.d.ts.map +1 -0
- package/dist/types/preview.js +5 -0
- package/dist/types/preview.js.map +1 -0
- package/dist/types/result.d.ts +62 -0
- package/dist/types/result.d.ts.map +1 -0
- package/dist/types/result.js +2 -0
- package/dist/types/result.js.map +1 -0
- package/dist/types/scenario.d.ts +20 -0
- package/dist/types/scenario.d.ts.map +1 -0
- package/dist/types/scenario.js +5 -0
- package/dist/types/scenario.js.map +1 -0
- package/dist/types/test-runner.d.ts +145 -0
- package/dist/types/test-runner.d.ts.map +1 -0
- package/dist/types/test-runner.js +10 -0
- package/dist/types/test-runner.js.map +1 -0
- package/dist/types/trajectory.d.ts +38 -0
- package/dist/types/trajectory.d.ts.map +1 -0
- package/dist/types/trajectory.js +2 -0
- package/dist/types/trajectory.js.map +1 -0
- package/dist/types/turn.d.ts +50 -0
- package/dist/types/turn.d.ts.map +1 -0
- package/dist/types/turn.js +2 -0
- package/dist/types/turn.js.map +1 -0
- package/dist/types.d.ts +16 -1017
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +15 -8
- package/dist/types.js.map +1 -1
- package/dist/wallet/rpc-interception.d.ts +15 -0
- package/dist/wallet/rpc-interception.d.ts.map +1 -0
- package/dist/wallet/rpc-interception.js +95 -0
- package/dist/wallet/rpc-interception.js.map +1 -0
- package/package.json +23 -5
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../../../src/design/audit/reference/contracts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reference-Grounded Art Director — shared contracts.
|
|
3
|
+
*
|
|
4
|
+
* This is the SINGLE source of truth for every type and module-boundary
|
|
5
|
+
* interface the reference engine passes between stages. It holds ZERO runtime
|
|
6
|
+
* logic, ZERO constants, and ZERO default values — only `type`/`interface`
|
|
7
|
+
* declarations and re-exports. Keeping it logic-free is what prevents it from
|
|
8
|
+
* becoming a god module that every core imports for behaviour rather than shape.
|
|
9
|
+
*
|
|
10
|
+
* Design rules encoded here:
|
|
11
|
+
* - Every cross-stage hop is typed by a record in this file, so no module
|
|
12
|
+
* reaches into another's internals.
|
|
13
|
+
* - Every IO / LLM / browser boundary is expressed as a NARROW, single-purpose
|
|
14
|
+
* interface (DesignDnaExtractor, CorpusReader, CorpusWriter, ExemplarMatcher,
|
|
15
|
+
* EmbeddingProvider, RedesignGenerator, TasteJudge, DirectionRanker). Cores
|
|
16
|
+
* and the orchestrator depend on these interfaces, never on concrete
|
|
17
|
+
* adapters. There is deliberately NO single "God" interface — each boundary
|
|
18
|
+
* is its own contract, and read/write surfaces are split (CorpusReader vs
|
|
19
|
+
* CorpusWriter) so the runtime audit path can never reach authoring mutators.
|
|
20
|
+
* - The engine emits the EXISTING audit contracts (DesignFinding,
|
|
21
|
+
* PageAuditResult, …) verbatim by re-exporting them, never redefining them,
|
|
22
|
+
* so the closed enums stay authoritative and stages 7-9 of the v1 pipeline
|
|
23
|
+
* keep working unchanged.
|
|
24
|
+
*
|
|
25
|
+
* Units are noted inline (px, ms, 0-1 ratios) so downstream math is unambiguous.
|
|
26
|
+
*/
|
|
27
|
+
export {};
|
|
28
|
+
//# sourceMappingURL=contracts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../../../src/design/audit/reference/contracts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Corpus authoring — reverse-engineer an `Exemplar` from a live page, and ingest a
|
|
3
|
+
* batch into a corpus. This is the OFFLINE authoring path (never the audit hot
|
|
4
|
+
* path) and the ONLY consumer of the `CorpusWriter` half of the store.
|
|
5
|
+
*
|
|
6
|
+
* Every browser/LLM/IO dependency is INJECTED through the narrow contract
|
|
7
|
+
* interfaces, so the whole module unit-tests with no live browser, model, or
|
|
8
|
+
* network:
|
|
9
|
+
* - `DesignDnaExtractor` turns a URL into a `DnaCapture` (the shipped adapter
|
|
10
|
+
* reuses `extractDesignTokens` → `toDesignDNA`; tests inject a fake);
|
|
11
|
+
* - `EmbeddingProvider` embeds the `aestheticDescriptor` into the retrieval
|
|
12
|
+
* vector (the deterministic `HashEmbeddingProvider` is the offline default);
|
|
13
|
+
* - `ExemplarClassifier` supplies `pageType` + `jobToBeDone` when they aren't
|
|
14
|
+
* authored by hand (the shipped wiring backs it with `classifyEnsemble`).
|
|
15
|
+
*
|
|
16
|
+
* Nothing here fabricates a page type: an exemplar's `pageType`/`jobToBeDone` must
|
|
17
|
+
* be authored explicitly OR produced by an injected classifier, otherwise the
|
|
18
|
+
* build fails closed.
|
|
19
|
+
*/
|
|
20
|
+
import type { DesignDnaExtractor, DesignDNA, DesignTokens, EmbeddingProvider, Exemplar, ExemplarSource, CorpusWriter, MeasurementBundle, PageType } from '../contracts.js';
|
|
21
|
+
/**
|
|
22
|
+
* Seed taste rating for a freshly-authored exemplar, before any pairwise vote
|
|
23
|
+
* moves it. Matches `judge/rank.ts`'s `ELO_START` so corpus seeds and ranked
|
|
24
|
+
* directions live on one rating scale.
|
|
25
|
+
*/
|
|
26
|
+
export declare const SEED_ELO = 1500;
|
|
27
|
+
/** Page-typing input handed to an injected classifier. */
|
|
28
|
+
export interface ExemplarClassifyInput {
|
|
29
|
+
url: string;
|
|
30
|
+
dna: DesignDNA;
|
|
31
|
+
tokens: DesignTokens;
|
|
32
|
+
}
|
|
33
|
+
/** What an injected classifier must return — the two retrieval-keying fields. */
|
|
34
|
+
export interface ExemplarClassification {
|
|
35
|
+
pageType: PageType;
|
|
36
|
+
jobToBeDone: string;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Narrow classification boundary: derive `pageType` + `jobToBeDone` from a
|
|
40
|
+
* captured page. Injected so the heavyweight `classifyEnsemble` (Brain + browser)
|
|
41
|
+
* stays out of this pure-by-injection module and tests pass a stub.
|
|
42
|
+
*/
|
|
43
|
+
export interface ExemplarClassifier {
|
|
44
|
+
classify(input: ExemplarClassifyInput): Promise<ExemplarClassification>;
|
|
45
|
+
}
|
|
46
|
+
/** Options for authoring ONE exemplar. Deps are injected alongside the target. */
|
|
47
|
+
export interface BuildExemplarOptions {
|
|
48
|
+
url: string;
|
|
49
|
+
extractor: DesignDnaExtractor;
|
|
50
|
+
embedder: EmbeddingProvider;
|
|
51
|
+
/** Required unless BOTH `pageType` and `jobToBeDone` are authored explicitly. */
|
|
52
|
+
classifier?: ExemplarClassifier;
|
|
53
|
+
/** Provenance label; defaults to `'manual'`. */
|
|
54
|
+
source?: ExemplarSource;
|
|
55
|
+
/** Hand-authored page type (skips the classifier for this field). */
|
|
56
|
+
pageType?: PageType;
|
|
57
|
+
/** Hand-authored job-to-be-done (skips the classifier for this field). */
|
|
58
|
+
jobToBeDone?: string;
|
|
59
|
+
/** Seed taste rating; defaults to `SEED_ELO`. */
|
|
60
|
+
eloRating?: number;
|
|
61
|
+
outputDir?: string;
|
|
62
|
+
headless?: boolean;
|
|
63
|
+
/** Deterministic measurements folded into the DNA signals, when available. */
|
|
64
|
+
measurements?: MeasurementBundle;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Stable id from source + url. URL targets key on host+path (query/hash dropped);
|
|
68
|
+
* non-URL targets (a rip dir / file path) slugify raw. Deterministic and
|
|
69
|
+
* filename-safe.
|
|
70
|
+
*/
|
|
71
|
+
export declare function exemplarId(source: ExemplarSource, url: string): string;
|
|
72
|
+
/**
|
|
73
|
+
* Reverse-engineer one `Exemplar` from a URL: extract → DNA, classify (or use the
|
|
74
|
+
* authored type/job), embed the aesthetic descriptor, and assemble the row. Does
|
|
75
|
+
* NOT persist — `ingestCorpus` owns the `CorpusWriter`. Fail-closed on a missing
|
|
76
|
+
* classifier and on an empty embedding.
|
|
77
|
+
*/
|
|
78
|
+
export declare function buildExemplar(opts: BuildExemplarOptions): Promise<Exemplar>;
|
|
79
|
+
/** One target page to ingest; per-target fields override the shared `ingestCorpus` deps. */
|
|
80
|
+
export interface IngestTarget {
|
|
81
|
+
url: string;
|
|
82
|
+
source?: ExemplarSource;
|
|
83
|
+
pageType?: PageType;
|
|
84
|
+
jobToBeDone?: string;
|
|
85
|
+
eloRating?: number;
|
|
86
|
+
outputDir?: string;
|
|
87
|
+
headless?: boolean;
|
|
88
|
+
measurements?: MeasurementBundle;
|
|
89
|
+
}
|
|
90
|
+
/** Shared deps + targets for a batch ingest. */
|
|
91
|
+
export interface IngestCorpusOptions {
|
|
92
|
+
targets: IngestTarget[];
|
|
93
|
+
/** The corpus authoring sink — the only `CorpusWriter` use in the engine. */
|
|
94
|
+
store: CorpusWriter;
|
|
95
|
+
extractor: DesignDnaExtractor;
|
|
96
|
+
embedder: EmbeddingProvider;
|
|
97
|
+
classifier?: ExemplarClassifier;
|
|
98
|
+
/** Default source for targets that don't set one. */
|
|
99
|
+
source?: ExemplarSource;
|
|
100
|
+
}
|
|
101
|
+
/** Outcome of a batch ingest: ids added + per-target failures (never throws on one bad target). */
|
|
102
|
+
export interface IngestResult {
|
|
103
|
+
added: string[];
|
|
104
|
+
failed: {
|
|
105
|
+
url: string;
|
|
106
|
+
reason: string;
|
|
107
|
+
}[];
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Author a batch of exemplars into the corpus. Each target is built, its
|
|
111
|
+
* screenshot relocated into the corpus, and the row upserted; a failure on one
|
|
112
|
+
* target is captured in `failed` and never aborts the rest.
|
|
113
|
+
*/
|
|
114
|
+
export declare function ingestCorpus(opts: IngestCorpusOptions): Promise<IngestResult>;
|
|
115
|
+
//# sourceMappingURL=build.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../../../src/design/audit/reference/corpus/build.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,KAAK,EACV,kBAAkB,EAClB,SAAS,EACT,YAAY,EACZ,iBAAiB,EACjB,QAAQ,EACR,cAAc,EACd,YAAY,EACZ,iBAAiB,EACjB,QAAQ,EACT,MAAM,iBAAiB,CAAA;AAGxB;;;;GAIG;AACH,eAAO,MAAM,QAAQ,OAAO,CAAA;AAE5B,0DAA0D;AAC1D,MAAM,WAAW,qBAAqB;IACpC,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,SAAS,CAAA;IACd,MAAM,EAAE,YAAY,CAAA;CACrB;AAED,iFAAiF;AACjF,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,QAAQ,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;CACpB;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAA;CACxE;AAED,kFAAkF;AAClF,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAA;IACX,SAAS,EAAE,kBAAkB,CAAA;IAC7B,QAAQ,EAAE,iBAAiB,CAAA;IAC3B,iFAAiF;IACjF,UAAU,CAAC,EAAE,kBAAkB,CAAA;IAC/B,gDAAgD;IAChD,MAAM,CAAC,EAAE,cAAc,CAAA;IACvB,qEAAqE;IACrE,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,0EAA0E;IAC1E,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,iDAAiD;IACjD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,8EAA8E;IAC9E,YAAY,CAAC,EAAE,iBAAiB,CAAA;CACjC;AAUD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAStE;AAOD;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,QAAQ,CAAC,CA0CjF;AAED,4FAA4F;AAC5F,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,CAAC,EAAE,cAAc,CAAA;IACvB,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,YAAY,CAAC,EAAE,iBAAiB,CAAA;CACjC;AAED,gDAAgD;AAChD,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,YAAY,EAAE,CAAA;IACvB,6EAA6E;IAC7E,KAAK,EAAE,YAAY,CAAA;IACnB,SAAS,EAAE,kBAAkB,CAAA;IAC7B,QAAQ,EAAE,iBAAiB,CAAA;IAC3B,UAAU,CAAC,EAAE,kBAAkB,CAAA;IAC/B,qDAAqD;IACrD,MAAM,CAAC,EAAE,cAAc,CAAA;CACxB;AAED,mGAAmG;AACnG,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CAC1C;AAmBD;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,YAAY,CAAC,CA6BnF"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Corpus authoring — reverse-engineer an `Exemplar` from a live page, and ingest a
|
|
3
|
+
* batch into a corpus. This is the OFFLINE authoring path (never the audit hot
|
|
4
|
+
* path) and the ONLY consumer of the `CorpusWriter` half of the store.
|
|
5
|
+
*
|
|
6
|
+
* Every browser/LLM/IO dependency is INJECTED through the narrow contract
|
|
7
|
+
* interfaces, so the whole module unit-tests with no live browser, model, or
|
|
8
|
+
* network:
|
|
9
|
+
* - `DesignDnaExtractor` turns a URL into a `DnaCapture` (the shipped adapter
|
|
10
|
+
* reuses `extractDesignTokens` → `toDesignDNA`; tests inject a fake);
|
|
11
|
+
* - `EmbeddingProvider` embeds the `aestheticDescriptor` into the retrieval
|
|
12
|
+
* vector (the deterministic `HashEmbeddingProvider` is the offline default);
|
|
13
|
+
* - `ExemplarClassifier` supplies `pageType` + `jobToBeDone` when they aren't
|
|
14
|
+
* authored by hand (the shipped wiring backs it with `classifyEnsemble`).
|
|
15
|
+
*
|
|
16
|
+
* Nothing here fabricates a page type: an exemplar's `pageType`/`jobToBeDone` must
|
|
17
|
+
* be authored explicitly OR produced by an injected classifier, otherwise the
|
|
18
|
+
* build fails closed.
|
|
19
|
+
*/
|
|
20
|
+
import { promises as fs } from 'node:fs';
|
|
21
|
+
import { aestheticDescriptor } from '../dna/descriptor.js';
|
|
22
|
+
/**
|
|
23
|
+
* Seed taste rating for a freshly-authored exemplar, before any pairwise vote
|
|
24
|
+
* moves it. Matches `judge/rank.ts`'s `ELO_START` so corpus seeds and ranked
|
|
25
|
+
* directions live on one rating scale.
|
|
26
|
+
*/
|
|
27
|
+
export const SEED_ELO = 1500;
|
|
28
|
+
/** Lowercase, filename-safe slug; collapses runs of non-alphanumerics to `-`. */
|
|
29
|
+
function slugify(input) {
|
|
30
|
+
return input
|
|
31
|
+
.toLowerCase()
|
|
32
|
+
.replace(/[^a-z0-9]+/g, '-')
|
|
33
|
+
.replace(/^-+|-+$/g, '');
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Stable id from source + url. URL targets key on host+path (query/hash dropped);
|
|
37
|
+
* non-URL targets (a rip dir / file path) slugify raw. Deterministic and
|
|
38
|
+
* filename-safe.
|
|
39
|
+
*/
|
|
40
|
+
export function exemplarId(source, url) {
|
|
41
|
+
let locus = url;
|
|
42
|
+
try {
|
|
43
|
+
const u = new URL(url);
|
|
44
|
+
locus = `${u.hostname}${u.pathname}`;
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
// Non-URL target — slugify the raw string.
|
|
48
|
+
}
|
|
49
|
+
return slugify(`${source}-${locus}`) || slugify(String(source)) || 'exemplar';
|
|
50
|
+
}
|
|
51
|
+
/** Prefer the desktop viewport screenshot; fall back to the first available. */
|
|
52
|
+
function pickScreenshot(paths) {
|
|
53
|
+
return paths['desktop'] ?? Object.values(paths)[0] ?? '';
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Reverse-engineer one `Exemplar` from a URL: extract → DNA, classify (or use the
|
|
57
|
+
* authored type/job), embed the aesthetic descriptor, and assemble the row. Does
|
|
58
|
+
* NOT persist — `ingestCorpus` owns the `CorpusWriter`. Fail-closed on a missing
|
|
59
|
+
* classifier and on an empty embedding.
|
|
60
|
+
*/
|
|
61
|
+
export async function buildExemplar(opts) {
|
|
62
|
+
const source = opts.source ?? 'manual';
|
|
63
|
+
const capture = await opts.extractor.extract({
|
|
64
|
+
url: opts.url,
|
|
65
|
+
headless: opts.headless,
|
|
66
|
+
outputDir: opts.outputDir,
|
|
67
|
+
measurements: opts.measurements,
|
|
68
|
+
});
|
|
69
|
+
let pageType;
|
|
70
|
+
let jobToBeDone;
|
|
71
|
+
if (opts.pageType !== undefined && opts.jobToBeDone !== undefined) {
|
|
72
|
+
pageType = opts.pageType;
|
|
73
|
+
jobToBeDone = opts.jobToBeDone;
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
if (!opts.classifier) {
|
|
77
|
+
throw new Error('buildExemplar: provide both pageType and jobToBeDone, or inject a classifier — page type is never fabricated');
|
|
78
|
+
}
|
|
79
|
+
const classified = await opts.classifier.classify({ url: opts.url, dna: capture.dna, tokens: capture.tokens });
|
|
80
|
+
pageType = opts.pageType ?? classified.pageType;
|
|
81
|
+
jobToBeDone = opts.jobToBeDone ?? classified.jobToBeDone;
|
|
82
|
+
}
|
|
83
|
+
const descriptor = aestheticDescriptor(capture.dna);
|
|
84
|
+
const [aestheticVector] = await opts.embedder.embed([descriptor]);
|
|
85
|
+
if (!aestheticVector || aestheticVector.length === 0) {
|
|
86
|
+
throw new Error('buildExemplar: embedder returned no vector for the aesthetic descriptor');
|
|
87
|
+
}
|
|
88
|
+
return {
|
|
89
|
+
id: exemplarId(source, opts.url),
|
|
90
|
+
source,
|
|
91
|
+
url: opts.url,
|
|
92
|
+
pageType,
|
|
93
|
+
jobToBeDone,
|
|
94
|
+
dna: capture.dna,
|
|
95
|
+
screenshotPath: pickScreenshot(capture.screenshotPaths),
|
|
96
|
+
aestheticVector,
|
|
97
|
+
eloRating: opts.eloRating ?? SEED_ELO,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Relocate a freshly-captured screenshot into the corpus via `saveScreenshot`,
|
|
102
|
+
* returning the corpus-relative path to store. Returns `undefined` when there is
|
|
103
|
+
* no readable source screenshot (a missing screenshot is non-fatal — the DNA and
|
|
104
|
+
* vector are the load-bearing parts of an exemplar).
|
|
105
|
+
*/
|
|
106
|
+
async function relocateScreenshot(store, id, srcPath) {
|
|
107
|
+
if (!srcPath)
|
|
108
|
+
return undefined;
|
|
109
|
+
let png;
|
|
110
|
+
try {
|
|
111
|
+
png = await fs.readFile(srcPath);
|
|
112
|
+
}
|
|
113
|
+
catch {
|
|
114
|
+
return undefined;
|
|
115
|
+
}
|
|
116
|
+
return store.saveScreenshot(id, png);
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Author a batch of exemplars into the corpus. Each target is built, its
|
|
120
|
+
* screenshot relocated into the corpus, and the row upserted; a failure on one
|
|
121
|
+
* target is captured in `failed` and never aborts the rest.
|
|
122
|
+
*/
|
|
123
|
+
export async function ingestCorpus(opts) {
|
|
124
|
+
const added = [];
|
|
125
|
+
const failed = [];
|
|
126
|
+
for (const target of opts.targets) {
|
|
127
|
+
try {
|
|
128
|
+
const exemplar = await buildExemplar({
|
|
129
|
+
url: target.url,
|
|
130
|
+
extractor: opts.extractor,
|
|
131
|
+
embedder: opts.embedder,
|
|
132
|
+
classifier: opts.classifier,
|
|
133
|
+
source: target.source ?? opts.source,
|
|
134
|
+
pageType: target.pageType,
|
|
135
|
+
jobToBeDone: target.jobToBeDone,
|
|
136
|
+
eloRating: target.eloRating,
|
|
137
|
+
outputDir: target.outputDir,
|
|
138
|
+
headless: target.headless,
|
|
139
|
+
measurements: target.measurements,
|
|
140
|
+
});
|
|
141
|
+
const relocated = await relocateScreenshot(opts.store, exemplar.id, exemplar.screenshotPath);
|
|
142
|
+
const persisted = relocated !== undefined ? { ...exemplar, screenshotPath: relocated } : exemplar;
|
|
143
|
+
await opts.store.upsert(persisted);
|
|
144
|
+
added.push(persisted.id);
|
|
145
|
+
}
|
|
146
|
+
catch (err) {
|
|
147
|
+
failed.push({ url: target.url, reason: err instanceof Error ? err.message : String(err) });
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
return { added, failed };
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=build.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../../../../src/design/audit/reference/corpus/build.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Exemplar (de)serialisation + validation — the PURE corpus schema core.
|
|
3
|
+
*
|
|
4
|
+
* `parseExemplar` is the single fail-closed gate every corpus row passes through
|
|
5
|
+
* (on load AND before write): it validates the full `Exemplar` shape — including a
|
|
6
|
+
* deep `DesignDNA` walk — and returns a FRESH, whitelisted object built field by
|
|
7
|
+
* field. Nothing from the raw input is ever spread or assigned wholesale, so a
|
|
8
|
+
* hostile row carrying `__proto__` / `constructor` keys can neither pollute a
|
|
9
|
+
* prototype nor smuggle extra fields into the corpus; unknown keys are simply
|
|
10
|
+
* dropped. No `eval`, no `Function`, no dynamic require — `JSON.parse` upstream is
|
|
11
|
+
* the only deserialisation, and it is treated as untrusted data.
|
|
12
|
+
*
|
|
13
|
+
* `isExemplar` is the boolean guard derived from the same path; `serializeExemplar`
|
|
14
|
+
* is its inverse (pretty JSON, one record per file). Pure: no IO, no LLM, no
|
|
15
|
+
* browser; identical inputs → identical output.
|
|
16
|
+
*/
|
|
17
|
+
import type { Exemplar } from '../contracts.js';
|
|
18
|
+
/**
|
|
19
|
+
* Validate and normalise one raw record into a fresh `Exemplar`, or throw a typed
|
|
20
|
+
* rejection. Fail-closed: a missing/ malformed `dna`, `aestheticVector`, or
|
|
21
|
+
* `pageType` is rejected rather than defaulted, and the result is built by
|
|
22
|
+
* whitelisting known fields (no spread of untrusted input → no prototype
|
|
23
|
+
* pollution).
|
|
24
|
+
*/
|
|
25
|
+
export declare function parseExemplar(raw: unknown): Exemplar;
|
|
26
|
+
/** Boolean guard derived from the same validation path as `parseExemplar`. */
|
|
27
|
+
export declare function isExemplar(raw: unknown): raw is Exemplar;
|
|
28
|
+
/**
|
|
29
|
+
* Serialise one `Exemplar` to a stable, human-reviewable JSON string (one record
|
|
30
|
+
* per corpus file). Round-trips through `parseExemplar(JSON.parse(...))`.
|
|
31
|
+
*/
|
|
32
|
+
export declare function serializeExemplar(e: Exemplar): string;
|
|
33
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../../src/design/audit/reference/corpus/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EACV,QAAQ,EAUT,MAAM,iBAAiB,CAAA;AAqMxB;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,QAAQ,CAgBpD;AAED,8EAA8E;AAC9E,wBAAgB,UAAU,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,QAAQ,CAOxD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,QAAQ,GAAG,MAAM,CAErD"}
|
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Exemplar (de)serialisation + validation — the PURE corpus schema core.
|
|
3
|
+
*
|
|
4
|
+
* `parseExemplar` is the single fail-closed gate every corpus row passes through
|
|
5
|
+
* (on load AND before write): it validates the full `Exemplar` shape — including a
|
|
6
|
+
* deep `DesignDNA` walk — and returns a FRESH, whitelisted object built field by
|
|
7
|
+
* field. Nothing from the raw input is ever spread or assigned wholesale, so a
|
|
8
|
+
* hostile row carrying `__proto__` / `constructor` keys can neither pollute a
|
|
9
|
+
* prototype nor smuggle extra fields into the corpus; unknown keys are simply
|
|
10
|
+
* dropped. No `eval`, no `Function`, no dynamic require — `JSON.parse` upstream is
|
|
11
|
+
* the only deserialisation, and it is treated as untrusted data.
|
|
12
|
+
*
|
|
13
|
+
* `isExemplar` is the boolean guard derived from the same path; `serializeExemplar`
|
|
14
|
+
* is its inverse (pretty JSON, one record per file). Pure: no IO, no LLM, no
|
|
15
|
+
* browser; identical inputs → identical output.
|
|
16
|
+
*/
|
|
17
|
+
const PAGE_TYPES = [
|
|
18
|
+
'marketing',
|
|
19
|
+
'saas-app',
|
|
20
|
+
'dashboard',
|
|
21
|
+
'docs',
|
|
22
|
+
'ecommerce',
|
|
23
|
+
'social',
|
|
24
|
+
'tool',
|
|
25
|
+
'blog',
|
|
26
|
+
'utility',
|
|
27
|
+
'unknown',
|
|
28
|
+
];
|
|
29
|
+
const COLOR_ROLES = ['primary', 'secondary', 'accent', 'neutral', 'background', 'border'];
|
|
30
|
+
const DENSITIES = ['sparse', 'balanced', 'dense'];
|
|
31
|
+
const STEP_ROLES = ['display', 'heading', 'body', 'caption', 'label'];
|
|
32
|
+
const FONT_ROLES = ['heading', 'body', 'mono', 'display'];
|
|
33
|
+
const isRecord = (v) => typeof v === 'object' && v !== null && !Array.isArray(v);
|
|
34
|
+
const isString = (v) => typeof v === 'string';
|
|
35
|
+
const isBoolean = (v) => typeof v === 'boolean';
|
|
36
|
+
const isFiniteNumber = (v) => typeof v === 'number' && Number.isFinite(v);
|
|
37
|
+
const isStringArray = (v) => Array.isArray(v) && v.every(isString);
|
|
38
|
+
const isFiniteNumberArray = (v) => Array.isArray(v) && v.every(isFiniteNumber);
|
|
39
|
+
/** Throw a uniform, contextual rejection. Never returns. */
|
|
40
|
+
function fail(msg) {
|
|
41
|
+
throw new Error(`invalid exemplar: ${msg}`);
|
|
42
|
+
}
|
|
43
|
+
function asRecord(v, where) {
|
|
44
|
+
if (!isRecord(v))
|
|
45
|
+
fail(`${where} must be an object`);
|
|
46
|
+
return v;
|
|
47
|
+
}
|
|
48
|
+
function asString(v, where) {
|
|
49
|
+
if (!isString(v))
|
|
50
|
+
fail(`${where} must be a string`);
|
|
51
|
+
return v;
|
|
52
|
+
}
|
|
53
|
+
function asNonEmptyString(v, where) {
|
|
54
|
+
const s = asString(v, where);
|
|
55
|
+
if (s.length === 0)
|
|
56
|
+
fail(`${where} must be non-empty`);
|
|
57
|
+
return s;
|
|
58
|
+
}
|
|
59
|
+
function asFiniteNumber(v, where) {
|
|
60
|
+
if (!isFiniteNumber(v))
|
|
61
|
+
fail(`${where} must be a finite number`);
|
|
62
|
+
return v;
|
|
63
|
+
}
|
|
64
|
+
function asEnum(v, allowed, where) {
|
|
65
|
+
if (!isString(v) || !allowed.includes(v))
|
|
66
|
+
fail(`${where} must be one of ${allowed.join(', ')}`);
|
|
67
|
+
return v;
|
|
68
|
+
}
|
|
69
|
+
function normalizeTypeStep(raw, where) {
|
|
70
|
+
const r = asRecord(raw, where);
|
|
71
|
+
return {
|
|
72
|
+
fontSizePx: asFiniteNumber(r.fontSizePx, `${where}.fontSizePx`),
|
|
73
|
+
weight: asFiniteNumber(r.weight, `${where}.weight`),
|
|
74
|
+
lineHeight: asFiniteNumber(r.lineHeight, `${where}.lineHeight`),
|
|
75
|
+
family: asString(r.family, `${where}.family`),
|
|
76
|
+
role: asEnum(r.role, STEP_ROLES, `${where}.role`),
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
function normalizeFontRole(raw, where) {
|
|
80
|
+
const r = asRecord(raw, where);
|
|
81
|
+
if (!isFiniteNumberArray(r.weights))
|
|
82
|
+
fail(`${where}.weights must be a number array`);
|
|
83
|
+
return {
|
|
84
|
+
family: asString(r.family, `${where}.family`),
|
|
85
|
+
role: asEnum(r.role, FONT_ROLES, `${where}.role`),
|
|
86
|
+
weights: [...r.weights],
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
function asBoolean(v, where) {
|
|
90
|
+
if (!isBoolean(v))
|
|
91
|
+
fail(`${where} must be a boolean`);
|
|
92
|
+
return v;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Validate + whitelist an optional live scroll-motion record. Fail-closed (a
|
|
96
|
+
* malformed field is rejected, never defaulted) and built field by field so the
|
|
97
|
+
* honest signal round-trips through the corpus instead of being silently dropped
|
|
98
|
+
* on load.
|
|
99
|
+
*/
|
|
100
|
+
function normalizeScrollMotion(raw) {
|
|
101
|
+
const s = asRecord(raw, 'dna.motion.scroll');
|
|
102
|
+
const revealsRaw = asRecord(s.reveals, 'dna.motion.scroll.reveals');
|
|
103
|
+
if (!isStringArray(revealsRaw.kinds))
|
|
104
|
+
fail('dna.motion.scroll.reveals.kinds must be a string array');
|
|
105
|
+
return {
|
|
106
|
+
pageHeightRatio: asFiniteNumber(s.pageHeightRatio, 'dna.motion.scroll.pageHeightRatio'),
|
|
107
|
+
reveals: {
|
|
108
|
+
count: asFiniteNumber(revealsRaw.count, 'dna.motion.scroll.reveals.count'),
|
|
109
|
+
kinds: [...revealsRaw.kinds],
|
|
110
|
+
},
|
|
111
|
+
stickyCount: asFiniteNumber(s.stickyCount, 'dna.motion.scroll.stickyCount'),
|
|
112
|
+
parallax: asFiniteNumber(s.parallax, 'dna.motion.scroll.parallax'),
|
|
113
|
+
scrollDriven: asBoolean(s.scrollDriven, 'dna.motion.scroll.scrollDriven'),
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
function normalizeDNA(raw) {
|
|
117
|
+
const d = asRecord(raw, 'dna');
|
|
118
|
+
const typeRaw = asRecord(d.type, 'dna.type');
|
|
119
|
+
if (!Array.isArray(typeRaw.steps))
|
|
120
|
+
fail('dna.type.steps must be an array');
|
|
121
|
+
if (!Array.isArray(typeRaw.families))
|
|
122
|
+
fail('dna.type.families must be an array');
|
|
123
|
+
const type = {
|
|
124
|
+
steps: typeRaw.steps.map((s, i) => normalizeTypeStep(s, `dna.type.steps[${i}]`)),
|
|
125
|
+
families: typeRaw.families.map((f, i) => normalizeFontRole(f, `dna.type.families[${i}]`)),
|
|
126
|
+
};
|
|
127
|
+
if (typeRaw.ratio !== undefined)
|
|
128
|
+
type.ratio = asFiniteNumber(typeRaw.ratio, 'dna.type.ratio');
|
|
129
|
+
const colorRaw = asRecord(d.color, 'dna.color');
|
|
130
|
+
const rolesRaw = asRecord(colorRaw.roles, 'dna.color.roles');
|
|
131
|
+
const roles = {};
|
|
132
|
+
for (const role of COLOR_ROLES) {
|
|
133
|
+
const arr = rolesRaw[role];
|
|
134
|
+
if (arr !== undefined && !isStringArray(arr))
|
|
135
|
+
fail(`dna.color.roles.${role} must be a string array`);
|
|
136
|
+
roles[role] = isStringArray(arr) ? [...arr] : [];
|
|
137
|
+
}
|
|
138
|
+
const color = { roles };
|
|
139
|
+
if (colorRaw.contrastFloor !== undefined) {
|
|
140
|
+
color.contrastFloor = asFiniteNumber(colorRaw.contrastFloor, 'dna.color.contrastFloor');
|
|
141
|
+
}
|
|
142
|
+
const spacingRaw = asRecord(d.spacing, 'dna.spacing');
|
|
143
|
+
if (!isFiniteNumberArray(spacingRaw.steps))
|
|
144
|
+
fail('dna.spacing.steps must be a number array');
|
|
145
|
+
const spacing = {
|
|
146
|
+
steps: [...spacingRaw.steps],
|
|
147
|
+
density: asEnum(spacingRaw.density, DENSITIES, 'dna.spacing.density'),
|
|
148
|
+
};
|
|
149
|
+
if (spacingRaw.baseUnit !== undefined)
|
|
150
|
+
spacing.baseUnit = asFiniteNumber(spacingRaw.baseUnit, 'dna.spacing.baseUnit');
|
|
151
|
+
const radiiRaw = asRecord(d.radii, 'dna.radii');
|
|
152
|
+
if (!isFiniteNumberArray(radiiRaw.steps))
|
|
153
|
+
fail('dna.radii.steps must be a number array');
|
|
154
|
+
const motionRaw = asRecord(d.motion, 'dna.motion');
|
|
155
|
+
if (!isFiniteNumberArray(motionRaw.durationsMs))
|
|
156
|
+
fail('dna.motion.durationsMs must be a number array');
|
|
157
|
+
if (!isStringArray(motionRaw.easings))
|
|
158
|
+
fail('dna.motion.easings must be a string array');
|
|
159
|
+
if (!isStringArray(motionRaw.libraries))
|
|
160
|
+
fail('dna.motion.libraries must be a string array');
|
|
161
|
+
const motion = {
|
|
162
|
+
durationsMs: [...motionRaw.durationsMs],
|
|
163
|
+
easings: [...motionRaw.easings],
|
|
164
|
+
libraries: [...motionRaw.libraries],
|
|
165
|
+
};
|
|
166
|
+
if (motionRaw.scroll !== undefined)
|
|
167
|
+
motion.scroll = normalizeScrollMotion(motionRaw.scroll);
|
|
168
|
+
const layoutRaw = asRecord(d.layout, 'dna.layout');
|
|
169
|
+
const layout = {
|
|
170
|
+
density: asEnum(layoutRaw.density, DENSITIES, 'dna.layout.density'),
|
|
171
|
+
archetype: asString(layoutRaw.archetype, 'dna.layout.archetype'),
|
|
172
|
+
};
|
|
173
|
+
if (layoutRaw.columns !== undefined)
|
|
174
|
+
layout.columns = asFiniteNumber(layoutRaw.columns, 'dna.layout.columns');
|
|
175
|
+
if (layoutRaw.gridBaseUnit !== undefined)
|
|
176
|
+
layout.gridBaseUnit = asFiniteNumber(layoutRaw.gridBaseUnit, 'dna.layout.gridBaseUnit');
|
|
177
|
+
if (layoutRaw.whitespaceRatio !== undefined)
|
|
178
|
+
layout.whitespaceRatio = asFiniteNumber(layoutRaw.whitespaceRatio, 'dna.layout.whitespaceRatio');
|
|
179
|
+
const compRaw = asRecord(d.components, 'dna.components');
|
|
180
|
+
const components = {
|
|
181
|
+
buttons: asFiniteNumber(compRaw.buttons, 'dna.components.buttons'),
|
|
182
|
+
inputs: asFiniteNumber(compRaw.inputs, 'dna.components.inputs'),
|
|
183
|
+
cards: asFiniteNumber(compRaw.cards, 'dna.components.cards'),
|
|
184
|
+
nav: asFiniteNumber(compRaw.nav, 'dna.components.nav'),
|
|
185
|
+
};
|
|
186
|
+
const dna = {
|
|
187
|
+
url: asString(d.url, 'dna.url'),
|
|
188
|
+
capturedAt: asString(d.capturedAt, 'dna.capturedAt'),
|
|
189
|
+
type,
|
|
190
|
+
color,
|
|
191
|
+
spacing,
|
|
192
|
+
radii: { steps: [...radiiRaw.steps] },
|
|
193
|
+
motion,
|
|
194
|
+
layout,
|
|
195
|
+
components,
|
|
196
|
+
};
|
|
197
|
+
if (d.signals !== undefined) {
|
|
198
|
+
const sigRaw = asRecord(d.signals, 'dna.signals');
|
|
199
|
+
const signals = {};
|
|
200
|
+
if (sigRaw.contrastAaPassRate !== undefined)
|
|
201
|
+
signals.contrastAaPassRate = asFiniteNumber(sigRaw.contrastAaPassRate, 'dna.signals.contrastAaPassRate');
|
|
202
|
+
if (sigRaw.a11yBlockingCount !== undefined)
|
|
203
|
+
signals.a11yBlockingCount = asFiniteNumber(sigRaw.a11yBlockingCount, 'dna.signals.a11yBlockingCount');
|
|
204
|
+
dna.signals = signals;
|
|
205
|
+
}
|
|
206
|
+
return dna;
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Validate and normalise one raw record into a fresh `Exemplar`, or throw a typed
|
|
210
|
+
* rejection. Fail-closed: a missing/ malformed `dna`, `aestheticVector`, or
|
|
211
|
+
* `pageType` is rejected rather than defaulted, and the result is built by
|
|
212
|
+
* whitelisting known fields (no spread of untrusted input → no prototype
|
|
213
|
+
* pollution).
|
|
214
|
+
*/
|
|
215
|
+
export function parseExemplar(raw) {
|
|
216
|
+
const r = asRecord(raw, 'exemplar');
|
|
217
|
+
if (!isFiniteNumberArray(r.aestheticVector) || r.aestheticVector.length === 0) {
|
|
218
|
+
fail('aestheticVector must be a non-empty finite number array');
|
|
219
|
+
}
|
|
220
|
+
return {
|
|
221
|
+
id: asNonEmptyString(r.id, 'id'),
|
|
222
|
+
source: asNonEmptyString(r.source, 'source'),
|
|
223
|
+
url: asString(r.url, 'url'),
|
|
224
|
+
pageType: asEnum(r.pageType, PAGE_TYPES, 'pageType'),
|
|
225
|
+
jobToBeDone: asString(r.jobToBeDone, 'jobToBeDone'),
|
|
226
|
+
dna: normalizeDNA(r.dna),
|
|
227
|
+
screenshotPath: asString(r.screenshotPath, 'screenshotPath'),
|
|
228
|
+
aestheticVector: [...r.aestheticVector],
|
|
229
|
+
eloRating: asFiniteNumber(r.eloRating, 'eloRating'),
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
/** Boolean guard derived from the same validation path as `parseExemplar`. */
|
|
233
|
+
export function isExemplar(raw) {
|
|
234
|
+
try {
|
|
235
|
+
parseExemplar(raw);
|
|
236
|
+
return true;
|
|
237
|
+
}
|
|
238
|
+
catch {
|
|
239
|
+
return false;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Serialise one `Exemplar` to a stable, human-reviewable JSON string (one record
|
|
244
|
+
* per corpus file). Round-trips through `parseExemplar(JSON.parse(...))`.
|
|
245
|
+
*/
|
|
246
|
+
export function serializeExemplar(e) {
|
|
247
|
+
return `${JSON.stringify(e, null, 2)}\n`;
|
|
248
|
+
}
|
|
249
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../../../src/design/audit/reference/corpus/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAeH,MAAM,UAAU,GAAwB;IACtC,WAAW;IACX,UAAU;IACV,WAAW;IACX,MAAM;IACN,WAAW;IACX,QAAQ;IACR,MAAM;IACN,MAAM;IACN,SAAS;IACT,SAAS;CACV,CAAA;AACD,MAAM,WAAW,GAAyB,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAA;AAC/G,MAAM,SAAS,GAAuB,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;AACrE,MAAM,UAAU,GAAmC,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;AACrG,MAAM,UAAU,GAAmC,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,CAAA;AAEzF,MAAM,QAAQ,GAAG,CAAC,CAAU,EAAgC,EAAE,CAC5D,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;AAC1D,MAAM,QAAQ,GAAG,CAAC,CAAU,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAA;AACnE,MAAM,SAAS,GAAG,CAAC,CAAU,EAAgB,EAAE,CAAC,OAAO,CAAC,KAAK,SAAS,CAAA;AACtE,MAAM,cAAc,GAAG,CAAC,CAAU,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;AAC/F,MAAM,aAAa,GAAG,CAAC,CAAU,EAAiB,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;AAC1F,MAAM,mBAAmB,GAAG,CAAC,CAAU,EAAiB,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAA;AAEtG,4DAA4D;AAC5D,SAAS,IAAI,CAAC,GAAW;IACvB,MAAM,IAAI,KAAK,CAAC,qBAAqB,GAAG,EAAE,CAAC,CAAA;AAC7C,CAAC;AAED,SAAS,QAAQ,CAAC,CAAU,EAAE,KAAa;IACzC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QAAE,IAAI,CAAC,GAAG,KAAK,oBAAoB,CAAC,CAAA;IACpD,OAAO,CAAC,CAAA;AACV,CAAC;AAED,SAAS,QAAQ,CAAC,CAAU,EAAE,KAAa;IACzC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QAAE,IAAI,CAAC,GAAG,KAAK,mBAAmB,CAAC,CAAA;IACnD,OAAO,CAAC,CAAA;AACV,CAAC;AAED,SAAS,gBAAgB,CAAC,CAAU,EAAE,KAAa;IACjD,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;IAC5B,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,IAAI,CAAC,GAAG,KAAK,oBAAoB,CAAC,CAAA;IACtD,OAAO,CAAC,CAAA;AACV,CAAC;AAED,SAAS,cAAc,CAAC,CAAU,EAAE,KAAa;IAC/C,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;QAAE,IAAI,CAAC,GAAG,KAAK,0BAA0B,CAAC,CAAA;IAChE,OAAO,CAAC,CAAA;AACV,CAAC;AAED,SAAS,MAAM,CAAmB,CAAU,EAAE,OAAqB,EAAE,KAAa;IAChF,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAM,CAAC;QAAE,IAAI,CAAC,GAAG,KAAK,mBAAmB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACpG,OAAO,CAAM,CAAA;AACf,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAY,EAAE,KAAa;IACpD,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IAC9B,OAAO;QACL,UAAU,EAAE,cAAc,CAAC,CAAC,CAAC,UAAU,EAAE,GAAG,KAAK,aAAa,CAAC;QAC/D,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,KAAK,SAAS,CAAC;QACnD,UAAU,EAAE,cAAc,CAAC,CAAC,CAAC,UAAU,EAAE,GAAG,KAAK,aAAa,CAAC;QAC/D,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,KAAK,SAAS,CAAC;QAC7C,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,KAAK,OAAO,CAAC;KAClD,CAAA;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAY,EAAE,KAAa;IACpD,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IAC9B,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,OAAO,CAAC;QAAE,IAAI,CAAC,GAAG,KAAK,iCAAiC,CAAC,CAAA;IACpF,OAAO;QACL,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,KAAK,SAAS,CAAC;QAC7C,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,KAAK,OAAO,CAAC;QACjD,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;KACxB,CAAA;AACH,CAAC;AAED,SAAS,SAAS,CAAC,CAAU,EAAE,KAAa;IAC1C,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QAAE,IAAI,CAAC,GAAG,KAAK,oBAAoB,CAAC,CAAA;IACrD,OAAO,CAAC,CAAA;AACV,CAAC;AAED;;;;;GAKG;AACH,SAAS,qBAAqB,CAAC,GAAY;IACzC,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAA;IAC5C,MAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,2BAA2B,CAAC,CAAA;IACnE,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,IAAI,CAAC,wDAAwD,CAAC,CAAA;IACpG,OAAO;QACL,eAAe,EAAE,cAAc,CAAC,CAAC,CAAC,eAAe,EAAE,mCAAmC,CAAC;QACvF,OAAO,EAAE;YACP,KAAK,EAAE,cAAc,CAAC,UAAU,CAAC,KAAK,EAAE,iCAAiC,CAAC;YAC1E,KAAK,EAAE,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC;SAC7B;QACD,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC,WAAW,EAAE,+BAA+B,CAAC;QAC3E,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,QAAQ,EAAE,4BAA4B,CAAC;QAClE,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC,YAAY,EAAE,gCAAgC,CAAC;KAC1E,CAAA;AACH,CAAC;AAED,SAAS,YAAY,CAAC,GAAY;IAChC,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IAE9B,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;IAC5C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,IAAI,CAAC,iCAAiC,CAAC,CAAA;IAC1E,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;QAAE,IAAI,CAAC,oCAAoC,CAAC,CAAA;IAChF,MAAM,IAAI,GAAsB;QAC9B,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,EAAE,kBAAkB,CAAC,GAAG,CAAC,CAAC;QAChF,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,EAAE,qBAAqB,CAAC,GAAG,CAAC,CAAC;KAC1F,CAAA;IACD,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS;QAAE,IAAI,CAAC,KAAK,GAAG,cAAc,CAAC,OAAO,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAA;IAE7F,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,EAAE,WAAW,CAAC,CAAA;IAC/C,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAA;IAC5D,MAAM,KAAK,GAAG,EAAiC,CAAA;IAC/C,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAA;QAC1B,IAAI,GAAG,KAAK,SAAS,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;YAAE,IAAI,CAAC,mBAAmB,IAAI,yBAAyB,CAAC,CAAA;QACpG,KAAK,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IAClD,CAAC;IACD,MAAM,KAAK,GAAuB,EAAE,KAAK,EAAE,CAAA;IAC3C,IAAI,QAAQ,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;QACzC,KAAK,CAAC,aAAa,GAAG,cAAc,CAAC,QAAQ,CAAC,aAAa,EAAE,yBAAyB,CAAC,CAAA;IACzF,CAAC;IAED,MAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,aAAa,CAAC,CAAA;IACrD,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,IAAI,CAAC,0CAA0C,CAAC,CAAA;IAC5F,MAAM,OAAO,GAAyB;QACpC,KAAK,EAAE,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC;QAC5B,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,SAAS,EAAE,qBAAqB,CAAC;KACtE,CAAA;IACD,IAAI,UAAU,CAAC,QAAQ,KAAK,SAAS;QAAE,OAAO,CAAC,QAAQ,GAAG,cAAc,CAAC,UAAU,CAAC,QAAQ,EAAE,sBAAsB,CAAC,CAAA;IAErH,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,EAAE,WAAW,CAAC,CAAA;IAC/C,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,IAAI,CAAC,wCAAwC,CAAC,CAAA;IAExF,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IAClD,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,WAAW,CAAC;QAAE,IAAI,CAAC,+CAA+C,CAAC,CAAA;IACtG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC;QAAE,IAAI,CAAC,2CAA2C,CAAC,CAAA;IACxF,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,SAAS,CAAC;QAAE,IAAI,CAAC,6CAA6C,CAAC,CAAA;IAC5F,MAAM,MAAM,GAAwB;QAClC,WAAW,EAAE,CAAC,GAAG,SAAS,CAAC,WAAW,CAAC;QACvC,OAAO,EAAE,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC;QAC/B,SAAS,EAAE,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC;KACpC,CAAA;IACD,IAAI,SAAS,CAAC,MAAM,KAAK,SAAS;QAAE,MAAM,CAAC,MAAM,GAAG,qBAAqB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;IAE3F,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IAClD,MAAM,MAAM,GAAwB;QAClC,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,EAAE,oBAAoB,CAAC;QACnE,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC,SAAS,EAAE,sBAAsB,CAAC;KACjE,CAAA;IACD,IAAI,SAAS,CAAC,OAAO,KAAK,SAAS;QAAE,MAAM,CAAC,OAAO,GAAG,cAAc,CAAC,SAAS,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAA;IAC7G,IAAI,SAAS,CAAC,YAAY,KAAK,SAAS;QACtC,MAAM,CAAC,YAAY,GAAG,cAAc,CAAC,SAAS,CAAC,YAAY,EAAE,yBAAyB,CAAC,CAAA;IACzF,IAAI,SAAS,CAAC,eAAe,KAAK,SAAS;QACzC,MAAM,CAAC,eAAe,GAAG,cAAc,CAAC,SAAS,CAAC,eAAe,EAAE,4BAA4B,CAAC,CAAA;IAElG,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAA;IACxD,MAAM,UAAU,GAAwB;QACtC,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC,OAAO,EAAE,wBAAwB,CAAC;QAClE,MAAM,EAAE,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,uBAAuB,CAAC;QAC/D,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,KAAK,EAAE,sBAAsB,CAAC;QAC5D,GAAG,EAAE,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,oBAAoB,CAAC;KACvD,CAAA;IAED,MAAM,GAAG,GAAc;QACrB,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,CAAC;QAC/B,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC,UAAU,EAAE,gBAAgB,CAAC;QACpD,IAAI;QACJ,KAAK;QACL,OAAO;QACP,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,EAAE;QACrC,MAAM;QACN,MAAM;QACN,UAAU;KACX,CAAA;IAED,IAAI,CAAC,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,aAAa,CAAC,CAAA;QACjD,MAAM,OAAO,GAAsC,EAAE,CAAA;QACrD,IAAI,MAAM,CAAC,kBAAkB,KAAK,SAAS;YACzC,OAAO,CAAC,kBAAkB,GAAG,cAAc,CAAC,MAAM,CAAC,kBAAkB,EAAE,gCAAgC,CAAC,CAAA;QAC1G,IAAI,MAAM,CAAC,iBAAiB,KAAK,SAAS;YACxC,OAAO,CAAC,iBAAiB,GAAG,cAAc,CAAC,MAAM,CAAC,iBAAiB,EAAE,+BAA+B,CAAC,CAAA;QACvG,GAAG,CAAC,OAAO,GAAG,OAAO,CAAA;IACvB,CAAC;IAED,OAAO,GAAG,CAAA;AACZ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,GAAY;IACxC,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC,CAAA;IACnC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9E,IAAI,CAAC,yDAAyD,CAAC,CAAA;IACjE,CAAC;IACD,OAAO;QACL,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC;QAChC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAmB;QAC9D,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC;QAC3B,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAC;QACpD,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE,aAAa,CAAC;QACnD,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC;QACxB,cAAc,EAAE,QAAQ,CAAC,CAAC,CAAC,cAAc,EAAE,gBAAgB,CAAC;QAC5D,eAAe,EAAE,CAAC,GAAG,CAAC,CAAC,eAAe,CAAC;QACvC,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC,SAAS,EAAE,WAAW,CAAC;KACpD,CAAA;AACH,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,UAAU,CAAC,GAAY;IACrC,IAAI,CAAC;QACH,aAAa,CAAC,GAAG,CAAC,CAAA;QAClB,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,CAAW;IAC3C,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAA;AAC1C,CAAC"}
|