@adhisang/minecraft-modding-mcp 3.0.0 → 3.1.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.
@@ -1,7 +1,7 @@
1
1
  import { z } from "zod";
2
2
  import { createError, ERROR_CODES } from "../errors.js";
3
3
  import { buildIncludeSchema, detailSchema, positiveIntSchema } from "./entry-tool-schema.js";
4
- import { buildEntryToolMeta, buildEntryToolResult, createNextAction, createTruncationMeta } from "./response-contract.js";
4
+ import { buildEntryToolMeta, buildEntryToolResult, createNextAction, createSummarySubject, createTruncationMeta } from "./response-contract.js";
5
5
  import { capArray, resolveDetail, resolveInclude } from "./request-normalizers.js";
6
6
  const nonEmptyString = z.string().trim().min(1);
7
7
  const INCLUDE_GROUPS = ["warnings", "classes", "registry", "diff", "samples", "timings"];
@@ -33,9 +33,9 @@ export const compareMinecraftShape = {
33
33
  detail: detailSchema.optional(),
34
34
  include: buildIncludeSchema(INCLUDE_GROUPS),
35
35
  limit: positiveIntSchema.optional(),
36
- maxClassResults: positiveIntSchema.optional(),
36
+ maxClassResults: positiveIntSchema.default(500),
37
37
  maxEntriesPerRegistry: positiveIntSchema.optional(),
38
- includeFullDiff: z.boolean().optional()
38
+ includeFullDiff: z.boolean().default(true)
39
39
  };
40
40
  export const compareMinecraftSchema = z.object(compareMinecraftShape);
