@lzimul/minecraft-mcp 0.0.0-stage → 1.0.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.
Files changed (130) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +163 -2
  3. package/SECURITY.md +21 -0
  4. package/build/app/server.js +10 -0
  5. package/build/config/dimensions.js +27 -0
  6. package/build/config/server-info.js +25 -0
  7. package/build/config/storage.js +15 -0
  8. package/build/config/world-limits.js +7 -0
  9. package/build/data/blocks.js +17532 -0
  10. package/build/data/items.js +11194 -0
  11. package/build/data/version.js +1 -0
  12. package/build/enums/bounding-box.enum.js +5 -0
  13. package/build/enums/dimension-type.enum.js +6 -0
  14. package/build/enums/icon-theme.enum.js +5 -0
  15. package/build/index.js +47 -0
  16. package/build/interfaces/block-states.interface.js +1 -0
  17. package/build/interfaces/block.interface.js +1 -0
  18. package/build/interfaces/data-entry.interface.js +1 -0
  19. package/build/interfaces/dimension.interface.js +1 -0
  20. package/build/interfaces/item.interface.js +1 -0
  21. package/build/interfaces/placed-block.interface.js +1 -0
  22. package/build/interfaces/world-store.interface.js +1 -0
  23. package/build/resources/block-resources.js +17 -0
  24. package/build/resources/data-resources.js +55 -0
  25. package/build/resources/dimension-resources.js +70 -0
  26. package/build/resources/error-content.js +12 -0
  27. package/build/resources/index.js +9 -0
  28. package/build/resources/item-resources.js +17 -0
  29. package/build/schemas/block-schema.js +27 -0
  30. package/build/schemas/coordinate-schema.js +12 -0
  31. package/build/schemas/dimension-schema.js +6 -0
  32. package/build/schemas/item-schema.js +28 -0
  33. package/build/tools/block-tools.js +145 -0
  34. package/build/tools/index.js +6 -0
  35. package/build/tools/item-tools.js +50 -0
  36. package/build/tools/result.js +11 -0
  37. package/build/utils/error-message.js +25 -0
  38. package/build/world/block-spec.js +74 -0
  39. package/build/world/block-states.js +43 -0
  40. package/build/world/simulated-dimension.js +129 -0
  41. package/build/world/stores/file-world-store.js +103 -0
  42. package/build/world/stores/index.js +9 -0
  43. package/build/world/stores/memory-world-store.js +14 -0
  44. package/build/world/stores/serialized-block.js +53 -0
  45. package/build/world/world.js +39 -0
  46. package/lib/app/server.d.ts +4 -0
  47. package/lib/app/server.d.ts.map +1 -0
  48. package/lib/config/dimensions.d.ts +3 -0
  49. package/lib/config/dimensions.d.ts.map +1 -0
  50. package/lib/config/server-info.d.ts +15 -0
  51. package/lib/config/server-info.d.ts.map +1 -0
  52. package/lib/config/storage.d.ts +8 -0
  53. package/lib/config/storage.d.ts.map +1 -0
  54. package/lib/config/world-limits.d.ts +8 -0
  55. package/lib/config/world-limits.d.ts.map +1 -0
  56. package/lib/data/blocks.d.ts +5 -0
  57. package/lib/data/blocks.d.ts.map +1 -0
  58. package/lib/data/items.d.ts +5 -0
  59. package/lib/data/items.d.ts.map +1 -0
  60. package/lib/data/version.d.ts +2 -0
  61. package/lib/data/version.d.ts.map +1 -0
  62. package/lib/enums/bounding-box.enum.d.ts +5 -0
  63. package/lib/enums/bounding-box.enum.d.ts.map +1 -0
  64. package/lib/enums/dimension-type.enum.d.ts +6 -0
  65. package/lib/enums/dimension-type.enum.d.ts.map +1 -0
  66. package/lib/enums/icon-theme.enum.d.ts +5 -0
  67. package/lib/enums/icon-theme.enum.d.ts.map +1 -0
  68. package/lib/index.d.ts +3 -0
  69. package/lib/index.d.ts.map +1 -0
  70. package/lib/interfaces/block-states.interface.d.ts +2 -0
  71. package/lib/interfaces/block-states.interface.d.ts.map +1 -0
  72. package/lib/interfaces/block.interface.d.ts +14 -0
  73. package/lib/interfaces/block.interface.d.ts.map +1 -0
  74. package/lib/interfaces/data-entry.interface.d.ts +7 -0
  75. package/lib/interfaces/data-entry.interface.d.ts.map +1 -0
  76. package/lib/interfaces/dimension.interface.d.ts +10 -0
  77. package/lib/interfaces/dimension.interface.d.ts.map +1 -0
  78. package/lib/interfaces/item.interface.d.ts +8 -0
  79. package/lib/interfaces/item.interface.d.ts.map +1 -0
  80. package/lib/interfaces/placed-block.interface.d.ts +10 -0
  81. package/lib/interfaces/placed-block.interface.d.ts.map +1 -0
  82. package/lib/interfaces/world-store.interface.d.ts +7 -0
  83. package/lib/interfaces/world-store.interface.d.ts.map +1 -0
  84. package/lib/resources/block-resources.d.ts +3 -0
  85. package/lib/resources/block-resources.d.ts.map +1 -0
  86. package/lib/resources/data-resources.d.ts +15 -0
  87. package/lib/resources/data-resources.d.ts.map +1 -0
  88. package/lib/resources/dimension-resources.d.ts +5 -0
  89. package/lib/resources/dimension-resources.d.ts.map +1 -0
  90. package/lib/resources/error-content.d.ts +8 -0
  91. package/lib/resources/error-content.d.ts.map +1 -0
  92. package/lib/resources/index.d.ts +4 -0
  93. package/lib/resources/index.d.ts.map +1 -0
  94. package/lib/resources/item-resources.d.ts +3 -0
  95. package/lib/resources/item-resources.d.ts.map +1 -0
  96. package/lib/schemas/block-schema.d.ts +17 -0
  97. package/lib/schemas/block-schema.d.ts.map +1 -0
  98. package/lib/schemas/coordinate-schema.d.ts +4 -0
  99. package/lib/schemas/coordinate-schema.d.ts.map +1 -0
  100. package/lib/schemas/dimension-schema.d.ts +5 -0
  101. package/lib/schemas/dimension-schema.d.ts.map +1 -0
  102. package/lib/schemas/item-schema.d.ts +14 -0
  103. package/lib/schemas/item-schema.d.ts.map +1 -0
  104. package/lib/tools/block-tools.d.ts +4 -0
  105. package/lib/tools/block-tools.d.ts.map +1 -0
  106. package/lib/tools/index.d.ts +4 -0
  107. package/lib/tools/index.d.ts.map +1 -0
  108. package/lib/tools/item-tools.d.ts +3 -0
  109. package/lib/tools/item-tools.d.ts.map +1 -0
  110. package/lib/tools/result.d.ts +14 -0
  111. package/lib/tools/result.d.ts.map +1 -0
  112. package/lib/utils/error-message.d.ts +2 -0
  113. package/lib/utils/error-message.d.ts.map +1 -0
  114. package/lib/world/block-spec.d.ts +12 -0
  115. package/lib/world/block-spec.d.ts.map +1 -0
  116. package/lib/world/block-states.d.ts +8 -0
  117. package/lib/world/block-states.d.ts.map +1 -0
  118. package/lib/world/simulated-dimension.d.ts +27 -0
  119. package/lib/world/simulated-dimension.d.ts.map +1 -0
  120. package/lib/world/stores/file-world-store.d.ts +14 -0
  121. package/lib/world/stores/file-world-store.d.ts.map +1 -0
  122. package/lib/world/stores/index.d.ts +3 -0
  123. package/lib/world/stores/index.d.ts.map +1 -0
  124. package/lib/world/stores/memory-world-store.d.ts +9 -0
  125. package/lib/world/stores/memory-world-store.d.ts.map +1 -0
  126. package/lib/world/stores/serialized-block.d.ts +12 -0
  127. package/lib/world/stores/serialized-block.d.ts.map +1 -0
  128. package/lib/world/world.d.ts +13 -0
  129. package/lib/world/world.d.ts.map +1 -0
  130. package/package.json +107 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dimension.interface.d.ts","sourceRoot":"","sources":["../../src/interfaces/dimension.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEjE,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;CAC/B"}
