retestkit 1.6.2 → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/prompts/index.d.ts.map +1 -1
- package/dist/prompts/index.js +52 -54
- package/dist/prompts/index.js.map +1 -1
- package/dist/prompts/templates/mcp/retest-setup.md +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +1 -2
- package/dist/server.js.map +1 -1
- package/dist/setup/index.js +17 -11
- package/dist/setup/index.js.map +1 -1
- package/dist/tools/retest/index.d.ts +0 -1
- package/dist/tools/retest/index.d.ts.map +1 -1
- package/dist/tools/retest/index.js +0 -1
- package/dist/tools/retest/index.js.map +1 -1
- package/dist/tools/retest/start-analysis.d.ts +37 -2
- package/dist/tools/retest/start-analysis.d.ts.map +1 -1
- package/dist/tools/retest/start-analysis.js +252 -104
- package/dist/tools/retest/start-analysis.js.map +1 -1
- package/package.json +1 -1
- package/dist/tools/retest/setup.d.ts +0 -38
- package/dist/tools/retest/setup.d.ts.map +0 -1
- package/dist/tools/retest/setup.js +0 -126
- package/dist/tools/retest/setup.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAazD,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,KAAK,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;KACpB,CAAC,CAAC;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC;QACvD,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;QAC3B,OAAO,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC;KACzC,CAAC,CAAC,CAAC;CACL;AAED,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,aAAa,GAC9B,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAazD,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,KAAK,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;KACpB,CAAC,CAAC;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC;QACvD,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;QAC3B,OAAO,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC;KACzC,CAAC,CAAC,CAAC;CACL;AAED,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,aAAa,GAC9B,SAAS,EAAE,CA2Pb"}
|
package/dist/prompts/index.js
CHANGED
|
@@ -11,36 +11,69 @@ const retestSetupTemplate = loadTemplate("mcp", "retest-setup");
|
|
|
11
11
|
export function createRetestPrompts(getContext) {
|
|
12
12
|
return [
|
|
13
13
|
{
|
|
14
|
-
name: "
|
|
15
|
-
description: "
|
|
14
|
+
name: "init",
|
|
15
|
+
description: "Initialize retest. With URL: creates analysis workspace for testing. Without URL: sets up /retest shortcuts for your AI coding agent.",
|
|
16
16
|
arguments: [
|
|
17
17
|
{
|
|
18
18
|
name: "url",
|
|
19
|
-
description: "The URL of the web application to test",
|
|
20
|
-
required:
|
|
19
|
+
description: "The URL of the web application to test. If omitted, runs shortcut setup instead.",
|
|
20
|
+
required: false,
|
|
21
21
|
},
|
|
22
22
|
{
|
|
23
23
|
name: "focus",
|
|
24
|
-
description: "Optional focus area (e.g., 'checkout flow', 'user registration')",
|
|
24
|
+
description: "Optional focus area for analysis (e.g., 'checkout flow', 'user registration')",
|
|
25
|
+
required: false,
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
name: "agent",
|
|
29
|
+
description: 'For setup mode: Agent selection ("auto", "all", or specific agent ID)',
|
|
30
|
+
required: false,
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
name: "scope",
|
|
34
|
+
description: 'For setup mode: Installation scope ("workspace", "user", or "both")',
|
|
35
|
+
required: false,
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
name: "dryRun",
|
|
39
|
+
description: "For setup mode: Preview actions without writing files (true/false)",
|
|
25
40
|
required: false,
|
|
26
41
|
},
|
|
27
42
|
],
|
|
28
43
|
async getMessages(args) {
|
|
29
|
-
const url = args.url
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
{
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
44
|
+
const url = args.url;
|
|
45
|
+
if (url) {
|
|
46
|
+
// Analysis workspace mode
|
|
47
|
+
const focus = args.focus ? `\nFocus area: ${args.focus}` : "";
|
|
48
|
+
return [
|
|
49
|
+
{
|
|
50
|
+
role: "user",
|
|
51
|
+
content: {
|
|
52
|
+
type: "text",
|
|
53
|
+
text: interpolate(retestStartTemplate, { url, focus }),
|
|
54
|
+
},
|
|
37
55
|
},
|
|
38
|
-
|
|
39
|
-
|
|
56
|
+
];
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
// Shortcut setup mode
|
|
60
|
+
const agent = args.agent || "auto";
|
|
61
|
+
const scope = args.scope || "workspace";
|
|
62
|
+
const dryRun = args.dryRun === "true" ? "true" : "false";
|
|
63
|
+
return [
|
|
64
|
+
{
|
|
65
|
+
role: "user",
|
|
66
|
+
content: {
|
|
67
|
+
type: "text",
|
|
68
|
+
text: interpolate(retestSetupTemplate, { agent, scope, dryRun }),
|
|
69
|
+
},
|
|
70
|
+
},
|
|
71
|
+
];
|
|
72
|
+
}
|
|
40
73
|
},
|
|
41
74
|
},
|
|
42
75
|
{
|
|
43
|
-
name: "
|
|
76
|
+
name: "crawl",
|
|
44
77
|
description: "Crawl a web application to discover pages and functionality. Requires an existing analysis workspace.",
|
|
45
78
|
arguments: [
|
|
46
79
|
{
|
|
@@ -75,7 +108,7 @@ export function createRetestPrompts(getContext) {
|
|
|
75
108
|
},
|
|
76
109
|
},
|
|
77
110
|
{
|
|
78
|
-
name: "
|
|
111
|
+
name: "discover",
|
|
79
112
|
description: "Discover features and flows in a web application based on crawl data.",
|
|
80
113
|
arguments: [
|
|
81
114
|
{
|
|
@@ -117,7 +150,7 @@ export function createRetestPrompts(getContext) {
|
|
|
117
150
|
},
|
|
118
151
|
},
|
|
119
152
|
{
|
|
120
|
-
name: "
|
|
153
|
+
name: "generate",
|
|
121
154
|
description: "Generate test cases from the application analysis.",
|
|
122
155
|
arguments: [
|
|
123
156
|
{
|
|
@@ -146,7 +179,7 @@ export function createRetestPrompts(getContext) {
|
|
|
146
179
|
},
|
|
147
180
|
},
|
|
148
181
|
{
|
|
149
|
-
name: "
|
|
182
|
+
name: "run",
|
|
150
183
|
description: "Run a specific test case against the web application.",
|
|
151
184
|
arguments: [
|
|
152
185
|
{
|
|
@@ -203,41 +236,6 @@ export function createRetestPrompts(getContext) {
|
|
|
203
236
|
];
|
|
204
237
|
},
|
|
205
238
|
},
|
|
206
|
-
{
|
|
207
|
-
name: "retest:setup",
|
|
208
|
-
description: "Set up /retest shortcut for your AI coding agent. Detects your agent and installs appropriate shortcuts.",
|
|
209
|
-
arguments: [
|
|
210
|
-
{
|
|
211
|
-
name: "agent",
|
|
212
|
-
description: 'Agent selection: "auto" (detect), "all" (install all), or specific agent ID',
|
|
213
|
-
required: false,
|
|
214
|
-
},
|
|
215
|
-
{
|
|
216
|
-
name: "scope",
|
|
217
|
-
description: 'Installation scope: "workspace" (default), "user", or "both"',
|
|
218
|
-
required: false,
|
|
219
|
-
},
|
|
220
|
-
{
|
|
221
|
-
name: "dryRun",
|
|
222
|
-
description: "Preview actions without writing files (true/false)",
|
|
223
|
-
required: false,
|
|
224
|
-
},
|
|
225
|
-
],
|
|
226
|
-
async getMessages(args) {
|
|
227
|
-
const agent = args.agent || "auto";
|
|
228
|
-
const scope = args.scope || "workspace";
|
|
229
|
-
const dryRun = args.dryRun === "true" ? "true" : "false";
|
|
230
|
-
return [
|
|
231
|
-
{
|
|
232
|
-
role: "user",
|
|
233
|
-
content: {
|
|
234
|
-
type: "text",
|
|
235
|
-
text: interpolate(retestSetupTemplate, { agent, scope, dryRun }),
|
|
236
|
-
},
|
|
237
|
-
},
|
|
238
|
-
];
|
|
239
|
-
},
|
|
240
|
-
},
|
|
241
239
|
];
|
|
242
240
|
}
|
|
243
241
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAExD,+CAA+C;AAC/C,MAAM,mBAAmB,GAAG,YAAY,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;AAChE,MAAM,mBAAmB,GAAG,YAAY,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;AAChE,MAAM,sBAAsB,GAAG,YAAY,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;AACtE,MAAM,2BAA2B,GAAG,YAAY,CAAC,KAAK,EAAE,uBAAuB,CAAC,CAAC;AACjF,MAAM,2BAA2B,GAAG,YAAY,CAAC,KAAK,EAAE,uBAAuB,CAAC,CAAC;AACjF,MAAM,qBAAqB,GAAG,YAAY,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;AACrE,MAAM,0BAA0B,GAAG,YAAY,CAAC,KAAK,EAAE,sBAAsB,CAAC,CAAC;AAC/E,MAAM,mBAAmB,GAAG,YAAY,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;AAgBhE,MAAM,UAAU,mBAAmB,CACjC,UAA+B;IAE/B,OAAO;QACL;YACE,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAExD,+CAA+C;AAC/C,MAAM,mBAAmB,GAAG,YAAY,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;AAChE,MAAM,mBAAmB,GAAG,YAAY,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;AAChE,MAAM,sBAAsB,GAAG,YAAY,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;AACtE,MAAM,2BAA2B,GAAG,YAAY,CAAC,KAAK,EAAE,uBAAuB,CAAC,CAAC;AACjF,MAAM,2BAA2B,GAAG,YAAY,CAAC,KAAK,EAAE,uBAAuB,CAAC,CAAC;AACjF,MAAM,qBAAqB,GAAG,YAAY,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;AACrE,MAAM,0BAA0B,GAAG,YAAY,CAAC,KAAK,EAAE,sBAAsB,CAAC,CAAC;AAC/E,MAAM,mBAAmB,GAAG,YAAY,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;AAgBhE,MAAM,UAAU,mBAAmB,CACjC,UAA+B;IAE/B,OAAO;QACL;YACE,IAAI,EAAE,MAAM;YACZ,WAAW,EACT,uIAAuI;YACzI,SAAS,EAAE;gBACT;oBACE,IAAI,EAAE,KAAK;oBACX,WAAW,EAAE,kFAAkF;oBAC/F,QAAQ,EAAE,KAAK;iBAChB;gBACD;oBACE,IAAI,EAAE,OAAO;oBACb,WAAW,EACT,+EAA+E;oBACjF,QAAQ,EAAE,KAAK;iBAChB;gBACD;oBACE,IAAI,EAAE,OAAO;oBACb,WAAW,EACT,uEAAuE;oBACzE,QAAQ,EAAE,KAAK;iBAChB;gBACD;oBACE,IAAI,EAAE,OAAO;oBACb,WAAW,EAAE,qEAAqE;oBAClF,QAAQ,EAAE,KAAK;iBAChB;gBACD;oBACE,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,oEAAoE;oBACjF,QAAQ,EAAE,KAAK;iBAChB;aACF;YACD,KAAK,CAAC,WAAW,CAAC,IAAI;gBACpB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;gBAErB,IAAI,GAAG,EAAE,CAAC;oBACR,0BAA0B;oBAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,iBAAiB,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC9D,OAAO;wBACL;4BACE,IAAI,EAAE,MAAM;4BACZ,OAAO,EAAE;gCACP,IAAI,EAAE,MAAM;gCACZ,IAAI,EAAE,WAAW,CAAC,mBAAmB,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;6BACvD;yBACF;qBACF,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,sBAAsB;oBACtB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC;oBACnC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,WAAW,CAAC;oBACxC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;oBAEzD,OAAO;wBACL;4BACE,IAAI,EAAE,MAAM;4BACZ,OAAO,EAAE;gCACP,IAAI,EAAE,MAAM;gCACZ,IAAI,EAAE,WAAW,CAAC,mBAAmB,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;6BACjE;yBACF;qBACF,CAAC;gBACJ,CAAC;YACH,CAAC;SACF;QAED;YACE,IAAI,EAAE,OAAO;YACb,WAAW,EACT,uGAAuG;YACzG,SAAS,EAAE;gBACT;oBACE,IAAI,EAAE,YAAY;oBAClB,WAAW,EAAE,kCAAkC;oBAC/C,QAAQ,EAAE,IAAI;iBACf;gBACD;oBACE,IAAI,EAAE,MAAM;oBACZ,WAAW,EAAE,sCAAsC;oBACnD,QAAQ,EAAE,IAAI;iBACf;gBACD;oBACE,IAAI,EAAE,UAAU;oBAChB,WAAW,EACT,iEAAiE;oBACnE,QAAQ,EAAE,KAAK;iBAChB;aACF;YACD,KAAK,CAAC,WAAW,CAAC,IAAI;gBACpB,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,cAAc,CAAC;gBACrD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,gCAAgC,CAAC;gBAC3D,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,eAAe,CAAC;gBAElD,OAAO;oBACL;wBACE,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE;4BACP,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,WAAW,CAAC,mBAAmB,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;yBACvE;qBACF;iBACF,CAAC;YACJ,CAAC;SACF;QAED;YACE,IAAI,EAAE,UAAU;YAChB,WAAW,EACT,uEAAuE;YACzE,SAAS,EAAE;gBACT;oBACE,IAAI,EAAE,YAAY;oBAClB,WAAW,EAAE,kCAAkC;oBAC/C,QAAQ,EAAE,IAAI;iBACf;gBACD;oBACE,IAAI,EAAE,aAAa;oBACnB,WAAW,EAAE,yDAAyD;oBACtE,QAAQ,EAAE,KAAK;iBAChB;aACF;YACD,KAAK,CAAC,WAAW,CAAC,IAAI;gBACpB,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,cAAc,CAAC;gBACrD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;gBAErC,IAAI,WAAW,EAAE,CAAC;oBAChB,4DAA4D;oBAC5D,OAAO;wBACL;4BACE,IAAI,EAAE,MAAM;4BACZ,OAAO,EAAE;gCACP,IAAI,EAAE,MAAM;gCACZ,IAAI,EAAE,WAAW,CAAC,2BAA2B,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC;6BAC5E;yBACF;qBACF,CAAC;gBACJ,CAAC;gBAED,sBAAsB;gBACtB,OAAO;oBACL;wBACE,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE;4BACP,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,WAAW,CAAC,sBAAsB,EAAE,EAAE,UAAU,EAAE,CAAC;yBAC1D;qBACF;iBACF,CAAC;YACJ,CAAC;SACF;QAED;YACE,IAAI,EAAE,UAAU;YAChB,WAAW,EACT,oDAAoD;YACtD,SAAS,EAAE;gBACT;oBACE,IAAI,EAAE,YAAY;oBAClB,WAAW,EAAE,kCAAkC;oBAC/C,QAAQ,EAAE,IAAI;iBACf;gBACD;oBACE,IAAI,EAAE,UAAU;oBAChB,WAAW,EACT,yEAAyE;oBAC3E,QAAQ,EAAE,KAAK;iBAChB;aACF;YACD,KAAK,CAAC,WAAW,CAAC,IAAI;gBACpB,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,cAAc,CAAC;gBACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,eAAe,CAAC;gBAElD,OAAO;oBACL;wBACE,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE;4BACP,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,WAAW,CAAC,2BAA2B,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;yBACzE;qBACF;iBACF,CAAC;YACJ,CAAC;SACF;QAED;YACE,IAAI,EAAE,KAAK;YACX,WAAW,EACT,uDAAuD;YACzD,SAAS,EAAE;gBACT;oBACE,IAAI,EAAE,YAAY;oBAClB,WAAW,EAAE,kCAAkC;oBAC/C,QAAQ,EAAE,IAAI;iBACf;gBACD;oBACE,IAAI,EAAE,YAAY;oBAClB,WAAW,EAAE,gCAAgC;oBAC7C,QAAQ,EAAE,IAAI;iBACf;aACF;YACD,KAAK,CAAC,WAAW,CAAC,IAAI;gBACpB,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,cAAc,CAAC;gBACrD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,cAAc,CAAC;gBAErD,OAAO;oBACL;wBACE,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE;4BACP,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,WAAW,CAAC,qBAAqB,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC;yBACrE;qBACF;iBACF,CAAC;YACJ,CAAC;SACF;QAED;YACE,IAAI,EAAE,QAAQ;YACd,WAAW,EACT,8FAA8F;YAChG,SAAS,EAAE;gBACT;oBACE,IAAI,EAAE,KAAK;oBACX,WAAW,EAAE,wCAAwC;oBACrD,QAAQ,EAAE,IAAI;iBACf;gBACD;oBACE,IAAI,EAAE,OAAO;oBACb,WAAW,EAAE,wBAAwB;oBACrC,QAAQ,EAAE,KAAK;iBAChB;aACF;YACD,KAAK,CAAC,WAAW,CAAC,IAAI;gBACpB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC;gBAChC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,oBAAoB,CAAC;gBAEjD,OAAO;oBACL;wBACE,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE;4BACP,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,WAAW,CAAC,0BAA0B,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;yBAC9D;qBACF;iBACF,CAAC;YACJ,CAAC;SACF;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -5,7 +5,7 @@ This will:
|
|
|
5
5
|
2. Install the appropriate /retest shortcut (if supported)
|
|
6
6
|
3. Create universal documentation for fallback
|
|
7
7
|
|
|
8
|
-
Call the
|
|
8
|
+
Call the retest_init tool (without a URL) with the following options:
|
|
9
9
|
- agent: "${agent}" (auto, all, or specific agent ID)
|
|
10
10
|
- scope: "${scope}" (workspace, user, or both)
|
|
11
11
|
- dryRun: ${dryRun} (preview without writing)
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAyBlD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,SAAS,CAAC;IAClB,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAiL7E"}
|
package/dist/server.js
CHANGED
|
@@ -10,7 +10,7 @@ import { createElicitationClient } from "./elicitation/index.js";
|
|
|
10
10
|
import { createCancellationRegistry, createProgressEmitter } from "./progress/index.js";
|
|
11
11
|
import { createSecurityValidator } from "./security/index.js";
|
|
12
12
|
import { createRetestPrompts } from "./prompts/index.js";
|
|
13
|
-
import { createStartAnalysisTool, createCrawlTool, createDiscoverFeaturesTool, createDiscoverFlowsTool, createGenerateTestsTool, createRunTestCaseTool,
|
|
13
|
+
import { createStartAnalysisTool, createCrawlTool, createDiscoverFeaturesTool, createDiscoverFlowsTool, createGenerateTestsTool, createRunTestCaseTool, } from "./tools/retest/index.js";
|
|
14
14
|
const SERVER_NAME = "retestkit";
|
|
15
15
|
const SERVER_VERSION = "0.0.1";
|
|
16
16
|
export function createServer(config, logger) {
|
|
@@ -61,7 +61,6 @@ export function createServer(config, logger) {
|
|
|
61
61
|
createDiscoverFlowsTool(getContext),
|
|
62
62
|
createGenerateTestsTool(getContext),
|
|
63
63
|
createRunTestCaseTool(getContext),
|
|
64
|
-
createSetupTool(getContext),
|
|
65
64
|
];
|
|
66
65
|
// Create MCP server
|
|
67
66
|
const server = new McpServer({
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AAC1F,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,0BAA0B,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACxF,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EACL,uBAAuB,EACvB,eAAe,EACf,0BAA0B,EAC1B,uBAAuB,EACvB,uBAAuB,EACvB,qBAAqB,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
package/dist/setup/index.js
CHANGED
|
@@ -81,27 +81,33 @@ export async function runSetup(context, options) {
|
|
|
81
81
|
}
|
|
82
82
|
/**
|
|
83
83
|
* Determine which agents to install based on mode and detection.
|
|
84
|
+
*
|
|
85
|
+
* In "auto" mode:
|
|
86
|
+
* - Primary agent detection (from MCP clientInfo) takes precedence
|
|
87
|
+
* - Also includes any other agents detected from workspace fingerprints
|
|
88
|
+
* - This allows installing shortcuts for multiple agents in the same repo
|
|
84
89
|
*/
|
|
85
90
|
function determineAgentsToInstall(mode, detectionResult) {
|
|
86
91
|
if (mode === "all") {
|
|
87
92
|
return SUPPORTED_AGENTS;
|
|
88
93
|
}
|
|
89
94
|
if (mode === "auto") {
|
|
90
|
-
|
|
95
|
+
const agentsToInstall = new Set();
|
|
96
|
+
// Always include primary if detected with confidence
|
|
91
97
|
if (detectionResult.primary !== "unknown" &&
|
|
92
98
|
detectionResult.confidence >= 0.3) {
|
|
93
|
-
|
|
99
|
+
agentsToInstall.add(detectionResult.primary);
|
|
94
100
|
}
|
|
95
|
-
// Also
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
.
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
return additionalAgents;
|
|
101
|
+
// Also include any other agents from ranked list with positive scores
|
|
102
|
+
// This allows installing for multiple agents in the same repo
|
|
103
|
+
for (const ranked of detectionResult.ranked) {
|
|
104
|
+
if (ranked.agent !== "unknown" && ranked.score > 0) {
|
|
105
|
+
agentsToInstall.add(ranked.agent);
|
|
106
|
+
}
|
|
102
107
|
}
|
|
103
|
-
//
|
|
104
|
-
|
|
108
|
+
// Filter to only supported agents
|
|
109
|
+
const result = Array.from(agentsToInstall).filter((agent) => SUPPORTED_AGENTS.includes(agent));
|
|
110
|
+
return result;
|
|
105
111
|
}
|
|
106
112
|
// Specific agent requested
|
|
107
113
|
if (SUPPORTED_AGENTS.includes(mode)) {
|
package/dist/setup/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/setup/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/setup/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EACL,YAAY,EAEZ,gBAAgB,EAChB,kBAAkB,GAEnB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,qBAAqB,EAAqB,MAAM,sBAAsB,CAAC;AAEhF,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAkClC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,OAAqB,EACrB,OAAqB;IAErB,kBAAkB;IAClB,MAAM,eAAe,GAAG,WAAW,CAAC;QAClC,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,GAAG,EAAE,OAAO,CAAC,GAAG;KACjB,CAAC,CAAC;IAEH,uCAAuC;IACvC,MAAM,eAAe,GAAG,wBAAwB,CAC9C,OAAO,CAAC,KAAK,EACb,eAAe,CAChB,CAAC;IAEF,4BAA4B;IAC5B,MAAM,cAAc,GAAmB;QACrC,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,YAAY,EAAE,EAAE,GAAG,qBAAqB,EAAE,GAAG,OAAO,CAAC,YAAY,EAAE;KACpE,CAAC;IAEF,mCAAmC;IACnC,MAAM,OAAO,GAAoB,EAAE,CAAC;IACpC,MAAM,eAAe,GAAkB,EAAE,CAAC;IAE1C,KAAK,MAAM,KAAK,IAAI,eAAe,EAAE,CAAC;QACpC,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,SAAS,IAAI,SAAS,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;YACtD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;YACvD,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAErB,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3D,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;IACH,CAAC;IAED,sCAAsC;IACtC,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACxC,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,SAAS,EAAE;YACT,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CACd,CAAC,CAAC,EAAqB,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,SAAkB,EAAE,CAAC,CACpE;YACD,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CACd,CAAC,CAAC,EAAqB,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,SAAkB,EAAE,CAAC,CACpE;YACD,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CACd,CAAC,CAAC,EAAqB,EAAE,CAAC,CAAC;gBACzB,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,MAAM,EAAE,SAAkB;gBAC1B,MAAM,EAAE,CAAC,CAAC,MAAM;aACjB,CAAC,CACH;SACF;KACF,CAAC,CAAC,CAAC;IAEJ,6BAA6B;IAC7B,MAAM,kBAAkB,GAAG,IAAI,kBAAkB,CAC/C,eAAe,EACf,eAAe,EACf,OAAO,CAAC,OAAO,EACf,aAAa,CACd,CAAC;IAEF,MAAM,eAAe,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAEzE,kBAAkB;IAClB,MAAM,MAAM,GAAoB;QAC9B,QAAQ,EAAE;YACR,OAAO,EAAE,eAAe,CAAC,OAAO;YAChC,UAAU,EAAE,eAAe,CAAC,UAAU;SACvC;QACD,IAAI,EAAE;YACJ,IAAI,EAAE,OAAO,CAAC,KAAK;YACnB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,aAAa,EAAE,eAAe;SAC/B;QACD,OAAO;QACP,SAAS,EAAE;YACT,OAAO,EAAE,eAAe,CAAC,OAAO;YAChC,OAAO,EAAE,eAAe,CAAC,OAAO;YAChC,OAAO,EAAE,eAAe,CAAC,OAAO;SACjC;QACD,IAAI,EAAE,iBAAiB,CAAC,eAAe,CAAC,OAAO,EAAE,eAAe,CAAC;KAClE,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,wBAAwB,CAC/B,IAAkC,EAClC,eAAgC;IAEhC,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;QACnB,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAED,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACpB,MAAM,eAAe,GAAG,IAAI,GAAG,EAAe,CAAC;QAE/C,qDAAqD;QACrD,IACE,eAAe,CAAC,OAAO,KAAK,SAAS;YACrC,eAAe,CAAC,UAAU,IAAI,GAAG,EACjC,CAAC;YACD,eAAe,CAAC,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAC/C,CAAC;QAED,sEAAsE;QACtE,8DAA8D;QAC9D,KAAK,MAAM,MAAM,IAAI,eAAe,CAAC,MAAM,EAAE,CAAC;YAC5C,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;gBACnD,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;QAED,kCAAkC;QAClC,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAC1D,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,CACjC,CAAC;QAEF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,2BAA2B;IAC3B,IAAI,gBAAgB,CAAC,QAAQ,CAAC,IAAmB,CAAC,EAAE,CAAC;QACnD,OAAO,CAAC,IAAmB,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CACxB,OAAoB,EACpB,eAA8B;IAE9B,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,wCAAwC;IACxC,IAAI,OAAO,GAAG,SAAS,CAAC;IAExB,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,GAAG,gCAAgC,CAAC;QAC3C,KAAK,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC;IAC1E,CAAC;SAAM,IAAI,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7C,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;QACzC,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,WAAW,qBAAqB,CAAC,CAAC;QAEzD,QAAQ,OAAO,EAAE,CAAC;YAChB,KAAK,aAAa;gBAChB,KAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;gBAC3C,MAAM;YACR,KAAK,gBAAgB;gBACnB,KAAK,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;gBACpD,MAAM;YACR,KAAK,YAAY;gBACf,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;gBAC1C,MAAM;YACR,KAAK,QAAQ;gBACX,KAAK,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;gBACvE,OAAO,GAAG,YAAY,CAAC;gBACvB,MAAM;YACR,KAAK,OAAO;gBACV,KAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;gBAC5C,OAAO,GAAG,YAAY,CAAC;gBACvB,MAAM;YACR,KAAK,UAAU;gBACb,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;gBACxC,MAAM;YACR;gBACE,KAAK,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;SAAM,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtC,KAAK,CAAC,IAAI,CAAC,4BAA4B,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;IAEnD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAC5B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/retest/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/retest/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/retest/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/retest/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC"}
|
|
@@ -1,8 +1,32 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import type { McpTool } from "../../types/tool.js";
|
|
3
3
|
import type { ServerContext } from "../../types/context.js";
|
|
4
|
+
import type { WorkspaceManager } from "../../workspace/index.js";
|
|
5
|
+
import type { ResourceManager } from "../../resources/index.js";
|
|
6
|
+
import type { SamplingClient } from "../../sampling/index.js";
|
|
7
|
+
import type { ElicitationClient } from "../../elicitation/index.js";
|
|
8
|
+
import type { ProgressEmitter } from "../../progress/index.js";
|
|
9
|
+
import type { SecurityValidator } from "../../security/index.js";
|
|
10
|
+
/**
|
|
11
|
+
* Extended context interface for tools that need access to all managers.
|
|
12
|
+
*/
|
|
13
|
+
interface ExtendedContext {
|
|
14
|
+
workspaceManager: WorkspaceManager;
|
|
15
|
+
resourceManager: ResourceManager;
|
|
16
|
+
samplingClient: SamplingClient;
|
|
17
|
+
elicitationClient: ElicitationClient;
|
|
18
|
+
progressEmitter: ProgressEmitter;
|
|
19
|
+
securityValidator: SecurityValidator;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Unified input schema for retest_init tool.
|
|
23
|
+
*
|
|
24
|
+
* Two modes:
|
|
25
|
+
* - Analysis Workspace Mode (URL provided): Creates workspace for web testing
|
|
26
|
+
* - Shortcut Setup Mode (no URL): Detects agent and installs shortcuts
|
|
27
|
+
*/
|
|
4
28
|
export declare const startAnalysisInputSchema: z.ZodObject<{
|
|
5
|
-
url: z.ZodString
|
|
29
|
+
url: z.ZodOptional<z.ZodString>;
|
|
6
30
|
focus: z.ZodOptional<z.ZodString>;
|
|
7
31
|
limits: z.ZodOptional<z.ZodObject<{
|
|
8
32
|
maxSteps: z.ZodOptional<z.ZodNumber>;
|
|
@@ -10,7 +34,18 @@ export declare const startAnalysisInputSchema: z.ZodObject<{
|
|
|
10
34
|
maxPages: z.ZodOptional<z.ZodNumber>;
|
|
11
35
|
}, z.core.$strip>>;
|
|
12
36
|
allowedDomains: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
37
|
+
agent: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
38
|
+
scope: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
|
|
39
|
+
user: "user";
|
|
40
|
+
workspace: "workspace";
|
|
41
|
+
both: "both";
|
|
42
|
+
}>>>;
|
|
43
|
+
force: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
44
|
+
dryRun: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
45
|
+
verbose: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
46
|
+
workspaceDir: z.ZodOptional<z.ZodString>;
|
|
13
47
|
}, z.core.$strip>;
|
|
14
48
|
export type StartAnalysisInput = z.infer<typeof startAnalysisInputSchema>;
|
|
15
|
-
export declare function createStartAnalysisTool(getContext: () => ServerContext): McpTool<StartAnalysisInput>;
|
|
49
|
+
export declare function createStartAnalysisTool(getContext: () => ServerContext & ExtendedContext): McpTool<StartAnalysisInput>;
|
|
50
|
+
export {};
|
|
16
51
|
//# sourceMappingURL=start-analysis.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start-analysis.d.ts","sourceRoot":"","sources":["../../../src/tools/retest/start-analysis.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,OAAO,EAAc,MAAM,qBAAqB,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"start-analysis.d.ts","sourceRoot":"","sources":["../../../src/tools/retest/start-analysis.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,OAAO,EAAc,MAAM,qBAAqB,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAOjE;;GAEG;AACH,UAAU,eAAe;IACvB,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,eAAe,EAAE,eAAe,CAAC;IACjC,cAAc,EAAE,cAAc,CAAC;IAC/B,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,eAAe,EAAE,eAAe,CAAC;IACjC,iBAAiB,EAAE,iBAAiB,CAAC;CACtC;AAED;;;;;;GAMG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;iBAkDnC,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,MAAM,aAAa,GAAG,eAAe,GAChD,OAAO,CAAC,kBAAkB,CAAC,CAgC7B"}
|
|
@@ -1,7 +1,18 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
+
import { runSetup } from "../../setup/index.js";
|
|
2
3
|
import { AnalysisLimitsSchema } from "./schemas.js";
|
|
4
|
+
const SERVER_VERSION = "0.0.1";
|
|
5
|
+
/**
|
|
6
|
+
* Unified input schema for retest_init tool.
|
|
7
|
+
*
|
|
8
|
+
* Two modes:
|
|
9
|
+
* - Analysis Workspace Mode (URL provided): Creates workspace for web testing
|
|
10
|
+
* - Shortcut Setup Mode (no URL): Detects agent and installs shortcuts
|
|
11
|
+
*/
|
|
3
12
|
export const startAnalysisInputSchema = z.object({
|
|
4
|
-
|
|
13
|
+
// Analysis workspace mode parameters
|
|
14
|
+
url: z.string().url("Must be a valid URL").optional()
|
|
15
|
+
.describe("URL of web application to test. If provided, creates analysis workspace. If omitted, runs shortcut setup."),
|
|
5
16
|
focus: z
|
|
6
17
|
.string()
|
|
7
18
|
.optional()
|
|
@@ -11,6 +22,36 @@ export const startAnalysisInputSchema = z.object({
|
|
|
11
22
|
.array(z.string())
|
|
12
23
|
.optional()
|
|
13
24
|
.describe("Additional domains to allow during crawling (target domain is always allowed)"),
|
|
25
|
+
// Shortcut setup mode parameters
|
|
26
|
+
agent: z
|
|
27
|
+
.string()
|
|
28
|
+
.optional()
|
|
29
|
+
.default("auto")
|
|
30
|
+
.describe('Agent selection: "auto" (detect), "all" (install all), or specific agent ID'),
|
|
31
|
+
scope: z
|
|
32
|
+
.enum(["workspace", "user", "both"])
|
|
33
|
+
.optional()
|
|
34
|
+
.default("workspace")
|
|
35
|
+
.describe("Installation scope"),
|
|
36
|
+
force: z
|
|
37
|
+
.boolean()
|
|
38
|
+
.optional()
|
|
39
|
+
.default(false)
|
|
40
|
+
.describe("Force overwrite of managed blocks"),
|
|
41
|
+
dryRun: z
|
|
42
|
+
.boolean()
|
|
43
|
+
.optional()
|
|
44
|
+
.default(false)
|
|
45
|
+
.describe("Preview actions without writing files"),
|
|
46
|
+
verbose: z
|
|
47
|
+
.boolean()
|
|
48
|
+
.optional()
|
|
49
|
+
.default(false)
|
|
50
|
+
.describe("Include detection signals in output"),
|
|
51
|
+
workspaceDir: z
|
|
52
|
+
.string()
|
|
53
|
+
.optional()
|
|
54
|
+
.describe("Project directory where shortcuts should be installed. If not provided, uses current working directory."),
|
|
14
55
|
});
|
|
15
56
|
export function createStartAnalysisTool(getContext) {
|
|
16
57
|
return {
|
|
@@ -23,115 +64,222 @@ This tool creates a workspace for analyzing a web application. It:
|
|
|
23
64
|
- Records analysis metadata and limits
|
|
24
65
|
- Returns identifiers for subsequent operations
|
|
25
66
|
|
|
26
|
-
Use this as the first step before crawling, analyzing, or testing
|
|
67
|
+
Use this as the first step before crawling, analyzing, or testing.
|
|
68
|
+
|
|
69
|
+
**Shortcut Setup Mode (no URL):**
|
|
70
|
+
If called without a URL, this tool detects your AI coding agent and installs appropriate shortcuts and documentation so you can use /retest to start testing workflows.`,
|
|
27
71
|
inputSchema: startAnalysisInputSchema,
|
|
28
72
|
async handler(input) {
|
|
29
73
|
const ctx = getContext();
|
|
30
|
-
const { config, logger } = ctx;
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
targetUrl = new URL(input.url);
|
|
36
|
-
}
|
|
37
|
-
catch {
|
|
38
|
-
return {
|
|
39
|
-
content: [
|
|
40
|
-
{
|
|
41
|
-
type: "text",
|
|
42
|
-
text: `Error: Invalid URL "${input.url}". Please provide a valid HTTP or HTTPS URL.`,
|
|
43
|
-
},
|
|
44
|
-
],
|
|
45
|
-
isError: true,
|
|
46
|
-
};
|
|
74
|
+
const { config, logger, capabilities } = ctx;
|
|
75
|
+
// Determine mode based on URL presence
|
|
76
|
+
if (input.url) {
|
|
77
|
+
// Analysis Workspace Mode
|
|
78
|
+
return handleAnalysisWorkspaceMode(input, ctx);
|
|
47
79
|
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
{
|
|
52
|
-
type: "text",
|
|
53
|
-
text: `Error: URL must use HTTP or HTTPS protocol. Got: ${targetUrl.protocol}`,
|
|
54
|
-
},
|
|
55
|
-
],
|
|
56
|
-
isError: true,
|
|
57
|
-
};
|
|
58
|
-
}
|
|
59
|
-
// Determine limits
|
|
60
|
-
const limits = {
|
|
61
|
-
maxSteps: input.limits?.maxSteps ?? config.defaultMaxSteps,
|
|
62
|
-
maxMinutes: input.limits?.maxMinutes ?? config.defaultMaxMinutes,
|
|
63
|
-
maxPages: input.limits?.maxPages ?? config.defaultMaxPages,
|
|
64
|
-
};
|
|
65
|
-
// Build allowed domains list
|
|
66
|
-
const allowedDomains = new Set([targetUrl.hostname]);
|
|
67
|
-
if (input.allowedDomains) {
|
|
68
|
-
for (const domain of input.allowedDomains) {
|
|
69
|
-
allowedDomains.add(domain);
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
// Create workspace using workspace manager from context
|
|
73
|
-
// Note: We need to get this from an extended context that includes the workspace manager
|
|
74
|
-
const workspaceManager = ctx.workspaceManager;
|
|
75
|
-
if (!workspaceManager) {
|
|
76
|
-
return {
|
|
77
|
-
content: [
|
|
78
|
-
{
|
|
79
|
-
type: "text",
|
|
80
|
-
text: "Error: Workspace manager not available. Server may not be fully initialized.",
|
|
81
|
-
},
|
|
82
|
-
],
|
|
83
|
-
isError: true,
|
|
84
|
-
};
|
|
85
|
-
}
|
|
86
|
-
try {
|
|
87
|
-
const { analysisId, workspacePath } = await workspaceManager.createWorkspace({
|
|
88
|
-
url: input.url,
|
|
89
|
-
focus: input.focus,
|
|
90
|
-
limits,
|
|
91
|
-
});
|
|
92
|
-
// Notify clients about new resource
|
|
93
|
-
const resourceManager = ctx.resourceManager;
|
|
94
|
-
if (resourceManager) {
|
|
95
|
-
await resourceManager.notifyListChanged();
|
|
96
|
-
}
|
|
97
|
-
const result = {
|
|
98
|
-
analysisId,
|
|
99
|
-
workspaceRootPath: workspacePath,
|
|
100
|
-
workspaceRootUri: `retest://${analysisId}`,
|
|
101
|
-
statusUri: `retest://${analysisId}/index.md`,
|
|
102
|
-
domain: targetUrl.hostname,
|
|
103
|
-
allowedDomains: Array.from(allowedDomains),
|
|
104
|
-
limits,
|
|
105
|
-
nextSteps: [
|
|
106
|
-
`Use retest_crawl_app with analysisId="${analysisId}" to explore the application`,
|
|
107
|
-
"Set a goal describing what you want to explore or test",
|
|
108
|
-
"After crawling, use retest_discover_features to analyze the application structure",
|
|
109
|
-
],
|
|
110
|
-
};
|
|
111
|
-
logger.info("Analysis workspace created", { analysisId, url: input.url });
|
|
112
|
-
return {
|
|
113
|
-
content: [
|
|
114
|
-
{
|
|
115
|
-
type: "text",
|
|
116
|
-
text: JSON.stringify(result, null, 2),
|
|
117
|
-
},
|
|
118
|
-
],
|
|
119
|
-
};
|
|
120
|
-
}
|
|
121
|
-
catch (error) {
|
|
122
|
-
const message = error instanceof Error ? error.message : "Unknown error";
|
|
123
|
-
logger.error("Failed to create analysis workspace", { error: message });
|
|
124
|
-
return {
|
|
125
|
-
content: [
|
|
126
|
-
{
|
|
127
|
-
type: "text",
|
|
128
|
-
text: `Error creating workspace: ${message}`,
|
|
129
|
-
},
|
|
130
|
-
],
|
|
131
|
-
isError: true,
|
|
132
|
-
};
|
|
80
|
+
else {
|
|
81
|
+
// Shortcut Setup Mode
|
|
82
|
+
return handleShortcutSetupMode(input, ctx, capabilities, logger);
|
|
133
83
|
}
|
|
134
84
|
},
|
|
135
85
|
};
|
|
136
86
|
}
|
|
87
|
+
/**
|
|
88
|
+
* Handle analysis workspace initialization (URL provided).
|
|
89
|
+
*/
|
|
90
|
+
async function handleAnalysisWorkspaceMode(input, ctx) {
|
|
91
|
+
const { config, logger } = ctx;
|
|
92
|
+
logger.info("Starting analysis", { url: input.url, focus: input.focus });
|
|
93
|
+
// Validate and normalize URL
|
|
94
|
+
let targetUrl;
|
|
95
|
+
try {
|
|
96
|
+
targetUrl = new URL(input.url);
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
return {
|
|
100
|
+
content: [
|
|
101
|
+
{
|
|
102
|
+
type: "text",
|
|
103
|
+
text: `Error: Invalid URL "${input.url}". Please provide a valid HTTP or HTTPS URL.`,
|
|
104
|
+
},
|
|
105
|
+
],
|
|
106
|
+
isError: true,
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
if (!["http:", "https:"].includes(targetUrl.protocol)) {
|
|
110
|
+
return {
|
|
111
|
+
content: [
|
|
112
|
+
{
|
|
113
|
+
type: "text",
|
|
114
|
+
text: `Error: URL must use HTTP or HTTPS protocol. Got: ${targetUrl.protocol}`,
|
|
115
|
+
},
|
|
116
|
+
],
|
|
117
|
+
isError: true,
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
// Determine limits
|
|
121
|
+
const limits = {
|
|
122
|
+
maxSteps: input.limits?.maxSteps ?? config.defaultMaxSteps,
|
|
123
|
+
maxMinutes: input.limits?.maxMinutes ?? config.defaultMaxMinutes,
|
|
124
|
+
maxPages: input.limits?.maxPages ?? config.defaultMaxPages,
|
|
125
|
+
};
|
|
126
|
+
// Build allowed domains list
|
|
127
|
+
const allowedDomains = new Set([targetUrl.hostname]);
|
|
128
|
+
if (input.allowedDomains) {
|
|
129
|
+
for (const domain of input.allowedDomains) {
|
|
130
|
+
allowedDomains.add(domain);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
// Create workspace using workspace manager from context
|
|
134
|
+
const workspaceManager = ctx.workspaceManager;
|
|
135
|
+
if (!workspaceManager) {
|
|
136
|
+
return {
|
|
137
|
+
content: [
|
|
138
|
+
{
|
|
139
|
+
type: "text",
|
|
140
|
+
text: "Error: Workspace manager not available. Server may not be fully initialized.",
|
|
141
|
+
},
|
|
142
|
+
],
|
|
143
|
+
isError: true,
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
try {
|
|
147
|
+
const { analysisId, workspacePath } = await workspaceManager.createWorkspace({
|
|
148
|
+
url: input.url,
|
|
149
|
+
focus: input.focus,
|
|
150
|
+
limits,
|
|
151
|
+
});
|
|
152
|
+
// Notify clients about new resource
|
|
153
|
+
const resourceManager = ctx.resourceManager;
|
|
154
|
+
if (resourceManager) {
|
|
155
|
+
await resourceManager.notifyListChanged();
|
|
156
|
+
}
|
|
157
|
+
const result = {
|
|
158
|
+
analysisId,
|
|
159
|
+
workspaceRootPath: workspacePath,
|
|
160
|
+
workspaceRootUri: `retest://${analysisId}`,
|
|
161
|
+
statusUri: `retest://${analysisId}/index.md`,
|
|
162
|
+
domain: targetUrl.hostname,
|
|
163
|
+
allowedDomains: Array.from(allowedDomains),
|
|
164
|
+
limits,
|
|
165
|
+
nextSteps: [
|
|
166
|
+
`Use retest_crawl_app with analysisId="${analysisId}" to explore the application`,
|
|
167
|
+
"Set a goal describing what you want to explore or test",
|
|
168
|
+
"After crawling, use retest_discover_features to analyze the application structure",
|
|
169
|
+
],
|
|
170
|
+
};
|
|
171
|
+
logger.info("Analysis workspace created", { analysisId, url: input.url });
|
|
172
|
+
return {
|
|
173
|
+
content: [
|
|
174
|
+
{
|
|
175
|
+
type: "text",
|
|
176
|
+
text: JSON.stringify(result, null, 2),
|
|
177
|
+
},
|
|
178
|
+
],
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
catch (error) {
|
|
182
|
+
const message = error instanceof Error ? error.message : "Unknown error";
|
|
183
|
+
logger.error("Failed to create analysis workspace", { error: message });
|
|
184
|
+
return {
|
|
185
|
+
content: [
|
|
186
|
+
{
|
|
187
|
+
type: "text",
|
|
188
|
+
text: `Error creating workspace: ${message}`,
|
|
189
|
+
},
|
|
190
|
+
],
|
|
191
|
+
isError: true,
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Handle shortcut setup mode (no URL provided).
|
|
197
|
+
*/
|
|
198
|
+
async function handleShortcutSetupMode(input, ctx, capabilities, logger) {
|
|
199
|
+
logger.info("Running shortcut setup", {
|
|
200
|
+
agent: input.agent,
|
|
201
|
+
scope: input.scope,
|
|
202
|
+
dryRun: input.dryRun
|
|
203
|
+
});
|
|
204
|
+
try {
|
|
205
|
+
// Validate scope - user scope not yet supported
|
|
206
|
+
if (input.scope === "user" || input.scope === "both") {
|
|
207
|
+
return {
|
|
208
|
+
content: [
|
|
209
|
+
{
|
|
210
|
+
type: "text",
|
|
211
|
+
text: JSON.stringify({
|
|
212
|
+
error: "User scope installation not yet supported",
|
|
213
|
+
suggestion: 'Use scope: "workspace" instead',
|
|
214
|
+
}, null, 2),
|
|
215
|
+
},
|
|
216
|
+
],
|
|
217
|
+
isError: true,
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
// Use provided workspaceDir or fall back to current working directory
|
|
221
|
+
// Note: This is different from config.workspaceDir which is for retest analysis output
|
|
222
|
+
// When running via npx, process.cwd() may be the npx cache directory, so clients
|
|
223
|
+
// should provide the actual project directory via workspaceDir parameter
|
|
224
|
+
const workspaceDir = input.workspaceDir || process.cwd();
|
|
225
|
+
// Build setup options
|
|
226
|
+
const options = {
|
|
227
|
+
agent: (input.agent || "auto"),
|
|
228
|
+
scope: (input.scope || "workspace"),
|
|
229
|
+
force: input.force || false,
|
|
230
|
+
dryRun: input.dryRun || false,
|
|
231
|
+
verbose: input.verbose || false,
|
|
232
|
+
};
|
|
233
|
+
// Run setup
|
|
234
|
+
const result = await runSetup({
|
|
235
|
+
workspaceDir,
|
|
236
|
+
clientInfo: capabilities.clientInfo,
|
|
237
|
+
env: process.env,
|
|
238
|
+
version: SERVER_VERSION,
|
|
239
|
+
}, options);
|
|
240
|
+
// Build response
|
|
241
|
+
const response = input.verbose
|
|
242
|
+
? result
|
|
243
|
+
: {
|
|
244
|
+
detected: result.detected,
|
|
245
|
+
plan: result.plan,
|
|
246
|
+
results: result.results.map((r) => ({
|
|
247
|
+
agent: r.agent,
|
|
248
|
+
tier: r.tier,
|
|
249
|
+
created: r.created,
|
|
250
|
+
updated: r.updated,
|
|
251
|
+
skipped: r.skipped.length,
|
|
252
|
+
})),
|
|
253
|
+
universal: result.universal,
|
|
254
|
+
next: result.next,
|
|
255
|
+
};
|
|
256
|
+
logger.info("Setup completed", {
|
|
257
|
+
primary: result.detected.primary,
|
|
258
|
+
confidence: result.detected.confidence,
|
|
259
|
+
installedCount: result.results.length,
|
|
260
|
+
dryRun: input.dryRun,
|
|
261
|
+
});
|
|
262
|
+
return {
|
|
263
|
+
content: [
|
|
264
|
+
{
|
|
265
|
+
type: "text",
|
|
266
|
+
text: JSON.stringify(response, null, 2),
|
|
267
|
+
},
|
|
268
|
+
],
|
|
269
|
+
};
|
|
270
|
+
}
|
|
271
|
+
catch (error) {
|
|
272
|
+
const message = error instanceof Error ? error.message : "Unknown error";
|
|
273
|
+
logger.error("Setup failed", { error: message });
|
|
274
|
+
return {
|
|
275
|
+
content: [
|
|
276
|
+
{
|
|
277
|
+
type: "text",
|
|
278
|
+
text: JSON.stringify({ error: message }, null, 2),
|
|
279
|
+
},
|
|
280
|
+
],
|
|
281
|
+
isError: true,
|
|
282
|
+
};
|
|
283
|
+
}
|
|
284
|
+
}
|
|
137
285
|
//# sourceMappingURL=start-analysis.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start-analysis.js","sourceRoot":"","sources":["../../../src/tools/retest/start-analysis.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"start-analysis.js","sourceRoot":"","sources":["../../../src/tools/retest/start-analysis.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
|
-
import type { McpTool } from "../../types/tool.js";
|
|
3
|
-
import type { ServerContext } from "../../types/context.js";
|
|
4
|
-
import type { WorkspaceManager } from "../../workspace/index.js";
|
|
5
|
-
import type { ResourceManager } from "../../resources/index.js";
|
|
6
|
-
import type { SamplingClient } from "../../sampling/index.js";
|
|
7
|
-
import type { ElicitationClient } from "../../elicitation/index.js";
|
|
8
|
-
import type { ProgressEmitter } from "../../progress/index.js";
|
|
9
|
-
import type { SecurityValidator } from "../../security/index.js";
|
|
10
|
-
/**
|
|
11
|
-
* Input schema for retest_setup tool.
|
|
12
|
-
*/
|
|
13
|
-
export declare const setupInputSchema: z.ZodObject<{
|
|
14
|
-
agent: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
15
|
-
scope: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
|
|
16
|
-
user: "user";
|
|
17
|
-
workspace: "workspace";
|
|
18
|
-
both: "both";
|
|
19
|
-
}>>>;
|
|
20
|
-
force: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
21
|
-
dryRun: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
22
|
-
verbose: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
23
|
-
}, z.core.$strip>;
|
|
24
|
-
export type SetupInput = z.infer<typeof setupInputSchema>;
|
|
25
|
-
interface ExtendedContext {
|
|
26
|
-
workspaceManager: WorkspaceManager;
|
|
27
|
-
resourceManager: ResourceManager;
|
|
28
|
-
samplingClient: SamplingClient;
|
|
29
|
-
elicitationClient: ElicitationClient;
|
|
30
|
-
progressEmitter: ProgressEmitter;
|
|
31
|
-
securityValidator: SecurityValidator;
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Create the retest_setup tool.
|
|
35
|
-
*/
|
|
36
|
-
export declare function createSetupTool(getContext: () => ServerContext & ExtendedContext): McpTool<SetupInput>;
|
|
37
|
-
export {};
|
|
38
|
-
//# sourceMappingURL=setup.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../src/tools/retest/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAMjE;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;iBA4B3B,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,UAAU,eAAe;IACvB,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,eAAe,EAAE,eAAe,CAAC;IACjC,cAAc,EAAE,cAAc,CAAC;IAC/B,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,eAAe,EAAE,eAAe,CAAC;IACjC,iBAAiB,EAAE,iBAAiB,CAAC;CACtC;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,UAAU,EAAE,MAAM,aAAa,GAAG,eAAe,GAChD,OAAO,CAAC,UAAU,CAAC,CA0GrB"}
|
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
|
-
import { runSetup } from "../../setup/index.js";
|
|
3
|
-
const SERVER_VERSION = "0.0.1";
|
|
4
|
-
/**
|
|
5
|
-
* Input schema for retest_setup tool.
|
|
6
|
-
*/
|
|
7
|
-
export const setupInputSchema = z.object({
|
|
8
|
-
agent: z
|
|
9
|
-
.string()
|
|
10
|
-
.optional()
|
|
11
|
-
.default("auto")
|
|
12
|
-
.describe('Agent selection: "auto" (detect), "all" (install all), or specific agent ID'),
|
|
13
|
-
scope: z
|
|
14
|
-
.enum(["workspace", "user", "both"])
|
|
15
|
-
.optional()
|
|
16
|
-
.default("workspace")
|
|
17
|
-
.describe("Installation scope"),
|
|
18
|
-
force: z
|
|
19
|
-
.boolean()
|
|
20
|
-
.optional()
|
|
21
|
-
.default(false)
|
|
22
|
-
.describe("Force overwrite of managed blocks"),
|
|
23
|
-
dryRun: z
|
|
24
|
-
.boolean()
|
|
25
|
-
.optional()
|
|
26
|
-
.default(false)
|
|
27
|
-
.describe("Preview actions without writing files"),
|
|
28
|
-
verbose: z
|
|
29
|
-
.boolean()
|
|
30
|
-
.optional()
|
|
31
|
-
.default(false)
|
|
32
|
-
.describe("Include detection signals in output"),
|
|
33
|
-
});
|
|
34
|
-
/**
|
|
35
|
-
* Create the retest_setup tool.
|
|
36
|
-
*/
|
|
37
|
-
export function createSetupTool(getContext) {
|
|
38
|
-
return {
|
|
39
|
-
name: "retest_setup",
|
|
40
|
-
description: "Set up /retest shortcut for your AI coding agent. Detects your agent and installs appropriate shortcuts and documentation.",
|
|
41
|
-
inputSchema: setupInputSchema,
|
|
42
|
-
async handler(input) {
|
|
43
|
-
const context = getContext();
|
|
44
|
-
const { logger, capabilities, config } = context;
|
|
45
|
-
logger.info("Running retest_setup", { input });
|
|
46
|
-
try {
|
|
47
|
-
// Validate scope - user scope not yet supported
|
|
48
|
-
if (input.scope === "user" || input.scope === "both") {
|
|
49
|
-
return {
|
|
50
|
-
content: [
|
|
51
|
-
{
|
|
52
|
-
type: "text",
|
|
53
|
-
text: JSON.stringify({
|
|
54
|
-
error: "User scope installation not yet supported",
|
|
55
|
-
suggestion: 'Use scope: "workspace" instead',
|
|
56
|
-
}, null, 2),
|
|
57
|
-
},
|
|
58
|
-
],
|
|
59
|
-
isError: true,
|
|
60
|
-
};
|
|
61
|
-
}
|
|
62
|
-
// Get workspace directory from config
|
|
63
|
-
const workspaceDir = config.workspaceDir || process.cwd();
|
|
64
|
-
// Build setup options
|
|
65
|
-
const options = {
|
|
66
|
-
agent: input.agent,
|
|
67
|
-
scope: input.scope,
|
|
68
|
-
force: input.force,
|
|
69
|
-
dryRun: input.dryRun,
|
|
70
|
-
verbose: input.verbose,
|
|
71
|
-
};
|
|
72
|
-
// Run setup
|
|
73
|
-
const result = await runSetup({
|
|
74
|
-
workspaceDir,
|
|
75
|
-
clientInfo: capabilities.clientInfo,
|
|
76
|
-
env: process.env,
|
|
77
|
-
version: SERVER_VERSION,
|
|
78
|
-
}, options);
|
|
79
|
-
// Build response
|
|
80
|
-
const response = input.verbose
|
|
81
|
-
? result
|
|
82
|
-
: {
|
|
83
|
-
detected: result.detected,
|
|
84
|
-
plan: result.plan,
|
|
85
|
-
results: result.results.map((r) => ({
|
|
86
|
-
agent: r.agent,
|
|
87
|
-
tier: r.tier,
|
|
88
|
-
created: r.created,
|
|
89
|
-
updated: r.updated,
|
|
90
|
-
skipped: r.skipped.length,
|
|
91
|
-
})),
|
|
92
|
-
universal: result.universal,
|
|
93
|
-
next: result.next,
|
|
94
|
-
};
|
|
95
|
-
logger.info("Setup completed", {
|
|
96
|
-
primary: result.detected.primary,
|
|
97
|
-
confidence: result.detected.confidence,
|
|
98
|
-
installedCount: result.results.length,
|
|
99
|
-
dryRun: input.dryRun,
|
|
100
|
-
});
|
|
101
|
-
return {
|
|
102
|
-
content: [
|
|
103
|
-
{
|
|
104
|
-
type: "text",
|
|
105
|
-
text: JSON.stringify(response, null, 2),
|
|
106
|
-
},
|
|
107
|
-
],
|
|
108
|
-
};
|
|
109
|
-
}
|
|
110
|
-
catch (error) {
|
|
111
|
-
const message = error instanceof Error ? error.message : "Unknown error";
|
|
112
|
-
logger.error("Setup failed", { error: message });
|
|
113
|
-
return {
|
|
114
|
-
content: [
|
|
115
|
-
{
|
|
116
|
-
type: "text",
|
|
117
|
-
text: JSON.stringify({ error: message }, null, 2),
|
|
118
|
-
},
|
|
119
|
-
],
|
|
120
|
-
isError: true,
|
|
121
|
-
};
|
|
122
|
-
}
|
|
123
|
-
},
|
|
124
|
-
};
|
|
125
|
-
}
|
|
126
|
-
//# sourceMappingURL=setup.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/tools/retest/setup.ts"],"names":[],"mappings":"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"}
|