@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
|
@@ -1,3 +1,19 @@
|
|
|
1
|
+
/** Runtime list of the `SupportedProvider` union — the single source of truth
|
|
2
|
+
* for validating a user-supplied `--provider` string before it is cast. */
|
|
3
|
+
export const SUPPORTED_PROVIDERS = [
|
|
4
|
+
'openai',
|
|
5
|
+
'anthropic',
|
|
6
|
+
'google',
|
|
7
|
+
'cli-bridge',
|
|
8
|
+
'codex-cli',
|
|
9
|
+
'claude-code',
|
|
10
|
+
'sandbox-backend',
|
|
11
|
+
'zai-coding-plan',
|
|
12
|
+
];
|
|
13
|
+
/** Narrow an arbitrary string to a `SupportedProvider`. */
|
|
14
|
+
export function isSupportedProvider(value) {
|
|
15
|
+
return SUPPORTED_PROVIDERS.includes(value);
|
|
16
|
+
}
|
|
1
17
|
/**
|
|
2
18
|
* Z.ai coding plan endpoints. The plan exposes two compatibility surfaces:
|
|
3
19
|
* - OpenAI-compatible at /api/coding/paas/v4 — works with glm-4.6 / glm-4.5
|
|
@@ -55,6 +71,23 @@ export function resolveProviderModelName(provider, requestedModel, options) {
|
|
|
55
71
|
}
|
|
56
72
|
return model || 'gpt-5.4';
|
|
57
73
|
}
|
|
74
|
+
/**
|
|
75
|
+
* Pick a default provider when the CLI passed none. Honours a present
|
|
76
|
+
* `OPENAI_API_KEY` (→ `'openai'`, which resolves to `gpt-5.4` + the OpenAI key)
|
|
77
|
+
* before falling back to the keyless `'claude-code'` engine. Mirrors the `run`
|
|
78
|
+
* command's `driverConfig.provider || 'openai'` precedent so design-audit no
|
|
79
|
+
* longer silently overrides a present OpenAI key with claude-code/sonnet.
|
|
80
|
+
*
|
|
81
|
+
* Fail-open offline: with no `OPENAI_API_KEY` the result is still
|
|
82
|
+
* `'claude-code'`, preserving the zero-key path the engine was designed to run
|
|
83
|
+
* on. Only the design-audit default site consumes this; explicit `--provider`
|
|
84
|
+
* still wins, so no other command's behaviour changes.
|
|
85
|
+
*/
|
|
86
|
+
export function resolveDefaultProvider(env = process.env) {
|
|
87
|
+
if (env.OPENAI_API_KEY)
|
|
88
|
+
return 'openai';
|
|
89
|
+
return 'claude-code';
|
|
90
|
+
}
|
|
58
91
|
export function resolveProviderApiKey(provider, explicitApiKey, env = process.env) {
|
|
59
92
|
if (explicitApiKey)
|
|
60
93
|
return explicitApiKey;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider-defaults.js","sourceRoot":"","sources":["../src/provider-defaults.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"provider-defaults.js","sourceRoot":"","sources":["../src/provider-defaults.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Allowed-domain helpers — registrable-root derivation used for first-party
|
|
3
|
+
* subdomain tolerance when enforcing a scenario's allowedDomains boundary.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Reduce a hostname to its registrable root (last two labels) so that
|
|
7
|
+
* `news.example.com` and `example.com` compare equal. Hosts with two or
|
|
8
|
+
* fewer labels are returned unchanged.
|
|
9
|
+
*/
|
|
10
|
+
export declare function domainRoot(host: string): string;
|
|
11
|
+
//# sourceMappingURL=allowed-domains.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"allowed-domains.d.ts","sourceRoot":"","sources":["../../src/runner/allowed-domains.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAG/C"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Allowed-domain helpers — registrable-root derivation used for first-party
|
|
3
|
+
* subdomain tolerance when enforcing a scenario's allowedDomains boundary.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Reduce a hostname to its registrable root (last two labels) so that
|
|
7
|
+
* `news.example.com` and `example.com` compare equal. Hosts with two or
|
|
8
|
+
* fewer labels are returned unchanged.
|
|
9
|
+
*/
|
|
10
|
+
export function domainRoot(host) {
|
|
11
|
+
const parts = host.split('.').filter(Boolean);
|
|
12
|
+
return parts.length <= 2 ? host : parts.slice(-2).join('.');
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=allowed-domains.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"allowed-domains.js","sourceRoot":"","sources":["../../src/runner/allowed-domains.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9C,OAAO,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC9D,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Batch-fill opportunity detection — injects a "must batch next turn" hint
|
|
3
|
+
* when the agent starts filling a multi-field form one field at a time.
|
|
4
|
+
*/
|
|
5
|
+
import type { Turn, PageState } from '../types.js';
|
|
6
|
+
/**
|
|
7
|
+
* Detect when the agent is filling a multi-field form one input at a time and
|
|
8
|
+
* inject a hint that demands a `fill` batch on the next turn.
|
|
9
|
+
*
|
|
10
|
+
* Trigger conditions (all must hold):
|
|
11
|
+
* 1. The agent's most recent action was a single-step `type` on the
|
|
12
|
+
* current URL
|
|
13
|
+
* 2. The current snapshot has 2+ unused fillable refs (textbox /
|
|
14
|
+
* searchbox / combobox) that the agent hasn't typed into yet
|
|
15
|
+
* 3. We haven't already injected this hint in the last turn (to avoid
|
|
16
|
+
* hint loops if the agent ignores it)
|
|
17
|
+
*
|
|
18
|
+
* The detector fires after one type action when two or more unused fields
|
|
19
|
+
* remain, which catches common two-field-per-step forms before the agent
|
|
20
|
+
* burns extra turns.
|
|
21
|
+
*
|
|
22
|
+
* The hint is high-priority (100) so it survives ctxBudget truncation, and
|
|
23
|
+
* it explicitly lists the unused @refs from the current snapshot so the LLM
|
|
24
|
+
* doesn't have to guess. The injection is gated by BAD_BATCH_HINT=0 for
|
|
25
|
+
* rollback.
|
|
26
|
+
*/
|
|
27
|
+
export declare function detectBatchFillOpportunity(turns: Turn[], state: PageState): string | null;
|
|
28
|
+
//# sourceMappingURL=batch-fill.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batch-fill.d.ts","sourceRoot":"","sources":["../../src/runner/batch-fill.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAElD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,GAAG,MAAM,GAAG,IAAI,CAiDzF"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Batch-fill opportunity detection — injects a "must batch next turn" hint
|
|
3
|
+
* when the agent starts filling a multi-field form one field at a time.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Detect when the agent is filling a multi-field form one input at a time and
|
|
7
|
+
* inject a hint that demands a `fill` batch on the next turn.
|
|
8
|
+
*
|
|
9
|
+
* Trigger conditions (all must hold):
|
|
10
|
+
* 1. The agent's most recent action was a single-step `type` on the
|
|
11
|
+
* current URL
|
|
12
|
+
* 2. The current snapshot has 2+ unused fillable refs (textbox /
|
|
13
|
+
* searchbox / combobox) that the agent hasn't typed into yet
|
|
14
|
+
* 3. We haven't already injected this hint in the last turn (to avoid
|
|
15
|
+
* hint loops if the agent ignores it)
|
|
16
|
+
*
|
|
17
|
+
* The detector fires after one type action when two or more unused fields
|
|
18
|
+
* remain, which catches common two-field-per-step forms before the agent
|
|
19
|
+
* burns extra turns.
|
|
20
|
+
*
|
|
21
|
+
* The hint is high-priority (100) so it survives ctxBudget truncation, and
|
|
22
|
+
* it explicitly lists the unused @refs from the current snapshot so the LLM
|
|
23
|
+
* doesn't have to guess. The injection is gated by BAD_BATCH_HINT=0 for
|
|
24
|
+
* rollback.
|
|
25
|
+
*/
|
|
26
|
+
export function detectBatchFillOpportunity(turns, state) {
|
|
27
|
+
if (turns.length === 0)
|
|
28
|
+
return null;
|
|
29
|
+
const lastTurn = turns[turns.length - 1];
|
|
30
|
+
// Last action must be a single-step type on the current URL
|
|
31
|
+
if (lastTurn.action.action !== 'type')
|
|
32
|
+
return null;
|
|
33
|
+
if (lastTurn.state.url !== state.url)
|
|
34
|
+
return null;
|
|
35
|
+
// Collect the @refs the agent has typed into across the ENTIRE run on
|
|
36
|
+
// the same URL. The detector should never ask the agent to re-fill a
|
|
37
|
+
// field it already filled, even if the earlier fill happened many
|
|
38
|
+
// turns ago.
|
|
39
|
+
const usedRefs = new Set();
|
|
40
|
+
for (const t of turns) {
|
|
41
|
+
if (t.state.url !== state.url)
|
|
42
|
+
continue;
|
|
43
|
+
const a = t.action;
|
|
44
|
+
if (a.action === 'type' && 'selector' in a && typeof a.selector === 'string') {
|
|
45
|
+
usedRefs.add(a.selector);
|
|
46
|
+
}
|
|
47
|
+
if (a.action === 'fill') {
|
|
48
|
+
for (const k of Object.keys(a.fields ?? {}))
|
|
49
|
+
usedRefs.add(k);
|
|
50
|
+
for (const k of Object.keys(a.selects ?? {}))
|
|
51
|
+
usedRefs.add(k);
|
|
52
|
+
for (const k of a.checks ?? [])
|
|
53
|
+
usedRefs.add(k);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
// Find unused fillable refs in the current snapshot. We look for textbox,
|
|
57
|
+
// searchbox, combobox, and spinbutton roles — anything that takes text.
|
|
58
|
+
// Snapshot lines look like: ` - textbox "First name" [ref=t1f2a]`
|
|
59
|
+
const unusedRefs = [];
|
|
60
|
+
for (const line of state.snapshot.split('\n')) {
|
|
61
|
+
const match = line.match(/\b(textbox|searchbox|combobox|spinbutton)\b[^"]*"([^"]*)"[^[]*\[ref=([^\]]+)\]/i);
|
|
62
|
+
if (!match)
|
|
63
|
+
continue;
|
|
64
|
+
const role = match[1].toLowerCase();
|
|
65
|
+
const name = match[2];
|
|
66
|
+
const ref = `@${match[3]}`;
|
|
67
|
+
if (usedRefs.has(ref))
|
|
68
|
+
continue;
|
|
69
|
+
unusedRefs.push({ ref, name, role });
|
|
70
|
+
}
|
|
71
|
+
// Need at least 2 unused fields to make batching worthwhile
|
|
72
|
+
if (unusedRefs.length < 2)
|
|
73
|
+
return null;
|
|
74
|
+
const refList = unusedRefs
|
|
75
|
+
.slice(0, 12) // cap so we don't explode the prompt
|
|
76
|
+
.map((u) => ` - ${u.ref} (${u.role}: "${u.name}")`)
|
|
77
|
+
.join('\n');
|
|
78
|
+
return `\n[BATCH FILL REQUIRED]\nYou just typed into a single field, but ${unusedRefs.length} more fillable fields are visible on this same form. STOP. Your NEXT action MUST be a \`fill\` action that batches ALL remaining unused fields on this page in one turn. Do not emit another single-step \`type\` — emit \`fill\` with multiple entries.\n\nUnused fillable @refs from the current snapshot (use these in your \`fill.fields\` map):\n${refList}\n\nExample:\n{\"action\":\"fill\",\"fields\":{\"${unusedRefs[0].ref}\":\"value1\",\"${unusedRefs[1].ref}\":\"value2\"}}\n`;
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=batch-fill.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batch-fill.js","sourceRoot":"","sources":["../../src/runner/batch-fill.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Completion-result policy — decides whether a planner-emitted complete.result
|
|
3
|
+
* is a fabricated placeholder and whether runScript output is usable enough to
|
|
4
|
+
* auto-complete on. The plan executor and the per-action loop both consult these.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Detect placeholder patterns in a planner-generated complete.result.
|
|
8
|
+
*
|
|
9
|
+
* The planner has to commit to its `complete.result` text BEFORE any prior
|
|
10
|
+
* runScript step actually runs, so on extraction tasks it fabricates
|
|
11
|
+
* placeholders. We detect those patterns and substitute the runScript
|
|
12
|
+
* output (deterministic, no extra LLM call).
|
|
13
|
+
*
|
|
14
|
+
* Patterns we catch:
|
|
15
|
+
* - JSON `null` literals (e.g. `{"x": null, "y": null}`)
|
|
16
|
+
* - "<from prior step>", "<placeholder>", "<value from ...>", "<extracted ...>", "<observed ...>"
|
|
17
|
+
* - "{{...}}" template markers
|
|
18
|
+
*
|
|
19
|
+
* Conservative on purpose — we only substitute when the planner clearly
|
|
20
|
+
* didn't know real values at planning time. A complete.result that contains
|
|
21
|
+
* actual data (no nulls, no placeholder markers) passes through unchanged.
|
|
22
|
+
*/
|
|
23
|
+
export declare function hasPlaceholderPattern(text: string): boolean;
|
|
24
|
+
/** Returns true only when runScript output contains usable extracted data. */
|
|
25
|
+
export declare function isMeaningfulRunScriptOutput(output: string | null | undefined): boolean;
|
|
26
|
+
//# sourceMappingURL=completion-policy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"completion-policy.d.ts","sourceRoot":"","sources":["../../src/runner/completion-policy.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAgB3D;AAED,8EAA8E;AAC9E,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CA2BtF"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Completion-result policy — decides whether a planner-emitted complete.result
|
|
3
|
+
* is a fabricated placeholder and whether runScript output is usable enough to
|
|
4
|
+
* auto-complete on. The plan executor and the per-action loop both consult these.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Detect placeholder patterns in a planner-generated complete.result.
|
|
8
|
+
*
|
|
9
|
+
* The planner has to commit to its `complete.result` text BEFORE any prior
|
|
10
|
+
* runScript step actually runs, so on extraction tasks it fabricates
|
|
11
|
+
* placeholders. We detect those patterns and substitute the runScript
|
|
12
|
+
* output (deterministic, no extra LLM call).
|
|
13
|
+
*
|
|
14
|
+
* Patterns we catch:
|
|
15
|
+
* - JSON `null` literals (e.g. `{"x": null, "y": null}`)
|
|
16
|
+
* - "<from prior step>", "<placeholder>", "<value from ...>", "<extracted ...>", "<observed ...>"
|
|
17
|
+
* - "{{...}}" template markers
|
|
18
|
+
*
|
|
19
|
+
* Conservative on purpose — we only substitute when the planner clearly
|
|
20
|
+
* didn't know real values at planning time. A complete.result that contains
|
|
21
|
+
* actual data (no nulls, no placeholder markers) passes through unchanged.
|
|
22
|
+
*/
|
|
23
|
+
export function hasPlaceholderPattern(text) {
|
|
24
|
+
if (typeof text !== 'string' || text.length === 0)
|
|
25
|
+
return false;
|
|
26
|
+
if (/<from prior step>|<placeholder>|<value from|<extracted|<observed|<previous step|<runscript output>/i.test(text)) {
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
if (/\{\{[^}]+\}\}/.test(text)) {
|
|
30
|
+
return true;
|
|
31
|
+
}
|
|
32
|
+
// JSON-shape detection: a result that parses as JSON and contains null
|
|
33
|
+
// values is almost always a planner-fabricated extraction shell. Pure
|
|
34
|
+
// strings with the word "null" elsewhere don't match because we look
|
|
35
|
+
// for the JSON null literal pattern (`: null` or `[null`).
|
|
36
|
+
if (/:\s*null\b|\[\s*null\b/.test(text)) {
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
/** Returns true only when runScript output contains usable extracted data. */
|
|
42
|
+
export function isMeaningfulRunScriptOutput(output) {
|
|
43
|
+
if (typeof output !== 'string')
|
|
44
|
+
return false;
|
|
45
|
+
const trimmed = output.trim();
|
|
46
|
+
if (trimmed.length === 0)
|
|
47
|
+
return false;
|
|
48
|
+
if (trimmed === 'null' || trimmed === 'undefined' || trimmed === '""' || trimmed === "''")
|
|
49
|
+
return false;
|
|
50
|
+
// Empty JSON shells: `{}`, `[]`, `{"x": null}`, `[null, null]`
|
|
51
|
+
if (trimmed === '{}' || trimmed === '[]')
|
|
52
|
+
return false;
|
|
53
|
+
if (hasPlaceholderPattern(trimmed))
|
|
54
|
+
return false;
|
|
55
|
+
// If the output parses as JSON and EVERY top-level value is null/empty,
|
|
56
|
+
// treat it as not meaningful. This catches `{"x": null, "y": ""}` even
|
|
57
|
+
// though the placeholder regex would already catch the null one.
|
|
58
|
+
try {
|
|
59
|
+
const parsed = JSON.parse(trimmed);
|
|
60
|
+
if (parsed && typeof parsed === 'object' && !Array.isArray(parsed)) {
|
|
61
|
+
const values = Object.values(parsed);
|
|
62
|
+
if (values.length > 0) {
|
|
63
|
+
const allEmpty = values.every((v) => v === null || v === undefined || v === '' || v === 0);
|
|
64
|
+
if (allEmpty)
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
if (Array.isArray(parsed) && parsed.length === 0)
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
// Not JSON, that's fine — fall through to "meaningful" if we got here.
|
|
73
|
+
}
|
|
74
|
+
return true;
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=completion-policy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"completion-policy.js","sourceRoot":"","sources":["../../src/runner/completion-policy.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAY;IAChD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IAC/D,IAAI,qGAAqG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACrH,OAAO,IAAI,CAAA;IACb,CAAC;IACD,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/B,OAAO,IAAI,CAAA;IACb,CAAC;IACD,uEAAuE;IACvE,sEAAsE;IACtE,qEAAqE;IACrE,2DAA2D;IAC3D,IAAI,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,OAAO,IAAI,CAAA;IACb,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,2BAA2B,CAAC,MAAiC;IAC3E,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IAC5C,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAA;IAC7B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IACtC,IAAI,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,WAAW,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,KAAK,CAAA;IACvG,+DAA+D;IAC/D,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,KAAK,CAAA;IACtD,IAAI,qBAAqB,CAAC,OAAO,CAAC;QAAE,OAAO,KAAK,CAAA;IAChD,wEAAwE;IACxE,uEAAuE;IACvE,iEAAiE;IACjE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAClC,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACnE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;YACpC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtB,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAC3B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAC5D,CAAA;gBACD,IAAI,QAAQ;oBAAE,OAAO,KAAK,CAAA;YAC5B,CAAC;QACH,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,KAAK,CAAA;IAChE,CAAC;IAAC,MAAM,CAAC;QACP,uEAAuE;IACzE,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runner constants — defaults and thresholds the main loop and its helpers read.
|
|
3
|
+
*/
|
|
4
|
+
import type { SupervisorConfig } from '../types.js';
|
|
5
|
+
export declare const DEFAULT_MAX_TURNS = 20;
|
|
6
|
+
export declare const DEFAULT_RETRIES = 3;
|
|
7
|
+
export declare const DEFAULT_RETRY_DELAY_MS = 1000;
|
|
8
|
+
export declare const DEFAULT_MICRO_PLAN_ACTIONS = 2;
|
|
9
|
+
export declare const SAFE_MICRO_ACTIONS: Set<"click" | "type" | "scroll" | "navigate" | "wait" | "complete" | "press" | "hover" | "select" | "evaluate" | "runScript" | "extractWithIndex" | "verifyPreview" | "abort" | "fill" | "clickSequence" | "clickAt" | "typeAt" | "clickLabel" | "typeLabel" | "macro" | "fanOut">;
|
|
10
|
+
export declare const DEFAULT_SUPERVISOR: Required<Pick<SupervisorConfig, 'enabled' | 'useVision' | 'minTurnsBeforeInvoke' | 'cooldownTurns' | 'maxInterventions' | 'hardStallWindow'>>;
|
|
11
|
+
export declare const EXTENSION_TURNS_GRANTED = 5;
|
|
12
|
+
export declare const EXTENSION_HARD_CAP = 25;
|
|
13
|
+
export declare const EXTENSION_PROGRESS_LOOKBACK = 3;
|
|
14
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/runner/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAU,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE5D,eAAO,MAAM,iBAAiB,KAAK,CAAC;AACpC,eAAO,MAAM,eAAe,IAAI,CAAC;AACjC,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAC3C,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAE5C,eAAO,MAAM,kBAAkB,oRAA6I,CAAC;AAC7K,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,SAAS,GAAG,WAAW,GAAG,sBAAsB,GAAG,eAAe,GAAG,kBAAkB,GAAG,iBAAiB,CAAC,CAO5K,CAAC;AAIF,eAAO,MAAM,uBAAuB,IAAI,CAAC;AACzC,eAAO,MAAM,kBAAkB,KAAK,CAAC;AACrC,eAAO,MAAM,2BAA2B,IAAI,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runner constants — defaults and thresholds the main loop and its helpers read.
|
|
3
|
+
*/
|
|
4
|
+
export const DEFAULT_MAX_TURNS = 20;
|
|
5
|
+
export const DEFAULT_RETRIES = 3;
|
|
6
|
+
export const DEFAULT_RETRY_DELAY_MS = 1000;
|
|
7
|
+
export const DEFAULT_MICRO_PLAN_ACTIONS = 2;
|
|
8
|
+
// Safe action verbs for micro-plans emitted by the model.
|
|
9
|
+
export const SAFE_MICRO_ACTIONS = new Set(['click', 'type', 'press', 'hover', 'select', 'scroll', 'wait', 'clickAt', 'typeAt', 'clickLabel', 'typeLabel']);
|
|
10
|
+
export const DEFAULT_SUPERVISOR = {
|
|
11
|
+
enabled: true,
|
|
12
|
+
useVision: true,
|
|
13
|
+
minTurnsBeforeInvoke: 5,
|
|
14
|
+
cooldownTurns: 3,
|
|
15
|
+
maxInterventions: 2,
|
|
16
|
+
hardStallWindow: 4,
|
|
17
|
+
};
|
|
18
|
+
// One-time max-turns extension thresholds. An active run can receive a single
|
|
19
|
+
// extension when it reaches the configured cap while still making page progress.
|
|
20
|
+
export const EXTENSION_TURNS_GRANTED = 5;
|
|
21
|
+
export const EXTENSION_HARD_CAP = 25;
|
|
22
|
+
export const EXTENSION_PROGRESS_LOOKBACK = 3;
|
|
23
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/runner/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAC;AACpC,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC;AACjC,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,CAAC;AAC3C,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC;AAC5C,0DAA0D;AAC1D,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC;AAC7K,MAAM,CAAC,MAAM,kBAAkB,GAAkJ;IAC/K,OAAO,EAAE,IAAI;IACb,SAAS,EAAE,IAAI;IACf,oBAAoB,EAAE,CAAC;IACvB,aAAa,EAAE,CAAC;IAChB,gBAAgB,EAAE,CAAC;IACnB,eAAe,EAAE,CAAC;CACnB,CAAC;AAEF,8EAA8E;AAC9E,iFAAiF;AACjF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC;AACzC,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,CAAC;AACrC,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Decision-time screenshot attachment: lazily captures a base64 screenshot and
|
|
3
|
+
* folds it into the PageState when vision is requested for a decide/scout turn.
|
|
4
|
+
*
|
|
5
|
+
* Extracted from runner.ts via the delegate + host-interface pattern. The
|
|
6
|
+
* BrowserAgent class keeps a thin delegator (`attachDecisionScreenshot`); this
|
|
7
|
+
* free function holds the method body verbatim and reads runner state through
|
|
8
|
+
* {@link RunnerDecisionScreenshotHost}, which BrowserAgent `implements` so tsc
|
|
9
|
+
* proves the host surface is complete. Behavior is byte-identical to the
|
|
10
|
+
* inlined version.
|
|
11
|
+
*/
|
|
12
|
+
import type { Driver } from '../drivers/types.js';
|
|
13
|
+
import type { PageState } from '../types.js';
|
|
14
|
+
/**
|
|
15
|
+
* The slice of runner state attachDecisionScreenshot reads. The BrowserAgent
|
|
16
|
+
* class declares `implements RunnerDecisionScreenshotHost`, so a missing or
|
|
17
|
+
* mistyped member is a compile error — this interface IS the safety gate for
|
|
18
|
+
* the extraction.
|
|
19
|
+
*/
|
|
20
|
+
export interface RunnerDecisionScreenshotHost {
|
|
21
|
+
driver: Driver;
|
|
22
|
+
}
|
|
23
|
+
export declare function attachDecisionScreenshotImpl(self: RunnerDecisionScreenshotHost, state: PageState): Promise<PageState>;
|
|
24
|
+
//# sourceMappingURL=decision-screenshot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decision-screenshot.d.ts","sourceRoot":"","sources":["../../src/runner/decision-screenshot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C;;;;;GAKG;AACH,MAAM,WAAW,4BAA4B;IAC3C,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,4BAA4B,CAChD,IAAI,EAAE,4BAA4B,EAClC,KAAK,EAAE,SAAS,GACf,OAAO,CAAC,SAAS,CAAC,CAQpB"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Decision-time screenshot attachment: lazily captures a base64 screenshot and
|
|
3
|
+
* folds it into the PageState when vision is requested for a decide/scout turn.
|
|
4
|
+
*
|
|
5
|
+
* Extracted from runner.ts via the delegate + host-interface pattern. The
|
|
6
|
+
* BrowserAgent class keeps a thin delegator (`attachDecisionScreenshot`); this
|
|
7
|
+
* free function holds the method body verbatim and reads runner state through
|
|
8
|
+
* {@link RunnerDecisionScreenshotHost}, which BrowserAgent `implements` so tsc
|
|
9
|
+
* proves the host surface is complete. Behavior is byte-identical to the
|
|
10
|
+
* inlined version.
|
|
11
|
+
*/
|
|
12
|
+
export async function attachDecisionScreenshotImpl(self, state) {
|
|
13
|
+
if (state.screenshot || !self.driver.screenshot)
|
|
14
|
+
return state;
|
|
15
|
+
try {
|
|
16
|
+
const screenshot = await self.driver.screenshot();
|
|
17
|
+
return { ...state, screenshot: screenshot.toString('base64') };
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
return state;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=decision-screenshot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decision-screenshot.js","sourceRoot":"","sources":["../../src/runner/decision-screenshot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAeH,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,IAAkC,EAClC,KAAgB;IAEhB,IAAI,KAAK,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU;QAAE,OAAO,KAAK,CAAC;IAC9D,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QAClD,OAAO,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;IACjE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Allowed-domain enforcement: filtering scout candidates to in-scope hosts,
|
|
3
|
+
* blocking disallowed search-result clicks before they fire, and snapping the
|
|
4
|
+
* agent back inside the allowed host set when navigation strays.
|
|
5
|
+
*
|
|
6
|
+
* Extracted from runner.ts via the delegate + host-interface pattern. The
|
|
7
|
+
* BrowserAgent class keeps thin delegators (`filterScoutCandidatesByAllowedDomains`,
|
|
8
|
+
* `inspectDisallowedSearchClick`, `enforceAllowedDomainBoundary`); these free
|
|
9
|
+
* functions hold the method bodies verbatim and read runner state through
|
|
10
|
+
* {@link RunnerDomainHost}, which BrowserAgent `implements` so tsc proves the
|
|
11
|
+
* host surface is complete. Behavior is byte-identical to the inlined versions
|
|
12
|
+
* — same ordering, subdomain tolerance, and message text.
|
|
13
|
+
*/
|
|
14
|
+
import type { Driver } from '../drivers/types.js';
|
|
15
|
+
import type { Action, PageState, Scenario } from '../types.js';
|
|
16
|
+
/**
|
|
17
|
+
* The slice of runner state the allowed-domain enforcement helpers read. The
|
|
18
|
+
* BrowserAgent class declares `implements RunnerDomainHost`, so a missing or
|
|
19
|
+
* mistyped member is a compile error — this interface IS the safety gate for
|
|
20
|
+
* the extraction.
|
|
21
|
+
*/
|
|
22
|
+
export interface RunnerDomainHost {
|
|
23
|
+
driver: Driver;
|
|
24
|
+
}
|
|
25
|
+
export declare function filterScoutCandidatesByAllowedDomainsImpl(self: RunnerDomainHost, candidates: Array<{
|
|
26
|
+
ref: string;
|
|
27
|
+
text: string;
|
|
28
|
+
score: number;
|
|
29
|
+
}>, allowedDomains: string[] | undefined): Promise<Array<{
|
|
30
|
+
ref: string;
|
|
31
|
+
text: string;
|
|
32
|
+
score: number;
|
|
33
|
+
}>>;
|
|
34
|
+
export declare function inspectDisallowedSearchClickImpl(self: RunnerDomainHost, state: PageState, scenario: Scenario, action: Action): Promise<string | undefined>;
|
|
35
|
+
export declare function enforceAllowedDomainBoundaryImpl(self: RunnerDomainHost, preActionState: PageState, scenario: Scenario): Promise<string | undefined>;
|
|
36
|
+
//# sourceMappingURL=domain-boundary.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"domain-boundary.d.ts","sourceRoot":"","sources":["../../src/runner/domain-boundary.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAM/D;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,yCAAyC,CAC7D,IAAI,EAAE,gBAAgB,EACtB,UAAU,EAAE,KAAK,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,EAC/D,cAAc,EAAE,MAAM,EAAE,GAAG,SAAS,GACnC,OAAO,CAAC,KAAK,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAgB9D;AAED,wBAAsB,gCAAgC,CACpD,IAAI,EAAE,gBAAgB,EACtB,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAkB7B;AAED,wBAAsB,gCAAgC,CACpD,IAAI,EAAE,gBAAgB,EACtB,cAAc,EAAE,SAAS,EACzB,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAyB7B"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Allowed-domain enforcement: filtering scout candidates to in-scope hosts,
|
|
3
|
+
* blocking disallowed search-result clicks before they fire, and snapping the
|
|
4
|
+
* agent back inside the allowed host set when navigation strays.
|
|
5
|
+
*
|
|
6
|
+
* Extracted from runner.ts via the delegate + host-interface pattern. The
|
|
7
|
+
* BrowserAgent class keeps thin delegators (`filterScoutCandidatesByAllowedDomains`,
|
|
8
|
+
* `inspectDisallowedSearchClick`, `enforceAllowedDomainBoundary`); these free
|
|
9
|
+
* functions hold the method bodies verbatim and read runner state through
|
|
10
|
+
* {@link RunnerDomainHost}, which BrowserAgent `implements` so tsc proves the
|
|
11
|
+
* host surface is complete. Behavior is byte-identical to the inlined versions
|
|
12
|
+
* — same ordering, subdomain tolerance, and message text.
|
|
13
|
+
*/
|
|
14
|
+
import { safeHostname } from './utils.js';
|
|
15
|
+
import { buildSearchResultsGuidance } from './search-guidance.js';
|
|
16
|
+
import { domainRoot } from './allowed-domains.js';
|
|
17
|
+
export async function filterScoutCandidatesByAllowedDomainsImpl(self, candidates, allowedDomains) {
|
|
18
|
+
if (!allowedDomains || allowedDomains.length === 0 || !self.driver.inspectSelectorHref) {
|
|
19
|
+
return candidates;
|
|
20
|
+
}
|
|
21
|
+
const allowedHosts = new Set(allowedDomains.map((domain) => domain.toLowerCase()));
|
|
22
|
+
const resolved = await Promise.all(candidates.map(async (candidate) => {
|
|
23
|
+
const href = await self.driver.inspectSelectorHref(candidate.ref).catch(() => undefined);
|
|
24
|
+
const host = href ? safeHostname(href) : undefined;
|
|
25
|
+
return { candidate, host };
|
|
26
|
+
}));
|
|
27
|
+
return resolved
|
|
28
|
+
.filter(({ host }) => !host || allowedHosts.has(host))
|
|
29
|
+
.map(({ candidate }) => candidate);
|
|
30
|
+
}
|
|
31
|
+
export async function inspectDisallowedSearchClickImpl(self, state, scenario, action) {
|
|
32
|
+
if (action.action !== 'click')
|
|
33
|
+
return undefined;
|
|
34
|
+
if (!scenario.allowedDomains || scenario.allowedDomains.length === 0)
|
|
35
|
+
return undefined;
|
|
36
|
+
if (!buildSearchResultsGuidance(state, scenario.goal, scenario.allowedDomains))
|
|
37
|
+
return undefined;
|
|
38
|
+
if (!self.driver.inspectSelectorHref)
|
|
39
|
+
return undefined;
|
|
40
|
+
const href = await self.driver.inspectSelectorHref(action.selector);
|
|
41
|
+
const host = href ? safeHostname(href) : undefined;
|
|
42
|
+
if (!href || !host)
|
|
43
|
+
return undefined;
|
|
44
|
+
const allowedLower = scenario.allowedDomains.map((domain) => domain.toLowerCase());
|
|
45
|
+
if (allowedLower.includes(host))
|
|
46
|
+
return undefined;
|
|
47
|
+
// First-party subdomain tolerance
|
|
48
|
+
if (allowedLower.some((h) => domainRoot(h) === domainRoot(host)))
|
|
49
|
+
return undefined;
|
|
50
|
+
return [
|
|
51
|
+
`Blocked action: selector ${action.selector} resolves to ${href}, which is outside the allowed host set: ${scenario.allowedDomains.join(', ')}.`,
|
|
52
|
+
'Choose a result from an allowed host instead, even if the snippet text looks relevant.',
|
|
53
|
+
].join(' ');
|
|
54
|
+
}
|
|
55
|
+
export async function enforceAllowedDomainBoundaryImpl(self, preActionState, scenario) {
|
|
56
|
+
if (!scenario.allowedDomains || scenario.allowedDomains.length === 0)
|
|
57
|
+
return undefined;
|
|
58
|
+
const currentUrl = self.driver.getUrl?.() ?? preActionState.url;
|
|
59
|
+
const currentHost = safeHostname(currentUrl);
|
|
60
|
+
if (!currentHost)
|
|
61
|
+
return undefined;
|
|
62
|
+
const allowedHosts = scenario.allowedDomains.map((domain) => domain.toLowerCase());
|
|
63
|
+
if (allowedHosts.includes(currentHost))
|
|
64
|
+
return undefined;
|
|
65
|
+
// First-party subdomain tolerance: allow navigation within the same registrable domain
|
|
66
|
+
const currentRoot = domainRoot(currentHost);
|
|
67
|
+
if (allowedHosts.some((h) => domainRoot(h) === currentRoot))
|
|
68
|
+
return undefined;
|
|
69
|
+
const previousHost = safeHostname(preActionState.url);
|
|
70
|
+
if (previousHost && allowedHosts.includes(previousHost)) {
|
|
71
|
+
await self.driver.execute({ action: 'navigate', url: preActionState.url }).catch(() => { });
|
|
72
|
+
}
|
|
73
|
+
else if (scenario.startUrl) {
|
|
74
|
+
await self.driver.execute({ action: 'navigate', url: scenario.startUrl }).catch(() => { });
|
|
75
|
+
}
|
|
76
|
+
return [
|
|
77
|
+
`Boundary violation: landed on ${currentUrl}, but the allowed host set is ${allowedHosts.join(', ')}.`,
|
|
78
|
+
'Return to an allowed host and continue from there; do not rely on disallowed subdomains even if their snippet looks relevant.',
|
|
79
|
+
].join(' ');
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=domain-boundary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"domain-boundary.js","sourceRoot":"","sources":["../../src/runner/domain-boundary.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-action effect verification: the helper the runner loop calls after each
|
|
3
|
+
* executed action to decide whether the expected effect actually landed.
|
|
4
|
+
*
|
|
5
|
+
* Extracted from runner.ts via the delegate + host-interface pattern. The
|
|
6
|
+
* BrowserAgent class keeps a thin delegator (`verifyEffect`); this free
|
|
7
|
+
* function holds the method body verbatim and reads runner state through
|
|
8
|
+
* {@link RunnerEffectVerifyHost}, which BrowserAgent `implements` so tsc proves
|
|
9
|
+
* the host surface is complete. Behavior is byte-identical to the inlined
|
|
10
|
+
* version — same settle-wait conditions, timing, and verifier call.
|
|
11
|
+
*/
|
|
12
|
+
import type { Driver } from '../drivers/types.js';
|
|
13
|
+
import type { Action, PageState } from '../types.js';
|
|
14
|
+
/**
|
|
15
|
+
* The slice of runner state the effect verifier reads. The BrowserAgent class
|
|
16
|
+
* declares `implements RunnerEffectVerifyHost`, so a missing or mistyped member
|
|
17
|
+
* is a compile error — this interface IS the safety gate for the extraction.
|
|
18
|
+
* All members are public on BrowserAgent by construction.
|
|
19
|
+
*/
|
|
20
|
+
export interface RunnerEffectVerifyHost {
|
|
21
|
+
driver: Driver;
|
|
22
|
+
cachedPostState: PageState | undefined;
|
|
23
|
+
}
|
|
24
|
+
export declare function verifyEffectImpl(self: RunnerEffectVerifyHost, expectedEffect: string, preActionState: PageState, actionType?: Action['action']): Promise<{
|
|
25
|
+
verified: boolean;
|
|
26
|
+
reason?: string;
|
|
27
|
+
}>;
|
|
28
|
+
//# sourceMappingURL=effect-verify.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"effect-verify.d.ts","sourceRoot":"","sources":["../../src/runner/effect-verify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAIrD;;;;;GAKG;AACH,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,SAAS,GAAG,SAAS,CAAC;CACxC;AAED,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,sBAAsB,EAC5B,cAAc,EAAE,MAAM,EACtB,cAAc,EAAE,SAAS,EACzB,UAAU,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,GAC5B,OAAO,CAAC;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CA4BjD"}
|