export declare const browserUseManual = "# Browser Tool Manual\n\n## Overview\n\n`browser_use` is XOPC's unified browser tool. It supports four modes:\n\n| Mode | Purpose |\n|------|---------|\n| `command` | Run a single browser action |\n| `pipeline` | Run a multi-step YAML flow |\n| `inspect` | Read current page state |\n| `close` | Close the browser session |\n\n## When to use\n\n- Open pages, click controls, fill forms\n- Capture screenshots or page content\n- Run multi-step automation flows\n- Extract data from pages\n\n## Command mode\n\n### Basic shape\n\n```json\n{\n \"mode\": \"command\",\n \"command\": \"\",\n \"args\": { ... }\n}\n```\n\n### Available commands\n\n| Command | Description | Key arguments |\n|---------|-------------|---------------|\n| `open` / `navigate` | Open a URL | `url`, `wait_until` |\n| `state` / `snapshot` | ARIA snapshot of the page | `selector`, `maxLength` |\n| `click` | Click an element | `selector` / `text` / `role` |\n| `type` / `input` | Type text | `selector` / `label`, `text`, `pressEnter` |\n| `scroll` | Scroll the page | `direction`, `amount` |\n| `screenshot` | Screenshot | `selector`, `full_page`, `path` |\n| `back` | Go back | `waitFor` |\n| `keys` / `press` | Keyboard input | `key` |\n| `console` / `eval` | Run JavaScript | `javascript` |\n| `images` | Collect images on the page | `selector`, `maxImages` |\n| `wait` | Wait for element/text/function/time | `selector` / `text` / `function` / `ms`, `state`, `timeout_ms` |\n| `wait_for_navigation` | Wait for page load state | `wait_until`, `timeout_ms` |\n| `wait_for_network_idle` | Wait until network is idle | `timeout_ms` |\n| `element_text` | Read element text | `selector` |\n| `element_attribute` | Read element attribute | `selector`, `attribute` |\n| `bounding_box` | Read element box | `selector` |\n| `network_start` / `network_events` / `network_stop` | Capture network events | `url_pattern`, `include_body` |\n| `dialog` | Handle dialogs | `action` (accept/dismiss) |\n| `close` | Close the current page | \u2014 |\n\n### Element targeting\n\nPrefer, in order:\n\n1. **ARIA role**: most stable, e.g. `\"role\": \"button:Submit\"`\n2. **Visible text**, e.g. `\"text\": \"Sign In\"`\n3. **CSS selector**, e.g. `\"selector\": \"#login-btn\"`\n\nGuidelines:\n\n- Use `inspect` or `state` first to get a snapshot\n- Pick locators from ARIA info in the snapshot\n- Avoid dynamic class names when possible\n\n## Inspect mode\n\nBefore acting, understand the current page:\n\n```json\n{ \"mode\": \"inspect\" }\n```\n\nReturns: current URL, title, ARIA snapshot.\n\n**Best practice**: after each navigation, inspect, then choose the next step.\n\n## Pipeline mode\n\nFor multi-step, reusable flows. Uses a brocli-style YAML DSL.\n\n### Run from file\n\n```json\n{\n \"mode\": \"pipeline\",\n \"pipeline\": {\n \"path\": \"./browser-flow.yaml\",\n \"args\": { \"url\": \"https://example.com\" }\n }\n}\n```\n\n### Run inline YAML\n\n```json\n{\n \"mode\": \"pipeline\",\n \"pipeline\": {\n \"yaml\": \"name: quick-check\\npipeline:\\n - navigate:\\n url: https://example.com\\n - screenshot:\\n full_page: true\",\n \"dryRun\": false\n }\n}\n```\n\n### YAML layout\n\n```yaml\nname: pipeline-name\ndescription: What this flow does\ntimeoutSeconds: 60\ninclude:\n - ./shared-login.yaml\nargs:\n url:\n type: string\n required: true\n query:\n type: string\n default: \"hello\"\npipeline:\n - navigate:\n url: ${{ args.url }}\n wait_until: domcontentloaded\n - wait:\n selector: input[name=\"q\"]\n - type:\n selector: input[name=\"q\"]\n text: ${{ args.query }}\n - press:\n key: Enter\n - wait:\n selector: body\n timeout_ms: 10000\n - element_text:\n selector: h1\n - assert:\n contains: Results\n - screenshot:\n path: ./artifacts/result.png\n full_page: true\n - output:\n value:\n screenshot: ./artifacts/result.png\non_error:\n - screenshot:\n path: ./artifacts/error.png\n full_page: true\n```\n\n### Authoring rules\n\n1. One action per step\n2. Use `${{ args.xxx }}` for parameters\n3. Use `${{ last }}` or `${{ last | json }}` for the previous step result\n4. Use `${{ outputs.0 }}` for prior `output` values and `${{ vars.name }}` for values from `set_var`\n5. Use `include` for shared YAML fragments; relative includes resolve from the current pipeline file\n6. Use `on_error` to collect diagnostics after failure\n\n### Stable pipeline actions\n\n```yaml\npipeline:\n - network_start:\n url_pattern: /api/search\n include_body: true\n - click:\n text: Search\n - wait_for_network_idle:\n timeout_ms: 10000\n - collect: {}\n - filter:\n path: type\n equals: response\n - limit:\n count: 3\n - output:\n value: ${{ last }}\n```\n\nControl flow:\n\n```yaml\npipeline:\n - retry:\n times: 3\n delay_ms: 500\n pipeline:\n - wait:\n selector: button.submit\n timeout_ms: 3000\n - click:\n selector: button.submit\n - if:\n condition: ${{ last }}\n then:\n - output:\n value: clicked\n else:\n - output:\n value: missing\n```\n\n### Validate without running\n\n```json\n{\n \"mode\": \"pipeline\",\n \"pipeline\": {\n \"yaml\": \"...\",\n \"dryRun\": true\n }\n}\n```\n\n## Recovery when something fails\n\n1. `inspect` to see current state\n2. Confirm the URL (redirects may have changed it)\n3. Use the snapshot to see if the page finished loading\n4. `screenshot` for visual debugging\n5. `wait` for elements, then retry\n\n## Safety\n\n- Do not put API keys or tokens in URLs\n- Do not target private IPs / localhost unless configuration allows it\n- Cloud metadata endpoints are always blocked\n- For destructive actions (submit forms, delete data), confirm intent with the user first\n";