@perfonext/render-mcp 0.3.3 → 0.3.4

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 (36) hide show
  1. package/README.md +13 -0
  2. package/dist/index.js +1 -1
  3. package/dist/parser/analysis.d.ts.map +1 -1
  4. package/dist/parser/analysis.js +40 -52
  5. package/dist/parser/analysis.js.map +1 -1
  6. package/dist/parser/types.d.ts +0 -1
  7. package/dist/parser/types.d.ts.map +1 -1
  8. package/dist/store.d.ts +5 -0
  9. package/dist/store.d.ts.map +1 -1
  10. package/dist/store.js +13 -0
  11. package/dist/store.js.map +1 -1
  12. package/dist/tools/begin-render-analysis.d.ts.map +1 -1
  13. package/dist/tools/begin-render-analysis.js +14 -0
  14. package/dist/tools/begin-render-analysis.js.map +1 -1
  15. package/dist/tools/compare-renders.d.ts.map +1 -1
  16. package/dist/tools/compare-renders.js +4 -9
  17. package/dist/tools/compare-renders.js.map +1 -1
  18. package/dist/tools/get-hot-commits.d.ts.map +1 -1
  19. package/dist/tools/get-hot-commits.js +21 -16
  20. package/dist/tools/get-hot-commits.js.map +1 -1
  21. package/dist/tools/get-render-summary.d.ts.map +1 -1
  22. package/dist/tools/get-render-summary.js +3 -5
  23. package/dist/tools/get-render-summary.js.map +1 -1
  24. package/dist/tools/get-rerender-causes.d.ts.map +1 -1
  25. package/dist/tools/get-rerender-causes.js +5 -5
  26. package/dist/tools/get-rerender-causes.js.map +1 -1
  27. package/dist/tools/get-slow-components.d.ts.map +1 -1
  28. package/dist/tools/get-slow-components.js +7 -6
  29. package/dist/tools/get-slow-components.js.map +1 -1
  30. package/dist/tools/load-render-profile.d.ts.map +1 -1
  31. package/dist/tools/load-render-profile.js +1 -0
  32. package/dist/tools/load-render-profile.js.map +1 -1
  33. package/dist/tools/stop-render-capture.d.ts.map +1 -1
  34. package/dist/tools/stop-render-capture.js +8 -4
  35. package/dist/tools/stop-render-capture.js.map +1 -1
  36. package/package.json +1 -1
package/README.md CHANGED
@@ -120,6 +120,19 @@ Copilot will:
120
120
  > expose the React DevTools profiling channel, so `changeDescription` data is unavailable and causes fall back
121
121
  > to heuristics (`dataQuality: "heuristic"`).
122
122
 
123
+ > **Two preconditions commonly cause a silent `commitCount: 0`:**
124
+ >
125
+ > - **Build flavor.** A plain `next build`/`next start` compiles out React's profiling hooks entirely.
126
+ > Choose one of:
127
+ > - `next dev` — real component names, but dev-mode overhead means render timings and proportions
128
+ > may not match what real users experience in production.
129
+ > - `next build --profile` then `next start` — production-accurate timings, but component names get
130
+ > minified to 1-2 letters (e.g. `"V"`) by production minification, regardless of the profiling flag.
131
+ > `get_render_summary` surfaces a warning when this is detected.
132
+ > - **Instrumentation timing.** `instrument()` must run before React initializes — a static top-level import
133
+ > (as shown in the generated snippet) works; mounting it as a React component, or calling it inside a
134
+ > `useEffect`, runs too late and silently captures nothing.
135
+
123
136
  The ingest server runs on a **fixed port (7721)**. Only the `sessionId` line in `instrumentation-client.js` changes between sessions — the file does not need to be re-wired each time.
124
137
 
125
138
  **Option B — Manual DevTools export**
package/dist/index.js CHANGED
@@ -13,7 +13,7 @@ import { registerStopRenderCapture } from './tools/stop-render-capture.js';
13
13
  import { registerGetCapturedRenders } from './tools/get-captured-renders.js';
14
14
  const server = new McpServer({
15
15
  name: 'perfonext-render-mcp',
16
- version: '0.3.3',
16
+ version: '0.3.4',
17
17
  });
18
18
  registerLoadRenderProfile(server);
19
19
  registerCompareRenders(server);
