@tangle-network/browser-agent-driver 0.33.3 → 0.35.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/browser-launch.d.ts +6 -0
- package/dist/browser-launch.d.ts.map +1 -1
- package/dist/browser-launch.js +3 -0
- package/dist/browser-launch.js.map +1 -1
- 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 +740 -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 +12 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +20 -2
- 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 +273 -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 +100 -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 +220 -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 +172 -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 +123 -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 +27 -1
- 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 +23 -5
|
@@ -0,0 +1,391 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transport layer for the Brain decision engine: provider/model-name
|
|
3
|
+
* resolution, lazy (cached) model-client instantiation, and the single
|
|
4
|
+
* `generate()` round-trip every Brain method funnels through.
|
|
5
|
+
*
|
|
6
|
+
* Extracted from brain/index.ts via the delegate + host-interface pattern.
|
|
7
|
+
* The Brain class keeps thin delegators; these free functions hold the method
|
|
8
|
+
* bodies verbatim and read Brain state through {@link BrainModelHost}. tsc
|
|
9
|
+
* proves the host surface is complete because Brain `implements` it.
|
|
10
|
+
*/
|
|
11
|
+
import { generateText, streamText } from 'ai';
|
|
12
|
+
import { resolveProviderApiKey, resolveProviderModelName, isClaudeCodeRoutedModel, shouldSendTemperature, ZAI_OPENAI_BASE_URL, ZAI_ANTHROPIC_BASE_URL, } from '../provider-defaults.js';
|
|
13
|
+
import { generateWithSandboxBackend } from '../providers/sandbox-backend.js';
|
|
14
|
+
import { JSON_TEXT_OUTPUT, createForceNonStreamingFetch } from './provider-fetch.js';
|
|
15
|
+
export function resolveModelNameImpl(self, provider, requestedModel) {
|
|
16
|
+
return resolveProviderModelName(provider, requestedModel, {
|
|
17
|
+
sandboxBackendType: provider === 'sandbox-backend' ? self.sandboxBackendType : undefined,
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
export function shouldSendTemperatureImpl(self, modelName = self.modelName) {
|
|
21
|
+
// Reasoning models reject an explicit temperature — see the shared
|
|
22
|
+
// capability check (GPT-5, o-series, Opus 4.8+, Kimi K2.6+, DeepSeek
|
|
23
|
+
// reasoner).
|
|
24
|
+
return shouldSendTemperature(modelName);
|
|
25
|
+
}
|
|
26
|
+
export function generationOptionsImpl(self, maxOutputTokens, selection) {
|
|
27
|
+
const providerName = selection?.provider || self.provider;
|
|
28
|
+
const modelName = resolveModelNameImpl(self, providerName, selection?.model || self.modelName);
|
|
29
|
+
// CLI-spawning providers (codex-cli, claude-code, and zai-coding-plan
|
|
30
|
+
// when routed through claude-code) don't accept maxOutputTokens through
|
|
31
|
+
// the AI SDK shape — the subprocess controls its own output.
|
|
32
|
+
const isCliSpawning = providerName === 'codex-cli' ||
|
|
33
|
+
providerName === 'claude-code' ||
|
|
34
|
+
providerName === 'sandbox-backend' ||
|
|
35
|
+
(providerName === 'zai-coding-plan' && isClaudeCodeRoutedModel(modelName));
|
|
36
|
+
const omitsLegacyMaxTokens = providerName === 'cli-bridge' || /(^|\/)gpt-5(?:[.-]|$)/i.test(modelName);
|
|
37
|
+
return {
|
|
38
|
+
...(shouldSendTemperatureImpl(self, modelName) ? { temperature: 0 } : {}),
|
|
39
|
+
...(isCliSpawning || omitsLegacyMaxTokens ? {} : { maxOutputTokens }),
|
|
40
|
+
// forceReasoning routes the AI SDK to OpenAI's Responses API
|
|
41
|
+
// (`/v1/responses`). Most third-party OpenAI-compatible proxies
|
|
42
|
+
// (router.tangle.tools, LiteLLM, Together, vLLM, etc.) only implement
|
|
43
|
+
// /v1/chat/completions — Responses API requests come back 503 / 4xx
|
|
44
|
+
// and the SDK throws "Invalid JSON response". Disable on proxied
|
|
45
|
+
// openai routes; only OpenAI direct supports the Responses API today.
|
|
46
|
+
...(providerName === 'openai'
|
|
47
|
+
&& /(^|\/)gpt-5(?:[.-]|$)/i.test(modelName)
|
|
48
|
+
&& !isProxiedOpenAIImpl(self, providerName)
|
|
49
|
+
? {
|
|
50
|
+
providerOptions: {
|
|
51
|
+
openai: {
|
|
52
|
+
forceReasoning: true,
|
|
53
|
+
maxCompletionTokens: maxOutputTokens,
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
}
|
|
57
|
+
: {}),
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* True iff we're hitting an OpenAI-compatible *proxy* (router.tangle.tools,
|
|
62
|
+
* LiteLLM, etc.) rather than OpenAI direct. Used to downshift to the lowest
|
|
63
|
+
* common denominator API surface — chat-completions, no Responses API,
|
|
64
|
+
* non-streaming — that every OpenAI-compatible proxy is guaranteed to serve.
|
|
65
|
+
*
|
|
66
|
+
* The single source of truth for "we're talking to a proxy, be conservative
|
|
67
|
+
* about API features"; both `createForceNonStreamingFetch()` and the
|
|
68
|
+
* `forceReasoning` gate route through this predicate.
|
|
69
|
+
*/
|
|
70
|
+
export function isProxiedOpenAIImpl(self, providerName) {
|
|
71
|
+
return providerName === 'openai' && Boolean(self.baseUrl);
|
|
72
|
+
}
|
|
73
|
+
/** Get a LLM model instance, optionally with provider/model override (e.g. for CAPTCHA fallback) */
|
|
74
|
+
export async function getLanguageModelImpl(self, selection) {
|
|
75
|
+
return getModelImpl(self, selection);
|
|
76
|
+
}
|
|
77
|
+
/** Lazily create the LLM model instance based on provider config */
|
|
78
|
+
export async function getModelImpl(self, selection) {
|
|
79
|
+
const providerName = selection?.provider || self.provider;
|
|
80
|
+
const modelName = resolveModelNameImpl(self, providerName, selection?.model || self.modelName);
|
|
81
|
+
const apiKey = resolveProviderApiKey(providerName, self.explicitApiKey);
|
|
82
|
+
const cacheKey = `${providerName}:${modelName}`;
|
|
83
|
+
const cached = self.modelCache.get(cacheKey);
|
|
84
|
+
if (cached)
|
|
85
|
+
return cached;
|
|
86
|
+
let model;
|
|
87
|
+
switch (providerName) {
|
|
88
|
+
case 'anthropic': {
|
|
89
|
+
const { createAnthropic } = await import('@ai-sdk/anthropic');
|
|
90
|
+
const provider = createAnthropic({
|
|
91
|
+
apiKey,
|
|
92
|
+
...(self.baseUrl ? { baseURL: self.baseUrl } : {}),
|
|
93
|
+
});
|
|
94
|
+
model = provider(modelName);
|
|
95
|
+
break;
|
|
96
|
+
}
|
|
97
|
+
case 'google': {
|
|
98
|
+
const { createGoogleGenerativeAI } = await import('@ai-sdk/google');
|
|
99
|
+
const provider = createGoogleGenerativeAI({
|
|
100
|
+
apiKey,
|
|
101
|
+
...(self.baseUrl ? { baseURL: self.baseUrl } : {}),
|
|
102
|
+
});
|
|
103
|
+
model = provider(modelName);
|
|
104
|
+
break;
|
|
105
|
+
}
|
|
106
|
+
case 'cli-bridge': {
|
|
107
|
+
const { createOpenAI } = await import('@ai-sdk/openai');
|
|
108
|
+
const rawUrl = self.baseUrl || process.env.CLI_BRIDGE_URL;
|
|
109
|
+
if (!rawUrl) {
|
|
110
|
+
throw new Error('cli-bridge provider requires CLI_BRIDGE_URL or --base-url');
|
|
111
|
+
}
|
|
112
|
+
const baseURL = rawUrl.endsWith('/v1') ? rawUrl : `${rawUrl.replace(/\/+$/, '')}/v1`;
|
|
113
|
+
const provider = createOpenAI({
|
|
114
|
+
apiKey: apiKey || '',
|
|
115
|
+
baseURL,
|
|
116
|
+
});
|
|
117
|
+
model = provider.chat(modelName);
|
|
118
|
+
break;
|
|
119
|
+
}
|
|
120
|
+
case 'codex-cli': {
|
|
121
|
+
const { codexExec } = await import('ai-sdk-provider-codex-cli');
|
|
122
|
+
const env = {};
|
|
123
|
+
if (apiKey)
|
|
124
|
+
env.OPENAI_API_KEY = apiKey;
|
|
125
|
+
model = codexExec(modelName, {
|
|
126
|
+
allowNpx: process.env.CODEX_ALLOW_NPX !== '0',
|
|
127
|
+
skipGitRepoCheck: true,
|
|
128
|
+
...(process.env.CODEX_CLI_PATH ? { codexPath: process.env.CODEX_CLI_PATH } : {}),
|
|
129
|
+
...(Object.keys(env).length > 0 ? { env } : {}),
|
|
130
|
+
});
|
|
131
|
+
break;
|
|
132
|
+
}
|
|
133
|
+
case 'claude-code': {
|
|
134
|
+
const { createClaudeCode } = await import('ai-sdk-provider-claude-code');
|
|
135
|
+
const env = {};
|
|
136
|
+
if (apiKey)
|
|
137
|
+
env.ANTHROPIC_API_KEY = apiKey;
|
|
138
|
+
const provider = createClaudeCode({
|
|
139
|
+
defaultSettings: {
|
|
140
|
+
...(process.env.CLAUDE_CODE_CLI_PATH ? { pathToClaudeCodeExecutable: process.env.CLAUDE_CODE_CLI_PATH } : {}),
|
|
141
|
+
permissionMode: 'default',
|
|
142
|
+
allowDangerouslySkipPermissions: false,
|
|
143
|
+
// The Claude Code SDK only forwards image parts when streaming input
|
|
144
|
+
// is on; the vision-judge wiring sets this so completeVision images
|
|
145
|
+
// are not silently dropped. Left off for every other claude-code path.
|
|
146
|
+
...(self.claudeCodeStreamingInput ? { streamingInput: 'always' } : {}),
|
|
147
|
+
...(self.debug ? { verbose: true } : {}),
|
|
148
|
+
...(self.debug
|
|
149
|
+
? {
|
|
150
|
+
stderr: (chunk) => {
|
|
151
|
+
const line = chunk.trim();
|
|
152
|
+
if (line)
|
|
153
|
+
console.error(`[claude-code] ${line}`);
|
|
154
|
+
},
|
|
155
|
+
}
|
|
156
|
+
: {}),
|
|
157
|
+
...(Object.keys(env).length > 0 ? { env } : {}),
|
|
158
|
+
},
|
|
159
|
+
});
|
|
160
|
+
model = provider(modelName);
|
|
161
|
+
break;
|
|
162
|
+
}
|
|
163
|
+
case 'zai-coding-plan': {
|
|
164
|
+
// Z.ai coding plan: GLM models (glm-4.6, glm-4.5-air) at a fraction
|
|
165
|
+
// of Anthropic prices. Two backends:
|
|
166
|
+
// 1. Default — OpenAI-compatible endpoint, native GLM models
|
|
167
|
+
// 2. claude-code routed — spawn the Claude Code CLI subprocess
|
|
168
|
+
// with ANTHROPIC_BASE_URL/AUTH_TOKEN env vars pointed at Z.ai's
|
|
169
|
+
// Anthropic-compatible endpoint. The user gets the Claude Code
|
|
170
|
+
// agent loop with Z.ai pricing.
|
|
171
|
+
if (!apiKey) {
|
|
172
|
+
throw new Error('zai-coding-plan: API key required (set ZAI_API_KEY env var or pass --api-key)');
|
|
173
|
+
}
|
|
174
|
+
if (isClaudeCodeRoutedModel(modelName)) {
|
|
175
|
+
const { createClaudeCode } = await import('ai-sdk-provider-claude-code');
|
|
176
|
+
const env = {
|
|
177
|
+
// Override Claude Code's API base + auth at the env-var level.
|
|
178
|
+
// The CLI subprocess inherits these and routes all Anthropic
|
|
179
|
+
// API calls to Z.ai's Anthropic-compatible endpoint.
|
|
180
|
+
ANTHROPIC_BASE_URL: ZAI_ANTHROPIC_BASE_URL,
|
|
181
|
+
ANTHROPIC_AUTH_TOKEN: apiKey,
|
|
182
|
+
// Some Claude Code versions still read ANTHROPIC_API_KEY — set
|
|
183
|
+
// both so we don't depend on which env var name wins.
|
|
184
|
+
ANTHROPIC_API_KEY: apiKey,
|
|
185
|
+
};
|
|
186
|
+
const provider = createClaudeCode({
|
|
187
|
+
defaultSettings: {
|
|
188
|
+
...(process.env.CLAUDE_CODE_CLI_PATH ? { pathToClaudeCodeExecutable: process.env.CLAUDE_CODE_CLI_PATH } : {}),
|
|
189
|
+
permissionMode: 'default',
|
|
190
|
+
allowDangerouslySkipPermissions: false,
|
|
191
|
+
...(self.debug ? { verbose: true } : {}),
|
|
192
|
+
...(self.debug
|
|
193
|
+
? {
|
|
194
|
+
stderr: (chunk) => {
|
|
195
|
+
const line = chunk.trim();
|
|
196
|
+
if (line)
|
|
197
|
+
console.error(`[zai-claude-code] ${line}`);
|
|
198
|
+
},
|
|
199
|
+
}
|
|
200
|
+
: {}),
|
|
201
|
+
env,
|
|
202
|
+
},
|
|
203
|
+
});
|
|
204
|
+
// The Claude Code SDK takes a model alias (sonnet/haiku/opus); when
|
|
205
|
+
// the user passes a glm-* name we just hand it through — Claude
|
|
206
|
+
// Code passes it as the model param to the upstream API, which is
|
|
207
|
+
// Z.ai's Anthropic-compat endpoint that maps it to the right glm.
|
|
208
|
+
// For 'claude-code'/'cc' we default to 'sonnet' which Z.ai aliases
|
|
209
|
+
// to its strongest glm model under the coding plan.
|
|
210
|
+
const ccModel = modelName === 'claude-code' || modelName === 'cc' ? 'sonnet' : modelName;
|
|
211
|
+
model = provider(ccModel);
|
|
212
|
+
break;
|
|
213
|
+
}
|
|
214
|
+
// Default path — direct OpenAI-compatible API to Z.ai. Z.ai's
|
|
215
|
+
// paas/v4 endpoint only implements `/chat/completions` (no
|
|
216
|
+
// `/responses`), so we MUST use `provider.chat(model)` rather than
|
|
217
|
+
// the bare `provider(model)` call which now defaults to the new
|
|
218
|
+
// OpenAI Responses API in @ai-sdk/openai v3+.
|
|
219
|
+
const { createOpenAI } = await import('@ai-sdk/openai');
|
|
220
|
+
const provider = createOpenAI({
|
|
221
|
+
apiKey,
|
|
222
|
+
baseURL: ZAI_OPENAI_BASE_URL,
|
|
223
|
+
});
|
|
224
|
+
model = provider.chat(modelName);
|
|
225
|
+
break;
|
|
226
|
+
}
|
|
227
|
+
default: {
|
|
228
|
+
// 'openai' or any OpenAI-compatible API (LiteLLM, Together, etc.).
|
|
229
|
+
// Same reason as the zai-coding-plan branch above: most third-party
|
|
230
|
+
// OpenAI-compatible proxies (LiteLLM, vLLM, Together) implement
|
|
231
|
+
// `/chat/completions` but not the new `/responses` API. Use the
|
|
232
|
+
// chat factory explicitly so we hit a path the upstream actually
|
|
233
|
+
// serves.
|
|
234
|
+
const { createOpenAI } = await import('@ai-sdk/openai');
|
|
235
|
+
const usingProxy = isProxiedOpenAIImpl(self, providerName);
|
|
236
|
+
const provider = createOpenAI({
|
|
237
|
+
apiKey: apiKey || '',
|
|
238
|
+
...(self.baseUrl ? { baseURL: self.baseUrl } : {}),
|
|
239
|
+
// Proxy downshift — see isProxiedOpenAI(). Routes like
|
|
240
|
+
// router.tangle.tools default chat-completions to SSE when the
|
|
241
|
+
// client omits `stream`, and the AI SDK's generateText errors with
|
|
242
|
+
// "Invalid JSON response" on SSE. Force stream: false on every
|
|
243
|
+
// chat-completions body. Paired with the forceReasoning gate in
|
|
244
|
+
// generationOptions() so all "talk to a proxy" downshifts share
|
|
245
|
+
// one predicate.
|
|
246
|
+
...(usingProxy ? { fetch: createForceNonStreamingFetch() } : {}),
|
|
247
|
+
});
|
|
248
|
+
model = provider.chat(modelName);
|
|
249
|
+
break;
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
self.modelCache.set(cacheKey, model);
|
|
253
|
+
return model;
|
|
254
|
+
}
|
|
255
|
+
export async function generateImpl(self, system, messages, selection, maxOutputTokens = 800) {
|
|
256
|
+
const providerName = selection?.provider || self.provider;
|
|
257
|
+
const modelName = resolveModelNameImpl(self, providerName, selection?.model || self.modelName);
|
|
258
|
+
// Sandbox backend doesn't accept structured system messages — flatten.
|
|
259
|
+
const systemForSandbox = typeof system === 'string'
|
|
260
|
+
? system
|
|
261
|
+
: system.map(m => m.content).join('\n\n');
|
|
262
|
+
if (providerName === 'sandbox-backend') {
|
|
263
|
+
const result = await generateWithSandboxBackend({
|
|
264
|
+
system: systemForSandbox,
|
|
265
|
+
messages,
|
|
266
|
+
model: modelName,
|
|
267
|
+
timeoutMs: self.llmTimeoutMs,
|
|
268
|
+
debug: self.debug,
|
|
269
|
+
backendType: self.sandboxBackendType,
|
|
270
|
+
backendProfile: self.sandboxBackendProfile,
|
|
271
|
+
backendModelProvider: self.sandboxBackendProvider,
|
|
272
|
+
});
|
|
273
|
+
return { text: result.text };
|
|
274
|
+
}
|
|
275
|
+
const model = await getModelImpl(self, {
|
|
276
|
+
provider: providerName,
|
|
277
|
+
model: modelName,
|
|
278
|
+
});
|
|
279
|
+
// Anthropic supports structured system messages with cache_control. For
|
|
280
|
+
// every other provider, flatten back to a string — they ignore the array
|
|
281
|
+
// form's per-message provider options anyway, and some (claude-code,
|
|
282
|
+
// codex-cli) wrap their own subprocess CLI which only takes plain text.
|
|
283
|
+
const systemForRequest = providerName === 'anthropic' || typeof system === 'string'
|
|
284
|
+
? system
|
|
285
|
+
: systemForSandbox;
|
|
286
|
+
const generationSettings = {
|
|
287
|
+
model,
|
|
288
|
+
system: systemForRequest,
|
|
289
|
+
messages,
|
|
290
|
+
...(providerName === 'cli-bridge' ? { output: JSON_TEXT_OUTPUT } : {}),
|
|
291
|
+
...generationOptionsImpl(self, maxOutputTokens, { provider: providerName, model: modelName }),
|
|
292
|
+
abortSignal: AbortSignal.timeout(self.llmTimeoutMs),
|
|
293
|
+
};
|
|
294
|
+
const result = providerName === 'cli-bridge'
|
|
295
|
+
? await (async () => {
|
|
296
|
+
const streamed = streamText(generationSettings);
|
|
297
|
+
const [text, usage, providerMetadata] = await Promise.all([
|
|
298
|
+
streamed.text,
|
|
299
|
+
streamed.totalUsage,
|
|
300
|
+
streamed.providerMetadata,
|
|
301
|
+
]);
|
|
302
|
+
return { text, usage, providerMetadata };
|
|
303
|
+
})()
|
|
304
|
+
: await generateText(generationSettings);
|
|
305
|
+
// Extract prompt-cache stats from the AI SDK's PROVIDER-AGNOSTIC fields:
|
|
306
|
+
// result.usage.inputTokenDetails.{cacheReadTokens, cacheWriteTokens}
|
|
307
|
+
//
|
|
308
|
+
// These flow uniformly from every provider that supports prompt caching:
|
|
309
|
+
// - OpenAI (gpt-5.4, gpt-4.1-mini): AUTOMATIC server-side caching for
|
|
310
|
+
// >1024 token prefixes, no markers needed. Returns cached_tokens.
|
|
311
|
+
// - Anthropic (claude-*): EXPLICIT cache_control markers required (we
|
|
312
|
+
// set them in buildSystemForDecide). Returns cache_read_input_tokens.
|
|
313
|
+
// - ZAI / GLM (zai-coding-plan via OpenAI-compatible endpoint): AUTOMATIC
|
|
314
|
+
// server-side caching, returns cached_tokens in prompt_tokens_details.
|
|
315
|
+
// - Google Gemini: explicit `cachedContent` ID-based caching (different
|
|
316
|
+
// paradigm — not currently exercised).
|
|
317
|
+
//
|
|
318
|
+
// The unified inputTokenDetails fields mean we get cache observability
|
|
319
|
+
// for free across providers without per-provider extraction code.
|
|
320
|
+
const inputDetails = result.usage?.inputTokenDetails;
|
|
321
|
+
let cacheReadInputTokens = typeof inputDetails?.cacheReadTokens === 'number'
|
|
322
|
+
? inputDetails.cacheReadTokens
|
|
323
|
+
: undefined;
|
|
324
|
+
let cacheCreationInputTokens = typeof inputDetails?.cacheWriteTokens === 'number'
|
|
325
|
+
? inputDetails.cacheWriteTokens
|
|
326
|
+
: undefined;
|
|
327
|
+
// Fallback: some providers expose cache stats only via providerMetadata.
|
|
328
|
+
// Anthropic uses cacheReadInputTokens / cacheCreationInputTokens directly,
|
|
329
|
+
// OpenAI sometimes lands cached_tokens under providerMetadata.openai.
|
|
330
|
+
if (cacheReadInputTokens === undefined || cacheCreationInputTokens === undefined) {
|
|
331
|
+
const meta = result.providerMetadata;
|
|
332
|
+
const anthropicMeta = meta?.anthropic;
|
|
333
|
+
const openaiMeta = meta?.openai;
|
|
334
|
+
if (cacheReadInputTokens === undefined) {
|
|
335
|
+
const fromAnthropic = typeof anthropicMeta?.cacheReadInputTokens === 'number'
|
|
336
|
+
? anthropicMeta.cacheReadInputTokens
|
|
337
|
+
: undefined;
|
|
338
|
+
const fromOpenAI = typeof openaiMeta?.cachedPromptTokens === 'number'
|
|
339
|
+
? openaiMeta.cachedPromptTokens
|
|
340
|
+
: undefined;
|
|
341
|
+
cacheReadInputTokens = fromAnthropic ?? fromOpenAI;
|
|
342
|
+
}
|
|
343
|
+
if (cacheCreationInputTokens === undefined) {
|
|
344
|
+
const fromAnthropic = typeof anthropicMeta?.cacheCreationInputTokens === 'number'
|
|
345
|
+
? anthropicMeta.cacheCreationInputTokens
|
|
346
|
+
: undefined;
|
|
347
|
+
cacheCreationInputTokens = fromAnthropic;
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
return {
|
|
351
|
+
text: result.text,
|
|
352
|
+
tokensUsed: result.usage?.totalTokens,
|
|
353
|
+
inputTokens: result.usage?.inputTokens ?? undefined,
|
|
354
|
+
outputTokens: result.usage?.outputTokens ?? undefined,
|
|
355
|
+
cacheReadInputTokens,
|
|
356
|
+
cacheCreationInputTokens,
|
|
357
|
+
};
|
|
358
|
+
}
|
|
359
|
+
/**
|
|
360
|
+
* Generic text-completion entry point for non-agent uses (GEPA reflective
|
|
361
|
+
* mutation, ad-hoc rubric authoring, knowledge distillation). Returns the
|
|
362
|
+
* raw text + token usage; callers parse JSON themselves.
|
|
363
|
+
*
|
|
364
|
+
* No tool use, no decode-loop heuristics — just a single round-trip through
|
|
365
|
+
* the configured provider/model.
|
|
366
|
+
*/
|
|
367
|
+
export async function completeImpl(self, system, user, options = {}) {
|
|
368
|
+
const result = await generateImpl(self, system, [{ role: 'user', content: user }], undefined, options.maxOutputTokens ?? 1500);
|
|
369
|
+
return { text: result.text, tokensUsed: result.tokensUsed };
|
|
370
|
+
}
|
|
371
|
+
/**
|
|
372
|
+
* Multimodal sibling of {@link completeImpl}: a single round-trip with a system
|
|
373
|
+
* prompt, a user prompt, and one-or-more already-encoded images. The narrow
|
|
374
|
+
* vision seam the reference-grounded taste judge binds to (one Brain per
|
|
375
|
+
* `{ provider, model }` ref), built on the same `generate` so it goes through
|
|
376
|
+
* the existing provider abstraction — any vision-capable backend works.
|
|
377
|
+
*
|
|
378
|
+
* Images arrive ENCODED (`{ image, mediaType }`, base64/data); the disk read +
|
|
379
|
+
* mediaType inference live in the judge's `createBrainVisionModel` adapter, so
|
|
380
|
+
* this method does no IO. It is NOT `auditDesign` — the page-audit seam stays
|
|
381
|
+
* off-limits to taste comparison by contract.
|
|
382
|
+
*/
|
|
383
|
+
export async function completeVisionImpl(self, system, user, images, options = {}) {
|
|
384
|
+
const content = [
|
|
385
|
+
{ type: 'text', text: user },
|
|
386
|
+
...images.map((img) => ({ type: 'image', image: img.image, mediaType: img.mediaType })),
|
|
387
|
+
];
|
|
388
|
+
const result = await generateImpl(self, system, [{ role: 'user', content }], undefined, options.maxOutputTokens ?? 1500);
|
|
389
|
+
return { text: result.text, tokensUsed: result.tokensUsed };
|
|
390
|
+
}
|
|
391
|
+
//# sourceMappingURL=model-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-client.js","sourceRoot":"","sources":["../../src/brain/model-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Whole-task planning for the Brain engine: a single LLM call that returns a
|
|
3
|
+
* structured, deterministically-executable Plan (or null when the response is
|
|
4
|
+
* unusable, signalling the runner to fall back to the per-action loop).
|
|
5
|
+
*
|
|
6
|
+
* Extracted from brain/index.ts via the delegate + host-interface pattern.
|
|
7
|
+
* The Brain class keeps a thin `plan` delegator; this free function holds the
|
|
8
|
+
* method body verbatim and reads Brain state through {@link BrainPlanHost},
|
|
9
|
+
* which Brain `implements` so tsc proves the host surface is complete.
|
|
10
|
+
* Behavior is byte-identical — same JSON tolerance, step validation, and
|
|
11
|
+
* fallback shapes.
|
|
12
|
+
*/
|
|
13
|
+
import type { ModelMessage, SystemModelMessage } from 'ai';
|
|
14
|
+
import type { PageState, Plan } from '../types.js';
|
|
15
|
+
import type { BrainProvider, ModelSelection, GenerateResult } from './model-client.js';
|
|
16
|
+
/**
|
|
17
|
+
* The slice of Brain state the planner reads. Brain declares
|
|
18
|
+
* `implements BrainPlanHost`, so a missing or mistyped member is a compile
|
|
19
|
+
* error — this interface IS the safety gate for the extraction. All members
|
|
20
|
+
* are public on Brain by construction.
|
|
21
|
+
*/
|
|
22
|
+
export interface BrainPlanHost {
|
|
23
|
+
provider: BrainProvider;
|
|
24
|
+
modelName: string;
|
|
25
|
+
plannerModel?: string;
|
|
26
|
+
plannerProvider?: string;
|
|
27
|
+
observationMode: 'dom' | 'vision' | 'hybrid';
|
|
28
|
+
generate(system: string | SystemModelMessage[], messages: ModelMessage[], selection?: ModelSelection, maxOutputTokens?: number): Promise<GenerateResult>;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Generate a structured plan for the entire task with one LLM call.
|
|
32
|
+
*
|
|
33
|
+
* The runner executes the plan deterministically (no LLM between steps),
|
|
34
|
+
* falling back to per-action `decide()` only when verification fails.
|
|
35
|
+
* Returns null when:
|
|
36
|
+
* - the LLM response is unparseable JSON (fall through to per-action)
|
|
37
|
+
* - the plan has zero steps
|
|
38
|
+
* - any plan step has an invalid/unknown action shape
|
|
39
|
+
*
|
|
40
|
+
* The caller (BrowserAgent.run) treats null as "planner unavailable,
|
|
41
|
+
* use per-action loop".
|
|
42
|
+
*/
|
|
43
|
+
export declare function planImpl(self: BrainPlanHost, goal: string, state: PageState, options?: {
|
|
44
|
+
maxSteps?: number;
|
|
45
|
+
extraContext?: string;
|
|
46
|
+
}): Promise<{
|
|
47
|
+
plan: Plan | null;
|
|
48
|
+
raw: string;
|
|
49
|
+
durationMs: number;
|
|
50
|
+
tokensUsed?: number;
|
|
51
|
+
inputTokens?: number;
|
|
52
|
+
outputTokens?: number;
|
|
53
|
+
cacheReadInputTokens?: number;
|
|
54
|
+
cacheCreationInputTokens?: number;
|
|
55
|
+
parseError?: string;
|
|
56
|
+
}>;
|
|
57
|
+
//# sourceMappingURL=plan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../src/brain/plan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,IAAI,CAAC;AAC3D,OAAO,KAAK,EAAU,SAAS,EAAE,IAAI,EAAY,MAAM,aAAa,CAAC;AAKrE,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEvF;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,aAAa,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC7C,QAAQ,CACN,MAAM,EAAE,MAAM,GAAG,kBAAkB,EAAE,EACrC,QAAQ,EAAE,YAAY,EAAE,EACxB,SAAS,CAAC,EAAE,cAAc,EAC1B,eAAe,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,cAAc,CAAC,CAAC;CAC5B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,QAAQ,CAC5B,IAAI,EAAE,aAAa,EACnB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,SAAS,EAChB,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,GACrD,OAAO,CAAC;IACT,IAAI,EAAE,IAAI,GAAG,IAAI,CAAA;IACjB,GAAG,EAAE,MAAM,CAAA;IACX,UAAU,EAAE,MAAM,CAAA;IAClB,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;IACjC,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAC,CAmLD"}
|