@creeperhost/modlens-mcp 1.6.18 → 1.6.19

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 (179) hide show
  1. package/README.md +97 -10
  2. package/TESTING.md +69 -0
  3. package/dist/cli.js +21 -5
  4. package/dist/cli.js.map +1 -1
  5. package/dist/curseforge.d.ts +9 -7
  6. package/dist/curseforge.d.ts.map +1 -1
  7. package/dist/curseforge.js +48 -55
  8. package/dist/curseforge.js.map +1 -1
  9. package/dist/db.d.ts.map +1 -1
  10. package/dist/db.js +31 -1
  11. package/dist/db.js.map +1 -1
  12. package/dist/embeddings.d.ts.map +1 -1
  13. package/dist/embeddings.js +1 -0
  14. package/dist/embeddings.js.map +1 -1
  15. package/dist/feed-the-beast.d.ts +5 -5
  16. package/dist/feed-the-beast.d.ts.map +1 -1
  17. package/dist/feed-the-beast.js +5 -21
  18. package/dist/feed-the-beast.js.map +1 -1
  19. package/dist/java-tools.d.ts +1 -0
  20. package/dist/java-tools.d.ts.map +1 -1
  21. package/dist/java-tools.js +31 -7
  22. package/dist/java-tools.js.map +1 -1
  23. package/dist/launcher.js +15 -0
  24. package/dist/launcher.js.map +1 -1
  25. package/dist/mappings.d.ts +4 -1
  26. package/dist/mappings.d.ts.map +1 -1
  27. package/dist/mappings.js +120 -52
  28. package/dist/mappings.js.map +1 -1
  29. package/dist/minecraft.d.ts +0 -4
  30. package/dist/minecraft.d.ts.map +1 -1
  31. package/dist/minecraft.js +7 -23
  32. package/dist/minecraft.js.map +1 -1
  33. package/dist/mod-artifacts.d.ts +4 -0
  34. package/dist/mod-artifacts.d.ts.map +1 -0
  35. package/dist/mod-artifacts.js +58 -0
  36. package/dist/mod-artifacts.js.map +1 -0
  37. package/dist/modpacks-ch.d.ts +72 -46
  38. package/dist/modpacks-ch.d.ts.map +1 -1
  39. package/dist/modpacks-ch.js +134 -20
  40. package/dist/modpacks-ch.js.map +1 -1
  41. package/dist/modrinth.d.ts +14 -6
  42. package/dist/modrinth.d.ts.map +1 -1
  43. package/dist/modrinth.js +70 -55
  44. package/dist/modrinth.js.map +1 -1
  45. package/dist/platform-adapter.d.ts +1 -0
  46. package/dist/platform-adapter.d.ts.map +1 -1
  47. package/dist/platform.d.ts.map +1 -1
  48. package/dist/platform.js +20 -44
  49. package/dist/platform.js.map +1 -1
  50. package/dist/processor.d.ts +5 -0
  51. package/dist/processor.d.ts.map +1 -1
  52. package/dist/processor.js +166 -46
  53. package/dist/processor.js.map +1 -1
  54. package/dist/registry-submission.d.ts +34 -0
  55. package/dist/registry-submission.d.ts.map +1 -0
  56. package/dist/registry-submission.js +128 -0
  57. package/dist/registry-submission.js.map +1 -0
  58. package/dist/repositories/array-fields.d.ts +3 -0
  59. package/dist/repositories/array-fields.d.ts.map +1 -0
  60. package/dist/repositories/array-fields.js +8 -0
  61. package/dist/repositories/array-fields.js.map +1 -0
  62. package/dist/repositories/embeddings-sqlite.d.ts +1 -0
  63. package/dist/repositories/embeddings-sqlite.d.ts.map +1 -1
  64. package/dist/repositories/embeddings-sqlite.js +26 -58
  65. package/dist/repositories/embeddings-sqlite.js.map +1 -1
  66. package/dist/repositories/embeddings.d.ts.map +1 -1
  67. package/dist/repositories/embeddings.js +26 -3
  68. package/dist/repositories/embeddings.js.map +1 -1
  69. package/dist/repositories/index.d.ts +1 -1
  70. package/dist/repositories/index.d.ts.map +1 -1
  71. package/dist/repositories/mod.d.ts +8 -5
  72. package/dist/repositories/mod.d.ts.map +1 -1
  73. package/dist/repositories/mod.js +25 -11
  74. package/dist/repositories/mod.js.map +1 -1
  75. package/dist/repositories/packs.d.ts.map +1 -1
  76. package/dist/repositories/packs.js +10 -2
  77. package/dist/repositories/packs.js.map +1 -1
  78. package/dist/search-adapter.d.ts +2 -0
  79. package/dist/search-adapter.d.ts.map +1 -1
  80. package/dist/search-adapter.js +21 -9
  81. package/dist/search-adapter.js.map +1 -1
  82. package/dist/security.d.ts +2 -0
  83. package/dist/security.d.ts.map +1 -1
  84. package/dist/security.js +5 -1
  85. package/dist/security.js.map +1 -1
  86. package/dist/server.js +63 -25
  87. package/dist/server.js.map +1 -1
  88. package/dist/sqlite-json.d.ts +3 -0
  89. package/dist/sqlite-json.d.ts.map +1 -0
  90. package/dist/sqlite-json.js +78 -0
  91. package/dist/sqlite-json.js.map +1 -0
  92. package/dist/sqlite-parameters.d.ts +3 -0
  93. package/dist/sqlite-parameters.d.ts.map +1 -0
  94. package/dist/sqlite-parameters.js +19 -0
  95. package/dist/sqlite-parameters.js.map +1 -0
  96. package/dist/sqlite-schema.d.ts +4 -0
  97. package/dist/sqlite-schema.d.ts.map +1 -0
  98. package/dist/sqlite-schema.js +76 -0
  99. package/dist/sqlite-schema.js.map +1 -0
  100. package/dist/tools/catalog.d.ts +1 -6
  101. package/dist/tools/catalog.d.ts.map +1 -1
  102. package/dist/tools/catalog.js +10 -14
  103. package/dist/tools/catalog.js.map +1 -1
  104. package/dist/tools/compat-check.d.ts.map +1 -1
  105. package/dist/tools/compat-check.js +18 -30
  106. package/dist/tools/compat-check.js.map +1 -1
  107. package/dist/tools/diagnostics.js.map +1 -1
  108. package/dist/tools/docs.d.ts.map +1 -1
  109. package/dist/tools/docs.js +8 -3
  110. package/dist/tools/docs.js.map +1 -1
  111. package/dist/tools/embed-registry.d.ts +20 -4
  112. package/dist/tools/embed-registry.d.ts.map +1 -1
  113. package/dist/tools/embed-registry.js +30 -19
  114. package/dist/tools/embed-registry.js.map +1 -1
  115. package/dist/tools/graphify.d.ts +19 -4
  116. package/dist/tools/graphify.d.ts.map +1 -1
  117. package/dist/tools/graphify.js +61 -13
  118. package/dist/tools/graphify.js.map +1 -1
  119. package/dist/tools/ingest.d.ts.map +1 -1
  120. package/dist/tools/ingest.js +4 -4
  121. package/dist/tools/ingest.js.map +1 -1
  122. package/dist/tools/kubejs.js +1 -1
  123. package/dist/tools/kubejs.js.map +1 -1
  124. package/dist/tools/mc-fts.d.ts.map +1 -1
  125. package/dist/tools/mc-fts.js +9 -4
  126. package/dist/tools/mc-fts.js.map +1 -1
  127. package/dist/tools/mcmeta.d.ts +10 -1
  128. package/dist/tools/mcmeta.d.ts.map +1 -1
  129. package/dist/tools/mcmeta.js +43 -29
  130. package/dist/tools/mcmeta.js.map +1 -1
  131. package/dist/tools/mixin-scan.d.ts +12 -6
  132. package/dist/tools/mixin-scan.d.ts.map +1 -1
  133. package/dist/tools/mixin-scan.js +12 -7
  134. package/dist/tools/mixin-scan.js.map +1 -1
  135. package/dist/tools/mod-data.d.ts.map +1 -1
  136. package/dist/tools/mod-data.js +40 -27
  137. package/dist/tools/mod-data.js.map +1 -1
  138. package/dist/tools/modpacks-ch.d.ts +9 -5
  139. package/dist/tools/modpacks-ch.d.ts.map +1 -1
  140. package/dist/tools/modpacks-ch.js +54 -33
  141. package/dist/tools/modpacks-ch.js.map +1 -1
  142. package/dist/tools/packtools.js +3 -3
  143. package/dist/tools/packtools.js.map +1 -1
  144. package/dist/tools/platform.d.ts +2 -2
  145. package/dist/tools/platform.d.ts.map +1 -1
  146. package/dist/tools/platform.js +33 -23
  147. package/dist/tools/platform.js.map +1 -1
  148. package/dist/tools/project.d.ts +342 -0
  149. package/dist/tools/project.d.ts.map +1 -0
  150. package/dist/tools/project.js +519 -0
  151. package/dist/tools/project.js.map +1 -0
  152. package/dist/tools/reports.d.ts.map +1 -1
  153. package/dist/tools/reports.js +5 -3
  154. package/dist/tools/reports.js.map +1 -1
  155. package/dist/tools/vanilla-data.d.ts.map +1 -1
  156. package/dist/tools/vanilla-data.js +3 -33
  157. package/dist/tools/vanilla-data.js.map +1 -1
  158. package/dist/tools/vanilla.d.ts +3 -1
  159. package/dist/tools/vanilla.d.ts.map +1 -1
  160. package/dist/tools/vanilla.js +26 -12
  161. package/dist/tools/vanilla.js.map +1 -1
  162. package/dist/tools/version-diff.d.ts.map +1 -1
  163. package/dist/tools/version-diff.js +4 -24
  164. package/dist/tools/version-diff.js.map +1 -1
  165. package/dist/version-ranges.d.ts +5 -0
  166. package/dist/version-ranges.d.ts.map +1 -0
  167. package/dist/version-ranges.js +93 -0
  168. package/dist/version-ranges.js.map +1 -0
  169. package/package.json +5 -1
  170. package/prisma/backends/template.db +0 -0
  171. package/scripts/build-template-db.mjs +3 -1
  172. package/scripts/enable-sqlite-vec.mjs +2 -106
  173. package/scripts/gradle/modlens.init.gradle +154 -0
  174. package/scripts/project-upload.mjs +74 -0
  175. package/scripts/test-minecraft-eras.mjs +202 -0
  176. package/scripts/test-package.mjs +8 -0
  177. package/scripts/test-project-gradle.mjs +76 -0
  178. package/scripts/test-project-http.mjs +98 -0
  179. package/scripts/test-setup.mjs +18 -0
