@tangle-network/browser-agent-driver 0.33.3 → 0.34.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/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 +728 -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 +5 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +8 -0
- 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 +272 -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 +94 -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 +180 -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 +124 -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 +111 -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 +25 -0
- 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 +6 -2
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* File-backed corpus store — the ONLY module that touches the corpus directory.
|
|
3
|
+
* Implements the full `CorpusStore` (`CorpusReader` + `CorpusWriter`) as a
|
|
4
|
+
* JSON-record directory: one `<id>.json` exemplar per file plus a `screenshots/`
|
|
5
|
+
* sidecar. The audit hot path receives only the `CorpusReader` half (so it can
|
|
6
|
+
* never reach `upsert`/`saveScreenshot`); offline `corpus/build` holds the writer.
|
|
7
|
+
*
|
|
8
|
+
* Fail-closed by construction:
|
|
9
|
+
* - a missing corpus dir loads as an EMPTY corpus, never an error or a fabricated
|
|
10
|
+
* row, and `get` returns `null` on a miss;
|
|
11
|
+
* - a record that fails `parseExemplar` (corrupt / hand-edited / foreign) is
|
|
12
|
+
* skipped on load rather than poisoning the whole corpus — one bad row never
|
|
13
|
+
* nukes retrieval, and nothing is ever invented to fill the gap;
|
|
14
|
+
* - writes are atomic-ish (temp file + `rename`) and validate through the schema
|
|
15
|
+
* BEFORE landing, so a malformed exemplar can never reach disk;
|
|
16
|
+
* - ids are constrained to a filename-safe charset, so neither `get` nor a write
|
|
17
|
+
* can escape the corpus dir via path traversal.
|
|
18
|
+
*/
|
|
19
|
+
import type { CorpusStore } from '../contracts.js';
|
|
20
|
+
/**
|
|
21
|
+
* Build a file-backed `CorpusStore` rooted at `dir`. The returned object's
|
|
22
|
+
* `CorpusReader` half is what the engine consumes; the `CorpusWriter` half is for
|
|
23
|
+
* the offline authoring path only.
|
|
24
|
+
*/
|
|
25
|
+
export declare function createFileCorpusStore(dir: string): CorpusStore;
|
|
26
|
+
//# sourceMappingURL=store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../../../src/design/audit/reference/corpus/store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAY,MAAM,iBAAiB,CAAA;AAW5D;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAoE9D"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* File-backed corpus store — the ONLY module that touches the corpus directory.
|
|
3
|
+
* Implements the full `CorpusStore` (`CorpusReader` + `CorpusWriter`) as a
|
|
4
|
+
* JSON-record directory: one `<id>.json` exemplar per file plus a `screenshots/`
|
|
5
|
+
* sidecar. The audit hot path receives only the `CorpusReader` half (so it can
|
|
6
|
+
* never reach `upsert`/`saveScreenshot`); offline `corpus/build` holds the writer.
|
|
7
|
+
*
|
|
8
|
+
* Fail-closed by construction:
|
|
9
|
+
* - a missing corpus dir loads as an EMPTY corpus, never an error or a fabricated
|
|
10
|
+
* row, and `get` returns `null` on a miss;
|
|
11
|
+
* - a record that fails `parseExemplar` (corrupt / hand-edited / foreign) is
|
|
12
|
+
* skipped on load rather than poisoning the whole corpus — one bad row never
|
|
13
|
+
* nukes retrieval, and nothing is ever invented to fill the gap;
|
|
14
|
+
* - writes are atomic-ish (temp file + `rename`) and validate through the schema
|
|
15
|
+
* BEFORE landing, so a malformed exemplar can never reach disk;
|
|
16
|
+
* - ids are constrained to a filename-safe charset, so neither `get` nor a write
|
|
17
|
+
* can escape the corpus dir via path traversal.
|
|
18
|
+
*/
|
|
19
|
+
import { promises as fs } from 'node:fs';
|
|
20
|
+
import path from 'node:path';
|
|
21
|
+
import { parseExemplar, serializeExemplar } from './schema.js';
|
|
22
|
+
const RECORD_EXT = '.json';
|
|
23
|
+
const SCREENSHOT_DIR = 'screenshots';
|
|
24
|
+
// Exemplar ids are slugs (`[a-z0-9-]`); this guard keeps `get`/write inside the
|
|
25
|
+
// corpus dir even when handed a hostile id, blocking `..`/separator traversal.
|
|
26
|
+
const SAFE_ID = /^[A-Za-z0-9_-]+$/;
|
|
27
|
+
const isSafeId = (id) => SAFE_ID.test(id);
|
|
28
|
+
/**
|
|
29
|
+
* Build a file-backed `CorpusStore` rooted at `dir`. The returned object's
|
|
30
|
+
* `CorpusReader` half is what the engine consumes; the `CorpusWriter` half is for
|
|
31
|
+
* the offline authoring path only.
|
|
32
|
+
*/
|
|
33
|
+
export function createFileCorpusStore(dir) {
|
|
34
|
+
const recordPath = (id) => path.join(dir, `${id}${RECORD_EXT}`);
|
|
35
|
+
async function readRecord(file) {
|
|
36
|
+
let text;
|
|
37
|
+
try {
|
|
38
|
+
text = await fs.readFile(file, 'utf8');
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
try {
|
|
44
|
+
return parseExemplar(JSON.parse(text));
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
// Corrupt / foreign record — skip it rather than fail the whole load.
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return {
|
|
52
|
+
async load() {
|
|
53
|
+
let entries;
|
|
54
|
+
try {
|
|
55
|
+
entries = await fs.readdir(dir);
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
return [];
|
|
59
|
+
}
|
|
60
|
+
const out = [];
|
|
61
|
+
// Sort by filename for a deterministic load order across machines.
|
|
62
|
+
for (const name of entries.filter((n) => n.endsWith(RECORD_EXT)).sort()) {
|
|
63
|
+
const exemplar = await readRecord(path.join(dir, name));
|
|
64
|
+
if (exemplar)
|
|
65
|
+
out.push(exemplar);
|
|
66
|
+
}
|
|
67
|
+
return out;
|
|
68
|
+
},
|
|
69
|
+
async get(id) {
|
|
70
|
+
if (!isSafeId(id))
|
|
71
|
+
return null;
|
|
72
|
+
return readRecord(recordPath(id));
|
|
73
|
+
},
|
|
74
|
+
resolveScreenshot(exemplar) {
|
|
75
|
+
const p = exemplar.screenshotPath;
|
|
76
|
+
if (!p)
|
|
77
|
+
return '';
|
|
78
|
+
return path.isAbsolute(p) ? p : path.resolve(dir, p);
|
|
79
|
+
},
|
|
80
|
+
async upsert(exemplar) {
|
|
81
|
+
// Validate + normalise at the IO boundary: malformed exemplars never land.
|
|
82
|
+
const valid = parseExemplar(exemplar);
|
|
83
|
+
if (!isSafeId(valid.id))
|
|
84
|
+
throw new Error(`corpus upsert: unsafe exemplar id '${valid.id}'`);
|
|
85
|
+
await fs.mkdir(dir, { recursive: true });
|
|
86
|
+
const final = recordPath(valid.id);
|
|
87
|
+
const tmp = `${final}.tmp-${process.pid}-${Date.now()}`;
|
|
88
|
+
await fs.writeFile(tmp, serializeExemplar(valid), 'utf8');
|
|
89
|
+
await fs.rename(tmp, final);
|
|
90
|
+
},
|
|
91
|
+
async saveScreenshot(id, png) {
|
|
92
|
+
if (!isSafeId(id))
|
|
93
|
+
throw new Error(`corpus saveScreenshot: unsafe exemplar id '${id}'`);
|
|
94
|
+
const rel = path.join(SCREENSHOT_DIR, `${id}.png`);
|
|
95
|
+
const abs = path.join(dir, rel);
|
|
96
|
+
await fs.mkdir(path.dirname(abs), { recursive: true });
|
|
97
|
+
await fs.writeFile(abs, png);
|
|
98
|
+
// Return the corpus-relative path so it stores portably in the exemplar
|
|
99
|
+
// record; `resolveScreenshot` turns it back into an absolute path.
|
|
100
|
+
return rel;
|
|
101
|
+
},
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../../../../src/design/audit/reference/corpus/store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Structural delta between two `DesignDNA`s — PURE, at DNA altitude only.
|
|
3
|
+
*
|
|
4
|
+
* `dnaDelta(current, target)` describes the transformation FROM the audited page
|
|
5
|
+
* (`current`) TO a reference/winner (`target`): what the target adds, drops or
|
|
6
|
+
* reshapes relative to the page. It diffs ONLY normalised `DesignDNA` fields
|
|
7
|
+
* (colour roles, type scale, spacing rhythm, component economy) — it never diffs
|
|
8
|
+
* raw `DesignTokens` (a different altitude owned by `compare.ts`). The result
|
|
9
|
+
* grounds judge feedback and mints DNA-gap findings.
|
|
10
|
+
*
|
|
11
|
+
* No IO, no LLM; identical inputs always yield a deeply-equal delta.
|
|
12
|
+
*/
|
|
13
|
+
import type { DesignDNA, DnaDelta } from '../contracts.js';
|
|
14
|
+
/**
|
|
15
|
+
* Compute the DNA-altitude delta from `current` (audited page) to `target`
|
|
16
|
+
* (reference/winner). Component deltas are signed `target − current`: a NEGATIVE
|
|
17
|
+
* value means the current page uses MORE of that pattern than the reference
|
|
18
|
+
* (a consolidation opportunity); positive means fewer.
|
|
19
|
+
*/
|
|
20
|
+
export declare function dnaDelta(current: DesignDNA, target: DesignDNA): DnaDelta;
|
|
21
|
+
//# sourceMappingURL=delta.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delta.d.ts","sourceRoot":"","sources":["../../../../../src/design/audit/reference/dna/delta.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAa,MAAM,iBAAiB,CAAA;AAkFrE;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,QAAQ,CAmBxE"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Structural delta between two `DesignDNA`s — PURE, at DNA altitude only.
|
|
3
|
+
*
|
|
4
|
+
* `dnaDelta(current, target)` describes the transformation FROM the audited page
|
|
5
|
+
* (`current`) TO a reference/winner (`target`): what the target adds, drops or
|
|
6
|
+
* reshapes relative to the page. It diffs ONLY normalised `DesignDNA` fields
|
|
7
|
+
* (colour roles, type scale, spacing rhythm, component economy) — it never diffs
|
|
8
|
+
* raw `DesignTokens` (a different altitude owned by `compare.ts`). The result
|
|
9
|
+
* grounds judge feedback and mints DNA-gap findings.
|
|
10
|
+
*
|
|
11
|
+
* No IO, no LLM; identical inputs always yield a deeply-equal delta.
|
|
12
|
+
*/
|
|
13
|
+
const round2 = (n) => Math.round(n * 100) / 100;
|
|
14
|
+
const COLOR_ROLE_ORDER = ['primary', 'secondary', 'accent', 'neutral', 'background', 'border'];
|
|
15
|
+
/** A colour role is "present" when it carries at least one hex. */
|
|
16
|
+
function presentRoles(dna) {
|
|
17
|
+
const set = new Set();
|
|
18
|
+
for (const role of COLOR_ROLE_ORDER) {
|
|
19
|
+
if (dna.color.roles[role].length > 0)
|
|
20
|
+
set.add(role);
|
|
21
|
+
}
|
|
22
|
+
return set;
|
|
23
|
+
}
|
|
24
|
+
/** Whether two role hex sets differ, order-independent. */
|
|
25
|
+
function hexSetChanged(a, b) {
|
|
26
|
+
if (a.length !== b.length)
|
|
27
|
+
return true;
|
|
28
|
+
const sb = new Set(b);
|
|
29
|
+
return a.some((hex) => !sb.has(hex));
|
|
30
|
+
}
|
|
31
|
+
function diffColor(current, target) {
|
|
32
|
+
const cur = presentRoles(current);
|
|
33
|
+
const tgt = presentRoles(target);
|
|
34
|
+
const added = [];
|
|
35
|
+
const removed = [];
|
|
36
|
+
const changed = [];
|
|
37
|
+
for (const role of COLOR_ROLE_ORDER) {
|
|
38
|
+
const inCur = cur.has(role);
|
|
39
|
+
const inTgt = tgt.has(role);
|
|
40
|
+
if (inTgt && !inCur)
|
|
41
|
+
added.push(role);
|
|
42
|
+
else if (inCur && !inTgt)
|
|
43
|
+
removed.push(role);
|
|
44
|
+
else if (inCur && inTgt && hexSetChanged(current.color.roles[role], target.color.roles[role]))
|
|
45
|
+
changed.push(role);
|
|
46
|
+
}
|
|
47
|
+
return { added, removed, changed };
|
|
48
|
+
}
|
|
49
|
+
function diffType(current, target) {
|
|
50
|
+
const curSizes = new Set(current.type.steps.map((s) => s.fontSizePx));
|
|
51
|
+
const tgtSizes = new Set(target.type.steps.map((s) => s.fontSizePx));
|
|
52
|
+
let stepsAdded = 0;
|
|
53
|
+
let stepsRemoved = 0;
|
|
54
|
+
for (const size of tgtSizes)
|
|
55
|
+
if (!curSizes.has(size))
|
|
56
|
+
stepsAdded++;
|
|
57
|
+
for (const size of curSizes)
|
|
58
|
+
if (!tgtSizes.has(size))
|
|
59
|
+
stepsRemoved++;
|
|
60
|
+
let ratioDelta;
|
|
61
|
+
if (current.type.ratio !== undefined && target.type.ratio !== undefined) {
|
|
62
|
+
const d = round2(target.type.ratio - current.type.ratio);
|
|
63
|
+
ratioDelta = Math.abs(d) < 0.005 ? undefined : d;
|
|
64
|
+
}
|
|
65
|
+
return { stepsAdded, stepsRemoved, ratioDelta };
|
|
66
|
+
}
|
|
67
|
+
function buildSummary(delta) {
|
|
68
|
+
const parts = [];
|
|
69
|
+
if (delta.color.added.length)
|
|
70
|
+
parts.push(`+${delta.color.added.length} colour role(s) (${delta.color.added.join(', ')})`);
|
|
71
|
+
if (delta.color.removed.length)
|
|
72
|
+
parts.push(`−${delta.color.removed.length} colour role(s) (${delta.color.removed.join(', ')})`);
|
|
73
|
+
if (delta.color.changed.length)
|
|
74
|
+
parts.push(`recoloured ${delta.color.changed.join(', ')}`);
|
|
75
|
+
const stepBits = [];
|
|
76
|
+
if (delta.type.stepsAdded)
|
|
77
|
+
stepBits.push(`+${delta.type.stepsAdded}`);
|
|
78
|
+
if (delta.type.stepsRemoved)
|
|
79
|
+
stepBits.push(`−${delta.type.stepsRemoved}`);
|
|
80
|
+
if (stepBits.length)
|
|
81
|
+
parts.push(`type scale ${stepBits.join('/')} step(s)`);
|
|
82
|
+
if (delta.type.ratioDelta !== undefined) {
|
|
83
|
+
parts.push(`scale ratio ${delta.type.ratioDelta > 0 ? '+' : ''}${delta.type.ratioDelta}`);
|
|
84
|
+
}
|
|
85
|
+
if (delta.spacing.baseUnitFrom !== delta.spacing.baseUnitTo) {
|
|
86
|
+
parts.push(`grid ${delta.spacing.baseUnitFrom ?? 'none'}→${delta.spacing.baseUnitTo ?? 'none'}px`);
|
|
87
|
+
}
|
|
88
|
+
if (delta.spacing.densityChanged)
|
|
89
|
+
parts.push('spacing density shift');
|
|
90
|
+
const comp = delta.components;
|
|
91
|
+
const compBits = [];
|
|
92
|
+
for (const [kind, n] of Object.entries(comp)) {
|
|
93
|
+
if (n !== 0)
|
|
94
|
+
compBits.push(`${kind} ${n > 0 ? '+' : ''}${n}`);
|
|
95
|
+
}
|
|
96
|
+
if (compBits.length)
|
|
97
|
+
parts.push(`components ${compBits.join(', ')}`);
|
|
98
|
+
return parts.length ? parts.join('; ') : 'no structural difference';
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Compute the DNA-altitude delta from `current` (audited page) to `target`
|
|
102
|
+
* (reference/winner). Component deltas are signed `target − current`: a NEGATIVE
|
|
103
|
+
* value means the current page uses MORE of that pattern than the reference
|
|
104
|
+
* (a consolidation opportunity); positive means fewer.
|
|
105
|
+
*/
|
|
106
|
+
export function dnaDelta(current, target) {
|
|
107
|
+
const delta = {
|
|
108
|
+
color: diffColor(current, target),
|
|
109
|
+
type: diffType(current, target),
|
|
110
|
+
spacing: {
|
|
111
|
+
baseUnitFrom: current.spacing.baseUnit,
|
|
112
|
+
baseUnitTo: target.spacing.baseUnit,
|
|
113
|
+
densityChanged: current.spacing.density !== target.spacing.density,
|
|
114
|
+
},
|
|
115
|
+
components: {
|
|
116
|
+
buttons: target.components.buttons - current.components.buttons,
|
|
117
|
+
inputs: target.components.inputs - current.components.inputs,
|
|
118
|
+
cards: target.components.cards - current.components.cards,
|
|
119
|
+
nav: target.components.nav - current.components.nav,
|
|
120
|
+
},
|
|
121
|
+
summary: '',
|
|
122
|
+
};
|
|
123
|
+
delta.summary = buildSummary(delta);
|
|
124
|
+
return delta;
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=delta.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delta.js","sourceRoot":"","sources":["../../../../../src/design/audit/reference/dna/delta.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Design-DNA derivation — the PURE core of the reference engine's FOUNDATION.
|
|
3
|
+
*
|
|
4
|
+
* `toDesignDNA` folds an already-extracted `DesignTokens` record (+ optional
|
|
5
|
+
* deterministic `MeasurementBundle`) into the normalised, browser-free
|
|
6
|
+
* `DesignDNA` identity. It performs NO IO, NO LLM, NO browser work and is fully
|
|
7
|
+
* deterministic, so it unit-tests on static token fixtures alone.
|
|
8
|
+
*
|
|
9
|
+
* Altitude discipline (per ARCHITECTURE.md §0): this is a LOSSY normalisation of
|
|
10
|
+
* tokens. It CARRIES THROUGH the already-computed `ColorToken.cluster` and
|
|
11
|
+
* `ViewportTokens.gridBaseUnit` rather than re-clustering colours or re-detecting
|
|
12
|
+
* a grid — those decisions belong to the token extractor, not here.
|
|
13
|
+
*/
|
|
14
|
+
import type { DesignTokens, MeasurementBundle, DesignDNA, RawScrollCapture } from '../contracts.js';
|
|
15
|
+
/**
|
|
16
|
+
* Fold a `DesignTokens` record (+ optional measurements + optional live
|
|
17
|
+
* `RawScrollCapture`) into a `DesignDNA`. Pure and deterministic: identical
|
|
18
|
+
* inputs always yield an identical DNA. `scroll` is attached as `motion.scroll`
|
|
19
|
+
* only when supplied — the browser layer captures it; this fold never observes a
|
|
20
|
+
* page.
|
|
21
|
+
*/
|
|
22
|
+
export declare function toDesignDNA(tokens: DesignTokens, measurements?: MeasurementBundle, scroll?: RawScrollCapture): DesignDNA;
|
|
23
|
+
/**
|
|
24
|
+
* A budget-bounded, prompt-ready summary of a `DesignDNA`. Deterministic and
|
|
25
|
+
* IO-free; truncates to `maxChars` so an injected reference can never blow the
|
|
26
|
+
* generation/judge token budget.
|
|
27
|
+
*/
|
|
28
|
+
export declare function summarizeDNA(dna: DesignDNA, opts?: {
|
|
29
|
+
maxChars?: number;
|
|
30
|
+
}): string;
|
|
31
|
+
//# sourceMappingURL=derive.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"derive.d.ts","sourceRoot":"","sources":["../../../../../src/design/audit/reference/dna/derive.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EACV,YAAY,EAEZ,iBAAiB,EACjB,SAAS,EAOT,gBAAgB,EACjB,MAAM,iBAAiB,CAAA;AA+NxB;;;;;;GAMG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,YAAY,EACpB,YAAY,CAAC,EAAE,iBAAiB,EAChC,MAAM,CAAC,EAAE,gBAAgB,GACxB,SAAS,CAyFX;AAiBD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,MAAM,CAyBrF"}
|