@elizaos/plugin-browser 2.0.0-beta.1 → 2.0.3-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (169) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +106 -64
  3. package/dist/actions/browser-autofill-login.d.ts.map +1 -1
  4. package/dist/actions/browser-autofill-login.js.map +1 -1
  5. package/dist/actions/browser.d.ts +5 -6
  6. package/dist/actions/browser.d.ts.map +1 -1
  7. package/dist/actions/browser.js +54 -59
  8. package/dist/actions/browser.js.map +1 -1
  9. package/dist/actions/manage-browser-bridge.d.ts.map +1 -1
  10. package/dist/actions/manage-browser-bridge.js +10 -14
  11. package/dist/actions/manage-browser-bridge.js.map +1 -1
  12. package/dist/bridge-policy.d.ts +10 -0
  13. package/dist/bridge-policy.d.ts.map +1 -0
  14. package/dist/bridge-policy.js +37 -0
  15. package/dist/bridge-policy.js.map +1 -0
  16. package/dist/bridge-readiness.d.ts +16 -0
  17. package/dist/bridge-readiness.d.ts.map +1 -0
  18. package/dist/bridge-readiness.js +82 -0
  19. package/dist/bridge-readiness.js.map +1 -0
  20. package/dist/bridge-records.d.ts +9 -0
  21. package/dist/bridge-records.d.ts.map +1 -0
  22. package/dist/bridge-records.js +37 -0
  23. package/dist/bridge-records.js.map +1 -0
  24. package/dist/browser-capture-hooks.d.ts +9 -0
  25. package/dist/browser-capture-hooks.d.ts.map +1 -0
  26. package/dist/browser-capture-hooks.js +15 -0
  27. package/dist/browser-capture-hooks.js.map +1 -0
  28. package/dist/browser-service.d.ts +22 -4
  29. package/dist/browser-service.d.ts.map +1 -1
  30. package/dist/browser-service.js +63 -15
  31. package/dist/browser-service.js.map +1 -1
  32. package/dist/browser-workspace-hooks.d.ts +14 -0
  33. package/dist/browser-workspace-hooks.d.ts.map +1 -0
  34. package/dist/browser-workspace-hooks.js +15 -0
  35. package/dist/browser-workspace-hooks.js.map +1 -0
  36. package/dist/companion-auth.d.ts +34 -0
  37. package/dist/companion-auth.d.ts.map +1 -0
  38. package/dist/companion-auth.js +98 -0
  39. package/dist/companion-auth.js.map +1 -0
  40. package/dist/index.d.ts +9 -3
  41. package/dist/index.d.ts.map +1 -1
  42. package/dist/index.js +46 -11
  43. package/dist/index.js.map +1 -1
  44. package/dist/message-adapter.d.ts +9 -0
  45. package/dist/message-adapter.d.ts.map +1 -0
  46. package/dist/message-adapter.js +104 -0
  47. package/dist/message-adapter.js.map +1 -0
  48. package/dist/packaging.d.ts.map +1 -1
  49. package/dist/packaging.js +2 -0
  50. package/dist/packaging.js.map +1 -1
  51. package/dist/password-manager-bridge.d.ts +50 -0
  52. package/dist/password-manager-bridge.d.ts.map +1 -0
  53. package/dist/password-manager-bridge.js +437 -0
  54. package/dist/password-manager-bridge.js.map +1 -0
  55. package/dist/plugin.d.ts.map +1 -1
  56. package/dist/plugin.js +8 -4
  57. package/dist/plugin.js.map +1 -1
  58. package/dist/providers/workspace.d.ts +1 -1
  59. package/dist/providers/workspace.js.map +1 -1
  60. package/dist/routes/bridge.d.ts.map +1 -1
  61. package/dist/routes/bridge.js +63 -14
  62. package/dist/routes/bridge.js.map +1 -1
  63. package/dist/routes/workspace-setup.d.ts.map +1 -1
  64. package/dist/routes/workspace-setup.js +1 -1
  65. package/dist/routes/workspace-setup.js.map +1 -1
  66. package/dist/routes/workspace.d.ts +1 -2
  67. package/dist/routes/workspace.d.ts.map +1 -1
  68. package/dist/routes/workspace.js +63 -3
  69. package/dist/routes/workspace.js.map +1 -1
  70. package/dist/schema.d.ts +2 -2
  71. package/dist/schema.js.map +1 -1
  72. package/dist/service.d.ts +1 -1
  73. package/dist/service.d.ts.map +1 -1
  74. package/dist/service.js.map +1 -1
  75. package/dist/targets/bridge-target.d.ts +1 -1
  76. package/dist/targets/bridge-target.d.ts.map +1 -1
  77. package/dist/targets/bridge-target.js.map +1 -1
  78. package/dist/targets/stagehand-target.d.ts +3 -0
  79. package/dist/targets/stagehand-target.d.ts.map +1 -0
  80. package/dist/targets/stagehand-target.js +187 -0
  81. package/dist/targets/stagehand-target.js.map +1 -0
  82. package/dist/workspace/browser-capture.d.ts +1 -1
  83. package/dist/workspace/browser-capture.js.map +1 -1
  84. package/dist/workspace/browser-workspace-desktop.d.ts +1 -1
  85. package/dist/workspace/browser-workspace-desktop.d.ts.map +1 -1
  86. package/dist/workspace/browser-workspace-desktop.js +47 -25
  87. package/dist/workspace/browser-workspace-desktop.js.map +1 -1
  88. package/dist/workspace/browser-workspace-forms.d.ts.map +1 -1
  89. package/dist/workspace/browser-workspace-forms.js +1 -1
  90. package/dist/workspace/browser-workspace-forms.js.map +1 -1
  91. package/dist/workspace/browser-workspace-helpers.d.ts +7 -0
  92. package/dist/workspace/browser-workspace-helpers.d.ts.map +1 -1
  93. package/dist/workspace/browser-workspace-helpers.js +37 -0
  94. package/dist/workspace/browser-workspace-helpers.js.map +1 -1
  95. package/dist/workspace/browser-workspace-network.d.ts +1 -1
  96. package/dist/workspace/browser-workspace-network.d.ts.map +1 -1
  97. package/dist/workspace/browser-workspace-types.d.ts +15 -0
  98. package/dist/workspace/browser-workspace-types.d.ts.map +1 -1
  99. package/dist/workspace/browser-workspace-types.js.map +1 -1
  100. package/dist/workspace/browser-workspace-web.d.ts.map +1 -1
  101. package/dist/workspace/browser-workspace-web.js +15 -88
  102. package/dist/workspace/browser-workspace-web.js.map +1 -1
  103. package/dist/workspace/browser-workspace.d.ts +1 -1
  104. package/dist/workspace/browser-workspace.d.ts.map +1 -1
  105. package/dist/workspace/browser-workspace.js +9 -4
  106. package/dist/workspace/browser-workspace.js.map +1 -1
  107. package/package.json +28 -7
  108. package/dist/actions/browser-autofill-login.d.js +0 -1
  109. package/dist/actions/browser-autofill-login.d.js.map +0 -1
  110. package/dist/actions/browser.d.js +0 -1
  111. package/dist/actions/browser.d.js.map +0 -1
  112. package/dist/actions/manage-browser-bridge.d.js +0 -1
  113. package/dist/actions/manage-browser-bridge.d.js.map +0 -1
  114. package/dist/ambient-jsdom.d.js +0 -1
  115. package/dist/ambient-jsdom.d.js.map +0 -1
  116. package/dist/browser-service.d.js +0 -1
  117. package/dist/browser-service.d.js.map +0 -1
  118. package/dist/contracts.d.js +0 -1
  119. package/dist/contracts.d.js.map +0 -1
  120. package/dist/index.d.js +0 -21
  121. package/dist/index.d.js.map +0 -1
  122. package/dist/lifeops-session-contracts.d.js +0 -1
  123. package/dist/lifeops-session-contracts.d.js.map +0 -1
  124. package/dist/packaging.d.js +0 -1
  125. package/dist/packaging.d.js.map +0 -1
  126. package/dist/plugin.d.js +0 -1
  127. package/dist/plugin.d.js.map +0 -1
  128. package/dist/providers/workspace.d.js +0 -1
  129. package/dist/providers/workspace.d.js.map +0 -1
  130. package/dist/routes/bridge.d.js +0 -1
  131. package/dist/routes/bridge.d.js.map +0 -1
  132. package/dist/routes/workspace-account-gate.d.js +0 -1
  133. package/dist/routes/workspace-account-gate.d.js.map +0 -1
  134. package/dist/routes/workspace-setup.d.js +0 -1
  135. package/dist/routes/workspace-setup.d.js.map +0 -1
  136. package/dist/routes/workspace.d.js +0 -1
  137. package/dist/routes/workspace.d.js.map +0 -1
  138. package/dist/schema.d.js +0 -1
  139. package/dist/schema.d.js.map +0 -1
  140. package/dist/service.d.js +0 -1
  141. package/dist/service.d.js.map +0 -1
  142. package/dist/targets/bridge-target.d.js +0 -1
  143. package/dist/targets/bridge-target.d.js.map +0 -1
  144. package/dist/workspace/browser-capture.d.js +0 -1
  145. package/dist/workspace/browser-capture.d.js.map +0 -1
  146. package/dist/workspace/browser-workspace-desktop.d.js +0 -1
  147. package/dist/workspace/browser-workspace-desktop.d.js.map +0 -1
  148. package/dist/workspace/browser-workspace-elements.d.js +0 -1
  149. package/dist/workspace/browser-workspace-elements.d.js.map +0 -1
  150. package/dist/workspace/browser-workspace-forms.d.js +0 -1
  151. package/dist/workspace/browser-workspace-forms.d.js.map +0 -1
  152. package/dist/workspace/browser-workspace-helpers.d.js +0 -1
  153. package/dist/workspace/browser-workspace-helpers.d.js.map +0 -1
  154. package/dist/workspace/browser-workspace-jsdom.d.js +0 -1
  155. package/dist/workspace/browser-workspace-jsdom.d.js.map +0 -1
  156. package/dist/workspace/browser-workspace-network.d.js +0 -1
  157. package/dist/workspace/browser-workspace-network.d.js.map +0 -1
  158. package/dist/workspace/browser-workspace-snapshots.d.js +0 -1
  159. package/dist/workspace/browser-workspace-snapshots.d.js.map +0 -1
  160. package/dist/workspace/browser-workspace-state.d.js +0 -1
  161. package/dist/workspace/browser-workspace-state.d.js.map +0 -1
  162. package/dist/workspace/browser-workspace-types.d.js +0 -1
  163. package/dist/workspace/browser-workspace-types.d.js.map +0 -1
  164. package/dist/workspace/browser-workspace-web.d.js +0 -1
  165. package/dist/workspace/browser-workspace-web.d.js.map +0 -1
  166. package/dist/workspace/browser-workspace.d.js +0 -11
  167. package/dist/workspace/browser-workspace.d.js.map +0 -1
  168. package/dist/workspace/index.d.js +0 -3
  169. package/dist/workspace/index.d.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/workspace/browser-workspace-web.ts"],"sourcesContent":["import * as fsp from \"node:fs/promises\";\nimport * as path from \"node:path\";\nimport {\n browserWorkspaceTextMatches,\n buildBrowserWorkspaceElementSelector,\n collectBrowserWorkspaceInspectElements,\n createBrowserWorkspaceElementSummary,\n findClosestBrowserWorkspaceForm,\n getBrowserWorkspaceElementBox,\n getBrowserWorkspaceElementStyles,\n getBrowserWorkspaceElementValue,\n isBrowserWorkspaceElementVisible,\n mergeBrowserWorkspaceSelectorCommand,\n queryAllBrowserWorkspaceSelector,\n resolveBrowserWorkspaceElement,\n resolveBrowserWorkspaceFindElement,\n resolveWebBrowserWorkspaceCommandDocument,\n} from \"./browser-workspace-elements.js\";\nimport {\n activateWebBrowserWorkspaceElement,\n clearWebBrowserWorkspaceTabElementRefs,\n cloneWebBrowserWorkspaceTabState,\n ensureBrowserWorkspaceCheckboxElement,\n ensureBrowserWorkspaceFormControlElement,\n ensureLoadedWebBrowserWorkspaceTabDocument,\n scrollWebBrowserWorkspaceTarget,\n setBrowserWorkspaceControlValue,\n submitWebBrowserWorkspaceForm,\n} from \"./browser-workspace-forms.js\";\nimport {\n assertBrowserWorkspaceConnectorSecretsNotExported,\n createBrowserWorkspaceCommandTargetError,\n createBrowserWorkspaceNotFoundError,\n DEFAULT_TIMEOUT_MS,\n DEFAULT_WAIT_INTERVAL_MS,\n normalizeBrowserWorkspaceText,\n resolveBrowserWorkspaceCommandElementRefs,\n sleep,\n writeBrowserWorkspaceFile,\n} from \"./browser-workspace-helpers.js\";\nimport {\n applyBrowserWorkspaceDomSettings,\n ensureBrowserWorkspaceDom,\n} from \"./browser-workspace-jsdom.js\";\nimport {\n fetchBrowserWorkspaceTrackedResponse,\n normalizeBrowserWorkspaceHeaders,\n} from \"./browser-workspace-network.js\";\nimport {\n applyBrowserWorkspaceStateToWebDocument,\n buildBrowserWorkspaceDocumentSnapshotText,\n createBrowserWorkspacePdfBuffer,\n createBrowserWorkspaceSnapshotRecord,\n createBrowserWorkspaceSyntheticScreenshotData,\n diffBrowserWorkspaceSnapshots,\n readBrowserWorkspaceCookies,\n readBrowserWorkspaceStorage,\n} from \"./browser-workspace-snapshots.js\";\nimport {\n browserWorkspaceClipboardText,\n getBrowserWorkspaceRuntimeState,\n getBrowserWorkspaceTimestamp,\n registerBrowserWorkspaceElementRefs,\n setBrowserWorkspaceClipboardText,\n webWorkspaceState,\n withWebStateLock,\n} from \"./browser-workspace-state.js\";\nimport type {\n BrowserWorkspaceCommand,\n BrowserWorkspaceCommandResult,\n BrowserWorkspaceSettingsState,\n WebBrowserWorkspaceTabState,\n} from \"./browser-workspace-types.js\";\n\nexport function getWebBrowserWorkspaceTabIndex(tabId: string): number {\n return webWorkspaceState.tabs.findIndex((tab) => tab.id === tabId);\n}\n\nexport function getWebBrowserWorkspaceTabState(\n tabId: string,\n): WebBrowserWorkspaceTabState {\n const tab = webWorkspaceState.tabs.find((entry) => entry.id === tabId);\n if (!tab) {\n throw createBrowserWorkspaceNotFoundError(tabId);\n }\n return tab;\n}\n\nexport function getCurrentWebBrowserWorkspaceTabState(): WebBrowserWorkspaceTabState | null {\n if (webWorkspaceState.tabs.length === 0) {\n return null;\n }\n\n return (\n webWorkspaceState.tabs.find((tab) => tab.visible) ??\n [...webWorkspaceState.tabs].sort((left, right) => {\n const leftTime = left.lastFocusedAt ?? left.updatedAt ?? \"\";\n const rightTime = right.lastFocusedAt ?? right.updatedAt ?? \"\";\n return (\n rightTime.localeCompare(leftTime) || left.id.localeCompare(right.id)\n );\n })[0] ??\n null\n );\n}\n\nexport function findWebBrowserWorkspaceTargetTabId(\n command: BrowserWorkspaceCommand,\n): string {\n if (command.id?.trim()) {\n return command.id.trim();\n }\n const current = getCurrentWebBrowserWorkspaceTabState();\n if (!current) {\n throw createBrowserWorkspaceCommandTargetError(command.subaction);\n }\n return current.id;\n}\n\nexport async function executeWebBrowserWorkspaceUtilityCommand(\n command: BrowserWorkspaceCommand,\n): Promise<BrowserWorkspaceCommandResult | null> {\n return withWebStateLock(async () => {\n if (\n ![\n \"clipboard\",\n \"console\",\n \"cookies\",\n \"diff\",\n \"dialog\",\n \"drag\",\n \"errors\",\n \"eval\",\n \"frame\",\n \"highlight\",\n \"mouse\",\n \"network\",\n \"pdf\",\n \"screenshot\",\n \"set\",\n \"state\",\n \"storage\",\n \"trace\",\n \"profiler\",\n \"upload\",\n ].includes(command.subaction)\n ) {\n return null;\n }\n\n const id = findWebBrowserWorkspaceTargetTabId(command);\n const tab = getWebBrowserWorkspaceTabState(id);\n const dom = await ensureLoadedWebBrowserWorkspaceTabDocument(tab);\n const runtime = getBrowserWorkspaceRuntimeState(\"web\", id);\n const frameContext = resolveWebBrowserWorkspaceCommandDocument(\n tab,\n dom,\n runtime,\n );\n const document = frameContext.document;\n const resolveTarget = () =>\n resolveBrowserWorkspaceElement(\n document,\n command.selector,\n command.text,\n command,\n );\n\n switch (command.subaction) {\n case \"eval\": {\n if (!command.script?.trim()) {\n throw new Error(\"Eliza browser workspace eval requires script.\");\n }\n try {\n let value: unknown;\n try {\n value = new Function(\n \"document\",\n \"fetch\",\n \"alert\",\n \"confirm\",\n \"prompt\",\n \"window\",\n \"location\",\n \"navigator\",\n \"localStorage\",\n \"sessionStorage\",\n \"console\",\n `return (${command.script});`,\n )(\n document,\n dom.window.fetch.bind(dom.window),\n dom.window.alert.bind(dom.window),\n dom.window.confirm.bind(dom.window),\n dom.window.prompt.bind(dom.window),\n dom.window,\n dom.window.location,\n dom.window.navigator,\n dom.window.localStorage,\n dom.window.sessionStorage,\n dom.window.console,\n );\n } catch {\n value = new Function(\n \"document\",\n \"fetch\",\n \"alert\",\n \"confirm\",\n \"prompt\",\n \"window\",\n \"location\",\n \"navigator\",\n \"localStorage\",\n \"sessionStorage\",\n \"console\",\n command.script,\n )(\n document,\n dom.window.fetch.bind(dom.window),\n dom.window.alert.bind(dom.window),\n dom.window.confirm.bind(dom.window),\n dom.window.prompt.bind(dom.window),\n dom.window,\n dom.window.location,\n dom.window.navigator,\n dom.window.localStorage,\n dom.window.sessionStorage,\n dom.window.console,\n );\n }\n if (\n value &&\n typeof value === \"object\" &&\n typeof (value as Promise<unknown>).then === \"function\"\n ) {\n value = await (value as Promise<unknown>);\n }\n return { mode: \"web\", subaction: command.subaction, value };\n } catch (error) {\n runtime.errors.push({\n message: error instanceof Error ? error.message : String(error),\n stack: error instanceof Error ? (error.stack ?? null) : null,\n timestamp: getBrowserWorkspaceTimestamp(),\n });\n throw error;\n }\n }\n case \"screenshot\": {\n const data = createBrowserWorkspaceSyntheticScreenshotData(\n tab.title,\n tab.url,\n buildBrowserWorkspaceDocumentSnapshotText(document),\n runtime.settings.viewport ?? undefined,\n );\n runtime.lastScreenshotData = data;\n if (command.filePath?.trim() || command.outputPath?.trim()) {\n const targetPath =\n command.filePath?.trim() || command.outputPath?.trim() || \"\";\n await writeBrowserWorkspaceFile(\n targetPath,\n Buffer.from(data, \"base64\"),\n );\n return {\n mode: \"web\",\n subaction: command.subaction,\n snapshot: { data },\n value: { path: path.resolve(targetPath) },\n };\n }\n return {\n mode: \"web\",\n subaction: command.subaction,\n snapshot: { data },\n };\n }\n case \"clipboard\": {\n const action = command.clipboardAction ?? \"read\";\n if (action === \"read\") {\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: browserWorkspaceClipboardText,\n };\n }\n if (action === \"write\") {\n setBrowserWorkspaceClipboardText(command.value ?? command.text ?? \"\");\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: browserWorkspaceClipboardText,\n };\n }\n if (action === \"copy\") {\n const target = resolveTarget();\n setBrowserWorkspaceClipboardText(\n target && \"value\" in (target as HTMLInputElement)\n ? String((target as HTMLInputElement).value ?? \"\")\n : normalizeBrowserWorkspaceText(\n target?.textContent ?? document.body?.textContent,\n ),\n );\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: browserWorkspaceClipboardText,\n };\n }\n const target = resolveTarget() ?? document.activeElement;\n if (\n target &&\n (target.tagName === \"INPUT\" ||\n target.tagName === \"TEXTAREA\" ||\n target.tagName === \"SELECT\")\n ) {\n const control = ensureBrowserWorkspaceFormControlElement(\n target,\n \"clipboard\",\n );\n setBrowserWorkspaceControlValue(\n control,\n `${control.value ?? \"\"}${browserWorkspaceClipboardText}`,\n );\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: {\n selector: buildBrowserWorkspaceElementSelector(control),\n value: control.value,\n },\n };\n }\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: browserWorkspaceClipboardText,\n };\n }\n case \"mouse\": {\n const action = command.mouseAction ?? \"move\";\n if (action === \"move\") {\n runtime.mouse.x = command.x ?? runtime.mouse.x;\n runtime.mouse.y = command.y ?? runtime.mouse.y;\n } else if (action === \"down\") {\n const button = command.button ?? \"left\";\n runtime.mouse.buttons = Array.from(\n new Set([...runtime.mouse.buttons, button]),\n );\n } else if (action === \"up\") {\n const button = command.button ?? \"left\";\n runtime.mouse.buttons = runtime.mouse.buttons.filter(\n (entry) => entry !== button,\n );\n } else {\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: scrollWebBrowserWorkspaceTarget(\n dom,\n resolveTarget(),\n (command.deltaY ?? 0) < 0 ? \"up\" : \"down\",\n Math.abs(command.deltaY ?? command.pixels ?? 240),\n ),\n };\n }\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: runtime.mouse,\n };\n }\n case \"drag\": {\n const source = resolveTarget();\n const target = command.value\n ? resolveBrowserWorkspaceElement(document, command.value)\n : null;\n if (!source || !target) {\n throw new Error(\n \"Eliza browser workspace drag requires source selector and target selector in value.\",\n );\n }\n source.setAttribute(\"data-eliza-dragging\", \"true\");\n target.setAttribute(\"data-eliza-drop-target\", \"true\");\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: {\n source: buildBrowserWorkspaceElementSelector(source),\n target: buildBrowserWorkspaceElementSelector(target),\n },\n };\n }\n case \"upload\": {\n const target = resolveTarget();\n if (!target || target.tagName !== \"INPUT\") {\n throw new Error(\n \"Eliza browser workspace upload requires a file input target.\",\n );\n }\n const files = (command.files ?? []).map((entry) =>\n path.basename(entry),\n );\n target.setAttribute(\"data-eliza-uploaded-files\", files.join(\",\"));\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: {\n files,\n selector: buildBrowserWorkspaceElementSelector(target),\n },\n };\n }\n case \"set\": {\n const action = command.setAction ?? \"viewport\";\n if (action === \"credentials\" || action === \"headers\") {\n assertBrowserWorkspaceConnectorSecretsNotExported(\n tab.partition,\n `set:${action}`,\n );\n }\n if (action === \"viewport\") {\n runtime.settings.viewport = {\n height: Math.max(1, Math.round(command.height ?? 720)),\n scale: Math.max(1, Number(command.scale ?? 1)),\n width: Math.max(1, Math.round(command.width ?? 1280)),\n };\n } else if (action === \"device\") {\n runtime.settings.device = command.device ?? null;\n } else if (action === \"geo\") {\n runtime.settings.geo =\n typeof command.latitude === \"number\" &&\n typeof command.longitude === \"number\"\n ? { latitude: command.latitude, longitude: command.longitude }\n : null;\n } else if (action === \"offline\") {\n runtime.settings.offline = Boolean(command.offline);\n } else if (action === \"headers\") {\n runtime.settings.headers = normalizeBrowserWorkspaceHeaders(\n command.headers,\n );\n } else if (action === \"credentials\") {\n runtime.settings.credentials =\n command.username || command.password\n ? {\n password: command.password ?? \"\",\n username: command.username ?? \"\",\n }\n : null;\n } else if (action === \"media\") {\n runtime.settings.media = command.media ?? null;\n }\n applyBrowserWorkspaceDomSettings(dom, runtime);\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: runtime.settings,\n };\n }\n case \"cookies\": {\n assertBrowserWorkspaceConnectorSecretsNotExported(\n tab.partition,\n \"cookies\",\n );\n const action = command.cookieAction ?? \"get\";\n if (action === \"clear\") {\n for (const key of Object.keys(\n readBrowserWorkspaceCookies(document),\n )) {\n document.cookie = `${key}=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/`;\n }\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: { cleared: true },\n };\n }\n if (action === \"set\") {\n const cookieName = command.name?.trim() || command.entryKey?.trim();\n if (!cookieName) {\n throw new Error(\n \"Eliza browser workspace cookies set requires name.\",\n );\n }\n document.cookie = `${cookieName}=${command.value ?? \"\"}; path=/`;\n }\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: readBrowserWorkspaceCookies(document),\n };\n }\n case \"storage\": {\n assertBrowserWorkspaceConnectorSecretsNotExported(\n tab.partition,\n \"storage\",\n );\n const area =\n command.storageArea === \"session\"\n ? dom.window.sessionStorage\n : dom.window.localStorage;\n const action = command.storageAction ?? \"get\";\n if (action === \"clear\") {\n area.clear();\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: { cleared: true },\n };\n }\n if (action === \"set\") {\n const key = command.entryKey?.trim() || command.name?.trim();\n if (!key) {\n throw new Error(\n \"Eliza browser workspace storage set requires entryKey.\",\n );\n }\n area.setItem(key, command.value ?? \"\");\n }\n if (command.entryKey?.trim() || command.name?.trim()) {\n const key = command.entryKey?.trim() || command.name?.trim() || \"\";\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: area.getItem(key),\n };\n }\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: readBrowserWorkspaceStorage(area),\n };\n }\n case \"network\": {\n const action = command.networkAction ?? \"requests\";\n if (action === \"route\") {\n const pattern = command.url?.trim();\n if (!pattern) {\n throw new Error(\n \"Eliza browser workspace network route requires url pattern.\",\n );\n }\n runtime.networkRoutes.push({\n abort: Boolean(command.offline),\n body: command.responseBody ?? null,\n headers: normalizeBrowserWorkspaceHeaders(command.responseHeaders),\n pattern,\n status:\n typeof command.responseStatus === \"number\"\n ? command.responseStatus\n : null,\n });\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: runtime.networkRoutes,\n };\n }\n if (action === \"unroute\") {\n runtime.networkRoutes = command.url?.trim()\n ? runtime.networkRoutes.filter(\n (route) => route.pattern !== command.url?.trim(),\n )\n : [];\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: runtime.networkRoutes,\n };\n }\n if (action === \"request\") {\n const request = runtime.networkRequests.find(\n (entry) => entry.id === command.requestId,\n );\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: request ?? null,\n };\n }\n if (action === \"harstart\") {\n runtime.networkHar = {\n active: true,\n entries: [],\n startedAt: getBrowserWorkspaceTimestamp(),\n };\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: runtime.networkHar,\n };\n }\n if (action === \"harstop\") {\n runtime.networkHar.active = false;\n const har = {\n log: {\n entries: runtime.networkHar.entries,\n startedAt: runtime.networkHar.startedAt,\n },\n };\n if (command.filePath?.trim() || command.outputPath?.trim()) {\n const targetPath =\n command.filePath?.trim() || command.outputPath?.trim() || \"\";\n await writeBrowserWorkspaceFile(\n targetPath,\n JSON.stringify(har, null, 2),\n );\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: { path: path.resolve(targetPath), ...har },\n };\n }\n return { mode: \"web\", subaction: command.subaction, value: har };\n }\n let requests = [...runtime.networkRequests];\n if (command.filter?.trim()) {\n requests = requests.filter((entry) =>\n entry.url.includes(command.filter ?? \"\"),\n );\n }\n if (command.method?.trim()) {\n requests = requests.filter(\n (entry) =>\n entry.method.toUpperCase() ===\n command.method?.trim().toUpperCase(),\n );\n }\n if (command.status?.trim()) {\n const statusFilter = command.status.trim();\n requests = requests.filter((entry) => {\n if (entry.status === null) {\n return false;\n }\n if (/^\\dxx$/i.test(statusFilter)) {\n return String(entry.status).startsWith(statusFilter[0] ?? \"\");\n }\n return String(entry.status) === statusFilter;\n });\n }\n return { mode: \"web\", subaction: command.subaction, value: requests };\n }\n case \"dialog\": {\n const action = command.dialogAction ?? \"status\";\n if (action === \"status\") {\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: runtime.dialog,\n };\n }\n if (runtime.dialog) {\n runtime.dialog.open = false;\n }\n const result =\n action === \"accept\"\n ? {\n accepted: true,\n dialog: runtime.dialog,\n promptText: command.promptText ?? command.value ?? null,\n }\n : { accepted: false, dialog: runtime.dialog };\n runtime.dialog = null;\n return { mode: \"web\", subaction: command.subaction, value: result };\n }\n case \"console\": {\n if (command.consoleAction === \"clear\") {\n runtime.consoleEntries = [];\n }\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: runtime.consoleEntries,\n };\n }\n case \"errors\": {\n if (command.consoleAction === \"clear\") {\n runtime.errors = [];\n }\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: runtime.errors,\n };\n }\n case \"highlight\": {\n const target = resolveTarget();\n if (!target) {\n throw new Error(\"Target element was not found.\");\n }\n target.setAttribute(\"data-eliza-highlight\", \"true\");\n runtime.highlightedSelector =\n buildBrowserWorkspaceElementSelector(target);\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: { selector: runtime.highlightedSelector },\n };\n }\n case \"frame\": {\n const action = command.frameAction ?? \"select\";\n if (action === \"main\") {\n runtime.currentFrame = null;\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: { frame: null },\n };\n }\n const frame = resolveBrowserWorkspaceElement(\n dom.window.document,\n command.selector,\n );\n if (!frame || frame.tagName !== \"IFRAME\") {\n throw new Error(\n \"Eliza browser workspace frame select requires an iframe selector.\",\n );\n }\n runtime.currentFrame = buildBrowserWorkspaceElementSelector(frame);\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: { frame: runtime.currentFrame },\n };\n }\n case \"diff\": {\n const snapshot = createBrowserWorkspaceSnapshotRecord(\n tab.title,\n tab.url,\n buildBrowserWorkspaceDocumentSnapshotText(document),\n );\n if (command.diffAction === \"url\") {\n const leftUrl = command.url?.trim() || tab.url;\n const rightUrl = command.secondaryUrl?.trim();\n if (!rightUrl) {\n throw new Error(\n \"Eliza browser workspace diff url requires secondaryUrl.\",\n );\n }\n const left = await fetchBrowserWorkspaceTrackedResponse(\n runtime,\n leftUrl,\n {},\n \"document\",\n );\n const right = await fetchBrowserWorkspaceTrackedResponse(\n runtime,\n rightUrl,\n {},\n \"document\",\n );\n const leftSnapshot = createBrowserWorkspaceSnapshotRecord(\n leftUrl,\n left.url || leftUrl,\n await left.text(),\n );\n const rightSnapshot = createBrowserWorkspaceSnapshotRecord(\n rightUrl,\n right.url || rightUrl,\n await right.text(),\n );\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: diffBrowserWorkspaceSnapshots(leftSnapshot, rightSnapshot),\n };\n }\n if (command.diffAction === \"screenshot\") {\n const currentData =\n runtime.lastScreenshotData ??\n createBrowserWorkspaceSyntheticScreenshotData(\n tab.title,\n tab.url,\n buildBrowserWorkspaceDocumentSnapshotText(document),\n runtime.settings.viewport ?? undefined,\n );\n const baseline = command.baselinePath?.trim()\n ? await fsp.readFile(\n path.resolve(command.baselinePath.trim()),\n \"base64\",\n )\n : runtime.lastScreenshotData;\n runtime.lastScreenshotData = currentData;\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: {\n baselineLength: baseline?.length ?? 0,\n changed: baseline !== currentData,\n currentLength: currentData.length,\n },\n };\n }\n const baseline = command.baselinePath?.trim()\n ? (JSON.parse(\n await fsp.readFile(\n path.resolve(command.baselinePath.trim()),\n \"utf8\",\n ),\n ) as import(\"./browser-workspace-types.js\").BrowserWorkspaceSnapshotRecord)\n : runtime.lastSnapshot;\n const diff = diffBrowserWorkspaceSnapshots(baseline, snapshot);\n runtime.lastSnapshot = snapshot;\n return { mode: \"web\", subaction: command.subaction, value: diff };\n }\n case \"trace\": {\n if (command.traceAction === \"stop\") {\n runtime.trace.active = false;\n const traceValue = { entries: runtime.trace.entries };\n if (command.filePath?.trim() || command.outputPath?.trim()) {\n const targetPath =\n command.filePath?.trim() || command.outputPath?.trim() || \"\";\n await writeBrowserWorkspaceFile(\n targetPath,\n JSON.stringify(traceValue, null, 2),\n );\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: { path: path.resolve(targetPath), ...traceValue },\n };\n }\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: traceValue,\n };\n }\n runtime.trace = { active: true, entries: [] };\n runtime.trace.entries.push({\n command: \"trace:start\",\n timestamp: getBrowserWorkspaceTimestamp(),\n });\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: { active: true },\n };\n }\n case \"profiler\": {\n if (command.profilerAction === \"stop\") {\n runtime.profiler.active = false;\n const profileValue = { entries: runtime.profiler.entries };\n if (command.filePath?.trim() || command.outputPath?.trim()) {\n const targetPath =\n command.filePath?.trim() || command.outputPath?.trim() || \"\";\n await writeBrowserWorkspaceFile(\n targetPath,\n JSON.stringify(profileValue, null, 2),\n );\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: { path: path.resolve(targetPath), ...profileValue },\n };\n }\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: profileValue,\n };\n }\n runtime.profiler = {\n active: true,\n entries: [\n {\n command: \"profiler:start\",\n timestamp: getBrowserWorkspaceTimestamp(),\n },\n ],\n };\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: { active: true },\n };\n }\n case \"state\": {\n assertBrowserWorkspaceConnectorSecretsNotExported(\n tab.partition,\n \"state\",\n );\n if (command.stateAction === \"load\") {\n const filePath =\n command.filePath?.trim() || command.outputPath?.trim();\n if (!filePath) {\n throw new Error(\n \"Eliza browser workspace state load requires filePath.\",\n );\n }\n const payload = JSON.parse(\n await fsp.readFile(path.resolve(filePath), \"utf8\"),\n ) as Record<string, unknown>;\n applyBrowserWorkspaceStateToWebDocument(document, payload);\n if (payload.settings && typeof payload.settings === \"object\") {\n runtime.settings = {\n ...runtime.settings,\n ...(payload.settings as BrowserWorkspaceSettingsState),\n };\n applyBrowserWorkspaceDomSettings(dom, runtime);\n }\n setBrowserWorkspaceClipboardText(\n typeof payload.clipboard === \"string\"\n ? payload.clipboard\n : browserWorkspaceClipboardText,\n );\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: { loaded: true },\n };\n }\n const payload = {\n clipboard: browserWorkspaceClipboardText,\n cookies: readBrowserWorkspaceCookies(document),\n localStorage: readBrowserWorkspaceStorage(dom.window.localStorage),\n sessionStorage: readBrowserWorkspaceStorage(\n dom.window.sessionStorage,\n ),\n settings: runtime.settings,\n url: tab.url,\n };\n const filePath = command.filePath?.trim() || command.outputPath?.trim();\n if (filePath) {\n await writeBrowserWorkspaceFile(\n filePath,\n JSON.stringify(payload, null, 2),\n );\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: { path: path.resolve(filePath), ...payload },\n };\n }\n return { mode: \"web\", subaction: command.subaction, value: payload };\n }\n case \"pdf\": {\n const filePath = command.filePath?.trim() || command.outputPath?.trim();\n if (!filePath) {\n throw new Error(\"Eliza browser workspace pdf requires filePath.\");\n }\n const pdf = createBrowserWorkspacePdfBuffer(\n tab.title,\n normalizeBrowserWorkspaceText(document.body?.textContent),\n );\n const resolved = await writeBrowserWorkspaceFile(filePath, pdf);\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: { path: resolved, size: pdf.byteLength },\n };\n }\n default:\n return null;\n }\n });\n}\n\nexport async function executeWebBrowserWorkspaceDomCommand(\n command: BrowserWorkspaceCommand,\n): Promise<BrowserWorkspaceCommandResult> {\n return withWebStateLock(async () => {\n const id = findWebBrowserWorkspaceTargetTabId(command);\n command = resolveBrowserWorkspaceCommandElementRefs(command, \"web\", id);\n const tab = getWebBrowserWorkspaceTabState(id);\n const dom = await ensureLoadedWebBrowserWorkspaceTabDocument(tab);\n const runtime = getBrowserWorkspaceRuntimeState(\"web\", id);\n const frameContext = resolveWebBrowserWorkspaceCommandDocument(\n tab,\n dom,\n runtime,\n );\n const document = frameContext.document;\n const resolveTarget = () =>\n resolveBrowserWorkspaceElement(\n document,\n command.selector,\n command.text,\n command,\n );\n\n switch (command.subaction) {\n case \"inspect\":\n clearWebBrowserWorkspaceTabElementRefs(tab.id);\n return {\n mode: \"web\",\n subaction: command.subaction,\n elements: registerBrowserWorkspaceElementRefs(\n \"web\",\n tab.id,\n collectBrowserWorkspaceInspectElements(document),\n ),\n value: {\n title: tab.title,\n url: tab.url,\n },\n };\n case \"snapshot\":\n clearWebBrowserWorkspaceTabElementRefs(tab.id);\n return {\n mode: \"web\",\n subaction: command.subaction,\n elements: registerBrowserWorkspaceElementRefs(\n \"web\",\n tab.id,\n collectBrowserWorkspaceInspectElements(document),\n ),\n value: {\n bodyText: buildBrowserWorkspaceDocumentSnapshotText(document).slice(\n 0,\n 800,\n ),\n title: tab.title,\n url: tab.url,\n },\n };\n case \"get\": {\n if (command.getMode === \"title\") {\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: tab.title,\n };\n }\n if (command.getMode === \"url\") {\n return { mode: \"web\", subaction: command.subaction, value: tab.url };\n }\n if (command.getMode === \"count\") {\n if (!command.selector?.trim()) {\n throw new Error(\n \"Eliza browser workspace get count requires selector.\",\n );\n }\n const semanticCommand = mergeBrowserWorkspaceSelectorCommand(\n command,\n command.selector,\n );\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: semanticCommand\n ? Number(\n Boolean(\n resolveBrowserWorkspaceFindElement(\n document,\n semanticCommand,\n ),\n ),\n )\n : queryAllBrowserWorkspaceSelector(document, command.selector)\n .length,\n };\n }\n\n const element = resolveTarget();\n if (!element) {\n throw new Error(\"Target element was not found.\");\n }\n\n let value: unknown;\n switch (command.getMode) {\n case \"attr\":\n if (!command.attribute?.trim()) {\n throw new Error(\n \"Eliza browser workspace attr lookups require attribute.\",\n );\n }\n value = element.getAttribute(command.attribute);\n break;\n case \"box\":\n value = getBrowserWorkspaceElementBox(element);\n break;\n case \"checked\":\n value =\n element.tagName === \"INPUT\"\n ? Boolean((element as HTMLInputElement).checked)\n : element.tagName === \"OPTION\"\n ? Boolean((element as HTMLOptionElement).selected)\n : false;\n break;\n case \"enabled\":\n value =\n \"disabled\" in element\n ? !(\n element as\n | HTMLButtonElement\n | HTMLInputElement\n | HTMLSelectElement\n | HTMLTextAreaElement\n ).disabled\n : true;\n break;\n case \"html\":\n value = element.innerHTML;\n break;\n case \"styles\":\n value = getBrowserWorkspaceElementStyles(element, dom.window);\n break;\n case \"value\":\n value = getBrowserWorkspaceElementValue(element);\n break;\n case \"visible\":\n value = isBrowserWorkspaceElementVisible(element);\n break;\n default:\n value = normalizeBrowserWorkspaceText(element.textContent);\n break;\n }\n\n return { mode: \"web\", subaction: command.subaction, value };\n }\n case \"find\": {\n const element = resolveTarget();\n if (!element) {\n throw new Error(\"Target element was not found.\");\n }\n\n switch (command.action) {\n case \"check\": {\n const input = ensureBrowserWorkspaceCheckboxElement(\n element,\n \"check\",\n );\n input.checked = true;\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: {\n checked: input.checked,\n selector: buildBrowserWorkspaceElementSelector(input),\n },\n };\n }\n case \"click\":\n return {\n ...(await activateWebBrowserWorkspaceElement(\n tab,\n element,\n \"click\",\n )),\n subaction: command.subaction,\n };\n case \"fill\": {\n const control = ensureBrowserWorkspaceFormControlElement(\n element,\n \"fill\",\n );\n setBrowserWorkspaceControlValue(control, command.value ?? \"\");\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: {\n selector: buildBrowserWorkspaceElementSelector(control),\n value: control.value,\n },\n };\n }\n case \"focus\":\n if (typeof (element as HTMLElement).focus === \"function\") {\n (element as HTMLElement).focus();\n }\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: {\n focused: document.activeElement === element,\n selector: buildBrowserWorkspaceElementSelector(element),\n },\n };\n case \"hover\":\n element.setAttribute(\"data-eliza-hover\", \"true\");\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: {\n hovered: true,\n selector: buildBrowserWorkspaceElementSelector(element),\n },\n };\n case \"type\": {\n const control = ensureBrowserWorkspaceFormControlElement(\n element,\n \"type\",\n );\n setBrowserWorkspaceControlValue(\n control,\n `${control.value ?? \"\"}${command.value ?? \"\"}`,\n );\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: {\n selector: buildBrowserWorkspaceElementSelector(control),\n value: control.value,\n },\n };\n }\n case \"uncheck\": {\n const input = ensureBrowserWorkspaceCheckboxElement(\n element,\n \"uncheck\",\n );\n input.checked = false;\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: {\n checked: input.checked,\n selector: buildBrowserWorkspaceElementSelector(input),\n },\n };\n }\n case \"text\":\n case undefined:\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: {\n element: createBrowserWorkspaceElementSummary(element),\n text: normalizeBrowserWorkspaceText(element.textContent),\n },\n };\n default:\n throw new Error(\n `Unsupported browser workspace find action: ${command.action}`,\n );\n }\n }\n case \"check\": {\n const element = resolveTarget();\n if (!element) {\n throw new Error(\"Target element was not found.\");\n }\n const input = ensureBrowserWorkspaceCheckboxElement(element, \"check\");\n input.checked = true;\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: {\n checked: input.checked,\n selector: buildBrowserWorkspaceElementSelector(input),\n },\n };\n }\n case \"fill\":\n case \"type\": {\n const element = resolveTarget();\n if (!element) {\n throw new Error(\"Target element was not found.\");\n }\n const control = ensureBrowserWorkspaceFormControlElement(\n element,\n command.subaction,\n );\n const nextValue =\n command.subaction === \"type\"\n ? `${control.value ?? \"\"}${command.value ?? \"\"}`\n : (command.value ?? \"\");\n setBrowserWorkspaceControlValue(control, nextValue);\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: {\n selector: buildBrowserWorkspaceElementSelector(control),\n value: nextValue,\n },\n };\n }\n case \"focus\": {\n const element = resolveTarget();\n if (!element) {\n throw new Error(\"Target element was not found.\");\n }\n if (typeof (element as HTMLElement).focus === \"function\") {\n (element as HTMLElement).focus();\n }\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: {\n focused: document.activeElement === element,\n selector: buildBrowserWorkspaceElementSelector(element),\n },\n };\n }\n case \"hover\": {\n const element = resolveTarget();\n if (!element) {\n throw new Error(\"Target element was not found.\");\n }\n element.setAttribute(\"data-eliza-hover\", \"true\");\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: {\n hovered: true,\n selector: buildBrowserWorkspaceElementSelector(element),\n },\n };\n }\n case \"keyboardinserttext\":\n case \"keyboardtype\": {\n const active = document.activeElement;\n if (\n !active ||\n !(\n active.tagName === \"INPUT\" ||\n active.tagName === \"TEXTAREA\" ||\n active.tagName === \"SELECT\"\n )\n ) {\n throw new Error(\n \"Eliza browser workspace keyboard text input requires a focused input target.\",\n );\n }\n const control = ensureBrowserWorkspaceFormControlElement(\n active,\n command.subaction === \"keyboardtype\" ? \"type\" : \"keyboardinserttext\",\n );\n const nextValue =\n command.subaction === \"keyboardtype\"\n ? `${control.value ?? \"\"}${command.value ?? \"\"}`\n : (command.value ?? \"\");\n setBrowserWorkspaceControlValue(control, nextValue);\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: {\n selector: buildBrowserWorkspaceElementSelector(control),\n value: control.value,\n },\n };\n }\n case \"keydown\":\n case \"keyup\":\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: {\n key: command.key?.trim() || \"Enter\",\n selector:\n document.activeElement &&\n document.activeElement instanceof Element\n ? buildBrowserWorkspaceElementSelector(document.activeElement)\n : null,\n },\n };\n case \"click\": {\n const element = resolveTarget();\n if (!element) {\n throw new Error(\"Target element was not found.\");\n }\n return activateWebBrowserWorkspaceElement(tab, element, \"click\");\n }\n case \"dblclick\": {\n const element = resolveTarget();\n if (!element) {\n throw new Error(\"Target element was not found.\");\n }\n return activateWebBrowserWorkspaceElement(tab, element, \"dblclick\");\n }\n case \"press\": {\n const key = command.key?.trim() || \"Enter\";\n const element = resolveTarget();\n const form = findClosestBrowserWorkspaceForm(element);\n\n if (key === \"Enter\" && form) {\n await submitWebBrowserWorkspaceForm(tab, form);\n return {\n mode: \"web\",\n subaction: command.subaction,\n tab: cloneWebBrowserWorkspaceTabState(tab),\n value: { key, url: tab.url },\n };\n }\n\n return { mode: \"web\", subaction: command.subaction, value: { key } };\n }\n case \"scroll\": {\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: scrollWebBrowserWorkspaceTarget(\n dom,\n resolveTarget(),\n command.direction ?? \"down\",\n command.pixels ?? 240,\n ),\n };\n }\n case \"scrollinto\": {\n const element = resolveTarget();\n if (!element) {\n throw new Error(\"Target element was not found.\");\n }\n if (typeof (element as HTMLElement).focus === \"function\") {\n (element as HTMLElement).focus();\n }\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: {\n scrolled: true,\n selector: buildBrowserWorkspaceElementSelector(element),\n },\n };\n }\n case \"select\": {\n const element = resolveTarget();\n if (!element) {\n throw new Error(\"Target element was not found.\");\n }\n if (element.tagName !== \"SELECT\") {\n throw new Error(\n \"Eliza browser workspace select requires a select target.\",\n );\n }\n const select = ensureBrowserWorkspaceFormControlElement(\n element,\n \"select\",\n );\n const option = Array.from((select as HTMLSelectElement).options).find(\n (entry) =>\n entry.value === (command.value ?? \"\") ||\n browserWorkspaceTextMatches(\n entry.textContent ?? \"\",\n command.value ?? \"\",\n true,\n ),\n );\n if (!option) {\n throw new Error(\"Select option was not found.\");\n }\n (select as HTMLSelectElement).value = option.value;\n option.selected = true;\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: {\n selector: buildBrowserWorkspaceElementSelector(select),\n value: (select as HTMLSelectElement).value,\n },\n };\n }\n case \"uncheck\": {\n const element = resolveTarget();\n if (!element) {\n throw new Error(\"Target element was not found.\");\n }\n const input = ensureBrowserWorkspaceCheckboxElement(element, \"uncheck\");\n input.checked = false;\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: {\n checked: input.checked,\n selector: buildBrowserWorkspaceElementSelector(input),\n },\n };\n }\n case \"wait\": {\n if (\n !command.selector &&\n !command.findBy &&\n !command.text &&\n !command.url &&\n !command.script &&\n typeof command.timeoutMs === \"number\" &&\n Number.isFinite(command.timeoutMs)\n ) {\n const waitedMs = Math.max(0, command.timeoutMs);\n await sleep(waitedMs);\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: { waitedMs },\n };\n }\n const timeoutMs =\n typeof command.timeoutMs === \"number\" &&\n Number.isFinite(command.timeoutMs)\n ? Math.max(100, command.timeoutMs)\n : DEFAULT_TIMEOUT_MS;\n const deadline = Date.now() + timeoutMs;\n\n while (Date.now() <= deadline) {\n await ensureLoadedWebBrowserWorkspaceTabDocument(tab);\n const currentDom = ensureBrowserWorkspaceDom(tab);\n const currentDocument = currentDom.window.document;\n\n const matchesSelector = command.selector?.trim()\n ? (() => {\n const found = resolveBrowserWorkspaceElement(\n currentDocument,\n command.selector,\n undefined,\n command,\n );\n if (command.state === \"visible\") {\n return found\n ? isBrowserWorkspaceElementVisible(found)\n : false;\n }\n return !found || !isBrowserWorkspaceElementVisible(found);\n })()\n : false;\n const matchesFind = command.findBy\n ? Boolean(\n resolveBrowserWorkspaceFindElement(currentDocument, command),\n )\n : false;\n const matchesText = command.text?.trim()\n ? normalizeBrowserWorkspaceText(\n currentDocument.body?.textContent,\n ).includes(command.text.trim())\n : false;\n const matchesUrl = command.url?.trim()\n ? tab.url.includes(command.url.trim())\n : false;\n const matchesScript = command.script?.trim()\n ? Boolean(\n new Function(\n \"document\",\n \"window\",\n \"location\",\n `return (${command.script});`,\n )(\n currentDocument,\n currentDom.window,\n currentDom.window.location,\n ),\n )\n : false;\n\n if (\n matchesSelector ||\n matchesFind ||\n matchesText ||\n matchesUrl ||\n matchesScript ||\n (!command.selector &&\n !command.findBy &&\n !command.text &&\n !command.url &&\n !command.script)\n ) {\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: {\n findBy: command.findBy ?? null,\n selector: command.selector ?? null,\n state: command.state ?? null,\n text: command.text ?? null,\n url: tab.url,\n },\n };\n }\n\n await sleep(DEFAULT_WAIT_INTERVAL_MS);\n }\n\n throw new Error(\"Timed out waiting for browser workspace condition.\");\n }\n default:\n throw new Error(\n `Unsupported web browser workspace subaction: ${command.subaction}`,\n );\n }\n });\n}\n"],"mappings":"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","names":["target","baseline","filePath","payload"]}
