tracemeld 0.1.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/cli.js +0 -0
- package/build/importers/gecko.d.ts +9 -1
- package/build/importers/gecko.js +116 -1
- package/build/importers/gecko.js.map +1 -1
- package/build/importers/import.d.ts +1 -1
- package/build/importers/import.js +4 -4
- package/build/importers/import.js.map +1 -1
- package/build/server.js +19 -4
- package/build/server.js.map +1 -1
- package/package.json +2 -2
package/build/cli.js
CHANGED
|
File without changes
|
|
@@ -1,2 +1,10 @@
|
|
|
1
1
|
import type { ImportedProfile } from './types.js';
|
|
2
|
-
|
|
2
|
+
/**
|
|
3
|
+
* Import a Gecko Profiler JSON file.
|
|
4
|
+
*
|
|
5
|
+
* @param content - The profile JSON content
|
|
6
|
+
* @param name - Profile name
|
|
7
|
+
* @param symsJson - Optional contents of a .syms.json sidecar file from samply --unstable-presymbolicate.
|
|
8
|
+
* When provided, hex addresses in the profile are resolved to function names.
|
|
9
|
+
*/
|
|
10
|
+
export declare function importGecko(content: string, name: string, symsJson?: string): ImportedProfile;
|
package/build/importers/gecko.js
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
import { FrameTable } from '../model/frame-table.js';
|
|
2
|
-
|
|
2
|
+
/**
|
|
3
|
+
* Import a Gecko Profiler JSON file.
|
|
4
|
+
*
|
|
5
|
+
* @param content - The profile JSON content
|
|
6
|
+
* @param name - Profile name
|
|
7
|
+
* @param symsJson - Optional contents of a .syms.json sidecar file from samply --unstable-presymbolicate.
|
|
8
|
+
* When provided, hex addresses in the profile are resolved to function names.
|
|
9
|
+
*/
|
|
10
|
+
export function importGecko(content, name, symsJson) {
|
|
3
11
|
const gecko = JSON.parse(content);
|
|
4
12
|
const frameTable = new FrameTable();
|
|
5
13
|
const lanes = [];
|
|
@@ -8,6 +16,14 @@ export function importGecko(content, name) {
|
|
|
8
16
|
color: c.color,
|
|
9
17
|
subcategories: c.subcategories,
|
|
10
18
|
}));
|
|
19
|
+
// Build symbol resolver from sidecar if available
|
|
20
|
+
const resolver = symsJson ? buildSymbolResolver(symsJson) : null;
|
|
21
|
+
// If we have a resolver, pre-symbolicate each thread's stringArray
|
|
22
|
+
if (resolver) {
|
|
23
|
+
for (const thread of gecko.threads) {
|
|
24
|
+
symbolicateThread(thread, gecko.libs, resolver);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
11
27
|
for (const thread of gecko.threads) {
|
|
12
28
|
if (thread.samples.length === 0)
|
|
13
29
|
continue;
|
|
@@ -74,4 +90,103 @@ function resolveStack(thread, frameTable, stackIdx) {
|
|
|
74
90
|
frameIndices.reverse();
|
|
75
91
|
return frameIndices;
|
|
76
92
|
}
|
|
93
|
+
// --- Sidecar symbolication ---
|
|
94
|
+
/**
|
|
95
|
+
* Build a symbol resolver from the .syms.json sidecar.
|
|
96
|
+
* Returns a map: normalized debug_id → (address → ResolvedSymbol)
|
|
97
|
+
*/
|
|
98
|
+
function buildSymbolResolver(symsJsonContent) {
|
|
99
|
+
const sidecar = JSON.parse(symsJsonContent);
|
|
100
|
+
const resolver = new Map();
|
|
101
|
+
for (const libData of sidecar.data) {
|
|
102
|
+
const addressMap = new Map();
|
|
103
|
+
for (const [address, symbolIdx] of libData.known_addresses) {
|
|
104
|
+
const sym = libData.symbol_table[symbolIdx];
|
|
105
|
+
if (!sym)
|
|
106
|
+
continue;
|
|
107
|
+
const name = sidecar.string_table[sym.symbol] ?? '<unknown>';
|
|
108
|
+
// Use the first inline frame if available (most specific)
|
|
109
|
+
let file;
|
|
110
|
+
let line;
|
|
111
|
+
if (sym.frames && sym.frames.length > 0) {
|
|
112
|
+
const topFrame = sym.frames[0];
|
|
113
|
+
file = topFrame.file != null ? sidecar.string_table[topFrame.file] : undefined;
|
|
114
|
+
line = topFrame.line;
|
|
115
|
+
}
|
|
116
|
+
addressMap.set(address, { name, file, line });
|
|
117
|
+
}
|
|
118
|
+
// Normalize debug_id: sidecar uses lowercase with dashes, profile breakpadId is uppercase no dashes with trailing 0
|
|
119
|
+
const normalizedId = libData.debug_id.toLowerCase().replace(/-/g, '');
|
|
120
|
+
resolver.set(normalizedId, addressMap);
|
|
121
|
+
}
|
|
122
|
+
return resolver;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Symbolicate a thread's stringArray in-place.
|
|
126
|
+
* Replaces hex address strings (e.g., "0x8d53") with resolved function names.
|
|
127
|
+
*/
|
|
128
|
+
function symbolicateThread(thread, libs, resolver) {
|
|
129
|
+
// For each func in funcTable, determine which lib it belongs to via resourceTable → lib
|
|
130
|
+
// Then look up the address in the resolver
|
|
131
|
+
// But the simpler approach: the stringArray contains hex addresses like "0x8d53"
|
|
132
|
+
// and the frameTable has an address field. The address in the sidecar's known_addresses
|
|
133
|
+
// matches the hex value in stringArray.
|
|
134
|
+
// We need to know which lib each frame belongs to. This comes from:
|
|
135
|
+
// funcTable.resource[funcIdx] → resourceTable.lib[resourceIdx] → libs[libIdx].breakpadId
|
|
136
|
+
for (let funcIdx = 0; funcIdx < thread.funcTable.length; funcIdx++) {
|
|
137
|
+
const nameIdx = thread.funcTable.name[funcIdx];
|
|
138
|
+
const currentName = thread.stringArray[nameIdx];
|
|
139
|
+
if (!currentName || !currentName.startsWith('0x'))
|
|
140
|
+
continue;
|
|
141
|
+
// Parse the hex address
|
|
142
|
+
const address = parseInt(currentName, 16);
|
|
143
|
+
if (isNaN(address))
|
|
144
|
+
continue;
|
|
145
|
+
// Determine which library this function belongs to
|
|
146
|
+
const libIdx = getLibForFunc(thread, funcIdx);
|
|
147
|
+
if (libIdx == null)
|
|
148
|
+
continue;
|
|
149
|
+
const lib = libs[libIdx];
|
|
150
|
+
if (!lib)
|
|
151
|
+
continue;
|
|
152
|
+
// Normalize the breakpadId to match the sidecar's debug_id format
|
|
153
|
+
const normalizedId = lib.breakpadId.toLowerCase().replace(/0$/, '');
|
|
154
|
+
const addressMap = resolver.get(normalizedId);
|
|
155
|
+
if (!addressMap)
|
|
156
|
+
continue;
|
|
157
|
+
const resolved = addressMap.get(address);
|
|
158
|
+
if (!resolved)
|
|
159
|
+
continue;
|
|
160
|
+
// Replace the hex address with the resolved name in stringArray
|
|
161
|
+
thread.stringArray[nameIdx] = resolved.name;
|
|
162
|
+
// Also set file/line if available and not already set
|
|
163
|
+
if (resolved.file && thread.funcTable.fileName) {
|
|
164
|
+
if (thread.funcTable.fileName[funcIdx] == null) {
|
|
165
|
+
// Add the file path to stringArray and reference it
|
|
166
|
+
const fileIdx = thread.stringArray.length;
|
|
167
|
+
thread.stringArray.push(resolved.file);
|
|
168
|
+
thread.funcTable.fileName[funcIdx] = fileIdx;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
if (resolved.line != null && thread.funcTable.lineNumber) {
|
|
172
|
+
if (thread.funcTable.lineNumber[funcIdx] == null) {
|
|
173
|
+
thread.funcTable.lineNumber[funcIdx] = resolved.line;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Determine which lib index a function belongs to via resourceTable.
|
|
180
|
+
*/
|
|
181
|
+
function getLibForFunc(thread, funcIdx) {
|
|
182
|
+
const resourceIdx = thread.funcTable.resource?.[funcIdx];
|
|
183
|
+
if (resourceIdx == null || resourceIdx < 0)
|
|
184
|
+
return null;
|
|
185
|
+
if (!thread.resourceTable)
|
|
186
|
+
return null;
|
|
187
|
+
const libIdx = thread.resourceTable.lib[resourceIdx];
|
|
188
|
+
if (libIdx == null || libIdx < 0)
|
|
189
|
+
return null;
|
|
190
|
+
return libIdx;
|
|
191
|
+
}
|
|
77
192
|
//# sourceMappingURL=gecko.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gecko.js","sourceRoot":"","sources":["../../src/importers/gecko.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"gecko.js","sourceRoot":"","sources":["../../src/importers/gecko.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AA0FrD;;;;;;;GAOG;AACH,MAAM,UAAU,WAAW,CAAC,OAAe,EAAE,IAAY,EAAE,QAAiB;IAC1E,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAiB,CAAC;IAClD,MAAM,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC;IACpC,MAAM,KAAK,GAAW,EAAE,CAAC;IACzB,MAAM,UAAU,GAAe,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACvE,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,aAAa,EAAE,CAAC,CAAC,aAAa;KAC/B,CAAC,CAAC,CAAC;IAEJ,kDAAkD;IAClD,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAEjE,mEAAmE;IACnE,IAAI,QAAQ,EAAE,CAAC;QACb,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YACnC,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAED,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QACnC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAC1C,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,IAAI,cAAc,GAAG,CAAC,CAAC;QAEvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/C,cAAc,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACpD,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACzC,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;YACzD,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC7C,OAAO,CAAC,IAAI,CAAC;gBACX,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,cAAc;gBAChD,KAAK;gBACL,MAAM,EAAE,CAAC,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;aACvC,CAAC,CAAC;QACL,CAAC;QAED,KAAK,CAAC,IAAI,CAAC;YACT,EAAE,EAAE,GAAG,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,GAAG,EAAE;YACjC,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,IAAI,EAAE,MAAM,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ;YACtD,OAAO;YACP,KAAK,EAAE,EAAE;YACT,OAAO,EAAE,EAAE;SACZ,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,MAAM,EAAE,OAAO;QACf,OAAO,EAAE;YACP,EAAE,EAAE,MAAM,CAAC,UAAU,EAAE;YACvB,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI;YAChC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS;YAChC,WAAW,EAAE,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,qBAAqB,EAAE,CAAC;YAC3F,UAAU;YACV,MAAM,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC;YAC9B,KAAK;YACL,QAAQ,EAAE,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE;SAClE;KACF,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,MAAmB,EAAE,UAAsB,EAAE,QAAuB;IACxF,MAAM,YAAY,GAAa,EAAE,CAAC;IAClC,IAAI,OAAO,GAAG,QAAQ,CAAC;IACvB,OAAO,OAAO,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAClD,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjD,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/C,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,YAAY,OAAO,GAAG,CAAC;QAEvE,MAAM,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC;QACzD,MAAM,IAAI,GAAG,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAE9F,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC;QACjE,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC;QAClE,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAEtD,YAAY,CAAC,IAAI,CACf,UAAU,CAAC,WAAW,CAAC;YACrB,IAAI,EAAE,QAAQ;YACd,IAAI;YACJ,IAAI,EAAE,IAAI,IAAI,SAAS;YACvB,GAAG,EAAE,GAAG,IAAI,SAAS;YACrB,cAAc,EAAE,QAAQ;SACzB,CAAC,CACH,CAAC;QACF,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC;IACD,YAAY,CAAC,OAAO,EAAE,CAAC;IACvB,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,gCAAgC;AAEhC;;;GAGG;AACH,SAAS,mBAAmB,CAC1B,eAAuB;IAEvB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAgB,CAAC;IAC3D,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAuC,CAAC;IAEhE,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACnC,MAAM,UAAU,GAAG,IAAI,GAAG,EAA0B,CAAC;QAErD,KAAK,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;YAC3D,MAAM,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC,SAAS,CAA2B,CAAC;YACtE,IAAI,CAAC,GAAG;gBAAE,SAAS;YAEnB,MAAM,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,WAAW,CAAC;YAE7D,0DAA0D;YAC1D,IAAI,IAAwB,CAAC;YAC7B,IAAI,IAAwB,CAAC;YAC7B,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxC,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBAC/B,IAAI,GAAG,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC/E,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;YACvB,CAAC;YAED,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAChD,CAAC;QAED,oHAAoH;QACpH,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACtE,QAAQ,CAAC,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;IACzC,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,SAAS,iBAAiB,CACxB,MAAmB,EACnB,IAAgB,EAChB,QAAkD;IAElD,wFAAwF;IACxF,2CAA2C;IAE3C,iFAAiF;IACjF,wFAAwF;IACxF,wCAAwC;IAExC,oEAAoE;IACpE,yFAAyF;IAEzF,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC;QACnE,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/C,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAChD,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,SAAS;QAE5D,wBAAwB;QACxB,MAAM,OAAO,GAAG,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QAC1C,IAAI,KAAK,CAAC,OAAO,CAAC;YAAE,SAAS;QAE7B,mDAAmD;QACnD,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC9C,IAAI,MAAM,IAAI,IAAI;YAAE,SAAS;QAE7B,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAyB,CAAC;QACjD,IAAI,CAAC,GAAG;YAAE,SAAS;QAEnB,kEAAkE;QAClE,MAAM,YAAY,GAAG,GAAG,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACpE,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC9C,IAAI,CAAC,UAAU;YAAE,SAAS;QAE1B,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACzC,IAAI,CAAC,QAAQ;YAAE,SAAS;QAExB,gEAAgE;QAChE,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC;QAE5C,sDAAsD;QACtD,IAAI,QAAQ,CAAC,IAAI,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;YAC/C,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC;gBAC/C,oDAAoD;gBACpD,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC;gBAC1C,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACvC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;YAC/C,CAAC;QACH,CAAC;QACD,IAAI,QAAQ,CAAC,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;YACzD,IAAI,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC;gBACjD,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC;YACvD,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CAAC,MAAmB,EAAE,OAAe;IACzD,MAAM,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC;IACzD,IAAI,WAAW,IAAI,IAAI,IAAI,WAAW,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAExD,IAAI,CAAC,MAAM,CAAC,aAAa;QAAE,OAAO,IAAI,CAAC;IACvC,MAAM,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACrD,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAE9C,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -8,4 +8,4 @@ export interface ImportProfileResult {
|
|
|
8
8
|
spans_added: number;
|
|
9
9
|
value_types: string[];
|
|
10
10
|
}
|
|
11
|
-
export declare function importProfile(content: string, name: string, formatHint?: ImportFormat | 'auto', mergeInto?: ProfileBuilder): ImportProfileResult;
|
|
11
|
+
export declare function importProfile(content: string, name: string, formatHint?: ImportFormat | 'auto', mergeInto?: ProfileBuilder, symsJson?: string): ImportProfileResult;
|
|
@@ -3,12 +3,12 @@ import { importCollapsed } from './collapsed.js';
|
|
|
3
3
|
import { importChromeTrace } from './chrome-trace.js';
|
|
4
4
|
import { importGecko } from './gecko.js';
|
|
5
5
|
import { importPprof } from './pprof.js';
|
|
6
|
-
export function importProfile(content, name, formatHint = 'auto', mergeInto) {
|
|
6
|
+
export function importProfile(content, name, formatHint = 'auto', mergeInto, symsJson) {
|
|
7
7
|
const format = formatHint === 'auto' ? detectFormat(content) : formatHint;
|
|
8
8
|
if (format === 'unknown') {
|
|
9
9
|
throw new Error(`Unable to detect format for '${name}'. Format is unknown.`);
|
|
10
10
|
}
|
|
11
|
-
const imported = runImporter(content, name, format);
|
|
11
|
+
const imported = runImporter(content, name, format, symsJson);
|
|
12
12
|
let samplesAdded = 0;
|
|
13
13
|
let spansAdded = 0;
|
|
14
14
|
for (const lane of imported.profile.lanes) {
|
|
@@ -30,14 +30,14 @@ export function importProfile(content, name, formatHint = 'auto', mergeInto) {
|
|
|
30
30
|
value_types: valueTypes,
|
|
31
31
|
};
|
|
32
32
|
}
|
|
33
|
-
function runImporter(content, name, format) {
|
|
33
|
+
function runImporter(content, name, format, symsJson) {
|
|
34
34
|
switch (format) {
|
|
35
35
|
case 'collapsed':
|
|
36
36
|
return importCollapsed(content, name);
|
|
37
37
|
case 'chrome_trace':
|
|
38
38
|
return importChromeTrace(content, name);
|
|
39
39
|
case 'gecko':
|
|
40
|
-
return importGecko(content, name);
|
|
40
|
+
return importGecko(content, name, symsJson);
|
|
41
41
|
case 'pprof':
|
|
42
42
|
return importPprof(content, name);
|
|
43
43
|
case 'speedscope':
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import.js","sourceRoot":"","sources":["../../src/importers/import.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAYzC,MAAM,UAAU,aAAa,CAC3B,OAAe,EACf,IAAY,EACZ,aAAoC,MAAM,EAC1C,SAA0B;
|
|
1
|
+
{"version":3,"file":"import.js","sourceRoot":"","sources":["../../src/importers/import.ts"],"names":[],"mappings":"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"}
|
package/build/server.js
CHANGED
|
@@ -15,6 +15,7 @@ import { findBottlenecks } from './analysis/bottleneck.js';
|
|
|
15
15
|
import { findSpinpaths } from './analysis/spinpaths.js';
|
|
16
16
|
import { findStarvations } from './analysis/starvations.js';
|
|
17
17
|
import { readFileSync, writeFileSync, existsSync } from 'node:fs';
|
|
18
|
+
import pako from 'pako';
|
|
18
19
|
export function createServer() {
|
|
19
20
|
const server = new McpServer({
|
|
20
21
|
name: 'tracemeld',
|
|
@@ -104,16 +105,30 @@ export function createServer() {
|
|
|
104
105
|
},
|
|
105
106
|
}, (args) => {
|
|
106
107
|
let content;
|
|
108
|
+
let symsJson;
|
|
107
109
|
const format = args.format ?? 'auto';
|
|
108
110
|
if (!args.source.includes('\n') && existsSync(args.source)) {
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
111
|
+
const rawBuffer = readFileSync(args.source);
|
|
112
|
+
// Detect gzip (magic bytes 0x1f 0x8b) and decompress
|
|
113
|
+
if (rawBuffer.length >= 2 && rawBuffer[0] === 0x1f && rawBuffer[1] === 0x8b) {
|
|
114
|
+
const decompressed = pako.ungzip(rawBuffer);
|
|
115
|
+
content = Buffer.from(decompressed).toString('utf-8');
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
// Binary formats (pprof) must be read as latin1 to preserve bytes
|
|
119
|
+
const isBinary = format === 'pprof' || args.source.endsWith('.pb.gz') || args.source.endsWith('.prof');
|
|
120
|
+
content = isBinary ? rawBuffer.toString('latin1') : rawBuffer.toString('utf-8');
|
|
121
|
+
}
|
|
122
|
+
// Auto-detect samply .syms.json sidecar for Gecko profiles
|
|
123
|
+
const symsPath = args.source + '.syms.json';
|
|
124
|
+
if (existsSync(symsPath)) {
|
|
125
|
+
symsJson = readFileSync(symsPath, 'utf-8');
|
|
126
|
+
}
|
|
112
127
|
}
|
|
113
128
|
else {
|
|
114
129
|
content = args.source;
|
|
115
130
|
}
|
|
116
|
-
const result = importProfile(content, args.lane_name ?? 'imported', format, state.builder);
|
|
131
|
+
const result = importProfile(content, args.lane_name ?? 'imported', format, state.builder, symsJson);
|
|
117
132
|
state.invalidatePatternCache();
|
|
118
133
|
return { content: [{ type: 'text', text: JSON.stringify(result) }] };
|
|
119
134
|
});
|
package/build/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tracemeld",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "LLM-native MCP server for performance profiling and analysis",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./build/index.js",
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"test": "vitest run",
|
|
16
16
|
"test:watch": "vitest",
|
|
17
17
|
"inspect": "npm run build && npx @modelcontextprotocol/inspector node ./build/cli.js",
|
|
18
|
-
"
|
|
18
|
+
"prepare": "npm run build"
|
|
19
19
|
},
|
|
20
20
|
"files": [
|
|
21
21
|
"build/**/*.js",
|