@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.
- package/LICENSE +21 -0
- package/README.md +106 -64
- package/dist/actions/browser-autofill-login.d.ts.map +1 -1
- package/dist/actions/browser-autofill-login.js.map +1 -1
- package/dist/actions/browser.d.ts +5 -6
- package/dist/actions/browser.d.ts.map +1 -1
- package/dist/actions/browser.js +54 -59
- package/dist/actions/browser.js.map +1 -1
- package/dist/actions/manage-browser-bridge.d.ts.map +1 -1
- package/dist/actions/manage-browser-bridge.js +10 -14
- package/dist/actions/manage-browser-bridge.js.map +1 -1
- package/dist/bridge-policy.d.ts +10 -0
- package/dist/bridge-policy.d.ts.map +1 -0
- package/dist/bridge-policy.js +37 -0
- package/dist/bridge-policy.js.map +1 -0
- package/dist/bridge-readiness.d.ts +16 -0
- package/dist/bridge-readiness.d.ts.map +1 -0
- package/dist/bridge-readiness.js +82 -0
- package/dist/bridge-readiness.js.map +1 -0
- package/dist/bridge-records.d.ts +9 -0
- package/dist/bridge-records.d.ts.map +1 -0
- package/dist/bridge-records.js +37 -0
- package/dist/bridge-records.js.map +1 -0
- package/dist/browser-capture-hooks.d.ts +9 -0
- package/dist/browser-capture-hooks.d.ts.map +1 -0
- package/dist/browser-capture-hooks.js +15 -0
- package/dist/browser-capture-hooks.js.map +1 -0
- package/dist/browser-service.d.ts +22 -4
- package/dist/browser-service.d.ts.map +1 -1
- package/dist/browser-service.js +63 -15
- package/dist/browser-service.js.map +1 -1
- package/dist/browser-workspace-hooks.d.ts +14 -0
- package/dist/browser-workspace-hooks.d.ts.map +1 -0
- package/dist/browser-workspace-hooks.js +15 -0
- package/dist/browser-workspace-hooks.js.map +1 -0
- package/dist/companion-auth.d.ts +34 -0
- package/dist/companion-auth.d.ts.map +1 -0
- package/dist/companion-auth.js +98 -0
- package/dist/companion-auth.js.map +1 -0
- package/dist/index.d.ts +9 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +46 -11
- package/dist/index.js.map +1 -1
- package/dist/message-adapter.d.ts +9 -0
- package/dist/message-adapter.d.ts.map +1 -0
- package/dist/message-adapter.js +104 -0
- package/dist/message-adapter.js.map +1 -0
- package/dist/packaging.d.ts.map +1 -1
- package/dist/packaging.js +2 -0
- package/dist/packaging.js.map +1 -1
- package/dist/password-manager-bridge.d.ts +50 -0
- package/dist/password-manager-bridge.d.ts.map +1 -0
- package/dist/password-manager-bridge.js +437 -0
- package/dist/password-manager-bridge.js.map +1 -0
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +8 -4
- package/dist/plugin.js.map +1 -1
- package/dist/providers/workspace.d.ts +1 -1
- package/dist/providers/workspace.js.map +1 -1
- package/dist/routes/bridge.d.ts.map +1 -1
- package/dist/routes/bridge.js +63 -14
- package/dist/routes/bridge.js.map +1 -1
- package/dist/routes/workspace-setup.d.ts.map +1 -1
- package/dist/routes/workspace-setup.js +1 -1
- package/dist/routes/workspace-setup.js.map +1 -1
- package/dist/routes/workspace.d.ts +1 -2
- package/dist/routes/workspace.d.ts.map +1 -1
- package/dist/routes/workspace.js +63 -3
- package/dist/routes/workspace.js.map +1 -1
- package/dist/schema.d.ts +2 -2
- package/dist/schema.js.map +1 -1
- package/dist/service.d.ts +1 -1
- package/dist/service.d.ts.map +1 -1
- package/dist/service.js.map +1 -1
- package/dist/targets/bridge-target.d.ts +1 -1
- package/dist/targets/bridge-target.d.ts.map +1 -1
- package/dist/targets/bridge-target.js.map +1 -1
- package/dist/targets/stagehand-target.d.ts +3 -0
- package/dist/targets/stagehand-target.d.ts.map +1 -0
- package/dist/targets/stagehand-target.js +187 -0
- package/dist/targets/stagehand-target.js.map +1 -0
- package/dist/workspace/browser-capture.d.ts +1 -1
- package/dist/workspace/browser-capture.js.map +1 -1
- package/dist/workspace/browser-workspace-desktop.d.ts +1 -1
- package/dist/workspace/browser-workspace-desktop.d.ts.map +1 -1
- package/dist/workspace/browser-workspace-desktop.js +47 -25
- package/dist/workspace/browser-workspace-desktop.js.map +1 -1
- package/dist/workspace/browser-workspace-forms.d.ts.map +1 -1
- package/dist/workspace/browser-workspace-forms.js +1 -1
- package/dist/workspace/browser-workspace-forms.js.map +1 -1
- package/dist/workspace/browser-workspace-helpers.d.ts +7 -0
- package/dist/workspace/browser-workspace-helpers.d.ts.map +1 -1
- package/dist/workspace/browser-workspace-helpers.js +37 -0
- package/dist/workspace/browser-workspace-helpers.js.map +1 -1
- package/dist/workspace/browser-workspace-network.d.ts +1 -1
- package/dist/workspace/browser-workspace-network.d.ts.map +1 -1
- package/dist/workspace/browser-workspace-types.d.ts +15 -0
- package/dist/workspace/browser-workspace-types.d.ts.map +1 -1
- package/dist/workspace/browser-workspace-types.js.map +1 -1
- package/dist/workspace/browser-workspace-web.d.ts.map +1 -1
- package/dist/workspace/browser-workspace-web.js +15 -88
- package/dist/workspace/browser-workspace-web.js.map +1 -1
- package/dist/workspace/browser-workspace.d.ts +1 -1
- package/dist/workspace/browser-workspace.d.ts.map +1 -1
- package/dist/workspace/browser-workspace.js +9 -4
- package/dist/workspace/browser-workspace.js.map +1 -1
- package/package.json +28 -7
- package/dist/actions/browser-autofill-login.d.js +0 -1
- package/dist/actions/browser-autofill-login.d.js.map +0 -1
- package/dist/actions/browser.d.js +0 -1
- package/dist/actions/browser.d.js.map +0 -1
- package/dist/actions/manage-browser-bridge.d.js +0 -1
- package/dist/actions/manage-browser-bridge.d.js.map +0 -1
- package/dist/ambient-jsdom.d.js +0 -1
- package/dist/ambient-jsdom.d.js.map +0 -1
- package/dist/browser-service.d.js +0 -1
- package/dist/browser-service.d.js.map +0 -1
- package/dist/contracts.d.js +0 -1
- package/dist/contracts.d.js.map +0 -1
- package/dist/index.d.js +0 -21
- package/dist/index.d.js.map +0 -1
- package/dist/lifeops-session-contracts.d.js +0 -1
- package/dist/lifeops-session-contracts.d.js.map +0 -1
- package/dist/packaging.d.js +0 -1
- package/dist/packaging.d.js.map +0 -1
- package/dist/plugin.d.js +0 -1
- package/dist/plugin.d.js.map +0 -1
- package/dist/providers/workspace.d.js +0 -1
- package/dist/providers/workspace.d.js.map +0 -1
- package/dist/routes/bridge.d.js +0 -1
- package/dist/routes/bridge.d.js.map +0 -1
- package/dist/routes/workspace-account-gate.d.js +0 -1
- package/dist/routes/workspace-account-gate.d.js.map +0 -1
- package/dist/routes/workspace-setup.d.js +0 -1
- package/dist/routes/workspace-setup.d.js.map +0 -1
- package/dist/routes/workspace.d.js +0 -1
- package/dist/routes/workspace.d.js.map +0 -1
- package/dist/schema.d.js +0 -1
- package/dist/schema.d.js.map +0 -1
- package/dist/service.d.js +0 -1
- package/dist/service.d.js.map +0 -1
- package/dist/targets/bridge-target.d.js +0 -1
- package/dist/targets/bridge-target.d.js.map +0 -1
- package/dist/workspace/browser-capture.d.js +0 -1
- package/dist/workspace/browser-capture.d.js.map +0 -1
- package/dist/workspace/browser-workspace-desktop.d.js +0 -1
- package/dist/workspace/browser-workspace-desktop.d.js.map +0 -1
- package/dist/workspace/browser-workspace-elements.d.js +0 -1
- package/dist/workspace/browser-workspace-elements.d.js.map +0 -1
- package/dist/workspace/browser-workspace-forms.d.js +0 -1
- package/dist/workspace/browser-workspace-forms.d.js.map +0 -1
- package/dist/workspace/browser-workspace-helpers.d.js +0 -1
- package/dist/workspace/browser-workspace-helpers.d.js.map +0 -1
- package/dist/workspace/browser-workspace-jsdom.d.js +0 -1
- package/dist/workspace/browser-workspace-jsdom.d.js.map +0 -1
- package/dist/workspace/browser-workspace-network.d.js +0 -1
- package/dist/workspace/browser-workspace-network.d.js.map +0 -1
- package/dist/workspace/browser-workspace-snapshots.d.js +0 -1
- package/dist/workspace/browser-workspace-snapshots.d.js.map +0 -1
- package/dist/workspace/browser-workspace-state.d.js +0 -1
- package/dist/workspace/browser-workspace-state.d.js.map +0 -1
- package/dist/workspace/browser-workspace-types.d.js +0 -1
- package/dist/workspace/browser-workspace-types.d.js.map +0 -1
- package/dist/workspace/browser-workspace-web.d.js +0 -1
- package/dist/workspace/browser-workspace-web.d.js.map +0 -1
- package/dist/workspace/browser-workspace.d.js +0 -11
- package/dist/workspace/browser-workspace.d.js.map +0 -1
- package/dist/workspace/index.d.js +0 -3
- 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,
|
|
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":"
|
|
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
|
-
|
|
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 === "
|
|
1360
|
-
return found
|
|
1294
|
+
if (command.state === "hidden") {
|
|
1295
|
+
return !found || !isBrowserWorkspaceElementVisible(found);
|
|
1361
1296
|
}
|
|
1362
|
-
return
|
|
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
|
-
|
|
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,
|