1
+ {"version":3,"sources":["../../src/workspace/browser-workspace-web.ts"],"sourcesContent":["import * as fsp from \"node:fs/promises\";\nimport * as path from \"node:path\";\nimport {\n browserWorkspaceTextMatches,\n buildBrowserWorkspaceElementSelector,\n collectBrowserWorkspaceInspectElements,\n createBrowserWorkspaceElementSummary,\n findClosestBrowserWorkspaceForm,\n getBrowserWorkspaceElementBox,\n getBrowserWorkspaceElementStyles,\n getBrowserWorkspaceElementValue,\n isBrowserWorkspaceElementVisible,\n mergeBrowserWorkspaceSelectorCommand,\n queryAllBrowserWorkspaceSelector,\n resolveBrowserWorkspaceElement,\n resolveBrowserWorkspaceFindElement,\n resolveWebBrowserWorkspaceCommandDocument,\n} from \"./browser-workspace-elements.js\";\nimport {\n activateWebBrowserWorkspaceElement,\n clearWebBrowserWorkspaceTabElementRefs,\n cloneWebBrowserWorkspaceTabState,\n ensureBrowserWorkspaceCheckboxElement,\n ensureBrowserWorkspaceFormControlElement,\n ensureLoadedWebBrowserWorkspaceTabDocument,\n scrollWebBrowserWorkspaceTarget,\n setBrowserWorkspaceControlValue,\n submitWebBrowserWorkspaceForm,\n} from \"./browser-workspace-forms.js\";\nimport {\n assertBrowserWorkspaceConnectorSecretsNotExported,\n createBrowserWorkspaceJsdomScriptExecutionError,\n assertBrowserWorkspaceJsdomScriptNotRequested,\n createBrowserWorkspaceCommandTargetError,\n createBrowserWorkspaceNotFoundError,\n DEFAULT_TIMEOUT_MS,\n DEFAULT_WAIT_INTERVAL_MS,\n normalizeBrowserWorkspaceText,\n resolveBrowserWorkspaceCommandElementRefs,\n sleep,\n writeBrowserWorkspaceFile,\n} from \"./browser-workspace-helpers.js\";\nimport {\n applyBrowserWorkspaceDomSettings,\n ensureBrowserWorkspaceDom,\n} from \"./browser-workspace-jsdom.js\";\nimport {\n fetchBrowserWorkspaceTrackedResponse,\n normalizeBrowserWorkspaceHeaders,\n} from \"./browser-workspace-network.js\";\nimport {\n applyBrowserWorkspaceStateToWebDocument,\n buildBrowserWorkspaceDocumentSnapshotText,\n createBrowserWorkspacePdfBuffer,\n createBrowserWorkspaceSnapshotRecord,\n createBrowserWorkspaceSyntheticScreenshotData,\n diffBrowserWorkspaceSnapshots,\n readBrowserWorkspaceCookies,\n readBrowserWorkspaceStorage,\n} from \"./browser-workspace-snapshots.js\";\nimport {\n browserWorkspaceClipboardText,\n getBrowserWorkspaceRuntimeState,\n getBrowserWorkspaceTimestamp,\n registerBrowserWorkspaceElementRefs,\n setBrowserWorkspaceClipboardText,\n webWorkspaceState,\n withWebStateLock,\n} from \"./browser-workspace-state.js\";\nimport type {\n BrowserWorkspaceCommand,\n BrowserWorkspaceCommandResult,\n BrowserWorkspaceSettingsState,\n WebBrowserWorkspaceTabState,\n} from \"./browser-workspace-types.js\";\n\nexport function getWebBrowserWorkspaceTabIndex(tabId: string): number {\n return webWorkspaceState.tabs.findIndex((tab) => tab.id === tabId);\n}\n\nexport function getWebBrowserWorkspaceTabState(\n tabId: string,\n): WebBrowserWorkspaceTabState {\n const tab = webWorkspaceState.tabs.find((entry) => entry.id === tabId);\n if (!tab) {\n throw createBrowserWorkspaceNotFoundError(tabId);\n }\n return tab;\n}\n\nexport function getCurrentWebBrowserWorkspaceTabState(): WebBrowserWorkspaceTabState | null {\n if (webWorkspaceState.tabs.length === 0) {\n return null;\n }\n\n return (\n webWorkspaceState.tabs.find((tab) => tab.visible) ??\n [...webWorkspaceState.tabs].sort((left, right) => {\n const leftTime = left.lastFocusedAt ?? left.updatedAt ?? \"\";\n const rightTime = right.lastFocusedAt ?? right.updatedAt ?? \"\";\n return (\n rightTime.localeCompare(leftTime) || left.id.localeCompare(right.id)\n );\n })[0] ??\n null\n );\n}\n\nexport function findWebBrowserWorkspaceTargetTabId(\n command: BrowserWorkspaceCommand,\n): string {\n if (command.id?.trim()) {\n return command.id.trim();\n }\n const current = getCurrentWebBrowserWorkspaceTabState();\n if (!current) {\n throw createBrowserWorkspaceCommandTargetError(command.subaction);\n }\n return current.id;\n}\n\nexport async function executeWebBrowserWorkspaceUtilityCommand(\n command: BrowserWorkspaceCommand,\n): Promise<BrowserWorkspaceCommandResult | null> {\n return withWebStateLock(async () => {\n if (\n ![\n \"clipboard\",\n \"console\",\n \"cookies\",\n \"diff\",\n \"dialog\",\n \"drag\",\n \"errors\",\n \"eval\",\n \"frame\",\n \"highlight\",\n \"mouse\",\n \"network\",\n \"pdf\",\n \"screenshot\",\n \"set\",\n \"state\",\n \"storage\",\n \"trace\",\n \"profiler\",\n \"upload\",\n ].includes(command.subaction)\n ) {\n return null;\n }\n\n const id = findWebBrowserWorkspaceTargetTabId(command);\n const tab = getWebBrowserWorkspaceTabState(id);\n const dom = await ensureLoadedWebBrowserWorkspaceTabDocument(tab);\n const runtime = getBrowserWorkspaceRuntimeState(\"web\", id);\n const frameContext = resolveWebBrowserWorkspaceCommandDocument(\n tab,\n dom,\n runtime,\n );\n const document = frameContext.document;\n const resolveTarget = () =>\n resolveBrowserWorkspaceElement(\n document,\n command.selector,\n command.text,\n command,\n );\n\n switch (command.subaction) {\n case \"eval\": {\n if (!command.script?.trim()) {\n throw new Error(\"Eliza browser workspace eval requires script.\");\n }\n // GHSA-mhhr-9ph9-64j7 / GHSA-vhvq-g4mq-vq62: never run user script in\n // Node JSDOM — `new Function()` / eval reach process and full DOM forgery.\n throw createBrowserWorkspaceJsdomScriptExecutionError(\"eval\");\n }\n case \"screenshot\": {\n const data = createBrowserWorkspaceSyntheticScreenshotData(\n tab.title,\n tab.url,\n buildBrowserWorkspaceDocumentSnapshotText(document),\n runtime.settings.viewport ?? undefined,\n );\n runtime.lastScreenshotData = data;\n if (command.filePath?.trim() || command.outputPath?.trim()) {\n const targetPath =\n command.filePath?.trim() || command.outputPath?.trim() || \"\";\n await writeBrowserWorkspaceFile(\n targetPath,\n Buffer.from(data, \"base64\"),\n );\n return {\n mode: \"web\",\n subaction: command.subaction,\n snapshot: { data },\n value: { path: path.resolve(targetPath) },\n };\n }\n return {\n mode: \"web\",\n subaction: command.subaction,\n snapshot: { data },\n };\n }\n case \"clipboard\": {\n const action = command.clipboardAction ?? \"read\";\n if (action === \"read\") {\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: browserWorkspaceClipboardText,\n };\n }\n if (action === \"write\") {\n setBrowserWorkspaceClipboardText(command.value ?? command.text ?? \"\");\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: browserWorkspaceClipboardText,\n };\n }\n if (action === \"copy\") {\n const target = resolveTarget();\n setBrowserWorkspaceClipboardText(\n target && \"value\" in (target as HTMLInputElement)\n ? String((target as HTMLInputElement).value ?? \"\")\n : normalizeBrowserWorkspaceText(\n target?.textContent ?? document.body?.textContent,\n ),\n );\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: browserWorkspaceClipboardText,\n };\n }\n const target = resolveTarget() ?? document.activeElement;\n if (\n target &&\n (target.tagName === \"INPUT\" ||\n target.tagName === \"TEXTAREA\" ||\n target.tagName === \"SELECT\")\n ) {\n const control = ensureBrowserWorkspaceFormControlElement(\n target,\n \"clipboard\",\n );\n setBrowserWorkspaceControlValue(\n control,\n `${control.value ?? \"\"}${browserWorkspaceClipboardText}`,\n );\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: {\n selector: buildBrowserWorkspaceElementSelector(control),\n value: control.value,\n },\n };\n }\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: browserWorkspaceClipboardText,\n };\n }\n case \"mouse\": {\n const action = command.mouseAction ?? \"move\";\n if (action === \"move\") {\n runtime.mouse.x = command.x ?? runtime.mouse.x;\n runtime.mouse.y = command.y ?? runtime.mouse.y;\n } else if (action === \"down\") {\n const button = command.button ?? \"left\";\n runtime.mouse.buttons = Array.from(\n new Set([...runtime.mouse.buttons, button]),\n );\n } else if (action === \"up\") {\n const button = command.button ?? \"left\";\n runtime.mouse.buttons = runtime.mouse.buttons.filter(\n (entry) => entry !== button,\n );\n } else {\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: scrollWebBrowserWorkspaceTarget(\n dom,\n resolveTarget(),\n (command.deltaY ?? 0) < 0 ? \"up\" : \"down\",\n Math.abs(command.deltaY ?? command.pixels ?? 240),\n ),\n };\n }\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: runtime.mouse,\n };\n }\n case \"drag\": {\n const source = resolveTarget();\n const target = command.value\n ? resolveBrowserWorkspaceElement(document, command.value)\n : null;\n if (!source || !target) {\n throw new Error(\n \"Eliza browser workspace drag requires source selector and target selector in value.\",\n );\n }\n source.setAttribute(\"data-eliza-dragging\", \"true\");\n target.setAttribute(\"data-eliza-drop-target\", \"true\");\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: {\n source: buildBrowserWorkspaceElementSelector(source),\n target: buildBrowserWorkspaceElementSelector(target),\n },\n };\n }\n case \"upload\": {\n const target = resolveTarget();\n if (!target || target.tagName !== \"INPUT\") {\n throw new Error(\n \"Eliza browser workspace upload requires a file input target.\",\n );\n }\n const files = (command.files ?? []).map((entry) =>\n path.basename(entry),\n );\n target.setAttribute(\"data-eliza-uploaded-files\", files.join(\",\"));\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: {\n files,\n selector: buildBrowserWorkspaceElementSelector(target),\n },\n };\n }\n case \"set\": {\n const action = command.setAction ?? \"viewport\";\n if (action === \"credentials\" || action === \"headers\") {\n assertBrowserWorkspaceConnectorSecretsNotExported(\n tab.partition,\n `set:${action}`,\n );\n }\n if (action === \"viewport\") {\n runtime.settings.viewport = {\n height: Math.max(1, Math.round(command.height ?? 720)),\n scale: Math.max(1, Number(command.scale ?? 1)),\n width: Math.max(1, Math.round(command.width ?? 1280)),\n };\n } else if (action === \"device\") {\n runtime.settings.device = command.device ?? null;\n } else if (action === \"geo\") {\n runtime.settings.geo =\n typeof command.latitude === \"number\" &&\n typeof command.longitude === \"number\"\n ? { latitude: command.latitude, longitude: command.longitude }\n : null;\n } else if (action === \"offline\") {\n runtime.settings.offline = Boolean(command.offline);\n } else if (action === \"headers\") {\n runtime.settings.headers = normalizeBrowserWorkspaceHeaders(\n command.headers,\n );\n } else if (action === \"credentials\") {\n runtime.settings.credentials =\n command.username || command.password\n ? {\n password: command.password ?? \"\",\n username: command.username ?? \"\",\n }\n : null;\n } else if (action === \"media\") {\n runtime.settings.media = command.media ?? null;\n }\n applyBrowserWorkspaceDomSettings(dom, runtime);\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: runtime.settings,\n };\n }\n case \"cookies\": {\n assertBrowserWorkspaceConnectorSecretsNotExported(\n tab.partition,\n \"cookies\",\n );\n const action = command.cookieAction ?? \"get\";\n if (action === \"clear\") {\n for (const key of Object.keys(\n readBrowserWorkspaceCookies(document),\n )) {\n document.cookie = `${key}=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/`;\n }\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: { cleared: true },\n };\n }\n if (action === \"set\") {\n const cookieName = command.name?.trim() || command.entryKey?.trim();\n if (!cookieName) {\n throw new Error(\n \"Eliza browser workspace cookies set requires name.\",\n );\n }\n document.cookie = `${cookieName}=${command.value ?? \"\"}; path=/`;\n }\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: readBrowserWorkspaceCookies(document),\n };\n }\n case \"storage\": {\n assertBrowserWorkspaceConnectorSecretsNotExported(\n tab.partition,\n \"storage\",\n );\n const area =\n command.storageArea === \"session\"\n ? dom.window.sessionStorage\n : dom.window.localStorage;\n const action = command.storageAction ?? \"get\";\n if (action === \"clear\") {\n area.clear();\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: { cleared: true },\n };\n }\n if (action === \"set\") {\n const key = command.entryKey?.trim() || command.name?.trim();\n if (!key) {\n throw new Error(\n \"Eliza browser workspace storage set requires entryKey.\",\n );\n }\n area.setItem(key, command.value ?? \"\");\n }\n if (command.entryKey?.trim() || command.name?.trim()) {\n const key = command.entryKey?.trim() || command.name?.trim() || \"\";\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: area.getItem(key),\n };\n }\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: readBrowserWorkspaceStorage(area),\n };\n }\n case \"network\": {\n const action = command.networkAction ?? \"requests\";\n if (action === \"route\") {\n const pattern = command.url?.trim();\n if (!pattern) {\n throw new Error(\n \"Eliza browser workspace network route requires url pattern.\",\n );\n }\n runtime.networkRoutes.push({\n abort: Boolean(command.offline),\n body: command.responseBody ?? null,\n headers: normalizeBrowserWorkspaceHeaders(command.responseHeaders),\n pattern,\n status:\n typeof command.responseStatus === \"number\"\n ? command.responseStatus\n : null,\n });\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: runtime.networkRoutes,\n };\n }\n if (action === \"unroute\") {\n runtime.networkRoutes = command.url?.trim()\n ? runtime.networkRoutes.filter(\n (route) => route.pattern !== command.url?.trim(),\n )\n : [];\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: runtime.networkRoutes,\n };\n }\n if (action === \"request\") {\n const request = runtime.networkRequests.find(\n (entry) => entry.id === command.requestId,\n );\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: request ?? null,\n };\n }\n if (action === \"harstart\") {\n runtime.networkHar = {\n active: true,\n entries: [],\n startedAt: getBrowserWorkspaceTimestamp(),\n };\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: runtime.networkHar,\n };\n }\n if (action === \"harstop\") {\n runtime.networkHar.active = false;\n const har = {\n log: {\n entries: runtime.networkHar.entries,\n startedAt: runtime.networkHar.startedAt,\n },\n };\n if (command.filePath?.trim() || command.outputPath?.trim()) {\n const targetPath =\n command.filePath?.trim() || command.outputPath?.trim() || \"\";\n await writeBrowserWorkspaceFile(\n targetPath,\n JSON.stringify(har, null, 2),\n );\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: { path: path.resolve(targetPath), ...har },\n };\n }\n return { mode: \"web\", subaction: command.subaction, value: har };\n }\n let requests = [...runtime.networkRequests];\n if (command.filter?.trim()) {\n requests = requests.filter((entry) =>\n entry.url.includes(command.filter ?? \"\"),\n );\n }\n if (command.method?.trim()) {\n requests = requests.filter(\n (entry) =>\n entry.method.toUpperCase() ===\n command.method?.trim().toUpperCase(),\n );\n }\n if (command.status?.trim()) {\n const statusFilter = command.status.trim();\n requests = requests.filter((entry) => {\n if (entry.status === null) {\n return false;\n }\n if (/^\\dxx$/i.test(statusFilter)) {\n return String(entry.status).startsWith(statusFilter[0] ?? \"\");\n }\n return String(entry.status) === statusFilter;\n });\n }\n return { mode: \"web\", subaction: command.subaction, value: requests };\n }\n case \"dialog\": {\n const action = command.dialogAction ?? \"status\";\n if (action === \"status\") {\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: runtime.dialog,\n };\n }\n if (runtime.dialog) {\n runtime.dialog.open = false;\n }\n const result =\n action === \"accept\"\n ? {\n accepted: true,\n dialog: runtime.dialog,\n promptText: command.promptText ?? command.value ?? null,\n }\n : { accepted: false, dialog: runtime.dialog };\n runtime.dialog = null;\n return { mode: \"web\", subaction: command.subaction, value: result };\n }\n case \"console\": {\n if (command.consoleAction === \"clear\") {\n runtime.consoleEntries = [];\n }\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: runtime.consoleEntries,\n };\n }\n case \"errors\": {\n if (command.consoleAction === \"clear\") {\n runtime.errors = [];\n }\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: runtime.errors,\n };\n }\n case \"highlight\": {\n const target = resolveTarget();\n if (!target) {\n throw new Error(\"Target element was not found.\");\n }\n target.setAttribute(\"data-eliza-highlight\", \"true\");\n runtime.highlightedSelector =\n buildBrowserWorkspaceElementSelector(target);\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: { selector: runtime.highlightedSelector },\n };\n }\n case \"frame\": {\n const action = command.frameAction ?? \"select\";\n if (action === \"main\") {\n runtime.currentFrame = null;\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: { frame: null },\n };\n }\n const frame = resolveBrowserWorkspaceElement(\n dom.window.document,\n command.selector,\n );\n if (!frame || frame.tagName !== \"IFRAME\") {\n throw new Error(\n \"Eliza browser workspace frame select requires an iframe selector.\",\n );\n }\n runtime.currentFrame = buildBrowserWorkspaceElementSelector(frame);\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: { frame: runtime.currentFrame },\n };\n }\n case \"diff\": {\n const snapshot = createBrowserWorkspaceSnapshotRecord(\n tab.title,\n tab.url,\n buildBrowserWorkspaceDocumentSnapshotText(document),\n );\n if (command.diffAction === \"url\") {\n const leftUrl = command.url?.trim() || tab.url;\n const rightUrl = command.secondaryUrl?.trim();\n if (!rightUrl) {\n throw new Error(\n \"Eliza browser workspace diff url requires secondaryUrl.\",\n );\n }\n const left = await fetchBrowserWorkspaceTrackedResponse(\n runtime,\n leftUrl,\n {},\n \"document\",\n );\n const right = await fetchBrowserWorkspaceTrackedResponse(\n runtime,\n rightUrl,\n {},\n \"document\",\n );\n const leftSnapshot = createBrowserWorkspaceSnapshotRecord(\n leftUrl,\n left.url || leftUrl,\n await left.text(),\n );\n const rightSnapshot = createBrowserWorkspaceSnapshotRecord(\n rightUrl,\n right.url || rightUrl,\n await right.text(),\n );\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: diffBrowserWorkspaceSnapshots(leftSnapshot, rightSnapshot),\n };\n }\n if (command.diffAction === \"screenshot\") {\n const currentData =\n runtime.lastScreenshotData ??\n createBrowserWorkspaceSyntheticScreenshotData(\n tab.title,\n tab.url,\n buildBrowserWorkspaceDocumentSnapshotText(document),\n runtime.settings.viewport ?? undefined,\n );\n const baseline = command.baselinePath?.trim()\n ? await fsp.readFile(\n path.resolve(command.baselinePath.trim()),\n \"base64\",\n )\n : runtime.lastScreenshotData;\n runtime.lastScreenshotData = currentData;\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: {\n baselineLength: baseline?.length ?? 0,\n changed: baseline !== currentData,\n currentLength: currentData.length,\n },\n };\n }\n const baseline = command.baselinePath?.trim()\n ? (JSON.parse(\n await fsp.readFile(\n path.resolve(command.baselinePath.trim()),\n \"utf8\",\n ),\n ) as import(\"./browser-workspace-types.js\").BrowserWorkspaceSnapshotRecord)\n : runtime.lastSnapshot;\n const diff = diffBrowserWorkspaceSnapshots(baseline, snapshot);\n runtime.lastSnapshot = snapshot;\n return { mode: \"web\", subaction: command.subaction, value: diff };\n }\n case \"trace\": {\n if (command.traceAction === \"stop\") {\n runtime.trace.active = false;\n const traceValue = { entries: runtime.trace.entries };\n if (command.filePath?.trim() || command.outputPath?.trim()) {\n const targetPath =\n command.filePath?.trim() || command.outputPath?.trim() || \"\";\n await writeBrowserWorkspaceFile(\n targetPath,\n JSON.stringify(traceValue, null, 2),\n );\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: { path: path.resolve(targetPath), ...traceValue },\n };\n }\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: traceValue,\n };\n }\n runtime.trace = { active: true, entries: [] };\n runtime.trace.entries.push({\n command: \"trace:start\",\n timestamp: getBrowserWorkspaceTimestamp(),\n });\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: { active: true },\n };\n }\n case \"profiler\": {\n if (command.profilerAction === \"stop\") {\n runtime.profiler.active = false;\n const profileValue = { entries: runtime.profiler.entries };\n if (command.filePath?.trim() || command.outputPath?.trim()) {\n const targetPath =\n command.filePath?.trim() || command.outputPath?.trim() || \"\";\n await writeBrowserWorkspaceFile(\n targetPath,\n JSON.stringify(profileValue, null, 2),\n );\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: { path: path.resolve(targetPath), ...profileValue },\n };\n }\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: profileValue,\n };\n }\n runtime.profiler = {\n active: true,\n entries: [\n {\n command: \"profiler:start\",\n timestamp: getBrowserWorkspaceTimestamp(),\n },\n ],\n };\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: { active: true },\n };\n }\n case \"state\": {\n assertBrowserWorkspaceConnectorSecretsNotExported(\n tab.partition,\n \"state\",\n );\n if (command.stateAction === \"load\") {\n const filePath =\n command.filePath?.trim() || command.outputPath?.trim();\n if (!filePath) {\n throw new Error(\n \"Eliza browser workspace state load requires filePath.\",\n );\n }\n const payload = JSON.parse(\n await fsp.readFile(path.resolve(filePath), \"utf8\"),\n ) as Record<string, unknown>;\n applyBrowserWorkspaceStateToWebDocument(document, payload);\n if (payload.settings && typeof payload.settings === \"object\") {\n runtime.settings = {\n ...runtime.settings,\n ...(payload.settings as BrowserWorkspaceSettingsState),\n };\n applyBrowserWorkspaceDomSettings(dom, runtime);\n }\n setBrowserWorkspaceClipboardText(\n typeof payload.clipboard === \"string\"\n ? payload.clipboard\n : browserWorkspaceClipboardText,\n );\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: { loaded: true },\n };\n }\n const payload = {\n clipboard: browserWorkspaceClipboardText,\n cookies: readBrowserWorkspaceCookies(document),\n localStorage: readBrowserWorkspaceStorage(dom.window.localStorage),\n sessionStorage: readBrowserWorkspaceStorage(\n dom.window.sessionStorage,\n ),\n settings: runtime.settings,\n url: tab.url,\n };\n const filePath = command.filePath?.trim() || command.outputPath?.trim();\n if (filePath) {\n await writeBrowserWorkspaceFile(\n filePath,\n JSON.stringify(payload, null, 2),\n );\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: { path: path.resolve(filePath), ...payload },\n };\n }\n return { mode: \"web\", subaction: command.subaction, value: payload };\n }\n case \"pdf\": {\n const filePath = command.filePath?.trim() || command.outputPath?.trim();\n if (!filePath) {\n throw new Error(\"Eliza browser workspace pdf requires filePath.\");\n }\n const pdf = createBrowserWorkspacePdfBuffer(\n tab.title,\n normalizeBrowserWorkspaceText(document.body?.textContent),\n );\n const resolved = await writeBrowserWorkspaceFile(filePath, pdf);\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: { path: resolved, size: pdf.byteLength },\n };\n }\n default:\n return null;\n }\n });\n}\n\nexport async function executeWebBrowserWorkspaceDomCommand(\n command: BrowserWorkspaceCommand,\n): Promise<BrowserWorkspaceCommandResult> {\n return withWebStateLock(async () => {\n const id = findWebBrowserWorkspaceTargetTabId(command);\n command = resolveBrowserWorkspaceCommandElementRefs(command, \"web\", id);\n const tab = getWebBrowserWorkspaceTabState(id);\n const dom = await ensureLoadedWebBrowserWorkspaceTabDocument(tab);\n const runtime = getBrowserWorkspaceRuntimeState(\"web\", id);\n const frameContext = resolveWebBrowserWorkspaceCommandDocument(\n tab,\n dom,\n runtime,\n );\n const document = frameContext.document;\n const resolveTarget = () =>\n resolveBrowserWorkspaceElement(\n document,\n command.selector,\n command.text,\n command,\n );\n\n switch (command.subaction) {\n case \"inspect\":\n clearWebBrowserWorkspaceTabElementRefs(tab.id);\n return {\n mode: \"web\",\n subaction: command.subaction,\n elements: registerBrowserWorkspaceElementRefs(\n \"web\",\n tab.id,\n collectBrowserWorkspaceInspectElements(document),\n ),\n value: {\n title: tab.title,\n url: tab.url,\n },\n };\n case \"snapshot\":\n clearWebBrowserWorkspaceTabElementRefs(tab.id);\n return {\n mode: \"web\",\n subaction: command.subaction,\n elements: registerBrowserWorkspaceElementRefs(\n \"web\",\n tab.id,\n collectBrowserWorkspaceInspectElements(document),\n ),\n value: {\n bodyText: buildBrowserWorkspaceDocumentSnapshotText(document).slice(\n 0,\n 800,\n ),\n title: tab.title,\n url: tab.url,\n },\n };\n case \"get\": {\n if (command.getMode === \"title\") {\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: tab.title,\n };\n }\n if (command.getMode === \"url\") {\n return { mode: \"web\", subaction: command.subaction, value: tab.url };\n }\n if (command.getMode === \"count\") {\n if (!command.selector?.trim()) {\n throw new Error(\n \"Eliza browser workspace get count requires selector.\",\n );\n }\n const semanticCommand = mergeBrowserWorkspaceSelectorCommand(\n command,\n command.selector,\n );\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: semanticCommand\n ? Number(\n Boolean(\n resolveBrowserWorkspaceFindElement(\n document,\n semanticCommand,\n ),\n ),\n )\n : queryAllBrowserWorkspaceSelector(document, command.selector)\n .length,\n };\n }\n\n const element = resolveTarget();\n if (!element) {\n throw new Error(\"Target element was not found.\");\n }\n\n let value: unknown;\n switch (command.getMode) {\n case \"attr\":\n if (!command.attribute?.trim()) {\n throw new Error(\n \"Eliza browser workspace attr lookups require attribute.\",\n );\n }\n value = element.getAttribute(command.attribute);\n break;\n case \"box\":\n value = getBrowserWorkspaceElementBox(element);\n break;\n case \"checked\":\n value =\n element.tagName === \"INPUT\"\n ? Boolean((element as HTMLInputElement).checked)\n : element.tagName === \"OPTION\"\n ? Boolean((element as HTMLOptionElement).selected)\n : false;\n break;\n case \"enabled\":\n value =\n \"disabled\" in element\n ? !(\n element as\n | HTMLButtonElement\n | HTMLInputElement\n | HTMLSelectElement\n | HTMLTextAreaElement\n ).disabled\n : true;\n break;\n case \"html\":\n value = element.innerHTML;\n break;\n case \"styles\":\n value = getBrowserWorkspaceElementStyles(element, dom.window);\n break;\n case \"value\":\n value = getBrowserWorkspaceElementValue(element);\n break;\n case \"visible\":\n value = isBrowserWorkspaceElementVisible(element);\n break;\n default:\n value = normalizeBrowserWorkspaceText(element.textContent);\n break;\n }\n\n return { mode: \"web\", subaction: command.subaction, value };\n }\n case \"find\": {\n const element = resolveTarget();\n if (!element) {\n throw new Error(\"Target element was not found.\");\n }\n\n switch (command.action) {\n case \"check\": {\n const input = ensureBrowserWorkspaceCheckboxElement(\n element,\n \"check\",\n );\n input.checked = true;\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: {\n checked: input.checked,\n selector: buildBrowserWorkspaceElementSelector(input),\n },\n };\n }\n case \"click\":\n return {\n ...(await activateWebBrowserWorkspaceElement(\n tab,\n element,\n \"click\",\n )),\n subaction: command.subaction,\n };\n case \"fill\": {\n const control = ensureBrowserWorkspaceFormControlElement(\n element,\n \"fill\",\n );\n setBrowserWorkspaceControlValue(control, command.value ?? \"\");\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: {\n selector: buildBrowserWorkspaceElementSelector(control),\n value: control.value,\n },\n };\n }\n case \"focus\":\n if (typeof (element as HTMLElement).focus === \"function\") {\n (element as HTMLElement).focus();\n }\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: {\n focused: document.activeElement === element,\n selector: buildBrowserWorkspaceElementSelector(element),\n },\n };\n case \"hover\":\n element.setAttribute(\"data-eliza-hover\", \"true\");\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: {\n hovered: true,\n selector: buildBrowserWorkspaceElementSelector(element),\n },\n };\n case \"type\": {\n const control = ensureBrowserWorkspaceFormControlElement(\n element,\n \"type\",\n );\n setBrowserWorkspaceControlValue(\n control,\n `${control.value ?? \"\"}${command.value ?? \"\"}`,\n );\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: {\n selector: buildBrowserWorkspaceElementSelector(control),\n value: control.value,\n },\n };\n }\n case \"uncheck\": {\n const input = ensureBrowserWorkspaceCheckboxElement(\n element,\n \"uncheck\",\n );\n input.checked = false;\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: {\n checked: input.checked,\n selector: buildBrowserWorkspaceElementSelector(input),\n },\n };\n }\n case \"text\":\n case undefined:\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: {\n element: createBrowserWorkspaceElementSummary(element),\n text: normalizeBrowserWorkspaceText(element.textContent),\n },\n };\n default:\n throw new Error(\n `Unsupported browser workspace find action: ${command.action}`,\n );\n }\n }\n case \"check\": {\n const element = resolveTarget();\n if (!element) {\n throw new Error(\"Target element was not found.\");\n }\n const input = ensureBrowserWorkspaceCheckboxElement(element, \"check\");\n input.checked = true;\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: {\n checked: input.checked,\n selector: buildBrowserWorkspaceElementSelector(input),\n },\n };\n }\n case \"fill\":\n case \"type\": {\n const element = resolveTarget();\n if (!element) {\n throw new Error(\"Target element was not found.\");\n }\n const control = ensureBrowserWorkspaceFormControlElement(\n element,\n command.subaction,\n );\n const nextValue =\n command.subaction === \"type\"\n ? `${control.value ?? \"\"}${command.value ?? \"\"}`\n : (command.value ?? \"\");\n setBrowserWorkspaceControlValue(control, nextValue);\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: {\n selector: buildBrowserWorkspaceElementSelector(control),\n value: nextValue,\n },\n };\n }\n case \"focus\": {\n const element = resolveTarget();\n if (!element) {\n throw new Error(\"Target element was not found.\");\n }\n if (typeof (element as HTMLElement).focus === \"function\") {\n (element as HTMLElement).focus();\n }\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: {\n focused: document.activeElement === element,\n selector: buildBrowserWorkspaceElementSelector(element),\n },\n };\n }\n case \"hover\": {\n const element = resolveTarget();\n if (!element) {\n throw new Error(\"Target element was not found.\");\n }\n element.setAttribute(\"data-eliza-hover\", \"true\");\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: {\n hovered: true,\n selector: buildBrowserWorkspaceElementSelector(element),\n },\n };\n }\n case \"keyboardinserttext\":\n case \"keyboardtype\": {\n const active = document.activeElement;\n if (\n !active ||\n !(\n active.tagName === \"INPUT\" ||\n active.tagName === \"TEXTAREA\" ||\n active.tagName === \"SELECT\"\n )\n ) {\n throw new Error(\n \"Eliza browser workspace keyboard text input requires a focused input target.\",\n );\n }\n const control = ensureBrowserWorkspaceFormControlElement(\n active,\n command.subaction === \"keyboardtype\" ? \"type\" : \"keyboardinserttext\",\n );\n const nextValue =\n command.subaction === \"keyboardtype\"\n ? `${control.value ?? \"\"}${command.value ?? \"\"}`\n : (command.value ?? \"\");\n setBrowserWorkspaceControlValue(control, nextValue);\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: {\n selector: buildBrowserWorkspaceElementSelector(control),\n value: control.value,\n },\n };\n }\n case \"keydown\":\n case \"keyup\":\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: {\n key: command.key?.trim() || \"Enter\",\n selector:\n document.activeElement &&\n document.activeElement instanceof Element\n ? buildBrowserWorkspaceElementSelector(document.activeElement)\n : null,\n },\n };\n case \"click\": {\n const element = resolveTarget();\n if (!element) {\n throw new Error(\"Target element was not found.\");\n }\n return activateWebBrowserWorkspaceElement(tab, element, \"click\");\n }\n case \"dblclick\": {\n const element = resolveTarget();\n if (!element) {\n throw new Error(\"Target element was not found.\");\n }\n return activateWebBrowserWorkspaceElement(tab, element, \"dblclick\");\n }\n case \"press\": {\n const key = command.key?.trim() || \"Enter\";\n const element = resolveTarget();\n const form = findClosestBrowserWorkspaceForm(element);\n\n if (key === \"Enter\" && form) {\n await submitWebBrowserWorkspaceForm(tab, form);\n return {\n mode: \"web\",\n subaction: command.subaction,\n tab: cloneWebBrowserWorkspaceTabState(tab),\n value: { key, url: tab.url },\n };\n }\n\n return { mode: \"web\", subaction: command.subaction, value: { key } };\n }\n case \"scroll\": {\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: scrollWebBrowserWorkspaceTarget(\n dom,\n resolveTarget(),\n command.direction ?? \"down\",\n command.pixels ?? 240,\n ),\n };\n }\n case \"scrollinto\": {\n const element = resolveTarget();\n if (!element) {\n throw new Error(\"Target element was not found.\");\n }\n if (typeof (element as HTMLElement).focus === \"function\") {\n (element as HTMLElement).focus();\n }\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: {\n scrolled: true,\n selector: buildBrowserWorkspaceElementSelector(element),\n },\n };\n }\n case \"select\": {\n const element = resolveTarget();\n if (!element) {\n throw new Error(\"Target element was not found.\");\n }\n if (element.tagName !== \"SELECT\") {\n throw new Error(\n \"Eliza browser workspace select requires a select target.\",\n );\n }\n const select = ensureBrowserWorkspaceFormControlElement(\n element,\n \"select\",\n );\n const option = Array.from((select as HTMLSelectElement).options).find(\n (entry) =>\n entry.value === (command.value ?? \"\") ||\n browserWorkspaceTextMatches(\n entry.textContent ?? \"\",\n command.value ?? \"\",\n true,\n ),\n );\n if (!option) {\n throw new Error(\"Select option was not found.\");\n }\n (select as HTMLSelectElement).value = option.value;\n option.selected = true;\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: {\n selector: buildBrowserWorkspaceElementSelector(select),\n value: (select as HTMLSelectElement).value,\n },\n };\n }\n case \"uncheck\": {\n const element = resolveTarget();\n if (!element) {\n throw new Error(\"Target element was not found.\");\n }\n const input = ensureBrowserWorkspaceCheckboxElement(element, \"uncheck\");\n input.checked = false;\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: {\n checked: input.checked,\n selector: buildBrowserWorkspaceElementSelector(input),\n },\n };\n }\n case \"wait\": {\n assertBrowserWorkspaceJsdomScriptNotRequested(command.script, \"wait\");\n if (\n !command.selector &&\n !command.findBy &&\n !command.text &&\n !command.url &&\n !command.script &&\n typeof command.timeoutMs === \"number\" &&\n Number.isFinite(command.timeoutMs)\n ) {\n const waitedMs = Math.max(0, command.timeoutMs);\n await sleep(waitedMs);\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: { waitedMs },\n };\n }\n const timeoutMs =\n typeof command.timeoutMs === \"number\" &&\n Number.isFinite(command.timeoutMs)\n ? Math.max(100, command.timeoutMs)\n : DEFAULT_TIMEOUT_MS;\n const deadline = Date.now() + timeoutMs;\n\n while (Date.now() <= deadline) {\n await ensureLoadedWebBrowserWorkspaceTabDocument(tab);\n const currentDom = ensureBrowserWorkspaceDom(tab);\n const currentDocument = currentDom.window.document;\n\n const matchesSelector = command.selector?.trim()\n ? (() => {\n const found = resolveBrowserWorkspaceElement(\n currentDocument,\n command.selector,\n undefined,\n command,\n );\n if (command.state === \"hidden\") {\n return !found || !isBrowserWorkspaceElementVisible(found);\n }\n return found ? isBrowserWorkspaceElementVisible(found) : false;\n })()\n : false;\n const matchesFind = command.findBy\n ? (() => {\n const found = resolveBrowserWorkspaceFindElement(\n currentDocument,\n command,\n );\n return command.state === \"hidden\" ? !found : Boolean(found);\n })()\n : false;\n const matchesText = command.text?.trim()\n ? normalizeBrowserWorkspaceText(\n currentDocument.body?.textContent,\n ).includes(command.text.trim())\n : false;\n const matchesUrl = command.url?.trim()\n ? tab.url.includes(command.url.trim())\n : false;\n\n if (\n matchesSelector ||\n matchesFind ||\n matchesText ||\n matchesUrl ||\n (!command.selector &&\n !command.findBy &&\n !command.text &&\n !command.url)\n ) {\n return {\n mode: \"web\",\n subaction: command.subaction,\n value: {\n findBy: command.findBy ?? null,\n selector: command.selector ?? null,\n state: command.state ?? null,\n text: command.text ?? null,\n url: tab.url,\n },\n };\n }\n\n await sleep(DEFAULT_WAIT_INTERVAL_MS);\n }\n\n throw new Error(\"Timed out waiting for browser workspace condition.\");\n }\n default:\n throw new Error(\n `Unsupported web browser workspace subaction: ${command.subaction}`,\n );\n }\n });\n}\n"],"mappings":"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","names":["target","baseline","filePath","payload"]}
@@ -15,8 +15,8 @@
15
15
  *
