skip to content
$worker

browser

v0.1.0

Interactive Chromium sessions on the iii bus. Navigate, act, read the page console, pick elements.

iiiverified
20 installs11 in 7d3 today
install
$iii worker add browser@0.1.0
  • macOS: arm64 · x64
  • Linux: arm64 · armv7 · x64
  • Windows: arm64 · x64 · x86

exact versions are immutable; binary and bundle artifacts are digest-pinned.

functions

22

browser::act

function

Interact with the page: click (left/right/middle, single or double), hover, type, press, or scroll. Address elements with a [ref=eN] handle from browser::snapshot (or a pick), or raw viewport coordinates.

request
  • actionstringrequired

    `click`, `hover`, `type`, `press`, or `scroll`.

  • buttonstring

    Mouse button for `click`: `left` (default), `right`, or `middle`.

  • click_countinteger· uint32min 0

    Clicks in the gesture: 2 double-clicks (`click` only, default 1).

  • delta_ynumber· double

    Scroll distance in pixels; positive scrolls down (`scroll`).

  • keystring

    Key name for `press`: Enter, Tab, Escape, Backspace, Delete, ArrowUp/Down/Left/Right, Home, End, PageUp, PageDown.

  • refstring

    Element ref from `browser::snapshot` (`e3`) or `browser::picked` (`p1`). Refs die on navigation; re-snapshot after.

  • session_idstringrequired
  • textstring

    Text to insert (`type`).

  • xnumber· double

    Viewport x, when acting by coordinates instead of ref.

  • ynumber· double

    Viewport y, when acting by coordinates instead of ref.

response
  • detailstringrequired

    What was done, for the transcript.

  • okbooleanrequired

browser::console::read

function

Read the session's captured console: console.* calls, uncaught exceptions, and browser-level log entries. Filter with pattern/level and page with since_seq instead of dumping everything.

request
  • levelstring

    Only entries at this level: `log`, `info`, `warning`, `error`, `debug`, `exception`. `error` also matches `exception`.

  • limitinteger· uint64min 0

    Maximum entries returned, newest kept (default 100).

  • patternstring

    Regex applied to entry text. Use it: dumping an unfiltered console wastes the caller's context.

  • session_idstringrequired
  • since_seqinteger· uint64min 0

    Only entries with `seq` greater than this; resume from the cursor returned as `last_seq`.

response
  • droppedinteger· uint64requiredmin 0

    Entries evicted from the ring buffer since session start.

  • entriesobject[]required
    • levelstringrequired

      `log`, `info`, `warning`, `error`, `debug`, or `exception`.

    • seqinteger· uint64requiredmin 0

      Monotonic per-session cursor; pass back as `since_seq`.

    • sourcestring

      `url:line` of the emitting frame, when known.

    • textstringrequired
    • timestampinteger· int64required
  • last_seqinteger· uint64requiredmin 0

    Cursor for the next `since_seq`.

browser::dom::read

function

Read the DOM as a tree of tags with id/class and refs. Structure-oriented complement to browser::snapshot; read deep subtrees by passing a ref.

request
  • depthinteger· uint32min 0

    Levels of children to include (default 3).

  • refstring

    Subtree root from an earlier ref (`e3`/`p1`) or dom node. Omit for the document root.

  • session_idstringrequired
response
  • rootobjectrequired

    One DOM node in the outline. `ref` resolves in `browser::act`, `browser::styles::read`, and `browser::styles::write`.

    • child_countinteger· uint32requiredmin 0

      Total children in the document, which may exceed `children` returned at this depth.

    • childrenunknown[]
    • classesstring
    • idstring
    • refstringrequired
    • tagstringrequired

      Lowercase tag (`div`, `button`) or node name (`#text`).

    • textstring

      Trimmed text content for text nodes.

  • truncatedbooleanrequired

    True when the node cap cut the tree short; read a subtree via `ref`.

browser::evaluate

function

Evaluate a JavaScript expression in the page and return its completion value. Use for reads the snapshot can't express; prefer browser::act for interactions.

request
  • expressionstringrequired

    JavaScript expression evaluated in the page. The completion value is returned by value; wrap statements in an IIFE.

  • session_idstringrequired
  • timeout_msinteger· uint64min 0

    Upper bound on evaluation; clamped to `max_timeout_ms`.

response
  • errorstring

    Exception text when not `ok`.

  • okbooleanrequired
  • valueunknown

    JSON completion value when `ok`.

browser::frame

function

