memorydetective 1.5.0 → 1.7.0
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/CHANGELOG.md +56 -0
- package/README.md +50 -10
- package/USAGE.md +99 -4
- package/dist/cli.js +1 -1
- package/dist/cli.js.map +1 -1
- package/dist/index.js +67 -1
- package/dist/index.js.map +1 -1
- package/dist/runtime/fixTemplates.d.ts +27 -0
- package/dist/runtime/fixTemplates.js +757 -0
- package/dist/runtime/fixTemplates.js.map +1 -0
- package/dist/runtime/prompts.d.ts +26 -0
- package/dist/runtime/prompts.js +143 -0
- package/dist/runtime/prompts.js.map +1 -0
- package/dist/runtime/resources.d.ts +26 -0
- package/dist/runtime/resources.js +71 -0
- package/dist/runtime/resources.js.map +1 -0
- package/dist/runtime/staticAnalysisHints.d.ts +29 -0
- package/dist/runtime/staticAnalysisHints.js +217 -0
- package/dist/runtime/staticAnalysisHints.js.map +1 -0
- package/dist/tools/classifyCycle.d.ts +14 -0
- package/dist/tools/classifyCycle.js +143 -0
- package/dist/tools/classifyCycle.js.map +1 -1
- package/dist/tools/compareTracesByPattern.d.ts +112 -0
- package/dist/tools/compareTracesByPattern.js +312 -0
- package/dist/tools/compareTracesByPattern.js.map +1 -0
- package/dist/tools/getInvestigationPlaybook.d.ts +4 -1
- package/dist/tools/getInvestigationPlaybook.js +3 -1
- package/dist/tools/getInvestigationPlaybook.js.map +1 -1
- package/dist/version.d.ts +1 -0
- package/dist/version.js +15 -0
- package/dist/version.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,312 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { existsSync } from "node:fs";
|
|
3
|
+
import { resolve as resolvePath } from "node:path";
|
|
4
|
+
import { analyzeHangs, } from "./analyzeHangs.js";
|
|
5
|
+
import { analyzeAnimationHitches, } from "./analyzeAnimationHitches.js";
|
|
6
|
+
import { analyzeAppLaunch, } from "./analyzeAppLaunch.js";
|
|
7
|
+
/**
|
|
8
|
+
* Trace-side counterpart to `verifyFix` (which works on `.memgraph`).
|
|
9
|
+
* Compares before/after `.trace` bundles for a specific perf category
|
|
10
|
+
* (hangs, animation-hitches, app-launch) and returns a per-category
|
|
11
|
+
* PASS/PARTIAL/FAIL verdict + numerical deltas.
|
|
12
|
+
*
|
|
13
|
+
* Designed for CI gating: a build script can run a hangs-fix PR's
|
|
14
|
+
* before/after traces through this tool and fail the merge if the
|
|
15
|
+
* regression target isn't met.
|
|
16
|
+
*
|
|
17
|
+
* Composes with the underlying analyzers — same data shape, just
|
|
18
|
+
* surfaced as a diff.
|
|
19
|
+
*/
|
|
20
|
+
export const compareTracesByPatternSchema = z.object({
|
|
21
|
+
before: z
|
|
22
|
+
.string()
|
|
23
|
+
.min(1)
|
|
24
|
+
.describe("Absolute path to the baseline `.trace` (pre-fix)."),
|
|
25
|
+
after: z
|
|
26
|
+
.string()
|
|
27
|
+
.min(1)
|
|
28
|
+
.describe("Absolute path to the post-fix `.trace`."),
|
|
29
|
+
category: z
|
|
30
|
+
.enum(["hangs", "animation-hitches", "app-launch"])
|
|
31
|
+
.describe("Which perf category to verify. `hangs` parses the `potential-hangs` schema, `animation-hitches` parses `animation-hitches`, `app-launch` parses the launch breakdown."),
|
|
32
|
+
thresholds: z
|
|
33
|
+
.object({
|
|
34
|
+
hangsMaxLongestMs: z
|
|
35
|
+
.number()
|
|
36
|
+
.nonnegative()
|
|
37
|
+
.optional()
|
|
38
|
+
.describe("For `category: hangs` — PASS requires `after.longestMs <= this`. Default 0 (i.e. PASS only when no hangs remain)."),
|
|
39
|
+
hitchesMaxLongestMs: z
|
|
40
|
+
.number()
|
|
41
|
+
.nonnegative()
|
|
42
|
+
.optional()
|
|
43
|
+
.describe("For `category: animation-hitches` — PASS requires `after.longestMs <= this`. Default 100 (Apple's user-perceptible threshold)."),
|
|
44
|
+
appLaunchMaxTotalMs: z
|
|
45
|
+
.number()
|
|
46
|
+
.nonnegative()
|
|
47
|
+
.optional()
|
|
48
|
+
.describe("For `category: app-launch` — PASS requires `after.totalMs <= this`. Default 1000 (1 second total cold-launch budget)."),
|
|
49
|
+
})
|
|
50
|
+
.optional()
|
|
51
|
+
.default({}),
|
|
52
|
+
hangsMinDurationMs: z
|
|
53
|
+
.number()
|
|
54
|
+
.nonnegative()
|
|
55
|
+
.default(250)
|
|
56
|
+
.describe("For `category: hangs` — only count hangs longer than this. Default 250ms (Apple's user-perceptible threshold for hangs)."),
|
|
57
|
+
hitchesMinDurationMs: z
|
|
58
|
+
.number()
|
|
59
|
+
.nonnegative()
|
|
60
|
+
.default(100)
|
|
61
|
+
.describe("For `category: animation-hitches` — only count hitches longer than this. Default 100ms (Apple's user-perceptible threshold)."),
|
|
62
|
+
});
|
|
63
|
+
/** Pure: build the comparison from two analyzer results. */
|
|
64
|
+
export function compareHangs(before, after, thresholdLongestMs) {
|
|
65
|
+
const beforeStats = {
|
|
66
|
+
count: before.totals.hangs,
|
|
67
|
+
longestMs: before.totals.longestMs,
|
|
68
|
+
averageMs: before.totals.averageMs,
|
|
69
|
+
totalMs: before.totals.totalDurationMs,
|
|
70
|
+
};
|
|
71
|
+
const afterStats = {
|
|
72
|
+
count: after.totals.hangs,
|
|
73
|
+
longestMs: after.totals.longestMs,
|
|
74
|
+
averageMs: after.totals.averageMs,
|
|
75
|
+
totalMs: after.totals.totalDurationMs,
|
|
76
|
+
};
|
|
77
|
+
const delta = {
|
|
78
|
+
count: afterStats.count - beforeStats.count,
|
|
79
|
+
longestMs: afterStats.longestMs - beforeStats.longestMs,
|
|
80
|
+
averageMs: afterStats.averageMs - beforeStats.averageMs,
|
|
81
|
+
totalMs: afterStats.totalMs - beforeStats.totalMs,
|
|
82
|
+
};
|
|
83
|
+
const verdict = decideVerdict({
|
|
84
|
+
beforeCount: beforeStats.count,
|
|
85
|
+
afterCount: afterStats.count,
|
|
86
|
+
afterLongestMs: afterStats.longestMs,
|
|
87
|
+
thresholdLongestMs,
|
|
88
|
+
});
|
|
89
|
+
return { beforeStats, afterStats, delta, verdict };
|
|
90
|
+
}
|
|
91
|
+
/** Pure: same shape as `compareHangs` for animation-hitches. */
|
|
92
|
+
export function compareAnimationHitches(before, after, thresholdLongestMs) {
|
|
93
|
+
// For animation-hitches, "count" reflects user-perceptible hitches (>100ms)
|
|
94
|
+
// — the metric users actually feel. The schema's `rows` field is total
|
|
95
|
+
// hitches including the imperceptible ones.
|
|
96
|
+
const beforeStats = {
|
|
97
|
+
count: before.totals.perceptible,
|
|
98
|
+
longestMs: before.totals.longestMs,
|
|
99
|
+
averageMs: before.totals.averageMs,
|
|
100
|
+
totalMs: before.totals.totalDurationMs,
|
|
101
|
+
};
|
|
102
|
+
const afterStats = {
|
|
103
|
+
count: after.totals.perceptible,
|
|
104
|
+
longestMs: after.totals.longestMs,
|
|
105
|
+
averageMs: after.totals.averageMs,
|
|
106
|
+
totalMs: after.totals.totalDurationMs,
|
|
107
|
+
};
|
|
108
|
+
const delta = {
|
|
109
|
+
count: afterStats.count - beforeStats.count,
|
|
110
|
+
longestMs: afterStats.longestMs - beforeStats.longestMs,
|
|
111
|
+
averageMs: afterStats.averageMs - beforeStats.averageMs,
|
|
112
|
+
totalMs: afterStats.totalMs - beforeStats.totalMs,
|
|
113
|
+
};
|
|
114
|
+
const verdict = decideVerdict({
|
|
115
|
+
beforeCount: beforeStats.count,
|
|
116
|
+
afterCount: afterStats.count,
|
|
117
|
+
afterLongestMs: afterStats.longestMs,
|
|
118
|
+
thresholdLongestMs,
|
|
119
|
+
});
|
|
120
|
+
return { beforeStats, afterStats, delta, verdict };
|
|
121
|
+
}
|
|
122
|
+
/** Pure: app-launch comparison. The "count" field reflects launch-event count
|
|
123
|
+
* (typically 1 per trace); the meaningful number is `totalMs`. */
|
|
124
|
+
export function compareAppLaunch(before, after, thresholdTotalMs) {
|
|
125
|
+
const beforeStats = {
|
|
126
|
+
count: 1,
|
|
127
|
+
longestMs: before.totalLaunchMs,
|
|
128
|
+
averageMs: before.totalLaunchMs,
|
|
129
|
+
totalMs: before.totalLaunchMs,
|
|
130
|
+
};
|
|
131
|
+
const afterStats = {
|
|
132
|
+
count: 1,
|
|
133
|
+
longestMs: after.totalLaunchMs,
|
|
134
|
+
averageMs: after.totalLaunchMs,
|
|
135
|
+
totalMs: after.totalLaunchMs,
|
|
136
|
+
};
|
|
137
|
+
const delta = {
|
|
138
|
+
count: 0,
|
|
139
|
+
longestMs: afterStats.longestMs - beforeStats.longestMs,
|
|
140
|
+
averageMs: afterStats.averageMs - beforeStats.averageMs,
|
|
141
|
+
totalMs: afterStats.totalMs - beforeStats.totalMs,
|
|
142
|
+
};
|
|
143
|
+
// Verdict semantics for app-launch differ: it's about absolute totalMs
|
|
144
|
+
// crossing the threshold, not "did the count drop".
|
|
145
|
+
let verdict;
|
|
146
|
+
if (afterStats.totalMs <= thresholdTotalMs) {
|
|
147
|
+
verdict = "PASS";
|
|
148
|
+
}
|
|
149
|
+
else if (afterStats.totalMs < beforeStats.totalMs) {
|
|
150
|
+
verdict = "PARTIAL";
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
verdict = "FAIL";
|
|
154
|
+
}
|
|
155
|
+
return { beforeStats, afterStats, delta, verdict };
|
|
156
|
+
}
|
|
157
|
+
/** Shared verdict logic for hangs + hitches. */
|
|
158
|
+
function decideVerdict({ beforeCount, afterCount, afterLongestMs, thresholdLongestMs, }) {
|
|
159
|
+
// PASS: nothing left above the threshold.
|
|
160
|
+
if (afterCount === 0 || afterLongestMs <= thresholdLongestMs) {
|
|
161
|
+
return "PASS";
|
|
162
|
+
}
|
|
163
|
+
// PARTIAL: still present but reduced from before.
|
|
164
|
+
if (afterCount < beforeCount) {
|
|
165
|
+
return "PARTIAL";
|
|
166
|
+
}
|
|
167
|
+
// FAIL: same or worse.
|
|
168
|
+
return "FAIL";
|
|
169
|
+
}
|
|
170
|
+
function buildDiagnosis(category, beforeStats, afterStats, verdict, thresholdField, thresholdValue) {
|
|
171
|
+
const verb = category === "hangs"
|
|
172
|
+
? "hangs"
|
|
173
|
+
: category === "animation-hitches"
|
|
174
|
+
? "hitches"
|
|
175
|
+
: "launch time";
|
|
176
|
+
if (verdict === "PASS") {
|
|
177
|
+
if (category === "app-launch") {
|
|
178
|
+
return `Launch time fell to ${afterStats.totalMs.toFixed(0)}ms (was ${beforeStats.totalMs.toFixed(0)}ms), within the ${thresholdValue}ms budget. PASS.`;
|
|
179
|
+
}
|
|
180
|
+
if (afterStats.count === 0) {
|
|
181
|
+
return `All ${verb} resolved (was ${beforeStats.count}, now 0). PASS.`;
|
|
182
|
+
}
|
|
183
|
+
return `${verb} reduced to ${afterStats.count} (was ${beforeStats.count}); longest ${afterStats.longestMs.toFixed(0)}ms is below the ${thresholdValue}ms threshold. PASS.`;
|
|
184
|
+
}
|
|
185
|
+
if (verdict === "PARTIAL") {
|
|
186
|
+
return `${verb}: ${beforeStats.count}→${afterStats.count} count, ${beforeStats.longestMs.toFixed(0)}ms→${afterStats.longestMs.toFixed(0)}ms longest. Reduced but still above the ${thresholdValue}ms threshold. PARTIAL.`;
|
|
187
|
+
}
|
|
188
|
+
return `${verb}: ${beforeStats.count}→${afterStats.count} count, ${beforeStats.longestMs.toFixed(0)}ms→${afterStats.longestMs.toFixed(0)}ms longest. No improvement vs. before. FAIL — the fix did not address the regression.`;
|
|
189
|
+
}
|
|
190
|
+
export async function compareTracesByPattern(input) {
|
|
191
|
+
const beforePath = resolvePath(input.before);
|
|
192
|
+
const afterPath = resolvePath(input.after);
|
|
193
|
+
if (!existsSync(beforePath)) {
|
|
194
|
+
throw new Error(`Trace bundle not found: ${beforePath}`);
|
|
195
|
+
}
|
|
196
|
+
if (!existsSync(afterPath)) {
|
|
197
|
+
throw new Error(`Trace bundle not found: ${afterPath}`);
|
|
198
|
+
}
|
|
199
|
+
const t = input.thresholds ?? {};
|
|
200
|
+
if (input.category === "hangs") {
|
|
201
|
+
const threshold = t.hangsMaxLongestMs ?? 0;
|
|
202
|
+
const [b, a] = await Promise.all([
|
|
203
|
+
analyzeHangs({
|
|
204
|
+
tracePath: beforePath,
|
|
205
|
+
topN: 10,
|
|
206
|
+
minDurationMs: input.hangsMinDurationMs ?? 250,
|
|
207
|
+
}),
|
|
208
|
+
analyzeHangs({
|
|
209
|
+
tracePath: afterPath,
|
|
210
|
+
topN: 10,
|
|
211
|
+
minDurationMs: input.hangsMinDurationMs ?? 250,
|
|
212
|
+
}),
|
|
213
|
+
]);
|
|
214
|
+
const cmp = compareHangs(b, a, threshold);
|
|
215
|
+
const diagnosis = buildDiagnosis("hangs", cmp.beforeStats, cmp.afterStats, cmp.verdict, "hangsMaxLongestMs", threshold);
|
|
216
|
+
return {
|
|
217
|
+
ok: true,
|
|
218
|
+
before: beforePath,
|
|
219
|
+
after: afterPath,
|
|
220
|
+
category: "hangs",
|
|
221
|
+
verdict: cmp.verdict,
|
|
222
|
+
beforeStats: cmp.beforeStats,
|
|
223
|
+
afterStats: cmp.afterStats,
|
|
224
|
+
delta: cmp.delta,
|
|
225
|
+
thresholdApplied: { field: "hangsMaxLongestMs", value: threshold },
|
|
226
|
+
diagnosis,
|
|
227
|
+
...(cmp.verdict !== "PASS"
|
|
228
|
+
? {
|
|
229
|
+
suggestedNextCalls: [
|
|
230
|
+
{
|
|
231
|
+
tool: "analyzeHangs",
|
|
232
|
+
args: { tracePath: afterPath, minDurationMs: 250 },
|
|
233
|
+
why: "Inspect the remaining post-fix hangs to identify which call sites still need attention.",
|
|
234
|
+
},
|
|
235
|
+
],
|
|
236
|
+
}
|
|
237
|
+
: {}),
|
|
238
|
+
};
|
|
239
|
+
}
|
|
240
|
+
if (input.category === "animation-hitches") {
|
|
241
|
+
const threshold = t.hitchesMaxLongestMs ?? 100;
|
|
242
|
+
const [b, a] = await Promise.all([
|
|
243
|
+
analyzeAnimationHitches({
|
|
244
|
+
tracePath: beforePath,
|
|
245
|
+
topN: 10,
|
|
246
|
+
minDurationMs: input.hitchesMinDurationMs ?? 100,
|
|
247
|
+
}),
|
|
248
|
+
analyzeAnimationHitches({
|
|
249
|
+
tracePath: afterPath,
|
|
250
|
+
topN: 10,
|
|
251
|
+
minDurationMs: input.hitchesMinDurationMs ?? 100,
|
|
252
|
+
}),
|
|
253
|
+
]);
|
|
254
|
+
const cmp = compareAnimationHitches(b, a, threshold);
|
|
255
|
+
const diagnosis = buildDiagnosis("animation-hitches", cmp.beforeStats, cmp.afterStats, cmp.verdict, "hitchesMaxLongestMs", threshold);
|
|
256
|
+
return {
|
|
257
|
+
ok: true,
|
|
258
|
+
before: beforePath,
|
|
259
|
+
after: afterPath,
|
|
260
|
+
category: "animation-hitches",
|
|
261
|
+
verdict: cmp.verdict,
|
|
262
|
+
beforeStats: cmp.beforeStats,
|
|
263
|
+
afterStats: cmp.afterStats,
|
|
264
|
+
delta: cmp.delta,
|
|
265
|
+
thresholdApplied: { field: "hitchesMaxLongestMs", value: threshold },
|
|
266
|
+
diagnosis,
|
|
267
|
+
...(cmp.verdict !== "PASS"
|
|
268
|
+
? {
|
|
269
|
+
suggestedNextCalls: [
|
|
270
|
+
{
|
|
271
|
+
tool: "analyzeAnimationHitches",
|
|
272
|
+
args: { tracePath: afterPath, minDurationMs: 100 },
|
|
273
|
+
why: "Identify which views still hitch in the post-fix trace.",
|
|
274
|
+
},
|
|
275
|
+
],
|
|
276
|
+
}
|
|
277
|
+
: {}),
|
|
278
|
+
};
|
|
279
|
+
}
|
|
280
|
+
// app-launch
|
|
281
|
+
const threshold = t.appLaunchMaxTotalMs ?? 1000;
|
|
282
|
+
const [b, a] = await Promise.all([
|
|
283
|
+
analyzeAppLaunch({ tracePath: beforePath }),
|
|
284
|
+
analyzeAppLaunch({ tracePath: afterPath }),
|
|
285
|
+
]);
|
|
286
|
+
const cmp = compareAppLaunch(b, a, threshold);
|
|
287
|
+
const diagnosis = buildDiagnosis("app-launch", cmp.beforeStats, cmp.afterStats, cmp.verdict, "appLaunchMaxTotalMs", threshold);
|
|
288
|
+
return {
|
|
289
|
+
ok: true,
|
|
290
|
+
before: beforePath,
|
|
291
|
+
after: afterPath,
|
|
292
|
+
category: "app-launch",
|
|
293
|
+
verdict: cmp.verdict,
|
|
294
|
+
beforeStats: cmp.beforeStats,
|
|
295
|
+
afterStats: cmp.afterStats,
|
|
296
|
+
delta: cmp.delta,
|
|
297
|
+
thresholdApplied: { field: "appLaunchMaxTotalMs", value: threshold },
|
|
298
|
+
diagnosis,
|
|
299
|
+
...(cmp.verdict !== "PASS"
|
|
300
|
+
? {
|
|
301
|
+
suggestedNextCalls: [
|
|
302
|
+
{
|
|
303
|
+
tool: "analyzeAppLaunch",
|
|
304
|
+
args: { tracePath: afterPath },
|
|
305
|
+
why: "Find which launch phase (process-creation / dyld / ObjC-init / AppDelegate / first-frame) still dominates the post-fix launch.",
|
|
306
|
+
},
|
|
307
|
+
],
|
|
308
|
+
}
|
|
309
|
+
: {}),
|
|
310
|
+
};
|
|
311
|
+
}
|
|
312
|
+
//# sourceMappingURL=compareTracesByPattern.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compareTracesByPattern.js","sourceRoot":"","sources":["../../src/tools/compareTracesByPattern.ts"],"names":[],"mappings":"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"}
|
|
@@ -34,10 +34,13 @@ export interface Playbook {
|
|
|
34
34
|
/** Pointers to alternative playbooks the agent might want next. */
|
|
35
35
|
seeAlso?: PlaybookKind[];
|
|
36
36
|
}
|
|
37
|
+
declare const PLAYBOOKS: Record<PlaybookKind, Playbook>;
|
|
37
38
|
export interface GetInvestigationPlaybookResult {
|
|
38
39
|
ok: boolean;
|
|
39
40
|
playbook: Playbook;
|
|
40
41
|
}
|
|
41
42
|
export declare function getInvestigationPlaybook(input: GetInvestigationPlaybookInput): Promise<GetInvestigationPlaybookResult>;
|
|
42
|
-
/** Exposed for tests. */
|
|
43
|
+
/** Exposed for tests + the prompts surface. */
|
|
43
44
|
export declare const PLAYBOOK_KINDS: PlaybookKind[];
|
|
45
|
+
/** Exposed for the prompts surface (see src/runtime/prompts.ts). */
|
|
46
|
+
export { PLAYBOOKS };
|
|
@@ -215,6 +215,8 @@ export async function getInvestigationPlaybook(input) {
|
|
|
215
215
|
}
|
|
216
216
|
return { ok: true, playbook };
|
|
217
217
|
}
|
|
218
|
-
/** Exposed for tests. */
|
|
218
|
+
/** Exposed for tests + the prompts surface. */
|
|
219
219
|
export const PLAYBOOK_KINDS = Object.keys(PLAYBOOKS);
|
|
220
|
+
/** Exposed for the prompts surface (see src/runtime/prompts.ts). */
|
|
221
|
+
export { PLAYBOOKS };
|
|
220
222
|
//# sourceMappingURL=getInvestigationPlaybook.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getInvestigationPlaybook.js","sourceRoot":"","sources":["../../src/tools/getInvestigationPlaybook.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"getInvestigationPlaybook.js","sourceRoot":"","sources":["../../src/tools/getInvestigationPlaybook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;;GASG;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,IAAI,CAAC;IACrC,eAAe;IACf,YAAY;IACZ,SAAS;IACT,iBAAiB;IACjB,YAAY;CACb,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,CAAC,MAAM,CAAC;IACrD,IAAI,EAAE,gBAAgB,CAAC,QAAQ,CAC7B,8JAA8J,CAC/J;CACF,CAAC,CAAC;AAyBH,MAAM,SAAS,GAAmC;IAChD,eAAe,EAAE;QACf,IAAI,EAAE,eAAe;QACrB,OAAO,EACL,sHAAsH;QACxH,KAAK,EAAE;YACL;gBACE,IAAI,EAAE,CAAC;gBACP,IAAI,EAAE,iBAAiB;gBACvB,OAAO,EACL,iGAAiG;gBACnG,YAAY,EAAE,EAAE,IAAI,EAAE,kCAAkC,EAAE;gBAC1D,cAAc,EACZ,uHAAuH;aAC1H;YACD;gBACE,IAAI,EAAE,CAAC;gBACP,IAAI,EAAE,eAAe;gBACrB,OAAO,EACL,6JAA6J;gBAC/J,YAAY,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE;gBAC/C,cAAc,EACZ,2GAA2G;aAC9G;YACD;gBACE,IAAI,EAAE,CAAC;gBACP,IAAI,EAAE,oBAAoB;gBAC1B,OAAO,EACL,wGAAwG;gBAC1G,YAAY,EAAE;oBACZ,IAAI,EAAE,aAAa;oBACnB,aAAa,EAAE,oCAAoC;iBACpD;gBACD,cAAc,EACZ,gIAAgI;aACnI;YACD;gBACE,IAAI,EAAE,CAAC;gBACP,IAAI,EAAE,oBAAoB;gBAC1B,OAAO,EACL,uFAAuF;gBACzF,YAAY,EAAE;oBACZ,QAAQ,EAAE,yCAAyC;oBACnD,OAAO,EAAE,oCAAoC;iBAC9C;aACF;YACD;gBACE,IAAI,EAAE,CAAC;gBACP,IAAI,EAAE,0BAA0B;gBAChC,OAAO,EAAE,yDAAyD;gBAClE,YAAY,EAAE;oBACZ,UAAU,EAAE,qBAAqB;oBACjC,cAAc,EAAE,CAAC,6BAA6B,CAAC;iBAChD;aACF;YACD;gBACE,IAAI,EAAE,CAAC;gBACP,IAAI,EAAE,2BAA2B;gBACjC,OAAO,EACL,uGAAuG;gBACzG,YAAY,EAAE;oBACZ,UAAU,EAAE,qBAAqB;oBACjC,QAAQ,EAAE,sBAAsB;iBACjC;aACF;SACF;QACD,OAAO,EAAE,CAAC,YAAY,CAAC;KACxB;IAED,YAAY,EAAE;QACZ,IAAI,EAAE,YAAY;QAClB,OAAO,EACL,4GAA4G;QAC9G,KAAK,EAAE;YACL;gBACE,IAAI,EAAE,CAAC;gBACP,IAAI,EAAE,kBAAkB;gBACxB,OAAO,EAAE,iDAAiD;gBAC1D,YAAY,EAAE,EAAE;aACjB;YACD;gBACE,IAAI,EAAE,CAAC;gBACP,IAAI,EAAE,mBAAmB;gBACzB,OAAO,EAAE,2DAA2D;gBACpE,YAAY,EAAE;oBACZ,QAAQ,EAAE,eAAe;oBACzB,QAAQ,EAAE,eAAe;oBACzB,aAAa,EAAE,iBAAiB;oBAChC,WAAW,EAAE,EAAE;oBACf,MAAM,EAAE,kCAAkC;iBAC3C;aACF;YACD;gBACE,IAAI,EAAE,CAAC;gBACP,IAAI,EAAE,cAAc;gBACpB,OAAO,EACL,6FAA6F;gBAC/F,YAAY,EAAE;oBACZ,SAAS,EAAE,eAAe;oBAC1B,aAAa,EAAE,GAAG;iBACnB;aACF;YACD;gBACE,IAAI,EAAE,CAAC;gBACP,IAAI,EAAE,oBAAoB;gBAC1B,OAAO,EACL,wMAAwM;gBAC1M,YAAY,EAAE;oBACZ,QAAQ,EAAE,kBAAkB;oBAC5B,OAAO,EAAE,yCAAyC;iBACnD;aACF;SACF;QACD,OAAO,EAAE,CAAC,SAAS,EAAE,iBAAiB,CAAC;KACxC;IAED,SAAS,EAAE;QACT,IAAI,EAAE,SAAS;QACf,OAAO,EACL,2GAA2G;QAC7G,KAAK,EAAE;YACL;gBACE,IAAI,EAAE,CAAC;gBACP,IAAI,EAAE,mBAAmB;gBACzB,OAAO,EACL,gEAAgE;gBAClE,YAAY,EAAE;oBACZ,QAAQ,EAAE,mBAAmB;oBAC7B,QAAQ,EAAE,QAAQ;oBAClB,aAAa,EAAE,OAAO;oBACtB,WAAW,EAAE,EAAE;oBACf,MAAM,EAAE,eAAe;iBACxB;aACF;YACD;gBACE,IAAI,EAAE,CAAC;gBACP,IAAI,EAAE,yBAAyB;gBAC/B,OAAO,EACL,iHAAiH;gBACnH,YAAY,EAAE,EAAE,SAAS,EAAE,eAAe,EAAE,aAAa,EAAE,GAAG,EAAE;aACjE;YACD;gBACE,IAAI,EAAE,CAAC;gBACP,IAAI,EAAE,2BAA2B;gBACjC,OAAO,EACL,qGAAqG;gBACvG,YAAY,EAAE,EAAE,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,UAAU,EAAE;aAClE;SACF;KACF;IAED,iBAAiB,EAAE;QACjB,IAAI,EAAE,iBAAiB;QACvB,OAAO,EACL,2FAA2F;QAC7F,KAAK,EAAE;YACL;gBACE,IAAI,EAAE,CAAC;gBACP,IAAI,EAAE,mBAAmB;gBACzB,OAAO,EAAE,yBAAyB;gBAClC,YAAY,EAAE;oBACZ,QAAQ,EAAE,YAAY;oBACtB,QAAQ,EAAE,QAAQ;oBAClB,cAAc,EAAE,mBAAmB;oBACnC,WAAW,EAAE,EAAE;oBACf,MAAM,EAAE,eAAe;iBACxB;aACF;YACD;gBACE,IAAI,EAAE,CAAC;gBACP,IAAI,EAAE,kBAAkB;gBACxB,OAAO,EACL,mHAAmH;gBACrH,YAAY,EAAE,EAAE,SAAS,EAAE,eAAe,EAAE;aAC7C;YACD;gBACE,IAAI,EAAE,CAAC;gBACP,IAAI,EAAE,oBAAoB;gBAC1B,OAAO,EACL,gHAAgH;gBAClH,YAAY,EAAE;oBACZ,QAAQ,EAAE,qBAAqB;oBAC/B,OAAO,EAAE,+BAA+B;iBACzC;aACF;SACF;KACF;IAED,YAAY,EAAE;QACZ,IAAI,EAAE,YAAY;QAClB,OAAO,EACL,sGAAsG;QACxG,KAAK,EAAE;YACL;gBACE,IAAI,EAAE,CAAC;gBACP,IAAI,EAAE,eAAe;gBACrB,OAAO,EACL,uFAAuF;gBACzF,YAAY,EAAE;oBACZ,MAAM,EAAE,2BAA2B;oBACnC,KAAK,EAAE,0BAA0B;iBAClC;gBACD,cAAc,EACZ,gJAAgJ;aACnJ;YACD;gBACE,IAAI,EAAE,CAAC;gBACP,IAAI,EAAE,eAAe;gBACrB,OAAO,EACL,qEAAqE;gBACvE,YAAY,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE;aACnD;SACF;QACD,OAAO,EAAE,CAAC,eAAe,CAAC;KAC3B;CACF,CAAC;AAOF,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,KAAoC;IAEpC,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACvC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CACb,0BAA0B,KAAK,CAAC,IAAI,YAAY,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACpF,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AAChC,CAAC;AAED,+CAA+C;AAC/C,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAmB,CAAC;AAEvE,oEAAoE;AACpE,OAAO,EAAE,SAAS,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const VERSION: string;
|
package/dist/version.js
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
2
|
+
import { dirname, join } from "node:path";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
|
+
// Single source of truth for the runtime version string. Reads from
|
|
5
|
+
// package.json so the CLI banner, the MCP server handshake, and any other
|
|
6
|
+
// surface that reports a version can never drift out of sync with the
|
|
7
|
+
// published artifact.
|
|
8
|
+
//
|
|
9
|
+
// Layout assumption: this file (compiled to dist/version.js) sits one level
|
|
10
|
+
// below package.json — true both at dev time (src/ ↔ package.json) and after
|
|
11
|
+
// `npm install` (node_modules/<pkg>/dist/ ↔ node_modules/<pkg>/package.json).
|
|
12
|
+
const here = dirname(fileURLToPath(import.meta.url));
|
|
13
|
+
const pkg = JSON.parse(readFileSync(join(here, "..", "package.json"), "utf8"));
|
|
14
|
+
export const VERSION = pkg.version;
|
|
15
|
+
//# sourceMappingURL=version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,oEAAoE;AACpE,0EAA0E;AAC1E,sEAAsE;AACtE,sBAAsB;AACtB,EAAE;AACF,4EAA4E;AAC5E,6EAA6E;AAC7E,8EAA8E;AAC9E,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACrD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CACpB,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAChC,CAAC;AAEzB,MAAM,CAAC,MAAM,OAAO,GAAW,GAAG,CAAC,OAAO,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "memorydetective",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.7.0",
|
|
4
4
|
"description": "MCP server for iOS leak hunting and performance investigation. Reads .memgraph + .trace files, captures new ones via xctrace and leaks(1), classifies retain cycles.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|