16
16
  * This file re-exports every public symbol so external consumers are unaffected.
17
17
  */
18
- export { BROWSER_WORKSPACE_CONNECTOR_AUTH_STATES } from "./browser-workspace-types.js";
19
18
  export type { AcquireBrowserWorkspaceConnectorSessionRequest, BrowserWorkspaceBridgeConfig, BrowserWorkspaceClipboardAction, BrowserWorkspaceCommand, BrowserWorkspaceCommandResult, BrowserWorkspaceConnectorAuthState, BrowserWorkspaceConnectorCompanionRef, BrowserWorkspaceConnectorSessionHandle, BrowserWorkspaceConnectorSessionKind, BrowserWorkspaceConnectorSessionRef, BrowserWorkspaceConsoleAction, BrowserWorkspaceCookieAction, BrowserWorkspaceDialogAction, BrowserWorkspaceDiffAction, BrowserWorkspaceDomElementSummary, BrowserWorkspaceFindAction, BrowserWorkspaceFindBy, BrowserWorkspaceFrameAction, BrowserWorkspaceGetMode, BrowserWorkspaceMode, BrowserWorkspaceMouseAction, BrowserWorkspaceMouseButton, BrowserWorkspaceNetworkAction, BrowserWorkspaceOperation, BrowserWorkspaceProfilerAction, BrowserWorkspaceScrollDirection, BrowserWorkspaceSetAction, BrowserWorkspaceSnapshot, BrowserWorkspaceStateAction, BrowserWorkspaceStorageAction, BrowserWorkspaceStorageArea, BrowserWorkspaceSubaction, BrowserWorkspaceTab, BrowserWorkspaceTabAction, BrowserWorkspaceTabKind, BrowserWorkspaceTraceAction, BrowserWorkspaceWaitState, BrowserWorkspaceWindowAction, EvaluateBrowserWorkspaceTabRequest, NavigateBrowserWorkspaceTabRequest, OpenBrowserWorkspaceTabRequest, } from "./browser-workspace-types.js";