Internal: newest screencast frame, or nothing when since_frame is still current. No capture round-trip; poll fast. Not an agent function.

request
  • session_idstringrequired
  • since_frameinteger· uint64min 0

    Frame cursor from the previous read; when the newest frame still has this seq the response omits `frame` (nothing changed, nothing to redraw).

response
  • activebooleanrequired

    False when no screencast is running (call screencast::start first).

  • framestring

    Base64 JPEG of the newest frame; absent when `since_frame` is still current or no frame has arrived yet.

  • frame_seqinteger· uint64requiredmin 0
  • heightinteger· uint32requiredmin 0

    Page-viewport height the frame maps to.

  • timestampinteger· int64required
  • widthinteger· uint32requiredmin 0

    Page-viewport width the frame maps to (input coordinate space).

browser::history

function

Go back, go forward, or reload the session's page. Back/forward at the history edge is a no-op with moved=false.

request
  • actionstringrequired

    `back`, `forward`, or `reload`.

  • session_idstringrequired
response
  • movedbooleanrequired

    False when back/forward had no entry to move to.

  • okbooleanrequired
  • urlstringrequired

    URL after the action. `back`/`forward` at the history edge is a no-op with ok=true.

browser::navigate

function

Navigate a session to a URL and wait for the page to load. Element refs from earlier snapshots are invalidated by navigation.

request
  • session_idstringrequired
  • timeout_msinteger· uint64min 0

    Upper bound on the navigation wait; clamped to `max_timeout_ms`.

  • urlstringrequired

    Absolute URL; scheme must be on the configured allowlist.

response
  • okbooleanrequired
  • timed_outbooleanrequired

    True when the load event did not fire inside the timeout; the page may still be usable; snapshot to check.

  • titlestring
  • urlstringrequired

    URL after redirects.

browser::network::read

function

Read the session's captured network requests (method, URL, status, failures). failed_only=true is the fast path for 'what broke'.

request
  • failed_onlyboolean

    Only failed requests (network error or status >= 400).

  • limitinteger· uint64min 0

    Maximum entries returned, newest kept (default 100).

  • patternstring

    Regex applied to the request URL.

  • session_idstringrequired
  • since_seqinteger· uint64min 0

    Only entries with `seq` greater than this.

response
  • droppedinteger· uint64requiredmin 0

    Entries evicted from the ring buffer since session start.

  • entriesobject[]required
    • errorstring
    • failedbooleanrequired
    • methodstringrequired
    • mime_typestring
    • seqinteger· uint64requiredmin 0

      Monotonic per-session cursor; pass back as `since_seq`.

    • statusinteger· int64
    • timestampinteger· int64required
    • urlstringrequired
  • last_seqinteger· uint64requiredmin 0

    Cursor for the next `since_seq`.

browser::on-config-change

function

Internal: reload browser settings from the authoritative configuration on change.

request
empty object
response
  • okbooleanrequired

browser::pick::hint

function

Internal: element preview at a viewport point (tag, id, classes, bounds) so the console UI can draw a hover highlight in pick mode. Not an agent function.

request
  • session_idstringrequired
  • xnumber· doublerequired

    Viewport x of the cursor.

  • ynumber· doublerequired

    Viewport y of the cursor.

response
  • boundsany of

    Viewport-space box to draw the highlight over.

    any of (2)
    variant 1
    • heightnumber· doublerequired
    • widthnumber· doublerequired
    • xnumber· doublerequired
    • ynumber· doublerequired
    variant 2
    valuenull
  • classesstring
  • hitbooleanrequired

    False when no element sits at the point.

  • idstring
  • tagstring

    Lowercase tag name.

browser::pick::resolve

function

Internal: resolve the element at a clicked viewport point and emit browser::picked. The console calls this on a pick-mode click. Not an agent function.

request
  • session_idstringrequired
  • xnumber· doublerequired

    Viewport x of the click.

  • ynumber· doublerequired

    Viewport y of the click.

response
  • okbooleanrequired

browser::pick::start

function

Internal: enter pick mode so the human can select an element in the console UI. Not an agent function.

request
  • session_idstringrequired
response
  • okbooleanrequired

browser::pick::stop

function

Internal: leave DevTools inspect mode without picking. Idempotent. Not an agent function.

request
  • session_idstringrequired

    Cancelling pick mode on an unknown session succeeds.

response
  • okbooleanrequired

browser::screencast::start

function

Internal: start pushing live viewport frames for browser::frame. Console-UI plumbing; agents use browser::screenshot. Not an agent function.

