@framers/agentos-ext-browser-automation 0.1.0 → 0.2.1
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/README.md +80 -0
- package/dist/BrowserService.js +9 -45
- package/dist/BrowserService.js.map +1 -1
- package/dist/attach/AttachController.d.ts +183 -0
- package/dist/attach/AttachController.d.ts.map +1 -0
- package/dist/attach/AttachController.js +286 -0
- package/dist/attach/AttachController.js.map +1 -0
- package/dist/attach/backends/jxa.d.ts +39 -0
- package/dist/attach/backends/jxa.d.ts.map +1 -0
- package/dist/attach/backends/jxa.js +155 -0
- package/dist/attach/backends/jxa.js.map +1 -0
- package/dist/attach/backends/raw-cdp.d.ts +53 -0
- package/dist/attach/backends/raw-cdp.d.ts.map +1 -0
- package/dist/attach/backends/raw-cdp.js +213 -0
- package/dist/attach/backends/raw-cdp.js.map +1 -0
- package/dist/attach/daemon/client.d.ts +64 -0
- package/dist/attach/daemon/client.d.ts.map +1 -0
- package/dist/attach/daemon/client.js +120 -0
- package/dist/attach/daemon/client.js.map +1 -0
- package/dist/attach/daemon/daemon-lock.d.ts +19 -0
- package/dist/attach/daemon/daemon-lock.d.ts.map +1 -0
- package/dist/attach/daemon/daemon-lock.js +84 -0
- package/dist/attach/daemon/daemon-lock.js.map +1 -0
- package/dist/attach/daemon/daemon-main.d.ts +17 -0
- package/dist/attach/daemon/daemon-main.d.ts.map +1 -0
- package/dist/attach/daemon/daemon-main.js +99 -0
- package/dist/attach/daemon/daemon-main.js.map +1 -0
- package/dist/attach/daemon/daemon.d.ts +52 -0
- package/dist/attach/daemon/daemon.d.ts.map +1 -0
- package/dist/attach/daemon/daemon.js +273 -0
- package/dist/attach/daemon/daemon.js.map +1 -0
- package/dist/attach/daemon/index.d.ts +12 -0
- package/dist/attach/daemon/index.d.ts.map +1 -0
- package/dist/attach/daemon/index.js +12 -0
- package/dist/attach/daemon/index.js.map +1 -0
- package/dist/attach/daemon/protocol.d.ts +69 -0
- package/dist/attach/daemon/protocol.d.ts.map +1 -0
- package/dist/attach/daemon/protocol.js +96 -0
- package/dist/attach/daemon/protocol.js.map +1 -0
- package/dist/attach/daemon/runner.d.ts +64 -0
- package/dist/attach/daemon/runner.d.ts.map +1 -0
- package/dist/attach/daemon/runner.js +57 -0
- package/dist/attach/daemon/runner.js.map +1 -0
- package/dist/attach/daemon/surface.d.ts +31 -0
- package/dist/attach/daemon/surface.d.ts.map +1 -0
- package/dist/attach/daemon/surface.js +87 -0
- package/dist/attach/daemon/surface.js.map +1 -0
- package/dist/attach/devtools-port.d.ts +37 -0
- package/dist/attach/devtools-port.d.ts.map +1 -0
- package/dist/attach/devtools-port.js +47 -0
- package/dist/attach/devtools-port.js.map +1 -0
- package/dist/attach/errors.d.ts +38 -0
- package/dist/attach/errors.d.ts.map +1 -0
- package/dist/attach/errors.js +67 -0
- package/dist/attach/errors.js.map +1 -0
- package/dist/attach/lease.d.ts +43 -0
- package/dist/attach/lease.d.ts.map +1 -0
- package/dist/attach/lease.js +87 -0
- package/dist/attach/lease.js.map +1 -0
- package/dist/attach/singleton-lock.d.ts +21 -0
- package/dist/attach/singleton-lock.d.ts.map +1 -0
- package/dist/attach/singleton-lock.js +27 -0
- package/dist/attach/singleton-lock.js.map +1 -0
- package/dist/attach/state.d.ts +31 -0
- package/dist/attach/state.d.ts.map +1 -0
- package/dist/attach/state.js +71 -0
- package/dist/attach/state.js.map +1 -0
- package/dist/attach/tools.d.ts +208 -0
- package/dist/attach/tools.d.ts.map +1 -0
- package/dist/attach/tools.js +191 -0
- package/dist/attach/tools.js.map +1 -0
- package/dist/attach/url-policy.d.ts +41 -0
- package/dist/attach/url-policy.d.ts.map +1 -0
- package/dist/attach/url-policy.js +55 -0
- package/dist/attach/url-policy.js.map +1 -0
- package/dist/attach.d.ts +18 -0
- package/dist/attach.d.ts.map +1 -0
- package/dist/attach.js +18 -0
- package/dist/attach.js.map +1 -0
- package/dist/captcha/CaptchaSolver.js +4 -7
- package/dist/captcha/CaptchaSolver.js.map +1 -1
- package/dist/captcha/ICaptchaProvider.js +1 -2
- package/dist/captcha/ICaptchaProvider.js.map +1 -1
- package/dist/index.d.ts +30 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +73 -65
- package/dist/index.js.map +1 -1
- package/dist/proxy/IProxyProvider.js +1 -2
- package/dist/proxy/IProxyProvider.js.map +1 -1
- package/dist/proxy/ProxyManager.js +7 -10
- package/dist/proxy/ProxyManager.js.map +1 -1
- package/dist/tools/ClickTool.js +17 -20
- package/dist/tools/ClickTool.js.map +1 -1
- package/dist/tools/EvaluateTool.js +16 -19
- package/dist/tools/EvaluateTool.js.map +1 -1
- package/dist/tools/ExtractTool.js +23 -26
- package/dist/tools/ExtractTool.js.map +1 -1
- package/dist/tools/FillTool.js +17 -20
- package/dist/tools/FillTool.js.map +1 -1
- package/dist/tools/NavigateTool.js +31 -34
- package/dist/tools/NavigateTool.js.map +1 -1
- package/dist/tools/PageSnapshotTool.js +13 -16
- package/dist/tools/PageSnapshotTool.js.map +1 -1
- package/dist/tools/ScreenshotTool.js +16 -19
- package/dist/tools/ScreenshotTool.js.map +1 -1
- package/dist/tools/ScrollTool.js +17 -20
- package/dist/tools/ScrollTool.js.map +1 -1
- package/dist/tools/SessionTool.js +24 -27
- package/dist/tools/SessionTool.js.map +1 -1
- package/dist/tools/WaitTool.js +22 -25
- package/dist/tools/WaitTool.js.map +1 -1
- package/manifest.json +1 -1
- package/package.json +23 -7
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/attach/tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Navigation URL policy for the attach lane.
|
|
3
|
+
*
|
|
4
|
+
* An attached session drives the user's REAL logged-in browser, so navigation
|
|
5
|
+
* is deny-by-default: only `https:` targets (plus `about:blank` for parking)
|
|
6
|
+
* are ever allowed, and even then never credential-bearing URLs or private /
|
|
7
|
+
* loopback hosts. `file:`, `javascript:`, `data:`, `devtools:`, `chrome:` and
|
|
8
|
+
* every other scheme are rejected outright. Redirect targets MUST be re-checked
|
|
9
|
+
* with the same policy (Codex spec review F12).
|
|
10
|
+
*
|
|
11
|
+
* @module browser-automation/attach/url-policy
|
|
12
|
+
*/
|
|
13
|
+
/** Options for {@link isNavigationAllowed}. */
|
|
14
|
+
export interface UrlPolicyOptions {
|
|
15
|
+
/**
|
|
16
|
+
* Optional host allowlist. When present, an https URL must match one of
|
|
17
|
+
* these hosts (exact, or a subdomain of an entry) in addition to the base
|
|
18
|
+
* policy. `about:blank` is always allowed regardless.
|
|
19
|
+
*/
|
|
20
|
+
allowHosts?: string[];
|
|
21
|
+
}
|
|
22
|
+
/** Result of a policy check. */
|
|
23
|
+
export interface UrlPolicyResult {
|
|
24
|
+
allowed: boolean;
|
|
25
|
+
/** Stable machine-readable reason when rejected. */
|
|
26
|
+
reason?: 'SCHEME_BLOCKED' | 'CREDENTIALS_IN_URL' | 'PRIVATE_HOST' | 'HOST_NOT_ALLOWLISTED' | 'MALFORMED_URL';
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Check whether navigating the attached tab to `url` is permitted.
|
|
30
|
+
*
|
|
31
|
+
* @param url Target URL (absolute).
|
|
32
|
+
* @param opts Optional host allowlist.
|
|
33
|
+
*/
|
|
34
|
+
export declare function isNavigationAllowed(url: string, opts?: UrlPolicyOptions): UrlPolicyResult;
|
|
35
|
+
/**
|
|
36
|
+
* Re-validate a redirect: the landing URL must clear the SAME policy as the
|
|
37
|
+
* original navigation. A redirect to a blocked target is a policy violation
|
|
38
|
+
* even though the original request was allowed.
|
|
39
|
+
*/
|
|
40
|
+
export declare function revalidateRedirect(landedUrl: string, opts?: UrlPolicyOptions): UrlPolicyResult;
|
|
41
|
+
//# sourceMappingURL=url-policy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"url-policy.d.ts","sourceRoot":"","sources":["../../src/attach/url-policy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,+CAA+C;AAC/C,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,gCAAgC;AAChC,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,oDAAoD;IACpD,MAAM,CAAC,EACH,gBAAgB,GAChB,oBAAoB,GACpB,cAAc,GACd,sBAAsB,GACtB,eAAe,CAAC;CACrB;AAKD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,gBAAqB,GAAG,eAAe,CAoB7F;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,GAAE,gBAAqB,GAAG,eAAe,CAElG"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Navigation URL policy for the attach lane.
|
|
3
|
+
*
|
|
4
|
+
* An attached session drives the user's REAL logged-in browser, so navigation
|
|
5
|
+
* is deny-by-default: only `https:` targets (plus `about:blank` for parking)
|
|
6
|
+
* are ever allowed, and even then never credential-bearing URLs or private /
|
|
7
|
+
* loopback hosts. `file:`, `javascript:`, `data:`, `devtools:`, `chrome:` and
|
|
8
|
+
* every other scheme are rejected outright. Redirect targets MUST be re-checked
|
|
9
|
+
* with the same policy (Codex spec review F12).
|
|
10
|
+
*
|
|
11
|
+
* @module browser-automation/attach/url-policy
|
|
12
|
+
*/
|
|
13
|
+
const PRIVATE_HOST_RE = /^(localhost|127\.\d+\.\d+\.\d+|0\.0\.0\.0|10\.\d+\.\d+\.\d+|192\.168\.\d+\.\d+|172\.(1[6-9]|2\d|3[01])\.\d+\.\d+|\[::1\]|.*\.local)$/i;
|
|
14
|
+
/**
|
|
15
|
+
* Check whether navigating the attached tab to `url` is permitted.
|
|
16
|
+
*
|
|
17
|
+
* @param url Target URL (absolute).
|
|
18
|
+
* @param opts Optional host allowlist.
|
|
19
|
+
*/
|
|
20
|
+
export function isNavigationAllowed(url, opts = {}) {
|
|
21
|
+
if (url === 'about:blank')
|
|
22
|
+
return { allowed: true };
|
|
23
|
+
let parsed;
|
|
24
|
+
try {
|
|
25
|
+
parsed = new URL(url);
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
return { allowed: false, reason: 'MALFORMED_URL' };
|
|
29
|
+
}
|
|
30
|
+
if (parsed.protocol !== 'https:')
|
|
31
|
+
return { allowed: false, reason: 'SCHEME_BLOCKED' };
|
|
32
|
+
if (parsed.username || parsed.password)
|
|
33
|
+
return { allowed: false, reason: 'CREDENTIALS_IN_URL' };
|
|
34
|
+
if (PRIVATE_HOST_RE.test(parsed.hostname))
|
|
35
|
+
return { allowed: false, reason: 'PRIVATE_HOST' };
|
|
36
|
+
if (opts.allowHosts && opts.allowHosts.length > 0) {
|
|
37
|
+
const host = parsed.hostname.toLowerCase();
|
|
38
|
+
const ok = opts.allowHosts.some((h) => {
|
|
39
|
+
const entry = h.toLowerCase();
|
|
40
|
+
return host === entry || host.endsWith(`.${entry}`);
|
|
41
|
+
});
|
|
42
|
+
if (!ok)
|
|
43
|
+
return { allowed: false, reason: 'HOST_NOT_ALLOWLISTED' };
|
|
44
|
+
}
|
|
45
|
+
return { allowed: true };
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Re-validate a redirect: the landing URL must clear the SAME policy as the
|
|
49
|
+
* original navigation. A redirect to a blocked target is a policy violation
|
|
50
|
+
* even though the original request was allowed.
|
|
51
|
+
*/
|
|
52
|
+
export function revalidateRedirect(landedUrl, opts = {}) {
|
|
53
|
+
return isNavigationAllowed(landedUrl, opts);
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=url-policy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"url-policy.js","sourceRoot":"","sources":["../../src/attach/url-policy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAwBH,MAAM,eAAe,GACnB,uIAAuI,CAAC;AAE1I;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,GAAW,EAAE,OAAyB,EAAE;IAC1E,IAAI,GAAG,KAAK,aAAa;QAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACpD,IAAI,MAAW,CAAC;IAChB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;IACrD,CAAC;IACD,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;IACtF,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAC;IAChG,IAAI,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC;IAC7F,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClD,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;QAC3C,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;YACpC,MAAM,KAAK,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;YAC9B,OAAO,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,EAAE;YAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,sBAAsB,EAAE,CAAC;IACrE,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC3B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,SAAiB,EAAE,OAAyB,EAAE;IAC/E,OAAO,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAC9C,CAAC"}
|
package/dist/attach.d.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Barrel for the attach lane (`@framers/agentos-ext-browser-automation/attach`).
|
|
3
|
+
*
|
|
4
|
+
* Everything needed to embed or verify attach sessions: the controller, both
|
|
5
|
+
* backends, the tool factory, structured errors, the DevToolsActivePort
|
|
6
|
+
* parser, and the daemon lane. This file backs the package `exports` subpath
|
|
7
|
+
* the wunderland e2e imports.
|
|
8
|
+
*
|
|
9
|
+
* @module browser-automation/attach
|
|
10
|
+
*/
|
|
11
|
+
export * from './attach/AttachController.js';
|
|
12
|
+
export * from './attach/backends/raw-cdp.js';
|
|
13
|
+
export * from './attach/backends/jxa.js';
|
|
14
|
+
export * from './attach/tools.js';
|
|
15
|
+
export * from './attach/errors.js';
|
|
16
|
+
export * from './attach/devtools-port.js';
|
|
17
|
+
export * from './attach/daemon/index.js';
|
|
18
|
+
//# sourceMappingURL=attach.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attach.d.ts","sourceRoot":"","sources":["../src/attach.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,cAAc,8BAA8B,CAAC;AAC7C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC"}
|
package/dist/attach.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Barrel for the attach lane (`@framers/agentos-ext-browser-automation/attach`).
|
|
3
|
+
*
|
|
4
|
+
* Everything needed to embed or verify attach sessions: the controller, both
|
|
5
|
+
* backends, the tool factory, structured errors, the DevToolsActivePort
|
|
6
|
+
* parser, and the daemon lane. This file backs the package `exports` subpath
|
|
7
|
+
* the wunderland e2e imports.
|
|
8
|
+
*
|
|
9
|
+
* @module browser-automation/attach
|
|
10
|
+
*/
|
|
11
|
+
export * from './attach/AttachController.js';
|
|
12
|
+
export * from './attach/backends/raw-cdp.js';
|
|
13
|
+
export * from './attach/backends/jxa.js';
|
|
14
|
+
export * from './attach/tools.js';
|
|
15
|
+
export * from './attach/errors.js';
|
|
16
|
+
export * from './attach/devtools-port.js';
|
|
17
|
+
export * from './attach/daemon/index.js';
|
|
18
|
+
//# sourceMappingURL=attach.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attach.js","sourceRoot":"","sources":["../src/attach.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,cAAc,8BAA8B,CAAC;AAC7C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC"}
|
|
@@ -1,16 +1,14 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
// @ts-nocheck
|
|
3
2
|
/**
|
|
4
3
|
* @fileoverview 2captcha integration for solving CAPTCHAs.
|
|
5
4
|
*
|
|
6
5
|
* Supports reCAPTCHA v2/v3, hCaptcha, Cloudflare Turnstile, and image captchas.
|
|
7
6
|
*/
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
export class CaptchaSolver {
|
|
8
|
+
name = '2captcha';
|
|
9
|
+
apiKey;
|
|
10
|
+
baseUrl = 'https://2captcha.com';
|
|
11
11
|
constructor(apiKey) {
|
|
12
|
-
this.name = '2captcha';
|
|
13
|
-
this.baseUrl = 'https://2captcha.com';
|
|
14
12
|
this.apiKey = apiKey;
|
|
15
13
|
}
|
|
16
14
|
async solveRecaptchaV2(siteKey, pageUrl) {
|
|
@@ -87,5 +85,4 @@ class CaptchaSolver {
|
|
|
87
85
|
throw new Error('2captcha solve timed out');
|
|
88
86
|
}
|
|
89
87
|
}
|
|
90
|
-
exports.CaptchaSolver = CaptchaSolver;
|
|
91
88
|
//# sourceMappingURL=CaptchaSolver.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CaptchaSolver.js","sourceRoot":"","sources":["../../src/captcha/CaptchaSolver.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"CaptchaSolver.js","sourceRoot":"","sources":["../../src/captcha/CaptchaSolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ICaptchaProvider.js","sourceRoot":"","sources":["../../src/captcha/ICaptchaProvider.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ICaptchaProvider.js","sourceRoot":"","sources":["../../src/captcha/ICaptchaProvider.ts"],"names":[],"mappings":"AAAA,cAAc;AACd;;GAEG"}
|
package/dist/index.d.ts
CHANGED
|
@@ -20,6 +20,36 @@ export interface BrowserAutomationOptions {
|
|
|
20
20
|
height: number;
|
|
21
21
|
};
|
|
22
22
|
secrets?: Record<string, string>;
|
|
23
|
+
/**
|
|
24
|
+
* Opt-in attach mode. When set, the pack ALSO registers the
|
|
25
|
+
* `browser_attach_*` tool family that drives the user's already-running,
|
|
26
|
+
* logged-in browser (never launches one). Default OFF — attach tools touch a
|
|
27
|
+
* real authenticated session, so they must be explicitly enabled per mission
|
|
28
|
+
* (Codex spec review F7/F8). `expectedIdentity` is required and gates the
|
|
29
|
+
* profile the session may claim.
|
|
30
|
+
*/
|
|
31
|
+
attach?: {
|
|
32
|
+
expectedIdentity: string;
|
|
33
|
+
leaseFile?: string;
|
|
34
|
+
profileRoot?: string;
|
|
35
|
+
identityProbeUrl?: string;
|
|
36
|
+
/**
|
|
37
|
+
* 'jxa' (macOS, default) runs an in-process AttachController; 'cdp' routes
|
|
38
|
+
* every tool through the persistent attach DAEMON's held session (one
|
|
39
|
+
* process touches the network, one macOS prompt per daemon lifetime).
|
|
40
|
+
*/
|
|
41
|
+
transport?: 'jxa' | 'cdp';
|
|
42
|
+
/** Optional https host allowlist for navigation. */
|
|
43
|
+
allowHosts?: string[];
|
|
44
|
+
/** Start in dry-run (simulate navigation/reads without touching the browser). */
|
|
45
|
+
dryRun?: boolean;
|
|
46
|
+
/** Per-operation deadline in ms (default 45s). */
|
|
47
|
+
deadlineMs?: number;
|
|
48
|
+
/** IPC dir override for the cdp/daemon transport. */
|
|
49
|
+
ipcDir?: string;
|
|
50
|
+
/** Autostart the daemon ONCE when down (cdp transport; default off, never retries). */
|
|
51
|
+
autostart?: boolean;
|
|
52
|
+
};
|
|
23
53
|
}
|
|
24
54
|
export interface ExtensionContext {
|
|
25
55
|
options?: Record<string, unknown>;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA;;;;;;;;GAQG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAYrD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
// @ts-nocheck
|
|
3
2
|
/**
|
|
4
3
|
* @fileoverview Browser Automation Extension for AgentOS.
|
|
@@ -9,25 +8,25 @@
|
|
|
9
8
|
*
|
|
10
9
|
* @module @framers/agentos-ext-browser-automation
|
|
11
10
|
*/
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
11
|
+
import { BrowserService } from './BrowserService.js';
|
|
12
|
+
import { NavigateTool } from './tools/NavigateTool.js';
|
|
13
|
+
import { ClickTool } from './tools/ClickTool.js';
|
|
14
|
+
import { FillTool } from './tools/FillTool.js';
|
|
15
|
+
import { ScreenshotTool } from './tools/ScreenshotTool.js';
|
|
16
|
+
import { ExtractTool } from './tools/ExtractTool.js';
|
|
17
|
+
import { WaitTool } from './tools/WaitTool.js';
|
|
18
|
+
import { ScrollTool } from './tools/ScrollTool.js';
|
|
19
|
+
import { PageSnapshotTool } from './tools/PageSnapshotTool.js';
|
|
20
|
+
import { EvaluateTool } from './tools/EvaluateTool.js';
|
|
21
|
+
import { SessionTool } from './tools/SessionTool.js';
|
|
22
|
+
import { CaptchaSolver } from './captcha/CaptchaSolver.js';
|
|
23
|
+
import { ProxyManager } from './proxy/ProxyManager.js';
|
|
24
|
+
import { AttachController } from './attach/AttachController.js';
|
|
25
|
+
import { JxaBackend } from './attach/backends/jxa.js';
|
|
26
|
+
import { DaemonAttachSurface } from './attach/daemon/surface.js';
|
|
27
|
+
import { createAttachTools } from './attach/tools.js';
|
|
28
|
+
import { homedir } from 'node:os';
|
|
29
|
+
import { join } from 'node:path';
|
|
31
30
|
// ---------------------------------------------------------------------------
|
|
32
31
|
// Singleton browser instance (shared across all tools)
|
|
33
32
|
// ---------------------------------------------------------------------------
|
|
@@ -37,50 +36,71 @@ let sharedProxy = null;
|
|
|
37
36
|
// ---------------------------------------------------------------------------
|
|
38
37
|
// Factory
|
|
39
38
|
// ---------------------------------------------------------------------------
|
|
40
|
-
function createExtensionPack(context) {
|
|
39
|
+
export function createExtensionPack(context) {
|
|
41
40
|
const opts = (context.options ?? {});
|
|
42
41
|
const secrets = opts.secrets ?? context.secrets ?? {};
|
|
43
42
|
// Resolve config
|
|
44
43
|
const config = {
|
|
45
44
|
headless: opts.headless ?? true,
|
|
46
|
-
timeout: opts.timeout ??
|
|
45
|
+
timeout: opts.timeout ?? 30_000,
|
|
47
46
|
userDataDir: opts.userDataDir,
|
|
48
47
|
proxyServer: opts.proxyServer,
|
|
49
48
|
viewport: opts.viewport ?? { width: 1280, height: 720 },
|
|
50
49
|
};
|
|
51
50
|
// Create shared service
|
|
52
|
-
const browser = new
|
|
51
|
+
const browser = new BrowserService(config);
|
|
53
52
|
sharedBrowser = browser;
|
|
54
53
|
// Optional captcha solver
|
|
55
54
|
const captchaKey = secrets['twocaptcha.apiKey'] ?? process.env.TWOCAPTCHA_API_KEY;
|
|
56
55
|
if (captchaKey) {
|
|
57
|
-
sharedCaptcha = new
|
|
56
|
+
sharedCaptcha = new CaptchaSolver(captchaKey);
|
|
58
57
|
}
|
|
59
58
|
// Optional proxy manager
|
|
60
59
|
const proxyConfig = secrets['proxy.config'] ?? process.env.PROXY_CONFIG;
|
|
61
60
|
if (proxyConfig) {
|
|
62
61
|
try {
|
|
63
62
|
const parsed = JSON.parse(proxyConfig);
|
|
64
|
-
sharedProxy = new
|
|
63
|
+
sharedProxy = new ProxyManager(parsed);
|
|
65
64
|
}
|
|
66
65
|
catch {
|
|
67
66
|
// Invalid proxy config — skip
|
|
68
67
|
}
|
|
69
68
|
}
|
|
70
69
|
// Create tools
|
|
71
|
-
const navigateTool = new
|
|
72
|
-
const clickTool = new
|
|
73
|
-
const fillTool = new
|
|
74
|
-
const screenshotTool = new
|
|
75
|
-
const extractTool = new
|
|
76
|
-
const waitTool = new
|
|
77
|
-
const scrollTool = new
|
|
78
|
-
const snapshotTool = new
|
|
79
|
-
const evaluateTool = new
|
|
80
|
-
const sessionTool = new
|
|
70
|
+
const navigateTool = new NavigateTool(browser);
|
|
71
|
+
const clickTool = new ClickTool(browser);
|
|
72
|
+
const fillTool = new FillTool(browser);
|
|
73
|
+
const screenshotTool = new ScreenshotTool(browser);
|
|
74
|
+
const extractTool = new ExtractTool(browser);
|
|
75
|
+
const waitTool = new WaitTool(browser);
|
|
76
|
+
const scrollTool = new ScrollTool(browser);
|
|
77
|
+
const snapshotTool = new PageSnapshotTool(browser);
|
|
78
|
+
const evaluateTool = new EvaluateTool(browser);
|
|
79
|
+
const sessionTool = new SessionTool(browser);
|
|
80
|
+
// Opt-in attach tools (default OFF). Built lazily so the launch-mode pack is
|
|
81
|
+
// unaffected when attach is not requested.
|
|
82
|
+
const attachDescriptors = [];
|
|
83
|
+
if (opts.attach?.expectedIdentity) {
|
|
84
|
+
const a = opts.attach;
|
|
85
|
+
// 'cdp' = the persistent daemon's held session (this process never touches
|
|
86
|
+
// the network); 'jxa' (default) = the in-process controller, unchanged.
|
|
87
|
+
const surface = a.transport === 'cdp'
|
|
88
|
+
? new DaemonAttachSurface({ ipcDir: a.ipcDir, autostart: a.autostart })
|
|
89
|
+
: new AttachController({
|
|
90
|
+
backend: new JxaBackend({ profileRoot: a.profileRoot, identityProbeUrl: a.identityProbeUrl }),
|
|
91
|
+
leaseFile: a.leaseFile ?? join(homedir(), '.wunderland', 'attach.lease'),
|
|
92
|
+
expectedIdentity: a.expectedIdentity,
|
|
93
|
+
urlPolicy: a.allowHosts ? { allowHosts: a.allowHosts } : undefined,
|
|
94
|
+
dryRun: a.dryRun,
|
|
95
|
+
deadlineMs: a.deadlineMs,
|
|
96
|
+
});
|
|
97
|
+
for (const tool of createAttachTools(surface)) {
|
|
98
|
+
attachDescriptors.push({ id: tool.id, kind: 'tool', priority: 50, enableByDefault: false, payload: tool });
|
|
99
|
+
}
|
|
100
|
+
}
|
|
81
101
|
return {
|
|
82
102
|
name: '@framers/agentos-ext-browser-automation',
|
|
83
|
-
version: '0.
|
|
103
|
+
version: '0.2.0',
|
|
84
104
|
descriptors: [
|
|
85
105
|
{ id: 'browserNavigate', kind: 'tool', priority: 50, payload: navigateTool },
|
|
86
106
|
{ id: 'browserClick', kind: 'tool', priority: 50, payload: clickTool },
|
|
@@ -92,6 +112,7 @@ function createExtensionPack(context) {
|
|
|
92
112
|
{ id: 'browserSnapshot', kind: 'tool', priority: 50, payload: snapshotTool },
|
|
93
113
|
{ id: 'browserEvaluate', kind: 'tool', priority: 50, payload: evaluateTool },
|
|
94
114
|
{ id: 'browserSession', kind: 'tool', priority: 50, payload: sessionTool },
|
|
115
|
+
...attachDescriptors,
|
|
95
116
|
],
|
|
96
117
|
onActivate: async () => {
|
|
97
118
|
await browser.initialize();
|
|
@@ -107,42 +128,29 @@ function createExtensionPack(context) {
|
|
|
107
128
|
// ---------------------------------------------------------------------------
|
|
108
129
|
// Public exports
|
|
109
130
|
// ---------------------------------------------------------------------------
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
Object.defineProperty(exports, "ScreenshotTool", { enumerable: true, get: function () { return ScreenshotTool_js_2.ScreenshotTool; } });
|
|
124
|
-
var ExtractTool_js_2 = require("./tools/ExtractTool.js");
|
|
125
|
-
Object.defineProperty(exports, "ExtractTool", { enumerable: true, get: function () { return ExtractTool_js_2.ExtractTool; } });
|
|
126
|
-
var WaitTool_js_2 = require("./tools/WaitTool.js");
|
|
127
|
-
Object.defineProperty(exports, "WaitTool", { enumerable: true, get: function () { return WaitTool_js_2.WaitTool; } });
|
|
128
|
-
var ScrollTool_js_2 = require("./tools/ScrollTool.js");
|
|
129
|
-
Object.defineProperty(exports, "ScrollTool", { enumerable: true, get: function () { return ScrollTool_js_2.ScrollTool; } });
|
|
130
|
-
var PageSnapshotTool_js_2 = require("./tools/PageSnapshotTool.js");
|
|
131
|
-
Object.defineProperty(exports, "PageSnapshotTool", { enumerable: true, get: function () { return PageSnapshotTool_js_2.PageSnapshotTool; } });
|
|
132
|
-
var EvaluateTool_js_2 = require("./tools/EvaluateTool.js");
|
|
133
|
-
Object.defineProperty(exports, "EvaluateTool", { enumerable: true, get: function () { return EvaluateTool_js_2.EvaluateTool; } });
|
|
134
|
-
var SessionTool_js_2 = require("./tools/SessionTool.js");
|
|
135
|
-
Object.defineProperty(exports, "SessionTool", { enumerable: true, get: function () { return SessionTool_js_2.SessionTool; } });
|
|
131
|
+
export { BrowserService } from './BrowserService.js';
|
|
132
|
+
export { CaptchaSolver } from './captcha/CaptchaSolver.js';
|
|
133
|
+
export { ProxyManager } from './proxy/ProxyManager.js';
|
|
134
|
+
export { NavigateTool } from './tools/NavigateTool.js';
|
|
135
|
+
export { ClickTool } from './tools/ClickTool.js';
|
|
136
|
+
export { FillTool } from './tools/FillTool.js';
|
|
137
|
+
export { ScreenshotTool } from './tools/ScreenshotTool.js';
|
|
138
|
+
export { ExtractTool } from './tools/ExtractTool.js';
|
|
139
|
+
export { WaitTool } from './tools/WaitTool.js';
|
|
140
|
+
export { ScrollTool } from './tools/ScrollTool.js';
|
|
141
|
+
export { PageSnapshotTool } from './tools/PageSnapshotTool.js';
|
|
142
|
+
export { EvaluateTool } from './tools/EvaluateTool.js';
|
|
143
|
+
export { SessionTool } from './tools/SessionTool.js';
|
|
136
144
|
/** Get the shared browser instance (available after extension activation). */
|
|
137
|
-
function getSharedBrowser() {
|
|
145
|
+
export function getSharedBrowser() {
|
|
138
146
|
return sharedBrowser;
|
|
139
147
|
}
|
|
140
148
|
/** Get the shared captcha solver (available if API key is configured). */
|
|
141
|
-
function getSharedCaptcha() {
|
|
149
|
+
export function getSharedCaptcha() {
|
|
142
150
|
return sharedCaptcha;
|
|
143
151
|
}
|
|
144
152
|
/** Get the shared proxy manager (available if proxy config is set). */
|
|
145
|
-
function getSharedProxy() {
|
|
153
|
+
export function getSharedProxy() {
|
|
146
154
|
return sharedProxy;
|
|
147
155
|
}
|
|
148
156
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc;AACd;;;;;;;;GAQG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAoEjC,8EAA8E;AAC9E,uDAAuD;AACvD,8EAA8E;AAE9E,IAAI,aAAa,GAA0B,IAAI,CAAC;AAChD,IAAI,aAAa,GAAyB,IAAI,CAAC;AAC/C,IAAI,WAAW,GAAwB,IAAI,CAAC;AAE5C,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E,MAAM,UAAU,mBAAmB,CAAC,OAAyB;IAC3D,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAA6B,CAAC;IACjE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;IAEtD,iBAAiB;IACjB,MAAM,MAAM,GAAkB;QAC5B,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI;QAC/B,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,MAAM;QAC/B,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE;KACxD,CAAC;IAEF,wBAAwB;IACxB,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC;IAC3C,aAAa,GAAG,OAAO,CAAC;IAExB,0BAA0B;IAC1B,MAAM,UAAU,GAAG,OAAO,CAAC,mBAAmB,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;IAClF,IAAI,UAAU,EAAE,CAAC;QACf,aAAa,GAAG,IAAI,aAAa,CAAC,UAAU,CAAC,CAAC;IAChD,CAAC;IAED,yBAAyB;IACzB,MAAM,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;IACxE,IAAI,WAAW,EAAE,CAAC;QAChB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YACvC,WAAW,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;QACzC,CAAC;QAAC,MAAM,CAAC;YACP,8BAA8B;QAChC,CAAC;IACH,CAAC;IAED,eAAe;IACf,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC;IACvC,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,OAAO,CAAC,CAAC;IACnD,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC;IACvC,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;IAC3C,MAAM,YAAY,GAAG,IAAI,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACnD,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC;IAC/C,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;IAE7C,6EAA6E;IAC7E,2CAA2C;IAC3C,MAAM,iBAAiB,GAAsG,EAAE,CAAC;IAChI,IAAI,IAAI,CAAC,MAAM,EAAE,gBAAgB,EAAE,CAAC;QAClC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;QACtB,2EAA2E;QAC3E,wEAAwE;QACxE,MAAM,OAAO,GAAG,CAAC,CAAC,SAAS,KAAK,KAAK;YACnC,CAAC,CAAC,IAAI,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC;YACvE,CAAC,CAAC,IAAI,gBAAgB,CAAC;gBACnB,OAAO,EAAE,IAAI,UAAU,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,gBAAgB,EAAE,CAAC,CAAC,gBAAgB,EAAE,CAAC;gBAC7F,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,cAAc,CAAC;gBACxE,gBAAgB,EAAE,CAAC,CAAC,gBAAgB;gBACpC,SAAS,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,SAAS;gBAClE,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,UAAU,EAAE,CAAC,CAAC,UAAU;aACzB,CAAC,CAAC;QACP,KAAK,MAAM,IAAI,IAAI,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9C,iBAAiB,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7G,CAAC;IACH,CAAC;IAED,OAAO;QACL,IAAI,EAAE,yCAAyC;QAC/C,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE;YACX,EAAE,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE;YAC5E,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE;YACtE,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE;YACpE,EAAE,EAAE,EAAE,mBAAmB,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE;YAChF,EAAE,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE;YAC1E,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE;YACpE,EAAE,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE;YACxE,EAAE,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE;YAC5E,EAAE,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE;YAC5E,EAAE,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE;YAC1E,GAAG,iBAAiB;SACrB;QACD,UAAU,EAAE,KAAK,IAAI,EAAE;YACrB,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;QAC7B,CAAC;QACD,YAAY,EAAE,KAAK,IAAI,EAAE;YACvB,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC;YACzB,aAAa,GAAG,IAAI,CAAC;YACrB,aAAa,GAAG,IAAI,CAAC;YACrB,WAAW,GAAG,IAAI,CAAC;QACrB,CAAC;KACF,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3D,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,8EAA8E;AAC9E,MAAM,UAAU,gBAAgB;IAC9B,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,gBAAgB;IAC9B,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,cAAc;IAC5B,OAAO,WAAW,CAAC;AACrB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IProxyProvider.js","sourceRoot":"","sources":["../../src/proxy/IProxyProvider.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"IProxyProvider.js","sourceRoot":"","sources":["../../src/proxy/IProxyProvider.ts"],"names":[],"mappings":"AAAA,cAAc;AACd;;GAEG"}
|
|
@@ -1,16 +1,14 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
// @ts-nocheck
|
|
3
2
|
/**
|
|
4
3
|
* @fileoverview Proxy rotation manager with round-robin, random, and sticky strategies.
|
|
5
4
|
*/
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
export class ProxyManager {
|
|
6
|
+
config;
|
|
7
|
+
currentIndex = 0;
|
|
8
|
+
failedServers = new Set();
|
|
9
|
+
stickyProxy = null;
|
|
10
|
+
stickyExpiry = 0;
|
|
9
11
|
constructor(config) {
|
|
10
|
-
this.currentIndex = 0;
|
|
11
|
-
this.failedServers = new Set();
|
|
12
|
-
this.stickyProxy = null;
|
|
13
|
-
this.stickyExpiry = 0;
|
|
14
12
|
this.config = config;
|
|
15
13
|
}
|
|
16
14
|
getProxy() {
|
|
@@ -32,7 +30,7 @@ class ProxyManager {
|
|
|
32
30
|
case 'sticky':
|
|
33
31
|
proxy = available[0];
|
|
34
32
|
this.stickyProxy = proxy;
|
|
35
|
-
this.stickyExpiry = Date.now() + (stickyDurationMs ??
|
|
33
|
+
this.stickyExpiry = Date.now() + (stickyDurationMs ?? 300_000);
|
|
36
34
|
break;
|
|
37
35
|
case 'round-robin':
|
|
38
36
|
default:
|
|
@@ -63,5 +61,4 @@ class ProxyManager {
|
|
|
63
61
|
};
|
|
64
62
|
}
|
|
65
63
|
}
|
|
66
|
-
exports.ProxyManager = ProxyManager;
|
|
67
64
|
//# sourceMappingURL=ProxyManager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProxyManager.js","sourceRoot":"","sources":["../../src/proxy/ProxyManager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ProxyManager.js","sourceRoot":"","sources":["../../src/proxy/ProxyManager.ts"],"names":[],"mappings":"AAAA,cAAc;AACd;;GAEG;AAIH,MAAM,OAAO,YAAY;IACf,MAAM,CAAsB;IAC5B,YAAY,GAAG,CAAC,CAAC;IACjB,aAAa,GAAgB,IAAI,GAAG,EAAE,CAAC;IACvC,WAAW,GAAuB,IAAI,CAAC;IACvC,YAAY,GAAW,CAAC,CAAC;IAEjC,YAAY,MAA2B;QACrC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,QAAQ;QACN,MAAM,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;QAE3D,IAAI,gBAAgB,KAAK,QAAQ,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YACxF,OAAO,IAAI,CAAC,WAAW,CAAC;QAC1B,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QACzF,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,sCAAsC;YACtC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAClC,CAAC;QAED,IAAI,KAAkB,CAAC;QAEvB,QAAQ,gBAAgB,EAAE,CAAC;YACzB,KAAK,QAAQ;gBACX,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;gBAChE,MAAM;YACR,KAAK,QAAQ;gBACX,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;gBACrB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;gBACzB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,gBAAgB,IAAI,OAAO,CAAC,CAAC;gBAC/D,MAAM;YACR,KAAK,aAAa,CAAC;YACnB;gBACE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC;gBACzD,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBACrC,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,MAAM;QACV,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,WAAW;QACT,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QACtB,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;IAED,UAAU,CAAC,MAAc;QACvB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC/B,IAAI,IAAI,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,EAAE,CAAC;YACxC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,QAAQ;QACN,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM;YACnC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;YACxF,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI;SAChC,CAAC;IACJ,CAAC;CACF"}
|