@creeperhost/modlens-mcp 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (382) hide show
  1. package/README.md +938 -0
  2. package/dist/access-flags.d.ts +58 -0
  3. package/dist/access-flags.d.ts.map +1 -0
  4. package/dist/access-flags.js +79 -0
  5. package/dist/access-flags.js.map +1 -0
  6. package/dist/access-flags.test.d.ts +2 -0
  7. package/dist/access-flags.test.d.ts.map +1 -0
  8. package/dist/access-flags.test.js +189 -0
  9. package/dist/access-flags.test.js.map +1 -0
  10. package/dist/batch-ingest.d.ts +2 -0
  11. package/dist/batch-ingest.d.ts.map +1 -0
  12. package/dist/batch-ingest.js +54 -0
  13. package/dist/batch-ingest.js.map +1 -0
  14. package/dist/batch-resolve-mixins.d.ts +2 -0
  15. package/dist/batch-resolve-mixins.d.ts.map +1 -0
  16. package/dist/batch-resolve-mixins.js +36 -0
  17. package/dist/batch-resolve-mixins.js.map +1 -0
  18. package/dist/cache.d.ts +16 -0
  19. package/dist/cache.d.ts.map +1 -0
  20. package/dist/cache.js +36 -0
  21. package/dist/cache.js.map +1 -0
  22. package/dist/cli.d.ts +2 -0
  23. package/dist/cli.d.ts.map +1 -0
  24. package/dist/cli.js +1318 -0
  25. package/dist/cli.js.map +1 -0
  26. package/dist/curseforge.d.ts +53 -0
  27. package/dist/curseforge.d.ts.map +1 -0
  28. package/dist/curseforge.js +104 -0
  29. package/dist/curseforge.js.map +1 -0
  30. package/dist/db-backend.d.ts +17 -0
  31. package/dist/db-backend.d.ts.map +1 -0
  32. package/dist/db-backend.js +40 -0
  33. package/dist/db-backend.js.map +1 -0
  34. package/dist/db.d.ts +11 -0
  35. package/dist/db.d.ts.map +1 -0
  36. package/dist/db.js +55 -0
  37. package/dist/db.js.map +1 -0
  38. package/dist/embed-queue.d.ts +12 -0
  39. package/dist/embed-queue.d.ts.map +1 -0
  40. package/dist/embed-queue.js +103 -0
  41. package/dist/embed-queue.js.map +1 -0
  42. package/dist/embeddings.d.ts +21 -0
  43. package/dist/embeddings.d.ts.map +1 -0
  44. package/dist/embeddings.js +55 -0
  45. package/dist/embeddings.js.map +1 -0
  46. package/dist/env-path.d.ts +19 -0
  47. package/dist/env-path.d.ts.map +1 -0
  48. package/dist/env-path.js +40 -0
  49. package/dist/env-path.js.map +1 -0
  50. package/dist/fetch-utils.d.ts +24 -0
  51. package/dist/fetch-utils.d.ts.map +1 -0
  52. package/dist/fetch-utils.js +73 -0
  53. package/dist/fetch-utils.js.map +1 -0
  54. package/dist/fetch-utils.test.d.ts +2 -0
  55. package/dist/fetch-utils.test.d.ts.map +1 -0
  56. package/dist/fetch-utils.test.js +133 -0
  57. package/dist/fetch-utils.test.js.map +1 -0
  58. package/dist/generated/sqlite/browser.d.ts +55 -0
  59. package/dist/generated/sqlite/browser.d.ts.map +1 -0
  60. package/dist/generated/sqlite/browser.js +18 -0
  61. package/dist/generated/sqlite/browser.js.map +1 -0
  62. package/dist/generated/sqlite/client.d.ts +72 -0
  63. package/dist/generated/sqlite/client.d.ts.map +1 -0
  64. package/dist/generated/sqlite/client.js +33 -0
  65. package/dist/generated/sqlite/client.js.map +1 -0
  66. package/dist/generated/sqlite/commonInputTypes.d.ts +387 -0
  67. package/dist/generated/sqlite/commonInputTypes.d.ts.map +1 -0
  68. package/dist/generated/sqlite/commonInputTypes.js +11 -0
  69. package/dist/generated/sqlite/commonInputTypes.js.map +1 -0
  70. package/dist/generated/sqlite/enums.d.ts +2 -0
  71. package/dist/generated/sqlite/enums.d.ts.map +1 -0
  72. package/dist/generated/sqlite/enums.js +11 -0
  73. package/dist/generated/sqlite/enums.js.map +1 -0
  74. package/dist/generated/sqlite/internal/class.d.ts +226 -0
  75. package/dist/generated/sqlite/internal/class.d.ts.map +1 -0
  76. package/dist/generated/sqlite/internal/class.js +84 -0
  77. package/dist/generated/sqlite/internal/class.js.map +1 -0
  78. package/dist/generated/sqlite/internal/prismaNamespace.d.ts +1344 -0
  79. package/dist/generated/sqlite/internal/prismaNamespace.d.ts.map +1 -0
  80. package/dist/generated/sqlite/internal/prismaNamespace.js +220 -0
  81. package/dist/generated/sqlite/internal/prismaNamespace.js.map +1 -0
  82. package/dist/generated/sqlite/internal/prismaNamespaceBrowser.d.ts +204 -0
  83. package/dist/generated/sqlite/internal/prismaNamespaceBrowser.d.ts.map +1 -0
  84. package/dist/generated/sqlite/internal/prismaNamespaceBrowser.js +191 -0
  85. package/dist/generated/sqlite/internal/prismaNamespaceBrowser.js.map +1 -0
  86. package/dist/generated/sqlite/models/DocEntry.d.ts +1223 -0
  87. package/dist/generated/sqlite/models/DocEntry.d.ts.map +1 -0
  88. package/dist/generated/sqlite/models/DocEntry.js +2 -0
  89. package/dist/generated/sqlite/models/DocEntry.js.map +1 -0
  90. package/dist/generated/sqlite/models/McSourceFile.d.ts +1289 -0
  91. package/dist/generated/sqlite/models/McSourceFile.d.ts.map +1 -0
  92. package/dist/generated/sqlite/models/McSourceFile.js +2 -0
  93. package/dist/generated/sqlite/models/McSourceFile.js.map +1 -0
  94. package/dist/generated/sqlite/models/McVersion.d.ts +1315 -0
  95. package/dist/generated/sqlite/models/McVersion.d.ts.map +1 -0
  96. package/dist/generated/sqlite/models/McVersion.js +2 -0
  97. package/dist/generated/sqlite/models/McVersion.js.map +1 -0
  98. package/dist/generated/sqlite/models/McVersionDiff.d.ts +1061 -0
  99. package/dist/generated/sqlite/models/McVersionDiff.d.ts.map +1 -0
  100. package/dist/generated/sqlite/models/McVersionDiff.js +2 -0
  101. package/dist/generated/sqlite/models/McVersionDiff.js.map +1 -0
  102. package/dist/generated/sqlite/models/Mod.d.ts +2396 -0
  103. package/dist/generated/sqlite/models/Mod.d.ts.map +1 -0
  104. package/dist/generated/sqlite/models/Mod.js +2 -0
  105. package/dist/generated/sqlite/models/Mod.js.map +1 -0
  106. package/dist/generated/sqlite/models/ModClass.d.ts +1254 -0
  107. package/dist/generated/sqlite/models/ModClass.d.ts.map +1 -0
  108. package/dist/generated/sqlite/models/ModClass.js +2 -0
  109. package/dist/generated/sqlite/models/ModClass.js.map +1 -0
  110. package/dist/generated/sqlite/models/ModSourceFile.d.ts +1283 -0
  111. package/dist/generated/sqlite/models/ModSourceFile.d.ts.map +1 -0
  112. package/dist/generated/sqlite/models/ModSourceFile.js +2 -0
  113. package/dist/generated/sqlite/models/ModSourceFile.js.map +1 -0
  114. package/dist/generated/sqlite/models/ModTag.d.ts +1278 -0
  115. package/dist/generated/sqlite/models/ModTag.d.ts.map +1 -0
  116. package/dist/generated/sqlite/models/ModTag.js +2 -0
  117. package/dist/generated/sqlite/models/ModTag.js.map +1 -0
  118. package/dist/generated/sqlite/models/ModVersionDiff.d.ts +1073 -0
  119. package/dist/generated/sqlite/models/ModVersionDiff.d.ts.map +1 -0
  120. package/dist/generated/sqlite/models/ModVersionDiff.js +2 -0
  121. package/dist/generated/sqlite/models/ModVersionDiff.js.map +1 -0
  122. package/dist/generated/sqlite/models/Primer.d.ts +1319 -0
  123. package/dist/generated/sqlite/models/Primer.d.ts.map +1 -0
  124. package/dist/generated/sqlite/models/Primer.js +2 -0
  125. package/dist/generated/sqlite/models/Primer.js.map +1 -0
  126. package/dist/generated/sqlite/models.d.ts +12 -0
  127. package/dist/generated/sqlite/models.d.ts.map +1 -0
  128. package/dist/generated/sqlite/models.js +2 -0
  129. package/dist/generated/sqlite/models.js.map +1 -0
  130. package/dist/jar.d.ts +7 -0
  131. package/dist/jar.d.ts.map +1 -0
  132. package/dist/jar.js +52 -0
  133. package/dist/jar.js.map +1 -0
  134. package/dist/java-tools.d.ts +46 -0
  135. package/dist/java-tools.d.ts.map +1 -0
  136. package/dist/java-tools.js +263 -0
  137. package/dist/java-tools.js.map +1 -0
  138. package/dist/launcher.d.ts +3 -0
  139. package/dist/launcher.d.ts.map +1 -0
  140. package/dist/launcher.js +105 -0
  141. package/dist/launcher.js.map +1 -0
  142. package/dist/mappings.d.ts +95 -0
  143. package/dist/mappings.d.ts.map +1 -0
  144. package/dist/mappings.js +1094 -0
  145. package/dist/mappings.js.map +1 -0
  146. package/dist/mappings.test.d.ts +2 -0
  147. package/dist/mappings.test.d.ts.map +1 -0
  148. package/dist/mappings.test.js +161 -0
  149. package/dist/mappings.test.js.map +1 -0
  150. package/dist/minecraft.d.ts +21 -0
  151. package/dist/minecraft.d.ts.map +1 -0
  152. package/dist/minecraft.js +70 -0
  153. package/dist/minecraft.js.map +1 -0
  154. package/dist/modpacks-ch.d.ts +224 -0
  155. package/dist/modpacks-ch.d.ts.map +1 -0
  156. package/dist/modpacks-ch.js +146 -0
  157. package/dist/modpacks-ch.js.map +1 -0
  158. package/dist/modrinth.d.ts +67 -0
  159. package/dist/modrinth.d.ts.map +1 -0
  160. package/dist/modrinth.js +88 -0
  161. package/dist/modrinth.js.map +1 -0
  162. package/dist/platform-adapter.d.ts +23 -0
  163. package/dist/platform-adapter.d.ts.map +1 -0
  164. package/dist/platform-adapter.js +2 -0
  165. package/dist/platform-adapter.js.map +1 -0
  166. package/dist/platform.d.ts +47 -0
  167. package/dist/platform.d.ts.map +1 -0
  168. package/dist/platform.js +175 -0
  169. package/dist/platform.js.map +1 -0
  170. package/dist/processor.d.ts +51 -0
  171. package/dist/processor.d.ts.map +1 -0
  172. package/dist/processor.js +655 -0
  173. package/dist/processor.js.map +1 -0
  174. package/dist/processor.test.d.ts +2 -0
  175. package/dist/processor.test.d.ts.map +1 -0
  176. package/dist/processor.test.js +629 -0
  177. package/dist/processor.test.js.map +1 -0
  178. package/dist/repositories/embeddings-sqlite.d.ts +38 -0
  179. package/dist/repositories/embeddings-sqlite.d.ts.map +1 -0
  180. package/dist/repositories/embeddings-sqlite.js +208 -0
  181. package/dist/repositories/embeddings-sqlite.js.map +1 -0
  182. package/dist/repositories/embeddings.d.ts +40 -0
  183. package/dist/repositories/embeddings.d.ts.map +1 -0
  184. package/dist/repositories/embeddings.js +136 -0
  185. package/dist/repositories/embeddings.js.map +1 -0
  186. package/dist/repositories/index.d.ts +2 -0
  187. package/dist/repositories/index.d.ts.map +1 -0
  188. package/dist/repositories/index.js +15 -0
  189. package/dist/repositories/index.js.map +1 -0
  190. package/dist/repositories/mcVersion.d.ts +16 -0
  191. package/dist/repositories/mcVersion.d.ts.map +1 -0
  192. package/dist/repositories/mcVersion.js +52 -0
  193. package/dist/repositories/mcVersion.js.map +1 -0
  194. package/dist/repositories/mod.d.ts +241 -0
  195. package/dist/repositories/mod.d.ts.map +1 -0
  196. package/dist/repositories/mod.js +342 -0
  197. package/dist/repositories/mod.js.map +1 -0
  198. package/dist/repositories/packs.d.ts +44 -0
  199. package/dist/repositories/packs.d.ts.map +1 -0
  200. package/dist/repositories/packs.js +138 -0
  201. package/dist/repositories/packs.js.map +1 -0
  202. package/dist/search-adapter.d.ts +34 -0
  203. package/dist/search-adapter.d.ts.map +1 -0
  204. package/dist/search-adapter.js +195 -0
  205. package/dist/search-adapter.js.map +1 -0
  206. package/dist/search.d.ts +6 -0
  207. package/dist/search.d.ts.map +1 -0
  208. package/dist/search.js +54 -0
  209. package/dist/search.js.map +1 -0
  210. package/dist/search.test.d.ts +2 -0
  211. package/dist/search.test.d.ts.map +1 -0
  212. package/dist/search.test.js +71 -0
  213. package/dist/search.test.js.map +1 -0
  214. package/dist/security.d.ts +98 -0
  215. package/dist/security.d.ts.map +1 -0
  216. package/dist/security.js +446 -0
  217. package/dist/security.js.map +1 -0
  218. package/dist/security.test.d.ts +2 -0
  219. package/dist/security.test.d.ts.map +1 -0
  220. package/dist/security.test.js +687 -0
  221. package/dist/security.test.js.map +1 -0
  222. package/dist/server.d.ts +2 -0
  223. package/dist/server.d.ts.map +1 -0
  224. package/dist/server.js +1465 -0
  225. package/dist/server.js.map +1 -0
  226. package/dist/setup.d.ts +2 -0
  227. package/dist/setup.d.ts.map +1 -0
  228. package/dist/setup.js +1113 -0
  229. package/dist/setup.js.map +1 -0
  230. package/dist/tools/bytecode.d.ts +129 -0
  231. package/dist/tools/bytecode.d.ts.map +1 -0
  232. package/dist/tools/bytecode.js +679 -0
  233. package/dist/tools/bytecode.js.map +1 -0
  234. package/dist/tools/catalog.d.ts +54 -0
  235. package/dist/tools/catalog.d.ts.map +1 -0
  236. package/dist/tools/catalog.js +249 -0
  237. package/dist/tools/catalog.js.map +1 -0
  238. package/dist/tools/compat-check.d.ts +23 -0
  239. package/dist/tools/compat-check.d.ts.map +1 -0
  240. package/dist/tools/compat-check.js +250 -0
  241. package/dist/tools/compat-check.js.map +1 -0
  242. package/dist/tools/compat-check.test.d.ts +2 -0
  243. package/dist/tools/compat-check.test.d.ts.map +1 -0
  244. package/dist/tools/compat-check.test.js +179 -0
  245. package/dist/tools/compat-check.test.js.map +1 -0
  246. package/dist/tools/diagnostics.d.ts +10 -0
  247. package/dist/tools/diagnostics.d.ts.map +1 -0
  248. package/dist/tools/diagnostics.js +133 -0
  249. package/dist/tools/diagnostics.js.map +1 -0
  250. package/dist/tools/diagnostics.test.d.ts +2 -0
  251. package/dist/tools/diagnostics.test.d.ts.map +1 -0
  252. package/dist/tools/diagnostics.test.js +168 -0
  253. package/dist/tools/diagnostics.test.js.map +1 -0
  254. package/dist/tools/docs.d.ts +19 -0
  255. package/dist/tools/docs.d.ts.map +1 -0
  256. package/dist/tools/docs.js +230 -0
  257. package/dist/tools/docs.js.map +1 -0
  258. package/dist/tools/embed-registry.d.ts +125 -0
  259. package/dist/tools/embed-registry.d.ts.map +1 -0
  260. package/dist/tools/embed-registry.js +560 -0
  261. package/dist/tools/embed-registry.js.map +1 -0
  262. package/dist/tools/gradle.d.ts +16 -0
  263. package/dist/tools/gradle.d.ts.map +1 -0
  264. package/dist/tools/gradle.js +182 -0
  265. package/dist/tools/gradle.js.map +1 -0
  266. package/dist/tools/graphify.d.ts +144 -0
  267. package/dist/tools/graphify.d.ts.map +1 -0
  268. package/dist/tools/graphify.js +798 -0
  269. package/dist/tools/graphify.js.map +1 -0
  270. package/dist/tools/graphify.test.d.ts +2 -0
  271. package/dist/tools/graphify.test.d.ts.map +1 -0
  272. package/dist/tools/graphify.test.js +39 -0
  273. package/dist/tools/graphify.test.js.map +1 -0
  274. package/dist/tools/ingest.d.ts +85 -0
  275. package/dist/tools/ingest.d.ts.map +1 -0
  276. package/dist/tools/ingest.js +477 -0
  277. package/dist/tools/ingest.js.map +1 -0
  278. package/dist/tools/ingest.test.d.ts +2 -0
  279. package/dist/tools/ingest.test.d.ts.map +1 -0
  280. package/dist/tools/ingest.test.js +340 -0
  281. package/dist/tools/ingest.test.js.map +1 -0
  282. package/dist/tools/kubejs.d.ts +37 -0
  283. package/dist/tools/kubejs.d.ts.map +1 -0
  284. package/dist/tools/kubejs.js +245 -0
  285. package/dist/tools/kubejs.js.map +1 -0
  286. package/dist/tools/mappings.d.ts +17 -0
  287. package/dist/tools/mappings.d.ts.map +1 -0
  288. package/dist/tools/mappings.js +85 -0
  289. package/dist/tools/mappings.js.map +1 -0
  290. package/dist/tools/mc-fts.d.ts +101 -0
  291. package/dist/tools/mc-fts.d.ts.map +1 -0
  292. package/dist/tools/mc-fts.js +279 -0
  293. package/dist/tools/mc-fts.js.map +1 -0
  294. package/dist/tools/mcmeta.d.ts +41 -0
  295. package/dist/tools/mcmeta.d.ts.map +1 -0
  296. package/dist/tools/mcmeta.js +365 -0
  297. package/dist/tools/mcmeta.js.map +1 -0
  298. package/dist/tools/mixin-scan.d.ts +113 -0
  299. package/dist/tools/mixin-scan.d.ts.map +1 -0
  300. package/dist/tools/mixin-scan.js +433 -0
  301. package/dist/tools/mixin-scan.js.map +1 -0
  302. package/dist/tools/mod-data.d.ts +83 -0
  303. package/dist/tools/mod-data.d.ts.map +1 -0
  304. package/dist/tools/mod-data.js +630 -0
  305. package/dist/tools/mod-data.js.map +1 -0
  306. package/dist/tools/mod-tags.d.ts +59 -0
  307. package/dist/tools/mod-tags.d.ts.map +1 -0
  308. package/dist/tools/mod-tags.js +279 -0
  309. package/dist/tools/mod-tags.js.map +1 -0
  310. package/dist/tools/mod-tags.test.d.ts +2 -0
  311. package/dist/tools/mod-tags.test.d.ts.map +1 -0
  312. package/dist/tools/mod-tags.test.js +75 -0
  313. package/dist/tools/mod-tags.test.js.map +1 -0
  314. package/dist/tools/modpacks-ch.d.ts +257 -0
  315. package/dist/tools/modpacks-ch.d.ts.map +1 -0
  316. package/dist/tools/modpacks-ch.js +516 -0
  317. package/dist/tools/modpacks-ch.js.map +1 -0
  318. package/dist/tools/packtools.d.ts +113 -0
  319. package/dist/tools/packtools.d.ts.map +1 -0
  320. package/dist/tools/packtools.js +809 -0
  321. package/dist/tools/packtools.js.map +1 -0
  322. package/dist/tools/packtools.test.d.ts +2 -0
  323. package/dist/tools/packtools.test.d.ts.map +1 -0
  324. package/dist/tools/packtools.test.js +99 -0
  325. package/dist/tools/packtools.test.js.map +1 -0
  326. package/dist/tools/platform.d.ts +68 -0
  327. package/dist/tools/platform.d.ts.map +1 -0
  328. package/dist/tools/platform.js +452 -0
  329. package/dist/tools/platform.js.map +1 -0
  330. package/dist/tools/primers.d.ts +36 -0
  331. package/dist/tools/primers.d.ts.map +1 -0
  332. package/dist/tools/primers.js +451 -0
  333. package/dist/tools/primers.js.map +1 -0
  334. package/dist/tools/reports.d.ts +19 -0
  335. package/dist/tools/reports.d.ts.map +1 -0
  336. package/dist/tools/reports.js +573 -0
  337. package/dist/tools/reports.js.map +1 -0
  338. package/dist/tools/source.d.ts +10 -0
  339. package/dist/tools/source.d.ts.map +1 -0
  340. package/dist/tools/source.js +101 -0
  341. package/dist/tools/source.js.map +1 -0
  342. package/dist/tools/vanilla-data.d.ts +127 -0
  343. package/dist/tools/vanilla-data.d.ts.map +1 -0
  344. package/dist/tools/vanilla-data.js +824 -0
  345. package/dist/tools/vanilla-data.js.map +1 -0
  346. package/dist/tools/vanilla.d.ts +171 -0
  347. package/dist/tools/vanilla.d.ts.map +1 -0
  348. package/dist/tools/vanilla.js +612 -0
  349. package/dist/tools/vanilla.js.map +1 -0
  350. package/dist/tools/version-diff.d.ts +113 -0
  351. package/dist/tools/version-diff.d.ts.map +1 -0
  352. package/dist/tools/version-diff.js +519 -0
  353. package/dist/tools/version-diff.js.map +1 -0
  354. package/dist/tools/version-diff.test.d.ts +2 -0
  355. package/dist/tools/version-diff.test.d.ts.map +1 -0
  356. package/dist/tools/version-diff.test.js +102 -0
  357. package/dist/tools/version-diff.test.js.map +1 -0
  358. package/dist/validate.d.ts +19 -0
  359. package/dist/validate.d.ts.map +1 -0
  360. package/dist/validate.js +54 -0
  361. package/dist/validate.js.map +1 -0
  362. package/dist/validate.test.d.ts +2 -0
  363. package/dist/validate.test.d.ts.map +1 -0
  364. package/dist/validate.test.js +73 -0
  365. package/dist/validate.test.js.map +1 -0
  366. package/package.json +62 -0
  367. package/prisma/backends/schema.sqlite.prisma +215 -0
  368. package/prisma/backends/template.db +0 -0
  369. package/prisma/schema.prisma +303 -0
  370. package/scripts/backup.mjs +151 -0
  371. package/scripts/build-template-db.mjs +38 -0
  372. package/scripts/check-atm10.mjs +27 -0
  373. package/scripts/check-sync.mjs +13 -0
  374. package/scripts/create-fts-index.mjs +50 -0
  375. package/scripts/enable-pgvector.mjs +90 -0
  376. package/scripts/enable-sqlite-vec.mjs +158 -0
  377. package/scripts/migrate-backend.mjs +188 -0
  378. package/scripts/migrate-embed-provenance.mjs +80 -0
  379. package/scripts/migrate-metadata-source.mjs +62 -0
  380. package/scripts/migrate-mod-source-files.mjs +67 -0
  381. package/scripts/post-update.mjs +77 -0
  382. package/scripts/verify-atm10.mjs +63 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ import type { PlatformAdapter } from "./platform-adapter.js";