19
+ export { BROWSER_WORKSPACE_CONNECTOR_AUTH_STATES } from "./browser-workspace-types.js";
20
20
  import type { AcquireBrowserWorkspaceConnectorSessionRequest, BrowserWorkspaceCommand, BrowserWorkspaceCommandResult, BrowserWorkspaceConnectorSessionHandle, BrowserWorkspaceMode, BrowserWorkspaceSnapshot, BrowserWorkspaceTab, EvaluateBrowserWorkspaceTabRequest, NavigateBrowserWorkspaceTabRequest, OpenBrowserWorkspaceTabRequest } from "./browser-workspace-types.js";
21
21
  export { __resetBrowserWorkspaceStateForTests } from "./browser-workspace-state.js";
22
22
  import { getBrowserWorkspaceUnavailableMessage, isBrowserWorkspaceBridgeConfigured, resolveBrowserWorkspaceBridgeConfig } from "./browser-workspace-desktop.js";
@@ -1 +1 @@
1
- {"version":3,"file":"browser-workspace.d.ts","sourceRoot":"","sources":["../../src/workspace/browser-workspace.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"browser-workspace.d.ts","sourceRoot":"","sources":["../../src/workspace/browser-workspace.ts"],"names":[],"mappings":"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"}
@@ -19,13 +19,15 @@ import {
19
19
  import {
20
20
  assertBrowserWorkspaceConnectorSecretsNotExported,
21
21
  assertBrowserWorkspaceUrl,
22
+ assertBrowserWorkspaceUserScriptAllowed,
22
23
  createBrowserWorkspaceNotFoundError,
23
24
  DEFAULT_WEB_PARTITION,
24
25
  inferBrowserWorkspaceTitle,
25
26
  normalizeBrowserWorkspaceCommand,
26
27
  resolveBrowserWorkspaceCommandPartition,
27
28
  resolveConnectorBrowserWorkspacePartition,
28
- sleep
29
+ sleep,
30
+ writeBrowserWorkspaceFile
29
31
  } from "./browser-workspace-helpers.js";
30
32
  import {
31
33
  clearWebBrowserWorkspaceTabElementRefs,
@@ -526,6 +528,12 @@ async function executeBrowserWorkspaceCommand(command, env = process.env) {
526
528
  command
527
529
  );
528
530
  }
531
+ assertBrowserWorkspaceUserScriptAllowed(
532
+ command.script,
533
+ "eval",
534
+ "desktop",
535
+ env
536
+ );
529
537
  const id = await resolveDesktopBrowserWorkspaceTargetTabId(command, env);
530
538
  return {
531
539
  mode: "desktop",
@@ -655,7 +663,6 @@ async function executeBrowserWorkspaceCommand(command, env = process.env) {
655
663
  const payload = { entries: target.entries };
656
664
  const filePath = command.filePath?.trim() || command.outputPath?.trim();
657
665
  if (filePath) {
658
- const { writeBrowserWorkspaceFile } = await import("./browser-workspace-helpers.js");
659
666
  await writeBrowserWorkspaceFile(
660
667
  filePath,
661
668
  JSON.stringify(payload, null, 2)
@@ -719,7 +726,6 @@ async function executeBrowserWorkspaceCommand(command, env = process.env) {
719
726
  );
720
727
  const filePath = command.filePath?.trim() || command.outputPath?.trim();
721
728
  if (filePath) {
722
- const { writeBrowserWorkspaceFile } = await import("./browser-workspace-helpers.js");
723
729
  await writeBrowserWorkspaceFile(
724
730
  filePath,
725
731
  JSON.stringify(payload, null, 2)
@@ -750,7 +756,6 @@ async function executeBrowserWorkspaceCommand(command, env = process.env) {
750
756
  snapshot.title,
751
757
  snapshot.bodyText
752
758
  );
753
- const { writeBrowserWorkspaceFile } = await import("./browser-workspace-helpers.js");
754
759
  const resolved = await writeBrowserWorkspaceFile(filePath, pdf);
755
760
  return {
756
761
  mode: "desktop",