@theia/ai-ide 1.63.2 → 1.64.0-next.17
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/lib/browser/app-tester-chat-agent.d.ts +1 -1
- package/lib/browser/app-tester-chat-agent.d.ts.map +1 -1
- package/lib/browser/app-tester-chat-agent.js +32 -10
- package/lib/browser/app-tester-chat-agent.js.map +1 -1
- package/lib/browser/app-tester-chat-functions.d.ts +25 -0
- package/lib/browser/app-tester-chat-functions.d.ts.map +1 -0
- package/lib/browser/app-tester-chat-functions.js +170 -0
- package/lib/browser/app-tester-chat-functions.js.map +1 -0
- package/lib/browser/frontend-module.d.ts.map +1 -1
- package/lib/browser/frontend-module.js +10 -0
- package/lib/browser/frontend-module.js.map +1 -1
- package/lib/common/app-tester-chat-functions.d.ts +5 -0
- package/lib/common/app-tester-chat-functions.d.ts.map +1 -0
- package/lib/common/app-tester-chat-functions.js +23 -0
- package/lib/common/app-tester-chat-functions.js.map +1 -0
- package/lib/common/browser-automation-protocol.d.ts +15 -0
- package/lib/common/browser-automation-protocol.d.ts.map +1 -0
- package/lib/common/browser-automation-protocol.js +22 -0
- package/lib/common/browser-automation-protocol.js.map +1 -0
- package/lib/node/app-tester-agent/browser-automation-impl.d.ts +18 -0
- package/lib/node/app-tester-agent/browser-automation-impl.d.ts.map +1 -0
- package/lib/node/app-tester-agent/browser-automation-impl.js +96 -0
- package/lib/node/app-tester-agent/browser-automation-impl.js.map +1 -0
- package/lib/node/backend-module.d.ts +4 -0
- package/lib/node/backend-module.d.ts.map +1 -0
- package/lib/node/backend-module.js +35 -0
- package/lib/node/backend-module.js.map +1 -0
- package/package.json +21 -19
- package/src/browser/app-tester-chat-agent.ts +135 -111
- package/src/browser/app-tester-chat-functions.ts +170 -0
- package/src/browser/frontend-module.ts +19 -1
- package/src/common/app-tester-chat-functions.ts +20 -0
- package/src/common/browser-automation-protocol.ts +32 -0
- package/src/node/app-tester-agent/browser-automation-impl.ts +107 -0
- package/src/node/backend-module.ts +38 -0
|
@@ -33,6 +33,6 @@ export declare class AppTesterChatAgent extends AbstractStreamParsingChatAgent {
|
|
|
33
33
|
*
|
|
34
34
|
* @returns A promise that resolves when the server is started
|
|
35
35
|
*/
|
|
36
|
-
|
|
36
|
+
ensureServersStarted(...servers: MCPServerDescription[]): Promise<void>;
|
|
37
37
|
}
|
|
38
38
|
//# sourceMappingURL=app-tester-chat-agent.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-tester-chat-agent.d.ts","sourceRoot":"","sources":["../../src/browser/app-tester-chat-agent.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,8BAA8B,EAAE,MAAM,uCAAuC,CAAC;AACvF,OAAO,EAAiE,uBAAuB,EAA+B,MAAM,sCAAsC,CAAC;AAC3K,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACzF,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,6CAA6C,CAAC;AAIvG,OAAO,EAAmB,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"app-tester-chat-agent.d.ts","sourceRoot":"","sources":["../../src/browser/app-tester-chat-agent.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,8BAA8B,EAAE,MAAM,uCAAuC,CAAC;AACvF,OAAO,EAAiE,uBAAuB,EAA+B,MAAM,sCAAsC,CAAC;AAC3K,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACzF,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,6CAA6C,CAAC;AAIvG,OAAO,EAAmB,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAG7E,eAAO,MAAM,oBAAoB,EAAE,oBAAoB,EAmBtD,CAAC;AAGF,eAAO,MAAM,iBAAiB,EAAE,kBAsC/B,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,kBAGtC,CAAC;AAEF,eAAO,MAAM,oBAAoB,cAAc,CAAC;AAChD,qBACa,kBAAmB,SAAQ,8BAA8B;IAGlE,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAC;IAGlD,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAExD,EAAE,EAAE,MAAM,CAAwB;IAClC,IAAI,SAAwB;IAC5B,yBAAyB,EAAE,wBAAwB,EAAE,CAGlD;IACH,SAAS,CAAC,2BAA2B,EAAE,MAAM,CAAU;IAC9C,WAAW,SACmF;IAE9F,SAAS,EAAE,MAAM,CAA4B;IACvD,UAAmB,cAAc,EAAE,MAAM,CAAuB;IACvD,OAAO;;;;QAA0G;IAEzH;;OAEG;IACY,MAAM,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;cA8CtD,uBAAuB,IAAI,OAAO,CAAC,OAAO,CAAC;cAK3C,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAI7C;;;;OAIG;IACG,oBAAoB,CAAC,GAAG,OAAO,EAAE,oBAAoB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CA4BhF"}
|
|
@@ -26,18 +26,23 @@ const core_1 = require("@theia/core");
|
|
|
26
26
|
const inversify_1 = require("@theia/core/shared/inversify");
|
|
27
27
|
const mcp_preferences_1 = require("@theia/ai-mcp/lib/browser/mcp-preferences");
|
|
28
28
|
const browser_1 = require("@theia/core/lib/browser");
|
|
29
|
+
const app_tester_chat_functions_1 = require("../common/app-tester-chat-functions");
|
|
29
30
|
exports.REQUIRED_MCP_SERVERS = [
|
|
30
31
|
{
|
|
31
32
|
name: 'playwright',
|
|
32
33
|
command: 'npx',
|
|
33
|
-
args: ['-y', '@playwright/mcp@latest'
|
|
34
|
+
args: ['-y', '@playwright/mcp@latest',
|
|
35
|
+
'--cdp-endpoint',
|
|
36
|
+
'http://localhost:9222/'],
|
|
34
37
|
autostart: false,
|
|
35
38
|
env: {},
|
|
36
39
|
},
|
|
37
40
|
{
|
|
38
41
|
name: 'playwright-visual',
|
|
39
42
|
command: 'npx',
|
|
40
|
-
args: ['-y', '@playwright/mcp@latest', '--vision'
|
|
43
|
+
args: ['-y', '@playwright/mcp@latest', '--vision',
|
|
44
|
+
'--cdp-endpoint',
|
|
45
|
+
'http://localhost:9222/'],
|
|
41
46
|
autostart: false,
|
|
42
47
|
env: {},
|
|
43
48
|
}
|
|
@@ -62,6 +67,14 @@ Your role is to inspect the application for user-specified test scenarios throug
|
|
|
62
67
|
You have access to these powerful automation tools:
|
|
63
68
|
${exports.REQUIRED_MCP_SERVERS.map(server => `{{prompt:mcp_${server.name}_tools}}`)}
|
|
64
69
|
|
|
70
|
+
- **~{${app_tester_chat_functions_1.LAUNCH_BROWSER_FUNCTION_ID}}**: Launch the browser. This is required before performing any browser interactions. Always launch a new browser when starting a test session.
|
|
71
|
+
- **~{${app_tester_chat_functions_1.IS_BROWSER_RUNNING_FUNCTION_ID}}**: Check if the browser is running. If a tool fails by saying that the connection failed, you can verify the connection by using this tool.
|
|
72
|
+
- **~{${app_tester_chat_functions_1.CLOSE_BROWSER_FUNCTION_ID}}**: Close the browser.
|
|
73
|
+
- **~{${app_tester_chat_functions_1.QUERY_DOM_FUNCTION_ID}}**: Query the DOM for specific elements and their properties. Only use when explicitly requested by the user.
|
|
74
|
+
- **browser_snapshot**: Capture the current state of the page for verification or debugging purposes.
|
|
75
|
+
|
|
76
|
+
Prefer snapshots for investigating the page.
|
|
77
|
+
|
|
65
78
|
## Workflow Approach
|
|
66
79
|
1. **Understand Requirements**: Ask the user to clearly define what needs to be tested
|
|
67
80
|
2. **Launch Browser**: Start a fresh browser instance for testing
|
|
@@ -142,27 +155,36 @@ let AppTesterChatAgent = class AppTesterChatAgent extends chat_agents_1.Abstract
|
|
|
142
155
|
return allStarted.some(started => !started);
|
|
143
156
|
}
|
|
144
157
|
async startServers() {
|
|
145
|
-
await
|
|
158
|
+
await this.ensureServersStarted(...exports.REQUIRED_MCP_SERVERS);
|
|
146
159
|
}
|
|
147
160
|
/**
|
|
148
161
|
* Starts the Playwright MCP server if it doesn't exist or isn't running.
|
|
149
162
|
*
|
|
150
163
|
* @returns A promise that resolves when the server is started
|
|
151
164
|
*/
|
|
152
|
-
async
|
|
165
|
+
async ensureServersStarted(...servers) {
|
|
153
166
|
try {
|
|
154
|
-
|
|
155
|
-
|
|
167
|
+
const serversToInstall = [];
|
|
168
|
+
const serversToStart = [];
|
|
169
|
+
for (const server of servers) {
|
|
170
|
+
if (!(await this.mcpService.hasServer(server.name))) {
|
|
171
|
+
serversToInstall.push(server);
|
|
172
|
+
}
|
|
173
|
+
if (!(await this.mcpService.isServerStarted(server.name))) {
|
|
174
|
+
serversToStart.push(server);
|
|
175
|
+
}
|
|
156
176
|
}
|
|
157
|
-
|
|
177
|
+
for (const server of serversToInstall) {
|
|
158
178
|
const currentServers = this.preferenceService.get(mcp_preferences_1.MCP_SERVERS_PREF, {});
|
|
159
|
-
await this.preferenceService.set(mcp_preferences_1.MCP_SERVERS_PREF, { ...currentServers, server }, browser_1.PreferenceScope.User);
|
|
179
|
+
await this.preferenceService.set(mcp_preferences_1.MCP_SERVERS_PREF, { ...currentServers, [server.name]: server }, browser_1.PreferenceScope.User);
|
|
160
180
|
await this.mcpService.addOrUpdateServer(server);
|
|
161
181
|
}
|
|
162
|
-
|
|
182
|
+
for (const server of serversToStart) {
|
|
183
|
+
await this.mcpService.startServer(server.name);
|
|
184
|
+
}
|
|
163
185
|
}
|
|
164
186
|
catch (error) {
|
|
165
|
-
this.logger.error(`Error starting MCP
|
|
187
|
+
this.logger.error(`Error starting MCP servers ${servers.map(s => s.name)}: ${error}`);
|
|
166
188
|
throw error;
|
|
167
189
|
}
|
|
168
190
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-tester-chat-agent.js","sourceRoot":"","sources":["../../src/browser/app-tester-chat-agent.ts"],"names":[],"mappings":";AAAA,4BAA4B;;;;AAE5B,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;AAEhF,4CAAkE;AAClE,uEAAuF;AACvF,qEAA2K;AAE3K,oFAAuG;AACvG,sCAAkC;AAClC,4DAAkE;AAClE,+EAA6E;AAC7E,qDAA6E;
|
|
1
|
+
{"version":3,"file":"app-tester-chat-agent.js","sourceRoot":"","sources":["../../src/browser/app-tester-chat-agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { type ToolProvider, type ToolRequest } from '@theia/ai-core';
|
|
2
|
+
import { MCPServerManager } from '@theia/ai-mcp/lib/common';
|
|
3
|
+
import { BrowserAutomation } from '../common/browser-automation-protocol';
|
|
4
|
+
export declare abstract class BrowserAutomationToolProvider implements ToolProvider {
|
|
5
|
+
protected readonly browser: BrowserAutomation;
|
|
6
|
+
abstract getTool(): ToolRequest;
|
|
7
|
+
}
|
|
8
|
+
export declare class LaunchBrowserProvider extends BrowserAutomationToolProvider {
|
|
9
|
+
static ID: string;
|
|
10
|
+
protected readonly mcpServerManager: MCPServerManager;
|
|
11
|
+
getTool(): ToolRequest;
|
|
12
|
+
}
|
|
13
|
+
export declare class CloseBrowserProvider extends BrowserAutomationToolProvider {
|
|
14
|
+
static ID: string;
|
|
15
|
+
getTool(): ToolRequest;
|
|
16
|
+
}
|
|
17
|
+
export declare class IsBrowserRunningProvider extends BrowserAutomationToolProvider {
|
|
18
|
+
static ID: string;
|
|
19
|
+
getTool(): ToolRequest;
|
|
20
|
+
}
|
|
21
|
+
export declare class QueryDomProvider extends BrowserAutomationToolProvider {
|
|
22
|
+
static ID: string;
|
|
23
|
+
getTool(): ToolRequest;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=app-tester-chat-functions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-tester-chat-functions.d.ts","sourceRoot":"","sources":["../../src/browser/app-tester-chat-functions.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,EAA+B,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAGzF,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAE1E,8BACsB,6BAA8B,YAAW,YAAY;IAEvE,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IAE9C,QAAQ,CAAC,OAAO,IAAI,WAAW;CAClC;AAED,qBACa,qBAAsB,SAAQ,6BAA6B;IACpE,MAAM,CAAC,EAAE,SAA8B;IAGvC,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAEtD,OAAO,IAAI,WAAW;CAkDzB;AAED,qBACa,oBAAqB,SAAQ,6BAA6B;IACnE,MAAM,CAAC,EAAE,SAA6B;IAEtC,OAAO,IAAI,WAAW;CAmBzB;AAED,qBACa,wBAAyB,SAAQ,6BAA6B;IACvE,MAAM,CAAC,EAAE,SAAkC;IAE3C,OAAO,IAAI,WAAW;CAoBzB;AAED,qBACa,gBAAiB,SAAQ,6BAA6B;IAC/D,MAAM,CAAC,EAAE,SAAyB;IAElC,OAAO,IAAI,WAAW;CA0BzB"}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var LaunchBrowserProvider_1, CloseBrowserProvider_1, IsBrowserRunningProvider_1, QueryDomProvider_1;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.QueryDomProvider = exports.IsBrowserRunningProvider = exports.CloseBrowserProvider = exports.LaunchBrowserProvider = exports.BrowserAutomationToolProvider = void 0;
|
|
5
|
+
const tslib_1 = require("tslib");
|
|
6
|
+
const common_1 = require("@theia/ai-mcp/lib/common");
|
|
7
|
+
const inversify_1 = require("@theia/core/shared/inversify");
|
|
8
|
+
const app_tester_chat_functions_1 = require("../common/app-tester-chat-functions");
|
|
9
|
+
const browser_automation_protocol_1 = require("../common/browser-automation-protocol");
|
|
10
|
+
let BrowserAutomationToolProvider = class BrowserAutomationToolProvider {
|
|
11
|
+
};
|
|
12
|
+
exports.BrowserAutomationToolProvider = BrowserAutomationToolProvider;
|
|
13
|
+
tslib_1.__decorate([
|
|
14
|
+
(0, inversify_1.inject)(browser_automation_protocol_1.BrowserAutomation),
|
|
15
|
+
tslib_1.__metadata("design:type", Object)
|
|
16
|
+
], BrowserAutomationToolProvider.prototype, "browser", void 0);
|
|
17
|
+
exports.BrowserAutomationToolProvider = BrowserAutomationToolProvider = tslib_1.__decorate([
|
|
18
|
+
(0, inversify_1.injectable)()
|
|
19
|
+
], BrowserAutomationToolProvider);
|
|
20
|
+
let LaunchBrowserProvider = LaunchBrowserProvider_1 = class LaunchBrowserProvider extends BrowserAutomationToolProvider {
|
|
21
|
+
getTool() {
|
|
22
|
+
return {
|
|
23
|
+
id: LaunchBrowserProvider_1.ID,
|
|
24
|
+
name: LaunchBrowserProvider_1.ID,
|
|
25
|
+
description: 'Start the browser.',
|
|
26
|
+
parameters: {
|
|
27
|
+
type: 'object',
|
|
28
|
+
properties: {},
|
|
29
|
+
required: []
|
|
30
|
+
}, handler: async () => {
|
|
31
|
+
var _a, _b;
|
|
32
|
+
try {
|
|
33
|
+
const mcp = await this.mcpServerManager.getServerDescription('playwright');
|
|
34
|
+
if (!mcp) {
|
|
35
|
+
throw new Error('No MCP Playwright instance with name playwright found');
|
|
36
|
+
}
|
|
37
|
+
if (!(0, common_1.isLocalMCPServerDescription)(mcp)) {
|
|
38
|
+
throw new Error('The MCP Playwright instance must run locally.');
|
|
39
|
+
}
|
|
40
|
+
const cdpEndpointIndex = (_a = mcp.args) === null || _a === void 0 ? void 0 : _a.findIndex(p => p === '--cdp-endpoint');
|
|
41
|
+
if (!cdpEndpointIndex) {
|
|
42
|
+
throw new Error('No --cdp-endpoint was provided.');
|
|
43
|
+
}
|
|
44
|
+
const cdpEndpoint = (_b = mcp.args) === null || _b === void 0 ? void 0 : _b[cdpEndpointIndex + 1];
|
|
45
|
+
if (!cdpEndpoint) {
|
|
46
|
+
throw new Error('No --cdp-endpoint argument was provided.');
|
|
47
|
+
}
|
|
48
|
+
let remoteDebuggingPort = 9222;
|
|
49
|
+
try {
|
|
50
|
+
const uri = new URL(cdpEndpoint);
|
|
51
|
+
if (uri.port) {
|
|
52
|
+
remoteDebuggingPort = parseInt(uri.port, 10);
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
// Default ports if not specified
|
|
56
|
+
remoteDebuggingPort = uri.protocol === 'https:' ? 443 : 80;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
throw new Error(`Invalid --cdp-endpoint format, URL expected: ${cdpEndpoint}`);
|
|
61
|
+
}
|
|
62
|
+
const result = await this.browser.launch(remoteDebuggingPort);
|
|
63
|
+
return result;
|
|
64
|
+
}
|
|
65
|
+
catch (ex) {
|
|
66
|
+
return (`Failed to starting the browser: ${ex.message}`);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
exports.LaunchBrowserProvider = LaunchBrowserProvider;
|
|
73
|
+
LaunchBrowserProvider.ID = app_tester_chat_functions_1.LAUNCH_BROWSER_FUNCTION_ID;
|
|
74
|
+
tslib_1.__decorate([
|
|
75
|
+
(0, inversify_1.inject)(common_1.MCPServerManager),
|
|
76
|
+
tslib_1.__metadata("design:type", Object)
|
|
77
|
+
], LaunchBrowserProvider.prototype, "mcpServerManager", void 0);
|
|
78
|
+
exports.LaunchBrowserProvider = LaunchBrowserProvider = LaunchBrowserProvider_1 = tslib_1.__decorate([
|
|
79
|
+
(0, inversify_1.injectable)()
|
|
80
|
+
], LaunchBrowserProvider);
|
|
81
|
+
let CloseBrowserProvider = CloseBrowserProvider_1 = class CloseBrowserProvider extends BrowserAutomationToolProvider {
|
|
82
|
+
getTool() {
|
|
83
|
+
return {
|
|
84
|
+
id: CloseBrowserProvider_1.ID,
|
|
85
|
+
name: CloseBrowserProvider_1.ID,
|
|
86
|
+
description: 'Close the browser.',
|
|
87
|
+
parameters: {
|
|
88
|
+
type: 'object',
|
|
89
|
+
properties: {},
|
|
90
|
+
required: []
|
|
91
|
+
},
|
|
92
|
+
handler: async () => {
|
|
93
|
+
try {
|
|
94
|
+
await this.browser.close();
|
|
95
|
+
}
|
|
96
|
+
catch (ex) {
|
|
97
|
+
return (`Failed to close browser: ${ex.message}`);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
exports.CloseBrowserProvider = CloseBrowserProvider;
|
|
104
|
+
CloseBrowserProvider.ID = app_tester_chat_functions_1.CLOSE_BROWSER_FUNCTION_ID;
|
|
105
|
+
exports.CloseBrowserProvider = CloseBrowserProvider = CloseBrowserProvider_1 = tslib_1.__decorate([
|
|
106
|
+
(0, inversify_1.injectable)()
|
|
107
|
+
], CloseBrowserProvider);
|
|
108
|
+
let IsBrowserRunningProvider = IsBrowserRunningProvider_1 = class IsBrowserRunningProvider extends BrowserAutomationToolProvider {
|
|
109
|
+
getTool() {
|
|
110
|
+
return {
|
|
111
|
+
id: IsBrowserRunningProvider_1.ID,
|
|
112
|
+
name: IsBrowserRunningProvider_1.ID,
|
|
113
|
+
description: 'Check if the browser is running.',
|
|
114
|
+
parameters: {
|
|
115
|
+
type: 'object',
|
|
116
|
+
properties: {},
|
|
117
|
+
required: []
|
|
118
|
+
},
|
|
119
|
+
handler: async () => {
|
|
120
|
+
try {
|
|
121
|
+
const isRunning = await this.browser.isRunning();
|
|
122
|
+
return isRunning ? 'Browser is running.' : 'Browser is not running.';
|
|
123
|
+
}
|
|
124
|
+
catch (ex) {
|
|
125
|
+
return (`Failed to check if browser is running: ${ex.message}`);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
};
|
|
131
|
+
exports.IsBrowserRunningProvider = IsBrowserRunningProvider;
|
|
132
|
+
IsBrowserRunningProvider.ID = app_tester_chat_functions_1.IS_BROWSER_RUNNING_FUNCTION_ID;
|
|
133
|
+
exports.IsBrowserRunningProvider = IsBrowserRunningProvider = IsBrowserRunningProvider_1 = tslib_1.__decorate([
|
|
134
|
+
(0, inversify_1.injectable)()
|
|
135
|
+
], IsBrowserRunningProvider);
|
|
136
|
+
let QueryDomProvider = QueryDomProvider_1 = class QueryDomProvider extends BrowserAutomationToolProvider {
|
|
137
|
+
getTool() {
|
|
138
|
+
return {
|
|
139
|
+
id: QueryDomProvider_1.ID,
|
|
140
|
+
name: QueryDomProvider_1.ID,
|
|
141
|
+
description: 'Query the DOM of the active page.',
|
|
142
|
+
parameters: {
|
|
143
|
+
type: 'object',
|
|
144
|
+
properties: {
|
|
145
|
+
selector: {
|
|
146
|
+
type: 'string',
|
|
147
|
+
description: `The selector of the element to get the DOM of. The selector is a
|
|
148
|
+
CSS selector that identifies the element. If not provided, the entire DOM will be returned.`
|
|
149
|
+
}
|
|
150
|
+
},
|
|
151
|
+
required: []
|
|
152
|
+
},
|
|
153
|
+
handler: async (arg) => {
|
|
154
|
+
try {
|
|
155
|
+
const { selector } = JSON.parse(arg);
|
|
156
|
+
return await this.browser.queryDom(selector);
|
|
157
|
+
}
|
|
158
|
+
catch (ex) {
|
|
159
|
+
return (`Failed to get DOM: ${ex.message}`);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
};
|
|
165
|
+
exports.QueryDomProvider = QueryDomProvider;
|
|
166
|
+
QueryDomProvider.ID = app_tester_chat_functions_1.QUERY_DOM_FUNCTION_ID;
|
|
167
|
+
exports.QueryDomProvider = QueryDomProvider = QueryDomProvider_1 = tslib_1.__decorate([
|
|
168
|
+
(0, inversify_1.injectable)()
|
|
169
|
+
], QueryDomProvider);
|
|
170
|
+
//# sourceMappingURL=app-tester-chat-functions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-tester-chat-functions.js","sourceRoot":"","sources":["../../src/browser/app-tester-chat-functions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frontend-module.d.ts","sourceRoot":"","sources":["../../src/browser/frontend-module.ts"],"names":[],"mappings":"AAgBA,OAAO,mCAAmC,CAAC;AAE3C,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;;
|
|
1
|
+
{"version":3,"file":"frontend-module.d.ts","sourceRoot":"","sources":["../../src/browser/frontend-module.ts"],"names":[],"mappings":"AAgBA,OAAO,mCAAmC,CAAC;AAE3C,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;;AAwD/D,wBAqIG"}
|
|
@@ -52,6 +52,8 @@ const task_context_file_storage_service_1 = require("./task-context-file-storage
|
|
|
52
52
|
const task_context_service_1 = require("@theia/ai-chat/lib/browser/task-context-service");
|
|
53
53
|
const core_1 = require("@theia/core");
|
|
54
54
|
const prompt_fragments_configuration_widget_1 = require("./ai-configuration/prompt-fragments-configuration-widget");
|
|
55
|
+
const browser_automation_protocol_1 = require("../common/browser-automation-protocol");
|
|
56
|
+
const app_tester_chat_functions_1 = require("./app-tester-chat-functions");
|
|
55
57
|
exports.default = new inversify_1.ContainerModule((bind, _unbind, _isBound, rebind) => {
|
|
56
58
|
bind(browser_1.PreferenceContribution).toConstantValue({ schema: workspace_preferences_1.WorkspacePreferencesSchema });
|
|
57
59
|
bind(architect_agent_1.ArchitectAgent).toSelf().inSingletonScope();
|
|
@@ -69,6 +71,10 @@ exports.default = new inversify_1.ContainerModule((bind, _unbind, _isBound, rebi
|
|
|
69
71
|
bind(app_tester_chat_agent_1.AppTesterChatAgent).toSelf().inSingletonScope();
|
|
70
72
|
bind(common_2.Agent).toService(app_tester_chat_agent_1.AppTesterChatAgent);
|
|
71
73
|
bind(common_1.ChatAgent).toService(app_tester_chat_agent_1.AppTesterChatAgent);
|
|
74
|
+
bind(browser_automation_protocol_1.BrowserAutomation).toDynamicValue(ctx => {
|
|
75
|
+
const provider = ctx.container.get(browser_1.RemoteConnectionProvider);
|
|
76
|
+
return provider.createProxy(browser_automation_protocol_1.browserAutomationPath);
|
|
77
|
+
}).inSingletonScope();
|
|
72
78
|
bind(command_chat_agents_1.CommandChatAgent).toSelf().inSingletonScope();
|
|
73
79
|
bind(common_2.Agent).toService(command_chat_agents_1.CommandChatAgent);
|
|
74
80
|
bind(common_1.ChatAgent).toService(command_chat_agents_1.CommandChatAgent);
|
|
@@ -98,6 +104,10 @@ exports.default = new inversify_1.ContainerModule((bind, _unbind, _isBound, rebi
|
|
|
98
104
|
createWidget: () => ctx.container.get(ai_configuration_widget_1.AIConfigurationContainerWidget)
|
|
99
105
|
}))
|
|
100
106
|
.inSingletonScope();
|
|
107
|
+
(0, common_2.bindToolProvider)(app_tester_chat_functions_1.LaunchBrowserProvider, bind);
|
|
108
|
+
(0, common_2.bindToolProvider)(app_tester_chat_functions_1.CloseBrowserProvider, bind);
|
|
109
|
+
(0, common_2.bindToolProvider)(app_tester_chat_functions_1.IsBrowserRunningProvider, bind);
|
|
110
|
+
(0, common_2.bindToolProvider)(app_tester_chat_functions_1.QueryDomProvider, bind);
|
|
101
111
|
(0, browser_1.bindViewContribution)(bind, ai_configuration_view_contribution_1.AIAgentConfigurationViewContribution);
|
|
102
112
|
bind(tab_bar_toolbar_1.TabBarToolbarContribution).toService(ai_configuration_view_contribution_1.AIAgentConfigurationViewContribution);
|
|
103
113
|
bind(variable_configuration_widget_1.AIVariableConfigurationWidget).toSelf();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frontend-module.js","sourceRoot":"","sources":["../../src/browser/frontend-module.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;AAEhF,6CAA2C;AAE3C,4DAA+D;AAC/D,sDAA+F;AAC/F,sDAA4F;AAC5F,uDAAmD;AACnD,+CAA2C;AAC3C,qGAA+F;AAC/F,+DAAkK;AAClK,2EAAsE;AACtE,
|
|
1
|
+
{"version":3,"file":"frontend-module.js","sourceRoot":"","sources":["../../src/browser/frontend-module.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare const LAUNCH_BROWSER_FUNCTION_ID = "launchBrowser";
|
|
2
|
+
export declare const IS_BROWSER_RUNNING_FUNCTION_ID = "isBrowserRunning";
|
|
3
|
+
export declare const CLOSE_BROWSER_FUNCTION_ID = "closeBrowser";
|
|
4
|
+
export declare const QUERY_DOM_FUNCTION_ID = "queryDom";
|
|
5
|
+
//# sourceMappingURL=app-tester-chat-functions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-tester-chat-functions.d.ts","sourceRoot":"","sources":["../../src/common/app-tester-chat-functions.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,0BAA0B,kBAAkB,CAAC;AAC1D,eAAO,MAAM,8BAA8B,qBAAqB,CAAC;AACjE,eAAO,MAAM,yBAAyB,iBAAiB,CAAC;AACxD,eAAO,MAAM,qBAAqB,aAAa,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// *****************************************************************************
|
|
3
|
+
// Copyright (C) 2025 EclipseSource GmbH.
|
|
4
|
+
//
|
|
5
|
+
// This program and the accompanying materials are made available under the
|
|
6
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
7
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
8
|
+
//
|
|
9
|
+
// This Source Code may also be made available under the following Secondary
|
|
10
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
11
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
12
|
+
// with the GNU Classpath Exception which is available at
|
|
13
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
14
|
+
//
|
|
15
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
16
|
+
// *****************************************************************************
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.QUERY_DOM_FUNCTION_ID = exports.CLOSE_BROWSER_FUNCTION_ID = exports.IS_BROWSER_RUNNING_FUNCTION_ID = exports.LAUNCH_BROWSER_FUNCTION_ID = void 0;
|
|
19
|
+
exports.LAUNCH_BROWSER_FUNCTION_ID = 'launchBrowser';
|
|
20
|
+
exports.IS_BROWSER_RUNNING_FUNCTION_ID = 'isBrowserRunning';
|
|
21
|
+
exports.CLOSE_BROWSER_FUNCTION_ID = 'closeBrowser';
|
|
22
|
+
exports.QUERY_DOM_FUNCTION_ID = 'queryDom';
|
|
23
|
+
//# sourceMappingURL=app-tester-chat-functions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-tester-chat-functions.js","sourceRoot":"","sources":["../../src/common/app-tester-chat-functions.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;AAEnE,QAAA,0BAA0B,GAAG,eAAe,CAAC;AAC7C,QAAA,8BAA8B,GAAG,kBAAkB,CAAC;AACpD,QAAA,yBAAyB,GAAG,cAAc,CAAC;AAC3C,QAAA,qBAAqB,GAAG,UAAU,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export declare const browserAutomationPath = "/services/automation/browser";
|
|
2
|
+
export declare const BrowserAutomation: unique symbol;
|
|
3
|
+
export interface BrowserAutomation {
|
|
4
|
+
launch(remoteDebuggingPort: number): Promise<LaunchResult | undefined>;
|
|
5
|
+
isRunning(): Promise<boolean>;
|
|
6
|
+
queryDom(selector?: string): Promise<string>;
|
|
7
|
+
close(): Promise<void>;
|
|
8
|
+
}
|
|
9
|
+
export interface LaunchResult {
|
|
10
|
+
remoteDebuggingPort: number;
|
|
11
|
+
}
|
|
12
|
+
export declare const BrowserAutomationClient: unique symbol;
|
|
13
|
+
export interface BrowserAutomationClient {
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=browser-automation-protocol.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser-automation-protocol.d.ts","sourceRoot":"","sources":["../../src/common/browser-automation-protocol.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,qBAAqB,iCAAiC,CAAC;AACpE,eAAO,MAAM,iBAAiB,eAA8B,CAAC;AAC7D,MAAM,WAAW,iBAAiB;IAC9B,MAAM,CAAC,mBAAmB,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CAAC;IACvE,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AAED,MAAM,WAAW,YAAY;IACzB,mBAAmB,EAAE,MAAM,CAAC;CAC/B;AAED,eAAO,MAAM,uBAAuB,eAAoC,CAAC;AACzE,MAAM,WAAW,uBAAuB;CACvC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// *****************************************************************************
|
|
3
|
+
// Copyright (C) 2025 EclipseSource GmbH.
|
|
4
|
+
//
|
|
5
|
+
// This program and the accompanying materials are made available under the
|
|
6
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
7
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
8
|
+
//
|
|
9
|
+
// This Source Code may also be made available under the following Secondary
|
|
10
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
11
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
12
|
+
// with the GNU Classpath Exception which is available at
|
|
13
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
14
|
+
//
|
|
15
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
16
|
+
// *****************************************************************************
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.BrowserAutomationClient = exports.BrowserAutomation = exports.browserAutomationPath = void 0;
|
|
19
|
+
exports.browserAutomationPath = '/services/automation/browser';
|
|
20
|
+
exports.BrowserAutomation = Symbol('BrowserAutomation');
|
|
21
|
+
exports.BrowserAutomationClient = Symbol('BrowserAutomationClient');
|
|
22
|
+
//# sourceMappingURL=browser-automation-protocol.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser-automation-protocol.js","sourceRoot":"","sources":["../../src/common/browser-automation-protocol.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;AAEnE,QAAA,qBAAqB,GAAG,8BAA8B,CAAC;AACvD,QAAA,iBAAiB,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC;AAYhD,QAAA,uBAAuB,GAAG,MAAM,CAAC,yBAAyB,CAAC,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type RpcServer } from '@theia/core';
|
|
2
|
+
import { Browser, Page } from 'puppeteer-core';
|
|
3
|
+
import type { BrowserAutomation, BrowserAutomationClient, LaunchResult } from '../../common/browser-automation-protocol';
|
|
4
|
+
export declare class BrowserAutomationImpl implements RpcServer<BrowserAutomationClient>, BrowserAutomation {
|
|
5
|
+
protected _browser?: Browser;
|
|
6
|
+
protected _page?: Page;
|
|
7
|
+
protected client?: BrowserAutomationClient;
|
|
8
|
+
protected get browser(): Browser;
|
|
9
|
+
protected get page(): Page;
|
|
10
|
+
isRunning(): Promise<boolean>;
|
|
11
|
+
launch(remoteDebuggingPort: number): Promise<LaunchResult | undefined>;
|
|
12
|
+
close(): Promise<void>;
|
|
13
|
+
queryDom(selector?: string): Promise<string>;
|
|
14
|
+
dispose(): void;
|
|
15
|
+
setClient(client: BrowserAutomationClient | undefined): void;
|
|
16
|
+
getClient?(): BrowserAutomationClient | undefined;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=browser-automation-impl.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser-automation-impl.d.ts","sourceRoot":"","sources":["../../../src/node/app-tester-agent/browser-automation-impl.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,EAAE,OAAO,EAAU,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,0CAA0C,CAAC;AAIzH,qBACa,qBAAsB,YAAW,SAAS,CAAC,uBAAuB,CAAC,EAAE,iBAAiB;IAC/F,SAAS,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC7B,SAAS,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC;IACvB,SAAS,CAAC,MAAM,CAAC,EAAE,uBAAuB,CAAC;IAE3C,SAAS,KAAK,OAAO,IAAI,OAAO,CAK/B;IAED,SAAS,KAAK,IAAI,IAAI,IAAI,CAKzB;IAEK,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAI7B,MAAM,CAAC,mBAAmB,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;IAoBtE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAKtB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAqBlD,OAAO,IAAI,IAAI;IAKf,SAAS,CAAC,MAAM,EAAE,uBAAuB,GAAG,SAAS,GAAG,IAAI;IAI5D,SAAS,CAAC,IAAI,uBAAuB,GAAG,SAAS;CAIpD"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// *****************************************************************************
|
|
3
|
+
// Copyright (C) 2025 EclipseSource GmbH.
|
|
4
|
+
//
|
|
5
|
+
// This program and the accompanying materials are made available under the
|
|
6
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
7
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
8
|
+
//
|
|
9
|
+
// This Source Code may also be made available under the following Secondary
|
|
10
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
11
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
12
|
+
// with the GNU Classpath Exception which is available at
|
|
13
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
14
|
+
//
|
|
15
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
16
|
+
// *****************************************************************************
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.BrowserAutomationImpl = void 0;
|
|
19
|
+
const tslib_1 = require("tslib");
|
|
20
|
+
const inversify_1 = require("@theia/core/shared/inversify");
|
|
21
|
+
const puppeteer_core_1 = require("puppeteer-core");
|
|
22
|
+
const MAX_DOM_LENGTH = 50000;
|
|
23
|
+
let BrowserAutomationImpl = class BrowserAutomationImpl {
|
|
24
|
+
get browser() {
|
|
25
|
+
if (!this._browser) {
|
|
26
|
+
throw new Error('Browser is not launched');
|
|
27
|
+
}
|
|
28
|
+
return this._browser;
|
|
29
|
+
}
|
|
30
|
+
get page() {
|
|
31
|
+
if (!this._page) {
|
|
32
|
+
throw new Error('Page is not created');
|
|
33
|
+
}
|
|
34
|
+
return this._page;
|
|
35
|
+
}
|
|
36
|
+
async isRunning() {
|
|
37
|
+
return this._browser !== undefined && this._browser.connected;
|
|
38
|
+
}
|
|
39
|
+
async launch(remoteDebuggingPort) {
|
|
40
|
+
if (this._browser) {
|
|
41
|
+
await this.close();
|
|
42
|
+
}
|
|
43
|
+
const browser = await (0, puppeteer_core_1.launch)({
|
|
44
|
+
headless: false,
|
|
45
|
+
channel: 'chrome',
|
|
46
|
+
args: [
|
|
47
|
+
`--remote-debugging-port=${remoteDebuggingPort}`
|
|
48
|
+
],
|
|
49
|
+
});
|
|
50
|
+
this._browser = browser;
|
|
51
|
+
// The initial page will be used per default
|
|
52
|
+
this._page = (await browser.pages())[0];
|
|
53
|
+
return {
|
|
54
|
+
remoteDebuggingPort
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
async close() {
|
|
58
|
+
var _a;
|
|
59
|
+
await ((_a = this._browser) === null || _a === void 0 ? void 0 : _a.close());
|
|
60
|
+
this._browser = undefined;
|
|
61
|
+
}
|
|
62
|
+
async queryDom(selector) {
|
|
63
|
+
const page = this.page;
|
|
64
|
+
let content = '';
|
|
65
|
+
if (selector) {
|
|
66
|
+
const element = await page.$(selector);
|
|
67
|
+
if (!element) {
|
|
68
|
+
throw new Error(`Element with selector "${selector}" not found`);
|
|
69
|
+
}
|
|
70
|
+
content = await page.evaluate(el => el.outerHTML, element);
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
content = await page.content();
|
|
74
|
+
}
|
|
75
|
+
if (content.length > MAX_DOM_LENGTH) {
|
|
76
|
+
return 'The queried DOM is too large. Please provide a more specific query.';
|
|
77
|
+
}
|
|
78
|
+
return content;
|
|
79
|
+
}
|
|
80
|
+
dispose() {
|
|
81
|
+
var _a;
|
|
82
|
+
(_a = this._browser) === null || _a === void 0 ? void 0 : _a.close();
|
|
83
|
+
this._browser = undefined;
|
|
84
|
+
}
|
|
85
|
+
setClient(client) {
|
|
86
|
+
this.client = client;
|
|
87
|
+
}
|
|
88
|
+
getClient() {
|
|
89
|
+
return this.client;
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
exports.BrowserAutomationImpl = BrowserAutomationImpl;
|
|
93
|
+
exports.BrowserAutomationImpl = BrowserAutomationImpl = tslib_1.__decorate([
|
|
94
|
+
(0, inversify_1.injectable)()
|
|
95
|
+
], BrowserAutomationImpl);
|
|
96
|
+
//# sourceMappingURL=browser-automation-impl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser-automation-impl.js","sourceRoot":"","sources":["../../../src/node/app-tester-agent/browser-automation-impl.ts"],"names":[],"mappings":"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"}
|