1---2name: browser3description: Skill for the Browser area of Wiki. 482 symbols across 103 files.4---56# Browser78482 symbols | 103 files | Cohesion: 60%910## When to Use1112- Working with code in `AI/`13- Understanding how ensureMediaDir, mapTabError, ensureTabAvailable work14- Modifying browser-related functionality1516## Key Files1718| File | Symbols |19|------|---------|20| `AI/3-Application/Openclaw-source/src/browser/chrome-mcp.ts` | parsePageId, callTool, withTempFile, focusChromeMcpTab, closeChromeMcpTab (+34) |21| `AI/3-Application/Openclaw-source/src/browser/pw-session.ts` | storeRoleRefsForTarget, restoreRoleRefsForTarget, ensurePageState, observeContext, ensureContextState (+22) |22| `AI/3-Application/Openclaw-source/src/browser/chrome.executables.ts` | findFirstExecutable, findChromeExecutableMac, findChromeExecutableLinux, findChromeExecutableWindows, resolveBrowserExecutableForPlatform (+21) |23| `AI/3-Application/Openclaw-source/src/browser/pw-tools-core.interactions.ts` | pressKeyViaPlaywright, waitForViaPlaywright, takeScreenshotViaPlaywright, screenshotWithLabelsViaPlaywright, clamp (+16) |24| `AI/3-Application/Openclaw-source/src/browser/client.ts` | buildProfileQuery, withBaseUrl, browserStatus, browserProfiles, browserStart (+10) |25| `AI/3-Application/Openclaw-source/src/browser/pw-role-snapshot.ts` | getRoleSnapshotStats, getKey, getNextIndex, trackRef, removeNthFromNonDuplicates (+8) |26| `AI/3-Application/Openclaw-source/src/browser/cdp.helpers.ts` | appendCdpPath, fetchJson, fetchCdpChecked, fetchOk, normalizeCdpHttpBaseForJsonEndpoints (+8) |27| `AI/3-Application/Openclaw-source/src/browser/client-fetch.ts` | fetchBrowserJson, resolveBrowserFetchOperatorHint, normalizeErrorMessage, enhanceDispatcherPathError, enhanceBrowserFetchError (+8) |28| `AI/3-Application/Openclaw-source/src/browser/chrome.ts` | stopOpenClawChrome, exists, launchOpenClawChrome, resolveBrowserExecutable, isChromeReachable (+8) |29| `AI/3-Application/Openclaw-source/src/browser/session-tab-registry.ts` | normalizeSessionKey, normalizeTargetId, normalizeProfile, normalizeBaseUrl, toTrackedTabId (+6) |3031## Entry Points3233Start here when exploring this area:3435- **`ensureMediaDir`** (Function) — `AI/3-Application/Openclaw-source/src/media/store.ts:88`36- **`mapTabError`** (Function) — `AI/3-Application/Openclaw-source/src/browser/server-context.ts:226`37- **`ensureTabAvailable`** (Function) — `AI/3-Application/Openclaw-source/src/browser/server-context.selection.ts:35`38- **`isHttpReachable`** (Function) — `AI/3-Application/Openclaw-source/src/browser/server-context.availability.ts:78`39- **`ensureBrowserAvailable`** (Function) — `AI/3-Application/Openclaw-source/src/browser/server-context.availability.ts:153`4041## Key Symbols4243| Symbol | Type | File | Line |44|--------|------|------|------|45| `BrowserTabNotFoundError` | Class | `AI/3-Application/Openclaw-source/src/browser/errors.ts` | 31 |46| `BrowserProfileUnavailableError` | Class | `AI/3-Application/Openclaw-source/src/browser/errors.ts` | 55 |47| `BrowserResourceExhaustedError` | Class | `AI/3-Application/Openclaw-source/src/browser/errors.ts` | 61 |48| `BrowserError` | Class | `AI/3-Application/Openclaw-source/src/browser/errors.ts` | 3 |49| `BrowserValidationError` | Class | `AI/3-Application/Openclaw-source/src/browser/errors.ts` | 13 |50| `BrowserTargetAmbiguousError` | Class | `AI/3-Application/Openclaw-source/src/browser/errors.ts` | 25 |51| `BrowserProfileNotFoundError` | Class | `AI/3-Application/Openclaw-source/src/browser/errors.ts` | 37 |52| `BrowserConflictError` | Class | `AI/3-Application/Openclaw-source/src/browser/errors.ts` | 43 |53| `InvalidBrowserNavigationUrlError` | Class | `AI/3-Application/Openclaw-source/src/browser/navigation-guard.ts` | 16 |54| `BrowserResetUnsupportedError` | Class | `AI/3-Application/Openclaw-source/src/browser/errors.ts` | 49 |55| `ensureMediaDir` | Function | `AI/3-Application/Openclaw-source/src/media/store.ts` | 88 |56| `mapTabError` | Function | `AI/3-Application/Openclaw-source/src/browser/server-context.ts` | 226 |57| `ensureTabAvailable` | Function | `AI/3-Application/Openclaw-source/src/browser/server-context.selection.ts` | 35 |58| `isHttpReachable` | Function | `AI/3-Application/Openclaw-source/src/browser/server-context.availability.ts` | 78 |59| `ensureBrowserAvailable` | Function | `AI/3-Application/Openclaw-source/src/browser/server-context.availability.ts` | 153 |60| `traceStartViaPlaywright` | Function | `AI/3-Application/Openclaw-source/src/browser/pw-tools-core.trace.ts` | 4 |61| `traceStopViaPlaywright` | Function | `AI/3-Application/Openclaw-source/src/browser/pw-tools-core.trace.ts` | 25 |62| `cookiesGetViaPlaywright` | Function | `AI/3-Application/Openclaw-source/src/browser/pw-tools-core.storage.ts` | 2 |63| `cookiesSetViaPlaywright` | Function | `AI/3-Application/Openclaw-source/src/browser/pw-tools-core.storage.ts` | 12 |64| `cookiesClearViaPlaywright` | Function | `AI/3-Application/Openclaw-source/src/browser/pw-tools-core.storage.ts` | 45 |6566## Execution Flows6768| Flow | Type | Steps |69|------|------|-------|70| `RegisterBrowserAgentSnapshotRoutes → BrowserProfileNotFoundError` | cross_community | 6 |71| `RegisterBrowserAgentSnapshotRoutes → GetBrowserProfileCapabilities` | cross_community | 6 |72| `RegisterBrowserAgentSnapshotRoutes → ToBrowserTabs` | cross_community | 6 |73| `RegisterBrowserAgentStorageRoutes → JsonError` | intra_community | 5 |74| `RegisterBrowserAgentSnapshotRoutes → Trim` | cross_community | 5 |75| `RegisterBrowserAgentSnapshotRoutes → ExistsSync` | cross_community | 5 |76| `RegisterBrowserAgentSnapshotRoutes → BrowserProfileUnavailableError` | intra_community | 5 |77| `RegisterBrowserAgentSnapshotRoutes → AppendCdpPath` | cross_community | 5 |78| `RegisterBrowserAgentSnapshotRoutes → WithBrowserNavigationPolicy` | cross_community | 5 |79| `RegisterBrowserAgentSnapshotRoutes → ToBrowserErrorResponse` | intra_community | 5 |8081## Connected Areas8283| Area | Connections |84|------|-------------|85| Scripts | 91 calls |86| Ink | 24 calls |87| Auto-reply | 15 calls |88| Tools | 11 calls |89| Security | 7 calls |90| Config | 7 calls |91| Media | 7 calls |92| Gateway | 6 calls |9394## How to Explore95961. `gitnexus_context({name: "ensureMediaDir"})` — see callers and callees972. `gitnexus_query({query: "browser"})` — find related execution flows983. Read key files listed above for implementation details