@skyramp/mcp 0.0.34 → 0.0.35

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (25) hide show
  1. package/build/index.js +45 -33
  2. package/build/prompts/modularization/integration-test-modularization.js +2 -1
  3. package/build/prompts/modularization/ui-test-modularization.js +2 -1
  4. package/build/prompts/testGenerationPrompt.js +3 -0
  5. package/build/services/ModularizationService.js +5 -1
  6. package/build/services/ScenarioGenerationService.js +1 -14
  7. package/build/services/TestGenerationService.js +1 -0
  8. package/build/tools/__tests__/codeReuseTool.test.js +1 -1
  9. package/build/tools/{loginTool.js → auth/loginTool.js} +1 -1
  10. package/build/tools/{logoutTool.js → auth/logoutTool.js} +1 -1
  11. package/build/tools/{codeReuseTool.js → code-refactor/codeReuseTool.js} +12 -11
  12. package/build/tools/{modularizationTool.js → code-refactor/modularizationTool.js} +4 -4
  13. package/build/tools/executeSkyrampTestTool.js +1 -1
  14. package/build/tools/{generateContractRestTool.js → generate-tests/generateContractRestTool.js} +2 -2
  15. package/build/tools/{generateE2ERestTool.js → generate-tests/generateE2ERestTool.js} +2 -2
  16. package/build/tools/{generateFuzzRestTool.js → generate-tests/generateFuzzRestTool.js} +2 -2
  17. package/build/tools/{generateIntegrationRestTool.js → generate-tests/generateIntegrationRestTool.js} +6 -2
  18. package/build/tools/{generateLoadRestTool.js → generate-tests/generateLoadRestTool.js} +2 -2
  19. package/build/tools/{generateScenarioRestTool.js → generate-tests/generateScenarioRestTool.js} +5 -2
  20. package/build/tools/{generateSmokeRestTool.js → generate-tests/generateSmokeRestTool.js} +2 -2
  21. package/build/tools/{generateUIRestTool.js → generate-tests/generateUIRestTool.js} +8 -2
  22. package/build/tools/{startTraceCollectionTool.js → trace/startTraceCollectionTool.js} +3 -3
  23. package/build/tools/{stopTraceCollectionTool.js → trace/stopTraceCollectionTool.js} +4 -4
  24. package/build/types/TestTypes.js +3 -2
  25. package/package.json +2 -2
package/build/index.js CHANGED
@@ -2,24 +2,24 @@
2
2
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
3
3
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
4
4
  import { registerStartTraceCollectionPrompt } from "./prompts/startTraceCollectionPrompts.js";
5
- import { registerTraceTool } from "./tools/startTraceCollectionTool.js";
6
- import { registerTraceStopTool } from "./tools/stopTraceCollectionTool.js";
5
+ import { registerTraceTool } from "./tools/trace/startTraceCollectionTool.js";
6
+ import { registerTraceStopTool } from "./tools/trace/stopTraceCollectionTool.js";
7
7
  import { registerExecuteSkyrampTestTool } from "./tools/executeSkyrampTestTool.js";
8
8
  import { registerTestGenerationPrompt } from "./prompts/testGenerationPrompt.js";
9
9
  import { logger } from "./utils/logger.js";
10
- import { registerUITestTool } from "./tools/generateUIRestTool.js";
11
- import { registerSmokeTestTool } from "./tools/generateSmokeRestTool.js";
12
- import { registerFuzzTestTool } from "./tools/generateFuzzRestTool.js";
13
- import { registerContractTestTool } from "./tools/generateContractRestTool.js";
14
- import { registerLoadTestTool } from "./tools/generateLoadRestTool.js";
15
- import { registerIntegrationTestTool } from "./tools/generateIntegrationRestTool.js";
16
- import { registerE2ETestTool } from "./tools/generateE2ERestTool.js";
17
- import { registerLoginTool } from "./tools/loginTool.js";
18
- import { registerLogoutTool } from "./tools/logoutTool.js";
10
+ import { registerUITestTool } from "./tools/generate-tests/generateUIRestTool.js";
11
+ import { registerSmokeTestTool } from "./tools/generate-tests/generateSmokeRestTool.js";
12
+ import { registerFuzzTestTool } from "./tools/generate-tests/generateFuzzRestTool.js";
13
+ import { registerContractTestTool } from "./tools/generate-tests/generateContractRestTool.js";
14
+ import { registerLoadTestTool } from "./tools/generate-tests/generateLoadRestTool.js";
15
+ import { registerIntegrationTestTool } from "./tools/generate-tests/generateIntegrationRestTool.js";
16
+ import { registerE2ETestTool } from "./tools/generate-tests/generateE2ERestTool.js";
17
+ import { registerLoginTool } from "./tools/auth/loginTool.js";
18
+ import { registerLogoutTool } from "./tools/auth/logoutTool.js";
19
19
  import { registerFixErrorTool } from "./tools/fixErrorTool.js";
