retestkit 1.12.0 → 1.13.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/config.d.ts CHANGED
@@ -1,4 +1,68 @@
1
1
  import { type Config } from "./schemas/config.js";
2
- export declare function loadConfig(): Config;
3
- export type { Config };
2
+ import { type FileConfig } from "./schemas/file-config.js";
3
+ /**
4
+ * Result of config path discovery, including which sources were checked
5
+ * and which config file (if any) was found.
6
+ */
7
+ export interface ConfigPathsResult {
8
+ /** Config file path from --config CLI flag */
9
+ cliPath?: string;
10
+ /** Config file path from RETESTKIT_CONFIG env var */
11
+ envPath?: string;
12
+ /** Workspace config path (.mcp/retestkit.json in cwd) */
13
+ workspacePath: string;
14
+ /** User-level config path (~/.config/retestkit/config.json or %APPDATA%) */
15
+ userPath: string;
16
+ /** The resolved config file path to use, if any exists */
17
+ resolvedPath?: string;
18
+ }
19
+ /**
20
+ * Discovers config file paths based on precedence:
21
+ * 1. CLI flag --config <path>
22
+ * 2. RETESTKIT_CONFIG environment variable
23
+ * 3. Workspace: .mcp/retestkit.json in current directory
24
+ * 4. User-level: ~/.config/retestkit/config.json (or %APPDATA% on Windows)
25
+ *
26
+ * @param cliConfigPath Optional path from --config CLI flag
27
+ * @returns ConfigPathsResult with all checked paths and resolved path
28
+ */
29
+ export declare function getConfigPaths(cliConfigPath?: string): ConfigPathsResult;
30
+ /**
31
+ * Result of loading a config file.
32
+ */
33
+ export interface LoadConfigFileResult {
34
+ success: boolean;
35
+ config?: FileConfig;
36
+ error?: string;
37
+ /** Path that was loaded from */
38
+ path?: string;
39
+ }
40
+ /**
41
+ * Loads and validates a config file from the given path.
42
+ *
43
+ * @param configPath Path to the config file
44
+ * @returns LoadConfigFileResult with parsed config or error
45
+ */
46
+ export declare function loadConfigFile(configPath: string): LoadConfigFileResult;
47
+ /**
48
+ * Loads configuration with precedence-based resolution:
49
+ * 1. CLI flag --config <path>
50
+ * 2. RETESTKIT_CONFIG environment variable
51
+ * 3. Workspace: .mcp/retestkit.json
52
+ * 4. User-level: ~/.config/retestkit/config.json
53
+ * 5. Built-in defaults
54
+ *
55
+ * Environment variables override file config values.
56
+ *
57
+ * @param cliConfigPath Optional path from --config CLI flag
58
+ * @returns Validated Config object
59
+ * @throws Error if config is invalid
60
+ */
61
+ export declare function loadConfig(cliConfigPath?: string): Config;
62
+ /**
63
+ * Gets the file config without merging with env vars.
64
+ * Useful for the init tool to inspect current file-based config.
65
+ */
66
+ export declare function getFileConfig(cliConfigPath?: string): FileConfig | undefined;
67
+ export type { Config, FileConfig };
4
68
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAEhE,wBAAgB,UAAU,IAAI,MAAM,CA2BnC;AAED,YAAY,EAAE,MAAM,EAAE,CAAC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAGL,KAAK,UAAU,EAChB,MAAM,0BAA0B,CAAC;AAElC;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,8CAA8C;IAC9C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qDAAqD;IACrD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yDAAyD;IACzD,aAAa,EAAE,MAAM,CAAC;IACtB,4EAA4E;IAC5E,QAAQ,EAAE,MAAM,CAAC;IACjB,0DAA0D;IAC1D,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,iBAAiB,CA+BxE;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gCAAgC;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,oBAAoB,CA8CvE;AAyDD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,UAAU,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CA2BzD;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAO5E;AAED,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC"}
package/dist/config.js CHANGED
@@ -1,20 +1,177 @@
1
+ import * as fs from "node:fs";
2
+ import * as path from "node:path";
3
+ import * as os from "node:os";
1
4
  import { ConfigSchema } from "./schemas/config.js";