request
  • session_idstringrequired
response
  • okbooleanrequired

browser::screencast::stop

function

Internal: stop the live frame push. Idempotent. Not an agent function.

request
  • session_idstringrequired

    Stopping the screencast on an unknown session succeeds.

response
  • okbooleanrequired

browser::screenshot

function

Capture the session viewport as a viewable JPEG. Use browser::snapshot for machine-readable structure; screenshot when layout or rendering matters.

request
  • full_pageboolean

    Capture the full scrollable page instead of the viewport.

  • session_idstringrequired
response
  • contentobject[]required
    • datastring
    • mimestring
    • textstring
    • typestringrequired
  • detailsobjectrequired
    • heightinteger· uint32requiredmin 0
    • session_idstringrequired
    • urlstringrequired
    • widthinteger· uint32requiredmin 0

browser::sessions::list

function

List live browser sessions with their current URL and activity.

request
empty object
response
  • sessionsobject[]required
    • console_entriesinteger· uint64requiredmin 0
    • created_msinteger· int64required
    • headlessbooleanrequired
    • last_used_msinteger· int64required
    • session_idstringrequired
    • titlestring
    • urlstringrequired

browser::sessions::start

function

Start an interactive Chromium session and return its session_id. Sessions keep console and network history; stop them with browser::sessions::stop when done.

request
  • headfulboolean

    Force a visible window for this session, overriding the configured `headless` default.

  • urlstring

    URL to open immediately. Omit to start on about:blank.

response
  • headlessbooleanrequired
  • session_idstringrequired

    Pass this to every other browser function.

  • urlstringrequired

browser::sessions::stop

function

Stop a browser session and its Chromium process. Idempotent: stopping an unknown or already-stopped session succeeds with was_running=false.

request
  • session_idstringrequired

    Session to stop. Stopping an unknown or already-stopped id succeeds.

response
  • okbooleanrequired
  • was_runningbooleanrequired

    False when the session was already gone.

browser::snapshot

function

Read the page as an accessibility-tree outline. Lines carry [ref=eN] handles that browser::act accepts; refs stay valid until the next navigation. Prefer this over browser::screenshot; it is cheaper and machine-readable.

request
  • session_idstringrequired
response
  • titlestring
  • treestringrequired

    Indented outline; lines carry `[ref=eN]` handles for `browser::act`.

  • truncatedbooleanrequired

    True when the tree hit `max_snapshot_nodes` and was cut short.

  • urlstringrequired

browser::styles::read

function

Read an element's computed styles (curated design set by default, or named properties) plus its inline style attribute.

request
  • propertiesstring[]

    Computed property names to return. Omit for a curated design-panel set; pass `["*"]` for every computed property.

  • refstringrequired

    Element ref from `browser::snapshot`, `browser::dom::read`, or a pick.

  • session_idstringrequired
response
  • inline_stylestring

    The element's inline `style` attribute, when present.

  • propertiesobject[]required
    • namestringrequired
    • valuestringrequired
  • refstringrequired

browser::styles::write

function

Set one inline CSS property on an element, live in the page. Visual experiment only: the page's source files are untouched, and the edit dies with the next navigation.

request
  • importantboolean

    Apply with `!important`.

  • propertystringrequired

    CSS property name (`background-color`).

  • refstringrequired

    Element ref to edit.

  • session_idstringrequired
  • valuestringrequired

    CSS value (`#101418`). Empty string removes the inline property.

response
  • inline_stylestringrequired

    The element's inline `style` attribute after the edit.

  • okbooleanrequired

triggers

6

browser::console-event

trigger

A console/log/exception entry was captured on a session's page.

invocation
  • session_idstring

    Only deliver events for this browser session.

return
valueunknown

browser::navigated

trigger

The session's page committed a navigation.

invocation
  • session_idstring

    Only deliver events for this browser session.

return
valueunknown

browser::network-event

trigger

A network request was captured (completed or failed) on a session's page.

invocation
  • session_idstring

    Only deliver events for this browser session.

return
valueunknown

browser::picked

trigger

The human picked an element in inspect mode.

invocation
  • session_idstring

    Only deliver events for this browser session.

return
valueunknown

browser::session-started

trigger

A Chromium session is up and ready.

invocation
  • session_idstring

    Only deliver events for this browser session.

return
valueunknown

browser::session-stopped

trigger

A Chromium session ended (stopped, idle, or crashed).

invocation
  • session_idstring

    Only deliver events for this browser session.

return
valueunknown