@creeperhost/modlens-mcp 1.6.0 → 1.6.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +950 -938
- package/dist/cli.js +267 -267
- package/dist/db-backend.d.ts +14 -1
- package/dist/db-backend.d.ts.map +1 -1
- package/dist/db-backend.js +13 -0
- package/dist/db-backend.js.map +1 -1
- package/dist/generated/sqlite/internal/class.d.ts.map +1 -1
- package/dist/generated/sqlite/internal/class.js +5 -4
- package/dist/generated/sqlite/internal/class.js.map +1 -1
- package/dist/launcher.js +4 -1
- package/dist/launcher.js.map +1 -1
- package/dist/platform.d.ts.map +1 -1
- package/dist/platform.js +6 -2
- package/dist/platform.js.map +1 -1
- package/dist/repositories/embeddings-sqlite.js +21 -21
- package/dist/repositories/embeddings.js +28 -28
- package/dist/repositories/mod.d.ts +7 -0
- package/dist/repositories/mod.d.ts.map +1 -1
- package/dist/repositories/mod.js +56 -15
- package/dist/repositories/mod.js.map +1 -1
- package/dist/search-adapter.js +51 -51
- package/dist/security.d.ts +9 -0
- package/dist/security.d.ts.map +1 -1
- package/dist/security.js +19 -0
- package/dist/security.js.map +1 -1
- package/dist/server.js +1248 -1217
- package/dist/server.js.map +1 -1
- package/dist/tools/compat-check.js +9 -9
- package/dist/tools/docs.d.ts.map +1 -1
- package/dist/tools/docs.js +4 -3
- package/dist/tools/docs.js.map +1 -1
- package/dist/tools/embed-registry.js +9 -9
- package/dist/tools/graphify.js +14 -14
- package/dist/tools/ingest.d.ts.map +1 -1
- package/dist/tools/ingest.js +4 -3
- package/dist/tools/ingest.js.map +1 -1
- package/dist/tools/kubejs.d.ts.map +1 -1
- package/dist/tools/kubejs.js +2 -0
- package/dist/tools/kubejs.js.map +1 -1
- package/dist/tools/mappings.d.ts.map +1 -1
- package/dist/tools/mappings.js +2 -1
- package/dist/tools/mappings.js.map +1 -1
- package/dist/tools/mc-fts.js +2 -2
- package/dist/tools/mcmeta.js +2 -2
- package/dist/tools/mcmeta.js.map +1 -1
- package/dist/tools/mixin-scan.d.ts +1 -1
- package/dist/tools/mixin-scan.d.ts.map +1 -1
- package/dist/tools/mixin-scan.js +29 -35
- package/dist/tools/mixin-scan.js.map +1 -1
- package/dist/tools/mod-data.js +2 -2
- package/dist/tools/mod-data.js.map +1 -1
- package/dist/tools/modpacks-ch.js +2 -2
- package/dist/tools/modpacks-ch.js.map +1 -1
- package/dist/tools/packtools.js +4 -4
- package/dist/tools/packtools.js.map +1 -1
- package/dist/tools/primers.d.ts.map +1 -1
- package/dist/tools/primers.js +4 -3
- package/dist/tools/primers.js.map +1 -1
- package/dist/tools/reports.d.ts.map +1 -1
- package/dist/tools/reports.js +8 -4
- package/dist/tools/reports.js.map +1 -1
- package/dist/tools/vanilla-data.js +2 -2
- package/dist/tools/vanilla-data.js.map +1 -1
- package/dist/tools/version-diff.js +3 -3
- package/package.json +70 -62
- package/prisma/backends/schema.sqlite.prisma +215 -215
- package/prisma/schema.prisma +303 -303
- package/scripts/backup.mjs +151 -151
- package/scripts/check-atm10.mjs +27 -27
- package/scripts/check-sync.mjs +13 -13
- package/scripts/create-fts-index.mjs +50 -50
- package/scripts/enable-pgvector.mjs +90 -90
- package/scripts/enable-sqlite-vec.mjs +158 -158
- package/scripts/migrate-backend.mjs +188 -188
- package/scripts/migrate-embed-provenance.mjs +80 -80
- package/scripts/migrate-metadata-source.mjs +62 -62
- package/scripts/migrate-mod-source-files.mjs +67 -67
- package/scripts/post-update.mjs +77 -77
- package/scripts/verify-atm10.mjs +63 -63
- package/dist/access-flags.test.d.ts +0 -2
- package/dist/access-flags.test.d.ts.map +0 -1
- package/dist/access-flags.test.js +0 -189
- package/dist/access-flags.test.js.map +0 -1
- package/dist/fetch-utils.test.d.ts +0 -2
- package/dist/fetch-utils.test.d.ts.map +0 -1
- package/dist/fetch-utils.test.js +0 -133
- package/dist/fetch-utils.test.js.map +0 -1
- package/dist/mappings.test.d.ts +0 -2
- package/dist/mappings.test.d.ts.map +0 -1
- package/dist/mappings.test.js +0 -161
- package/dist/mappings.test.js.map +0 -1
- package/dist/processor.test.d.ts +0 -2
- package/dist/processor.test.d.ts.map +0 -1
- package/dist/processor.test.js +0 -629
- package/dist/processor.test.js.map +0 -1
- package/dist/search.test.d.ts +0 -2
- package/dist/search.test.d.ts.map +0 -1
- package/dist/search.test.js +0 -71
- package/dist/search.test.js.map +0 -1
- package/dist/security.test.d.ts +0 -2
- package/dist/security.test.d.ts.map +0 -1
- package/dist/security.test.js +0 -687
- package/dist/security.test.js.map +0 -1
- package/dist/tools/compat-check.test.d.ts +0 -2
- package/dist/tools/compat-check.test.d.ts.map +0 -1
- package/dist/tools/compat-check.test.js +0 -179
- package/dist/tools/compat-check.test.js.map +0 -1
- package/dist/tools/diagnostics.test.d.ts +0 -2
- package/dist/tools/diagnostics.test.d.ts.map +0 -1
- package/dist/tools/diagnostics.test.js +0 -168
- package/dist/tools/diagnostics.test.js.map +0 -1
- package/dist/tools/graphify.test.d.ts +0 -2
- package/dist/tools/graphify.test.d.ts.map +0 -1
- package/dist/tools/graphify.test.js +0 -39
- package/dist/tools/graphify.test.js.map +0 -1
- package/dist/tools/ingest.test.d.ts +0 -2
- package/dist/tools/ingest.test.d.ts.map +0 -1
- package/dist/tools/ingest.test.js +0 -340
- package/dist/tools/ingest.test.js.map +0 -1
- package/dist/tools/mod-tags.test.d.ts +0 -2
- package/dist/tools/mod-tags.test.d.ts.map +0 -1
- package/dist/tools/mod-tags.test.js +0 -75
- package/dist/tools/mod-tags.test.js.map +0 -1
- package/dist/tools/packtools.test.d.ts +0 -2
- package/dist/tools/packtools.test.d.ts.map +0 -1
- package/dist/tools/packtools.test.js +0 -99
- package/dist/tools/packtools.test.js.map +0 -1
- package/dist/tools/version-diff.test.d.ts +0 -2
- package/dist/tools/version-diff.test.d.ts.map +0 -1
- package/dist/tools/version-diff.test.js +0 -102
- package/dist/tools/version-diff.test.js.map +0 -1
- package/dist/validate.test.d.ts +0 -2
- package/dist/validate.test.d.ts.map +0 -1
- package/dist/validate.test.js +0 -73
- package/dist/validate.test.js.map +0 -1
package/dist/cli.js
CHANGED
|
@@ -83,273 +83,273 @@ function modIdArg(val, name) {
|
|
|
83
83
|
return isNaN(n) ? s : n;
|
|
84
84
|
}
|
|
85
85
|
// ── Help ─────────────────────────────────────────────────────────────────────
|
|
86
|
-
const HELP = `
|
|
87
|
-
modlens CLI — analyze Minecraft mod JARs
|
|
88
|
-
|
|
89
|
-
Usage: node dist/cli.js <command> [args] [--flags]
|
|
90
|
-
|
|
91
|
-
DATABASE & CATALOG
|
|
92
|
-
stats DB statistics (mod count, classes, loaders)
|
|
93
|
-
list List all mods
|
|
94
|
-
[--loader=] [--mc-version=] [--has-mixins] [--decompiled] [--limit=50]
|
|
95
|
-
get <modId|dbId> Get full metadata for a mod
|
|
96
|
-
search <query> Search mods by name/id [--loader=] [--mc-version=] [--limit=20]
|
|
97
|
-
deps <modId|dbId> List mod dependencies [--recursive]
|
|
98
|
-
|
|
99
|
-
INGEST
|
|
100
|
-
ingest <jarPath> Ingest a mod JAR [--skip-source] [--skip-index]
|
|
101
|
-
ingest-neoforge <version> Download + ingest NeoForge (e.g. 21.1.228) [--skip-index]
|
|
102
|
-
ingest-forge <version> Download + ingest Forge (e.g. 1.20.1-47.3.22) [--skip-index]
|
|
103
|
-
ingest-fabric-api <version> Download + ingest Fabric API (e.g. 0.116.11+1.21.1) [--skip-index]
|
|
104
|
-
batch-ingest <dir> Ingest all JARs in a directory [--index]
|
|
105
|
-
reindex Index class names for un-indexed mods [--db-id=N]
|
|
106
|
-
|
|
107
|
-
DECOMPILE & SOURCE
|
|
108
|
-
decompile <dbId> Decompile entire mod JAR with Vineflower
|
|
109
|
-
decompile-class <dbId> <class> Decompile a single class (faster)
|
|
110
|
-
source <dbId> [path] Browse or read decompiled source
|
|
111
|
-
search-source <query> Search decompiled source [--db-id=N] [--regex] [--limit=50]
|
|
112
|
-
|
|
113
|
-
BYTECODE ANALYSIS
|
|
114
|
-
search-class <dbId> <query> Search for a class by name
|
|
115
|
-
members <dbId> <class> List methods and fields of a class
|
|
116
|
-
bytecode <dbId> <class> Raw javap bytecode for a class
|
|
117
|
-
refs <dbId> <target> Find references to a class/method/field
|
|
118
|
-
inheritance <dbId> <class> Superclass, interfaces, subclasses
|
|
119
|
-
diff <dbIdA> <dbIdB> Compare two mod versions (added/removed classes)
|
|
120
|
-
|
|
121
|
-
MIXIN ANALYSIS
|
|
122
|
-
mixin-targets <modId|dbId> MC classes this mod injects into
|
|
123
|
-
resolve-mixins <dbId> Parse @Mixin bytecode and update DB targets
|
|
124
|
-
mixin-conflicts <targetClass> All mods injecting into the same MC class
|
|
125
|
-
at-entries <dbId> Access Transformer entries
|
|
126
|
-
aw-entries <dbId> Access Widener entries
|
|
127
|
-
|
|
128
|
-
PLATFORM
|
|
129
|
-
sync-modrinth <dbId> Look up mod on Modrinth
|
|
130
|
-
sync-curseforge <dbId> Look up mod on CurseForge
|
|
131
|
-
check-updates <dbId> Check for newer versions
|
|
132
|
-
download-source <dbId> Download GitHub/GitLab source
|
|
133
|
-
|
|
134
|
-
VERSIONS
|
|
135
|
-
mc-versions List Minecraft versions [--type=release|snapshot|all]
|
|
136
|
-
neoforge-versions List NeoForge versions [--mc-version=1.21.1] [--limit=20]
|
|
137
|
-
fabric-api-versions List Fabric API versions [--mc-version=1.21.1] [--limit=20]
|
|
138
|
-
|
|
139
|
-
BATCH
|
|
140
|
-
batch-resolve-mixins Resolve @Mixin targets for all mixin mods
|
|
141
|
-
|
|
142
|
-
MOD: ADDITIONAL ACTIONS
|
|
143
|
-
dep-graph Dependency graph for all ingested mods [--mc-version=]
|
|
144
|
-
version-conflicts Find mods with conflicting version requirements
|
|
145
|
-
source-urls [query] List Modrinth/CurseForge source URLs (filter by query)
|
|
146
|
-
decompile-status <dbId> Decompilation progress for a mod
|
|
147
|
-
batch-decompile Decompile all un-decompiled mods [--concurrency=2]
|
|
148
|
-
get-paths <dbId> JAR/decomp paths so you can grep natively
|
|
149
|
-
batch-sync Batch sync all mods from platform APIs
|
|
150
|
-
[--sync-modrinth] [--sync-curseforge] [--download-sources]
|
|
151
|
-
[--mod-id-filter=] [--limit=]
|
|
152
|
-
|
|
153
|
-
MOD BYTECODE: ADVANCED
|
|
154
|
-
cross-refs <target> Cross-mod references to a class/method/field
|
|
155
|
-
[--mc-version=] [--loader=] [--limit=]
|
|
156
|
-
diff-detailed <dbIdA> <dbIdB> AST-level method/field diff with breaking-change flags
|
|
157
|
-
[--packages=a/b,c/d] [--limit=200] [--semantic] [--cache] [--force]
|
|
158
|
-
find-implementors <target> Find all classes implementing an interface/extending a class
|
|
159
|
-
[--mod-id=] [--limit=] [--transitive]
|
|
160
|
-
scan-registrations <dbId> Scan mod for registry object registrations
|
|
161
|
-
annotated-by <annotation> Find classes annotated with a given annotation [--mod-id=] [--limit=]
|
|
162
|
-
event-listeners <event> Find event listener registrations [--mod-id=] [--limit=]
|
|
163
|
-
optional-integrations <dbId> Detect optional mod integrations (soft dependencies)
|
|
164
|
-
network-payloads <dbId> Extract network packet/payload types
|
|
165
|
-
config-schema <dbId> Extract configuration class schemas
|
|
166
|
-
|
|
167
|
-
MIXIN ANALYSIS: ADVANCED
|
|
168
|
-
targets-in-package <packagePrefix> All mods targeting a class within a package [--mc-version=]
|
|
169
|
-
at-conflicts AT/AW entries conflicting across mods [--mc-version=] [--loader=]
|
|
170
|
-
|
|
171
|
-
MIXIN SCAN (cross-mod conflict matrix)
|
|
172
|
-
mixin-scan list List mods with mixins [--loader=] [--mc-version=]
|
|
173
|
-
mixin-scan conflict-matrix Full mixin conflict matrix [--loader=] [--mc-version=] [--min-conflicts=]
|
|
174
|
-
mixin-scan class-detail <class> All mixins targeting a single MC class
|
|
175
|
-
mixin-scan hotspots Most-targeted MC classes [--top=N] [--loader=]
|
|
176
|
-
mixin-scan batch-resolve Resolve mixin targets for all mods [--loader=] [--mc-version=]
|
|
177
|
-
|
|
178
|
-
VANILLA MC SOURCE
|
|
179
|
-
mc-source search-class <ver> <q> Search for a vanilla class by name
|
|
180
|
-
mc-source get-source <ver> <class> Get decompiled vanilla source [--start-line=] [--end-line=] [--max-lines=]
|
|
181
|
-
mc-source bytecode <ver> <class> Raw javap bytecode for a vanilla class
|
|
182
|
-
mc-source class-members <ver> <c> Methods and fields of a vanilla class
|
|
183
|
-
mc-source find-refs <ver> <target> References to a class/method/field in vanilla
|
|
184
|
-
mc-source inheritance <ver> <c> Inheritance tree for a vanilla class
|
|
185
|
-
mc-source diff <verA> <verB> High-level diff between two MC versions
|
|
186
|
-
mc-source diff-detailed <A> <B> AST-level method/field diff [--packages=] [--limit=200] [--semantic] [--cache] [--force]
|
|
187
|
-
mc-source decompile <ver> Decompile MC version with Vineflower [--force]
|
|
188
|
-
mc-source decompile-status <ver> Check decompilation progress
|
|
189
|
-
mc-source search-code <ver> <q> Full-text search over vanilla source [--search-type=content|class|method|field|all] [--regex] [--limit=50]
|
|
190
|
-
mc-source index <ver> Index vanilla source for BM25 search [--force]
|
|
191
|
-
mc-source search-indexed <ver> <q> BM25-ranked FTS over vanilla source [--limit=20]
|
|
192
|
-
mc-source search-events <ver> Browse event classes [query] [--modloader=minecraft|neoforge|fabric|fabric-api]
|
|
193
|
-
mc-source validate-aw <ver> <file> Validate an .accesswidener file against vanilla
|
|
194
|
-
mc-source analyze-mixin <ver> <f> Analyze a mixin Java source file
|
|
195
|
-
mc-source search-semantic <ver> <q> Semantic search (requires Ollama + index) [--limit=10]
|
|
196
|
-
mc-source get-paths <ver> On-disk jar/decomp/index paths
|
|
197
|
-
|
|
198
|
-
MAPPINGS
|
|
199
|
-
mappings find <sym> <ver> <src> <tgt> Translate symbol between namespaces (official|intermediary|yarn|mojmap)
|
|
200
|
-
mappings remap <in.jar> <out.jar> <ver> <mapping> Remap a JAR between namespaces
|
|
201
|
-
mappings parchment <class> <mcVersion> Parchment parameter/javadoc for a class
|
|
202
|
-
mappings list-parchment <mcVersion> Available Parchment versions
|
|
203
|
-
mappings parchment-summary <mcVersion> Stats on Parchment coverage
|
|
204
|
-
|
|
205
|
-
DOCS
|
|
206
|
-
docs seed Seed built-in documentation entries
|
|
207
|
-
docs get <query> Get documentation by title/class
|
|
208
|
-
docs search <query> Keyword search [--category=] [--namespace=]
|
|
209
|
-
docs list List all docs [--category=] [--namespace=] [--tag=] [--limit=100]
|
|
210
|
-
docs delete <id> Delete a doc entry by ID
|
|
211
|
-
docs semantic-search <query> Semantic search (requires Ollama) [--limit=10]
|
|
212
|
-
|
|
213
|
-
PRIMERS (version migration guides)
|
|
214
|
-
primers seed Seed built-in porting primers
|
|
215
|
-
primers get <id> Get primer by ID
|
|
216
|
-
primers by-version <from> <to> Get primers for a version range [--modloader=]
|
|
217
|
-
primers search <query> Keyword search [--modloader=] [--limit=]
|
|
218
|
-
primers list List all primers [--modloader=] [--limit=]
|
|
219
|
-
primers delete <id> Delete a primer by ID
|
|
220
|
-
primers semantic-search <query> Semantic search (requires Ollama) [--limit=10]
|
|
221
|
-
|
|
222
|
-
MC REGISTRY
|
|
223
|
-
mc-registry blocks Vanilla block list [--version=]
|
|
224
|
-
mc-registry commands Vanilla command tree [--version=]
|
|
225
|
-
mc-registry registries Registry keys [--version=] [--registry=]
|
|
226
|
-
mc-registry sounds Sound event list [--version=]
|
|
227
|
-
mc-registry item-components Item component types [--version=]
|
|
228
|
-
mc-registry registry-entries <reg> Entries in a registry [--version=]
|
|
229
|
-
mc-registry mcmeta-versions Versions index [--filter=release|snapshot|all]
|
|
230
|
-
|
|
231
|
-
MC DATA
|
|
232
|
-
mc-data tags Vanilla data tags [--version=] [--registry=] [--tag-id=] [--namespace=]
|
|
233
|
-
mc-data find-tags-for <entry> Tags containing an entry --registry= [--version=] [--namespace=]
|
|
234
|
-
mc-data recipes Recipe list [--version=] [--type=] [--output-item=]
|
|
235
|
-
mc-data get-recipe <id> Single recipe [--version=]
|
|
236
|
-
mc-data find-recipes-for <item> Recipes producing an item [--version=]
|
|
237
|
-
mc-data loot-tables Loot table list [--version=] [--category=]
|
|
238
|
-
mc-data get-loot-table <path> Single loot table [--version=]
|
|
239
|
-
mc-data lang Language entries [--version=] [--filter=] [--limit=]
|
|
240
|
-
mc-data blockstate <block> Blockstate JSON [--version=]
|
|
241
|
-
mc-data model <path> Model JSON [--version=] [--resolve-parents]
|
|
242
|
-
mc-data model-tree <path> Model parent chain [--version=]
|
|
243
|
-
mc-data biomes Biome list [--version=]
|
|
244
|
-
mc-data get-biome <id> Biome data [--version=]
|
|
245
|
-
mc-data damage-types Damage type list [--version=]
|
|
246
|
-
mc-data enchantments Enchantment list [--version=]
|
|
247
|
-
mc-data get-enchantment <id> Enchantment data [--version=]
|
|
248
|
-
mc-data advancements Advancement list [--version=] [--category=]
|
|
249
|
-
mc-data get-advancement <id> Advancement data [--version=]
|
|
250
|
-
mc-data structures Structure list [--version=]
|
|
251
|
-
mc-data get-structure <id> Structure data [--version=]
|
|
252
|
-
mc-data particles Particle list [--version=]
|
|
253
|
-
mc-data get-particle <id> Particle data [--version=]
|
|
254
|
-
mc-data entity-attributes Entity attribute list [--entity=] [--version=] [--mod-id=]
|
|
255
|
-
|
|
256
|
-
MC FILES (misode/mcmeta assets)
|
|
257
|
-
mc-files get-data <path> Get a data-pack file [--version=] [--json-only]
|
|
258
|
-
mc-files get-asset <path> Get an assets file [--version=] [--json-only]
|
|
259
|
-
mc-files list-files <dir> List files in a branch dir --version= [--branch=]
|
|
260
|
-
mc-files diff <path> Diff a file across versions --version-a= --version-b= [--branch=data]
|
|
261
|
-
mc-files atlas Atlas sprite map [--version=] [--atlas=blocks]
|
|
262
|
-
mc-files raw <path> Raw file by git ref --ref=
|
|
263
|
-
mc-files compare Compare two versions summary --version-a= --version-b= [--branch=]
|
|
264
|
-
mc-files changelog Version changelog --version= [--branch=]
|
|
265
|
-
|
|
266
|
-
MOD JAR (file browser)
|
|
267
|
-
mod-jar list-files <modId> List files inside the JAR [--prefix=]
|
|
268
|
-
mod-jar get-file <modId> Read a JAR file --path=
|
|
269
|
-
mod-jar lang <modId> Language entries [--filter=] [--limit=]
|
|
270
|
-
mod-jar sounds <modId> Sound events [--namespace=]
|
|
271
|
-
mod-jar atlas <modId> Atlas sprite map [--atlas=] [--namespace=]
|
|
272
|
-
mod-jar registry-entries <modId> Custom registry entries [--type=] [--filter=] [--limit=]
|
|
273
|
-
mod-jar manifest <modId> mod.json / mods.toml / fabric.mod.json manifest
|
|
274
|
-
mod-jar list-configs <modId> List config files in JAR
|
|
275
|
-
mod-jar get-config <modId> Read a config file --path=
|
|
276
|
-
|
|
277
|
-
MOD DATA (structured data from JAR)
|
|
278
|
-
mod-data list <modId> <type> List data entries [--namespace=] [--filter=]
|
|
279
|
-
mod-data get <modId> <type> <id> Get a data entry [--namespace=] [--registry=] [--model-path=]
|
|
280
|
-
mod-data diff <dbIdA> <dbIdB> Diff data between two mod versions [--data-type=]
|
|
281
|
-
mod-data trace-item <itemId> Trace crafting recipe chain [--max-depth=]
|
|
282
|
-
|
|
283
|
-
MOD TAGS (cross-mod data-pack tags)
|
|
284
|
-
mod-tags index <modId> Index data-pack tags for one mod
|
|
285
|
-
mod-tags index-all Index tags for all ingested mods
|
|
286
|
-
mod-tags namespaces List all tag namespaces
|
|
287
|
-
mod-tags contributors <tagPath> Mods contributing to a tag [--registry=]
|
|
288
|
-
mod-tags expand <tagPath> Recursively expand a tag [--registry=] [--max-depth=]
|
|
289
|
-
mod-tags mod-list <modId> Tags provided by a mod [--registry=]
|
|
290
|
-
mod-tags find-conflicts Tags with replace:true conflicts [--registry=]
|
|
291
|
-
mod-tags search <query> Search tags [--registry=] [--limit=]
|
|
292
|
-
|
|
293
|
-
GRADLE
|
|
294
|
-
gradle get-files <modId> Extract Gradle build files
|
|
295
|
-
gradle search <query> Search Gradle files across mods [--mod-id-filter=] [--limit=]
|
|
296
|
-
gradle compare-deps Compare dependency versions across mods [--group-filter=] [--mod-id-filter=]
|
|
297
|
-
|
|
298
|
-
REPORTS (generate Markdown)
|
|
299
|
-
report mixin-conflicts [--loader=] [--mc-version=] [--min-conflicts=] [--save-path=]
|
|
300
|
-
report tag-conflicts [--registry=] [--save-path=]
|
|
301
|
-
report version-conflicts [--save-path=]
|
|
302
|
-
report mod-overview --mod-id= [--save-path=]
|
|
303
|
-
report gradle-deps [--group-filter=] [--mod-id-filter=] [--save-path=]
|
|
304
|
-
report pack-compat --mod-id= [--save-path=]
|
|
305
|
-
report dep-graph [--mc-version=] [--save-path=]
|
|
306
|
-
report sidedness [--db-ids=1,2,3] [--save-path=]
|
|
307
|
-
report mod-complexity [--db-ids=1,2,3] [--save-path=]
|
|
308
|
-
report pack-changelog --old-ids=1,2 --new-ids=3,4 [--save-path=]
|
|
309
|
-
|
|
310
|
-
PACK TOOLS
|
|
311
|
-
pack-tools asset-conflicts Asset path conflicts [--asset-type=textures|models|sounds|...] [--mc-version=] [--loader=] [--limit=]
|
|
312
|
-
pack-tools vanilla-overrides Mods overriding vanilla data/assets [--override-type=data|assets|all] [--data-subtype=] [--mc-version=] [--loader=]
|
|
313
|
-
pack-tools sidedness <modId> Classify a mod as client/common/server
|
|
314
|
-
pack-tools pack-sidedness Classify all mods by sidedness [--mc-version=] [--loader=]
|
|
315
|
-
pack-tools complexity Mod complexity scores [--mc-version=] [--loader=]
|
|
316
|
-
pack-tools pack-changelog Diff two pack snapshots --old-ids=1,2 --new-ids=3,4
|
|
317
|
-
pack-tools data-conflicts Data path conflicts [--data-type=recipe|loot_tables|...] [--mc-version=] [--loader=] [--limit=]
|
|
318
|
-
|
|
319
|
-
KUBEJS
|
|
320
|
-
kubejs index <scriptsDir> Index a kubejs/ scripts directory
|
|
321
|
-
kubejs search <scriptsDir> <query> Search indexed KubeJS scripts [--limit=]
|
|
322
|
-
|
|
323
|
-
MODPACKS.CH
|
|
324
|
-
modpacks search <query> Search modpacks [--namespace=ftb|curseforge] [--limit=20]
|
|
325
|
-
modpacks featured Featured packs [--limit=20]
|
|
326
|
-
modpacks info <packId> Pack metadata [--namespace=]
|
|
327
|
-
modpacks manifest <packId> <verId> Pack manifest [--namespace=]
|
|
328
|
-
modpacks list-versions Pack version list [--namespace=] [--pack-id=]
|
|
329
|
-
modpacks list-files Pack file list [--namespace=] [--pack-id=] [--version-id=] [--file-type=]
|
|
330
|
-
modpacks ftb-mod-info <modId> FTB mod info [--mc-version=] [--loader=]
|
|
331
|
-
modpacks find-mod Find a mod across packs [--mod-db-id=] [--cf-project=]
|
|
332
|
-
|
|
333
|
-
DIAGNOSTICS
|
|
334
|
-
crash-log <logPath> Analyze a crash log file (ranked suspect mods)
|
|
335
|
-
missing-deps Find declared deps not satisfied in DB [--mc-version=] [--loader=]
|
|
336
|
-
compat-check <jarPath> Quick mod compatibility check [--mc-version=] [--loader=]
|
|
337
|
-
|
|
338
|
-
FTS / INDEXED SEARCH (no Ollama required)
|
|
339
|
-
index-fts <dbId> Index decompiled mod source for BM25/FTS search
|
|
340
|
-
Works for all loaders: NeoForge, Fabric, Forge, Quilt
|
|
341
|
-
search-indexed <dbId> <query> BM25-ranked FTS search over indexed mod source [--limit=20]
|
|
342
|
-
|
|
343
|
-
SEMANTIC SEARCH (optional — requires Ollama)
|
|
344
|
-
backfill-embeddings Embed all docs/primers/mc-source for semantic search
|
|
345
|
-
[--type=docs|primers|source] [--version=<mc-version>]
|
|
346
|
-
(omit --type to run docs + primers; --type=source needs --version)
|
|
347
|
-
|
|
348
|
-
Environment:
|
|
349
|
-
DATABASE_URL PostgreSQL connection string (required)
|
|
350
|
-
OLLAMA_URL Ollama base URL for semantic search (optional, default http://localhost:11434)
|
|
351
|
-
OLLAMA_EMBED_MODEL Ollama embedding model (optional, default nomic-embed-text)
|
|
352
|
-
CURSEFORGE_API_KEY CurseForge API key (optional, needed for sync-curseforge)
|
|
86
|
+
const HELP = `
|
|
87
|
+
modlens CLI — analyze Minecraft mod JARs
|
|
88
|
+
|
|
89
|
+
Usage: node dist/cli.js <command> [args] [--flags]
|
|
90
|
+
|
|
91
|
+
DATABASE & CATALOG
|
|
92
|
+
stats DB statistics (mod count, classes, loaders)
|
|
93
|
+
list List all mods
|
|
94
|
+
[--loader=] [--mc-version=] [--has-mixins] [--decompiled] [--limit=50]
|
|
95
|
+
get <modId|dbId> Get full metadata for a mod
|
|
96
|
+
search <query> Search mods by name/id [--loader=] [--mc-version=] [--limit=20]
|
|
97
|
+
deps <modId|dbId> List mod dependencies [--recursive]
|
|
98
|
+
|
|
99
|
+
INGEST
|
|
100
|
+
ingest <jarPath> Ingest a mod JAR [--skip-source] [--skip-index]
|
|
101
|
+
ingest-neoforge <version> Download + ingest NeoForge (e.g. 21.1.228) [--skip-index]
|
|
102
|
+
ingest-forge <version> Download + ingest Forge (e.g. 1.20.1-47.3.22) [--skip-index]
|
|
103
|
+
ingest-fabric-api <version> Download + ingest Fabric API (e.g. 0.116.11+1.21.1) [--skip-index]
|
|
104
|
+
batch-ingest <dir> Ingest all JARs in a directory [--index]
|
|
105
|
+
reindex Index class names for un-indexed mods [--db-id=N]
|
|
106
|
+
|
|
107
|
+
DECOMPILE & SOURCE
|
|
108
|
+
decompile <dbId> Decompile entire mod JAR with Vineflower
|
|
109
|
+
decompile-class <dbId> <class> Decompile a single class (faster)
|
|
110
|
+
source <dbId> [path] Browse or read decompiled source
|
|
111
|
+
search-source <query> Search decompiled source [--db-id=N] [--regex] [--limit=50]
|
|
112
|
+
|
|
113
|
+
BYTECODE ANALYSIS
|
|
114
|
+
search-class <dbId> <query> Search for a class by name
|
|
115
|
+
members <dbId> <class> List methods and fields of a class
|
|
116
|
+
bytecode <dbId> <class> Raw javap bytecode for a class
|
|
117
|
+
refs <dbId> <target> Find references to a class/method/field
|
|
118
|
+
inheritance <dbId> <class> Superclass, interfaces, subclasses
|
|
119
|
+
diff <dbIdA> <dbIdB> Compare two mod versions (added/removed classes)
|
|
120
|
+
|
|
121
|
+
MIXIN ANALYSIS
|
|
122
|
+
mixin-targets <modId|dbId> MC classes this mod injects into
|
|
123
|
+
resolve-mixins <dbId> Parse @Mixin bytecode and update DB targets
|
|
124
|
+
mixin-conflicts <targetClass> All mods injecting into the same MC class
|
|
125
|
+
at-entries <dbId> Access Transformer entries
|
|
126
|
+
aw-entries <dbId> Access Widener entries
|
|
127
|
+
|
|
128
|
+
PLATFORM
|
|
129
|
+
sync-modrinth <dbId> Look up mod on Modrinth
|
|
130
|
+
sync-curseforge <dbId> Look up mod on CurseForge
|
|
131
|
+
check-updates <dbId> Check for newer versions
|
|
132
|
+
download-source <dbId> Download GitHub/GitLab source
|
|
133
|
+
|
|
134
|
+
VERSIONS
|
|
135
|
+
mc-versions List Minecraft versions [--type=release|snapshot|all]
|
|
136
|
+
neoforge-versions List NeoForge versions [--mc-version=1.21.1] [--limit=20]
|
|
137
|
+
fabric-api-versions List Fabric API versions [--mc-version=1.21.1] [--limit=20]
|
|
138
|
+
|
|
139
|
+
BATCH
|
|
140
|
+
batch-resolve-mixins Resolve @Mixin targets for all mixin mods
|
|
141
|
+
|
|
142
|
+
MOD: ADDITIONAL ACTIONS
|
|
143
|
+
dep-graph Dependency graph for all ingested mods [--mc-version=]
|
|
144
|
+
version-conflicts Find mods with conflicting version requirements
|
|
145
|
+
source-urls [query] List Modrinth/CurseForge source URLs (filter by query)
|
|
146
|
+
decompile-status <dbId> Decompilation progress for a mod
|
|
147
|
+
batch-decompile Decompile all un-decompiled mods [--concurrency=2]
|
|
148
|
+
get-paths <dbId> JAR/decomp paths so you can grep natively
|
|
149
|
+
batch-sync Batch sync all mods from platform APIs
|
|
150
|
+
[--sync-modrinth] [--sync-curseforge] [--download-sources]
|
|
151
|
+
[--mod-id-filter=] [--limit=]
|
|
152
|
+
|
|
153
|
+
MOD BYTECODE: ADVANCED
|
|
154
|
+
cross-refs <target> Cross-mod references to a class/method/field
|
|
155
|
+
[--mc-version=] [--loader=] [--limit=]
|
|
156
|
+
diff-detailed <dbIdA> <dbIdB> AST-level method/field diff with breaking-change flags
|
|
157
|
+
[--packages=a/b,c/d] [--limit=200] [--semantic] [--cache] [--force]
|
|
158
|
+
find-implementors <target> Find all classes implementing an interface/extending a class
|
|
159
|
+
[--mod-id=] [--limit=] [--transitive]
|
|
160
|
+
scan-registrations <dbId> Scan mod for registry object registrations
|
|
161
|
+
annotated-by <annotation> Find classes annotated with a given annotation [--mod-id=] [--limit=]
|
|
162
|
+
event-listeners <event> Find event listener registrations [--mod-id=] [--limit=]
|
|
163
|
+
optional-integrations <dbId> Detect optional mod integrations (soft dependencies)
|
|
164
|
+
network-payloads <dbId> Extract network packet/payload types
|
|
165
|
+
config-schema <dbId> Extract configuration class schemas
|
|
166
|
+
|
|
167
|
+
MIXIN ANALYSIS: ADVANCED
|
|
168
|
+
targets-in-package <packagePrefix> All mods targeting a class within a package [--mc-version=]
|
|
169
|
+
at-conflicts AT/AW entries conflicting across mods [--mc-version=] [--loader=]
|
|
170
|
+
|
|
171
|
+
MIXIN SCAN (cross-mod conflict matrix)
|
|
172
|
+
mixin-scan list List mods with mixins [--loader=] [--mc-version=]
|
|
173
|
+
mixin-scan conflict-matrix Full mixin conflict matrix [--loader=] [--mc-version=] [--min-conflicts=]
|
|
174
|
+
mixin-scan class-detail <class> All mixins targeting a single MC class
|
|
175
|
+
mixin-scan hotspots Most-targeted MC classes [--top=N] [--loader=]
|
|
176
|
+
mixin-scan batch-resolve Resolve mixin targets for all mods [--loader=] [--mc-version=]
|
|
177
|
+
|
|
178
|
+
VANILLA MC SOURCE
|
|
179
|
+
mc-source search-class <ver> <q> Search for a vanilla class by name
|
|
180
|
+
mc-source get-source <ver> <class> Get decompiled vanilla source [--start-line=] [--end-line=] [--max-lines=]
|
|
181
|
+
mc-source bytecode <ver> <class> Raw javap bytecode for a vanilla class
|
|
182
|
+
mc-source class-members <ver> <c> Methods and fields of a vanilla class
|
|
183
|
+
mc-source find-refs <ver> <target> References to a class/method/field in vanilla
|
|
184
|
+
mc-source inheritance <ver> <c> Inheritance tree for a vanilla class
|
|
185
|
+
mc-source diff <verA> <verB> High-level diff between two MC versions
|
|
186
|
+
mc-source diff-detailed <A> <B> AST-level method/field diff [--packages=] [--limit=200] [--semantic] [--cache] [--force]
|
|
187
|
+
mc-source decompile <ver> Decompile MC version with Vineflower [--force]
|
|
188
|
+
mc-source decompile-status <ver> Check decompilation progress
|
|
189
|
+
mc-source search-code <ver> <q> Full-text search over vanilla source [--search-type=content|class|method|field|all] [--regex] [--limit=50]
|
|
190
|
+
mc-source index <ver> Index vanilla source for BM25 search [--force]
|
|
191
|
+
mc-source search-indexed <ver> <q> BM25-ranked FTS over vanilla source [--limit=20]
|
|
192
|
+
mc-source search-events <ver> Browse event classes [query] [--modloader=minecraft|neoforge|fabric|fabric-api]
|
|
193
|
+
mc-source validate-aw <ver> <file> Validate an .accesswidener file against vanilla
|
|
194
|
+
mc-source analyze-mixin <ver> <f> Analyze a mixin Java source file
|
|
195
|
+
mc-source search-semantic <ver> <q> Semantic search (requires Ollama + index) [--limit=10]
|
|
196
|
+
mc-source get-paths <ver> On-disk jar/decomp/index paths
|
|
197
|
+
|
|
198
|
+
MAPPINGS
|
|
199
|
+
mappings find <sym> <ver> <src> <tgt> Translate symbol between namespaces (official|intermediary|yarn|mojmap)
|
|
200
|
+
mappings remap <in.jar> <out.jar> <ver> <mapping> Remap a JAR between namespaces
|
|
201
|
+
mappings parchment <class> <mcVersion> Parchment parameter/javadoc for a class
|
|
202
|
+
mappings list-parchment <mcVersion> Available Parchment versions
|
|
203
|
+
mappings parchment-summary <mcVersion> Stats on Parchment coverage
|
|
204
|
+
|
|
205
|
+
DOCS
|
|
206
|
+
docs seed Seed built-in documentation entries
|
|
207
|
+
docs get <query> Get documentation by title/class
|
|
208
|
+
docs search <query> Keyword search [--category=] [--namespace=]
|
|
209
|
+
docs list List all docs [--category=] [--namespace=] [--tag=] [--limit=100]
|
|
210
|
+
docs delete <id> Delete a doc entry by ID
|
|
211
|
+
docs semantic-search <query> Semantic search (requires Ollama) [--limit=10]
|
|
212
|
+
|
|
213
|
+
PRIMERS (version migration guides)
|
|
214
|
+
primers seed Seed built-in porting primers
|
|
215
|
+
primers get <id> Get primer by ID
|
|
216
|
+
primers by-version <from> <to> Get primers for a version range [--modloader=]
|
|
217
|
+
primers search <query> Keyword search [--modloader=] [--limit=]
|
|
218
|
+
primers list List all primers [--modloader=] [--limit=]
|
|
219
|
+
primers delete <id> Delete a primer by ID
|
|
220
|
+
primers semantic-search <query> Semantic search (requires Ollama) [--limit=10]
|
|
221
|
+
|
|
222
|
+
MC REGISTRY
|
|
223
|
+
mc-registry blocks Vanilla block list [--version=]
|
|
224
|
+
mc-registry commands Vanilla command tree [--version=]
|
|
225
|
+
mc-registry registries Registry keys [--version=] [--registry=]
|
|
226
|
+
mc-registry sounds Sound event list [--version=]
|
|
227
|
+
mc-registry item-components Item component types [--version=]
|
|
228
|
+
mc-registry registry-entries <reg> Entries in a registry [--version=]
|
|
229
|
+
mc-registry mcmeta-versions Versions index [--filter=release|snapshot|all]
|
|
230
|
+
|
|
231
|
+
MC DATA
|
|
232
|
+
mc-data tags Vanilla data tags [--version=] [--registry=] [--tag-id=] [--namespace=]
|
|
233
|
+
mc-data find-tags-for <entry> Tags containing an entry --registry= [--version=] [--namespace=]
|
|
234
|
+
mc-data recipes Recipe list [--version=] [--type=] [--output-item=]
|
|
235
|
+
mc-data get-recipe <id> Single recipe [--version=]
|
|
236
|
+
mc-data find-recipes-for <item> Recipes producing an item [--version=]
|
|
237
|
+
mc-data loot-tables Loot table list [--version=] [--category=]
|
|
238
|
+
mc-data get-loot-table <path> Single loot table [--version=]
|
|
239
|
+
mc-data lang Language entries [--version=] [--filter=] [--limit=]
|
|
240
|
+
mc-data blockstate <block> Blockstate JSON [--version=]
|
|
241
|
+
mc-data model <path> Model JSON [--version=] [--resolve-parents]
|
|
242
|
+
mc-data model-tree <path> Model parent chain [--version=]
|
|
243
|
+
mc-data biomes Biome list [--version=]
|
|
244
|
+
mc-data get-biome <id> Biome data [--version=]
|
|
245
|
+
mc-data damage-types Damage type list [--version=]
|
|
246
|
+
mc-data enchantments Enchantment list [--version=]
|
|
247
|
+
mc-data get-enchantment <id> Enchantment data [--version=]
|
|
248
|
+
mc-data advancements Advancement list [--version=] [--category=]
|
|
249
|
+
mc-data get-advancement <id> Advancement data [--version=]
|
|
250
|
+
mc-data structures Structure list [--version=]
|
|
251
|
+
mc-data get-structure <id> Structure data [--version=]
|
|
252
|
+
mc-data particles Particle list [--version=]
|
|
253
|
+
mc-data get-particle <id> Particle data [--version=]
|
|
254
|
+
mc-data entity-attributes Entity attribute list [--entity=] [--version=] [--mod-id=]
|
|
255
|
+
|
|
256
|
+
MC FILES (misode/mcmeta assets)
|
|
257
|
+
mc-files get-data <path> Get a data-pack file [--version=] [--json-only]
|
|
258
|
+
mc-files get-asset <path> Get an assets file [--version=] [--json-only]
|
|
259
|
+
mc-files list-files <dir> List files in a branch dir --version= [--branch=]
|
|
260
|
+
mc-files diff <path> Diff a file across versions --version-a= --version-b= [--branch=data]
|
|
261
|
+
mc-files atlas Atlas sprite map [--version=] [--atlas=blocks]
|
|
262
|
+
mc-files raw <path> Raw file by git ref --ref=
|
|
263
|
+
mc-files compare Compare two versions summary --version-a= --version-b= [--branch=]
|
|
264
|
+
mc-files changelog Version changelog --version= [--branch=]
|
|
265
|
+
|
|
266
|
+
MOD JAR (file browser)
|
|
267
|
+
mod-jar list-files <modId> List files inside the JAR [--prefix=]
|
|
268
|
+
mod-jar get-file <modId> Read a JAR file --path=
|
|
269
|
+
mod-jar lang <modId> Language entries [--filter=] [--limit=]
|
|
270
|
+
mod-jar sounds <modId> Sound events [--namespace=]
|
|
271
|
+
mod-jar atlas <modId> Atlas sprite map [--atlas=] [--namespace=]
|
|
272
|
+
mod-jar registry-entries <modId> Custom registry entries [--type=] [--filter=] [--limit=]
|
|
273
|
+
mod-jar manifest <modId> mod.json / mods.toml / fabric.mod.json manifest
|
|
274
|
+
mod-jar list-configs <modId> List config files in JAR
|
|
275
|
+
mod-jar get-config <modId> Read a config file --path=
|
|
276
|
+
|
|
277
|
+
MOD DATA (structured data from JAR)
|
|
278
|
+
mod-data list <modId> <type> List data entries [--namespace=] [--filter=]
|
|
279
|
+
mod-data get <modId> <type> <id> Get a data entry [--namespace=] [--registry=] [--model-path=]
|
|
280
|
+
mod-data diff <dbIdA> <dbIdB> Diff data between two mod versions [--data-type=]
|
|
281
|
+
mod-data trace-item <itemId> Trace crafting recipe chain [--max-depth=]
|
|
282
|
+
|
|
283
|
+
MOD TAGS (cross-mod data-pack tags)
|
|
284
|
+
mod-tags index <modId> Index data-pack tags for one mod
|
|
285
|
+
mod-tags index-all Index tags for all ingested mods
|
|
286
|
+
mod-tags namespaces List all tag namespaces
|
|
287
|
+
mod-tags contributors <tagPath> Mods contributing to a tag [--registry=]
|
|
288
|
+
mod-tags expand <tagPath> Recursively expand a tag [--registry=] [--max-depth=]
|
|
289
|
+
mod-tags mod-list <modId> Tags provided by a mod [--registry=]
|
|
290
|
+
mod-tags find-conflicts Tags with replace:true conflicts [--registry=]
|
|
291
|
+
mod-tags search <query> Search tags [--registry=] [--limit=]
|
|
292
|
+
|
|
293
|
+
GRADLE
|
|
294
|
+
gradle get-files <modId> Extract Gradle build files
|
|
295
|
+
gradle search <query> Search Gradle files across mods [--mod-id-filter=] [--limit=]
|
|
296
|
+
gradle compare-deps Compare dependency versions across mods [--group-filter=] [--mod-id-filter=]
|
|
297
|
+
|
|
298
|
+
REPORTS (generate Markdown)
|
|
299
|
+
report mixin-conflicts [--loader=] [--mc-version=] [--min-conflicts=] [--save-path=]
|
|
300
|
+
report tag-conflicts [--registry=] [--save-path=]
|
|
301
|
+
report version-conflicts [--save-path=]
|
|
302
|
+
report mod-overview --mod-id= [--save-path=]
|
|
303
|
+
report gradle-deps [--group-filter=] [--mod-id-filter=] [--save-path=]
|
|
304
|
+
report pack-compat --mod-id= [--save-path=]
|
|
305
|
+
report dep-graph [--mc-version=] [--save-path=]
|
|
306
|
+
report sidedness [--db-ids=1,2,3] [--save-path=]
|
|
307
|
+
report mod-complexity [--db-ids=1,2,3] [--save-path=]
|
|
308
|
+
report pack-changelog --old-ids=1,2 --new-ids=3,4 [--save-path=]
|
|
309
|
+
|
|
310
|
+
PACK TOOLS
|
|
311
|
+
pack-tools asset-conflicts Asset path conflicts [--asset-type=textures|models|sounds|...] [--mc-version=] [--loader=] [--limit=]
|
|
312
|
+
pack-tools vanilla-overrides Mods overriding vanilla data/assets [--override-type=data|assets|all] [--data-subtype=] [--mc-version=] [--loader=]
|
|
313
|
+
pack-tools sidedness <modId> Classify a mod as client/common/server
|
|
314
|
+
pack-tools pack-sidedness Classify all mods by sidedness [--mc-version=] [--loader=]
|
|
315
|
+
pack-tools complexity Mod complexity scores [--mc-version=] [--loader=]
|
|
316
|
+
pack-tools pack-changelog Diff two pack snapshots --old-ids=1,2 --new-ids=3,4
|
|
317
|
+
pack-tools data-conflicts Data path conflicts [--data-type=recipe|loot_tables|...] [--mc-version=] [--loader=] [--limit=]
|
|
318
|
+
|
|
319
|
+
KUBEJS
|
|
320
|
+
kubejs index <scriptsDir> Index a kubejs/ scripts directory
|
|
321
|
+
kubejs search <scriptsDir> <query> Search indexed KubeJS scripts [--limit=]
|
|
322
|
+
|
|
323
|
+
MODPACKS.CH
|
|
324
|
+
modpacks search <query> Search modpacks [--namespace=ftb|curseforge] [--limit=20]
|
|
325
|
+
modpacks featured Featured packs [--limit=20]
|
|
326
|
+
modpacks info <packId> Pack metadata [--namespace=]
|
|
327
|
+
modpacks manifest <packId> <verId> Pack manifest [--namespace=]
|
|
328
|
+
modpacks list-versions Pack version list [--namespace=] [--pack-id=]
|
|
329
|
+
modpacks list-files Pack file list [--namespace=] [--pack-id=] [--version-id=] [--file-type=]
|
|
330
|
+
modpacks ftb-mod-info <modId> FTB mod info [--mc-version=] [--loader=]
|
|
331
|
+
modpacks find-mod Find a mod across packs [--mod-db-id=] [--cf-project=]
|
|
332
|
+
|
|
333
|
+
DIAGNOSTICS
|
|
334
|
+
crash-log <logPath> Analyze a crash log file (ranked suspect mods)
|
|
335
|
+
missing-deps Find declared deps not satisfied in DB [--mc-version=] [--loader=]
|
|
336
|
+
compat-check <jarPath> Quick mod compatibility check [--mc-version=] [--loader=]
|
|
337
|
+
|
|
338
|
+
FTS / INDEXED SEARCH (no Ollama required)
|
|
339
|
+
index-fts <dbId> Index decompiled mod source for BM25/FTS search
|
|
340
|
+
Works for all loaders: NeoForge, Fabric, Forge, Quilt
|
|
341
|
+
search-indexed <dbId> <query> BM25-ranked FTS search over indexed mod source [--limit=20]
|
|
342
|
+
|
|
343
|
+
SEMANTIC SEARCH (optional — requires Ollama)
|
|
344
|
+
backfill-embeddings Embed all docs/primers/mc-source for semantic search
|
|
345
|
+
[--type=docs|primers|source] [--version=<mc-version>]
|
|
346
|
+
(omit --type to run docs + primers; --type=source needs --version)
|
|
347
|
+
|
|
348
|
+
Environment:
|
|
349
|
+
DATABASE_URL PostgreSQL connection string (required)
|
|
350
|
+
OLLAMA_URL Ollama base URL for semantic search (optional, default http://localhost:11434)
|
|
351
|
+
OLLAMA_EMBED_MODEL Ollama embedding model (optional, default nomic-embed-text)
|
|
352
|
+
CURSEFORGE_API_KEY CurseForge API key (optional, needed for sync-curseforge)
|
|
353
353
|
`.trim();
|
|
354
354
|
// ── Commands ─────────────────────────────────────────────────────────────────
|
|
355
355
|
if (!command || command === "--help" || command === "-h") {
|
package/dist/db-backend.d.ts
CHANGED
|
@@ -4,6 +4,19 @@
|
|
|
4
4
|
*/
|
|
5
5
|
export type Backend = "postgres" | "pglite" | "sqlite";
|
|
6
6
|
export declare function detectBackend(): Backend;
|
|
7
|
+
/**
|
|
8
|
+
* Prisma case-insensitive `contains`/`equals` modifier, backend-aware.
|
|
9
|
+
*
|
|
10
|
+
* Postgres/PGlite support `mode: "insensitive"` (ILIKE). The SQLite Prisma
|
|
11
|
+
* connector rejects the `mode` argument entirely (`Unknown argument 'mode'`),
|
|
12
|
+
* but SQLite's `LIKE` is already case-insensitive for ASCII — so we omit it.
|
|
13
|
+
*
|
|
14
|
+
* Spread into a string filter:
|
|
15
|
+
* { title: { contains: q, ...caseInsensitive() } }
|
|
16
|
+
*/
|
|
17
|
+
export declare function caseInsensitive(): {
|
|
18
|
+
mode?: "insensitive";
|
|
19
|
+
};
|
|
7
20
|
/**
|
|
8
21
|
* Serialize an array to a JSON string for SQLite String columns.
|
|
9
22
|
* On postgres/pglite, returns the original value unchanged.
|
|
@@ -13,5 +26,5 @@ export declare function serializeArray<T>(value: T[]): T[] | string;
|
|
|
13
26
|
* Deserialize a SQLite JSON string column back to an array.
|
|
14
27
|
* On postgres/pglite, returns the original value unchanged.
|
|
15
28
|
*/
|
|
16
|
-
export declare function deserializeArray<T>(value:
|
|
29
|
+
export declare function deserializeArray<T>(value: unknown): T[];
|
|
17
30
|
//# sourceMappingURL=db-backend.d.ts.map
|
package/dist/db-backend.d.ts.map
CHANGED
|
@@ -1 +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,
|
|
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;;;;;;;;;GASG;AACH,wBAAgB,eAAe,IAAI;IAAE,IAAI,CAAC,EAAE,aAAa,CAAA;CAAE,CAE1D;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,OAAO,GAAG,CAAC,EAAE,CAKvD"}
|
package/dist/db-backend.js
CHANGED
|
@@ -13,6 +13,19 @@ export function detectBackend() {
|
|
|
13
13
|
// case (zero-config embedded backend the launcher bootstraps on first run).
|
|
14
14
|
return "sqlite";
|
|
15
15
|
}
|
|
16
|
+
/**
|
|
17
|
+
* Prisma case-insensitive `contains`/`equals` modifier, backend-aware.
|
|
18
|
+
*
|
|
19
|
+
* Postgres/PGlite support `mode: "insensitive"` (ILIKE). The SQLite Prisma
|
|
20
|
+
* connector rejects the `mode` argument entirely (`Unknown argument 'mode'`),
|
|
21
|
+
* but SQLite's `LIKE` is already case-insensitive for ASCII — so we omit it.
|
|
22
|
+
*
|
|
23
|
+
* Spread into a string filter:
|
|
24
|
+
* { title: { contains: q, ...caseInsensitive() } }
|
|
25
|
+
*/
|
|
26
|
+
export function caseInsensitive() {
|
|
27
|
+
return detectBackend() === "sqlite" ? {} : { mode: "insensitive" };
|
|
28
|
+
}
|
|
16
29
|
/**
|
|
17
30
|
* Serialize an array to a JSON string for SQLite String columns.
|
|
18
31
|
* On postgres/pglite, returns the original value unchanged.
|
package/dist/db-backend.js.map
CHANGED
|
@@ -1 +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,
|
|
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;;;;;;;;;GASG;AACH,MAAM,UAAU,eAAe;IAC3B,OAAO,aAAa,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;AACvE,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,KAAc;IAC9C,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"}
|