@framers/agentos-ext-browser-automation 0.2.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.js +44 -41
- package/dist/attach/AttachController.js.map +1 -1
- package/dist/attach/backends/jxa.js +29 -62
- package/dist/attach/backends/jxa.js.map +1 -1
- package/dist/attach/backends/raw-cdp.js +32 -35
- package/dist/attach/backends/raw-cdp.js.map +1 -1
- package/dist/attach/daemon/client.js +23 -23
- package/dist/attach/daemon/client.js.map +1 -1
- package/dist/attach/daemon/daemon-lock.js +14 -17
- package/dist/attach/daemon/daemon-lock.js.map +1 -1
- package/dist/attach/daemon/daemon-main.d.ts +11 -0
- package/dist/attach/daemon/daemon-main.d.ts.map +1 -1
- package/dist/attach/daemon/daemon-main.js +37 -18
- package/dist/attach/daemon/daemon-main.js.map +1 -1
- package/dist/attach/daemon/daemon.d.ts.map +1 -1
- package/dist/attach/daemon/daemon.js +41 -32
- package/dist/attach/daemon/daemon.js.map +1 -1
- package/dist/attach/daemon/index.js +7 -25
- package/dist/attach/daemon/index.js.map +1 -1
- package/dist/attach/daemon/protocol.js +33 -45
- package/dist/attach/daemon/protocol.js.map +1 -1
- package/dist/attach/daemon/runner.js +1 -4
- package/dist/attach/daemon/runner.js.map +1 -1
- package/dist/attach/daemon/surface.js +12 -14
- package/dist/attach/daemon/surface.js.map +1 -1
- package/dist/attach/devtools-port.js +1 -4
- package/dist/attach/devtools-port.js.map +1 -1
- package/dist/attach/errors.js +4 -9
- package/dist/attach/errors.js.map +1 -1
- package/dist/attach/lease.js +18 -23
- package/dist/attach/lease.js.map +1 -1
- package/dist/attach/singleton-lock.js +1 -4
- package/dist/attach/singleton-lock.js.map +1 -1
- package/dist/attach/state.js +6 -13
- package/dist/attach/state.js.map +1 -1
- package/dist/attach/tools.js +84 -88
- package/dist/attach/tools.js.map +1 -1
- package/dist/attach/url-policy.js +2 -6
- package/dist/attach/url-policy.js.map +1 -1
- package/dist/attach.js +7 -23
- package/dist/attach.js.map +1 -1
- 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.js +55 -75
- 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 +5 -4
- package/dist/attach/__tests__/AttachController.test.d.ts +0 -2
- package/dist/attach/__tests__/AttachController.test.d.ts.map +0 -1
- package/dist/attach/__tests__/AttachController.test.js +0 -278
- package/dist/attach/__tests__/AttachController.test.js.map +0 -1
- package/dist/attach/__tests__/attach-primitives.test.d.ts +0 -2
- package/dist/attach/__tests__/attach-primitives.test.d.ts.map +0 -1
- package/dist/attach/__tests__/attach-primitives.test.js +0 -158
- package/dist/attach/__tests__/attach-primitives.test.js.map +0 -1
- package/dist/attach/__tests__/jxa-args.test.d.ts +0 -2
- package/dist/attach/__tests__/jxa-args.test.d.ts.map +0 -1
- package/dist/attach/__tests__/jxa-args.test.js +0 -37
- package/dist/attach/__tests__/jxa-args.test.js.map +0 -1
- package/dist/attach/__tests__/pack-registration.test.d.ts +0 -2
- package/dist/attach/__tests__/pack-registration.test.d.ts.map +0 -1
- package/dist/attach/__tests__/pack-registration.test.js +0 -34
- package/dist/attach/__tests__/pack-registration.test.js.map +0 -1
- package/dist/attach/__tests__/tools.test.d.ts +0 -2
- package/dist/attach/__tests__/tools.test.d.ts.map +0 -1
- package/dist/attach/__tests__/tools.test.js +0 -155
- package/dist/attach/__tests__/tools.test.js.map +0 -1
- package/dist/attach/backends/__tests__/raw-cdp.test.d.ts +0 -2
- package/dist/attach/backends/__tests__/raw-cdp.test.d.ts.map +0 -1
- package/dist/attach/backends/__tests__/raw-cdp.test.js +0 -133
- package/dist/attach/backends/__tests__/raw-cdp.test.js.map +0 -1
- package/dist/attach/daemon/__tests__/client.test.d.ts +0 -2
- package/dist/attach/daemon/__tests__/client.test.d.ts.map +0 -1
- package/dist/attach/daemon/__tests__/client.test.js +0 -58
- package/dist/attach/daemon/__tests__/client.test.js.map +0 -1
- package/dist/attach/daemon/__tests__/daemon-lock.test.d.ts +0 -2
- package/dist/attach/daemon/__tests__/daemon-lock.test.d.ts.map +0 -1
- package/dist/attach/daemon/__tests__/daemon-lock.test.js +0 -72
- package/dist/attach/daemon/__tests__/daemon-lock.test.js.map +0 -1
- package/dist/attach/daemon/__tests__/daemon-loop.integration.test.d.ts +0 -2
- package/dist/attach/daemon/__tests__/daemon-loop.integration.test.d.ts.map +0 -1
- package/dist/attach/daemon/__tests__/daemon-loop.integration.test.js +0 -102
- package/dist/attach/daemon/__tests__/daemon-loop.integration.test.js.map +0 -1
- package/dist/attach/daemon/__tests__/harness.d.ts +0 -44
- package/dist/attach/daemon/__tests__/harness.d.ts.map +0 -1
- package/dist/attach/daemon/__tests__/harness.js +0 -96
- package/dist/attach/daemon/__tests__/harness.js.map +0 -1
- package/dist/attach/daemon/__tests__/protocol.test.d.ts +0 -2
- package/dist/attach/daemon/__tests__/protocol.test.d.ts.map +0 -1
- package/dist/attach/daemon/__tests__/protocol.test.js +0 -71
- package/dist/attach/daemon/__tests__/protocol.test.js.map +0 -1
- package/dist/attach/daemon/__tests__/runner.test.d.ts +0 -2
- package/dist/attach/daemon/__tests__/runner.test.d.ts.map +0 -1
- package/dist/attach/daemon/__tests__/runner.test.js +0 -67
- package/dist/attach/daemon/__tests__/runner.test.js.map +0 -1
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,31 +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
|
-
|
|
31
|
-
const AttachController_js_1 = require("./attach/AttachController.js");
|
|
32
|
-
const jxa_js_1 = require("./attach/backends/jxa.js");
|
|
33
|
-
const surface_js_1 = require("./attach/daemon/surface.js");
|
|
34
|
-
const tools_js_1 = require("./attach/tools.js");
|
|
35
|
-
const node_os_1 = require("node:os");
|
|
36
|
-
const node_path_1 = require("node:path");
|
|
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';
|
|
37
30
|
// ---------------------------------------------------------------------------
|
|
38
31
|
// Singleton browser instance (shared across all tools)
|
|
39
32
|
// ---------------------------------------------------------------------------
|
|
@@ -43,47 +36,47 @@ let sharedProxy = null;
|
|
|
43
36
|
// ---------------------------------------------------------------------------
|
|
44
37
|
// Factory
|
|
45
38
|
// ---------------------------------------------------------------------------
|
|
46
|
-
function createExtensionPack(context) {
|
|
39
|
+
export function createExtensionPack(context) {
|
|
47
40
|
const opts = (context.options ?? {});
|
|
48
41
|
const secrets = opts.secrets ?? context.secrets ?? {};
|
|
49
42
|
// Resolve config
|
|
50
43
|
const config = {
|
|
51
44
|
headless: opts.headless ?? true,
|
|
52
|
-
timeout: opts.timeout ??
|
|
45
|
+
timeout: opts.timeout ?? 30_000,
|
|
53
46
|
userDataDir: opts.userDataDir,
|
|
54
47
|
proxyServer: opts.proxyServer,
|
|
55
48
|
viewport: opts.viewport ?? { width: 1280, height: 720 },
|
|
56
49
|
};
|
|
57
50
|
// Create shared service
|
|
58
|
-
const browser = new
|
|
51
|
+
const browser = new BrowserService(config);
|
|
59
52
|
sharedBrowser = browser;
|
|
60
53
|
// Optional captcha solver
|
|
61
54
|
const captchaKey = secrets['twocaptcha.apiKey'] ?? process.env.TWOCAPTCHA_API_KEY;
|
|
62
55
|
if (captchaKey) {
|
|
63
|
-
sharedCaptcha = new
|
|
56
|
+
sharedCaptcha = new CaptchaSolver(captchaKey);
|
|
64
57
|
}
|
|
65
58
|
// Optional proxy manager
|
|
66
59
|
const proxyConfig = secrets['proxy.config'] ?? process.env.PROXY_CONFIG;
|
|
67
60
|
if (proxyConfig) {
|
|
68
61
|
try {
|
|
69
62
|
const parsed = JSON.parse(proxyConfig);
|
|
70
|
-
sharedProxy = new
|
|
63
|
+
sharedProxy = new ProxyManager(parsed);
|
|
71
64
|
}
|
|
72
65
|
catch {
|
|
73
66
|
// Invalid proxy config — skip
|
|
74
67
|
}
|
|
75
68
|
}
|
|
76
69
|
// Create tools
|
|
77
|
-
const navigateTool = new
|
|
78
|
-
const clickTool = new
|
|
79
|
-
const fillTool = new
|
|
80
|
-
const screenshotTool = new
|
|
81
|
-
const extractTool = new
|
|
82
|
-
const waitTool = new
|
|
83
|
-
const scrollTool = new
|
|
84
|
-
const snapshotTool = new
|
|
85
|
-
const evaluateTool = new
|
|
86
|
-
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);
|
|
87
80
|
// Opt-in attach tools (default OFF). Built lazily so the launch-mode pack is
|
|
88
81
|
// unaffected when attach is not requested.
|
|
89
82
|
const attachDescriptors = [];
|
|
@@ -92,16 +85,16 @@ function createExtensionPack(context) {
|
|
|
92
85
|
// 'cdp' = the persistent daemon's held session (this process never touches
|
|
93
86
|
// the network); 'jxa' (default) = the in-process controller, unchanged.
|
|
94
87
|
const surface = a.transport === 'cdp'
|
|
95
|
-
? new
|
|
96
|
-
: new
|
|
97
|
-
backend: new
|
|
98
|
-
leaseFile: a.leaseFile ??
|
|
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'),
|
|
99
92
|
expectedIdentity: a.expectedIdentity,
|
|
100
93
|
urlPolicy: a.allowHosts ? { allowHosts: a.allowHosts } : undefined,
|
|
101
94
|
dryRun: a.dryRun,
|
|
102
95
|
deadlineMs: a.deadlineMs,
|
|
103
96
|
});
|
|
104
|
-
for (const tool of
|
|
97
|
+
for (const tool of createAttachTools(surface)) {
|
|
105
98
|
attachDescriptors.push({ id: tool.id, kind: 'tool', priority: 50, enableByDefault: false, payload: tool });
|
|
106
99
|
}
|
|
107
100
|
}
|
|
@@ -135,42 +128,29 @@ function createExtensionPack(context) {
|
|
|
135
128
|
// ---------------------------------------------------------------------------
|
|
136
129
|
// Public exports
|
|
137
130
|
// ---------------------------------------------------------------------------
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
Object.defineProperty(exports, "ScreenshotTool", { enumerable: true, get: function () { return ScreenshotTool_js_2.ScreenshotTool; } });
|
|
152
|
-
var ExtractTool_js_2 = require("./tools/ExtractTool.js");
|
|
153
|
-
Object.defineProperty(exports, "ExtractTool", { enumerable: true, get: function () { return ExtractTool_js_2.ExtractTool; } });
|
|
154
|
-
var WaitTool_js_2 = require("./tools/WaitTool.js");
|
|
155
|
-
Object.defineProperty(exports, "WaitTool", { enumerable: true, get: function () { return WaitTool_js_2.WaitTool; } });
|
|
156
|
-
var ScrollTool_js_2 = require("./tools/ScrollTool.js");
|
|
157
|
-
Object.defineProperty(exports, "ScrollTool", { enumerable: true, get: function () { return ScrollTool_js_2.ScrollTool; } });
|
|
158
|
-
var PageSnapshotTool_js_2 = require("./tools/PageSnapshotTool.js");
|
|
159
|
-
Object.defineProperty(exports, "PageSnapshotTool", { enumerable: true, get: function () { return PageSnapshotTool_js_2.PageSnapshotTool; } });
|
|
160
|
-
var EvaluateTool_js_2 = require("./tools/EvaluateTool.js");
|
|
161
|
-
Object.defineProperty(exports, "EvaluateTool", { enumerable: true, get: function () { return EvaluateTool_js_2.EvaluateTool; } });
|
|
162
|
-
var SessionTool_js_2 = require("./tools/SessionTool.js");
|
|
163
|
-
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';
|
|
164
144
|
/** Get the shared browser instance (available after extension activation). */
|
|
165
|
-
function getSharedBrowser() {
|
|
145
|
+
export function getSharedBrowser() {
|
|
166
146
|
return sharedBrowser;
|
|
167
147
|
}
|
|
168
148
|
/** Get the shared captcha solver (available if API key is configured). */
|
|
169
|
-
function getSharedCaptcha() {
|
|
149
|
+
export function getSharedCaptcha() {
|
|
170
150
|
return sharedCaptcha;
|
|
171
151
|
}
|
|
172
152
|
/** Get the shared proxy manager (available if proxy config is set). */
|
|
173
|
-
function getSharedProxy() {
|
|
153
|
+
export function getSharedProxy() {
|
|
174
154
|
return sharedProxy;
|
|
175
155
|
}
|
|
176
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":"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"}
|
|
@@ -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"}
|
package/dist/tools/ClickTool.js
CHANGED
|
@@ -1,24 +1,22 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
export class ClickTool {
|
|
2
|
+
browser;
|
|
3
|
+
id = 'browserClick';
|
|
4
|
+
name = 'browserClick';
|
|
5
|
+
displayName = 'Click Element';
|
|
6
|
+
description = 'Click an element on the page by CSS selector, text content, or ARIA role.';
|
|
7
|
+
category = 'browser';
|
|
8
|
+
version = '0.1.0';
|
|
9
|
+
hasSideEffects = true;
|
|
10
|
+
inputSchema = {
|
|
11
|
+
type: 'object',
|
|
12
|
+
properties: {
|
|
13
|
+
selector: { type: 'string', description: 'CSS selector of the element to click' },
|
|
14
|
+
text: { type: 'string', description: 'Text content of the element to click' },
|
|
15
|
+
role: { type: 'string', description: 'ARIA role of the element (e.g., "button", "link")' },
|
|
16
|
+
},
|
|
17
|
+
};
|
|
5
18
|
constructor(browser) {
|
|
6
19
|
this.browser = browser;
|
|
7
|
-
this.id = 'browserClick';
|
|
8
|
-
this.name = 'browserClick';
|
|
9
|
-
this.displayName = 'Click Element';
|
|
10
|
-
this.description = 'Click an element on the page by CSS selector, text content, or ARIA role.';
|
|
11
|
-
this.category = 'browser';
|
|
12
|
-
this.version = '0.1.0';
|
|
13
|
-
this.hasSideEffects = true;
|
|
14
|
-
this.inputSchema = {
|
|
15
|
-
type: 'object',
|
|
16
|
-
properties: {
|
|
17
|
-
selector: { type: 'string', description: 'CSS selector of the element to click' },
|
|
18
|
-
text: { type: 'string', description: 'Text content of the element to click' },
|
|
19
|
-
role: { type: 'string', description: 'ARIA role of the element (e.g., "button", "link")' },
|
|
20
|
-
},
|
|
21
|
-
};
|
|
22
20
|
}
|
|
23
21
|
async execute(args) {
|
|
24
22
|
try {
|
|
@@ -30,5 +28,4 @@ class ClickTool {
|
|
|
30
28
|
}
|
|
31
29
|
}
|
|
32
30
|
}
|
|
33
|
-
exports.ClickTool = ClickTool;
|
|
34
31
|
//# sourceMappingURL=ClickTool.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClickTool.js","sourceRoot":"","sources":["../../src/tools/ClickTool.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ClickTool.js","sourceRoot":"","sources":["../../src/tools/ClickTool.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,SAAS;IAkBA;IAjBX,EAAE,GAAG,cAAc,CAAC;IACpB,IAAI,GAAG,cAAc,CAAC;IACtB,WAAW,GAAG,eAAe,CAAC;IAC9B,WAAW,GAAG,2EAA2E,CAAC;IAC1F,QAAQ,GAAG,SAAS,CAAC;IACrB,OAAO,GAAG,OAAO,CAAC;IAClB,cAAc,GAAG,IAAI,CAAC;IAEtB,WAAW,GAAG;QACrB,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE;YACV,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sCAAsC,EAAE;YACjF,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sCAAsC,EAAE;YAC7E,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mDAAmD,EAAE;SAC3F;KACF,CAAC;IAEF,YAAoB,OAAuB;QAAvB,YAAO,GAAP,OAAO,CAAgB;IAAG,CAAC;IAE/C,KAAK,CAAC,OAAO,CAAC,IAAyD;QACrE,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC/C,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;QAC9B,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"}
|
|
@@ -1,23 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
export class EvaluateTool {
|
|
2
|
+
browser;
|
|
3
|
+
id = 'browserEvaluate';
|
|
4
|
+
name = 'browserEvaluate';
|
|
5
|
+
displayName = 'Evaluate JavaScript';
|
|
6
|
+
description = 'Execute arbitrary JavaScript code in the browser page context and return the result.';
|
|
7
|
+
category = 'browser';
|
|
8
|
+
version = '0.1.0';
|
|
9
|
+
hasSideEffects = true;
|
|
10
|
+
inputSchema = {
|
|
11
|
+
type: 'object',
|
|
12
|
+
properties: {
|
|
13
|
+
script: { type: 'string', description: 'JavaScript code to evaluate in the page context' },
|
|
14
|
+
},
|
|
15
|
+
required: ['script'],
|
|
16
|
+
};
|
|
5
17
|
constructor(browser) {
|
|
6
18
|
this.browser = browser;
|
|
7
|
-
this.id = 'browserEvaluate';
|
|
8
|
-
this.name = 'browserEvaluate';
|
|
9
|
-
this.displayName = 'Evaluate JavaScript';
|
|
10
|
-
this.description = 'Execute arbitrary JavaScript code in the browser page context and return the result.';
|
|
11
|
-
this.category = 'browser';
|
|
12
|
-
this.version = '0.1.0';
|
|
13
|
-
this.hasSideEffects = true;
|
|
14
|
-
this.inputSchema = {
|
|
15
|
-
type: 'object',
|
|
16
|
-
properties: {
|
|
17
|
-
script: { type: 'string', description: 'JavaScript code to evaluate in the page context' },
|
|
18
|
-
},
|
|
19
|
-
required: ['script'],
|
|
20
|
-
};
|
|
21
19
|
}
|
|
22
20
|
async execute(args) {
|
|
23
21
|
try {
|
|
@@ -29,5 +27,4 @@ class EvaluateTool {
|
|
|
29
27
|
}
|
|
30
28
|
}
|
|
31
29
|
}
|
|
32
|
-
exports.EvaluateTool = EvaluateTool;
|
|
33
30
|
//# sourceMappingURL=EvaluateTool.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EvaluateTool.js","sourceRoot":"","sources":["../../src/tools/EvaluateTool.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"EvaluateTool.js","sourceRoot":"","sources":["../../src/tools/EvaluateTool.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,YAAY;IAiBH;IAhBX,EAAE,GAAG,iBAAiB,CAAC;IACvB,IAAI,GAAG,iBAAiB,CAAC;IACzB,WAAW,GAAG,qBAAqB,CAAC;IACpC,WAAW,GAAG,sFAAsF,CAAC;IACrG,QAAQ,GAAG,SAAS,CAAC;IACrB,OAAO,GAAG,OAAO,CAAC;IAClB,cAAc,GAAG,IAAI,CAAC;IAEtB,WAAW,GAAG;QACrB,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE;YACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,iDAAiD,EAAE;SAC3F;QACD,QAAQ,EAAE,CAAC,QAAQ,CAAC;KACrB,CAAC;IAEF,YAAoB,OAAuB;QAAvB,YAAO,GAAP,OAAO,CAAgB;IAAG,CAAC;IAE/C,KAAK,CAAC,OAAO,CAAC,IAAwB;QACpC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACxD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QACzC,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"}
|
|
@@ -1,30 +1,28 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
export class ExtractTool {
|
|
2
|
+
browser;
|
|
3
|
+
id = 'browserExtract';
|
|
4
|
+
name = 'browserExtract';
|
|
5
|
+
displayName = 'Extract Content';
|
|
6
|
+
description = 'Extract text, HTML, or an attribute value from a DOM element matching the given selector.';
|
|
7
|
+
category = 'browser';
|
|
8
|
+
version = '0.1.0';
|
|
9
|
+
hasSideEffects = false;
|
|
10
|
+
inputSchema = {
|
|
11
|
+
type: 'object',
|
|
12
|
+
properties: {
|
|
13
|
+
selector: { type: 'string', description: 'CSS selector of the element to extract from' },
|
|
14
|
+
mode: {
|
|
15
|
+
type: 'string',
|
|
16
|
+
enum: ['text', 'html', 'attribute'],
|
|
17
|
+
description: 'Extraction mode: "text" for visible text, "html" for innerHTML, "attribute" for a specific attribute',
|
|
18
|
+
default: 'text',
|
|
19
|
+
},
|
|
20
|
+
attribute: { type: 'string', description: 'Attribute name to extract (only used when mode is "attribute")' },
|
|
21
|
+
},
|
|
22
|
+
required: ['selector'],
|
|
23
|
+
};
|
|
5
24
|
constructor(browser) {
|
|
6
25
|
this.browser = browser;
|
|
7
|
-
this.id = 'browserExtract';
|
|
8
|
-
this.name = 'browserExtract';
|
|
9
|
-
this.displayName = 'Extract Content';
|
|
10
|
-
this.description = 'Extract text, HTML, or an attribute value from a DOM element matching the given selector.';
|
|
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 of the element to extract from' },
|
|
18
|
-
mode: {
|
|
19
|
-
type: 'string',
|
|
20
|
-
enum: ['text', 'html', 'attribute'],
|
|
21
|
-
description: 'Extraction mode: "text" for visible text, "html" for innerHTML, "attribute" for a specific attribute',
|
|
22
|
-
default: 'text',
|
|
23
|
-
},
|
|
24
|
-
attribute: { type: 'string', description: 'Attribute name to extract (only used when mode is "attribute")' },
|
|
25
|
-
},
|
|
26
|
-
required: ['selector'],
|
|
27
|
-
};
|
|
28
26
|
}
|
|
29
27
|
async execute(args) {
|
|
30
28
|
try {
|
|
@@ -36,5 +34,4 @@ class ExtractTool {
|
|
|
36
34
|
}
|
|
37
35
|
}
|
|
38
36
|
}
|
|
39
|
-
exports.ExtractTool = ExtractTool;
|
|
40
37
|
//# sourceMappingURL=ExtractTool.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExtractTool.js","sourceRoot":"","sources":["../../src/tools/ExtractTool.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ExtractTool.js","sourceRoot":"","sources":["../../src/tools/ExtractTool.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,WAAW;IAwBF;IAvBX,EAAE,GAAG,gBAAgB,CAAC;IACtB,IAAI,GAAG,gBAAgB,CAAC;IACxB,WAAW,GAAG,iBAAiB,CAAC;IAChC,WAAW,GAAG,2FAA2F,CAAC;IAC1G,QAAQ,GAAG,SAAS,CAAC;IACrB,OAAO,GAAG,OAAO,CAAC;IAClB,cAAc,GAAG,KAAK,CAAC;IAEvB,WAAW,GAAG;QACrB,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE;YACV,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,6CAA6C,EAAE;YACxF,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC;gBACnC,WAAW,EAAE,sGAAsG;gBACnH,OAAO,EAAE,MAAM;aAChB;YACD,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,gEAAgE,EAAE;SAC7G;QACD,QAAQ,EAAE,CAAC,UAAU,CAAC;KACvB,CAAC;IAEF,YAAoB,OAAuB;QAAvB,YAAO,GAAP,OAAO,CAAgB;IAAG,CAAC;IAE/C,KAAK,CAAC,OAAO,CAAC,IAAoF;QAChG,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,IAAI,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YAC/F,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QAC1C,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"}
|
package/dist/tools/FillTool.js
CHANGED
|
@@ -1,24 +1,22 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
export class FillTool {
|
|
2
|
+
browser;
|
|
3
|
+
id = 'browserFill';
|
|
4
|
+
name = 'browserFill';
|
|
5
|
+
displayName = 'Fill Input';
|
|
6
|
+
description = 'Fill a form input field with the specified value. Clears existing content first.';
|
|
7
|
+
category = 'browser';
|
|
8
|
+
version = '0.1.0';
|
|
9
|
+
hasSideEffects = true;
|
|
10
|
+
inputSchema = {
|
|
11
|
+
type: 'object',
|
|
12
|
+
properties: {
|
|
13
|
+
selector: { type: 'string', description: 'CSS selector of the input element' },
|
|
14
|
+
value: { type: 'string', description: 'Value to fill into the input' },
|
|
15
|
+
},
|
|
16
|
+
required: ['selector', 'value'],
|
|
17
|
+
};
|
|
5
18
|
constructor(browser) {
|
|
6
19
|
this.browser = browser;
|
|
7
|
-
this.id = 'browserFill';
|
|
8
|
-
this.name = 'browserFill';
|
|
9
|
-
this.displayName = 'Fill Input';
|
|
10
|
-
this.description = 'Fill a form input field with the specified value. Clears existing content first.';
|
|
11
|
-
this.category = 'browser';
|
|
12
|
-
this.version = '0.1.0';
|
|
13
|
-
this.hasSideEffects = true;
|
|
14
|
-
this.inputSchema = {
|
|
15
|
-
type: 'object',
|
|
16
|
-
properties: {
|
|
17
|
-
selector: { type: 'string', description: 'CSS selector of the input element' },
|
|
18
|
-
value: { type: 'string', description: 'Value to fill into the input' },
|
|
19
|
-
},
|
|
20
|
-
required: ['selector', 'value'],
|
|
21
|
-
};
|
|
22
20
|
}
|
|
23
21
|
async execute(args) {
|
|
24
22
|
try {
|
|
@@ -30,5 +28,4 @@ class FillTool {
|
|
|
30
28
|
}
|
|
31
29
|
}
|
|
32
30
|
}
|
|
33
|
-
exports.FillTool = FillTool;
|
|
34
31
|
//# sourceMappingURL=FillTool.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FillTool.js","sourceRoot":"","sources":["../../src/tools/FillTool.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"FillTool.js","sourceRoot":"","sources":["../../src/tools/FillTool.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,QAAQ;IAkBC;IAjBX,EAAE,GAAG,aAAa,CAAC;IACnB,IAAI,GAAG,aAAa,CAAC;IACrB,WAAW,GAAG,YAAY,CAAC;IAC3B,WAAW,GAAG,kFAAkF,CAAC;IACjG,QAAQ,GAAG,SAAS,CAAC;IACrB,OAAO,GAAG,OAAO,CAAC;IAClB,cAAc,GAAG,IAAI,CAAC;IAEtB,WAAW,GAAG;QACrB,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE;YACV,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mCAAmC,EAAE;YAC9E,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,8BAA8B,EAAE;SACvE;QACD,QAAQ,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC;KAChC,CAAC;IAEF,YAAoB,OAAuB;QAAvB,YAAO,GAAP,OAAO,CAAgB;IAAG,CAAC;IAE/C,KAAK,CAAC,OAAO,CAAC,IAAyC;QACrD,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YACnD,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"}
|
|
@@ -1,38 +1,36 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
export class NavigateTool {
|
|
2
|
+
browser;
|
|
3
|
+
id = 'browserNavigate';
|
|
4
|
+
name = 'browserNavigate';
|
|
5
|
+
displayName = 'Navigate to URL';
|
|
6
|
+
description = 'Navigate the browser to a URL and return the page title, status code, and load time.';
|
|
7
|
+
category = 'browser';
|
|
8
|
+
version = '0.1.0';
|
|
9
|
+
hasSideEffects = true;
|
|
10
|
+
inputSchema = {
|
|
11
|
+
type: 'object',
|
|
12
|
+
properties: {
|
|
13
|
+
url: { type: 'string', description: 'The URL to navigate to' },
|
|
14
|
+
waitUntil: {
|
|
15
|
+
type: 'string',
|
|
16
|
+
enum: ['domcontentloaded', 'load', 'networkidle'],
|
|
17
|
+
description: 'When to consider navigation complete',
|
|
18
|
+
default: 'domcontentloaded',
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
required: ['url'],
|
|
22
|
+
};
|
|
23
|
+
outputSchema = {
|
|
24
|
+
type: 'object',
|
|
25
|
+
properties: {
|
|
26
|
+
url: { type: 'string' },
|
|
27
|
+
title: { type: 'string' },
|
|
28
|
+
status: { type: 'number' },
|
|
29
|
+
loadTimeMs: { type: 'number' },
|
|
30
|
+
},
|
|
31
|
+
};
|
|
5
32
|
constructor(browser) {
|
|
6
33
|
this.browser = browser;
|
|
7
|
-
this.id = 'browserNavigate';
|
|
8
|
-
this.name = 'browserNavigate';
|
|
9
|
-
this.displayName = 'Navigate to URL';
|
|
10
|
-
this.description = 'Navigate the browser to a URL and return the page title, status code, and load time.';
|
|
11
|
-
this.category = 'browser';
|
|
12
|
-
this.version = '0.1.0';
|
|
13
|
-
this.hasSideEffects = true;
|
|
14
|
-
this.inputSchema = {
|
|
15
|
-
type: 'object',
|
|
16
|
-
properties: {
|
|
17
|
-
url: { type: 'string', description: 'The URL to navigate to' },
|
|
18
|
-
waitUntil: {
|
|
19
|
-
type: 'string',
|
|
20
|
-
enum: ['domcontentloaded', 'load', 'networkidle'],
|
|
21
|
-
description: 'When to consider navigation complete',
|
|
22
|
-
default: 'domcontentloaded',
|
|
23
|
-
},
|
|
24
|
-
},
|
|
25
|
-
required: ['url'],
|
|
26
|
-
};
|
|
27
|
-
this.outputSchema = {
|
|
28
|
-
type: 'object',
|
|
29
|
-
properties: {
|
|
30
|
-
url: { type: 'string' },
|
|
31
|
-
title: { type: 'string' },
|
|
32
|
-
status: { type: 'number' },
|
|
33
|
-
loadTimeMs: { type: 'number' },
|
|
34
|
-
},
|
|
35
|
-
};
|
|
36
34
|
}
|
|
37
35
|
async execute(args) {
|
|
38
36
|
try {
|
|
@@ -44,5 +42,4 @@ class NavigateTool {
|
|
|
44
42
|
}
|
|
45
43
|
}
|
|
46
44
|
}
|
|
47
|
-
exports.NavigateTool = NavigateTool;
|
|
48
45
|
//# sourceMappingURL=NavigateTool.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NavigateTool.js","sourceRoot":"","sources":["../../src/tools/NavigateTool.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"NavigateTool.js","sourceRoot":"","sources":["../../src/tools/NavigateTool.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,YAAY;IAiCH;IAhCX,EAAE,GAAG,iBAAiB,CAAC;IACvB,IAAI,GAAG,iBAAiB,CAAC;IACzB,WAAW,GAAG,iBAAiB,CAAC;IAChC,WAAW,GAAG,sFAAsF,CAAC;IACrG,QAAQ,GAAG,SAAS,CAAC;IACrB,OAAO,GAAG,OAAO,CAAC;IAClB,cAAc,GAAG,IAAI,CAAC;IAEtB,WAAW,GAAG;QACrB,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE;YACV,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wBAAwB,EAAE;YAC9D,SAAS,EAAE;gBACT,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,kBAAkB,EAAE,MAAM,EAAE,aAAa,CAAC;gBACjD,WAAW,EAAE,sCAAsC;gBACnD,OAAO,EAAE,kBAAkB;aAC5B;SACF;QACD,QAAQ,EAAE,CAAC,KAAK,CAAC;KAClB,CAAC;IAEO,YAAY,GAAG;QACtB,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE;YACV,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACvB,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACzB,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC1B,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SAC/B;KACF,CAAC;IAEF,YAAoB,OAAuB;QAAvB,YAAO,GAAP,OAAO,CAAgB;IAAG,CAAC;IAE/C,KAAK,CAAC,OAAO,CAAC,IAAqB;QACjC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACrD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QACzC,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"}
|