@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,42 @@
|
|
|
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 { verifyExpectedEffect } from './effect-verification.js';
|
|
13
|
+
export async function verifyEffectImpl(self, expectedEffect, preActionState, actionType) {
|
|
14
|
+
// Only pause for actions that mutate the page in flight (navigation,
|
|
15
|
+
// clicks that may trigger XHR/route transitions, form submits). For
|
|
16
|
+
// pure reads, scrolls, hovers, and waits the page state is already
|
|
17
|
+
// settled by the time execute returns. The previous unconditional
|
|
18
|
+
// 100ms wait was pure dead time on every turn.
|
|
19
|
+
const needsSettleWait = actionType === 'click'
|
|
20
|
+
|| actionType === 'navigate'
|
|
21
|
+
|| actionType === 'press'
|
|
22
|
+
|| actionType === 'select';
|
|
23
|
+
// Kick observe off immediately and let the settle wait race against it.
|
|
24
|
+
// observe() polls waitForLoadState internally, so the 50ms settle is
|
|
25
|
+
// really only there to let click handlers schedule their first XHR; we
|
|
26
|
+
// don't need to *block* on it before starting observe.
|
|
27
|
+
const observePromise = self.driver.observe().catch(() => preActionState);
|
|
28
|
+
if (needsSettleWait) {
|
|
29
|
+
await Promise.all([
|
|
30
|
+
observePromise,
|
|
31
|
+
new Promise(r => setTimeout(r, 50)),
|
|
32
|
+
]);
|
|
33
|
+
}
|
|
34
|
+
const postState = await observePromise;
|
|
35
|
+
self.cachedPostState = postState;
|
|
36
|
+
return verifyExpectedEffect({
|
|
37
|
+
expectedEffect,
|
|
38
|
+
preActionState,
|
|
39
|
+
postActionState: postState,
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=effect-verify.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"effect-verify.js","sourceRoot":"","sources":["../../src/runner/effect-verify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAahE,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,IAA4B,EAC5B,cAAsB,EACtB,cAAyB,EACzB,UAA6B;IAE7B,qEAAqE;IACrE,oEAAoE;IACpE,mEAAmE;IACnE,kEAAkE;IAClE,+CAA+C;IAC/C,MAAM,eAAe,GAAG,UAAU,KAAK,OAAO;WACzC,UAAU,KAAK,UAAU;WACzB,UAAU,KAAK,OAAO;WACtB,UAAU,KAAK,QAAQ,CAAC;IAC7B,wEAAwE;IACxE,qEAAqE;IACrE,uEAAuE;IACvE,uDAAuD;IACvD,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,CAAC;IACzE,IAAI,eAAe,EAAE,CAAC;QACpB,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,cAAc;YACd,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;SACpC,CAAC,CAAC;IACL,CAAC;IACD,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC;IACvC,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;IACjC,OAAO,oBAAoB,CAAC;QAC1B,cAAc;QACd,cAAc;QACd,eAAe,EAAE,SAAS;KAC3B,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deterministic plan execution: the runner loop's replan path hands a Plan to
|
|
3
|
+
* this helper, which drives each step through the driver and verifies the
|
|
4
|
+
* post-condition without re-entering the LLM between steps.
|
|
5
|
+
*
|
|
6
|
+
* Extracted from runner.ts via the delegate + host-interface pattern. The
|
|
7
|
+
* BrowserAgent class keeps a thin delegator (`executePlan`); this free function
|
|
8
|
+
* holds the method body verbatim and reads runner state through
|
|
9
|
+
* {@link RunnerExecuteHost}, which BrowserAgent `implements` so tsc proves the
|
|
10
|
+
* host surface is complete. Behavior is byte-identical to the inlined version —
|
|
11
|
+
* same ordering, event emissions, auto-pass list, verification thresholds, and
|
|
12
|
+
* fall-through reasons.
|
|
13
|
+
*/
|
|
14
|
+
import type { Driver } from '../drivers/types.js';
|
|
15
|
+
import type { AgentConfig, PageState, Plan, Scenario, Turn } from '../types.js';
|
|
16
|
+
import { RunState } from '../run-state.js';
|
|
17
|
+
import type { TurnEventBus } from './events.js';
|
|
18
|
+
/**
|
|
19
|
+
* The slice of runner state plan execution reads. The BrowserAgent class
|
|
20
|
+
* declares `implements RunnerExecuteHost`, so a missing or mistyped member is a
|
|
21
|
+
* compile error — this interface IS the safety gate for the extraction. All
|
|
22
|
+
* members are public on BrowserAgent by construction.
|
|
23
|
+
*/
|
|
24
|
+
export interface RunnerExecuteHost {
|
|
25
|
+
driver: Driver;
|
|
26
|
+
config: AgentConfig;
|
|
27
|
+
bus: TurnEventBus;
|
|
28
|
+
onTurn?: (turn: Turn) => void;
|
|
29
|
+
cachedPostState: PageState | undefined;
|
|
30
|
+
}
|
|
31
|
+
export declare function executePlanImpl(self: RunnerExecuteHost, plan: Plan, scenario: Scenario, runId: string, turns: Turn[], runState: RunState, startingTurnIndex: number,
|
|
32
|
+
/**
|
|
33
|
+
* Token usage from the Brain.plan() LLM call that produced this plan.
|
|
34
|
+
* The plan call's tokens are NOT attached to any per-step turn — there's
|
|
35
|
+
* one plan call per N steps. To make the run-level cost tally honest,
|
|
36
|
+
* we attribute the plan call to the FIRST step's Turn artifact so the
|
|
37
|
+
* downstream sum (in baseline-summary.json / report.json) reflects the
|
|
38
|
+
* real LLM spend.
|
|
39
|
+
*/
|
|
40
|
+
planCallTokens?: {
|
|
41
|
+
tokensUsed?: number;
|
|
42
|
+
inputTokens?: number;
|
|
43
|
+
outputTokens?: number;
|
|
44
|
+
cacheReadInputTokens?: number;
|
|
45
|
+
cacheCreationInputTokens?: number;
|
|
46
|
+
}): Promise<{
|
|
47
|
+
kind: 'completed';
|
|
48
|
+
lastState: PageState;
|
|
49
|
+
finalResult?: string;
|
|
50
|
+
turnsConsumed: number;
|
|
51
|
+
} | {
|
|
52
|
+
kind: 'deviated';
|
|
53
|
+
lastState: PageState;
|
|
54
|
+
failedStepIndex: number;
|
|
55
|
+
reason: string;
|
|
56
|
+
turnsConsumed: number;
|
|
57
|
+
}>;
|
|
58
|
+
//# sourceMappingURL=execute-plan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execute-plan.d.ts","sourceRoot":"","sources":["../../src/runner/execute-plan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAChF,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAMhD;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,WAAW,CAAC;IACpB,GAAG,EAAE,YAAY,CAAC;IAClB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IAC9B,eAAe,EAAE,SAAS,GAAG,SAAS,CAAC;CACxC;AAED,wBAAsB,eAAe,CACnC,IAAI,EAAE,iBAAiB,EACvB,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,IAAI,EAAE,EACb,QAAQ,EAAE,QAAQ,EAClB,iBAAiB,EAAE,MAAM;AACzB;;;;;;;GAOG;AACH,cAAc,CAAC,EAAE;IACf,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,wBAAwB,CAAC,EAAE,MAAM,CAAA;CAClC,GACA,OAAO,CACN;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,SAAS,EAAE,SAAS,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,GACxF;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,SAAS,EAAE,SAAS,CAAC;IAAC,eAAe,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,CAC7G,CA2aA"}
|
|
@@ -0,0 +1,426 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deterministic plan execution: the runner loop's replan path hands a Plan to
|
|
3
|
+
* this helper, which drives each step through the driver and verifies the
|
|
4
|
+
* post-condition without re-entering the LLM between steps.
|
|
5
|
+
*
|
|
6
|
+
* Extracted from runner.ts via the delegate + host-interface pattern. The
|
|
7
|
+
* BrowserAgent class keeps a thin delegator (`executePlan`); this free function
|
|
8
|
+
* holds the method body verbatim and reads runner state through
|
|
9
|
+
* {@link RunnerExecuteHost}, which BrowserAgent `implements` so tsc proves the
|
|
10
|
+
* host surface is complete. Behavior is byte-identical to the inlined version —
|
|
11
|
+
* same ordering, event emissions, auto-pass list, verification thresholds, and
|
|
12
|
+
* fall-through reasons.
|
|
13
|
+
*/
|
|
14
|
+
import { hasPlaceholderPattern, isMeaningfulRunScriptOutput } from './completion-policy.js';
|
|
15
|
+
import { pushGoalVerificationEvidence } from './utils.js';
|
|
16
|
+
import { verifyExpectedEffect } from './effect-verification.js';
|
|
17
|
+
export async function executePlanImpl(self, plan, scenario, runId, turns, runState, startingTurnIndex,
|
|
18
|
+
/**
|
|
19
|
+
* Token usage from the Brain.plan() LLM call that produced this plan.
|
|
20
|
+
* The plan call's tokens are NOT attached to any per-step turn — there's
|
|
21
|
+
* one plan call per N steps. To make the run-level cost tally honest,
|
|
22
|
+
* we attribute the plan call to the FIRST step's Turn artifact so the
|
|
23
|
+
* downstream sum (in baseline-summary.json / report.json) reflects the
|
|
24
|
+
* real LLM spend.
|
|
25
|
+
*/
|
|
26
|
+
planCallTokens) {
|
|
27
|
+
let currentTurnIndex = startingTurnIndex;
|
|
28
|
+
let lastState = turns[turns.length - 1]?.state
|
|
29
|
+
?? { url: '', title: '', snapshot: '' };
|
|
30
|
+
// Track the last successful runScript output so placeholder complete
|
|
31
|
+
// results can be substituted with the real script output.
|
|
32
|
+
let lastRunScriptOutput = null;
|
|
33
|
+
// Track extractWithIndex matches for per-action fallback; the LLM must
|
|
34
|
+
// read the list and pick by index.
|
|
35
|
+
let lastExtractOutput = null;
|
|
36
|
+
for (let stepIdx = 0; stepIdx < plan.steps.length; stepIdx++) {
|
|
37
|
+
if (scenario.signal?.aborted) {
|
|
38
|
+
return {
|
|
39
|
+
kind: 'deviated',
|
|
40
|
+
lastState,
|
|
41
|
+
failedStepIndex: stepIdx,
|
|
42
|
+
reason: scenario.signal.reason || 'Cancelled',
|
|
43
|
+
turnsConsumed: stepIdx,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
const step = plan.steps[stepIdx];
|
|
47
|
+
const stepStartedAt = Date.now();
|
|
48
|
+
const turnNumber = currentTurnIndex + 1;
|
|
49
|
+
currentTurnIndex++;
|
|
50
|
+
// Refresh the snapshot before EVERY step. The plan was built from a
|
|
51
|
+
// single observe() call at turn 1; later steps may target a different
|
|
52
|
+
// page entirely (after navigate / click "Next"). The first observe
|
|
53
|
+
// here is also what verify-against will eventually consume.
|
|
54
|
+
const preStepState = await self.driver.observe().catch(() => lastState);
|
|
55
|
+
lastState = preStepState;
|
|
56
|
+
// Wrap each plan step in a Turn artifact so post-run analysis (the
|
|
57
|
+
// viewer, the events.jsonl persistence, the metrics) sees a unified
|
|
58
|
+
// timeline regardless of whether the runner used the planner or the
|
|
59
|
+
// per-action loop.
|
|
60
|
+
//
|
|
61
|
+
// Token attribution: the first step carries the Brain.plan() LLM call's
|
|
62
|
+
// token usage so run-level cost includes planning.
|
|
63
|
+
const isFirstStep = stepIdx === 0;
|
|
64
|
+
const turn = {
|
|
65
|
+
turn: turnNumber,
|
|
66
|
+
state: preStepState,
|
|
67
|
+
action: step.action,
|
|
68
|
+
reasoning: step.rationale ?? `Plan step ${stepIdx + 1}/${plan.steps.length}`,
|
|
69
|
+
expectedEffect: step.expectedEffect,
|
|
70
|
+
plan: plan.steps.map((s) => s.rationale ?? s.action.action),
|
|
71
|
+
currentStep: stepIdx,
|
|
72
|
+
durationMs: 0,
|
|
73
|
+
...(isFirstStep && planCallTokens?.tokensUsed !== undefined ? { tokensUsed: planCallTokens.tokensUsed } : {}),
|
|
74
|
+
...(isFirstStep && planCallTokens?.inputTokens !== undefined ? { inputTokens: planCallTokens.inputTokens } : {}),
|
|
75
|
+
...(isFirstStep && planCallTokens?.outputTokens !== undefined ? { outputTokens: planCallTokens.outputTokens } : {}),
|
|
76
|
+
...(isFirstStep && planCallTokens?.cacheReadInputTokens !== undefined ? { cacheReadInputTokens: planCallTokens.cacheReadInputTokens } : {}),
|
|
77
|
+
...(isFirstStep && planCallTokens?.cacheCreationInputTokens !== undefined ? { cacheCreationInputTokens: planCallTokens.cacheCreationInputTokens } : {}),
|
|
78
|
+
};
|
|
79
|
+
// Terminal actions: complete and abort don't go through driver.execute
|
|
80
|
+
// — the runner handles them as the end of the plan.
|
|
81
|
+
if (step.action.action === 'complete') {
|
|
82
|
+
// Substitute placeholder complete results with prior runScript output.
|
|
83
|
+
let resolvedResult = step.action.result;
|
|
84
|
+
if (lastRunScriptOutput
|
|
85
|
+
&& typeof resolvedResult === 'string'
|
|
86
|
+
&& hasPlaceholderPattern(resolvedResult)) {
|
|
87
|
+
if (self.config.debug) {
|
|
88
|
+
console.log(`[Runner] Substituting placeholder complete.result with runScript output (${lastRunScriptOutput.length} chars)`);
|
|
89
|
+
}
|
|
90
|
+
resolvedResult = lastRunScriptOutput;
|
|
91
|
+
turn.reasoning = `${turn.reasoning ?? ''} [substituted runScript output]`.trim();
|
|
92
|
+
}
|
|
93
|
+
turn.durationMs = Date.now() - stepStartedAt;
|
|
94
|
+
turns.push(turn);
|
|
95
|
+
self.onTurn?.(turn);
|
|
96
|
+
self.bus.emitNow({
|
|
97
|
+
type: 'plan-step-executed',
|
|
98
|
+
runId,
|
|
99
|
+
turn: turnNumber,
|
|
100
|
+
stepIndex: stepIdx + 1,
|
|
101
|
+
totalSteps: plan.steps.length,
|
|
102
|
+
action: step.action,
|
|
103
|
+
executeSuccess: true,
|
|
104
|
+
verified: true,
|
|
105
|
+
durationMs: turn.durationMs,
|
|
106
|
+
});
|
|
107
|
+
return {
|
|
108
|
+
kind: 'completed',
|
|
109
|
+
lastState,
|
|
110
|
+
finalResult: resolvedResult,
|
|
111
|
+
turnsConsumed: stepIdx + 1,
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
if (step.action.action === 'abort') {
|
|
115
|
+
turn.durationMs = Date.now() - stepStartedAt;
|
|
116
|
+
turns.push(turn);
|
|
117
|
+
self.onTurn?.(turn);
|
|
118
|
+
self.bus.emitNow({
|
|
119
|
+
type: 'plan-deviated',
|
|
120
|
+
runId,
|
|
121
|
+
turn: turnNumber,
|
|
122
|
+
stepIndex: stepIdx + 1,
|
|
123
|
+
totalSteps: plan.steps.length,
|
|
124
|
+
reason: `plan aborted: ${step.action.reason}`,
|
|
125
|
+
});
|
|
126
|
+
return {
|
|
127
|
+
kind: 'deviated',
|
|
128
|
+
lastState,
|
|
129
|
+
failedStepIndex: stepIdx,
|
|
130
|
+
reason: `plan aborted: ${step.action.reason}`,
|
|
131
|
+
turnsConsumed: stepIdx + 1,
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
// Execute the action via the existing driver path. This emits
|
|
135
|
+
// execute-started / execute-completed events on the bus exactly
|
|
136
|
+
// like the per-action loop does.
|
|
137
|
+
//
|
|
138
|
+
// Cap each plan step at 10s so missing selectors fail quickly and hand
|
|
139
|
+
// control back to per-action mode.
|
|
140
|
+
self.bus.emitNow({ type: 'execute-started', runId, turn: turnNumber, action: step.action });
|
|
141
|
+
const execStartedAt = Date.now();
|
|
142
|
+
const planStepTimeoutMs = 10_000;
|
|
143
|
+
let execResult;
|
|
144
|
+
try {
|
|
145
|
+
execResult = await Promise.race([
|
|
146
|
+
self.driver.execute(step.action),
|
|
147
|
+
new Promise((resolve) => setTimeout(() => resolve({ success: false, error: `plan step wall-clock timeout after ${planStepTimeoutMs}ms` }), planStepTimeoutMs)),
|
|
148
|
+
]);
|
|
149
|
+
}
|
|
150
|
+
catch (err) {
|
|
151
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
152
|
+
execResult = { success: false, error: message };
|
|
153
|
+
}
|
|
154
|
+
const execDurationMs = Date.now() - execStartedAt;
|
|
155
|
+
self.bus.emitNow({
|
|
156
|
+
type: 'execute-completed',
|
|
157
|
+
runId,
|
|
158
|
+
turn: turnNumber,
|
|
159
|
+
action: step.action,
|
|
160
|
+
success: execResult.success,
|
|
161
|
+
...(execResult.error ? { error: execResult.error } : {}),
|
|
162
|
+
...(execResult.bounds ? { bounds: execResult.bounds } : {}),
|
|
163
|
+
durationMs: execDurationMs,
|
|
164
|
+
});
|
|
165
|
+
if (!execResult.success) {
|
|
166
|
+
turn.error = execResult.error;
|
|
167
|
+
turn.durationMs = Date.now() - stepStartedAt;
|
|
168
|
+
turn.verified = false;
|
|
169
|
+
turn.verificationFailure = `execute failed: ${execResult.error}`;
|
|
170
|
+
turns.push(turn);
|
|
171
|
+
self.onTurn?.(turn);
|
|
172
|
+
runState.recordError();
|
|
173
|
+
self.bus.emitNow({
|
|
174
|
+
type: 'plan-step-executed',
|
|
175
|
+
runId,
|
|
176
|
+
turn: turnNumber,
|
|
177
|
+
stepIndex: stepIdx + 1,
|
|
178
|
+
totalSteps: plan.steps.length,
|
|
179
|
+
action: step.action,
|
|
180
|
+
executeSuccess: false,
|
|
181
|
+
verified: false,
|
|
182
|
+
durationMs: Date.now() - stepStartedAt,
|
|
183
|
+
...(execResult.error ? { verifyReason: execResult.error } : {}),
|
|
184
|
+
});
|
|
185
|
+
self.bus.emitNow({
|
|
186
|
+
type: 'plan-deviated',
|
|
187
|
+
runId,
|
|
188
|
+
turn: turnNumber,
|
|
189
|
+
stepIndex: stepIdx + 1,
|
|
190
|
+
totalSteps: plan.steps.length,
|
|
191
|
+
reason: `execute failed: ${execResult.error}`,
|
|
192
|
+
});
|
|
193
|
+
return {
|
|
194
|
+
kind: 'deviated',
|
|
195
|
+
lastState,
|
|
196
|
+
failedStepIndex: stepIdx,
|
|
197
|
+
reason: `execute failed at step ${stepIdx + 1}: ${execResult.error}`,
|
|
198
|
+
turnsConsumed: stepIdx + 1,
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
runState.clearConsecutiveErrors();
|
|
202
|
+
if (execResult.bounds)
|
|
203
|
+
turn.actionBounds = execResult.bounds;
|
|
204
|
+
// Capture runScript output for placeholder substitution and evidence.
|
|
205
|
+
if (step.action.action === 'runScript' && typeof execResult.data === 'string' && execResult.data.length > 0) {
|
|
206
|
+
lastRunScriptOutput = execResult.data;
|
|
207
|
+
if (execResult.data.length > 10) {
|
|
208
|
+
runState.recordEvidence(`EXTRACTED (turn ${currentTurnIndex}): ${execResult.data.slice(0, 500)}`);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
// Capture extractWithIndex output for per-action fallback.
|
|
212
|
+
if (step.action.action === 'extractWithIndex' && typeof execResult.data === 'string' && execResult.data.length > 0) {
|
|
213
|
+
lastExtractOutput = execResult.data;
|
|
214
|
+
// Also push as goal verification evidence so the verifier sees what
|
|
215
|
+
// the agent extracted.
|
|
216
|
+
runState.firstSufficientEvidenceTurn ??= currentTurnIndex;
|
|
217
|
+
pushGoalVerificationEvidence(runState.goalVerificationEvidence, `EXTRACT RESULT:\n${execResult.data}`);
|
|
218
|
+
if (execResult.data.length > 10) {
|
|
219
|
+
runState.recordEvidence(`EXTRACTED (turn ${currentTurnIndex}): ${execResult.data.slice(0, 500)}`);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
// Verify the post-condition. We re-observe to get the post-action
|
|
223
|
+
// state, then run the same verifyExpectedEffect helper the per-action
|
|
224
|
+
// loop uses. The fresh observe is also stashed in cachedPostState so
|
|
225
|
+
// the next step's pre-step observe can reuse it.
|
|
226
|
+
self.bus.emitNow({
|
|
227
|
+
type: 'verify-started',
|
|
228
|
+
runId,
|
|
229
|
+
turn: turnNumber,
|
|
230
|
+
expectedEffect: step.expectedEffect,
|
|
231
|
+
});
|
|
232
|
+
const verifyStartedAt = Date.now();
|
|
233
|
+
// Auto-pass list — these actions either don't observably mutate
|
|
234
|
+
// the page state OR they're self-verifying (the underlying Playwright
|
|
235
|
+
// call throws on real failure, so a successful return means the
|
|
236
|
+
// mutation actually happened). Strict expectedEffect verification
|
|
237
|
+
// would generate false negatives on the per-action loop fallback for
|
|
238
|
+
// these. Plan execution trusts the execute result.
|
|
239
|
+
//
|
|
240
|
+
// - wait / scroll / hover: don't mutate observable snapshot state
|
|
241
|
+
// - runScript / evaluate / verifyPreview: meta actions
|
|
242
|
+
// - fill / clickSequence: self-verifying (Playwright throws on miss),
|
|
243
|
+
// AND input values don't always reflect in the ARIA snapshot, so
|
|
244
|
+
// the permissive "did state change?" check would also miss them
|
|
245
|
+
const isAutoPass = step.action.action === 'wait'
|
|
246
|
+
|| step.action.action === 'scroll'
|
|
247
|
+
|| step.action.action === 'hover'
|
|
248
|
+
|| step.action.action === 'runScript'
|
|
249
|
+
|| step.action.action === 'extractWithIndex'
|
|
250
|
+
|| step.action.action === 'evaluate'
|
|
251
|
+
|| step.action.action === 'verifyPreview'
|
|
252
|
+
|| step.action.action === 'fill'
|
|
253
|
+
|| step.action.action === 'clickSequence';
|
|
254
|
+
// Settle wait for mutating actions, mirroring verifyEffect's logic
|
|
255
|
+
const needsSettleWait = step.action.action === 'click'
|
|
256
|
+
|| step.action.action === 'navigate'
|
|
257
|
+
|| step.action.action === 'press'
|
|
258
|
+
|| step.action.action === 'select'
|
|
259
|
+
|| step.action.action === 'fill'
|
|
260
|
+
|| step.action.action === 'clickSequence';
|
|
261
|
+
const observePromise = self.driver.observe().catch(() => preStepState);
|
|
262
|
+
if (needsSettleWait) {
|
|
263
|
+
await Promise.all([
|
|
264
|
+
observePromise,
|
|
265
|
+
new Promise((r) => setTimeout(r, 50)),
|
|
266
|
+
]);
|
|
267
|
+
}
|
|
268
|
+
const postStepState = await observePromise;
|
|
269
|
+
self.cachedPostState = postStepState;
|
|
270
|
+
lastState = postStepState;
|
|
271
|
+
// Plan verification is more permissive than per-action verification:
|
|
272
|
+
// a step passes if (a) it's a non-mutating action, OR (b) the strict
|
|
273
|
+
// verifier passes, OR (c) the snapshot/url changed in any meaningful
|
|
274
|
+
// way (the action did SOMETHING). Strict failure-on-no-change is
|
|
275
|
+
// appropriate for the per-action loop where the agent can recover,
|
|
276
|
+
// but plan execution needs to push forward unless there's positive
|
|
277
|
+
// evidence of failure.
|
|
278
|
+
let verifyResult;
|
|
279
|
+
if (isAutoPass) {
|
|
280
|
+
verifyResult = { verified: true };
|
|
281
|
+
}
|
|
282
|
+
else {
|
|
283
|
+
const strictResult = verifyExpectedEffect({
|
|
284
|
+
expectedEffect: step.expectedEffect,
|
|
285
|
+
preActionState: preStepState,
|
|
286
|
+
postActionState: postStepState,
|
|
287
|
+
});
|
|
288
|
+
if (strictResult.verified) {
|
|
289
|
+
verifyResult = strictResult;
|
|
290
|
+
}
|
|
291
|
+
else {
|
|
292
|
+
// Permissive fallback: did the page change at all?
|
|
293
|
+
const stateChanged = preStepState.url !== postStepState.url
|
|
294
|
+
|| preStepState.title !== postStepState.title
|
|
295
|
+
|| preStepState.snapshot !== postStepState.snapshot;
|
|
296
|
+
if (stateChanged) {
|
|
297
|
+
verifyResult = { verified: true };
|
|
298
|
+
}
|
|
299
|
+
else {
|
|
300
|
+
verifyResult = strictResult;
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
turn.verified = verifyResult.verified;
|
|
305
|
+
if (!verifyResult.verified) {
|
|
306
|
+
turn.verificationFailure = verifyResult.reason;
|
|
307
|
+
}
|
|
308
|
+
turn.durationMs = Date.now() - stepStartedAt;
|
|
309
|
+
turns.push(turn);
|
|
310
|
+
self.onTurn?.(turn);
|
|
311
|
+
self.bus.emitNow({
|
|
312
|
+
type: 'verify-completed',
|
|
313
|
+
runId,
|
|
314
|
+
turn: turnNumber,
|
|
315
|
+
verified: verifyResult.verified,
|
|
316
|
+
...(verifyResult.reason ? { reason: verifyResult.reason } : {}),
|
|
317
|
+
durationMs: Date.now() - verifyStartedAt,
|
|
318
|
+
});
|
|
319
|
+
self.bus.emitNow({
|
|
320
|
+
type: 'plan-step-executed',
|
|
321
|
+
runId,
|
|
322
|
+
turn: turnNumber,
|
|
323
|
+
stepIndex: stepIdx + 1,
|
|
324
|
+
totalSteps: plan.steps.length,
|
|
325
|
+
action: step.action,
|
|
326
|
+
executeSuccess: true,
|
|
327
|
+
verified: verifyResult.verified,
|
|
328
|
+
durationMs: Date.now() - stepStartedAt,
|
|
329
|
+
...(verifyResult.reason ? { verifyReason: verifyResult.reason } : {}),
|
|
330
|
+
});
|
|
331
|
+
if (!verifyResult.verified) {
|
|
332
|
+
self.bus.emitNow({
|
|
333
|
+
type: 'plan-deviated',
|
|
334
|
+
runId,
|
|
335
|
+
turn: turnNumber,
|
|
336
|
+
stepIndex: stepIdx + 1,
|
|
337
|
+
totalSteps: plan.steps.length,
|
|
338
|
+
reason: `verification failed at step ${stepIdx + 1}: ${verifyResult.reason ?? 'expected effect not observed'}`,
|
|
339
|
+
});
|
|
340
|
+
return {
|
|
341
|
+
kind: 'deviated',
|
|
342
|
+
lastState,
|
|
343
|
+
failedStepIndex: stepIdx,
|
|
344
|
+
reason: `verification failed at step ${stepIdx + 1}: ${verifyResult.reason ?? 'expected effect not observed'}`,
|
|
345
|
+
turnsConsumed: stepIdx + 1,
|
|
346
|
+
};
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
// Auto-complete when the plan ends with meaningful runScript output.
|
|
350
|
+
const lastStep = plan.steps[plan.steps.length - 1];
|
|
351
|
+
if (lastStep
|
|
352
|
+
&& lastStep.action.action === 'runScript'
|
|
353
|
+
&& isMeaningfulRunScriptOutput(lastRunScriptOutput)) {
|
|
354
|
+
const synthTurnNumber = currentTurnIndex + 1;
|
|
355
|
+
const synthTurn = {
|
|
356
|
+
turn: synthTurnNumber,
|
|
357
|
+
state: lastState,
|
|
358
|
+
action: { action: 'complete', result: lastRunScriptOutput },
|
|
359
|
+
reasoning: 'Auto-complete: plan ended after runScript, runner emitted complete with the runScript output',
|
|
360
|
+
durationMs: 0,
|
|
361
|
+
};
|
|
362
|
+
turns.push(synthTurn);
|
|
363
|
+
self.onTurn?.(synthTurn);
|
|
364
|
+
self.bus.emitNow({
|
|
365
|
+
type: 'plan-step-executed',
|
|
366
|
+
runId,
|
|
367
|
+
turn: synthTurnNumber,
|
|
368
|
+
stepIndex: plan.steps.length + 1,
|
|
369
|
+
totalSteps: plan.steps.length + 1,
|
|
370
|
+
action: synthTurn.action,
|
|
371
|
+
executeSuccess: true,
|
|
372
|
+
verified: true,
|
|
373
|
+
durationMs: 0,
|
|
374
|
+
});
|
|
375
|
+
if (self.config.debug) {
|
|
376
|
+
console.log(`[Runner] Auto-emitted complete with runScript output (${lastRunScriptOutput.length} chars) after plan exhausted`);
|
|
377
|
+
}
|
|
378
|
+
return {
|
|
379
|
+
kind: 'completed',
|
|
380
|
+
lastState,
|
|
381
|
+
finalResult: lastRunScriptOutput,
|
|
382
|
+
turnsConsumed: plan.steps.length + 1,
|
|
383
|
+
};
|
|
384
|
+
}
|
|
385
|
+
// If the plan produced extractWithIndex matches, fall through with the
|
|
386
|
+
// match list so the LLM can choose the correct index.
|
|
387
|
+
if (lastExtractOutput) {
|
|
388
|
+
return {
|
|
389
|
+
kind: 'deviated',
|
|
390
|
+
lastState,
|
|
391
|
+
failedStepIndex: plan.steps.length,
|
|
392
|
+
reason: `plan completed extractWithIndex but the LLM must read the matches and pick by index. Match list:\n${lastExtractOutput.slice(0, 4000)}\n\nPick the index whose text matches the goal, then emit complete with result: <picked text>`,
|
|
393
|
+
turnsConsumed: plan.steps.length,
|
|
394
|
+
};
|
|
395
|
+
}
|
|
396
|
+
// If the plan ends with runScript but output is empty or placeholder-like,
|
|
397
|
+
// fall through to per-action mode instead of completing with bad data.
|
|
398
|
+
if (lastStep
|
|
399
|
+
&& lastStep.action.action === 'runScript'
|
|
400
|
+
&& !isMeaningfulRunScriptOutput(lastRunScriptOutput)) {
|
|
401
|
+
if (self.config.debug) {
|
|
402
|
+
console.log(`[Runner] runScript returned no meaningful output (${JSON.stringify(lastRunScriptOutput).slice(0, 100)}); falling through to per-action loop for two-pass extraction`);
|
|
403
|
+
}
|
|
404
|
+
return {
|
|
405
|
+
kind: 'deviated',
|
|
406
|
+
lastState,
|
|
407
|
+
failedStepIndex: plan.steps.length - 1,
|
|
408
|
+
reason: `runScript returned no meaningful output (got: ${JSON.stringify(lastRunScriptOutput).slice(0, 200)}). The first-pass extraction failed — re-observe the page and try extractWithIndex with a wide query (e.g. 'p, span, dd, code') and a contains filter naming the expected text fragment. Pick-by-content beats pick-by-selector when the planner couldn't see the data at plan time.`,
|
|
409
|
+
turnsConsumed: plan.steps.length,
|
|
410
|
+
};
|
|
411
|
+
}
|
|
412
|
+
// All steps verified BUT the plan ended without an explicit complete/abort.
|
|
413
|
+
// This means the planner emitted a finite sequence of "work" steps and
|
|
414
|
+
// didn't terminate. The right behavior is NOT to fabricate a complete —
|
|
415
|
+
// we treat plan exhaustion as a deviation that triggers fallback to the
|
|
416
|
+
// per-action loop. The per-action loop will continue from the current
|
|
417
|
+
// state and emit `complete` when the goal is genuinely met.
|
|
418
|
+
return {
|
|
419
|
+
kind: 'deviated',
|
|
420
|
+
lastState,
|
|
421
|
+
failedStepIndex: plan.steps.length,
|
|
422
|
+
reason: 'plan exhausted without an explicit complete or abort step — falling through to per-action loop to finish the task',
|
|
423
|
+
turnsConsumed: plan.steps.length,
|
|
424
|
+
};
|
|
425
|
+
}
|
|
426
|
+
//# sourceMappingURL=execute-plan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execute-plan.js","sourceRoot":"","sources":["../../src/runner/execute-plan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAOH,OAAO,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAC5F,OAAO,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAgBhE,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,IAAuB,EACvB,IAAU,EACV,QAAkB,EAClB,KAAa,EACb,KAAa,EACb,QAAkB,EAClB,iBAAyB;AACzB;;;;;;;GAOG;AACH,cAMC;IAKD,IAAI,gBAAgB,GAAG,iBAAiB,CAAA;IACxC,IAAI,SAAS,GAAc,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,KAAK;WACpD,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAA;IAEzC,qEAAqE;IACrE,0DAA0D;IAC1D,IAAI,mBAAmB,GAAkB,IAAI,CAAA;IAE7C,uEAAuE;IACvE,mCAAmC;IACnC,IAAI,iBAAiB,GAAkB,IAAI,CAAA;IAE3C,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC;QAC7D,IAAI,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;YAC7B,OAAO;gBACL,IAAI,EAAE,UAAU;gBAChB,SAAS;gBACT,eAAe,EAAE,OAAO;gBACxB,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,IAAI,WAAW;gBAC7C,aAAa,EAAE,OAAO;aACvB,CAAA;QACH,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAChC,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAChC,MAAM,UAAU,GAAG,gBAAgB,GAAG,CAAC,CAAA;QACvC,gBAAgB,EAAE,CAAA;QAElB,oEAAoE;QACpE,sEAAsE;QACtE,mEAAmE;QACnE,4DAA4D;QAC5D,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;QACvE,SAAS,GAAG,YAAY,CAAA;QAExB,mEAAmE;QACnE,oEAAoE;QACpE,oEAAoE;QACpE,mBAAmB;QACnB,EAAE;QACF,wEAAwE;QACxE,mDAAmD;QACnD,MAAM,WAAW,GAAG,OAAO,KAAK,CAAC,CAAA;QACjC,MAAM,IAAI,GAAS;YACjB,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,YAAY;YACnB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,aAAa,OAAO,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YAC5E,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;YAC3D,WAAW,EAAE,OAAO;YACpB,UAAU,EAAE,CAAC;YACb,GAAG,CAAC,WAAW,IAAI,cAAc,EAAE,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,cAAc,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7G,GAAG,CAAC,WAAW,IAAI,cAAc,EAAE,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,cAAc,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAChH,GAAG,CAAC,WAAW,IAAI,cAAc,EAAE,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,cAAc,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnH,GAAG,CAAC,WAAW,IAAI,cAAc,EAAE,oBAAoB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,oBAAoB,EAAE,cAAc,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3I,GAAG,CAAC,WAAW,IAAI,cAAc,EAAE,wBAAwB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,wBAAwB,EAAE,cAAc,CAAC,wBAAwB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACxJ,CAAA;QAED,uEAAuE;QACvE,oDAAoD;QACpD,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YACtC,uEAAuE;YACvE,IAAI,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAA;YACvC,IACE,mBAAmB;mBAChB,OAAO,cAAc,KAAK,QAAQ;mBAClC,qBAAqB,CAAC,cAAc,CAAC,EACxC,CAAC;gBACD,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;oBACtB,OAAO,CAAC,GAAG,CAAC,4EAA4E,mBAAmB,CAAC,MAAM,SAAS,CAAC,CAAA;gBAC9H,CAAC;gBACD,cAAc,GAAG,mBAAmB,CAAA;gBACpC,IAAI,CAAC,SAAS,GAAG,GAAG,IAAI,CAAC,SAAS,IAAI,EAAE,iCAAiC,CAAC,IAAI,EAAE,CAAA;YAClF,CAAC;YACD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,aAAa,CAAA;YAC5C,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAChB,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAA;YACnB,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;gBACf,IAAI,EAAE,oBAAoB;gBAC1B,KAAK;gBACL,IAAI,EAAE,UAAU;gBAChB,SAAS,EAAE,OAAO,GAAG,CAAC;gBACtB,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;gBAC7B,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,cAAc,EAAE,IAAI;gBACpB,QAAQ,EAAE,IAAI;gBACd,UAAU,EAAE,IAAI,CAAC,UAAU;aAC5B,CAAC,CAAA;YACF,OAAO;gBACL,IAAI,EAAE,WAAW;gBACjB,SAAS;gBACT,WAAW,EAAE,cAAc;gBAC3B,aAAa,EAAE,OAAO,GAAG,CAAC;aAC3B,CAAA;QACH,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;YACnC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,aAAa,CAAA;YAC5C,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAChB,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAA;YACnB,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;gBACf,IAAI,EAAE,eAAe;gBACrB,KAAK;gBACL,IAAI,EAAE,UAAU;gBAChB,SAAS,EAAE,OAAO,GAAG,CAAC;gBACtB,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;gBAC7B,MAAM,EAAE,iBAAiB,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;aAC9C,CAAC,CAAA;YACF,OAAO;gBACL,IAAI,EAAE,UAAU;gBAChB,SAAS;gBACT,eAAe,EAAE,OAAO;gBACxB,MAAM,EAAE,iBAAiB,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;gBAC7C,aAAa,EAAE,OAAO,GAAG,CAAC;aAC3B,CAAA;QACH,CAAC;QAED,8DAA8D;QAC9D,gEAAgE;QAChE,iCAAiC;QACjC,EAAE;QACF,uEAAuE;QACvE,mCAAmC;QACnC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;QAC3F,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAChC,MAAM,iBAAiB,GAAG,MAAM,CAAA;QAChC,IAAI,UAAkD,CAAA;QACtD,IAAI,CAAC;YACH,UAAU,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;gBAC9B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;gBAChC,IAAI,OAAO,CAAyC,CAAC,OAAO,EAAE,EAAE,CAC9D,UAAU,CACR,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,sCAAsC,iBAAiB,IAAI,EAAE,CAAC,EACrG,iBAAiB,CAClB,CACF;aACF,CAAC,CAAA;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YAChE,UAAU,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAA;QACjD,CAAC;QACD,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,aAAa,CAAA;QACjD,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;YACf,IAAI,EAAE,mBAAmB;YACzB,KAAK;YACL,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,OAAO,EAAE,UAAU,CAAC,OAAO;YAC3B,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACxD,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3D,UAAU,EAAE,cAAc;SAC3B,CAAC,CAAA;QAEF,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAA;YAC7B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,aAAa,CAAA;YAC5C,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAA;YACrB,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,UAAU,CAAC,KAAK,EAAE,CAAA;YAChE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAChB,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAA;YACnB,QAAQ,CAAC,WAAW,EAAE,CAAA;YACtB,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;gBACf,IAAI,EAAE,oBAAoB;gBAC1B,KAAK;gBACL,IAAI,EAAE,UAAU;gBAChB,SAAS,EAAE,OAAO,GAAG,CAAC;gBACtB,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;gBAC7B,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,cAAc,EAAE,KAAK;gBACrB,QAAQ,EAAE,KAAK;gBACf,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,aAAa;gBACtC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAChE,CAAC,CAAA;YACF,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;gBACf,IAAI,EAAE,eAAe;gBACrB,KAAK;gBACL,IAAI,EAAE,UAAU;gBAChB,SAAS,EAAE,OAAO,GAAG,CAAC;gBACtB,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;gBAC7B,MAAM,EAAE,mBAAmB,UAAU,CAAC,KAAK,EAAE;aAC9C,CAAC,CAAA;YACF,OAAO;gBACL,IAAI,EAAE,UAAU;gBAChB,SAAS;gBACT,eAAe,EAAE,OAAO;gBACxB,MAAM,EAAE,0BAA0B,OAAO,GAAG,CAAC,KAAK,UAAU,CAAC,KAAK,EAAE;gBACpE,aAAa,EAAE,OAAO,GAAG,CAAC;aAC3B,CAAA;QACH,CAAC;QAED,QAAQ,CAAC,sBAAsB,EAAE,CAAA;QACjC,IAAI,UAAU,CAAC,MAAM;YAAE,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,MAAM,CAAA;QAE5D,sEAAsE;QACtE,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,WAAW,IAAI,OAAO,UAAU,CAAC,IAAI,KAAK,QAAQ,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5G,mBAAmB,GAAG,UAAU,CAAC,IAAI,CAAA;YACrC,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;gBAChC,QAAQ,CAAC,cAAc,CAAC,mBAAmB,gBAAgB,MAAM,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAA;YACnG,CAAC;QACH,CAAC;QAED,2DAA2D;QAC3D,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,kBAAkB,IAAI,OAAO,UAAU,CAAC,IAAI,KAAK,QAAQ,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnH,iBAAiB,GAAG,UAAU,CAAC,IAAI,CAAA;YACnC,oEAAoE;YACpE,uBAAuB;YACvB,QAAQ,CAAC,2BAA2B,KAAK,gBAAgB,CAAA;YACzD,4BAA4B,CAAC,QAAQ,CAAC,wBAAwB,EAAE,oBAAoB,UAAU,CAAC,IAAI,EAAE,CAAC,CAAA;YACtG,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;gBAChC,QAAQ,CAAC,cAAc,CAAC,mBAAmB,gBAAgB,MAAM,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAA;YACnG,CAAC;QACH,CAAC;QAED,kEAAkE;QAClE,sEAAsE;QACtE,qEAAqE;QACrE,iDAAiD;QACjD,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;YACf,IAAI,EAAE,gBAAgB;YACtB,KAAK;YACL,IAAI,EAAE,UAAU;YAChB,cAAc,EAAE,IAAI,CAAC,cAAc;SACpC,CAAC,CAAA;QACF,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAClC,gEAAgE;QAChE,sEAAsE;QACtE,gEAAgE;QAChE,kEAAkE;QAClE,qEAAqE;QACrE,mDAAmD;QACnD,EAAE;QACF,kEAAkE;QAClE,uDAAuD;QACvD,sEAAsE;QACtE,mEAAmE;QACnE,kEAAkE;QAClE,MAAM,UAAU,GACd,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,MAAM;eAC1B,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,QAAQ;eAC/B,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,OAAO;eAC9B,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,WAAW;eAClC,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,kBAAkB;eACzC,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,UAAU;eACjC,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,eAAe;eACtC,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,MAAM;eAC7B,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,eAAe,CAAA;QAC3C,mEAAmE;QACnE,MAAM,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,OAAO;eACjD,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,UAAU;eACjC,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,OAAO;eAC9B,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,QAAQ;eAC/B,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,MAAM;eAC7B,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,eAAe,CAAA;QAC3C,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,CAAA;QACtE,IAAI,eAAe,EAAE,CAAC;YACpB,MAAM,OAAO,CAAC,GAAG,CAAC;gBAChB,cAAc;gBACd,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;aACtC,CAAC,CAAA;QACJ,CAAC;QACD,MAAM,aAAa,GAAG,MAAM,cAAc,CAAA;QAC1C,IAAI,CAAC,eAAe,GAAG,aAAa,CAAA;QACpC,SAAS,GAAG,aAAa,CAAA;QAEzB,qEAAqE;QACrE,qEAAqE;QACrE,qEAAqE;QACrE,iEAAiE;QACjE,mEAAmE;QACnE,mEAAmE;QACnE,uBAAuB;QACvB,IAAI,YAAoD,CAAA;QACxD,IAAI,UAAU,EAAE,CAAC;YACf,YAAY,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;QACnC,CAAC;aAAM,CAAC;YACN,MAAM,YAAY,GAAG,oBAAoB,CAAC;gBACxC,cAAc,EAAE,IAAI,CAAC,cAAc;gBACnC,cAAc,EAAE,YAAY;gBAC5B,eAAe,EAAE,aAAa;aAC/B,CAAC,CAAA;YACF,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC;gBAC1B,YAAY,GAAG,YAAY,CAAA;YAC7B,CAAC;iBAAM,CAAC;gBACN,mDAAmD;gBACnD,MAAM,YAAY,GAChB,YAAY,CAAC,GAAG,KAAK,aAAa,CAAC,GAAG;uBACnC,YAAY,CAAC,KAAK,KAAK,aAAa,CAAC,KAAK;uBAC1C,YAAY,CAAC,QAAQ,KAAK,aAAa,CAAC,QAAQ,CAAA;gBACrD,IAAI,YAAY,EAAE,CAAC;oBACjB,YAAY,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;gBACnC,CAAC;qBAAM,CAAC;oBACN,YAAY,GAAG,YAAY,CAAA;gBAC7B,CAAC;YACH,CAAC;QACH,CAAC;QACD,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAA;QACrC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;YAC3B,IAAI,CAAC,mBAAmB,GAAG,YAAY,CAAC,MAAM,CAAA;QAChD,CAAC;QACD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,aAAa,CAAA;QAC5C,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAChB,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAA;QAEnB,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;YACf,IAAI,EAAE,kBAAkB;YACxB,KAAK;YACL,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE,YAAY,CAAC,QAAQ;YAC/B,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/D,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,eAAe;SACzC,CAAC,CAAA;QACF,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;YACf,IAAI,EAAE,oBAAoB;YAC1B,KAAK;YACL,IAAI,EAAE,UAAU;YAChB,SAAS,EAAE,OAAO,GAAG,CAAC;YACtB,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;YAC7B,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,cAAc,EAAE,IAAI;YACpB,QAAQ,EAAE,YAAY,CAAC,QAAQ;YAC/B,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,aAAa;YACtC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACtE,CAAC,CAAA;QAEF,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;YAC3B,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;gBACf,IAAI,EAAE,eAAe;gBACrB,KAAK;gBACL,IAAI,EAAE,UAAU;gBAChB,SAAS,EAAE,OAAO,GAAG,CAAC;gBACtB,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;gBAC7B,MAAM,EAAE,+BAA+B,OAAO,GAAG,CAAC,KAAK,YAAY,CAAC,MAAM,IAAI,8BAA8B,EAAE;aAC/G,CAAC,CAAA;YACF,OAAO;gBACL,IAAI,EAAE,UAAU;gBAChB,SAAS;gBACT,eAAe,EAAE,OAAO;gBACxB,MAAM,EAAE,+BAA+B,OAAO,GAAG,CAAC,KAAK,YAAY,CAAC,MAAM,IAAI,8BAA8B,EAAE;gBAC9G,aAAa,EAAE,OAAO,GAAG,CAAC;aAC3B,CAAA;QACH,CAAC;IACH,CAAC;IAED,qEAAqE;IACrE,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IAClD,IACE,QAAQ;WACL,QAAQ,CAAC,MAAM,CAAC,MAAM,KAAK,WAAW;WACtC,2BAA2B,CAAC,mBAAmB,CAAC,EACnD,CAAC;QACD,MAAM,eAAe,GAAG,gBAAgB,GAAG,CAAC,CAAA;QAC5C,MAAM,SAAS,GAAS;YACtB,IAAI,EAAE,eAAe;YACrB,KAAK,EAAE,SAAS;YAChB,MAAM,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,mBAAoB,EAAE;YAC5D,SAAS,EAAE,8FAA8F;YACzG,UAAU,EAAE,CAAC;SACd,CAAA;QACD,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QACrB,IAAI,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAA;QACxB,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;YACf,IAAI,EAAE,oBAAoB;YAC1B,KAAK;YACL,IAAI,EAAE,eAAe;YACrB,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;YAChC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;YACjC,MAAM,EAAE,SAAS,CAAC,MAAM;YACxB,cAAc,EAAE,IAAI;YACpB,QAAQ,EAAE,IAAI;YACd,UAAU,EAAE,CAAC;SACd,CAAC,CAAA;QACF,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,yDAAyD,mBAAoB,CAAC,MAAM,8BAA8B,CAAC,CAAA;QACjI,CAAC;QACD,OAAO;YACL,IAAI,EAAE,WAAW;YACjB,SAAS;YACT,WAAW,EAAE,mBAAoB;YACjC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;SACrC,CAAA;IACH,CAAC;IAED,uEAAuE;IACvE,sDAAsD;IACtD,IAAI,iBAAiB,EAAE,CAAC;QACtB,OAAO;YACL,IAAI,EAAE,UAAU;YAChB,SAAS;YACT,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;YAClC,MAAM,EAAE,qGAAqG,iBAAiB,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,+FAA+F;YAC5O,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;SACjC,CAAA;IACH,CAAC;IAED,2EAA2E;IAC3E,uEAAuE;IACvE,IACE,QAAQ;WACL,QAAQ,CAAC,MAAM,CAAC,MAAM,KAAK,WAAW;WACtC,CAAC,2BAA2B,CAAC,mBAAmB,CAAC,EACpD,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,qDAAqD,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,+DAA+D,CAAC,CAAA;QACpL,CAAC;QACD,OAAO;YACL,IAAI,EAAE,UAAU;YAChB,SAAS;YACT,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;YACtC,MAAM,EAAE,iDAAiD,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,sRAAsR;YAChY,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;SACjC,CAAA;IACH,CAAC;IAED,4EAA4E;IAC5E,uEAAuE;IACvE,wEAAwE;IACxE,wEAAwE;IACxE,sEAAsE;IACtE,4DAA4D;IAC5D,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,SAAS;QACT,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;QAClC,MAAM,EAAE,mHAAmH;QAC3H,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;KACjC,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One-time max-turns extension decision.
|
|
3
|
+
*
|
|
4
|
+
* Pure: given the current turn and progress signals, decide whether to grant
|
|
5
|
+
* the single budget extension and to what new cap. The caller (the run loop)
|
|
6
|
+
* keeps the side effects — emitting the recovery event and mutating the live
|
|
7
|
+
* cap — so this stays a testable predicate over the loop's budget signals.
|
|
8
|
+
*/
|
|
9
|
+
export declare function decideMaxTurnsExtension(params: {
|
|
10
|
+
turn: number;
|
|
11
|
+
maxTurns: number;
|
|
12
|
+
extensionGranted: boolean;
|
|
13
|
+
isVisionMode: boolean;
|
|
14
|
+
lastProgressTurn: number;
|
|
15
|
+
}): {
|
|
16
|
+
extendedMax: number;
|
|
17
|
+
extra: number;
|
|
18
|
+
} | null;
|
|
19
|
+
//# sourceMappingURL=max-turns-extension.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"max-turns-extension.d.ts","sourceRoot":"","sources":["../../src/runner/max-turns-extension.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,YAAY,EAAE,OAAO,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,GAAG;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAiBhD"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One-time max-turns extension decision.
|
|
3
|
+
*
|
|
4
|
+
* Pure: given the current turn and progress signals, decide whether to grant
|
|
5
|
+
* the single budget extension and to what new cap. The caller (the run loop)
|
|
6
|
+
* keeps the side effects — emitting the recovery event and mutating the live
|
|
7
|
+
* cap — so this stays a testable predicate over the loop's budget signals.
|
|
8
|
+
*/
|
|
9
|
+
import { EXTENSION_TURNS_GRANTED, EXTENSION_HARD_CAP, EXTENSION_PROGRESS_LOOKBACK } from './constants.js';
|
|
10
|
+
export function decideMaxTurnsExtension(params) {
|
|
11
|
+
const { turn, maxTurns, extensionGranted, isVisionMode, lastProgressTurn } = params;
|
|
12
|
+
if (!(turn === maxTurns
|
|
13
|
+
&& !extensionGranted
|
|
14
|
+
&& !isVisionMode
|
|
15
|
+
&& maxTurns < EXTENSION_HARD_CAP
|
|
16
|
+
&& lastProgressTurn >= maxTurns - EXTENSION_PROGRESS_LOOKBACK)) {
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
const extendedMax = Math.min(maxTurns + EXTENSION_TURNS_GRANTED, EXTENSION_HARD_CAP);
|
|
20
|
+
const extra = extendedMax - maxTurns;
|
|
21
|
+
if (extra <= 0)
|
|
22
|
+
return null;
|
|
23
|
+
return { extendedMax, extra };
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=max-turns-extension.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"max-turns-extension.js","sourceRoot":"","sources":["../../src/runner/max-turns-extension.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AAE1G,MAAM,UAAU,uBAAuB,CAAC,MAMvC;IACC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,gBAAgB,EAAE,YAAY,EAAE,gBAAgB,EAAE,GAAG,MAAM,CAAC;IACpF,IACE,CAAC,CACC,IAAI,KAAK,QAAQ;WACd,CAAC,gBAAgB;WACjB,CAAC,YAAY;WACb,QAAQ,GAAG,kBAAkB;WAC7B,gBAAgB,IAAI,QAAQ,GAAG,2BAA2B,CAC9D,EACD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,uBAAuB,EAAE,kBAAkB,CAAC,CAAC;IACrF,MAAM,KAAK,GAAG,WAAW,GAAG,QAAQ,CAAC;IACrC,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC5B,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;AAChC,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Micro-plan follow-up selection — given the primary action the LLM chose and
|
|
3
|
+
* the optional `nextActions` it proposed, pick the safe subset to chain in the
|
|
4
|
+
* same turn, bounded by the configured per-turn action cap.
|
|
5
|
+
*/
|
|
6
|
+
import type { Action } from '../types.js';
|
|
7
|
+
export declare function selectMicroPlanFollowUps(primaryAction: Action, nextActions: Action[] | undefined, microPlanConfig: {
|
|
8
|
+
enabled?: boolean;
|
|
9
|
+
maxActionsPerTurn?: number;
|
|
10
|
+
} | undefined): Action[];
|
|
11
|
+
//# sourceMappingURL=micro-plan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"micro-plan.d.ts","sourceRoot":"","sources":["../../src/runner/micro-plan.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAG1C,wBAAgB,wBAAwB,CACtC,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,EAAE,GAAG,SAAS,EACjC,eAAe,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,GAC7E,MAAM,EAAE,CAwBV"}
|