@browserstack/mcp-server 1.2.15-beta.2 → 1.2.16
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/server-factory.js +0 -4
- package/dist/tools/percy-sdk.js +20 -11
- package/dist/tools/testmanagement-utils/get-testplan.d.ts +16 -0
- package/dist/tools/testmanagement-utils/get-testplan.js +99 -0
- package/dist/tools/testmanagement-utils/list-folders.d.ts +16 -0
- package/dist/tools/testmanagement-utils/list-folders.js +77 -0
- package/dist/tools/testmanagement-utils/list-testcases.js +1 -1
- package/dist/tools/testmanagement-utils/list-testplans.d.ts +15 -0
- package/dist/tools/testmanagement-utils/list-testplans.js +75 -0
- package/dist/tools/testmanagement-utils/update-testcase.d.ts +16 -0
- package/dist/tools/testmanagement-utils/update-testcase.js +133 -10
- package/dist/tools/testmanagement.d.ts +15 -0
- package/dist/tools/testmanagement.js +73 -2
- package/package.json +2 -3
- package/dist/lib/percy-api/auth.d.ts +0 -41
- package/dist/lib/percy-api/auth.js +0 -96
- package/dist/lib/percy-api/cache.d.ts +0 -28
- package/dist/lib/percy-api/cache.js +0 -48
- package/dist/lib/percy-api/client.d.ts +0 -69
- package/dist/lib/percy-api/client.js +0 -275
- package/dist/lib/percy-api/errors.d.ts +0 -15
- package/dist/lib/percy-api/errors.js +0 -52
- package/dist/lib/percy-api/formatter.d.ts +0 -16
- package/dist/lib/percy-api/formatter.js +0 -344
- package/dist/lib/percy-api/percy-auth.d.ts +0 -43
- package/dist/lib/percy-api/percy-auth.js +0 -137
- package/dist/lib/percy-api/percy-error-handler.d.ts +0 -24
- package/dist/lib/percy-api/percy-error-handler.js +0 -302
- package/dist/lib/percy-api/percy-session.d.ts +0 -42
- package/dist/lib/percy-api/percy-session.js +0 -87
- package/dist/lib/percy-api/polling.d.ts +0 -26
- package/dist/lib/percy-api/polling.js +0 -42
- package/dist/lib/percy-api/types.d.ts +0 -56
- package/dist/lib/percy-api/types.js +0 -76
- package/dist/tools/percy-mcp/advanced/branchline-operations.d.ts +0 -16
- package/dist/tools/percy-mcp/advanced/branchline-operations.js +0 -81
- package/dist/tools/percy-mcp/advanced/manage-variants.d.ts +0 -16
- package/dist/tools/percy-mcp/advanced/manage-variants.js +0 -155
- package/dist/tools/percy-mcp/advanced/manage-visual-monitoring.d.ts +0 -16
- package/dist/tools/percy-mcp/advanced/manage-visual-monitoring.js +0 -171
- package/dist/tools/percy-mcp/auth/auth-status.d.ts +0 -3
- package/dist/tools/percy-mcp/auth/auth-status.js +0 -131
- package/dist/tools/percy-mcp/core/approve-build.d.ts +0 -14
- package/dist/tools/percy-mcp/core/approve-build.js +0 -97
- package/dist/tools/percy-mcp/core/get-build-items.d.ts +0 -13
- package/dist/tools/percy-mcp/core/get-build-items.js +0 -65
- package/dist/tools/percy-mcp/core/get-build.d.ts +0 -10
- package/dist/tools/percy-mcp/core/get-build.js +0 -16
- package/dist/tools/percy-mcp/core/get-comparison.d.ts +0 -11
- package/dist/tools/percy-mcp/core/get-comparison.js +0 -59
- package/dist/tools/percy-mcp/core/get-snapshot.d.ts +0 -10
- package/dist/tools/percy-mcp/core/get-snapshot.js +0 -40
- package/dist/tools/percy-mcp/core/list-builds.d.ts +0 -14
- package/dist/tools/percy-mcp/core/list-builds.js +0 -45
- package/dist/tools/percy-mcp/core/list-projects.d.ts +0 -12
- package/dist/tools/percy-mcp/core/list-projects.js +0 -51
- package/dist/tools/percy-mcp/creation/create-app-snapshot.d.ts +0 -12
- package/dist/tools/percy-mcp/creation/create-app-snapshot.js +0 -29
- package/dist/tools/percy-mcp/creation/create-build.d.ts +0 -19
- package/dist/tools/percy-mcp/creation/create-build.js +0 -68
- package/dist/tools/percy-mcp/creation/create-comparison.d.ts +0 -18
- package/dist/tools/percy-mcp/creation/create-comparison.js +0 -90
- package/dist/tools/percy-mcp/creation/create-snapshot.d.ts +0 -17
- package/dist/tools/percy-mcp/creation/create-snapshot.js +0 -99
- package/dist/tools/percy-mcp/creation/finalize-build.d.ts +0 -12
- package/dist/tools/percy-mcp/creation/finalize-build.js +0 -33
- package/dist/tools/percy-mcp/creation/finalize-comparison.d.ts +0 -10
- package/dist/tools/percy-mcp/creation/finalize-comparison.js +0 -16
- package/dist/tools/percy-mcp/creation/finalize-snapshot.d.ts +0 -12
- package/dist/tools/percy-mcp/creation/finalize-snapshot.js +0 -33
- package/dist/tools/percy-mcp/creation/upload-resource.d.ts +0 -15
- package/dist/tools/percy-mcp/creation/upload-resource.js +0 -43
- package/dist/tools/percy-mcp/creation/upload-tile.d.ts +0 -11
- package/dist/tools/percy-mcp/creation/upload-tile.js +0 -53
- package/dist/tools/percy-mcp/diagnostics/analyze-logs-realtime.d.ts +0 -13
- package/dist/tools/percy-mcp/diagnostics/analyze-logs-realtime.js +0 -65
- package/dist/tools/percy-mcp/diagnostics/get-build-logs.d.ts +0 -17
- package/dist/tools/percy-mcp/diagnostics/get-build-logs.js +0 -74
- package/dist/tools/percy-mcp/diagnostics/get-network-logs.d.ts +0 -5
- package/dist/tools/percy-mcp/diagnostics/get-network-logs.js +0 -21
- package/dist/tools/percy-mcp/diagnostics/get-suggestions.d.ts +0 -7
- package/dist/tools/percy-mcp/diagnostics/get-suggestions.js +0 -24
- package/dist/tools/percy-mcp/index.d.ts +0 -36
- package/dist/tools/percy-mcp/index.js +0 -1137
- package/dist/tools/percy-mcp/intelligence/get-ai-analysis.d.ts +0 -15
- package/dist/tools/percy-mcp/intelligence/get-ai-analysis.js +0 -166
- package/dist/tools/percy-mcp/intelligence/get-ai-quota.d.ts +0 -9
- package/dist/tools/percy-mcp/intelligence/get-ai-quota.js +0 -73
- package/dist/tools/percy-mcp/intelligence/get-build-summary.d.ts +0 -11
- package/dist/tools/percy-mcp/intelligence/get-build-summary.js +0 -78
- package/dist/tools/percy-mcp/intelligence/get-rca.d.ts +0 -6
- package/dist/tools/percy-mcp/intelligence/get-rca.js +0 -153
- package/dist/tools/percy-mcp/intelligence/suggest-prompt.d.ts +0 -15
- package/dist/tools/percy-mcp/intelligence/suggest-prompt.js +0 -86
- package/dist/tools/percy-mcp/intelligence/trigger-ai-recompute.d.ts +0 -16
- package/dist/tools/percy-mcp/intelligence/trigger-ai-recompute.js +0 -64
- package/dist/tools/percy-mcp/management/create-project.d.ts +0 -14
- package/dist/tools/percy-mcp/management/create-project.js +0 -52
- package/dist/tools/percy-mcp/management/get-usage-stats.d.ts +0 -12
- package/dist/tools/percy-mcp/management/get-usage-stats.js +0 -61
- package/dist/tools/percy-mcp/management/manage-browser-targets.d.ts +0 -12
- package/dist/tools/percy-mcp/management/manage-browser-targets.js +0 -136
- package/dist/tools/percy-mcp/management/manage-comments.d.ts +0 -14
- package/dist/tools/percy-mcp/management/manage-comments.js +0 -147
- package/dist/tools/percy-mcp/management/manage-ignored-regions.d.ts +0 -18
- package/dist/tools/percy-mcp/management/manage-ignored-regions.js +0 -182
- package/dist/tools/percy-mcp/management/manage-project-settings.d.ts +0 -16
- package/dist/tools/percy-mcp/management/manage-project-settings.js +0 -97
- package/dist/tools/percy-mcp/management/manage-tokens.d.ts +0 -14
- package/dist/tools/percy-mcp/management/manage-tokens.js +0 -90
- package/dist/tools/percy-mcp/management/manage-webhooks.d.ts +0 -15
- package/dist/tools/percy-mcp/management/manage-webhooks.js +0 -180
- package/dist/tools/percy-mcp/v2/auth-status.d.ts +0 -3
- package/dist/tools/percy-mcp/v2/auth-status.js +0 -80
- package/dist/tools/percy-mcp/v2/clone-build.d.ts +0 -24
- package/dist/tools/percy-mcp/v2/clone-build.js +0 -539
- package/dist/tools/percy-mcp/v2/create-app-build.d.ts +0 -28
- package/dist/tools/percy-mcp/v2/create-app-build.js +0 -442
- package/dist/tools/percy-mcp/v2/create-build.d.ts +0 -16
- package/dist/tools/percy-mcp/v2/create-build.js +0 -601
- package/dist/tools/percy-mcp/v2/create-project.d.ts +0 -8
- package/dist/tools/percy-mcp/v2/create-project.js +0 -33
- package/dist/tools/percy-mcp/v2/discover-urls.d.ts +0 -7
- package/dist/tools/percy-mcp/v2/discover-urls.js +0 -38
- package/dist/tools/percy-mcp/v2/figma-baseline.d.ts +0 -7
- package/dist/tools/percy-mcp/v2/figma-baseline.js +0 -18
- package/dist/tools/percy-mcp/v2/figma-build.d.ts +0 -7
- package/dist/tools/percy-mcp/v2/figma-build.js +0 -39
- package/dist/tools/percy-mcp/v2/figma-link.d.ts +0 -6
- package/dist/tools/percy-mcp/v2/figma-link.js +0 -27
- package/dist/tools/percy-mcp/v2/get-ai-summary.d.ts +0 -5
- package/dist/tools/percy-mcp/v2/get-ai-summary.js +0 -109
- package/dist/tools/percy-mcp/v2/get-build-detail.d.ts +0 -22
- package/dist/tools/percy-mcp/v2/get-build-detail.js +0 -567
- package/dist/tools/percy-mcp/v2/get-builds.d.ts +0 -8
- package/dist/tools/percy-mcp/v2/get-builds.js +0 -63
- package/dist/tools/percy-mcp/v2/get-comparison.d.ts +0 -5
- package/dist/tools/percy-mcp/v2/get-comparison.js +0 -94
- package/dist/tools/percy-mcp/v2/get-devices.d.ts +0 -5
- package/dist/tools/percy-mcp/v2/get-devices.js +0 -33
- package/dist/tools/percy-mcp/v2/get-insights.d.ts +0 -7
- package/dist/tools/percy-mcp/v2/get-insights.js +0 -52
- package/dist/tools/percy-mcp/v2/get-projects.d.ts +0 -6
- package/dist/tools/percy-mcp/v2/get-projects.js +0 -41
- package/dist/tools/percy-mcp/v2/get-snapshot.d.ts +0 -5
- package/dist/tools/percy-mcp/v2/get-snapshot.js +0 -96
- package/dist/tools/percy-mcp/v2/get-test-case-history.d.ts +0 -5
- package/dist/tools/percy-mcp/v2/get-test-case-history.js +0 -20
- package/dist/tools/percy-mcp/v2/get-test-cases.d.ts +0 -6
- package/dist/tools/percy-mcp/v2/get-test-cases.js +0 -36
- package/dist/tools/percy-mcp/v2/index.d.ts +0 -35
- package/dist/tools/percy-mcp/v2/index.js +0 -544
- package/dist/tools/percy-mcp/v2/list-integrations.d.ts +0 -5
- package/dist/tools/percy-mcp/v2/list-integrations.js +0 -41
- package/dist/tools/percy-mcp/v2/manage-domains.d.ts +0 -8
- package/dist/tools/percy-mcp/v2/manage-domains.js +0 -33
- package/dist/tools/percy-mcp/v2/manage-insights-email.d.ts +0 -8
- package/dist/tools/percy-mcp/v2/manage-insights-email.js +0 -49
- package/dist/tools/percy-mcp/v2/manage-usage-alerts.d.ts +0 -10
- package/dist/tools/percy-mcp/v2/manage-usage-alerts.js +0 -43
- package/dist/tools/percy-mcp/v2/migrate-integrations.d.ts +0 -6
- package/dist/tools/percy-mcp/v2/migrate-integrations.js +0 -20
- package/dist/tools/percy-mcp/v2/preview-comparison.d.ts +0 -5
- package/dist/tools/percy-mcp/v2/preview-comparison.js +0 -17
- package/dist/tools/percy-mcp/v2/search-build-items.d.ts +0 -12
- package/dist/tools/percy-mcp/v2/search-build-items.js +0 -45
- package/dist/tools/percy-mcp/workflows/auto-triage.d.ts +0 -7
- package/dist/tools/percy-mcp/workflows/auto-triage.js +0 -82
- package/dist/tools/percy-mcp/workflows/clone-build.d.ts +0 -22
- package/dist/tools/percy-mcp/workflows/clone-build.js +0 -414
- package/dist/tools/percy-mcp/workflows/create-percy-build.d.ts +0 -32
- package/dist/tools/percy-mcp/workflows/create-percy-build.js +0 -434
- package/dist/tools/percy-mcp/workflows/debug-failed-build.d.ts +0 -5
- package/dist/tools/percy-mcp/workflows/debug-failed-build.js +0 -122
- package/dist/tools/percy-mcp/workflows/diff-explain.d.ts +0 -6
- package/dist/tools/percy-mcp/workflows/diff-explain.js +0 -147
- package/dist/tools/percy-mcp/workflows/pr-visual-report.d.ts +0 -8
- package/dist/tools/percy-mcp/workflows/pr-visual-report.js +0 -184
- package/dist/tools/percy-mcp/workflows/run-tests.d.ts +0 -17
- package/dist/tools/percy-mcp/workflows/run-tests.js +0 -107
- package/dist/tools/percy-mcp/workflows/snapshot-urls.d.ts +0 -18
- package/dist/tools/percy-mcp/workflows/snapshot-urls.js +0 -197
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { BrowserStackConfig } from "../../../lib/types.js";
|
|
2
|
-
import { CallToolResult } from "@modelcontextprotocol/sdk/types.js";
|
|
3
|
-
export declare function percyFigmaBaseline(args: {
|
|
4
|
-
project_slug: string;
|
|
5
|
-
branch: string;
|
|
6
|
-
build_id: string;
|
|
7
|
-
}, config: BrowserStackConfig): Promise<CallToolResult>;
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { percyPost } from "../../../lib/percy-api/percy-auth.js";
|
|
2
|
-
export async function percyFigmaBaseline(args, config) {
|
|
3
|
-
await percyPost("/design/figma/update-baseline", config, {
|
|
4
|
-
data: {
|
|
5
|
-
attributes: {
|
|
6
|
-
"project-slug": args.project_slug,
|
|
7
|
-
branch: args.branch,
|
|
8
|
-
"build-id": args.build_id,
|
|
9
|
-
},
|
|
10
|
-
},
|
|
11
|
-
});
|
|
12
|
-
let output = `## Figma Baseline Updated\n\n`;
|
|
13
|
-
output += `**Project:** ${args.project_slug}\n`;
|
|
14
|
-
output += `**Branch:** ${args.branch}\n`;
|
|
15
|
-
output += `**Build:** ${args.build_id}\n`;
|
|
16
|
-
output += `Baseline has been updated from the latest Figma designs.\n`;
|
|
17
|
-
return { content: [{ type: "text", text: output }] };
|
|
18
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { BrowserStackConfig } from "../../../lib/types.js";
|
|
2
|
-
import { CallToolResult } from "@modelcontextprotocol/sdk/types.js";
|
|
3
|
-
export declare function percyFigmaBuild(args: {
|
|
4
|
-
project_slug: string;
|
|
5
|
-
branch: string;
|
|
6
|
-
figma_url: string;
|
|
7
|
-
}, config: BrowserStackConfig): Promise<CallToolResult>;
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { percyPost } from "../../../lib/percy-api/percy-auth.js";
|
|
2
|
-
export async function percyFigmaBuild(args, config) {
|
|
3
|
-
// Step 1: Fetch design from Figma URL
|
|
4
|
-
const fetchResult = await percyPost("/design/figma/fetch-design", config, {
|
|
5
|
-
data: { attributes: { "figma-url": args.figma_url } },
|
|
6
|
-
});
|
|
7
|
-
const nodes = fetchResult?.data?.attributes?.nodes || fetchResult?.nodes || [];
|
|
8
|
-
if (!nodes.length && !fetchResult?.data) {
|
|
9
|
-
return {
|
|
10
|
-
content: [
|
|
11
|
-
{
|
|
12
|
-
type: "text",
|
|
13
|
-
text: `No design nodes found at ${args.figma_url}. Check the Figma URL and ensure it points to a frame or component.`,
|
|
14
|
-
},
|
|
15
|
-
],
|
|
16
|
-
isError: true,
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
|
-
// Step 2: Create build from design data
|
|
20
|
-
const figmaData = Array.isArray(nodes) ? nodes : [nodes];
|
|
21
|
-
const buildResult = await percyPost("/design/figma/create-build", config, {
|
|
22
|
-
data: {
|
|
23
|
-
attributes: {
|
|
24
|
-
branch: args.branch,
|
|
25
|
-
"project-slug": args.project_slug,
|
|
26
|
-
"figma-url": args.figma_url,
|
|
27
|
-
"figma-data": figmaData,
|
|
28
|
-
},
|
|
29
|
-
},
|
|
30
|
-
});
|
|
31
|
-
const buildId = buildResult?.data?.id || "unknown";
|
|
32
|
-
let output = `## Figma Build Created\n\n`;
|
|
33
|
-
output += `**Build ID:** ${buildId}\n`;
|
|
34
|
-
output += `**Project:** ${args.project_slug}\n`;
|
|
35
|
-
output += `**Branch:** ${args.branch}\n`;
|
|
36
|
-
output += `**Figma URL:** ${args.figma_url}\n`;
|
|
37
|
-
output += `**Design nodes:** ${figmaData.length}\n`;
|
|
38
|
-
return { content: [{ type: "text", text: output }] };
|
|
39
|
-
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { BrowserStackConfig } from "../../../lib/types.js";
|
|
2
|
-
import { CallToolResult } from "@modelcontextprotocol/sdk/types.js";
|
|
3
|
-
export declare function percyFigmaLink(args: {
|
|
4
|
-
snapshot_id?: string;
|
|
5
|
-
comparison_id?: string;
|
|
6
|
-
}, config: BrowserStackConfig): Promise<CallToolResult>;
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { percyGet } from "../../../lib/percy-api/percy-auth.js";
|
|
2
|
-
export async function percyFigmaLink(args, config) {
|
|
3
|
-
const params = {};
|
|
4
|
-
if (args.snapshot_id)
|
|
5
|
-
params.snapshot_id = args.snapshot_id;
|
|
6
|
-
if (args.comparison_id)
|
|
7
|
-
params.comparison_id = args.comparison_id;
|
|
8
|
-
const result = await percyGet("/design/figma/figma-link", config, params);
|
|
9
|
-
const link = result?.data?.attributes?.["figma-url"] || result?.figma_url || null;
|
|
10
|
-
if (!link) {
|
|
11
|
-
return {
|
|
12
|
-
content: [
|
|
13
|
-
{
|
|
14
|
-
type: "text",
|
|
15
|
-
text: "No Figma link found for this snapshot/comparison.",
|
|
16
|
-
},
|
|
17
|
-
],
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
let output = `## Figma Link\n\n`;
|
|
21
|
-
output += `**Link:** ${link}\n`;
|
|
22
|
-
if (args.snapshot_id)
|
|
23
|
-
output += `**Snapshot:** ${args.snapshot_id}\n`;
|
|
24
|
-
if (args.comparison_id)
|
|
25
|
-
output += `**Comparison:** ${args.comparison_id}\n`;
|
|
26
|
-
return { content: [{ type: "text", text: output }] };
|
|
27
|
-
}
|
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
import { percyGet } from "../../../lib/percy-api/percy-auth.js";
|
|
2
|
-
export async function percyGetAiSummary(args, config) {
|
|
3
|
-
// Get build with build-summary include
|
|
4
|
-
const response = await percyGet(`/builds/${args.build_id}`, config, {
|
|
5
|
-
include: "build-summary",
|
|
6
|
-
});
|
|
7
|
-
const build = response?.data || {};
|
|
8
|
-
const attrs = build.attributes || {};
|
|
9
|
-
const buildNum = attrs["build-number"] || args.build_id;
|
|
10
|
-
const state = attrs.state || "unknown";
|
|
11
|
-
// Get AI details from build attributes
|
|
12
|
-
const ai = attrs["ai-details"] || {};
|
|
13
|
-
const potentialBugs = ai["total-potential-bugs"] ?? 0;
|
|
14
|
-
const aiVisualDiffs = ai["total-ai-visual-diffs"] ?? 0;
|
|
15
|
-
const diffsReduced = ai["total-diffs-reduced-capped"] ?? 0;
|
|
16
|
-
const comparisonsWithAi = ai["total-comparisons-with-ai"] ?? 0;
|
|
17
|
-
const allCompleted = ai["all-ai-jobs-completed"] ?? false;
|
|
18
|
-
const summaryStatus = ai["summary-status"];
|
|
19
|
-
// Get build summary from included data
|
|
20
|
-
const included = response?.included || [];
|
|
21
|
-
const summaryObj = included.find((i) => i.type === "build-summaries");
|
|
22
|
-
const summaryJson = summaryObj?.attributes?.summary;
|
|
23
|
-
let output = `## Percy Build #${buildNum} — AI Build Summary\n\n`;
|
|
24
|
-
// Check for actual AI data, not just the toggle flag
|
|
25
|
-
const hasAiData = (comparisonsWithAi ?? 0) > 0 ||
|
|
26
|
-
(potentialBugs ?? 0) > 0 ||
|
|
27
|
-
(aiVisualDiffs ?? 0) > 0 ||
|
|
28
|
-
summaryStatus === "ok";
|
|
29
|
-
if (!hasAiData) {
|
|
30
|
-
output += `No AI analysis data found for this build.\n`;
|
|
31
|
-
output += `AI may not be enabled, or the build has no visual diffs.\n`;
|
|
32
|
-
return { content: [{ type: "text", text: output }] };
|
|
33
|
-
}
|
|
34
|
-
if (state !== "finished") {
|
|
35
|
-
output += `Build is **${state}**. AI summary is available after the build finishes.\n`;
|
|
36
|
-
return { content: [{ type: "text", text: output }] };
|
|
37
|
-
}
|
|
38
|
-
// AI stats header
|
|
39
|
-
output += `**${potentialBugs} potential bug${potentialBugs !== 1 ? "s" : ""}** · **${aiVisualDiffs} AI visual diff${aiVisualDiffs !== 1 ? "s" : ""}**\n\n`;
|
|
40
|
-
if (diffsReduced > 0) {
|
|
41
|
-
output += `AI reduced noise by **${diffsReduced}** diff${diffsReduced !== 1 ? "s" : ""}.\n`;
|
|
42
|
-
}
|
|
43
|
-
if (comparisonsWithAi > 0) {
|
|
44
|
-
output += `**${comparisonsWithAi}** comparison${comparisonsWithAi !== 1 ? "s" : ""} analyzed by AI.\n`;
|
|
45
|
-
}
|
|
46
|
-
output += `AI jobs: ${allCompleted ? "completed" : "in progress"}\n\n`;
|
|
47
|
-
// Parse and display the build summary
|
|
48
|
-
if (summaryJson) {
|
|
49
|
-
try {
|
|
50
|
-
const summary = typeof summaryJson === "string" ? JSON.parse(summaryJson) : summaryJson;
|
|
51
|
-
if (summary.title) {
|
|
52
|
-
output += `### Summary\n\n`;
|
|
53
|
-
output += `> ${summary.title}\n\n`;
|
|
54
|
-
}
|
|
55
|
-
// Display items (change descriptions with occurrences)
|
|
56
|
-
const items = summary.items || summary.changes || [];
|
|
57
|
-
if (items.length > 0) {
|
|
58
|
-
output += `### Changes\n\n`;
|
|
59
|
-
items.forEach((item) => {
|
|
60
|
-
const title = item.title || item.description || item.name || String(item);
|
|
61
|
-
const occurrences = item.occurrences || item.count || item.occurrence_count;
|
|
62
|
-
output += `- **${title}**`;
|
|
63
|
-
if (occurrences)
|
|
64
|
-
output += ` (${occurrences} occurrence${occurrences !== 1 ? "s" : ""})`;
|
|
65
|
-
output += "\n";
|
|
66
|
-
});
|
|
67
|
-
output += "\n";
|
|
68
|
-
}
|
|
69
|
-
// Display snapshots if available
|
|
70
|
-
const snapshots = summary.snapshots || [];
|
|
71
|
-
if (snapshots.length > 0) {
|
|
72
|
-
output += `### Affected Snapshots\n\n`;
|
|
73
|
-
snapshots.forEach((snap) => {
|
|
74
|
-
const name = snap.name || snap.snapshot_name || "Unknown";
|
|
75
|
-
const changes = snap.changes || snap.items || [];
|
|
76
|
-
output += `**${name}**\n`;
|
|
77
|
-
changes.forEach((change) => {
|
|
78
|
-
output += ` - ${change.title || change.description || change}\n`;
|
|
79
|
-
});
|
|
80
|
-
});
|
|
81
|
-
output += "\n";
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
catch {
|
|
85
|
-
// Summary is not valid JSON — show raw
|
|
86
|
-
output += `### Raw Summary\n\n`;
|
|
87
|
-
output += `${String(summaryJson).slice(0, 1000)}\n\n`;
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
else if (summaryStatus === "processing") {
|
|
91
|
-
output += `### Summary\n\nAI summary is being generated. Try again in a minute.\n`;
|
|
92
|
-
}
|
|
93
|
-
else if (summaryStatus === "skipped") {
|
|
94
|
-
const reason = ai["summary-reason"] || "unknown";
|
|
95
|
-
output += `### Summary\n\nAI summary was skipped: ${reason}\n`;
|
|
96
|
-
if (reason === "too_many_comparisons") {
|
|
97
|
-
output += `(Build has more than 50 comparisons — summaries are only generated for smaller builds)\n`;
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
else {
|
|
101
|
-
output += `### Summary\n\nNo AI summary available for this build.\n`;
|
|
102
|
-
}
|
|
103
|
-
// Build URL
|
|
104
|
-
const webUrl = attrs["web-url"];
|
|
105
|
-
if (webUrl) {
|
|
106
|
-
output += `**View in Percy:** ${webUrl}\n`;
|
|
107
|
-
}
|
|
108
|
-
return { content: [{ type: "text", text: output }] };
|
|
109
|
-
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* percy_get_build — Unified build details tool.
|
|
3
|
-
*
|
|
4
|
-
* detail param routes to different views:
|
|
5
|
-
* - overview: status, stats, AI metrics, browsers, summary preview
|
|
6
|
-
* - ai_summary: full AI change descriptions with occurrences
|
|
7
|
-
* - changes: changed snapshots with diff ratios and bugs
|
|
8
|
-
* - rca: root cause analysis for a comparison
|
|
9
|
-
* - logs: failure diagnostics and suggestions
|
|
10
|
-
* - network: network request logs for a comparison
|
|
11
|
-
* - snapshots: all snapshots with review states
|
|
12
|
-
*/
|
|
13
|
-
import { BrowserStackConfig } from "../../../lib/types.js";
|
|
14
|
-
import { CallToolResult } from "@modelcontextprotocol/sdk/types.js";
|
|
15
|
-
interface GetBuildArgs {
|
|
16
|
-
build_id: string;
|
|
17
|
-
detail?: string;
|
|
18
|
-
comparison_id?: string;
|
|
19
|
-
snapshot_id?: string;
|
|
20
|
-
}
|
|
21
|
-
export declare function percyGetBuildDetail(args: GetBuildArgs, config: BrowserStackConfig): Promise<CallToolResult>;
|
|
22
|
-
export {};
|