@creeperhost/modlens-mcp 1.6.14 → 1.6.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,88 +2,481 @@
2
2
  * Diagnostics tools for modpack developers.
3
3
  *
4
4
  * - analyzeCrashLog: rank suspect mods from a NeoForge/Fabric/Forge crash log
5
- * by cross-referencing stack frames with the ModClass index.
5
+ * by cross-referencing stack frames with the ModClass index and bounded
6
+ * fallback signals from modern crash report sections.
6
7
  * - findMissingDeps: find declared dependencies not satisfied by ingested mods.
7
8
  */
8
9
  import { findModClassesByClassNames, listAllMods } from "../repositories/mod.js";
10
+ import { searchMods, getModsBatch } from "../modpacks-ch.js";
11
+ import { downloadModAction } from "./modpacks-ch.js";
12
+ import { reindexClasses } from "./ingest.js";
13
+ import { translateSymbol } from "../mappings.js";
9
14
  // Loader-level pseudo-deps that are never in the mod DB
10
15
  const SKIP_DEP_IDS = new Set([
11
- "minecraft", "neoforge", "forge", "fabric-api",
12
- "fabricloader", "quilt_loader", "java",
16
+ "minecraft", "neoforge", "forge", "fabric-api", "fabricloader",
17
+ "quilt_loader", "java", "modlauncher", "fml_loader", "mixin",
18
+ "spongepowered", "architectury", "fabric", "knot", "bootstrap",
19
+ "server", "client", "loader", "modlauncher", "bootstraplauncher",
20
+ "cpw.mods.modlauncher", "cpw.mods.bootstraplauncher", "lowcodefml",
21
+ "dev", "neoforged", "cpw",
13
22
  ]);
14
23
  const MAX_SUSPECTS = 10;