2
+ export interface CFProject {
3
+ id: number;
4
+ name: string;
5
+ slug: string;
6
+ links: {
7
+ sourceUrl?: string;
8
+ websiteUrl?: string;
9
+ };
10
+ latestFiles: CFFile[];
11
+ }
12
+ export interface CFFile {
13
+ id: number;
14
+ displayName: string;
15
+ fileName: string;
16
+ fileDate: string;
17
+ downloadUrl: string;
18
+ gameVersions: string[];
19
+ }
20
+ export declare function lookupByFingerprint(murmur2: number): Promise<CFProject | null>;
21
+ export declare function getProject(modId: number): Promise<CFProject | null>;
22
+ export declare function getLatestFile(modId: number, mcVersion?: string): Promise<CFFile | null>;
23
+ export interface CFSearchHit {
24
+ id: number;
25
+ name: string;
26
+ slug: string;
27
+ summary: string;
28
+ downloadCount: number;
29
+ dateModified: string;
30
+ latestFiles: CFFile[];
31
+ links: {
32
+ sourceUrl?: string;
33
+ websiteUrl?: string;
34
+ };
35
+ }
36
+ /**
37
+ * Search CurseForge mods by name/keyword. Requires CURSEFORGE_API_KEY.
38
+ * Returns null if no API key is configured.
39
+ */
40
+ export declare function searchMods(query: string, opts?: {
41
+ loader?: string;
42
+ mcVersion?: string;
43
+ limit?: number;
44
+ }): Promise<CFSearchHit[] | null>;
45
+ /**
46
+ * Get all files for a CF project, optionally filtered by MC version.
47
+ */
48
+ export declare function getProjectFiles(modId: number, opts?: {
49
+ mcVersion?: string;
50
+ limit?: number;
51
+ }): Promise<CFFile[]>;
52
+ export declare const curseforgePlatformAdapter: PlatformAdapter;
53
+ //# sourceMappingURL=curseforge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"curseforge.d.ts","sourceRoot":"","sources":["../src/curseforge.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAY7D,MAAM,WAAW,SAAS;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC;KAAE,CAAC;IACpD,WAAW,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,MAAM;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAapF;AAED,wBAAsB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAKzE;AAED,wBAAsB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAO7F;AAED,MAAM,WAAW,WAAW;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,KAAK,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACtD;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAC5B,KAAK,EAAE,MAAM,EACb,IAAI,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GACnE,OAAO,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,CAc/B;AAUD;;GAEG;AACH,wBAAsB,eAAe,CACjC,KAAK,EAAE,MAAM,EACb,IAAI,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GAClD,OAAO,CAAC,MAAM,EAAE,CAAC,CAQnB;AAED,eAAO,MAAM,yBAAyB,EAAE,eAevC,CAAC"}
@@ -0,0 +1,104 @@
1
+ import { fetchWithRetry, safeJson } from "./fetch-utils.js";
2
+ const CF_BASE = "https://api.curseforge.com/v1";
3
+ const CF_KEY = process.env.CURSEFORGE_API_KEY ?? "";
4
+ const MINECRAFT_GAME_ID = 432;
5
+ const headers = {
6
+ "x-api-key": CF_KEY,
7
+ "Content-Type": "application/json",
8
+ "User-Agent": "modlens-mcp/1.0",
9
+ };
10
+ export async function lookupByFingerprint(murmur2) {
11
+ if (!Number.isFinite(murmur2) || murmur2 < 0)
12
+ throw new Error(`Invalid murmur2 fingerprint: expected non-negative integer, got ${murmur2}`);
13
+ const res = await fetchWithRetry(`${CF_BASE}/fingerprints/${MINECRAFT_GAME_ID}`, {
14
+ method: "POST",
15
+ headers,
16
+ body: JSON.stringify({ fingerprints: [murmur2] }),
17
+ });
18
+ if (!res.ok)
19
+ return null;
20
+ const data = await safeJson(res, "CurseForge fingerprint");
21
+ const match = data.data.exactMatches[0];
22
+ if (!match)
23
+ return null;
24
+ return getProject(match.id);
25
+ }
26
+ export async function getProject(modId) {
27
+ const res = await fetchWithRetry(`${CF_BASE}/mods/${modId}`, { headers });
28
+ if (!res.ok)
29
+ return null;
30
+ const data = await safeJson(res, "CurseForge project");
31
+ return data.data;
32
+ }
33
+ export async function getLatestFile(modId, mcVersion) {
34
+ const project = await getProject(modId);
35
+ if (!project)
36
+ return null;
37
+ const files = project.latestFiles.filter((f) => mcVersion ? f.gameVersions.includes(mcVersion) : true);
38
+ return files[0] ?? null;
39
+ }
40
+ /**
41
+ * Search CurseForge mods by name/keyword. Requires CURSEFORGE_API_KEY.
42
+ * Returns null if no API key is configured.
43
+ */
44
+ export async function searchMods(query, opts = {}) {
45
+ if (!CF_KEY)
46
+ return null;
47
+ const params = new URLSearchParams({
48
+ gameId: String(MINECRAFT_GAME_ID),
49
+ classId: "6", // 6 = Mods category on CurseForge
50
+ searchFilter: query,
51
+ pageSize: String(opts.limit ?? 20),
52
+ });
53
+ if (opts.mcVersion)
54
+ params.set("gameVersion", opts.mcVersion);
55
+ if (opts.loader)
56
+ params.set("modLoaderType", modloaderToEnum(opts.loader));
57
+ const res = await fetchWithRetry(`${CF_BASE}/mods/search?${params}`, { headers });
58
+ if (!res.ok)
59
+ return null;
60
+ const data = await safeJson(res, "CurseForge search");
61
+ return data.data;
62
+ }
63
+ /** Map a loader string to CurseForge's modLoaderType enum value. */
64
+ function modloaderToEnum(loader) {
65
+ const map = {
66
+ forge: "1", fabric: "4", quilt: "5", neoforge: "6",
67
+ };
68
+ return map[loader.toLowerCase()] ?? "0";
69
+ }
70
+ /**
71
+ * Get all files for a CF project, optionally filtered by MC version.
72
+ */
73
+ export async function getProjectFiles(modId, opts = {}) {
74
+ if (!CF_KEY)
75
+ return [];
76
+ const params = new URLSearchParams({ pageSize: String(opts.limit ?? 20) });
77
+ if (opts.mcVersion)
78
+ params.set("gameVersion", opts.mcVersion);
79
+ const res = await fetchWithRetry(`${CF_BASE}/mods/${modId}/files?${params}`, { headers });
80
+ if (!res.ok)
81
+ return [];
82
+ const data = await safeJson(res, "CurseForge files");
83
+ return data.data;
84
+ }
85
+ export const curseforgePlatformAdapter = {
86
+ name: "curseforge",
87
+ async lookup({ murmur2 }) {
88
+ if (!murmur2)
89
+ return null;
90
+ const m = parseInt(murmur2, 10);
91
+ if (isNaN(m))
92
+ return null;
93
+ const proj = await lookupByFingerprint(m).catch(() => null);
94
+ if (!proj)
95
+ return null;
96
+ return {
97
+ platform: "curseforge",
98
+ projectId: proj.id,
99
+ slug: proj.slug,
100
+ sourceUrl: proj.links?.sourceUrl,
101
+ };
102
+ },
103
+ };
104
+ //# sourceMappingURL=curseforge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"curseforge.js","sourceRoot":"","sources":["../src/curseforge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Backend detection from DATABASE_URL shape.
3
+ * This is the single runtime signal for which DB driver to use.
4
+ */
5
+ export type Backend = "postgres" | "pglite" | "sqlite";
6
+ export declare function detectBackend(): Backend;
7
+ /**
8
+ * Serialize an array to a JSON string for SQLite String columns.
9
+ * On postgres/pglite, returns the original value unchanged.
10
+ */
11
+ export declare function serializeArray<T>(value: T[]): T[] | string;
12
+ /**
13
+ * Deserialize a SQLite JSON string column back to an array.
14
+ * On postgres/pglite, returns the original value unchanged.
15
+ */
16
+ export declare function deserializeArray<T>(value: T[] | string | null | undefined): T[];
17
+ //# sourceMappingURL=db-backend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db-backend.d.ts","sourceRoot":"","sources":["../src/db-backend.ts"],"names":[],"mappings":"AACA;;;GAGG;AAEH,MAAM,MAAM,OAAO,GAAG,UAAU,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEvD,wBAAgB,aAAa,IAAI,OAAO,CAOvC;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,MAAM,CAG1D;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,CAAC,EAAE,CAK/E"}
@@ -0,0 +1,40 @@
1
+ // src/db-backend.ts
2
+ /**
3
+ * Backend detection from DATABASE_URL shape.
4
+ * This is the single runtime signal for which DB driver to use.
5
+ */
6
+ export function detectBackend() {
7
+ const url = process.env.DATABASE_URL ?? "";
8
+ if (url.startsWith("postgresql://") || url.startsWith("postgres://"))
9
+ return "postgres";
10
+ if (url.startsWith("pglite://") || url.startsWith("pglite:"))
11
+ return "pglite";
12
+ // SQLite is the default: explicit `file:`/`.db` URLs, and also the no-URL
13
+ // case (zero-config embedded backend the launcher bootstraps on first run).
14
+ return "sqlite";
15
+ }
16
+ /**
17
+ * Serialize an array to a JSON string for SQLite String columns.
18
+ * On postgres/pglite, returns the original value unchanged.
19
+ */
20
+ export function serializeArray(value) {
21
+ if (detectBackend() === "sqlite")
22
+ return JSON.stringify(value);
23
+ return value;
24
+ }
25
+ /**
26
+ * Deserialize a SQLite JSON string column back to an array.
27
+ * On postgres/pglite, returns the original value unchanged.
28
+ */
29
+ export function deserializeArray(value) {
30
+ if (typeof value === "string") {
31
+ try {
32
+ return JSON.parse(value);
33
+ }
34
+ catch {
35
+ return [];
36
+ }
37
+ }
38
+ return value ?? [];
39
+ }
40
+ //# sourceMappingURL=db-backend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db-backend.js","sourceRoot":"","sources":["../src/db-backend.ts"],"names":[],"mappings":"AAAA,oBAAoB;AACpB;;;GAGG;AAIH,MAAM,UAAU,aAAa;IACzB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC;IAC3C,IAAI,GAAG,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC;QAAE,OAAO,UAAU,CAAC;IACxF,IAAI,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC9E,0EAA0E;IAC1E,4EAA4E;IAC5E,OAAO,QAAQ,CAAC;AACpB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAI,KAAU;IACxC,IAAI,aAAa,EAAE,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/D,OAAO,KAAK,CAAC;AACjB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAI,KAAsC;IACtE,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC5B,IAAI,CAAC;YAAC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAQ,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO,EAAE,CAAC;QAAC,CAAC;IACjE,CAAC;IACD,OAAQ,KAAa,IAAI,EAAE,CAAC;AAChC,CAAC"}
package/dist/db.d.ts ADDED
@@ -0,0 +1,11 @@
1
+ import { PrismaClient } from "@prisma/client";
2
+ /**
3
+ * Returns the shared Prisma client, initializing it on first call.
4
+ * Backend is detected from DATABASE_URL shape (see db-backend.ts).
5
+ * PGlite and SQLite branches are wired in P3 and P2 respectively.
6
+ */
7
+ export declare function getDb(): Promise<PrismaClient>;
8
+ /** @deprecated Use `await getDb()` instead. Kept for incremental migration. */
9
+ export declare function db(): PrismaClient;
10
+ export declare function disconnect(): Promise<void>;
11
+ //# sourceMappingURL=db.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAK9C;;;;GAIG;AACH,wBAAsB,KAAK,IAAI,OAAO,CAAC,YAAY,CAAC,CAoCnD;AAED,+EAA+E;AAC/E,wBAAgB,EAAE,IAAI,YAAY,CAOjC;AAED,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAGhD"}
package/dist/db.js ADDED
@@ -0,0 +1,55 @@
1
+ import { PrismaClient } from "@prisma/client";
2
+ import { detectBackend } from "./db-backend.js";
3
+ let _client = null;
4
+ /**
5
+ * Returns the shared Prisma client, initializing it on first call.
6
+ * Backend is detected from DATABASE_URL shape (see db-backend.ts).
7
+ * PGlite and SQLite branches are wired in P3 and P2 respectively.
8
+ */
9
+ export async function getDb() {
10
+ if (_client)
11
+ return _client;
12
+ const backend = detectBackend();
13
+ if (backend === "sqlite") {
14
+ const url = process.env.DATABASE_URL ?? "";
15
+ const { PrismaBetterSQLite3 } = await import("@prisma/adapter-better-sqlite3");
16
+ const adapter = new PrismaBetterSQLite3({ url });
17
+ const { PrismaClient: SQLiteClient } = await import("./generated/sqlite/client.js");
18
+ _client = new SQLiteClient({ adapter });
19
+ return _client;
20
+ }
21
+ if (backend === "pglite") {
22
+ const { PGlite } = await import("@electric-sql/pglite");
23
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
24
+ // @ts-ignore — optional peer dep, present only at runtime on supported platforms
25
+ const { PrismaPGlite } = await import("@prisma/adapter-pglite");
26
+ // pglite:///absolute/path → /absolute/path
27
+ // pglite://relative/path → relative/path
28
+ const dataDir = (process.env.DATABASE_URL ?? "").replace(/^pglite:\/\//, "");
29
+ if (!dataDir) {
30
+ throw new Error("DATABASE_URL for PGlite must be pglite:///path/to/data — data directory path is empty.");
31
+ }
32
+ const pg = await PGlite.create(dataDir);
33
+ const adapter = new PrismaPGlite(pg);
34
+ _client = new PrismaClient({ adapter });
35
+ return _client;
36
+ }
37
+ _client = new PrismaClient({
38
+ log: process.env.DEBUG ? ["query", "error"] : ["error"],
39
+ });
40
+ return _client;
41
+ }
42
+ /** @deprecated Use `await getDb()` instead. Kept for incremental migration. */
43
+ export function db() {
44
+ if (!_client) {
45
+ _client = new PrismaClient({
46
+ log: process.env.DEBUG ? ["query", "error"] : ["error"],
47
+ });
48
+ }
49
+ return _client;
50
+ }
51
+ export async function disconnect() {
52
+ await _client?.$disconnect();
53
+ _client = null;
54
+ }
55
+ //# sourceMappingURL=db.js.map
package/dist/db.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,IAAI,OAAO,GAAwB,IAAI,CAAC;AAExC;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,KAAK;IACvB,IAAI,OAAO;QAAE,OAAO,OAAO,CAAC;IAC5B,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;IAEhC,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACvB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC;QAC3C,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,MAAM,CAAC,gCAAgC,CAAC,CAAC;QAC/E,MAAM,OAAO,GAAG,IAAI,mBAAmB,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;QACjD,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,8BAA8B,CAAC,CAAC;QACpF,OAAO,GAAG,IAAI,YAAY,CAAC,EAAE,OAAO,EAAE,CAA4B,CAAC;QACnE,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACvB,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;QACxD,6DAA6D;QAC7D,iFAAiF;QACjF,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC;QAChE,2CAA2C;QAC3C,0CAA0C;QAC1C,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;QAC7E,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CACX,wFAAwF,CAC3F,CAAC;QACN,CAAC;QACD,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACxC,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,EAAE,CAAC,CAAC;QACrC,OAAO,GAAG,IAAI,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QACxC,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,OAAO,GAAG,IAAI,YAAY,CAAC;QACvB,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;KAC1D,CAAC,CAAC;IACH,OAAO,OAAO,CAAC;AACnB,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,EAAE;IACd,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,OAAO,GAAG,IAAI,YAAY,CAAC;YACvB,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;SAC1D,CAAC,CAAC;IACP,CAAC;IACD,OAAO,OAAO,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU;IAC5B,MAAM,OAAO,EAAE,WAAW,EAAE,CAAC;IAC7B,OAAO,GAAG,IAAI,CAAC;AACnB,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Add a mod to the embedding queue.
3
+ * Safe to call multiple times — duplicates are ignored.
4
+ * Returns immediately; embedding happens in the background.
5
+ */
6
+ export declare function enqueueModEmbed(dbId: number): void;
7
+ /**
8
+ * Scan the DB for mods that are decompiled but not fully embedded and enqueue
9
+ * them. Call once at server startup so restarts don't leave things stuck.
10
+ */
11
+ export declare function startupEmbedScan(): Promise<void>;
12
+ //# sourceMappingURL=embed-queue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embed-queue.d.ts","sourceRoot":"","sources":["../src/embed-queue.ts"],"names":[],"mappings":"AA4BA;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAGlD;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAetD"}
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Background semantic embedding queue.
3
+ *
4
+ * A single-worker FIFO queue that embeds decompiled mod source files into
5
+ * pgvector one mod at a time. This prevents overwhelming Ollama when multiple
6
+ * mods finish decompiling simultaneously.
7
+ *
8
+ * Features:
9
+ * - Deduplication: adding the same dbId twice is a no-op
10
+ * - Retry loop: each item is retried (with backoff) until remaining === 0
11
+ * - Availability check: if Ollama goes down mid-queue, the worker pauses and
12
+ * retries the current item on the next drain cycle
13
+ * - Startup scan: call startupEmbedScan() on server start to re-queue any
14
+ * mods that were partially embedded before a restart
15
+ */
16
+ import { isOllamaAvailable } from "./embeddings.js";
17
+ import { indexModSourceSemantic } from "./tools/mc-fts.js";
18
+ import { getDb } from "./db.js";
19
+ // ── Queue state (module-level singleton) ──────────────────────────────────────
20
+ const pending = new Set(); // dbIds waiting to be embedded
21
+ let running = false; // true while the worker loop is active
22
+ const MAX_RETRIES = 8;
23
+ const RETRY_DELAY_MS = 10_000; // 10 s between retries when Ollama is slow
24
+ const OLLAMA_WAIT_MS = 30_000; // 30 s wait when Ollama is unreachable
25
+ // ── Public API ────────────────────────────────────────────────────────────────
26
+ /**
27
+ * Add a mod to the embedding queue.
28
+ * Safe to call multiple times — duplicates are ignored.
29
+ * Returns immediately; embedding happens in the background.
30
+ */
31
+ export function enqueueModEmbed(dbId) {
32
+ pending.add(dbId);
33
+ void drainQueue();
34
+ }
35
+ /**
36
+ * Scan the DB for mods that are decompiled but not fully embedded and enqueue
37
+ * them. Call once at server startup so restarts don't leave things stuck.
38
+ */
39
+ export async function startupEmbedScan() {
40
+ if (!await isOllamaAvailable())
41
+ return; // skip silently if Ollama is off
42
+ // One fast query: find all mod_ids that still have unembedded source files
43
+ const db = await getDb();
44
+ const rows = await db.$queryRawUnsafe(`SELECT DISTINCT mod_id FROM mod_source_files WHERE embedding IS NULL`);
45
+ for (const { mod_id } of rows) {
46
+ pending.add(mod_id);
47
+ }
48
+ if (pending.size > 0) {
49
+ console.error(`[embed-queue] startup scan: ${pending.size} mod(s) queued for embedding`);
50
+ void drainQueue();
51
+ }
52
+ }
53
+ // ── Worker ────────────────────────────────────────────────────────────────────
54
+ async function drainQueue() {
55
+ if (running)
56
+ return; // already active
57
+ running = true;
58
+ try {
59
+ while (pending.size > 0) {
60
+ // Check Ollama before dequeuing — if it's down, hold all items
61
+ if (!await isOllamaAvailable()) {
62
+ console.error("[embed-queue] Ollama unavailable — pausing, will retry in 30 s");
63
+ await delay(OLLAMA_WAIT_MS);
64
+ continue; // re-check without dequeuing
65
+ }
66
+ const [dbId] = pending; // peek — remove only after success
67
+ pending.delete(dbId);
68
+ // Retry this item until fully embedded or max retries exceeded
69
+ let attempts = 0;
70
+ while (attempts < MAX_RETRIES) {
71
+ try {
72
+ const result = await indexModSourceSemantic(dbId);
73
+ if (result.remaining === 0)
74
+ break; // done
75
+ // Some files remain (Ollama timed out mid-batch) — retry
76
+ console.error(`[embed-queue] mod #${dbId}: ${result.remaining} files remaining — retry ${attempts + 1}/${MAX_RETRIES}`);
77
+ }
78
+ catch (err) {
79
+ console.error(`[embed-queue] mod #${dbId} error:`, err);
80
+ }
81
+ attempts++;
82
+ await delay(RETRY_DELAY_MS);
83
+ // Re-check Ollama before next attempt
84
+ if (!await isOllamaAvailable()) {
85
+ // Put it back and stop — will resume on next enqueue or startup
86
+ pending.add(dbId);
87
+ console.error("[embed-queue] Ollama went away — requeueing mod #" + dbId);
88
+ return;
89
+ }
90
+ }
91
+ if (attempts >= MAX_RETRIES) {
92
+ console.error(`[embed-queue] mod #${dbId} gave up after ${MAX_RETRIES} attempts`);
93
+ }
94
+ }
95
+ }
96
+ finally {
97
+ running = false;
98
+ }
99
+ }
100
+ function delay(ms) {
101
+ return new Promise(r => setTimeout(r, ms));
102
+ }
103
+ //# sourceMappingURL=embed-queue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embed-queue.js","sourceRoot":"","sources":["../src/embed-queue.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Ollama embeddings client.
3
+ * All semantic-search features are optional — if Ollama is not running,
4
+ * isOllamaAvailable() returns false and callers fall back to keyword search.
5
+ *
6
+ * Environment variables:
7
+ * OLLAMA_URL Base URL (default: http://localhost:11434)
8
+ * OLLAMA_EMBED_MODEL Model to use (default: nomic-embed-text)
9
+ */
10
+ /** Generate an embedding vector for a text string. Throws on Ollama error. */
11
+ export declare function embed(text: string): Promise<number[]>;
12
+ /** Returns false if Ollama is not reachable. Use to gate optional semantic features. */
13
+ export declare function isOllamaAvailable(): Promise<boolean>;
14
+ /**
15
+ * Split text into overlapping chunks for embedding long documents.
16
+ * @param text Full text to split
17
+ * @param maxChars Max characters per chunk (default 1500 ≈ 375 tokens)
18
+ * @param overlap Character overlap between consecutive chunks (default 200)
19
+ */
20
+ export declare function chunkText(text: string, maxChars?: number, overlap?: number): string[];
21
+ //# sourceMappingURL=embeddings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embeddings.d.ts","sourceRoot":"","sources":["../src/embeddings.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,8EAA8E;AAC9E,wBAAsB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAS3D;AAED,wFAAwF;AACxF,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC,CAS1D;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,SAAO,EAAE,OAAO,SAAM,GAAG,MAAM,EAAE,CAUhF"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Ollama embeddings client.
3
+ * All semantic-search features are optional — if Ollama is not running,
4
+ * isOllamaAvailable() returns false and callers fall back to keyword search.
5
+ *
6
+ * Environment variables:
7
+ * OLLAMA_URL Base URL (default: http://localhost:11434)
8
+ * OLLAMA_EMBED_MODEL Model to use (default: nomic-embed-text)
9
+ */
10
+ const OLLAMA_URL = () => process.env.OLLAMA_URL ?? "http://localhost:11434";
11
+ const EMBED_MODEL = () => process.env.OLLAMA_EMBED_MODEL ?? "nomic-embed-text";
12
+ /** Generate an embedding vector for a text string. Throws on Ollama error. */
13
+ export async function embed(text) {
14
+ const res = await fetch(`${OLLAMA_URL()}/api/embeddings`, {
15
+ method: "POST",
16
+ headers: { "Content-Type": "application/json" },
17
+ body: JSON.stringify({ model: EMBED_MODEL(), prompt: text }),
18
+ });
19
+ if (!res.ok)
20
+ throw new Error(`Ollama embed failed: ${res.status}`);
21
+ const body = await res.json();
22
+ return body.embedding;
23
+ }
24
+ /** Returns false if Ollama is not reachable. Use to gate optional semantic features. */
25
+ export async function isOllamaAvailable() {
26
+ try {
27
+ const res = await fetch(`${OLLAMA_URL()}/api/tags`, {
28
+ signal: AbortSignal.timeout(2000),
29
+ });
30
+ return res.ok;
31
+ }
32
+ catch {
33
+ return false;
34
+ }
35
+ }
36
+ /**
37
+ * Split text into overlapping chunks for embedding long documents.
38
+ * @param text Full text to split
39
+ * @param maxChars Max characters per chunk (default 1500 ≈ 375 tokens)
40
+ * @param overlap Character overlap between consecutive chunks (default 200)
41
+ */
42
+ export function chunkText(text, maxChars = 1500, overlap = 200) {
43
+ if (maxChars <= overlap)
44
+ throw new Error(`chunkText: maxChars (${maxChars}) must be greater than overlap (${overlap})`);
45
+ if (text.length <= maxChars)
46
+ return [text];
47
+ const chunks = [];
48
+ let start = 0;
49
+ while (start < text.length) {
50
+ chunks.push(text.slice(start, start + maxChars));
51
+ start += maxChars - overlap;
52
+ }
53
+ return chunks;
54
+ }
55
+ //# sourceMappingURL=embeddings.js.map