@creeperhost/modlens-mcp 1.6.27 → 1.6.29

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 (57) hide show
  1. package/README.md +11 -5
  2. package/dist/cli.js +1 -1
  3. package/dist/generated/sqlite/internal/class.js +5 -5
  4. package/dist/generated/sqlite/internal/class.js.map +1 -1
  5. package/dist/generated/sqlite/internal/prismaNamespace.d.ts +1 -0
  6. package/dist/generated/sqlite/internal/prismaNamespace.d.ts.map +1 -1
  7. package/dist/generated/sqlite/internal/prismaNamespace.js +1 -0
  8. package/dist/generated/sqlite/internal/prismaNamespace.js.map +1 -1
  9. package/dist/generated/sqlite/internal/prismaNamespaceBrowser.d.ts +1 -0
  10. package/dist/generated/sqlite/internal/prismaNamespaceBrowser.d.ts.map +1 -1
  11. package/dist/generated/sqlite/internal/prismaNamespaceBrowser.js +1 -0
  12. package/dist/generated/sqlite/internal/prismaNamespaceBrowser.js.map +1 -1
  13. package/dist/generated/sqlite/models/Mod.d.ts +45 -1
  14. package/dist/generated/sqlite/models/Mod.d.ts.map +1 -1
  15. package/dist/hosted-mod-license.d.ts.map +1 -1
  16. package/dist/hosted-mod-license.js +23 -7
  17. package/dist/hosted-mod-license.js.map +1 -1
  18. package/dist/hosted-oauth.d.ts +3 -0
  19. package/dist/hosted-oauth.d.ts.map +1 -1
  20. package/dist/hosted-oauth.js +75 -27
  21. package/dist/hosted-oauth.js.map +1 -1
  22. package/dist/hosted-policy.d.ts.map +1 -1
  23. package/dist/hosted-policy.js +3 -1
  24. package/dist/hosted-policy.js.map +1 -1
  25. package/dist/hosted-tool-catalog.js +1 -1
  26. package/dist/hosted-tool-catalog.js.map +1 -1
  27. package/dist/mappings.d.ts +22 -0
  28. package/dist/mappings.d.ts.map +1 -1
  29. package/dist/mappings.js +173 -3
  30. package/dist/mappings.js.map +1 -1
  31. package/dist/mod-reference.d.ts +24 -0
  32. package/dist/mod-reference.d.ts.map +1 -0
  33. package/dist/mod-reference.js +199 -0
  34. package/dist/mod-reference.js.map +1 -0
  35. package/dist/repositories/mod.d.ts +3 -0
  36. package/dist/repositories/mod.d.ts.map +1 -1
  37. package/dist/repositories/mod.js +19 -2
  38. package/dist/repositories/mod.js.map +1 -1
  39. package/dist/runtime/modlens-agent.jar +0 -0
  40. package/dist/server.js +44 -7
  41. package/dist/server.js.map +1 -1
  42. package/dist/sqlite-schema.d.ts.map +1 -1
  43. package/dist/sqlite-schema.js +7 -0
  44. package/dist/sqlite-schema.js.map +1 -1
  45. package/dist/tools/diagnostics.d.ts.map +1 -1
  46. package/dist/tools/diagnostics.js +76 -0
  47. package/dist/tools/diagnostics.js.map +1 -1
  48. package/dist/tools/ingest.d.ts.map +1 -1
  49. package/dist/tools/ingest.js +3 -0
  50. package/dist/tools/ingest.js.map +1 -1
  51. package/dist/tools/mixin-scan.d.ts +1 -0
  52. package/dist/tools/mixin-scan.d.ts.map +1 -1
  53. package/package.json +1 -1
  54. package/prisma/backends/schema.sqlite.prisma +2 -0
  55. package/prisma/backends/template.db +0 -0
  56. package/prisma/schema.prisma +2 -0
  57. package/scripts/test-hosted-oauth.mjs +52 -8
