@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,206 @@
|
|
|
1
|
+
// ---------------------------------------------------------------------------
|
|
2
|
+
// Evolve loop — audit → generate CSS fixes → inject → re-audit → compare
|
|
3
|
+
// ---------------------------------------------------------------------------
|
|
4
|
+
import * as fs from 'node:fs';
|
|
5
|
+
import * as path from 'node:path';
|
|
6
|
+
import chalk from 'chalk';
|
|
7
|
+
import { auditOnePage } from '../pipeline.js';
|
|
8
|
+
import { getTelemetry } from '../../../telemetry/index.js';
|
|
9
|
+
export async function runEvolveLoop(brain, driver, page, pages, profile, initialResults, outputDir, maxRounds, auditPasses, parentRunId, provider, model, referenceCommonOpts) {
|
|
10
|
+
const telemetry = parentRunId ? getTelemetry() : undefined;
|
|
11
|
+
const initialAvg = initialResults.reduce((s, r) => s + r.score, 0) / initialResults.length;
|
|
12
|
+
const scoreHistory = [initialAvg];
|
|
13
|
+
const appliedFixes = [];
|
|
14
|
+
const skippedFixes = [];
|
|
15
|
+
let cumulativeCSS = '';
|
|
16
|
+
let currentResults = initialResults;
|
|
17
|
+
let currentAvg = initialAvg;
|
|
18
|
+
console.log('');
|
|
19
|
+
console.log(` ${chalk.bold('Design Evolve')} — ${maxRounds} rounds max`);
|
|
20
|
+
console.log(` ${chalk.dim('Initial score:')} ${currentAvg.toFixed(1)}/10`);
|
|
21
|
+
console.log('');
|
|
22
|
+
for (let round = 1; round <= maxRounds; round++) {
|
|
23
|
+
console.log(` ${chalk.dim(`Round ${round}/${maxRounds}`)}`);
|
|
24
|
+
// Collect all findings with CSS fixes across all pages
|
|
25
|
+
const fixableFixes = currentResults
|
|
26
|
+
.flatMap(r => r.findings)
|
|
27
|
+
.filter(f => f.cssSelector && f.cssFix);
|
|
28
|
+
if (fixableFixes.length === 0) {
|
|
29
|
+
console.log(` ${chalk.dim(' No CSS-fixable findings — generating fixes via LLM…')}`);
|
|
30
|
+
// Ask the LLM to generate CSS fixes for the top findings
|
|
31
|
+
const topFindings = currentResults
|
|
32
|
+
.flatMap(r => r.findings)
|
|
33
|
+
.filter(f => f.severity === 'critical' || f.severity === 'major')
|
|
34
|
+
.slice(0, 10);
|
|
35
|
+
if (topFindings.length === 0) {
|
|
36
|
+
console.log(` ${chalk.green(' No major/critical findings remaining')}`);
|
|
37
|
+
break;
|
|
38
|
+
}
|
|
39
|
+
const fixPrompt = buildFixGenerationPrompt(topFindings);
|
|
40
|
+
const fixResult = await brain.auditDesign(await driver.observe(), 'Generate CSS fixes for the design issues listed below', [], fixPrompt);
|
|
41
|
+
// Parse generated fixes
|
|
42
|
+
try {
|
|
43
|
+
let text = fixResult.raw.trim();
|
|
44
|
+
if (text.startsWith('```'))
|
|
45
|
+
text = text.replace(/^```(?:json)?\n?/, '').replace(/\n?```$/, '');
|
|
46
|
+
const start = text.indexOf('{');
|
|
47
|
+
const end = text.lastIndexOf('}');
|
|
48
|
+
if (start >= 0 && end > start)
|
|
49
|
+
text = text.slice(start, end + 1);
|
|
50
|
+
const parsed = JSON.parse(text);
|
|
51
|
+
if (Array.isArray(parsed.fixes)) {
|
|
52
|
+
for (const fix of parsed.fixes) {
|
|
53
|
+
if (fix.cssSelector && fix.cssFix) {
|
|
54
|
+
fixableFixes.push({
|
|
55
|
+
category: 'ux',
|
|
56
|
+
severity: 'major',
|
|
57
|
+
description: fix.description || '',
|
|
58
|
+
location: fix.location || '',
|
|
59
|
+
suggestion: fix.cssFix,
|
|
60
|
+
cssSelector: fix.cssSelector,
|
|
61
|
+
cssFix: fix.cssFix,
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
catch { /* failed to parse fixes */ }
|
|
68
|
+
}
|
|
69
|
+
if (fixableFixes.length === 0) {
|
|
70
|
+
console.log(` ${chalk.dim(' Could not generate fixable CSS — stopping')}`);
|
|
71
|
+
break;
|
|
72
|
+
}
|
|
73
|
+
// Build CSS override from all fixable findings
|
|
74
|
+
const roundCSS = fixableFixes
|
|
75
|
+
.map(f => `/* ${f.severity}: ${f.description?.slice(0, 80)} */\n${f.cssSelector} { ${f.cssFix} }`)
|
|
76
|
+
.join('\n\n');
|
|
77
|
+
cumulativeCSS += '\n' + roundCSS;
|
|
78
|
+
// Track applied fixes
|
|
79
|
+
for (const f of fixableFixes) {
|
|
80
|
+
appliedFixes.push({
|
|
81
|
+
cssSelector: f.cssSelector,
|
|
82
|
+
cssFix: f.cssFix,
|
|
83
|
+
finding: f.description,
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
console.log(` ${chalk.dim(` Applying ${fixableFixes.length} CSS fixes…`)}`);
|
|
87
|
+
// Re-audit each page with CSS injected
|
|
88
|
+
const roundResults = [];
|
|
89
|
+
for (const url of pages) {
|
|
90
|
+
try {
|
|
91
|
+
await page.goto(url, { waitUntil: 'networkidle', timeout: 20_000 }).catch(() => page.goto(url, { waitUntil: 'domcontentloaded', timeout: 15_000 }));
|
|
92
|
+
await page.waitForTimeout(1500);
|
|
93
|
+
// Inject cumulative CSS fixes
|
|
94
|
+
await page.addStyleTag({ content: cumulativeCSS });
|
|
95
|
+
await page.waitForTimeout(500);
|
|
96
|
+
// Take screenshot of fixed state
|
|
97
|
+
const screenshotDir = path.join(outputDir, `screenshots-round-${round}`);
|
|
98
|
+
fs.mkdirSync(screenshotDir, { recursive: true });
|
|
99
|
+
const result = (await auditOnePage({
|
|
100
|
+
brain,
|
|
101
|
+
driver,
|
|
102
|
+
page,
|
|
103
|
+
url,
|
|
104
|
+
profileOverride: profile,
|
|
105
|
+
screenshotDir,
|
|
106
|
+
auditPasses,
|
|
107
|
+
...(parentRunId ? { runId: parentRunId, parentRunId } : {}),
|
|
108
|
+
...(provider ? { provider } : {}),
|
|
109
|
+
...(model ? { model } : {}),
|
|
110
|
+
...(referenceCommonOpts ?? {}),
|
|
111
|
+
}));
|
|
112
|
+
roundResults.push(result);
|
|
113
|
+
}
|
|
114
|
+
catch {
|
|
115
|
+
roundResults.push({
|
|
116
|
+
url,
|
|
117
|
+
score: currentAvg,
|
|
118
|
+
summary: 'Re-audit failed',
|
|
119
|
+
strengths: [],
|
|
120
|
+
findings: [],
|
|
121
|
+
error: 'Re-audit with CSS injection failed',
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
const roundAvg = roundResults.reduce((s, r) => s + r.score, 0) / roundResults.length;
|
|
126
|
+
scoreHistory.push(roundAvg);
|
|
127
|
+
const delta = roundAvg - currentAvg;
|
|
128
|
+
const deltaStr = delta >= 0 ? chalk.green(`+${delta.toFixed(1)}`) : chalk.red(delta.toFixed(1));
|
|
129
|
+
console.log(` ${chalk.dim(' Score:')} ${roundAvg.toFixed(1)}/10 (${deltaStr})`);
|
|
130
|
+
if (telemetry && parentRunId) {
|
|
131
|
+
telemetry.emit({
|
|
132
|
+
kind: 'design-evolve-round',
|
|
133
|
+
runId: parentRunId,
|
|
134
|
+
parentRunId,
|
|
135
|
+
ok: true,
|
|
136
|
+
durationMs: 0, // round-level wall time would require a per-round timer; the parent run captures total duration
|
|
137
|
+
...(provider && model ? { model: { provider, name: model } } : {}),
|
|
138
|
+
data: {
|
|
139
|
+
mode: 'css',
|
|
140
|
+
round,
|
|
141
|
+
fixesApplied: fixableFixes.length,
|
|
142
|
+
},
|
|
143
|
+
metrics: {
|
|
144
|
+
round,
|
|
145
|
+
beforeScore: currentAvg,
|
|
146
|
+
afterScore: roundAvg,
|
|
147
|
+
delta,
|
|
148
|
+
fixesApplied: fixableFixes.length,
|
|
149
|
+
},
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
currentResults = roundResults;
|
|
153
|
+
currentAvg = roundAvg;
|
|
154
|
+
// Check convergence — if no improvement, stop
|
|
155
|
+
if (delta <= 0.1 && round > 1) {
|
|
156
|
+
console.log(` ${chalk.dim(' Converged — no further improvement')}`);
|
|
157
|
+
break;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
const totalDelta = currentAvg - initialAvg;
|
|
161
|
+
const deltaColor = totalDelta >= 2 ? chalk.green : totalDelta > 0 ? chalk.yellow : chalk.red;
|
|
162
|
+
console.log('');
|
|
163
|
+
console.log(` ${chalk.bold('Evolve complete')}`);
|
|
164
|
+
console.log(` ${chalk.dim('Score:')} ${initialAvg.toFixed(1)} → ${currentAvg.toFixed(1)} (${deltaColor(`+${totalDelta.toFixed(1)}`)})`);
|
|
165
|
+
console.log(` ${chalk.dim('Rounds:')} ${scoreHistory.length - 1}`);
|
|
166
|
+
console.log(` ${chalk.dim('Fixes applied:')} ${appliedFixes.length}`);
|
|
167
|
+
console.log('');
|
|
168
|
+
return {
|
|
169
|
+
beforeScore: initialAvg,
|
|
170
|
+
afterScore: currentAvg,
|
|
171
|
+
delta: totalDelta,
|
|
172
|
+
rounds: scoreHistory.length - 1,
|
|
173
|
+
appliedFixes,
|
|
174
|
+
skippedFixes,
|
|
175
|
+
scoreHistory,
|
|
176
|
+
cssOverride: cumulativeCSS.trim(),
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
function buildFixGenerationPrompt(findings) {
|
|
180
|
+
const findingList = findings.map((f, i) => `${i + 1}. [${f.severity}/${f.category}] ${f.description}\n Location: ${f.location}\n Suggestion: ${f.suggestion}`).join('\n');
|
|
181
|
+
return `You are a CSS engineer fixing design issues. For each finding, generate a precise CSS fix.
|
|
182
|
+
|
|
183
|
+
FINDINGS TO FIX:
|
|
184
|
+
${findingList}
|
|
185
|
+
|
|
186
|
+
RULES:
|
|
187
|
+
- Use specific, targeted CSS selectors. Prefer class-based or semantic selectors.
|
|
188
|
+
- Each fix should be a single CSS rule (selector + property:value pairs).
|
|
189
|
+
- Fixes must not break other elements — be surgical.
|
|
190
|
+
- For spacing: use consistent values (multiples of 4 or 8px).
|
|
191
|
+
- For colors: ensure WCAG AA contrast (4.5:1 for text, 3:1 for large text).
|
|
192
|
+
- For typography: use a limited scale (14px, 16px, 20px, 24px, 32px, 48px).
|
|
193
|
+
|
|
194
|
+
RESPOND WITH ONLY a JSON object:
|
|
195
|
+
{
|
|
196
|
+
"fixes": [
|
|
197
|
+
{
|
|
198
|
+
"cssSelector": "main > section:first-child",
|
|
199
|
+
"cssFix": "padding-bottom: 48px; margin-bottom: 0",
|
|
200
|
+
"description": "Standardize hero section bottom spacing",
|
|
201
|
+
"location": "Hero → features transition"
|
|
202
|
+
}
|
|
203
|
+
]
|
|
204
|
+
}`;
|
|
205
|
+
}
|
|
206
|
+
//# sourceMappingURL=css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"css.js","sourceRoot":"","sources":["../../../../src/design/audit/evolve/css.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Evolve subsystem — closed-loop fix → re-audit for the `bad design-audit`
|
|
3
|
+
* command. Two modes: ephemeral CSS injection (`runEvolveLoop`) and
|
|
4
|
+
* agent-dispatched source edits (`runAgentEvolveLoop`), plus the shared
|
|
5
|
+
* evolve report renderer and the reference-grounded options bundle that
|
|
6
|
+
* threads through every re-audit call site. `buildApplyPrompt` is the
|
|
7
|
+
* non-spawning default: the portable prompt a coding agent runs itself.
|
|
8
|
+
*/
|
|
9
|
+
export { runEvolveLoop } from './css.js';
|
|
10
|
+
export { runAgentEvolveLoop, buildApplyPrompt, resolveAgentCommand } from './agent.js';
|
|
11
|
+
export { generateEvolveReport } from './report.js';
|
|
12
|
+
export type { ReferenceCommonOpts } from './types.js';
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/design/audit/evolve/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AACtF,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAClD,YAAY,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Evolve subsystem — closed-loop fix → re-audit for the `bad design-audit`
|
|
3
|
+
* command. Two modes: ephemeral CSS injection (`runEvolveLoop`) and
|
|
4
|
+
* agent-dispatched source edits (`runAgentEvolveLoop`), plus the shared
|
|
5
|
+
* evolve report renderer and the reference-grounded options bundle that
|
|
6
|
+
* threads through every re-audit call site. `buildApplyPrompt` is the
|
|
7
|
+
* non-spawning default: the portable prompt a coding agent runs itself.
|
|
8
|
+
*/
|
|
9
|
+
export { runEvolveLoop } from './css.js';
|
|
10
|
+
export { runAgentEvolveLoop, buildApplyPrompt, resolveAgentCommand } from './agent.js';
|
|
11
|
+
export { generateEvolveReport } from './report.js';
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/design/audit/evolve/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AACtF,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../../../src/design/audit/evolve/report.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAE3D,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,kBAAkB,GAAG,MAAM,CA8CvE"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export function generateEvolveReport(result) {
|
|
2
|
+
const lines = [];
|
|
3
|
+
lines.push('# Design Evolve Report');
|
|
4
|
+
lines.push('');
|
|
5
|
+
// Sign the delta explicitly — a regression (negative delta) must not render as "(+-1.5)".
|
|
6
|
+
const sign = result.delta >= 0 ? '+' : '';
|
|
7
|
+
lines.push(`**Score:** ${result.beforeScore.toFixed(1)} → ${result.afterScore.toFixed(1)} (${sign}${result.delta.toFixed(1)})`);
|
|
8
|
+
lines.push(`**Rounds:** ${result.rounds}`);
|
|
9
|
+
lines.push(`**Score progression:** ${result.scoreHistory.map(s => s.toFixed(1)).join(' → ')}`);
|
|
10
|
+
lines.push('');
|
|
11
|
+
if (result.appliedFixes.length > 0) {
|
|
12
|
+
lines.push('## Applied Fixes');
|
|
13
|
+
lines.push('');
|
|
14
|
+
for (const fix of result.appliedFixes) {
|
|
15
|
+
lines.push(`- \`${fix.cssSelector}\`: \`${fix.cssFix}\``);
|
|
16
|
+
if (fix.finding)
|
|
17
|
+
lines.push(` - ${fix.finding}`);
|
|
18
|
+
}
|
|
19
|
+
lines.push('');
|
|
20
|
+
}
|
|
21
|
+
// Skipped fixes carry a reason; surfacing them tells the operator which
|
|
22
|
+
// generated fixes were dropped and why (data omission otherwise).
|
|
23
|
+
if (result.skippedFixes.length > 0) {
|
|
24
|
+
lines.push('## Skipped Fixes');
|
|
25
|
+
lines.push('');
|
|
26
|
+
for (const fix of result.skippedFixes) {
|
|
27
|
+
lines.push(`- \`${fix.cssSelector}\`: \`${fix.cssFix}\` — ${fix.reason}`);
|
|
28
|
+
}
|
|
29
|
+
lines.push('');
|
|
30
|
+
}
|
|
31
|
+
if (result.cssOverride) {
|
|
32
|
+
lines.push('## Generated CSS Override');
|
|
33
|
+
lines.push('');
|
|
34
|
+
lines.push('```css');
|
|
35
|
+
lines.push(result.cssOverride);
|
|
36
|
+
lines.push('```');
|
|
37
|
+
lines.push('');
|
|
38
|
+
lines.push('Apply this CSS to your app to fix the identified design issues:');
|
|
39
|
+
lines.push('```html');
|
|
40
|
+
lines.push('<link rel="stylesheet" href="design-fixes.css">');
|
|
41
|
+
lines.push('```');
|
|
42
|
+
}
|
|
43
|
+
return lines.join('\n');
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=report.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report.js","sourceRoot":"","sources":["../../../../src/design/audit/evolve/report.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { EvalMode, ReferenceContext, Exemplar, ReferenceGroundedConfig } from '../reference/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* The reference-grounded eval bundle, acquired ONCE and spread into every
|
|
4
|
+
* `auditOnePage` call site (including the evolve re-audit loops) so a
|
|
5
|
+
* `--reference-grounded` run never silently falls back to v1 scoring on any path.
|
|
6
|
+
* Default OFF carries only `evalMode:'v1'`, leaving those call sites byte-identical.
|
|
7
|
+
*/
|
|
8
|
+
export type ReferenceCommonOpts = {
|
|
9
|
+
evalMode: EvalMode;
|
|
10
|
+
reference?: ReferenceContext;
|
|
11
|
+
corpus?: Exemplar[];
|
|
12
|
+
referenceConfig?: ReferenceGroundedConfig;
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/design/audit/evolve/types.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,QAAQ,EACR,gBAAgB,EAChB,QAAQ,EACR,uBAAuB,EACxB,MAAM,uBAAuB,CAAA;AAE9B;;;;;GAKG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,EAAE,QAAQ,CAAA;IAClB,SAAS,CAAC,EAAE,gBAAgB,CAAA;IAC5B,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAA;IACnB,eAAe,CAAC,EAAE,uBAAuB,CAAA;CAC1C,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/design/audit/evolve/types.ts"],"names":[],"mappings":""}
|
|
@@ -12,6 +12,7 @@ import { PlaywrightDriver } from '../../drivers/playwright.js';
|
|
|
12
12
|
import { type AuditPassId, type AuditOverrides } from './evaluate.js';
|
|
13
13
|
import type { PageAuditResult } from './types.js';
|
|
14
14
|
import type { AudienceTag, ModalityTag, RegulatoryContextTag, AudienceVulnerabilityTag } from './score-types.js';
|
|
15
|
+
import type { EvalMode, ReferenceContext, Exemplar, ReferenceGroundedConfig } from './reference/index.js';
|
|
15
16
|
export interface AuditOnePageOptions {
|
|
16
17
|
brain: Brain;
|
|
17
18
|
driver: PlaywrightDriver;
|
|
@@ -36,6 +37,17 @@ export interface AuditOnePageOptions {
|
|
|
36
37
|
* candidate prompts; production runs leave them undefined.
|
|
37
38
|
*/
|
|
38
39
|
overrides?: AuditOverrides;
|
|
40
|
+
/**
|
|
41
|
+
* Reference-grounded eval wiring (opt-in). When `evalMode` is
|
|
42
|
+
* `'reference-grounded'`, stage 6 routes to the reference engine instead of
|
|
43
|
+
* `evaluatePage`; absent/`'v1'` leaves the existing path byte-identical. The
|
|
44
|
+
* `reference`, `corpus`, and `referenceConfig` are acquired ONCE upstream and
|
|
45
|
+
* threaded in (siblings of `overrides`, never inside `AuditOverrides`).
|
|
46
|
+
*/
|
|
47
|
+
evalMode?: EvalMode;
|
|
48
|
+
reference?: ReferenceContext;
|
|
49
|
+
corpus?: Exemplar[];
|
|
50
|
+
referenceConfig?: ReferenceGroundedConfig;
|
|
39
51
|
/**
|
|
40
52
|
* Layer 7 — bypass the ethics gate entirely. Audited + warned. Test-only.
|
|
41
53
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../../src/design/audit/pipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAI9D,OAAO,EAAgB,KAAK,WAAW,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../../src/design/audit/pipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAI9D,OAAO,EAAgB,KAAK,WAAW,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAA;AAEnF,OAAO,KAAK,EAAE,eAAe,EAAsB,MAAM,YAAY,CAAA;AAOrE,OAAO,KAAK,EACV,WAAW,EACX,WAAW,EACX,oBAAoB,EACpB,wBAAwB,EAKzB,MAAM,kBAAkB,CAAA;AAGzB,OAAO,KAAK,EACV,QAAQ,EACR,gBAAgB,EAChB,QAAQ,EACR,uBAAuB,EACxB,MAAM,sBAAsB,CAAA;AAE7B,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,KAAK,CAAA;IACZ,MAAM,EAAE,gBAAgB,CAAA;IACxB,IAAI,EAAE,IAAI,CAAA;IACV,GAAG,EAAE,MAAM,CAAA;IACX,2EAA2E;IAC3E,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,gEAAgE;IAChE,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,+CAA+C;IAC/C,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,0EAA0E;IAC1E,WAAW,CAAC,EAAE,WAAW,EAAE,CAAA;IAC3B,2EAA2E;IAC3E,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;OAGG;IACH,SAAS,CAAC,EAAE,cAAc,CAAA;IAC1B;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,SAAS,CAAC,EAAE,gBAAgB,CAAA;IAC5B,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAA;IACnB,eAAe,CAAC,EAAE,uBAAuB,CAAA;IACzC;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,gEAAgE;IAChE,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAA;IACxB,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAA;IACxB,iBAAiB,CAAC,EAAE,oBAAoB,EAAE,CAAA;IAC1C,qBAAqB,CAAC,EAAE,wBAAwB,EAAE,CAAA;CACnD;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,eAAe,CAAC,CAyQtF"}
|
|
@@ -11,29 +11,13 @@ import { defaultClassification } from './classify.js';
|
|
|
11
11
|
import { composeRubric, composeRubricFromProfile } from './rubric/loader.js';
|
|
12
12
|
import { gatherMeasurements } from './measure/index.js';
|
|
13
13
|
import { evaluatePage } from './evaluate.js';
|
|
14
|
+
import { dismissCookieBanners } from '../cookie-consent.js';
|
|
14
15
|
import { getTelemetry, shortHash } from '../../telemetry/index.js';
|
|
15
16
|
import { loadEthicsRules } from './ethics/loader.js';
|
|
16
17
|
import { checkEthics, pageTextBlob } from './ethics/check.js';
|
|
17
18
|
import { classifyEnsemble } from './classify-ensemble.js';
|
|
18
19
|
import { loadAnchors } from './rubric/anchor-loader.js';
|
|
19
20
|
import { buildAuditResult } from './build-result.js';
|
|
20
|
-
const COOKIE_BANNER_SELECTORS = [
|
|
21
|
-
'button:has-text("Accept all")',
|
|
22
|
-
'button:has-text("Accept")',
|
|
23
|
-
'button:has-text("Reject all")',
|
|
24
|
-
'button:has-text("Got it")',
|
|
25
|
-
'button:has-text("Close")',
|
|
26
|
-
];
|
|
27
|
-
async function dismissCookieBanners(page) {
|
|
28
|
-
for (const sel of COOKIE_BANNER_SELECTORS) {
|
|
29
|
-
const btn = page.locator(sel).first();
|
|
30
|
-
if (await btn.isVisible({ timeout: 500 }).catch(() => false)) {
|
|
31
|
-
await btn.click({ timeout: 2000 }).catch(() => null);
|
|
32
|
-
await page.waitForTimeout(500);
|
|
33
|
-
return;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
21
|
/**
|
|
38
22
|
* Audit one page through the full design-audit pipeline.
|
|
39
23
|
*/
|
|
@@ -103,16 +87,45 @@ export async function auditOnePage(opts) {
|
|
|
103
87
|
// ── 5. Measure (deterministic, runs in parallel) ──
|
|
104
88
|
const measurements = await gatherMeasurements(page);
|
|
105
89
|
// ── 6. Evaluate ──
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
90
|
+
// Single flag-gated branch: reference-grounded mode routes to the engine,
|
|
91
|
+
// which returns a `PageAuditResult` so stages 7-9 run unchanged. The default
|
|
92
|
+
// path (`evalMode` absent/'v1') is the original `evaluatePage` call, untouched.
|
|
93
|
+
// The engine is imported lazily here so v1 never loads it.
|
|
94
|
+
let result;
|
|
95
|
+
// Engine-computed per-dimension scores, surfaced from the reference branch and
|
|
96
|
+
// handed to stage 8 as `precomputedScores` so the engine is the SINGLE scoring
|
|
97
|
+
// authority (no second `brain.auditDesign` pass). Undefined in v1 ⇒ stage 8 is
|
|
98
|
+
// byte-identical to the legacy path.
|
|
99
|
+
let precomputedScores;
|
|
100
|
+
if (opts.evalMode === 'reference-grounded') {
|
|
101
|
+
const { evaluateReferenceGrounded, resolveReferenceConfig } = await import('./reference/index.js');
|
|
102
|
+
const evaluation = await evaluateReferenceGrounded(brain, {
|
|
103
|
+
url,
|
|
104
|
+
classification,
|
|
105
|
+
measurements,
|
|
106
|
+
...(screenshotPath ? { screenshotPath } : {}),
|
|
107
|
+
...(opts.reference ? { reference: opts.reference } : {}),
|
|
108
|
+
corpus: opts.corpus ?? [],
|
|
109
|
+
config: opts.referenceConfig ?? resolveReferenceConfig(),
|
|
110
|
+
});
|
|
111
|
+
result = evaluation.result;
|
|
112
|
+
precomputedScores = evaluation.dimensionScores;
|
|
113
|
+
// Surface the rich artifact so the CLI can render the full redesign brief.
|
|
114
|
+
// Reference branch only — v1 results never carry this field.
|
|
115
|
+
result.referenceArtifact = evaluation.artifact;
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
result = await evaluatePage(brain, {
|
|
119
|
+
url,
|
|
120
|
+
state,
|
|
121
|
+
classification,
|
|
122
|
+
rubric,
|
|
123
|
+
measurements,
|
|
124
|
+
screenshotPath,
|
|
125
|
+
auditPasses,
|
|
126
|
+
overrides,
|
|
127
|
+
});
|
|
128
|
+
}
|
|
116
129
|
// ── 7. Ethics gate (Layer 7) — apply rollup floor when rules fire ──
|
|
117
130
|
if (skipEthics) {
|
|
118
131
|
console.warn(`[ethics] --skip-ethics: gate bypassed for ${url} (test-only)`);
|
|
@@ -153,6 +166,9 @@ export async function auditOnePage(opts) {
|
|
|
153
166
|
anchor,
|
|
154
167
|
runId,
|
|
155
168
|
overrides,
|
|
169
|
+
// Reference mode only: the engine already scored every dimension, so pass
|
|
170
|
+
// them through and skip stage 8's `brain.auditDesign` + `generatePatches`.
|
|
171
|
+
...(precomputedScores ? { precomputedScores } : {}),
|
|
156
172
|
});
|
|
157
173
|
result.auditResult = auditResult;
|
|
158
174
|
result.ensembleClassification = ensemble;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../../src/design/audit/pipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AAIjC,OAAO,EAAgB,qBAAqB,EAAE,MAAM,eAAe,CAAA;AACnE,OAAO,EAAE,aAAa,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAA;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,EAAE,YAAY,EAAyC,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../../src/design/audit/pipeline.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Artifact assembly — the PURE core that folds the engine's stage outputs into
|
|
3
|
+
* the first-class `RedesignArtifact`.
|
|
4
|
+
*
|
|
5
|
+
* No IO, no LLM: identical inputs always yield an identical artifact, so it
|
|
6
|
+
* unit-tests on plain fixtures. Two invariants are enforced FAIL-CLOSED (we
|
|
7
|
+
* throw rather than silently repair or fabricate):
|
|
8
|
+
*
|
|
9
|
+
* - Directions are returned in RANKING order (winner first). A direction the
|
|
10
|
+
* ranker did not place is appended in its original order — never dropped —
|
|
11
|
+
* so a partial ranking can never silently lose a generated direction.
|
|
12
|
+
* - Every `groundedInExemplarIds` entry MUST resolve to a retrieved exemplar.
|
|
13
|
+
* A direction claiming grounding in an exemplar that was never retrieved is
|
|
14
|
+
* provenance fabrication; the artifact is the thing the taste eval trusts for
|
|
15
|
+
* provenance, so we refuse to assemble a lying one.
|
|
16
|
+
*/
|
|
17
|
+
import type { RedesignArtifact, RedesignDirection, RankResult, RetrievalResult, TasteVerdict } from '../contracts.js';
|
|
18
|
+
/**
|
|
19
|
+
* Inputs to {@link buildRedesignArtifact}. Mirrors the inline shape the
|
|
20
|
+
* `engine/core` sequencer passes; named here so callers and tests share one
|
|
21
|
+
* definition.
|
|
22
|
+
*/
|
|
23
|
+
export interface BuildRedesignArtifactInput {
|
|
24
|
+
url: string;
|
|
25
|
+
directions: RedesignDirection[];
|
|
26
|
+
ranking: RankResult;
|
|
27
|
+
retrieval: RetrievalResult[];
|
|
28
|
+
verdicts: TasteVerdict[];
|
|
29
|
+
referenceId?: string;
|
|
30
|
+
tokensUsed: number;
|
|
31
|
+
}
|
|
32
|
+
export declare function buildRedesignArtifact(input: BuildRedesignArtifactInput): RedesignArtifact;
|
|
33
|
+
//# sourceMappingURL=build.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../../../src/design/audit/reference/artifact/build.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EACV,gBAAgB,EAChB,iBAAiB,EACjB,UAAU,EACV,eAAe,EACf,YAAY,EACb,MAAM,iBAAiB,CAAA;AAExB;;;;GAIG;AACH,MAAM,WAAW,0BAA0B;IACzC,GAAG,EAAE,MAAM,CAAA;IACX,UAAU,EAAE,iBAAiB,EAAE,CAAA;IAC/B,OAAO,EAAE,UAAU,CAAA;IACnB,SAAS,EAAE,eAAe,EAAE,CAAA;IAC5B,QAAQ,EAAE,YAAY,EAAE,CAAA;IACxB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,0BAA0B,GAAG,gBAAgB,CA0BzF"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Artifact assembly — the PURE core that folds the engine's stage outputs into
|
|
3
|
+
* the first-class `RedesignArtifact`.
|
|
4
|
+
*
|
|
5
|
+
* No IO, no LLM: identical inputs always yield an identical artifact, so it
|
|
6
|
+
* unit-tests on plain fixtures. Two invariants are enforced FAIL-CLOSED (we
|
|
7
|
+
* throw rather than silently repair or fabricate):
|
|
8
|
+
*
|
|
9
|
+
* - Directions are returned in RANKING order (winner first). A direction the
|
|
10
|
+
* ranker did not place is appended in its original order — never dropped —
|
|
11
|
+
* so a partial ranking can never silently lose a generated direction.
|
|
12
|
+
* - Every `groundedInExemplarIds` entry MUST resolve to a retrieved exemplar.
|
|
13
|
+
* A direction claiming grounding in an exemplar that was never retrieved is
|
|
14
|
+
* provenance fabrication; the artifact is the thing the taste eval trusts for
|
|
15
|
+
* provenance, so we refuse to assemble a lying one.
|
|
16
|
+
*/
|
|
17
|
+
export function buildRedesignArtifact(input) {
|
|
18
|
+
const retrievedIds = new Set(input.retrieval.map((r) => r.exemplar.id));
|
|
19
|
+
// Provenance stays honest WITHOUT crashing the page audit on one LLM
|
|
20
|
+
// hallucination: drop any grounding id the model invented (not in the
|
|
21
|
+
// retrieval set) and warn. The direction keeps its valid grounding; a
|
|
22
|
+
// fabricated claim is removed, never displayed.
|
|
23
|
+
const directions = input.directions.map((d) => {
|
|
24
|
+
const valid = d.groundedInExemplarIds.filter((id) => retrievedIds.has(id));
|
|
25
|
+
if (valid.length !== d.groundedInExemplarIds.length) {
|
|
26
|
+
const dropped = d.groundedInExemplarIds.filter((id) => !retrievedIds.has(id));
|
|
27
|
+
console.warn(`[reference] direction "${d.id}" claimed grounding in unretrieved exemplar(s) ${dropped.join(', ')} — dropped (kept ${valid.length} valid)`);
|
|
28
|
+
}
|
|
29
|
+
return valid.length === d.groundedInExemplarIds.length ? d : { ...d, groundedInExemplarIds: valid };
|
|
30
|
+
});
|
|
31
|
+
return {
|
|
32
|
+
url: input.url,
|
|
33
|
+
directions: orderByRanking(directions, input.ranking),
|
|
34
|
+
ranking: input.ranking,
|
|
35
|
+
retrieval: input.retrieval,
|
|
36
|
+
verdicts: input.verdicts,
|
|
37
|
+
tokensUsed: input.tokensUsed,
|
|
38
|
+
...(input.referenceId !== undefined ? { referenceId: input.referenceId } : {}),
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Order directions by the ranker's verdict, winner first. Directions the ranker
|
|
43
|
+
* never placed are appended in their original relative order so nothing is lost.
|
|
44
|
+
*/
|
|
45
|
+
function orderByRanking(directions, ranking) {
|
|
46
|
+
const byId = new Map(directions.map((d) => [d.id, d]));
|
|
47
|
+
const ordered = [];
|
|
48
|
+
const placed = new Set();
|
|
49
|
+
for (const id of ranking.order) {
|
|
50
|
+
const d = byId.get(id);
|
|
51
|
+
if (d && !placed.has(id)) {
|
|
52
|
+
ordered.push(d);
|
|
53
|
+
placed.add(id);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
for (const d of directions) {
|
|
57
|
+
if (!placed.has(d.id)) {
|
|
58
|
+
ordered.push(d);
|
|
59
|
+
placed.add(d.id);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return ordered;
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=build.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../../../../src/design/audit/reference/artifact/build.ts"],"names":[],"mappings":"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"}
|