@theia/ai-ide 1.64.0-next.28 → 1.64.0-next.35
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 +3 -6
- package/lib/browser/app-tester-chat-agent.d.ts.map +1 -1
- package/lib/browser/app-tester-chat-agent.js +5 -70
- package/lib/browser/app-tester-chat-agent.js.map +1 -1
- package/lib/browser/app-tester-prompt-template.d.ts +6 -0
- package/lib/browser/app-tester-prompt-template.d.ts.map +1 -0
- package/lib/browser/app-tester-prompt-template.js +79 -0
- package/lib/browser/app-tester-prompt-template.js.map +1 -0
- package/package.json +17 -17
- package/src/browser/app-tester-chat-agent.ts +4 -72
- package/src/browser/app-tester-prompt-template.ts +81 -0
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
import { AbstractStreamParsingChatAgent } from '@theia/ai-chat/lib/common/chat-agents';
|
|
2
2
|
import { MutableChatRequestModel } from '@theia/ai-chat/lib/common/chat-model';
|
|
3
|
-
import {
|
|
3
|
+
import { LanguageModelRequirement } from '@theia/ai-core/lib/common';
|
|
4
4
|
import { MCPFrontendService, MCPServerDescription } from '@theia/ai-mcp/lib/common/mcp-server-manager';
|
|
5
5
|
import { PreferenceService } from '@theia/core/lib/browser';
|
|
6
|
-
export declare const REQUIRED_MCP_SERVERS: MCPServerDescription[];
|
|
7
|
-
export declare const appTesterTemplate: BasePromptFragment;
|
|
8
|
-
export declare const appTesterTemplateVariant: BasePromptFragment;
|
|
9
6
|
export declare const AppTesterChatAgentId = "AppTester";
|
|
10
7
|
export declare class AppTesterChatAgent extends AbstractStreamParsingChatAgent {
|
|
11
8
|
protected readonly mcpService: MCPFrontendService;
|
|
@@ -19,8 +16,8 @@ export declare class AppTesterChatAgent extends AbstractStreamParsingChatAgent {
|
|
|
19
16
|
protected systemPromptId: string;
|
|
20
17
|
prompts: {
|
|
21
18
|
id: string;
|
|
22
|
-
defaultVariant: BasePromptFragment;
|
|
23
|
-
variants: BasePromptFragment[];
|
|
19
|
+
defaultVariant: import("@theia/ai-core/lib/common").BasePromptFragment;
|
|
20
|
+
variants: import("@theia/ai-core/lib/common").BasePromptFragment[];
|
|
24
21
|
}[];
|
|
25
22
|
/**
|
|
26
23
|
* Override invoke to check if the Playwright MCP server is running, and if not, ask the user if it should be started.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-tester-chat-agent.d.ts","sourceRoot":"","sources":["../../src/browser/app-tester-chat-agent.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"app-tester-chat-agent.d.ts","sourceRoot":"","sources":["../../src/browser/app-tester-chat-agent.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,8BAA8B,EAAE,MAAM,uCAAuC,CAAC;AACvF,OAAO,EAAiE,uBAAuB,EAA+B,MAAM,sCAAsC,CAAC;AAC3K,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,6CAA6C,CAAC;AAIvG,OAAO,EAAmB,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAG7E,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;IACtD,UAAmB,cAAc,EAAE,MAAM,CAAuB;IACvD,OAAO;;;;QAA0G;IAE1H;;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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/* eslint-disable max-len */
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.AppTesterChatAgent = exports.AppTesterChatAgentId =
|
|
4
|
+
exports.AppTesterChatAgent = exports.AppTesterChatAgentId = void 0;
|
|
5
5
|
const tslib_1 = require("tslib");
|
|
6
6
|
// *****************************************************************************
|
|
7
7
|
// Copyright (C) 2024 EclipseSource GmbH.
|
|
@@ -18,7 +18,6 @@ const tslib_1 = require("tslib");
|
|
|
18
18
|
//
|
|
19
19
|
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
20
20
|
// *****************************************************************************
|
|
21
|
-
const ai_chat_1 = require("@theia/ai-chat");
|
|
22
21
|
const chat_agents_1 = require("@theia/ai-chat/lib/common/chat-agents");
|
|
23
22
|
const chat_model_1 = require("@theia/ai-chat/lib/common/chat-model");
|
|
24
23
|
const mcp_server_manager_1 = require("@theia/ai-mcp/lib/common/mcp-server-manager");
|
|
@@ -26,71 +25,7 @@ const core_1 = require("@theia/core");
|
|
|
26
25
|
const inversify_1 = require("@theia/core/shared/inversify");
|
|
27
26
|
const mcp_preferences_1 = require("@theia/ai-mcp/lib/browser/mcp-preferences");
|
|
28
27
|
const browser_1 = require("@theia/core/lib/browser");
|
|
29
|
-
const
|
|
30
|
-
exports.REQUIRED_MCP_SERVERS = [
|
|
31
|
-
{
|
|
32
|
-
name: 'playwright',
|
|
33
|
-
command: 'npx',
|
|
34
|
-
args: ['-y', '@playwright/mcp@latest',
|
|
35
|
-
'--cdp-endpoint',
|
|
36
|
-
'http://localhost:9222/'],
|
|
37
|
-
autostart: false,
|
|
38
|
-
env: {},
|
|
39
|
-
},
|
|
40
|
-
{
|
|
41
|
-
name: 'playwright-visual',
|
|
42
|
-
command: 'npx',
|
|
43
|
-
args: ['-y', '@playwright/mcp@latest', '--vision',
|
|
44
|
-
'--cdp-endpoint',
|
|
45
|
-
'http://localhost:9222/'],
|
|
46
|
-
autostart: false,
|
|
47
|
-
env: {},
|
|
48
|
-
}
|
|
49
|
-
];
|
|
50
|
-
// Prompt templates
|
|
51
|
-
exports.appTesterTemplate = {
|
|
52
|
-
id: 'app-tester-system-default',
|
|
53
|
-
template: `{{!-- This prompt is licensed under the MIT License (https://opensource.org/license/mit).
|
|
54
|
-
Made improvements or adaptations to this prompt template? We'd love for you to share it with the community! Contribute back here:
|
|
55
|
-
https://github.com/eclipse-theia/theia/discussions/new?category=prompt-template-contribution --}}
|
|
56
|
-
|
|
57
|
-
You are AppTester, an AI assistant integrated into Theia IDE specifically designed to help developers test running applications using Playwright.
|
|
58
|
-
Your role is to inspect the application for user-specified test scenarios through the Playwright MCP server.
|
|
59
|
-
|
|
60
|
-
## Your Workflow
|
|
61
|
-
1. Help the user build and launch their application
|
|
62
|
-
2. Use Playwright browser automation to validate test scenarios
|
|
63
|
-
3. Report results and provide actionable feedback
|
|
64
|
-
4. Help fix issues when needed
|
|
65
|
-
|
|
66
|
-
## Available Playwright Testing Tools
|
|
67
|
-
You have access to these powerful automation tools:
|
|
68
|
-
${exports.REQUIRED_MCP_SERVERS.map(server => `{{prompt:mcp_${server.name}_tools}}`)}
|
|
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
|
-
|
|
78
|
-
## Workflow Approach
|
|
79
|
-
1. **Understand Requirements**: Ask the user to clearly define what needs to be tested
|
|
80
|
-
2. **Launch Browser**: Start a fresh browser instance for testing
|
|
81
|
-
3. **Navigate and Test**: Execute the test scenario methodically
|
|
82
|
-
4. **Document Results**: Provide detailed results with screenshots when helpful
|
|
83
|
-
5. **Clean Up**: Always close the browser when testing is complete
|
|
84
|
-
|
|
85
|
-
## Current Context
|
|
86
|
-
Some files and other pieces of data may have been added by the user to the context of the chat. If any have, the details can be found below.
|
|
87
|
-
{{${ai_chat_1.CHAT_CONTEXT_DETAILS_VARIABLE_ID}}}
|
|
88
|
-
`
|
|
89
|
-
};
|
|
90
|
-
exports.appTesterTemplateVariant = {
|
|
91
|
-
id: 'app-tester-system-empty',
|
|
92
|
-
template: '',
|
|
93
|
-
};
|
|
28
|
+
const app_tester_prompt_template_1 = require("./app-tester-prompt-template");
|
|
94
29
|
exports.AppTesterChatAgentId = 'AppTester';
|
|
95
30
|
let AppTesterChatAgent = class AppTesterChatAgent extends chat_agents_1.AbstractStreamParsingChatAgent {
|
|
96
31
|
constructor() {
|
|
@@ -106,7 +41,7 @@ let AppTesterChatAgent = class AppTesterChatAgent extends chat_agents_1.Abstract
|
|
|
106
41
|
+ 'It can automate testing workflows and provide detailed feedback on application functionality.');
|
|
107
42
|
this.iconClass = 'codicon codicon-beaker';
|
|
108
43
|
this.systemPromptId = 'app-tester-system';
|
|
109
|
-
this.prompts = [{ id: 'app-tester-system', defaultVariant:
|
|
44
|
+
this.prompts = [{ id: 'app-tester-system', defaultVariant: app_tester_prompt_template_1.appTesterTemplate, variants: [app_tester_prompt_template_1.appTesterTemplateVariant] }];
|
|
110
45
|
}
|
|
111
46
|
/**
|
|
112
47
|
* Override invoke to check if the Playwright MCP server is running, and if not, ask the user if it should be started.
|
|
@@ -151,11 +86,11 @@ let AppTesterChatAgent = class AppTesterChatAgent extends chat_agents_1.Abstract
|
|
|
151
86
|
}
|
|
152
87
|
}
|
|
153
88
|
async requiresStartingServers() {
|
|
154
|
-
const allStarted = await Promise.all(
|
|
89
|
+
const allStarted = await Promise.all(app_tester_prompt_template_1.REQUIRED_MCP_SERVERS.map(server => this.mcpService.isServerStarted(server.name)));
|
|
155
90
|
return allStarted.some(started => !started);
|
|
156
91
|
}
|
|
157
92
|
async startServers() {
|
|
158
|
-
await this.ensureServersStarted(...
|
|
93
|
+
await this.ensureServersStarted(...app_tester_prompt_template_1.REQUIRED_MCP_SERVERS);
|
|
159
94
|
}
|
|
160
95
|
/**
|
|
161
96
|
* Starts the Playwright MCP server if it doesn't exist or isn't running.
|
|
@@ -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,
|
|
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,6 @@
|
|
|
1
|
+
import { BasePromptFragment } from '@theia/ai-core/lib/common';
|
|
2
|
+
import { MCPServerDescription } from '@theia/ai-mcp/lib/common/mcp-server-manager';
|
|
3
|
+
export declare const REQUIRED_MCP_SERVERS: MCPServerDescription[];
|
|
4
|
+
export declare const appTesterTemplate: BasePromptFragment;
|
|
5
|
+
export declare const appTesterTemplateVariant: BasePromptFragment;
|
|
6
|
+
//# sourceMappingURL=app-tester-prompt-template.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-tester-prompt-template.d.ts","sourceRoot":"","sources":["../../src/browser/app-tester-prompt-template.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAG/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,6CAA6C,CAAC;AAEnF,eAAO,MAAM,oBAAoB,EAAE,oBAAoB,EAmBtD,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,kBAsC/B,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,kBAGtC,CAAC"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/* eslint-disable @typescript-eslint/tslint/config */
|
|
3
|
+
// *****************************************************************************
|
|
4
|
+
// Copyright (C) 2025 EclipseSource GmbH and others.
|
|
5
|
+
//
|
|
6
|
+
// This file is licensed under the MIT License.
|
|
7
|
+
// See LICENSE-MIT.txt in the project root for license information.
|
|
8
|
+
// https://opensource.org/license/mit.
|
|
9
|
+
//
|
|
10
|
+
// SPDX-License-Identifier: MIT
|
|
11
|
+
// *****************************************************************************
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.appTesterTemplateVariant = exports.appTesterTemplate = exports.REQUIRED_MCP_SERVERS = void 0;
|
|
14
|
+
const ai_chat_1 = require("@theia/ai-chat");
|
|
15
|
+
const app_tester_chat_functions_1 = require("../common/app-tester-chat-functions");
|
|
16
|
+
exports.REQUIRED_MCP_SERVERS = [
|
|
17
|
+
{
|
|
18
|
+
name: 'playwright',
|
|
19
|
+
command: 'npx',
|
|
20
|
+
args: ['-y', '@playwright/mcp@latest',
|
|
21
|
+
'--cdp-endpoint',
|
|
22
|
+
'http://localhost:9222/'],
|
|
23
|
+
autostart: false,
|
|
24
|
+
env: {},
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
name: 'playwright-visual',
|
|
28
|
+
command: 'npx',
|
|
29
|
+
args: ['-y', '@playwright/mcp@latest', '--vision',
|
|
30
|
+
'--cdp-endpoint',
|
|
31
|
+
'http://localhost:9222/'],
|
|
32
|
+
autostart: false,
|
|
33
|
+
env: {},
|
|
34
|
+
}
|
|
35
|
+
];
|
|
36
|
+
exports.appTesterTemplate = {
|
|
37
|
+
id: 'app-tester-system-default',
|
|
38
|
+
template: `{{!-- This prompt is licensed under the MIT License (https://opensource.org/license/mit).
|
|
39
|
+
Made improvements or adaptations to this prompt template? We'd love for you to share it with the community! Contribute back here:
|
|
40
|
+
https://github.com/eclipse-theia/theia/discussions/new?category=prompt-template-contribution --}}
|
|
41
|
+
|
|
42
|
+
You are AppTester, an AI assistant integrated into Theia IDE specifically designed to help developers test running applications using Playwright.
|
|
43
|
+
Your role is to inspect the application for user-specified test scenarios through the Playwright MCP server.
|
|
44
|
+
|
|
45
|
+
## Your Workflow
|
|
46
|
+
1. Help the user build and launch their application
|
|
47
|
+
2. Use Playwright browser automation to validate test scenarios
|
|
48
|
+
3. Report results and provide actionable feedback
|
|
49
|
+
4. Help fix issues when needed
|
|
50
|
+
|
|
51
|
+
## Available Playwright Testing Tools
|
|
52
|
+
You have access to these powerful automation tools:
|
|
53
|
+
${exports.REQUIRED_MCP_SERVERS.map(server => `{{prompt:mcp_${server.name}_tools}}`)}
|
|
54
|
+
|
|
55
|
+
- **~{${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.
|
|
56
|
+
- **~{${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.
|
|
57
|
+
- **~{${app_tester_chat_functions_1.CLOSE_BROWSER_FUNCTION_ID}}**: Close the browser.
|
|
58
|
+
- **~{${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.
|
|
59
|
+
- **browser_snapshot**: Capture the current state of the page for verification or debugging purposes.
|
|
60
|
+
|
|
61
|
+
Prefer snapshots for investigating the page.
|
|
62
|
+
|
|
63
|
+
## Workflow Approach
|
|
64
|
+
1. **Understand Requirements**: Ask the user to clearly define what needs to be tested
|
|
65
|
+
2. **Launch Browser**: Start a fresh browser instance for testing
|
|
66
|
+
3. **Navigate and Test**: Execute the test scenario methodically
|
|
67
|
+
4. **Document Results**: Provide detailed results with screenshots when helpful
|
|
68
|
+
5. **Clean Up**: Always close the browser when testing is complete
|
|
69
|
+
|
|
70
|
+
## Current Context
|
|
71
|
+
Some files and other pieces of data may have been added by the user to the context of the chat. If any have, the details can be found below.
|
|
72
|
+
{{${ai_chat_1.CHAT_CONTEXT_DETAILS_VARIABLE_ID}}}
|
|
73
|
+
`
|
|
74
|
+
};
|
|
75
|
+
exports.appTesterTemplateVariant = {
|
|
76
|
+
id: 'app-tester-system-empty',
|
|
77
|
+
template: '',
|
|
78
|
+
};
|
|
79
|
+
//# sourceMappingURL=app-tester-prompt-template.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-tester-prompt-template.js","sourceRoot":"","sources":["../../src/browser/app-tester-prompt-template.ts"],"names":[],"mappings":";AAAA,qDAAqD;AACrD,gFAAgF;AAChF,oDAAoD;AACpD,EAAE;AACF,+CAA+C;AAC/C,mEAAmE;AACnE,sCAAsC;AACtC,EAAE;AACF,+BAA+B;AAC/B,gFAAgF;;;AAGhF,4CAAkE;AAClE,mFAAmK;AAGtJ,QAAA,oBAAoB,GAA2B;IACxD;QACI,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,CAAC,IAAI,EAAE,wBAAwB;YACjC,gBAAgB;YAChB,wBAAwB,CAAC;QAC7B,SAAS,EAAE,KAAK;QAChB,GAAG,EAAE,EAAE;KACV;IACD;QACI,IAAI,EAAE,mBAAmB;QACzB,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,CAAC,IAAI,EAAE,wBAAwB,EAAE,UAAU;YAC7C,gBAAgB;YAChB,wBAAwB,CAAC;QAC7B,SAAS,EAAE,KAAK;QAChB,GAAG,EAAE,EAAE;KACV;CACJ,CAAC;AAEW,QAAA,iBAAiB,GAAuB;IACjD,EAAE,EAAE,2BAA2B;IAC/B,QAAQ,EAAE;;;;;;;;;;;;;;;EAeZ,4BAAoB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,gBAAgB,MAAM,CAAC,IAAI,UAAU,CAAC;;QAEnE,sDAA0B;QAC1B,0DAA8B;QAC9B,qDAAyB;QACzB,iDAAqB;;;;;;;;;;;;;;IAczB,0CAAgC;CACnC;CACA,CAAC;AAEW,QAAA,wBAAwB,GAAuB;IACxD,EAAE,EAAE,yBAAyB;IAC7B,QAAQ,EAAE,EAAE;CACf,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@theia/ai-ide",
|
|
3
|
-
"version": "1.64.0-next.
|
|
3
|
+
"version": "1.64.0-next.35+c964c3040",
|
|
4
4
|
"description": "AI IDE Agents Extension",
|
|
5
5
|
"license": "EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0",
|
|
6
6
|
"repository": {
|
|
@@ -15,19 +15,19 @@
|
|
|
15
15
|
"theia-extension"
|
|
16
16
|
],
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@theia/ai-chat": "1.64.0-next.
|
|
19
|
-
"@theia/ai-chat-ui": "1.64.0-next.
|
|
20
|
-
"@theia/ai-core": "1.64.0-next.
|
|
21
|
-
"@theia/ai-mcp": "1.64.0-next.
|
|
22
|
-
"@theia/core": "1.64.0-next.
|
|
23
|
-
"@theia/filesystem": "1.64.0-next.
|
|
24
|
-
"@theia/markers": "1.64.0-next.
|
|
25
|
-
"@theia/monaco": "1.64.0-next.
|
|
26
|
-
"@theia/navigator": "1.64.0-next.
|
|
27
|
-
"@theia/search-in-workspace": "1.64.0-next.
|
|
28
|
-
"@theia/task": "1.64.0-next.
|
|
29
|
-
"@theia/terminal": "1.64.0-next.
|
|
30
|
-
"@theia/workspace": "1.64.0-next.
|
|
18
|
+
"@theia/ai-chat": "1.64.0-next.35+c964c3040",
|
|
19
|
+
"@theia/ai-chat-ui": "1.64.0-next.35+c964c3040",
|
|
20
|
+
"@theia/ai-core": "1.64.0-next.35+c964c3040",
|
|
21
|
+
"@theia/ai-mcp": "1.64.0-next.35+c964c3040",
|
|
22
|
+
"@theia/core": "1.64.0-next.35+c964c3040",
|
|
23
|
+
"@theia/filesystem": "1.64.0-next.35+c964c3040",
|
|
24
|
+
"@theia/markers": "1.64.0-next.35+c964c3040",
|
|
25
|
+
"@theia/monaco": "1.64.0-next.35+c964c3040",
|
|
26
|
+
"@theia/navigator": "1.64.0-next.35+c964c3040",
|
|
27
|
+
"@theia/search-in-workspace": "1.64.0-next.35+c964c3040",
|
|
28
|
+
"@theia/task": "1.64.0-next.35+c964c3040",
|
|
29
|
+
"@theia/terminal": "1.64.0-next.35+c964c3040",
|
|
30
|
+
"@theia/workspace": "1.64.0-next.35+c964c3040",
|
|
31
31
|
"date-fns": "^4.1.0",
|
|
32
32
|
"ignore": "^6.0.0",
|
|
33
33
|
"js-yaml": "^4.1.0",
|
|
@@ -38,8 +38,8 @@
|
|
|
38
38
|
"access": "public"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
|
-
"@theia/cli": "1.64.0-next.
|
|
42
|
-
"@theia/test": "1.64.0-next.
|
|
41
|
+
"@theia/cli": "1.64.0-next.35+c964c3040",
|
|
42
|
+
"@theia/test": "1.64.0-next.35+c964c3040"
|
|
43
43
|
},
|
|
44
44
|
"theiaExtensions": [
|
|
45
45
|
{
|
|
@@ -63,5 +63,5 @@
|
|
|
63
63
|
"nyc": {
|
|
64
64
|
"extends": "../../configs/nyc.json"
|
|
65
65
|
},
|
|
66
|
-
"gitHead": "
|
|
66
|
+
"gitHead": "c964c30402a92d5ba662fcafa839af99d8760f53"
|
|
67
67
|
}
|
|
@@ -16,83 +16,15 @@
|
|
|
16
16
|
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
17
17
|
// *****************************************************************************
|
|
18
18
|
|
|
19
|
-
import { CHAT_CONTEXT_DETAILS_VARIABLE_ID } from '@theia/ai-chat';
|
|
20
19
|
import { AbstractStreamParsingChatAgent } from '@theia/ai-chat/lib/common/chat-agents';
|
|
21
20
|
import { ErrorChatResponseContentImpl, MarkdownChatResponseContentImpl, MutableChatRequestModel, QuestionResponseContentImpl } from '@theia/ai-chat/lib/common/chat-model';
|
|
22
|
-
import {
|
|
21
|
+
import { LanguageModelRequirement } from '@theia/ai-core/lib/common';
|
|
23
22
|
import { MCPFrontendService, MCPServerDescription } from '@theia/ai-mcp/lib/common/mcp-server-manager';
|
|
24
23
|
import { nls } from '@theia/core';
|
|
25
24
|
import { inject, injectable } from '@theia/core/shared/inversify';
|
|
26
25
|
import { MCP_SERVERS_PREF } from '@theia/ai-mcp/lib/browser/mcp-preferences';
|
|
27
26
|
import { PreferenceScope, PreferenceService } from '@theia/core/lib/browser';
|
|
28
|
-
import {
|
|
29
|
-
|
|
30
|
-
export const REQUIRED_MCP_SERVERS: MCPServerDescription[] = [
|
|
31
|
-
{
|
|
32
|
-
name: 'playwright',
|
|
33
|
-
command: 'npx',
|
|
34
|
-
args: ['-y', '@playwright/mcp@latest',
|
|
35
|
-
'--cdp-endpoint',
|
|
36
|
-
'http://localhost:9222/'],
|
|
37
|
-
autostart: false,
|
|
38
|
-
env: {},
|
|
39
|
-
},
|
|
40
|
-
{
|
|
41
|
-
name: 'playwright-visual',
|
|
42
|
-
command: 'npx',
|
|
43
|
-
args: ['-y', '@playwright/mcp@latest', '--vision',
|
|
44
|
-
'--cdp-endpoint',
|
|
45
|
-
'http://localhost:9222/'],
|
|
46
|
-
autostart: false,
|
|
47
|
-
env: {},
|
|
48
|
-
}
|
|
49
|
-
];
|
|
50
|
-
|
|
51
|
-
// Prompt templates
|
|
52
|
-
export const appTesterTemplate: BasePromptFragment = {
|
|
53
|
-
id: 'app-tester-system-default',
|
|
54
|
-
template: `{{!-- This prompt is licensed under the MIT License (https://opensource.org/license/mit).
|
|
55
|
-
Made improvements or adaptations to this prompt template? We'd love for you to share it with the community! Contribute back here:
|
|
56
|
-
https://github.com/eclipse-theia/theia/discussions/new?category=prompt-template-contribution --}}
|
|
57
|
-
|
|
58
|
-
You are AppTester, an AI assistant integrated into Theia IDE specifically designed to help developers test running applications using Playwright.
|
|
59
|
-
Your role is to inspect the application for user-specified test scenarios through the Playwright MCP server.
|
|
60
|
-
|
|
61
|
-
## Your Workflow
|
|
62
|
-
1. Help the user build and launch their application
|
|
63
|
-
2. Use Playwright browser automation to validate test scenarios
|
|
64
|
-
3. Report results and provide actionable feedback
|
|
65
|
-
4. Help fix issues when needed
|
|
66
|
-
|
|
67
|
-
## Available Playwright Testing Tools
|
|
68
|
-
You have access to these powerful automation tools:
|
|
69
|
-
${REQUIRED_MCP_SERVERS.map(server => `{{prompt:mcp_${server.name}_tools}}`)}
|
|
70
|
-
|
|
71
|
-
- **~{${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.
|
|
72
|
-
- **~{${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.
|
|
73
|
-
- **~{${CLOSE_BROWSER_FUNCTION_ID}}**: Close the browser.
|
|
74
|
-
- **~{${QUERY_DOM_FUNCTION_ID}}**: Query the DOM for specific elements and their properties. Only use when explicitly requested by the user.
|
|
75
|
-
- **browser_snapshot**: Capture the current state of the page for verification or debugging purposes.
|
|
76
|
-
|
|
77
|
-
Prefer snapshots for investigating the page.
|
|
78
|
-
|
|
79
|
-
## Workflow Approach
|
|
80
|
-
1. **Understand Requirements**: Ask the user to clearly define what needs to be tested
|
|
81
|
-
2. **Launch Browser**: Start a fresh browser instance for testing
|
|
82
|
-
3. **Navigate and Test**: Execute the test scenario methodically
|
|
83
|
-
4. **Document Results**: Provide detailed results with screenshots when helpful
|
|
84
|
-
5. **Clean Up**: Always close the browser when testing is complete
|
|
85
|
-
|
|
86
|
-
## Current Context
|
|
87
|
-
Some files and other pieces of data may have been added by the user to the context of the chat. If any have, the details can be found below.
|
|
88
|
-
{{${CHAT_CONTEXT_DETAILS_VARIABLE_ID}}}
|
|
89
|
-
`
|
|
90
|
-
};
|
|
91
|
-
|
|
92
|
-
export const appTesterTemplateVariant: BasePromptFragment = {
|
|
93
|
-
id: 'app-tester-system-empty',
|
|
94
|
-
template: '',
|
|
95
|
-
};
|
|
27
|
+
import { appTesterTemplate, appTesterTemplateVariant, REQUIRED_MCP_SERVERS } from './app-tester-prompt-template';
|
|
96
28
|
|
|
97
29
|
export const AppTesterChatAgentId = 'AppTester';
|
|
98
30
|
@injectable()
|
|
@@ -115,8 +47,8 @@ export class AppTesterChatAgent extends AbstractStreamParsingChatAgent {
|
|
|
115
47
|
+ 'It can automate testing workflows and provide detailed feedback on application functionality.');
|
|
116
48
|
|
|
117
49
|
override iconClass: string = 'codicon codicon-beaker';
|
|
118
|
-
|
|
119
|
-
|
|
50
|
+
protected override systemPromptId: string = 'app-tester-system';
|
|
51
|
+
override prompts = [{ id: 'app-tester-system', defaultVariant: appTesterTemplate, variants: [appTesterTemplateVariant] }];
|
|
120
52
|
|
|
121
53
|
/**
|
|
122
54
|
* Override invoke to check if the Playwright MCP server is running, and if not, ask the user if it should be started.
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/tslint/config */
|
|
2
|
+
// *****************************************************************************
|
|
3
|
+
// Copyright (C) 2025 EclipseSource GmbH and others.
|
|
4
|
+
//
|
|
5
|
+
// This file is licensed under the MIT License.
|
|
6
|
+
// See LICENSE-MIT.txt in the project root for license information.
|
|
7
|
+
// https://opensource.org/license/mit.
|
|
8
|
+
//
|
|
9
|
+
// SPDX-License-Identifier: MIT
|
|
10
|
+
// *****************************************************************************
|
|
11
|
+
|
|
12
|
+
import { BasePromptFragment } from '@theia/ai-core/lib/common';
|
|
13
|
+
import { CHAT_CONTEXT_DETAILS_VARIABLE_ID } from '@theia/ai-chat';
|
|
14
|
+
import { QUERY_DOM_FUNCTION_ID, LAUNCH_BROWSER_FUNCTION_ID, CLOSE_BROWSER_FUNCTION_ID, IS_BROWSER_RUNNING_FUNCTION_ID } from '../common/app-tester-chat-functions';
|
|
15
|
+
import { MCPServerDescription } from '@theia/ai-mcp/lib/common/mcp-server-manager';
|
|
16
|
+
|
|
17
|
+
export const REQUIRED_MCP_SERVERS: MCPServerDescription[] = [
|
|
18
|
+
{
|
|
19
|
+
name: 'playwright',
|
|
20
|
+
command: 'npx',
|
|
21
|
+
args: ['-y', '@playwright/mcp@latest',
|
|
22
|
+
'--cdp-endpoint',
|
|
23
|
+
'http://localhost:9222/'],
|
|
24
|
+
autostart: false,
|
|
25
|
+
env: {},
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
name: 'playwright-visual',
|
|
29
|
+
command: 'npx',
|
|
30
|
+
args: ['-y', '@playwright/mcp@latest', '--vision',
|
|
31
|
+
'--cdp-endpoint',
|
|
32
|
+
'http://localhost:9222/'],
|
|
33
|
+
autostart: false,
|
|
34
|
+
env: {},
|
|
35
|
+
}
|
|
36
|
+
];
|
|
37
|
+
|
|
38
|
+
export const appTesterTemplate: BasePromptFragment = {
|
|
39
|
+
id: 'app-tester-system-default',
|
|
40
|
+
template: `{{!-- This prompt is licensed under the MIT License (https://opensource.org/license/mit).
|
|
41
|
+
Made improvements or adaptations to this prompt template? We'd love for you to share it with the community! Contribute back here:
|
|
42
|
+
https://github.com/eclipse-theia/theia/discussions/new?category=prompt-template-contribution --}}
|
|
43
|
+
|
|
44
|
+
You are AppTester, an AI assistant integrated into Theia IDE specifically designed to help developers test running applications using Playwright.
|
|
45
|
+
Your role is to inspect the application for user-specified test scenarios through the Playwright MCP server.
|
|
46
|
+
|
|
47
|
+
## Your Workflow
|
|
48
|
+
1. Help the user build and launch their application
|
|
49
|
+
2. Use Playwright browser automation to validate test scenarios
|
|
50
|
+
3. Report results and provide actionable feedback
|
|
51
|
+
4. Help fix issues when needed
|
|
52
|
+
|
|
53
|
+
## Available Playwright Testing Tools
|
|
54
|
+
You have access to these powerful automation tools:
|
|
55
|
+
${REQUIRED_MCP_SERVERS.map(server => `{{prompt:mcp_${server.name}_tools}}`)}
|
|
56
|
+
|
|
57
|
+
- **~{${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.
|
|
58
|
+
- **~{${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.
|
|
59
|
+
- **~{${CLOSE_BROWSER_FUNCTION_ID}}**: Close the browser.
|
|
60
|
+
- **~{${QUERY_DOM_FUNCTION_ID}}**: Query the DOM for specific elements and their properties. Only use when explicitly requested by the user.
|
|
61
|
+
- **browser_snapshot**: Capture the current state of the page for verification or debugging purposes.
|
|
62
|
+
|
|
63
|
+
Prefer snapshots for investigating the page.
|
|
64
|
+
|
|
65
|
+
## Workflow Approach
|
|
66
|
+
1. **Understand Requirements**: Ask the user to clearly define what needs to be tested
|
|
67
|
+
2. **Launch Browser**: Start a fresh browser instance for testing
|
|
68
|
+
3. **Navigate and Test**: Execute the test scenario methodically
|
|
69
|
+
4. **Document Results**: Provide detailed results with screenshots when helpful
|
|
70
|
+
5. **Clean Up**: Always close the browser when testing is complete
|
|
71
|
+
|
|
72
|
+
## Current Context
|
|
73
|
+
Some files and other pieces of data may have been added by the user to the context of the chat. If any have, the details can be found below.
|
|
74
|
+
{{${CHAT_CONTEXT_DETAILS_VARIABLE_ID}}}
|
|
75
|
+
`
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
export const appTesterTemplateVariant: BasePromptFragment = {
|
|
79
|
+
id: 'app-tester-system-empty',
|
|
80
|
+
template: '',
|
|
81
|
+
};
|