@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.
- package/build/index.js +239 -210
- package/build/playwright/PlaywrightTraceService.d.ts +1 -1
- package/build/playwright/blueprintDigestStore.d.ts +1 -1
- package/build/playwright/registerPlaywrightTools.d.ts +1 -1
- package/build/playwright/traceRecordingPrompt.d.ts +1 -1
- package/build/playwright/traceRecordingPrompt.js +4 -3
- package/build/prompts/local-dev/local-dev-prompts.d.ts +1 -1
- package/build/prompts/local-dev/local-dev-prompts.js +2 -2
- package/build/prompts/orderAssertionRule.d.ts +9 -0
- package/build/prompts/orderAssertionRule.js +9 -0
- package/build/prompts/startTraceCollectionPrompts.d.ts +1 -1
- package/build/prompts/startTraceCollectionPrompts.js +2 -3
- package/build/prompts/test-maintenance/driftAnalysisShared.js +2 -0
- package/build/prompts/test-recommendation/registerRecommendTestsPrompt.d.ts +1 -1
- package/build/prompts/test-recommendation/registerRecommendTestsPrompt.js +2 -2
- package/build/prompts/testbot/testbot-prompts.d.ts +1 -1
- package/build/prompts/testbot/testbot-prompts.js +9 -9
- package/build/recommendation/answers.d.ts +3 -3
- package/build/recommendation/answers.js +3 -2
- package/build/recommendation/verifierContracts.d.ts +4 -4
- package/build/recommendation/verifierContracts.js +6 -5
- package/build/recommendation/verifiers/coverage.js +25 -25
- package/build/recommendation/verifiers/deliveredMatchesPlan.js +3 -3
- package/build/resources/analysisResources.d.ts +1 -1
- package/build/resources/analysisResources.js +1 -1
- package/build/resources/progressResource.d.ts +1 -1
- package/build/resources/sutSetupResource.d.ts +1 -1
- package/build/resources/sutSetupResource.js +1 -1
- package/build/resources/testbotResource.d.ts +1 -1
- package/build/resources/testbotResource.js +1 -1
- package/build/services/AnalyticsService.d.ts +1 -1
- package/build/services/FleetExecutionService.d.ts +130 -0
- package/build/services/FleetExecutionService.js +391 -0
- package/build/services/ModularizationService.d.ts +1 -1
- package/build/services/TestExecutionService.d.ts +7 -0
- package/build/services/TestExecutionService.js +21 -0
- package/build/services/TestGenerationService.d.ts +1 -1
- package/build/tool-phases.js +2 -0
- package/build/tools/auth/loginTool.d.ts +1 -1
- package/build/tools/auth/loginTool.js +2 -2
- package/build/tools/auth/logoutTool.d.ts +1 -1
- package/build/tools/auth/logoutTool.js +2 -2
- package/build/tools/code-refactor/alignAssertionsTool.d.ts +1 -1
- package/build/tools/code-refactor/alignAssertionsTool.js +1 -1
- package/build/tools/code-refactor/assertionSkillTools.d.ts +1 -1
- package/build/tools/code-refactor/assertionSkillTools.js +2 -2
- package/build/tools/code-refactor/codeReuseTool.d.ts +1 -1
- package/build/tools/code-refactor/codeReuseTool.js +2 -2
- package/build/tools/code-refactor/enhanceAssertionsTool.d.ts +1 -1
- package/build/tools/code-refactor/enhanceAssertionsTool.js +1 -1
- package/build/tools/code-refactor/modularizationTool.d.ts +1 -1
- package/build/tools/code-refactor/modularizationTool.js +2 -2
- package/build/tools/enrichTestWithMocksTool.d.ts +1 -1
- package/build/tools/enrichTestWithMocksTool.js +2 -2
- package/build/tools/executeFleetTool.d.ts +28 -0
- package/build/tools/executeFleetTool.js +107 -0
- package/build/tools/executeSkyrampTestTool.d.ts +8 -5
- package/build/tools/executeSkyrampTestTool.js +13 -5
- package/build/tools/fixErrorTool.d.ts +1 -1
- package/build/tools/fixErrorTool.js +1 -1
- package/build/tools/generate-tests/batchMockGenerationTool.d.ts +6 -57
- package/build/tools/generate-tests/batchMockGenerationTool.js +3 -3
- package/build/tools/generate-tests/generateBatchScenarioRestTool.d.ts +9 -45
- package/build/tools/generate-tests/generateBatchScenarioRestTool.js +29 -11
- package/build/tools/generate-tests/generateContractRestTool.d.ts +1 -2
- package/build/tools/generate-tests/generateContractRestTool.js +1 -1
- package/build/tools/generate-tests/generateE2ERestTool.d.ts +2 -2
- package/build/tools/generate-tests/generateE2ERestTool.js +10 -2
- package/build/tools/generate-tests/generateFuzzRestTool.d.ts +1 -1
- package/build/tools/generate-tests/generateFuzzRestTool.js +1 -1
- package/build/tools/generate-tests/generateIntegrationRestTool.d.ts +1 -2
- package/build/tools/generate-tests/generateIntegrationRestTool.js +1 -1
- package/build/tools/generate-tests/generateLoadRestTool.d.ts +1 -2
- package/build/tools/generate-tests/generateLoadRestTool.js +2 -1
- package/build/tools/generate-tests/generateMockRestTool.d.ts +1 -2
- package/build/tools/generate-tests/generateMockRestTool.js +3 -3
- package/build/tools/generate-tests/generateSmokeRestTool.d.ts +1 -1
- package/build/tools/generate-tests/generateSmokeRestTool.js +1 -1
- package/build/tools/generate-tests/generateUILoadRestTool.d.ts +64 -0
- package/build/tools/generate-tests/generateUILoadRestTool.js +512 -0
- package/build/tools/generate-tests/generateUIRestTool.d.ts +8 -7
- package/build/tools/generate-tests/generateUIRestTool.js +10 -2
- package/build/tools/generate-tests/loadTestSchema.d.ts +15 -15
- package/build/tools/generate-tests/trace-reuse-guard.d.ts +1 -1
- package/build/tools/generateEnrichedIntegrationTestTool.d.ts +1 -2
- package/build/tools/generateEnrichedIntegrationTestTool.js +1 -1
- package/build/tools/localDevWorkerComposeTool.d.ts +1 -1
- package/build/tools/localDevWorkerComposeTool.js +2 -2
- package/build/tools/one-click/oneClickTool.d.ts +1 -1
- package/build/tools/one-click/oneClickTool.js +1 -1
- package/build/tools/preflightMockCheckTool.d.ts +1 -1
- package/build/tools/preflightMockCheckTool.js +3 -3
- package/build/tools/queryProxyMocksTool.d.ts +1 -1
- package/build/tools/queryProxyMocksTool.js +3 -3
- package/build/tools/submitReportTool.d.ts +111 -414
- package/build/tools/submitReportTool.js +88 -38
- package/build/tools/test-management/actionsTool.d.ts +1 -1
- package/build/tools/test-management/actionsTool.js +7 -7
- package/build/tools/test-management/analyzeChangesTool.d.ts +22 -118
- package/build/tools/test-management/analyzeChangesTool.js +4 -4
- package/build/tools/test-management/analyzeTestHealthTool.d.ts +1 -1
- package/build/tools/test-management/analyzeTestHealthTool.js +4 -4
- package/build/tools/test-management/registerTestPlanTool.d.ts +107 -733
- package/build/tools/test-management/registerTestPlanTool.js +12 -12
- package/build/tools/test-management/resolveScreenTool.d.ts +1 -1
- package/build/tools/test-management/resolveScreenTool.js +6 -2
- package/build/tools/trace/startTraceCollectionTool.d.ts +1 -1
- package/build/tools/trace/startTraceCollectionTool.js +4 -4
- package/build/tools/trace/stopTraceCollectionTool.d.ts +1 -1
- package/build/tools/trace/stopTraceCollectionTool.js +2 -2
- package/build/tools/verifyTestDependenciesTool.d.ts +1 -1
- package/build/tools/verifyTestDependenciesTool.js +1 -1
- package/build/tools/workspace/initScanWorkspaceTool.d.ts +1 -1
- package/build/tools/workspace/initScanWorkspaceTool.js +1 -1
- package/build/tools/workspace/initializeWorkspaceTool.d.ts +1 -1
- package/build/tools/workspace/initializeWorkspaceTool.js +1 -1
- package/build/types/RepositoryAnalysis.d.ts +164 -1170
- package/build/types/RepositoryAnalysis.js +12 -10
- package/build/types/StepMethod.d.ts +24 -1
- package/build/types/StepMethod.js +1 -1
- package/build/types/TestTypes.d.ts +41 -133
- package/build/types/TestTypes.js +25 -3
- package/build/types/TestbotReport.d.ts +4 -1
- package/build/utils/assertion-verify/metrics.js +12 -0
- package/build/utils/docker.d.ts +29 -7
- package/build/utils/docker.js +83 -27
- package/build/utils/findUp.d.ts +20 -0
- package/build/utils/findUp.js +59 -0
- package/build/utils/initAgent.d.ts +3 -3
- package/build/utils/initAgent.js +58 -26
- package/build/utils/language-helper.js +1 -1
- package/build/utils/progress.d.ts +3 -4
- package/build/utils/progress.js +4 -4
- package/build/utils/repoSdkVersion.d.ts +16 -0
- package/build/utils/repoSdkVersion.js +88 -0
- package/build/utils/testDependencyPolicy.d.ts +20 -0
- package/build/utils/testDependencyPolicy.js +64 -4
- package/build/utils/utils-verify/typecheck.js +3 -18
- package/build/utils/utils.d.ts +1 -1
- package/build/utils/versions.d.ts +3 -3
- package/build/utils/versions.js +1 -1
- package/build/workspace/workspace.d.ts +117 -538
- package/build/workspace/workspace.js +2 -2
- package/node_modules/playwright/lib/mcp/skyramp/assertOrder.js +66 -0
- package/node_modules/playwright/lib/mcp/skyramp/assertTool.js +12 -3
- package/node_modules/playwright/lib/mcp/skyramp/common/liveReadError.js +40 -0
- package/node_modules/playwright/lib/mcp/skyramp/loadTraceTool.js +21 -0
- package/node_modules/playwright/lib/mcp/skyramp/skyRampImport.js +2 -1
- package/node_modules/playwright/lib/mcp/skyramp/traceRecordingBackend.js +96 -16
- package/node_modules/playwright/lib/mcp/test/skyRampExport.js +10 -0
- package/node_modules/playwright/node_modules/playwright-core/lib/server/codegen/skyramp/jsonlReader.js +1 -0
- package/node_modules/playwright/node_modules/playwright-core/lib/server/recorder/recorderRunner.js +22 -0
- package/node_modules/playwright/node_modules/playwright-core/lib/utils/isomorphic/elementOrder.js +57 -0
- package/node_modules/playwright/node_modules/playwright-core/lib/utils.js +2 -0
- package/node_modules/playwright/node_modules/playwright-core/lib/vite/traceViewer/{index.uiPTFncY.js → index.0MJW0uG7.js} +1 -1
- package/node_modules/playwright/node_modules/playwright-core/lib/vite/traceViewer/index.html +1 -1
- package/node_modules/playwright/node_modules/playwright-core/package.json +1 -1
- package/node_modules/playwright/node_modules/playwright-core/src/server/codegen/skyramp/jsonlReader.ts +1 -1
- package/node_modules/playwright/node_modules/playwright-core/src/server/recorder/recorderRunner.ts +26 -1
- package/node_modules/playwright/node_modules/playwright-core/src/utils/isomorphic/elementOrder.ts +83 -0
- package/node_modules/playwright/node_modules/playwright-core/src/utils.ts +1 -0
- package/node_modules/playwright/package.json +1 -1
- package/package.json +9 -6
- package/plugin/prompts/plan-tests.md +9 -17
- package/plugin/skills/enhance-assertions/reference/shared-rules.md +1 -1
- package/plugin/skills/enhance-assertions/reference/ui.md +2 -2
- package/plugin/skills/fix-test-import-errors/SKILL.md +1 -1
- package/plugin/skills/repair-staged-files/SKILL.md +17 -0
|
@@ -89,7 +89,7 @@ const registerStepSchema = z
|
|
|
89
89
|
if (step[field] === undefined)
|
|
90
90
|
continue;
|
|
91
91
|
ctx.addIssue({
|
|
92
|
-
code:
|
|
92
|
+
code: "custom",
|
|
93
93
|
path: [field],
|
|
94
94
|
message: `\`${field}\` belongs to a step that sends a request; \`${step.method}\` is a page interaction, which sends none. Assert the page through \`declarations.elements\`, or write the request as its own step.`,
|
|
95
95
|
});
|
|
@@ -246,7 +246,7 @@ const declarationsSchema = declarationFieldsSchema
|
|
|
246
246
|
if (identifies)
|
|
247
247
|
return;
|
|
248
248
|
ctx.addIssue({
|
|
249
|
-
code:
|
|
249
|
+
code: "custom",
|
|
250
250
|
path: ["elements", "items", index],
|
|
251
251
|
message: "every `elements.items` entry needs at least one of `accessibleName`, `testId` or `stableId` with a value in it — an entry with none names no element that can be looked up in a capture.",
|
|
252
252
|
});
|
|
@@ -338,7 +338,7 @@ const registerPlannedTestSchema = z.preprocess(hoistDeclarationFields, z
|
|
|
338
338
|
const isUILabel = hasUITestTypeLabel(plannedTest.testType);
|
|
339
339
|
if (plannedTest.steps.length === 0 && !isUILabel) {
|
|
340
340
|
ctx.addIssue({
|
|
341
|
-
code:
|
|
341
|
+
code: "custom",
|
|
342
342
|
path: ["steps"],
|
|
343
343
|
message: "steps must not be empty for a contract, integration or other non-UI planned test: the route, duplicate and existing-coverage checks all read the steps to find the endpoint this test is about. List the requests the test makes.",
|
|
344
344
|
});
|
|
@@ -352,7 +352,7 @@ const registerPlannedTestSchema = z.preprocess(hoistDeclarationFields, z
|
|
|
352
352
|
const url = typeof rawUrl === "string" ? rawUrl.trim() : "";
|
|
353
353
|
if (isUILabel && !hasHTTPStep && url.length === 0) {
|
|
354
354
|
ctx.addIssue({
|
|
355
|
-
code:
|
|
355
|
+
code: "custom",
|
|
356
356
|
path: ["declarations", "elements", "pageUrl"],
|
|
357
357
|
message: "a ui or e2e planned test whose steps make no HTTP call must set `declarations.elements.pageUrl` to the screen it opens: a planned test naming no request and no screen is not a plan the server can read.",
|
|
358
358
|
});
|
|
@@ -363,7 +363,7 @@ const registerPlannedTestSchema = z.preprocess(hoistDeclarationFields, z
|
|
|
363
363
|
// no page either could look up and drew no objection from either.
|
|
364
364
|
if (isUILabel && url.length > 0 && !namesAScreen(url)) {
|
|
365
365
|
ctx.addIssue({
|
|
366
|
-
code:
|
|
366
|
+
code: "custom",
|
|
367
367
|
path: ["declarations", "elements", "pageUrl"],
|
|
368
368
|
message: "`declarations.elements.pageUrl` is accepted in two spellings and no others: a route path starting with `/`, e.g. `/orders/1`, or an absolute `http` or `https` URL, e.g. `http://localhost:5173/orders/1`. Give the path when this run has no host to name.",
|
|
369
369
|
});
|
|
@@ -474,7 +474,7 @@ const registerTestPlanSchema = {
|
|
|
474
474
|
return;
|
|
475
475
|
}
|
|
476
476
|
ctx.addIssue({
|
|
477
|
-
code:
|
|
477
|
+
code: "custom",
|
|
478
478
|
path: [index, "id"],
|
|
479
479
|
message: `change id "${change.id}" is already used by change ${seen + 1}. Every change needs its own id — planned tests cite it by that id.`,
|
|
480
480
|
});
|
|
@@ -520,7 +520,7 @@ const registerTestPlanSchema = {
|
|
|
520
520
|
return;
|
|
521
521
|
}
|
|
522
522
|
ctx.addIssue({
|
|
523
|
-
code:
|
|
523
|
+
code: "custom",
|
|
524
524
|
path: [index, "id"],
|
|
525
525
|
message: `defect id "${defect.id}" is already used by defect ${seen + 1}. Every defect needs its own id — planned tests cite it by that id.`,
|
|
526
526
|
});
|
|
@@ -552,7 +552,7 @@ const registerTestPlanSchema = {
|
|
|
552
552
|
return;
|
|
553
553
|
}
|
|
554
554
|
ctx.addIssue({
|
|
555
|
-
code:
|
|
555
|
+
code: "custom",
|
|
556
556
|
path: [index, "scenarioName"],
|
|
557
557
|
message: `scenarioName "${plannedTest.scenarioName}" is already used by planned test ${first + 1}. Every planned test needs its own name — the name is its id.`,
|
|
558
558
|
});
|
|
@@ -565,16 +565,16 @@ const registerTestPlanSchema = {
|
|
|
565
565
|
repository: repositorySlugField("a maintenance entry", "which holds the test this run edits"),
|
|
566
566
|
file: z
|
|
567
567
|
.string()
|
|
568
|
-
.describe("Repository-relative path of the existing test this run edits. It has to resolve in the repository named above: a change is credited as covered only when it does, and `existingCoverage` objects when it does not."),
|
|
568
|
+
.describe("Repository-relative path of the existing test this run edits, or runs unchanged as a VERIFY. It has to resolve in the repository named above: a change is credited as covered only when it does, and `existingCoverage` objects when it does not."),
|
|
569
569
|
differsBy: z
|
|
570
570
|
.string()
|
|
571
|
-
.describe("What your edit changes in that test, in one sentence."),
|
|
571
|
+
.describe("What your edit changes in that test, in one sentence. For a test you run unchanged, what it asserts that the cited changes or defects reach."),
|
|
572
572
|
changes: maintainedCitations.changes,
|
|
573
573
|
defects: maintainedCitations.defects,
|
|
574
574
|
})
|
|
575
575
|
.strict())
|
|
576
576
|
.optional()
|
|
577
|
-
.describe("Existing tests this run edits instead of planning new ones. Coverage counts the changes these cite, and the defect check counts the defects they cite, so a change or a defect already covered by a spec you are updating needs no planned test — and a duplicate spec beside the one you edited is the mistake. Declare maintenance here even when the plan holds no planned tests at all: a maintenance-only plan is a complete plan."),
|
|
577
|
+
.describe("Existing tests this run edits, or runs unchanged as a VERIFY, instead of planning new ones. A test you run unchanged is checked at report time: the report objects when this server recorded no run of it after the edits. Coverage counts the changes these cite, and the defect check counts the defects they cite, so a change or a defect already covered by a spec you are updating needs no planned test — and a duplicate spec beside the one you edited is the mistake. Declare maintenance here even when the plan holds no planned tests at all: a maintenance-only plan is a complete plan."),
|
|
578
578
|
answers: z
|
|
579
579
|
.array(z
|
|
580
580
|
.object({
|
|
@@ -907,7 +907,7 @@ export function registerRegisterTestPlanTool(server) {
|
|
|
907
907
|
"An undeclared key is refused by name on a planned test and on `declarations`, so a declaration written one level too high is corrected rather than dropped in silence. " +
|
|
908
908
|
"Checks run against the stored plan and return objections. Fix one and register it again as often as you like, or answer it by id through `answers`. " +
|
|
909
909
|
"There is no fallback plan: if you never register, this run has no plan.",
|
|
910
|
-
inputSchema: registerTestPlanSchema,
|
|
910
|
+
inputSchema: z.object(registerTestPlanSchema),
|
|
911
911
|
}, async (params) => {
|
|
912
912
|
// The run's own state file, unless the agent named one. Outside a run there
|
|
913
913
|
// is no path to fall back to, and no analysis to check a plan against.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { McpServer } from "@modelcontextprotocol/
|
|
1
|
+
import { McpServer } from "@modelcontextprotocol/server";
|
|
2
2
|
import { ScreenRouteCandidate } from "../../utils/screenRoutes.js";
|
|
3
3
|
/** Where a bound route parameter came from. `unresolved` never carries a value. */
|
|
4
4
|
export type ParamSource = "currentUrl" | "blueprint" | "unresolved";
|
|
@@ -260,7 +260,7 @@ const outputSchema = {
|
|
|
260
260
|
.array(z.object({
|
|
261
261
|
url: z.string(),
|
|
262
262
|
routePattern: z.string(),
|
|
263
|
-
params: z.record(z.object({
|
|
263
|
+
params: z.record(z.string(), z.object({
|
|
264
264
|
value: z.string(),
|
|
265
265
|
from: z.enum(["currentUrl", "blueprint", "unresolved"]),
|
|
266
266
|
})),
|
|
@@ -282,7 +282,11 @@ const DESCRIPTION = "Answer which page of the running app renders a changed fron
|
|
|
282
282
|
"(skip the browser and say so), or 'unknown' when no route table could be read (find the page yourself). " +
|
|
283
283
|
"The current page is read from this server's own browser session — do not pass it.";
|
|
284
284
|
export function registerResolveScreenTool(server) {
|
|
285
|
-
server.registerTool(TOOL_RESOLVE_SCREEN, {
|
|
285
|
+
server.registerTool(TOOL_RESOLVE_SCREEN, {
|
|
286
|
+
description: DESCRIPTION,
|
|
287
|
+
inputSchema: z.object(inputSchema),
|
|
288
|
+
outputSchema: z.object(outputSchema),
|
|
289
|
+
}, async (params) => {
|
|
286
290
|
const repositoryPath = String(params.repositoryPath ?? "").trim();
|
|
287
291
|
const changedFile = String(params.changedFile ?? "").trim();
|
|
288
292
|
const location = lastKnownBrowserUrl();
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { McpServer } from "@modelcontextprotocol/
|
|
1
|
+
import { McpServer } from "@modelcontextprotocol/server";
|
|
2
2
|
export declare function registerTraceTool(server: McpServer): void;
|
|
@@ -47,7 +47,7 @@ Pass \`sessionMode\` to declare what you want to do with the workspace's session
|
|
|
47
47
|
\`sessionMode: "auto"\` (default) — Use when the user does not signal an intent either way. If a session file already exists in \`outputDir\`, behaves like \`reuse\` (loads it, does not overwrite). If no session file exists, does **no** session handling — it neither loads nor saves. Storing a session is always opt-in: it only happens with \`sessionMode: "capture"\` or an explicit \`playwrightSaveStoragePath\`. Plain auto never writes credentials the user did not ask to store.
|
|
48
48
|
|
|
49
49
|
For detailed documentation visit: https://www.skyramp.dev/docs/load-test/advanced-generation#start-trace-collection`,
|
|
50
|
-
inputSchema: {
|
|
50
|
+
inputSchema: z.object({
|
|
51
51
|
playwright: z
|
|
52
52
|
.boolean()
|
|
53
53
|
.describe("Whether to enable Playwright for trace collection. Set to true for UI interactions, false for API-only tracing")
|
|
@@ -94,14 +94,14 @@ For detailed documentation visit: https://www.skyramp.dev/docs/load-test/advance
|
|
|
94
94
|
prompt: z
|
|
95
95
|
.string()
|
|
96
96
|
.describe("The prompt user provided to start trace collection"),
|
|
97
|
-
},
|
|
97
|
+
}),
|
|
98
98
|
_meta: {
|
|
99
99
|
keywords: ["start trace", "trace collection", "trace generation"],
|
|
100
100
|
},
|
|
101
|
-
}, async (params,
|
|
101
|
+
}, async (params, ctx) => {
|
|
102
102
|
let errorResult;
|
|
103
103
|
// Helper to send progress notifications to the MCP client
|
|
104
|
-
const sendProgress = makeProgressReporter(
|
|
104
|
+
const sendProgress = makeProgressReporter(ctx);
|
|
105
105
|
logger.info("Starting trace collection", {
|
|
106
106
|
playwright: params.playwright,
|
|
107
107
|
browser: params.browser,
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { McpServer } from "@modelcontextprotocol/
|
|
1
|
+
import { McpServer } from "@modelcontextprotocol/server";
|
|
2
2
|
export declare function registerTraceStopTool(server: McpServer): void;
|
|
@@ -22,7 +22,7 @@ The generated trace and Playwright files can be used as inputs for:
|
|
|
22
22
|
- UI test generation (using Playwright files)
|
|
23
23
|
|
|
24
24
|
For detailed documentation visit: https://www.skyramp.dev/docs/load-test/advanced-generation#end-trace-collection`,
|
|
25
|
-
inputSchema: {
|
|
25
|
+
inputSchema: z.object({
|
|
26
26
|
traceOutputFile: z
|
|
27
27
|
.string()
|
|
28
28
|
.default("skyramp_traces.json")
|
|
@@ -38,7 +38,7 @@ For detailed documentation visit: https://www.skyramp.dev/docs/load-test/advance
|
|
|
38
38
|
prompt: z
|
|
39
39
|
.string()
|
|
40
40
|
.describe("The prompt user provided to stop trace collection"),
|
|
41
|
-
},
|
|
41
|
+
}),
|
|
42
42
|
_meta: {
|
|
43
43
|
keywords: ["stop trace", "collect generated trace"],
|
|
44
44
|
},
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { McpServer } from "@modelcontextprotocol/
|
|
1
|
+
import { McpServer } from "@modelcontextprotocol/server";
|
|
2
2
|
export declare const VERIFY_TEST_DEPENDENCIES_TOOL = "skyramp_verify_test_dependencies";
|
|
3
3
|
export declare function registerVerifyTestDependenciesTool(server: McpServer): void;
|
|
@@ -14,7 +14,7 @@ const schema = z.object({
|
|
|
14
14
|
export function registerVerifyTestDependenciesTool(server) {
|
|
15
15
|
server.registerTool(VERIFY_TEST_DEPENDENCIES_TOOL, {
|
|
16
16
|
description: "Verify that dependency changes made while fixing tests use only approved testing packages and development/test-only manifest scopes.",
|
|
17
|
-
inputSchema: schema
|
|
17
|
+
inputSchema: schema,
|
|
18
18
|
_meta: {
|
|
19
19
|
keywords: [
|
|
20
20
|
"dependencies",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { McpServer } from "@modelcontextprotocol/
|
|
1
|
+
import { McpServer } from "@modelcontextprotocol/server";
|
|
2
2
|
export declare function issueScanToken(): string;
|
|
3
3
|
export declare function validateAndConsumeScanToken(token: string): boolean;
|
|
4
4
|
export declare function registerInitScanWorkspaceTool(server: McpServer): void;
|
|
@@ -33,7 +33,7 @@ export function registerInitScanWorkspaceTool(server) {
|
|
|
33
33
|
"PREREQUISITE for skyramp_init_workspace. " +
|
|
34
34
|
"Scans a repository and returns instructions for discovering all services, along with a scanToken. " +
|
|
35
35
|
"Follow the instructions to build the services array, then pass both to skyramp_init_workspace to create the workspace config.",
|
|
36
|
-
inputSchema: initScanWorkspaceSchema
|
|
36
|
+
inputSchema: initScanWorkspaceSchema,
|
|
37
37
|
}, async (params) => {
|
|
38
38
|
let errorResult;
|
|
39
39
|
const recordParams = {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { McpServer } from "@modelcontextprotocol/
|
|
1
|
+
import { McpServer } from "@modelcontextprotocol/server";
|
|
2
2
|
export declare function registerInitializeWorkspaceTool(server: McpServer): void;
|
|
@@ -111,7 +111,7 @@ export function registerInitializeWorkspaceTool(server) {
|
|
|
111
111
|
"Then call this tool to write .skyramp/workspace.yml with the discovered services and scanToken. " +
|
|
112
112
|
"2. Edit existing workspace.yml: omit scanToken, set force: true, and pass the FULL updated services array (overwrite, not merge — fields not in the array are dropped). " +
|
|
113
113
|
"The services schema is strict: any field not in the schema (e.g. inventing `serverStopCommand` on `runtimeDetails`) fails validation and the call is rejected.",
|
|
114
|
-
inputSchema: initializeWorkspaceSchema
|
|
114
|
+
inputSchema: initializeWorkspaceSchema,
|
|
115
115
|
_meta: {
|
|
116
116
|
keywords: [
|
|
117
117
|
"initialize",
|