@framers/agentos-ext-browser-automation 0.1.0
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 +98 -0
- package/dist/BrowserService.d.ts +125 -0
- package/dist/BrowserService.d.ts.map +1 -0
- package/dist/BrowserService.js +332 -0
- package/dist/BrowserService.js.map +1 -0
- package/dist/captcha/CaptchaSolver.d.ts +20 -0
- package/dist/captcha/CaptchaSolver.d.ts.map +1 -0
- package/dist/captcha/CaptchaSolver.js +91 -0
- package/dist/captcha/CaptchaSolver.js.map +1 -0
- package/dist/captcha/ICaptchaProvider.d.ts +17 -0
- package/dist/captcha/ICaptchaProvider.d.ts.map +1 -0
- package/dist/captcha/ICaptchaProvider.js +7 -0
- package/dist/captcha/ICaptchaProvider.js.map +1 -0
- package/dist/index.d.ts +64 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +148 -0
- package/dist/index.js.map +1 -0
- package/dist/proxy/IProxyProvider.d.ts +20 -0
- package/dist/proxy/IProxyProvider.d.ts.map +1 -0
- package/dist/proxy/IProxyProvider.js +7 -0
- package/dist/proxy/IProxyProvider.js.map +1 -0
- package/dist/proxy/ProxyManager.d.ts +21 -0
- package/dist/proxy/ProxyManager.d.ts.map +1 -0
- package/dist/proxy/ProxyManager.js +67 -0
- package/dist/proxy/ProxyManager.js.map +1 -0
- package/dist/tools/ClickTool.d.ts +38 -0
- package/dist/tools/ClickTool.d.ts.map +1 -0
- package/dist/tools/ClickTool.js +34 -0
- package/dist/tools/ClickTool.js.map +1 -0
- package/dist/tools/EvaluateTool.d.ts +30 -0
- package/dist/tools/EvaluateTool.d.ts.map +1 -0
- package/dist/tools/EvaluateTool.js +33 -0
- package/dist/tools/EvaluateTool.js.map +1 -0
- package/dist/tools/ExtractTool.d.ts +42 -0
- package/dist/tools/ExtractTool.d.ts.map +1 -0
- package/dist/tools/ExtractTool.js +40 -0
- package/dist/tools/ExtractTool.js.map +1 -0
- package/dist/tools/FillTool.d.ts +34 -0
- package/dist/tools/FillTool.d.ts.map +1 -0
- package/dist/tools/FillTool.js +34 -0
- package/dist/tools/FillTool.js.map +1 -0
- package/dist/tools/NavigateTool.d.ts +53 -0
- package/dist/tools/NavigateTool.d.ts.map +1 -0
- package/dist/tools/NavigateTool.js +48 -0
- package/dist/tools/NavigateTool.js.map +1 -0
- package/dist/tools/PageSnapshotTool.d.ts +22 -0
- package/dist/tools/PageSnapshotTool.d.ts.map +1 -0
- package/dist/tools/PageSnapshotTool.js +30 -0
- package/dist/tools/PageSnapshotTool.js.map +1 -0
- package/dist/tools/ScreenshotTool.d.ts +38 -0
- package/dist/tools/ScreenshotTool.d.ts.map +1 -0
- package/dist/tools/ScreenshotTool.js +36 -0
- package/dist/tools/ScreenshotTool.js.map +1 -0
- package/dist/tools/ScrollTool.d.ts +41 -0
- package/dist/tools/ScrollTool.d.ts.map +1 -0
- package/dist/tools/ScrollTool.js +34 -0
- package/dist/tools/ScrollTool.js.map +1 -0
- package/dist/tools/SessionTool.d.ts +36 -0
- package/dist/tools/SessionTool.d.ts.map +1 -0
- package/dist/tools/SessionTool.js +50 -0
- package/dist/tools/SessionTool.js.map +1 -0
- package/dist/tools/WaitTool.d.ts +41 -0
- package/dist/tools/WaitTool.d.ts.map +1 -0
- package/dist/tools/WaitTool.js +39 -0
- package/dist/tools/WaitTool.js.map +1 -0
- package/manifest.json +55 -0
- package/package.json +38 -0
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { BrowserService } from '../BrowserService.js';
|
|
2
|
+
export declare class WaitTool {
|
|
3
|
+
private browser;
|
|
4
|
+
readonly id = "browserWait";
|
|
5
|
+
readonly name = "browserWait";
|
|
6
|
+
readonly displayName = "Wait for Condition";
|
|
7
|
+
readonly description = "Wait for a CSS selector to appear/disappear, or wait for a specified duration.";
|
|
8
|
+
readonly category = "browser";
|
|
9
|
+
readonly version = "0.1.0";
|
|
10
|
+
readonly hasSideEffects = false;
|
|
11
|
+
readonly inputSchema: {
|
|
12
|
+
type: "object";
|
|
13
|
+
properties: {
|
|
14
|
+
selector: {
|
|
15
|
+
type: string;
|
|
16
|
+
description: string;
|
|
17
|
+
};
|
|
18
|
+
timeout: {
|
|
19
|
+
type: string;
|
|
20
|
+
description: string;
|
|
21
|
+
default: number;
|
|
22
|
+
};
|
|
23
|
+
state: {
|
|
24
|
+
type: string;
|
|
25
|
+
enum: string[];
|
|
26
|
+
description: string;
|
|
27
|
+
default: string;
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
constructor(browser: BrowserService);
|
|
32
|
+
execute(args: {
|
|
33
|
+
selector?: string;
|
|
34
|
+
timeout?: number;
|
|
35
|
+
state?: 'visible' | 'hidden' | 'attached' | 'detached';
|
|
36
|
+
}): Promise<{
|
|
37
|
+
success: boolean;
|
|
38
|
+
error?: string;
|
|
39
|
+
}>;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=WaitTool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WaitTool.d.ts","sourceRoot":"","sources":["../../src/tools/WaitTool.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,qBAAa,QAAQ;IAuBP,OAAO,CAAC,OAAO;IAtB3B,QAAQ,CAAC,EAAE,iBAAiB;IAC5B,QAAQ,CAAC,IAAI,iBAAiB;IAC9B,QAAQ,CAAC,WAAW,wBAAwB;IAC5C,QAAQ,CAAC,WAAW,oFAAoF;IACxG,QAAQ,CAAC,QAAQ,aAAa;IAC9B,QAAQ,CAAC,OAAO,WAAW;IAC3B,QAAQ,CAAC,cAAc,SAAS;IAEhC,QAAQ,CAAC,WAAW;;;;;;;;;;;;;;;;;;;MAYlB;gBAEkB,OAAO,EAAE,cAAc;IAErC,OAAO,CAAC,IAAI,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,UAAU,GAAG,UAAU,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAQpK"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WaitTool = void 0;
|
|
4
|
+
class WaitTool {
|
|
5
|
+
constructor(browser) {
|
|
6
|
+
this.browser = browser;
|
|
7
|
+
this.id = 'browserWait';
|
|
8
|
+
this.name = 'browserWait';
|
|
9
|
+
this.displayName = 'Wait for Condition';
|
|
10
|
+
this.description = 'Wait for a CSS selector to appear/disappear, or wait for a specified duration.';
|
|
11
|
+
this.category = 'browser';
|
|
12
|
+
this.version = '0.1.0';
|
|
13
|
+
this.hasSideEffects = false;
|
|
14
|
+
this.inputSchema = {
|
|
15
|
+
type: 'object',
|
|
16
|
+
properties: {
|
|
17
|
+
selector: { type: 'string', description: 'CSS selector to wait for (omit for time-based wait)' },
|
|
18
|
+
timeout: { type: 'number', description: 'Maximum wait time in milliseconds', default: 30000 },
|
|
19
|
+
state: {
|
|
20
|
+
type: 'string',
|
|
21
|
+
enum: ['visible', 'hidden', 'attached', 'detached'],
|
|
22
|
+
description: 'Element state to wait for',
|
|
23
|
+
default: 'visible',
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
async execute(args) {
|
|
29
|
+
try {
|
|
30
|
+
await this.browser.wait(args);
|
|
31
|
+
return { success: true };
|
|
32
|
+
}
|
|
33
|
+
catch (err) {
|
|
34
|
+
return { success: false, error: err.message };
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
exports.WaitTool = WaitTool;
|
|
39
|
+
//# sourceMappingURL=WaitTool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WaitTool.js","sourceRoot":"","sources":["../../src/tools/WaitTool.ts"],"names":[],"mappings":";;;AAGA,MAAa,QAAQ;IAuBnB,YAAoB,OAAuB;QAAvB,YAAO,GAAP,OAAO,CAAgB;QAtBlC,OAAE,GAAG,aAAa,CAAC;QACnB,SAAI,GAAG,aAAa,CAAC;QACrB,gBAAW,GAAG,oBAAoB,CAAC;QACnC,gBAAW,GAAG,gFAAgF,CAAC;QAC/F,aAAQ,GAAG,SAAS,CAAC;QACrB,YAAO,GAAG,OAAO,CAAC;QAClB,mBAAc,GAAG,KAAK,CAAC;QAEvB,gBAAW,GAAG;YACrB,IAAI,EAAE,QAAiB;YACvB,UAAU,EAAE;gBACV,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,qDAAqD,EAAE;gBAChG,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mCAAmC,EAAE,OAAO,EAAE,KAAK,EAAE;gBAC7F,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAC;oBACnD,WAAW,EAAE,2BAA2B;oBACxC,OAAO,EAAE,SAAS;iBACnB;aACF;SACF,CAAC;IAE4C,CAAC;IAE/C,KAAK,CAAC,OAAO,CAAC,IAAqG;QACjH,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC3B,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;QAChD,CAAC;IACH,CAAC;CACF;AAjCD,4BAiCC"}
|
package/manifest.json
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://agentos.sh/schemas/extension-manifest-v1.json",
|
|
3
|
+
"id": "com.framers.system.browser-automation",
|
|
4
|
+
"name": "Browser Automation Extension",
|
|
5
|
+
"version": "0.1.0",
|
|
6
|
+
"description": "Full browser automation for autonomous agents — navigate URLs, interact with DOM elements, capture screenshots, solve captchas, and rotate proxies. Powered by Playwright with persistent session support.",
|
|
7
|
+
"categories": ["system", "automation", "browser"],
|
|
8
|
+
"sdk": "playwright",
|
|
9
|
+
"extensions": [
|
|
10
|
+
{ "kind": "tool", "id": "browserNavigate", "displayName": "Navigate to URL" },
|
|
11
|
+
{ "kind": "tool", "id": "browserClick", "displayName": "Click Element" },
|
|
12
|
+
{ "kind": "tool", "id": "browserFill", "displayName": "Fill Input" },
|
|
13
|
+
{ "kind": "tool", "id": "browserScreenshot", "displayName": "Take Screenshot" },
|
|
14
|
+
{ "kind": "tool", "id": "browserExtract", "displayName": "Extract Content" },
|
|
15
|
+
{ "kind": "tool", "id": "browserWait", "displayName": "Wait for Condition" },
|
|
16
|
+
{ "kind": "tool", "id": "browserScroll", "displayName": "Scroll Page" },
|
|
17
|
+
{ "kind": "tool", "id": "browserSnapshot", "displayName": "Page Snapshot" },
|
|
18
|
+
{ "kind": "tool", "id": "browserEvaluate", "displayName": "Evaluate JavaScript" },
|
|
19
|
+
{ "kind": "tool", "id": "browserSession", "displayName": "Manage Session" }
|
|
20
|
+
],
|
|
21
|
+
"requiredSecrets": [],
|
|
22
|
+
"optionalSecrets": ["twocaptcha.apiKey", "proxy.config"],
|
|
23
|
+
"features": [
|
|
24
|
+
"Navigate to any URL with full page rendering",
|
|
25
|
+
"Click elements by CSS selector, text content, or ARIA role",
|
|
26
|
+
"Fill forms and interact with inputs",
|
|
27
|
+
"Capture full-page or element screenshots",
|
|
28
|
+
"Extract text, HTML, or structured data from DOM",
|
|
29
|
+
"Wait for selectors, navigation, or custom conditions",
|
|
30
|
+
"Smart page snapshot — inventory of all interactive elements",
|
|
31
|
+
"Execute arbitrary JavaScript in page context",
|
|
32
|
+
"Persistent login sessions via cookie/localStorage storage",
|
|
33
|
+
"CAPTCHA solving via 2captcha (reCAPTCHA, hCaptcha, Turnstile)",
|
|
34
|
+
"Proxy rotation with sticky sessions and geo-targeting",
|
|
35
|
+
"Auto-screenshot on errors for debugging"
|
|
36
|
+
],
|
|
37
|
+
"configuration": {
|
|
38
|
+
"properties": {
|
|
39
|
+
"browser.headless": {
|
|
40
|
+
"type": "boolean",
|
|
41
|
+
"default": true,
|
|
42
|
+
"description": "Run browser in headless mode"
|
|
43
|
+
},
|
|
44
|
+
"browser.timeout": {
|
|
45
|
+
"type": "number",
|
|
46
|
+
"default": 30000,
|
|
47
|
+
"description": "Default navigation timeout in milliseconds"
|
|
48
|
+
},
|
|
49
|
+
"browser.userDataDir": {
|
|
50
|
+
"type": "string",
|
|
51
|
+
"description": "Path to persistent browser profile directory"
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@framers/agentos-ext-browser-automation",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Full browser automation extension for AgentOS — provides agents with autonomous web navigation, DOM interaction, screenshotting, captcha solving, and proxy rotation via Playwright.",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"files": [
|
|
8
|
+
"dist",
|
|
9
|
+
"manifest.json"
|
|
10
|
+
],
|
|
11
|
+
"peerDependencies": {
|
|
12
|
+
"@framers/agentos": "^0.5.2"
|
|
13
|
+
},
|
|
14
|
+
"dependencies": {
|
|
15
|
+
"playwright": "^1.50.0"
|
|
16
|
+
},
|
|
17
|
+
"optionalDependencies": {
|
|
18
|
+
"2captcha-ts": "^1.3.0"
|
|
19
|
+
},
|
|
20
|
+
"devDependencies": {
|
|
21
|
+
"@framers/agentos": "^0.6.6",
|
|
22
|
+
"@types/node": "^20.0.0",
|
|
23
|
+
"typescript": "^5.0.0",
|
|
24
|
+
"vitest": "^1.0.0"
|
|
25
|
+
},
|
|
26
|
+
"repository": {
|
|
27
|
+
"type": "git",
|
|
28
|
+
"url": "https://github.com/framersai/agentos-extensions",
|
|
29
|
+
"directory": "registry/curated/system/browser-automation"
|
|
30
|
+
},
|
|
31
|
+
"scripts": {
|
|
32
|
+
"build": "tsc",
|
|
33
|
+
"dev": "tsc --watch",
|
|
34
|
+
"test": "vitest run",
|
|
35
|
+
"test:watch": "vitest watch",
|
|
36
|
+
"clean": "rm -rf dist"
|
|
37
|
+
}
|
|
38
|
+
}
|