@@ -1 +1 @@
1
- {"version":3,"file":"analysis.d.ts","sourceRoot":"","sources":["../../src/parser/analysis.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EAIf,gBAAgB,EAChB,mBAAmB,EAEnB,gBAAgB,EAEhB,WAAW,EAGX,qBAAqB,EACrB,kBAAkB,EAClB,aAAa,EAId,MAAM,YAAY,CAAC;AA+BpB,qFAAqF;AACrF,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE3D;AAmFD,wBAAgB,aAAa,CAC3B,OAAO,EAAE,mBAAmB,EAC5B,KAAK,SAAK,EACV,cAAc,SAAI,EAClB,aAAa,CAAC,EAAE,MAAM,GACrB,gBAAgB,EAAE,CAsBpB;AAED,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,mBAAmB,EAC5B,KAAK,SAAK,GACT;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,aAAa,EAAE,kBAAkB,EAAE,CAAC;IACpC,UAAU,EAAE,gBAAgB,EAAE,CAAC;IAC/B,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC;CACpC,CA6BA;AAED,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,mBAAmB,EAC5B,KAAK,SAAK,EACV,MAAM,GAAE,OAAO,GAAG,SAAS,GAAG,KAAe,EAC7C,WAAW,SAAI,GACd,kBAAkB,EAAE,CA+BtB;AAED,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,mBAAmB,EAC5B,KAAK,SAAK,EACV,WAAW,SAAI,GACd,aAAa,EAAE,CA2MjB;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,mBAAmB,EAC5B,WAAW,EAAE,MAAM,EACnB,cAAc,SAAI,GACjB,eAAe,GAAG,IAAI,CA8ExB;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,mBAAmB,EAC5B,WAAW,EAAE,MAAM,EACnB,KAAK,SAAK,GACT,qBAAqB,EAAE,CA8JzB;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,mBAAmB,EAAE,KAAK,SAAK,GAAG,WAAW,EAAE,CA4E1F;AAmDD,wBAAgB,cAAc,CAC5B,WAAW,EAAE,mBAAmB,EAChC,cAAc,EAAE,mBAAmB,EACnC,KAAK,SAAK,EACV,QAAQ,SAAI,GACX,gBAAgB,CA6ClB"}
1
+ {"version":3,"file":"analysis.d.ts","sourceRoot":"","sources":["../../src/parser/analysis.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EAIf,gBAAgB,EAChB,mBAAmB,EAEnB,gBAAgB,EAEhB,WAAW,EAGX,qBAAqB,EACrB,kBAAkB,EAClB,aAAa,EAId,MAAM,YAAY,CAAC;AAqCpB,qFAAqF;AACrF,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE3D;AAgFD,wBAAgB,aAAa,CAC3B,OAAO,EAAE,mBAAmB,EAC5B,KAAK,SAAK,EACV,cAAc,SAAI,EAClB,aAAa,CAAC,EAAE,MAAM,GACrB,gBAAgB,EAAE,CAsBpB;AAED,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,mBAAmB,EAC5B,KAAK,SAAK,GACT;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,aAAa,EAAE,kBAAkB,EAAE,CAAC;IACpC,UAAU,EAAE,gBAAgB,EAAE,CAAC;IAC/B,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC;CACpC,CA6CA;AAED,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,mBAAmB,EAC5B,KAAK,SAAK,EACV,MAAM,GAAE,OAAO,GAAG,SAAS,GAAG,KAAe,EAC7C,WAAW,SAAI,GACd,kBAAkB,EAAE,CA8BtB;AAED,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,mBAAmB,EAC5B,KAAK,SAAK,EACV,WAAW,SAAI,GACd,aAAa,EAAE,CAsKjB;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,mBAAmB,EAC5B,WAAW,EAAE,MAAM,EACnB,cAAc,SAAI,GACjB,eAAe,GAAG,IAAI,CA8ExB;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,mBAAmB,EAC5B,WAAW,EAAE,MAAM,EACnB,KAAK,SAAK,GACT,qBAAqB,EAAE,CA8JzB;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,mBAAmB,EAAE,KAAK,SAAK,GAAG,WAAW,EAAE,CA6E1F;AAmDD,wBAAgB,cAAc,CAC5B,WAAW,EAAE,mBAAmB,EAChC,cAAc,EAAE,mBAAmB,EACnC,KAAK,SAAK,EACV,QAAQ,SAAI,GACX,gBAAgB,CA6ClB"}
@@ -21,9 +21,14 @@ function isHostElement(name) {
21
21
  function isAnonymousComponent(name) {
22
22
  return name === 'Anonymous' || name.startsWith('(fiber:');
23
23
  }
24
+ /** Returns true for internal framework boundary markers (e.g. `__next_metadata_boundary__`)
25
+ * that aren't user code and can't be optimized. */
26
+ function isInternalComponent(name) {
27
+ return /^__.+__$/.test(name);
28
+ }
24
29
  /** Returns true for named React components that appear in ranked analysis output. */
25
30
  export function isAnalyzableComponent(name) {
26
- return !isHostElement(name) && !isAnonymousComponent(name);
31
+ return !isHostElement(name) && !isAnonymousComponent(name) && !isInternalComponent(name);
27
32
  }
28
33
  function getConfidence(evidenceCount) {
29
34
  if (evidenceCount >= 3) {
@@ -72,7 +77,7 @@ function getCommitTopComponents(commit, limit) {
72
77
  components.set(measurement.componentName, existing);
73
78
  }
74
79
  return Array.from(components.values())
75
- .filter((component) => !isHostElement(component.componentName) && !isAnonymousComponent(component.componentName))
80
+ .filter((component) => isAnalyzableComponent(component.componentName))
76
81
  .sort((left, right) => right.actualDuration - left.actualDuration)
77
82
  .slice(0, limit)
78
83
  .map((component) => ({
@@ -110,11 +115,24 @@ export function getRenderSummary(profile, limit = 10) {
110
115
  .filter((c) => isAnonymousComponent(c.componentName))
111
116
  .map((c) => c.componentName);
112
117
  const uniqueAnonymous = [...new Set(anonymousNames)];
118
+ const analyzableNames = profile.components
119
+ .map((c) => c.componentName)
120
+ .filter((name) => isAnalyzableComponent(name));
121
+ // 1-2 letter names are the signature of a production build mangling displayName —
122
+ // real components essentially never end up this short on their own.
123
+ const minifiedNames = analyzableNames.filter((name) => /^[A-Za-z]{1,2}$/.test(name));
113
124
  const warnings = [];
114
125
  if (uniqueAnonymous.length > 0) {
115
126
  warnings.push(`${uniqueAnonymous.length} unnamed component${uniqueAnonymous.length > 1 ? 's' : ''} found (e.g. "Anonymous"). ` +
116
127
  `These are excluded from analysis. Add a displayName or convert arrow functions to named function expressions to get actionable results.`);
117
128
  }
129
+ if (analyzableNames.length >= 3 && minifiedNames.length / analyzableNames.length >= 0.3) {
130
+ warnings.push(`${minifiedNames.length} of ${analyzableNames.length} component names look minified (e.g. "${minifiedNames[0]}"). ` +
131
+ 'This is expected when capturing against `next build --profile` — production minification strips ' +
132
+ "displayName info regardless of the profiling flag, so findings naming these components aren't " +
133
+ "actionable as-is. If you don't need production-accurate timings, capture against `next dev` instead " +
134
+ "for real names; otherwise check each entry's `source` field (if present) to map back to a file.");
135
+ }
118
136
  return {
119
137
  profileId: profile.id,
120
138
  filename: profile.filename,
@@ -133,8 +151,7 @@ export function getRenderSummary(profile, limit = 10) {
133
151
  }
134
152
  export function getSlowComponents(profile, limit = 10, sortBy = 'total', minDuration = 0) {
135
153
  const entries = profile.components
136
- .filter((component) => !isHostElement(component.componentName) &&
137
- !isAnonymousComponent(component.componentName) &&
154
+ .filter((component) => isAnalyzableComponent(component.componentName) &&
138
155
  component.totalActualDuration >= minDuration)
139
156
  .map((component) => ({
140
157
  componentName: component.componentName,
@@ -168,12 +185,10 @@ export function getRerenderCauses(profile, limit = 10, minDuration = 0) {
168
185
  // on "every commit" instead of never reaching a fixed floor of 3.
169
186
  const wideSpreadThreshold = Math.min(commitCount, Math.max(3, Math.ceil(commitCount * 0.6)));
170
187
  const causes = profile.components
171
- .filter((component) => !isHostElement(component.componentName) &&
172
- !isAnonymousComponent(component.componentName) &&
188
+ .filter((component) => isAnalyzableComponent(component.componentName) &&
173
189
  (component.updateCount > 0 || component.nestedUpdateCount > 0) &&
174
190
  component.totalActualDuration >= minDuration)
175
191
  .map((component) => {
176
- const likelyCauses = [];
177
192
  const evidence = [];
178
193
  const selfToActualRatio = component.totalActualDuration > 0
179
194
  ? component.totalSelfDuration / component.totalActualDuration
@@ -195,15 +210,14 @@ export function getRerenderCauses(profile, limit = 10, minDuration = 0) {
195
210
  if (cc.parentTriggered && parts.length === 0)
196
211
  parts.push('parent re-rendered (no own prop/state change)');
197
212
  if (parts.length > 0) {
198
- likelyCauses.push(`${component.componentName} re-rendered because: ${parts.join('; ')}.` +
199
- (cc.parentTriggered && parts.length > 1
200
- ? ' Also triggered by parent re-renders.'
201
- : ''));
202
213
  evidence.push({
203
214
  signal: 'exact-change-description',
204
215
  observed: parts.join('; '),
205
216
  threshold: 'n/a',
206
- detail: `react-scan/lite reported exact change causes for ${component.componentName} across ${component.updateCount} update render${component.updateCount === 1 ? '' : 's'}.`,
217
+ detail: `${component.componentName} re-rendered because: ${parts.join('; ')}.` +
218
+ (cc.parentTriggered && parts.length > 1
219
+ ? ' Also triggered by parent re-renders.'
220
+ : ''),
207
221
  });
208
222
  }
209
223
  }
@@ -212,58 +226,41 @@ export function getRerenderCauses(profile, limit = 10, minDuration = 0) {
212
226
  ? Math.round((component.updateCount / component.renderCount) * 100)
213
227
  : 0;
214
228
  const mountPct = 100 - updatePct;
215
- let causeText;
229
+ let advice;
216
230
  if (updatePct >= 80) {
217
- causeText =
218
- `${component.componentName} rendered in update phase ${component.updateCount} of ${component.renderCount} times (${updatePct}% updates, ${mountPct}% mounts). ` +
219
- `It almost never remounts fresh, which means it is staying alive and re-rendering in place repeatedly. ` +
220
- `The likely driver is a parent passing new object/array/function references on every render, or the component's own state being set more often than intended. ` +
221
- `Check for inline object props, unstable callback references, or a context value that changes on every parent render.`;
231
+ advice =
232
+ 'It almost never remounts fresh, staying alive and re-rendering in place check for inline object/array/function props, unstable callback references, or a context value that changes on every parent render.';
222
233
  }
223
234
  else if (updatePct >= 40) {
224
- causeText =
225
- `${component.componentName} has a mixed mount/update pattern: ${updatePct}% updates, ${mountPct}% mounts across ${component.renderCount} renders. ` +
226
- `The component is sometimes remounting fresh and sometimes updating in place, which can mean it is conditionally included in the tree, ` +
227
- `or its React key changes on some renders (causing a full unmount+mount). ` +
228
- `Investigate whether key changes are intentional and whether conditional rendering could be replaced with CSS visibility to avoid remount cost.`;
235
+ advice =
236
+ 'Mixed mount/update pattern investigate whether key changes are intentional; conditional rendering could be replaced with CSS visibility to avoid remount cost.';
229
237
  }
230
238
  else {
231
- causeText =
232
- `${component.componentName} is mostly mounting rather than updating: ${mountPct}% mounts vs ${updatePct}% updates across ${component.renderCount} renders. ` +
233
- `This level of remounting usually points to unstable list keys, a parent that conditionally unmounts and recreates the component, ` +
234
- `or a component defined inside a render function (which creates a new type on every render and forces React to unmount instead of update). ` +
235
- `Ensure keys are stable identifiers and that the component is not defined inline.`;
239
+ advice =
240
+ 'Mostly mounting rather than updating check for unstable list keys, a parent conditionally unmounting/recreating this component, or a component type defined inline inside a render function.';
236
241
  }
237
- likelyCauses.push(causeText);
238
242
  evidence.push({
239
243
  signal: 'repeated-update-phases',
240
244
  observed: component.updateCount,
241
245
  threshold: 2,
242
- detail: `${component.componentName} entered the update phase ${component.updateCount} times (${updatePct}%) across ${component.commitIndices.length} commit${component.commitIndices.length === 1 ? '' : 's'}. Mount/update ratio: ${mountPct}% mounts, ${updatePct}% updates.`,
246
+ detail: `${component.componentName} entered the update phase ${component.updateCount} of ${component.renderCount} times (${updatePct}% updates, ${mountPct}% mounts) across ${component.commitIndices.length} commit${component.commitIndices.length === 1 ? '' : 's'}. ${advice}`,
243
247
  });
244
248
  }
245
249
  if (component.nestedUpdateCount > 0) {
246
- likelyCauses.push(`${component.nestedUpdateCount} of ${component.componentName}'s renders were triggered as nested updates ` +
247
- `(the component itself was listed as an updater for its own commit). ` +
248
- `This is a strong indicator of a render-then-setState loop, an effect with missing or incorrect dependencies, ` +
249
- `or a context provider that updates its value during render.`);
250
250
  evidence.push({
251
251
  signal: 'nested-update-propagation',
252
252
  observed: component.nestedUpdateCount,
253
253
  threshold: 1,
254
- detail: `${component.componentName} appeared as an updater in ${component.nestedUpdateCount} of its own commits, which is a strong hint that rerender work is self-propagating inside this subtree.`,
254
+ detail: `${component.nestedUpdateCount} of ${component.componentName}'s renders were nested updates (self-triggered as an updater for its own commit) — a strong indicator of a render-then-setState loop, an effect with missing/incorrect dependencies, or a context provider updating its value during render.`,
255
255
  });
256
256
  }
257
257
  if (selfToActualRatio >= 0.9) {
258
258
  const selfPct = Math.round(selfToActualRatio * 100);
259
- likelyCauses.push(`${selfPct}% of ${component.componentName}'s render cost is self-contained (not delegated to children). ` +
260
- `The component body itself is doing the heavy lifting — likely expensive JSX construction, inline computations, or heavy formatting on each render. ` +
261
- `Wrapping with React.memo will prevent unnecessary calls, and moving expensive calculations into useMemo will avoid recomputing them when unrelated state changes.`);
262
259
  evidence.push({
263
260
  signal: 'self-intensive-render',
264
261
  observed: Number(selfToActualRatio.toFixed(2)),
265
262
  threshold: 0.9,
266
- detail: `Self duration is ${selfPct}% of actual duration for ${component.componentName}, indicating this component does most render work in its own body rather than delegating to children. Direct memoization of this component is the correct fix.`,
263
+ detail: `Self duration is ${selfPct}% of actual duration for ${component.componentName} the component's own body (not children) does most of the work, likely expensive JSX construction, inline computations, or formatting. Wrap with React.memo and move expensive calculations into useMemo.`,
267
264
  });
268
265
  }
269
266
  if (component.commitIndices.length >= wideSpreadThreshold) {
@@ -272,27 +269,19 @@ export function getRerenderCauses(profile, limit = 10, minDuration = 0) {
272
269
  (component.commitIndices.length > 5
273
270
  ? ` … (+${component.commitIndices.length - 5} more)`
274
271
  : '');
275
- likelyCauses.push(`${component.componentName} appeared in ${component.commitIndices.length} of ${commitCount} commits (${spreadPct}%) (commits ${commitList}), ` +
276
- `which means rerender pressure on this component is sustained across the session rather than a one-off spike. ` +
277
- `Likely causes are an unstable context value, a subscription or timer that triggers frequent state updates, ` +
278
- `or a prop that carries a new reference on every parent render.`);
279
272
  evidence.push({
280
273
  signal: 'wide-commit-spread',
281
274
  observed: component.commitIndices.length,
282
275
  threshold: wideSpreadThreshold,
283
- detail: `${component.componentName} shows up across ${component.commitIndices.length} of ${commitCount} commits (${spreadPct}%) (${commitList}), which usually means rerender pressure is sustained rather than a one-off spike.`,
276
+ detail: `${component.componentName} shows up across ${component.commitIndices.length} of ${commitCount} commits (${spreadPct}%) (${commitList}) sustained rerender pressure rather than a one-off spike. Likely an unstable context value, a subscription/timer triggering frequent updates, or a prop carrying a new reference every parent render.`,
284
277
  });
285
278
  }
286
- if (likelyCauses.length === 0) {
287
- likelyCauses.push(`${component.componentName} rendered ${component.updateCount} time${component.updateCount === 1 ? '' : 's'} in update phase, ` +
288
- `but the signals are below the thresholds for specific heuristics. ` +
289
- `React Profiler exports do not include prop/state diffs, so the exact trigger cannot be determined from this data alone. ` +
290
- `Use why-did-you-render or React DevTools to capture the specific prop or state change.`);
279
+ if (evidence.length === 0) {
291
280
  evidence.push({
292
281
  signal: 'limited-export-evidence',
293
282
  observed: component.commitIndices.length,
294
283
  threshold: 'n/a',
295
- detail: `React Profiler exports do not include exact prop/state diffs, so only weak rerender signals were available for ${component.componentName}.`,
284
+ detail: `${component.componentName} rendered ${component.updateCount} time${component.updateCount === 1 ? '' : 's'} in update phase, but signals are below the thresholds for specific heuristics. React Profiler exports lack prop/state diffs use why-did-you-render or React DevTools to find the exact trigger.`,
296
285
  });
297
286
  }
298
287
  // Score: update count (capped) + nested updates + commit spread + self-intensive + avg duration factor
@@ -316,7 +305,6 @@ export function getRerenderCauses(profile, limit = 10, minDuration = 0) {
316
305
  scoreBand: getScoreBand(score, component.totalActualDuration),
317
306
  confidence: getConfidence(evidence.filter((item) => item.signal !== 'limited-export-evidence').length),
318
307
  evidence,
319
- likelyCauses,
320
308
  };
321
309
  if (component.source)
322
310
  result.source = component.source;
@@ -540,7 +528,7 @@ export function detectRenderIssues(profile, limit = 10) {
540
528
  type: 'rerender-storm',
541
529
  severity: cause.scoreBand,
542
530
  title: `${cause.componentName} rerenders frequently`,
543
- summary: cause.likelyCauses[0] ?? `${cause.componentName} shows repeated rerender pressure.`,
531
+ summary: cause.evidence[0]?.detail ?? `${cause.componentName} shows repeated rerender pressure.`,
544
532
  componentName: cause.componentName,
545
533
  evidence: cause.evidence,
546
534
  });
@@ -1 +1 @@
1
- {"version":3,"file":"analysis.js","sourceRoot":"","sources":["../../src/parser/analysis.ts"],"names":[],"mappings":"AAqBA,kFAAkF;AAClF,mFAAmF;AACnF,4EAA4E;AAC5E,MAAM,6BAA6B,GAAG,CAAC,CAAC;AACxC,MAAM,+BAA+B,GAAG,CAAC,CAAC;AAE1C,SAAS,YAAY,CAAC,KAAa,EAAE,mBAA2B;IAC9D,IAAI,KAAK,IAAI,CAAC,IAAI,mBAAmB,IAAI,6BAA6B,EAAE,CAAC;QACvE,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,KAAK,IAAI,CAAC,IAAI,mBAAmB,IAAI,+BAA+B,EAAE,CAAC;QACzE,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,qFAAqF;AACrF,SAAS,aAAa,CAAC,IAAY;IACjC,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACjC,OAAO,KAAK,IAAI,EAAE,CAAC,OAAO,IAAI,KAAK,IAAI,GAAG,CAAC,CAAC,OAAO;AACrD,CAAC;AAED,wFAAwF;AACxF,SAAS,oBAAoB,CAAC,IAAY;IACxC,OAAO,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AAC5D,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,qBAAqB,CAAC,IAAY;IAChD,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;AAC7D,CAAC;AAED,SAAS,aAAa,CAAC,aAAqB;IAC1C,IAAI,aAAa,IAAI,CAAC,EAAE,CAAC;QACvB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,aAAa,IAAI,CAAC,EAAE,CAAC;QACvB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,eAAe,CAAC,QAA6B;IACpD,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;QACxB,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1B,OAAO,CAAC,CAAC;IACX,CAAC;IAED,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,kCAAkC,CAAC,YAAiC;IAC3E,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,WAAW,EAAE,EAAE,CAAC,GAAG,GAAG,WAAW,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;AACxF,CAAC;AAED,SAAS,eAAe,CAAC,OAA4B,EAAE,MAAe;IACpE,MAAM,KAAK,GACT,MAAM,IAAI,IAAI;QACZ,CAAC,CAAC,OAAO,CAAC,UAAU;QACpB,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;IAElE,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAoB;IAC7C,OAAO,IAAI,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;AAC/F,CAAC;AAED,SAAS,sBAAsB,CAAC,MAAoB,EAAE,KAAa;IACjE,MAAM,UAAU,GAAG,IAAI,GAAG,EAAqC,CAAC;IAChE,MAAM,mBAAmB,GAAG,kCAAkC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IAEpF,KAAK,MAAM,WAAW,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QAC9C,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI;YAC5D,aAAa,EAAE,WAAW,CAAC,aAAa;YACxC,cAAc,EAAE,CAAC;YACjB,YAAY,EAAE,CAAC;YACf,WAAW,EAAE,CAAC;YACd,iBAAiB,EAAE,CAAC;SACrB,CAAC;QAEF,QAAQ,CAAC,cAAc,IAAI,WAAW,CAAC,cAAc,CAAC;QACtD,QAAQ,CAAC,YAAY,IAAI,WAAW,CAAC,YAAY,CAAC;QAClD,QAAQ,CAAC,WAAW,IAAI,WAAW,CAAC,WAAW,CAAC;QAChD,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IACtD,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;SACnC,MAAM,CACL,CAAC,SAAS,EAAE,EAAE,CACZ,CAAC,aAAa,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,aAAa,CAAC,CAC5F;SACA,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;SACjE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC;SACf,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QACnB,GAAG,SAAS;QACZ,iBAAiB,EACf,mBAAmB,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,cAAc,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC;KAC/E,CAAC,CAAC,CAAC;AACR,CAAC;AAED,SAAS,gBAAgB,CACvB,OAA4B,EAC5B,WAAmB;IAEnB,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,OAA4B,EAC5B,KAAK,GAAG,EAAE,EACV,cAAc,GAAG,CAAC,EAClB,aAAsB;IAEtB,OAAO,OAAO,CAAC,OAAO;SACnB,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,aAAa,IAAI,IAAI,IAAI,MAAM,CAAC,aAAa,KAAK,aAAa,CAAC;SACnF,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC,KAAK;QACzB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,mBAAmB,EAAE,kCAAkC,CAAC,MAAM,CAAC,YAAY,CAAC;QAC5E,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,gBAAgB,EAAE,MAAM,CAAC,YAAY,CAAC,MAAM;QAC5C,aAAa,EAAE,sBAAsB,CAAC,MAAM,EAAE,cAAc,CAAC;QAC7D,qBAAqB,EAAE,MAAM,CAAC,qBAAqB;KACpD,CAAC,CAAC;SACF,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACpB,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;YACrC,OAAO,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QACxC,CAAC;QAED,OAAO,KAAK,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC;IAC9D,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,OAA4B,EAC5B,KAAK,GAAG,EAAE;IAgBV,MAAM,cAAc,GAAG,OAAO,CAAC,UAAU;SACtC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,oBAAoB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;SACpD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;IAC/B,MAAM,eAAe,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC;IAErD,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,QAAQ,CAAC,IAAI,CACX,GAAG,eAAe,CAAC,MAAM,qBAAqB,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,6BAA6B;YAC9G,yIAAyI,CAC5I,CAAC;IACJ,CAAC;IAED,OAAO;QACL,SAAS,EAAE,OAAO,CAAC,EAAE;QACrB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM;QACnC,cAAc,EAAE,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM;QAC/F,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;QAChD,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;QAChD,UAAU,EAAE,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC1E,aAAa,EAAE,iBAAiB,CAAC,OAAO,EAAE,KAAK,CAAC;QAChD,MAAM,EAAE,kBAAkB,CAAC,OAAO,EAAE,CAAC,CAAC;QACtC,QAAQ;QACR,WAAW,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW;KACnE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,OAA4B,EAC5B,KAAK,GAAG,EAAE,EACV,SAAsC,OAAO,EAC7C,WAAW,GAAG,CAAC;IAEf,MAAM,OAAO,GAAyB,OAAO,CAAC,UAAU;SACrD,MAAM,CACL,CAAC,SAAS,EAAE,EAAE,CACZ,CAAC,aAAa,CAAC,SAAS,CAAC,aAAa,CAAC;QACvC,CAAC,oBAAoB,CAAC,SAAS,CAAC,aAAa,CAAC;QAC9C,SAAS,CAAC,mBAAmB,IAAI,WAAW,CAC/C;SACA,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QACnB,aAAa,EAAE,SAAS,CAAC,aAAa;QACtC,WAAW,EAAE,SAAS,CAAC,WAAW;QAClC,UAAU,EAAE,SAAS,CAAC,UAAU;QAChC,WAAW,EAAE,SAAS,CAAC,WAAW;QAClC,iBAAiB,EAAE,SAAS,CAAC,iBAAiB;QAC9C,mBAAmB,EAAE,SAAS,CAAC,mBAAmB;QAClD,qBAAqB,EACnB,SAAS,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,mBAAmB,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QACvF,iBAAiB,EAAE,SAAS,CAAC,iBAAiB;QAC9C,WAAW,EAAE,SAAS,CAAC,aAAa,CAAC,MAAM;QAC3C,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1D,CAAC,CAAC,CAAC;IAEN,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,qBAAqB,GAAG,CAAC,CAAC,qBAAqB,CAAC,CAAC;IAC5E,CAAC;SAAM,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QAC5B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,iBAAiB,GAAG,CAAC,CAAC,iBAAiB,CAAC,CAAC;IACpE,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,mBAAmB,GAAG,CAAC,CAAC,mBAAmB,CAAC,CAAC;IACxE,CAAC;IAED,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,OAA4B,EAC5B,KAAK,GAAG,EAAE,EACV,WAAW,GAAG,CAAC;IAEf,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;IAC3C,4EAA4E;IAC5E,4EAA4E;IAC5E,2EAA2E;IAC3E,+EAA+E;IAC/E,kEAAkE;IAClE,MAAM,mBAAmB,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IAE7F,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU;SAC9B,MAAM,CACL,CAAC,SAAS,EAAE,EAAE,CACZ,CAAC,aAAa,CAAC,SAAS,CAAC,aAAa,CAAC;QACvC,CAAC,oBAAoB,CAAC,SAAS,CAAC,aAAa,CAAC;QAC9C,CAAC,SAAS,CAAC,WAAW,GAAG,CAAC,IAAI,SAAS,CAAC,iBAAiB,GAAG,CAAC,CAAC;QAC9D,SAAS,CAAC,mBAAmB,IAAI,WAAW,CAC/C;SACA,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE;QACjB,MAAM,YAAY,GAAa,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAuB,EAAE,CAAC;QACxC,MAAM,iBAAiB,GACrB,SAAS,CAAC,mBAAmB,GAAG,CAAC;YAC/B,CAAC,CAAC,SAAS,CAAC,iBAAiB,GAAG,SAAS,CAAC,mBAAmB;YAC7D,CAAC,CAAC,CAAC,CAAC;QACR,MAAM,WAAW,GACf,SAAS,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,mBAAmB,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QAExF,0EAA0E;QAC1E,MAAM,EAAE,GAAG,SAAS,CAAC,YAAY,CAAC;QAClC,MAAM,cAAc,GAAG,EAAE,IAAI,IAAI,CAAC;QAClC,IAAI,cAAc,IAAI,EAAE,EAAE,CAAC;YACzB,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC7E,IAAI,EAAE,CAAC,YAAY;gBAAE,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACjD,IAAI,EAAE,CAAC,cAAc;gBAAE,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YACrD,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC3E,IAAI,EAAE,CAAC,eAAe,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;gBAC1C,KAAK,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;YAE9D,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrB,YAAY,CAAC,IAAI,CACf,GAAG,SAAS,CAAC,aAAa,yBAAyB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;oBACpE,CAAC,EAAE,CAAC,eAAe,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;wBACrC,CAAC,CAAC,uCAAuC;wBACzC,CAAC,CAAC,EAAE,CAAC,CACV,CAAC;gBACF,QAAQ,CAAC,IAAI,CAAC;oBACZ,MAAM,EAAE,0BAA0B;oBAClC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;oBAC1B,SAAS,EAAE,KAAK;oBAChB,MAAM,EAAE,oDAAoD,SAAS,CAAC,aAAa,WAAW,SAAS,CAAC,WAAW,iBAAiB,SAAS,CAAC,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG;iBAC9K,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,IAAI,SAAS,CAAC,WAAW,IAAI,CAAC,EAAE,CAAC;YAC/B,MAAM,SAAS,GACb,SAAS,CAAC,WAAW,GAAG,CAAC;gBACvB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC,GAAG,GAAG,CAAC;gBACnE,CAAC,CAAC,CAAC,CAAC;YACR,MAAM,QAAQ,GAAG,GAAG,GAAG,SAAS,CAAC;YAEjC,IAAI,SAAiB,CAAC;YACtB,IAAI,SAAS,IAAI,EAAE,EAAE,CAAC;gBACpB,SAAS;oBACP,GAAG,SAAS,CAAC,aAAa,6BAA6B,SAAS,CAAC,WAAW,OAAO,SAAS,CAAC,WAAW,WAAW,SAAS,cAAc,QAAQ,aAAa;wBAC/J,wGAAwG;wBACxG,+JAA+J;wBAC/J,sHAAsH,CAAC;YAC3H,CAAC;iBAAM,IAAI,SAAS,IAAI,EAAE,EAAE,CAAC;gBAC3B,SAAS;oBACP,GAAG,SAAS,CAAC,aAAa,sCAAsC,SAAS,cAAc,QAAQ,mBAAmB,SAAS,CAAC,WAAW,YAAY;wBACnJ,wIAAwI;wBACxI,2EAA2E;wBAC3E,gJAAgJ,CAAC;YACrJ,CAAC;iBAAM,CAAC;gBACN,SAAS;oBACP,GAAG,SAAS,CAAC,aAAa,6CAA6C,QAAQ,eAAe,SAAS,oBAAoB,SAAS,CAAC,WAAW,YAAY;wBAC5J,mIAAmI;wBACnI,4IAA4I;wBAC5I,kFAAkF,CAAC;YACvF,CAAC;YACD,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC7B,QAAQ,CAAC,IAAI,CAAC;gBACZ,MAAM,EAAE,wBAAwB;gBAChC,QAAQ,EAAE,SAAS,CAAC,WAAW;gBAC/B,SAAS,EAAE,CAAC;gBACZ,MAAM,EAAE,GAAG,SAAS,CAAC,aAAa,6BAA6B,SAAS,CAAC,WAAW,WAAW,SAAS,aAAa,SAAS,CAAC,aAAa,CAAC,MAAM,UAAU,SAAS,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,yBAAyB,QAAQ,aAAa,SAAS,YAAY;aAChR,CAAC,CAAC;QACL,CAAC;QAED,IAAI,SAAS,CAAC,iBAAiB,GAAG,CAAC,EAAE,CAAC;YACpC,YAAY,CAAC,IAAI,CACf,GAAG,SAAS,CAAC,iBAAiB,OAAO,SAAS,CAAC,aAAa,8CAA8C;gBACxG,sEAAsE;gBACtE,+GAA+G;gBAC/G,6DAA6D,CAChE,CAAC;YACF,QAAQ,CAAC,IAAI,CAAC;gBACZ,MAAM,EAAE,2BAA2B;gBACnC,QAAQ,EAAE,SAAS,CAAC,iBAAiB;gBACrC,SAAS,EAAE,CAAC;gBACZ,MAAM,EAAE,GAAG,SAAS,CAAC,aAAa,8BAA8B,SAAS,CAAC,iBAAiB,yGAAyG;aACrM,CAAC,CAAC;QACL,CAAC;QAED,IAAI,iBAAiB,IAAI,GAAG,EAAE,CAAC;YAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,GAAG,GAAG,CAAC,CAAC;YACpD,YAAY,CAAC,IAAI,CACf,GAAG,OAAO,QAAQ,SAAS,CAAC,aAAa,gEAAgE;gBACvG,qJAAqJ;gBACrJ,mKAAmK,CACtK,CAAC;YACF,QAAQ,CAAC,IAAI,CAAC;gBACZ,MAAM,EAAE,uBAAuB;gBAC/B,QAAQ,EAAE,MAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAC9C,SAAS,EAAE,GAAG;gBACd,MAAM,EAAE,oBAAoB,OAAO,4BAA4B,SAAS,CAAC,aAAa,gKAAgK;aACvP,CAAC,CAAC;QACL,CAAC;QAED,IAAI,SAAS,CAAC,aAAa,CAAC,MAAM,IAAI,mBAAmB,EAAE,CAAC;YAC1D,MAAM,SAAS,GACb,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,GAAG,WAAW,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACzF,MAAM,UAAU,GACd,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC9C,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC;oBACjC,CAAC,CAAC,QAAQ,SAAS,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,QAAQ;oBACpD,CAAC,CAAC,EAAE,CAAC,CAAC;YACV,YAAY,CAAC,IAAI,CACf,GAAG,SAAS,CAAC,aAAa,gBAAgB,SAAS,CAAC,aAAa,CAAC,MAAM,OAAO,WAAW,aAAa,SAAS,eAAe,UAAU,KAAK;gBAC5I,+GAA+G;gBAC/G,6GAA6G;gBAC7G,gEAAgE,CACnE,CAAC;YACF,QAAQ,CAAC,IAAI,CAAC;gBACZ,MAAM,EAAE,oBAAoB;gBAC5B,QAAQ,EAAE,SAAS,CAAC,aAAa,CAAC,MAAM;gBACxC,SAAS,EAAE,mBAAmB;gBAC9B,MAAM,EAAE,GAAG,SAAS,CAAC,aAAa,oBAAoB,SAAS,CAAC,aAAa,CAAC,MAAM,OAAO,WAAW,aAAa,SAAS,OAAO,UAAU,oFAAoF;aAClO,CAAC,CAAC;QACL,CAAC;QAED,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,YAAY,CAAC,IAAI,CACf,GAAG,SAAS,CAAC,aAAa,aAAa,SAAS,CAAC,WAAW,QAAQ,SAAS,CAAC,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,oBAAoB;gBAC5H,oEAAoE;gBACpE,0HAA0H;gBAC1H,wFAAwF,CAC3F,CAAC;YACF,QAAQ,CAAC,IAAI,CAAC;gBACZ,MAAM,EAAE,yBAAyB;gBACjC,QAAQ,EAAE,SAAS,CAAC,aAAa,CAAC,MAAM;gBACxC,SAAS,EAAE,KAAK;gBAChB,MAAM,EAAE,kHAAkH,SAAS,CAAC,aAAa,GAAG;aACrJ,CAAC,CAAC;QACL,CAAC;QAED,uGAAuG;QACvG,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CACpB,EAAE,EACF,MAAM,CACJ,CACE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,WAAW,CAAC;YAClC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,iBAAiB,GAAG,GAAG,CAAC;YAC9C,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,IAAI,mBAAmB;gBACpD,CAAC,CAAC,CAAC;gBACH,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,mBAAmB,GAAG,CAAC,CAAC;oBACtE,CAAC,CAAC,CAAC;oBACH,CAAC,CAAC,CAAC,CAAC;YACR,CAAC,iBAAiB,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAClE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,GAAG,EAAE,CAAC,CAC9B,CAAC,qDAAqD;aACpD,OAAO,CAAC,CAAC,CAAC,CACd,CACF,CAAC;QAEF,MAAM,MAAM,GAAkB;YAC5B,aAAa,EAAE,SAAS,CAAC,aAAa;YACtC,WAAW,EAAE,SAAS,CAAC,WAAW;YAClC,WAAW,EAAE,SAAS,CAAC,WAAW;YAClC,iBAAiB,EAAE,SAAS,CAAC,iBAAiB;YAC9C,mBAAmB,EAAE,SAAS,CAAC,mBAAmB;YAClD,KAAK;YACL,SAAS,EAAE,YAAY,CAAC,KAAK,EAAE,SAAS,CAAC,mBAAmB,CAAC;YAC7D,UAAU,EAAE,aAAa,CACvB,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,yBAAyB,CAAC,CAAC,MAAM,CAC5E;YACD,QAAQ;YACR,YAAY;SACb,CAAC;QACF,IAAI,SAAS,CAAC,MAAM;YAAE,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;QACvD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;SACD,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACpB,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;YAC/B,OAAO,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAClC,CAAC;QAED,OAAO,KAAK,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEL,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,OAA4B,EAC5B,WAAmB,EACnB,cAAc,GAAG,CAAC;IAElB,MAAM,MAAM,GAAG,gBAAgB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IACtD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,mBAAmB,GAAG,kCAAkC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IACpF,MAAM,UAAU,GAAG,IAAI,GAAG,EAA2C,CAAC;IAEtE,KAAK,MAAM,WAAW,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QAC9C,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI;YAC5D,aAAa,EAAE,WAAW,CAAC,aAAa;YACxC,cAAc,EAAE,CAAC;YACjB,YAAY,EAAE,CAAC;YACf,WAAW,EAAE,CAAC;YACd,iBAAiB,EAAE,CAAC;YACpB,UAAU,EAAE,CAAC;YACb,WAAW,EAAE,CAAC;YACd,iBAAiB,EAAE,CAAC;SACrB,CAAC;QAEF,QAAQ,CAAC,cAAc,IAAI,WAAW,CAAC,cAAc,CAAC;QACtD,QAAQ,CAAC,YAAY,IAAI,WAAW,CAAC,YAAY,CAAC;QAClD,QAAQ,CAAC,WAAW,IAAI,CAAC,CAAC;QAC1B,IAAI,WAAW,CAAC,KAAK,KAAK,OAAO,EAAE,CAAC;YAClC,QAAQ,CAAC,UAAU,IAAI,CAAC,CAAC;QAC3B,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,WAAW,IAAI,CAAC,CAAC;YAC1B,IAAI,WAAW,CAAC,cAAc,EAAE,CAAC;gBAC/B,QAAQ,CAAC,iBAAiB,IAAI,CAAC,CAAC;YAClC,CAAC;QACH,CAAC;QAED,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;SAClD,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;SACjE,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC;SACxB,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QACnB,GAAG,SAAS;QACZ,iBAAiB,EACf,mBAAmB,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,cAAc,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC;KAC/E,CAAC,CAAC,CAAC;IAEN,MAAM,iBAAiB,GAAG,aAAa,CAAC,CAAC,CAAC,EAAE,iBAAiB,IAAI,CAAC,CAAC;IACnE,MAAM,aAAa,GAAG,aAAa;SAChC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;SACX,MAAM,CAAC,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,GAAG,GAAG,SAAS,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;IAEpE,IAAI,cAAsB,CAAC;IAC3B,IAAI,iBAAiB,IAAI,GAAG,EAAE,CAAC;QAC7B,cAAc;YACZ,uGAAuG,CAAC;IAC5G,CAAC;SAAM,IAAI,aAAa,IAAI,GAAG,EAAE,CAAC;QAChC,cAAc;YACZ,4GAA4G,CAAC;IACjH,CAAC;SAAM,CAAC;QACN,cAAc;YACZ,yHAAyH,CAAC;IAC9H,CAAC;IAED,OAAO;QACL,WAAW,EAAE,MAAM,CAAC,KAAK;QACzB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,mBAAmB;QACnB,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,gBAAgB,EAAE,MAAM,CAAC,YAAY,CAAC,MAAM;QAC5C,qBAAqB,EAAE,MAAM,CAAC,qBAAqB;QACnD,aAAa;QACb,aAAa,EAAE;YACb,iBAAiB;YACjB,aAAa;SACd;QACD,cAAc;KACf,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,OAA4B,EAC5B,WAAmB,EACnB,KAAK,GAAG,EAAE;IAEV,MAAM,MAAM,GAAG,gBAAgB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IACtD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,YAAY,GAAG,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAC7D,MAAM,cAAc,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACjD,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;IACxD,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;IAE3D,8EAA8E;IAC9E,wDAAwD;IACxD,EAAE;IACF,6EAA6E;IAC7E,0EAA0E;IAC1E,2EAA2E;IAC3E,oEAAoE;IACpE,EAAE;IACF,4EAA4E;IAC5E,2EAA2E;IAC3E,6EAA6E;IAC7E,4EAA4E;IAC5E,qEAAqE;IACrE,6CAA6C;IAC7C,8EAA8E;IAC9E,MAAM,eAAe,GAAG,IAAI,GAAG,EAAkB,CAAC;IAClD,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC;SAChD,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,cAAc,CAAC,GAAG,CAAC,EAAE,CAAE,EAAE,CAAC,CAAC;SACjD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;IAE3D,KAAK,MAAM,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,cAAc,EAAE,CAAC;QACvC,eAAe,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,cAAc,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC;IAC7D,CAAC;IAED,kFAAkF;IAClF,MAAM,eAAe,GAAG,IAAI,GAAG,EAAyB,CAAC;IACzD,4EAA4E;IAC5E,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAoB,CAAC;IAEtD,KAAK,MAAM,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,cAAc,EAAE,CAAC;QACvC,IAAI,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YACzB,SAAS,CAAC,kCAAkC;QAC9C,CAAC;QAED,IAAI,YAAY,GAAkB,IAAI,CAAC;QACvC,IAAI,kBAAkB,GAAG,QAAQ,CAAC;QAElC,KAAK,MAAM,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,UAAU,EAAE,IAAI,cAAc,EAAE,CAAC;YAChE,IAAI,WAAW,KAAK,EAAE,EAAE,CAAC;gBACvB,SAAS;YACX,CAAC;YAED,IAAI,UAAU,CAAC,cAAc,IAAI,CAAC,CAAC,cAAc,EAAE,CAAC;gBAClD,SAAS,CAAC,yCAAyC;YACrD,CAAC;YAED,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACrD,IAAI,MAAM,IAAI,CAAC,CAAC,cAAc,GAAG,GAAG,CAAC,8BAA8B,EAAE,CAAC;gBACpE,IAAI,UAAU,CAAC,cAAc,GAAG,kBAAkB,EAAE,CAAC;oBACnD,kBAAkB,GAAG,UAAU,CAAC,cAAc,CAAC;oBAC/C,YAAY,GAAG,WAAW,CAAC;gBAC7B,CAAC;YACH,CAAC;QACH,CAAC;QAED,eAAe,CAAC,GAAG,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;QAEtC,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;YAC1B,eAAe,CAAC,GAAG,CACjB,YAAY,EACZ,CAAC,eAAe,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,cAAc,CAC5D,CAAC;YACF,MAAM,QAAQ,GAAG,iBAAiB,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;YAC3D,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAClB,iBAAiB,CAAC,GAAG,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAED,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC;SAC/C,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;QAClB,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACvC,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;YACjB,yEAAyE;YACzE,OAAO,IAAI,CAAC,aAAa,IAAI,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACjF,CAAC;QAED,uEAAuE;QACvE,MAAM,cAAc,GAAG,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACpD,OAAO,cAAc,IAAI,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACzE,CAAC,CAAC;SACD,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACpB,MAAM,eAAe,GAAG,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACjD,MAAM,gBAAgB,GAAG,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnD,OAAO,CAAC,gBAAgB,EAAE,cAAc,IAAI,CAAC,CAAC,GAAG,CAAC,eAAe,EAAE,cAAc,IAAI,CAAC,CAAC,CAAC;IAC1F,CAAC,CAAC,CAAC;IAEL,MAAM,KAAK,GAA4B,EAAE,CAAC;IAE1C,MAAM,KAAK,GAAG,CACZ,OAAe,EACf,SAAmB,EACnB,aAAuB,EACvB,mBAA2B,EACrB,EAAE;QACR,MAAM,WAAW,GAAG,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAChD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACvC,MAAM,aAAa,GAAG,IAAI,EAAE,aAAa,IAAI,UAAU,OAAO,GAAG,CAAC;QAElE,MAAM,aAAa,GAAG,CAAC,GAAG,SAAS,EAAE,OAAO,CAAC,CAAC;QAC9C,MAAM,iBAAiB,GAAG,CAAC,GAAG,aAAa,EAAE,aAAa,CAAC,CAAC;QAC5D,MAAM,uBAAuB,GAAG,mBAAmB,GAAG,WAAW,CAAC,cAAc,CAAC;QAEjF,mFAAmF;QACnF,MAAM,gBAAgB,GAAG,IAAI;YAC3B,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACvE,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,cAAc,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAC/E,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,CAC9B,CAAC;QACF,MAAM,gBAAgB,GAAG,CAAC,GAAG,gBAAgB,EAAE,GAAG,cAAc,CAAC,CAAC;QAElE,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClC,KAAK,CAAC,IAAI,CAAC;gBACT,WAAW,EAAE,MAAM,CAAC,KAAK;gBACzB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,SAAS,EAAE,aAAa;gBACxB,aAAa,EAAE,iBAAiB;gBAChC,KAAK,EAAE,iBAAiB,CAAC,MAAM;gBAC/B,mBAAmB,EAAE,uBAAuB;gBAC5C,kBAAkB,EAAE,WAAW,CAAC,cAAc;gBAC9C,eAAe,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;aAC1E,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,KAAK,MAAM,OAAO,IAAI,gBAAgB,EAAE,CAAC;YACvC,KAAK,CAAC,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,uBAAuB,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC,CAAC;IAEF,KAAK,MAAM,OAAO,IAAI,aAAa,EAAE,CAAC;QACpC,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAC5B,CAAC;IAED,OAAO,KAAK;SACT,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACpB,IAAI,KAAK,CAAC,mBAAmB,KAAK,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3D,OAAO,KAAK,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC;QAC9D,CAAC;QAED,OAAO,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IAClC,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,OAA4B,EAAE,KAAK,GAAG,EAAE;IACzE,MAAM,MAAM,GAAkB,EAAE,CAAC;IACjC,MAAM,qBAAqB,GACzB,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAExF,KAAK,MAAM,KAAK,IAAI,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC;QAC7E,IAAI,KAAK,CAAC,SAAS,KAAK,KAAK,EAAE,CAAC;YAC9B,SAAS;QACX,CAAC;QAED,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,gBAAgB;YACtB,QAAQ,EAAE,KAAK,CAAC,SAAS;YACzB,KAAK,EAAE,GAAG,KAAK,CAAC,aAAa,uBAAuB;YACpD,OAAO,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,aAAa,oCAAoC;YAC5F,aAAa,EAAE,KAAK,CAAC,aAAa;YAClC,QAAQ,EAAE,KAAK,CAAC,QAAQ;SACzB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,MAAM,MAAM,IAAI,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QACpF,IAAI,qBAAqB,GAAG,CAAC,IAAI,MAAM,CAAC,QAAQ,IAAI,qBAAqB,GAAG,GAAG,EAAE,CAAC;YAChF,MAAM,QAAQ,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,iBAAiB,IAAI,CAAC,CAAC;YACjE,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,cAAc;gBACpB,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,qBAAqB,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ;gBAC1E,KAAK,EAAE,UAAU,MAAM,CAAC,WAAW,oBAAoB;gBACvD,OAAO,EAAE,UAAU,MAAM,CAAC,WAAW,SAAS,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,4CAA4C,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,QAAQ,IAAI,GAAG,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,gDAAgD,EAAE;gBACvQ,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,QAAQ,EAAE;oBACR;wBACE,MAAM,EAAE,uBAAuB;wBAC/B,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;wBAC5C,SAAS,EAAE,MAAM,CAAC,CAAC,qBAAqB,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;wBAC3D,MAAM,EAAE,UAAU,MAAM,CAAC,WAAW,4CAA4C,MAAM,CAAC,CAAC,MAAM,CAAC,QAAQ,GAAG,qBAAqB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI;qBACjJ;iBACF;aACF,CAAC,CAAC;QACL,CAAC;QAED,MAAM,aAAa,GAAG,sBAAsB,CAAC,OAAO,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAC/E,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAC1B,CAAC;QAEF,IAAI,aAAa,EAAE,CAAC;YAClB,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,kBAAkB;gBACxB,QAAQ,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ;gBAC3D,KAAK,EAAE,UAAU,MAAM,CAAC,WAAW,+BAA+B;gBAClE,OAAO,EAAE,4BAA4B,aAAa,CAAC,KAAK,kBAAkB,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,6FAA6F;gBAC/M,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,QAAQ,EAAE;oBACR;wBACE,MAAM,EAAE,yBAAyB;wBACjC,QAAQ,EAAE,aAAa,CAAC,KAAK;wBAC7B,SAAS,EAAE,CAAC;wBACZ,MAAM,EAAE,iBAAiB,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,aAAa,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,gCAAgC;qBAC9J;iBACF;aACF,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,MAAM;SACV,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACpB,MAAM,aAAa,GAAG,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvF,IAAI,aAAa,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,aAAa,CAAC;QACvB,CAAC;QAED,OAAO,CACL,CAAC,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC,gBAAgB,CAAC;YAC7C,CAAC,KAAK,CAAC,WAAW,IAAI,MAAM,CAAC,gBAAgB,CAAC,CAC/C,CAAC;IACJ,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACrB,CAAC;AAED,SAAS,eAAe,CACtB,aAAqB,EACrB,aAAoE,EACpE,gBAAuE;IAEvE,MAAM,uBAAuB,GAAG,aAAa,EAAE,mBAAmB,IAAI,CAAC,CAAC;IACxE,MAAM,0BAA0B,GAAG,gBAAgB,EAAE,mBAAmB,IAAI,CAAC,CAAC;IAC9E,MAAM,yBAAyB,GAC7B,aAAa,IAAI,IAAI,IAAI,aAAa,CAAC,WAAW,GAAG,CAAC;QACpD,CAAC,CAAC,aAAa,CAAC,mBAAmB,GAAG,aAAa,CAAC,WAAW;QAC/D,CAAC,CAAC,CAAC,CAAC;IACR,MAAM,4BAA4B,GAChC,gBAAgB,IAAI,IAAI,IAAI,gBAAgB,CAAC,WAAW,GAAG,CAAC;QAC1D,CAAC,CAAC,gBAAgB,CAAC,mBAAmB,GAAG,gBAAgB,CAAC,WAAW;QACrE,CAAC,CAAC,CAAC,CAAC;IACR,MAAM,wBAAwB,GAAG,0BAA0B,GAAG,uBAAuB,CAAC;IAEtF,IAAI,UAAyC,CAAC;IAC9C,IAAI,CAAC,aAAa,IAAI,gBAAgB,EAAE,CAAC;QACvC,UAAU,GAAG,OAAO,CAAC;IACvB,CAAC;SAAM,IAAI,aAAa,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC9C,UAAU,GAAG,SAAS,CAAC;IACzB,CAAC;SAAM,IAAI,wBAAwB,IAAI,CAAC,EAAE,CAAC;QACzC,UAAU,GAAG,YAAY,CAAC;IAC5B,CAAC;SAAM,CAAC;QACN,UAAU,GAAG,aAAa,CAAC;IAC7B,CAAC;IAED,OAAO;QACL,aAAa;QACb,UAAU;QACV,uBAAuB;QACvB,0BAA0B;QAC1B,wBAAwB;QACxB,0BAA0B,EAAE,4BAA4B,GAAG,yBAAyB;QACpF,sBAAsB,EACpB,CAAC,gBAAgB,EAAE,iBAAiB,IAAI,CAAC,CAAC,GAAG,CAAC,aAAa,EAAE,iBAAiB,IAAI,CAAC,CAAC;QACtF,gBAAgB,EAAE,CAAC,gBAAgB,EAAE,WAAW,IAAI,CAAC,CAAC,GAAG,CAAC,aAAa,EAAE,WAAW,IAAI,CAAC,CAAC;QAC1F,gBAAgB,EACd,CAAC,gBAAgB,EAAE,aAAa,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,aAAa,EAAE,aAAa,CAAC,MAAM,IAAI,CAAC,CAAC;QAC5F,aAAa,EACX,uBAAuB,GAAG,CAAC;YACzB,CAAC,CAAC,CAAC,wBAAwB,GAAG,uBAAuB,CAAC,GAAG,GAAG;YAC5D,CAAC,CAAC,0BAA0B,GAAG,CAAC;gBAC9B,CAAC,CAAC,GAAG;gBACL,CAAC,CAAC,IAAI;KACb,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,WAAgC,EAChC,cAAmC,EACnC,KAAK,GAAG,EAAE,EACV,QAAQ,GAAG,CAAC;IAEZ,MAAM,cAAc,GAAG,IAAI,GAAG,CAC5B,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC,CAChF,CAAC;IACF,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAC/B,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC,CACnF,CAAC;IACF,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,cAAc,CAAC,IAAI,EAAE,EAAE,GAAG,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAE3F,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC;SAC1C,GAAG,CAAC,CAAC,aAAa,EAAE,EAAE,CACrB,eAAe,CACb,aAAa,EACb,cAAc,CAAC,GAAG,CAAC,aAAa,CAAC,EACjC,iBAAiB,CAAC,GAAG,CAAC,aAAa,CAAC,CACrC,CACF;SACA,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;QAChB,IAAI,KAAK,CAAC,UAAU,KAAK,OAAO,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACnE,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,CACL,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,wBAAwB,CAAC,GAAG,CAAC;YAC5C,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,wBAAwB,CAAC,IAAI,QAAQ,CACrD,CAAC;IACJ,CAAC,CAAC;SACD,IAAI,CACH,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CACd,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,wBAAwB,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC,CACrF;SACA,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAEnB,OAAO;QACL,aAAa,EAAE,WAAW,CAAC,EAAE;QAC7B,gBAAgB,EAAE,cAAc,CAAC,EAAE;QACnC,WAAW,EAAE,OAAO,CAAC,MAAM,CACzB,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,KAAK,YAAY,IAAI,KAAK,CAAC,wBAAwB,GAAG,CAAC,CACnF;QACD,YAAY,EAAE,OAAO,CAAC,MAAM,CAC1B,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,KAAK,aAAa,IAAI,KAAK,CAAC,wBAAwB,GAAG,CAAC,CACpF;QACD,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,KAAK,OAAO,CAAC;QAC9D,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC;KACnE,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"analysis.js","sourceRoot":"","sources":["../../src/parser/analysis.ts"],"names":[],"mappings":"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"}
@@ -149,7 +149,6 @@ export interface RerenderCause {
149
149
  scoreBand: RerenderScoreBand;
150
150
  confidence: RerenderConfidence;
151
151
  evidence: RerenderEvidence[];
152
- likelyCauses: string[];
153
152
  source?: ComponentSource;
154
153
  }
155
154
  export type RenderIssueType = 'rerender-storm' | 'commit-spike' | 'cascading-render';
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/parser/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/parser/types.ts"],"names":[],"mappings":"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"}
package/dist/store.d.ts CHANGED
@@ -1,6 +1,11 @@
1
1
  import type { ParsedRenderProfile } from './parser/types.js';
2
2
  export declare function storeRenderProfile(profile: ParsedRenderProfile): void;
3
+ /** Test-only teardown hook — clears all stored profiles so test order can't leak state. */
4
+ export declare function clearRenderProfiles(): void;
3
5
  export declare function getRenderProfile(id: string): ParsedRenderProfile | undefined;
6
+ /** Looks up a profile or throws a consistent, actionable error. `label` customizes
7
+ * the error for call sites juggling more than one profile id (e.g. compare_renders). */
8
+ export declare function requireRenderProfile(id: string, label?: string): ParsedRenderProfile;
4
9
  export declare function listRenderProfiles(): Array<{
5
10
  id: string;
6
11
  filename: string;
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAI7D,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI,CAErE;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS,CAE5E;AAED,wBAAgB,kBAAkB,IAAI,KAAK,CAAC;IAC1C,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;CAC7B,CAAC,CAQD"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAI7D,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI,CAErE;AAED,2FAA2F;AAC3F,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS,CAE5E;AAED;yFACyF;AACzF,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,SAAY,GAAG,mBAAmB,CAQvF;AAED,wBAAgB,kBAAkB,IAAI,KAAK,CAAC;IAC1C,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;CAC7B,CAAC,CAQD"}
package/dist/store.js CHANGED
@@ -2,9 +2,22 @@ const profiles = new Map();
2
2
  export function storeRenderProfile(profile) {
3
3
  profiles.set(profile.id, profile);
4
4
  }
5
+ /** Test-only teardown hook — clears all stored profiles so test order can't leak state. */
6
+ export function clearRenderProfiles() {
7
+ profiles.clear();
8
+ }
5
9
  export function getRenderProfile(id) {
6
10
  return profiles.get(id);
7
11
  }
12
+ /** Looks up a profile or throws a consistent, actionable error. `label` customizes
13
+ * the error for call sites juggling more than one profile id (e.g. compare_renders). */
14
+ export function requireRenderProfile(id, label = 'Profile') {
15
+ const profile = profiles.get(id);
16
+ if (!profile) {
17
+ throw new Error(`${label} "${id}" not found. Call get_render_summary without a profileId to list all loaded profiles.`);
18
+ }
19
+ return profile;
20
+ }
8
21
  export function listRenderProfiles() {
9
22
  return Array.from(profiles.values()).map((profile) => ({
10
23
  id: profile.id,
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,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
+ {"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,2FAA2F;AAC3F,MAAM,UAAU,mBAAmB;IACjC,QAAQ,CAAC,KAAK,EAAE,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,EAAU;IACzC,OAAO,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC1B,CAAC;AAED;yFACyF;AACzF,MAAM,UAAU,oBAAoB,CAAC,EAAU,EAAE,KAAK,GAAG,SAAS;IAChE,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACjC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,GAAG,KAAK,KAAK,EAAE,uFAAuF,CACvG,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,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,CA6EnE"}
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,CA2FnE"}
@@ -39,6 +39,20 @@ export function registerBeginRenderAnalysis(server) {
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
+ ' Note: instrumentation-client.js requires Next.js 15.3+; on older versions, wire the import',
43
+ ' directly into the client entry file instead.',
44
+ ].join('\n'),
45
+ preconditions: [
46
+ "A plain `next build`/`next start` will NOT work — it compiles out React's profiling hooks " +
47
+ 'entirely, silently yielding commitCount: 0. Choose one of:',
48
+ ' `next dev` — real component names, but dev-mode overhead means render timings and ' +
49
+ 'proportions may not match what real users experience in production.',
50
+ ' `next build --profile` then `next start` — production-accurate timings, but component ' +
51
+ 'names get minified to 1-2 letters (e.g. "V") by production minification; ' +
52
+ 'get_render_summary will flag this when it happens.',
53
+ 'instrument() must run before React initializes — a static top-level import (as shown in `snippet`) ' +
54
+ 'works; mounting it as a React component (e.g. inside a layout, or in a useEffect) runs too late ' +
55
+ 'and will also silently yield commitCount: 0.',
42
56
  ].join('\n'),
43
57
  nextStep: `run_render_capture({ sessionId: "${session.sessionId}", method: <ask the user> })`,
44
58
  };
@@ -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,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
+ {"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;oBAC7F,+FAA+F;oBAC/F,iDAAiD;iBAClD,CAAC,IAAI,CAAC,IAAI,CAAC;gBACZ,aAAa,EAAE;oBACb,4FAA4F;wBAC1F,4DAA4D;oBAC9D,sFAAsF;wBACpF,qEAAqE;oBACvE,0FAA0F;wBACxF,2EAA2E;wBAC3E,oDAAoD;oBACtD,qGAAqG;wBACnG,kGAAkG;wBAClG,8CAA8C;iBACjD,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;AA4BpE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA2D9D"}
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,CAqD9D"}
@@ -1,7 +1,7 @@
1
1
  import { z } from 'zod';
2
2
  import { formatMs } from '../format.js';
3
3
  import { compareRenders } from '../parser/analysis.js';
4
- import { getRenderProfile } from '../store.js';
4
+ import { requireRenderProfile } from '../store.js';
5
5
  function formatDiffEntry(entry) {
6
6
  return {
7
7
  ...entry,
@@ -34,14 +34,8 @@ export function registerCompareRenders(server) {
34
34
  .describe('Minimum absolute total render delta in ms for changed components. Defaults to 0.'),
35
35
  },
36
36
  }, async ({ baseProfileId, currentProfileId, limit, minDeltaMs }) => {
37
- const baseProfile = getRenderProfile(baseProfileId);
38
- if (!baseProfile) {
39
- throw new Error(`Base profile "${baseProfileId}" not found.`);
40
- }
41
- const currentProfile = getRenderProfile(currentProfileId);
42
- if (!currentProfile) {
43
- throw new Error(`Current profile "${currentProfileId}" not found.`);
44
- }
37
+ const baseProfile = requireRenderProfile(baseProfileId, 'Base profile');
38
+ const currentProfile = requireRenderProfile(currentProfileId, 'Current profile');
45
39
  const comparison = compareRenders(baseProfile, currentProfile, limit ?? 10, minDeltaMs ?? 0);
46
40
  return {
47
41
  content: [
@@ -53,6 +47,7 @@ export function registerCompareRenders(server) {
53
47
  improvements: comparison.improvements.map(formatDiffEntry),
54
48
  added: comparison.added.map(formatDiffEntry),
55
49
  removed: comparison.removed.map(formatDiffEntry),
50
+ nextStep: `call get_rerender_causes with profileId "${currentProfileId}" to see why the regressed components are rerendering`,
56
51
  }, null, 2),
57
52
  },
58
53
  ],
@@ -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,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
+ {"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,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnD,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,oBAAoB,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;QACxE,MAAM,cAAc,GAAG,oBAAoB,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,CAAC;QAEjF,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;wBAChD,QAAQ,EAAE,4CAA4C,gBAAgB,uDAAuD;qBAC9H,EACD,IAAI,EACJ,CAAC,CACF;iBACF;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -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,CA2E7D"}
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,CA+E7D"}
@@ -1,7 +1,7 @@
1
1
  import { z } from 'zod';
2
2
  import { formatMs, formatPct } from '../format.js';
3
3
  import { getHotCommits } from '../parser/analysis.js';
4
- import { getRenderProfile } from '../store.js';
4
+ import { requireRenderProfile } from '../store.js';
5
5
  export function registerGetHotCommits(server) {
6
6
  server.registerTool('get_hot_commits', {
7
7
  title: 'Get Hot Commits',
@@ -28,21 +28,24 @@ export function registerGetHotCommits(server) {
28
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.'),
29
29
  },
30
30
  }, async ({ profileId, limit, componentLimit, priorityLevel }) => {
31
- const profile = getRenderProfile(profileId);
32
- if (!profile) {
33
- throw new Error(`Profile "${profileId}" not found. Call get_render_summary without a profileId to list all loaded profiles.`);
34
- }
35
- const hotCommits = getHotCommits(profile, limit ?? 10, componentLimit ?? 3, priorityLevel).map((commit) => ({
36
- ...commit,
37
- duration: formatMs(commit.duration),
38
- totalActualDuration: formatMs(commit.totalActualDuration),
39
- topComponents: commit.topComponents.map((component) => ({
40
- ...component,
41
- actualDuration: formatMs(component.actualDuration),
42
- selfDuration: formatMs(component.selfDuration),
43
- shareOfCommitWork: formatPct(component.shareOfCommitWork),
44
- })),
45
- }));
31
+ const profile = requireRenderProfile(profileId);
32
+ const hotCommits = getHotCommits(profile, limit ?? 10, componentLimit ?? 3, priorityLevel).map((commit) => {
33
+ // Omit when empty react-scan/lite live capture never populates this field;
34
+ // only the React DevTools manual-export path can report real updater names.
35
+ const { updaterComponentNames, ...rest } = commit;
36
+ return {
37
+ ...rest,
38
+ duration: formatMs(commit.duration),
39
+ totalActualDuration: formatMs(commit.totalActualDuration),
40
+ topComponents: commit.topComponents.map((component) => ({
41
+ ...component,
42
+ actualDuration: formatMs(component.actualDuration),
43
+ selfDuration: formatMs(component.selfDuration),
44
+ shareOfCommitWork: formatPct(component.shareOfCommitWork),
45
+ })),
46
+ ...(updaterComponentNames.length > 0 ? { updaterComponentNames } : {}),
47
+ };
48
+ });
46
49
  return {
47
50
  content: [
48
51
  {
@@ -50,7 +53,9 @@ export function registerGetHotCommits(server) {
50
53
  text: JSON.stringify({
51
54
  profileId,
52
55
  timestampNote: 'timestamp values are milliseconds since the profiling session started, not Unix epoch',
56
+ measurementCountNote: 'measurementCount is the total fiber renders in this commit (all components, before ranking) — not the count of topComponents below',
53
57
  hotCommits,
58
+ nextStep: `call get_slow_components with profileId "${profileId}" to rank components across the whole session, not just this commit`,
54
59
  }, null, 2),
55
60
  },
56
61
  ],
@@ -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,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
+ {"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,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnD,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,oBAAoB,CAAC,SAAS,CAAC,CAAC;QAEhD,MAAM,UAAU,GAAG,aAAa,CAC9B,OAAO,EACP,KAAK,IAAI,EAAE,EACX,cAAc,IAAI,CAAC,EACnB,aAAa,CACd,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YACf,6EAA6E;YAC7E,4EAA4E;YAC5E,MAAM,EAAE,qBAAqB,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC;YAClD,OAAO;gBACL,GAAG,IAAI;gBACP,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC;gBACnC,mBAAmB,EAAE,QAAQ,CAAC,MAAM,CAAC,mBAAmB,CAAC;gBACzD,aAAa,EAAE,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;oBACtD,GAAG,SAAS;oBACZ,cAAc,EAAE,QAAQ,CAAC,SAAS,CAAC,cAAc,CAAC;oBAClD,YAAY,EAAE,QAAQ,CAAC,SAAS,CAAC,YAAY,CAAC;oBAC9C,iBAAiB,EAAE,SAAS,CAAC,SAAS,CAAC,iBAAiB,CAAC;iBAC1D,CAAC,CAAC;gBACH,GAAG,CAAC,qBAAqB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,qBAAqB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACvE,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB;wBACE,SAAS;wBACT,aAAa,EACX,uFAAuF;wBACzF,oBAAoB,EAClB,oIAAoI;wBACtI,UAAU;wBACV,QAAQ,EAAE,4CAA4C,SAAS,qEAAqE;qBACrI,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,CAsFhE"}
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,CAiFhE"}
@@ -1,7 +1,7 @@
1
1
  import { z } from 'zod';
2
2
  import { formatMs, formatPct } from '../format.js';
3
3
  import { getRenderSummary as summarizeRenderProfile } from '../parser/analysis.js';
4
- import { getRenderProfile, listRenderProfiles } from '../store.js';
4
+ import { listRenderProfiles, requireRenderProfile } from '../store.js';
5
5
  export function registerGetRenderSummary(server) {
6
6
  server.registerTool('get_render_summary', {
7
7
  title: 'Get Render Summary',
@@ -35,10 +35,7 @@ export function registerGetRenderSummary(server) {
35
35
  ],
36
36
  };
37
37
  }
38
- const profile = getRenderProfile(profileId);
39
- if (!profile) {
40
- throw new Error(`Profile "${profileId}" not found. Call get_render_summary without a profileId to list all loaded profiles.`);
41
- }
38
+ const profile = requireRenderProfile(profileId);
42
39
  const summary = summarizeRenderProfile(profile, limit ?? 10);
43
40
  return {
44
41
  content: [
@@ -65,6 +62,7 @@ export function registerGetRenderSummary(server) {
65
62
  shareOfCommitWork: formatPct(component.shareOfCommitWork),
66
63
  })),
67
64
  })),
65
+ nextStep: `call get_rerender_causes with profileId "${profileId}" for why the top components are rerendering, or compare_renders against a baseline profile`,
68
66
  }, null, 2),
69
67
  },
70
68
  ],
@@ -1 +1 @@
1
- {"version":3,"file":"get-render-summary.js","sourceRoot":"","sources":["../../src/tools/get-render-summary.ts"],"names":[],"mappings":"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"}
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,CAoEjE"}
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,CAmEjE"}
@@ -1,7 +1,7 @@
1
1
  import { z } from 'zod';
2
2
  import { formatMs } from '../format.js';
3
3
  import { getRerenderCauses } from '../parser/analysis.js';
4
- import { getRenderProfile } from '../store.js';
4
+ import { requireRenderProfile } from '../store.js';
5
5
  export function registerGetRerenderCauses(server) {
6
6
  server.registerTool('get_rerender_causes', {
7
7
  title: 'Get Rerender Causes',
@@ -22,10 +22,7 @@ export function registerGetRerenderCauses(server) {
22
22
  .describe('Minimum total actual duration in ms for a component to appear. Filters sub-millisecond noise. Defaults to 0.'),
23
23
  },
24
24
  }, async ({ profileId, limit, minDuration }) => {
25
- const profile = getRenderProfile(profileId);
26
- if (!profile) {
27
- throw new Error(`Profile "${profileId}" not found. Call get_render_summary without a profileId to list all loaded profiles.`);
28
- }
25
+ const profile = requireRenderProfile(profileId);
29
26
  const causes = getRerenderCauses(profile, limit ?? 10, minDuration ?? 0).map((cause) => ({
30
27
  ...cause,
31
28
  score: Number(cause.score.toFixed(1)),
@@ -48,6 +45,9 @@ export function registerGetRerenderCauses(server) {
48
45
  thresholds: { low: '0.0-2.9', medium: '3.0-5.9', high: '6.0-10.0' },
49
46
  },
50
47
  causes,
48
+ nextStep: causes[0]?.source != null
49
+ ? `open "${causes[0].source.fileName}" at line ${causes[0].source.lineNumber} to inspect the top-ranked cause`
50
+ : `call get_slow_components with profileId "${profileId}" for a duration-only ranking`,
51
51
  }, null, 2),
52
52
  },
53
53
  ],
@@ -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,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
+ {"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,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnD,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,oBAAoB,CAAC,SAAS,CAAC,CAAC;QAEhD,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;wBACN,QAAQ,EACN,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,IAAI;4BACvB,CAAC,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,aAAa,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,kCAAkC;4BAC9G,CAAC,CAAC,4CAA4C,SAAS,+BAA+B;qBAC3F,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,CA8DjE"}
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,CAiEjE"}
@@ -1,7 +1,7 @@
1
1
  import { z } from 'zod';
2
2
  import { formatMs } from '../format.js';
3
3
  import { getSlowComponents } from '../parser/analysis.js';
4
- import { getRenderProfile } from '../store.js';
4
+ import { requireRenderProfile } from '../store.js';
5
5
  export function registerGetSlowComponents(server) {
6
6
  server.registerTool('get_slow_components', {
7
7
  title: 'Get Slow Components',
@@ -26,10 +26,7 @@ export function registerGetSlowComponents(server) {
26
26
  .describe('Minimum total actual duration in ms to include. Filters sub-millisecond noise. Defaults to 0.'),
27
27
  },
28
28
  }, async ({ profileId, limit, sortBy, minDuration }) => {
29
- const profile = getRenderProfile(profileId);
30
- if (!profile) {
31
- throw new Error(`Profile "${profileId}" not found. Call get_render_summary without a profileId to list all loaded profiles.`);
32
- }
29
+ const profile = requireRenderProfile(profileId);
33
30
  const slowComponents = getSlowComponents(profile, limit ?? 10, sortBy ?? 'total', minDuration ?? 0).map((component, index) => ({
34
31
  rank: index + 1,
35
32
  ...component,
@@ -41,7 +38,11 @@ export function registerGetSlowComponents(server) {
41
38
  content: [
42
39
  {
43
40
  type: 'text',
44
- text: JSON.stringify({ profileId, slowComponents }, null, 2),
41
+ text: JSON.stringify({
42
+ profileId,
43
+ slowComponents,
44
+ nextStep: `call get_rerender_causes with profileId "${profileId}" to see why these components are rerendering`,
45
+ }, null, 2),
45
46
  },
46
47
  ],
47
48
  };
@@ -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,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
+ {"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,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnD,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,oBAAoB,CAAC,SAAS,CAAC,CAAC;QAEhD,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,CAClB;wBACE,SAAS;wBACT,cAAc;wBACd,QAAQ,EAAE,4CAA4C,SAAS,+CAA+C;qBAC/G,EACD,IAAI,EACJ,CAAC,CACF;iBACF;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,CA0CjE"}
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,CA2CjE"}
@@ -31,6 +31,7 @@ export function registerLoadRenderProfile(server) {
31
31
  commitCount: profile.commits.length,
32
32
  componentCount: profile.components.length,
33
33
  totalCommitDuration: formatMs(profile.totalCommitDuration),
34
+ nextStep: `call get_render_summary with profileId "${profile.id}"`,
34
35
  }, null, 2),
35
36
  },
36
37
  ],
@@ -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,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
+ {"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;wBAC1D,QAAQ,EAAE,2CAA2C,OAAO,CAAC,EAAE,GAAG;qBACnE,EACD,IAAI,EACJ,CAAC,CACF;iBACF;aACF;SACF,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,CAsFjE"}
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,CA0FjE"}
@@ -43,10 +43,14 @@ export function registerStopRenderCapture(server) {
43
43
  if (commitCount === 0) {
44
44
  const warning = session.profilingAvailable === false
45
45
  ? 'No commits captured. The app reported profiling-hooks-status: false — ' +
46
- 'this usually means the app is running a production build. ' +
47
- 'Switch to `next dev` or alias react-dom to react-dom/profiling.'
48
- : 'No commits captured. Make sure the instrumentation snippet was loaded ' +
49
- 'and you interacted with the app while the session was active.';
46
+ "this means the app is running a plain production build. React's profiling hooks are only " +
47
+ 'compiled in by `next dev`, or `next build --profile` followed by `next start` — a plain ' +
48
+ '`next build`/`next start` will not work.'
49
+ : 'No commits captured, even though profiling hooks were available. The most common cause is ' +
50
+ 'timing: instrument() must run before React initializes (a static top-level import in your ' +
51
+ 'client entry module), not inside a useEffect or a mounted component — by the time a component ' +
52
+ 'mounts, React has already decided whether to install its hooks. Also confirm you interacted ' +
53
+ 'with the app while the session was active.';
50
54
  return {
51
55
  content: [
52
56
  {
@@ -1 +1 @@
1
- {"version":3,"file":"stop-render-capture.js","sourceRoot":"","sources":["../../src/tools/stop-render-capture.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stop-render-capture.js","sourceRoot":"","sources":["../../src/tools/stop-render-capture.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@perfonext/render-mcp",
3
- "version": "0.3.3",
3
+ "version": "0.3.4",
4
4
  "description": "MCP server for analyzing Next.js React Profiler exports: render summaries, rerender causes, hot commits, and profile diffing",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",