24
+ const MAX_POPULATE_ATTEMPTS = 3;
15
25
  export async function analyzeCrashLog(logText) {
16
- const FRAME_RE = /\tat ([\w.$]+)\.([\w$<>[\]]+)\(/g;
17
- const rawFrames = [];
18
- for (const m of logText.matchAll(FRAME_RE)) {
19
- rawFrames.push(m[1].replace(/\./g, "/"));
20
- }
21
- if (rawFrames.length === 0) {
22
- return {
23
- suspects: [],
24
- modsInLogSection: [],
25
- totalFrames: 0,
26
- recognizedFrames: 0,
27
- unrecognizedFrames: 0,
28
- };
29
- }
26
+ const frames = parseFrames(logText);
27
+ const facts = parseCrashFacts(logText);
28
+ await enrichMappedFrames(frames, facts);
29
+ const rawFrames = frames.map((f) => f.className);
30
30
  const uniqueClasses = [...new Set(rawFrames)];
31
- const rows = await findModClassesByClassNames(uniqueClasses);
32
- // className mod info
33
- const classToMod = new Map();
34
- for (const row of rows) {
35
- classToMod.set(row.className, { modId: row.mod.modId, dbId: row.modId, display: row.mod.displayName });
36
- }
37
- // Accumulate per-mod frame lists (deduped class names) and frame counts
38
- const modInfo = new Map();
39
- let recognized = 0;
40
- for (const cls of rawFrames) {
41
- const mod = classToMod.get(cls);
42
- if (!mod)
43
- continue;
44
- recognized++;
45
- const entry = modInfo.get(mod.dbId) ?? { modId: mod.modId, display: mod.display, dbId: mod.dbId, frames: [] };
46
- if (!entry.frames.includes(cls))
47
- entry.frames.push(cls);
48
- modInfo.set(mod.dbId, entry);
31
+ const modsInLogSection = parseModsInLogSection(logText);
32
+ let lookup = await lookupModClasses(uniqueClasses);
33
+ let rows = lookup.rows;
34
+ let candidates = buildCandidates(frames, rows, facts, modsInLogSection);
35
+ const population = lookup.available
36
+ ? await populateMissingMods(candidates, frames, facts)
37
+ : { attempted: 0, attempts: [], skipped: "mod class database unavailable" };
38
+ if (population.attempts.some((a) => a.status === "ingested" || a.status === "replaced" || a.status === "already_ingested")) {
39
+ lookup = await lookupModClasses(uniqueClasses);
40
+ rows = lookup.rows;
41
+ candidates = buildCandidates(frames, rows, facts, modsInLogSection);
49
42
  }
50
- // Build suspect list sorted by raw frame count (counts duplicates)
51
- const suspects = [...modInfo.values()]
52
- .map((s) => ({
43
+ const recognized = frames.filter((f) => rows.some((r) => r.className === f.className)).length;
44
+ const mappedVanilla = frames.filter((f) => f.mappedOwner === "minecraft").length;
45
+ const suspects = candidates.slice(0, MAX_SUSPECTS).map((s) => ({
53
46
  modId: s.modId,
54
- display: s.display,
55
- dbId: s.dbId,
56
- frameCount: rawFrames.filter((c) => classToMod.get(c)?.dbId === s.dbId).length,
47
+ display: s.display ?? s.modId,
48
+ dbId: s.dbId ?? null,
49
+ frameCount: s.frameCount,
57
50
  frames: s.frames.slice(0, 5),
58
- }))
59
- .sort((a, b) => b.frameCount - a.frameCount)
60
- .slice(0, MAX_SUSPECTS);
61
- // Parse "-- Mod List --" section (NeoForge crash format)
62
- const modsInLogSection = [];
63
- const modListMatch = logText.match(/-- Mod List --\n([\s\S]*?)(?:\n--|$)/);
64
- if (modListMatch) {
65
- for (const line of modListMatch[1].split("\n")) {
66
- const m = line.match(/^\s*(\S+)\|/);
67
- if (m)
68
- modsInLogSection.push(m[1].trim());
69
- }
70
- }
71
- const unrecognized = rawFrames.length - recognized;
51
+ jars: s.jars.slice(0, 3),
52
+ source: s.source,
53
+ reasons: s.reasons.slice(0, 4),
54
+ }));
55
+ const unrecognized = rawFrames.length - recognized - mappedVanilla;
72
56
  const coverageWarning = rawFrames.length >= 5 && unrecognized / rawFrames.length > 0.5
73
- ? `${unrecognized}/${rawFrames.length} stack frames could not be matched to ingested mods. Run reindex_classes to improve coverage.`
57
+ ? `${unrecognized}/${rawFrames.length} stack frames could not be matched to ingested mods. Fallback crash signals were used; ingest the missing jars to improve coverage.`
74
58
  : undefined;
75
59
  return {
76
60
  suspects,
61
+ fallbackSuspects: suspects.filter((s) => s.dbId === null),
62
+ crashFacts: facts,
63
+ frames: frames.slice(0, 50),
64
+ mappedFrames: frames.filter((f) => f.mappedOwner).slice(0, 50),
77
65
  modsInLogSection,
78
66
  totalFrames: rawFrames.length,
79
67
  recognizedFrames: recognized,
80
68
  unrecognizedFrames: unrecognized,
69
+ population,
81
70
  ...(coverageWarning ? { coverageWarning } : {}),
82
71
  };
83
72
  }
73
+ async function lookupModClasses(classNames) {
74
+ try {
75
+ return { rows: await findModClassesByClassNames(classNames), available: true };
76
+ }
77
+ catch {
78
+ return { rows: [], available: false };
79
+ }
80
+ }
81
+ function parseFrames(logText) {
82
+ const frames = [];
83
+ const modernRe = /^\s*at\s+(?:(?:TRANSFORMER|MOD|KNOT|MC-BOOTSTRAP|BOOTSTRAP)\/)?([^@\s/]+)@[^/\s]+\/([A-Za-z_$][\w$]*(?:[.$/][A-Za-z_$][\w$]*)*)\.([A-Za-z_$<][\w$<>[\]]*)\(([^)]*)\)(.*)$/;
84
+ const plainRe = /^\s*at\s+([A-Za-z_$][\w$]*(?:[.$/][A-Za-z_$][\w$]*)*)\.([A-Za-z_$<][\w$<>[\]]*)\(([^)]*)\)(.*)$/;
85
+ for (const line of logText.split(/\r?\n/)) {
86
+ let m = line.match(modernRe);
87
+ if (m) {
88
+ frames.push({
89
+ className: normalizeClassName(m[2]),
90
+ method: m[3],
91
+ raw: line.trim(),
92
+ source: "module",
93
+ modId: cleanModId(m[1]),
94
+ location: m[4],
95
+ line: parseSourceLine(m[4]),
96
+ jar: extractJar(line),
97
+ });
98
+ continue;
99
+ }
100
+ m = line.match(plainRe);
101
+ if (m) {
102
+ frames.push({
103
+ className: normalizeClassName(m[1]),
104
+ method: m[2],
105
+ raw: line.trim(),
106
+ source: "plain",
107
+ location: m[3],
108
+ line: parseSourceLine(m[3]),
109
+ modId: undefined,
110
+ jar: extractJar(line),
111
+ });
112
+ }
113
+ }
114
+ return frames;
115
+ }
116
+ async function enrichMappedFrames(frames, facts) {
117
+ if (!facts.minecraftVersion)
118
+ return;
119
+ const classCache = new Map();
120
+ const classNamespaceCache = new Map();
121
+ const methodCache = new Map();
122
+ for (const frame of frames) {
123
+ if (!isObfuscatedVanillaFrame(frame))
124
+ continue;
125
+ let mapped = classCache.get(frame.className);
126
+ let mappedNamespace = classNamespaceCache.get(frame.className) ?? "mcp";
127
+ if (!mapped) {
128
+ mapped = await translateSymbol(frame.className, "official", "mcp", facts.minecraftVersion);
129
+ if (!mapped.found) {
130
+ mapped = await translateSymbol(frame.className, "official", "srg", facts.minecraftVersion);
131
+ mappedNamespace = "srg";
132
+ }
133
+ classCache.set(frame.className, mapped);
134
+ classNamespaceCache.set(frame.className, mappedNamespace);
135
+ }
136
+ if (!mapped.found || !mapped.target)
137
+ continue;
138
+ frame.mappedClass = normalizeClassName(mapped.target);
139
+ frame.mappedNamespace = mappedNamespace;
140
+ frame.mappedOwner = "minecraft";
141
+ if (mapped.note)
142
+ frame.mappingNote = mapped.note;
143
+ const methodKey = `${frame.className}/${frame.method}`;
144
+ let mappedMethod = methodCache.get(methodKey);
145
+ if (!mappedMethod) {
146
+ mappedMethod = await translateSymbol(methodKey, "official", "mcp", facts.minecraftVersion);
147
+ if (!mappedMethod.found)
148
+ mappedMethod = await translateSymbol(methodKey, "official", "srg", facts.minecraftVersion);
149
+ methodCache.set(methodKey, mappedMethod);
150
+ }
151
+ if (mappedMethod.found && mappedMethod.target)
152
+ frame.mappedMethod = mappedMethod.target.split("/").pop();
153
+ }
154
+ }
155
+ function isObfuscatedVanillaFrame(frame) {
156
+ if (frame.source !== "plain" || frame.jar || frame.modId)
157
+ return false;
158
+ if (frame.className.includes("/") || frame.className.includes("."))
159
+ return false;
160
+ if (!/^[a-z]{1,4}$/i.test(frame.className))
161
+ return false;
162
+ return !frame.location || /^SourceFile(?::\d+)?$/i.test(frame.location);
163
+ }
164
+ function parseCrashFacts(logText) {
165
+ const facts = { causedBy: [], modLoadingIssues: [], missingDependencies: [], tickContext: {} };
166
+ facts.description = logText.match(/Description:\s*(.+)/)?.[1]?.trim();
167
+ facts.exception = logText.match(/^\s*((?:[\w.$]+\.)?(?:\w+Exception|\w+Error)(?::\s*.+)?)/m)?.[1]?.trim();
168
+ facts.minecraftVersion = logText.match(/Minecraft Version:\s*([^\r\n]+)/i)?.[1]?.trim()
169
+ ?? logText.match(/-- System Details --[\s\S]*?Details:\s*Minecraft Version:\s*([^\r\n]+)/i)?.[1]?.trim();
170
+ const loaderText = logText.match(/(?:Forge|NeoForge|Fabric Loader) Version:\s*([^\r\n]+)/i)?.[0]?.toLowerCase()
171
+ ?? logText.match(/ModLauncher:\s*([^\r\n]+)/i)?.[0]?.toLowerCase();
172
+ if (loaderText?.includes("neoforge"))
173
+ facts.loader = "neoforge";
174
+ else if (loaderText?.includes("fabric"))
175
+ facts.loader = "fabric";
176
+ else if (loaderText?.includes("forge"))
177
+ facts.loader = "forge";
178
+ for (const m of logText.matchAll(/^\s*Caused by:\s*(.+)$/gm))
179
+ facts.causedBy.push(m[1].trim());
180
+ const issueRe = /-- Mod loading issue for:\s*([^\s-]+)\s*--([\s\S]*?)(?=\n-- |\n\n|$)/g;
181
+ for (const m of logText.matchAll(issueRe)) {
182
+ const body = m[2];
183
+ const issue = {
184
+ modId: cleanModId(m[1]),
185
+ modFile: body.match(/Mod file:\s*([^\r\n]+)/i)?.[1]?.trim(),
186
+ failure: body.match(/Failure message:\s*([^\r\n]+)/i)?.[1]?.trim(),
187
+ exception: body.match(/Exception message:\s*([^\r\n]+)/i)?.[1]?.trim(),
188
+ };
189
+ facts.modLoadingIssues.push(issue);
190
+ parseMissingDependency(issue.failure ?? "", issue.modId, facts);
191
+ parseMissingDependency(issue.exception ?? "", issue.modId, facts);
192
+ }
193
+ for (const line of logText.split(/\r?\n/))
194
+ parseMissingDependency(line, undefined, facts);
195
+ for (const sectionName of ["Block entity being ticked", "Entity being ticked", "Affected level", "Block being ticked"]) {
196
+ const section = logText.match(new RegExp(`-- ${escapeRegExp(sectionName)} --\\n([\\s\\S]*?)(?:\\n--|$)`));
197
+ if (!section)
198
+ continue;
199
+ for (const line of section[1].split(/\r?\n/)) {
200
+ const m = line.match(/^\s*([^:]+):\s*(.+)$/);
201
+ if (m)
202
+ facts.tickContext[m[1].trim()] = m[2].trim();
203
+ }
204
+ }
205
+ return facts;
206
+ }
207
+ function parseMissingDependency(text, requiredBy, facts) {
208
+ const lower = text.toLowerCase();
209
+ const notInstalled = text.match(/currently,\s*([a-z0-9_.-]+)\s+is not installed/i)?.[1];
210
+ const requires = text.match(/requires\s+([a-z0-9_.-]+)\s+([^,.;]+)?/i);
211
+ const depModId = cleanModId(notInstalled ?? requires?.[1] ?? "");
212
+ if (!depModId || SKIP_DEP_IDS.has(depModId))
213
+ return;
214
+ if (!lower.includes("requires") && !lower.includes("not installed") && !lower.includes("missing"))
215
+ return;
216
+ if (facts.missingDependencies.some((d) => d.depModId === depModId && d.requiredBy === requiredBy))
217
+ return;
218
+ facts.missingDependencies.push({ requiredBy, depModId, version: requires?.[2]?.trim() });
219
+ }
220
+ function parseModsInLogSection(logText) {
221
+ const mods = new Set();
222
+ const sections = logText.matchAll(/(?:-- Mod List --|Mod List:|Fabric Mods:)\s*\n([\s\S]*?)(?:\n-- |\n\n|$)/g);
223
+ for (const section of sections) {
224
+ for (const line of section[1].split(/\r?\n/)) {
225
+ const trimmed = line.trim();
226
+ if (trimmed.includes("|")) {
227
+ const parts = trimmed.split("|").map((p) => p.trim()).filter(Boolean);
228
+ if (parts.length >= 3) {
229
+ addModId(mods, parts[2]);
230
+ continue;
231
+ }
232
+ }
233
+ let m = trimmed.match(/^([a-z0-9_.-]+)\|/i);
234
+ if (m) {
235
+ addModId(mods, m[1]);
236
+ continue;
237
+ }
238
+ m = trimmed.match(/^\|\s*[A-Z\s]+\|\s*([a-z0-9_.-]+)\s*\|/i);
239
+ if (m) {
240
+ addModId(mods, m[1]);
241
+ continue;
242
+ }
243
+ m = trimmed.match(/^\|[^|]*\.jar\s*\|[^|]*\|\s*([a-z0-9_.-]+)\s*\|/i);
244
+ if (m) {
245
+ addModId(mods, m[1]);
246
+ continue;
247
+ }
248
+ m = trimmed.match(/^([a-z0-9_.-]+):\s+.+\s+[\w.-]+$/i);
249
+ if (m)
250
+ addModId(mods, m[1]);
251
+ }
252
+ }
253
+ return [...mods];
254
+ }
255
+ function buildCandidates(frames, rows, facts, modsInLogSection) {
256
+ const byClass = new Map(rows.map((r) => [r.className, r]));
257
+ const candidates = new Map();
258
+ const add = (modId, reason, frame, display, dbId, source = "fallback") => {
259
+ modId = cleanModId(modId);
260
+ if (!modId || SKIP_DEP_IDS.has(modId))
261
+ return;
262
+ const c = candidates.get(modId) ?? {
263
+ modId,
264
+ display,
265
+ dbId: dbId ?? null,
266
+ frameCount: 0,
267
+ frames: [],
268
+ jars: [],
269
+ source,
270
+ reasons: [],
271
+ };
272
+ if (display && (!c.display || c.display === c.modId))
273
+ c.display = display;
274
+ if (dbId)
275
+ c.dbId = dbId;
276
+ if (c.source !== "indexed" && source === "indexed")
277
+ c.source = "indexed";
278
+ if (!c.reasons.includes(reason))
279
+ c.reasons.push(reason);
280
+ if (frame) {
281
+ c.frameCount++;
282
+ if (!c.frames.includes(frame.className))
283
+ c.frames.push(frame.className);
284
+ if (frame.jar && !c.jars.includes(frame.jar))
285
+ c.jars.push(frame.jar);
286
+ }
287
+ candidates.set(modId, c);
288
+ };
289
+ for (const frame of frames) {
290
+ if (frame.mappedOwner === "minecraft")
291
+ continue;
292
+ const row = byClass.get(frame.className);
293
+ if (row) {
294
+ add(row.mod.modId, "class matched ingested mod", frame, row.mod.displayName, row.modId, "indexed");
295
+ continue;
296
+ }
297
+ if (frame.modId)
298
+ add(frame.modId, "module stack frame named this mod", frame, undefined, null, "stack");
299
+ const jarModId = modIdFromJar(frame.jar);
300
+ if (jarModId)
301
+ add(jarModId, "stack frame came from this jar", frame, undefined, null, "jar");
302
+ if (!frame.modId && !jarModId) {
303
+ const packageModId = modIdFromClass(frame.className);
304
+ if (packageModId)
305
+ add(packageModId, "class package points at this mod", frame, undefined, null, "package");
306
+ }
307
+ }
308
+ for (const issue of facts.modLoadingIssues) {
309
+ add(issue.modId, "mod loading issue section names this mod", undefined, undefined, null, "mod_loading_issue");
310
+ const jarModId = modIdFromJar(issue.modFile);
311
+ if (jarModId)
312
+ add(jarModId, "mod loading issue names this jar", undefined, undefined, null, "jar");
313
+ }
314
+ for (const dep of facts.missingDependencies) {
315
+ add(dep.depModId, "required dependency is missing", undefined, undefined, null, "dependency");
316
+ if (dep.requiredBy)
317
+ add(dep.requiredBy, "mod has a failed dependency", undefined, undefined, null, "dependency");
318
+ }
319
+ for (const value of Object.values(facts.tickContext)) {
320
+ const namespace = value.match(/\b([a-z0-9_.-]+):[a-z0-9_./-]+/i)?.[1];
321
+ if (namespace)
322
+ add(namespace, "ticking context uses this namespace", undefined, undefined, null, "tick_context");
323
+ }
324
+ const inPack = new Set(modsInLogSection.map(cleanModId));
325
+ return [...candidates.values()]
326
+ .filter((c) => c.dbId || c.frameCount > 0 || inPack.has(c.modId) || c.source !== "package")
327
+ .sort((a, b) => scoreCandidate(b) - scoreCandidate(a) || b.frameCount - a.frameCount || a.modId.localeCompare(b.modId));
328
+ }
329
+ async function populateMissingMods(candidates, frames, facts) {
330
+ const attempts = [];
331
+ const unresolved = candidates.filter((c) => !c.dbId && ["stack", "jar", "mod_loading_issue", "dependency"].includes(c.source)).slice(0, MAX_POPULATE_ATTEMPTS);
332
+ for (const candidate of unresolved) {
333
+ const terms = [...new Set([candidate.modId, candidate.display, ...candidate.jars.map(stripJarVersion)].filter((v) => !!v))];
334
+ const attempt = { modId: candidate.modId, terms, status: "not_found" };
335
+ attempts.push(attempt);
336
+ try {
337
+ const remote = await findRemoteMod(terms, candidate, facts);
338
+ if (!remote)
339
+ continue;
340
+ const version = pickRemoteVersion(remote, candidate, facts);
341
+ attempt.remoteId = remote.id;
342
+ if (version)
343
+ attempt.fileId = version.id;
344
+ const result = await downloadModAction(remote.id, {
345
+ mcVersion: version ? undefined : facts.minecraftVersion,
346
+ loader: version ? undefined : facts.loader,
347
+ fileId: version?.id,
348
+ });
349
+ attempt.status = result.status;
350
+ attempt.message = result.message ?? result.name;
351
+ if (result.modId && ["ingested", "replaced", "already_ingested"].includes(result.status)) {
352
+ const indexed = await reindexClasses(result.modId).catch((err) => ({ indexed: 0, failed: 1, skipped: 0, error: err instanceof Error ? err.message : String(err) }));
353
+ attempt.message = (attempt.message ? attempt.message + "; " : "") + "indexed " + indexed.indexed + " classes";
354
+ }
355
+ }
356
+ catch (err) {
357
+ attempt.status = "failed";
358
+ attempt.message = err instanceof Error ? err.message : String(err);
359
+ }
360
+ }
361
+ return { attempted: attempts.length, attempts };
362
+ }
363
+ async function findRemoteMod(terms, candidate, facts) {
364
+ for (const term of terms) {
365
+ const found = await searchMods(term, 8);
366
+ const ids = found?.mods ?? [];
367
+ if (ids.length === 0)
368
+ continue;
369
+ const mods = await getModsBatch(ids.slice(0, 8));
370
+ const wanted = normalized(term);
371
+ const byName = mods
372
+ .map((m) => ({ mod: m, score: remoteScore(m, wanted, candidate, facts) }))
373
+ .sort((a, b) => a.score - b.score || b.mod.installs - a.mod.installs);
374
+ if (byName[0] && byName[0].score < 6)
375
+ return byName[0].mod;
376
+ }
377
+ return null;
378
+ }
379
+ function remoteScore(mod, wanted, candidate, facts) {
380
+ const name = normalized(mod.name);
381
+ const links = (mod.links ?? []).map((l) => normalized(l.link + " " + l.name + " " + l.type)).join(" ");
382
+ if (name === wanted)
383
+ return 0;
384
+ if (links.includes(wanted))
385
+ return 1;
386
+ if (name.includes(wanted) || wanted.includes(name))
387
+ return 2;
388
+ if (mod.versions?.some((v) => candidate.jars.some((j) => normalized(v.name) === normalized(j))))
389
+ return 0;
390
+ if (facts.loader && !mod.versions?.some((v) => versionMatches(v, facts)))
391
+ return 5;
392
+ return 6;
393
+ }
394
+ function pickRemoteVersion(mod, candidate, facts) {
395
+ const jars = candidate.jars.map(normalized);
396
+ const exactJar = mod.versions?.find((v) => jars.includes(normalized(v.name)));
397
+ if (exactJar)
398
+ return exactJar;
399
+ return mod.versions?.find((v) => versionMatches(v, facts));
400
+ }
401
+ function versionMatches(version, facts) {
402
+ if (facts.minecraftVersion && !version.targets.some((t) => t.type === "game" && t.version === facts.minecraftVersion))
403
+ return false;
404
+ if (facts.loader && !version.targets.some((t) => t.type === "modloader" && t.name.toLowerCase() === facts.loader))
405
+ return false;
406
+ return true;
407
+ }
408
+ function scoreCandidate(c) {
409
+ let score = c.frameCount;
410
+ if (c.dbId)
411
+ score += 1000;
412
+ if (c.source === "mod_loading_issue")
413
+ score += 80;
414
+ if (c.source === "dependency")
415
+ score += 70;
416
+ if (c.source === "stack")
417
+ score += 60;
418
+ if (c.source === "jar")
419
+ score += 40;
420
+ if (c.source === "tick_context")
421
+ score += 20;
422
+ if (c.source === "package")
423
+ score -= 20;
424
+ return score;
425
+ }
426
+ function parseSourceLine(location) {
427
+ const match = location?.match(/:(\d+)\)?$/);
428
+ return match ? Number(match[1]) : undefined;
429
+ }
430
+ function extractJar(line) {
431
+ const match = line.match(/\[([^\]\r\n]*?\.jar)(?:[!%\]\s:/?].*)?\]/i);
432
+ if (!match)
433
+ return undefined;
434
+ return basename(match[1].split(/[!%]/)[0]);
435
+ }
436
+ function modIdFromJar(jar) {
437
+ if (!jar)
438
+ return undefined;
439
+ const base = stripJarVersion(jar);
440
+ return cleanModId(base.replace(/[^a-z0-9_.-]+/gi, "_"));
441
+ }
442
+ function stripJarVersion(jar) {
443
+ return basename(jar).replace(/\.jar$/i, "").replace(/[-_]?\d[\w.+-]*$/i, "");
444
+ }
445
+ function modIdFromClass(className) {
446
+ const parts = className.split("/").map(cleanModId).filter(Boolean);
447
+ if (parts.length === 0)
448
+ return undefined;
449
+ if (["net/minecraft", "com/mojang", "org/spongepowered", "cpw/mods", "java/", "javax/", "sun/", "com/sun/", "jdk/", "net/minecraft/launchwrapper", "magic/launcher"].some((p) => className.startsWith(p)))
450
+ return undefined;
451
+ if (["com", "org", "net", "io", "me", "dev"].includes(parts[0]) && parts[1])
452
+ return parts[1];
453
+ if (["mcjty"].includes(parts[0]) && parts[1])
454
+ return parts[1];
455
+ return parts[0];
456
+ }
457
+ function normalizeClassName(value) {
458
+ return value.replace(/\./g, "/");
459
+ }
460
+ function cleanModId(value) {
461
+ return (value ?? "").trim().toLowerCase().replace(/^mods\//, "").replace(/\.jar$/i, "").replace(/[^a-z0-9_.-]+/g, "_").replace(/^_+|_+$/g, "");
462
+ }
463
+ function addModId(set, value) {
464
+ const modId = cleanModId(value);
465
+ if (modId && !SKIP_DEP_IDS.has(modId))
466
+ set.add(modId);
467
+ }
468
+ function basename(path) {
469
+ return path.replace(/\\/g, "/").split("/").pop() ?? path;
470
+ }
471
+ function normalized(value) {
472
+ return value.toLowerCase().replace(/[^a-z0-9]+/g, "");
473
+ }
474
+ function escapeRegExp(value) {
475
+ return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
476
+ }
84
477
  export async function findMissingDeps(mcVersion, loader) {
85
478
  const allMods = await listAllMods();
86
- // Full ingested modId set (not filtered — deps may cross mcVersion boundaries)
479
+ // Full ingested modId set (deps may cross mcVersion boundaries)
87
480
  const ingestedIds = new Set(allMods.map((m) => m.modId));
88
481
  // Filter comparison pool to mcVersion/loader if requested
89
482
  const pool = allMods.filter((m) => {
@@ -1 +1 @@
1
- {"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../src/tools/diagnostics.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../src/tools/diagnostics.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ingest.d.ts","sourceRoot":"","sources":["../../src/tools/ingest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ingest.d.ts","sourceRoot":"","sources":["../../src/tools/ingest.ts"],"names":[],"mappings":"AAcA,OAAO,EAEmB,WAAW,EAGpC,MAAM,wBAAwB,CAAC;AAOhC,MAAM,MAAM,YAAY,GAClB;IAAE,MAAM,EAAE,kBAAkB,CAAC;IAAE,GAAG,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC,CAAA;CAAE,GAC7E;IAAE,MAAM,EAAE,oBAAoB,CAAC;IAAC,GAAG,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,GACtG;IAAE,MAAM,EAAE,mBAAmB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GAC/F;IAAE,MAAM,EAAE,gBAAgB,CAAC;IAAI,OAAO,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GAC/F;IAAE,MAAM,EAAE,UAAU,CAAC;IAAU,GAAG,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC,CAAA;CAAE,GAC7E;IAAE,MAAM,EAAE,UAAU,CAAC;IAAU,GAAG,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC;AAyB1G,wBAAsB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,UAAQ,EAAE,OAAO,UAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,CA8I3G;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAC7B,SAAS,EAAE,MAAM,EACjB,UAAU,UAAO,EACjB,YAAY,UAAQ,EACpB,OAAO,UAAQ,GAChB,OAAO,CAAC,MAAM,CAAC,CAwCjB;AAID,wBAAsB,uBAAuB,CAAC,IAAI,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC;IACnG,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IACpE,OAAO,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChH,CAAC,CAkDD;AAED,wBAAsB,cAAc,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;CAAE,CAAC,CA8BlH;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CA0B7G;AAED,MAAM,WAAW,gBAAgB;IAC7B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,gFAAgF;AAChF,wBAAgB,WAAW,CAAC,QAAQ,EAAE,OAAO,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAKlF;AAED,wBAAsB,kBAAkB,CACpC,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,gBAAgB,GACxB,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAiC9D;AAID,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAwCjH;AAID,wBAAsB,kBAAkB,CAAC,IAAI,CAAC,EAAE;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAwDnF"}
@@ -12,6 +12,7 @@ import { enqueueModEmbed } from "../embed-queue.js";
12
12
  import { buildModGraph, ensureGraphify } from "./graphify.js";
13
13
  import { findModByJarPath, findModByDupKey, findModBySha512, createMod, updateMod, findModById, listAllMods, countModClasses, createModClasses, findModByModId, deleteModById, listModsSlim, mcVersionWhere, } from "../repositories/mod.js";
14
14
  import { getDb } from "../db.js";
15
+ import { serializeArray } from "../db-backend.js";
15
16
  import { validateDbId } from "../validate.js";
16
17
  // ── Platform adapter registry ─────────────────────────────────────────────────
17
18
  const PLATFORM_ADAPTERS = [
@@ -156,7 +157,7 @@ export async function ingestMod(jarPath, skipSource = false, replace = false) {
156
157
  modId: mod.id,
157
158
  className: c.name,
158
159
  superClass: c.superName || null,
159
- interfaces: c.interfaces,
160
+ interfaces: serializeArray(c.interfaces),
160
161
  accessFlags: c.accessFlags,
161
162
  })));
162
163
  })
@@ -285,7 +286,7 @@ export async function reindexClasses(dbId) {
285
286
  modId: mod.id,
286
287
  className: c.name,
287
288
  superClass: c.superName || null,
288
- interfaces: c.interfaces,
289
+ interfaces: JSON.stringify(c.interfaces),
289
290
  accessFlags: c.accessFlags,
290
291
  })));
291
292
  indexed++;