20
- import { registerModularizationTool } from "./tools/modularizationTool.js";
21
- import { registerCodeReuseTool } from "./tools/codeReuseTool.js";
22
- import { registerScenarioTestTool } from "./tools/generateScenarioRestTool.js";
20
+ import { registerModularizationTool } from "./tools/code-refactor/modularizationTool.js";
21
+ import { registerCodeReuseTool } from "./tools/code-refactor/codeReuseTool.js";
22
+ import { registerScenarioTestTool } from "./tools/generate-tests/generateScenarioRestTool.js";
23
23
  const server = new McpServer({
24
24
  name: "Skyramp MCP Server",
25
25
  version: "1.0.0",
@@ -34,28 +34,40 @@ const server = new McpServer({
34
34
  });
35
35
  // Register prompts
36
36
  logger.info("Starting prompt registration process");
37
- registerTestGenerationPrompt(server);
38
- registerStartTraceCollectionPrompt(server);
37
+ const prompts = [
38
+ registerTestGenerationPrompt,
39
+ registerStartTraceCollectionPrompt,
40
+ ];
41
+ prompts.forEach((registerPrompt) => registerPrompt(server));
39
42
  logger.info("All prompts registered successfully");
40
43
  // Register test generation tools
41
- registerSmokeTestTool(server);
42
- registerFuzzTestTool(server);
43
- registerContractTestTool(server);
44
- registerLoadTestTool(server);
45
- registerIntegrationTestTool(server);
46
- registerE2ETestTool(server);
47
- registerUITestTool(server);
48
- registerScenarioTestTool(server);
49
- // Register modularization and fix error tools
50
- registerModularizationTool(server);
51
- registerFixErrorTool(server);
52
- registerCodeReuseTool(server);
44
+ const testGenerationTools = [
45
+ registerSmokeTestTool,
46
+ registerFuzzTestTool,
47
+ registerContractTestTool,
48
+ registerLoadTestTool,
49
+ registerIntegrationTestTool,
50
+ registerE2ETestTool,
51
+ registerUITestTool,
52
+ registerScenarioTestTool,
53
+ ];
54
+ testGenerationTools.forEach((registerTool) => registerTool(server));
55
+ // Register modularization and code quality tools
56
+ const codeQualityTools = [
57
+ registerModularizationTool,
58
+ registerFixErrorTool,
59
+ registerCodeReuseTool,
60
+ ];
61
+ codeQualityTools.forEach((registerTool) => registerTool(server));
53
62
  // Register other Skyramp tools
54
- registerLoginTool(server);
55
- registerLogoutTool(server);
56
- registerExecuteSkyrampTestTool(server);
57
- registerTraceTool(server);
58
- registerTraceStopTool(server);
63
+ const infrastructureTools = [
64
+ registerLoginTool,
65
+ registerLogoutTool,
66
+ registerExecuteSkyrampTestTool,
67
+ registerTraceTool,
68
+ registerTraceStopTool,
69
+ ];
70
+ infrastructureTools.forEach((registerTool) => registerTool(server));
59
71
  // Start MCP server
60
72
  async function main() {
61
73
  const transport = new StdioServerTransport();
@@ -1,7 +1,8 @@
1
1
  export function getModularizationPrompt(filePath) {
2
2
  return `# INTEGRATION TEST MODULARIZATION - SIMPLE AND SAFE
3
3
 
4
- **WRITE MODULARIZED CODE TO: ${filePath}**
4
+ **CRITICAL: Use the 'write' tool to save the modularized code to: ${filePath}**
5
+ **DO NOT use search_replace - use the 'write' tool to overwrite the entire file with the modularized version**
5
6
 
6
7
  **ABSOLUTELY FORBIDDEN:**
7
8
  - DO NOT CREATE ANY INTERFACES, CLASSES, TYPES, OR NEW DATA STRUCTURES. USE INLINE TYPES ONLY.
@@ -1,7 +1,8 @@
1
1
  export function getModularizationPrompt(filePath) {
2
2
  return `# UI TEST MODULARIZATION - IMPROVE READABILITY AND REDUCE DUPLICATION
3
3
 
4
- **WRITE MODULARIZED CODE TO: ${filePath}**
4
+ **CRITICAL: Use the 'write' tool to save the modularized code to: ${filePath}**
5
+ **DO NOT use search_replace - use the 'write' tool to overwrite the entire file with the modularized version**
5
6
 
6
7
  **ABSOLUTELY FORBIDDEN:**
7
8
  - DO NOT CREATE INTERFACES, CLASSES, TYPES, NEW FILES, OR NEW DATA STRUCTURES
@@ -16,6 +16,7 @@ export function registerTestGenerationPrompt(mcpServer) {
16
16
  - Answer questions about Skyramp capabilities and testing concepts
17
17
  - ALWAYS SHOW STEPS TO GENERATE TEST USING MCP TOOLS AND NEVER SHOW THE CLI COMMANDS.
18
18
  - CRITICAL: UI, INTEGRATION, E2E TESTS MUST BE MODULARIZED USING skyramp_modularization TOOL. ALWAYS ADD A TASK TO MODULARIZE THE TEST USING skyramp_modularization TOOL AFTER GENERATING THESE(UI, INTEGRATION, E2E) TESTS.
19
+ - **CRITICAL: skyramp_reuse_code TOOL MUST BE CALLED IF DURING THE TEST GENERATION THE CODE REUSE FLAG IS SET TO TRUE EXPLICITLY BY THE USER.**
19
20
 
20
21
  **CONTRACT TEST:**
21
22
  - Purpose: Ensures a service is properly communicating with another service
@@ -185,6 +186,8 @@ Trace File:
185
186
  - FOR SCENARIO PARSING, ALWAYS REQUIRE AN API SCHEMA FOR ACCURATE ENDPOINT MAPPING.
186
187
  - SCENARIO PARSING ONLY RETURNS JSON ARRAYS - USE OTHER TOOLS FOR ACTUAL TEST GENERATION.
187
188
 
189
+ **CRITICAL: FOR A SINGLE SCENARIO CREATE A SINGLE SCENARIO FILE WITH EACH STEP AS A JSON OBJECT IN THE ARRAY.**
190
+
188
191
  **CRITICAL: SHOW STEPS TO START/STOP PLAYWRIGHT TRACE COLLECTION FOR UI TESTS. NEVER SHOW THE CLI COMMANDS.**
189
192
  `,
190
193
  },
@@ -30,7 +30,11 @@ export class ModularizationService {
30
30
  {
31
31
  type: "text",
32
32
  text: prompt +
33
- `\n\n***CRITICAL: After modularization is complete, proceed to skyramp_reuse_code tool to fix any errors.`,
33
+ `\n\n***CRITICAL INSTRUCTIONS:***
34
+ 1. Read the test file using the 'read_file' tool
35
+ 2. Create the modularized version following the instructions above
36
+ 3. Use the 'write' tool (NOT search_replace) to save the complete modularized code to the file
37
+ 4. After modularization is complete, proceed to skyramp_fix_errors tool if there are any errors`,
34
38
  },
35
39
  ],
36
40
  };
@@ -118,7 +118,7 @@ ${JSON.stringify(traceRequest, null, 2)}
118
118
  }
119
119
  }
120
120
  generateTraceRequestFromInput(params) {
121
- const destination = this.extractDestinationFromSchema(params.apiSchema);
121
+ const destination = params.destination;
122
122
  // Use AI-provided parameters instead of parsing
123
123
  const timestamp = new Date().toISOString();
124
124
  const method = params.method;
@@ -151,17 +151,4 @@ ${JSON.stringify(traceRequest, null, 2)}
151
151
  Scheme: "https",
152
152
  };
153
153
  }
154
- extractDestinationFromSchema(apiSchema) {
155
- // If it's a URL, extract destination; if it's a file path, use default
156
- if (apiSchema.startsWith("http")) {
157
- try {
158
- const url = new URL(apiSchema);
159
- return url.host;
160
- }
161
- catch {
162
- return "api.example.com";
163
- }
164
- }
165
- return "api.example.com";
166
- }
167
154
  }
@@ -194,6 +194,7 @@ ${result}`;
194
194
  generateExclude: params.exclude,
195
195
  generateInsecure: params.insecure,
196
196
  entrypoint: TELEMETRY_entrypoint_FIELD_NAME,
197
+ chainingKey: params.chainingKey,
197
198
  };
198
199
  }
199
200
  }
@@ -1,5 +1,5 @@
1
1
  import { describe, it, expect, beforeEach, jest } from "@jest/globals";
2
- import { registerCodeReuseTool } from "../codeReuseTool.js";
2
+ import { registerCodeReuseTool } from "../code-refactor/codeReuseTool.js";
3
3
  import { getCodeReusePrompt } from "../../prompts/code-reuse.js";
4
4
  // Mock the logger
5
5
  jest.mock("../../utils/logger", () => ({
@@ -1,6 +1,6 @@
1
1
  import { z } from "zod";
2
2
  import { SkyrampClient } from "@skyramp/skyramp";
3
- import { logger } from "../utils/logger.js";
3
+ import { logger } from "../../utils/logger.js";
4
4
  export function registerLoginTool(server) {
5
5
  server.registerTool("skyramp_login", {
6
6
  description: `Login to Skyramp platform
@@ -1,6 +1,6 @@
1
1
  import { z } from "zod";
2
2
  import { SkyrampClient } from "@skyramp/skyramp";
3
- import { logger } from "../utils/logger.js";
3
+ import { logger } from "../../utils/logger.js";
4
4
  export function registerLogoutTool(server) {
5
5
  server.registerTool("skyramp_logout", {
6
6
  description: `Logout from Skyramp platform
@@ -1,8 +1,8 @@
1
1
  import { z } from "zod";
2
- import { logger } from "../utils/logger.js";
3
- import { getCodeReusePrompt } from "../prompts/code-reuse.js";
4
- import { codeRefactoringSchema, languageSchema } from "../types/TestTypes.js";
5
- import { SKYRAMP_UTILS_HEADER } from "../utils/utils.js";
2
+ import { logger } from "../../utils/logger.js";
3
+ import { getCodeReusePrompt } from "../../prompts/code-reuse.js";
4
+ import { codeRefactoringSchema, languageSchema, } from "../../types/TestTypes.js";
5
+ import { SKYRAMP_UTILS_HEADER } from "../../utils/utils.js";
6
6
  const codeReuseSchema = z.object({
7
7
  testFile: z
8
8
  .string()
@@ -21,13 +21,14 @@ export function registerCodeReuseTool(server) {
21
21
  This tool helps identify and reuse ONLY EXISTING helper functions from other test files (grep based on "${SKYRAMP_UTILS_HEADER}").
22
22
 
23
23
  **CRITICAL RULES - VIOLATION WILL RESULT IN ERROR:**
24
- 1. DO NOT create new helper functions - only find and reuse existing ones
25
- 2. ONLY create a utils file if ACTUAL helper functions (with signatures) exist in OTHER test files
26
- 3. DO NOT create utils files for repetitive patterns - that's refactoring, not reuse
27
- 4. DO NOT extract patterns from current or other test files - only move existing functions
28
- 5. If other test files are identical/similar with no helper functions, DO NOTHING
29
- 6. Helper functions must have explicit function definitions, not just patterns
30
- 7. If no existing helper functions found, test file remains unchanged
24
+ 1. THIS TOOL MUST BE CALLED IF DURING THE TEST GENERATION THE CODE REUSE FLAG IS SET TO TRUE EXPLICITLY
25
+ 2. DO NOT create new helper functions - only find and reuse existing ones
26
+ 3. ONLY create a utils file if ACTUAL helper functions (with signatures) exist in OTHER test files
27
+ 4. DO NOT create utils files for repetitive patterns - that's refactoring, not reuse
28
+ 5. DO NOT extract patterns from current or other test files - only move existing functions
29
+ 6. If other test files are identical/similar with no helper functions, DO NOTHING
30
+ 7. Helper functions must have explicit function definitions, not just patterns
31
+ 8. If no existing helper functions found, test file remains unchanged
31
32
 
32
33
 
33
34
  **WORKFLOW SUMMARY:**
@@ -1,7 +1,7 @@
1
1
  import { z } from "zod";
2
- import { logger } from "../utils/logger.js";
3
- import { TestType } from "../types/TestTypes.js";
4
- import { ModularizationService, } from "../services/ModularizationService.js";
2
+ import { logger } from "../../utils/logger.js";
3
+ import { TestType } from "../../types/TestTypes.js";
4
+ import { ModularizationService, } from "../../services/ModularizationService.js";
5
5
  const modularizationSchema = {
6
6
  testFile: z
7
7
  .string()
@@ -9,7 +9,7 @@ const modularizationSchema = {
9
9
  language: z.string().describe("The programming language of the test file"),
10
10
  testType: z
11
11
  .enum([TestType.UI, TestType.E2E, TestType.INTEGRATION])
12
- .describe("Specifies the type of test (UI, E2E, or Integration)"),
12
+ .describe("Specifies the type of test (UI, E2E, or Integration). DO NOT USE TEST NAME/DESCRIPTION AS TEST TYPE. ONLY USE UI, E2E, OR INTEGRATION."),
13
13
  prompt: z
14
14
  .string()
15
15
  .describe("The prompt or code content to process with modularization principles applied"),
@@ -5,7 +5,7 @@ import { Writable } from "stream";
5
5
  import { logger } from "../utils/logger.js";
6
6
  import { stripVTControlCharacters } from "util";
7
7
  import fs from "fs";
8
- const EXECUTOR_DOCKER_IMAGE = "skyramp/executor:v1.2.24";
8
+ const EXECUTOR_DOCKER_IMAGE = "skyramp/executor:v1.2.27";
9
9
  const DOCKER_PLATFORM = "linux/amd64";
10
10
  export function registerExecuteSkyrampTestTool(server) {
11
11
  server.registerTool("skyramp_execute_test", {
@@ -1,6 +1,6 @@
1
1
  import { z } from "zod";
2
- import { baseTestSchema, TestType } from "../types/TestTypes.js";
3
- import { TestGenerationService, } from "../services/TestGenerationService.js";
2
+ import { baseTestSchema, TestType } from "../../types/TestTypes.js";
3
+ import { TestGenerationService, } from "../../services/TestGenerationService.js";
4
4
  const contractTestSchema = {
5
5
  ...baseTestSchema,
6
6
  assertOptions: z
@@ -1,6 +1,6 @@
1
1
  import { z } from "zod";
2
- import { baseSchema, baseTraceSchema, TestType, codeRefactoringSchema, } from "../types/TestTypes.js";
3
- import { TestGenerationService, } from "../services/TestGenerationService.js";
2
+ import { baseSchema, baseTraceSchema, TestType, codeRefactoringSchema, } from "../../types/TestTypes.js";
3
+ import { TestGenerationService, } from "../../services/TestGenerationService.js";
4
4
  const e2eTestSchema = {
5
5
  ...baseTraceSchema.shape,
6
6
  playwrightInput: z
@@ -1,5 +1,5 @@
1
- import { baseTestSchema, TestType } from "../types/TestTypes.js";
2
- import { TestGenerationService, } from "../services/TestGenerationService.js";
1
+ import { baseTestSchema, TestType } from "../../types/TestTypes.js";
2
+ import { TestGenerationService, } from "../../services/TestGenerationService.js";
3
3
  import { z } from "zod";
4
4
  const fuzzTestSchema = {
5
5
  ...baseTestSchema,
@@ -1,9 +1,13 @@
1
1
  import { z } from "zod";
2
- import { baseTestSchema, baseTraceSchema, TestType, codeRefactoringSchema, } from "../types/TestTypes.js";
3
- import { TestGenerationService, } from "../services/TestGenerationService.js";
2
+ import { baseTestSchema, baseTraceSchema, TestType, codeRefactoringSchema, } from "../../types/TestTypes.js";
3
+ import { TestGenerationService, } from "../../services/TestGenerationService.js";
4
4
  const integrationTestSchema = z
5
5
  .object({
6
6
  ...baseTestSchema,
7
+ chainingKey: z
8
+ .string()
9
+ .optional()
10
+ .describe("JSON path of POST response that will be used for chaining. Example: If asked to use item_id to chain the requests, please ensure chainingKey is set to item_id."),
7
11
  trace: baseTraceSchema.shape.trace.optional(),
8
12
  include: baseTraceSchema.shape.include.optional(),
9
13
  exclude: baseTraceSchema.shape.exclude.optional(),
@@ -1,6 +1,6 @@
1
1
  import { z } from "zod";
2
- import { baseTestSchema, baseTraceSchema, TestType, } from "../types/TestTypes.js";
3
- import { TestGenerationService, } from "../services/TestGenerationService.js";
2
+ import { baseTestSchema, baseTraceSchema, TestType, } from "../../types/TestTypes.js";
3
+ import { TestGenerationService, } from "../../services/TestGenerationService.js";
4
4
  const loadTestSchema = {
5
5
  ...baseTestSchema,
6
6
  loadCount: z
@@ -1,10 +1,13 @@
1
1
  import { z } from "zod";
2
- import { ScenarioGenerationService } from "../services/ScenarioGenerationService.js";
3
- import { baseSchema } from "../types/TestTypes.js";
2
+ import { ScenarioGenerationService } from "../../services/ScenarioGenerationService.js";
3
+ import { baseSchema } from "../../types/TestTypes.js";
4
4
  const scenarioTestSchema = {
5
5
  scenarioName: z
6
6
  .string()
7
7
  .describe("Name of the test scenario with multiple steps. Describe the complete workflow you want to test, including all actions and their sequence.KEEP IT SHORT AND DESCRIPTIVE AS USED FOR FILE NAME"),
8
+ destination: z
9
+ .string()
10
+ .describe("Destination host (e.g., api.example.com) to be used for the test"),
8
11
  apiSchema: z
9
12
  .string()
10
13
  .describe("MUST be absolute path (/path/to/openapi.json) to the OpenAPI/Swagger schema file or a URL to the OpenAPI/Swagger schema file (e.g. https://demoshop.skyramp.dev/openapi.json). Required for accurate API mapping."),
@@ -1,5 +1,5 @@
1
- import { baseTestSchema, TestType } from "../types/TestTypes.js";
2
- import { TestGenerationService, } from "../services/TestGenerationService.js";
1
+ import { baseTestSchema, TestType } from "../../types/TestTypes.js";
2
+ import { TestGenerationService, } from "../../services/TestGenerationService.js";
3
3
  import z from "zod";
4
4
  // Concrete implementations for each test type
5
5
  export class SmokeTestService extends TestGenerationService {
@@ -1,6 +1,6 @@
1
- import { baseSchema, languageSchema, TestType, codeRefactoringSchema, } from "../types/TestTypes.js";
1
+ import { baseSchema, languageSchema, TestType, codeRefactoringSchema, baseTraceSchema, } from "../../types/TestTypes.js";
2
2
  import { z } from "zod";
3
- import { TestGenerationService, } from "../services/TestGenerationService.js";
3
+ import { TestGenerationService, } from "../../services/TestGenerationService.js";
4
4
  export class UITestService extends TestGenerationService {
5
5
  getTestType() {
6
6
  return TestType.UI;
@@ -22,6 +22,12 @@ const uiTestSchema = {
22
22
  playwrightInput: z
23
23
  .string()
24
24
  .describe("MUST be absolute path to the playwright input file like /path/to/playwright-ui-test.zip and MUST be a zip file captured using start_trace_collection tool"),
25
+ include: baseTraceSchema.shape.include
26
+ .optional()
27
+ .describe("Array of FQDN strings to only include from trace data when correlating frontend actions with backend calls"),
28
+ exclude: baseTraceSchema.shape.exclude
29
+ .optional()
30
+ .describe("Array of FQDN strings to exclude from trace data when correlating frontend actions with backend calls"),
25
31
  output: baseSchema.shape.output,
26
32
  outputDir: baseSchema.shape.outputDir,
27
33
  force: baseSchema.shape.force,
@@ -1,8 +1,8 @@
1
1
  import { z } from "zod";
2
2
  import { SkyrampClient } from "@skyramp/skyramp";
3
- import openProxyTerminalTracked from "../utils/proxy-terminal.js";
4
- import { TELEMETRY_entrypoint_FIELD_NAME } from "../utils/utils.js";
5
- import { logger } from "../utils/logger.js";
3
+ import openProxyTerminalTracked from "../../utils/proxy-terminal.js";
4
+ import { TELEMETRY_entrypoint_FIELD_NAME } from "../../utils/utils.js";
5
+ import { logger } from "../../utils/logger.js";
6
6
  export function registerTraceTool(server) {
7
7
  server.registerTool("skyramp_start_trace_collection", {
8
8
  description: `Start trace collection using Skyramp's comprehensive tracing capabilities.
@@ -1,9 +1,9 @@
1
1
  import { SkyrampClient } from "@skyramp/skyramp";
2
- import { closeProxyTerminal } from "../utils/proxy-terminal.js";
2
+ import { closeProxyTerminal } from "../../utils/proxy-terminal.js";
3
3
  import { z } from "zod";
4
- import { TELEMETRY_entrypoint_FIELD_NAME } from "../utils/utils.js";
5
- import { logger } from "../utils/logger.js";
6
- import { baseSchema } from "../types/TestTypes.js";
4
+ import { TELEMETRY_entrypoint_FIELD_NAME } from "../../utils/utils.js";
5
+ import { logger } from "../../utils/logger.js";
6
+ import { baseSchema } from "../../types/TestTypes.js";
7
7
  import { existsSync, mkdirSync } from "fs";
8
8
  export function registerTraceStopTool(server) {
9
9
  server.registerTool("skyramp_stop_trace_collection", {
@@ -61,6 +61,7 @@ export const baseSchema = z.object({
61
61
  .describe("MUST be absolute path to the directory where test files will be generated. If not provided, the CURRENT WORKING DIRECTORY will be used WITHOUT ANY SUBDIRECTORIES"),
62
62
  force: z
63
63
  .boolean()
64
+ .default(true)
64
65
  .describe("Whether to overwrite existing files in the output directory"),
65
66
  prompt: z.string().describe("The prompt user provided to generate the test"),
66
67
  });
@@ -71,11 +72,11 @@ export const baseTraceSchema = z.object({
71
72
  include: z
72
73
  .array(z.string())
73
74
  .default([])
74
- .describe("List of endpoints or patterns to include in test generation. DO NOT ASSUME ANYTHING IF NOT PROVIDED"),
75
+ .describe("List of endpoints or patterns to include in test generation."),
75
76
  exclude: z
76
77
  .array(z.string())
77
78
  .default([])
78
- .describe("List of endpoints or patterns to exclude from test generation. EXCLUDE THE PATHS THAT ARE NOT API ENDPOINTS."),
79
+ .describe("List of endpoints or patterns to exclude from test generation."),
79
80
  ...baseSchema.shape,
80
81
  });
81
82
  // Base schema that all test tools share
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skyramp/mcp",
3
- "version": "0.0.34",
3
+ "version": "0.0.35",
4
4
  "main": "build/index.js",
5
5
  "type": "module",
6
6
  "bin": {
@@ -42,7 +42,7 @@
42
42
  },
43
43
  "dependencies": {
44
44
  "@modelcontextprotocol/sdk": "^1.11.4",
45
- "@skyramp/skyramp": "^1.2.24",
45
+ "@skyramp/skyramp": "^1.2.27",
46
46
  "@playwright/test": "^1.55.0",
47
47
  "dockerode": "^4.0.6",
48
48
  "zod": "^3.25.3"