@skyramp/mcp 0.4.3 → 0.4.4-rc.2

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 (168) hide show
  1. package/build/index.js +239 -210
  2. package/build/playwright/PlaywrightTraceService.d.ts +1 -1
  3. package/build/playwright/blueprintDigestStore.d.ts +1 -1
  4. package/build/playwright/registerPlaywrightTools.d.ts +1 -1
  5. package/build/playwright/traceRecordingPrompt.d.ts +1 -1
  6. package/build/playwright/traceRecordingPrompt.js +4 -3
  7. package/build/prompts/local-dev/local-dev-prompts.d.ts +1 -1
  8. package/build/prompts/local-dev/local-dev-prompts.js +2 -2
  9. package/build/prompts/orderAssertionRule.d.ts +9 -0
  10. package/build/prompts/orderAssertionRule.js +9 -0
  11. package/build/prompts/startTraceCollectionPrompts.d.ts +1 -1
  12. package/build/prompts/startTraceCollectionPrompts.js +2 -3
  13. package/build/prompts/test-maintenance/driftAnalysisShared.js +2 -0
  14. package/build/prompts/test-recommendation/registerRecommendTestsPrompt.d.ts +1 -1
  15. package/build/prompts/test-recommendation/registerRecommendTestsPrompt.js +2 -2
  16. package/build/prompts/testbot/testbot-prompts.d.ts +1 -1
  17. package/build/prompts/testbot/testbot-prompts.js +9 -9
  18. package/build/recommendation/answers.d.ts +3 -3
  19. package/build/recommendation/answers.js +3 -2
  20. package/build/recommendation/verifierContracts.d.ts +4 -4
  21. package/build/recommendation/verifierContracts.js +6 -5
  22. package/build/recommendation/verifiers/coverage.js +25 -25
  23. package/build/recommendation/verifiers/deliveredMatchesPlan.js +3 -3
  24. package/build/resources/analysisResources.d.ts +1 -1
  25. package/build/resources/analysisResources.js +1 -1
  26. package/build/resources/progressResource.d.ts +1 -1
  27. package/build/resources/sutSetupResource.d.ts +1 -1
  28. package/build/resources/sutSetupResource.js +1 -1
  29. package/build/resources/testbotResource.d.ts +1 -1
  30. package/build/resources/testbotResource.js +1 -1
  31. package/build/services/AnalyticsService.d.ts +1 -1
  32. package/build/services/FleetExecutionService.d.ts +130 -0
  33. package/build/services/FleetExecutionService.js +391 -0
  34. package/build/services/ModularizationService.d.ts +1 -1
  35. package/build/services/TestExecutionService.d.ts +7 -0
  36. package/build/services/TestExecutionService.js +21 -0
  37. package/build/services/TestGenerationService.d.ts +1 -1
  38. package/build/tool-phases.js +2 -0
  39. package/build/tools/auth/loginTool.d.ts +1 -1
  40. package/build/tools/auth/loginTool.js +2 -2
  41. package/build/tools/auth/logoutTool.d.ts +1 -1
  42. package/build/tools/auth/logoutTool.js +2 -2
  43. package/build/tools/code-refactor/alignAssertionsTool.d.ts +1 -1
  44. package/build/tools/code-refactor/alignAssertionsTool.js +1 -1
  45. package/build/tools/code-refactor/assertionSkillTools.d.ts +1 -1
  46. package/build/tools/code-refactor/assertionSkillTools.js +2 -2
  47. package/build/tools/code-refactor/codeReuseTool.d.ts +1 -1
  48. package/build/tools/code-refactor/codeReuseTool.js +2 -2
  49. package/build/tools/code-refactor/enhanceAssertionsTool.d.ts +1 -1
  50. package/build/tools/code-refactor/enhanceAssertionsTool.js +1 -1
  51. package/build/tools/code-refactor/modularizationTool.d.ts +1 -1
  52. package/build/tools/code-refactor/modularizationTool.js +2 -2
  53. package/build/tools/enrichTestWithMocksTool.d.ts +1 -1
  54. package/build/tools/enrichTestWithMocksTool.js +2 -2
  55. package/build/tools/executeFleetTool.d.ts +28 -0
  56. package/build/tools/executeFleetTool.js +107 -0
  57. package/build/tools/executeSkyrampTestTool.d.ts +8 -5
  58. package/build/tools/executeSkyrampTestTool.js +13 -5
  59. package/build/tools/fixErrorTool.d.ts +1 -1
  60. package/build/tools/fixErrorTool.js +1 -1
  61. package/build/tools/generate-tests/batchMockGenerationTool.d.ts +6 -57
  62. package/build/tools/generate-tests/batchMockGenerationTool.js +3 -3
  63. package/build/tools/generate-tests/generateBatchScenarioRestTool.d.ts +9 -45
  64. package/build/tools/generate-tests/generateBatchScenarioRestTool.js +29 -11
  65. package/build/tools/generate-tests/generateContractRestTool.d.ts +1 -2
  66. package/build/tools/generate-tests/generateContractRestTool.js +1 -1
  67. package/build/tools/generate-tests/generateE2ERestTool.d.ts +2 -2
  68. package/build/tools/generate-tests/generateE2ERestTool.js +10 -2
  69. package/build/tools/generate-tests/generateFuzzRestTool.d.ts +1 -1
  70. package/build/tools/generate-tests/generateFuzzRestTool.js +1 -1
  71. package/build/tools/generate-tests/generateIntegrationRestTool.d.ts +1 -2
  72. package/build/tools/generate-tests/generateIntegrationRestTool.js +1 -1
  73. package/build/tools/generate-tests/generateLoadRestTool.d.ts +1 -2
  74. package/build/tools/generate-tests/generateLoadRestTool.js +2 -1
  75. package/build/tools/generate-tests/generateMockRestTool.d.ts +1 -2
  76. package/build/tools/generate-tests/generateMockRestTool.js +3 -3
  77. package/build/tools/generate-tests/generateSmokeRestTool.d.ts +1 -1
  78. package/build/tools/generate-tests/generateSmokeRestTool.js +1 -1
  79. package/build/tools/generate-tests/generateUILoadRestTool.d.ts +64 -0
  80. package/build/tools/generate-tests/generateUILoadRestTool.js +512 -0
  81. package/build/tools/generate-tests/generateUIRestTool.d.ts +8 -7
  82. package/build/tools/generate-tests/generateUIRestTool.js +10 -2
  83. package/build/tools/generate-tests/loadTestSchema.d.ts +15 -15
  84. package/build/tools/generate-tests/trace-reuse-guard.d.ts +1 -1
  85. package/build/tools/generateEnrichedIntegrationTestTool.d.ts +1 -2
  86. package/build/tools/generateEnrichedIntegrationTestTool.js +1 -1
  87. package/build/tools/localDevWorkerComposeTool.d.ts +1 -1
  88. package/build/tools/localDevWorkerComposeTool.js +2 -2
  89. package/build/tools/one-click/oneClickTool.d.ts +1 -1
  90. package/build/tools/one-click/oneClickTool.js +1 -1
  91. package/build/tools/preflightMockCheckTool.d.ts +1 -1
  92. package/build/tools/preflightMockCheckTool.js +3 -3
  93. package/build/tools/queryProxyMocksTool.d.ts +1 -1
  94. package/build/tools/queryProxyMocksTool.js +3 -3
  95. package/build/tools/submitReportTool.d.ts +111 -414
  96. package/build/tools/submitReportTool.js +88 -38
  97. package/build/tools/test-management/actionsTool.d.ts +1 -1
  98. package/build/tools/test-management/actionsTool.js +7 -7
  99. package/build/tools/test-management/analyzeChangesTool.d.ts +22 -118
  100. package/build/tools/test-management/analyzeChangesTool.js +4 -4
  101. package/build/tools/test-management/analyzeTestHealthTool.d.ts +1 -1
  102. package/build/tools/test-management/analyzeTestHealthTool.js +4 -4
  103. package/build/tools/test-management/registerTestPlanTool.d.ts +107 -733
  104. package/build/tools/test-management/registerTestPlanTool.js +12 -12
  105. package/build/tools/test-management/resolveScreenTool.d.ts +1 -1
  106. package/build/tools/test-management/resolveScreenTool.js +6 -2
  107. package/build/tools/trace/startTraceCollectionTool.d.ts +1 -1
  108. package/build/tools/trace/startTraceCollectionTool.js +4 -4
  109. package/build/tools/trace/stopTraceCollectionTool.d.ts +1 -1
  110. package/build/tools/trace/stopTraceCollectionTool.js +2 -2
  111. package/build/tools/verifyTestDependenciesTool.d.ts +1 -1
  112. package/build/tools/verifyTestDependenciesTool.js +1 -1
  113. package/build/tools/workspace/initScanWorkspaceTool.d.ts +1 -1
  114. package/build/tools/workspace/initScanWorkspaceTool.js +1 -1
  115. package/build/tools/workspace/initializeWorkspaceTool.d.ts +1 -1
  116. package/build/tools/workspace/initializeWorkspaceTool.js +1 -1
  117. package/build/types/RepositoryAnalysis.d.ts +164 -1170
  118. package/build/types/RepositoryAnalysis.js +12 -10
  119. package/build/types/StepMethod.d.ts +24 -1
  120. package/build/types/StepMethod.js +1 -1
  121. package/build/types/TestTypes.d.ts +41 -133
  122. package/build/types/TestTypes.js +25 -3
  123. package/build/types/TestbotReport.d.ts +4 -1
  124. package/build/utils/assertion-verify/metrics.js +12 -0
  125. package/build/utils/docker.d.ts +29 -7
  126. package/build/utils/docker.js +83 -27
  127. package/build/utils/findUp.d.ts +20 -0
  128. package/build/utils/findUp.js +59 -0
  129. package/build/utils/initAgent.d.ts +3 -3
  130. package/build/utils/initAgent.js +58 -26
  131. package/build/utils/language-helper.js +1 -1
  132. package/build/utils/progress.d.ts +3 -4
  133. package/build/utils/progress.js +4 -4
  134. package/build/utils/repoSdkVersion.d.ts +16 -0
  135. package/build/utils/repoSdkVersion.js +88 -0
  136. package/build/utils/testDependencyPolicy.d.ts +20 -0
  137. package/build/utils/testDependencyPolicy.js +64 -4
  138. package/build/utils/utils-verify/typecheck.js +3 -18
  139. package/build/utils/utils.d.ts +1 -1
  140. package/build/utils/versions.d.ts +3 -3
  141. package/build/utils/versions.js +1 -1
  142. package/build/workspace/workspace.d.ts +117 -538
  143. package/build/workspace/workspace.js +2 -2
  144. package/node_modules/playwright/lib/mcp/skyramp/assertOrder.js +66 -0
  145. package/node_modules/playwright/lib/mcp/skyramp/assertTool.js +12 -3
  146. package/node_modules/playwright/lib/mcp/skyramp/common/liveReadError.js +40 -0
  147. package/node_modules/playwright/lib/mcp/skyramp/loadTraceTool.js +21 -0
  148. package/node_modules/playwright/lib/mcp/skyramp/skyRampImport.js +2 -1
  149. package/node_modules/playwright/lib/mcp/skyramp/traceRecordingBackend.js +96 -16
  150. package/node_modules/playwright/lib/mcp/test/skyRampExport.js +10 -0
  151. package/node_modules/playwright/node_modules/playwright-core/lib/server/codegen/skyramp/jsonlReader.js +1 -0
  152. package/node_modules/playwright/node_modules/playwright-core/lib/server/recorder/recorderRunner.js +22 -0
  153. package/node_modules/playwright/node_modules/playwright-core/lib/utils/isomorphic/elementOrder.js +57 -0
  154. package/node_modules/playwright/node_modules/playwright-core/lib/utils.js +2 -0
  155. package/node_modules/playwright/node_modules/playwright-core/lib/vite/traceViewer/{index.uiPTFncY.js → index.0MJW0uG7.js} +1 -1
  156. package/node_modules/playwright/node_modules/playwright-core/lib/vite/traceViewer/index.html +1 -1
  157. package/node_modules/playwright/node_modules/playwright-core/package.json +1 -1
  158. package/node_modules/playwright/node_modules/playwright-core/src/server/codegen/skyramp/jsonlReader.ts +1 -1
  159. package/node_modules/playwright/node_modules/playwright-core/src/server/recorder/recorderRunner.ts +26 -1
  160. package/node_modules/playwright/node_modules/playwright-core/src/utils/isomorphic/elementOrder.ts +83 -0
  161. package/node_modules/playwright/node_modules/playwright-core/src/utils.ts +1 -0
  162. package/node_modules/playwright/package.json +1 -1
  163. package/package.json +9 -6
  164. package/plugin/prompts/plan-tests.md +9 -17
  165. package/plugin/skills/enhance-assertions/reference/shared-rules.md +1 -1
  166. package/plugin/skills/enhance-assertions/reference/ui.md +2 -2
  167. package/plugin/skills/fix-test-import-errors/SKILL.md +1 -1
  168. package/plugin/skills/repair-staged-files/SKILL.md +17 -0