@@ -0,0 +1,199 @@
1
+ /** Resolve a ModLens mod reference to one verified JAR. */
2
+ import AdmZip from "adm-zip";
3
+ import { existsSync } from "node:fs";
4
+ import { fileSha1 } from "./security.js";
5
+ import { inspectJarLoaders, parseJar } from "./processor.js";
6
+ import { getMod, getModsBatch, providerVersions, searchMods } from "./modpacks-ch.js";
7
+ import { downloadModVersion } from "./mod-artifacts.js";
8
+ import { findModById, findModBySha1, findModsByExactModId, updateMod } from "./repositories/mod.js";
9
+ import { ingestMod } from "./tools/ingest.js";
10
+ /** Safe, actionable identity failures that may be returned to hosted callers. */
11
+ export class ModReferenceError extends Error {
12
+ }
13
+ const pending = new Map();
14
+ const ingestPending = new Map();
15
+ const normalized = (value) => value.toLowerCase().replace(/[^a-z0-9]+/g, "");
16
+ const isNumeric = (value) => /^\d+$/.test(value);
17
+ function classInJar(jarPath, className) {
18
+ if (!className)
19
+ return true;
20
+ const path = `${className.replace(/\.class$/, "").replace(/\./g, "/")}.class`;
21
+ try {
22
+ return new AdmZip(jarPath).getEntry(path) !== null;
23
+ }
24
+ catch {
25
+ return false;
26
+ }
27
+ }
28
+ function matchesHints(mod, ref) {
29
+ return (!ref.mcVersion || mod.mcVersion === ref.mcVersion)
30
+ && (!ref.modVersion || mod.version === ref.modVersion)
31
+ && (!ref.loader || mod.loader.toLowerCase() === ref.loader.toLowerCase());
32
+ }
33
+ async function ensureSha1(mod) {
34
+ const sha1 = await fileSha1(mod.jarPath);
35
+ if (mod.sha1?.toLowerCase() !== sha1)
36
+ await updateMod(mod.id, { sha1 });
37
+ return sha1;
38
+ }
39
+ function ambiguous(label, versions) {
40
+ const candidates = versions.slice(0, 8).map(v => `${v.name} [${v.sha1 || v.id}]`).join(", ");
41
+ throw new ModReferenceError(`Ambiguous mod ${label}; provide the JAR SHA-1. Candidates: ${candidates}`);
42
+ }
43
+ async function stageRemoteVersion(projectId, version, ref) {
44
+ if (!/^[a-f0-9]{40}$/i.test(version.sha1 ?? ""))
45
+ throw new ModReferenceError(`modpacks.ch has no SHA-1 for ${version.name}`);
46
+ if (ref.modVersion && version.version !== ref.modVersion)
47
+ throw new ModReferenceError("SHA-1 file does not match the requested mod version");
48
+ if (ref.mcVersion && version.targets?.some(target => target.type === "game")
49
+ && !version.targets.some(target => target.type === "game" && target.version === ref.mcVersion)) {
50
+ throw new ModReferenceError("SHA-1 file does not match the requested Minecraft version");
51
+ }
52
+ const jarPath = await downloadModVersion(projectId, version);
53
+ if (await fileSha1(jarPath) !== version.sha1.toLowerCase())
54
+ throw new ModReferenceError(`SHA-1 mismatch for ${version.name}`);
55
+ if (ref.sha1 && version.sha1.toLowerCase() !== ref.sha1.toLowerCase())
56
+ throw new ModReferenceError("Resolved JAR SHA-1 differs from the requested hash");
57
+ const manifest = await parseJar(jarPath);
58
+ if (ref.loader && !(await inspectJarLoaders(jarPath)).includes(ref.loader.toLowerCase())) {
59
+ throw new ModReferenceError("SHA-1 file does not match the requested loader");
60
+ }
61
+ if (typeof ref.modId === "string" && manifest.modId.toLowerCase() !== ref.modId.toLowerCase()) {
62
+ throw new ModReferenceError(`JAR declares mod ID ${manifest.modId}, not ${ref.modId}`);
63
+ }
64
+ if (!classInJar(jarPath, ref.className))
65
+ throw new ModReferenceError(`Class ${ref.className} is absent from the resolved JAR`);
66
+ return { jarPath, version: version.version };
67
+ }
68
+ async function findRemote(ref) {
69
+ const id = ref.modId;
70
+ if (typeof id !== "string")
71
+ throw new ModReferenceError(`Mod not found: ${String(id ?? ref.dbId ?? "")}`);
72
+ if (ref.sha1) {
73
+ const project = await getMod(ref.sha1);
74
+ if (!project)
75
+ throw new ModReferenceError(`JAR SHA-1 ${ref.sha1} was not found on modpacks.ch`);
76
+ const versions = await providerVersions("mod", project.id);
77
+ const match = versions.find(v => v.sha1?.toLowerCase() === ref.sha1.toLowerCase());
78
+ if (!match)
79
+ throw new ModReferenceError(`modpacks.ch did not identify a file matching SHA-1 ${ref.sha1}`);
80
+ return stageRemoteVersion(project.id, match, ref);
81
+ }
82
+ const found = await searchMods(id, 20);
83
+ const projects = await getModsBatch(found?.mods ?? []);
84
+ const wanted = normalized(id);
85
+ const exact = projects.filter(project => [project.slug, project.name, String(project.id)]
86
+ .some(value => value && normalized(value) === wanted));
87
+ if (exact.length !== 1) {
88
+ if (!exact.length)
89
+ throw new ModReferenceError(`Mod ${id} was not found on modpacks.ch; provide a JAR SHA-1`);
90
+ ambiguous(id, exact.map(project => ({ id: project.id, name: project.name })));
91
+ }
92
+ const project = exact[0];
93
+ const versions = (await providerVersions("mod", project.id, { mcVersion: ref.mcVersion, loader: ref.loader }))
94
+ .filter(v => /^[a-f0-9]{40}$/i.test(v.sha1 ?? "") && (!ref.modVersion || v.version === ref.modVersion));
95
+ if (versions.length === 1)
96
+ return stageRemoteVersion(project.id, versions[0], ref);
97
+ if (ref.className && versions.length > 1 && versions.length <= 8) {
98
+ const matches = [];
99
+ for (const version of versions) {
100
+ try {
101
+ matches.push(await stageRemoteVersion(project.id, version, ref));
102
+ }
103
+ catch (error) {
104
+ if (!/absent from the resolved JAR/.test(String(error)))
105
+ throw error;
106
+ }
107
+ }
108
+ if (matches.length === 1)
109
+ return matches[0];
110
+ }
111
+ if (!versions.length)
112
+ throw new ModReferenceError(`No compatible JAR for ${id} was found on modpacks.ch`);
113
+ ambiguous(id, versions);
114
+ }
115
+ async function stageUnshared(ref) {
116
+ if (ref.sha1 && !/^[a-f0-9]{40}$/i.test(ref.sha1))
117
+ throw new ModReferenceError("sha1 must be a 40-character hexadecimal JAR SHA-1");
118
+ const id = ref.dbId ?? ref.modId;
119
+ if (id === undefined || id === "")
120
+ throw new ModReferenceError("modId or dbId is required");
121
+ const numberId = typeof id === "number" ? id : isNumeric(id) ? Number(id) : undefined;
122
+ if (numberId !== undefined) {
123
+ const mod = await findModById(numberId);
124
+ if (!mod)
125
+ throw new ModReferenceError(`Mod #${numberId} not found`);
126
+ if (typeof ref.modId === "string" && !isNumeric(ref.modId) && mod.modId.toLowerCase() !== ref.modId.toLowerCase()) {
127
+ throw new ModReferenceError(`Selected JAR declares mod ID ${mod.modId}, not ${ref.modId}`);
128
+ }
129
+ if (!existsSync(mod.jarPath) || !matchesHints(mod, ref) || !classInJar(mod.jarPath, ref.className)) {
130
+ throw new ModReferenceError("Selected JAR is unavailable or does not match the requested version, loader, or class");
131
+ }
132
+ if (ref.sha1 && await ensureSha1(mod) !== ref.sha1.toLowerCase())
133
+ throw new ModReferenceError("SHA-1 does not match the selected database mod");
134
+ return { jarPath: mod.jarPath, mod, version: mod.version };
135
+ }
136
+ const name = String(id);
137
+ let local = (await findModsByExactModId(name)).filter(mod => matchesHints(mod, ref) && existsSync(mod.jarPath));
138
+ if (ref.sha1) {
139
+ const indexed = await findModBySha1(ref.sha1.toLowerCase());
140
+ if (indexed && indexed.modId.toLowerCase() !== name.toLowerCase())
141
+ throw new ModReferenceError(`SHA-1 belongs to ${indexed.modId}, not ${name}`);
142
+ if (indexed && matchesHints(indexed, ref) && existsSync(indexed.jarPath)
143
+ && await ensureSha1(indexed) === ref.sha1.toLowerCase())
144
+ local = [indexed];
145
+ else
146
+ local = (await Promise.all(local.map(async (mod) => await ensureSha1(mod) === ref.sha1.toLowerCase() ? mod : null)))
147
+ .filter((mod) => mod !== null);
148
+ }
149
+ local = local.filter(mod => existsSync(mod.jarPath) && classInJar(mod.jarPath, ref.className));
150
+ if (local.length === 1)
151
+ return { jarPath: local[0].jarPath, mod: local[0], version: local[0].version };
152
+ if (local.length > 1)
153
+ ambiguous(name, local.map(mod => ({ id: mod.id, name: `${mod.modId} ${mod.version}`, sha1: mod.sha1 ?? undefined })));
154
+ return findRemote({ ...ref, modId: name });
155
+ }
156
+ /** Stage only: callers may inspect a hosted license before ingestion. */
157
+ export async function stageModReference(ref) {
158
+ const key = JSON.stringify([ref.dbId, ref.modId, ref.sha1?.toLowerCase(), ref.mcVersion, ref.modVersion, ref.loader, ref.className]);
159
+ const existing = pending.get(key);
160
+ if (existing)
161
+ return existing;
162
+ const task = stageUnshared(ref);
163
+ pending.set(key, task);
164
+ try {
165
+ return await task;
166
+ }
167
+ finally {
168
+ pending.delete(key);
169
+ }
170
+ }
171
+ export async function ingestStagedMod(staged) {
172
+ if (staged.mod)
173
+ return staged.mod;
174
+ const existingTask = ingestPending.get(staged.jarPath);
175
+ if (existingTask)
176
+ return existingTask;
177
+ const task = (async () => {
178
+ const result = await ingestMod(staged.jarPath, true);
179
+ if ("mod" in result && result.mod)
180
+ return result.mod;
181
+ if ("existingDbId" in result) {
182
+ const existing = await findModById(result.existingDbId);
183
+ if (existing && await fileSha1(existing.jarPath) === await fileSha1(staged.jarPath))
184
+ return existing;
185
+ }
186
+ throw new ModReferenceError(`Resolved JAR could not be indexed: ${"message" in result ? result.message : result.status}`);
187
+ })();
188
+ ingestPending.set(staged.jarPath, task);
189
+ try {
190
+ return await task;
191
+ }
192
+ finally {
193
+ ingestPending.delete(staged.jarPath);
194
+ }
195
+ }
196
+ export async function resolveModReference(ref) {
197
+ return ingestStagedMod(await stageModReference(ref));
198
+ }
199
+ //# sourceMappingURL=mod-reference.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod-reference.js","sourceRoot":"","sources":["../src/mod-reference.ts"],"names":[],"mappings":"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"}
@@ -56,6 +56,9 @@ export declare function mcVersionWhere(mcVersion: string): Promise<Prisma.ModWhe
56
56
  export declare function findModById(id: number): Promise<Mod | null>;
