Implements comprehensive anti-detection measures: - Override navigator.webdriver to return undefined - Inject fake chrome.runtime, chrome.loadTimes, chrome.csi objects - Add realistic plugins and mimeTypes arrays - Patch permissions API to hide automation - Set realistic navigator properties (languages, hardwareConcurrency, deviceMemory) - Remove ChromeDriver-specific window properties (cdc_*) - Patch Function.prototype.toString to hide modifications - Add Chrome flags: --disable-blink-features=AutomationControlled - Set realistic user-agent without HeadlessChrome identifier - Exclude 'enable-automation' switch Tested against bot detection sites: - bot.sannysoft.com: All major tests pass - Search engines: Works with DuckDuckGo, Yahoo, Brave, Startpage - Still detected by: Google reCAPTCHA, Cloudflare Turnstile, Bing
126 lines
4.6 KiB
TOML
126 lines
4.6 KiB
TOML
# G3 Configuration Example
|
|
#
|
|
# This file demonstrates the new provider configuration format.
|
|
# Provider references use the format: "<provider_type>.<config_name>"
|
|
|
|
[providers]
|
|
# Default provider used when no specific provider is specified
|
|
default_provider = "anthropic.default"
|
|
|
|
# Optional: Specify different providers for each mode
|
|
# If not specified, these fall back to default_provider
|
|
# planner = "anthropic.planner" # Provider for planning mode
|
|
# coach = "anthropic.default" # Provider for coach (code reviewer) in autonomous mode
|
|
# player = "anthropic.default" # Provider for player (code implementer) in autonomous mode
|
|
|
|
# Named Anthropic configurations
|
|
[providers.anthropic.default]
|
|
api_key = "your-anthropic-api-key"
|
|
model = "claude-sonnet-4-5"
|
|
max_tokens = 64000
|
|
temperature = 0.3
|
|
# cache_config = "ephemeral" # Optional: Enable prompt caching
|
|
# enable_1m_context = true # Optional: Enable 1M context (costs extra)
|
|
# thinking_budget_tokens = 10000 # Optional: Enable extended thinking mode
|
|
|
|
# Example: A separate config for planning mode with a more capable model
|
|
# [providers.anthropic.planner]
|
|
# api_key = "your-anthropic-api-key"
|
|
# model = "claude-opus-4-5"
|
|
# max_tokens = 64000
|
|
# thinking_budget_tokens = 16000
|
|
|
|
# Named Databricks configurations
|
|
[providers.databricks.default]
|
|
host = "https://your-workspace.cloud.databricks.com"
|
|
# token = "your-databricks-token" # Optional - will use OAuth if not provided
|
|
model = "databricks-claude-sonnet-4"
|
|
max_tokens = 4096
|
|
temperature = 0.1
|
|
use_oauth = true
|
|
|
|
# Named OpenAI configurations
|
|
# [providers.openai.default]
|
|
# api_key = "your-openai-api-key"
|
|
# model = "gpt-4-turbo"
|
|
# max_tokens = 4096
|
|
# temperature = 0.1
|
|
|
|
# Multiple OpenAI-compatible providers can be configured
|
|
# [providers.openai_compatible.openrouter]
|
|
# api_key = "your-openrouter-api-key"
|
|
# model = "anthropic/claude-3.5-sonnet"
|
|
# base_url = "https://openrouter.ai/api/v1"
|
|
# max_tokens = 4096
|
|
# temperature = 0.1
|
|
|
|
# [providers.openai_compatible.groq]
|
|
# api_key = "your-groq-api-key"
|
|
# model = "llama-3.3-70b-versatile"
|
|
# base_url = "https://api.groq.com/openai/v1"
|
|
# max_tokens = 4096
|
|
# temperature = 0.1
|
|
|
|
[agent]
|
|
fallback_default_max_tokens = 8192
|
|
# max_context_length: Override the context window size for all providers
|
|
# This is the total size of conversation history, not per-request output limit
|
|
# max_context_length = 200000
|
|
enable_streaming = true
|
|
timeout_seconds = 60
|
|
max_retry_attempts = 3
|
|
autonomous_max_retry_attempts = 6
|
|
allow_multiple_tool_calls = true
|
|
|
|
# Retry Configuration for Planning/Autonomous Mode
|
|
#
|
|
# The retry infrastructure handles transient errors during LLM API calls:
|
|
# - Rate limits (HTTP 429)
|
|
# - Network errors (connection failures)
|
|
# - Server errors (HTTP 5xx)
|
|
# - Request timeouts
|
|
# - Model capacity issues (model busy)
|
|
#
|
|
# Default retry behavior:
|
|
# - max_retry_attempts: Used by default interactive mode (3 retries)
|
|
# - autonomous_max_retry_attempts: Used by planning/autonomous mode (6 retries)
|
|
#
|
|
# Note: The retry logic uses exponential backoff with longer delays in
|
|
# autonomous mode to handle rate limits gracefully.
|
|
#
|
|
# Example player retry config (in code):
|
|
# RetryConfig::planning("player") # Creates: max_retries=3, is_autonomous=true
|
|
# RetryConfig::planning("player").with_max_retries(6) # Override max retries
|
|
#
|
|
# Example coach retry config (in code):
|
|
# RetryConfig::planning("coach") # Creates: max_retries=3, is_autonomous=true
|
|
# RetryConfig::planning("coach").with_max_retries(6) # Override max retries
|
|
#
|
|
|
|
[computer_control]
|
|
enabled = false # Set to true to enable computer control (requires OS permissions)
|
|
require_confirmation = true
|
|
max_actions_per_second = 5
|
|
|
|
[webdriver]
|
|
enabled = false
|
|
safari_port = 4444
|
|
chrome_port = 9515
|
|
# Browser to use: "safari" (default) or "chrome-headless"
|
|
# Safari opens a visible browser window
|
|
# Chrome headless runs in the background without a visible window
|
|
browser = "safari"
|
|
# Optional: Path to Chrome binary (e.g., Chrome for Testing)
|
|
# If not set, ChromeDriver will use the default Chrome installation
|
|
# Use this to avoid version mismatch issues between Chrome and ChromeDriver
|
|
# Run: ./scripts/setup-chrome-for-testing.sh to install matching versions
|
|
# chrome_binary = "/Users/yourname/.chrome-for-testing/chrome-mac-arm64/Google Chrome for Testing.app/Contents/MacOS/Google Chrome for Testing"
|
|
# chrome_binary = "/Users/yourname/.chrome-for-testing/chrome-mac-x64/Google Chrome for Testing.app/Contents/MacOS/Google Chrome for Testing"
|
|
# Optional: Path to ChromeDriver binary
|
|
# If not set, looks for 'chromedriver' in PATH
|
|
# The setup script creates a symlink at ~/.local/bin/chromedriver
|
|
# chromedriver_binary = "/Users/yourname/.local/bin/chromedriver"
|
|
|
|
[macax]
|
|
enabled = false
|