@@ -115,7 +115,7 @@ Generate an integration test from a scenario file or a live endpoint trace.
115
115
  **Output filename:** When \`scenarioFile\` is provided and user did not specify a name, derive it: strip path and 'scenario_' prefix, replace hyphens/non-alphanum with underscores, append '_integration_test' + language extension. Example: 'scenario_orders-patch.json' → 'orders_patch_integration_test.py'. Never use the default 'integration_test.py' when scenarioFile is set — it collides.
116
116
 
117
117
  **IMPORTANT:** If \`apiSchema\` is provided in direct mode, pass the path/URL as-is — do NOT read the file contents. The backend processes it.`,
118
- inputSchema: integrationTestSchema,
118
+ inputSchema: z.object(integrationTestSchema),
119
119
  }, async (params) => {
120
120
  if (params.scenarioFile && (params.apiSchema || params.endpointURL)) {
121
121
  return {
@@ -1,7 +1,6 @@
1
- import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
1
+ import { McpServer, CallToolResult } from "@modelcontextprotocol/server";
2
2
  import { TestType } from "../../types/TestTypes.js";
3
3
  import { TestGenerationService, BaseTestParams } from "../../services/TestGenerationService.js";
4
- import { CallToolResult } from "@modelcontextprotocol/sdk/types.js";
5
4
  export { loadTestSchema, numericString } from "./loadTestSchema.js";
6
5
  export declare class LoadTestService extends TestGenerationService {
7
6
  protected getTestType(): TestType;
@@ -1,3 +1,4 @@
1
+ import { z } from "zod";
1
2
  import { TestType } from "../../types/TestTypes.js";
2
3
  import { TestGenerationService, } from "../../services/TestGenerationService.js";
3
4
  import { AnalyticsService } from "../../services/AnalyticsService.js";
@@ -41,7 +42,7 @@ Load tests evaluate your application's performance, scalability, and stability u
41
42
 
42
43
  **CRITICAL - When using trace parameter:**
43
44
  If \`trace\` parameter is provided (path to a trace file), DO NOT pass \`apiSchema\` or \`endpointURL\` parameters. The trace file already contains all necessary endpoint and schema information. Passing both will cause test generation to fail.`,
44
- inputSchema: loadTestSchema,
45
+ inputSchema: z.object(loadTestSchema),
45
46
  _meta: {
46
47
  keywords: ["load test", "performance test"],
47
48
  },
@@ -1,8 +1,7 @@
1
- import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
1
+ import { McpServer, CallToolResult } from "@modelcontextprotocol/server";
2
2
  import { MockProtocol } from "../../types/TestTypes.js";
3
3
  export { MockProtocol } from "../../types/TestTypes.js";
4
4
  import { TestGenerationService } from "../../services/TestGenerationService.js";
5
- import { CallToolResult } from "@modelcontextprotocol/sdk/types.js";
6
5
  export declare const MOCK_PROTOCOL_EXAMPLES = "\n<example protocol=\"rest\">\nGenerate a REST mock for one HTTP endpoint. Required fields: protocol=\"rest\", endpointURL, method. Use apiSchema with an empty method only when intentionally generating all schema methods.\n{\n \"protocol\": \"rest\",\n \"endpointURL\": \"http://payment-service:5001/orders/:order_id/payment_authorizations\",\n \"method\": \"PUT\",\n \"requestAware\": true,\n \"requestData\": \"{\"payment_method_id\":\"pm_123\"}\",\n \"responseData\": \"{\"accepted\":true}\",\n \"responseStatusCode\": \"200\"\n}\n</example>\n\n<example protocol=\"rest-traffic-simulation\">\nGenerate a REST mock with traffic simulation (latency + drop rate). minLatency/maxLatency inject a random delay per response; dropRate drops a percentage of requests.\n{\n \"protocol\": \"rest\",\n \"endpointURL\": \"http://payment-service:5001/payments\",\n \"method\": \"POST\",\n \"responseData\": \"{\"status\":\"ok\"}\",\n \"minLatency\": 500,\n \"maxLatency\": 1000,\n \"dropRate\": 10\n}\n</example>\n\n<example protocol=\"rest-conditional\">\nGenerate a conditional REST mock that selects a response based on request data. Use \"when\" to match request fields and \"requestSchema\" to validate the request body. Multiple mocks for the same endpoint+method are evaluated in order; the first matching \"when\" wins.\n{\n \"protocol\": \"rest\",\n \"endpointURL\": \"http://payment-service:5001/api/v1/orders\",\n \"method\": \"POST\",\n \"when\": {\"request.body.payment.method\": \"card\"},\n \"requestSchema\": \"{\"type\":\"object\",\"required\":[\"orderId\",\"payment\"]}\",\n \"responseData\": \"{\"status\":\"confirmed\"}\",\n \"responseStatusCode\": \"201\",\n \"noMatchStatusCode\": 404,\n \"validationFailureStatusCode\": 422\n}\n</example>\n\n<example protocol=\"grpc\">\nGenerate a gRPC mock. Required fields: protocol=\"grpc\", endpointURL as host:port, protoPath, grpcServiceName. method is the RPC method name; omit or leave empty to generate all service methods. use responseData for successful protobuf-shaped responses, or grpcStatusCode/grpcStatusMessage for gRPC status errors.\n{\n \"protocol\": \"grpc\",\n \"endpointURL\": \"profile-service:50051\",\n \"protoPath\": \"/repo/proto/profiles.proto\",\n \"grpcServiceName\": \"ProfileService\",\n \"method\": \"GetProfile\",\n \"responseData\": \"{\"eligible\":true}\"\n}\n</example>\n\n<example protocol=\"grpc-traffic-simulation\">\nGenerate a gRPC mock with traffic simulation. Same latency/drop fields as REST.\n{\n \"protocol\": \"grpc\",\n \"endpointURL\": \"profile-service:50051\",\n \"protoPath\": \"/repo/proto/profiles.proto\",\n \"grpcServiceName\": \"ProfileService\",\n \"method\": \"GetProfile\",\n \"responseData\": \"{\"eligible\":true}\",\n \"minLatency\": 200,\n \"maxLatency\": 800,\n \"dropRate\": 5\n}\n</example>\n\n<example protocol=\"grpc-status-error\">\nGenerate a gRPC status error mock. Do not provide responseData with grpcStatusCode.\n{\n \"protocol\": \"grpc\",\n \"endpointURL\": \"profile-service:50051\",\n \"protoPath\": \"/repo/proto/profiles.proto\",\n \"grpcServiceName\": \"ProfileService\",\n \"method\": \"GetProfile\",\n \"grpcStatusCode\": 5,\n \"grpcStatusMessage\": \"profile not found\"\n}\n</example>\n\n<example protocol=\"kafka-producer\">\nGenerate a Kafka producer validation mock. Required fields: protocol=\"kafka\", endpointURL as broker host:port, kafkaTopic, and requestData. Do not pass method or responseData. Traffic simulation (minLatency/maxLatency/dropRate) is NOT supported for Kafka.\n{\n \"protocol\": \"kafka\",\n \"endpointURL\": \"broker:9092\",\n \"kafkaTopic\": \"events\",\n \"requestData\": \"{\"name\":\"order.created\"}\"\n}\n</example>\n\n<example protocol=\"kafka-consumer\">\nGenerate a Kafka consumer message mock. Required fields: protocol=\"kafka\", endpointURL as broker host:port, kafkaTopic, and responseData. Do not pass method or requestData. Traffic simulation (minLatency/maxLatency/dropRate) is NOT supported for Kafka.\n{\n \"protocol\": \"kafka\",\n \"endpointURL\": \"broker:9092\",\n \"kafkaTopic\": \"events\",\n \"responseData\": \"{\"accepted\":true}\"\n}\n</example>";
7
6
  type MockParams = {
8
7
  protocol?: MockProtocol;
@@ -110,7 +110,7 @@ Generate a Kafka consumer message mock. Required fields: protocol="kafka", endpo
110
110
  </example>`;
111
111
  const mockSchema = {
112
112
  protocol: z
113
- .nativeEnum(MockProtocol)
113
+ .enum(MockProtocol)
114
114
  .default(MockProtocol.Rest)
115
115
  .describe("Protocol for the mock to generate. Use 'rest' for HTTP/OpenAPI mocks, 'grpc' for protobuf/gRPC mocks, and 'kafka' for Kafka topic mocks. See <example> blocks in the tool description for protocol-specific required fields."),
116
116
  endpointURL: z
@@ -209,7 +209,7 @@ const mockSchema = {
209
209
  .optional()
210
210
  .describe("MUST be absolute path to a trace file (e.g., /path/to/trace.json) to generate the mock from captured traffic."),
211
211
  when: z
212
- .record(z.unknown())
212
+ .record(z.string(), z.unknown())
213
213
  .optional()
214
214
  .describe("Conditional-selection predicate (operator map) for REST and gRPC mocks. " +
215
215
  "When multiple mocks share an (endpoint, method), the server evaluates each mock's `when` in declared order " +
@@ -566,7 +566,7 @@ Mocks simulate REST, gRPC, or Kafka dependencies so that consumers can develop a
566
566
  3. Inline response data (\`responseData\`): generates a static mock with a fixed response.
567
567
 
568
568
  ${MOCK_PROTOCOL_EXAMPLES}`,
569
- inputSchema: mockSchema,
569
+ inputSchema: z.object(mockSchema),
570
570
  }, async (params) => {
571
571
  const service = new MockGenerationService();
572
572
  const result = await service.generateTest(params);
@@ -1,4 +1,4 @@
1
- import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
1
+ import { McpServer } from "@modelcontextprotocol/server";
2
2
  import { TestType } from "../../types/TestTypes.js";
3
3
  import { TestGenerationService, BaseTestParams } from "../../services/TestGenerationService.js";
4
4
  export declare class SmokeTestService extends TestGenerationService {
@@ -28,7 +28,7 @@ export function registerSmokeTestTool(server) {
28
28
  Smoke testing is a preliminary check used to verify that an endpoint is accessible and returns a valid response. Smoke tests are useful for quickly identifying critical defects after significant changes. They provide rapid validation for basic functionality verification and endpoint accessibility testing.
29
29
 
30
30
  **IMPORTANT: If an apiSchema parameter (OpenAPI/Swagger file path or URL) is provided, DO NOT attempt to read or analyze the file contents. These files can be very large. Simply pass the path/URL to the tool - the backend will handle reading and processing the schema file.**`,
31
- inputSchema: smokeTestSchema,
31
+ inputSchema: z.object(smokeTestSchema),
32
32
  _meta: {
33
33
  keywords: ["smoke test", "quick test"],
34
34
  },
@@ -0,0 +1,64 @@
1
+ import { McpServer, CallToolResult } from "@modelcontextprotocol/server";
2
+ import { z } from "zod";
3
+ import { ProgrammingLanguage } from "../../types/TestTypes.js";
4
+ /**
5
+ * One recorded journey becomes three files: the browser half, the protocol half, and the
6
+ * fleet manager that runs them together.
7
+ *
8
+ * The split is the point. A ui-load run measures one user flow at two levels at once --
9
+ * a few real browsers for what a person experiences, and cheap protocol traffic for what
10
+ * the backend carries -- so the numbers come from the same journey rather than from two
11
+ * tests that drifted apart.
12
+ */
13
+ export declare const uiLoadTestSchema: {
14
+ playwrightTrace: z.ZodOptional<z.ZodString>;
15
+ playwrightInput: z.ZodOptional<z.ZodString>;
16
+ playwrightStoragePath: z.ZodDefault<z.ZodString>;
17
+ language: z.ZodPreprocess<z.ZodDefault<z.ZodEnum<typeof ProgrammingLanguage>>, unknown>;
18
+ framework: z.ZodPreprocess<z.ZodDefault<z.ZodString>, unknown>;
19
+ hosts: z.ZodArray<z.ZodObject<{
20
+ name: z.ZodString;
21
+ region: z.ZodDefault<z.ZodString>;
22
+ dockerHost: z.ZodDefault<z.ZodString>;
23
+ tls: z.ZodDefault<z.ZodString>;
24
+ hostPort: z.ZodDefault<z.ZodNumber>;
25
+ address: z.ZodDefault<z.ZodString>;
26
+ workerImage: z.ZodDefault<z.ZodString>;
27
+ workerTag: z.ZodDefault<z.ZodString>;
28
+ }, z.core.$strip>>;
29
+ browserCoverage: z.ZodDefault<z.ZodNumber>;
30
+ loadDuration: z.ZodDefault<z.ZodNumber>;
31
+ loadNumThreads: z.ZodDefault<z.ZodNumber>;
32
+ loadCount: z.ZodDefault<z.ZodNumber>;
33
+ loadTargetRPS: z.ZodDefault<z.ZodNumber>;
34
+ loadRampupDuration: z.ZodDefault<z.ZodNumber>;
35
+ loadRampupInterval: z.ZodDefault<z.ZodNumber>;
36
+ thresholds: z.ZodDefault<z.ZodString>;
37
+ deployWorker: z.ZodDefault<z.ZodBoolean>;
38
+ include: z.ZodDefault<z.ZodArray<z.ZodString>>;
39
+ exclude: z.ZodDefault<z.ZodArray<z.ZodString>>;
40
+ output: z.ZodDefault<z.ZodString>;
41
+ outputDir: z.ZodString;
42
+ allowTraceReuse: z.ZodDefault<z.ZodBoolean>;
43
+ force: z.ZodDefault<z.ZodBoolean>;
44
+ };
45
+ type UILoadParams = z.infer<z.ZodObject<typeof uiLoadTestSchema>>;
46
+ /**
47
+ * Generate the three ui-load files from one Playwright trace.
48
+ *
49
+ * Separate from the REST generators because it does not go through
50
+ * generateRestTestWrapper: ui-load has its own FFI export, which is what lets it take
51
+ * hosts and a browser/protocol split that the shared wrapper has no room for.
52
+ */
53
+ export declare function generateUILoadTest(params: UILoadParams): Promise<CallToolResult>;
54
+ /**
55
+ * The tool's entry point: the trace-reuse guard and the usage event around the generation,
56
+ * as skyramp_ui_test_generation has them.
57
+ *
58
+ * The guard is scoped "ui-load", not "ui". It namespaces by generator on purpose -- a UI
59
+ * test and a hybrid trio from one recording are different artifacts -- so what it stops
60
+ * here is a second, differently named TRIO from the same zip.
61
+ */
62
+ export declare function handleUILoadTest(params: UILoadParams): Promise<CallToolResult>;
63
+ export declare function registerUILoadTestTool(server: McpServer): void;
64
+ export {};