@@ -0,0 +1,8 @@
1
+ import type { IDataEntry } from './data-entry.interface.js';
2
+ export interface IItem extends IDataEntry {
3
+ readonly stackSize: number;
4
+ readonly maxDurability?: number;
5
+ readonly enchantCategories?: readonly string[];
6
+ readonly repairWith?: readonly string[];
7
+ }
8
+ //# sourceMappingURL=item.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"item.interface.d.ts","sourceRoot":"","sources":["../../src/interfaces/item.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAE5D,MAAM,WAAW,KAAM,SAAQ,UAAU;IACvC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/C,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACzC"}
@@ -0,0 +1,10 @@
1
+ import type { BlockStates } from './block-states.interface.js';
2
+ import type { IBlock } from './block.interface.js';
3
+ export interface IPlacedBlock {
4
+ readonly x: number;
5
+ readonly y: number;
6
+ readonly z: number;
7
+ readonly block: IBlock;
8
+ readonly states: BlockStates;
9
+ }
10
+ //# sourceMappingURL=placed-block.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"placed-block.interface.d.ts","sourceRoot":"","sources":["../../src/interfaces/placed-block.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAEnD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;CAC9B"}
@@ -0,0 +1,7 @@
1
+ import type { EDimensionType } from '../enums/dimension-type.enum.js';
2
+ import type { IPlacedBlock } from './placed-block.interface.js';
3
+ export interface IWorldStore {
4
+ load(type: EDimensionType): Promise<readonly IPlacedBlock[]>;
5
+ save(type: EDimensionType, blocks: readonly IPlacedBlock[]): Promise<void>;
6
+ }
7
+ //# sourceMappingURL=world-store.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"world-store.interface.d.ts","sourceRoot":"","sources":["../../src/interfaces/world-store.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEhE,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,YAAY,EAAE,CAAC,CAAC;IAC7D,IAAI,CAAC,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS,YAAY,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5E"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from '@modelcontextprotocol/server';
2
+ export declare function registerBlockResources(server: McpServer): void;
3
+ //# sourceMappingURL=block-resources.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"block-resources.d.ts","sourceRoot":"","sources":["../../src/resources/block-resources.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAS9D,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAa9D"}
@@ -0,0 +1,15 @@
1
+ import type { McpServer } from '@modelcontextprotocol/server';
2
+ import type { IDataEntry } from '../interfaces/data-entry.interface.js';
3
+ export declare function registerDataIndexResource<T extends IDataEntry>(server: McpServer, config: {
4
+ name: string;
5
+ uri: string;
6
+ title: string;
7
+ description: string;
8
+ entries: readonly T[];
9
+ }): void;
10
+ export declare function registerDataEntryResources<T extends IDataEntry>(server: McpServer, config: {
11
+ pathPrefix: string;
12
+ category: string;
13
+ entries: readonly T[];
14
+ }): void;
15
+ //# sourceMappingURL=data-resources.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-resources.d.ts","sourceRoot":"","sources":["../../src/resources/data-resources.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAI9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AAYxE,wBAAgB,yBAAyB,CAAC,CAAC,SAAS,UAAU,EAC5D,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE;IACN,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC;CACvB,GACA,IAAI,CA6BN;AAED,wBAAgB,0BAA0B,CAAC,CAAC,SAAS,UAAU,EAC7D,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE;IACN,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC;CACvB,GACA,IAAI,CAwBN"}
@@ -0,0 +1,5 @@
1
+ import type { McpServer } from '@modelcontextprotocol/server';
2
+ import { World } from '../world/world.js';
3
+ export declare function registerDimensionIndexResource(server: McpServer, world: World): void;
4
+ export declare function registerDimensionResources(server: McpServer, world: World): void;
5
+ //# sourceMappingURL=dimension-resources.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dimension-resources.d.ts","sourceRoot":"","sources":["../../src/resources/dimension-resources.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAM9D,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AA2B1C,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,KAAK,GACX,IAAI,CA+BN;AAED,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,KAAK,GACX,IAAI,CA2BN"}
@@ -0,0 +1,8 @@
1
+ export declare function errorResource(uri: string, error: unknown): {
2
+ contents: Array<{
3
+ uri: string;
4
+ mimeType: string;
5
+ text: string;
6
+ }>;
7
+ };
8
+ //# sourceMappingURL=error-content.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-content.d.ts","sourceRoot":"","sources":["../../src/resources/error-content.ts"],"names":[],"mappings":"AAOA,wBAAgB,aAAa,CAC3B,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,OAAO,GACb;IAAE,QAAQ,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAUtE"}
@@ -0,0 +1,4 @@
1
+ import type { McpServer } from '@modelcontextprotocol/server';
2
+ import type { World } from '../world/world.js';
3
+ export declare function registerResources(server: McpServer, world: World): void;
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/resources/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAS9D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE/C,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAKvE"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from '@modelcontextprotocol/server';
2
+ export declare function registerItemResources(server: McpServer): void;
3
+ //# sourceMappingURL=item-resources.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"item-resources.d.ts","sourceRoot":"","sources":["../../src/resources/item-resources.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAS9D,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAa7D"}
@@ -0,0 +1,17 @@
1
+ import * as z from 'zod/v4';
2
+ import type { IBlock } from '../interfaces/block.interface.js';
3
+ export declare const blockInfoSchema: z.ZodObject<{
4
+ key: z.ZodString;
5
+ name: z.ZodString;
6
+ displayName: z.ZodString;
7
+ hardness: z.ZodNumber;
8
+ resistance: z.ZodNumber;
9
+ diggable: z.ZodBoolean;
10
+ transparent: z.ZodBoolean;
11
+ emitLight: z.ZodNumber;
12
+ filterLight: z.ZodNumber;
13
+ boundingBox: z.ZodString;
14
+ }, z.core.$strip>;
15
+ export type BlockInfo = z.infer<typeof blockInfoSchema>;
16
+ export declare function toBlockInfo(block: IBlock): BlockInfo;
17
+ //# sourceMappingURL=block-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"block-schema.d.ts","sourceRoot":"","sources":["../../src/schemas/block-schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAE5B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAE/D,eAAO,MAAM,eAAe;;;;;;;;;;;iBAW1B,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAExD,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAapD"}
@@ -0,0 +1,4 @@
1
+ import * as z from 'zod/v4';
2
+ export declare const horizontalCoordinate: z.ZodNumber;
3
+ export declare const verticalCoordinate: z.ZodNumber;
4
+ //# sourceMappingURL=coordinate-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coordinate-schema.d.ts","sourceRoot":"","sources":["../../src/schemas/coordinate-schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAI5B,eAAO,MAAM,oBAAoB,aAIC,CAAC;AAEnC,eAAO,MAAM,kBAAkB,aAIC,CAAC"}
@@ -0,0 +1,5 @@
1
+ import * as z from 'zod/v4';
2
+ import { EDimensionType } from '../enums/dimension-type.enum.js';
3
+ export declare const dimensionSchema: z.ZodDefault<z.ZodEnum<typeof EDimensionType>>;
4
+ export declare const dimensionTypeSchema: z.ZodEnum<typeof EDimensionType>;
5
+ //# sourceMappingURL=dimension-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dimension-schema.d.ts","sourceRoot":"","sources":["../../src/schemas/dimension-schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAE5B,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEjE,eAAO,MAAM,eAAe,gDAEQ,CAAC;AAErC,eAAO,MAAM,mBAAmB,kCAAyB,CAAC"}
@@ -0,0 +1,14 @@
1
+ import * as z from 'zod/v4';
2
+ import type { IItem } from '../interfaces/item.interface.js';
3
+ export declare const itemInfoSchema: z.ZodObject<{
4
+ key: z.ZodString;
5
+ name: z.ZodString;
6
+ displayName: z.ZodString;
7
+ stackSize: z.ZodNumber;
8
+ maxDurability: z.ZodOptional<z.ZodNumber>;
9
+ enchantCategories: z.ZodOptional<z.ZodArray<z.ZodString>>;
10
+ repairWith: z.ZodOptional<z.ZodArray<z.ZodString>>;
11
+ }, z.core.$strip>;
12
+ export type ItemInfo = z.infer<typeof itemInfoSchema>;
13
+ export declare function toItemInfo(item: IItem): ItemInfo;
14
+ //# sourceMappingURL=item-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"item-schema.d.ts","sourceRoot":"","sources":["../../src/schemas/item-schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAE5B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAC;AAE7D,eAAO,MAAM,cAAc;;;;;;;;iBAQzB,CAAC;AAEH,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAEtD,wBAAgB,UAAU,CAAC,IAAI,EAAE,KAAK,GAAG,QAAQ,CAiBhD"}
@@ -0,0 +1,4 @@
1
+ import type { McpServer } from '@modelcontextprotocol/server';
2
+ import type { World } from '../world/world.js';
3
+ export declare function registerBlockTools(server: McpServer, world: World): void;
4
+ //# sourceMappingURL=block-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"block-tools.d.ts","sourceRoot":"","sources":["../../src/tools/block-tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAgB9D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAe/C,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAuKxE"}
@@ -0,0 +1,4 @@
1
+ import type { McpServer } from '@modelcontextprotocol/server';
2
+ import type { World } from '../world/world.js';
3
+ export declare function registerTools(server: McpServer, world: World): void;
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAK9D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE/C,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAGnE"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from '@modelcontextprotocol/server';
2
+ export declare function registerItemTools(server: McpServer): void;
3
+ //# sourceMappingURL=item-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"item-tools.d.ts","sourceRoot":"","sources":["../../src/tools/item-tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAQ9D,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAoDzD"}
@@ -0,0 +1,14 @@
1
+ export declare function toolText(text: string): {
2
+ content: [{
3
+ type: 'text';
4
+ text: string;
5
+ }];
6
+ };
7
+ export declare function toolError(message: string): {
8
+ isError: true;
9
+ content: [{
10
+ type: 'text';
11
+ text: string;
12
+ }];
13
+ };
14
+ //# sourceMappingURL=result.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"result.d.ts","sourceRoot":"","sources":["../../src/tools/result.ts"],"names":[],"mappings":"AAAA,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG;IACtC,OAAO,EAAE,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC3C,CAIA;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG;IAC1C,OAAO,EAAE,IAAI,CAAC;IACd,OAAO,EAAE,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC3C,CAKA"}
@@ -0,0 +1,2 @@
1
+ export declare function toErrorMessage(error: unknown): string;
2
+ //# sourceMappingURL=error-message.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-message.d.ts","sourceRoot":"","sources":["../../src/utils/error-message.ts"],"names":[],"mappings":"AAMA,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CA0BrD"}
@@ -0,0 +1,12 @@
1
+ import type { IBlock } from '../interfaces/block.interface.js';
2
+ import type { BlockStates } from '../interfaces/block-states.interface.js';
3
+ export type BlockSpecResult = {
4
+ readonly ok: true;
5
+ readonly block: IBlock;
6
+ readonly states: BlockStates;
7
+ } | {
8
+ readonly ok: false;
9
+ readonly error: string;
10
+ };
11
+ export declare function parseBlockSpec(input: string): BlockSpecResult;
12
+ //# sourceMappingURL=block-spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"block-spec.d.ts","sourceRoot":"","sources":["../../src/world/block-spec.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;AAE3E,MAAM,MAAM,eAAe,GACvB;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;CAAE,GAC3E;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAUnD,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,CAwE7D"}
@@ -0,0 +1,8 @@
1
+ import type { BlockStates } from '../interfaces/block-states.interface.js';
2
+ export declare const EMPTY_BLOCK_STATES: BlockStates;
3
+ export declare function isSafeStateName(name: string): boolean;
4
+ export declare function isSafeStateValue(value: string): boolean;
5
+ export declare function normalizeStates(states: BlockStates | null | undefined): BlockStates;
6
+ export declare function sameStates(a: BlockStates, b: BlockStates): boolean;
7
+ export declare function formatStates(states: BlockStates): string;
8
+ //# sourceMappingURL=block-states.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"block-states.d.ts","sourceRoot":"","sources":["../../src/world/block-states.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;AAE3E,eAAO,MAAM,kBAAkB,EAAE,WAA+B,CAAC;AAajE,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAQrD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAOvD;AAGD,wBAAgB,eAAe,CAC7B,MAAM,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,GACrC,WAAW,CAgBb;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,GAAG,OAAO,CAMlE;AAGD,wBAAgB,YAAY,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAMxD"}
@@ -0,0 +1,27 @@
1
+ import type { IBlock } from '../interfaces/block.interface.js';
2
+ import type { BlockStates } from '../interfaces/block-states.interface.js';
3
+ import type { IDimension } from '../interfaces/dimension.interface.js';
4
+ import type { IPlacedBlock } from '../interfaces/placed-block.interface.js';
5
+ import type { IWorldStore } from '../interfaces/world-store.interface.js';
6
+ export declare class SimulatedDimension {
7
+ readonly info: IDimension;
8
+ private readonly blocks;
9
+ private readonly store;
10
+ private readonly writeDelayMs;
11
+ private timer;
12
+ private queue;
13
+ private savePromise;
14
+ private dirty;
15
+ constructor(info: IDimension, store: IWorldStore, writeDelayMs?: number);
16
+ get modifiedBlockCount(): number;
17
+ get placedBlocks(): readonly IPlacedBlock[];
18
+ load(): Promise<void>;
19
+ contains(x: number, y: number, z: number): boolean;
20
+ canSetBlock(x: number, y: number, z: number): boolean;
21
+ getBlock(x: number, y: number, z: number): IBlock;
22
+ getStates(x: number, y: number, z: number): BlockStates;
23
+ setBlock(x: number, y: number, z: number, block: IBlock, states?: BlockStates): IBlock;
24
+ flush(): Promise<void>;
25
+ private scheduleFlush;
26
+ }
27
+ //# sourceMappingURL=simulated-dimension.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simulated-dimension.d.ts","sourceRoot":"","sources":["../../src/world/simulated-dimension.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;AAC3E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AAC5E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAC;AAQ1E,qBAAa,kBAAkB;IAC7B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAE1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmC;IAC1D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAc;IACpC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,KAAK,CAA8C;IAC3D,OAAO,CAAC,KAAK,CAAoC;IACjD,OAAO,CAAC,WAAW,CAA8B;IACjD,OAAO,CAAC,KAAK,CAAS;gBAEV,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,YAAY,SAAK;IAMnE,IAAI,kBAAkB,IAAI,MAAM,CAE/B;IAED,IAAI,YAAY,IAAI,SAAS,YAAY,EAAE,CAE1C;IAGK,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAsB3B,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO;IAYlD,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO;IAOrD,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM;IAIjD,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,WAAW;IAMvD,QAAQ,CACN,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,KAAK,EAAE,MAAM,EACb,MAAM,GAAE,WAAgC,GACvC,MAAM;IA4CH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAiC5B,OAAO,CAAC,aAAa;CAatB"}
@@ -0,0 +1,14 @@
1
+ import type { EDimensionType } from '../../enums/dimension-type.enum.js';
2
+ import type { IPlacedBlock } from '../../interfaces/placed-block.interface.js';
3
+ import type { IWorldStore } from '../../interfaces/world-store.interface.js';
4
+ export declare class FileWorldStore implements IWorldStore {
5
+ private readonly directory;
6
+ private directoryReady;
7
+ constructor(directory: string);
8
+ private ensureDirectory;
9
+ private fileFor;
10
+ load(type: EDimensionType): Promise<readonly IPlacedBlock[]>;
11
+ save(type: EDimensionType, blocks: readonly IPlacedBlock[]): Promise<void>;
12
+ private quarantine;
13
+ }
14
+ //# sourceMappingURL=file-world-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-world-store.d.ts","sourceRoot":"","sources":["../../../src/world/stores/file-world-store.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAC;AAC/E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2CAA2C,CAAC;AAmB7E,qBAAa,cAAe,YAAW,WAAW;IAChD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,cAAc,CAAS;gBAEnB,SAAS,EAAE,MAAM;YAIf,eAAe;IAO7B,OAAO,CAAC,OAAO;IAIT,IAAI,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,YAAY,EAAE,CAAC;IAuD5D,IAAI,CACR,IAAI,EAAE,cAAc,EACpB,MAAM,EAAE,SAAS,YAAY,EAAE,GAC9B,OAAO,CAAC,IAAI,CAAC;YAsCF,UAAU;CAWzB"}
@@ -0,0 +1,3 @@
1
+ import type { IWorldStore } from '../../interfaces/world-store.interface.js';
2
+ export declare function createWorldStore(): IWorldStore;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/world/stores/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2CAA2C,CAAC;AAE7E,wBAAgB,gBAAgB,IAAI,WAAW,CAK9C"}
@@ -0,0 +1,9 @@
1
+ import type { EDimensionType } from '../../enums/dimension-type.enum.js';
2
+ import type { IPlacedBlock } from '../../interfaces/placed-block.interface.js';
3
+ import type { IWorldStore } from '../../interfaces/world-store.interface.js';
4
+ export declare class MemoryWorldStore implements IWorldStore {
5
+ private readonly worlds;
6
+ load(type: EDimensionType): Promise<readonly IPlacedBlock[]>;
7
+ save(type: EDimensionType, blocks: readonly IPlacedBlock[]): Promise<void>;
8
+ }
9
+ //# sourceMappingURL=memory-world-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-world-store.d.ts","sourceRoot":"","sources":["../../../src/world/stores/memory-world-store.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAC;AAC/E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2CAA2C,CAAC;AAM7E,qBAAa,gBAAiB,YAAW,WAAW;IAClD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsD;IAEvE,IAAI,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,YAAY,EAAE,CAAC;IAK5D,IAAI,CACR,IAAI,EAAE,cAAc,EACpB,MAAM,EAAE,SAAS,YAAY,EAAE,GAC9B,OAAO,CAAC,IAAI,CAAC;CAQjB"}
@@ -0,0 +1,12 @@
1
+ import type { IPlacedBlock } from '../../interfaces/placed-block.interface.js';
2
+ import type { BlockStates } from '../../interfaces/block-states.interface.js';
3
+ export interface ISerializedBlock {
4
+ readonly x: number;
5
+ readonly y: number;
6
+ readonly z: number;
7
+ readonly block: string;
8
+ readonly states?: BlockStates;
9
+ }
10
+ export declare function toSerialized(placed: IPlacedBlock): ISerializedBlock;
11
+ export declare function fromSerialized(entry: unknown): IPlacedBlock | null;
12
+ //# sourceMappingURL=serialized-block.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serialized-block.d.ts","sourceRoot":"","sources":["../../../src/world/stores/serialized-block.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAC;AAC/E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4CAA4C,CAAC;AAG9E,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CAC/B;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,gBAAgB,CAiBnE;AAkBD,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,YAAY,GAAG,IAAI,CAyBlE"}
@@ -0,0 +1,13 @@
1
+ import { SimulatedDimension } from './simulated-dimension.js';
2
+ import type { EDimensionType } from '../enums/dimension-type.enum.js';
3
+ import type { IDimension } from '../interfaces/dimension.interface.js';
4
+ import type { IWorldStore } from '../interfaces/world-store.interface.js';
5
+ export declare class World {
6
+ private readonly dimensions;
7
+ private constructor();
8
+ static load(store: IWorldStore, writeDelayMs?: number): Promise<World>;
9
+ static listDimensions(): readonly IDimension[];
10
+ getDimension(type: EDimensionType): SimulatedDimension;
11
+ flush(): Promise<void>;
12
+ }
13
+ //# sourceMappingURL=world.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"world.d.ts","sourceRoot":"","sources":["../../src/world/world.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAC;AAS1E,qBAAa,KAAK;IAChB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAkD;IAE7E,OAAO;WAMM,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,YAAY,SAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAsBxE,MAAM,CAAC,cAAc,IAAI,SAAS,UAAU,EAAE;IAI9C,YAAY,CAAC,IAAI,EAAE,cAAc,GAAG,kBAAkB;IAUhD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAc7B"}
package/package.json CHANGED
@@ -1,6 +1,109 @@
1
1
  {
2
2
  "name": "@lzimul/minecraft-mcp",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
3
+ "description": "Minecraft Model Context Protocol (MCP) Server",
4
+ "version": "1.0.1",
5
+ "author": {
6
+ "name": "lZiMUl",
7
+ "email": "lZiMUl@lzimul.com",
8
+ "url": "https://www.lzimul.com"
9
+ },
10
+ "contributors": [
11
+ {
12
+ "name": "lZiMUl",
13
+ "email": "lZiMUl@lzimul.com",
14
+ "url": "https://www.lzimul.com"
15
+ }
16
+ ],
17
+ "maintainers": [
18
+ {
19
+ "name": "lZiMUl",
20
+ "email": "lZiMUl@lzimul.com",
21
+ "url": "https://www.lzimul.com"
22
+ }
23
+ ],
24
+ "homepage": "https://projects.lzimul.com/minecraft-mcp",
25
+ "type": "module",
26
+ "license": "MIT",
27
+ "main": "./build/index.js",
28
+ "types": "./lib/index.d.ts",
29
+ "exports": {
30
+ ".": {
31
+ "types": "./lib/index.d.ts",
32
+ "default": "./build/index.js"
33
+ }
34
+ },
35
+ "bin": {
36
+ "lzimul-minecraft-mcp": "./build/index.js"
37
+ },
38
+ "scripts": {
39
+ "start": "node .",
40
+ "lint": "npx eslint --fix",
41
+ "build": "npm run lint && npx tsc -p ./tsconfig.json && npm run typedoc",
42
+ "typedoc": "npx typedoc --options ./typedoc.json",
43
+ "dev": "npm run build && npm run start",
44
+ "generate-data": "node ./scripts/generate-data.mjs",
45
+ "clean": "node ./scripts/clean.mjs",
46
+ "test": "node ./scripts/smoke-test.mjs && node ./scripts/persistence-test.mjs && node ./scripts/error-test.mjs && node ./scripts/stress-test.mjs",
47
+ "test:stress": "node ./scripts/stress-test.mjs"
48
+ },
49
+ "files": [
50
+ "./build/",
51
+ "./lib/",
52
+ "./LICENSE",
53
+ "./README.md",
54
+ "./SECURITY.md"
55
+ ],
56
+ "keywords": [
57
+ "lzimul",
58
+ "minecraft",
59
+ "mcp",
60
+ "model-context-protocol",
61
+ "minecraft-mcp"
62
+ ],
63
+ "engines": {
64
+ "node": ">=22"
65
+ },
66
+ "overrides": {
67
+ "katex": "^0.19.1"
68
+ },
69
+ "dependencies": {
70
+ "@modelcontextprotocol/server": "^2.0.0",
71
+ "zod": "^4.6.5"
72
+ },
73
+ "devDependencies": {
74
+ "@eslint/css": "^2.0.0",
75
+ "@eslint/eslintrc": "^3.3.7",
76
+ "@eslint/js": "^10.0.1",
77
+ "@eslint/json": "^2.1.0",
78
+ "@eslint/markdown": "^8.0.3",
79
+ "@types/node": "^26.6.1",
80
+ "@typescript-eslint/eslint-plugin": "^8.70.0",
81
+ "@typescript-eslint/parser": "^8.70.0",
82
+ "eslint": "^10.10.0",
83
+ "eslint-config-prettier": "^10.1.8",
84
+ "eslint-plugin-prettier": "^5.5.6",
85
+ "globals": "^17.12.0",
86
+ "jiti": "^2.7.0",
87
+ "prettier": "^3.9.8",
88
+ "tslib": "^2.8.1",
89
+ "typedoc": "^0.28.20",
90
+ "typescript": "^6.0.3",
91
+ "typescript-eslint": "^8.70.0"
92
+ },
93
+ "repository": {
94
+ "type": "git",
95
+ "url": "git+https://github.com/lZiMUl/minecraft-mcp.git"
96
+ },
97
+ "bugs": {
98
+ "url": "https://github.com/lZiMUl/minecraft-mcp/issues",
99
+ "email": "lZiMUl@lzimul.com"
100
+ },
101
+ "publishConfig": {
102
+ "registry": "https://registry.npmjs.org",
103
+ "provenance": true,
104
+ "access": "public",
105
+ "tag": "latest"
106
+ },
107
+ "sideEffects": false,
108
+ "private": false
109
+ }