@@ -5,20 +5,26 @@
5
5
  * Postgres/PGlite: uses native tsvector (mc_source_files) or
6
6
  * case-insensitive LIKE via Prisma's mode:"insensitive".
7
7
  * SQLite: uses FTS5 MATCH (mc_source_files) or raw LIKE (docs/primers).
8
- * SQLite paths throw until P2 wires them.
9
8
  */
10
9
  import { detectBackend } from "./db-backend.js";
11
10
  import { getDb } from "./db.js";
11
+ import { sqliteDatabasePath } from "./sqlite-schema.js";
12
12
  /** Escape LIKE metacharacters so user input is matched literally. */
13
13
  function escapeLike(s) {
14
14
  return s.replace(/[%_\\]/g, c => "\\" + c);
15
15
  }
16
+ /** Match code identifiers literally instead of interpreting punctuation as FTS operators. */
17
+ export function sqliteFtsQuery(query) {
18
+ return query.trim().split(/\s+/).filter(Boolean).map(token => `"${token.replace(/"/g, '""')}"`).join(" AND ");
19
+ }
16
20
  // ── mc_source_files FTS ───────────────────────────────────────────────────────
17
21
  export async function ftsSearchSource(mcVersionId, query, limit) {
22
+ if (!query.trim())
23
+ return [];
18
24
  const backend = detectBackend();
19
25
  if (backend === "sqlite") {
20
26
  const url = process.env.DATABASE_URL ?? "";
21
- const path = url.replace(/^file:\/\//, "").replace(/^file:/, "");
27
+ const path = sqliteDatabasePath(url);
22
28
  const Database = (await import("better-sqlite3")).default;
23
29
  const db = new Database(path, { readonly: true });
24
30
  try {
@@ -26,7 +32,7 @@ export async function ftsSearchSource(mcVersionId, query, limit) {
26
32
  JOIN mc_source_files s ON s.id = f.rowid
27
33
  WHERE f.fts_mc_source MATCH ? AND s.mc_version_id = ?
28
34
  ORDER BY rank
29
- LIMIT ?`).all(query, mcVersionId, limit);
35
+ LIMIT ?`).all(sqliteFtsQuery(query), mcVersionId, limit);
30
36
  return rows.map(r => ({
31
37
  className: r.class_name,
32
38
  snippet: r.content.slice(0, 300),
@@ -61,10 +67,12 @@ export async function ftsSearchSource(mcVersionId, query, limit) {
61
67
  * Mod source must be indexed first (mod index_fts or index_semantic action).
62
68
  */
63
69
  export async function ftsSearchModSource(modId, query, limit) {
70
+ if (!query.trim())
71
+ return [];
64
72
  const backend = detectBackend();
65
73
  if (backend === "sqlite") {
66
74
  const url = process.env.DATABASE_URL ?? "";
67
- const path = url.replace(/^file:\/\//, "").replace(/^file:/, "");
75
+ const path = sqliteDatabasePath(url);
68
76
  const Database = (await import("better-sqlite3")).default;
69
77
  const db = new Database(path, { readonly: true });
70
78
  try {
@@ -72,7 +80,7 @@ export async function ftsSearchModSource(modId, query, limit) {
72
80
  JOIN mod_source_files s ON s.id = f.rowid
73
81
  WHERE f.fts_mod_source MATCH ? AND s.mod_id = ?
74
82
  ORDER BY rank
75
- LIMIT ?`).all(query, modId, limit);
83
+ LIMIT ?`).all(sqliteFtsQuery(query), modId, limit);
76
84
  return rows.map(r => ({
77
85
  className: r.class_name,
78
86
  snippet: r.content.slice(0, 300),
@@ -101,10 +109,12 @@ export async function ftsSearchModSource(modId, query, limit) {
101
109
  }
102
110
  // ── doc_entries FTS ───────────────────────────────────────────────────────────
103
111
  export async function ftsSearchDocs(query, limit = 20) {
112
+ if (!query.trim())
113
+ return [];
104
114
  const backend = detectBackend();
105
115
  if (backend === "sqlite") {
106
116
  const url = process.env.DATABASE_URL ?? "";
107
- const path = url.replace(/^file:\/\//, "").replace(/^file:/, "");
117
+ const path = sqliteDatabasePath(url);
108
118
  const Database = (await import("better-sqlite3")).default;
109
119
  const db = new Database(path, { readonly: true });
110
120
  try {
@@ -113,7 +123,7 @@ export async function ftsSearchDocs(query, limit = 20) {
113
123
  JOIN doc_entries d ON d.id = f.rowid
114
124
  WHERE f.fts_doc_entries MATCH ?
115
125
  ORDER BY rank
116
- LIMIT ?`).all(query, limit);
126
+ LIMIT ?`).all(sqliteFtsQuery(query), limit);
117
127
  return rows.map(r => ({ ...r, tags: JSON.parse(r.tags ?? "[]") }));
118
128
  }
119
129
  finally {
@@ -136,10 +146,12 @@ export async function ftsSearchDocs(query, limit = 20) {
136
146
  }
137
147
  // ── primers FTS ───────────────────────────────────────────────────────────────
138
148
  export async function ftsSearchPrimers(query, modloader, limit = 20) {
149
+ if (!query.trim())
150
+ return [];
139
151
  const backend = detectBackend();
140
152
  if (backend === "sqlite") {
141
153
  const url = process.env.DATABASE_URL ?? "";
142
- const path = url.replace(/^file:\/\//, "").replace(/^file:/, "");
154
+ const path = sqliteDatabasePath(url);
143
155
  const Database = (await import("better-sqlite3")).default;
144
156
  const db = new Database(path, { readonly: true });
145
157
  try {
@@ -149,7 +161,7 @@ export async function ftsSearchPrimers(query, modloader, limit = 20) {
149
161
  WHERE f.fts_primers MATCH ?
150
162
  ${modloader ? "AND p.modloader = ?" : ""}
151
163
  ORDER BY rank
152
- LIMIT ?`).all(...[query, ...(modloader ? [modloader] : []), limit]);
164
+ LIMIT ?`).all(...[sqliteFtsQuery(query), ...(modloader ? [modloader] : []), limit]);
153
165
  return rows.map(r => ({
154
166
  id: r.id, title: r.title, summary: r.summary,
155
167
  from_version: r.from_version, to_version: r.to_version,
@@ -1 +1 @@
1
- {"version":3,"file":"search-adapter.js","sourceRoot":"","sources":["../src/search-adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"search-adapter.js","sourceRoot":"","sources":["../src/search-adapter.ts"],"names":[],"mappings":"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"}
@@ -40,6 +40,8 @@ export declare function safeRegex(pattern: string, flags?: string): RegExp;
40
40
  * Compute the SHA-512 hex digest of a file on disk.
41
41
  */
42
42
  export declare function fileSha512(filePath: string): Promise<string>;
43
+ /** SHA-1 is the file identity supported by the modpacks.ch mod lookup route. */
44
+ export declare function fileSha1(filePath: string): Promise<string>;
43
45
  /**
44
46
  * Verify a file's SHA-512 against an expected value.
45
47
  * Throws `HashMismatchError` if they differ.
@@ -1 +1 @@
1
- {"version":3,"file":"security.d.ts","sourceRoot":"","sources":["../src/security.ts"],"names":[],"mappings":"AAOA;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CASlD;AAID;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAYpE;AAMD;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CASxD;AAID;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAK7C;AAMD;;;GAGG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,SAAM,GAAG,MAAM,CAS9D;AAID;;GAEG;AACH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAGlE;AAED;;;GAGG;AACH,qBAAa,iBAAkB,SAAQ,KAAK;gBAC5B,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAIjE;AAED,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAK5F;AAID;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAiBnD;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAmC1D;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE9D;AAYD,UAAU,gBAAgB;IACtB,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AAoBD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB,CAwFpE;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAChC,KAAK,EAAE,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC,EAClD,KAAK,EAAE,KAAK,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC,GACzF,gBAAgB,CAElB;AAkBD;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,OAAO,GAAG,gBAAgB,CAwEzE;AAID;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,OAAO,GAAG,gBAAgB,CAuB1E;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,OAAO,GAAG,gBAAgB,CAsB1E"}
1
+ {"version":3,"file":"security.d.ts","sourceRoot":"","sources":["../src/security.ts"],"names":[],"mappings":"AAOA;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CASlD;AAID;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAYpE;AAMD;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CASxD;AAID;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAK7C;AAMD;;;GAGG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,SAAM,GAAG,MAAM,CAS9D;AAID;;GAEG;AACH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAGlE;AAED,gFAAgF;AAChF,wBAAsB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAEhE;AAED;;;GAGG;AACH,qBAAa,iBAAkB,SAAQ,KAAK;gBAC5B,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAIjE;AAED,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAK5F;AAID;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAiBnD;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAmC1D;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE9D;AAYD,UAAU,gBAAgB;IACtB,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AAoBD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB,CAwFpE;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAChC,KAAK,EAAE,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC,EAClD,KAAK,EAAE,KAAK,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC,GACzF,gBAAgB,CAElB;AAkBD;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,OAAO,GAAG,gBAAgB,CAwEzE;AAID;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,OAAO,GAAG,gBAAgB,CAuB1E;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,OAAO,GAAG,gBAAgB,CAsB1E"}
package/dist/security.js CHANGED
@@ -98,6 +98,10 @@ export async function fileSha512(filePath) {
98
98
  const buf = await readFile(filePath);
99
99
  return createHash("sha512").update(buf).digest("hex");
100
100
  }
101
+ /** SHA-1 is the file identity supported by the modpacks.ch mod lookup route. */
102
+ export async function fileSha1(filePath) {
103
+ return createHash("sha1").update(await readFile(filePath)).digest("hex");
104
+ }
101
105
  /**
102
106
  * Verify a file's SHA-512 against an expected value.
103
107
  * Throws `HashMismatchError` if they differ.
@@ -373,7 +377,7 @@ export function validateEmbeddingBundle(bundle) {
373
377
  return { valid: false, reason: "entry missing className" };
374
378
  if (e.className.length > 500)
375
379
  return { valid: false, reason: "className too long" };
376
- if (!JAVA_CLASS_PATTERN.test(e.className)) {
380
+ if (!JAVA_CLASS_PATTERN.test(e.className.replace(/\//g, "."))) {
377
381
  return { valid: false, reason: `invalid className format: ${e.className.slice(0, 50)}` };
378
382
  }
379
383
  // Embedding validation
@@ -1 +1 @@
1
- {"version":3,"file":"security.js","sourceRoot":"","sources":["../src/security.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"security.js","sourceRoot":"","sources":["../src/security.ts"],"names":[],"mappings":"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"}
package/dist/server.js CHANGED
@@ -31,13 +31,14 @@ import { getModGradleFiles, searchGradleFiles, compareGradleDeps, } from "./tool
31
31
  import { generateReport } from "./tools/reports.js";
32
32
  import { findAssetConflicts, findVanillaOverrides, analyzeModSidedness, analyzePackSidedness, computeModComplexity, computePackChangelog, findDataConflicts, buildPackGraph, diffPackConfigs, packHealth } from "./tools/packtools.js";
33
33
  import { indexKubeJsScripts, searchKubeJsScripts, semanticSearchKubeJsScripts } from "./tools/kubejs.js";
34
- import { searchPacksAction, featuredPacksAction, packInfoAction, packManifestAction, syncPackModsAction, resolvePackAction, listRemotePackVersionsAction, ingestPackAction, searchFtbModsAction, ftbModInfoAction, downloadModAction, downloadOverridesAction, listPackVersionsAction, listPackFilesAction, findModInPacksAction } from "./tools/modpacks-ch.js";
34
+ import { searchPacksAction, featuredPacksAction, packInfoAction, packManifestAction, syncPackModsAction, resolvePackAction, listRemotePackVersionsAction, ingestPackAction, searchModsAction, modInfoAction, downloadModAction, downloadOverridesAction, listPackVersionsAction, listPackFilesAction, findModInPacksAction } from "./tools/modpacks-ch.js";
35
35
  import { analyzeCrashLog, findMissingDeps } from "./tools/diagnostics.js";
36
36
  import { checkModCompat } from "./tools/compat-check.js";
37
37
  import { disconnect } from "./db.js";
38
38
  import { mcPaths } from "./minecraft.js";
39
39
  import { findModById, resolveModRefSlim } from "./repositories/mod.js";
40
40
  import { CACHE_ROOT } from "./cache.js";
41
+ import { projectAction, projectToolSchema } from "./tools/project.js";
41
42
  // Load .env — try ~/.modlens/.env first (npx/installed users), then local .env (git-clone users)
42
43
  import { readFileSync, existsSync } from "fs";
43
44
  import { join, dirname } from "path";
@@ -72,7 +73,7 @@ const VERBOSE = process.env.MODLENS_VERBOSE
72
73
  /** Best-effort, bounded JSON for logging tool params (handles circular refs). */
73
74
  function previewArgs(value) {
74
75
  try {
75
- const json = JSON.stringify(value);
76
+ const json = JSON.stringify(value, (key, item) => ["projectKey", "data"].includes(key) ? "[redacted]" : item);
76
77
  if (json == null)
77
78
  return String(value);
78
79
  return json.length > 2000 ? json.slice(0, 2000) + "…(truncated)" : json;
@@ -105,6 +106,12 @@ function resolveDbId(dbId, modId) {
105
106
  const n = typeof modId === "number" ? modId : Number(modId);
106
107
  return Number.isFinite(n) && n > 0 ? n : undefined;
107
108
  }
109
+ function requireModRef(modId, dbId) {
110
+ const ref = dbId ?? modId;
111
+ if (ref === undefined || ref === "")
112
+ throw new Error("modId or dbId is required");
113
+ return ref;
114
+ }
108
115
  /**
109
116
  * Like resolveDbId, but for actions that need a valid DB id — will look up
110
117
  * string modIds via the database so agents can pass e.g. modId:"polylib".
@@ -149,10 +156,12 @@ function safe(fn) {
149
156
  }
150
157
  class JsonBodyParseError extends Error {
151
158
  }
159
+ class HttpBodyTooLargeError extends Error {
160
+ }
152
161
  function createMcpServer() {
153
162
  const server = new McpServer({ name: "modlens", version: pkg.version });
154
163
  // ── 1. mod ────────────────────────────────────────────────────────────────────
155
- server.tool("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: (stub) community graph submission not yet functional. 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: (stub) community embedding submission not yet functional. Auto-behaviors: decompile_status auto-queues embedding (MODLENS_AUTO_EMBED) and graph build (MODLENS_AUTO_GRAPH). Pass autoEmbed/autoGraph to override per-call.", {
164
+ server.tool("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.", {
156
165
  action: z.enum([
157
166
  "ingest", "list", "get", "search", "stats", "dependencies", "dep_graph",
158
167
  "version_conflicts", "source_urls", "decompile", "decompile_status",
@@ -193,10 +202,13 @@ function createMcpServer() {
193
202
  targetLoader: z.string().optional().describe("Optional loader hint for registry matching"),
194
203
  targetMcVersion: z.string().optional().describe("Optional MC version hint for registry matching"),
195
204
  model: z.string().optional().describe("Embedding model override for embed_download"),
205
+ bundlePath: z.string().optional().describe("Exported bundle file for graph_submit or embed_submit"),
206
+ contributor: z.string().optional().describe("Contributor alias for a registry submission"),
207
+ note: z.string().optional().describe("Note for the registry pull request"),
196
208
  autoEmbed: z.boolean().optional().describe("Override auto-embed on decompile completion (default: env MODLENS_AUTO_EMBED, true)"),
197
209
  autoGraph: z.boolean().optional().describe("Override auto-graph-build on decompile/source-download (default: env MODLENS_AUTO_GRAPH, true)"),
198
210
  provenance: z.enum(["local", "registry", "community"]).optional().describe("Filter search_semantic results by embedding source (default: all sources)"),
199
- }, safe(async ({ action, jarPath, modId, dbId: rawDbId, query, path, className, loader, mcVersion, hasMixins, decompiled, recursive, skipSource, isRegex, force, limit, directory, indexClasses, replace, budget, backend, chunkIndex, nodes, edges, outputDir, modVersion, targetType, targetId, targetVersion, targetLoader, targetMcVersion, model, autoEmbed, autoGraph, provenance }) => {
211
+ }, safe(async ({ action, jarPath, modId, dbId: rawDbId, query, path, className, loader, mcVersion, hasMixins, decompiled, recursive, skipSource, isRegex, force, limit, directory, indexClasses, replace, budget, backend, chunkIndex, nodes, edges, outputDir, modVersion, targetType, targetId, targetVersion, targetLoader, targetMcVersion, model, autoEmbed, autoGraph, provenance, bundlePath, contributor, note }) => {
200
212
  const dbId = await resolveDbIdAsync(rawDbId, modId);
201
213
  const resolvedTargetType = targetType ?? "mod";
202
214
  const resolvedTargetId = targetId ?? (typeof modId === "string" ? modId : undefined) ?? (resolvedTargetType === "vanilla" ? "minecraft" : undefined);
@@ -210,7 +222,7 @@ function createMcpServer() {
210
222
  result = await listMods({ loader: loader, mcVersion, hasMixins, decompiled, limit: limit ?? 50 });
211
223
  break;
212
224
  case "get":
213
- result = await getModDetails(modId);
225
+ result = await getModDetails(requireModRef(modId, rawDbId));
214
226
  break;
215
227
  case "search":
216
228
  result = await searchMods(query, { loader, mcVersion, limit: limit ?? 20 });
@@ -219,7 +231,7 @@ function createMcpServer() {
219
231
  result = await getDbStats();
220
232
  break;
221
233
  case "dependencies":
222
- result = await getDependencies(modId, recursive ?? false);
234
+ result = await getDependencies(requireModRef(modId, rawDbId), recursive ?? false);
223
235
  break;
224
236
  case "dep_graph":
225
237
  result = await getDependencyGraph(mcVersion);
@@ -337,7 +349,7 @@ function createMcpServer() {
337
349
  result = await exportGraph(dbId, outputDir);
338
350
  break;
339
351
  case "graph_submit":
340
- result = await submitGraph({ bundlePath: outputDir ?? "" });
352
+ result = await submitGraph({ bundlePath: bundlePath ?? outputDir ?? "", contributor, note });
341
353
  break;
342
354
  case "embed_export":
343
355
  result = await exportEmbeddings(resolvedTargetType, outputDir, { dbId, mcVersion: resolvedTargetVersion ?? mcVersion, targetId: resolvedTargetId });
@@ -363,7 +375,7 @@ function createMcpServer() {
363
375
  });
364
376
  break;
365
377
  case "embed_submit":
366
- result = await submitEmbeddings({ bundlePath: outputDir ?? "" });
378
+ result = await submitEmbeddings({ bundlePath: bundlePath ?? outputDir ?? "", contributor, note });
367
379
  break;
368
380
  }
369
381
  return out(result);
@@ -458,7 +470,7 @@ function createMcpServer() {
458
470
  let result;
459
471
  switch (action) {
460
472
  case "targets":
461
- result = await getMixinTargets(modId);
473
+ result = await getMixinTargets(requireModRef(modId, rawDbId));
462
474
  break;
463
475
  case "resolve":
464
476
  result = await resolveMixinTargets(dbId);
@@ -483,7 +495,7 @@ function createMcpServer() {
483
495
  }));
484
496
  // ── 4. platform ───────────────────────────────────────────────────────────────
485
497
  server.tool("platform", "Modrinth/CurseForge platform sync and source download. action=sync_modrinth|sync_curseforge|check_updates|batch_sync|download_source|search|batch_check_updates. " +
486
- "action=search: unified mod search across both Modrinth and CurseForge — deduplicated, sorted by downloads (query required, loader, mcVersion, limit). " +
498
+ "action=search: unified mod search across both Modrinth and CurseForge — deduplicated, sorted by downloads (query required, loader, mcVersion, limit). Missing modpacks.ch loader labels are recovered by inspecting cached/downloaded JARs. " +
487
499
  "action=batch_check_updates: check ALL linked mods for newer versions on Modrinth/CurseForge in one pass (mcVersion, loader, modIdFilter, limit). " +
488
500
  "download_source downloads GitHub source without decompilation — auto-queues graph build (override with autoGraph). Env: MODLENS_AUTO_GRAPH (default: 1).", {
489
501
  action: z.enum(["sync_modrinth", "sync_curseforge", "check_updates", "batch_sync", "download_source", "search", "batch_check_updates"]),
@@ -529,22 +541,22 @@ function createMcpServer() {
529
541
  }));
530
542
  // ── 5. modpacks_ch ───────────────────────────────────────────────────────────
531
543
  server.tool("modpacks_ch", "Search, resolve, list versions for, and ingest arbitrary modpacks so other ModLens tools can analyze the exact pack contents. General workflow: when the user names a modpack and possibly a fuzzy version like 7.1, call action=list_versions with packRef/versionRef, choose the best matching version, then call action=ingest_pack before using analyze_crash_log, reports, pack_tools, dependency checks, mixin scans, source search, or other pack-aware analysis. Crash triage is one common use, not the only use. " +
532
- "Backends: modpacks.ch API (CreeperHost service) for FTB/CurseForge, Modrinth API/.mrpack for Modrinth, and the official Feed The Beast API when namespace=feedthebeast. CurseForge via modpacks.ch requires no CurseForge API key. Modrinth packRef may be a slug/project ID, a modrinth.com modpack/version URL, an api.modrinth.com project/version URL, a cdn.modrinth.com .mrpack URL, or any direct HTTPS .mrpack URL. " +
533
- "action=search|featured|info|manifest|resolve_pack|list_versions|ingest_pack|sync_pack_mods|search_ftb_mods|ftb_mod_info|download_mod|download_overrides|list_pack_versions|list_pack_files|find_mod_in_packs. " +
534
- "namespace=ftb|curseforge|modrinth|feedthebeast (default: ftb). Use feedthebeast for api.feed-the-beast.com packs; use ftb for the modpacks.ch FTB namespace. resolve_pack/list_versions/ingest_pack accept packRef=name/slug/id and versionRef=version id/name/number/partial text. list_versions returns matches for fuzzy refs; list_pack_versions is DB-backed synced-pack history. " +
544
+ "Metadata comes from modpacks.ch for all providers; downloads use the supplied URLs and Modrinth .mrpack archives. Loader-filtered mod queries automatically download and inspect unlabeled JARs; recovered labels report loaderSource=jar. No CurseForge API key is required. Modrinth packRef may be a slug/project ID, a modrinth.com modpack/version URL, an api.modrinth.com project/version URL, a cdn.modrinth.com .mrpack URL, or any direct HTTPS .mrpack URL. " +
545
+ "action=search|featured|info|manifest|resolve_pack|list_versions|ingest_pack|sync_pack_mods|search_mods|mod_info|download_mod|download_overrides|list_pack_versions|list_pack_files|find_mod_in_packs. mod_info returns up to limit versions (default 20). search_ftb_mods and ftb_mod_info remain compatibility aliases. " +
546
+ "namespace=ftb|curseforge|modrinth|feedthebeast (default: ftb). feedthebeast uses the modpacks.ch /ftb catalog; ftb uses /modpack. resolve_pack/list_versions/ingest_pack accept packRef=name/slug/id and versionRef=version id/name/number/partial text. list_versions returns matches for fuzzy refs; list_pack_versions is DB-backed synced-pack history. " +
535
547
  "User-Agent is set per modpacks.ch (CreeperHost) team request for usage tracking.", {
536
- action: z.enum(["search", "featured", "info", "manifest", "resolve_pack", "list_versions", "ingest_pack", "sync_pack_mods", "search_ftb_mods", "ftb_mod_info", "download_mod", "download_overrides", "list_pack_versions", "list_pack_files", "find_mod_in_packs"]),
537
- namespace: z.enum(["ftb", "curseforge", "modrinth", "feedthebeast"]).optional().describe("ftb, curseforge, modrinth, or feedthebeast (default: ftb). feedthebeast uses api.feed-the-beast.com; ftb uses modpacks.ch."),
548
+ action: z.enum(["search", "featured", "info", "manifest", "resolve_pack", "list_versions", "ingest_pack", "sync_pack_mods", "search_mods", "mod_info", "search_ftb_mods", "ftb_mod_info", "download_mod", "download_overrides", "list_pack_versions", "list_pack_files", "find_mod_in_packs"]),
549
+ namespace: z.enum(["ftb", "curseforge", "modrinth", "feedthebeast"]).optional().describe("Provider catalog on modpacks.ch (default: ftb). feedthebeast selects /ftb; ftb selects /modpack."),
538
550
  packId: z.number().optional().describe("Numeric FTB/CurseForge pack ID or internal Modrinth pack key returned by resolve/list actions"),
539
551
  versionId: z.number().optional().describe("Numeric FTB/CurseForge version ID or internal Modrinth version key returned by resolve/list actions"),
540
552
  packRef: z.union([z.number(), z.string()]).optional().describe("Pack name, slug, Modrinth project ID, CurseForge pack ID, FTB/feedthebeast pack ID, Modrinth web/API/CDN URL, or direct HTTPS .mrpack URL. Use for resolve_pack/list_versions/ingest_pack."),
541
553
  versionRef: z.union([z.number(), z.string()]).optional().describe("Version ID, full version name, version number, or fuzzy partial text such as 7.1. Use list_versions first if ambiguous."),
542
554
  packVersionDbId: z.number().optional().describe("Pack version DB id returned by sync_pack_mods (shortcut for list_pack_files)"),
543
- query: z.string().optional().describe("Search query (required for search, search_ftb_mods)"),
544
- modId: z.union([z.number(), z.string()]).optional().describe("FTB mod ID (required for ftb_mod_info, download_mod)"),
545
- fileId: z.number().optional().describe("Exact CF file ID to download (download_mod; skips mcVersion/loader filter)"),
546
- loader: z.string().optional().describe("Loader filter for ftb_mod_info/download_mod (e.g. neoforge, fabric)"),
547
- mcVersionFilter: z.string().optional().describe("MC version filter for ftb_mod_info/download_mod (e.g. 26.1.2)"),
555
+ query: z.string().optional().describe("Search query (required for search, search_mods)"),
556
+ modId: z.union([z.number(), z.string()]).optional().describe("CurseForge project ID or Modrinth project ID/slug (required for mod_info, download_mod)"),
557
+ fileId: z.union([z.number(), z.string()]).optional().describe("Exact CurseForge file ID or Modrinth version ID to download (download_mod; skips mcVersion/loader filter)"),
558
+ loader: z.string().optional().describe("Loader filter for mod_info/download_mod (e.g. forge, fabric, neoforge)"),
559
+ mcVersionFilter: z.string().optional().describe("MC version filter for mod_info/download_mod (e.g. 1.7.10, 1.12.2, 1.21.1)"),
548
560
  force: z.boolean().optional().describe("Force re-download even if cached (download_mod)"),
549
561
  modDbId: z.number().optional().describe("ModLens DB mod id (for find_mod_in_packs)"),
550
562
  cfProject: z.number().optional().describe("CurseForge project id (for find_mod_in_packs)"),
@@ -597,15 +609,17 @@ function createMcpServer() {
597
609
  throw new Error("Use action=ingest_pack for Modrinth packs");
598
610
  result = await syncPackModsAction({ packId, versionId, namespace: ns, fileTypes, skipServer, skipOptional, concurrency, maxFiles });
599
611
  break;
612
+ case "search_mods":
600
613
  case "search_ftb_mods":
601
614
  if (!query)
602
- throw new Error("query is required for action=search_ftb_mods");
603
- result = await searchFtbModsAction(query, limit ?? 20);
615
+ throw new Error("query is required for action=search_mods");
616
+ result = await searchModsAction(query, limit ?? 20);
604
617
  break;
618
+ case "mod_info":
605
619
  case "ftb_mod_info":
606
620
  if (modId === undefined)
607
- throw new Error("modId is required for action=ftb_mod_info");
608
- result = await ftbModInfoAction(modId, { mcVersion: mcVersionFilter, loader });
621
+ throw new Error("modId is required for action=mod_info");
622
+ result = await modInfoAction(modId, { mcVersion: mcVersionFilter, loader, limit });
609
623
  break;
610
624
  case "download_mod":
611
625
  if (modId === undefined)
@@ -1305,6 +1319,12 @@ function createMcpServer() {
1305
1319
  return out(result);
1306
1320
  }));
1307
1321
  // ── 18. reports ───────────────────────────────────────────────────────────────
1322
+ server.tool("project", "Import and query a private Gradle compile environment, including prepared ATs, mappings and loader patches. " +
1323
+ "Use this instead of mc_source/mod source or member tools when answering about an imported project. " +
1324
+ "Every query requires projectKey and immutable environmentId; no shared vanilla caches are modified. " +
1325
+ "Export with scripts/gradle/modlens.init.gradle; use scripts/project-upload.mjs for remote imports. " +
1326
+ "action=import_local|upload_begin|upload_chunk|upload_finish|upload_abort|list|info|classes|source|search|members|bytecode. " +
1327
+ "list is restricted to the supplied private key. Search covers provided sources and cached decompiles, not all runtime transformations.", projectToolSchema, safe(async (params) => out(await projectAction(params))));
1308
1328
  server.tool("reports", "Generate Markdown reports. report=mixin_conflicts|tag_conflicts|version_conflicts|mod_overview|gradle_deps|pack_compat|dep_graph|sidedness|mod_complexity|pack_changelog. savePath to write to disk.", {
1309
1329
  report: z.enum(["mixin_conflicts", "tag_conflicts", "version_conflicts", "mod_overview", "gradle_deps", "pack_compat", "dep_graph", "sidedness", "mod_complexity", "pack_changelog"]),
1310
1330
  savePath: z.string().optional().describe("Absolute path to save the .md file, e.g. 'C:/reports/mixin_conflicts.md'"),
@@ -1469,8 +1489,23 @@ async function startHttpServer(port) {
1469
1489
  const transports = new Map();
1470
1490
  const readBody = (req) => new Promise((resolve, reject) => {
1471
1491
  const chunks = [];
1472
- req.on("data", (c) => chunks.push(c));
1492
+ let size = 0;
1493
+ let oversized = false;
1494
+ req.on("data", (c) => {
1495
+ size += c.length;
1496
+ if (size > 8 * 1024 * 1024) {
1497
+ if (!oversized) {
1498
+ oversized = true;
1499
+ chunks.length = 0;
1500
+ reject(new HttpBodyTooLargeError("Request body exceeds 8 MiB; use project upload chunks"));
1501
+ }
1502
+ return;
1503
+ }
1504
+ chunks.push(c);
1505
+ });
1473
1506
  req.on("end", () => {
1507
+ if (oversized)
1508
+ return;
1474
1509
  const raw = Buffer.concat(chunks).toString("utf8");
1475
1510
  if (!raw)
1476
1511
  return resolve(undefined);
@@ -1482,6 +1517,7 @@ async function startHttpServer(port) {
1482
1517
  }
1483
1518
  });
1484
1519
  req.on("error", reject);
1520
+ req.on("aborted", () => reject(new Error("Request aborted")));
1485
1521
  });
1486
1522
  const sendJson = (res, status, body) => {
1487
1523
  const payload = JSON.stringify(body);
@@ -1551,6 +1587,8 @@ async function startHttpServer(port) {
1551
1587
  }
1552
1588
  catch (err) {
1553
1589
  if (!res.headersSent) {
1590
+ if (err instanceof HttpBodyTooLargeError)
1591
+ return sendJson(res, 413, { error: err.message });
1554
1592
  if (err instanceof JsonBodyParseError) {
1555
1593
  return sendJson(res, 400, {
1556
1594
  jsonrpc: "2.0",