57
57
  export declare function findModByJarPath(jarPath: string): Promise<Mod | null>;
58
58
  export declare function findModByModId(modId: string): Promise<Mod | null>;
59
+ /** Exact mod ID candidates; LIKE supplies ASCII case folding on SQLite. */
60
+ export declare function findModsByExactModId(modId: string): Promise<Mod[]>;
61
+ export declare function findModBySha1(sha1: string): Promise<Mod | null>;
59
62
  export declare function findModByModIdLike(modId: string): Promise<Mod | null>;
60
63
  /** Resolve mod by string or number. Numeric strings try findById first. */
61
64
  export declare function resolveModRef(ref: string | number): Promise<Mod | null>;
@@ -1 +1 @@
1
- {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../src/repositories/mod.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../src/repositories/mod.ts"],"names":[],"mappings":"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"}
@@ -32,6 +32,16 @@ export async function findModByModId(modId) {
32
32
  const db = await getDb();
33
33
  return db.mod.findFirst({ where: { modId } });
34
34
  }
35
+ /** Exact mod ID candidates; LIKE supplies ASCII case folding on SQLite. */
36
+ export async function findModsByExactModId(modId) {
37
+ const db = await getDb();
38
+ const rows = await db.mod.findMany({ where: { modId: { contains: modId, ...caseInsensitive() } } });
39
+ return rows.filter(row => row.modId.toLowerCase() === modId.toLowerCase());
40
+ }
41
+ export async function findModBySha1(sha1) {
42
+ const db = await getDb();
43
+ return db.mod.findFirst({ where: { sha1 } });
44
+ }
35
45
  export async function findModByModIdLike(modId) {
36
46
  const db = await getDb();
37
47
  return db.mod.findFirst({ where: { modId: { contains: modId } } });
@@ -48,7 +58,10 @@ export async function resolveModRef(ref) {
48
58
  if (byId)
49
59
  return byId;
50
60
  }
51
- return findModByModId(ref);
61
+ const matches = await findModsByExactModId(ref);
62
+ if (matches.length > 1)
63
+ throw new Error(`Multiple releases of ${ref} are indexed; specify a SHA-1 or database ID.`);
64
+ return matches[0] ?? null;
52
65
  }
53
66
  /** Slim resolveModRef — returns only id, modId, displayName, version, jarPath. */
54
67
  export async function resolveModRefSlim(ref) {
@@ -65,7 +78,11 @@ export async function resolveModRefSlim(ref) {
65
78
  if (byId)
66
79
  return byId;
67
80
  }
68
- return db.mod.findFirst({ where: { modId: { contains: String(ref) } }, select: sel });
81
+ const matches = await db.mod.findMany({ where: { modId: { contains: String(ref), ...caseInsensitive() } }, select: sel });
82
+ const exact = matches.filter(row => row.modId.toLowerCase() === String(ref).toLowerCase());
83
+ if (exact.length > 1)
84
+ throw new Error(`Multiple releases of ${ref} are indexed; specify a SHA-1 or database ID.`);
85
+ return exact[0] ?? null;
69
86
  }
70
87
  export async function findModByDupKey(modId, version, mcVersion, loader) {
71
88
  const db = await getDb();
@@ -1 +1 @@
1
- {"version":3,"file":"mod.js","sourceRoot":"","sources":["../../src/repositories/mod.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mod.js","sourceRoot":"","sources":["../../src/repositories/mod.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AA+BxD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,SAAiB;IAClD,MAAM,EAAE,GAAG,MAAM,KAAK,EAAE,CAAC;IACzB,MAAM,YAAY,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IACrG,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC;AAC7H,CAAC;AAED,iFAAiF;AAEjF,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,EAAU;IACxC,MAAM,EAAE,GAAG,MAAM,KAAK,EAAE,CAAC;IACzB,OAAO,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,OAAe;IAClD,MAAM,EAAE,GAAG,MAAM,KAAK,EAAE,CAAC;IACzB,OAAO,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,KAAa;IAC9C,MAAM,EAAE,GAAG,MAAM,KAAK,EAAE,CAAC;IACzB,OAAO,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;AAClD,CAAC;AAED,2EAA2E;AAC3E,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,KAAa;IACpD,MAAM,EAAE,GAAG,MAAM,KAAK,EAAE,CAAC;IACzB,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,eAAe,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACpG,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;AAC/E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAY;IAC5C,MAAM,EAAE,GAAG,MAAM,KAAK,EAAE,CAAC;IACzB,OAAO,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,KAAa;IAClD,MAAM,EAAE,GAAG,MAAM,KAAK,EAAE,CAAC;IACzB,OAAO,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;AACvE,CAAC;AAED,2EAA2E;AAC3E,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAoB;IACpD,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IAC3C,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;IACrD,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAChD,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,CAAC,CAAC,CAAC;QAClC,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC;IAC1B,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC,GAAG,CAAC,CAAC;IAChD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,GAAG,+CAA+C,CAAC,CAAC;IACpH,OAAO,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AAC9B,CAAC;AAED,kFAAkF;AAClF,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,GAAoB;IACxD,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IAC3C,MAAM,GAAG,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAW,CAAC;IAC/H,MAAM,EAAE,GAAG,MAAM,KAAK,EAAE,CAAC;IACzB,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC1B,OAAO,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IAClE,CAAC;IACD,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAChD,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QACxE,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC;IAC1B,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,eAAe,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IAC1H,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IAC3F,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,GAAG,+CAA+C,CAAC,CAAC;IAClH,OAAO,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AAC5B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACjC,KAAa,EAAE,OAAe,EAAE,SAAiB,EAAE,MAAc;IAEjE,MAAM,EAAE,GAAG,MAAM,KAAK,EAAE,CAAC;IACzB,OAAO,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;AAC9E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,MAAc;IAChD,MAAM,EAAE,GAAG,MAAM,KAAK,EAAE,CAAC;IACzB,OAAO,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW;IAC7B,MAAM,EAAE,GAAG,MAAM,KAAK,EAAE,CAAC;IACzB,OAAO,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAa;IAC7C,MAAM,EAAE,GAAG,MAAM,KAAK,EAAE,CAAC;IACzB,OAAO,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;AAC3D,CAAC;AAGD,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,IAG9B;IACG,MAAM,EAAE,GAAG,MAAM,KAAK,EAAE,CAAC;IACzB,OAAO,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC;QACnB,KAAK,EAAE;YACH,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/C,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/D,GAAG,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACtE,GAAG,CAAC,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzE,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,GAAG,eAAe,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC/F;QACD,OAAO,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE;QAC/B,IAAI,EAAE,IAAI,CAAC,KAAK,IAAI,GAAG;KAC1B,CAAC,CAAC;AACP,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAGlC;IACG,MAAM,EAAE,GAAG,MAAM,KAAK,EAAE,CAAC;IACzB,OAAO,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC;QACnB,KAAK,EAAE;YACH,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAChD,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,MAAM,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAChE,GAAG,CAAC,IAAI,EAAE,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvE,GAAG,CAAC,IAAI,EAAE,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1E,GAAG,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1E;QACD,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE;KACpH,CAAC,CAAC;AACP,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,IAE1C;IACG,MAAM,EAAE,GAAG,MAAM,KAAK,EAAE,CAAC;IACzB,OAAO,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC;QACnB,KAAK,EAAE;YACH,GAAG,CAAC,IAAI,EAAE,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvE,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAChD,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,MAAM,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SACnE;QACD,MAAM,EAAE;YACJ,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI;YACvD,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI;SACxE;QACD,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;KAC5B,CAA2B,CAAC;AACjC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,SAAkB;IACxD,MAAM,EAAE,GAAG,MAAM,KAAK,EAAE,CAAC;IACzB,OAAO,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC;QACnB,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,MAAM,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;QAC9D,MAAM,EAAE;YACJ,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI;YACvD,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI;SACpE;QACD,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;KAC5B,CAAyB,CAAC;AAC/B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,IAA8C;IACzF,MAAM,KAAK,GAA4B,EAAE,CAAC;IAC1C,IAAI,IAAI,EAAE,SAAS;QAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAChF,IAAI,IAAI,EAAE,MAAM;QAAK,KAAK,CAAC,QAAQ,CAAC,GAAM,IAAI,CAAC,MAAM,CAAC;IACtD,MAAM,EAAE,GAAG,MAAM,KAAK,EAAE,CAAC;IACzB,OAAO,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC;QACnB,KAAK;QACL,MAAM,EAAE;YACJ,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI;YACvD,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI;SACpE;QACD,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;KAClD,CAAyB,CAAC;AAC/B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAErC;IACG,MAAM,EAAE,GAAG,MAAM,KAAK,EAAE,CAAC;IACzB,OAAO,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC;QACnB,KAAK,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE;QACzE,MAAM,EAAE;YACJ,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI;YACpC,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI;YAC5C,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI;YAC3B,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI;YACpC,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI;SACnC;QACD,OAAO,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE;QACtB,IAAI,EAAE,IAAI,EAAE,KAAK,IAAI,GAAG;KAC3B,CAA0B,CAAC;AAChC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,KAA4B;IACxD,MAAM,EAAE,GAAG,MAAM,KAAK,EAAE,CAAC;IACzB,OAAO,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACnC,MAAM,EAAE,GAAG,MAAM,KAAK,EAAE,CAAC;IACzB,OAAO,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,KAAa,EAAE,IAElD;IACG,MAAM,CAAC,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IAC9B,yEAAyE;IACzE,yEAAyE;IACzE,MAAM,aAAa,GAAyB,aAAa,EAAE,KAAK,QAAQ;QACpE,CAAC,CAAE,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAsC;QACpE,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,aAAa,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,EAAE,CAAC;IAClE,MAAM,EAAE,GAAG,MAAM,KAAK,EAAE,CAAC;IACzB,OAAO,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC;QACnB,KAAK,EAAE;YACH,GAAG,EAAE;gBACD;oBACI,EAAE,EAAE;wBACA,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,eAAe,EAAE,EAAE,EAAE;wBAChD,EAAE,WAAW,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,eAAe,EAAE,EAAE,EAAE;wBACtD,aAAa;qBAChB;iBACJ;gBACD,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClD,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;aACrE;SACJ;QACD,OAAO,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE;QAC/B,IAAI,EAAE,IAAI,EAAE,KAAK,IAAI,EAAE;KAC1B,CAAC,CAAC;AACP,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,KAAc;IACtD,MAAM,EAAE,GAAG,MAAM,KAAK,EAAE,CAAC;IACzB,OAAO,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC;QACnB,KAAK,EAAE,KAAK;YACR,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,eAAe,EAAE,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,eAAe,EAAE,EAAE,EAAE,CAAC,EAAE;YAC5H,CAAC,CAAC,SAAS;QACf,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;QACvF,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;KAC5B,CAAC,CAAC;AACP,CAAC;AAED;;;;;GAKG;AACH,MAAM,kBAAkB,GAAG;IACvB,cAAc,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU;CACtF,CAAC;AAEX;;;;GAIG;AACH,SAAS,iBAAiB,CAAI,IAAO;IACjC,IAAI,aAAa,EAAE,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC9C,MAAM,GAAG,GAAG,EAAE,GAAI,IAAgC,EAAE,CAAC;IACrD,KAAK,MAAM,KAAK,IAAI,kBAAkB,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;QACzB,IAAI,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC7C,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACvC,CAAC;IACL,CAAC;IACD,OAAO,GAAQ,CAAC;AACpB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAA2B;IACvD,MAAM,EAAE,GAAG,MAAM,KAAK,EAAE,CAAC;IACzB,OAAO,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,EAAU,EAAE,IAA2B;IACnE,MAAM,EAAE,GAAG,MAAM,KAAK,EAAE,CAAC;IACzB,OAAO,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC3E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,EAAU;IAC3C,MAAM,EAAE,GAAG,MAAM,KAAK,EAAE,CAAC;IACzB,OAAO,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AAC5E,CAAC;AAED,iFAAiF;AAEjF,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACpC,MAAM,EAAE,GAAG,MAAM,KAAK,EAAE,CAAC;IACzB,OAAO,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;AAC/B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,KAAa;IAC/C,MAAM,EAAE,GAAG,MAAM,KAAK,EAAE,CAAC;IACzB,OAAO,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAAsC;IACzE,MAAM,EAAE,GAAG,MAAM,KAAK,EAAE,CAAC;IACzB,IAAI,CAAC;QACD,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;IACjE,CAAC;IAAC,MAAM,CAAC;QACL,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACrB,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC5D,CAAC;IACL,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,+BAA+B,CACjD,MAAiC,EACjC,MAAiC,EACjC,KAAa;IAEb,MAAM,EAAE,GAAG,MAAM,KAAK,EAAE,CAAC;IACzB,MAAM,KAAK,GAAG,MAAM,CAAC,UAA0C,CAAC;IAChE,IAAI,aAAa,EAAE,KAAK,QAAQ,IAAI,KAAK,EAAE,GAAG,KAAK,SAAS,EAAE,CAAC;QAC3D,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC;QACpD,MAAM,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC,aAAa,EAAE,YAAY,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;IACzG,CAAC;IACD,MAAM,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAW,CAAC;IAC5F,OAAO,OAAO,CAAC,GAAG,CAAC;QACf,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QAClE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;KACrE,CAAC,CAAC;AACP,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC5C,UAAoB;IAEpB,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACvC,MAAM,EAAE,GAAG,MAAM,KAAK,EAAE,CAAC;IACzB,OAAO,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACxB,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE;QACxC,MAAM,EAAE;YACJ,SAAS,EAAE,IAAI;YACf,KAAK,EAAE,IAAI;YACX,GAAG,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE;SACtD;KACJ,CAAsG,CAAC;AAC5G,CAAC;AAED,iFAAiF;AAEjF,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,EAAU;IAC1C,gGAAgG;IAChG,MAAM,EAAE,GAAG,MAAM,KAAK,EAAE,CAAC;IACzB,MAAM,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACrD,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACvD,MAAM,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,KAAa;IAC7C,MAAM,EAAE,GAAG,MAAM,KAAK,EAAE,CAAC;IACzB,MAAM,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAoC;IACpE,MAAM,EAAE,GAAG,MAAM,KAAK,EAAE,CAAC;IACzB,MAAM,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,OAAe,EAAE,QAAiB;IACtE,MAAM,EAAE,GAAG,MAAM,KAAK,EAAE,CAAC;IACzB,OAAO,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC;QACtB,KAAK,EAAE;YACH,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;YAClC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACpC;QACD,OAAO,EAAE,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;KACjH,CAAC,CAAC;AACP,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,KAAa,EAAE,QAAiB;IACnE,MAAM,EAAE,GAAG,MAAM,KAAK,EAAE,CAAC;IACzB,OAAO,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC;QACtB,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;QACnD,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;KACrD,CAAC,CAAC;AACP,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,OAAe,EAAE,QAAiB;IACzE,MAAM,EAAE,GAAG,MAAM,KAAK,EAAE,CAAC;IACzB,OAAO,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC;QACtB,KAAK,EAAE;YACH,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;YAClC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACpC;QACD,OAAO,EAAE,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,EAAE;KACnE,CAAC,CAAC;AACP,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,QAAiB;IACtD,MAAM,EAAE,GAAG,MAAM,KAAK,EAAE,CAAC;IACzB,OAAO,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC;QACtB,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;QAC3D,OAAO,EAAE,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE;QAC/E,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;KACrD,CAAC,CAAC;AACP,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,KAAa,EAAE,QAAiB,EAAE,KAAK,GAAG,EAAE;IAClF,MAAM,EAAE,GAAG,MAAM,KAAK,EAAE,CAAC;IACzB,OAAO,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC;QACtB,KAAK,EAAE;YACH,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,eAAe,EAAE,EAAE;YAClD,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACpC;QACD,OAAO,EAAE,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE;QAC/E,QAAQ,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC;QACjC,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;QAClD,IAAI,EAAE,KAAK;KACd,CAAC,CAAC;AACP,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB;IACtC,MAAM,EAAE,GAAG,MAAM,KAAK,EAAE,CAAC;IACzB,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC;QAClC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE;QAC3C,QAAQ,EAAE,CAAC,UAAU,EAAE,WAAW,CAAC;QACnC,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;KACvD,CAAC,CAAC;IACH,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,iFAAiF;AAEjF,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACrC,KAAa,EACb,SAAiB,EACjB,OAAe;IAEf,MAAM,EAAE,GAAG,MAAM,KAAK,EAAE,CAAC;IACzB,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC;QACtC,KAAK,EAAE,EAAE,eAAe,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE;QAChD,MAAM,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE;QACrC,MAAM,EAAE,EAAE,OAAO,EAAE;QACnB,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE;KACvB,CAAC,CAAC;IACH,OAAO,GAAG,CAAC,EAAE,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,KAAa;IACnD,MAAM,EAAE,GAAG,MAAM,KAAK,EAAE,CAAC;IACzB,OAAO,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAC9C,KAAa,EACb,KAAa,EACb,MAAc;IAEd,MAAM,EAAE,GAAG,MAAM,KAAK,EAAE,CAAC;IACzB,OAAO,EAAE,CAAC,eAAe,CACrB;;wCAEgC,EAChC,KAAK,EAAE,KAAK,EAAE,MAAM,CACvB,CAAC;AACN,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,6BAA6B,CAAC,KAAa;IAC7D,MAAM,EAAE,GAAG,MAAM,KAAK,EAAE,CAAC;IACzB,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,eAAe,CACjC,sGAAsG,EACtG,KAAK,CACR,CAAC;IACF,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACtC,KAAa,EACb,KAAa,EACb,KAAa;IAEb,OAAO,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AACnD,CAAC"}
Binary file
package/dist/server.js CHANGED
@@ -47,6 +47,7 @@ import { hostedToolMetadata } from "./hosted-tool-catalog.js";
47
47
  import { HostedOAuth, HostedOAuthError } from "./hosted-oauth.js";
48
48
  import { isRfc1918Peer } from "./private-network.js";
49
49
  import { reviewHostedMod, localModPlan } from "./hosted-mod-license.js";
50
+ import { resolveModReference } from "./mod-reference.js";
50
51
  // Load .env — try ~/.modlens/.env first (npx/installed users), then local .env (git-clone users)
51
52
  import { readFileSync, existsSync } from "fs";
52
53
  import { join, dirname } from "path";
@@ -173,8 +174,33 @@ function createMcpServer(principal, allowMinecraftSource = false) {
173
174
  });
174
175
  const limits = principal === undefined ? undefined : hostedLimits();
175
176
  function registerTool(name, description, schema, handler) {
177
+ const runReader = async (args, extra) => {
178
+ const action = String(args.action ?? args.report ?? "");
179
+ const readers = new Set(["mod", "mod_bytecode", "mod_mixins", "mod_jar", "mod_data", "mod_tags", "gradle", "reports", "pack_tools", "mc_data"]);
180
+ const scoped = name === "mod" ? ["get", "dependencies", "decompile", "decompile_status", "decompile_class",
181
+ "source", "search_source", "search_indexed", "search_semantic", "graph_query", "graph_report",
182
+ "graph_status", "embed_status", "get_paths", "index_fts", "index_semantic"].includes(action)
183
+ : name === "mod_bytecode" ? !["diff", "diff_detailed", "cache_diff", "cross_refs"].includes(action)
184
+ : name === "mod_mixins" ? ["targets", "resolve", "at_entries", "aw_entries"].includes(action)
185
+ : name === "mod_data" ? ["list", "get"].includes(action)
186
+ : name === "mod_tags" ? ["index", "mod_list"].includes(action)
187
+ : name === "gradle" ? action === "get_files"
188
+ : name === "pack_tools" ? action === "sidedness"
189
+ : name === "mc_data" ? action === "entity_attributes"
190
+ : name === "reports" ? action === "mod_overview" : true;
191
+ if (readers.has(name) && scoped && (args.modId !== undefined || args.dbId !== undefined)) {
192
+ const mod = await resolveModReference({ modId: args.modId,
193
+ dbId: args.dbId, sha1: args.sha1,
194
+ mcVersion: args.mcVersion, modVersion: args.modVersion,
195
+ loader: args.loader,
196
+ className: ["decompile_class", "bytecode", "class_members"].includes(action)
197
+ ? args.className : undefined });
198
+ args = { ...args, modId: mod.id, dbId: mod.id };
199
+ }
200
+ return handler(args, extra);
201
+ };
176
202
  if (!limits || principal === undefined) {
177
- server.tool(name, description, schema, handler);
203
+ server.tool(name, description, schema, safe(runReader));
178
204
  return;
179
205
  }
180
206
  const actions = hostedActions(name, allowMinecraftSource);
@@ -198,7 +224,7 @@ function createMcpServer(principal, allowMinecraftSource = false) {
198
224
  const publicDescription = `${metadata.description} Hosted actions: ${actions.filter(Boolean).join(", ") || "analysis"}. Responses and cumulative usage are bounded; use focused queries and source ranges.`;
199
225
  server.registerTool(name, { title: metadata.title, description: publicDescription,
200
226
  inputSchema: publicSchema, annotations: metadata.annotations }, (async (args, extra) => runHostedTool(name, args, principal, limits, hostedBudget, async (bounded) => {
201
- const result = await handler(bounded, extra);
227
+ const result = await runReader(bounded, extra);
202
228
  if (name === "mc_source" && (!result.isError || ["search_indexed", "search_code"].includes(String(bounded.action)))) {
203
229
  for (const version of [bounded.version, bounded.mcVersion, bounded.versionA, bounded.versionB]) {
204
230
  scheduleHostedMinecraftVersionIndex(version);
@@ -214,6 +240,7 @@ function createMcpServer(principal, allowMinecraftSource = false) {
214
240
  "Provide modId/dbId or projectKey+environmentId+className. Local plans must run on the user's computer; never claim a plan has executed.", {
215
241
  action: z.enum(["check", "local_plan"]),
216
242
  modId: z.union([z.string(), z.number()]).optional(), dbId: z.number().int().positive().optional(),
243
+ sha1: z.string().optional().describe("Exact JAR SHA-1 (40 hexadecimal characters)"),
217
244
  projectKey: z.string().optional(), environmentId: z.string().optional(), className: z.string().optional(),
218
245
  operation: z.enum(["source", "bytecode"]).optional(),
219
246
  startLine: z.number().int().positive().optional(), maxLines: z.number().int().positive().max(10000).optional(),
@@ -247,7 +274,7 @@ function createMcpServer(principal, allowMinecraftSource = false) {
247
274
  return out(result);
248
275
  }));
249
276
  // ── 1. mod ────────────────────────────────────────────────────────────────────
250
- registerTool("mod", "Mod database, decompile, and source browser. action=ingest|list|get|search|stats|dependencies|dep_graph|version_conflicts|source_urls|decompile|decompile_status|decompile_class|source|search_source|reindex|batch_ingest|batch_decompile|refresh_metadata|index_fts|search_indexed|index_semantic|search_semantic|get_paths|delete|graph_build|graph_status|graph_query|graph_report|graph_enrich_next|graph_enrich_submit|graph_download|graph_export|graph_submit|embed_export|embed_download|embed_download_all|embed_status|embed_submit. index_fts/search_indexed: BM25-ranked FTS over source code. index_semantic/search_semantic: vector search (requires Ollama). refresh_metadata: re-parse all mods with degraded metadata (filename/@Mod annotation) and upgrade if a higher-quality manifest is found. graph_enrich_next: get next un-enriched chunk for chat enrichment. graph_enrich_submit: submit enriched nodes/edges (chunkIndex, nodes, edges). graph_download: download pre-built graph from registry (targetType=mod|vanilla|modloader with targetId/targetVersion). graph_export: export a mod's local graph as a shareable gzipped bundle. graph_submit: validate an exported bundle and open a draft GitHub registry PR (bundlePath required). embed_export/embed_download/embed_status: targetType-aware embeddings actions for mod/vanilla/modloader. embed_download: downloads registry embeddings; protects local embeddings by default (use force=true to overwrite). embed_download_all: download embeddings for all mods. embed_submit: validate an exported bundle and open a draft GitHub registry PR (bundlePath required). Auto-behaviors: decompile_status auto-queues embedding (MODLENS_AUTO_EMBED) and graph build (MODLENS_AUTO_GRAPH). Pass autoEmbed/autoGraph to override per-call.", {
277
+ registerTool("mod", "Mod database, decompile, and source browser. Mod readers accept optional sha1 for an exact JAR and can resolve an unambiguous missing mod through modpacks.ch. action=ingest|list|get|search|stats|dependencies|dep_graph|version_conflicts|source_urls|decompile|decompile_status|decompile_class|source|search_source|reindex|batch_ingest|batch_decompile|refresh_metadata|index_fts|search_indexed|index_semantic|search_semantic|get_paths|delete|graph_build|graph_status|graph_query|graph_report|graph_enrich_next|graph_enrich_submit|graph_download|graph_export|graph_submit|embed_export|embed_download|embed_download_all|embed_status|embed_submit. index_fts/search_indexed: BM25-ranked FTS over source code. index_semantic/search_semantic: vector search (requires Ollama). refresh_metadata: re-parse all mods with degraded metadata (filename/@Mod annotation) and upgrade if a higher-quality manifest is found. graph_enrich_next: get next un-enriched chunk for chat enrichment. graph_enrich_submit: submit enriched nodes/edges (chunkIndex, nodes, edges). graph_download: download pre-built graph from registry (targetType=mod|vanilla|modloader with targetId/targetVersion). graph_export: export a mod's local graph as a shareable gzipped bundle. graph_submit: validate an exported bundle and open a draft GitHub registry PR (bundlePath required). embed_export/embed_download/embed_status: targetType-aware embeddings actions for mod/vanilla/modloader. embed_download: downloads registry embeddings; protects local embeddings by default (use force=true to overwrite). embed_download_all: download embeddings for all mods. embed_submit: validate an exported bundle and open a draft GitHub registry PR (bundlePath required). Auto-behaviors: decompile_status auto-queues embedding (MODLENS_AUTO_EMBED) and graph build (MODLENS_AUTO_GRAPH). Pass autoEmbed/autoGraph to override per-call.", {
251
278
  action: z.enum([
252
279
  "ingest", "list", "get", "search", "stats", "dependencies", "dep_graph",
253
280
  "version_conflicts", "source_urls", "decompile", "decompile_status",
@@ -260,6 +287,7 @@ function createMcpServer(principal, allowMinecraftSource = false) {
260
287
  jarPath: z.string().optional(),
261
288
  modId: z.union([z.string(), z.number()]).optional().describe("mod ID or DB id"),
262
289
  dbId: z.number().optional().describe("DB id"),
290
+ sha1: z.string().optional().describe("Exact JAR SHA-1"),
263
291
  query: z.string().optional(),
264
292
  path: z.string().optional(),
265
293
  startLine: z.number().int().positive().optional().describe("First source line, 1-based"),
@@ -469,7 +497,7 @@ function createMcpServer(principal, allowMinecraftSource = false) {
469
497
  return out(result);
470
498
  }));
471
499
  // ── 2. mod_bytecode ───────────────────────────────────────────────────────────
472
- registerTool("mod_bytecode", "Mod JAR bytecode and class analysis — for INGESTED MODS only (requires dbId or modId of an ingested mod). For vanilla Minecraft classes use mc_source instead. action=search_class|class_members|bytecode|find_refs|cross_refs|inheritance|diff|diff_detailed|cache_diff|find_implementors|scan_registrations|annotated_by|event_listeners|optional_integrations|network_payloads|config_schema. Most actions require dbId or modId. cross_refs/find_implementors/annotated_by/event_listeners can omit modId to search all mods. diff/diff_detailed/cache_diff require dbIdA+dbIdB. diff_detailed gives AST-level method/field changes with breaking-change flags (add semantic=true for cosine similarity, requires mod index_semantic). cache_diff forces a (re)compute and writes to DB. Set env AUTO_CACHE_MOD_DIFFS=1 to auto-cache all diff_detailed calls.", {
500
+ registerTool("mod_bytecode", "Mod JAR bytecode and class analysis. A modId may resolve a missing exact JAR through modpacks.ch; sha1 identifies a specific file. For vanilla Minecraft classes use mc_source instead. action=search_class|class_members|bytecode|find_refs|cross_refs|inheritance|diff|diff_detailed|cache_diff|find_implementors|scan_registrations|annotated_by|event_listeners|optional_integrations|network_payloads|config_schema. Most actions require dbId or modId. cross_refs/find_implementors/annotated_by/event_listeners can omit modId to search all mods. diff/diff_detailed/cache_diff require dbIdA+dbIdB. diff_detailed gives AST-level method/field changes with breaking-change flags (add semantic=true for cosine similarity, requires mod index_semantic). cache_diff forces a (re)compute and writes to DB. Set env AUTO_CACHE_MOD_DIFFS=1 to auto-cache all diff_detailed calls.", {
473
501
  action: z.enum(["search_class", "class_members", "bytecode", "find_refs", "cross_refs", "inheritance", "diff", "diff_detailed", "cache_diff", "find_implementors", "scan_registrations", "annotated_by", "event_listeners", "optional_integrations", "network_payloads", "config_schema"]),
474
502
  dbId: z.number().optional().describe("DB id"),
475
503
  dbIdA: z.number().optional().describe("older DB id"),
@@ -480,6 +508,7 @@ function createMcpServer(principal, allowMinecraftSource = false) {
480
508
  annotation: z.string().optional().describe("slash/dot annotation class"),
481
509
  event: z.string().optional().describe("slash/dot event class"),
482
510
  modId: z.union([z.string(), z.number()]).optional().describe("Mod ID string (e.g. 'polylib') or numeric DB id. Resolved via DB lookup."),
511
+ sha1: z.string().optional().describe("Exact JAR SHA-1"),
483
512
  transitive: z.boolean().optional(),
484
513
  mcVersion: z.string().optional(),
485
514
  loader: z.string().optional(),
@@ -549,6 +578,7 @@ function createMcpServer(principal, allowMinecraftSource = false) {
549
578
  action: z.enum(["targets", "resolve", "conflicts", "targets_in_package", "at_conflicts", "at_entries", "aw_entries"]),
550
579
  modId: z.union([z.string(), z.number()]).optional().describe("mod ID or DB id"),
551
580
  dbId: z.number().optional().describe("DB id"),
581
+ sha1: z.string().optional().describe("Exact JAR SHA-1"),
552
582
  targetClass: z.string().optional().describe("slash/dot class name"),
553
583
  packagePrefix: z.string().optional().describe("slash/dot package prefix"),
554
584
  mcVersion: z.string().optional(),
@@ -904,9 +934,9 @@ function createMcpServer(principal, allowMinecraftSource = false) {
904
934
  return out(result);
905
935
  }));
906
936
  // ── 7. mappings ───────────────────────────────────────────────────────────────
907
- registerTool("mappings", "Minecraft name mappings and Parchment parameter docs. action=find translates one symbol between namespaces; action=remap rewrites a mod JAR and requires inputJar/outputJar/toMapping; action=parchment|list_parchment|parchment_summary reads Parchment docs.", {
937
+ registerTool("mappings", "Minecraft name mappings and Parchment parameter docs. action=find translates one symbol between namespaces, including exact-version Forge SRG members (for example Mob.m_20183_() or f_77313_) to Mojmap; ambiguous names return found=false. action=remap rewrites a mod JAR and requires inputJar/outputJar/toMapping; action=parchment|list_parchment|parchment_summary reads Parchment docs.", {
908
938
  action: z.enum(["find", "remap", "parchment", "list_parchment", "parchment_summary"]),
909
- symbol: z.string().optional().describe("Symbol to translate; use with action=find, not action=remap"),
939
+ symbol: z.string().optional().describe("Symbol to translate; use with action=find, not action=remap. SRG members accept Owner.m_123_(), Owner.f_123_, or bare m_123_ / f_123_. Supply owner and descriptor when available."),
910
940
  version: z.string().optional(),
911
941
  sourceNs: z.enum(["official", "intermediary", "yarn", "mojmap", "srg", "mcp"]).optional().describe("Source namespace for action=find. Allowed: official, intermediary, yarn, mojmap, srg, mcp"),
912
942
  targetNs: z.enum(["official", "intermediary", "yarn", "mojmap", "srg", "mcp"]).optional().describe("Target namespace for action=find. Allowed: official, intermediary, yarn, mojmap, srg, mcp"),
@@ -1120,6 +1150,7 @@ function createMcpServer(principal, allowMinecraftSource = false) {
1120
1150
  id: z.string().optional(),
1121
1151
  entity: z.string().optional().describe("entity id e.g. 'player'"),
1122
1152
  modId: z.union([z.string(), z.number()]).optional().describe("mod ID or DB id"),
1153
+ sha1: z.string().optional().describe("Exact JAR SHA-1 for entity_attributes modId"),
1123
1154
  limit: z.number().optional().describe("Max results (lang)"),
1124
1155
  }, safe(async ({ action, version, registry, tagId, namespace, entry, type, outputItem, recipeId, item, category, path, filter, block, modelPath, resolveParents, biomeId, id, entity, modId, limit }) => {
1125
1156
  let result;
@@ -1242,6 +1273,7 @@ function createMcpServer(principal, allowMinecraftSource = false) {
1242
1273
  registerTool("mod_jar", "Mod JAR file access and registry discovery (lang, sounds, atlases, configs, manifests). action=list_files|get_file|lang|sounds|atlas|registry_entries|manifest|list_configs|get_config.", {
1243
1274
  action: z.enum(["list_files", "get_file", "lang", "sounds", "atlas", "registry_entries", "manifest", "list_configs", "get_config"]),
1244
1275
  modId: z.union([z.string(), z.number()]).describe("mod ID or DB id"),
1276
+ sha1: z.string().optional().describe("Exact JAR SHA-1"),
1245
1277
  prefix: z.string().optional(),
1246
1278
  path: z.string().optional().describe("internal JAR path"),
1247
1279
  filter: z.string().optional(),
@@ -1287,6 +1319,7 @@ function createMcpServer(principal, allowMinecraftSource = false) {
1287
1319
  action: z.enum(["list", "get", "diff", "trace_item"]).describe("list/get: JAR data operations; diff: compare two mod versions; trace_item: recipe chain"),
1288
1320
  type: z.enum(["recipe", "loot_table", "advancement", "blockstate", "model", "biome", "structure", "data_tag", "particle", "damage_type", "enchantment", "configured_feature", "placed_feature", "structure_set", "noise", "density_function", "processor_list", "template_pool", "dimension_type", "dimension", "trim_material", "trim_pattern", "painting_variant", "wolf_variant", "cat_variant", "chat_type"]).describe("Data type to query"),
1289
1321
  modId: z.union([z.string(), z.number()]).optional().describe("mod ID or DB id"),
1322
+ sha1: z.string().optional().describe("Exact JAR SHA-1"),
1290
1323
  dbIdA: z.number().optional().describe("older DB id"),
1291
1324
  dbIdB: z.number().optional().describe("newer DB id"),
1292
1325
  itemId: z.string().optional().describe("resource id e.g. 'mekanism:steel_ingot'"),
@@ -1334,6 +1367,7 @@ function createMcpServer(principal, allowMinecraftSource = false) {
1334
1367
  registerTool("mod_tags", "Cross-mod data-pack tag indexing — index, browse, expand, find contributors, and detect replace:true conflicts. action=index|index_all|namespaces|contributors|expand|mod_list|find_conflicts|search.", {
1335
1368
  action: z.enum(["index", "index_all", "namespaces", "contributors", "expand", "mod_list", "find_conflicts", "search"]),
1336
1369
  modId: z.union([z.string(), z.number()]).optional().describe("Mod ID string or DB id (index, mod_list)"),
1370
+ sha1: z.string().optional().describe("Exact JAR SHA-1"),
1337
1371
  tagPath: z.string().optional().describe("Tag path to look up contributors or expand (contributors, expand), e.g. 'c:ores/iron', '#forge:storage_blocks'"),
1338
1372
  registry: z.string().optional().describe("block|item|entity_type|fluid|..."),
1339
1373
  query: z.string().optional(),
@@ -1402,6 +1436,7 @@ function createMcpServer(principal, allowMinecraftSource = false) {
1402
1436
  registerTool("gradle", "Gradle build file analysis — extract deps/plugins, search across mods, compare dependency versions. action=get_files|search|compare_deps.", {
1403
1437
  action: z.enum(["get_files", "search", "compare_deps"]),
1404
1438
  modId: z.union([z.string(), z.number()]).optional().describe("Mod ID string or DB id (get_files)"),
1439
+ sha1: z.string().optional().describe("Exact JAR SHA-1"),
1405
1440
  query: z.string().optional(),
1406
1441
  modIdFilter: z.string().optional().describe("modId substring filter"),
1407
1442
  groupFilter: z.string().optional().describe("group:artifact substring"),
@@ -1432,6 +1467,7 @@ function createMcpServer(principal, allowMinecraftSource = false) {
1432
1467
  report: z.enum(["mixin_conflicts", "tag_conflicts", "version_conflicts", "mod_overview", "gradle_deps", "pack_compat", "dep_graph", "sidedness", "mod_complexity", "pack_changelog"]),
1433
1468
  savePath: z.string().optional().describe("Absolute path to save the .md file, e.g. 'C:/reports/mixin_conflicts.md'"),
1434
1469
  modId: z.union([z.string(), z.number()]).optional(),
1470
+ sha1: z.string().optional().describe("Exact JAR SHA-1"),
1435
1471
  loader: z.string().optional(),
1436
1472
  mcVersion: z.string().optional(),
1437
1473
  registry: z.string().optional(),
@@ -1459,6 +1495,7 @@ function createMcpServer(principal, allowMinecraftSource = false) {
1459
1495
  "action=health: one-shot modpack health overview \u2014 mod count, loader breakdown, missing deps, mixin hotspots, tag conflicts, platform link stats (mcVersion, loader).", {
1460
1496
  action: z.enum(["asset_conflicts", "vanilla_overrides", "sidedness", "pack_sidedness", "complexity", "pack_changelog", "data_conflicts", "pack_graph", "config_diff", "health"]),
1461
1497
  modId: z.union([z.string(), z.number()]).optional(),
1498
+ sha1: z.string().optional().describe("Exact JAR SHA-1"),
1462
1499
  assetType: z.enum(["textures", "models", "sounds", "blockstates", "shaders", "all"]).optional().describe("Asset sub-folder filter (asset_conflicts)"),
1463
1500
  dataType: z.enum(["recipe", "loot_tables", "advancements", "tags", "structures", "all"]).optional().describe("Data sub-folder filter (data_conflicts)"),
1464
1501
  overrideType: z.enum(["data", "assets", "all"]).optional().describe("Override type filter (vanilla_overrides)"),
@@ -1528,7 +1565,7 @@ function createMcpServer(principal, allowMinecraftSource = false) {
1528
1565
  return out(result);
1529
1566
  }));
1530
1567
  // ── 22. analyze_crash_log ────────────────────────────────────────────────────
1531
- registerTool("analyze_crash_log", "Parse a NeoForge/Forge/Fabric crash log and return suspect mods ranked by stack-frame hits against the indexed class DB.", {
1568
+ registerTool("analyze_crash_log", "Parse a NeoForge/Forge/Fabric crash log and return suspect mods ranked by stack-frame hits against the indexed class DB. Verified Forge SRG member translations appear in crashFacts.mappedMembers and mapped frame names; these names do not establish cause.", {
1532
1569
  logText: z.string().describe("full crash log text"),
1533
1570
  }, safe(async ({ logText }) => {
1534
1571
  const result = await analyzeCrashLog(logText);