@perfonext/render-mcp 0.3.1 → 0.3.3
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/README.md +69 -86
- package/dist/index.js +1 -1
- package/dist/ingest/server.d.ts +5 -0
- package/dist/ingest/server.d.ts.map +1 -1
- package/dist/ingest/server.js +183 -77
- package/dist/ingest/server.js.map +1 -1
- package/dist/parser/analysis.d.ts.map +1 -1
- package/dist/parser/analysis.js +84 -70
- package/dist/parser/analysis.js.map +1 -1
- package/dist/parser/react-profile.d.ts.map +1 -1
- package/dist/parser/react-profile.js +1 -3
- package/dist/parser/react-profile.js.map +1 -1
- package/dist/parser/react-scan-lite.d.ts.map +1 -1
- package/dist/parser/react-scan-lite.js +20 -6
- package/dist/parser/react-scan-lite.js.map +1 -1
- package/dist/store.js +1 -1
- package/dist/store.js.map +1 -1
- package/dist/tools/begin-render-analysis.d.ts.map +1 -1
- package/dist/tools/begin-render-analysis.js +1 -1
- package/dist/tools/begin-render-analysis.js.map +1 -1
- package/dist/tools/compare-renders.d.ts.map +1 -1
- package/dist/tools/compare-renders.js +16 -4
- package/dist/tools/compare-renders.js.map +1 -1
- package/dist/tools/get-captured-renders.d.ts.map +1 -1
- package/dist/tools/get-captured-renders.js +8 -2
- package/dist/tools/get-captured-renders.js.map +1 -1
- package/dist/tools/get-hot-commits.d.ts.map +1 -1
- package/dist/tools/get-hot-commits.js +24 -7
- package/dist/tools/get-hot-commits.js.map +1 -1
- package/dist/tools/get-render-summary.d.ts.map +1 -1
- package/dist/tools/get-render-summary.js +23 -10
- package/dist/tools/get-render-summary.js.map +1 -1
- package/dist/tools/get-rerender-causes.d.ts.map +1 -1
- package/dist/tools/get-rerender-causes.js +17 -5
- package/dist/tools/get-rerender-causes.js.map +1 -1
- package/dist/tools/get-slow-components.d.ts.map +1 -1
- package/dist/tools/get-slow-components.js +20 -5
- package/dist/tools/get-slow-components.js.map +1 -1
- package/dist/tools/load-render-profile.d.ts.map +1 -1
- package/dist/tools/load-render-profile.js +7 -3
- package/dist/tools/load-render-profile.js.map +1 -1
- package/dist/tools/run-render-capture.d.ts.map +1 -1
- package/dist/tools/run-render-capture.js +7 -3
- package/dist/tools/run-render-capture.js.map +1 -1
- package/dist/tools/stop-render-capture.d.ts.map +1 -1
- package/dist/tools/stop-render-capture.js +20 -4
- package/dist/tools/stop-render-capture.js.map +1 -1
- package/package.json +16 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react-scan-lite.js","sourceRoot":"","sources":["../../src/parser/react-scan-lite.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAazC,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAE9E,SAAS,iBAAiB,CACxB,MAA6B,EAC7B,MAAc,EACd,WAAmB,EACnB,UAAkB;IAElB,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,
|
|
1
|
+
{"version":3,"file":"react-scan-lite.js","sourceRoot":"","sources":["../../src/parser/react-scan-lite.ts"],"names":[],"mappings":"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"}
|
package/dist/store.js
CHANGED
|
@@ -6,7 +6,7 @@ export function getRenderProfile(id) {
|
|
|
6
6
|
return profiles.get(id);
|
|
7
7
|
}
|
|
8
8
|
export function listRenderProfiles() {
|
|
9
|
-
return Array.from(profiles.values()).map(profile => ({
|
|
9
|
+
return Array.from(profiles.values()).map((profile) => ({
|
|
10
10
|
id: profile.id,
|
|
11
11
|
filename: profile.filename,
|
|
12
12
|
commitCount: profile.commits.length,
|
package/dist/store.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAEA,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA+B,CAAC;AAExD,MAAM,UAAU,kBAAkB,CAAC,OAA4B;IAC7D,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,EAAU;IACzC,OAAO,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,kBAAkB;IAOhC,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAEA,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA+B,CAAC;AAExD,MAAM,UAAU,kBAAkB,CAAC,OAA4B;IAC7D,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,EAAU;IACzC,OAAO,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,kBAAkB;IAOhC,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACrD,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM;QACnC,cAAc,EAAE,OAAO,CAAC,UAAU,CAAC,MAAM;QACzC,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;KACjD,CAAC,CAAC,CAAC;AACN,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"begin-render-analysis.d.ts","sourceRoot":"","sources":["../../src/tools/begin-render-analysis.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKpE,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"begin-render-analysis.d.ts","sourceRoot":"","sources":["../../src/tools/begin-render-analysis.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKpE,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA6EnE"}
|
|
@@ -36,7 +36,7 @@ export function registerBeginRenderAnalysis(server) {
|
|
|
36
36
|
'1. npm install --save-dev react-scan',
|
|
37
37
|
'2. Create (or overwrite) instrumentation-client.js at your project root with the content in `snippet`.',
|
|
38
38
|
' The ingest server runs on a fixed port (7721 by default), so only the sessionId line changes between runs.',
|
|
39
|
-
|
|
39
|
+
"3. Import it from your app's client-side entry point (e.g. _app.tsx, root layout, main.tsx)",
|
|
40
40
|
' — inspect the project structure to find the right file.',
|
|
41
41
|
' The import must run on the client (add "use client" if the entry is a Server Component).',
|
|
42
42
|
].join('\n'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"begin-render-analysis.js","sourceRoot":"","sources":["../../src/tools/begin-render-analysis.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D,MAAM,UAAU,2BAA2B,CAAC,MAAiB;IAC3D,MAAM,CAAC,YAAY,
|
|
1
|
+
{"version":3,"file":"begin-render-analysis.js","sourceRoot":"","sources":["../../src/tools/begin-render-analysis.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D,MAAM,UAAU,2BAA2B,CAAC,MAAiB;IAC3D,MAAM,CAAC,YAAY,CACjB,uBAAuB,EACvB;QACE,KAAK,EAAE,uBAAuB;QAC9B,WAAW,EACT,yDAAyD;YACzD,uHAAuH;YACvH,oHAAoH;YACpH,mEAAmE;QACrE,WAAW,EAAE;YACX,QAAQ,EAAE,CAAC;iBACR,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;iBACxB,QAAQ,CACP,yEAAyE;gBACvE,4EAA4E,CAC/E;SACJ;KACF,EACD,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;QACrB,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;YACxB,MAAM,OAAO,GAAG,MAAM,oBAAoB,EAAE,CAAC;YAE7C,MAAM,OAAO,GAAG;gBACd,+CAA+C;gBAC/C,cAAc;gBACd,gBAAgB,OAAO,CAAC,QAAQ,IAAI;gBACpC,iBAAiB,OAAO,CAAC,SAAS,IAAI;gBACtC,mCAAmC;gBACnC,6BAA6B;gBAC7B,+BAA+B;gBAC/B,KAAK;aACN,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEb,MAAM,MAAM,GAAG;gBACb,QAAQ,EAAE,MAAM;gBAChB,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,OAAO;gBACP,WAAW,EAAE,2BAA2B;gBACxC,KAAK,EAAE;oBACL,sCAAsC;oBACtC,wGAAwG;oBACxG,+GAA+G;oBAC/G,6FAA6F;oBAC7F,4DAA4D;oBAC5D,6FAA6F;iBAC9F,CAAC,IAAI,CAAC,IAAI,CAAC;gBACZ,QAAQ,EAAE,oCAAoC,OAAO,CAAC,SAAS,8BAA8B;aAC9F,CAAC;YAEF,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aAC5E,CAAC;QACJ,CAAC;QAED,mCAAmC;QACnC,MAAM,MAAM,GAAG;YACb,QAAQ,EAAE,QAAQ;YAClB,KAAK,EAAE;gBACL,uFAAuF;gBACvF,2CAA2C;gBAC3C,mEAAmE;gBACnE,kEAAkE;gBAClE,yEAAyE;gBACzE,oDAAoD;gBACpD,4GAA4G;gBAC5G,kFAAkF;aACnF,CAAC,IAAI,CAAC,IAAI,CAAC;YACZ,QAAQ,EAAE,8DAA8D;SACzE,CAAC;QAEF,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;SAC5E,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compare-renders.d.ts","sourceRoot":"","sources":["../../src/tools/compare-renders.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"compare-renders.d.ts","sourceRoot":"","sources":["../../src/tools/compare-renders.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA4BpE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA2D9D"}
|
|
@@ -20,8 +20,18 @@ export function registerCompareRenders(server) {
|
|
|
20
20
|
inputSchema: {
|
|
21
21
|
baseProfileId: z.string().describe('Baseline profile ID from load_render_profile'),
|
|
22
22
|
currentProfileId: z.string().describe('Current profile ID from load_render_profile'),
|
|
23
|
-
limit: z
|
|
24
|
-
|
|
23
|
+
limit: z
|
|
24
|
+
.number()
|
|
25
|
+
.int()
|
|
26
|
+
.positive()
|
|
27
|
+
.max(25)
|
|
28
|
+
.optional()
|
|
29
|
+
.describe('How many changed components to include. Defaults to 10.'),
|
|
30
|
+
minDeltaMs: z
|
|
31
|
+
.number()
|
|
32
|
+
.nonnegative()
|
|
33
|
+
.optional()
|
|
34
|
+
.describe('Minimum absolute total render delta in ms for changed components. Defaults to 0.'),
|
|
25
35
|
},
|
|
26
36
|
}, async ({ baseProfileId, currentProfileId, limit, minDeltaMs }) => {
|
|
27
37
|
const baseProfile = getRenderProfile(baseProfileId);
|
|
@@ -34,7 +44,8 @@ export function registerCompareRenders(server) {
|
|
|
34
44
|
}
|
|
35
45
|
const comparison = compareRenders(baseProfile, currentProfile, limit ?? 10, minDeltaMs ?? 0);
|
|
36
46
|
return {
|
|
37
|
-
content: [
|
|
47
|
+
content: [
|
|
48
|
+
{
|
|
38
49
|
type: 'text',
|
|
39
50
|
text: JSON.stringify({
|
|
40
51
|
...comparison,
|
|
@@ -43,7 +54,8 @@ export function registerCompareRenders(server) {
|
|
|
43
54
|
added: comparison.added.map(formatDiffEntry),
|
|
44
55
|
removed: comparison.removed.map(formatDiffEntry),
|
|
45
56
|
}, null, 2),
|
|
46
|
-
}
|
|
57
|
+
},
|
|
58
|
+
],
|
|
47
59
|
};
|
|
48
60
|
});
|
|
49
61
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compare-renders.js","sourceRoot":"","sources":["../../src/tools/compare-renders.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,SAAS,eAAe,
|
|
1
|
+
{"version":3,"file":"compare-renders.js","sourceRoot":"","sources":["../../src/tools/compare-renders.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,SAAS,eAAe,CAStB,KAAQ;IACR,OAAO;QACL,GAAG,KAAK;QACR,uBAAuB,EAAE,QAAQ,CAAC,KAAK,CAAC,uBAAuB,CAAC;QAChE,0BAA0B,EAAE,QAAQ,CAAC,KAAK,CAAC,0BAA0B,CAAC;QACtE,wBAAwB,EAAE,QAAQ,CAAC,KAAK,CAAC,wBAAwB,CAAC;QAClE,0BAA0B,EAAE,QAAQ,CAAC,KAAK,CAAC,0BAA0B,CAAC;QACtE,sBAAsB,EAAE,QAAQ,CAAC,KAAK,CAAC,sBAAsB,CAAC;QAC9D,aAAa,EAAE,KAAK,CAAC,aAAa,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;KACzF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,MAAiB;IACtD,MAAM,CAAC,YAAY,CACjB,iBAAiB,EACjB;QACE,KAAK,EAAE,iBAAiB;QACxB,WAAW,EACT,0GAA0G;QAC5G,WAAW,EAAE;YACX,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8CAA8C,CAAC;YAClF,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;YACpF,KAAK,EAAE,CAAC;iBACL,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,QAAQ,EAAE;iBACV,GAAG,CAAC,EAAE,CAAC;iBACP,QAAQ,EAAE;iBACV,QAAQ,CAAC,yDAAyD,CAAC;YACtE,UAAU,EAAE,CAAC;iBACV,MAAM,EAAE;iBACR,WAAW,EAAE;iBACb,QAAQ,EAAE;iBACV,QAAQ,CACP,kFAAkF,CACnF;SACJ;KACF,EACD,KAAK,EAAE,EAAE,aAAa,EAAE,gBAAgB,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE;QAC/D,MAAM,WAAW,GAAG,gBAAgB,CAAC,aAAa,CAAC,CAAC;QACpD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,iBAAiB,aAAa,cAAc,CAAC,CAAC;QAChE,CAAC;QAED,MAAM,cAAc,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;QAC1D,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,oBAAoB,gBAAgB,cAAc,CAAC,CAAC;QACtE,CAAC;QAED,MAAM,UAAU,GAAG,cAAc,CAAC,WAAW,EAAE,cAAc,EAAE,KAAK,IAAI,EAAE,EAAE,UAAU,IAAI,CAAC,CAAC,CAAC;QAE7F,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB;wBACE,GAAG,UAAU;wBACb,WAAW,EAAE,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,eAAe,CAAC;wBACxD,YAAY,EAAE,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,eAAe,CAAC;wBAC1D,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC;wBAC5C,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;qBACjD,EACD,IAAI,EACJ,CAAC,CACF;iBACF;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-captured-renders.d.ts","sourceRoot":"","sources":["../../src/tools/get-captured-renders.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKpE,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"get-captured-renders.d.ts","sourceRoot":"","sources":["../../src/tools/get-captured-renders.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKpE,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA6FlE"}
|
|
@@ -14,7 +14,12 @@ export function registerGetCapturedRenders(server) {
|
|
|
14
14
|
const session = getCaptureSession(sessionId);
|
|
15
15
|
if (!session) {
|
|
16
16
|
return {
|
|
17
|
-
content: [
|
|
17
|
+
content: [
|
|
18
|
+
{
|
|
19
|
+
type: 'text',
|
|
20
|
+
text: JSON.stringify({ error: `Session "${sessionId}" not found` }, null, 2),
|
|
21
|
+
},
|
|
22
|
+
],
|
|
18
23
|
isError: true,
|
|
19
24
|
};
|
|
20
25
|
}
|
|
@@ -51,7 +56,8 @@ export function registerGetCapturedRenders(server) {
|
|
|
51
56
|
profilingStatus = 'available';
|
|
52
57
|
}
|
|
53
58
|
else {
|
|
54
|
-
profilingStatus =
|
|
59
|
+
profilingStatus =
|
|
60
|
+
'unavailable — app may be running a production build; switch to `next dev`';
|
|
55
61
|
}
|
|
56
62
|
const diagnosis = unknownEvents > 0 && commitCount === 0
|
|
57
63
|
? `${unknownEvents} unrecognized POST(s) received — the instrumentation snippet may not be imported correctly, or it is running server-side. Check that the import is in a client-side entry point and the file path is correct.`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-captured-renders.js","sourceRoot":"","sources":["../../src/tools/get-captured-renders.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,MAAM,UAAU,0BAA0B,CAAC,MAAiB;IAC1D,MAAM,CAAC,YAAY,
|
|
1
|
+
{"version":3,"file":"get-captured-renders.js","sourceRoot":"","sources":["../../src/tools/get-captured-renders.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-hot-commits.d.ts","sourceRoot":"","sources":["../../src/tools/get-hot-commits.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOpE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"get-hot-commits.d.ts","sourceRoot":"","sources":["../../src/tools/get-hot-commits.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOpE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA2E7D"}
|
|
@@ -8,20 +8,35 @@ export function registerGetHotCommits(server) {
|
|
|
8
8
|
description: 'Rank the most expensive commits in a loaded render profile and show the top components inside each spike.',
|
|
9
9
|
inputSchema: {
|
|
10
10
|
profileId: z.string().describe('Profile ID from load_render_profile'),
|
|
11
|
-
limit: z
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
limit: z
|
|
12
|
+
.number()
|
|
13
|
+
.int()
|
|
14
|
+
.positive()
|
|
15
|
+
.max(25)
|
|
16
|
+
.optional()
|
|
17
|
+
.describe('How many commits to include. Defaults to 10.'),
|
|
18
|
+
componentLimit: z
|
|
19
|
+
.number()
|
|
20
|
+
.int()
|
|
21
|
+
.positive()
|
|
22
|
+
.max(10)
|
|
23
|
+
.optional()
|
|
24
|
+
.describe('How many top components to include per commit. Defaults to 3.'),
|
|
25
|
+
priorityLevel: z
|
|
26
|
+
.string()
|
|
27
|
+
.optional()
|
|
28
|
+
.describe('Filter to commits with this priority level only. Common values: "Immediate" (synchronous, input-blocking), "Normal" (async, e.g. API responses). Omit to include all priorities.'),
|
|
14
29
|
},
|
|
15
30
|
}, async ({ profileId, limit, componentLimit, priorityLevel }) => {
|
|
16
31
|
const profile = getRenderProfile(profileId);
|
|
17
32
|
if (!profile) {
|
|
18
33
|
throw new Error(`Profile "${profileId}" not found. Call get_render_summary without a profileId to list all loaded profiles.`);
|
|
19
34
|
}
|
|
20
|
-
const hotCommits = getHotCommits(profile, limit ?? 10, componentLimit ?? 3, priorityLevel).map(commit => ({
|
|
35
|
+
const hotCommits = getHotCommits(profile, limit ?? 10, componentLimit ?? 3, priorityLevel).map((commit) => ({
|
|
21
36
|
...commit,
|
|
22
37
|
duration: formatMs(commit.duration),
|
|
23
38
|
totalActualDuration: formatMs(commit.totalActualDuration),
|
|
24
|
-
topComponents: commit.topComponents.map(component => ({
|
|
39
|
+
topComponents: commit.topComponents.map((component) => ({
|
|
25
40
|
...component,
|
|
26
41
|
actualDuration: formatMs(component.actualDuration),
|
|
27
42
|
selfDuration: formatMs(component.selfDuration),
|
|
@@ -29,14 +44,16 @@ export function registerGetHotCommits(server) {
|
|
|
29
44
|
})),
|
|
30
45
|
}));
|
|
31
46
|
return {
|
|
32
|
-
content: [
|
|
47
|
+
content: [
|
|
48
|
+
{
|
|
33
49
|
type: 'text',
|
|
34
50
|
text: JSON.stringify({
|
|
35
51
|
profileId,
|
|
36
52
|
timestampNote: 'timestamp values are milliseconds since the profiling session started, not Unix epoch',
|
|
37
53
|
hotCommits,
|
|
38
54
|
}, null, 2),
|
|
39
|
-
}
|
|
55
|
+
},
|
|
56
|
+
],
|
|
40
57
|
};
|
|
41
58
|
});
|
|
42
59
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-hot-commits.js","sourceRoot":"","sources":["../../src/tools/get-hot-commits.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,UAAU,qBAAqB,CAAC,MAAiB;IACrD,MAAM,CAAC,YAAY,
|
|
1
|
+
{"version":3,"file":"get-hot-commits.js","sourceRoot":"","sources":["../../src/tools/get-hot-commits.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,UAAU,qBAAqB,CAAC,MAAiB;IACrD,MAAM,CAAC,YAAY,CACjB,iBAAiB,EACjB;QACE,KAAK,EAAE,iBAAiB;QACxB,WAAW,EACT,2GAA2G;QAC7G,WAAW,EAAE;YACX,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;YACrE,KAAK,EAAE,CAAC;iBACL,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,QAAQ,EAAE;iBACV,GAAG,CAAC,EAAE,CAAC;iBACP,QAAQ,EAAE;iBACV,QAAQ,CAAC,8CAA8C,CAAC;YAC3D,cAAc,EAAE,CAAC;iBACd,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,QAAQ,EAAE;iBACV,GAAG,CAAC,EAAE,CAAC;iBACP,QAAQ,EAAE;iBACV,QAAQ,CAAC,+DAA+D,CAAC;YAC5E,aAAa,EAAE,CAAC;iBACb,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,kLAAkL,CACnL;SACJ;KACF,EACD,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,EAAE,EAAE;QAC5D,MAAM,OAAO,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAC5C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CACb,YAAY,SAAS,uFAAuF,CAC7G,CAAC;QACJ,CAAC;QAED,MAAM,UAAU,GAAG,aAAa,CAC9B,OAAO,EACP,KAAK,IAAI,EAAE,EACX,cAAc,IAAI,CAAC,EACnB,aAAa,CACd,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YACjB,GAAG,MAAM;YACT,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC;YACnC,mBAAmB,EAAE,QAAQ,CAAC,MAAM,CAAC,mBAAmB,CAAC;YACzD,aAAa,EAAE,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;gBACtD,GAAG,SAAS;gBACZ,cAAc,EAAE,QAAQ,CAAC,SAAS,CAAC,cAAc,CAAC;gBAClD,YAAY,EAAE,QAAQ,CAAC,SAAS,CAAC,YAAY,CAAC;gBAC9C,iBAAiB,EAAE,SAAS,CAAC,SAAS,CAAC,iBAAiB,CAAC;aAC1D,CAAC,CAAC;SACJ,CAAC,CAAC,CAAC;QAEJ,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB;wBACE,SAAS;wBACT,aAAa,EACX,uFAAuF;wBACzF,UAAU;qBACX,EACD,IAAI,EACJ,CAAC,CACF;iBACF;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-render-summary.d.ts","sourceRoot":"","sources":["../../src/tools/get-render-summary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOpE,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"get-render-summary.d.ts","sourceRoot":"","sources":["../../src/tools/get-render-summary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOpE,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAsFhE"}
|
|
@@ -7,21 +7,32 @@ export function registerGetRenderSummary(server) {
|
|
|
7
7
|
title: 'Get Render Summary',
|
|
8
8
|
description: 'Summarize the loaded Next.js render profile, including top components by render cost and detected render issues (rerender storms, commit spikes).',
|
|
9
9
|
inputSchema: {
|
|
10
|
-
profileId: z
|
|
11
|
-
|
|
10
|
+
profileId: z
|
|
11
|
+
.string()
|
|
12
|
+
.optional()
|
|
13
|
+
.describe('Profile ID from load_render_profile. Omit to list loaded profiles.'),
|
|
14
|
+
limit: z
|
|
15
|
+
.number()
|
|
16
|
+
.int()
|
|
17
|
+
.positive()
|
|
18
|
+
.max(25)
|
|
19
|
+
.optional()
|
|
20
|
+
.describe('How many top components to include. Defaults to 10.'),
|
|
12
21
|
},
|
|
13
22
|
}, async ({ profileId, limit }) => {
|
|
14
23
|
if (!profileId) {
|
|
15
24
|
return {
|
|
16
|
-
content: [
|
|
25
|
+
content: [
|
|
26
|
+
{
|
|
17
27
|
type: 'text',
|
|
18
28
|
text: JSON.stringify({
|
|
19
|
-
profiles: listRenderProfiles().map(profile => ({
|
|
29
|
+
profiles: listRenderProfiles().map((profile) => ({
|
|
20
30
|
...profile,
|
|
21
31
|
totalCommitDuration: `${profile.totalCommitDuration.toFixed(2)}ms`,
|
|
22
32
|
})),
|
|
23
33
|
}, null, 2),
|
|
24
|
-
}
|
|
34
|
+
},
|
|
35
|
+
],
|
|
25
36
|
};
|
|
26
37
|
}
|
|
27
38
|
const profile = getRenderProfile(profileId);
|
|
@@ -30,23 +41,24 @@ export function registerGetRenderSummary(server) {
|
|
|
30
41
|
}
|
|
31
42
|
const summary = summarizeRenderProfile(profile, limit ?? 10);
|
|
32
43
|
return {
|
|
33
|
-
content: [
|
|
44
|
+
content: [
|
|
45
|
+
{
|
|
34
46
|
type: 'text',
|
|
35
47
|
text: JSON.stringify({
|
|
36
48
|
...summary,
|
|
37
49
|
totalCommitDuration: formatMs(summary.totalCommitDuration),
|
|
38
50
|
totalRenderDuration: formatMs(summary.totalRenderDuration),
|
|
39
|
-
topComponents: summary.topComponents.map(component => ({
|
|
51
|
+
topComponents: summary.topComponents.map((component) => ({
|
|
40
52
|
...component,
|
|
41
53
|
totalActualDuration: formatMs(component.totalActualDuration),
|
|
42
54
|
averageActualDuration: formatMs(component.averageActualDuration),
|
|
43
55
|
maxActualDuration: formatMs(component.maxActualDuration),
|
|
44
56
|
})),
|
|
45
|
-
hotCommits: summary.hotCommits.map(commit => ({
|
|
57
|
+
hotCommits: summary.hotCommits.map((commit) => ({
|
|
46
58
|
...commit,
|
|
47
59
|
duration: formatMs(commit.duration),
|
|
48
60
|
totalActualDuration: formatMs(commit.totalActualDuration),
|
|
49
|
-
topComponents: commit.topComponents.map(component => ({
|
|
61
|
+
topComponents: commit.topComponents.map((component) => ({
|
|
50
62
|
...component,
|
|
51
63
|
actualDuration: formatMs(component.actualDuration),
|
|
52
64
|
selfDuration: formatMs(component.selfDuration),
|
|
@@ -54,7 +66,8 @@ export function registerGetRenderSummary(server) {
|
|
|
54
66
|
})),
|
|
55
67
|
})),
|
|
56
68
|
}, null, 2),
|
|
57
|
-
}
|
|
69
|
+
},
|
|
70
|
+
],
|
|
58
71
|
};
|
|
59
72
|
});
|
|
60
73
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-render-summary.js","sourceRoot":"","sources":["../../src/tools/get-render-summary.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,gBAAgB,IAAI,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACnF,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEnE,MAAM,UAAU,wBAAwB,CAAC,MAAiB;IACxD,MAAM,CAAC,YAAY,
|
|
1
|
+
{"version":3,"file":"get-render-summary.js","sourceRoot":"","sources":["../../src/tools/get-render-summary.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-rerender-causes.d.ts","sourceRoot":"","sources":["../../src/tools/get-rerender-causes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOpE,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"get-rerender-causes.d.ts","sourceRoot":"","sources":["../../src/tools/get-rerender-causes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOpE,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAoEjE"}
|
|
@@ -8,15 +8,25 @@ export function registerGetRerenderCauses(server) {
|
|
|
8
8
|
description: 'Highlight components with repeated rerenders and explain likely causes using heuristics derived from the exported profile.',
|
|
9
9
|
inputSchema: {
|
|
10
10
|
profileId: z.string().describe('Profile ID from load_render_profile'),
|
|
11
|
-
limit: z
|
|
12
|
-
|
|
11
|
+
limit: z
|
|
12
|
+
.number()
|
|
13
|
+
.int()
|
|
14
|
+
.positive()
|
|
15
|
+
.max(25)
|
|
16
|
+
.optional()
|
|
17
|
+
.describe('How many components to include. Defaults to 10.'),
|
|
18
|
+
minDuration: z
|
|
19
|
+
.number()
|
|
20
|
+
.nonnegative()
|
|
21
|
+
.optional()
|
|
22
|
+
.describe('Minimum total actual duration in ms for a component to appear. Filters sub-millisecond noise. Defaults to 0.'),
|
|
13
23
|
},
|
|
14
24
|
}, async ({ profileId, limit, minDuration }) => {
|
|
15
25
|
const profile = getRenderProfile(profileId);
|
|
16
26
|
if (!profile) {
|
|
17
27
|
throw new Error(`Profile "${profileId}" not found. Call get_render_summary without a profileId to list all loaded profiles.`);
|
|
18
28
|
}
|
|
19
|
-
const causes = getRerenderCauses(profile, limit ?? 10, minDuration ?? 0).map(cause => ({
|
|
29
|
+
const causes = getRerenderCauses(profile, limit ?? 10, minDuration ?? 0).map((cause) => ({
|
|
20
30
|
...cause,
|
|
21
31
|
score: Number(cause.score.toFixed(1)),
|
|
22
32
|
totalActualDuration: formatMs(cause.totalActualDuration),
|
|
@@ -26,7 +36,8 @@ export function registerGetRerenderCauses(server) {
|
|
|
26
36
|
? 'Causes are based on exact prop/state changeDescription data from react-scan/lite.'
|
|
27
37
|
: 'Causes are heuristic — no prop/state diff data available. Run live capture (begin_render_analysis, approach: live) in a real browser to get exact change descriptions.';
|
|
28
38
|
return {
|
|
29
|
-
content: [
|
|
39
|
+
content: [
|
|
40
|
+
{
|
|
30
41
|
type: 'text',
|
|
31
42
|
text: JSON.stringify({
|
|
32
43
|
profileId,
|
|
@@ -38,7 +49,8 @@ export function registerGetRerenderCauses(server) {
|
|
|
38
49
|
},
|
|
39
50
|
causes,
|
|
40
51
|
}, null, 2),
|
|
41
|
-
}
|
|
52
|
+
},
|
|
53
|
+
],
|
|
42
54
|
};
|
|
43
55
|
});
|
|
44
56
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-rerender-causes.js","sourceRoot":"","sources":["../../src/tools/get-rerender-causes.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,UAAU,yBAAyB,CAAC,MAAiB;IACzD,MAAM,CAAC,YAAY,
|
|
1
|
+
{"version":3,"file":"get-rerender-causes.js","sourceRoot":"","sources":["../../src/tools/get-rerender-causes.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,UAAU,yBAAyB,CAAC,MAAiB;IACzD,MAAM,CAAC,YAAY,CACjB,qBAAqB,EACrB;QACE,KAAK,EAAE,qBAAqB;QAC5B,WAAW,EACT,4HAA4H;QAC9H,WAAW,EAAE;YACX,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;YACrE,KAAK,EAAE,CAAC;iBACL,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,QAAQ,EAAE;iBACV,GAAG,CAAC,EAAE,CAAC;iBACP,QAAQ,EAAE;iBACV,QAAQ,CAAC,iDAAiD,CAAC;YAC9D,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,WAAW,EAAE;iBACb,QAAQ,EAAE;iBACV,QAAQ,CACP,8GAA8G,CAC/G;SACJ;KACF,EACD,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE;QAC1C,MAAM,OAAO,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAC5C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CACb,YAAY,SAAS,uFAAuF,CAC7G,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,iBAAiB,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE,EAAE,WAAW,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACvF,GAAG,KAAK;YACR,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACrC,mBAAmB,EAAE,QAAQ,CAAC,KAAK,CAAC,mBAAmB,CAAC;SACzD,CAAC,CAAC,CAAC;QAEJ,MAAM,WAAW,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC;QAC1E,MAAM,WAAW,GAAG,OAAO,CAAC,qBAAqB;YAC/C,CAAC,CAAC,mFAAmF;YACrF,CAAC,CAAC,wKAAwK,CAAC;QAE7K,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB;wBACE,SAAS;wBACT,WAAW;wBACX,IAAI,EAAE,WAAW;wBACjB,kBAAkB,EAAE;4BAClB,OAAO,EACL,qIAAqI;4BACvI,UAAU,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE;yBACpE;wBACD,MAAM;qBACP,EACD,IAAI,EACJ,CAAC,CACF;iBACF;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-slow-components.d.ts","sourceRoot":"","sources":["../../src/tools/get-slow-components.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOpE,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"get-slow-components.d.ts","sourceRoot":"","sources":["../../src/tools/get-slow-components.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOpE,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA8DjE"}
|
|
@@ -8,9 +8,22 @@ export function registerGetSlowComponents(server) {
|
|
|
8
8
|
description: 'Return the slowest components in a loaded Next.js render profile, ranked by total actual render time.',
|
|
9
9
|
inputSchema: {
|
|
10
10
|
profileId: z.string().describe('Profile ID from load_render_profile'),
|
|
11
|
-
limit: z
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
limit: z
|
|
12
|
+
.number()
|
|
13
|
+
.int()
|
|
14
|
+
.positive()
|
|
15
|
+
.max(25)
|
|
16
|
+
.optional()
|
|
17
|
+
.describe('How many components to return. Defaults to 10.'),
|
|
18
|
+
sortBy: z
|
|
19
|
+
.enum(['total', 'average', 'max'])
|
|
20
|
+
.optional()
|
|
21
|
+
.describe('Sort metric: "total" = total render time (default), "average" = average per render, "max" = peak single render time.'),
|
|
22
|
+
minDuration: z
|
|
23
|
+
.number()
|
|
24
|
+
.nonnegative()
|
|
25
|
+
.optional()
|
|
26
|
+
.describe('Minimum total actual duration in ms to include. Filters sub-millisecond noise. Defaults to 0.'),
|
|
14
27
|
},
|
|
15
28
|
}, async ({ profileId, limit, sortBy, minDuration }) => {
|
|
16
29
|
const profile = getRenderProfile(profileId);
|
|
@@ -25,10 +38,12 @@ export function registerGetSlowComponents(server) {
|
|
|
25
38
|
maxActualDuration: formatMs(component.maxActualDuration),
|
|
26
39
|
}));
|
|
27
40
|
return {
|
|
28
|
-
content: [
|
|
41
|
+
content: [
|
|
42
|
+
{
|
|
29
43
|
type: 'text',
|
|
30
44
|
text: JSON.stringify({ profileId, slowComponents }, null, 2),
|
|
31
|
-
}
|
|
45
|
+
},
|
|
46
|
+
],
|
|
32
47
|
};
|
|
33
48
|
});
|
|
34
49
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-slow-components.js","sourceRoot":"","sources":["../../src/tools/get-slow-components.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,UAAU,yBAAyB,CAAC,MAAiB;IACzD,MAAM,CAAC,YAAY,
|
|
1
|
+
{"version":3,"file":"get-slow-components.js","sourceRoot":"","sources":["../../src/tools/get-slow-components.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,UAAU,yBAAyB,CAAC,MAAiB;IACzD,MAAM,CAAC,YAAY,CACjB,qBAAqB,EACrB;QACE,KAAK,EAAE,qBAAqB;QAC5B,WAAW,EACT,uGAAuG;QACzG,WAAW,EAAE;YACX,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;YACrE,KAAK,EAAE,CAAC;iBACL,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,QAAQ,EAAE;iBACV,GAAG,CAAC,EAAE,CAAC;iBACP,QAAQ,EAAE;iBACV,QAAQ,CAAC,gDAAgD,CAAC;YAC7D,MAAM,EAAE,CAAC;iBACN,IAAI,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;iBACjC,QAAQ,EAAE;iBACV,QAAQ,CACP,sHAAsH,CACvH;YACH,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,WAAW,EAAE;iBACb,QAAQ,EAAE;iBACV,QAAQ,CACP,+FAA+F,CAChG;SACJ;KACF,EACD,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,EAAE;QAClD,MAAM,OAAO,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAC5C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CACb,YAAY,SAAS,uFAAuF,CAC7G,CAAC;QACJ,CAAC;QAED,MAAM,cAAc,GAAG,iBAAiB,CACtC,OAAO,EACP,KAAK,IAAI,EAAE,EACX,MAAM,IAAI,OAAO,EACjB,WAAW,IAAI,CAAC,CACjB,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YAC3B,IAAI,EAAE,KAAK,GAAG,CAAC;YACf,GAAG,SAAS;YACZ,mBAAmB,EAAE,QAAQ,CAAC,SAAS,CAAC,mBAAmB,CAAC;YAC5D,qBAAqB,EAAE,QAAQ,CAAC,SAAS,CAAC,qBAAqB,CAAC;YAChE,iBAAiB,EAAE,QAAQ,CAAC,SAAS,CAAC,iBAAiB,CAAC;SACzD,CAAC,CAAC,CAAC;QAEJ,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;iBAC7D;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load-render-profile.d.ts","sourceRoot":"","sources":["../../src/tools/load-render-profile.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOpE,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"load-render-profile.d.ts","sourceRoot":"","sources":["../../src/tools/load-render-profile.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOpE,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA0CjE"}
|
|
@@ -11,7 +11,9 @@ export function registerLoadRenderProfile(server) {
|
|
|
11
11
|
'This is the entry point for the manual profiling path: open React DevTools in the browser → Profiler tab → Record → interact → Stop → Export JSON → share the file path here. ' +
|
|
12
12
|
'Returns a profileId for use with get_render_summary, get_slow_components, get_rerender_causes, and the other analysis tools.',
|
|
13
13
|
inputSchema: {
|
|
14
|
-
filePath: z
|
|
14
|
+
filePath: z
|
|
15
|
+
.string()
|
|
16
|
+
.describe('Absolute or relative path to the exported React Profiler JSON file'),
|
|
15
17
|
},
|
|
16
18
|
}, async ({ filePath }) => {
|
|
17
19
|
const absPath = resolve(filePath);
|
|
@@ -19,7 +21,8 @@ export function registerLoadRenderProfile(server) {
|
|
|
19
21
|
const profile = parseRenderProfile(content, absPath);
|
|
20
22
|
storeRenderProfile(profile);
|
|
21
23
|
return {
|
|
22
|
-
content: [
|
|
24
|
+
content: [
|
|
25
|
+
{
|
|
23
26
|
type: 'text',
|
|
24
27
|
text: JSON.stringify({
|
|
25
28
|
profileId: profile.id,
|
|
@@ -29,7 +32,8 @@ export function registerLoadRenderProfile(server) {
|
|
|
29
32
|
componentCount: profile.components.length,
|
|
30
33
|
totalCommitDuration: formatMs(profile.totalCommitDuration),
|
|
31
34
|
}, null, 2),
|
|
32
|
-
}
|
|
35
|
+
},
|
|
36
|
+
],
|
|
33
37
|
};
|
|
34
38
|
});
|
|
35
39
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load-render-profile.js","sourceRoot":"","sources":["../../src/tools/load-render-profile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,UAAU,yBAAyB,CAAC,MAAiB;IACzD,MAAM,CAAC,YAAY,
|
|
1
|
+
{"version":3,"file":"load-render-profile.js","sourceRoot":"","sources":["../../src/tools/load-render-profile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,UAAU,yBAAyB,CAAC,MAAiB;IACzD,MAAM,CAAC,YAAY,CACjB,qBAAqB,EACrB;QACE,KAAK,EAAE,qBAAqB;QAC5B,WAAW,EACT,8CAA8C;YAC9C,gLAAgL;YAChL,8HAA8H;QAChI,WAAW,EAAE;YACX,QAAQ,EAAE,CAAC;iBACR,MAAM,EAAE;iBACR,QAAQ,CAAC,oEAAoE,CAAC;SAClF;KACF,EACD,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;QACrB,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;QAClC,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACjD,MAAM,OAAO,GAAG,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACrD,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAE5B,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB;wBACE,SAAS,EAAE,OAAO,CAAC,EAAE;wBACrB,QAAQ,EAAE,OAAO,CAAC,QAAQ;wBAC1B,OAAO,EAAE,OAAO,CAAC,OAAO;wBACxB,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM;wBACnC,cAAc,EAAE,OAAO,CAAC,UAAU,CAAC,MAAM;wBACzC,mBAAmB,EAAE,QAAQ,CAAC,OAAO,CAAC,mBAAmB,CAAC;qBAC3D,EACD,IAAI,EACJ,CAAC,CACF;iBACF;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-render-capture.d.ts","sourceRoot":"","sources":["../../src/tools/run-render-capture.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKpE,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"run-render-capture.d.ts","sourceRoot":"","sources":["../../src/tools/run-render-capture.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKpE,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA0EhE"}
|
|
@@ -18,10 +18,14 @@ export function registerRunRenderCapture(server) {
|
|
|
18
18
|
const session = getCaptureSession(sessionId);
|
|
19
19
|
if (!session || session.status !== 'active') {
|
|
20
20
|
return {
|
|
21
|
-
content: [
|
|
21
|
+
content: [
|
|
22
|
+
{
|
|
22
23
|
type: 'text',
|
|
23
|
-
text: JSON.stringify({
|
|
24
|
-
|
|
24
|
+
text: JSON.stringify({
|
|
25
|
+
error: `No active session for sessionId "${sessionId}". Call begin_render_analysis first.`,
|
|
26
|
+
}, null, 2),
|
|
27
|
+
},
|
|
28
|
+
],
|
|
25
29
|
isError: true,
|
|
26
30
|
};
|
|
27
31
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-render-capture.js","sourceRoot":"","sources":["../../src/tools/run-render-capture.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,MAAM,UAAU,wBAAwB,CAAC,MAAiB;IACxD,MAAM,CAAC,YAAY,
|
|
1
|
+
{"version":3,"file":"run-render-capture.js","sourceRoot":"","sources":["../../src/tools/run-render-capture.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,MAAM,UAAU,wBAAwB,CAAC,MAAiB;IACxD,MAAM,CAAC,YAAY,CACjB,oBAAoB,EACpB;QACE,KAAK,EAAE,oBAAoB;QAC3B,WAAW,EACT,iFAAiF;YACjF,4EAA4E;YAC5E,oFAAoF;YACpF,sFAAsF;QACxF,WAAW,EAAE;YACX,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kDAAkD,CAAC;YAClF,MAAM,EAAE,CAAC;iBACN,IAAI,CAAC,CAAC,oBAAoB,EAAE,YAAY,CAAC,CAAC;iBAC1C,QAAQ,CACP,yEAAyE;gBACvE,6GAA6G,CAChH;SACJ;KACF,EACD,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE;QAC9B,MAAM,OAAO,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC5C,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB;4BACE,KAAK,EAAE,oCAAoC,SAAS,sCAAsC;yBAC3F,EACD,IAAI,EACJ,CAAC,CACF;qBACF;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,IAAI,MAAM,KAAK,oBAAoB,EAAE,CAAC;YACpC,MAAM,MAAM,GAAG;gBACb,MAAM;gBACN,SAAS;gBACT,YAAY,EAAE;oBACZ,+CAA+C;oBAC/C,wFAAwF;oBACxF,4DAA4D;iBAC7D,CAAC,IAAI,CAAC,IAAI,CAAC;gBACZ,QAAQ,EAAE,qCAAqC,SAAS,MAAM;aAC/D,CAAC;YACF,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aAC5E,CAAC;QACJ,CAAC;QAED,aAAa;QACb,MAAM,MAAM,GAAG;YACb,MAAM;YACN,SAAS;YACT,YAAY,EAAE;gBACZ,sEAAsE;gBACtE,gHAAgH;gBAChH,+CAA+C;gBAC/C,6CAA6C;gBAC7C,6EAA6E;aAC9E,CAAC,IAAI,CAAC,IAAI,CAAC;YACZ,QAAQ,EAAE,qCAAqC,SAAS,MAAM;SAC/D,CAAC;QACF,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;SAC5E,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stop-render-capture.d.ts","sourceRoot":"","sources":["../../src/tools/stop-render-capture.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AASpE,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"stop-render-capture.d.ts","sourceRoot":"","sources":["../../src/tools/stop-render-capture.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AASpE,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAsFjE"}
|