@elizaos/plugin-browser 2.0.0-beta.1 → 2.0.11-beta.7

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
@@ -22,4 +22,11 @@ export declare function writeBrowserWorkspaceFile(filePath: string, contents: st
22
22
  export declare function normalizeBrowserWorkspaceCommand(command: BrowserWorkspaceCommand): BrowserWorkspaceCommand;
23
23
  export declare function resolveBrowserWorkspaceCommandElementRefs(command: BrowserWorkspaceCommand, mode: BrowserWorkspaceMode, tabId: string): BrowserWorkspaceCommand;
24
24
  export declare function buildBrowserWorkspaceCssStringLiteral(value: string): string;
25
+ /** GHSA-mhhr-9ph9-64j7 / elizaOS/eliza#6767 — arbitrary script must not run in Node (JSDOM). */
26
+ export declare const BROWSER_WORKSPACE_JSDOM_SCRIPT_FORBIDDEN = "Browser workspace arbitrary script execution is disabled in the JSDOM (web) backend because it runs in the Node.js agent process via unsafe eval patterns (GHSA-mhhr-9ph9-64j7). Use structured subactions (click, fill, get, wait on selector/url/text) or desktop browser workspace mode instead.";
27
+ export declare const BROWSER_WORKSPACE_USER_SCRIPT_FORBIDDEN = "Browser workspace arbitrary user script is disabled (GHSA-mhhr-9ph9-64j7). Use structured browser workspace subactions instead.";
28
+ export declare function isBrowserWorkspaceUserScriptAllowed(env?: NodeJS.ProcessEnv): boolean;
29
+ export declare function assertBrowserWorkspaceUserScriptAllowed(script: string | undefined, context: "eval" | "wait", mode: BrowserWorkspaceMode, env?: NodeJS.ProcessEnv): void;
30
+ export declare function createBrowserWorkspaceJsdomScriptExecutionError(context: "eval" | "wait"): Error;
31
+ export declare function assertBrowserWorkspaceJsdomScriptNotRequested(script: string | undefined, context: "eval" | "wait"): void;
25
32
  //# sourceMappingURL=browser-workspace-helpers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"browser-workspace-helpers.d.ts","sourceRoot":"","sources":["../../src/workspace/browser-workspace-helpers.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,uBAAuB,EACvB,oBAAoB,EACpB,yBAAyB,EAC1B,MAAM,8BAA8B,CAAC;AAEtC,eAAO,MAAM,kBAAkB,QAAS,CAAC;AACzC,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAC5C,eAAO,MAAM,qBAAqB,0BAA0B,CAAC;AAC7D,eAAO,MAAM,4CAA4C,uBACnC,CAAC;AACvB,eAAO,MAAM,kCAAkC,2DACW,CAAC;AAC3D,eAAO,MAAM,yBAAyB,KAAoC,CAAC;AAE3E,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAM1E;AAED,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAIpE;AAED,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,OAAO,GACb,MAAM,GAAG,SAAS,CASpB;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAoBhE;AAED,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAU9D;AAgCD,wBAAgB,yCAAyC,CACvD,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAChB,MAAM,CAWR;AAED,wBAAgB,oCAAoC,CAClD,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GACnC,OAAO,CAKT;AAED,wBAAgB,uCAAuC,CACrD,OAAO,EAAE,IAAI,CACX,uBAAuB,EACvB,oBAAoB,GAAG,mBAAmB,GAAG,WAAW,CACzD,EACD,iBAAiB,EAAE,MAAM,GACxB,MAAM,CAWR;AAED,wBAAgB,iDAAiD,CAC/D,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACpC,SAAS,EAAE,MAAM,GAChB,IAAI,CAON;AAED,wBAAgB,wCAAwC,CACtD,SAAS,EAAE,yBAAyB,GACnC,MAAM,CAER;AAED,wBAAgB,mCAAmC,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,CAIxE;AAED,wBAAgB,wCAAwC,CACtD,SAAS,EAAE,yBAAyB,GACnC,KAAK,CAIP;AAED,wBAAsB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAErD;AAED,wBAAsB,yBAAyB,CAC7C,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GAAG,UAAU,GAC5B,OAAO,CAAC,MAAM,CAAC,CAKjB;AAED,wBAAgB,gCAAgC,CAC9C,OAAO,EAAE,uBAAuB,GAC/B,uBAAuB,CA2BzB;AAED,wBAAgB,yCAAyC,CACvD,OAAO,EAAE,uBAAuB,EAChC,IAAI,EAAE,oBAAoB,EAC1B,KAAK,EAAE,MAAM,GACZ,uBAAuB,CA0BzB;AAED,wBAAgB,qCAAqC,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE3E"}
1
+ {"version":3,"file":"browser-workspace-helpers.d.ts","sourceRoot":"","sources":["../../src/workspace/browser-workspace-helpers.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,uBAAuB,EACvB,oBAAoB,EACpB,yBAAyB,EAC1B,MAAM,8BAA8B,CAAC;AAEtC,eAAO,MAAM,kBAAkB,QAAS,CAAC;AACzC,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAC5C,eAAO,MAAM,qBAAqB,0BAA0B,CAAC;AAC7D,eAAO,MAAM,4CAA4C,uBACnC,CAAC;AACvB,eAAO,MAAM,kCAAkC,2DACW,CAAC;AAC3D,eAAO,MAAM,yBAAyB,KAAoC,CAAC;AAE3E,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAM1E;AAED,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAIpE;AAED,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,OAAO,GACb,MAAM,GAAG,SAAS,CASpB;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAoBhE;AAED,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAU9D;AAgCD,wBAAgB,yCAAyC,CACvD,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAChB,MAAM,CAWR;AAED,wBAAgB,oCAAoC,CAClD,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GACnC,OAAO,CAKT;AAED,wBAAgB,uCAAuC,CACrD,OAAO,EAAE,IAAI,CACX,uBAAuB,EACvB,oBAAoB,GAAG,mBAAmB,GAAG,WAAW,CACzD,EACD,iBAAiB,EAAE,MAAM,GACxB,MAAM,CAWR;AAED,wBAAgB,iDAAiD,CAC/D,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACpC,SAAS,EAAE,MAAM,GAChB,IAAI,CAON;AAED,wBAAgB,wCAAwC,CACtD,SAAS,EAAE,yBAAyB,GACnC,MAAM,CAER;AAED,wBAAgB,mCAAmC,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,CAIxE;AAED,wBAAgB,wCAAwC,CACtD,SAAS,EAAE,yBAAyB,GACnC,KAAK,CAIP;AAED,wBAAsB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAErD;AAED,wBAAsB,yBAAyB,CAC7C,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GAAG,UAAU,GAC5B,OAAO,CAAC,MAAM,CAAC,CAKjB;AAED,wBAAgB,gCAAgC,CAC9C,OAAO,EAAE,uBAAuB,GAC/B,uBAAuB,CA2BzB;AAED,wBAAgB,yCAAyC,CACvD,OAAO,EAAE,uBAAuB,EAChC,IAAI,EAAE,oBAAoB,EAC1B,KAAK,EAAE,MAAM,GACZ,uBAAuB,CA0BzB;AAED,wBAAgB,qCAAqC,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE3E;AAED,gGAAgG;AAChG,eAAO,MAAM,wCAAwC,wSACkP,CAAC;AAExS,eAAO,MAAM,uCAAuC,oIAC+E,CAAC;AAEpI,wBAAgB,mCAAmC,CACjD,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAKT;AAED,wBAAgB,uCAAuC,CACrD,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,OAAO,EAAE,MAAM,GAAG,MAAM,EACxB,IAAI,EAAE,oBAAoB,EAC1B,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,IAAI,CAgBN;AAED,wBAAgB,+CAA+C,CAC7D,OAAO,EAAE,MAAM,GAAG,MAAM,GACvB,KAAK,CAMP;AAED,wBAAgB,6CAA6C,CAC3D,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,OAAO,EAAE,MAAM,GAAG,MAAM,GACvB,IAAI,CAIN"}
@@ -167,20 +167,57 @@ function resolveBrowserWorkspaceCommandElementRefs(command, mode, tabId) {
167
167
  function buildBrowserWorkspaceCssStringLiteral(value) {
168
168
  return JSON.stringify(value);
169
169
  }
170
+ const BROWSER_WORKSPACE_JSDOM_SCRIPT_FORBIDDEN = "Browser workspace arbitrary script execution is disabled in the JSDOM (web) backend because it runs in the Node.js agent process via unsafe eval patterns (GHSA-mhhr-9ph9-64j7). Use structured subactions (click, fill, get, wait on selector/url/text) or desktop browser workspace mode instead.";
171
+ const BROWSER_WORKSPACE_USER_SCRIPT_FORBIDDEN = "Browser workspace arbitrary user script is disabled (GHSA-mhhr-9ph9-64j7). Use structured browser workspace subactions instead.";
172
+ function isBrowserWorkspaceUserScriptAllowed(env = process.env) {
173
+ const flag = normalizeEnvValue(
174
+ env.ELIZA_BROWSER_WORKSPACE_ALLOW_USER_SCRIPT
175
+ )?.toLowerCase();
176
+ return flag === "1" || flag === "true" || flag === "yes";
177
+ }
178
+ function assertBrowserWorkspaceUserScriptAllowed(script, context, mode, env = process.env) {
179
+ if (!script?.trim()) {
180
+ return;
181
+ }
182
+ if (mode === "web") {
183
+ throw createBrowserWorkspaceJsdomScriptExecutionError(context);
184
+ }
185
+ if (!isBrowserWorkspaceUserScriptAllowed(env)) {
186
+ const suffix = context === "eval" ? "Eval subactions with a user `script` are disabled by default." : "Wait conditions with a user `script` are disabled by default.";
187
+ throw new Error(
188
+ `${BROWSER_WORKSPACE_USER_SCRIPT_FORBIDDEN} ${suffix} Set ELIZA_BROWSER_WORKSPACE_ALLOW_USER_SCRIPT=1 only on trusted single-user hosts.`
189
+ );
190
+ }
191
+ }
192
+ function createBrowserWorkspaceJsdomScriptExecutionError(context) {
193
+ const suffix = context === "eval" ? "Eval subactions are not supported on the web backend." : "Wait conditions with `script` are not supported on the web backend.";
194
+ return new Error(`${BROWSER_WORKSPACE_JSDOM_SCRIPT_FORBIDDEN} ${suffix}`);
195
+ }
196
+ function assertBrowserWorkspaceJsdomScriptNotRequested(script, context) {
197
+ if (script?.trim()) {
198
+ throw createBrowserWorkspaceJsdomScriptExecutionError(context);
199
+ }
200
+ }
170
201
  export {
202
+ BROWSER_WORKSPACE_JSDOM_SCRIPT_FORBIDDEN,
203
+ BROWSER_WORKSPACE_USER_SCRIPT_FORBIDDEN,
171
204
  CONNECTOR_BROWSER_WORKSPACE_PARTITION_PREFIX,
172
205
  DEFAULT_TIMEOUT_MS,
173
206
  DEFAULT_WAIT_INTERVAL_MS,
174
207
  DEFAULT_WEB_PARTITION,
175
208
  DESKTOP_BRIDGE_UNAVAILABLE_MESSAGE,
176
209
  assertBrowserWorkspaceConnectorSecretsNotExported,
210
+ assertBrowserWorkspaceJsdomScriptNotRequested,
177
211
  assertBrowserWorkspaceUrl,
212
+ assertBrowserWorkspaceUserScriptAllowed,
178
213
  browserWorkspacePageFetch,
179
214
  buildBrowserWorkspaceCssStringLiteral,
180
215
  createBrowserWorkspaceCommandTargetError,
181
216
  createBrowserWorkspaceDesktopOnlyMessage,
217
+ createBrowserWorkspaceJsdomScriptExecutionError,
182
218
  createBrowserWorkspaceNotFoundError,
183
219
  inferBrowserWorkspaceTitle,
220
+ isBrowserWorkspaceUserScriptAllowed,
184
221
  isConnectorBrowserWorkspacePartition,
185
222
  normalizeBrowserWorkspaceCommand,
186
223
  normalizeBrowserWorkspaceText,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/workspace/browser-workspace-helpers.ts"],"sourcesContent":["import * as fsp from \"node:fs/promises\";\nimport * as path from \"node:path\";\nimport { resolveBrowserWorkspaceElementRef } from \"./browser-workspace-state.js\";\nimport type {\n BrowserWorkspaceCommand,\n BrowserWorkspaceMode,\n BrowserWorkspaceSubaction,\n} from \"./browser-workspace-types.js\";\n\nexport const DEFAULT_TIMEOUT_MS = 12_000;\nexport const DEFAULT_WAIT_INTERVAL_MS = 120;\nexport const DEFAULT_WEB_PARTITION = \"persist:eliza-browser\";\nexport const CONNECTOR_BROWSER_WORKSPACE_PARTITION_PREFIX =\n \"persist:connector-\";\nexport const DESKTOP_BRIDGE_UNAVAILABLE_MESSAGE =\n \"Eliza browser workspace desktop bridge is unavailable.\";\nexport const browserWorkspacePageFetch = globalThis.fetch.bind(globalThis);\n\nexport function normalizeEnvValue(value: string | undefined): string | null {\n if (typeof value !== \"string\") {\n return null;\n }\n const trimmed = value.trim();\n return trimmed.length > 0 ? trimmed : null;\n}\n\nexport function normalizeBrowserWorkspaceText(value: unknown): string {\n return String(value ?? \"\")\n .replace(/\\s+/g, \" \")\n .trim();\n}\n\nexport function parseBrowserWorkspaceNumberLike(\n value: unknown,\n): number | undefined {\n if (typeof value === \"number\" && Number.isFinite(value)) {\n return value;\n }\n if (typeof value !== \"string\") {\n return undefined;\n }\n const parsed = Number.parseFloat(value.trim());\n return Number.isFinite(parsed) ? parsed : undefined;\n}\n\nexport function assertBrowserWorkspaceUrl(rawUrl: string): string {\n const trimmed = rawUrl.trim();\n if (trimmed === \"about:blank\") {\n return trimmed;\n }\n\n let parsed: URL;\n try {\n parsed = new URL(trimmed);\n } catch {\n throw new Error(`browser workspace rejected invalid URL: ${rawUrl}`);\n }\n\n if (parsed.protocol !== \"http:\" && parsed.protocol !== \"https:\") {\n throw new Error(\n `browser workspace only supports http/https URLs, got ${parsed.protocol}`,\n );\n }\n\n return parsed.toString();\n}\n\nexport function inferBrowserWorkspaceTitle(url: string): string {\n if (url === \"about:blank\") {\n return \"New Tab\";\n }\n\n try {\n return new URL(url).hostname.replace(/^www\\./, \"\") || \"Eliza Browser\";\n } catch {\n return \"Eliza Browser\";\n }\n}\n\nfunction normalizeConnectorBrowserWorkspaceSegment(\n value: string,\n fieldName: string,\n): string {\n const normalized = value\n .trim()\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\")\n .replace(/-{2,}/g, \"-\")\n .slice(0, 64);\n if (!normalized) {\n throw new Error(`Eliza browser connector session requires ${fieldName}.`);\n }\n return normalized;\n}\n\nfunction hashConnectorBrowserWorkspacePartitionKey(\n provider: string,\n accountId: string,\n): string {\n const input = `${provider.trim().toLowerCase()}\\0${accountId.trim().toLowerCase()}`;\n let hash = 0x811c9dc5;\n for (let i = 0; i < input.length; i++) {\n hash ^= input.charCodeAt(i);\n hash = Math.imul(hash, 0x01000193) >>> 0;\n }\n return hash.toString(36).padStart(7, \"0\");\n}\n\nexport function resolveConnectorBrowserWorkspacePartition(\n provider: string,\n accountId: string,\n): string {\n const providerSegment = normalizeConnectorBrowserWorkspaceSegment(\n provider,\n \"provider\",\n );\n const accountSegment = normalizeConnectorBrowserWorkspaceSegment(\n accountId,\n \"accountId\",\n );\n const suffix = hashConnectorBrowserWorkspacePartitionKey(provider, accountId);\n return `${CONNECTOR_BROWSER_WORKSPACE_PARTITION_PREFIX}${providerSegment}-${accountSegment}-${suffix}`;\n}\n\nexport function isConnectorBrowserWorkspacePartition(\n partition: string | null | undefined,\n): boolean {\n return (partition ?? \"\")\n .trim()\n .toLowerCase()\n .startsWith(CONNECTOR_BROWSER_WORKSPACE_PARTITION_PREFIX);\n}\n\nexport function resolveBrowserWorkspaceCommandPartition(\n command: Pick<\n BrowserWorkspaceCommand,\n \"connectorAccountId\" | \"connectorProvider\" | \"partition\"\n >,\n fallbackPartition: string,\n): string {\n const explicitPartition = command.partition?.trim();\n if (explicitPartition) {\n return explicitPartition;\n }\n const provider = command.connectorProvider?.trim();\n const accountId = command.connectorAccountId?.trim();\n if (provider && accountId) {\n return resolveConnectorBrowserWorkspacePartition(provider, accountId);\n }\n return fallbackPartition;\n}\n\nexport function assertBrowserWorkspaceConnectorSecretsNotExported(\n partition: string | null | undefined,\n operation: string,\n): void {\n if (!isConnectorBrowserWorkspacePartition(partition)) {\n return;\n }\n throw new Error(\n `Connector browser sessions do not allow raw cookie, token, storage, or state export (${operation}). Use the returned partition/profile/session handle instead.`,\n );\n}\n\nexport function createBrowserWorkspaceDesktopOnlyMessage(\n subaction: BrowserWorkspaceSubaction,\n): string {\n return `Eliza browser workspace ${subaction} is only available in the desktop app.`;\n}\n\nexport function createBrowserWorkspaceNotFoundError(tabId: string): Error {\n return new Error(\n `Browser workspace request failed (404): Tab ${tabId} was not found.`,\n );\n}\n\nexport function createBrowserWorkspaceCommandTargetError(\n subaction: BrowserWorkspaceSubaction,\n): Error {\n return new Error(\n `Eliza browser workspace ${subaction} requires a current tab. Open or show a tab first, or pass an explicit id.`,\n );\n}\n\nexport async function sleep(ms: number): Promise<void> {\n await new Promise<void>((resolve) => setTimeout(resolve, ms));\n}\n\nexport async function writeBrowserWorkspaceFile(\n filePath: string,\n contents: string | Uint8Array,\n): Promise<string> {\n const resolved = path.resolve(filePath);\n await fsp.mkdir(path.dirname(resolved), { recursive: true });\n await fsp.writeFile(resolved, contents);\n return resolved;\n}\n\nexport function normalizeBrowserWorkspaceCommand(\n command: BrowserWorkspaceCommand,\n): BrowserWorkspaceCommand {\n const raw = command as BrowserWorkspaceCommand & Record<string, unknown>;\n const normalizedSubaction =\n typeof raw.subaction === \"string\"\n ? raw.subaction.trim().toLowerCase()\n : typeof raw.operation === \"string\"\n ? raw.operation.trim().toLowerCase()\n : \"\";\n const subaction =\n normalizedSubaction === \"goto\"\n ? \"navigate\"\n : normalizedSubaction === \"read\"\n ? \"get\"\n : command.subaction;\n const timeoutMs =\n parseBrowserWorkspaceNumberLike(command.timeoutMs) ??\n parseBrowserWorkspaceNumberLike(raw.ms) ??\n parseBrowserWorkspaceNumberLike(raw.milliseconds);\n\n return {\n ...command,\n subaction,\n timeoutMs,\n steps: Array.isArray(command.steps)\n ? command.steps.map((step) => normalizeBrowserWorkspaceCommand(step))\n : command.steps,\n };\n}\n\nexport function resolveBrowserWorkspaceCommandElementRefs(\n command: BrowserWorkspaceCommand,\n mode: BrowserWorkspaceMode,\n tabId: string,\n): BrowserWorkspaceCommand {\n const selector = command.selector?.trim();\n if (!selector) {\n return command;\n }\n\n const match = selector.match(/^(@e\\d+)([\\s\\S]*)$/i);\n if (!match?.[1]) {\n return command;\n }\n\n const resolvedSelector = resolveBrowserWorkspaceElementRef(\n mode,\n tabId,\n match[1],\n );\n if (!resolvedSelector) {\n throw new Error(\n `Unknown browser snapshot element ref ${match[1]}. Run snapshot or inspect again before reusing element refs.`,\n );\n }\n\n return {\n ...command,\n selector: `${resolvedSelector}${match[2] ?? \"\"}`,\n };\n}\n\nexport function buildBrowserWorkspaceCssStringLiteral(value: string): string {\n return JSON.stringify(value);\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/workspace/browser-workspace-helpers.ts"],"sourcesContent":["import * as fsp from \"node:fs/promises\";\nimport * as path from \"node:path\";\nimport { resolveBrowserWorkspaceElementRef } from \"./browser-workspace-state.js\";\nimport type {\n BrowserWorkspaceCommand,\n BrowserWorkspaceMode,\n BrowserWorkspaceSubaction,\n} from \"./browser-workspace-types.js\";\n\nexport const DEFAULT_TIMEOUT_MS = 12_000;\nexport const DEFAULT_WAIT_INTERVAL_MS = 120;\nexport const DEFAULT_WEB_PARTITION = \"persist:eliza-browser\";\nexport const CONNECTOR_BROWSER_WORKSPACE_PARTITION_PREFIX =\n \"persist:connector-\";\nexport const DESKTOP_BRIDGE_UNAVAILABLE_MESSAGE =\n \"Eliza browser workspace desktop bridge is unavailable.\";\nexport const browserWorkspacePageFetch = globalThis.fetch.bind(globalThis);\n\nexport function normalizeEnvValue(value: string | undefined): string | null {\n if (typeof value !== \"string\") {\n return null;\n }\n const trimmed = value.trim();\n return trimmed.length > 0 ? trimmed : null;\n}\n\nexport function normalizeBrowserWorkspaceText(value: unknown): string {\n return String(value ?? \"\")\n .replace(/\\s+/g, \" \")\n .trim();\n}\n\nexport function parseBrowserWorkspaceNumberLike(\n value: unknown,\n): number | undefined {\n if (typeof value === \"number\" && Number.isFinite(value)) {\n return value;\n }\n if (typeof value !== \"string\") {\n return undefined;\n }\n const parsed = Number.parseFloat(value.trim());\n return Number.isFinite(parsed) ? parsed : undefined;\n}\n\nexport function assertBrowserWorkspaceUrl(rawUrl: string): string {\n const trimmed = rawUrl.trim();\n if (trimmed === \"about:blank\") {\n return trimmed;\n }\n\n let parsed: URL;\n try {\n parsed = new URL(trimmed);\n } catch {\n throw new Error(`browser workspace rejected invalid URL: ${rawUrl}`);\n }\n\n if (parsed.protocol !== \"http:\" && parsed.protocol !== \"https:\") {\n throw new Error(\n `browser workspace only supports http/https URLs, got ${parsed.protocol}`,\n );\n }\n\n return parsed.toString();\n}\n\nexport function inferBrowserWorkspaceTitle(url: string): string {\n if (url === \"about:blank\") {\n return \"New Tab\";\n }\n\n try {\n return new URL(url).hostname.replace(/^www\\./, \"\") || \"Eliza Browser\";\n } catch {\n return \"Eliza Browser\";\n }\n}\n\nfunction normalizeConnectorBrowserWorkspaceSegment(\n value: string,\n fieldName: string,\n): string {\n const normalized = value\n .trim()\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\")\n .replace(/-{2,}/g, \"-\")\n .slice(0, 64);\n if (!normalized) {\n throw new Error(`Eliza browser connector session requires ${fieldName}.`);\n }\n return normalized;\n}\n\nfunction hashConnectorBrowserWorkspacePartitionKey(\n provider: string,\n accountId: string,\n): string {\n const input = `${provider.trim().toLowerCase()}\\0${accountId.trim().toLowerCase()}`;\n let hash = 0x811c9dc5;\n for (let i = 0; i < input.length; i++) {\n hash ^= input.charCodeAt(i);\n hash = Math.imul(hash, 0x01000193) >>> 0;\n }\n return hash.toString(36).padStart(7, \"0\");\n}\n\nexport function resolveConnectorBrowserWorkspacePartition(\n provider: string,\n accountId: string,\n): string {\n const providerSegment = normalizeConnectorBrowserWorkspaceSegment(\n provider,\n \"provider\",\n );\n const accountSegment = normalizeConnectorBrowserWorkspaceSegment(\n accountId,\n \"accountId\",\n );\n const suffix = hashConnectorBrowserWorkspacePartitionKey(provider, accountId);\n return `${CONNECTOR_BROWSER_WORKSPACE_PARTITION_PREFIX}${providerSegment}-${accountSegment}-${suffix}`;\n}\n\nexport function isConnectorBrowserWorkspacePartition(\n partition: string | null | undefined,\n): boolean {\n return (partition ?? \"\")\n .trim()\n .toLowerCase()\n .startsWith(CONNECTOR_BROWSER_WORKSPACE_PARTITION_PREFIX);\n}\n\nexport function resolveBrowserWorkspaceCommandPartition(\n command: Pick<\n BrowserWorkspaceCommand,\n \"connectorAccountId\" | \"connectorProvider\" | \"partition\"\n >,\n fallbackPartition: string,\n): string {\n const explicitPartition = command.partition?.trim();\n if (explicitPartition) {\n return explicitPartition;\n }\n const provider = command.connectorProvider?.trim();\n const accountId = command.connectorAccountId?.trim();\n if (provider && accountId) {\n return resolveConnectorBrowserWorkspacePartition(provider, accountId);\n }\n return fallbackPartition;\n}\n\nexport function assertBrowserWorkspaceConnectorSecretsNotExported(\n partition: string | null | undefined,\n operation: string,\n): void {\n if (!isConnectorBrowserWorkspacePartition(partition)) {\n return;\n }\n throw new Error(\n `Connector browser sessions do not allow raw cookie, token, storage, or state export (${operation}). Use the returned partition/profile/session handle instead.`,\n );\n}\n\nexport function createBrowserWorkspaceDesktopOnlyMessage(\n subaction: BrowserWorkspaceSubaction,\n): string {\n return `Eliza browser workspace ${subaction} is only available in the desktop app.`;\n}\n\nexport function createBrowserWorkspaceNotFoundError(tabId: string): Error {\n return new Error(\n `Browser workspace request failed (404): Tab ${tabId} was not found.`,\n );\n}\n\nexport function createBrowserWorkspaceCommandTargetError(\n subaction: BrowserWorkspaceSubaction,\n): Error {\n return new Error(\n `Eliza browser workspace ${subaction} requires a current tab. Open or show a tab first, or pass an explicit id.`,\n );\n}\n\nexport async function sleep(ms: number): Promise<void> {\n await new Promise<void>((resolve) => setTimeout(resolve, ms));\n}\n\nexport async function writeBrowserWorkspaceFile(\n filePath: string,\n contents: string | Uint8Array,\n): Promise<string> {\n const resolved = path.resolve(filePath);\n await fsp.mkdir(path.dirname(resolved), { recursive: true });\n await fsp.writeFile(resolved, contents);\n return resolved;\n}\n\nexport function normalizeBrowserWorkspaceCommand(\n command: BrowserWorkspaceCommand,\n): BrowserWorkspaceCommand {\n const raw = command as BrowserWorkspaceCommand & Record<string, unknown>;\n const normalizedSubaction =\n typeof raw.subaction === \"string\"\n ? raw.subaction.trim().toLowerCase()\n : typeof raw.operation === \"string\"\n ? raw.operation.trim().toLowerCase()\n : \"\";\n const subaction =\n normalizedSubaction === \"goto\"\n ? \"navigate\"\n : normalizedSubaction === \"read\"\n ? \"get\"\n : command.subaction;\n const timeoutMs =\n parseBrowserWorkspaceNumberLike(command.timeoutMs) ??\n parseBrowserWorkspaceNumberLike(raw.ms) ??\n parseBrowserWorkspaceNumberLike(raw.milliseconds);\n\n return {\n ...command,\n subaction,\n timeoutMs,\n steps: Array.isArray(command.steps)\n ? command.steps.map((step) => normalizeBrowserWorkspaceCommand(step))\n : command.steps,\n };\n}\n\nexport function resolveBrowserWorkspaceCommandElementRefs(\n command: BrowserWorkspaceCommand,\n mode: BrowserWorkspaceMode,\n tabId: string,\n): BrowserWorkspaceCommand {\n const selector = command.selector?.trim();\n if (!selector) {\n return command;\n }\n\n const match = selector.match(/^(@e\\d+)([\\s\\S]*)$/i);\n if (!match?.[1]) {\n return command;\n }\n\n const resolvedSelector = resolveBrowserWorkspaceElementRef(\n mode,\n tabId,\n match[1],\n );\n if (!resolvedSelector) {\n throw new Error(\n `Unknown browser snapshot element ref ${match[1]}. Run snapshot or inspect again before reusing element refs.`,\n );\n }\n\n return {\n ...command,\n selector: `${resolvedSelector}${match[2] ?? \"\"}`,\n };\n}\n\nexport function buildBrowserWorkspaceCssStringLiteral(value: string): string {\n return JSON.stringify(value);\n}\n\n/** GHSA-mhhr-9ph9-64j7 / elizaOS/eliza#6767 — arbitrary script must not run in Node (JSDOM). */\nexport const BROWSER_WORKSPACE_JSDOM_SCRIPT_FORBIDDEN =\n \"Browser workspace arbitrary script execution is disabled in the JSDOM (web) backend because it runs in the Node.js agent process via unsafe eval patterns (GHSA-mhhr-9ph9-64j7). Use structured subactions (click, fill, get, wait on selector/url/text) or desktop browser workspace mode instead.\";\n\nexport const BROWSER_WORKSPACE_USER_SCRIPT_FORBIDDEN =\n \"Browser workspace arbitrary user script is disabled (GHSA-mhhr-9ph9-64j7). Use structured browser workspace subactions instead.\";\n\nexport function isBrowserWorkspaceUserScriptAllowed(\n env: NodeJS.ProcessEnv = process.env,\n): boolean {\n const flag = normalizeEnvValue(\n env.ELIZA_BROWSER_WORKSPACE_ALLOW_USER_SCRIPT,\n )?.toLowerCase();\n return flag === \"1\" || flag === \"true\" || flag === \"yes\";\n}\n\nexport function assertBrowserWorkspaceUserScriptAllowed(\n script: string | undefined,\n context: \"eval\" | \"wait\",\n mode: BrowserWorkspaceMode,\n env: NodeJS.ProcessEnv = process.env,\n): void {\n if (!script?.trim()) {\n return;\n }\n if (mode === \"web\") {\n throw createBrowserWorkspaceJsdomScriptExecutionError(context);\n }\n if (!isBrowserWorkspaceUserScriptAllowed(env)) {\n const suffix =\n context === \"eval\"\n ? \"Eval subactions with a user `script` are disabled by default.\"\n : \"Wait conditions with a user `script` are disabled by default.\";\n throw new Error(\n `${BROWSER_WORKSPACE_USER_SCRIPT_FORBIDDEN} ${suffix} Set ELIZA_BROWSER_WORKSPACE_ALLOW_USER_SCRIPT=1 only on trusted single-user hosts.`,\n );\n }\n}\n\nexport function createBrowserWorkspaceJsdomScriptExecutionError(\n context: \"eval\" | \"wait\",\n): Error {\n const suffix =\n context === \"eval\"\n ? \"Eval subactions are not supported on the web backend.\"\n : \"Wait conditions with `script` are not supported on the web backend.\";\n return new Error(`${BROWSER_WORKSPACE_JSDOM_SCRIPT_FORBIDDEN} ${suffix}`);\n}\n\nexport function assertBrowserWorkspaceJsdomScriptNotRequested(\n script: string | undefined,\n context: \"eval\" | \"wait\",\n): void {\n if (script?.trim()) {\n throw createBrowserWorkspaceJsdomScriptExecutionError(context);\n }\n}\n"],"mappings":"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","names":[]}
@@ -3,5 +3,5 @@ export declare function browserWorkspacePatternMatches(pattern: string, value: s
3
3
  export declare function normalizeBrowserWorkspaceHeaders(headers: Record<string, string> | undefined): Record<string, string>;
4
4
  export declare function findBrowserWorkspaceNetworkRoute(state: BrowserWorkspaceRuntimeState, url: string): BrowserWorkspaceNetworkRoute | null;
5
5
  export declare function recordBrowserWorkspaceNetworkRequest(state: BrowserWorkspaceRuntimeState, request: Omit<BrowserWorkspaceNetworkRequestRecord, "id" | "timestamp">): BrowserWorkspaceNetworkRequestRecord;
6
- export declare function fetchBrowserWorkspaceTrackedResponse(state: BrowserWorkspaceRuntimeState, url: string, init: RequestInit, resourceType: string): Promise<Response>;
6
+ export declare function fetchBrowserWorkspaceTrackedResponse(state: BrowserWorkspaceRuntimeState, url: string, init: RequestInit | undefined, resourceType: string): Promise<Response>;
7
7
  //# sourceMappingURL=browser-workspace-network.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"browser-workspace-network.d.ts","sourceRoot":"","sources":["../../src/workspace/browser-workspace-network.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,oCAAoC,EACpC,4BAA4B,EAC5B,4BAA4B,EAC7B,MAAM,8BAA8B,CAAC;AAEtC,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,GACZ,OAAO,CAwBT;AAED,wBAAgB,gCAAgC,CAC9C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,GAC1C,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAYxB;AAED,wBAAgB,gCAAgC,CAC9C,KAAK,EAAE,4BAA4B,EACnC,GAAG,EAAE,MAAM,GACV,4BAA4B,GAAG,IAAI,CAOrC;AAED,wBAAgB,oCAAoC,CAClD,KAAK,EAAE,4BAA4B,EACnC,OAAO,EAAE,IAAI,CAAC,oCAAoC,EAAE,IAAI,GAAG,WAAW,CAAC,GACtE,oCAAoC,CAWtC;AAED,wBAAsB,oCAAoC,CACxD,KAAK,EAAE,4BAA4B,EACnC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,WAAgB,EACtB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,QAAQ,CAAC,CA8FnB"}
1
+ {"version":3,"file":"browser-workspace-network.d.ts","sourceRoot":"","sources":["../../src/workspace/browser-workspace-network.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,oCAAoC,EACpC,4BAA4B,EAC5B,4BAA4B,EAC7B,MAAM,8BAA8B,CAAC;AAEtC,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,GACZ,OAAO,CAwBT;AAED,wBAAgB,gCAAgC,CAC9C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,GAC1C,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAYxB;AAED,wBAAgB,gCAAgC,CAC9C,KAAK,EAAE,4BAA4B,EACnC,GAAG,EAAE,MAAM,GACV,4BAA4B,GAAG,IAAI,CAOrC;AAED,wBAAgB,oCAAoC,CAClD,KAAK,EAAE,4BAA4B,EACnC,OAAO,EAAE,IAAI,CAAC,oCAAoC,EAAE,IAAI,GAAG,WAAW,CAAC,GACtE,oCAAoC,CAWtC;AAED,wBAAsB,oCAAoC,CACxD,KAAK,EAAE,4BAA4B,EACnC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,WAAW,YAAK,EACtB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,QAAQ,CAAC,CA8FnB"}
@@ -51,6 +51,21 @@ export interface BrowserWorkspaceSnapshot {
51
51
  mode: BrowserWorkspaceMode;
52
52
  tabs: BrowserWorkspaceTab[];
53
53
  }
54
+ export type BrowserWorkspaceEventType = "open" | "navigate" | "show" | "hide" | "close" | "eval.start" | "eval.end" | "eval.error" | "snapshot.success" | "snapshot.miss";
55
+ export interface BrowserWorkspaceEvent {
56
+ seq: number;
57
+ timestamp: string;
58
+ type: BrowserWorkspaceEventType;
59
+ tabId: string | null;
60
+ url?: string;
61
+ title?: string;
62
+ payload?: Record<string, unknown>;
63
+ }
64
+ export interface BrowserWorkspaceEventLogSnapshot {
65
+ events: BrowserWorkspaceEvent[];
66
+ latestSequence: number;
67
+ limit: number;
68
+ }
54
69
  export interface BrowserWorkspaceBridgeConfig {
55
70
  baseUrl: string;
56
71
  token: string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"browser-workspace-types.d.ts","sourceRoot":"","sources":["../../src/workspace/browser-workspace-types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"browser-workspace-types.d.ts","sourceRoot":"","sources":["../../src/workspace/browser-workspace-types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/workspace/browser-workspace-types.ts"],"sourcesContent":["/// <reference path=\"../ambient-jsdom.d.ts\" />\nimport type { JSDOM } from \"jsdom\";\n\nexport type BrowserWorkspaceMode = \"cloud\" | \"desktop\" | \"web\";\n\nexport type BrowserWorkspaceTabKind = \"internal\" | \"standard\";\n\nexport const BROWSER_WORKSPACE_CONNECTOR_AUTH_STATES = [\n \"unknown\",\n \"ready\",\n \"auth_pending\",\n \"needs_reauth\",\n \"manual_handoff\",\n] as const;\nexport type BrowserWorkspaceConnectorAuthState =\n (typeof BROWSER_WORKSPACE_CONNECTOR_AUTH_STATES)[number];\n\nexport type BrowserWorkspaceConnectorSessionKind =\n | \"internal-browser\"\n | \"browser-bridge-companion\";\n\nexport type BrowserWorkspaceOperation =\n | \"list\"\n | \"open\"\n | \"navigate\"\n | \"show\"\n | \"hide\"\n | \"close\"\n | \"eval\"\n | \"screenshot\";\n\nexport type BrowserWorkspaceSubaction =\n | BrowserWorkspaceOperation\n | \"back\"\n | \"batch\"\n | \"check\"\n | \"clipboard\"\n | \"click\"\n | \"fill\"\n | \"find\"\n | \"focus\"\n | \"forward\"\n | \"frame\"\n | \"get\"\n | \"hover\"\n | \"inspect\"\n | \"keydown\"\n | \"keyup\"\n | \"keyboardinserttext\"\n | \"keyboardtype\"\n | \"console\"\n | \"cookies\"\n | \"diff\"\n | \"dialog\"\n | \"press\"\n | \"drag\"\n | \"errors\"\n | \"highlight\"\n | \"mouse\"\n | \"network\"\n | \"pdf\"\n | \"profiler\"\n | \"reload\"\n | \"scroll\"\n | \"scrollinto\"\n | \"select\"\n | \"set\"\n | \"snapshot\"\n | \"state\"\n | \"storage\"\n | \"tab\"\n | \"trace\"\n | \"type\"\n | \"dblclick\"\n | \"upload\"\n | \"uncheck\"\n | \"wait\"\n | \"window\"\n // Watch-mode subactions: visible cursor + faithful pointer/keyboard events.\n // Implemented in createDesktopBrowserWorkspaceCommandScript via the in-tab\n // window.__elizaTabKit installed by BROWSER_TAB_PRELOAD_SCRIPT.\n | \"realistic-click\"\n | \"realistic-fill\"\n | \"realistic-type\"\n | \"realistic-press\"\n | \"realistic-upload\"\n | \"cursor-move\"\n | \"cursor-hide\";\n\nexport type BrowserWorkspaceGetMode =\n | \"attr\"\n | \"box\"\n | \"checked\"\n | \"count\"\n | \"enabled\"\n | \"html\"\n | \"styles\"\n | \"text\"\n | \"title\"\n | \"url\"\n | \"value\"\n | \"visible\";\n\nexport type BrowserWorkspaceFindBy =\n | \"alt\"\n | \"first\"\n | \"label\"\n | \"last\"\n | \"nth\"\n | \"placeholder\"\n | \"role\"\n | \"testid\"\n | \"text\"\n | \"title\";\n\nexport type BrowserWorkspaceFindAction =\n | \"check\"\n | \"click\"\n | \"fill\"\n | \"focus\"\n | \"hover\"\n | \"text\"\n | \"type\"\n | \"uncheck\";\n\nexport type BrowserWorkspaceWaitState = \"hidden\" | \"visible\";\n\nexport type BrowserWorkspaceScrollDirection = \"down\" | \"left\" | \"right\" | \"up\";\n\nexport type BrowserWorkspaceClipboardAction =\n | \"copy\"\n | \"paste\"\n | \"read\"\n | \"write\";\n\nexport type BrowserWorkspaceMouseAction = \"down\" | \"move\" | \"up\" | \"wheel\";\n\nexport type BrowserWorkspaceMouseButton = \"left\" | \"middle\" | \"right\";\n\nexport type BrowserWorkspaceSetAction =\n | \"credentials\"\n | \"device\"\n | \"geo\"\n | \"headers\"\n | \"media\"\n | \"offline\"\n | \"viewport\";\n\nexport type BrowserWorkspaceCookieAction = \"clear\" | \"get\" | \"set\";\n\nexport type BrowserWorkspaceStorageArea = \"local\" | \"session\";\n\nexport type BrowserWorkspaceStorageAction = \"clear\" | \"get\" | \"set\";\n\nexport type BrowserWorkspaceNetworkAction =\n | \"harstart\"\n | \"harstop\"\n | \"request\"\n | \"requests\"\n | \"route\"\n | \"unroute\";\n\nexport type BrowserWorkspaceDialogAction = \"accept\" | \"dismiss\" | \"status\";\n\nexport type BrowserWorkspaceDiffAction = \"screenshot\" | \"snapshot\" | \"url\";\n\nexport type BrowserWorkspaceTraceAction = \"start\" | \"stop\";\n\nexport type BrowserWorkspaceProfilerAction = \"start\" | \"stop\";\n\nexport type BrowserWorkspaceStateAction = \"load\" | \"save\";\n\nexport type BrowserWorkspaceFrameAction = \"main\" | \"select\";\n\nexport type BrowserWorkspaceTabAction = \"close\" | \"list\" | \"new\" | \"switch\";\n\nexport type BrowserWorkspaceWindowAction = \"new\";\n\nexport type BrowserWorkspaceConsoleAction = \"clear\" | \"list\";\n\nexport interface BrowserWorkspaceTab {\n id: string;\n title: string;\n url: string;\n partition: string;\n kind?: BrowserWorkspaceTabKind;\n visible: boolean;\n createdAt: string;\n updatedAt: string;\n lastFocusedAt: string | null;\n /** Remote/cloud-managed providers expose a cached live-view image URL. */\n liveViewUrl?: string | null;\n /** Interactive live view (rfb/WebSocket stream) when the provider supports it. */\n interactiveLiveViewUrl?: string | null;\n /** Provider identifier when the tab is backed by a remote browser (e.g. \"browserbase\"). */\n provider?: string | null;\n /** Provider-specific status string for remote tabs (\"starting\", \"ready\", \"ended\"). */\n status?: string | null;\n}\n\nexport interface BrowserWorkspaceSnapshot {\n mode: BrowserWorkspaceMode;\n tabs: BrowserWorkspaceTab[];\n}\n\nexport interface BrowserWorkspaceBridgeConfig {\n baseUrl: string;\n token: string | null;\n}\n\nexport interface BrowserWorkspaceConnectorCompanionRef {\n browser?: string | null;\n companionId?: string | null;\n profileId?: string | null;\n profileLabel?: string | null;\n}\n\nexport interface AcquireBrowserWorkspaceConnectorSessionRequest {\n provider: string;\n accountId: string;\n url?: string;\n title?: string;\n show?: boolean;\n reuse?: boolean;\n authState?: BrowserWorkspaceConnectorAuthState;\n manualHandoffReason?: string | null;\n companion?: BrowserWorkspaceConnectorCompanionRef | null;\n}\n\nexport interface BrowserWorkspaceConnectorSessionRef {\n kind: BrowserWorkspaceConnectorSessionKind;\n handleId: string;\n partition: string | null;\n tabId: string | null;\n browser: string | null;\n companionId: string | null;\n profileId: string | null;\n profileLabel: string | null;\n}\n\nexport interface BrowserWorkspaceConnectorSessionHandle {\n provider: string;\n accountId: string;\n authState: BrowserWorkspaceConnectorAuthState;\n requiresManualHandoff: boolean;\n sessionRef: BrowserWorkspaceConnectorSessionRef;\n partition: string | null;\n tabId: string | null;\n companionId: string | null;\n browser: string | null;\n profileId: string | null;\n profileLabel: string | null;\n created: boolean;\n message: string | null;\n}\n\nexport interface OpenBrowserWorkspaceTabRequest {\n url?: string;\n title?: string;\n show?: boolean;\n partition?: string;\n connectorProvider?: string;\n connectorAccountId?: string;\n kind?: BrowserWorkspaceTabKind;\n width?: number;\n height?: number;\n}\n\nexport interface NavigateBrowserWorkspaceTabRequest {\n id: string;\n url: string;\n partition?: string;\n}\n\nexport interface EvaluateBrowserWorkspaceTabRequest {\n id: string;\n script: string;\n partition?: string;\n}\n\nexport interface BrowserWorkspaceDomElementSummary {\n ref?: string;\n selector: string;\n tag: string;\n text: string;\n type: string | null;\n name: string | null;\n href: string | null;\n value: string | null;\n}\n\nexport interface BrowserWorkspaceCommand {\n subaction: BrowserWorkspaceSubaction;\n operation?: BrowserWorkspaceSubaction | \"goto\" | \"read\";\n action?: BrowserWorkspaceFindAction;\n baselinePath?: string;\n button?: BrowserWorkspaceMouseButton;\n clipboardAction?: BrowserWorkspaceClipboardAction;\n compact?: boolean;\n consoleAction?: BrowserWorkspaceConsoleAction;\n cookieAction?: BrowserWorkspaceCookieAction;\n deltaX?: number;\n deltaY?: number;\n device?: string;\n dialogAction?: BrowserWorkspaceDialogAction;\n diffAction?: BrowserWorkspaceDiffAction;\n domain?: string;\n id?: string;\n entryKey?: string;\n filePath?: string;\n filter?: string;\n files?: string[];\n frameAction?: BrowserWorkspaceFrameAction;\n fullPage?: boolean;\n headers?: Record<string, string>;\n height?: number;\n url?: string;\n secondaryUrl?: string;\n title?: string;\n script?: string;\n show?: boolean;\n partition?: string;\n connectorProvider?: string;\n connectorAccountId?: string;\n selector?: string;\n text?: string;\n value?: string;\n attribute?: string;\n direction?: BrowserWorkspaceScrollDirection;\n exact?: boolean;\n findBy?: BrowserWorkspaceFindBy;\n index?: number;\n key?: string;\n latitude?: number;\n longitude?: number;\n media?: \"dark\" | \"light\";\n method?: string;\n mouseAction?: BrowserWorkspaceMouseAction;\n networkAction?: BrowserWorkspaceNetworkAction;\n offline?: boolean;\n outputPath?: string;\n getMode?: BrowserWorkspaceGetMode;\n name?: string;\n pixels?: number;\n profilerAction?: BrowserWorkspaceProfilerAction;\n promptText?: string;\n requestId?: string;\n responseBody?: string;\n responseHeaders?: Record<string, string>;\n responseStatus?: number;\n role?: string;\n scale?: number;\n setAction?: BrowserWorkspaceSetAction;\n state?: BrowserWorkspaceWaitState;\n stateAction?: BrowserWorkspaceStateAction;\n status?: string;\n storageAction?: BrowserWorkspaceStorageAction;\n storageArea?: BrowserWorkspaceStorageArea;\n tabAction?: BrowserWorkspaceTabAction;\n timeoutMs?: number;\n traceAction?: BrowserWorkspaceTraceAction;\n windowAction?: BrowserWorkspaceWindowAction;\n width?: number;\n x?: number;\n y?: number;\n username?: string;\n password?: string;\n ms?: number;\n milliseconds?: number;\n steps?: BrowserWorkspaceCommand[];\n /** Cursor animation duration (ms) for realistic-* and cursor-* subactions. */\n cursorDurationMs?: number;\n /** Per-character delay for realistic-type / realistic-fill (ms). */\n perCharDelayMs?: number;\n /** Replace existing input value when filling (vs append). */\n replace?: boolean;\n}\n\nexport interface BrowserWorkspaceCommandResult {\n mode: BrowserWorkspaceMode;\n subaction: BrowserWorkspaceSubaction;\n tab?: BrowserWorkspaceTab;\n tabs?: BrowserWorkspaceTab[];\n closed?: boolean;\n value?: unknown;\n elements?: BrowserWorkspaceDomElementSummary[];\n snapshot?: { data: string };\n steps?: BrowserWorkspaceCommandResult[];\n}\n\nexport interface BrowserWorkspaceConsoleEntry {\n level: \"error\" | \"info\" | \"log\" | \"warn\";\n message: string;\n timestamp: string;\n}\n\nexport interface BrowserWorkspaceErrorEntry {\n message: string;\n stack: string | null;\n timestamp: string;\n}\n\nexport interface BrowserWorkspaceDialogState {\n defaultValue: string | null;\n message: string;\n open: boolean;\n type: \"alert\" | \"beforeunload\" | \"confirm\" | \"prompt\";\n}\n\nexport interface BrowserWorkspaceMouseState {\n buttons: BrowserWorkspaceMouseButton[];\n x: number;\n y: number;\n}\n\nexport interface BrowserWorkspaceSettingsState {\n credentials: { password: string; username: string } | null;\n device: string | null;\n geo: { latitude: number; longitude: number } | null;\n headers: Record<string, string>;\n media: \"dark\" | \"light\" | null;\n offline: boolean;\n viewport: { height: number; scale: number; width: number } | null;\n}\n\nexport interface BrowserWorkspaceNetworkRoute {\n abort: boolean;\n body: string | null;\n headers: Record<string, string>;\n pattern: string;\n status: number | null;\n}\n\nexport interface BrowserWorkspaceNetworkRequestRecord {\n id: string;\n matchedRoute: string | null;\n method: string;\n resourceType: string;\n responseBody: string | null;\n responseHeaders: Record<string, string>;\n status: number | null;\n timestamp: string;\n url: string;\n}\n\nexport interface BrowserWorkspaceTraceRecord {\n active: boolean;\n entries: Array<Record<string, unknown>>;\n}\n\nexport interface BrowserWorkspaceProfilerRecord {\n active: boolean;\n entries: Array<Record<string, unknown>>;\n}\n\nexport interface BrowserWorkspaceHarRecord {\n active: boolean;\n entries: BrowserWorkspaceNetworkRequestRecord[];\n startedAt: string | null;\n}\n\nexport interface BrowserWorkspaceSnapshotRecord {\n bodyText: string;\n title: string;\n url: string;\n}\n\nexport interface BrowserWorkspaceRuntimeState {\n consoleEntries: BrowserWorkspaceConsoleEntry[];\n currentFrame: string | null;\n dialog: BrowserWorkspaceDialogState | null;\n errors: BrowserWorkspaceErrorEntry[];\n frameDoms: Map<string, JSDOM>;\n highlightedSelector: string | null;\n lastScreenshotData: string | null;\n lastSnapshot: BrowserWorkspaceSnapshotRecord | null;\n mouse: BrowserWorkspaceMouseState;\n networkHar: BrowserWorkspaceHarRecord;\n networkNextRequestId: number;\n networkRequests: BrowserWorkspaceNetworkRequestRecord[];\n networkRoutes: BrowserWorkspaceNetworkRoute[];\n settings: BrowserWorkspaceSettingsState;\n trace: BrowserWorkspaceTraceRecord;\n profiler: BrowserWorkspaceProfilerRecord;\n}\n\nexport interface WebBrowserWorkspaceTabState extends BrowserWorkspaceTab {\n dom: JSDOM | null;\n history: string[];\n historyIndex: number;\n loadedUrl: string | null;\n}\n"],"mappings":"AAOO,MAAM,0CAA0C;AAAA,EACrD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;","names":[]}
1
+ {"version":3,"sources":["../../src/workspace/browser-workspace-types.ts"],"sourcesContent":["import type { JSDOM } from \"jsdom\";\n\nexport type BrowserWorkspaceMode = \"cloud\" | \"desktop\" | \"web\";\n\nexport type BrowserWorkspaceTabKind = \"internal\" | \"standard\";\n\nexport const BROWSER_WORKSPACE_CONNECTOR_AUTH_STATES = [\n \"unknown\",\n \"ready\",\n \"auth_pending\",\n \"needs_reauth\",\n \"manual_handoff\",\n] as const;\nexport type BrowserWorkspaceConnectorAuthState =\n (typeof BROWSER_WORKSPACE_CONNECTOR_AUTH_STATES)[number];\n\nexport type BrowserWorkspaceConnectorSessionKind =\n | \"internal-browser\"\n | \"browser-bridge-companion\";\n\nexport type BrowserWorkspaceOperation =\n | \"list\"\n | \"open\"\n | \"navigate\"\n | \"show\"\n | \"hide\"\n | \"close\"\n | \"eval\"\n | \"screenshot\";\n\nexport type BrowserWorkspaceSubaction =\n | BrowserWorkspaceOperation\n | \"back\"\n | \"batch\"\n | \"check\"\n | \"clipboard\"\n | \"click\"\n | \"fill\"\n | \"find\"\n | \"focus\"\n | \"forward\"\n | \"frame\"\n | \"get\"\n | \"hover\"\n | \"inspect\"\n | \"keydown\"\n | \"keyup\"\n | \"keyboardinserttext\"\n | \"keyboardtype\"\n | \"console\"\n | \"cookies\"\n | \"diff\"\n | \"dialog\"\n | \"press\"\n | \"drag\"\n | \"errors\"\n | \"highlight\"\n | \"mouse\"\n | \"network\"\n | \"pdf\"\n | \"profiler\"\n | \"reload\"\n | \"scroll\"\n | \"scrollinto\"\n | \"select\"\n | \"set\"\n | \"snapshot\"\n | \"state\"\n | \"storage\"\n | \"tab\"\n | \"trace\"\n | \"type\"\n | \"dblclick\"\n | \"upload\"\n | \"uncheck\"\n | \"wait\"\n | \"window\"\n // Watch-mode subactions: visible cursor + faithful pointer/keyboard events.\n // Implemented in createDesktopBrowserWorkspaceCommandScript via the in-tab\n // window.__elizaTabKit installed by BROWSER_TAB_PRELOAD_SCRIPT.\n | \"realistic-click\"\n | \"realistic-fill\"\n | \"realistic-type\"\n | \"realistic-press\"\n | \"realistic-upload\"\n | \"cursor-move\"\n | \"cursor-hide\";\n\nexport type BrowserWorkspaceGetMode =\n | \"attr\"\n | \"box\"\n | \"checked\"\n | \"count\"\n | \"enabled\"\n | \"html\"\n | \"styles\"\n | \"text\"\n | \"title\"\n | \"url\"\n | \"value\"\n | \"visible\";\n\nexport type BrowserWorkspaceFindBy =\n | \"alt\"\n | \"first\"\n | \"label\"\n | \"last\"\n | \"nth\"\n | \"placeholder\"\n | \"role\"\n | \"testid\"\n | \"text\"\n | \"title\";\n\nexport type BrowserWorkspaceFindAction =\n | \"check\"\n | \"click\"\n | \"fill\"\n | \"focus\"\n | \"hover\"\n | \"text\"\n | \"type\"\n | \"uncheck\";\n\nexport type BrowserWorkspaceWaitState = \"hidden\" | \"visible\";\n\nexport type BrowserWorkspaceScrollDirection = \"down\" | \"left\" | \"right\" | \"up\";\n\nexport type BrowserWorkspaceClipboardAction =\n | \"copy\"\n | \"paste\"\n | \"read\"\n | \"write\";\n\nexport type BrowserWorkspaceMouseAction = \"down\" | \"move\" | \"up\" | \"wheel\";\n\nexport type BrowserWorkspaceMouseButton = \"left\" | \"middle\" | \"right\";\n\nexport type BrowserWorkspaceSetAction =\n | \"credentials\"\n | \"device\"\n | \"geo\"\n | \"headers\"\n | \"media\"\n | \"offline\"\n | \"viewport\";\n\nexport type BrowserWorkspaceCookieAction = \"clear\" | \"get\" | \"set\";\n\nexport type BrowserWorkspaceStorageArea = \"local\" | \"session\";\n\nexport type BrowserWorkspaceStorageAction = \"clear\" | \"get\" | \"set\";\n\nexport type BrowserWorkspaceNetworkAction =\n | \"harstart\"\n | \"harstop\"\n | \"request\"\n | \"requests\"\n | \"route\"\n | \"unroute\";\n\nexport type BrowserWorkspaceDialogAction = \"accept\" | \"dismiss\" | \"status\";\n\nexport type BrowserWorkspaceDiffAction = \"screenshot\" | \"snapshot\" | \"url\";\n\nexport type BrowserWorkspaceTraceAction = \"start\" | \"stop\";\n\nexport type BrowserWorkspaceProfilerAction = \"start\" | \"stop\";\n\nexport type BrowserWorkspaceStateAction = \"load\" | \"save\";\n\nexport type BrowserWorkspaceFrameAction = \"main\" | \"select\";\n\nexport type BrowserWorkspaceTabAction = \"close\" | \"list\" | \"new\" | \"switch\";\n\nexport type BrowserWorkspaceWindowAction = \"new\";\n\nexport type BrowserWorkspaceConsoleAction = \"clear\" | \"list\";\n\nexport interface BrowserWorkspaceTab {\n id: string;\n title: string;\n url: string;\n partition: string;\n kind?: BrowserWorkspaceTabKind;\n visible: boolean;\n createdAt: string;\n updatedAt: string;\n lastFocusedAt: string | null;\n /** Remote/cloud-managed providers expose a cached live-view image URL. */\n liveViewUrl?: string | null;\n /** Interactive live view (rfb/WebSocket stream) when the provider supports it. */\n interactiveLiveViewUrl?: string | null;\n /** Provider identifier when the tab is backed by a remote browser (e.g. \"browserbase\"). */\n provider?: string | null;\n /** Provider-specific status string for remote tabs (\"starting\", \"ready\", \"ended\"). */\n status?: string | null;\n}\n\nexport interface BrowserWorkspaceSnapshot {\n mode: BrowserWorkspaceMode;\n tabs: BrowserWorkspaceTab[];\n}\n\nexport type BrowserWorkspaceEventType =\n | \"open\"\n | \"navigate\"\n | \"show\"\n | \"hide\"\n | \"close\"\n | \"eval.start\"\n | \"eval.end\"\n | \"eval.error\"\n | \"snapshot.success\"\n | \"snapshot.miss\";\n\nexport interface BrowserWorkspaceEvent {\n seq: number;\n timestamp: string;\n type: BrowserWorkspaceEventType;\n tabId: string | null;\n url?: string;\n title?: string;\n payload?: Record<string, unknown>;\n}\n\nexport interface BrowserWorkspaceEventLogSnapshot {\n events: BrowserWorkspaceEvent[];\n latestSequence: number;\n limit: number;\n}\n\nexport interface BrowserWorkspaceBridgeConfig {\n baseUrl: string;\n token: string | null;\n}\n\nexport interface BrowserWorkspaceConnectorCompanionRef {\n browser?: string | null;\n companionId?: string | null;\n profileId?: string | null;\n profileLabel?: string | null;\n}\n\nexport interface AcquireBrowserWorkspaceConnectorSessionRequest {\n provider: string;\n accountId: string;\n url?: string;\n title?: string;\n show?: boolean;\n reuse?: boolean;\n authState?: BrowserWorkspaceConnectorAuthState;\n manualHandoffReason?: string | null;\n companion?: BrowserWorkspaceConnectorCompanionRef | null;\n}\n\nexport interface BrowserWorkspaceConnectorSessionRef {\n kind: BrowserWorkspaceConnectorSessionKind;\n handleId: string;\n partition: string | null;\n tabId: string | null;\n browser: string | null;\n companionId: string | null;\n profileId: string | null;\n profileLabel: string | null;\n}\n\nexport interface BrowserWorkspaceConnectorSessionHandle {\n provider: string;\n accountId: string;\n authState: BrowserWorkspaceConnectorAuthState;\n requiresManualHandoff: boolean;\n sessionRef: BrowserWorkspaceConnectorSessionRef;\n partition: string | null;\n tabId: string | null;\n companionId: string | null;\n browser: string | null;\n profileId: string | null;\n profileLabel: string | null;\n created: boolean;\n message: string | null;\n}\n\nexport interface OpenBrowserWorkspaceTabRequest {\n url?: string;\n title?: string;\n show?: boolean;\n partition?: string;\n connectorProvider?: string;\n connectorAccountId?: string;\n kind?: BrowserWorkspaceTabKind;\n width?: number;\n height?: number;\n}\n\nexport interface NavigateBrowserWorkspaceTabRequest {\n id: string;\n url: string;\n partition?: string;\n}\n\nexport interface EvaluateBrowserWorkspaceTabRequest {\n id: string;\n script: string;\n partition?: string;\n}\n\nexport interface BrowserWorkspaceDomElementSummary {\n ref?: string;\n selector: string;\n tag: string;\n text: string;\n type: string | null;\n name: string | null;\n href: string | null;\n value: string | null;\n}\n\nexport interface BrowserWorkspaceCommand {\n subaction: BrowserWorkspaceSubaction;\n operation?: BrowserWorkspaceSubaction | \"goto\" | \"read\";\n action?: BrowserWorkspaceFindAction;\n baselinePath?: string;\n button?: BrowserWorkspaceMouseButton;\n clipboardAction?: BrowserWorkspaceClipboardAction;\n compact?: boolean;\n consoleAction?: BrowserWorkspaceConsoleAction;\n cookieAction?: BrowserWorkspaceCookieAction;\n deltaX?: number;\n deltaY?: number;\n device?: string;\n dialogAction?: BrowserWorkspaceDialogAction;\n diffAction?: BrowserWorkspaceDiffAction;\n domain?: string;\n id?: string;\n entryKey?: string;\n filePath?: string;\n filter?: string;\n files?: string[];\n frameAction?: BrowserWorkspaceFrameAction;\n fullPage?: boolean;\n headers?: Record<string, string>;\n height?: number;\n url?: string;\n secondaryUrl?: string;\n title?: string;\n script?: string;\n show?: boolean;\n partition?: string;\n connectorProvider?: string;\n connectorAccountId?: string;\n selector?: string;\n text?: string;\n value?: string;\n attribute?: string;\n direction?: BrowserWorkspaceScrollDirection;\n exact?: boolean;\n findBy?: BrowserWorkspaceFindBy;\n index?: number;\n key?: string;\n latitude?: number;\n longitude?: number;\n media?: \"dark\" | \"light\";\n method?: string;\n mouseAction?: BrowserWorkspaceMouseAction;\n networkAction?: BrowserWorkspaceNetworkAction;\n offline?: boolean;\n outputPath?: string;\n getMode?: BrowserWorkspaceGetMode;\n name?: string;\n pixels?: number;\n profilerAction?: BrowserWorkspaceProfilerAction;\n promptText?: string;\n requestId?: string;\n responseBody?: string;\n responseHeaders?: Record<string, string>;\n responseStatus?: number;\n role?: string;\n scale?: number;\n setAction?: BrowserWorkspaceSetAction;\n state?: BrowserWorkspaceWaitState;\n stateAction?: BrowserWorkspaceStateAction;\n status?: string;\n storageAction?: BrowserWorkspaceStorageAction;\n storageArea?: BrowserWorkspaceStorageArea;\n tabAction?: BrowserWorkspaceTabAction;\n timeoutMs?: number;\n traceAction?: BrowserWorkspaceTraceAction;\n windowAction?: BrowserWorkspaceWindowAction;\n width?: number;\n x?: number;\n y?: number;\n username?: string;\n password?: string;\n ms?: number;\n milliseconds?: number;\n steps?: BrowserWorkspaceCommand[];\n /** Cursor animation duration (ms) for realistic-* and cursor-* subactions. */\n cursorDurationMs?: number;\n /** Per-character delay for realistic-type / realistic-fill (ms). */\n perCharDelayMs?: number;\n /** Replace existing input value when filling (vs append). */\n replace?: boolean;\n}\n\nexport interface BrowserWorkspaceCommandResult {\n mode: BrowserWorkspaceMode;\n subaction: BrowserWorkspaceSubaction;\n tab?: BrowserWorkspaceTab;\n tabs?: BrowserWorkspaceTab[];\n closed?: boolean;\n value?: unknown;\n elements?: BrowserWorkspaceDomElementSummary[];\n snapshot?: { data: string };\n steps?: BrowserWorkspaceCommandResult[];\n}\n\nexport interface BrowserWorkspaceConsoleEntry {\n level: \"error\" | \"info\" | \"log\" | \"warn\";\n message: string;\n timestamp: string;\n}\n\nexport interface BrowserWorkspaceErrorEntry {\n message: string;\n stack: string | null;\n timestamp: string;\n}\n\nexport interface BrowserWorkspaceDialogState {\n defaultValue: string | null;\n message: string;\n open: boolean;\n type: \"alert\" | \"beforeunload\" | \"confirm\" | \"prompt\";\n}\n\nexport interface BrowserWorkspaceMouseState {\n buttons: BrowserWorkspaceMouseButton[];\n x: number;\n y: number;\n}\n\nexport interface BrowserWorkspaceSettingsState {\n credentials: { password: string; username: string } | null;\n device: string | null;\n geo: { latitude: number; longitude: number } | null;\n headers: Record<string, string>;\n media: \"dark\" | \"light\" | null;\n offline: boolean;\n viewport: { height: number; scale: number; width: number } | null;\n}\n\nexport interface BrowserWorkspaceNetworkRoute {\n abort: boolean;\n body: string | null;\n headers: Record<string, string>;\n pattern: string;\n status: number | null;\n}\n\nexport interface BrowserWorkspaceNetworkRequestRecord {\n id: string;\n matchedRoute: string | null;\n method: string;\n resourceType: string;\n responseBody: string | null;\n responseHeaders: Record<string, string>;\n status: number | null;\n timestamp: string;\n url: string;\n}\n\nexport interface BrowserWorkspaceTraceRecord {\n active: boolean;\n entries: Array<Record<string, unknown>>;\n}\n\nexport interface BrowserWorkspaceProfilerRecord {\n active: boolean;\n entries: Array<Record<string, unknown>>;\n}\n\nexport interface BrowserWorkspaceHarRecord {\n active: boolean;\n entries: BrowserWorkspaceNetworkRequestRecord[];\n startedAt: string | null;\n}\n\nexport interface BrowserWorkspaceSnapshotRecord {\n bodyText: string;\n title: string;\n url: string;\n}\n\nexport interface BrowserWorkspaceRuntimeState {\n consoleEntries: BrowserWorkspaceConsoleEntry[];\n currentFrame: string | null;\n dialog: BrowserWorkspaceDialogState | null;\n errors: BrowserWorkspaceErrorEntry[];\n frameDoms: Map<string, JSDOM>;\n highlightedSelector: string | null;\n lastScreenshotData: string | null;\n lastSnapshot: BrowserWorkspaceSnapshotRecord | null;\n mouse: BrowserWorkspaceMouseState;\n networkHar: BrowserWorkspaceHarRecord;\n networkNextRequestId: number;\n networkRequests: BrowserWorkspaceNetworkRequestRecord[];\n networkRoutes: BrowserWorkspaceNetworkRoute[];\n settings: BrowserWorkspaceSettingsState;\n trace: BrowserWorkspaceTraceRecord;\n profiler: BrowserWorkspaceProfilerRecord;\n}\n\nexport interface WebBrowserWorkspaceTabState extends BrowserWorkspaceTab {\n dom: JSDOM | null;\n history: string[];\n historyIndex: number;\n loadedUrl: string | null;\n}\n"],"mappings":"AAMO,MAAM,0CAA0C;AAAA,EACrD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"browser-workspace-web.d.ts","sourceRoot":"","sources":["../../src/workspace/browser-workspace-web.ts"],"names":[],"mappings":"AAmEA,OAAO,KAAK,EACV,uBAAuB,EACvB,6BAA6B,EAE7B,2BAA2B,EAC5B,MAAM,8BAA8B,CAAC;AAEtC,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEpE;AAED,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,MAAM,GACZ,2BAA2B,CAM7B;AAED,wBAAgB,qCAAqC,IAAI,2BAA2B,GAAG,IAAI,CAgB1F;AAED,wBAAgB,kCAAkC,CAChD,OAAO,EAAE,uBAAuB,GAC/B,MAAM,CASR;AAED,wBAAsB,wCAAwC,CAC5D,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,6BAA6B,GAAG,IAAI,CAAC,CAi0B/C;AAED,wBAAsB,oCAAoC,CACxD,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,6BAA6B,CAAC,CAkmBxC"}
1
+ {"version":3,"file":"browser-workspace-web.d.ts","sourceRoot":"","sources":["../../src/workspace/browser-workspace-web.ts"],"names":[],"mappings":"AAqEA,OAAO,KAAK,EACV,uBAAuB,EACvB,6BAA6B,EAE7B,2BAA2B,EAC5B,MAAM,8BAA8B,CAAC;AAEtC,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEpE;AAED,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,MAAM,GACZ,2BAA2B,CAM7B;AAED,wBAAgB,qCAAqC,IAAI,2BAA2B,GAAG,IAAI,CAgB1F;AAED,wBAAgB,kCAAkC,CAChD,OAAO,EAAE,uBAAuB,GAC/B,MAAM,CASR;AAED,wBAAsB,wCAAwC,CAC5D,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,6BAA6B,GAAG,IAAI,CAAC,CA2vB/C;AAED,wBAAsB,oCAAoC,CACxD,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,6BAA6B,CAAC,CAqlBxC"}
@@ -29,6 +29,8 @@ import {
29
29
  } from "./browser-workspace-forms.js";
30
30
  import {
31
31
  assertBrowserWorkspaceConnectorSecretsNotExported,
32
+ createBrowserWorkspaceJsdomScriptExecutionError,
33
+ assertBrowserWorkspaceJsdomScriptNotRequested,
32
34
  createBrowserWorkspaceCommandTargetError,
33
35
  createBrowserWorkspaceNotFoundError,
34
36
  DEFAULT_TIMEOUT_MS,
@@ -142,75 +144,7 @@ async function executeWebBrowserWorkspaceUtilityCommand(command) {
142
144
  if (!command.script?.trim()) {
143
145
  throw new Error("Eliza browser workspace eval requires script.");
144
146
  }
145
- try {
146
- let value;
147
- try {
148
- value = new Function(
149
- "document",
150
- "fetch",
151
- "alert",
152
- "confirm",
153
- "prompt",
154
- "window",
155
- "location",
156
- "navigator",
157
- "localStorage",
158
- "sessionStorage",
159
- "console",
160
- `return (${command.script});`
161
- )(
162
- document,
163
- dom.window.fetch.bind(dom.window),
164
- dom.window.alert.bind(dom.window),
165
- dom.window.confirm.bind(dom.window),
166
- dom.window.prompt.bind(dom.window),
167
- dom.window,
168
- dom.window.location,
169
- dom.window.navigator,
170
- dom.window.localStorage,
171
- dom.window.sessionStorage,
172
- dom.window.console
173
- );
174
- } catch {
175
- value = new Function(
176
- "document",
177
- "fetch",
178
- "alert",
179
- "confirm",
180
- "prompt",
181
- "window",
182
- "location",
183
- "navigator",
184
- "localStorage",
185
- "sessionStorage",
186
- "console",
187
- command.script
188
- )(
189
- document,
190
- dom.window.fetch.bind(dom.window),
191
- dom.window.alert.bind(dom.window),
192
- dom.window.confirm.bind(dom.window),
193
- dom.window.prompt.bind(dom.window),
194
- dom.window,
195
- dom.window.location,
196
- dom.window.navigator,
197
- dom.window.localStorage,
198
- dom.window.sessionStorage,
199
- dom.window.console
200
- );
201
- }
202
- if (value && typeof value === "object" && typeof value.then === "function") {
203
- value = await value;
204
- }
205
- return { mode: "web", subaction: command.subaction, value };
206
- } catch (error) {
207
- runtime.errors.push({
208
- message: error instanceof Error ? error.message : String(error),
209
- stack: error instanceof Error ? error.stack ?? null : null,
210
- timestamp: getBrowserWorkspaceTimestamp()
211
- });
212
- throw error;
213
- }
147
+ throw createBrowserWorkspaceJsdomScriptExecutionError("eval");
214
148
  }
215
149
  case "screenshot": {
216
150
  const data = createBrowserWorkspaceSyntheticScreenshotData(
@@ -1334,6 +1268,7 @@ async function executeWebBrowserWorkspaceDomCommand(command) {
1334
1268
  };
1335
1269
  }
1336
1270
  case "wait": {
1271
+ assertBrowserWorkspaceJsdomScriptNotRequested(command.script, "wait");
1337
1272
  if (!command.selector && !command.findBy && !command.text && !command.url && !command.script && typeof command.timeoutMs === "number" && Number.isFinite(command.timeoutMs)) {
1338
1273
  const waitedMs = Math.max(0, command.timeoutMs);
1339
1274
  await sleep(waitedMs);
@@ -1356,31 +1291,23 @@ async function executeWebBrowserWorkspaceDomCommand(command) {
1356
1291
  void 0,
1357
1292
  command
1358
1293
  );
1359
- if (command.state === "visible") {
1360
- return found ? isBrowserWorkspaceElementVisible(found) : false;
1294
+ if (command.state === "hidden") {
1295
+ return !found || !isBrowserWorkspaceElementVisible(found);
1361
1296
  }
1362
- return !found || !isBrowserWorkspaceElementVisible(found);
1297
+ return found ? isBrowserWorkspaceElementVisible(found) : false;
1298
+ })() : false;
1299
+ const matchesFind = command.findBy ? (() => {
1300
+ const found = resolveBrowserWorkspaceFindElement(
1301
+ currentDocument,
1302
+ command
1303
+ );
1304
+ return command.state === "hidden" ? !found : Boolean(found);
1363
1305
  })() : false;
1364
- const matchesFind = command.findBy ? Boolean(
1365
- resolveBrowserWorkspaceFindElement(currentDocument, command)
1366
- ) : false;
1367
1306
  const matchesText = command.text?.trim() ? normalizeBrowserWorkspaceText(
1368
1307
  currentDocument.body?.textContent
1369
1308
  ).includes(command.text.trim()) : false;
1370
1309
  const matchesUrl = command.url?.trim() ? tab.url.includes(command.url.trim()) : false;
1371
- const matchesScript = command.script?.trim() ? Boolean(
1372
- new Function(
1373
- "document",
1374
- "window",
1375
- "location",
1376
- `return (${command.script});`
1377
- )(
1378
- currentDocument,
1379
- currentDom.window,
1380
- currentDom.window.location
1381
- )
1382
- ) : false;
1383
- if (matchesSelector || matchesFind || matchesText || matchesUrl || matchesScript || !command.selector && !command.findBy && !command.text && !command.url && !command.script) {
1310
+ if (matchesSelector || matchesFind || matchesText || matchesUrl || !command.selector && !command.findBy && !command.text && !command.url) {
1384
1311
  return {
1385
1312
  mode: "web",
1386
1313
  subaction: command.subaction,