@adhisang/minecraft-modding-mcp 3.2.0 → 4.1.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 (194) hide show
  1. package/CHANGELOG.md +72 -0
  2. package/README.md +52 -32
  3. package/dist/build-suggested-call.d.ts +29 -0
  4. package/dist/build-suggested-call.js +58 -0
  5. package/dist/cache-registry.d.ts +3 -1
  6. package/dist/cache-registry.js +59 -7
  7. package/dist/config.d.ts +10 -1
  8. package/dist/config.js +52 -1
  9. package/dist/entry-tools/analyze-symbol-service.d.ts +18 -18
  10. package/dist/entry-tools/analyze-symbol-service.js +13 -2
  11. package/dist/entry-tools/batch-class-members-service.d.ts +34 -0
  12. package/dist/entry-tools/batch-class-members-service.js +97 -0
  13. package/dist/entry-tools/batch-class-source-service.d.ts +37 -0
  14. package/dist/entry-tools/batch-class-source-service.js +100 -0
  15. package/dist/entry-tools/batch-mappings-service.d.ts +36 -0
  16. package/dist/entry-tools/batch-mappings-service.js +66 -0
  17. package/dist/entry-tools/batch-runner.d.ts +72 -0
  18. package/dist/entry-tools/batch-runner.js +90 -0
  19. package/dist/entry-tools/batch-symbol-exists-service.d.ts +46 -0
  20. package/dist/entry-tools/batch-symbol-exists-service.js +113 -0
  21. package/dist/entry-tools/compare-minecraft-service.d.ts +6 -6
  22. package/dist/entry-tools/inspect-minecraft/handlers/artifact.d.ts +5 -0
  23. package/dist/entry-tools/inspect-minecraft/handlers/artifact.js +83 -0
  24. package/dist/entry-tools/inspect-minecraft/handlers/class-members.d.ts +6 -0
  25. package/dist/entry-tools/inspect-minecraft/handlers/class-members.js +80 -0
  26. package/dist/entry-tools/inspect-minecraft/handlers/class-overview.d.ts +5 -0
  27. package/dist/entry-tools/inspect-minecraft/handlers/class-overview.js +248 -0
  28. package/dist/entry-tools/inspect-minecraft/handlers/class-source.d.ts +5 -0
  29. package/dist/entry-tools/inspect-minecraft/handlers/class-source.js +60 -0
  30. package/dist/entry-tools/inspect-minecraft/handlers/file.d.ts +5 -0
  31. package/dist/entry-tools/inspect-minecraft/handlers/file.js +54 -0
  32. package/dist/entry-tools/inspect-minecraft/handlers/list-files.d.ts +5 -0
  33. package/dist/entry-tools/inspect-minecraft/handlers/list-files.js +100 -0
  34. package/dist/entry-tools/inspect-minecraft/handlers/search.d.ts +5 -0
  35. package/dist/entry-tools/inspect-minecraft/handlers/search.js +155 -0
  36. package/dist/entry-tools/inspect-minecraft/handlers/versions.d.ts +6 -0
  37. package/dist/entry-tools/inspect-minecraft/handlers/versions.js +49 -0
  38. package/dist/entry-tools/inspect-minecraft/internal.d.ts +1042 -0
  39. package/dist/entry-tools/inspect-minecraft/internal.js +448 -0
  40. package/dist/entry-tools/inspect-minecraft-service.d.ts +213 -328
  41. package/dist/entry-tools/inspect-minecraft-service.js +20 -1238
  42. package/dist/entry-tools/manage-cache-service.d.ts +16 -16
  43. package/dist/entry-tools/validate-project/cases/access-transformer.d.ts +6 -0
  44. package/dist/entry-tools/validate-project/cases/access-transformer.js +106 -0
  45. package/dist/entry-tools/validate-project/cases/access-widener.d.ts +6 -0
  46. package/dist/entry-tools/validate-project/cases/access-widener.js +86 -0
  47. package/dist/entry-tools/validate-project/cases/mixin.d.ts +6 -0
  48. package/dist/entry-tools/validate-project/cases/mixin.js +90 -0
  49. package/dist/entry-tools/validate-project/cases/project-summary.d.ts +97 -0
  50. package/dist/entry-tools/validate-project/cases/project-summary.js +346 -0
  51. package/dist/entry-tools/validate-project/internal.d.ts +135 -0
  52. package/dist/entry-tools/validate-project/internal.js +287 -0
  53. package/dist/entry-tools/validate-project-service.d.ts +63 -47
  54. package/dist/entry-tools/validate-project-service.js +12 -482
  55. package/dist/entry-tools/verify-mixin-target-service.d.ts +133 -0
  56. package/dist/entry-tools/verify-mixin-target-service.js +323 -0
  57. package/dist/error-mapping.d.ts +40 -0
  58. package/dist/error-mapping.js +139 -0
  59. package/dist/errors.d.ts +6 -0
  60. package/dist/errors.js +6 -0
  61. package/dist/index.d.ts +2 -0
  62. package/dist/index.js +170 -1314
  63. package/dist/lru-list.d.ts +31 -0
  64. package/dist/lru-list.js +102 -0
  65. package/dist/mapping/internal-types.d.ts +54 -0
  66. package/dist/mapping/internal-types.js +14 -0
  67. package/dist/mapping/loaders/mojang.d.ts +2 -0
  68. package/dist/mapping/loaders/mojang.js +64 -0
  69. package/dist/mapping/loaders/tiny-loom.d.ts +2 -0
  70. package/dist/mapping/loaders/tiny-loom.js +73 -0
  71. package/dist/mapping/loaders/tiny-maven.d.ts +2 -0
  72. package/dist/mapping/loaders/tiny-maven.js +104 -0
  73. package/dist/mapping/loaders/types.d.ts +14 -0
  74. package/dist/mapping/loaders/types.js +2 -0
  75. package/dist/mapping/lookup.d.ts +52 -0
  76. package/dist/mapping/lookup.js +496 -0
  77. package/dist/mapping/parsers/normalize.d.ts +10 -0
  78. package/dist/mapping/parsers/normalize.js +52 -0
  79. package/dist/mapping/parsers/proguard.d.ts +20 -0
  80. package/dist/mapping/parsers/proguard.js +138 -0
  81. package/dist/mapping/parsers/symbol-records.d.ts +27 -0
  82. package/dist/mapping/parsers/symbol-records.js +216 -0
  83. package/dist/mapping/parsers/tiny.d.ts +9 -0
  84. package/dist/mapping/parsers/tiny.js +96 -0
  85. package/dist/mapping/types.d.ts +147 -0
  86. package/dist/mapping/types.js +2 -0
  87. package/dist/mapping-pipeline-service.d.ts +10 -1
  88. package/dist/mapping-pipeline-service.js +16 -3
  89. package/dist/mapping-service.d.ts +15 -144
  90. package/dist/mapping-service.js +179 -1119
  91. package/dist/mixin/access-validators.d.ts +9 -0
  92. package/dist/mixin/access-validators.js +257 -0
  93. package/dist/mixin/annotation-validators.d.ts +5 -0
  94. package/dist/mixin/annotation-validators.js +162 -0
  95. package/dist/mixin/helpers.d.ts +28 -0
  96. package/dist/mixin/helpers.js +315 -0
  97. package/dist/mixin/parsed-validator.d.ts +8 -0
  98. package/dist/mixin/parsed-validator.js +337 -0
  99. package/dist/mixin/types.d.ts +208 -0
  100. package/dist/mixin/types.js +28 -0
  101. package/dist/mixin-validator.d.ts +9 -201
  102. package/dist/mixin-validator.js +8 -1005
  103. package/dist/observability.d.ts +18 -1
  104. package/dist/observability.js +44 -1
  105. package/dist/response-utils.d.ts +44 -10
  106. package/dist/response-utils.js +131 -17
  107. package/dist/source/access-validate.d.ts +4 -0
  108. package/dist/source/access-validate.js +254 -0
  109. package/dist/source/artifact-resolver.d.ts +110 -0
  110. package/dist/source/artifact-resolver.js +1174 -0
  111. package/dist/source/cache-metrics.d.ts +26 -0
  112. package/dist/source/cache-metrics.js +172 -0
  113. package/dist/source/class-source/members-builder.d.ts +34 -0
  114. package/dist/source/class-source/members-builder.js +46 -0
  115. package/dist/source/class-source/snippet-builder.d.ts +19 -0
  116. package/dist/source/class-source/snippet-builder.js +46 -0
  117. package/dist/source/class-source-helpers.d.ts +34 -0
  118. package/dist/source/class-source-helpers.js +140 -0
  119. package/dist/source/class-source.d.ts +42 -0
  120. package/dist/source/class-source.js +883 -0
  121. package/dist/source/descriptor-utils.d.ts +6 -0
  122. package/dist/source/descriptor-utils.js +37 -0
  123. package/dist/source/file-access.d.ts +4 -0
  124. package/dist/source/file-access.js +102 -0
  125. package/dist/source/indexer.d.ts +82 -0
  126. package/dist/source/indexer.js +505 -0
  127. package/dist/source/lifecycle/diff-utils.d.ts +9 -0
  128. package/dist/source/lifecycle/diff-utils.js +107 -0
  129. package/dist/source/lifecycle/diff.d.ts +2 -0
  130. package/dist/source/lifecycle/diff.js +265 -0
  131. package/dist/source/lifecycle/mapping-helpers.d.ts +22 -0
  132. package/dist/source/lifecycle/mapping-helpers.js +327 -0
  133. package/dist/source/lifecycle/runtime-check.d.ts +2 -0
  134. package/dist/source/lifecycle/runtime-check.js +142 -0
  135. package/dist/source/lifecycle/trace.d.ts +2 -0
  136. package/dist/source/lifecycle/trace.js +231 -0
  137. package/dist/source/lifecycle.d.ts +4 -0
  138. package/dist/source/lifecycle.js +5 -0
  139. package/dist/source/search.d.ts +51 -0
  140. package/dist/source/search.js +676 -0
  141. package/dist/source/shared-utils.d.ts +6 -0
  142. package/dist/source/shared-utils.js +55 -0
  143. package/dist/source/state.d.ts +21 -0
  144. package/dist/source/state.js +19 -0
  145. package/dist/source/symbol-resolver.d.ts +3 -0
  146. package/dist/source/symbol-resolver.js +212 -0
  147. package/dist/source/validate-mixin/pipeline/mapping-health.d.ts +3 -0
  148. package/dist/source/validate-mixin/pipeline/mapping-health.js +41 -0
  149. package/dist/source/validate-mixin/pipeline/parse.d.ts +2 -0
  150. package/dist/source/validate-mixin/pipeline/parse.js +10 -0
  151. package/dist/source/validate-mixin/pipeline/resolve.d.ts +3 -0
  152. package/dist/source/validate-mixin/pipeline/resolve.js +78 -0
  153. package/dist/source/validate-mixin/pipeline/target-lookup.d.ts +6 -0
  154. package/dist/source/validate-mixin/pipeline/target-lookup.js +260 -0
  155. package/dist/source/validate-mixin/pipeline-context.d.ts +72 -0
  156. package/dist/source/validate-mixin/pipeline-context.js +93 -0
  157. package/dist/source/validate-mixin.d.ts +22 -0
  158. package/dist/source/validate-mixin.js +799 -0
  159. package/dist/source/workspace-target.d.ts +18 -0
  160. package/dist/source/workspace-target.js +305 -0
  161. package/dist/source-resolver.d.ts +9 -1
  162. package/dist/source-resolver.js +14 -6
  163. package/dist/source-service.d.ts +178 -105
  164. package/dist/source-service.js +72 -5312
  165. package/dist/stage-emitter.d.ts +13 -0
  166. package/dist/stage-emitter.js +30 -0
  167. package/dist/stdio-supervisor.d.ts +61 -0
  168. package/dist/stdio-supervisor.js +326 -9
  169. package/dist/storage/artifacts-repo.d.ts +4 -1
  170. package/dist/storage/artifacts-repo.js +33 -5
  171. package/dist/storage/files-repo.d.ts +0 -2
  172. package/dist/storage/files-repo.js +0 -11
  173. package/dist/storage/migrations.d.ts +1 -1
  174. package/dist/storage/migrations.js +10 -2
  175. package/dist/storage/schema.d.ts +2 -0
  176. package/dist/storage/schema.js +25 -0
  177. package/dist/tool-contract-manifest.d.ts +1 -1
  178. package/dist/tool-contract-manifest.js +23 -6
  179. package/dist/tool-guidance.d.ts +82 -0
  180. package/dist/tool-guidance.js +734 -0
  181. package/dist/tool-schema-registry.d.ts +16 -0
  182. package/dist/tool-schema-registry.js +37 -0
  183. package/dist/tool-schemas.d.ts +3518 -0
  184. package/dist/tool-schemas.js +813 -0
  185. package/dist/types.d.ts +39 -0
  186. package/dist/version-service.js +7 -6
  187. package/dist/workspace-context-cache.d.ts +32 -0
  188. package/dist/workspace-context-cache.js +66 -0
  189. package/dist/workspace-mapping-service.d.ts +16 -0
  190. package/dist/workspace-mapping-service.js +173 -1
  191. package/docs/README-ja.md +414 -0
  192. package/docs/examples.md +483 -0
  193. package/docs/tool-reference.md +459 -0
  194. package/package.json +5 -2
