679 lines
28 KiB
TOML
679 lines
28 KiB
TOML
id = "browser"
|
|
version = "1.0.0"
|
|
name = "Browser Hand"
|
|
description = "Autonomous web browser — navigates sites, fills forms, clicks buttons, and completes multi-step web tasks with user approval for purchases"
|
|
|
|
category = "productivity"
|
|
icon = "🌐"
|
|
|
|
tools = [
|
|
"browser_navigate",
|
|
"browser_click",
|
|
"browser_type",
|
|
"browser_screenshot",
|
|
"browser_read_page",
|
|
"browser_close",
|
|
"web_search",
|
|
"web_fetch",
|
|
"memory_store",
|
|
"memory_recall",
|
|
"knowledge_add_entity",
|
|
"knowledge_add_relation",
|
|
"knowledge_query",
|
|
"schedule_create",
|
|
"schedule_list",
|
|
"schedule_delete",
|
|
"file_write",
|
|
"file_read",
|
|
]
|
|
|
|
[routing]
|
|
aliases = [
|
|
"open website",
|
|
"navigate to",
|
|
"fill form",
|
|
"click button",
|
|
"web login",
|
|
"browser automation",
|
|
"browse web",
|
|
"scrape page",
|
|
]
|
|
weak_aliases = [
|
|
"web page",
|
|
"submit form",
|
|
"web task",
|
|
"browser task",
|
|
"open browser",
|
|
"web automation",
|
|
]
|
|
|
|
[[requires]]
|
|
key = "python3"
|
|
label = "Python 3 must be installed"
|
|
requirement_type = "binary"
|
|
check_value = "python3"
|
|
description = "Python 3 is required for installing and running the Playwright browser automation library. Python 3.8 or newer is recommended."
|
|
|
|
[requires.install]
|
|
macos = "brew install python3"
|
|
windows = "winget install Python.Python.3.12"
|
|
linux_apt = "sudo apt install python3"
|
|
linux_dnf = "sudo dnf install python3"
|
|
linux_pacman = "sudo pacman -S python"
|
|
pip = "python3 --version"
|
|
manual_url = "https://www.python.org/downloads/"
|
|
estimated_time = "1-3 min"
|
|
|
|
[[requires]]
|
|
key = "chromium"
|
|
label = "Chromium or Google Chrome must be installed"
|
|
requirement_type = "binary"
|
|
check_value = "chromium"
|
|
optional = true
|
|
description = "A Chromium-based browser is recommended. Playwright can install its own bundled browser if none is found. Google Chrome, Chromium, or any Chromium derivative will also work. You can set the CHROME_PATH environment variable to point to your browser binary."
|
|
|
|
[requires.install]
|
|
macos = "brew install --cask google-chrome"
|
|
windows = "winget install Google.Chrome"
|
|
linux_apt = "sudo apt install chromium-browser"
|
|
linux_dnf = "sudo dnf install chromium"
|
|
linux_pacman = "sudo pacman -S chromium"
|
|
manual_url = "https://www.google.com/chrome/"
|
|
estimated_time = "1-3 min"
|
|
|
|
# ─── Configurable settings ───────────────────────────────────────────────────
|
|
|
|
[[settings]]
|
|
key = "headless"
|
|
label = "Headless Mode"
|
|
description = "Run the browser without a visible window (recommended for servers)"
|
|
setting_type = "toggle"
|
|
default = "true"
|
|
|
|
[[settings]]
|
|
key = "approval_mode"
|
|
label = "Purchase Approval"
|
|
description = "Require explicit user confirmation before completing any purchase or payment"
|
|
setting_type = "toggle"
|
|
default = "true"
|
|
|
|
[[settings]]
|
|
key = "max_pages_per_task"
|
|
label = "Max Pages Per Task"
|
|
description = "Maximum number of page navigations allowed per task to prevent runaway browsing"
|
|
setting_type = "select"
|
|
default = "20"
|
|
|
|
[[settings.options]]
|
|
value = "10"
|
|
label = "10 pages (conservative)"
|
|
|
|
[[settings.options]]
|
|
value = "20"
|
|
label = "20 pages (balanced)"
|
|
|
|
[[settings.options]]
|
|
value = "50"
|
|
label = "50 pages (thorough)"
|
|
|
|
[[settings]]
|
|
key = "default_wait"
|
|
label = "Default Wait After Action"
|
|
description = "How long to wait after clicking or navigating for the page to settle"
|
|
setting_type = "select"
|
|
default = "auto"
|
|
|
|
[[settings.options]]
|
|
value = "auto"
|
|
label = "Auto-detect (wait for DOM)"
|
|
|
|
[[settings.options]]
|
|
value = "1"
|
|
label = "1 second"
|
|
|
|
[[settings.options]]
|
|
value = "3"
|
|
label = "3 seconds"
|
|
|
|
[[settings]]
|
|
key = "screenshot_on_action"
|
|
label = "Screenshot After Actions"
|
|
description = "Automatically take a screenshot after every click/navigate for visual verification"
|
|
setting_type = "toggle"
|
|
default = "false"
|
|
|
|
[[settings]]
|
|
key = "cookie_persistence"
|
|
label = "Cookie Persistence"
|
|
description = "Persist cookies across tasks in the same session to maintain login state and preferences"
|
|
setting_type = "toggle"
|
|
default = "true"
|
|
|
|
[[settings]]
|
|
key = "user_agent"
|
|
label = "User Agent"
|
|
description = "Browser user-agent string sent with requests — affects how websites identify the browser"
|
|
setting_type = "select"
|
|
default = "chrome_desktop"
|
|
|
|
[[settings.options]]
|
|
value = "chrome_desktop"
|
|
label = "Chrome Desktop (most compatible)"
|
|
|
|
[[settings.options]]
|
|
value = "firefox_desktop"
|
|
label = "Firefox Desktop"
|
|
|
|
[[settings.options]]
|
|
value = "chrome_mobile"
|
|
label = "Chrome Mobile (Android)"
|
|
|
|
[[settings.options]]
|
|
value = "safari_mobile"
|
|
label = "Safari Mobile (iOS)"
|
|
|
|
[[settings]]
|
|
key = "viewport_size"
|
|
label = "Viewport Size"
|
|
description = "Browser window dimensions — affects responsive layout and which version of a site is served"
|
|
setting_type = "select"
|
|
default = "1920x1080"
|
|
|
|
[[settings.options]]
|
|
value = "1920x1080"
|
|
label = "1920x1080 (Full HD desktop)"
|
|
|
|
[[settings.options]]
|
|
value = "1366x768"
|
|
label = "1366x768 (Laptop)"
|
|
|
|
[[settings.options]]
|
|
value = "390x844"
|
|
label = "390x844 (Mobile)"
|
|
|
|
[[settings.options]]
|
|
value = "1024x768"
|
|
label = "1024x768 (Tablet)"
|
|
|
|
# ─── Agent configuration ─────────────────────────────────────────────────────
|
|
|
|
[agents.main]
|
|
coordinator = true
|
|
name = "browser-hand"
|
|
description = "AI web browser — navigates websites, fills forms, searches products, and completes multi-step web tasks autonomously with safety guardrails"
|
|
module = "builtin:chat"
|
|
provider = "default"
|
|
model = "default"
|
|
max_tokens = 16384
|
|
temperature = 0.3
|
|
max_iterations = 60
|
|
system_prompt = """You are Browser Hand — an autonomous web browser agent that interacts with real websites on behalf of the user.
|
|
|
|
## Core Capabilities
|
|
|
|
You can navigate to URLs, click buttons/links, fill forms, read page content, and take screenshots. You have a real browser session that persists across tool calls within a conversation. Cookies and login state carry over between actions unless the session is explicitly closed.
|
|
|
|
## Multi-Phase Pipeline
|
|
|
|
### Phase 1 — Understand & Plan
|
|
Parse the user's request and build an execution plan:
|
|
- What website(s) do you need to visit?
|
|
- What information do you need to find or what action do you need to perform?
|
|
- What are the success criteria?
|
|
- Is the target likely a SPA (single-page app) or a traditional server-rendered site?
|
|
- Will login or cookie consent be needed before reaching the goal?
|
|
|
|
### Phase 2 — Navigate & Observe
|
|
1. Use `browser_navigate` to go to the target URL
|
|
2. Use `browser_read_page` to understand the page structure
|
|
3. Identify page type: static HTML, SPA framework, or hybrid
|
|
4. Handle blocking overlays immediately (cookie banners, modals, age gates)
|
|
5. Verify you are on the correct domain and the page loaded completely
|
|
6. If content appears empty or minimal, wait 3-5 seconds and re-read — SPAs often render asynchronously
|
|
|
|
### Phase 3 — Detect & Adapt to Page Technology
|
|
Detect the page technology to choose the right interaction strategy:
|
|
|
|
**SPA detection signals** (any of these means client-side rendering):
|
|
- Page has a single `<div id="root">` or `<div id="app">` with most content nested inside
|
|
- URL changes do not trigger full page reloads (hash routes like `#/page` or history API routes)
|
|
- Content appears after a delay with loading spinners or skeleton screens
|
|
- Page source is minimal HTML with large JS bundles
|
|
|
|
**SPA interaction rules:**
|
|
- After every click that changes the view, wait 1-3 seconds before reading the page
|
|
- Look for loading indicators: `[aria-busy="true"]`, `.loading`, `.spinner`, `.skeleton`
|
|
- If `browser_read_page` returns stale content, wait and retry (up to 3 attempts)
|
|
- Prefer clicking visible UI elements over direct URL navigation (SPAs may not support deep links)
|
|
|
|
**Iframe handling:**
|
|
- If target content is inside an iframe, note that `browser_read_page` may not capture iframe contents
|
|
- Try navigating directly to the iframe's `src` URL if you need to interact with its content
|
|
- For embedded widgets (payment forms, third-party logins), inform the user if interaction is blocked
|
|
|
|
**Shadow DOM:**
|
|
- Some web components use shadow DOM which hides elements from normal selectors
|
|
- If a known element is not found, it may be inside a shadow root
|
|
- Use `browser_screenshot` to visually confirm the element exists, then try interacting by visible text
|
|
|
|
### Phase 4 — Interact & Verify
|
|
1. Use `browser_click` for buttons and links — prefer these selector strategies in order:
|
|
a. `[data-testid="..."]` or `[data-test="..."]` — most stable, survives UI redesigns
|
|
b. `[aria-label="..."]` or `[role="button"]` — accessibility-based, framework-independent
|
|
c. `#id` — unique but may be auto-generated in SPAs
|
|
d. Visible text content — reliable fallback when selectors fail
|
|
e. CSS class selectors — least stable, use only as last resort
|
|
2. Use `browser_type` for filling form fields
|
|
3. Use `browser_read_page` after each action to verify the expected state change occurred
|
|
4. Use `browser_screenshot` when text content alone is ambiguous or for visual verification
|
|
5. If an action produces no visible change, check for overlays, disabled states, or incomplete page loads before retrying
|
|
|
|
### Phase 5 — Error Recovery & Retry
|
|
When an interaction fails, follow this decision tree:
|
|
|
|
1. **Element not found:**
|
|
a. Re-read the page — DOM may have changed since last read
|
|
b. Try alternative selectors: data-testid > aria-label > role > visible text > class
|
|
c. Scroll the page to trigger lazy loading, then re-read
|
|
d. Take a screenshot to see the actual page state
|
|
e. If still not found after 3 attempts, report to user with what was tried
|
|
|
|
2. **Click has no effect:**
|
|
a. Check for overlays blocking the element (cookie banners, modals, chat widgets)
|
|
b. Dismiss overlays: look for "Accept", "Close", "X", or `[aria-label="Close"]` buttons
|
|
c. Check if the element is disabled (`[disabled]`, `[aria-disabled="true"]`, `.disabled`)
|
|
d. Try clicking a more specific child element (e.g., the `<span>` inside a `<button>`)
|
|
e. Wait 2 seconds and retry — JavaScript handlers may not have attached yet
|
|
|
|
3. **Navigation failure or timeout:**
|
|
a. Retry the same URL once
|
|
b. Try the base domain URL, then navigate to the target from there
|
|
c. Check for redirect loops — read current URL and compare to expected
|
|
d. If 429/rate-limited: wait 30 seconds, then retry with longer intervals
|
|
e. If 403/blocked: inform user that the site may be blocking automated access
|
|
|
|
4. **Session/auth expired mid-task:**
|
|
a. Detect by checking if redirected to a login page unexpectedly
|
|
b. Re-authenticate using previously provided credentials (never store passwords in memory)
|
|
c. After re-login, navigate back to where you left off
|
|
d. If re-login fails, inform user
|
|
|
|
5. **CAPTCHA encountered:**
|
|
a. Take a screenshot to show the user
|
|
b. Inform user that manual intervention is needed — you cannot solve CAPTCHAs
|
|
c. Wait for user input before continuing
|
|
|
|
### Phase 6 — MANDATORY Purchase/Payment Approval
|
|
**CRITICAL RULE**: Before completing ANY purchase, payment, or form submission that involves money:
|
|
1. Summarize what you are about to buy/pay for
|
|
2. Show the total cost including taxes and shipping
|
|
3. List all items in the cart with quantities
|
|
4. STOP and ask the user for explicit confirmation
|
|
5. Only proceed after receiving clear approval
|
|
|
|
NEVER auto-complete purchases. NEVER click "Place Order", "Pay Now", "Confirm Purchase", or any payment button without user approval.
|
|
|
|
### Phase 7 — Report & Persist
|
|
After completing the task:
|
|
1. Summarize what was accomplished with relevant details (prices, confirmation numbers, URLs)
|
|
2. If the task involved comparison or research, present findings in a structured format
|
|
3. Save important data to memory for future reference
|
|
4. Close browser tabs that are no longer needed to free resources
|
|
|
|
## Selector Strategy (Priority Order)
|
|
|
|
Always prefer stable selectors over fragile ones. Try in this order:
|
|
1. `[data-testid="value"]` — explicitly added for testing, rarely changes
|
|
2. `[aria-label="value"]` — accessibility attributes, semantic and stable
|
|
3. `[role="button"]`, `[role="link"]`, `[role="textbox"]` — ARIA roles
|
|
4. `#id` — unique identifiers (but beware auto-generated IDs like `#react-select-2-input`)
|
|
5. `input[name="field"]`, `input[type="email"]` — form semantics
|
|
6. Visible text content — human-readable, works across frameworks
|
|
7. `.class-name` — least stable, especially in SPA frameworks that generate class names
|
|
|
|
## Popup & Modal Dismissal
|
|
|
|
Handle these immediately when they appear, before attempting any other interaction:
|
|
1. **Cookie consent**: "Accept All", "Agree", `#onetrust-accept-btn-handler`, `.cookie-consent .accept`
|
|
2. **Newsletter/promo modals**: `.modal .close`, `[aria-label="Close"]`, `button.dismiss`, Escape key
|
|
3. **Chat widgets**: minimize or close if they overlap target elements
|
|
4. **Age verification**: click "Yes" / "I am over 18" / "Enter"
|
|
5. **App install banners**: dismiss or click "Continue in browser"
|
|
6. **Notification permission prompts**: auto-dismissed by Playwright context settings
|
|
|
|
## Cookie & Session Handling
|
|
|
|
- Your browser session persists cookies across messages in this conversation
|
|
- After login, verify session is active before sensitive operations by reading a protected page
|
|
- If a page unexpectedly shows a login form, the session has expired — re-authenticate
|
|
- When navigating across subdomains (e.g., shop.example.com to account.example.com), verify cookies carried over
|
|
- Use `browser_close` when done to free resources; the browser auto-closes when the conversation ends
|
|
|
|
## Security Rules
|
|
|
|
- NEVER store passwords or credit card numbers in memory
|
|
- NEVER auto-complete payments without user approval
|
|
- NEVER navigate to URLs from untrusted sources without verifying the domain
|
|
- NEVER fill in credentials without the user explicitly providing them
|
|
- Always verify the domain matches the expected site before entering sensitive data (watch for typosquatting)
|
|
- If you encounter suspicious or phishing-like content, warn the user immediately
|
|
- Never enter credentials on HTTP (non-HTTPS) pages
|
|
|
|
Update stats via memory_store after each task:
|
|
- `browser_hand_pages_visited` — increment by pages navigated
|
|
- `browser_hand_tasks_completed` — increment by 1
|
|
- `browser_hand_screenshots_taken` — increment by screenshots captured
|
|
"""
|
|
|
|
[agents.researcher]
|
|
invoke_hint = "Web research — finding information, comparing products, reading articles, and synthesizing search results"
|
|
name = "researcher"
|
|
description = "Web researcher. Finds information, compares options, reads articles, and synthesizes search results."
|
|
module = "builtin:chat"
|
|
provider = "default"
|
|
model = "default"
|
|
max_tokens = 4096
|
|
temperature = 0.5
|
|
system_prompt = """You are Researcher, a web research specialist within the Browser Hand.
|
|
|
|
Your role is to make sense of web browsing results:
|
|
1. SEARCH — Formulate effective search queries for the user's information needs
|
|
2. EVALUATE — Assess source credibility, recency, and relevance
|
|
3. COMPARE — Build structured comparisons (products, services, options) from multiple sources
|
|
4. SYNTHESIZE — Combine information from multiple pages into clear summaries
|
|
5. EXTRACT — Pull specific data points (prices, specs, reviews, contact info) from web pages
|
|
|
|
OUTPUT FORMAT:
|
|
- Lead with the direct answer to the question
|
|
- Key Findings (numbered, with source URLs)
|
|
- Confidence Level and data recency
|
|
- Open Questions (what couldn't be determined)
|
|
|
|
Always cite your sources. Cross-reference information across multiple sites."""
|
|
|
|
[agents.extractor]
|
|
invoke_hint = "Data extraction and form filling — extracting structured data from pages, filling forms, and automating repetitive web tasks"
|
|
name = "coder"
|
|
description = "Automation specialist. Extracts structured data from web pages and automates repetitive browser tasks."
|
|
module = "builtin:chat"
|
|
provider = "default"
|
|
model = "default"
|
|
max_tokens = 4096
|
|
temperature = 0.3
|
|
system_prompt = """You are Automation Specialist, a web data extraction expert within the Browser Hand.
|
|
|
|
Your role is to automate web interactions and extract structured data:
|
|
1. EXTRACT — Pull tables, lists, prices, and structured data from web pages
|
|
2. FORMS — Plan form-filling sequences for multi-step web workflows
|
|
3. MONITOR — Define what to watch for on pages (price changes, stock availability, content updates)
|
|
4. TRANSFORM — Convert unstructured web content into structured formats (JSON, CSV, markdown)
|
|
5. AUTOMATE — Plan repeatable sequences for common web tasks
|
|
|
|
OUTPUT FORMAT:
|
|
- Extracted data in clean structured format (tables, JSON)
|
|
- Step-by-step automation plans for multi-page workflows
|
|
- Change detection rules for monitoring tasks"""
|
|
|
|
[dashboard]
|
|
[[dashboard.metrics]]
|
|
label = "Pages Visited"
|
|
memory_key = "browser_hand_pages_visited"
|
|
format = "number"
|
|
|
|
[[dashboard.metrics]]
|
|
label = "Tasks Completed"
|
|
memory_key = "browser_hand_tasks_completed"
|
|
format = "number"
|
|
|
|
[[dashboard.metrics]]
|
|
label = "Screenshots"
|
|
memory_key = "browser_hand_screenshots_taken"
|
|
format = "number"
|
|
|
|
# ─── Token & Performance Metadata ─────────────────────────────────────────────
|
|
|
|
[metadata]
|
|
frequency = "continuous"
|
|
token_consumption = "low"
|
|
default_active = true
|
|
activation_warning = "Browser hand runs continuously but mainly consumes tokens when actively performing web tasks."
|
|
|
|
# ─── Internationalization (optional) ─────────────────────────────────────────
|
|
# All i18n sections are optional. Without them, the English values above are used.
|
|
# To localize, add [i18n.LANG] sections (e.g. zh, ja, ko, es, fr, de).
|
|
# Settings translations are also optional — omit to keep English labels.
|
|
|
|
# ─── Chinese (简体中文) ────────────────────────────────────────────────────
|
|
|
|
[i18n.zh]
|
|
name = "浏览器 Hand"
|
|
description = "自主网页浏览器——导航网站、填写表单、点击按钮,经用户批准后完成多步骤网页任务"
|
|
category = "生产力"
|
|
|
|
[i18n.zh.settings.headless]
|
|
label = "无头模式"
|
|
description = "在不显示浏览器窗口的情况下运行(推荐用于服务器环境)"
|
|
|
|
[i18n.zh.settings.approval_mode]
|
|
label = "购买审批"
|
|
description = "在完成任何购买或支付操作前,需要用户明确确认"
|
|
|
|
[i18n.zh.settings.max_pages_per_task]
|
|
label = "每任务最大页面数"
|
|
description = "每个任务允许的最大页面导航次数,防止无限浏览"
|
|
|
|
[i18n.zh.settings.default_wait]
|
|
label = "操作后默认等待"
|
|
description = "点击或导航后等待页面稳定的时长"
|
|
|
|
[i18n.zh.settings.screenshot_on_action]
|
|
label = "操作后截图"
|
|
description = "每次点击/导航后自动截图,用于视觉验证"
|
|
|
|
[i18n.zh.settings.cookie_persistence]
|
|
label = "Cookie 持久化"
|
|
description = "在同一会话的多个任务间保持 Cookie,以维持登录状态和用户偏好"
|
|
|
|
[i18n.zh.settings.user_agent]
|
|
label = "用户代理"
|
|
description = "随请求发送的浏览器标识字符串——影响网站识别浏览器的方式"
|
|
|
|
[i18n.zh.settings.viewport_size]
|
|
label = "视口大小"
|
|
description = "浏览器窗口尺寸——影响响应式布局和网站呈现的版本"
|
|
|
|
# ─── Japanese (日本語) ────────────────────────────────────────────────────
|
|
|
|
[i18n.ja]
|
|
name = "ブラウザ Hand"
|
|
description = "自律型ウェブブラウザ——サイトのナビゲーション、フォーム入力、ボタンクリック、ユーザー承認付きの複数ステップWebタスクの実行"
|
|
category = "生産性"
|
|
|
|
[i18n.ja.settings.headless]
|
|
label = "ヘッドレスモード"
|
|
description = "ブラウザウィンドウを表示せずに実行する(サーバー環境に推奨)"
|
|
|
|
[i18n.ja.settings.approval_mode]
|
|
label = "購入承認"
|
|
description = "購入や支払いを完了する前にユーザーの明示的な確認を求める"
|
|
|
|
[i18n.ja.settings.max_pages_per_task]
|
|
label = "タスクあたりの最大ページ数"
|
|
description = "暴走的なブラウジングを防ぐため、タスクごとに許可されるページ遷移の最大数"
|
|
|
|
[i18n.ja.settings.default_wait]
|
|
label = "操作後のデフォルト待機時間"
|
|
description = "クリックやナビゲーション後、ページが安定するまでの待機時間"
|
|
|
|
[i18n.ja.settings.screenshot_on_action]
|
|
label = "操作後のスクリーンショット"
|
|
description = "クリック/ナビゲーションのたびに自動的にスクリーンショットを撮影し、視覚的に確認する"
|
|
|
|
[i18n.ja.settings.cookie_persistence]
|
|
label = "Cookie の永続化"
|
|
description = "同一セッション内のタスク間で Cookie を保持し、ログイン状態や設定を維持する"
|
|
|
|
[i18n.ja.settings.user_agent]
|
|
label = "ユーザーエージェント"
|
|
description = "リクエストに含まれるブラウザ識別文字列——ウェブサイトがブラウザを認識する方法に影響する"
|
|
|
|
[i18n.ja.settings.viewport_size]
|
|
label = "ビューポートサイズ"
|
|
description = "ブラウザウィンドウの寸法——レスポンシブレイアウトや表示されるサイトのバージョンに影響する"
|
|
|
|
# ─── Spanish (Español) ────────────────────────────────────────────────────
|
|
|
|
[i18n.es]
|
|
name = "Hand de Navegador"
|
|
description = "Navegador web autónomo — navega sitios, completa formularios, hace clic en botones y realiza tareas web de múltiples pasos con aprobación del usuario para compras"
|
|
category = "Productividad"
|
|
|
|
[i18n.es.settings.headless]
|
|
label = "Modo sin interfaz"
|
|
description = "Ejecutar el navegador sin ventana visible (recomendado para servidores)"
|
|
|
|
[i18n.es.settings.approval_mode]
|
|
label = "Aprobación de compras"
|
|
description = "Requerir confirmación explícita del usuario antes de completar cualquier compra o pago"
|
|
|
|
[i18n.es.settings.max_pages_per_task]
|
|
label = "Máximo de páginas por tarea"
|
|
description = "Número máximo de navegaciones de página permitidas por tarea para evitar navegación descontrolada"
|
|
|
|
[i18n.es.settings.default_wait]
|
|
label = "Espera predeterminada tras acción"
|
|
description = "Cuánto tiempo esperar después de hacer clic o navegar para que la página se estabilice"
|
|
|
|
[i18n.es.settings.screenshot_on_action]
|
|
label = "Captura de pantalla tras acciones"
|
|
description = "Tomar automáticamente una captura de pantalla después de cada clic/navegación para verificación visual"
|
|
|
|
[i18n.es.settings.cookie_persistence]
|
|
label = "Persistencia de cookies"
|
|
description = "Mantener las cookies entre tareas de la misma sesión para conservar el estado de inicio de sesión y las preferencias"
|
|
|
|
[i18n.es.settings.user_agent]
|
|
label = "Agente de usuario"
|
|
description = "Cadena de identificación del navegador enviada con las solicitudes — afecta cómo los sitios web identifican el navegador"
|
|
|
|
[i18n.es.settings.viewport_size]
|
|
label = "Tamaño de la ventana"
|
|
description = "Dimensiones de la ventana del navegador — afecta el diseño responsivo y la versión del sitio que se muestra"
|
|
|
|
# ─── French (Français) ────────────────────────────────────────────────────
|
|
|
|
[i18n.fr]
|
|
name = "Hand Navigateur"
|
|
description = "Navigateur web autonome — navigue sur les sites, remplit les formulaires, clique sur les boutons et exécute des tâches web multi-étapes avec approbation utilisateur pour les achats"
|
|
category = "Productivité"
|
|
|
|
[i18n.fr.settings.headless]
|
|
label = "Mode sans interface"
|
|
description = "Exécuter le navigateur sans fenêtre visible (recommandé pour les serveurs)"
|
|
|
|
[i18n.fr.settings.approval_mode]
|
|
label = "Approbation des achats"
|
|
description = "Exiger la confirmation explicite de l'utilisateur avant de finaliser tout achat ou paiement"
|
|
|
|
[i18n.fr.settings.max_pages_per_task]
|
|
label = "Pages maximum par tâche"
|
|
description = "Nombre maximum de navigations de page autorisées par tâche pour éviter une navigation incontrôlée"
|
|
|
|
[i18n.fr.settings.default_wait]
|
|
label = "Attente par défaut après action"
|
|
description = "Durée d'attente après un clic ou une navigation pour que la page se stabilise"
|
|
|
|
[i18n.fr.settings.screenshot_on_action]
|
|
label = "Capture d'écran après action"
|
|
description = "Prendre automatiquement une capture d'écran après chaque clic/navigation pour vérification visuelle"
|
|
|
|
[i18n.fr.settings.cookie_persistence]
|
|
label = "Persistance des cookies"
|
|
description = "Conserver les cookies entre les tâches d'une même session pour maintenir l'état de connexion et les préférences"
|
|
|
|
[i18n.fr.settings.user_agent]
|
|
label = "Agent utilisateur"
|
|
description = "Chaîne d'identification du navigateur envoyée avec les requêtes — influence la manière dont les sites web identifient le navigateur"
|
|
|
|
[i18n.fr.settings.viewport_size]
|
|
label = "Taille de la fenêtre"
|
|
description = "Dimensions de la fenêtre du navigateur — influence la mise en page responsive et la version du site affichée"
|
|
|
|
# ─── German (Deutsch) ────────────────────────────────────────────────────
|
|
|
|
[i18n.de]
|
|
name = "Browser-Hand"
|
|
description = "Autonomer Webbrowser — navigiert Websites, füllt Formulare aus, klickt Schaltflächen und führt mehrstufige Webaufgaben mit Benutzerfreigabe für Käufe aus"
|
|
category = "Produktivität"
|
|
|
|
[i18n.de.settings.headless]
|
|
label = "Headless-Modus"
|
|
description = "Browser ohne sichtbares Fenster ausführen (empfohlen für Server)"
|
|
|
|
[i18n.de.settings.approval_mode]
|
|
label = "Kaufgenehmigung"
|
|
description = "Ausdrückliche Benutzerbestätigung vor dem Abschluss eines Kaufs oder einer Zahlung erforderlich"
|
|
|
|
[i18n.de.settings.max_pages_per_task]
|
|
label = "Maximale Seiten pro Aufgabe"
|
|
description = "Maximale Anzahl erlaubter Seitennavigationen pro Aufgabe, um unkontrolliertes Surfen zu verhindern"
|
|
|
|
[i18n.de.settings.default_wait]
|
|
label = "Standard-Wartezeit nach Aktion"
|
|
description = "Wartezeit nach einem Klick oder einer Navigation, bis sich die Seite stabilisiert hat"
|
|
|
|
[i18n.de.settings.screenshot_on_action]
|
|
label = "Screenshot nach Aktion"
|
|
description = "Nach jedem Klick/jeder Navigation automatisch einen Screenshot für visuelle Überprüfung erstellen"
|
|
|
|
[i18n.de.settings.cookie_persistence]
|
|
label = "Cookie-Persistenz"
|
|
description = "Cookies zwischen Aufgaben innerhalb derselben Sitzung beibehalten, um den Anmeldestatus und Einstellungen zu erhalten"
|
|
|
|
[i18n.de.settings.user_agent]
|
|
label = "User-Agent"
|
|
description = "Browser-Identifikationszeichenfolge, die mit Anfragen gesendet wird — beeinflusst, wie Websites den Browser erkennen"
|
|
|
|
[i18n.de.settings.viewport_size]
|
|
label = "Fenstergröße"
|
|
description = "Abmessungen des Browserfensters — beeinflusst das responsive Layout und welche Version einer Website angezeigt wird"
|
|
|
|
# ─── Korean (한국어) ────────────────────────────────────────────────────
|
|
|
|
[i18n.ko]
|
|
name = "브라우저 Hand"
|
|
description = "자율 웹 브라우저 — 사이트 탐색, 양식 작성, 버튼 클릭, 구매 시 사용자 승인을 받아 다단계 웹 작업 수행"
|
|
category = "생산성"
|
|
|
|
[i18n.ko.settings.headless]
|
|
label = "헤드리스 모드"
|
|
description = "브라우저 창을 표시하지 않고 실행 (서버 환경에 권장)"
|
|
|
|
[i18n.ko.settings.approval_mode]
|
|
label = "구매 승인"
|
|
description = "구매 또는 결제 완료 전 사용자의 명시적 확인 필요"
|
|
|
|
[i18n.ko.settings.max_pages_per_task]
|
|
label = "작업당 최대 페이지 수"
|
|
description = "작업당 허용되는 최대 페이지 탐색 횟수 (무한 브라우징 방지)"
|
|
|
|
[i18n.ko.settings.default_wait]
|
|
label = "동작 후 기본 대기"
|
|
description = "클릭 또는 탐색 후 페이지가 안정될 때까지 대기하는 시간"
|
|
|
|
[i18n.ko.settings.screenshot_on_action]
|
|
label = "동작 후 스크린샷"
|
|
description = "클릭/탐색 후 자동으로 스크린샷을 캡처하여 시각적으로 검증"
|
|
|
|
[i18n.ko.settings.cookie_persistence]
|
|
label = "쿠키 유지"
|
|
description = "동일 세션 내 작업 간 쿠키를 유지하여 로그인 상태와 설정을 보존"
|
|
|
|
[i18n.ko.settings.user_agent]
|
|
label = "사용자 에이전트"
|
|
description = "요청 시 전송되는 브라우저 식별 문자열 — 웹사이트가 브라우저를 인식하는 방식에 영향"
|
|
|
|
[i18n.ko.settings.viewport_size]
|
|
label = "뷰포트 크기"
|
|
description = "브라우저 창 크기 — 반응형 레이아웃과 표시되는 사이트 버전에 영향"
|