41
41
  function compareStatusFromCounts(changedCount) {
@@ -93,6 +93,14 @@ export class CompareMinecraftService {
93
93
  summary: {
94
94
  status: compareStatusFromCounts(changedCount),
95
95
  headline: `Compared ${output.fromVersion} to ${output.toVersion}.`,
96
+ subject: createSummarySubject({
97
+ task: "versions",
98
+ kind: input.subject.kind,
99
+ fromVersion: input.subject.fromVersion,
100
+ toVersion: input.subject.toVersion,
101
+ packageFilter: "packageFilter" in input.subject ? input.subject.packageFilter : undefined,
102
+ registry: input.subject.kind === "registry" ? input.subject.registry : undefined
103
+ }),
96
104
  counts: {
97
105
  addedClasses: output.classes?.addedCount ?? 0,
98
106
  removedClasses: output.classes?.removedCount ?? 0,
@@ -180,6 +188,15 @@ export class CompareMinecraftService {
180
188
  summary: {
181
189
  status: compareStatusFromCounts(changedCount),
182
190
  headline: `Compared ${output.query.className} between ${output.range.fromVersion} and ${output.range.toVersion}.`,
191
+ subject: createSummarySubject({
192
+ task: "class-diff",
193
+ kind: "class",
194
+ className: input.subject.className,
195
+ fromVersion: input.subject.fromVersion,
196
+ toVersion: input.subject.toVersion,
197
+ mapping: input.subject.mapping,
198
+ sourcePriority: input.subject.sourcePriority
199
+ }),
183
200
  counts: output.summary.total
184
201
  },
185
202
  blocks: {
@@ -264,6 +281,13 @@ export class CompareMinecraftService {
264
281
  headline: partialDetail
265
282
  ? `Compared registry changes between ${subject.fromVersion} and ${subject.toVersion} with partial detail.`
266
283
  : `Compared registry changes between ${subject.fromVersion} and ${subject.toVersion}.`,
284
+ subject: createSummarySubject({
285
+ task: "registry-diff",
286
+ kind: "registry",
287
+ fromVersion: subject.fromVersion,
288
+ toVersion: subject.toVersion,
289
+ registry: subject.registry
290
+ }),
267
291
  counts: {
268
292
  changedRegistries: registrySummary.registriesChanged,
269
293
  addedEntries: registrySummary.totalAdded,
@@ -335,6 +359,28 @@ export class CompareMinecraftService {
335
359
  const classSignals = (compare.classes?.addedCount ?? 0) + (compare.classes?.removedCount ?? 0);
336
360
  const registrySignals = compare.registry?.summary.registriesChanged ?? 0;
337
361
  const status = compareStatusFromCounts(classSignals + registrySignals);
362
+ const representativeClassName = compare.classes?.added[0] ?? compare.classes?.removed[0];
363
+ const nextActions = representativeClassName
364
+ ? [
365
+ createNextAction("compare-minecraft", {
366
+ task: "class-diff",
367
+ subject: {
368
+ kind: "class",
369
+ className: representativeClassName,
370
+ fromVersion: subject.fromVersion,
371
+ toVersion: subject.toVersion
372
+ }
373
+ })
374
+ ]
375
+ : [
376
+ createNextAction("inspect-minecraft", {
377
+ task: "artifact",
378
+ subject: {
379
+ kind: "version",
380
+ version: subject.toVersion
381
+ }
382
+ })
383
+ ];
338
384
  return {
339
385
  ...buildEntryToolResult({
340
386
  task: "migration-overview",
@@ -343,10 +389,17 @@ export class CompareMinecraftService {
343
389
  summary: {
344
390
  status,
345
391
  headline: `Summarized migration impact from ${subject.fromVersion} to ${subject.toVersion}.`,
392
+ subject: createSummarySubject({
393
+ task: "migration-overview",
394
+ kind: "version-pair",
395
+ fromVersion: subject.fromVersion,
396
+ toVersion: subject.toVersion
397
+ }),
346
398
  counts: {
347
399
  classSignals,
348
400
  registrySignals
349
- }
401
+ },
402
+ nextActions
350
403
  },
351
404
  blocks: {
352
405
  comparison: subject,
@@ -358,28 +411,7 @@ export class CompareMinecraftService {
358
411
  : registrySignals > 0
359
412
  ? "registry"
360
413
  : "minimal",
361
- nextActions: [
362
- {
363
- tool: classSignals > 0 ? "compare-minecraft" : "inspect-minecraft",
364
- params: classSignals > 0
365
- ? {
366
- task: "class-diff",
367
- subject: {
368
- kind: "class",
369
- className: "net.minecraft.world.item.ItemStack",
370
- fromVersion: subject.fromVersion,
371
- toVersion: subject.toVersion
372
- }
373
- }
374
- : {
375
- task: "artifact",
376
- subject: {
377
- kind: "version",
378
- version: subject.toVersion
379
- }
380
- }
381
- }
382
- ]
414
+ nextActions
383
415
  }
384
416
  }
385
417
  }),
@@ -1,5 +1,5 @@
1
1
  import { z } from "zod";
2
- import type { FindClassOutput, GetArtifactFileOutput, GetClassMembersOutput, GetClassSourceOutput, ListArtifactFilesOutput, ResolveArtifactOutput, SearchClassSourceOutput } from "../source-service.js";
2
+ import type { CheckSymbolExistsOutput, FindClassOutput, GetArtifactFileOutput, GetClassMembersOutput, GetClassSourceOutput, ListArtifactFilesOutput, ResolveArtifactOutput, SearchClassSourceOutput } from "../source-service.js";
3
3
  import type { ListVersionsOutput } from "../version-service.js";
4
4
  export declare const inspectMinecraftShape: {
5
5
  task: z.ZodOptional<z.ZodEnum<["auto", "versions", "artifact", "class-overview", "class-source", "class-members", "search", "file", "list-files"]>>;
@@ -285,10 +285,11 @@ export declare const inspectMinecraftShape: {
285
285
  symbolKind: z.ZodOptional<z.ZodEnum<["class", "interface", "enum", "record", "method", "field"]>>;
286
286
  packagePrefix: z.ZodOptional<z.ZodString>;
287
287
  fileGlob: z.ZodOptional<z.ZodString>;
288
- queryMode: z.ZodOptional<z.ZodEnum<["auto", "token", "literal"]>>;
288
+ queryMode: z.ZodDefault<z.ZodEnum<["auto", "token", "literal"]>>;
289
289
  }, "strip", z.ZodTypeAny, {
290
290
  kind: "search";
291
291
  query: string;
292
+ queryMode: "auto" | "token" | "literal";
292
293
  match?: "exact" | "prefix" | "contains" | "regex" | undefined;
293
294
  symbolKind?: "class" | "method" | "field" | "record" | "interface" | "enum" | undefined;
294
295
  intent?: "symbol" | "path" | "text" | undefined;
@@ -304,7 +305,6 @@ export declare const inspectMinecraftShape: {
304
305
  };
305
306
  } | undefined;
306
307
  packagePrefix?: string | undefined;
307
- queryMode?: "auto" | "token" | "literal" | undefined;
308
308
  }, {
309
309
  kind: "search";
310
310
  query: string;
@@ -499,10 +499,11 @@ export declare const inspectMinecraftShape: {
499
499
  symbolKind: z.ZodOptional<z.ZodEnum<["class", "interface", "enum", "record", "method", "field"]>>;
500
500
  packagePrefix: z.ZodOptional<z.ZodString>;
501
501
  fileGlob: z.ZodOptional<z.ZodString>;
502
- queryMode: z.ZodOptional<z.ZodEnum<["auto", "token", "literal"]>>;
502
+ queryMode: z.ZodDefault<z.ZodEnum<["auto", "token", "literal"]>>;
503
503
  }, "strip", z.ZodTypeAny, {
504
504
  kind: "search";
505
505
  query: string;
506
+ queryMode: "auto" | "token" | "literal";
506
507
  match?: "exact" | "prefix" | "contains" | "regex" | undefined;
507
508
  symbolKind?: "class" | "method" | "field" | "record" | "interface" | "enum" | undefined;
508
509
  intent?: "symbol" | "path" | "text" | undefined;
@@ -518,7 +519,6 @@ export declare const inspectMinecraftShape: {
518
519
  };
519
520
  } | undefined;
520
521
  packagePrefix?: string | undefined;
521
- queryMode?: "auto" | "token" | "literal" | undefined;
522
522
  }, {
523
523
  kind: "search";
524
524
  query: string;
@@ -575,6 +575,7 @@ export declare const inspectMinecraftShape: {
575
575
  } | {
576
576
  kind: "search";
577
577
  query: string;
578
+ queryMode: "auto" | "token" | "literal";
578
579
  match?: "exact" | "prefix" | "contains" | "regex" | undefined;
579
580
  symbolKind?: "class" | "method" | "field" | "record" | "interface" | "enum" | undefined;
580
581
  intent?: "symbol" | "path" | "text" | undefined;
@@ -590,7 +591,6 @@ export declare const inspectMinecraftShape: {
590
591
  };
591
592
  } | undefined;
592
593
  packagePrefix?: string | undefined;
593
- queryMode?: "auto" | "token" | "literal" | undefined;
594
594
  } | undefined;
595
595
  }, {
596
596
  kind: "workspace";
@@ -646,7 +646,7 @@ export declare const inspectMinecraftShape: {
646
646
  queryMode?: "auto" | "token" | "literal" | undefined;
647
647
  } | undefined;
648
648
  }>]>>;
649
- includeSnapshots: z.ZodOptional<z.ZodBoolean>;
649
+ includeSnapshots: z.ZodDefault<z.ZodBoolean>;
650
650
  detail: z.ZodOptional<z.ZodEnum<["summary", "standard", "full"]>>;
651
651
  include: z.ZodOptional<z.ZodArray<z.ZodEnum<[string, ...string[]]>, "many">>;
652
652
  limit: z.ZodOptional<z.ZodNumber>;
@@ -936,10 +936,11 @@ export declare const inspectMinecraftSchema: z.ZodEffects<z.ZodObject<{
936
936
  symbolKind: z.ZodOptional<z.ZodEnum<["class", "interface", "enum", "record", "method", "field"]>>;
937
937
  packagePrefix: z.ZodOptional<z.ZodString>;
938
938
  fileGlob: z.ZodOptional<z.ZodString>;
939
- queryMode: z.ZodOptional<z.ZodEnum<["auto", "token", "literal"]>>;
939
+ queryMode: z.ZodDefault<z.ZodEnum<["auto", "token", "literal"]>>;
940
940
  }, "strip", z.ZodTypeAny, {
941
941
  kind: "search";
942
942
  query: string;
943
+ queryMode: "auto" | "token" | "literal";
943
944
  match?: "exact" | "prefix" | "contains" | "regex" | undefined;
944
945
  symbolKind?: "class" | "method" | "field" | "record" | "interface" | "enum" | undefined;
945
946
  intent?: "symbol" | "path" | "text" | undefined;
@@ -955,7 +956,6 @@ export declare const inspectMinecraftSchema: z.ZodEffects<z.ZodObject<{
955
956
  };
956
957
  } | undefined;
957
958
  packagePrefix?: string | undefined;
958
- queryMode?: "auto" | "token" | "literal" | undefined;
959
959
  }, {
960
960
  kind: "search";
961
961
  query: string;
@@ -1150,10 +1150,11 @@ export declare const inspectMinecraftSchema: z.ZodEffects<z.ZodObject<{
1150
1150
  symbolKind: z.ZodOptional<z.ZodEnum<["class", "interface", "enum", "record", "method", "field"]>>;
1151
1151
  packagePrefix: z.ZodOptional<z.ZodString>;
1152
1152
  fileGlob: z.ZodOptional<z.ZodString>;
1153
- queryMode: z.ZodOptional<z.ZodEnum<["auto", "token", "literal"]>>;
1153
+ queryMode: z.ZodDefault<z.ZodEnum<["auto", "token", "literal"]>>;
1154
1154
  }, "strip", z.ZodTypeAny, {
1155
1155
  kind: "search";
1156
1156
  query: string;
1157
+ queryMode: "auto" | "token" | "literal";
1157
1158
  match?: "exact" | "prefix" | "contains" | "regex" | undefined;
1158
1159
  symbolKind?: "class" | "method" | "field" | "record" | "interface" | "enum" | undefined;
1159
1160
  intent?: "symbol" | "path" | "text" | undefined;
@@ -1169,7 +1170,6 @@ export declare const inspectMinecraftSchema: z.ZodEffects<z.ZodObject<{
1169
1170
  };
1170
1171
  } | undefined;
1171
1172
  packagePrefix?: string | undefined;
1172
- queryMode?: "auto" | "token" | "literal" | undefined;
1173
1173
  }, {
1174
1174
  kind: "search";
1175
1175
  query: string;
@@ -1226,6 +1226,7 @@ export declare const inspectMinecraftSchema: z.ZodEffects<z.ZodObject<{
1226
1226
  } | {
1227
1227
  kind: "search";
1228
1228
  query: string;
1229
+ queryMode: "auto" | "token" | "literal";
1229
1230
  match?: "exact" | "prefix" | "contains" | "regex" | undefined;
1230
1231
  symbolKind?: "class" | "method" | "field" | "record" | "interface" | "enum" | undefined;
1231
1232
  intent?: "symbol" | "path" | "text" | undefined;
@@ -1241,7 +1242,6 @@ export declare const inspectMinecraftSchema: z.ZodEffects<z.ZodObject<{
1241
1242
  };
1242
1243
  } | undefined;
1243
1244
  packagePrefix?: string | undefined;
1244
- queryMode?: "auto" | "token" | "literal" | undefined;
1245
1245
  } | undefined;
1246
1246
  }, {
1247
1247
  kind: "workspace";
@@ -1297,15 +1297,15 @@ export declare const inspectMinecraftSchema: z.ZodEffects<z.ZodObject<{
1297
1297
  queryMode?: "auto" | "token" | "literal" | undefined;
1298
1298
  } | undefined;
1299
1299
  }>]>>;
1300
- includeSnapshots: z.ZodOptional<z.ZodBoolean>;
1300
+ includeSnapshots: z.ZodDefault<z.ZodBoolean>;
1301
1301
  detail: z.ZodOptional<z.ZodEnum<["summary", "standard", "full"]>>;
1302
1302
  include: z.ZodOptional<z.ZodArray<z.ZodEnum<[string, ...string[]]>, "many">>;
1303
1303
  limit: z.ZodOptional<z.ZodNumber>;
1304
1304
  cursor: z.ZodOptional<z.ZodString>;
1305
1305
  }, "strip", z.ZodTypeAny, {
1306
+ includeSnapshots: boolean;
1306
1307
  limit?: number | undefined;
1307
1308
  cursor?: string | undefined;
1308
- includeSnapshots?: boolean | undefined;
1309
1309
  task?: "search" | "auto" | "versions" | "class-source" | "class-members" | "artifact" | "class-overview" | "file" | "list-files" | undefined;
1310
1310
  subject?: {
1311
1311
  kind: "version";
@@ -1366,6 +1366,7 @@ export declare const inspectMinecraftSchema: z.ZodEffects<z.ZodObject<{
1366
1366
  } | {
1367
1367
  kind: "search";
1368
1368
  query: string;
1369
+ queryMode: "auto" | "token" | "literal";
1369
1370
  match?: "exact" | "prefix" | "contains" | "regex" | undefined;
1370
1371
  symbolKind?: "class" | "method" | "field" | "record" | "interface" | "enum" | undefined;
1371
1372
  intent?: "symbol" | "path" | "text" | undefined;
@@ -1381,7 +1382,6 @@ export declare const inspectMinecraftSchema: z.ZodEffects<z.ZodObject<{
1381
1382
  };
1382
1383
  } | undefined;
1383
1384
  packagePrefix?: string | undefined;
1384
- queryMode?: "auto" | "token" | "literal" | undefined;
1385
1385
  } | {
1386
1386
  kind: "workspace";
1387
1387
  projectPath: string;
@@ -1418,6 +1418,7 @@ export declare const inspectMinecraftSchema: z.ZodEffects<z.ZodObject<{
1418
1418
  } | {
1419
1419
  kind: "search";
1420
1420
  query: string;
1421
+ queryMode: "auto" | "token" | "literal";
1421
1422
  match?: "exact" | "prefix" | "contains" | "regex" | undefined;
1422
1423
  symbolKind?: "class" | "method" | "field" | "record" | "interface" | "enum" | undefined;
1423
1424
  intent?: "symbol" | "path" | "text" | undefined;
@@ -1433,7 +1434,6 @@ export declare const inspectMinecraftSchema: z.ZodEffects<z.ZodObject<{
1433
1434
  };
1434
1435
  } | undefined;
1435
1436
  packagePrefix?: string | undefined;
1436
- queryMode?: "auto" | "token" | "literal" | undefined;
1437
1437
  } | undefined;
1438
1438
  } | undefined;
1439
1439
  detail?: "full" | "summary" | "standard" | undefined;
@@ -1575,9 +1575,9 @@ export declare const inspectMinecraftSchema: z.ZodEffects<z.ZodObject<{
1575
1575
  detail?: "full" | "summary" | "standard" | undefined;
1576
1576
  include?: string[] | undefined;
1577
1577
  }>, {
1578
+ includeSnapshots: boolean;
1578
1579
  limit?: number | undefined;
1579
1580
  cursor?: string | undefined;
1580
- includeSnapshots?: boolean | undefined;
1581
1581
  task?: "search" | "auto" | "versions" | "class-source" | "class-members" | "artifact" | "class-overview" | "file" | "list-files" | undefined;
1582
1582
  subject?: {
1583
1583
  kind: "version";
@@ -1638,6 +1638,7 @@ export declare const inspectMinecraftSchema: z.ZodEffects<z.ZodObject<{
1638
1638
  } | {
1639
1639
  kind: "search";
1640
1640
  query: string;
1641
+ queryMode: "auto" | "token" | "literal";
1641
1642
  match?: "exact" | "prefix" | "contains" | "regex" | undefined;
1642
1643
  symbolKind?: "class" | "method" | "field" | "record" | "interface" | "enum" | undefined;
1643
1644
  intent?: "symbol" | "path" | "text" | undefined;
@@ -1653,7 +1654,6 @@ export declare const inspectMinecraftSchema: z.ZodEffects<z.ZodObject<{
1653
1654
  };
1654
1655
  } | undefined;
1655
1656
  packagePrefix?: string | undefined;
1656
- queryMode?: "auto" | "token" | "literal" | undefined;
1657
1657
  } | {
1658
1658
  kind: "workspace";
1659
1659
  projectPath: string;
@@ -1690,6 +1690,7 @@ export declare const inspectMinecraftSchema: z.ZodEffects<z.ZodObject<{
1690
1690
  } | {
1691
1691
  kind: "search";
1692
1692
  query: string;
1693
+ queryMode: "auto" | "token" | "literal";
1693
1694
  match?: "exact" | "prefix" | "contains" | "regex" | undefined;
1694
1695
  symbolKind?: "class" | "method" | "field" | "record" | "interface" | "enum" | undefined;
1695
1696
  intent?: "symbol" | "path" | "text" | undefined;
@@ -1705,7 +1706,6 @@ export declare const inspectMinecraftSchema: z.ZodEffects<z.ZodObject<{
1705
1706
  };
1706
1707
  } | undefined;
1707
1708
  packagePrefix?: string | undefined;
1708
- queryMode?: "auto" | "token" | "literal" | undefined;
1709
1709
  } | undefined;
1710
1710
  } | undefined;
1711
1711
  detail?: "full" | "summary" | "standard" | undefined;
@@ -1869,6 +1869,18 @@ type InspectMinecraftDeps = {
1869
1869
  artifactId: string;
1870
1870
  limit?: number;
1871
1871
  }) => Promise<FindClassOutput>;
1872
+ checkSymbolExists?: (input: {
1873
+ version: string;
1874
+ kind: "class" | "field" | "method";
1875
+ name: string;
1876
+ owner?: string;
1877
+ descriptor?: string;
1878
+ sourceMapping: "obfuscated" | "mojang" | "intermediary" | "yarn";
1879
+ sourcePriority?: "loom-first" | "maven-first";
1880
+ nameMode?: "fqcn" | "auto";
1881
+ signatureMode?: "exact" | "name-only";
1882
+ maxCandidates?: number;
1883
+ }) => Promise<CheckSymbolExistsOutput>;
1872
1884
  getClassSource: (input: {
1873
1885
  className: string;
1874
1886
  artifactId?: string;
@@ -1939,6 +1951,12 @@ export declare class InspectMinecraftService {
1939
1951
  private resolveClassArtifactReference;
1940
1952
  private resolveWorkspaceArtifactReference;
1941
1953
  private resolveTask;
1954
+ private summarizeRequestedSubject;
1955
+ private exampleVersionForSubject;
1956
+ private buildArtifactContextSuggestedCall;
1957
+ private taskForSubject;
1958
+ private invalidTaskSubjectError;
1959
+ private resolveBinaryBackedClass;
1942
1960
  private resolveArtifactReference;
1943
1961
  private resolveArtifactRef;
1944
1962
  private handleVersions;