@tangle-network/browser-agent-driver 0.33.2 → 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 +7 -3
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Engine budget accounting — the PURE home for all concurrency + judge-cost math.
|
|
3
|
+
*
|
|
4
|
+
* `planJudgeBudget` decides how many pairwise comparisons each leg can afford
|
|
5
|
+
* under an `EngineBudget`, and `mapWithConcurrency` runs independent async work
|
|
6
|
+
* with a bounded in-flight pool. Both are deterministic and IO/LLM-free so the
|
|
7
|
+
* orchestrator and the adapters stay thin — no module re-derives "how many calls
|
|
8
|
+
* can we afford" or hand-rolls a worker pool.
|
|
9
|
+
*
|
|
10
|
+
* Cost model (the single invariant every consumer relies on): one pairwise
|
|
11
|
+
* comparison is judged in BOTH slot orders (A/B then B/A) to debias position, so
|
|
12
|
+
* each comparison costs `2` judge calls per repetition. The total judge calls a
|
|
13
|
+
* plan implies is therefore:
|
|
14
|
+
*
|
|
15
|
+
* (directionPairs + qualityPairs) × 2 × reps ≤ budget.maxJudgeCalls
|
|
16
|
+
*
|
|
17
|
+
* `qualityPairs` folds in the per-`Dimension` expansion of the absolute quality
|
|
18
|
+
* leg: judging each of the `k` exemplars across `qualityDimensions` dimensions is
|
|
19
|
+
* `k × qualityDimensions` comparisons (or `k` overall-only comparisons when no
|
|
20
|
+
* dimension budget is affordable). When the full dimension set doesn't fit, the
|
|
21
|
+
* plan drops `qualityDimensions` to 0 — an honest overall-only leg — rather than
|
|
22
|
+
* fabricating per-dimension win-rates the budget never paid for.
|
|
23
|
+
*/
|
|
24
|
+
/** Both slot orders are judged per repetition to neutralise position bias. */
|
|
25
|
+
const SLOT_ORDERS_PER_REP = 2;
|
|
26
|
+
/** Unique unordered pairs over `n` items: C(n, 2). */
|
|
27
|
+
function pairCount(n) {
|
|
28
|
+
if (!Number.isFinite(n) || n < 2)
|
|
29
|
+
return 0;
|
|
30
|
+
const k = Math.floor(n);
|
|
31
|
+
return (k * (k - 1)) / 2;
|
|
32
|
+
}
|
|
33
|
+
function nonNegInt(n) {
|
|
34
|
+
if (!Number.isFinite(n) || n <= 0)
|
|
35
|
+
return 0;
|
|
36
|
+
return Math.floor(n);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Plan the judge budget for one engine run.
|
|
40
|
+
*
|
|
41
|
+
* Preference order (richest → leanest), stopping at the first plan that fits
|
|
42
|
+
* `budget.maxJudgeCalls`:
|
|
43
|
+
* 1. full per-`Dimension` quality leg at the configured `judgeReps`,
|
|
44
|
+
* 2. overall-only quality leg at `judgeReps`, then walking reps down to 1.
|
|
45
|
+
* Dimensions are dropped before reps because a dimension-scoped leg is opt-in,
|
|
46
|
+
* whereas repetitions buy debiasing on every comparison. If even the leanest
|
|
47
|
+
* plan overflows (a pathologically small `maxJudgeCalls`), the pairs themselves
|
|
48
|
+
* are capped — direction pairs first (winner selection is the core artifact),
|
|
49
|
+
* then the overall quality pairs — so the returned plan never exceeds budget.
|
|
50
|
+
*/
|
|
51
|
+
export function planJudgeBudget(directionCount, k, budget, dimensions) {
|
|
52
|
+
const maxCalls = nonNegInt(budget.maxJudgeCalls);
|
|
53
|
+
const directionPairs = pairCount(directionCount);
|
|
54
|
+
const kk = nonNegInt(k);
|
|
55
|
+
const requestedDims = nonNegInt(dimensions ?? 0);
|
|
56
|
+
const repsFull = Math.max(1, nonNegInt(budget.judgeReps) || 1);
|
|
57
|
+
const qualityPairsFor = (qDims) => (qDims > 0 ? kk * qDims : kk);
|
|
58
|
+
const callsFor = (qDims, reps) => (directionPairs + qualityPairsFor(qDims)) * SLOT_ORDERS_PER_REP * reps;
|
|
59
|
+
// Candidate plans in strict preference order.
|
|
60
|
+
const candidates = [];
|
|
61
|
+
if (requestedDims > 0)
|
|
62
|
+
candidates.push({ qDims: requestedDims, reps: repsFull });
|
|
63
|
+
for (let reps = repsFull; reps >= 1; reps--)
|
|
64
|
+
candidates.push({ qDims: 0, reps });
|
|
65
|
+
for (const c of candidates) {
|
|
66
|
+
if (callsFor(c.qDims, c.reps) <= maxCalls) {
|
|
67
|
+
return {
|
|
68
|
+
directionPairs,
|
|
69
|
+
qualityPairs: qualityPairsFor(c.qDims),
|
|
70
|
+
reps: c.reps,
|
|
71
|
+
qualityDimensions: c.qDims,
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
// Nothing fits even at reps=1, overall-only: cap the pairs to whatever the
|
|
76
|
+
// budget allows, prioritising the direction (winner-selection) leg.
|
|
77
|
+
const affordablePairs = Math.floor(maxCalls / SLOT_ORDERS_PER_REP);
|
|
78
|
+
const cappedDirectionPairs = Math.min(directionPairs, affordablePairs);
|
|
79
|
+
const cappedQualityPairs = Math.min(kk, affordablePairs - cappedDirectionPairs);
|
|
80
|
+
return {
|
|
81
|
+
directionPairs: cappedDirectionPairs,
|
|
82
|
+
qualityPairs: cappedQualityPairs,
|
|
83
|
+
reps: 1,
|
|
84
|
+
qualityDimensions: 0,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Map `fn` over `items` with at most `n` calls in flight at once, preserving
|
|
89
|
+
* input order in the output. The first rejection propagates (in-flight siblings
|
|
90
|
+
* are not cancelled, mirroring `Promise.all`). A non-positive / non-finite `n`
|
|
91
|
+
* is treated as 1; concurrency never exceeds `items.length`.
|
|
92
|
+
*/
|
|
93
|
+
export async function mapWithConcurrency(items, n, fn) {
|
|
94
|
+
const results = new Array(items.length);
|
|
95
|
+
if (items.length === 0)
|
|
96
|
+
return results;
|
|
97
|
+
const limit = Math.max(1, Math.min(nonNegInt(n) || 1, items.length));
|
|
98
|
+
let next = 0;
|
|
99
|
+
async function worker() {
|
|
100
|
+
for (;;) {
|
|
101
|
+
const i = next++;
|
|
102
|
+
if (i >= items.length)
|
|
103
|
+
return;
|
|
104
|
+
results[i] = await fn(items[i], i);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
await Promise.all(Array.from({ length: limit }, () => worker()));
|
|
108
|
+
return results;
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=budget.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"budget.js","sourceRoot":"","sources":["../../../../../src/design/audit/reference/engine/budget.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The single reference-grounded sequencer — ORCH, no domain logic of its own.
|
|
3
|
+
*
|
|
4
|
+
* `runRedesignCore` threads one page through the locked data flow (ARCHITECTURE
|
|
5
|
+
* §2): extract DNA → embed → retrieve → guard → generate → judge (absolute
|
|
6
|
+
* quality + relative direction legs) → rank → score → assemble artifact →
|
|
7
|
+
* project findings. EVERY decision is delegated to a pure core (`guard`,
|
|
8
|
+
* `budget`, `score-core`, `artifact/*`, `judge/*`, `dna/*`) or an injected
|
|
9
|
+
* boundary on `deps`; this file only orders the stages and shapes the inputs
|
|
10
|
+
* each stage already expects. It imports NO concrete IO/LLM adapter — those are
|
|
11
|
+
* supplied by `engine/wiring` at the composition root and arrive as the narrow
|
|
12
|
+
* `ReferenceEngineDeps` interfaces.
|
|
13
|
+
*
|
|
14
|
+
* Fail-closed, never fake-success:
|
|
15
|
+
* - the `guard` aborts (throws its reason) when there is nothing to ground
|
|
16
|
+
* against, so an ungrounded run can never masquerade as reference-grounded;
|
|
17
|
+
* - a generator that yields zero directions throws rather than emitting an
|
|
18
|
+
* empty artifact;
|
|
19
|
+
* - `buildRedesignArtifact` throws on fabricated provenance.
|
|
20
|
+
*
|
|
21
|
+
* Acquire-once: the core retrieves against the pre-loaded `input.corpus` and
|
|
22
|
+
* NEVER calls `store.load()` — loading the corpus once per run is the
|
|
23
|
+
* entrypoint's job (it protects the ±0.5 reproducibility gate across pages/reps).
|
|
24
|
+
*/
|
|
25
|
+
import type { ReferenceEngineDeps, RedesignCoreInput, RedesignRunResult } from '../contracts.js';
|
|
26
|
+
/**
|
|
27
|
+
* Run one page through the reference-grounded engine. Pure-ish: every impure
|
|
28
|
+
* boundary (browser extract, embed, LLM generate/judge, corpus disk) is reached
|
|
29
|
+
* only through the injected `deps`, so the whole sequencer unit-tests with fakes.
|
|
30
|
+
*/
|
|
31
|
+
export declare function runRedesignCore(deps: ReferenceEngineDeps, input: RedesignCoreInput): Promise<RedesignRunResult>;
|
|
32
|
+
//# sourceMappingURL=core.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../../../src/design/audit/reference/engine/core.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EACV,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EAclB,MAAM,iBAAiB,CAAA;AA0BxB;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,mBAAmB,EACzB,KAAK,EAAE,iBAAiB,GACvB,OAAO,CAAC,iBAAiB,CAAC,CAoI5B"}
|
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The single reference-grounded sequencer — ORCH, no domain logic of its own.
|
|
3
|
+
*
|
|
4
|
+
* `runRedesignCore` threads one page through the locked data flow (ARCHITECTURE
|
|
5
|
+
* §2): extract DNA → embed → retrieve → guard → generate → judge (absolute
|
|
6
|
+
* quality + relative direction legs) → rank → score → assemble artifact →
|
|
7
|
+
* project findings. EVERY decision is delegated to a pure core (`guard`,
|
|
8
|
+
* `budget`, `score-core`, `artifact/*`, `judge/*`, `dna/*`) or an injected
|
|
9
|
+
* boundary on `deps`; this file only orders the stages and shapes the inputs
|
|
10
|
+
* each stage already expects. It imports NO concrete IO/LLM adapter — those are
|
|
11
|
+
* supplied by `engine/wiring` at the composition root and arrive as the narrow
|
|
12
|
+
* `ReferenceEngineDeps` interfaces.
|
|
13
|
+
*
|
|
14
|
+
* Fail-closed, never fake-success:
|
|
15
|
+
* - the `guard` aborts (throws its reason) when there is nothing to ground
|
|
16
|
+
* against, so an ungrounded run can never masquerade as reference-grounded;
|
|
17
|
+
* - a generator that yields zero directions throws rather than emitting an
|
|
18
|
+
* empty artifact;
|
|
19
|
+
* - `buildRedesignArtifact` throws on fabricated provenance.
|
|
20
|
+
*
|
|
21
|
+
* Acquire-once: the core retrieves against the pre-loaded `input.corpus` and
|
|
22
|
+
* NEVER calls `store.load()` — loading the corpus once per run is the
|
|
23
|
+
* entrypoint's job (it protects the ±0.5 reproducibility gate across pages/reps).
|
|
24
|
+
*/
|
|
25
|
+
import { summarizeDNA } from '../dna/derive.js';
|
|
26
|
+
import { aestheticDescriptor, structuralFeatures } from '../dna/descriptor.js';
|
|
27
|
+
import { dnaDelta } from '../dna/delta.js';
|
|
28
|
+
import { DEFAULT_RETRIEVE_WEIGHTS } from '../config.js';
|
|
29
|
+
import { DIMENSIONS } from '../../score-types.js';
|
|
30
|
+
import { planJudgeBudget, mapWithConcurrency } from './budget.js';
|
|
31
|
+
import { decideProceed } from './guard.js';
|
|
32
|
+
import { deriveHeadlineScore, toDimensionScores, toDesignSystemScore } from './score-core.js';
|
|
33
|
+
import { assessPageQuality } from '../judge/quality.js';
|
|
34
|
+
import { judgePair } from '../judge/pairwise.js';
|
|
35
|
+
import { buildRedesignArtifact } from '../artifact/build.js';
|
|
36
|
+
import { directionToFindings } from '../artifact/to-findings.js';
|
|
37
|
+
// Stable id + seed rating for the synthetic exemplar minted from an operator
|
|
38
|
+
// `--reference`. The reference "stands in for (or augments) corpus retrieval"
|
|
39
|
+
// (contracts `ReferenceContext`): wrapping it as a `RetrievalResult` lets the
|
|
40
|
+
// generator ground in it, the absolute quality leg compare against it, and the
|
|
41
|
+
// artifact cite it — through the SAME shapes the corpus path already uses, so no
|
|
42
|
+
// stage needs a reference-only code branch. `1500` mirrors the corpus seed elo
|
|
43
|
+
// (corpus/build.SEED_ELO) without importing that L2 adapter into the core.
|
|
44
|
+
const REFERENCE_EXEMPLAR_ID = 'reference';
|
|
45
|
+
const REFERENCE_SEED_ELO = 1500;
|
|
46
|
+
// Budget for the direction subject's spec dump fed to the judge.
|
|
47
|
+
const DIRECTION_SUMMARY_MAX_CHARS = 1200;
|
|
48
|
+
/**
|
|
49
|
+
* Run one page through the reference-grounded engine. Pure-ish: every impure
|
|
50
|
+
* boundary (browser extract, embed, LLM generate/judge, corpus disk) is reached
|
|
51
|
+
* only through the injected `deps`, so the whole sequencer unit-tests with fakes.
|
|
52
|
+
*/
|
|
53
|
+
export async function runRedesignCore(deps, input) {
|
|
54
|
+
const { config } = input;
|
|
55
|
+
// Token accounting: both LLM legs report their cost. The judge boundary
|
|
56
|
+
// surfaces `RawVerdict.tokensUsed` per comparison — wrap it once so every
|
|
57
|
+
// debias / quality call funnels into one counter. `RedesignGenerator.generate`
|
|
58
|
+
// surfaces the summed generation tokens (folded in below). Adding the two
|
|
59
|
+
// yields a COMPLETE `tokensUsed` (generation + judging), never a judge-only
|
|
60
|
+
// undercount.
|
|
61
|
+
let judgeTokens = 0;
|
|
62
|
+
const judge = {
|
|
63
|
+
id: deps.judge.id,
|
|
64
|
+
async compare(judgeInput) {
|
|
65
|
+
const verdict = await deps.judge.compare(judgeInput);
|
|
66
|
+
judgeTokens += verdict.tokensUsed ?? 0;
|
|
67
|
+
return verdict;
|
|
68
|
+
},
|
|
69
|
+
};
|
|
70
|
+
// 1. Page → DesignDNA (folds in the already-gathered measurement signals).
|
|
71
|
+
const { dna } = await deps.extractor.extract({ url: input.url, measurements: input.measurements });
|
|
72
|
+
// 2. DNA → authoritative aesthetic vector (embedded ONCE) + structural vector.
|
|
73
|
+
const vectors = await deps.embedder.embed([aestheticDescriptor(dna)]);
|
|
74
|
+
const aestheticVector = vectors[0] ?? [];
|
|
75
|
+
const query = {
|
|
76
|
+
pageType: input.classification.type,
|
|
77
|
+
jobToBeDone: input.classification.intent,
|
|
78
|
+
aestheticVector,
|
|
79
|
+
structuralVector: structuralFeatures(dna),
|
|
80
|
+
};
|
|
81
|
+
// 3. Retrieve k nearest exemplars; an operator reference is prepended as an
|
|
82
|
+
// always-included grounding signal that augments the corpus hits.
|
|
83
|
+
const corpusHits = deps.matcher.retrieve(query, input.corpus, DEFAULT_RETRIEVE_WEIGHTS).slice(0, config.k);
|
|
84
|
+
const hits = config.reference
|
|
85
|
+
? [referenceHit(config.reference, input.classification), ...corpusHits]
|
|
86
|
+
: corpusHits;
|
|
87
|
+
// 4. Fail-closed gate: nothing to ground against ⇒ abort with the reason.
|
|
88
|
+
const decision = decideProceed({
|
|
89
|
+
corpusSize: input.corpus.length,
|
|
90
|
+
retrieved: hits.length,
|
|
91
|
+
...(config.reference ? { reference: config.reference } : {}),
|
|
92
|
+
});
|
|
93
|
+
if (!decision.ok)
|
|
94
|
+
throw new Error(decision.reason);
|
|
95
|
+
// 5. Generate the grounded redesign directions (concurrent inside the adapter).
|
|
96
|
+
const ctx = {
|
|
97
|
+
url: input.url,
|
|
98
|
+
classification: input.classification,
|
|
99
|
+
dna,
|
|
100
|
+
measurements: input.measurements,
|
|
101
|
+
};
|
|
102
|
+
const { directions, tokensUsed: generationTokens } = await deps.generator.generate(ctx, hits, {
|
|
103
|
+
count: config.directionCount,
|
|
104
|
+
});
|
|
105
|
+
if (directions.length === 0) {
|
|
106
|
+
throw new Error('reference engine: generator produced no redesign directions (all generation calls failed); ' +
|
|
107
|
+
'refusing to emit an empty reference-grounded artifact');
|
|
108
|
+
}
|
|
109
|
+
// Plan both judging legs from the ACTUAL direction count + retrieved exemplars.
|
|
110
|
+
const plan = planJudgeBudget(directions.length, hits.length, config.budget, DIMENSIONS.length);
|
|
111
|
+
const dimensions = plan.qualityDimensions > 0 ? DIMENSIONS.slice(0, plan.qualityDimensions) : [];
|
|
112
|
+
// 6. Judge legs run with overlap: the absolute quality leg (page vs exemplars)
|
|
113
|
+
// and the relative direction-ranking leg are independent.
|
|
114
|
+
const pageSubject = {
|
|
115
|
+
id: 'page',
|
|
116
|
+
dnaSummary: summarizeDNA(dna),
|
|
117
|
+
...(input.screenshotPath ? { screenshotPath: input.screenshotPath } : {}),
|
|
118
|
+
};
|
|
119
|
+
const exemplarSubjects = hits.map((hit) => exemplarSubject(hit, (e) => deps.store.resolveScreenshot(e)));
|
|
120
|
+
// Bound the quality leg to the exemplar count the budget actually paid for
|
|
121
|
+
// (qualityPairs already folds in the per-dimension expansion).
|
|
122
|
+
const qualityExemplarCount = Math.floor(plan.qualityPairs / Math.max(1, plan.qualityDimensions));
|
|
123
|
+
const qualityExemplars = exemplarSubjects.slice(0, Math.max(0, qualityExemplarCount));
|
|
124
|
+
const [quality, verdicts] = await Promise.all([
|
|
125
|
+
assessPageQuality(judge, pageSubject, qualityExemplars, dimensions.length > 0 ? { dimensions } : {}),
|
|
126
|
+
judgeDirectionLeg(judge, directions, plan.directionPairs, plan.reps, config.budget.concurrency, config.reference),
|
|
127
|
+
]);
|
|
128
|
+
// Complete cost: judge tokens funnelled through the wrapped boundary above plus
|
|
129
|
+
// the generation tokens the generator summed. Both surfaces (artifact + result)
|
|
130
|
+
// report this total so neither undercounts to judge-only.
|
|
131
|
+
const tokensUsed = judgeTokens + generationTokens;
|
|
132
|
+
// 7. Roll the relative verdicts up into a winner.
|
|
133
|
+
const ranking = deps.ranker.rank(directions.map((d) => d.id), verdicts);
|
|
134
|
+
// 8. Single scoring authority: every surface derives from `quality`.
|
|
135
|
+
const headlineScore = deriveHeadlineScore(quality, input.measurements);
|
|
136
|
+
const dimensionScores = toDimensionScores(quality);
|
|
137
|
+
const designSystemScore = toDesignSystemScore(quality);
|
|
138
|
+
// 9. Assemble the rich artifact (winner first) + project the v1 findings.
|
|
139
|
+
const referenceId = config.reference ? REFERENCE_EXEMPLAR_ID : undefined;
|
|
140
|
+
const artifact = buildRedesignArtifact({
|
|
141
|
+
url: input.url,
|
|
142
|
+
directions,
|
|
143
|
+
ranking,
|
|
144
|
+
retrieval: hits,
|
|
145
|
+
verdicts,
|
|
146
|
+
tokensUsed,
|
|
147
|
+
...(referenceId ? { referenceId } : {}),
|
|
148
|
+
});
|
|
149
|
+
const winner = artifact.directions[0];
|
|
150
|
+
if (!winner)
|
|
151
|
+
throw new Error('reference engine: ranking produced no winning direction');
|
|
152
|
+
const gapTarget = resolveGapTarget(config.reference, winner, hits, dna);
|
|
153
|
+
const findings = directionToFindings(winner, dnaDelta(dna, gapTarget), input.measurements, dna, hits);
|
|
154
|
+
return {
|
|
155
|
+
artifact,
|
|
156
|
+
quality,
|
|
157
|
+
headlineScore,
|
|
158
|
+
dimensionScores,
|
|
159
|
+
designSystemScore,
|
|
160
|
+
findings,
|
|
161
|
+
classification: input.classification,
|
|
162
|
+
measurements: input.measurements,
|
|
163
|
+
tokensUsed,
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* The relative leg: judge unique direction pairs (bounded by the budget plan)
|
|
168
|
+
* against the named reference, position-debiased, run with bounded concurrency.
|
|
169
|
+
*/
|
|
170
|
+
async function judgeDirectionLeg(judge, directions, maxPairs, reps, concurrency, reference) {
|
|
171
|
+
const subjects = directions.map(directionSubject);
|
|
172
|
+
const pairs = [];
|
|
173
|
+
for (let i = 0; i < directions.length; i++) {
|
|
174
|
+
for (let j = i + 1; j < directions.length; j++)
|
|
175
|
+
pairs.push([i, j]);
|
|
176
|
+
}
|
|
177
|
+
const planned = pairs.slice(0, Math.max(0, maxPairs));
|
|
178
|
+
return mapWithConcurrency(planned, concurrency, ([i, j]) => judgePair(judge, {
|
|
179
|
+
a: subjects[i],
|
|
180
|
+
b: subjects[j],
|
|
181
|
+
...(reference ? { reference } : {}),
|
|
182
|
+
}, reps));
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* A retrieved exemplar as a judge subject (DNA spec dump, optional screenshot).
|
|
186
|
+
* The corpus stores `screenshotPath` RELATIVE to the corpus dir, so it is resolved
|
|
187
|
+
* to an absolute path through the store before reaching a vision judge that reads
|
|
188
|
+
* it off disk; the reference hit's already-absolute path passes through unchanged.
|
|
189
|
+
* Byte-neutral for the text judge, which never reads the field.
|
|
190
|
+
*/
|
|
191
|
+
function exemplarSubject(hit, resolveScreenshot) {
|
|
192
|
+
const screenshotPath = resolveScreenshot(hit.exemplar);
|
|
193
|
+
return {
|
|
194
|
+
id: hit.exemplar.id,
|
|
195
|
+
dnaSummary: summarizeDNA(hit.exemplar.dna),
|
|
196
|
+
...(screenshotPath ? { screenshotPath } : {}),
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* A generated direction as a judge subject: evocative headline + spec dump. NO
|
|
201
|
+
* `screenshotPath` — directions are unrendered specs, so the direction-ranking
|
|
202
|
+
* leg stays text-only (a vision judge falls back to text here). Future lever:
|
|
203
|
+
* render each direction to a screenshot to make this leg vision-judgeable too.
|
|
204
|
+
*/
|
|
205
|
+
function directionSubject(direction) {
|
|
206
|
+
return {
|
|
207
|
+
id: direction.id,
|
|
208
|
+
directionSummary: `${direction.name} — ${direction.rationale}`,
|
|
209
|
+
dnaSummary: summarizeDirectionSpec(direction),
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* A compact, budget-bounded summary of a direction's PROPOSED systems for the
|
|
214
|
+
* judge. Renders the spec (type/colour/motion/hierarchy) the direction defines —
|
|
215
|
+
* NOT an extracted DNA, which a not-yet-built redesign has none of.
|
|
216
|
+
*/
|
|
217
|
+
function summarizeDirectionSpec(d) {
|
|
218
|
+
const t = d.typeSystem;
|
|
219
|
+
const c = d.colorSystem;
|
|
220
|
+
const m = d.motionSpec;
|
|
221
|
+
const lines = [
|
|
222
|
+
`type: families ${t.families.join(' ') || 'system'}; scale ${t.scalePx.join('/') || 'n/a'}px; ratio ~${t.ratio}×`,
|
|
223
|
+
`colour: primary ${c.primary}${c.accent ? `, accent ${c.accent}` : ''}, background ${c.background}, neutrals ${c.neutrals.join(' ') || 'n/a'}`,
|
|
224
|
+
`motion: ${m.durationsMs.join('/') || 'none'}ms ${m.easings.join(' ') || 'no-easing'}${m.cues.length ? `; ${m.cues.join('; ')}` : ''}`,
|
|
225
|
+
`hierarchy: ${d.hierarchy.join(' → ') || 'n/a'}`,
|
|
226
|
+
];
|
|
227
|
+
const body = lines.join('\n');
|
|
228
|
+
return body.length > DIRECTION_SUMMARY_MAX_CHARS ? `${body.slice(0, DIRECTION_SUMMARY_MAX_CHARS - 1)}…` : body;
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* The DNA the winner is measured AGAINST when minting the gap findings. Prefers
|
|
232
|
+
* the explicit operator reference, then the winner's first grounding exemplar,
|
|
233
|
+
* then the top retrieved exemplar, and finally the page itself (a zero delta) so
|
|
234
|
+
* a finding set is always produced rather than a crash.
|
|
235
|
+
*/
|
|
236
|
+
function resolveGapTarget(reference, winner, hits, current) {
|
|
237
|
+
if (reference)
|
|
238
|
+
return reference.dna;
|
|
239
|
+
const groundedId = winner.groundedInExemplarIds[0];
|
|
240
|
+
const grounded = groundedId ? hits.find((h) => h.exemplar.id === groundedId) : undefined;
|
|
241
|
+
return grounded?.exemplar.dna ?? hits[0]?.exemplar.dna ?? current;
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Wrap an operator reference as a synthetic `RetrievalResult` so it flows through
|
|
245
|
+
* the same generate / judge / artifact stages as a corpus exemplar.
|
|
246
|
+
*/
|
|
247
|
+
function referenceHit(reference, classification) {
|
|
248
|
+
const exemplar = {
|
|
249
|
+
id: REFERENCE_EXEMPLAR_ID,
|
|
250
|
+
source: 'manual',
|
|
251
|
+
url: reference.dna.url,
|
|
252
|
+
pageType: classification.type,
|
|
253
|
+
jobToBeDone: classification.intent,
|
|
254
|
+
dna: reference.dna,
|
|
255
|
+
screenshotPath: reference.screenshotPath ?? '',
|
|
256
|
+
aestheticVector: [],
|
|
257
|
+
eloRating: REFERENCE_SEED_ELO,
|
|
258
|
+
};
|
|
259
|
+
return { exemplar, score: 1, reasons: [`operator reference (${reference.kind})`] };
|
|
260
|
+
}
|
|
261
|
+
//# sourceMappingURL=core.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../../../../src/design/audit/reference/engine/core.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fail-closed proceed/abort guard — the PURE gate that keeps the engine from
|
|
3
|
+
* shipping a default-looking run mislabelled as reference-grounded.
|
|
4
|
+
*
|
|
5
|
+
* A reference-grounded run is only meaningful when it has something concrete to
|
|
6
|
+
* ground against: at least one retrieved exemplar, OR an operator-supplied
|
|
7
|
+
* `--reference`. With neither, `decideProceed` returns an explicit abort reason
|
|
8
|
+
* instead of letting the engine emit an ungrounded artifact that pretends to be
|
|
9
|
+
* reference-grounded. There is no fabricated success path here — an absent
|
|
10
|
+
* signal is treated as a blocker, never silently as "passed".
|
|
11
|
+
*
|
|
12
|
+
* Pure and deterministic: no IO, no LLM, no clock.
|
|
13
|
+
*/
|
|
14
|
+
import type { ReferenceContext } from '../contracts.js';
|
|
15
|
+
/** Inputs to the proceed decision. All counts are post-retrieval. */
|
|
16
|
+
export interface GuardInput {
|
|
17
|
+
/** Number of exemplars loaded into the in-memory corpus for this run. */
|
|
18
|
+
corpusSize: number;
|
|
19
|
+
/** Number of exemplars the matcher actually retrieved for this page. */
|
|
20
|
+
retrieved: number;
|
|
21
|
+
/** Operator-supplied reference, resolved once; stands in for the corpus. */
|
|
22
|
+
reference?: ReferenceContext;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Discriminated result: proceed, or abort with a human-readable reason. The
|
|
26
|
+
* reason is surfaced to the operator and recorded — never swallowed.
|
|
27
|
+
*/
|
|
28
|
+
export type ProceedDecision = {
|
|
29
|
+
ok: true;
|
|
30
|
+
} | {
|
|
31
|
+
ok: false;
|
|
32
|
+
reason: string;
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* Decide whether a reference-grounded run may proceed.
|
|
36
|
+
*
|
|
37
|
+
* An operator reference short-circuits to `ok` (it is itself the grounding
|
|
38
|
+
* target, so an empty corpus is fine). Otherwise both a non-empty corpus AND a
|
|
39
|
+
* non-empty retrieval are required; either being empty is a terminal blocker
|
|
40
|
+
* with a distinct reason so the operator knows which precondition failed.
|
|
41
|
+
*/
|
|
42
|
+
export declare function decideProceed(input: GuardInput): ProceedDecision;
|
|
43
|
+
//# sourceMappingURL=guard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guard.d.ts","sourceRoot":"","sources":["../../../../../src/design/audit/reference/engine/guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAEvD,qEAAqE;AACrE,MAAM,WAAW,UAAU;IACzB,yEAAyE;IACzE,UAAU,EAAE,MAAM,CAAA;IAClB,wEAAwE;IACxE,SAAS,EAAE,MAAM,CAAA;IACjB,4EAA4E;IAC5E,SAAS,CAAC,EAAE,gBAAgB,CAAA;CAC7B;AAED;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AAO1E;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,eAAe,CAoBhE"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fail-closed proceed/abort guard — the PURE gate that keeps the engine from
|
|
3
|
+
* shipping a default-looking run mislabelled as reference-grounded.
|
|
4
|
+
*
|
|
5
|
+
* A reference-grounded run is only meaningful when it has something concrete to
|
|
6
|
+
* ground against: at least one retrieved exemplar, OR an operator-supplied
|
|
7
|
+
* `--reference`. With neither, `decideProceed` returns an explicit abort reason
|
|
8
|
+
* instead of letting the engine emit an ungrounded artifact that pretends to be
|
|
9
|
+
* reference-grounded. There is no fabricated success path here — an absent
|
|
10
|
+
* signal is treated as a blocker, never silently as "passed".
|
|
11
|
+
*
|
|
12
|
+
* Pure and deterministic: no IO, no LLM, no clock.
|
|
13
|
+
*/
|
|
14
|
+
/** A finite, strictly-positive count. Non-finite / negative ⇒ treated as zero. */
|
|
15
|
+
function positive(n) {
|
|
16
|
+
return Number.isFinite(n) && n > 0;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Decide whether a reference-grounded run may proceed.
|
|
20
|
+
*
|
|
21
|
+
* An operator reference short-circuits to `ok` (it is itself the grounding
|
|
22
|
+
* target, so an empty corpus is fine). Otherwise both a non-empty corpus AND a
|
|
23
|
+
* non-empty retrieval are required; either being empty is a terminal blocker
|
|
24
|
+
* with a distinct reason so the operator knows which precondition failed.
|
|
25
|
+
*/
|
|
26
|
+
export function decideProceed(input) {
|
|
27
|
+
if (input.reference)
|
|
28
|
+
return { ok: true };
|
|
29
|
+
if (!positive(input.corpusSize)) {
|
|
30
|
+
return {
|
|
31
|
+
ok: false,
|
|
32
|
+
reason: 'reference-grounded run requires a non-empty exemplar corpus or a --reference; the corpus is empty',
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
if (!positive(input.retrieved)) {
|
|
36
|
+
return {
|
|
37
|
+
ok: false,
|
|
38
|
+
reason: 'reference-grounded run retrieved 0 exemplars for this page type and no --reference was supplied; nothing to ground against',
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
return { ok: true };
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=guard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guard.js","sourceRoot":"","sources":["../../../../../src/design/audit/reference/engine/guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAoBH,kFAAkF;AAClF,SAAS,QAAQ,CAAC,CAAS;IACzB,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACpC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAAC,KAAiB;IAC7C,IAAI,KAAK,CAAC,SAAS;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAA;IAExC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;QAChC,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM,EACJ,mGAAmG;SACtG,CAAA;IACH,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;QAC/B,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM,EACJ,4HAA4H;SAC/H,CAAA;IACH,CAAC;IAED,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAA;AACrB,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scoring core — the SINGLE scoring authority for the reference-grounded engine.
|
|
3
|
+
*
|
|
4
|
+
* Everything the pipeline scores derives from ONE `QualityAssessment` (the
|
|
5
|
+
* absolute leg: the page-under-audit's win-rate vs the retrieved world-class
|
|
6
|
+
* exemplars). This module turns that one assessment into three honest surfaces,
|
|
7
|
+
* eliminating the double-scoring the v1 path risked:
|
|
8
|
+
*
|
|
9
|
+
* - `deriveHeadlineScore` → the 0-10 headline, monotonic in `overallWinRate`,
|
|
10
|
+
* capped when deterministic measurements flag blocking issues (you cannot be
|
|
11
|
+
* world-class with critical a11y/contrast failures).
|
|
12
|
+
* - `toDimensionScores` → the rich 5-`Dimension` `Record<Dimension, DimensionScore>`
|
|
13
|
+
* that IS stage-8's `precomputedScores` hook. Each dimension is scored ONLY
|
|
14
|
+
* from a genuinely judge-resolved per-dimension win-rate; a dimension with no
|
|
15
|
+
* signal is filled at `confidence:'low'` with an explicit "not assessed"
|
|
16
|
+
* summary — never the overall number stamped across dimensions.
|
|
17
|
+
* - `toDesignSystemScore` → the flat 8-axis `DesignSystemScore` back-compat
|
|
18
|
+
* field, an HONESTLY coarse projection of `overallWinRate` (not a second
|
|
19
|
+
* per-axis authority).
|
|
20
|
+
*
|
|
21
|
+
* Pure and deterministic: no IO, no LLM, no clock. Notably does NOT borrow
|
|
22
|
+
* `conservativeScore` — there are no per-pass page scores in this mode, so
|
|
23
|
+
* importing it would be scoring fiction.
|
|
24
|
+
*/
|
|
25
|
+
import type { QualityAssessment, MeasurementBundle, Dimension, DimensionScore, DesignSystemScore } from '../contracts.js';
|
|
26
|
+
/**
|
|
27
|
+
* Derive the 0-10 headline from the absolute win-rate, capped when measurements
|
|
28
|
+
* flag blocking issues. Monotonic non-decreasing in `overallWinRate`: a higher
|
|
29
|
+
* win-rate never yields a lower headline.
|
|
30
|
+
*/
|
|
31
|
+
export declare function deriveHeadlineScore(quality: QualityAssessment, measurements: MeasurementBundle): number;
|
|
32
|
+
/**
|
|
33
|
+
* Map the per-`Dimension` win-rates onto the rich `Record<Dimension, DimensionScore>`
|
|
34
|
+
* stage-8 consumes as `precomputedScores`. Every one of the 5 dimensions is
|
|
35
|
+
* present. Dimensions with a real per-dimension win-rate are scored from it
|
|
36
|
+
* (win-rate → score, comparison count → range + confidence); dimensions with no
|
|
37
|
+
* win-rate are filled as explicit, low-confidence placeholders so the absence of
|
|
38
|
+
* a dimension-scoped leg is honest rather than fabricated.
|
|
39
|
+
*/
|
|
40
|
+
export declare function toDimensionScores(quality: QualityAssessment): Record<Dimension, DimensionScore>;
|
|
41
|
+
/**
|
|
42
|
+
* Project `overallWinRate` onto the flat 8-axis `DesignSystemScore` back-compat
|
|
43
|
+
* field. Every axis carries the same overall-derived 1-10 number — this is an
|
|
44
|
+
* honest coarse projection, NOT a second per-axis scoring authority (the judge
|
|
45
|
+
* resolves the 5 product dimensions, not these 8 design-system axes).
|
|
46
|
+
*/
|
|
47
|
+
export declare function toDesignSystemScore(quality: QualityAssessment): DesignSystemScore;
|
|
48
|
+
//# sourceMappingURL=score-core.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"score-core.d.ts","sourceRoot":"","sources":["../../../../../src/design/audit/reference/engine/score-core.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EACV,iBAAiB,EACjB,iBAAiB,EACjB,SAAS,EACT,cAAc,EACd,iBAAiB,EAClB,MAAM,iBAAiB,CAAA;AA8BxB;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,iBAAiB,EAC1B,YAAY,EAAE,iBAAiB,GAC9B,MAAM,CAMR;AAyCD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,iBAAiB,GACzB,MAAM,CAAC,SAAS,EAAE,cAAc,CAAC,CAWnC;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,iBAAiB,GAAG,iBAAiB,CAYjF"}
|