@creeperhost/modlens-mcp 1.6.0 → 1.6.1
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/generated/sqlite/internal/class.d.ts.map +1 -1
- package/dist/generated/sqlite/internal/class.js +4 -3
- 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/repositories/embeddings-sqlite.js +21 -21
- package/dist/repositories/embeddings.js +28 -28
- package/dist/repositories/mod.js +2 -2
- package/dist/search-adapter.js +51 -51
- package/dist/tools/compat-check.js +9 -9
- package/dist/tools/embed-registry.js +9 -9
- package/dist/tools/graphify.js +14 -14
- package/dist/tools/mc-fts.js +2 -2
- package/dist/tools/mixin-scan.d.ts +1 -1
- package/dist/tools/mixin-scan.js +16 -16
- 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/package.json
CHANGED
|
@@ -1,62 +1,70 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@creeperhost/modlens-mcp",
|
|
3
|
-
"version": "1.6.
|
|
4
|
-
"description": "MCP server for browsing, decompiling, and analyzing Minecraft mod JARs",
|
|
5
|
-
"type": "module",
|
|
6
|
-
"
|
|
7
|
-
|
|
8
|
-
"
|
|
9
|
-
},
|
|
10
|
-
"
|
|
11
|
-
|
|
12
|
-
"
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
"
|
|
20
|
-
"
|
|
21
|
-
"
|
|
22
|
-
"
|
|
23
|
-
"
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
"
|
|
27
|
-
"
|
|
28
|
-
"
|
|
29
|
-
"
|
|
30
|
-
"
|
|
31
|
-
"
|
|
32
|
-
"
|
|
33
|
-
"db:
|
|
34
|
-
"db:push
|
|
35
|
-
"db:
|
|
36
|
-
"db:
|
|
37
|
-
"
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
"
|
|
41
|
-
"
|
|
42
|
-
"
|
|
43
|
-
"
|
|
44
|
-
"
|
|
45
|
-
"
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
"
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
"@
|
|
52
|
-
"
|
|
53
|
-
"
|
|
54
|
-
"
|
|
55
|
-
"
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
"@
|
|
60
|
-
"
|
|
61
|
-
|
|
62
|
-
|
|
1
|
+
{
|
|
2
|
+
"name": "@creeperhost/modlens-mcp",
|
|
3
|
+
"version": "1.6.1",
|
|
4
|
+
"description": "MCP server for browsing, decompiling, and analyzing Minecraft mod JARs",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "git+https://github.com/CreeperHost/modlens-mcp.git"
|
|
9
|
+
},
|
|
10
|
+
"homepage": "https://github.com/CreeperHost/modlens-mcp#readme",
|
|
11
|
+
"bugs": {
|
|
12
|
+
"url": "https://github.com/CreeperHost/modlens-mcp/issues"
|
|
13
|
+
},
|
|
14
|
+
"main": "dist/server.js",
|
|
15
|
+
"bin": {
|
|
16
|
+
"modlens-mcp": "dist/launcher.js"
|
|
17
|
+
},
|
|
18
|
+
"files": [
|
|
19
|
+
"dist/",
|
|
20
|
+
"prisma/",
|
|
21
|
+
"scripts/",
|
|
22
|
+
"package.json",
|
|
23
|
+
"README.md"
|
|
24
|
+
],
|
|
25
|
+
"scripts": {
|
|
26
|
+
"postinstall": "prisma generate",
|
|
27
|
+
"build": "npm run db:generate:sqlite && tsc && node scripts/build-template-db.mjs",
|
|
28
|
+
"dev": "tsc --watch",
|
|
29
|
+
"start": "node dist/server.js",
|
|
30
|
+
"setup": "npm run build && node dist/setup.js",
|
|
31
|
+
"test": "vitest run",
|
|
32
|
+
"test:watch": "vitest",
|
|
33
|
+
"db:generate": "prisma generate",
|
|
34
|
+
"db:push": "prisma db push",
|
|
35
|
+
"db:migrate": "prisma migrate dev",
|
|
36
|
+
"db:setup": "prisma migrate deploy && node scripts/create-fts-index.mjs && node scripts/migrate-mod-source-files.mjs",
|
|
37
|
+
"db:vector": "node scripts/enable-pgvector.mjs",
|
|
38
|
+
"db:studio": "prisma studio",
|
|
39
|
+
"db:push:sqlite": "prisma db push --schema prisma/backends/schema.sqlite.prisma",
|
|
40
|
+
"db:generate:sqlite": "prisma generate --schema prisma/backends/schema.sqlite.prisma",
|
|
41
|
+
"db:vector:sqlite": "node scripts/enable-sqlite-vec.mjs",
|
|
42
|
+
"db:push:pglite": "prisma db push",
|
|
43
|
+
"db:vector:pglite": "node scripts/enable-pgvector.mjs",
|
|
44
|
+
"db:backup": "node scripts/backup.mjs",
|
|
45
|
+
"update": "git pull && npm install && npm run build && node scripts/post-update.mjs"
|
|
46
|
+
},
|
|
47
|
+
"dependencies": {
|
|
48
|
+
"@clack/prompts": "^1.4.0",
|
|
49
|
+
"@modelcontextprotocol/sdk": "^1.10.0",
|
|
50
|
+
"@prisma/adapter-better-sqlite3": "^6.0.0",
|
|
51
|
+
"@prisma/client": "^6.0.0",
|
|
52
|
+
"adm-zip": "^0.5.16",
|
|
53
|
+
"better-sqlite3": "^11.9.0",
|
|
54
|
+
"prisma": "^6.0.0",
|
|
55
|
+
"smol-toml": "^1.6.1",
|
|
56
|
+
"zod": "^3.23.8"
|
|
57
|
+
},
|
|
58
|
+
"devDependencies": {
|
|
59
|
+
"@types/adm-zip": "^0.5.7",
|
|
60
|
+
"@types/better-sqlite3": "^7.0.0",
|
|
61
|
+
"@types/node": "^22.0.0",
|
|
62
|
+
"typescript": "^5.6.0",
|
|
63
|
+
"vitest": "^4.1.6"
|
|
64
|
+
},
|
|
65
|
+
"optionalDependencies": {
|
|
66
|
+
"@electric-sql/pglite": "^0.2.0",
|
|
67
|
+
"@prisma/adapter-pglite": "^6.0.0",
|
|
68
|
+
"sqlite-vec": "^0.1.0"
|
|
69
|
+
}
|
|
70
|
+
}
|
|
@@ -1,215 +1,215 @@
|
|
|
1
|
-
// prisma/backends/schema.sqlite.prisma
|
|
2
|
-
generator client {
|
|
3
|
-
// New Rust-free client: no native query-engine binary. Queries run through a
|
|
4
|
-
// portable WASM query compiler driven by the better-sqlite3 driver adapter,
|
|
5
|
-
// so the prebuilt client ships and runs on every platform.
|
|
6
|
-
provider = "prisma-client"
|
|
7
|
-
engineType = "client"
|
|
8
|
-
output = "../../src/generated/sqlite"
|
|
9
|
-
runtime = "nodejs"
|
|
10
|
-
moduleFormat = "esm"
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
datasource db {
|
|
14
|
-
provider = "sqlite"
|
|
15
|
-
url = env("DATABASE_URL")
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
model Mod {
|
|
19
|
-
id Int @id @default(autoincrement())
|
|
20
|
-
modId String @map("mod_id")
|
|
21
|
-
displayName String @map("display_name")
|
|
22
|
-
version String
|
|
23
|
-
mcVersion String @map("mc_version")
|
|
24
|
-
loader String
|
|
25
|
-
jarPath String @unique @map("jar_path")
|
|
26
|
-
sha256 String?
|
|
27
|
-
murmur2 String?
|
|
28
|
-
sha512 String?
|
|
29
|
-
sourcePath String? @map("source_path")
|
|
30
|
-
decompPath String? @map("decomp_path")
|
|
31
|
-
decompiled Boolean @default(false)
|
|
32
|
-
graphPath String? @map("graph_path")
|
|
33
|
-
modrinthId String? @map("modrinth_id")
|
|
34
|
-
curseforgeId Int? @map("curseforge_id")
|
|
35
|
-
hasMixins Boolean @default(false) @map("has_mixins")
|
|
36
|
-
hasAt Boolean @default(false) @map("has_at")
|
|
37
|
-
hasAw Boolean @default(false) @map("has_aw")
|
|
38
|
-
mixinConfigs String @default("[]") @map("mixin_configs")
|
|
39
|
-
mixinTargets String @default("[]") @map("mixin_targets")
|
|
40
|
-
atEntries String @default("[]") @map("at_entries")
|
|
41
|
-
awEntries String @default("[]") @map("aw_entries")
|
|
42
|
-
dependencies String @default("[]")
|
|
43
|
-
metadata String @default("{}")
|
|
44
|
-
metadataSource String? @map("metadata_source")
|
|
45
|
-
tags String @default("[]")
|
|
46
|
-
ingestedAt DateTime @default(now()) @map("ingested_at")
|
|
47
|
-
updatedAt DateTime @updatedAt @map("updated_at")
|
|
48
|
-
|
|
49
|
-
classes ModClass[]
|
|
50
|
-
modTags ModTag[]
|
|
51
|
-
sourceFiles ModSourceFile[]
|
|
52
|
-
|
|
53
|
-
@@unique([modId, version, mcVersion, loader])
|
|
54
|
-
@@index([modId])
|
|
55
|
-
@@index([mcVersion])
|
|
56
|
-
@@index([loader])
|
|
57
|
-
@@index([modrinthId])
|
|
58
|
-
@@index([curseforgeId])
|
|
59
|
-
@@map("mods")
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
model ModClass {
|
|
63
|
-
id Int @id @default(autoincrement())
|
|
64
|
-
modId Int @map("mod_id")
|
|
65
|
-
className String @map("class_name")
|
|
66
|
-
superClass String? @map("super_class")
|
|
67
|
-
interfaces String @default("[]")
|
|
68
|
-
accessFlags Int @default(0) @map("access_flags")
|
|
69
|
-
|
|
70
|
-
mod Mod @relation(fields: [modId], references: [id], onDelete: Cascade)
|
|
71
|
-
|
|
72
|
-
@@unique([modId, className])
|
|
73
|
-
@@index([className])
|
|
74
|
-
@@index([modId])
|
|
75
|
-
@@map("mod_classes")
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
model McVersion {
|
|
79
|
-
id Int @id @default(autoincrement())
|
|
80
|
-
versionId String @unique @map("version_id")
|
|
81
|
-
type String @default("release")
|
|
82
|
-
jarPath String? @map("jar_path")
|
|
83
|
-
decompPath String? @map("decomp_path")
|
|
84
|
-
decompiled Boolean @default(false)
|
|
85
|
-
indexed Boolean @default(false)
|
|
86
|
-
releaseTime DateTime @map("release_time")
|
|
87
|
-
createdAt DateTime @default(now()) @map("created_at")
|
|
88
|
-
|
|
89
|
-
sourceFiles McSourceFile[]
|
|
90
|
-
|
|
91
|
-
@@map("mc_versions")
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
// ── Cached AST-level version diffs ──────────────────────────────────────────
|
|
95
|
-
// SQLite: result stored as TEXT (JSON string) instead of Json type.
|
|
96
|
-
|
|
97
|
-
model McVersionDiff {
|
|
98
|
-
id Int @id @default(autoincrement())
|
|
99
|
-
versionA String @map("version_a")
|
|
100
|
-
versionB String @map("version_b")
|
|
101
|
-
packagesHash String @default("all") @map("packages_hash")
|
|
102
|
-
result String // SQLite: JSON stored as TEXT
|
|
103
|
-
createdAt DateTime @default(now()) @map("created_at")
|
|
104
|
-
|
|
105
|
-
@@unique([versionA, versionB, packagesHash])
|
|
106
|
-
@@index([versionA, versionB])
|
|
107
|
-
@@map("mc_version_diffs")
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
// ── Cached AST-level mod version diffs ────────────────────────────────────────
|
|
111
|
-
// SQLite: result stored as TEXT (JSON string) instead of Json type.
|
|
112
|
-
|
|
113
|
-
model ModVersionDiff {
|
|
114
|
-
id Int @id @default(autoincrement())
|
|
115
|
-
modDbIdA Int @map("mod_db_id_a")
|
|
116
|
-
modDbIdB Int @map("mod_db_id_b")
|
|
117
|
-
packagesHash String @default("all") @map("packages_hash")
|
|
118
|
-
result String // SQLite: JSON stored as TEXT
|
|
119
|
-
createdAt DateTime @default(now()) @map("created_at")
|
|
120
|
-
|
|
121
|
-
@@unique([modDbIdA, modDbIdB, packagesHash])
|
|
122
|
-
@@index([modDbIdA, modDbIdB])
|
|
123
|
-
@@map("mod_version_diffs")
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
model ModTag {
|
|
127
|
-
id Int @id @default(autoincrement())
|
|
128
|
-
modId Int @map("mod_id")
|
|
129
|
-
mod Mod @relation(fields: [modId], references: [id], onDelete: Cascade)
|
|
130
|
-
registry String
|
|
131
|
-
tagPath String @map("tag_path")
|
|
132
|
-
namespace String
|
|
133
|
-
entries String @default("[]")
|
|
134
|
-
replace Boolean @default(false)
|
|
135
|
-
|
|
136
|
-
@@index([modId])
|
|
137
|
-
@@index([tagPath])
|
|
138
|
-
@@index([registry, tagPath])
|
|
139
|
-
@@index([namespace])
|
|
140
|
-
@@map("mod_tags")
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
model McSourceFile {
|
|
144
|
-
id Int @id @default(autoincrement())
|
|
145
|
-
mcVersionId Int @map("mc_version_id")
|
|
146
|
-
className String @map("class_name")
|
|
147
|
-
content String
|
|
148
|
-
embedding Bytes?
|
|
149
|
-
embedSource String? @map("embed_source")
|
|
150
|
-
embedUpdatedAt DateTime? @map("embed_updated_at")
|
|
151
|
-
|
|
152
|
-
mcVersion McVersion @relation(fields: [mcVersionId], references: [id], onDelete: Cascade)
|
|
153
|
-
|
|
154
|
-
@@unique([mcVersionId, className])
|
|
155
|
-
@@index([mcVersionId])
|
|
156
|
-
@@map("mc_source_files")
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
model ModSourceFile {
|
|
160
|
-
id Int @id @default(autoincrement())
|
|
161
|
-
modId Int @map("mod_id")
|
|
162
|
-
className String @map("class_name")
|
|
163
|
-
content String
|
|
164
|
-
embedding Bytes?
|
|
165
|
-
embedSource String? @map("embed_source")
|
|
166
|
-
embedUpdatedAt DateTime? @map("embed_updated_at")
|
|
167
|
-
|
|
168
|
-
mod Mod @relation(fields: [modId], references: [id], onDelete: Cascade)
|
|
169
|
-
|
|
170
|
-
@@unique([modId, className])
|
|
171
|
-
@@index([modId])
|
|
172
|
-
@@map("mod_source_files")
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
model DocEntry {
|
|
176
|
-
id Int @id @default(autoincrement())
|
|
177
|
-
className String? @map("class_name")
|
|
178
|
-
title String
|
|
179
|
-
summary String?
|
|
180
|
-
url String
|
|
181
|
-
category String @default("minecraft")
|
|
182
|
-
tags String @default("[]")
|
|
183
|
-
namespace String @default("vanilla")
|
|
184
|
-
source String @default("manual")
|
|
185
|
-
createdAt DateTime @default(now()) @map("created_at")
|
|
186
|
-
updatedAt DateTime @updatedAt @map("updated_at")
|
|
187
|
-
embedding Bytes?
|
|
188
|
-
|
|
189
|
-
@@index([className])
|
|
190
|
-
@@index([category])
|
|
191
|
-
@@map("doc_entries")
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
model Primer {
|
|
195
|
-
id Int @id @default(autoincrement())
|
|
196
|
-
fromVersion String @map("from_version")
|
|
197
|
-
toVersion String @map("to_version")
|
|
198
|
-
fromDataVersion Int? @map("from_data_version")
|
|
199
|
-
toDataVersion Int? @map("to_data_version")
|
|
200
|
-
modloader String @default("neoforge")
|
|
201
|
-
title String
|
|
202
|
-
summary String?
|
|
203
|
-
url String @unique
|
|
204
|
-
content String?
|
|
205
|
-
tags String @default("[]")
|
|
206
|
-
source String @default("manual")
|
|
207
|
-
createdAt DateTime @default(now()) @map("created_at")
|
|
208
|
-
updatedAt DateTime @updatedAt @map("updated_at")
|
|
209
|
-
embedding Bytes?
|
|
210
|
-
|
|
211
|
-
@@index([fromVersion, toVersion])
|
|
212
|
-
@@index([fromDataVersion, toDataVersion])
|
|
213
|
-
@@index([modloader])
|
|
214
|
-
@@map("primers")
|
|
215
|
-
}
|
|
1
|
+
// prisma/backends/schema.sqlite.prisma
|
|
2
|
+
generator client {
|
|
3
|
+
// New Rust-free client: no native query-engine binary. Queries run through a
|
|
4
|
+
// portable WASM query compiler driven by the better-sqlite3 driver adapter,
|
|
5
|
+
// so the prebuilt client ships and runs on every platform.
|
|
6
|
+
provider = "prisma-client"
|
|
7
|
+
engineType = "client"
|
|
8
|
+
output = "../../src/generated/sqlite"
|
|
9
|
+
runtime = "nodejs"
|
|
10
|
+
moduleFormat = "esm"
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
datasource db {
|
|
14
|
+
provider = "sqlite"
|
|
15
|
+
url = env("DATABASE_URL")
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
model Mod {
|
|
19
|
+
id Int @id @default(autoincrement())
|
|
20
|
+
modId String @map("mod_id")
|
|
21
|
+
displayName String @map("display_name")
|
|
22
|
+
version String
|
|
23
|
+
mcVersion String @map("mc_version")
|
|
24
|
+
loader String
|
|
25
|
+
jarPath String @unique @map("jar_path")
|
|
26
|
+
sha256 String?
|
|
27
|
+
murmur2 String?
|
|
28
|
+
sha512 String?
|
|
29
|
+
sourcePath String? @map("source_path")
|
|
30
|
+
decompPath String? @map("decomp_path")
|
|
31
|
+
decompiled Boolean @default(false)
|
|
32
|
+
graphPath String? @map("graph_path")
|
|
33
|
+
modrinthId String? @map("modrinth_id")
|
|
34
|
+
curseforgeId Int? @map("curseforge_id")
|
|
35
|
+
hasMixins Boolean @default(false) @map("has_mixins")
|
|
36
|
+
hasAt Boolean @default(false) @map("has_at")
|
|
37
|
+
hasAw Boolean @default(false) @map("has_aw")
|
|
38
|
+
mixinConfigs String @default("[]") @map("mixin_configs")
|
|
39
|
+
mixinTargets String @default("[]") @map("mixin_targets")
|
|
40
|
+
atEntries String @default("[]") @map("at_entries")
|
|
41
|
+
awEntries String @default("[]") @map("aw_entries")
|
|
42
|
+
dependencies String @default("[]")
|
|
43
|
+
metadata String @default("{}")
|
|
44
|
+
metadataSource String? @map("metadata_source")
|
|
45
|
+
tags String @default("[]")
|
|
46
|
+
ingestedAt DateTime @default(now()) @map("ingested_at")
|
|
47
|
+
updatedAt DateTime @updatedAt @map("updated_at")
|
|
48
|
+
|
|
49
|
+
classes ModClass[]
|
|
50
|
+
modTags ModTag[]
|
|
51
|
+
sourceFiles ModSourceFile[]
|
|
52
|
+
|
|
53
|
+
@@unique([modId, version, mcVersion, loader])
|
|
54
|
+
@@index([modId])
|
|
55
|
+
@@index([mcVersion])
|
|
56
|
+
@@index([loader])
|
|
57
|
+
@@index([modrinthId])
|
|
58
|
+
@@index([curseforgeId])
|
|
59
|
+
@@map("mods")
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
model ModClass {
|
|
63
|
+
id Int @id @default(autoincrement())
|
|
64
|
+
modId Int @map("mod_id")
|
|
65
|
+
className String @map("class_name")
|
|
66
|
+
superClass String? @map("super_class")
|
|
67
|
+
interfaces String @default("[]")
|
|
68
|
+
accessFlags Int @default(0) @map("access_flags")
|
|
69
|
+
|
|
70
|
+
mod Mod @relation(fields: [modId], references: [id], onDelete: Cascade)
|
|
71
|
+
|
|
72
|
+
@@unique([modId, className])
|
|
73
|
+
@@index([className])
|
|
74
|
+
@@index([modId])
|
|
75
|
+
@@map("mod_classes")
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
model McVersion {
|
|
79
|
+
id Int @id @default(autoincrement())
|
|
80
|
+
versionId String @unique @map("version_id")
|
|
81
|
+
type String @default("release")
|
|
82
|
+
jarPath String? @map("jar_path")
|
|
83
|
+
decompPath String? @map("decomp_path")
|
|
84
|
+
decompiled Boolean @default(false)
|
|
85
|
+
indexed Boolean @default(false)
|
|
86
|
+
releaseTime DateTime @map("release_time")
|
|
87
|
+
createdAt DateTime @default(now()) @map("created_at")
|
|
88
|
+
|
|
89
|
+
sourceFiles McSourceFile[]
|
|
90
|
+
|
|
91
|
+
@@map("mc_versions")
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
// ── Cached AST-level version diffs ──────────────────────────────────────────
|
|
95
|
+
// SQLite: result stored as TEXT (JSON string) instead of Json type.
|
|
96
|
+
|
|
97
|
+
model McVersionDiff {
|
|
98
|
+
id Int @id @default(autoincrement())
|
|
99
|
+
versionA String @map("version_a")
|
|
100
|
+
versionB String @map("version_b")
|
|
101
|
+
packagesHash String @default("all") @map("packages_hash")
|
|
102
|
+
result String // SQLite: JSON stored as TEXT
|
|
103
|
+
createdAt DateTime @default(now()) @map("created_at")
|
|
104
|
+
|
|
105
|
+
@@unique([versionA, versionB, packagesHash])
|
|
106
|
+
@@index([versionA, versionB])
|
|
107
|
+
@@map("mc_version_diffs")
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
// ── Cached AST-level mod version diffs ────────────────────────────────────────
|
|
111
|
+
// SQLite: result stored as TEXT (JSON string) instead of Json type.
|
|
112
|
+
|
|
113
|
+
model ModVersionDiff {
|
|
114
|
+
id Int @id @default(autoincrement())
|
|
115
|
+
modDbIdA Int @map("mod_db_id_a")
|
|
116
|
+
modDbIdB Int @map("mod_db_id_b")
|
|
117
|
+
packagesHash String @default("all") @map("packages_hash")
|
|
118
|
+
result String // SQLite: JSON stored as TEXT
|
|
119
|
+
createdAt DateTime @default(now()) @map("created_at")
|
|
120
|
+
|
|
121
|
+
@@unique([modDbIdA, modDbIdB, packagesHash])
|
|
122
|
+
@@index([modDbIdA, modDbIdB])
|
|
123
|
+
@@map("mod_version_diffs")
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
model ModTag {
|
|
127
|
+
id Int @id @default(autoincrement())
|
|
128
|
+
modId Int @map("mod_id")
|
|
129
|
+
mod Mod @relation(fields: [modId], references: [id], onDelete: Cascade)
|
|
130
|
+
registry String
|
|
131
|
+
tagPath String @map("tag_path")
|
|
132
|
+
namespace String
|
|
133
|
+
entries String @default("[]")
|
|
134
|
+
replace Boolean @default(false)
|
|
135
|
+
|
|
136
|
+
@@index([modId])
|
|
137
|
+
@@index([tagPath])
|
|
138
|
+
@@index([registry, tagPath])
|
|
139
|
+
@@index([namespace])
|
|
140
|
+
@@map("mod_tags")
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
model McSourceFile {
|
|
144
|
+
id Int @id @default(autoincrement())
|
|
145
|
+
mcVersionId Int @map("mc_version_id")
|
|
146
|
+
className String @map("class_name")
|
|
147
|
+
content String
|
|
148
|
+
embedding Bytes?
|
|
149
|
+
embedSource String? @map("embed_source")
|
|
150
|
+
embedUpdatedAt DateTime? @map("embed_updated_at")
|
|
151
|
+
|
|
152
|
+
mcVersion McVersion @relation(fields: [mcVersionId], references: [id], onDelete: Cascade)
|
|
153
|
+
|
|
154
|
+
@@unique([mcVersionId, className])
|
|
155
|
+
@@index([mcVersionId])
|
|
156
|
+
@@map("mc_source_files")
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
model ModSourceFile {
|
|
160
|
+
id Int @id @default(autoincrement())
|
|
161
|
+
modId Int @map("mod_id")
|
|
162
|
+
className String @map("class_name")
|
|
163
|
+
content String
|
|
164
|
+
embedding Bytes?
|
|
165
|
+
embedSource String? @map("embed_source")
|
|
166
|
+
embedUpdatedAt DateTime? @map("embed_updated_at")
|
|
167
|
+
|
|
168
|
+
mod Mod @relation(fields: [modId], references: [id], onDelete: Cascade)
|
|
169
|
+
|
|
170
|
+
@@unique([modId, className])
|
|
171
|
+
@@index([modId])
|
|
172
|
+
@@map("mod_source_files")
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
model DocEntry {
|
|
176
|
+
id Int @id @default(autoincrement())
|
|
177
|
+
className String? @map("class_name")
|
|
178
|
+
title String
|
|
179
|
+
summary String?
|
|
180
|
+
url String
|
|
181
|
+
category String @default("minecraft")
|
|
182
|
+
tags String @default("[]")
|
|
183
|
+
namespace String @default("vanilla")
|
|
184
|
+
source String @default("manual")
|
|
185
|
+
createdAt DateTime @default(now()) @map("created_at")
|
|
186
|
+
updatedAt DateTime @updatedAt @map("updated_at")
|
|
187
|
+
embedding Bytes?
|
|
188
|
+
|
|
189
|
+
@@index([className])
|
|
190
|
+
@@index([category])
|
|
191
|
+
@@map("doc_entries")
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
model Primer {
|
|
195
|
+
id Int @id @default(autoincrement())
|
|
196
|
+
fromVersion String @map("from_version")
|
|
197
|
+
toVersion String @map("to_version")
|
|
198
|
+
fromDataVersion Int? @map("from_data_version")
|
|
199
|
+
toDataVersion Int? @map("to_data_version")
|
|
200
|
+
modloader String @default("neoforge")
|
|
201
|
+
title String
|
|
202
|
+
summary String?
|
|
203
|
+
url String @unique
|
|
204
|
+
content String?
|
|
205
|
+
tags String @default("[]")
|
|
206
|
+
source String @default("manual")
|
|
207
|
+
createdAt DateTime @default(now()) @map("created_at")
|
|
208
|
+
updatedAt DateTime @updatedAt @map("updated_at")
|
|
209
|
+
embedding Bytes?
|
|
210
|
+
|
|
211
|
+
@@index([fromVersion, toVersion])
|
|
212
|
+
@@index([fromDataVersion, toDataVersion])
|
|
213
|
+
@@index([modloader])
|
|
214
|
+
@@map("primers")
|
|
215
|
+
}
|