@@ -1,10 +1,12 @@
1
+ import { buildSuggestedCall } from "./build-suggested-call.js";
1
2
  import { createError, ERROR_CODES } from "./errors.js";
2
3
  /**
3
4
  * Mapping pipeline for v0.3.
4
5
  * Current implementation enforces explicit guarantees:
5
6
  * - obfuscated: always pass-through
6
7
  * - mojang: requires source-backed artifacts on legacy obfuscated versions,
7
- * but unobfuscated runtime jars can pass through directly
8
+ * but unobfuscated runtime jars can pass through directly,
9
+ * or binary-only artifacts may be remapped + decompiled when allowBinaryRemap=true
8
10
  */
9
11
  export function applyMappingPipeline(input) {
10
12
  const transformChain = [];
@@ -51,6 +53,17 @@ export function applyMappingPipeline(input) {
51
53
  }
52
54
  const hasSource = Boolean(input.resolved.sourceJarPath);
53
55
  if (!hasSource) {
56
+ if (input.requestedMapping === "mojang" &&
57
+ input.allowBinaryRemap === true &&
58
+ Boolean(input.resolved.binaryJarPath)) {
59
+ transformChain.push("binary-remap:obf->mojang", "decompile:vineflower");
60
+ qualityFlags.push("binary-remapped", "decompiled");
61
+ return {
62
+ mappingApplied: "mojang",
63
+ qualityFlags,
64
+ transformChain
65
+ };
66
+ }
54
67
  throw createError({
55
68
  code: ERROR_CODES.MAPPING_NOT_APPLIED,
56
69
  message: `Requested ${input.requestedMapping} mapping cannot be guaranteed for this artifact because only decompile path is available.`,
@@ -62,13 +75,13 @@ export function applyMappingPipeline(input) {
62
75
  binaryJarPath: input.resolved.binaryJarPath,
63
76
  sourceJarPath: input.resolved.sourceJarPath,
64
77
  nextAction: "Provide a source-backed artifact (source jar) or use mapping=obfuscated.",
65
- suggestedCall: {
78
+ ...buildSuggestedCall({
66
79
  tool: "resolve-artifact",
67
80
  params: {
68
81
  target: input.target,
69
82
  mapping: "obfuscated"
70
83
  }
71
- }
84
+ })
72
85
  }
73
86
  });
74
87
  }
@@ -1,153 +1,24 @@
1
1
  import type { Config, MappingSourcePriority, SourceMapping } from "./types.js";
2
2
  import { VersionService } from "./version-service.js";
3
- type MappingLookupSource = "loom-cache" | "maven" | "mojang-client-mappings";
4
- type MappingSymbolKind = "class" | "field" | "method";
3
+ import type { ClassApiMatrixInput, ClassApiMatrixOutput, EnsureMappingAvailableInput, EnsureMappingAvailableOutput, FindMappingInput, FindMappingOutput, ResolveMethodMappingExactInput, ResolveMethodMappingExactOutput, SymbolExistenceInput, SymbolExistenceOutput } from "./mapping/types.js";
4
+ export type { ClassApiMatrixEntry, ClassApiMatrixInput, ClassApiMatrixKind, ClassApiMatrixOutput, ClassApiMatrixRow, EnsureMappingAvailableInput, EnsureMappingAvailableOutput, FindMappingInput, FindMappingOutput, MappingLookupCandidate, MappingLookupProvenance, MappingMatchKind, ResolveMethodMappingExactInput, ResolveMethodMappingExactOutput, SymbolExistenceInput, SymbolExistenceOutput, SymbolQueryInput, SymbolQueryKind, SymbolReference, SymbolResolutionOutput, SymbolResolutionStatus } from "./mapping/types.js";
5
5
  type VersionMappingsResolver = Pick<VersionService, "resolveVersionMappings">;
6
- export type MappingMatchKind = "exact" | "normalized" | "simple-name";
7
- export type MappingLookupCandidate = {
8
- symbol: string;
9
- matchKind: MappingMatchKind;
10
- confidence: number;
11
- kind: MappingSymbolKind;
12
- owner?: string;
13
- name: string;
14
- descriptor?: string;
15
- };
16
- export type MappingLookupProvenance = {
17
- source: MappingLookupSource;
18
- mappingArtifact: string;
19
- version: string;
20
- priority: MappingSourcePriority;
21
- };
22
- export type SymbolQueryKind = MappingSymbolKind;
23
- export type SymbolQueryInput = {
24
- kind: SymbolQueryKind;
25
- name: string;
26
- owner?: string;
27
- descriptor?: string;
28
- };
29
- export type SymbolReference = {
30
- kind: SymbolQueryKind;
31
- name: string;
32
- owner?: string;
33
- descriptor?: string;
34
- symbol: string;
35
- };
36
- export type SymbolResolutionStatus = "resolved" | "not_found" | "ambiguous" | "mapping_unavailable";
37
- export type SymbolResolutionOutput = {
38
- querySymbol: SymbolReference;
39
- mappingContext: {
40
- version: string;
41
- sourceMapping: SourceMapping;
42
- targetMapping?: SourceMapping;
43
- sourcePriorityApplied: MappingSourcePriority;
44
- };
45
- resolved: boolean;
46
- status: SymbolResolutionStatus;
47
- resolvedSymbol?: SymbolReference;
48
- candidates: Array<SymbolReference & Pick<MappingLookupCandidate, "matchKind" | "confidence">>;
49
- candidateCount: number;
50
- candidatesTruncated?: boolean;
51
- warnings: string[];
52
- provenance?: MappingLookupProvenance;
53
- ambiguityReasons?: string[];
54
- };
55
- export type FindMappingInput = {
56
- version: string;
57
- kind: SymbolQueryKind;
58
- name: string;
59
- owner?: string;
60
- descriptor?: string;
61
- signatureMode?: "exact" | "name-only";
62
- sourceMapping: SourceMapping;
63
- targetMapping: SourceMapping;
64
- sourcePriority?: MappingSourcePriority;
65
- projectPath?: string;
66
- disambiguation?: {
67
- ownerHint?: string;
68
- descriptorHint?: string;
69
- };
70
- maxCandidates?: number;
71
- };
72
- export type FindMappingOutput = SymbolResolutionOutput;
73
- export type EnsureMappingAvailableInput = {
74
- version: string;
75
- sourceMapping: SourceMapping;
76
- targetMapping: SourceMapping;
77
- sourcePriority?: MappingSourcePriority;
78
- projectPath?: string;
79
- };
80
- export type EnsureMappingAvailableOutput = {
81
- transformChain: string[];
82
- warnings: string[];
83
- provenance?: MappingLookupProvenance;
84
- };
85
- export type ResolveMethodMappingExactInput = {
86
- version: string;
87
- name: string;
88
- owner: string;
89
- descriptor: string;
90
- sourceMapping: SourceMapping;
91
- targetMapping: SourceMapping;
92
- sourcePriority?: MappingSourcePriority;
93
- projectPath?: string;
94
- maxCandidates?: number;
95
- };
96
- export type ResolveMethodMappingExactOutput = SymbolResolutionOutput;
97
- export type ClassApiMatrixKind = "class" | "field" | "method";
98
- export type ClassApiMatrixInput = {
99
- version: string;
100
- className: string;
101
- classNameMapping: SourceMapping;
102
- sourcePriority?: MappingSourcePriority;
103
- includeKinds?: ClassApiMatrixKind[];
104
- maxRows?: number;
105
- };
106
- export type ClassApiMatrixEntry = {
107
- symbol: string;
108
- owner?: string;
109
- name: string;
110
- descriptor?: string;
111
- };
112
- export type ClassApiMatrixRow = {
113
- kind: ClassApiMatrixKind;
114
- descriptor?: string;
115
- obfuscated?: ClassApiMatrixEntry;
116
- mojang?: ClassApiMatrixEntry;
117
- intermediary?: ClassApiMatrixEntry;
118
- yarn?: ClassApiMatrixEntry;
119
- completeness: boolean;
120
- };
121
- export type ClassApiMatrixOutput = {
122
- version: string;
123
- className: string;
124
- classNameMapping: SourceMapping;
125
- classIdentity: Partial<Record<SourceMapping, string>>;
126
- rows: ClassApiMatrixRow[];
127
- rowCount: number;
128
- rowsTruncated?: boolean;
129
- warnings: string[];
130
- ambiguousRowCount?: number;
131
- };
132
- export type SymbolExistenceInput = {
133
- version: string;
134
- kind: SymbolQueryKind;
135
- name: string;
136
- owner?: string;
137
- descriptor?: string;
138
- sourceMapping: SourceMapping;
139
- sourcePriority?: MappingSourcePriority;
140
- nameMode?: "fqcn" | "auto";
141
- signatureMode?: "exact" | "name-only";
142
- maxCandidates?: number;
143
- };
144
- export type SymbolExistenceOutput = SymbolResolutionOutput;
145
6
  export declare class MappingService {
146
7
  private readonly config;
147
8
  private readonly versionService;
148
9
  private readonly fetchFn;
149
10
  private readonly graphCache;
150
11
  private readonly buildLocks;
12
+ private readonly resolutionCache;
13
+ private static readonly RESOLUTION_CACHE_MAX;
14
+ private static readonly RESOLUTION_CACHE_TTL_MS;
15
+ private resolutionCacheHits;
16
+ private resolutionCacheMisses;
17
+ get resolutionCacheStats(): {
18
+ hits: number;
19
+ misses: number;
20
+ size: number;
21
+ };
151
22
  constructor(config: Config, versionService?: VersionMappingsResolver, fetchFn?: typeof fetch);
152
23
  findMapping(input: FindMappingInput): Promise<FindMappingOutput>;
153
24
  ensureMappingAvailable(input: EnsureMappingAvailableInput): Promise<EnsureMappingAvailableOutput>;
@@ -178,10 +49,11 @@ export declare class MappingService {
178
49
  private loadMojangPairs;
179
50
  private loadTinyPairsFromLoom;
180
51
  private loadTinyPairsFromMaven;
181
- private parseTinyFromJar;
182
- private fetchYarnCoordinates;
52
+ private loaderDeps;
183
53
  private trimGraphCache;
184
54
  releaseGraphCacheEntry(version: string, sourcePriority?: MappingSourcePriority): void;
55
+ private buildResolutionCacheKey;
56
+ private trimResolutionCache;
185
57
  }
186
58
  /**
187
59
  * Resolve and cache a Tiny v2 mapping file for the given Minecraft version.
@@ -193,4 +65,3 @@ export declare class MappingService {
193
65
  * @returns Path to the extracted Tiny v2 file
194
66
  */
195
67
  export declare function resolveTinyMappingFile(version: string, mapping: "intermediary" | "yarn", cacheDir: string, fetchFn?: typeof fetch): Promise<string>;
196
- export {};