From 9c9116f638aa59ae914f17a707a1b35948afab73 Mon Sep 17 00:00:00 2001 From: SentienceDEV Date: Sun, 11 Jan 2026 12:27:37 -0800 Subject: [PATCH 1/6] Make AgentRuntime support any browsers that conform to protocol_v0 --- screenshot.png | Bin 103162 -> 99228 bytes sentience/agent_runtime.py | 171 +++++-- sentience/backends/cdp_backend.py | 5 + sentience/backends/playwright_backend.py | 4 + sentience/backends/protocol_v0.py | 9 + sentience/extension/background.js | 6 +- sentience/extension/content.js | 12 +- sentience/extension/injected_api.js | 58 +-- sentience/extension/pkg/sentience_core.js | 14 +- tests/test_agent_runtime.py | 558 ++++++++++++++++++++++ tests/test_backends.py | 35 ++ 11 files changed, 796 insertions(+), 76 deletions(-) create mode 100644 tests/test_agent_runtime.py diff --git a/screenshot.png b/screenshot.png index 847eb7308de071eb295db2abb31ac306f62acbdd..4f8a30ad9d8391522d5c769b821af43acbc4f025 100644 GIT binary patch literal 99228 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

^5Gd1b@s?kt7MUv6C$i4xu~V=d`&={QpvLG487I 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 Gg!~r;l<+A4 diff --git a/sentience/agent_runtime.py b/sentience/agent_runtime.py index 168659e..ed8d8c1 100644 --- a/sentience/agent_runtime.py +++ b/sentience/agent_runtime.py @@ -2,7 +2,7 @@ Agent runtime for verification loop support. This module provides a thin runtime wrapper that combines: -1. Browser session management +1. Browser session management (via BrowserBackendV0 protocol) 2. Snapshot/query helpers 3. Tracer for event emission 4. Assertion/verification methods @@ -10,29 +10,55 @@ The AgentRuntime is designed to be used in agent verification loops where you need to repeatedly take snapshots, execute actions, and verify results. -Example usage: - from sentience import AsyncSentienceBrowser +Example usage with browser-use: + from browser_use import BrowserSession, BrowserProfile + from sentience import get_extension_dir + from sentience.backends import BrowserUseAdapter from sentience.agent_runtime import AgentRuntime from sentience.verification import url_matches, exists from sentience.tracing import Tracer, JsonlTraceSink + # Setup browser-use with Sentience extension + profile = BrowserProfile(args=[f"--load-extension={get_extension_dir()}"]) + session = BrowserSession(browser_profile=profile) + await session.start() + + # Create adapter and backend + adapter = BrowserUseAdapter(session) + backend = await adapter.create_backend() + + # Navigate using browser-use + page = await session.get_current_page() + await page.goto("https://example.com") + + # Create runtime with backend + sink = JsonlTraceSink("trace.jsonl") + tracer = Tracer(run_id="test-run", sink=sink) + runtime = AgentRuntime(backend=backend, tracer=tracer) + + # Take snapshot and run assertions + await runtime.snapshot() + runtime.assert_(url_matches(r"example\\.com"), label="on_homepage") + runtime.assert_(exists("role=button"), label="has_buttons") + + # Check if task is done + if runtime.assert_done(exists("text~'Success'"), label="task_complete"): + print("Task completed!") + +Example usage with AsyncSentienceBrowser (backward compatible): + from sentience import AsyncSentienceBrowser + from sentience.agent_runtime import AgentRuntime + async with AsyncSentienceBrowser() as browser: page = await browser.new_page() await page.goto("https://example.com") - sink = JsonlTraceSink("trace.jsonl") - tracer = Tracer(run_id="test-run", sink=sink) - - runtime = AgentRuntime(browser=browser, page=page, tracer=tracer) - - # Take snapshot and run assertions + runtime = await AgentRuntime.from_sentience_browser( + browser=browser, + page=page, + tracer=tracer, + ) await runtime.snapshot() - runtime.assert_(url_matches(r"example\\.com"), label="on_homepage") - runtime.assert_(exists("role=button"), label="has_buttons") - - # Check if task is done - if runtime.assert_done(exists("text~'Success'"), label="task_complete"): - print("Task completed!") """ from __future__ import annotations @@ -40,13 +66,14 @@ import uuid from typing import TYPE_CHECKING, Any -from .verification import AssertContext, AssertOutcome, Predicate +from .models import Snapshot, SnapshotOptions +from .verification import AssertContext, Predicate if TYPE_CHECKING: from playwright.async_api import Page + from .backends.protocol_v0 import BrowserBackendV0 from .browser import AsyncSentienceBrowser - from .models import Snapshot from .tracing import Tracer @@ -63,8 +90,7 @@ class AgentRuntime: to the tracer for Studio timeline display. Attributes: - browser: AsyncSentienceBrowser instance - page: Playwright Page instance + backend: BrowserBackendV0 instance for browser operations tracer: Tracer for event emission step_id: Current step identifier step_index: Current step index (0-based) @@ -73,22 +99,34 @@ class AgentRuntime: def __init__( self, - browser: AsyncSentienceBrowser, - page: Page, + backend: BrowserBackendV0, tracer: Tracer, + snapshot_options: SnapshotOptions | None = None, + sentience_api_key: str | None = None, ): """ - Initialize agent runtime. + Initialize agent runtime with any BrowserBackendV0-compatible browser. Args: - browser: AsyncSentienceBrowser instance for taking snapshots - page: Playwright Page for browser interaction + backend: Any browser implementing BrowserBackendV0 protocol. + Examples: + - CDPBackendV0 (for browser-use via BrowserUseAdapter) + - PlaywrightBackend (future, for direct Playwright) tracer: Tracer for emitting verification events + snapshot_options: Default options for snapshots + sentience_api_key: API key for Pro/Enterprise tier (enables Gateway refinement) """ - self.browser = browser - self.page = page + self.backend = backend self.tracer = tracer + # Build default snapshot options with API key if provided + default_opts = snapshot_options or SnapshotOptions() + if sentience_api_key: + default_opts.sentience_api_key = sentience_api_key + if default_opts.use_api is None: + default_opts.use_api = True + self._snapshot_options = default_opts + # Step tracking self.step_id: str | None = None self.step_index: int = 0 @@ -96,6 +134,9 @@ def __init__( # Snapshot state self.last_snapshot: Snapshot | None = None + # Cached URL (updated on snapshot or explicit get_url call) + self._cached_url: str | None = None + # Assertions accumulated during current step self._assertions_this_step: list[dict[str, Any]] = [] @@ -103,6 +144,45 @@ def __init__( self._task_done: bool = False self._task_done_label: str | None = None + @classmethod + async def from_sentience_browser( + cls, + browser: AsyncSentienceBrowser, + page: Page, + tracer: Tracer, + snapshot_options: SnapshotOptions | None = None, + sentience_api_key: str | None = None, + ) -> AgentRuntime: + """ + Create AgentRuntime from AsyncSentienceBrowser (backward compatibility). + + This factory method wraps an AsyncSentienceBrowser + Page combination + into the new BrowserBackendV0-based AgentRuntime. + + Args: + browser: AsyncSentienceBrowser instance + page: Playwright Page for browser interaction + tracer: Tracer for emitting verification events + snapshot_options: Default options for snapshots + sentience_api_key: API key for Pro/Enterprise tier + + Returns: + AgentRuntime instance + """ + from .backends.playwright_backend import PlaywrightBackend + + backend = PlaywrightBackend(page) + runtime = cls( + backend=backend, + tracer=tracer, + snapshot_options=snapshot_options, + sentience_api_key=sentience_api_key, + ) + # Store browser reference for snapshot() to use + runtime._legacy_browser = browser + runtime._legacy_page = page + return runtime + def _ctx(self) -> AssertContext: """ Build assertion context from current state. @@ -113,8 +193,8 @@ def _ctx(self) -> AssertContext: url = None if self.last_snapshot is not None: url = self.last_snapshot.url - elif self.page: - url = self.page.url + elif self._cached_url: + url = self._cached_url return AssertContext( snapshot=self.last_snapshot, @@ -122,19 +202,48 @@ def _ctx(self) -> AssertContext: step_id=self.step_id, ) - async def snapshot(self, **kwargs) -> Snapshot: + async def get_url(self) -> str: + """ + Get current page URL. + + Returns: + Current page URL + """ + url = await self.backend.get_url() + self._cached_url = url + return url + + async def snapshot(self, **kwargs: Any) -> Snapshot: """ Take a snapshot of the current page state. This updates last_snapshot which is used as context for assertions. Args: - **kwargs: Passed through to browser.snapshot() + **kwargs: Override default snapshot options for this call. + Common options: + - limit: Maximum elements to return + - goal: Task goal for ordinal support + - screenshot: Include screenshot + - show_overlay: Show visual overlay Returns: Snapshot of current page state """ - self.last_snapshot = await self.browser.snapshot(self.page, **kwargs) + # Check if using legacy browser (backward compat) + if hasattr(self, "_legacy_browser") and hasattr(self, "_legacy_page"): + self.last_snapshot = await self._legacy_browser.snapshot(self._legacy_page, **kwargs) + return self.last_snapshot + + # Use backend-agnostic snapshot + from .backends.snapshot import snapshot as backend_snapshot + + # Merge default options with call-specific kwargs + options_dict = self._snapshot_options.model_dump(exclude_none=True) + options_dict.update(kwargs) + options = SnapshotOptions(**options_dict) + + self.last_snapshot = await backend_snapshot(self.backend, options=options) return self.last_snapshot def begin_step(self, goal: str, step_index: int | None = None) -> str: diff --git a/sentience/backends/cdp_backend.py b/sentience/backends/cdp_backend.py index 1061e1a..4d9d7ba 100644 --- a/sentience/backends/cdp_backend.py +++ b/sentience/backends/cdp_backend.py @@ -386,3 +386,8 @@ async def wait_ready_state( # Poll every 100ms await asyncio.sleep(0.1) + + async def get_url(self) -> str: + """Get current page URL.""" + result = await self.eval("window.location.href") + return result if result else "" diff --git a/sentience/backends/playwright_backend.py b/sentience/backends/playwright_backend.py index 719561a..e589c93 100644 --- a/sentience/backends/playwright_backend.py +++ b/sentience/backends/playwright_backend.py @@ -185,6 +185,10 @@ async def wait_ready_state( await asyncio.sleep(0.1) + async def get_url(self) -> str: + """Get current page URL.""" + return self._page.url + # Verify protocol compliance at import time assert isinstance(PlaywrightBackend.__new__(PlaywrightBackend), BrowserBackendV0) diff --git a/sentience/backends/protocol_v0.py b/sentience/backends/protocol_v0.py index 2ac86cc..763647d 100644 --- a/sentience/backends/protocol_v0.py +++ b/sentience/backends/protocol_v0.py @@ -205,3 +205,12 @@ async def wait_ready_state( TimeoutError: If state not reached within timeout """ ... + + async def get_url(self) -> str: + """ + Get current page URL. + + Returns: + Current page URL (window.location.href) + """ + ... diff --git a/sentience/extension/background.js b/sentience/extension/background.js index 2923f55..aff49b0 100644 --- a/sentience/extension/background.js +++ b/sentience/extension/background.js @@ -28,14 +28,14 @@ async function handleSnapshotProcessing(rawData, options = {}) { const startTime = performance.now(); try { if (!Array.isArray(rawData)) throw new Error("rawData must be an array"); - if (rawData.length > 1e4 && (rawData = rawData.slice(0, 1e4)), await initWASM(), + if (rawData.length > 1e4 && (rawData = rawData.slice(0, 1e4)), await initWASM(), !wasmReady) throw new Error("WASM module not initialized"); let analyzedElements, prunedRawData; try { const wasmPromise = new Promise((resolve, reject) => { try { let result; - result = options.limit || options.filter ? analyze_page_with_options(rawData, options) : analyze_page(rawData), + result = options.limit || options.filter ? analyze_page_with_options(rawData, options) : analyze_page(rawData), resolve(result); } catch (e) { reject(e); @@ -101,4 +101,4 @@ initWASM().catch(err => {}), chrome.runtime.onMessage.addListener((request, send event.preventDefault(); }), self.addEventListener("unhandledrejection", event => { event.preventDefault(); -}); \ No newline at end of file +}); diff --git a/sentience/extension/content.js b/sentience/extension/content.js index e94cde1..9d5b3bf 100644 --- a/sentience/extension/content.js +++ b/sentience/extension/content.js @@ -82,7 +82,7 @@ if (!elements || !Array.isArray(elements)) return; removeOverlay(); const host = document.createElement("div"); - host.id = OVERLAY_HOST_ID, host.style.cssText = "\n position: fixed !important;\n top: 0 !important;\n left: 0 !important;\n width: 100vw !important;\n height: 100vh !important;\n pointer-events: none !important;\n z-index: 2147483647 !important;\n margin: 0 !important;\n padding: 0 !important;\n ", + host.id = OVERLAY_HOST_ID, host.style.cssText = "\n position: fixed !important;\n top: 0 !important;\n left: 0 !important;\n width: 100vw !important;\n height: 100vh !important;\n pointer-events: none !important;\n z-index: 2147483647 !important;\n margin: 0 !important;\n padding: 0 !important;\n ", document.body.appendChild(host); const shadow = host.attachShadow({ mode: "closed" @@ -94,15 +94,15 @@ let color; color = isTarget ? "#FF0000" : isPrimary ? "#0066FF" : "#00FF00"; const importanceRatio = maxImportance > 0 ? importance / maxImportance : .5, borderOpacity = isTarget ? 1 : isPrimary ? .9 : Math.max(.4, .5 + .5 * importanceRatio), fillOpacity = .2 * borderOpacity, borderWidth = isTarget ? 2 : isPrimary ? 1.5 : Math.max(.5, Math.round(2 * importanceRatio)), hexOpacity = Math.round(255 * fillOpacity).toString(16).padStart(2, "0"), box = document.createElement("div"); - if (box.style.cssText = `\n position: absolute;\n left: ${bbox.x}px;\n top: ${bbox.y}px;\n width: ${bbox.width}px;\n height: ${bbox.height}px;\n border: ${borderWidth}px solid ${color};\n background-color: ${color}${hexOpacity};\n box-sizing: border-box;\n opacity: ${borderOpacity};\n pointer-events: none;\n `, + if (box.style.cssText = `\n position: absolute;\n left: ${bbox.x}px;\n top: ${bbox.y}px;\n width: ${bbox.width}px;\n height: ${bbox.height}px;\n border: ${borderWidth}px solid ${color};\n background-color: ${color}${hexOpacity};\n box-sizing: border-box;\n opacity: ${borderOpacity};\n pointer-events: none;\n `, importance > 0 || isPrimary) { const badge = document.createElement("span"); - badge.textContent = isPrimary ? `⭐${importance}` : `${importance}`, badge.style.cssText = `\n position: absolute;\n top: -18px;\n left: 0;\n background: ${color};\n color: white;\n font-size: 11px;\n font-weight: bold;\n padding: 2px 6px;\n font-family: Arial, sans-serif;\n border-radius: 3px;\n opacity: 0.95;\n white-space: nowrap;\n pointer-events: none;\n `, + badge.textContent = isPrimary ? `⭐${importance}` : `${importance}`, badge.style.cssText = `\n position: absolute;\n top: -18px;\n left: 0;\n background: ${color};\n color: white;\n font-size: 11px;\n font-weight: bold;\n padding: 2px 6px;\n font-family: Arial, sans-serif;\n border-radius: 3px;\n opacity: 0.95;\n white-space: nowrap;\n pointer-events: none;\n `, box.appendChild(badge); } if (isTarget) { const targetIndicator = document.createElement("span"); - targetIndicator.textContent = "🎯", targetIndicator.style.cssText = "\n position: absolute;\n top: -18px;\n right: 0;\n font-size: 16px;\n pointer-events: none;\n ", + targetIndicator.textContent = "🎯", targetIndicator.style.cssText = "\n position: absolute;\n top: -18px;\n right: 0;\n font-size: 16px;\n pointer-events: none;\n ", box.appendChild(targetIndicator); } shadow.appendChild(box); @@ -120,7 +120,7 @@ let overlayTimeout = null; function removeOverlay() { const existing = document.getElementById(OVERLAY_HOST_ID); - existing && existing.remove(), overlayTimeout && (clearTimeout(overlayTimeout), + existing && existing.remove(), overlayTimeout && (clearTimeout(overlayTimeout), overlayTimeout = null); } -}(); \ No newline at end of file +}(); diff --git a/sentience/extension/injected_api.js b/sentience/extension/injected_api.js index f8c1ec1..983b4da 100644 --- a/sentience/extension/injected_api.js +++ b/sentience/extension/injected_api.js @@ -112,7 +112,7 @@ if (labelEl) { let text = ""; try { - if (text = (labelEl.innerText || "").trim(), !text && labelEl.textContent && (text = labelEl.textContent.trim()), + if (text = (labelEl.innerText || "").trim(), !text && labelEl.textContent && (text = labelEl.textContent.trim()), !text && labelEl.getAttribute) { const ariaLabel = labelEl.getAttribute("aria-label"); ariaLabel && (text = ariaLabel.trim()); @@ -281,7 +281,7 @@ }); const checkStable = () => { const timeSinceLastChange = Date.now() - lastChange, totalWait = Date.now() - startTime; - timeSinceLastChange >= quietPeriod || totalWait >= maxWait ? (observer.disconnect(), + timeSinceLastChange >= quietPeriod || totalWait >= maxWait ? (observer.disconnect(), resolve()) : setTimeout(checkStable, 50); }; checkStable(); @@ -301,7 +301,7 @@ }); const checkQuiet = () => { const timeSinceLastChange = Date.now() - lastChange, totalWait = Date.now() - startTime; - timeSinceLastChange >= quietPeriod || totalWait >= maxWait ? (quietObserver.disconnect(), + timeSinceLastChange >= quietPeriod || totalWait >= maxWait ? (quietObserver.disconnect(), resolve()) : setTimeout(checkQuiet, 50); }; checkQuiet(); @@ -468,8 +468,8 @@ const requestId = `iframe-${idx}-${Date.now()}`, timeout = setTimeout(() => { resolve(null); }, 5e3), listener = event => { - "SENTIENCE_IFRAME_SNAPSHOT_RESPONSE" === event.data?.type && event.data, "SENTIENCE_IFRAME_SNAPSHOT_RESPONSE" === event.data?.type && event.data?.requestId === requestId && (clearTimeout(timeout), - window.removeEventListener("message", listener), event.data.error ? resolve(null) : (event.data.snapshot, + "SENTIENCE_IFRAME_SNAPSHOT_RESPONSE" === event.data?.type && event.data, "SENTIENCE_IFRAME_SNAPSHOT_RESPONSE" === event.data?.type && event.data?.requestId === requestId && (clearTimeout(timeout), + window.removeEventListener("message", listener), event.data.error ? resolve(null) : (event.data.snapshot, resolve({ iframe: iframe, data: event.data.snapshot, @@ -485,7 +485,7 @@ ...options, collectIframes: !0 } - }, "*") : (clearTimeout(timeout), window.removeEventListener("message", listener), + }, "*") : (clearTimeout(timeout), window.removeEventListener("message", listener), resolve(null)); } catch (error) { clearTimeout(timeout), window.removeEventListener("message", listener), resolve(null); @@ -535,7 +535,7 @@ }, 25e3), listener = e => { if ("SENTIENCE_SNAPSHOT_RESULT" === e.data.type && e.data.requestId === requestId) { if (resolved) return; - resolved = !0, clearTimeout(timeout), window.removeEventListener("message", listener), + resolved = !0, clearTimeout(timeout), window.removeEventListener("message", listener), e.data.error ? reject(new Error(e.data.error)) : resolve({ elements: e.data.elements, raw_elements: e.data.raw_elements, @@ -552,7 +552,7 @@ options: options }, "*"); } catch (error) { - resolved || (resolved = !0, clearTimeout(timeout), window.removeEventListener("message", listener), + resolved || (resolved = !0, clearTimeout(timeout), window.removeEventListener("message", listener), reject(new Error(`Failed to send snapshot request: ${error.message}`))); } }); @@ -562,7 +562,7 @@ options.screenshot && (screenshot = await function(options) { return new Promise(resolve => { const requestId = Math.random().toString(36).substring(7), listener = e => { - "SENTIENCE_SCREENSHOT_RESULT" === e.data.type && e.data.requestId === requestId && (window.removeEventListener("message", listener), + "SENTIENCE_SCREENSHOT_RESULT" === e.data.type && e.data.requestId === requestId && (window.removeEventListener("message", listener), resolve(e.data.screenshot)); }; window.addEventListener("message", listener), window.postMessage({ @@ -609,15 +609,15 @@ } if (node.nodeType !== Node.ELEMENT_NODE) return; const tag = node.tagName.toLowerCase(); - if ("h1" === tag && (markdown += "\n# "), "h2" === tag && (markdown += "\n## "), - "h3" === tag && (markdown += "\n### "), "li" === tag && (markdown += "\n- "), insideLink || "p" !== tag && "div" !== tag && "br" !== tag || (markdown += "\n"), - "strong" !== tag && "b" !== tag || (markdown += "**"), "em" !== tag && "i" !== tag || (markdown += "_"), - "a" === tag && (markdown += "[", insideLink = !0), node.shadowRoot ? Array.from(node.shadowRoot.childNodes).forEach(walk) : node.childNodes.forEach(walk), + if ("h1" === tag && (markdown += "\n# "), "h2" === tag && (markdown += "\n## "), + "h3" === tag && (markdown += "\n### "), "li" === tag && (markdown += "\n- "), insideLink || "p" !== tag && "div" !== tag && "br" !== tag || (markdown += "\n"), + "strong" !== tag && "b" !== tag || (markdown += "**"), "em" !== tag && "i" !== tag || (markdown += "_"), + "a" === tag && (markdown += "[", insideLink = !0), node.shadowRoot ? Array.from(node.shadowRoot.childNodes).forEach(walk) : node.childNodes.forEach(walk), "a" === tag) { const href = node.getAttribute("href"); markdown += href ? `](${href})` : "]", insideLink = !1; } - "strong" !== tag && "b" !== tag || (markdown += "**"), "em" !== tag && "i" !== tag || (markdown += "_"), + "strong" !== tag && "b" !== tag || (markdown += "**"), "em" !== tag && "i" !== tag || (markdown += "_"), insideLink || "h1" !== tag && "h2" !== tag && "h3" !== tag && "p" !== tag && "div" !== tag || (markdown += "\n"); }(tempDiv), markdown.replace(/\n{3,}/g, "\n\n").trim(); }(document.body) : function(root) { @@ -630,7 +630,7 @@ const style = window.getComputedStyle(node); if ("none" === style.display || "hidden" === style.visibility) return; const isBlock = "block" === style.display || "flex" === style.display || "P" === node.tagName || "DIV" === node.tagName; - isBlock && (text += " "), node.shadowRoot ? Array.from(node.shadowRoot.childNodes).forEach(walk) : node.childNodes.forEach(walk), + isBlock && (text += " "), node.shadowRoot ? Array.from(node.shadowRoot.childNodes).forEach(walk) : node.childNodes.forEach(walk), isBlock && (text += "\n"); } } else text += node.textContent; @@ -729,25 +729,25 @@ } function startRecording(options = {}) { const {highlightColor: highlightColor = "#ff0000", successColor: successColor = "#00ff00", autoDisableTimeout: autoDisableTimeout = 18e5, keyboardShortcut: keyboardShortcut = "Ctrl+Shift+I"} = options; - if (!window.sentience_registry || 0 === window.sentience_registry.length) return alert("Registry empty. Run `await window.sentience.snapshot()` first!"), + if (!window.sentience_registry || 0 === window.sentience_registry.length) return alert("Registry empty. Run `await window.sentience.snapshot()` first!"), () => {}; window.sentience_registry_map = new Map, window.sentience_registry.forEach((el, idx) => { el && window.sentience_registry_map.set(el, idx); }); let highlightBox = document.getElementById("sentience-highlight-box"); - highlightBox || (highlightBox = document.createElement("div"), highlightBox.id = "sentience-highlight-box", - highlightBox.style.cssText = `\n position: fixed;\n pointer-events: none;\n z-index: 2147483647;\n border: 2px solid ${highlightColor};\n background: rgba(255, 0, 0, 0.1);\n display: none;\n transition: all 0.1s ease;\n box-sizing: border-box;\n `, + highlightBox || (highlightBox = document.createElement("div"), highlightBox.id = "sentience-highlight-box", + highlightBox.style.cssText = `\n position: fixed;\n pointer-events: none;\n z-index: 2147483647;\n border: 2px solid ${highlightColor};\n background: rgba(255, 0, 0, 0.1);\n display: none;\n transition: all 0.1s ease;\n box-sizing: border-box;\n `, document.body.appendChild(highlightBox)); let recordingIndicator = document.getElementById("sentience-recording-indicator"); - recordingIndicator || (recordingIndicator = document.createElement("div"), recordingIndicator.id = "sentience-recording-indicator", - recordingIndicator.style.cssText = `\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n height: 3px;\n background: ${highlightColor};\n z-index: 2147483646;\n pointer-events: none;\n `, + recordingIndicator || (recordingIndicator = document.createElement("div"), recordingIndicator.id = "sentience-recording-indicator", + recordingIndicator.style.cssText = `\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n height: 3px;\n background: ${highlightColor};\n z-index: 2147483646;\n pointer-events: none;\n `, document.body.appendChild(recordingIndicator)), recordingIndicator.style.display = "block"; const mouseOverHandler = e => { const el = e.target; if (!el || el === highlightBox || el === recordingIndicator) return; const rect = el.getBoundingClientRect(); - highlightBox.style.display = "block", highlightBox.style.top = rect.top + window.scrollY + "px", - highlightBox.style.left = rect.left + window.scrollX + "px", highlightBox.style.width = rect.width + "px", + highlightBox.style.display = "block", highlightBox.style.top = rect.top + window.scrollY + "px", + highlightBox.style.left = rect.left + window.scrollX + "px", highlightBox.style.width = rect.width + "px", highlightBox.style.height = rect.height + "px"; }, clickHandler = e => { e.preventDefault(), e.stopPropagation(); @@ -824,7 +824,7 @@ debug_snapshot: rawData }, jsonString = JSON.stringify(snippet, null, 2); navigator.clipboard.writeText(jsonString).then(() => { - highlightBox.style.border = `2px solid ${successColor}`, highlightBox.style.background = "rgba(0, 255, 0, 0.2)", + highlightBox.style.border = `2px solid ${successColor}`, highlightBox.style.background = "rgba(0, 255, 0, 0.2)", setTimeout(() => { highlightBox.style.border = `2px solid ${highlightColor}`, highlightBox.style.background = "rgba(255, 0, 0, 0.1)"; }, 500); @@ -834,15 +834,15 @@ }; let timeoutId = null; const stopRecording = () => { - document.removeEventListener("mouseover", mouseOverHandler, !0), document.removeEventListener("click", clickHandler, !0), - document.removeEventListener("keydown", keyboardHandler, !0), timeoutId && (clearTimeout(timeoutId), - timeoutId = null), highlightBox && (highlightBox.style.display = "none"), recordingIndicator && (recordingIndicator.style.display = "none"), + document.removeEventListener("mouseover", mouseOverHandler, !0), document.removeEventListener("click", clickHandler, !0), + document.removeEventListener("keydown", keyboardHandler, !0), timeoutId && (clearTimeout(timeoutId), + timeoutId = null), highlightBox && (highlightBox.style.display = "none"), recordingIndicator && (recordingIndicator.style.display = "none"), window.sentience_registry_map && window.sentience_registry_map.clear(), window.sentience_stopRecording === stopRecording && delete window.sentience_stopRecording; }, keyboardHandler = e => { - (e.ctrlKey || e.metaKey) && e.shiftKey && "I" === e.key && (e.preventDefault(), + (e.ctrlKey || e.metaKey) && e.shiftKey && "I" === e.key && (e.preventDefault(), stopRecording()); }; - return document.addEventListener("mouseover", mouseOverHandler, !0), document.addEventListener("click", clickHandler, !0), + return document.addEventListener("mouseover", mouseOverHandler, !0), document.addEventListener("click", clickHandler, !0), document.addEventListener("keydown", keyboardHandler, !0), autoDisableTimeout > 0 && (timeoutId = setTimeout(() => { stopRecording(); }, autoDisableTimeout)), window.sentience_stopRecording = stopRecording, stopRecording; @@ -902,4 +902,4 @@ } }), window.sentience_iframe_handler_setup = !0)); })(); -}(); \ No newline at end of file +}(); diff --git a/sentience/extension/pkg/sentience_core.js b/sentience/extension/pkg/sentience_core.js index ecba479..2696a64 100644 --- a/sentience/extension/pkg/sentience_core.js +++ b/sentience/extension/pkg/sentience_core.js @@ -47,7 +47,7 @@ function getArrayU8FromWasm0(ptr, len) { let cachedDataViewMemory0 = null; function getDataViewMemory0() { - return (null === cachedDataViewMemory0 || !0 === cachedDataViewMemory0.buffer.detached || void 0 === cachedDataViewMemory0.buffer.detached && cachedDataViewMemory0.buffer !== wasm.memory.buffer) && (cachedDataViewMemory0 = new DataView(wasm.memory.buffer)), + return (null === cachedDataViewMemory0 || !0 === cachedDataViewMemory0.buffer.detached || void 0 === cachedDataViewMemory0.buffer.detached && cachedDataViewMemory0.buffer !== wasm.memory.buffer) && (cachedDataViewMemory0 = new DataView(wasm.memory.buffer)), cachedDataViewMemory0; } @@ -58,7 +58,7 @@ function getStringFromWasm0(ptr, len) { let cachedUint8ArrayMemory0 = null; function getUint8ArrayMemory0() { - return null !== cachedUint8ArrayMemory0 && 0 !== cachedUint8ArrayMemory0.byteLength || (cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer)), + return null !== cachedUint8ArrayMemory0 && 0 !== cachedUint8ArrayMemory0.byteLength || (cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer)), cachedUint8ArrayMemory0; } @@ -87,7 +87,7 @@ function isLikeNone(x) { function passStringToWasm0(arg, malloc, realloc) { if (void 0 === realloc) { const buf = cachedTextEncoder.encode(arg), ptr = malloc(buf.length, 1) >>> 0; - return getUint8ArrayMemory0().subarray(ptr, ptr + buf.length).set(buf), WASM_VECTOR_LEN = buf.length, + return getUint8ArrayMemory0().subarray(ptr, ptr + buf.length).set(buf), WASM_VECTOR_LEN = buf.length, ptr; } let len = arg.length, ptr = malloc(len, 1) >>> 0; @@ -188,7 +188,7 @@ function __wbg_get_imports() { return Number(getObject(arg0)); }, imports.wbg.__wbg___wbindgen_bigint_get_as_i64_6e32f5e6aff02e1d = function(arg0, arg1) { const v = getObject(arg1), ret = "bigint" == typeof v ? v : void 0; - getDataViewMemory0().setBigInt64(arg0 + 8, isLikeNone(ret) ? BigInt(0) : ret, !0), + getDataViewMemory0().setBigInt64(arg0 + 8, isLikeNone(ret) ? BigInt(0) : ret, !0), getDataViewMemory0().setInt32(arg0 + 0, !isLikeNone(ret), !0); }, imports.wbg.__wbg___wbindgen_boolean_get_dea25b33882b895b = function(arg0) { const v = getObject(arg0), ret = "boolean" == typeof v ? v : void 0; @@ -296,7 +296,7 @@ function __wbg_get_imports() { } function __wbg_finalize_init(instance, module) { - return wasm = instance.exports, __wbg_init.__wbindgen_wasm_module = module, cachedDataViewMemory0 = null, + return wasm = instance.exports, __wbg_init.__wbindgen_wasm_module = module, cachedDataViewMemory0 = null, cachedUint8ArrayMemory0 = null, wasm; } @@ -310,7 +310,7 @@ function initSync(module) { async function __wbg_init(module_or_path) { if (void 0 !== wasm) return wasm; - void 0 !== module_or_path && Object.getPrototypeOf(module_or_path) === Object.prototype && ({module_or_path: module_or_path} = module_or_path), + void 0 !== module_or_path && Object.getPrototypeOf(module_or_path) === Object.prototype && ({module_or_path: module_or_path} = module_or_path), void 0 === module_or_path && (module_or_path = new URL("sentience_core_bg.wasm", import.meta.url)); const imports = __wbg_get_imports(); ("string" == typeof module_or_path || "function" == typeof Request && module_or_path instanceof Request || "function" == typeof URL && module_or_path instanceof URL) && (module_or_path = fetch(module_or_path)); @@ -320,4 +320,4 @@ async function __wbg_init(module_or_path) { export { initSync }; -export default __wbg_init; \ No newline at end of file +export default __wbg_init; diff --git a/tests/test_agent_runtime.py b/tests/test_agent_runtime.py new file mode 100644 index 0000000..c2f5e8c --- /dev/null +++ b/tests/test_agent_runtime.py @@ -0,0 +1,558 @@ +""" +Tests for AgentRuntime. + +These tests verify the AgentRuntime works correctly with the new +BrowserBackendV0-based architecture. +""" + +import pytest +from unittest.mock import AsyncMock, MagicMock, patch + +from sentience.agent_runtime import AgentRuntime +from sentience.models import SnapshotOptions +from sentience.verification import AssertContext, AssertOutcome + + +class MockBackend: + """Mock BrowserBackendV0 implementation for testing.""" + + def __init__(self) -> None: + self._url = "https://example.com" + self.eval_results: dict[str, any] = {} + + async def get_url(self) -> str: + return self._url + + async def eval(self, expression: str) -> any: + return self.eval_results.get(expression) + + async def refresh_page_info(self): + pass + + async def call(self, function_declaration: str, args=None): + pass + + async def get_layout_metrics(self): + pass + + async def screenshot_png(self) -> bytes: + return b"" + + async def mouse_move(self, x: float, y: float) -> None: + pass + + async def mouse_click(self, x: float, y: float, button="left", click_count=1) -> None: + pass + + async def wheel(self, delta_y: float, x=None, y=None) -> None: + pass + + async def type_text(self, text: str) -> None: + pass + + async def wait_ready_state(self, state="interactive", timeout_ms=15000) -> None: + pass + + +class MockTracer: + """Mock Tracer for testing.""" + + def __init__(self) -> None: + self.events: list[dict] = [] + + def emit(self, event_type: str, data: dict, step_id: str | None = None) -> None: + self.events.append({ + "type": event_type, + "data": data, + "step_id": step_id, + }) + + +class TestAgentRuntimeInit: + """Tests for AgentRuntime initialization.""" + + def test_init_with_backend(self) -> None: + """Test basic initialization with backend.""" + backend = MockBackend() + tracer = MockTracer() + + runtime = AgentRuntime(backend=backend, tracer=tracer) + + assert runtime.backend is backend + assert runtime.tracer is tracer + assert runtime.step_id is None + assert runtime.step_index == 0 + assert runtime.last_snapshot is None + assert runtime.is_task_done is False + + def test_init_with_snapshot_options(self) -> None: + """Test initialization with custom snapshot options.""" + backend = MockBackend() + tracer = MockTracer() + options = SnapshotOptions(limit=100, goal="test goal") + + runtime = AgentRuntime(backend=backend, tracer=tracer, snapshot_options=options) + + assert runtime._snapshot_options.limit == 100 + assert runtime._snapshot_options.goal == "test goal" + + def test_init_with_api_key(self) -> None: + """Test initialization with API key enables use_api.""" + backend = MockBackend() + tracer = MockTracer() + + runtime = AgentRuntime( + backend=backend, + tracer=tracer, + sentience_api_key="sk_test_key", + ) + + assert runtime._snapshot_options.sentience_api_key == "sk_test_key" + assert runtime._snapshot_options.use_api is True + + def test_init_with_api_key_and_options(self) -> None: + """Test API key merges with provided options.""" + backend = MockBackend() + tracer = MockTracer() + options = SnapshotOptions(limit=50) + + runtime = AgentRuntime( + backend=backend, + tracer=tracer, + snapshot_options=options, + sentience_api_key="sk_pro_key", + ) + + assert runtime._snapshot_options.limit == 50 + assert runtime._snapshot_options.sentience_api_key == "sk_pro_key" + assert runtime._snapshot_options.use_api is True + + +class TestAgentRuntimeGetUrl: + """Tests for get_url method.""" + + @pytest.mark.asyncio + async def test_get_url(self) -> None: + """Test get_url returns URL from backend.""" + backend = MockBackend() + backend._url = "https://test.example.com/page" + tracer = MockTracer() + + runtime = AgentRuntime(backend=backend, tracer=tracer) + url = await runtime.get_url() + + assert url == "https://test.example.com/page" + assert runtime._cached_url == "https://test.example.com/page" + + +class TestAgentRuntimeBeginStep: + """Tests for begin_step method.""" + + def test_begin_step_generates_step_id(self) -> None: + """Test begin_step generates a UUID step_id.""" + backend = MockBackend() + tracer = MockTracer() + runtime = AgentRuntime(backend=backend, tracer=tracer) + + step_id = runtime.begin_step(goal="Test step") + + assert step_id is not None + assert len(step_id) == 36 # UUID length with dashes + + def test_begin_step_increments_index(self) -> None: + """Test begin_step auto-increments step_index.""" + backend = MockBackend() + tracer = MockTracer() + runtime = AgentRuntime(backend=backend, tracer=tracer) + + runtime.begin_step(goal="Step 1") + assert runtime.step_index == 1 + + runtime.begin_step(goal="Step 2") + assert runtime.step_index == 2 + + def test_begin_step_explicit_index(self) -> None: + """Test begin_step with explicit step_index.""" + backend = MockBackend() + tracer = MockTracer() + runtime = AgentRuntime(backend=backend, tracer=tracer) + + runtime.begin_step(goal="Custom step", step_index=10) + assert runtime.step_index == 10 + + def test_begin_step_clears_assertions(self) -> None: + """Test begin_step clears previous assertions.""" + backend = MockBackend() + tracer = MockTracer() + runtime = AgentRuntime(backend=backend, tracer=tracer) + + # Add some assertions + runtime._assertions_this_step = [{"label": "old", "passed": True}] + + runtime.begin_step(goal="New step") + + assert runtime._assertions_this_step == [] + + +class TestAgentRuntimeAssertions: + """Tests for assertion methods.""" + + def test_assert_passing(self) -> None: + """Test assert_ with passing predicate.""" + backend = MockBackend() + tracer = MockTracer() + runtime = AgentRuntime(backend=backend, tracer=tracer) + runtime.begin_step(goal="Test") + + # Create a passing predicate + def passing_predicate(ctx: AssertContext) -> AssertOutcome: + return AssertOutcome(passed=True, reason="Matched", details={}) + + result = runtime.assert_(passing_predicate, label="test_label") + + assert result is True + assert len(runtime._assertions_this_step) == 1 + assert runtime._assertions_this_step[0]["label"] == "test_label" + assert runtime._assertions_this_step[0]["passed"] is True + + def test_assert_failing(self) -> None: + """Test assert_ with failing predicate.""" + backend = MockBackend() + tracer = MockTracer() + runtime = AgentRuntime(backend=backend, tracer=tracer) + runtime.begin_step(goal="Test") + + def failing_predicate(ctx: AssertContext) -> AssertOutcome: + return AssertOutcome(passed=False, reason="Not matched", details={}) + + result = runtime.assert_(failing_predicate, label="fail_label") + + assert result is False + assert runtime._assertions_this_step[0]["passed"] is False + + def test_assert_emits_event(self) -> None: + """Test assert_ emits verification event.""" + backend = MockBackend() + tracer = MockTracer() + runtime = AgentRuntime(backend=backend, tracer=tracer) + runtime.begin_step(goal="Test") + + def predicate(ctx: AssertContext) -> AssertOutcome: + return AssertOutcome(passed=True, reason="OK", details={"key": "value"}) + + runtime.assert_(predicate, label="test_emit") + + assert len(tracer.events) == 1 + event = tracer.events[0] + assert event["type"] == "verification" + assert event["data"]["kind"] == "assert" + assert event["data"]["passed"] is True + assert event["data"]["label"] == "test_emit" + + def test_assert_done_marks_task_complete(self) -> None: + """Test assert_done marks task as done on success.""" + backend = MockBackend() + tracer = MockTracer() + runtime = AgentRuntime(backend=backend, tracer=tracer) + runtime.begin_step(goal="Test") + + def passing_predicate(ctx: AssertContext) -> AssertOutcome: + return AssertOutcome(passed=True, reason="Done", details={}) + + result = runtime.assert_done(passing_predicate, label="task_complete") + + assert result is True + assert runtime.is_task_done is True + assert runtime._task_done_label == "task_complete" + + def test_assert_done_does_not_mark_on_failure(self) -> None: + """Test assert_done doesn't mark task done on failure.""" + backend = MockBackend() + tracer = MockTracer() + runtime = AgentRuntime(backend=backend, tracer=tracer) + runtime.begin_step(goal="Test") + + def failing_predicate(ctx: AssertContext) -> AssertOutcome: + return AssertOutcome(passed=False, reason="Not done", details={}) + + result = runtime.assert_done(failing_predicate, label="task_incomplete") + + assert result is False + assert runtime.is_task_done is False + + +class TestAgentRuntimeAssertionHelpers: + """Tests for assertion helper methods.""" + + def test_all_assertions_passed_empty(self) -> None: + """Test all_assertions_passed with no assertions.""" + backend = MockBackend() + tracer = MockTracer() + runtime = AgentRuntime(backend=backend, tracer=tracer) + + assert runtime.all_assertions_passed() is True + + def test_all_assertions_passed_true(self) -> None: + """Test all_assertions_passed when all pass.""" + backend = MockBackend() + tracer = MockTracer() + runtime = AgentRuntime(backend=backend, tracer=tracer) + runtime._assertions_this_step = [ + {"passed": True}, + {"passed": True}, + ] + + assert runtime.all_assertions_passed() is True + + def test_all_assertions_passed_false(self) -> None: + """Test all_assertions_passed when one fails.""" + backend = MockBackend() + tracer = MockTracer() + runtime = AgentRuntime(backend=backend, tracer=tracer) + runtime._assertions_this_step = [ + {"passed": True}, + {"passed": False}, + ] + + assert runtime.all_assertions_passed() is False + + def test_required_assertions_passed(self) -> None: + """Test required_assertions_passed ignores optional failures.""" + backend = MockBackend() + tracer = MockTracer() + runtime = AgentRuntime(backend=backend, tracer=tracer) + runtime._assertions_this_step = [ + {"passed": True, "required": True}, + {"passed": False, "required": False}, # Optional failure + ] + + assert runtime.required_assertions_passed() is True + + def test_required_assertions_failed(self) -> None: + """Test required_assertions_passed fails on required failure.""" + backend = MockBackend() + tracer = MockTracer() + runtime = AgentRuntime(backend=backend, tracer=tracer) + runtime._assertions_this_step = [ + {"passed": True, "required": True}, + {"passed": False, "required": True}, # Required failure + ] + + assert runtime.required_assertions_passed() is False + + +class TestAgentRuntimeFlushAssertions: + """Tests for flush_assertions method.""" + + def test_flush_assertions(self) -> None: + """Test flush_assertions returns and clears assertions.""" + backend = MockBackend() + tracer = MockTracer() + runtime = AgentRuntime(backend=backend, tracer=tracer) + runtime._assertions_this_step = [ + {"label": "a", "passed": True}, + {"label": "b", "passed": False}, + ] + + assertions = runtime.flush_assertions() + + assert len(assertions) == 2 + assert assertions[0]["label"] == "a" + assert runtime._assertions_this_step == [] + + +class TestAgentRuntimeGetAssertionsForStepEnd: + """Tests for get_assertions_for_step_end method.""" + + def test_get_assertions_basic(self) -> None: + """Test get_assertions_for_step_end returns assertions.""" + backend = MockBackend() + tracer = MockTracer() + runtime = AgentRuntime(backend=backend, tracer=tracer) + runtime._assertions_this_step = [{"label": "test", "passed": True}] + + result = runtime.get_assertions_for_step_end() + + assert "assertions" in result + assert len(result["assertions"]) == 1 + assert "task_done" not in result + + def test_get_assertions_with_task_done(self) -> None: + """Test get_assertions_for_step_end includes task_done.""" + backend = MockBackend() + tracer = MockTracer() + runtime = AgentRuntime(backend=backend, tracer=tracer) + runtime._task_done = True + runtime._task_done_label = "completed" + + result = runtime.get_assertions_for_step_end() + + assert result["task_done"] is True + assert result["task_done_label"] == "completed" + + +class TestAgentRuntimeResetTaskDone: + """Tests for reset_task_done method.""" + + def test_reset_task_done(self) -> None: + """Test reset_task_done clears task state.""" + backend = MockBackend() + tracer = MockTracer() + runtime = AgentRuntime(backend=backend, tracer=tracer) + runtime._task_done = True + runtime._task_done_label = "was_done" + + runtime.reset_task_done() + + assert runtime.is_task_done is False + assert runtime._task_done_label is None + + +class TestAgentRuntimeContext: + """Tests for _ctx method.""" + + def test_ctx_with_snapshot(self) -> None: + """Test _ctx uses snapshot URL.""" + backend = MockBackend() + tracer = MockTracer() + runtime = AgentRuntime(backend=backend, tracer=tracer) + runtime.begin_step(goal="Test") + + # Mock snapshot with URL + mock_snapshot = MagicMock() + mock_snapshot.url = "https://snapshot-url.com" + runtime.last_snapshot = mock_snapshot + + ctx = runtime._ctx() + + assert ctx.url == "https://snapshot-url.com" + assert ctx.snapshot is mock_snapshot + assert ctx.step_id == runtime.step_id + + def test_ctx_fallback_to_cached_url(self) -> None: + """Test _ctx falls back to cached URL.""" + backend = MockBackend() + tracer = MockTracer() + runtime = AgentRuntime(backend=backend, tracer=tracer) + runtime._cached_url = "https://cached-url.com" + runtime.begin_step(goal="Test") + + ctx = runtime._ctx() + + assert ctx.url == "https://cached-url.com" + assert ctx.snapshot is None + + +class TestAgentRuntimeFromSentienceBrowser: + """Tests for from_sentience_browser factory method.""" + + @pytest.mark.asyncio + async def test_from_sentience_browser_creates_runtime(self) -> None: + """Test from_sentience_browser creates runtime with legacy support.""" + mock_browser = MagicMock() + mock_page = MagicMock() + mock_page.url = "https://example.com" + tracer = MockTracer() + + with patch("sentience.backends.playwright_backend.PlaywrightBackend") as MockPWBackend: + mock_backend_instance = MagicMock() + MockPWBackend.return_value = mock_backend_instance + + runtime = await AgentRuntime.from_sentience_browser( + browser=mock_browser, + page=mock_page, + tracer=tracer, + ) + + assert runtime.backend is mock_backend_instance + assert runtime._legacy_browser is mock_browser + assert runtime._legacy_page is mock_page + MockPWBackend.assert_called_once_with(mock_page) + + @pytest.mark.asyncio + async def test_from_sentience_browser_with_api_key(self) -> None: + """Test from_sentience_browser passes API key.""" + mock_browser = MagicMock() + mock_page = MagicMock() + tracer = MockTracer() + + with patch("sentience.backends.playwright_backend.PlaywrightBackend"): + runtime = await AgentRuntime.from_sentience_browser( + browser=mock_browser, + page=mock_page, + tracer=tracer, + sentience_api_key="sk_test", + ) + + assert runtime._snapshot_options.sentience_api_key == "sk_test" + assert runtime._snapshot_options.use_api is True + + +class TestAgentRuntimeSnapshot: + """Tests for snapshot method.""" + + @pytest.mark.asyncio + async def test_snapshot_with_legacy_browser(self) -> None: + """Test snapshot uses legacy browser when available.""" + backend = MockBackend() + tracer = MockTracer() + runtime = AgentRuntime(backend=backend, tracer=tracer) + + # Set up legacy browser + mock_browser = MagicMock() + mock_page = MagicMock() + mock_snapshot = MagicMock() + mock_browser.snapshot = AsyncMock(return_value=mock_snapshot) + + runtime._legacy_browser = mock_browser + runtime._legacy_page = mock_page + + result = await runtime.snapshot(limit=30) + + mock_browser.snapshot.assert_called_once_with(mock_page, limit=30) + assert result is mock_snapshot + assert runtime.last_snapshot is mock_snapshot + + @pytest.mark.asyncio + async def test_snapshot_with_backend(self) -> None: + """Test snapshot uses backend-agnostic snapshot.""" + backend = MockBackend() + tracer = MockTracer() + runtime = AgentRuntime(backend=backend, tracer=tracer) + + mock_snapshot = MagicMock() + + with patch("sentience.backends.snapshot.snapshot", new_callable=AsyncMock) as mock_snap_fn: + mock_snap_fn.return_value = mock_snapshot + + result = await runtime.snapshot(goal="test goal") + + mock_snap_fn.assert_called_once() + call_args = mock_snap_fn.call_args + assert call_args[0][0] is backend + assert call_args[1]["options"].goal == "test goal" + assert result is mock_snapshot + assert runtime.last_snapshot is mock_snapshot + + @pytest.mark.asyncio + async def test_snapshot_merges_options(self) -> None: + """Test snapshot merges default and call-specific options.""" + backend = MockBackend() + tracer = MockTracer() + default_options = SnapshotOptions(limit=100, screenshot=True) + runtime = AgentRuntime( + backend=backend, + tracer=tracer, + snapshot_options=default_options, + ) + + with patch("sentience.backends.snapshot.snapshot", new_callable=AsyncMock) as mock_snap_fn: + mock_snap_fn.return_value = MagicMock() + + await runtime.snapshot(goal="override goal") + + call_args = mock_snap_fn.call_args + options = call_args[1]["options"] + assert options.limit == 100 # From default + assert options.screenshot is True # From default + assert options.goal == "override goal" # From call diff --git a/tests/test_backends.py b/tests/test_backends.py index 00e4325..ef725e3 100644 --- a/tests/test_backends.py +++ b/tests/test_backends.py @@ -341,6 +341,30 @@ async def test_wait_ready_state_timeout( with pytest.raises(TimeoutError, match="Timed out"): await backend.wait_ready_state(state="complete", timeout_ms=200) + @pytest.mark.asyncio + async def test_get_url(self, backend: CDPBackendV0, transport: MockCDPTransport) -> None: + """Test get_url returns current page URL.""" + transport.set_response( + "Runtime.evaluate", + {"result": {"type": "string", "value": "https://example.com/page"}}, + ) + + url = await backend.get_url() + + assert url == "https://example.com/page" + + @pytest.mark.asyncio + async def test_get_url_empty(self, backend: CDPBackendV0, transport: MockCDPTransport) -> None: + """Test get_url returns empty string when URL is None.""" + transport.set_response( + "Runtime.evaluate", + {"result": {"type": "undefined"}}, + ) + + url = await backend.get_url() + + assert url == "" + class TestCDPBackendProtocol: """Test that CDPBackendV0 implements BrowserBackendV0 protocol.""" @@ -736,6 +760,17 @@ async def test_screenshot_png(self) -> None: assert result.startswith(b"\x89PNG") mock_page.screenshot.assert_called_once_with(type="png") + @pytest.mark.asyncio + async def test_get_url(self) -> None: + """Test get_url returns page.url.""" + mock_page = MagicMock() + mock_page.url = "https://example.com/test" + + backend = PlaywrightBackend(mock_page) + url = await backend.get_url() + + assert url == "https://example.com/test" + class TestCachedSnapshot: """Tests for CachedSnapshot caching behavior.""" From cf0f2fb8928b2e93e15524f0e76d88a138e0e836 Mon Sep 17 00:00:00 2001 From: SentienceDEV Date: Sun, 11 Jan 2026 13:14:14 -0800 Subject: [PATCH 2/6] fix tests --- tests/test_agent_runtime.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/tests/test_agent_runtime.py b/tests/test_agent_runtime.py index c2f5e8c..d708c84 100644 --- a/tests/test_agent_runtime.py +++ b/tests/test_agent_runtime.py @@ -5,9 +5,10 @@ BrowserBackendV0-based architecture. """ -import pytest from unittest.mock import AsyncMock, MagicMock, patch +import pytest + from sentience.agent_runtime import AgentRuntime from sentience.models import SnapshotOptions from sentience.verification import AssertContext, AssertOutcome @@ -61,11 +62,13 @@ def __init__(self) -> None: self.events: list[dict] = [] def emit(self, event_type: str, data: dict, step_id: str | None = None) -> None: - self.events.append({ - "type": event_type, - "data": data, - "step_id": step_id, - }) + self.events.append( + { + "type": event_type, + "data": data, + "step_id": step_id, + } + ) class TestAgentRuntimeInit: From 09e2dd7d1248413c3fb063c0bfc503fc10108961 Mon Sep 17 00:00:00 2001 From: SentienceDEV Date: Sun, 11 Jan 2026 13:57:02 -0800 Subject: [PATCH 3/6] fix tests --- sentience/agent_runtime.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sentience/agent_runtime.py b/sentience/agent_runtime.py index ed8d8c1..3197e24 100644 --- a/sentience/agent_runtime.py +++ b/sentience/agent_runtime.py @@ -342,7 +342,7 @@ def assert_done( Returns: True if task is complete (assertion passed), False otherwise """ - ok = self.assertTrue(predicate, label=label, required=True) + ok = self.assert_(predicate, label=label, required=True) if ok: self._task_done = True From 12e86f158ea88812e7ac401e37ae189c20a829ae Mon Sep 17 00:00:00 2001 From: SentienceDEV Date: Sun, 11 Jan 2026 14:21:25 -0800 Subject: [PATCH 4/6] Runtime example --- examples/agent_runtime_verification.py | 67 ++++---- .../browser-use/agent_runtime_browser_use.py | 148 ++++++++++++++++++ 2 files changed, 180 insertions(+), 35 deletions(-) create mode 100644 examples/browser-use/agent_runtime_browser_use.py diff --git a/examples/agent_runtime_verification.py b/examples/agent_runtime_verification.py index dc93d26..abdbfbe 100644 --- a/examples/agent_runtime_verification.py +++ b/examples/agent_runtime_verification.py @@ -5,65 +5,69 @@ The AgentRuntime provides assertion predicates to verify browser state during execution. Key features: +- BrowserBackendV0 protocol: Framework-agnostic browser integration - Predicate helpers: url_matches, url_contains, exists, not_exists, element_count - Combinators: all_of, any_of for complex conditions - Task completion: assert_done() for goal verification - Trace integration: Assertions emitted to trace for Studio timeline Requirements: -- SENTIENCE_API_KEY (Pro or Enterprise tier) +- SENTIENCE_API_KEY (Pro or Enterprise tier) - optional, enables Gateway refinement Usage: python examples/agent_runtime_verification.py """ +import asyncio import os -from sentience import ( - AgentRuntime, - SentienceBrowser, +from sentience import AsyncSentienceBrowser +from sentience.agent_runtime import AgentRuntime +from sentience.tracing import JsonlTraceSink, Tracer +from sentience.verification import ( all_of, exists, not_exists, url_contains, url_matches, ) -from sentience.tracer_factory import create_tracer -def main(): - # Get API key from environment +async def main(): + # Get API key from environment (optional - enables Pro tier features) sentience_key = os.environ.get("SENTIENCE_API_KEY") - if not sentience_key: - print("Error: SENTIENCE_API_KEY not set") - return - print("Starting Agent Runtime Verification Demo\n") # 1. Create tracer for verification event emission run_id = "verification-demo" - tracer = create_tracer(api_key=sentience_key, run_id=run_id, upload_trace=False) + sink = JsonlTraceSink(f"traces/{run_id}.jsonl") + tracer = Tracer(run_id=run_id, sink=sink) print(f"Run ID: {run_id}\n") - # 2. Create browser - browser = SentienceBrowser(api_key=sentience_key, headless=False) - browser.start() - - try: - # 3. Create AgentRuntime with browser, page, and tracer - runtime = AgentRuntime(browser, browser.page, tracer) + # 2. Create browser using AsyncSentienceBrowser + async with AsyncSentienceBrowser(headless=False) as browser: + page = await browser.new_page() + + # 3. Create AgentRuntime using from_sentience_browser factory + # This wraps the browser/page into the new BrowserBackendV0 architecture + runtime = await AgentRuntime.from_sentience_browser( + browser=browser, + page=page, + tracer=tracer, + sentience_api_key=sentience_key, # Optional: enables Pro tier Gateway refinement + ) # 4. Navigate to a page print("Navigating to example.com...\n") - browser.page.goto("https://example.com") - browser.page.wait_for_load_state("networkidle") + await page.goto("https://example.com") + await page.wait_for_load_state("networkidle") # 5. Begin a verification step runtime.begin_step("Verify page loaded correctly") # 6. Take a snapshot (required for element assertions) - snapshot = runtime.snapshot() + snapshot = await runtime.snapshot() print(f"Snapshot taken: {len(snapshot.elements)} elements found\n") # 7. Run assertions against current state @@ -108,19 +112,12 @@ def main(): print(f" Required passed: {runtime.required_assertions_passed()}") print(f" Task complete: {runtime.is_task_done}") - except Exception as e: - print(f"\nError during execution: {e}") - raise - - finally: - # Close tracer and browser - print("\nClosing tracer...") - tracer.close(blocking=True) - print(f"Trace saved to: ~/.sentience/traces/{run_id}.jsonl") - - browser.close() - print("Done!") + # Close tracer after browser context exits + print("\nClosing tracer...") + tracer.close() + print(f"Trace saved to: traces/{run_id}.jsonl") + print("Done!") if __name__ == "__main__": - main() + asyncio.run(main()) diff --git a/examples/browser-use/agent_runtime_browser_use.py b/examples/browser-use/agent_runtime_browser_use.py new file mode 100644 index 0000000..50792f4 --- /dev/null +++ b/examples/browser-use/agent_runtime_browser_use.py @@ -0,0 +1,148 @@ +""" +Example: Agent Runtime with browser-use Integration + +Demonstrates how to use AgentRuntime with browser-use library via BrowserBackendV0 protocol. +This pattern enables framework-agnostic browser integration for agent verification loops. + +Key features: +- BrowserUseAdapter: Wraps browser-use BrowserSession into CDPBackendV0 +- BrowserBackendV0 protocol: Minimal interface for browser operations +- Direct AgentRuntime construction: No need for from_sentience_browser factory + +Requirements: +- browser-use library: pip install browser-use +- SENTIENCE_API_KEY (optional) - enables Pro tier Gateway refinement + +Usage: + python examples/agent_runtime_browser_use.py +""" + +import asyncio +import os + +from sentience import get_extension_dir +from sentience.agent_runtime import AgentRuntime +from sentience.backends import BrowserUseAdapter +from sentience.tracing import JsonlTraceSink, Tracer +from sentience.verification import ( + all_of, + exists, + not_exists, + url_contains, + url_matches, +) + +# browser-use imports (requires: pip install browser-use) +try: + from browser_use import BrowserProfile, BrowserSession +except ImportError: + print("Error: browser-use library not installed.") + print("Install with: pip install browser-use") + exit(1) + + +async def main(): + # Get API key from environment (optional - enables Pro tier features) + sentience_key = os.environ.get("SENTIENCE_API_KEY") + + print("Starting Agent Runtime with browser-use Integration Demo\n") + + # 1. Create tracer for verification event emission + run_id = "browser-use-demo" + sink = JsonlTraceSink(f"traces/{run_id}.jsonl") + tracer = Tracer(run_id=run_id, sink=sink) + print(f"Run ID: {run_id}\n") + + # 2. Create browser-use session with Sentience extension loaded + # The extension is required for snapshot() to work + extension_dir = get_extension_dir() + profile = BrowserProfile( + args=[f"--load-extension={extension_dir}"], + headless=False, + ) + session = BrowserSession(browser_profile=profile) + await session.start() + + try: + # 3. Create BrowserBackendV0 using BrowserUseAdapter + # This wraps the browser-use session into the standard backend protocol + adapter = BrowserUseAdapter(session) + backend = await adapter.create_backend() + print("Created CDPBackendV0 from browser-use session\n") + + # 4. Create AgentRuntime directly with backend + # For Pro tier, pass sentience_api_key for Gateway element refinement + runtime = AgentRuntime( + backend=backend, + tracer=tracer, + sentience_api_key=sentience_key, # Optional: enables Pro tier + ) + + # 5. Navigate using browser-use + page = await session.get_current_page() + print("Navigating to example.com...\n") + await page.goto("https://example.com") + await page.wait_for_load_state("networkidle") + + # 6. Begin a verification step + runtime.begin_step("Verify page loaded correctly") + + # 7. Take a snapshot (uses Sentience extension via backend.eval()) + snapshot = await runtime.snapshot() + print(f"Snapshot taken: {len(snapshot.elements)} elements found\n") + + # 8. Run assertions against current state + print("Running assertions:\n") + + # URL assertions + url_ok = runtime.assert_(url_contains("example.com"), "on_example_domain") + print(f" [{'PASS' if url_ok else 'FAIL'}] on_example_domain") + + url_match = runtime.assert_(url_matches(r"https://.*example\.com"), "url_is_https") + print(f" [{'PASS' if url_match else 'FAIL'}] url_is_https") + + # Element assertions + has_heading = runtime.assert_(exists("role=heading"), "has_heading") + print(f" [{'PASS' if has_heading else 'FAIL'}] has_heading") + + no_error = runtime.assert_(not_exists("text~'Error'"), "no_error_message") + print(f" [{'PASS' if no_error else 'FAIL'}] no_error_message") + + # Combined assertion with all_of + page_ready = runtime.assert_( + all_of(url_contains("example"), exists("role=link")), + "page_fully_ready", + ) + print(f" [{'PASS' if page_ready else 'FAIL'}] page_fully_ready") + + # 9. Check if task is done (required assertion) + task_complete = runtime.assert_done( + exists("text~'Example Domain'"), + "reached_example_page", + ) + print(f"\n [{'DONE' if task_complete else 'NOT DONE'}] reached_example_page") + + # 10. Get accumulated assertions for step_end event + assertions_data = runtime.get_assertions_for_step_end() + print(f"\nTotal assertions: {len(assertions_data['assertions'])}") + print(f"Task done: {assertions_data.get('task_done', False)}") + + # 11. Check overall status + print("\nVerification Summary:") + print(f" All passed: {runtime.all_assertions_passed()}") + print(f" Required passed: {runtime.required_assertions_passed()}") + print(f" Task complete: {runtime.is_task_done}") + + finally: + # Close browser-use session + await session.close() + + # Close tracer + print("\nClosing tracer...") + tracer.close() + print(f"Trace saved to: traces/{run_id}.jsonl") + print("Done!") + + +if __name__ == "__main__": + asyncio.run(main()) From 5482da097c1949fefa00b403ee35666f54841c7f Mon Sep 17 00:00:00 2001 From: SentienceDEV Date: Sun, 11 Jan 2026 14:21:37 -0800 Subject: [PATCH 5/6] Runtime example --- examples/agent_runtime_verification.py | 8 +------- examples/browser-use/agent_runtime_browser_use.py | 8 +------- sentience/agent_runtime.py | 2 +- 3 files changed, 3 insertions(+), 15 deletions(-) diff --git a/examples/agent_runtime_verification.py b/examples/agent_runtime_verification.py index abdbfbe..537cd12 100644 --- a/examples/agent_runtime_verification.py +++ b/examples/agent_runtime_verification.py @@ -24,13 +24,7 @@ from sentience import AsyncSentienceBrowser from sentience.agent_runtime import AgentRuntime from sentience.tracing import JsonlTraceSink, Tracer -from sentience.verification import ( - all_of, - exists, - not_exists, - url_contains, - url_matches, -) +from sentience.verification import all_of, exists, not_exists, url_contains, url_matches async def main(): diff --git a/examples/browser-use/agent_runtime_browser_use.py b/examples/browser-use/agent_runtime_browser_use.py index 50792f4..fe5ddaa 100644 --- a/examples/browser-use/agent_runtime_browser_use.py +++ b/examples/browser-use/agent_runtime_browser_use.py @@ -24,13 +24,7 @@ from sentience.agent_runtime import AgentRuntime from sentience.backends import BrowserUseAdapter from sentience.tracing import JsonlTraceSink, Tracer -from sentience.verification import ( - all_of, - exists, - not_exists, - url_contains, - url_matches, -) +from sentience.verification import all_of, exists, not_exists, url_contains, url_matches # browser-use imports (requires: pip install browser-use) try: diff --git a/sentience/agent_runtime.py b/sentience/agent_runtime.py index 3197e24..ed8d8c1 100644 --- a/sentience/agent_runtime.py +++ b/sentience/agent_runtime.py @@ -342,7 +342,7 @@ def assert_done( Returns: True if task is complete (assertion passed), False otherwise """ - ok = self.assert_(predicate, label=label, required=True) + ok = self.assertTrue(predicate, label=label, required=True) if ok: self._task_done = True From ff859a0b66f1c6447a01f9c7d7394dce4e91ca83 Mon Sep 17 00:00:00 2001 From: SentienceDEV Date: Sun, 11 Jan 2026 16:08:17 -0800 Subject: [PATCH 6/6] fix --- sentience/agent_runtime.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sentience/agent_runtime.py b/sentience/agent_runtime.py index ed8d8c1..3197e24 100644 --- a/sentience/agent_runtime.py +++ b/sentience/agent_runtime.py @@ -342,7 +342,7 @@ def assert_done( Returns: True if task is complete (assertion passed), False otherwise """ - ok = self.assertTrue(predicate, label=label, required=True) + ok = self.assert_(predicate, label=label, required=True) if ok: self._task_done = True