2
- export function loadConfig() {
3
- const rawConfig = {
4
- transport: process.env.TRANSPORT,
5
- port: process.env.PORT,
6
- logLevel: process.env.LOG_LEVEL,
7
- // Retest configuration
8
- workspaceDir: process.env.RETEST_WORKSPACE_DIR,
9
- playwrightMcpCommand: process.env.PLAYWRIGHT_MCP_COMMAND,
10
- playwrightMcpArgs: process.env.PLAYWRIGHT_MCP_ARGS,
11
- checkpointInterval: process.env.RETEST_CHECKPOINT_INTERVAL,
12
- screenshotFormat: process.env.RETEST_SCREENSHOT_FORMAT,
13
- screenshotQuality: process.env.RETEST_SCREENSHOT_QUALITY,
14
- defaultMaxSteps: process.env.RETEST_DEFAULT_MAX_STEPS,
15
- defaultMaxMinutes: process.env.RETEST_DEFAULT_MAX_MINUTES,
16
- defaultMaxPages: process.env.RETEST_DEFAULT_MAX_PAGES,
5
+ import { FileConfigSchema, CURRENT_CONFIG_VERSION, } from "./schemas/file-config.js";
6
+ /**
7
+ * Discovers config file paths based on precedence:
8
+ * 1. CLI flag --config <path>
9
+ * 2. RETESTKIT_CONFIG environment variable
10
+ * 3. Workspace: .mcp/retestkit.json in current directory
11
+ * 4. User-level: ~/.config/retestkit/config.json (or %APPDATA% on Windows)
12
+ *
13
+ * @param cliConfigPath Optional path from --config CLI flag
14
+ * @returns ConfigPathsResult with all checked paths and resolved path
15
+ */
16
+ export function getConfigPaths(cliConfigPath) {
17
+ const cwd = process.cwd();
18
+ const workspacePath = path.join(cwd, ".mcp", "retestkit.json");
19
+ // User-level config location varies by OS
20
+ const userPath = process.platform === "win32"
21
+ ? path.join(process.env.APPDATA || "", "retestkit", "config.json")
22
+ : path.join(os.homedir(), ".config", "retestkit", "config.json");
23
+ const envPath = process.env.RETESTKIT_CONFIG;
24
+ const result = {
25
+ cliPath: cliConfigPath,
26
+ envPath,
27
+ workspacePath,
28
+ userPath,
17
29
  };
30
+ // Resolve in precedence order
31
+ if (cliConfigPath && fs.existsSync(cliConfigPath)) {
32
+ result.resolvedPath = cliConfigPath;
33
+ }
34
+ else if (envPath && fs.existsSync(envPath)) {
35
+ result.resolvedPath = envPath;
36
+ }
37
+ else if (fs.existsSync(workspacePath)) {
38
+ result.resolvedPath = workspacePath;
39
+ }
40
+ else if (fs.existsSync(userPath)) {
41
+ result.resolvedPath = userPath;
42
+ }
43
+ return result;
44
+ }
45
+ /**
46
+ * Loads and validates a config file from the given path.
47
+ *
48
+ * @param configPath Path to the config file
49
+ * @returns LoadConfigFileResult with parsed config or error
50
+ */
51
+ export function loadConfigFile(configPath) {
52
+ try {
53
+ const content = fs.readFileSync(configPath, "utf-8");
54
+ const json = JSON.parse(content);
55
+ // Check for unsupported version
56
+ if (json.version && json.version > CURRENT_CONFIG_VERSION) {
57
+ console.warn(`Warning: Config file ${configPath} has unsupported version ${json.version}. ` +
58
+ `Current supported version is ${CURRENT_CONFIG_VERSION}. Attempting to parse known fields.`);
59
+ }
60
+ const result = FileConfigSchema.safeParse(json);
61
+ if (!result.success) {
62
+ const errors = result.error.issues
63
+ .map((issue) => `${issue.path.join(".")}: ${issue.message}`)
64
+ .join(", ");
65
+ return {
66
+ success: false,
67
+ error: `Invalid config file ${configPath}: ${errors}`,
68
+ path: configPath,
69
+ };
70
+ }
71
+ return {
72
+ success: true,
73
+ config: result.data,
74
+ path: configPath,
75
+ };
76
+ }
77
+ catch (err) {
78
+ if (err instanceof SyntaxError) {
79
+ return {
80
+ success: false,
81
+ error: `Invalid JSON in config file ${configPath}: ${err.message}`,
82
+ path: configPath,
83
+ };
84
+ }
85
+ const message = err instanceof Error ? err.message : String(err);
86
+ return {
87
+ success: false,
88
+ error: `Failed to read config file ${configPath}: ${message}`,
89
+ path: configPath,
90
+ };
91
+ }
92
+ }
93
+ /**
94
+ * Merges file-based config with environment variables.
95
+ * Environment variables take precedence over file config.
96
+ */
97
+ function mergeConfigWithEnv(fileConfig) {
98
+ const rawConfig = {};
99
+ // Start with file config values (mapped to runtime config schema)
100
+ if (fileConfig) {
101
+ if (fileConfig.logging?.level) {
102
+ rawConfig.logLevel = fileConfig.logging.level;
103
+ }
104
+ if (fileConfig.limits?.maxSteps) {
105
+ rawConfig.defaultMaxSteps = fileConfig.limits.maxSteps;
106
+ }
107
+ if (fileConfig.limits?.maxMinutes) {
108
+ rawConfig.defaultMaxMinutes = fileConfig.limits.maxMinutes;
109
+ }
110
+ if (fileConfig.limits?.maxPages) {
111
+ rawConfig.defaultMaxPages = fileConfig.limits.maxPages;
112
+ }
113
+ if (fileConfig.playwright?.command) {
114
+ rawConfig.playwrightMcpCommand = fileConfig.playwright.command;
115
+ }
116
+ if (fileConfig.playwright?.args) {
117
+ rawConfig.playwrightMcpArgs = fileConfig.playwright.args.join(",");
118
+ }
119
+ }
120
+ // Environment variables override file config
121
+ if (process.env.TRANSPORT)
122
+ rawConfig.transport = process.env.TRANSPORT;
123
+ if (process.env.PORT)
124
+ rawConfig.port = process.env.PORT;
125
+ if (process.env.LOG_LEVEL)
126
+ rawConfig.logLevel = process.env.LOG_LEVEL;
127
+ if (process.env.RETEST_WORKSPACE_DIR)
128
+ rawConfig.workspaceDir = process.env.RETEST_WORKSPACE_DIR;
129
+ if (process.env.PLAYWRIGHT_MCP_COMMAND)
130
+ rawConfig.playwrightMcpCommand = process.env.PLAYWRIGHT_MCP_COMMAND;
131
+ if (process.env.PLAYWRIGHT_MCP_ARGS)
132
+ rawConfig.playwrightMcpArgs = process.env.PLAYWRIGHT_MCP_ARGS;
133
+ if (process.env.RETEST_CHECKPOINT_INTERVAL)
134
+ rawConfig.checkpointInterval = process.env.RETEST_CHECKPOINT_INTERVAL;
135
+ if (process.env.RETEST_SCREENSHOT_FORMAT)
136
+ rawConfig.screenshotFormat = process.env.RETEST_SCREENSHOT_FORMAT;
137
+ if (process.env.RETEST_SCREENSHOT_QUALITY)
138
+ rawConfig.screenshotQuality = process.env.RETEST_SCREENSHOT_QUALITY;
139
+ if (process.env.RETEST_DEFAULT_MAX_STEPS)
140
+ rawConfig.defaultMaxSteps = process.env.RETEST_DEFAULT_MAX_STEPS;
141
+ if (process.env.RETEST_DEFAULT_MAX_MINUTES)
142
+ rawConfig.defaultMaxMinutes = process.env.RETEST_DEFAULT_MAX_MINUTES;
143
+ if (process.env.RETEST_DEFAULT_MAX_PAGES)
144
+ rawConfig.defaultMaxPages = process.env.RETEST_DEFAULT_MAX_PAGES;
145
+ return rawConfig;
146
+ }
147
+ /**
148
+ * Loads configuration with precedence-based resolution:
149
+ * 1. CLI flag --config <path>
150
+ * 2. RETESTKIT_CONFIG environment variable
151
+ * 3. Workspace: .mcp/retestkit.json
152
+ * 4. User-level: ~/.config/retestkit/config.json
153
+ * 5. Built-in defaults
154
+ *
155
+ * Environment variables override file config values.
156
+ *
157
+ * @param cliConfigPath Optional path from --config CLI flag
158
+ * @returns Validated Config object
159
+ * @throws Error if config is invalid
160
+ */
161
+ export function loadConfig(cliConfigPath) {
162
+ const paths = getConfigPaths(cliConfigPath);
163
+ let fileConfig;
164
+ // Load config file if found
165
+ if (paths.resolvedPath) {
166
+ const fileResult = loadConfigFile(paths.resolvedPath);
167
+ if (!fileResult.success) {
168
+ // Fail fast on invalid config file
169
+ throw new Error(fileResult.error);
170
+ }
171
+ fileConfig = fileResult.config;
172
+ }
173
+ // Merge file config with env vars
174
+ const rawConfig = mergeConfigWithEnv(fileConfig);
18
175
  const result = ConfigSchema.safeParse(rawConfig);
19
176
  if (!result.success) {
20
177
  const errors = result.error.issues
@@ -24,4 +181,16 @@ export function loadConfig() {
24
181
  }
25
182
  return result.data;
26
183
  }
184
+ /**
185
+ * Gets the file config without merging with env vars.
186
+ * Useful for the init tool to inspect current file-based config.
187
+ */
188
+ export function getFileConfig(cliConfigPath) {
189
+ const paths = getConfigPaths(cliConfigPath);
190
+ if (!paths.resolvedPath) {
191
+ return undefined;
192
+ }
193
+ const result = loadConfigFile(paths.resolvedPath);
194
+ return result.success ? result.config : undefined;
195
+ }
27
196
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAe,MAAM,qBAAqB,CAAC;AAEhE,MAAM,UAAU,UAAU;IACxB,MAAM,SAAS,GAAG;QAChB,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS;QAChC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI;QACtB,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS;QAC/B,uBAAuB;QACvB,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB;QAC9C,oBAAoB,EAAE,OAAO,CAAC,GAAG,CAAC,sBAAsB;QACxD,iBAAiB,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB;QAClD,kBAAkB,EAAE,OAAO,CAAC,GAAG,CAAC,0BAA0B;QAC1D,gBAAgB,EAAE,OAAO,CAAC,GAAG,CAAC,wBAAwB;QACtD,iBAAiB,EAAE,OAAO,CAAC,GAAG,CAAC,yBAAyB;QACxD,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,wBAAwB;QACrD,iBAAiB,EAAE,OAAO,CAAC,GAAG,CAAC,0BAA0B;QACzD,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,wBAAwB;KACtD,CAAC;IAEF,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAEjD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM;aAC/B,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;aAC3D,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,0BAA0B,MAAM,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ import type { ToolResult } from "../types/tool.js";
2
+ /**
3
+ * NOT_CONFIGURED error response structure.
4
+ *
5
+ * This standardized error response guides users to run the init tool
6
+ * when required configuration is missing.
7
+ */
8
+ export interface NotConfiguredError {
9
+ code: "NOT_CONFIGURED";
10
+ missing: string[];
11
+ action: "RUN_INIT";
12
+ initTool: "init";
13
+ message: string;
14
+ }
15
+ /**
16
+ * Configuration fields that can be checked.
17
+ */
18
+ export type ConfigField = "targetUrl" | "specsPath" | "allowedDomains";
19
+ /**
20
+ * Check if required config fields are present.
21
+ * Returns the list of missing fields.
22
+ */
23
+ export declare function checkRequiredConfig(requiredFields: ConfigField[]): {
24
+ configured: boolean;
25
+ missing: string[];
26
+ };
27
+ /**
28
+ * Create a NOT_CONFIGURED error result.
29
+ *
30
+ * Use this in tools that require configuration to return a structured
31
+ * error guiding users to run the init tool.
32
+ */
33
+ export declare function createNotConfiguredError(missingFields: string[], toolName?: string): ToolResult;
34
+ /**
35
+ * Guard that checks configuration and returns NOT_CONFIGURED error if missing.
36
+ *
37
+ * Usage:
38
+ * ```typescript
39
+ * const configCheck = requireConfig(["targetUrl"], "cover");
40
+ * if (configCheck) {
41
+ * return configCheck; // NOT_CONFIGURED error
42
+ * }
43
+ * // Config is valid, continue with tool logic
44
+ * ```
45
+ */
46
+ export declare function requireConfig(requiredFields: ConfigField[], toolName?: string): ToolResult | null;
47
+ //# sourceMappingURL=not-configured.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"not-configured.d.ts","sourceRoot":"","sources":["../../src/errors/not-configured.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAGnD;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,gBAAgB,CAAC;IACvB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,WAAW,GAAG,gBAAgB,CAAC;AAEvE;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,cAAc,EAAE,WAAW,EAAE,GAC5B;IAAE,UAAU,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CA8B5C;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,aAAa,EAAE,MAAM,EAAE,EACvB,QAAQ,CAAC,EAAE,MAAM,GAChB,UAAU,CAkBZ;AAgBD;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAC3B,cAAc,EAAE,WAAW,EAAE,EAC7B,QAAQ,CAAC,EAAE,MAAM,GAChB,UAAU,GAAG,IAAI,CAQnB"}
@@ -0,0 +1,87 @@
1
+ import { getFileConfig } from "../config.js";
2
+ /**
3
+ * Check if required config fields are present.
4
+ * Returns the list of missing fields.
5
+ */
6
+ export function checkRequiredConfig(requiredFields) {
7
+ const config = getFileConfig();
8
+ if (!config) {
9
+ return { configured: false, missing: requiredFields };
10
+ }
11
+ const missing = [];
12
+ for (const field of requiredFields) {
13
+ switch (field) {
14
+ case "targetUrl":
15
+ if (!config.targetUrl) {
16
+ missing.push("targetUrl");
17
+ }
18
+ break;
19
+ case "specsPath":
20
+ if (!config.specsPath) {
21
+ missing.push("specsPath");
22
+ }
23
+ break;
24
+ case "allowedDomains":
25
+ if (!config.allowedDomains || config.allowedDomains.length === 0) {
26
+ missing.push("allowedDomains");
27
+ }
28
+ break;
29
+ }
30
+ }
31
+ return { configured: missing.length === 0, missing };
32
+ }
33
+ /**
34
+ * Create a NOT_CONFIGURED error result.
35
+ *
36
+ * Use this in tools that require configuration to return a structured
37
+ * error guiding users to run the init tool.
38
+ */
39
+ export function createNotConfiguredError(missingFields, toolName) {
40
+ const error = {
41
+ code: "NOT_CONFIGURED",
42
+ missing: missingFields,
43
+ action: "RUN_INIT",
44
+ initTool: "init",
45
+ message: buildErrorMessage(missingFields, toolName),
46
+ };
47
+ return {
48
+ content: [
49
+ {
50
+ type: "text",
51
+ text: JSON.stringify(error, null, 2),
52
+ },
53
+ ],
54
+ isError: true,
55
+ };
56
+ }
57
+ /**
58
+ * Build a human-readable error message.
59
+ */
60
+ function buildErrorMessage(missingFields, toolName) {
61
+ const fieldList = missingFields.join(", ");
62
+ const toolContext = toolName ? ` for ${toolName}` : "";
63
+ if (missingFields.length === 1) {
64
+ return `Configuration required${toolContext}: ${fieldList} is not set. Run the init tool to configure RetestKit.`;
65
+ }
66
+ return `Configuration required${toolContext}: ${fieldList} are not set. Run the init tool to configure RetestKit.`;
67
+ }
68
+ /**
69
+ * Guard that checks configuration and returns NOT_CONFIGURED error if missing.
70
+ *
71
+ * Usage:
72
+ * ```typescript
73
+ * const configCheck = requireConfig(["targetUrl"], "cover");
74
+ * if (configCheck) {
75
+ * return configCheck; // NOT_CONFIGURED error
76
+ * }
77
+ * // Config is valid, continue with tool logic
78
+ * ```
79
+ */
80
+ export function requireConfig(requiredFields, toolName) {
81
+ const { configured, missing } = checkRequiredConfig(requiredFields);
82
+ if (!configured) {
83
+ return createNotConfiguredError(missing, toolName);
84
+ }
85
+ return null;
86
+ }
87
+ //# sourceMappingURL=not-configured.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"not-configured.js","sourceRoot":"","sources":["../../src/errors/not-configured.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAqB7C;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CACjC,cAA6B;IAE7B,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;IAE/B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;IACxD,CAAC;IAED,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;QACnC,QAAQ,KAAK,EAAE,CAAC;YACd,KAAK,WAAW;gBACd,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;oBACtB,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAC5B,CAAC;gBACD,MAAM;YACR,KAAK,WAAW;gBACd,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;oBACtB,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAC5B,CAAC;gBACD,MAAM;YACR,KAAK,gBAAgB;gBACnB,IAAI,CAAC,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACjE,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBACjC,CAAC;gBACD,MAAM;QACV,CAAC;IACH,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;AACvD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CACtC,aAAuB,EACvB,QAAiB;IAEjB,MAAM,KAAK,GAAuB;QAChC,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,aAAa;QACtB,MAAM,EAAE,UAAU;QAClB,QAAQ,EAAE,MAAM;QAChB,OAAO,EAAE,iBAAiB,CAAC,aAAa,EAAE,QAAQ,CAAC;KACpD,CAAC;IAEF,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAe;gBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;aACrC;SACF;QACD,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,aAAuB,EAAE,QAAiB;IACnE,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,WAAW,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAEvD,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,yBAAyB,WAAW,KAAK,SAAS,wDAAwD,CAAC;IACpH,CAAC;IAED,OAAO,yBAAyB,WAAW,KAAK,SAAS,yDAAyD,CAAC;AACrH,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,aAAa,CAC3B,cAA6B,EAC7B,QAAiB;IAEjB,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,mBAAmB,CAAC,cAAc,CAAC,CAAC;IAEpE,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,wBAAwB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACrD,CAAC;IAED,OAAO,IAAI,CAAC;AACd,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;AAiBzD,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,CAwYb"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAgBzD,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,CAwXb"}
@@ -1,5 +1,6 @@
1
1
  import { loadTemplate, interpolate } from "./loader.js";
2
2
  // Load templates once at module initialization (alphabetically ordered)
3
+ const initTemplate = loadTemplate("mcp", "init");
3
4
  const retestCoverTemplate = loadTemplate("mcp", "retest-cover");
4
5
  const retestCrawlTemplate = loadTemplate("mcp", "retest-crawl");
5
6
  const retestDescribeTemplate = loadTemplate("mcp", "retest-describe");
@@ -8,8 +9,6 @@ const retestDiscoverFlowsTemplate = loadTemplate("mcp", "retest-discover-flows")
8
9
  const retestGenerateTestsTemplate = loadTemplate("mcp", "retest-generate-tests");
9
10
  const retestPlanTemplate = loadTemplate("mcp", "retest-plan");
10
11
  const retestRunTestTemplate = loadTemplate("mcp", "retest-run-test");
11
- const retestSetupTemplate = loadTemplate("mcp", "retest-setup");
12
- const retestStartTemplate = loadTemplate("mcp", "retest-start");
13
12
  const retestSummarizeTemplate = loadTemplate("mcp", "retest-summarize");
14
13
  const retestWorkflowTemplate = loadTemplate("mcp", "retest-workflow");
15
14
  export function createRetestPrompts(getContext) {
@@ -176,64 +175,49 @@ export function createRetestPrompts(getContext) {
176
175
  },
177
176
  {
178
177
  name: "init",
179
- description: "Initialize retest. With URL: creates analysis workspace for testing. Without URL: sets up /retest shortcuts for your AI coding agent.",
178
+ description: "Initialize RetestKit configuration and install agent shortcuts. Run this before any other RetestKit tools.",
180
179
  arguments: [
181
180
  {
182
- name: "url",
183
- description: "The URL of the web application to test. If omitted, runs shortcut setup instead.",
181
+ name: "targetUrl",
182
+ description: "Target URL for testing (optional - will prompt if not provided)",
184
183
  required: false,
185
184
  },
186
185
  {
187
- name: "focus",
188
- description: "Optional focus area for analysis (e.g., 'checkout flow', 'user registration')",
186
+ name: "specsPath",
187
+ description: "Path to store test specs (default: ./specs)",
189
188
  required: false,
190
189
  },
191
190
  {
192
191
  name: "agent",
193
- description: 'For setup mode: Agent selection ("auto", "all", or specific agent ID)',
192
+ description: 'Agent selection ("auto", "all", or specific agent ID)',
194
193
  required: false,
195
194
  },
196
195
  {
197
196
  name: "scope",
198
- description: 'For setup mode: Installation scope ("workspace", "user", or "both")',
197
+ description: 'Installation scope ("workspace" or "user")',
199
198
  required: false,
200
199
  },
201
200
  {
202
201
  name: "dryRun",
203
- description: "For setup mode: Preview actions without writing files (true/false)",
202
+ description: "Preview actions without writing files (true/false)",
204
203
  required: false,
205
204
  },
206
205
  ],
207
206
  async getMessages(args) {
208
- const url = args.url;
209
- if (url) {
210
- // Analysis workspace mode
211
- const focus = args.focus ? `\nFocus area: ${args.focus}` : "";
212
- return [
213
- {
214
- role: "user",
215
- content: {
216
- type: "text",
217
- text: interpolate(retestStartTemplate, { url, focus }),
218
- },
219
- },
220
- ];
221
- }
222
- else {
223
- // Shortcut setup mode
224
- const agent = args.agent || "auto";
225
- const scope = args.scope || "workspace";
226
- const dryRun = args.dryRun === "true" ? "true" : "false";
227
- return [
228
- {
229
- role: "user",
230
- content: {
231
- type: "text",
232
- text: interpolate(retestSetupTemplate, { agent, scope, dryRun }),
233
- },
207
+ const targetUrl = args.targetUrl || "";
208
+ const specsPath = args.specsPath || "./specs";
209
+ const agent = args.agent || "auto";
210
+ const scope = args.scope || "workspace";
211
+ const dryRun = args.dryRun === "true" ? "true" : "false";
212
+ return [
213
+ {
214
+ role: "user",
215
+ content: {
216
+ type: "text",
217
+ text: interpolate(initTemplate, { targetUrl, specsPath, agent, scope, dryRun }),
234
218
  },
235
- ];
236
- }
219
+ },
220
+ ];
237
221
  },
238
222
  },
239
223
  {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ Initialize RetestKit for this project.
2
+
3
+ This will:
4
+ 1. Create configuration file (.mcp/retestkit.json) with target URL and settings
5
+ 2. Install /retest shortcuts for your AI coding agent
6
+ 3. Guide you to create your first test coverage
7
+
8
+ Call the init tool to start configuration:
9
+ - targetUrl: "${targetUrl}" (optional - will prompt if not provided)
10
+ - specsPath: "${specsPath}" (default: ./specs)
11
+ - agent: "${agent}" (auto, all, or specific agent ID)
12
+ - scope: "${scope}" (workspace or user)
13
+ - dryRun: ${dryRun} (preview without writing)
14
+
15
+ After init completes, use the cover tool to create test coverage for a user flow.