retestkit 1.5.0 → 1.6.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/agent-detection/index.d.ts +14 -0
- package/dist/agent-detection/index.d.ts.map +1 -0
- package/dist/agent-detection/index.js +166 -0
- package/dist/agent-detection/index.js.map +1 -0
- package/dist/agent-detection/mappings.d.ts +39 -0
- package/dist/agent-detection/mappings.d.ts.map +1 -0
- package/dist/agent-detection/mappings.js +150 -0
- package/dist/agent-detection/mappings.js.map +1 -0
- package/dist/lifecycle/index.d.ts +1 -1
- package/dist/lifecycle/index.d.ts.map +1 -1
- package/dist/lifecycle/index.js +5 -0
- package/dist/lifecycle/index.js.map +1 -1
- package/dist/prompts/index.d.ts.map +1 -1
- package/dist/prompts/index.js +36 -0
- package/dist/prompts/index.js.map +1 -1
- package/dist/prompts/templates/mcp/retest-setup.md +13 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +2 -1
- package/dist/server.js.map +1 -1
- package/dist/setup/fs-safe.d.ts +47 -0
- package/dist/setup/fs-safe.d.ts.map +1 -0
- package/dist/setup/fs-safe.js +144 -0
- package/dist/setup/fs-safe.js.map +1 -0
- package/dist/setup/index.d.ts +46 -0
- package/dist/setup/index.d.ts.map +1 -0
- package/dist/setup/index.js +157 -0
- package/dist/setup/index.js.map +1 -0
- package/dist/setup/installers/claude-code.d.ts +11 -0
- package/dist/setup/installers/claude-code.d.ts.map +1 -0
- package/dist/setup/installers/claude-code.js +56 -0
- package/dist/setup/installers/claude-code.js.map +1 -0
- package/dist/setup/installers/cline-roo.d.ts +20 -0
- package/dist/setup/installers/cline-roo.d.ts.map +1 -0
- package/dist/setup/installers/cline-roo.js +101 -0
- package/dist/setup/installers/cline-roo.js.map +1 -0
- package/dist/setup/installers/cursor.d.ts +11 -0
- package/dist/setup/installers/cursor.d.ts.map +1 -0
- package/dist/setup/installers/cursor.js +51 -0
- package/dist/setup/installers/cursor.js.map +1 -0
- package/dist/setup/installers/gemini-cli.d.ts +11 -0
- package/dist/setup/installers/gemini-cli.d.ts.map +1 -0
- package/dist/setup/installers/gemini-cli.js +51 -0
- package/dist/setup/installers/gemini-cli.js.map +1 -0
- package/dist/setup/installers/index.d.ts +22 -0
- package/dist/setup/installers/index.d.ts.map +1 -0
- package/dist/setup/installers/index.js +43 -0
- package/dist/setup/installers/index.js.map +1 -0
- package/dist/setup/installers/types.d.ts +46 -0
- package/dist/setup/installers/types.d.ts.map +1 -0
- package/dist/setup/installers/types.js +20 -0
- package/dist/setup/installers/types.js.map +1 -0
- package/dist/setup/installers/universal.d.ts +17 -0
- package/dist/setup/installers/universal.d.ts.map +1 -0
- package/dist/setup/installers/universal.js +104 -0
- package/dist/setup/installers/universal.js.map +1 -0
- package/dist/setup/installers/vscode-copilot.d.ts +11 -0
- package/dist/setup/installers/vscode-copilot.d.ts.map +1 -0
- package/dist/setup/installers/vscode-copilot.js +51 -0
- package/dist/setup/installers/vscode-copilot.js.map +1 -0
- package/dist/setup/merge-policy.d.ts +38 -0
- package/dist/setup/merge-policy.d.ts.map +1 -0
- package/dist/setup/merge-policy.js +102 -0
- package/dist/setup/merge-policy.js.map +1 -0
- package/dist/setup/templates/claude-code.d.ts +10 -0
- package/dist/setup/templates/claude-code.d.ts.map +1 -0
- package/dist/setup/templates/claude-code.js +44 -0
- package/dist/setup/templates/claude-code.js.map +1 -0
- package/dist/setup/templates/cline-roo.d.ts +18 -0
- package/dist/setup/templates/cline-roo.d.ts.map +1 -0
- package/dist/setup/templates/cline-roo.js +79 -0
- package/dist/setup/templates/cline-roo.js.map +1 -0
- package/dist/setup/templates/core-prompt.d.ts +27 -0
- package/dist/setup/templates/core-prompt.d.ts.map +1 -0
- package/dist/setup/templates/core-prompt.js +53 -0
- package/dist/setup/templates/core-prompt.js.map +1 -0
- package/dist/setup/templates/cursor.d.ts +10 -0
- package/dist/setup/templates/cursor.d.ts.map +1 -0
- package/dist/setup/templates/cursor.js +49 -0
- package/dist/setup/templates/cursor.js.map +1 -0
- package/dist/setup/templates/gemini-cli.d.ts +10 -0
- package/dist/setup/templates/gemini-cli.d.ts.map +1 -0
- package/dist/setup/templates/gemini-cli.js +44 -0
- package/dist/setup/templates/gemini-cli.js.map +1 -0
- package/dist/setup/templates/index.d.ts +9 -0
- package/dist/setup/templates/index.d.ts.map +1 -0
- package/dist/setup/templates/index.js +8 -0
- package/dist/setup/templates/index.js.map +1 -0
- package/dist/setup/templates/universal.d.ts +19 -0
- package/dist/setup/templates/universal.d.ts.map +1 -0
- package/dist/setup/templates/universal.js +145 -0
- package/dist/setup/templates/universal.js.map +1 -0
- package/dist/setup/templates/vscode-copilot.d.ts +10 -0
- package/dist/setup/templates/vscode-copilot.d.ts.map +1 -0
- package/dist/setup/templates/vscode-copilot.js +46 -0
- package/dist/setup/templates/vscode-copilot.js.map +1 -0
- package/dist/tools/retest/index.d.ts +1 -0
- package/dist/tools/retest/index.d.ts.map +1 -1
- package/dist/tools/retest/index.js +1 -0
- package/dist/tools/retest/index.js.map +1 -1
- package/dist/tools/retest/setup.d.ts +38 -0
- package/dist/tools/retest/setup.d.ts.map +1 -0
- package/dist/tools/retest/setup.js +126 -0
- package/dist/tools/retest/setup.js.map +1 -0
- package/dist/types/agent.d.ts +134 -0
- package/dist/types/agent.d.ts.map +1 -0
- package/dist/types/agent.js +2 -0
- package/dist/types/agent.js.map +1 -0
- package/dist/types/capabilities.d.ts +5 -0
- package/dist/types/capabilities.d.ts.map +1 -1
- package/dist/types/capabilities.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { AgentFamily, DetectionContext, DetectionResult } from "../types/agent.js";
|
|
2
|
+
/**
|
|
3
|
+
* Detect the AI coding agent from available signals.
|
|
4
|
+
*
|
|
5
|
+
* @param context Detection context with clientInfo, workspaceDir, and env
|
|
6
|
+
* @returns Detection result with primary agent, confidence, and signals
|
|
7
|
+
*/
|
|
8
|
+
export declare function detectAgent(context: DetectionContext): DetectionResult;
|
|
9
|
+
/**
|
|
10
|
+
* Check if a specific agent is likely present based on detection.
|
|
11
|
+
*/
|
|
12
|
+
export declare function isAgentLikely(result: DetectionResult, agent: AgentFamily, minConfidence?: number): boolean;
|
|
13
|
+
export { AGENT_METADATA } from "./mappings.js";
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/agent-detection/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,WAAW,EACX,gBAAgB,EAChB,eAAe,EAGhB,MAAM,mBAAmB,CAAC;AAuJ3B;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,gBAAgB,GAAG,eAAe,CA4BtE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,eAAe,EACvB,KAAK,EAAE,WAAW,EAClB,aAAa,GAAE,MAAY,GAC1B,OAAO,CAaT;AAED,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import * as fs from "node:fs";
|
|
2
|
+
import * as path from "node:path";
|
|
3
|
+
import { CLIENT_INFO_PATTERNS, WORKSPACE_FINGERPRINTS, ENV_PATTERNS, } from "./mappings.js";
|
|
4
|
+
/**
|
|
5
|
+
* Detect agent from MCP client info.
|
|
6
|
+
*/
|
|
7
|
+
function detectFromClientInfo(clientInfo) {
|
|
8
|
+
if (!clientInfo?.name) {
|
|
9
|
+
return [];
|
|
10
|
+
}
|
|
11
|
+
const signals = [];
|
|
12
|
+
const nameLower = clientInfo.name.toLowerCase();
|
|
13
|
+
for (const mapping of CLIENT_INFO_PATTERNS) {
|
|
14
|
+
if (nameLower.includes(mapping.pattern.toLowerCase())) {
|
|
15
|
+
signals.push({
|
|
16
|
+
kind: "mcpClientInfo",
|
|
17
|
+
key: "name",
|
|
18
|
+
value: clientInfo.name,
|
|
19
|
+
weight: mapping.weight,
|
|
20
|
+
agent: mapping.agent,
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return signals;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Detect agent from workspace fingerprints.
|
|
28
|
+
*/
|
|
29
|
+
function detectFromWorkspace(workspaceDir) {
|
|
30
|
+
const signals = [];
|
|
31
|
+
for (const fingerprint of WORKSPACE_FINGERPRINTS) {
|
|
32
|
+
const fullPath = path.join(workspaceDir, fingerprint.path);
|
|
33
|
+
try {
|
|
34
|
+
const stat = fs.statSync(fullPath);
|
|
35
|
+
const exists = fingerprint.type === "dir" ? stat.isDirectory() : stat.isFile();
|
|
36
|
+
if (exists) {
|
|
37
|
+
signals.push({
|
|
38
|
+
kind: "workspaceFile",
|
|
39
|
+
key: fingerprint.path,
|
|
40
|
+
value: "present",
|
|
41
|
+
weight: fingerprint.weight,
|
|
42
|
+
agent: fingerprint.agent,
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
// File/dir doesn't exist, skip
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return signals;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Detect agent from environment variables.
|
|
54
|
+
*/
|
|
55
|
+
function detectFromEnv(env) {
|
|
56
|
+
if (!env) {
|
|
57
|
+
return [];
|
|
58
|
+
}
|
|
59
|
+
const signals = [];
|
|
60
|
+
for (const mapping of ENV_PATTERNS) {
|
|
61
|
+
const value = env[mapping.variable];
|
|
62
|
+
if (value !== undefined) {
|
|
63
|
+
// If pattern is specified, check if value matches
|
|
64
|
+
if (mapping.pattern) {
|
|
65
|
+
if (value.toLowerCase().includes(mapping.pattern.toLowerCase())) {
|
|
66
|
+
signals.push({
|
|
67
|
+
kind: "env",
|
|
68
|
+
key: mapping.variable,
|
|
69
|
+
value: value,
|
|
70
|
+
weight: mapping.weight,
|
|
71
|
+
agent: mapping.agent,
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
// Just presence of the variable is enough
|
|
77
|
+
signals.push({
|
|
78
|
+
kind: "env",
|
|
79
|
+
key: mapping.variable,
|
|
80
|
+
value: value,
|
|
81
|
+
weight: mapping.weight,
|
|
82
|
+
agent: mapping.agent,
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return signals;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Compute scores per agent from signals.
|
|
91
|
+
*/
|
|
92
|
+
function computeScores(signals) {
|
|
93
|
+
const scores = new Map();
|
|
94
|
+
for (const signal of signals) {
|
|
95
|
+
const current = scores.get(signal.agent) || 0;
|
|
96
|
+
scores.set(signal.agent, current + signal.weight);
|
|
97
|
+
}
|
|
98
|
+
return scores;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Compute confidence from scores.
|
|
102
|
+
*/
|
|
103
|
+
function computeConfidence(ranked) {
|
|
104
|
+
if (ranked.length === 0) {
|
|
105
|
+
return 0;
|
|
106
|
+
}
|
|
107
|
+
const topScore = ranked[0].score;
|
|
108
|
+
const secondScore = ranked.length > 1 ? ranked[1].score : 0;
|
|
109
|
+
const totalScore = ranked.reduce((sum, r) => sum + r.score, 0);
|
|
110
|
+
if (totalScore === 0) {
|
|
111
|
+
return 0;
|
|
112
|
+
}
|
|
113
|
+
// Confidence based on ratio of top score to total and gap to second
|
|
114
|
+
const ratioConfidence = topScore / totalScore;
|
|
115
|
+
const gapConfidence = secondScore > 0 ? (topScore - secondScore) / topScore : 1;
|
|
116
|
+
// Weighted average
|
|
117
|
+
const confidence = ratioConfidence * 0.6 + gapConfidence * 0.4;
|
|
118
|
+
// Clamp to 0-1
|
|
119
|
+
return Math.min(1, Math.max(0, confidence));
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Detect the AI coding agent from available signals.
|
|
123
|
+
*
|
|
124
|
+
* @param context Detection context with clientInfo, workspaceDir, and env
|
|
125
|
+
* @returns Detection result with primary agent, confidence, and signals
|
|
126
|
+
*/
|
|
127
|
+
export function detectAgent(context) {
|
|
128
|
+
const allSignals = [];
|
|
129
|
+
// Collect signals from all sources
|
|
130
|
+
allSignals.push(...detectFromClientInfo(context.clientInfo));
|
|
131
|
+
allSignals.push(...detectFromWorkspace(context.workspaceDir));
|
|
132
|
+
allSignals.push(...detectFromEnv(context.env));
|
|
133
|
+
// Compute scores
|
|
134
|
+
const scores = computeScores(allSignals);
|
|
135
|
+
// Convert to ranked array
|
|
136
|
+
const ranked = Array.from(scores.entries())
|
|
137
|
+
.map(([agent, score]) => ({ agent, score }))
|
|
138
|
+
.sort((a, b) => b.score - a.score);
|
|
139
|
+
// Determine primary agent
|
|
140
|
+
const primary = ranked.length > 0 ? ranked[0].agent : "unknown";
|
|
141
|
+
// Compute confidence
|
|
142
|
+
const confidence = computeConfidence(ranked);
|
|
143
|
+
return {
|
|
144
|
+
primary,
|
|
145
|
+
confidence,
|
|
146
|
+
ranked,
|
|
147
|
+
signals: allSignals,
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Check if a specific agent is likely present based on detection.
|
|
152
|
+
*/
|
|
153
|
+
export function isAgentLikely(result, agent, minConfidence = 0.3) {
|
|
154
|
+
// If this is the primary agent, require minimum confidence
|
|
155
|
+
if (result.primary === agent) {
|
|
156
|
+
return result.confidence >= minConfidence;
|
|
157
|
+
}
|
|
158
|
+
// For non-primary agents, check if they appear in ranked with reasonable score
|
|
159
|
+
const rankedAgent = result.ranked.find((r) => r.agent === agent);
|
|
160
|
+
if (rankedAgent && rankedAgent.score > 0) {
|
|
161
|
+
return true;
|
|
162
|
+
}
|
|
163
|
+
return false;
|
|
164
|
+
}
|
|
165
|
+
export { AGENT_METADATA } from "./mappings.js";
|
|
166
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/agent-detection/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { AgentFamily, AgentTier } from "../types/agent.js";
|
|
2
|
+
/**
|
|
3
|
+
* Mapping of MCP clientInfo.name patterns to agent families.
|
|
4
|
+
* Patterns are matched case-insensitively using includes().
|
|
5
|
+
*/
|
|
6
|
+
export declare const CLIENT_INFO_PATTERNS: Array<{
|
|
7
|
+
pattern: string;
|
|
8
|
+
agent: AgentFamily;
|
|
9
|
+
weight: number;
|
|
10
|
+
}>;
|
|
11
|
+
/**
|
|
12
|
+
* Workspace fingerprint patterns for agent detection.
|
|
13
|
+
* These are paths relative to workspace root that indicate an agent.
|
|
14
|
+
*/
|
|
15
|
+
export declare const WORKSPACE_FINGERPRINTS: Array<{
|
|
16
|
+
path: string;
|
|
17
|
+
type: "dir" | "file";
|
|
18
|
+
agent: AgentFamily;
|
|
19
|
+
weight: number;
|
|
20
|
+
}>;
|
|
21
|
+
/**
|
|
22
|
+
* Environment variable patterns for agent detection.
|
|
23
|
+
*/
|
|
24
|
+
export declare const ENV_PATTERNS: Array<{
|
|
25
|
+
variable: string;
|
|
26
|
+
pattern?: string;
|
|
27
|
+
agent: AgentFamily;
|
|
28
|
+
weight: number;
|
|
29
|
+
}>;
|
|
30
|
+
/**
|
|
31
|
+
* Agent tier classification and metadata.
|
|
32
|
+
*/
|
|
33
|
+
export declare const AGENT_METADATA: Record<AgentFamily, {
|
|
34
|
+
tier: AgentTier;
|
|
35
|
+
displayName: string;
|
|
36
|
+
shortcutPath?: string;
|
|
37
|
+
rulesPath?: string;
|
|
38
|
+
}>;
|
|
39
|
+
//# sourceMappingURL=mappings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mappings.d.ts","sourceRoot":"","sources":["../../src/agent-detection/mappings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEhE;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB,CAwCA,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,sBAAsB,EAAE,KAAK,CAAC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC;IACrB,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB,CA2CA,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB,CAaA,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CACjC,WAAW,EACX;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAwDF,CAAC"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mapping of MCP clientInfo.name patterns to agent families.
|
|
3
|
+
* Patterns are matched case-insensitively using includes().
|
|
4
|
+
*/
|
|
5
|
+
export const CLIENT_INFO_PATTERNS = [
|
|
6
|
+
// Claude Code
|
|
7
|
+
{ pattern: "claude", agent: "claude-code", weight: 100 },
|
|
8
|
+
{ pattern: "anthropic", agent: "claude-code", weight: 80 },
|
|
9
|
+
// VS Code / Copilot
|
|
10
|
+
{ pattern: "copilot", agent: "vscode-copilot", weight: 100 },
|
|
11
|
+
{ pattern: "vs code", agent: "vscode-copilot", weight: 90 },
|
|
12
|
+
{ pattern: "vscode", agent: "vscode-copilot", weight: 90 },
|
|
13
|
+
{ pattern: "visual studio code", agent: "vscode-copilot", weight: 90 },
|
|
14
|
+
// Cursor
|
|
15
|
+
{ pattern: "cursor", agent: "cursor", weight: 100 },
|
|
16
|
+
// Gemini CLI
|
|
17
|
+
{ pattern: "gemini", agent: "gemini-cli", weight: 100 },
|
|
18
|
+
{ pattern: "google", agent: "gemini-cli", weight: 50 },
|
|
19
|
+
// Cline
|
|
20
|
+
{ pattern: "cline", agent: "cline", weight: 100 },
|
|
21
|
+
// Roo Code
|
|
22
|
+
{ pattern: "roo", agent: "roo-code", weight: 100 },
|
|
23
|
+
// Windsurf
|
|
24
|
+
{ pattern: "windsurf", agent: "windsurf", weight: 100 },
|
|
25
|
+
{ pattern: "codeium", agent: "windsurf", weight: 70 },
|
|
26
|
+
// Continue
|
|
27
|
+
{ pattern: "continue", agent: "continue", weight: 100 },
|
|
28
|
+
// Zed
|
|
29
|
+
{ pattern: "zed", agent: "zed", weight: 100 },
|
|
30
|
+
// JetBrains AI
|
|
31
|
+
{ pattern: "jetbrains", agent: "jetbrains-ai", weight: 100 },
|
|
32
|
+
{ pattern: "intellij", agent: "jetbrains-ai", weight: 80 },
|
|
33
|
+
{ pattern: "pycharm", agent: "jetbrains-ai", weight: 80 },
|
|
34
|
+
{ pattern: "webstorm", agent: "jetbrains-ai", weight: 80 },
|
|
35
|
+
{ pattern: "rider", agent: "jetbrains-ai", weight: 80 },
|
|
36
|
+
];
|
|
37
|
+
/**
|
|
38
|
+
* Workspace fingerprint patterns for agent detection.
|
|
39
|
+
* These are paths relative to workspace root that indicate an agent.
|
|
40
|
+
*/
|
|
41
|
+
export const WORKSPACE_FINGERPRINTS = [
|
|
42
|
+
// Claude Code
|
|
43
|
+
{ path: ".claude", type: "dir", agent: "claude-code", weight: 60 },
|
|
44
|
+
{ path: ".claude/commands", type: "dir", agent: "claude-code", weight: 70 },
|
|
45
|
+
{ path: "CLAUDE.md", type: "file", agent: "claude-code", weight: 30 },
|
|
46
|
+
// VS Code Copilot
|
|
47
|
+
{ path: ".github/prompts", type: "dir", agent: "vscode-copilot", weight: 60 },
|
|
48
|
+
{ path: ".github/copilot-instructions.md", type: "file", agent: "vscode-copilot", weight: 50 },
|
|
49
|
+
// Cursor
|
|
50
|
+
{ path: ".cursor", type: "dir", agent: "cursor", weight: 60 },
|
|
51
|
+
{ path: ".cursor/rules", type: "dir", agent: "cursor", weight: 70 },
|
|
52
|
+
{ path: ".cursorrules", type: "file", agent: "cursor", weight: 50 },
|
|
53
|
+
// Gemini CLI
|
|
54
|
+
{ path: ".gemini", type: "dir", agent: "gemini-cli", weight: 60 },
|
|
55
|
+
{ path: ".gemini/commands", type: "dir", agent: "gemini-cli", weight: 70 },
|
|
56
|
+
{ path: "GEMINI.md", type: "file", agent: "gemini-cli", weight: 30 },
|
|
57
|
+
// Cline
|
|
58
|
+
{ path: ".clinerules", type: "file", agent: "cline", weight: 60 },
|
|
59
|
+
{ path: ".cline", type: "dir", agent: "cline", weight: 50 },
|
|
60
|
+
// Roo Code
|
|
61
|
+
{ path: ".roo", type: "dir", agent: "roo-code", weight: 60 },
|
|
62
|
+
{ path: ".roo/commands", type: "dir", agent: "roo-code", weight: 70 },
|
|
63
|
+
{ path: ".roorules", type: "file", agent: "roo-code", weight: 50 },
|
|
64
|
+
// Windsurf
|
|
65
|
+
{ path: ".windsurf", type: "dir", agent: "windsurf", weight: 60 },
|
|
66
|
+
{ path: ".windsurfrules", type: "file", agent: "windsurf", weight: 50 },
|
|
67
|
+
// Continue
|
|
68
|
+
{ path: ".continue", type: "dir", agent: "continue", weight: 60 },
|
|
69
|
+
{ path: ".continue/config.json", type: "file", agent: "continue", weight: 70 },
|
|
70
|
+
// Zed
|
|
71
|
+
{ path: ".rules", type: "file", agent: "zed", weight: 40 },
|
|
72
|
+
// JetBrains AI
|
|
73
|
+
{ path: ".aiassistant", type: "dir", agent: "jetbrains-ai", weight: 60 },
|
|
74
|
+
{ path: ".junie", type: "dir", agent: "jetbrains-ai", weight: 60 },
|
|
75
|
+
];
|
|
76
|
+
/**
|
|
77
|
+
* Environment variable patterns for agent detection.
|
|
78
|
+
*/
|
|
79
|
+
export const ENV_PATTERNS = [
|
|
80
|
+
// VS Code
|
|
81
|
+
{ variable: "VSCODE_PID", agent: "vscode-copilot", weight: 30 },
|
|
82
|
+
{ variable: "VSCODE_CLI", agent: "vscode-copilot", weight: 30 },
|
|
83
|
+
{ variable: "TERM_PROGRAM", pattern: "vscode", agent: "vscode-copilot", weight: 30 },
|
|
84
|
+
// Cursor
|
|
85
|
+
{ variable: "CURSOR_PID", agent: "cursor", weight: 30 },
|
|
86
|
+
{ variable: "TERM_PROGRAM", pattern: "cursor", agent: "cursor", weight: 30 },
|
|
87
|
+
// JetBrains
|
|
88
|
+
{ variable: "JETBRAINS_IDE", agent: "jetbrains-ai", weight: 30 },
|
|
89
|
+
{ variable: "IDEA_INITIAL_DIRECTORY", agent: "jetbrains-ai", weight: 20 },
|
|
90
|
+
];
|
|
91
|
+
/**
|
|
92
|
+
* Agent tier classification and metadata.
|
|
93
|
+
*/
|
|
94
|
+
export const AGENT_METADATA = {
|
|
95
|
+
"claude-code": {
|
|
96
|
+
tier: "A",
|
|
97
|
+
displayName: "Claude Code",
|
|
98
|
+
shortcutPath: ".claude/commands/retest.md",
|
|
99
|
+
},
|
|
100
|
+
"vscode-copilot": {
|
|
101
|
+
tier: "A",
|
|
102
|
+
displayName: "VS Code (GitHub Copilot)",
|
|
103
|
+
shortcutPath: ".github/prompts/retest.prompt.md",
|
|
104
|
+
},
|
|
105
|
+
cursor: {
|
|
106
|
+
tier: "B",
|
|
107
|
+
displayName: "Cursor",
|
|
108
|
+
rulesPath: ".cursor/rules/retest.mdc",
|
|
109
|
+
},
|
|
110
|
+
"gemini-cli": {
|
|
111
|
+
tier: "A",
|
|
112
|
+
displayName: "Gemini CLI",
|
|
113
|
+
shortcutPath: ".gemini/commands/retest.toml",
|
|
114
|
+
},
|
|
115
|
+
cline: {
|
|
116
|
+
tier: "B",
|
|
117
|
+
displayName: "Cline",
|
|
118
|
+
rulesPath: ".clinerules",
|
|
119
|
+
},
|
|
120
|
+
"roo-code": {
|
|
121
|
+
tier: "A",
|
|
122
|
+
displayName: "Roo Code",
|
|
123
|
+
shortcutPath: ".roo/commands/retest.md",
|
|
124
|
+
},
|
|
125
|
+
windsurf: {
|
|
126
|
+
tier: "B",
|
|
127
|
+
displayName: "Windsurf",
|
|
128
|
+
rulesPath: ".windsurf/rules/retest.md",
|
|
129
|
+
},
|
|
130
|
+
continue: {
|
|
131
|
+
tier: "B",
|
|
132
|
+
displayName: "Continue",
|
|
133
|
+
rulesPath: ".continue/prompts/retest.md",
|
|
134
|
+
},
|
|
135
|
+
zed: {
|
|
136
|
+
tier: "B",
|
|
137
|
+
displayName: "Zed",
|
|
138
|
+
rulesPath: ".rules",
|
|
139
|
+
},
|
|
140
|
+
"jetbrains-ai": {
|
|
141
|
+
tier: "B",
|
|
142
|
+
displayName: "JetBrains AI",
|
|
143
|
+
rulesPath: ".aiassistant/rules/retest.md",
|
|
144
|
+
},
|
|
145
|
+
unknown: {
|
|
146
|
+
tier: "C",
|
|
147
|
+
displayName: "Unknown Agent",
|
|
148
|
+
},
|
|
149
|
+
};
|
|
150
|
+
//# sourceMappingURL=mappings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mappings.js","sourceRoot":"","sources":["../../src/agent-detection/mappings.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,5 +27,5 @@ export declare function getServerCapabilities(): {
|
|
|
27
27
|
prompts: {};
|
|
28
28
|
logging: {};
|
|
29
29
|
};
|
|
30
|
-
export declare function checkCapability(caps: ClientCapabilities, capability: keyof Omit<ClientCapabilities, "protocolVersion">): boolean;
|
|
30
|
+
export declare function checkCapability(caps: ClientCapabilities, capability: keyof Omit<ClientCapabilities, "protocolVersion" | "clientInfo">): boolean;
|
|
31
31
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lifecycle/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EACL,KAAK,kBAAkB,EAExB,MAAM,0BAA0B,CAAC;AAElC,eAAO,MAAM,yBAAyB,eAAe,CAAC;AAEtD,MAAM,WAAW,gBAAgB;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE;QACZ,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACnC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACtC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAClC,SAAS,CAAC,EAAE;YACV,WAAW,CAAC,EAAE,OAAO,CAAC;YACtB,SAAS,CAAC,EAAE,OAAO,CAAC;SACrB,CAAC;KACH,CAAC;IACF,UAAU,CAAC,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,gBAAgB,EAC5B,MAAM,EAAE,MAAM,GACb,kBAAkB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lifecycle/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EACL,KAAK,kBAAkB,EAExB,MAAM,0BAA0B,CAAC;AAElC,eAAO,MAAM,yBAAyB,eAAe,CAAC;AAEtD,MAAM,WAAW,gBAAgB;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE;QACZ,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACnC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACtC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAClC,SAAS,CAAC,EAAE;YACV,WAAW,CAAC,EAAE,OAAO,CAAC;YACtB,SAAS,CAAC,EAAE,OAAO,CAAC;SACrB,CAAC;KACH,CAAC;IACF,UAAU,CAAC,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,gBAAgB,EAC5B,MAAM,EAAE,MAAM,GACb,kBAAkB,CA0DpB;AAED,wBAAgB,qBAAqB;;;;;;;;EAUpC;AAED,wBAAgB,eAAe,CAC7B,IAAI,EAAE,kBAAkB,EACxB,UAAU,EAAE,MAAM,IAAI,CAAC,kBAAkB,EAAE,iBAAiB,GAAG,YAAY,CAAC,GAC3E,OAAO,CAET"}
|
package/dist/lifecycle/index.js
CHANGED
|
@@ -14,6 +14,10 @@ export function parseClientCapabilities(initResult, logger) {
|
|
|
14
14
|
elicitation: !!caps.elicitation && protocolVersion >= REQUIRED_PROTOCOL_VERSION,
|
|
15
15
|
// Progress is typically available if sampling is available
|
|
16
16
|
progress: !!caps.sampling,
|
|
17
|
+
// Store client info for agent detection
|
|
18
|
+
clientInfo: initResult.clientInfo
|
|
19
|
+
? { name: initResult.clientInfo.name, version: initResult.clientInfo.version }
|
|
20
|
+
: undefined,
|
|
17
21
|
};
|
|
18
22
|
// Log capability detection
|
|
19
23
|
logger.info("Client capabilities detected", {
|
|
@@ -23,6 +27,7 @@ export function parseClientCapabilities(initResult, logger) {
|
|
|
23
27
|
logging: clientCaps.logging,
|
|
24
28
|
resourcesListChanged: clientCaps.resourcesListChanged,
|
|
25
29
|
resourcesSubscribe: clientCaps.resourcesSubscribe,
|
|
30
|
+
clientInfo: clientCaps.clientInfo,
|
|
26
31
|
});
|
|
27
32
|
// Warn about degraded mode
|
|
28
33
|
if (protocolVersion < REQUIRED_PROTOCOL_VERSION) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lifecycle/index.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,oBAAoB,GACrB,MAAM,0BAA0B,CAAC;AAElC,MAAM,CAAC,MAAM,yBAAyB,GAAG,YAAY,CAAC;AAmBtD,MAAM,UAAU,uBAAuB,CACrC,UAA4B,EAC5B,MAAc;IAEd,MAAM,IAAI,GAAG,UAAU,CAAC,YAAY,IAAI,EAAE,CAAC;IAC3C,MAAM,eAAe,GAAG,UAAU,CAAC,eAAe,IAAI,SAAS,CAAC;IAEhE,MAAM,UAAU,GAAuB;QACrC,GAAG,oBAAoB;QACvB,eAAe;QACf,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ;QACzB,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO;QACvB,oBAAoB,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW;QACnD,kBAAkB,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS;QAC/C,oDAAoD;QACpD,WAAW,EACT,CAAC,CAAC,IAAI,CAAC,WAAW,IAAI,eAAe,IAAI,yBAAyB;QACpE,2DAA2D;QAC3D,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lifecycle/index.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,oBAAoB,GACrB,MAAM,0BAA0B,CAAC;AAElC,MAAM,CAAC,MAAM,yBAAyB,GAAG,YAAY,CAAC;AAmBtD,MAAM,UAAU,uBAAuB,CACrC,UAA4B,EAC5B,MAAc;IAEd,MAAM,IAAI,GAAG,UAAU,CAAC,YAAY,IAAI,EAAE,CAAC;IAC3C,MAAM,eAAe,GAAG,UAAU,CAAC,eAAe,IAAI,SAAS,CAAC;IAEhE,MAAM,UAAU,GAAuB;QACrC,GAAG,oBAAoB;QACvB,eAAe;QACf,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ;QACzB,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO;QACvB,oBAAoB,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW;QACnD,kBAAkB,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS;QAC/C,oDAAoD;QACpD,WAAW,EACT,CAAC,CAAC,IAAI,CAAC,WAAW,IAAI,eAAe,IAAI,yBAAyB;QACpE,2DAA2D;QAC3D,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ;QACzB,wCAAwC;QACxC,UAAU,EAAE,UAAU,CAAC,UAAU;YAC/B,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,UAAU,CAAC,OAAO,EAAE;YAC9E,CAAC,CAAC,SAAS;KACd,CAAC;IAEF,2BAA2B;IAC3B,MAAM,CAAC,IAAI,CAAC,8BAA8B,EAAE;QAC1C,eAAe;QACf,QAAQ,EAAE,UAAU,CAAC,QAAQ;QAC7B,WAAW,EAAE,UAAU,CAAC,WAAW;QACnC,OAAO,EAAE,UAAU,CAAC,OAAO;QAC3B,oBAAoB,EAAE,UAAU,CAAC,oBAAoB;QACrD,kBAAkB,EAAE,UAAU,CAAC,kBAAkB;QACjD,UAAU,EAAE,UAAU,CAAC,UAAU;KAClC,CAAC,CAAC;IAEH,2BAA2B;IAC3B,IAAI,eAAe,GAAG,yBAAyB,EAAE,CAAC;QAChD,MAAM,CAAC,IAAI,CAAC,wDAAwD,EAAE;YACpE,aAAa,EAAE,eAAe;YAC9B,eAAe,EAAE,yBAAyB;YAC1C,gBAAgB,EAAE,CAAC,aAAa,CAAC;SAClC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;QACzB,MAAM,CAAC,IAAI,CACT,qEAAqE,EACrE;YACE,gBAAgB,EAAE,8BAA8B;SACjD,CACF,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC,4DAA4D,EAAE;YACxE,gBAAgB,EAAE,4BAA4B;SAC/C,CAAC,CAAC;IACL,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO;QACL,KAAK,EAAE,EAAE;QACT,SAAS,EAAE;YACT,WAAW,EAAE,IAAI;YACjB,SAAS,EAAE,IAAI;SAChB;QACD,OAAO,EAAE,EAAE;QACX,OAAO,EAAE,EAAE;KACZ,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,IAAwB,EACxB,UAA4E;IAE5E,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC;AAC1B,CAAC"}
|
|
@@ -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;
|
|
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,CAgQb"}
|
package/dist/prompts/index.js
CHANGED
|
@@ -7,6 +7,7 @@ const retestDiscoverFlowsTemplate = loadTemplate("mcp", "retest-discover-flows")
|
|
|
7
7
|
const retestGenerateTestsTemplate = loadTemplate("mcp", "retest-generate-tests");
|
|
8
8
|
const retestRunTestTemplate = loadTemplate("mcp", "retest-run-test");
|
|
9
9
|
const retestFullWorkflowTemplate = loadTemplate("mcp", "retest-full-workflow");
|
|
10
|
+
const retestSetupTemplate = loadTemplate("mcp", "retest-setup");
|
|
10
11
|
export function createRetestPrompts(getContext) {
|
|
11
12
|
return [
|
|
12
13
|
{
|
|
@@ -202,6 +203,41 @@ export function createRetestPrompts(getContext) {
|
|
|
202
203
|
];
|
|
203
204
|
},
|
|
204
205
|
},
|
|
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
|
+
},
|
|
205
241
|
];
|
|
206
242
|
}
|
|
207
243
|
//# 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;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
Set up Retest Kit shortcuts for your AI coding agent.
|
|
2
|
+
|
|
3
|
+
This will:
|
|
4
|
+
1. Detect which AI coding agent you're using
|
|
5
|
+
2. Install the appropriate /retest shortcut (if supported)
|
|
6
|
+
3. Create universal documentation for fallback
|
|
7
|
+
|
|
8
|
+
Call the retest_setup tool with the following options:
|
|
9
|
+
- agent: "${agent}" (auto, all, or specific agent ID)
|
|
10
|
+
- scope: "${scope}" (workspace, user, or both)
|
|
11
|
+
- dryRun: ${dryRun} (preview without writing)
|
|
12
|
+
|
|
13
|
+
After setup completes, you can use /retest to start testing workflows.
|
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;AA0BlD,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,CAkL7E"}
|
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, } from "./tools/retest/index.js";
|
|
13
|
+
import { createStartAnalysisTool, createCrawlTool, createDiscoverFeaturesTool, createDiscoverFlowsTool, createGenerateTestsTool, createRunTestCaseTool, createSetupTool, } 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,6 +61,7 @@ export function createServer(config, logger) {
|
|
|
61
61
|
createDiscoverFlowsTool(getContext),
|
|
62
62
|
createGenerateTestsTool(getContext),
|
|
63
63
|
createRunTestCaseTool(getContext),
|
|
64
|
+
createSetupTool(getContext),
|
|
64
65
|
];
|
|
65
66
|
// Create MCP server
|
|
66
67
|
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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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Result of a safe write operation.
|
|
3
|
+
*/
|
|
4
|
+
export interface SafeWriteResult {
|
|
5
|
+
success: boolean;
|
|
6
|
+
path: string;
|
|
7
|
+
status: "created" | "updated" | "skipped";
|
|
8
|
+
reason?: string;
|
|
9
|
+
backup?: string;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Check if a path is safe (no path traversal).
|
|
13
|
+
*/
|
|
14
|
+
export declare function isPathSafe(filePath: string, rootDir: string): boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Ensure a directory exists, creating it if necessary.
|
|
17
|
+
*/
|
|
18
|
+
export declare function ensureDir(dirPath: string): void;
|
|
19
|
+
/**
|
|
20
|
+
* Check if a file exists.
|
|
21
|
+
*/
|
|
22
|
+
export declare function fileExists(filePath: string): boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Check if a directory exists.
|
|
25
|
+
*/
|
|
26
|
+
export declare function dirExists(dirPath: string): boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Read a file if it exists, return null otherwise.
|
|
29
|
+
*/
|
|
30
|
+
export declare function readFileSafe(filePath: string): string | null;
|
|
31
|
+
/**
|
|
32
|
+
* Compute content hash for comparison.
|
|
33
|
+
*/
|
|
34
|
+
export declare function contentHash(content: string): string;
|
|
35
|
+
/**
|
|
36
|
+
* Create a backup of a file if it exists and no backup exists yet.
|
|
37
|
+
* Returns the backup path if created, null otherwise.
|
|
38
|
+
*/
|
|
39
|
+
export declare function createBackup(filePath: string): string | null;
|
|
40
|
+
/**
|
|
41
|
+
* Safely write content to a file with backup and path validation.
|
|
42
|
+
*/
|
|
43
|
+
export declare function safeWriteFile(filePath: string, content: string, rootDir: string, options?: {
|
|
44
|
+
createBackup?: boolean;
|
|
45
|
+
createDirs?: boolean;
|
|
46
|
+
}): SafeWriteResult;
|
|
47
|
+
//# sourceMappingURL=fs-safe.d.ts.map
|